Use getVRegDef() instead of def_iterator. This leads to fewer defs being added
authorCameron Zwarich <zwarich@apple.com>
Thu, 30 Dec 2010 00:42:23 +0000 (00:42 +0000)
committerCameron Zwarich <zwarich@apple.com>
Thu, 30 Dec 2010 00:42:23 +0000 (00:42 +0000)
with 2-address instructions, for about a 3.5% speedup of StrongPHIElimination on
403.gcc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122635 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/StrongPHIElimination.cpp

index 87bb8034883a92eb1e71963a4a4c63be109580af..91ec13df643c8101957721e56d8adfb76ef613ec 100644 (file)
@@ -233,10 +233,9 @@ bool StrongPHIElimination::runOnMachineFunction(MachineFunction& MF) {
         addReg(SrcReg);
         unionRegs(DestReg, SrcReg);
 
-        for (MachineRegisterInfo::def_iterator DI = MRI->def_begin(SrcReg),
-             DE = MRI->def_end(); DI != DE; ++DI) {
-          PHISrcDefs[DI->getParent()].push_back(&*DI);
-        }
+        MachineInstr* DefMI = MRI->getVRegDef(SrcReg);
+        if (DefMI)
+          PHISrcDefs[DefMI->getParent()].push_back(DefMI);
       }
     }
   }