Iterate backwards over debug locations when splitting them so they can be safely...
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 6 May 2011 19:31:19 +0000 (19:31 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 6 May 2011 19:31:19 +0000 (19:31 +0000)
This should unbreak dragonegg-i386-linux and build-self-4-mingw32.

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

lib/CodeGen/LiveDebugVariables.cpp

index 41bf87fc5db56fb8bdc2d48d148bf8b2af9bb77f..783a7e1ded0ce741dd0e662bb0aed9eea79849e1 100644 (file)
@@ -795,7 +795,10 @@ UserValue::splitLocation(unsigned OldLocNo, ArrayRef<LiveInterval*> NewRegs) {
 bool
 UserValue::splitRegister(unsigned OldReg, ArrayRef<LiveInterval*> NewRegs) {
   bool DidChange = false;
-  for (unsigned LocNo = 0, E = locations.size(); LocNo != E; ++LocNo) {
+  // Split locations referring to OldReg. Iterate backwards so splitLocation can
+  // safely erase unuused locations.
+  for (unsigned i = locations.size(); i ; --i) {
+    unsigned LocNo = i-1;
     const MachineOperand *Loc = &locations[LocNo];
     if (!Loc->isReg() || Loc->getReg() != OldReg)
       continue;