Revert r85346 change to control tail merging by CodeGenOpt::Level.
authorBob Wilson <bob.wilson@apple.com>
Wed, 28 Oct 2009 20:46:46 +0000 (20:46 +0000)
committerBob Wilson <bob.wilson@apple.com>
Wed, 28 Oct 2009 20:46:46 +0000 (20:46 +0000)
I'm going to redo this using the OptimizeForSize function attribute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85426 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/Passes.h
lib/CodeGen/BranchFolding.cpp
lib/CodeGen/BranchFolding.h
lib/CodeGen/IfConversion.cpp
lib/CodeGen/LLVMTargetMachine.cpp
lib/Target/ARM/ARMTargetMachine.cpp

index 78fa8fe66ab5bcba942bbeb8c00f6e3b03c9b444..d0d610370bd5c1ad32ae1622560f288e877cb2f7 100644 (file)
@@ -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.
index 11777d5ea14e37ea88a02737f083ec53e8e80682..66c5aa5ff784e84b6a2648276ac9d63b52dd9ec3 100644 (file)
@@ -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) {
index 5d355256d1456deac296c275c140d9be12c9878a..9763e3339a20a1128a33c554e6d0aefcdedc9bc0 100644 (file)
@@ -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"; }
index be9e1f113b56b8019bd1c2ed5280c4c161ab233f..45f08b168a4965c6fb34bee7f94e46e93db74428 100644 (file)
@@ -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>());
index 1a2daef24c114e7d69c5b322fcec6917a9aa4aaf..e58a9ca82c6d42f82fdbf0ec7b316e5aa5edf2e2 100644 (file)
@@ -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);
   }
 
index f28a6227d027662393022b0f4054341f71891e2c..c1da6ce88b9a51ebfe15e468cf3817be7c58d7be 100644 (file)
@@ -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());