From a597103c328e29fb763e7a4864bd7c29a588fc9d Mon Sep 17 00:00:00 2001 From: Bob Wilson Date: Wed, 28 Oct 2009 20:46:46 +0000 Subject: [PATCH] Revert r85346 change to control tail merging by CodeGenOpt::Level. 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 | 7 +++---- lib/CodeGen/BranchFolding.cpp | 14 +++++--------- lib/CodeGen/BranchFolding.h | 10 +++------- lib/CodeGen/IfConversion.cpp | 13 ++++++------- lib/CodeGen/LLVMTargetMachine.cpp | 2 +- lib/Target/ARM/ARMTargetMachine.cpp | 2 +- 6 files changed, 19 insertions(+), 29 deletions(-) diff --git a/include/llvm/CodeGen/Passes.h b/include/llvm/CodeGen/Passes.h index 78fa8fe66ab..d0d610370bd 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 11777d5ea14..66c5aa5ff78 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 5d355256d14..9763e3339a2 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 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 SameTailElt; std::vector 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 be9e1f113b5..45f08b168a4 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 +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()); diff --git a/lib/CodeGen/LLVMTargetMachine.cpp b/lib/CodeGen/LLVMTargetMachine.cpp index 1a2daef24c1..e58a9ca82c6 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 f28a6227d02..c1da6ce88b9 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()); -- 2.34.1