diff options
author | Alkis Evlogimenos <alkis@evlogimenos.com> | 2004-02-15 21:50:32 +0000 |
---|---|---|
committer | Alkis Evlogimenos <alkis@evlogimenos.com> | 2004-02-15 21:50:32 +0000 |
commit | e27f33f00e60d1a4ff330624dccddba191a4a7c5 (patch) | |
tree | 86856906822cb1aca72fb0dc9e502db4eedf328c /llvm/lib/CodeGen/TwoAddressInstructionPass.cpp | |
parent | a8d97e4e74d37643988ed2eb55e35cd08d13a54d (diff) | |
download | bcm5719-llvm-e27f33f00e60d1a4ff330624dccddba191a4a7c5.tar.gz bcm5719-llvm-e27f33f00e60d1a4ff330624dccddba191a4a7c5.zip |
This pass should not require phi elimination or live variable
analysis. It should only preserve them and update LiveVariables if it
already ran.
llvm-svn: 11479
Diffstat (limited to 'llvm/lib/CodeGen/TwoAddressInstructionPass.cpp')
-rw-r--r-- | llvm/lib/CodeGen/TwoAddressInstructionPass.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp b/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp index 6f1e9901406..79c47ac26f4 100644 --- a/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp +++ b/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp @@ -65,9 +65,7 @@ const PassInfo *llvm::TwoAddressInstructionPassID = X.getPassInfo(); void TwoAddressInstructionPass::getAnalysisUsage(AnalysisUsage &AU) const { AU.addPreserved<LiveVariables>(); - AU.addRequired<LiveVariables>(); AU.addPreservedID(PHIEliminationID); - AU.addRequiredID(PHIEliminationID); MachineFunctionPass::getAnalysisUsage(AU); } @@ -79,7 +77,7 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &MF) { const TargetMachine &TM = MF.getTarget(); const MRegisterInfo &MRI = *TM.getRegisterInfo(); const TargetInstrInfo &TII = TM.getInstrInfo(); - LiveVariables &LV = getAnalysis<LiveVariables>(); + LiveVariables* LV = getAnalysisToUpdate<LiveVariables>(); bool MadeChange = false; @@ -139,18 +137,20 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &MF) { DEBUG(std::cerr << "\t\tadded instruction: "; prevMi->print(std::cerr, TM)); - // update live variables for regA - assert(Added == 1 && - "Cannot handle multi-instruction copies yet!"); - LiveVariables::VarInfo& varInfo = LV.getVarInfo(regA); - varInfo.DefInst = prevMi; + if (LV) { + // update live variables for regA + assert(Added == 1 && + "Cannot handle multi-instruction copies yet!"); + LiveVariables::VarInfo& varInfo = LV->getVarInfo(regA); + varInfo.DefInst = prevMi; - // update live variables for regB - if (LV.removeVirtualRegisterKilled(regB, &*mbbi, mi)) - LV.addVirtualRegisterKilled(regB, &*mbbi, prevMi); + // update live variables for regB + if (LV->removeVirtualRegisterKilled(regB, &*mbbi, mi)) + LV->addVirtualRegisterKilled(regB, &*mbbi, prevMi); - if (LV.removeVirtualRegisterDead(regB, &*mbbi, mi)) - LV.addVirtualRegisterDead(regB, &*mbbi, prevMi); + if (LV->removeVirtualRegisterDead(regB, &*mbbi, mi)) + LV->addVirtualRegisterDead(regB, &*mbbi, prevMi); + } // replace all occurences of regB with regA for (unsigned i = 1, e = mi->getNumOperands(); i != e; ++i) { |