diff options
author | Andrew Trick <atrick@apple.com> | 2012-02-08 21:22:30 +0000 |
---|---|---|
committer | Andrew Trick <atrick@apple.com> | 2012-02-08 21:22:30 +0000 |
commit | d2a7bedbc9d3db35ff424a6a2d257c72341af224 (patch) | |
tree | 1be8e6106f43feaaf69186720e95d598e05d6e85 | |
parent | a94e635cec8dff2c9b39343643fe204dfab390dc (diff) | |
download | external_llvm-d2a7bedbc9d3db35ff424a6a2d257c72341af224.zip external_llvm-d2a7bedbc9d3db35ff424a6a2d257c72341af224.tar.gz external_llvm-d2a7bedbc9d3db35ff424a6a2d257c72341af224.tar.bz2 |
Move pass configuration out of pass constructors: TailDuplicate::PreRegAlloc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150091 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/Passes.h | 2 | ||||
-rw-r--r-- | lib/CodeGen/Passes.cpp | 4 | ||||
-rw-r--r-- | lib/CodeGen/TailDuplication.cpp | 13 | ||||
-rw-r--r-- | lib/Target/PTX/PTXTargetMachine.cpp | 4 |
4 files changed, 12 insertions, 11 deletions
diff --git a/include/llvm/CodeGen/Passes.h b/include/llvm/CodeGen/Passes.h index 30abcd7..2585aeb 100644 --- a/include/llvm/CodeGen/Passes.h +++ b/include/llvm/CodeGen/Passes.h @@ -272,7 +272,7 @@ namespace llvm { /// TailDuplicate Pass - Duplicate blocks with unconditional branches /// into tails of their predecessors. - FunctionPass *createTailDuplicatePass(bool PreRegAlloc = false); + FunctionPass *createTailDuplicatePass(); /// IfConverter Pass - This pass performs machine code if conversion. FunctionPass *createIfConverterPass(); diff --git a/lib/CodeGen/Passes.cpp b/lib/CodeGen/Passes.cpp index 21d8714..eb56734 100644 --- a/lib/CodeGen/Passes.cpp +++ b/lib/CodeGen/Passes.cpp @@ -178,7 +178,7 @@ void TargetPassConfig::addMachinePasses() { // Pre-ra tail duplication. if (getOptLevel() != CodeGenOpt::None && !DisableEarlyTailDup) { - PM.add(createTailDuplicatePass(true)); + PM.add(createTailDuplicatePass()); printAndVerify("After Pre-RegAlloc TailDuplicate"); } @@ -250,7 +250,7 @@ void TargetPassConfig::addMachinePasses() { // Tail duplication. if (getOptLevel() != CodeGenOpt::None && !DisableTailDuplicate) { - PM.add(createTailDuplicatePass(false)); + PM.add(createTailDuplicatePass()); printNoVerify("After TailDuplicate"); } diff --git a/lib/CodeGen/TailDuplication.cpp b/lib/CodeGen/TailDuplication.cpp index 031377b..ac4e2c4 100644 --- a/lib/CodeGen/TailDuplication.cpp +++ b/lib/CodeGen/TailDuplication.cpp @@ -56,10 +56,10 @@ typedef std::vector<std::pair<MachineBasicBlock*,unsigned> > AvailableValsTy; namespace { /// TailDuplicatePass - Perform tail duplication. class TailDuplicatePass : public MachineFunctionPass { - bool PreRegAlloc; const TargetInstrInfo *TII; MachineModuleInfo *MMI; MachineRegisterInfo *MRI; + bool PreRegAlloc; // SSAUpdateVRs - A list of virtual registers for which to update SSA form. SmallVector<unsigned, 16> SSAUpdateVRs; @@ -70,8 +70,8 @@ namespace { public: static char ID; - explicit TailDuplicatePass(bool PreRA) : - MachineFunctionPass(ID), PreRegAlloc(PreRA) {} + explicit TailDuplicatePass() : + MachineFunctionPass(ID), PreRegAlloc(false) {} virtual bool runOnMachineFunction(MachineFunction &MF); virtual const char *getPassName() const { return "Tail Duplication"; } @@ -118,14 +118,15 @@ namespace { char TailDuplicatePass::ID = 0; } -FunctionPass *llvm::createTailDuplicatePass(bool PreRegAlloc) { - return new TailDuplicatePass(PreRegAlloc); +FunctionPass *llvm::createTailDuplicatePass() { + return new TailDuplicatePass(); } bool TailDuplicatePass::runOnMachineFunction(MachineFunction &MF) { TII = MF.getTarget().getInstrInfo(); MRI = &MF.getRegInfo(); MMI = getAnalysisIfAvailable<MachineModuleInfo>(); + PreRegAlloc = MRI->isSSA(); bool MadeChange = false; while (TailDuplicateBlocks(MF)) @@ -823,7 +824,7 @@ TailDuplicatePass::TailDuplicate(MachineBasicBlock *TailBB, SmallVector<MachineOperand, 4> PriorCond; // This has to check PrevBB->succ_size() because EH edges are ignored by // AnalyzeBranch. - if (PrevBB->succ_size() == 1 && + if (PrevBB->succ_size() == 1 && !TII->AnalyzeBranch(*PrevBB, PriorTBB, PriorFBB, PriorCond, true) && PriorCond.empty() && !PriorTBB && TailBB->pred_size() == 1 && !TailBB->hasAddressTaken()) { diff --git a/lib/Target/PTX/PTXTargetMachine.cpp b/lib/Target/PTX/PTXTargetMachine.cpp index 4ffd01b..8901fa0 100644 --- a/lib/Target/PTX/PTXTargetMachine.cpp +++ b/lib/Target/PTX/PTXTargetMachine.cpp @@ -284,7 +284,7 @@ bool PTXPassConfig::addCodeGenPasses(MCContext *&OutContext) { // Pre-ra tail duplication. if (getOptLevel() != CodeGenOpt::None) { - PM.add(createTailDuplicatePass(true)); + PM.add(createTailDuplicatePass()); printAndVerify("After Pre-RegAlloc TailDuplicate"); } @@ -365,7 +365,7 @@ bool PTXPassConfig::addCodeGenPasses(MCContext *&OutContext) { // Tail duplication. if (getOptLevel() != CodeGenOpt::None) { - PM.add(createTailDuplicatePass(false)); + PM.add(createTailDuplicatePass()); printNoVerify("After TailDuplicate"); } |