summaryrefslogtreecommitdiff
path: root/lib/CodeGen/LiveDebugVariables.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-01-12 22:37:49 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-01-12 22:37:49 +0000
commitf203627f21614cbef9526aa791b3e7b0493d1e41 (patch)
treef66cbc9f4b6f7c14577532d303267b0d4f04d0a6 /lib/CodeGen/LiveDebugVariables.cpp
parentee547095bbf2c201029c0036ceeb49a66be37119 (diff)
downloadllvm-f203627f21614cbef9526aa791b3e7b0493d1e41.tar.gz
llvm-f203627f21614cbef9526aa791b3e7b0493d1e41.tar.bz2
llvm-f203627f21614cbef9526aa791b3e7b0493d1e41.tar.xz
Sometimes, old virtual registers can linger on DBG_VALUE instructions.
Make sure we don't crash in that case, but simply turn them into %noreg instead. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123335 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/LiveDebugVariables.cpp')
-rw-r--r--lib/CodeGen/LiveDebugVariables.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/CodeGen/LiveDebugVariables.cpp b/lib/CodeGen/LiveDebugVariables.cpp
index 9a67a630b5..1e2dba29b9 100644
--- a/lib/CodeGen/LiveDebugVariables.cpp
+++ b/lib/CodeGen/LiveDebugVariables.cpp
@@ -565,7 +565,8 @@ UserValue::rewriteLocations(VirtRegMap &VRM, const TargetRegisterInfo &TRI) {
!TargetRegisterInfo::isVirtualRegister(Loc.getReg()))
continue;
unsigned VirtReg = Loc.getReg();
- if (VRM.isAssignedReg(VirtReg)) {
+ if (VRM.isAssignedReg(VirtReg) &&
+ TargetRegisterInfo::isPhysicalRegister(VRM.getPhys(VirtReg))) {
Loc.substPhysReg(VRM.getPhys(VirtReg), TRI);
} else if (VRM.getStackSlot(VirtReg) != VirtRegMap::NO_STACK_SLOT) {
// FIXME: Translate SubIdx to a stackslot offset.