We don't need to insert copies for implicit_def's.
authorOwen Anderson <resistor@mac.com>
Fri, 26 Sep 2008 18:50:46 +0000 (18:50 +0000)
committerOwen Anderson <resistor@mac.com>
Fri, 26 Sep 2008 18:50:46 +0000 (18:50 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56674 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/StrongPHIElimination.cpp

index 33bfa57b1cd5e4d44238c8941d80d1c06dedeb1d..f6aa44e2346d80a51466d1bce42a85d8f99f2232 100644 (file)
@@ -419,7 +419,6 @@ void StrongPHIElimination::processBlock(MachineBasicBlock* MBB) {
   MachineBasicBlock::iterator P = MBB->begin();
   while (P != MBB->end() && P->getOpcode() == TargetInstrInfo::PHI) {
     unsigned DestReg = P->getOperand(0).getReg();
-
     
     // Don't both doing PHI elimination for dead PHI's.
     if (P->registerDefIsDead(DestReg)) {
@@ -448,6 +447,11 @@ void StrongPHIElimination::processBlock(MachineBasicBlock* MBB) {
         ProcessedNames.insert(SrcReg);
         continue;
       }
+      
+      // We don't need to insert copies for implicit_defs.
+      MachineInstr* DefMI = MRI.getVRegDef(SrcReg);
+      if (DefMI->getOpcode() == TargetInstrInfo::IMPLICIT_DEF)
+        ProcessedNames.insert(SrcReg);
     
       // Check for trivial interferences via liveness information, allowing us
       // to avoid extra work later.  Any registers that interfere cannot both