summaryrefslogtreecommitdiff
path: root/lib/CodeGen
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2010-12-03 21:47:08 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2010-12-03 21:47:08 +0000
commit8d2584a1d9ab56d35884d035e4da6146b4d7391f (patch)
treeab99d44d78cc986ad09f3c9e9e88b698147bfe7f /lib/CodeGen
parent41ad0c4c730bdbd4ec3a03868b81a56b6b1b01a1 (diff)
downloadllvm-8d2584a1d9ab56d35884d035e4da6146b4d7391f.tar.gz
llvm-8d2584a1d9ab56d35884d035e4da6146b4d7391f.tar.bz2
llvm-8d2584a1d9ab56d35884d035e4da6146b4d7391f.tar.xz
Also update virtRegMap when renaming virtual registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120841 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen')
-rw-r--r--lib/CodeGen/LiveDebugVariables.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/CodeGen/LiveDebugVariables.cpp b/lib/CodeGen/LiveDebugVariables.cpp
index 4b428f6589..73083c7715 100644
--- a/lib/CodeGen/LiveDebugVariables.cpp
+++ b/lib/CodeGen/LiveDebugVariables.cpp
@@ -583,8 +583,18 @@ renameRegister(unsigned OldReg, unsigned NewReg, unsigned SubIdx,
void LDVImpl::
renameRegister(unsigned OldReg, unsigned NewReg, unsigned SubIdx) {
- for (UserValue *UV = lookupVirtReg(OldReg); UV; UV = UV->getNext())
+ UserValue *UV = lookupVirtReg(OldReg);
+ if (!UV)
+ return;
+
+ if (TargetRegisterInfo::isVirtualRegister(NewReg))
+ mapVirtReg(NewReg, UV);
+ virtRegMap.erase(OldReg);
+
+ do {
UV->renameRegister(OldReg, NewReg, SubIdx, TRI);
+ UV = UV->getNext();
+ } while (UV);
}
void LiveDebugVariables::