Fix for the original bug in PR5495 - Look at uses as well as defs when determining...
authorLang Hames <lhames@gmail.com>
Mon, 16 Nov 2009 02:00:09 +0000 (02:00 +0000)
committerLang Hames <lhames@gmail.com>
Mon, 16 Nov 2009 02:00:09 +0000 (02:00 +0000)
- Patch by Andrew Canis!

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

lib/CodeGen/PHIElimination.cpp

index cb0211f38d8b0bd5968b518a05b0a2c99afca9ba..c4f2cc7a75d382c0ae089b21da07245ab5913ba1 100644 (file)
@@ -141,10 +141,10 @@ llvm::PHIElimination::FindCopyInsertPoint(MachineBasicBlock &MBB,
   if (!SuccMBB.isLandingPad())
     return MBB.getFirstTerminator();
 
-  // Discover any definitions in this basic block.
+  // Discover any defs/uses in this basic block.
   SmallPtrSet<MachineInstr*, 8> DefUsesInMBB;
-  for (MachineRegisterInfo::def_iterator RI = MRI->def_begin(SrcReg),
-         RE = MRI->def_end(); RI != RE; ++RI) {
+  for (MachineRegisterInfo::reg_iterator RI = MRI->reg_begin(SrcReg),
+         RE = MRI->reg_end(); RI != RE; ++RI) {
     MachineInstr *DefUseMI = &*RI;
     if (DefUseMI->getParent() == &MBB)
       DefUsesInMBB.insert(DefUseMI);
@@ -155,11 +155,11 @@ llvm::PHIElimination::FindCopyInsertPoint(MachineBasicBlock &MBB,
     // No defs.  Insert the copy at the start of the basic block.
     InsertPoint = MBB.begin();
   } else if (DefUsesInMBB.size() == 1) {
-    // Insert the copy immediately after the def.
+    // Insert the copy immediately after the def/use.
     InsertPoint = *DefUsesInMBB.begin();
     ++InsertPoint;
   } else {
-    // Insert the copy immediately after the last def.
+    // Insert the copy immediately after the last def/use.
     InsertPoint = MBB.end();
     while (!DefUsesInMBB.count(&*--InsertPoint)) {}
     ++InsertPoint;