Don't hang on to pointers or references after vector::push_back.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 3 Dec 2009 01:49:56 +0000 (01:49 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 3 Dec 2009 01:49:56 +0000 (01:49 +0000)
The MO reference to a MachineOperand can be invalidated by
MachineInstr::addOperand. Don't even use it for debugging.

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

lib/CodeGen/PostRASchedulerList.cpp

index 9101fce27a6f09282fa51402ff74dfffbaddcb1e..6995e9db1c1351c8d4588e08839af4e4dbd5ca28 100644 (file)
@@ -510,12 +510,9 @@ void SchedulePostRATDList::FixupKills(MachineBasicBlock *MBB) {
       }
       
       if (MO.isKill() != kill) {
-        bool removed = ToggleKillFlag(MI, MO);
-        if (removed) {
-          DEBUG(errs() << "Fixed <removed> in ");
-        } else {
-          DEBUG(errs() << "Fixed " << MO << " in ");
-        }
+        DEBUG(errs() << "Fixing " << MO << " in ");
+        // Warning: ToggleKillFlag may invalidate MO.
+        ToggleKillFlag(MI, MO);
         DEBUG(MI->dump());
       }