Better terminator avoidance.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 13 Jan 2011 23:35:53 +0000 (23:35 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 13 Jan 2011 23:35:53 +0000 (23:35 +0000)
This approach also works when the terminator doesn't have a slot index. (Which
can happen??)

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

lib/CodeGen/LiveDebugVariables.cpp

index 5e8e30959c9c1c7cebb783d756605ccd8fa98b82..38b270d5e1caa0817b7abfb666c010bf6d5c1517 100644 (file)
@@ -589,14 +589,6 @@ findInsertLocation(MachineBasicBlock *MBB, SlotIndex Idx, DebugLoc &DL,
   SlotIndex Start = LIS.getMBBStartIdx(MBB);
   Idx = Idx.getBaseIndex();
 
-  // Don't insert anything after the first terminator.
-  MachineBasicBlock::iterator Term = MBB->getFirstTerminator();
-  if (Term != MBB->end() && !LIS.isNotInMIMap(Term) &&
-      Idx >= LIS.getInstructionIndex(Term)) {
-    DL = Term->getDebugLoc();
-    return Term;
-  }
-
   // Try to find an insert location by going backwards from Idx.
   MachineInstr *MI;
   while (!(MI = LIS.getInstructionFromIndex(Idx))) {
@@ -611,7 +603,9 @@ findInsertLocation(MachineBasicBlock *MBB, SlotIndex Idx, DebugLoc &DL,
   }
   // We found an instruction. The insert point is after the instr.
   DL = MI->getDebugLoc();
-  return llvm::next(MachineBasicBlock::iterator(MI));
+  // Don't insert anything after the first terminator, though.
+  return MI->getDesc().isTerminator() ? MBB->getFirstTerminator() :
+                                    llvm::next(MachineBasicBlock::iterator(MI));
 }
 
 void UserValue::insertDebugValue(MachineBasicBlock *MBB, SlotIndex Idx,