summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86RegisterInfo.cpp
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2010-01-15 01:54:55 +0000
committerDale Johannesen <dalej@apple.com>2010-01-15 01:54:55 +0000
commit0e7e55da1d1817281fe01820ae8836ca536aab3e (patch)
treef6bd8b8ec6597d11ec6112c2fc95f079e5884eab /llvm/lib/Target/X86/X86RegisterInfo.cpp
parent881ba0bb92e023391c479f189ac2f533a7a28c82 (diff)
downloadbcm5719-llvm-0e7e55da1d1817281fe01820ae8836ca536aab3e.tar.gz
bcm5719-llvm-0e7e55da1d1817281fe01820ae8836ca536aab3e.zip
Lower FrameIndex operand of DEBUG_VALUE (specially) and
print it as a comment on X86. llvm-svn: 93499
Diffstat (limited to 'llvm/lib/Target/X86/X86RegisterInfo.cpp')
-rw-r--r--llvm/lib/Target/X86/X86RegisterInfo.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp
index d96aafda603..9bd96af6c75 100644
--- a/llvm/lib/Target/X86/X86RegisterInfo.cpp
+++ b/llvm/lib/Target/X86/X86RegisterInfo.cpp
@@ -591,6 +591,15 @@ X86RegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
int FrameIndex = MI.getOperand(i).getIndex();
unsigned BasePtr;
+ // DEBUG_VALUE has a special representation, and is only robust enough to
+ // represent SP(or BP) +- offset addressing modes. We rewrite the
+ // FrameIndex to be a constant; implicitly positive constants are relative
+ // to ESP and negative ones to EBP.
+ if (MI.getOpcode()==TargetInstrInfo::DEBUG_VALUE) {
+ MI.getOperand(i).ChangeToImmediate(getFrameIndexOffset(MF, FrameIndex));
+ return 0;
+ }
+
if (needsStackRealignment(MF))
BasePtr = (FrameIndex < 0 ? FramePtr : StackPtr);
else
OpenPOWER on IntegriCloud