aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/llvm/CodeGen/Passes.h7
-rw-r--r--lib/CodeGen/BranchFolding.cpp14
-rw-r--r--lib/CodeGen/BranchFolding.h10
-rw-r--r--lib/CodeGen/IfConversion.cpp13
-rw-r--r--lib/CodeGen/LLVMTargetMachine.cpp2
-rw-r--r--lib/Target/ARM/ARMTargetMachine.cpp2
6 files changed, 19 insertions, 29 deletions
diff --git a/include/llvm/CodeGen/Passes.h b/include/llvm/CodeGen/Passes.h
index 78fa8fe..d0d6103 100644
--- a/include/llvm/CodeGen/Passes.h
+++ b/include/llvm/CodeGen/Passes.h
@@ -127,11 +127,10 @@ namespace llvm {
/// optimizations to delete branches to branches, eliminate branches to
/// successor blocks (creating fall throughs), and eliminating branches over
/// branches.
- FunctionPass *createBranchFoldingPass(bool DefaultEnableTailMerge,
- CodeGenOpt::Level OptLevel);
+ FunctionPass *createBranchFoldingPass(bool DefaultEnableTailMerge);
- /// IfConverter Pass - This pass performs machine code if-conversion.
- FunctionPass *createIfConverterPass(CodeGenOpt::Level OptLevel);
+ /// IfConverter Pass - This pass performs machine code if conversion.
+ FunctionPass *createIfConverterPass();
/// Code Placement Pass - This pass optimize code placement and aligns loop
/// headers to target specific alignment boundary.
diff --git a/lib/CodeGen/BranchFolding.cpp b/lib/CodeGen/BranchFolding.cpp
index 11777d5..66c5aa5 100644
--- a/lib/CodeGen/BranchFolding.cpp
+++ b/lib/CodeGen/BranchFolding.cpp
@@ -50,9 +50,8 @@ TailMergeThreshold("tail-merge-threshold",
char BranchFolderPass::ID = 0;
-FunctionPass *llvm::createBranchFoldingPass(bool DefaultEnableTailMerge,
- CodeGenOpt::Level OptLevel) {
- return new BranchFolderPass(DefaultEnableTailMerge, OptLevel);
+FunctionPass *llvm::createBranchFoldingPass(bool DefaultEnableTailMerge) {
+ return new BranchFolderPass(DefaultEnableTailMerge);
}
bool BranchFolderPass::runOnMachineFunction(MachineFunction &MF) {
@@ -64,8 +63,7 @@ bool BranchFolderPass::runOnMachineFunction(MachineFunction &MF) {
-BranchFolder::BranchFolder(bool defaultEnableTailMerge, CodeGenOpt::Level OL) {
- OptLevel = OL;
+BranchFolder::BranchFolder(bool defaultEnableTailMerge) {
switch (FlagEnableTailMerge) {
case cl::BOU_UNSET: EnableTailMerge = defaultEnableTailMerge; break;
case cl::BOU_TRUE: EnableTailMerge = true; break;
@@ -472,8 +470,7 @@ unsigned BranchFolder::ComputeSameTails(unsigned CurHash,
I->second,
TrialBBI1, TrialBBI2);
// If we will have to split a block, there should be at least
- // minCommonTailLength instructions in common; if not, and if we are not
- // optimizing for performance at the expense of code size, at worst
+ // minCommonTailLength instructions in common; if not, at worst
// we will be replacing a fallthrough into the common tail with a
// branch, which at worst breaks even with falling through into
// the duplicated common tail, so 1 instruction in common is enough.
@@ -481,8 +478,7 @@ unsigned BranchFolder::ComputeSameTails(unsigned CurHash,
// tail if there is one.
// (Empty blocks will get forwarded and need not be considered.)
if (CommonTailLen >= minCommonTailLength ||
- (OptLevel != CodeGenOpt::Aggressive &&
- CommonTailLen > 0 &&
+ (CommonTailLen > 0 &&
(TrialBBI1==CurMPIter->second->begin() ||
TrialBBI2==I->second->begin()))) {
if (CommonTailLen > maxCommonTailLength) {
diff --git a/lib/CodeGen/BranchFolding.h b/lib/CodeGen/BranchFolding.h
index 5d35525..9763e33 100644
--- a/lib/CodeGen/BranchFolding.h
+++ b/lib/CodeGen/BranchFolding.h
@@ -12,7 +12,6 @@
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
-#include "llvm/Target/TargetMachine.h"
#include <vector>
namespace llvm {
@@ -24,7 +23,7 @@ namespace llvm {
class BranchFolder {
public:
- explicit BranchFolder(bool defaultEnableTailMerge, CodeGenOpt::Level OL);
+ explicit BranchFolder(bool defaultEnableTailMerge);
bool OptimizeFunction(MachineFunction &MF,
const TargetInstrInfo *tii,
@@ -38,7 +37,6 @@ namespace llvm {
typedef std::pair<MPIterator, MachineBasicBlock::iterator> SameTailElt;
std::vector<SameTailElt> SameTails;
- CodeGenOpt::Level OptLevel;
bool EnableTailMerge;
const TargetInstrInfo *TII;
const TargetRegisterInfo *TRI;
@@ -75,10 +73,8 @@ namespace llvm {
public BranchFolder {
public:
static char ID;
- explicit BranchFolderPass(bool defaultEnableTailMerge,
- CodeGenOpt::Level OptLevel)
- : MachineFunctionPass(&ID),
- BranchFolder(defaultEnableTailMerge, OptLevel) {}
+ explicit BranchFolderPass(bool defaultEnableTailMerge)
+ : MachineFunctionPass(&ID), BranchFolder(defaultEnableTailMerge) {}
virtual bool runOnMachineFunction(MachineFunction &MF);
virtual const char *getPassName() const { return "Control Flow Optimizer"; }
diff --git a/lib/CodeGen/IfConversion.cpp b/lib/CodeGen/IfConversion.cpp
index be9e1f1..45f08b1 100644
--- a/lib/CodeGen/IfConversion.cpp
+++ b/lib/CodeGen/IfConversion.cpp
@@ -148,11 +148,9 @@ namespace {
const TargetInstrInfo *TII;
bool MadeChange;
int FnNum;
- CodeGenOpt::Level OptLevel;
public:
static char ID;
- IfConverter(CodeGenOpt::Level OL) :
- MachineFunctionPass(&ID), FnNum(-1), OptLevel(OL) {}
+ IfConverter() : MachineFunctionPass(&ID), FnNum(-1) {}
virtual bool runOnMachineFunction(MachineFunction &MF);
virtual const char *getPassName() const { return "If Converter"; }
@@ -221,9 +219,10 @@ namespace {
char IfConverter::ID = 0;
}
-FunctionPass *llvm::createIfConverterPass(CodeGenOpt::Level OptLevel) {
- return new IfConverter(OptLevel);
-}
+static RegisterPass<IfConverter>
+X("if-converter", "If Converter");
+
+FunctionPass *llvm::createIfConverterPass() { return new IfConverter(); }
bool IfConverter::runOnMachineFunction(MachineFunction &MF) {
TLI = MF.getTarget().getTargetLowering();
@@ -363,7 +362,7 @@ bool IfConverter::runOnMachineFunction(MachineFunction &MF) {
BBAnalysis.clear();
if (MadeChange) {
- BranchFolder BF(false, OptLevel);
+ BranchFolder BF(false);
BF.OptimizeFunction(MF, TII,
MF.getTarget().getRegisterInfo(),
getAnalysisIfAvailable<MachineModuleInfo>());
diff --git a/lib/CodeGen/LLVMTargetMachine.cpp b/lib/CodeGen/LLVMTargetMachine.cpp
index 1a2daef..e58a9ca 100644
--- a/lib/CodeGen/LLVMTargetMachine.cpp
+++ b/lib/CodeGen/LLVMTargetMachine.cpp
@@ -329,7 +329,7 @@ bool LLVMTargetMachine::addCommonCodeGenPasses(PassManagerBase &PM,
// Branch folding must be run after regalloc and prolog/epilog insertion.
if (OptLevel != CodeGenOpt::None) {
- PM.add(createBranchFoldingPass(getEnableTailMergeDefault(), OptLevel));
+ PM.add(createBranchFoldingPass(getEnableTailMergeDefault()));
printAndVerify(PM);
}
diff --git a/lib/Target/ARM/ARMTargetMachine.cpp b/lib/Target/ARM/ARMTargetMachine.cpp
index f28a622..c1da6ce 100644
--- a/lib/Target/ARM/ARMTargetMachine.cpp
+++ b/lib/Target/ARM/ARMTargetMachine.cpp
@@ -113,7 +113,7 @@ bool ARMBaseTargetMachine::addPreEmitPass(PassManagerBase &PM,
CodeGenOpt::Level OptLevel) {
// FIXME: temporarily disabling load / store optimization pass for Thumb1.
if (OptLevel != CodeGenOpt::None && !Subtarget.isThumb1Only())
- PM.add(createIfConverterPass(OptLevel));
+ PM.add(createIfConverterPass());
if (Subtarget.isThumb2()) {
PM.add(createThumb2ITBlockPass());