diff options
author | Owen Anderson <resistor@mac.com> | 2008-07-02 23:41:07 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2008-07-02 23:41:07 +0000 |
commit | f660c171c838793b87b7e58e91609cecf256378d (patch) | |
tree | 00033566da5e0a30f9e67bd56e9a124ccceabfb7 /lib/CodeGen/TwoAddressInstructionPass.cpp | |
parent | cd920d9ecfcefff13c3619a32b58399cac2e3630 (diff) |
Make LiveVariables even more optional, by making it optional in the call to TargetInstrInfo::convertToThreeAddressInstruction
Also, if LV isn't around, then TwoAddr doesn't need to be updating flags, since they won't have been set in the first place.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53058 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/TwoAddressInstructionPass.cpp')
-rw-r--r-- | lib/CodeGen/TwoAddressInstructionPass.cpp | 47 |
1 files changed, 1 insertions, 46 deletions
diff --git a/lib/CodeGen/TwoAddressInstructionPass.cpp b/lib/CodeGen/TwoAddressInstructionPass.cpp index f6e2f55b30..d2e5288d34 100644 --- a/lib/CodeGen/TwoAddressInstructionPass.cpp +++ b/lib/CodeGen/TwoAddressInstructionPass.cpp @@ -378,27 +378,6 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &MF) { if (LV) { // Update live variables LV->instructionChanged(mi, NewMI); - } else { - // Update flags manually - for (unsigned i = 0, e = mi->getNumOperands(); - i != e; ++i) { - MachineOperand &MO = mi->getOperand(i); - if (MO.isRegister() && MO.getReg() && - TargetRegisterInfo::isVirtualRegister(MO.getReg())) { - unsigned Reg = MO.getReg(); - if (MO.isDef()) { - if (MO.isDead()) { - MO.setIsDead(false); - NewMI->addRegisterDead(Reg, TRI); - } - } - - if (MO.isKill()) { - MO.setIsKill(false); - NewMI->addRegisterKilled(Reg, TRI); - } - } - } } mbbi->insert(mi, NewMI); // Insert the new inst @@ -424,7 +403,7 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &MF) { assert(TID.getOperandConstraint(i, TOI::TIED_TO) == -1); #endif - MachineInstr *NewMI = TII->convertToThreeAddress(mbbi, mi, *LV); + MachineInstr *NewMI = TII->convertToThreeAddress(mbbi, mi, LV); if (NewMI) { DOUT << "2addr: CONVERTING 2-ADDR: " << *mi; DOUT << "2addr: TO 3-ADDR: " << *NewMI; @@ -481,30 +460,6 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &MF) { if (LV->removeVirtualRegisterDead(regB, mbbi, mi)) LV->addVirtualRegisterDead(regB, prevMi); - } else { - // Manually update kill/dead flags. - bool RemovedKill = false; - bool RemovedDead = false; - for (unsigned i = 0, e = mi->getNumOperands(); i != e; ++i) { - MachineOperand &MO = mi->getOperand(i); - if (MO.isRegister() && MO.isKill() && MO.getReg() == regB) { - MO.setIsKill(false); - RemovedKill = true; - break; - } - - if (MO.isRegister() && MO.isDef() && MO.getReg() == regB) { - MO.setIsDead(false); - RemovedDead = true; - } - - if (RemovedKill && RemovedDead) break; - } - - if (RemovedKill) - prevMi->addRegisterKilled(regB, TRI); - if (RemovedDead) - prevMi->addRegisterDead(regB, TRI); } // Replace all occurences of regB with regA. |