From 6212f9a304d7f8061c87920d39bddbc19afecb0c Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Fri, 6 May 2011 19:31:19 +0000 Subject: [PATCH] Iterate backwards over debug locations when splitting them so they can be safely erased. 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 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/CodeGen/LiveDebugVariables.cpp b/lib/CodeGen/LiveDebugVariables.cpp index 41bf87fc5db..783a7e1ded0 100644 --- a/lib/CodeGen/LiveDebugVariables.cpp +++ b/lib/CodeGen/LiveDebugVariables.cpp @@ -795,7 +795,10 @@ UserValue::splitLocation(unsigned OldLocNo, ArrayRef NewRegs) { bool UserValue::splitRegister(unsigned OldReg, ArrayRef 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;