summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCDwarf.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2011-04-12 18:53:30 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2011-04-12 18:53:30 +0000
commitfd794affe5d68bf80e96297a2f8cdee49f3bbdda (patch)
tree4595ea66b847341076de9dc380d8dfd1f3a4008f /llvm/lib/MC/MCDwarf.cpp
parentab86a519f82057b7f1ecabef9d6fb12e5d52e244 (diff)
downloadbcm5719-llvm-fd794affe5d68bf80e96297a2f8cdee49f3bbdda.tar.gz
bcm5719-llvm-fd794affe5d68bf80e96297a2f8cdee49f3bbdda.zip
Remove LastOffset from the asm parser.
llvm-svn: 129378
Diffstat (limited to 'llvm/lib/MC/MCDwarf.cpp')
-rw-r--r--llvm/lib/MC/MCDwarf.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/MC/MCDwarf.cpp b/llvm/lib/MC/MCDwarf.cpp
index 84f4a3f5317..8770c8fd2be 100644
--- a/llvm/lib/MC/MCDwarf.cpp
+++ b/llvm/lib/MC/MCDwarf.cpp
@@ -523,6 +523,7 @@ void FrameEmitterImpl::EmitCFIInstruction(MCStreamer &Streamer,
case MCCFIInstruction::RelMove: {
const MachineLocation &Dst = Instr.getDestination();
const MachineLocation &Src = Instr.getSource();
+ const bool IsRelative = Instr.getOperation() == MCCFIInstruction::RelMove;
// If advancing cfa.
if (Dst.isReg() && Dst.getReg() == MachineLocation::VirtualFP) {
@@ -535,7 +536,11 @@ void FrameEmitterImpl::EmitCFIInstruction(MCStreamer &Streamer,
Streamer.EmitULEB128IntValue(Src.getReg());
}
- CFAOffset = -Src.getOffset();
+ if (IsRelative)
+ CFAOffset += Src.getOffset();
+ else
+ CFAOffset = -Src.getOffset();
+
Streamer.EmitULEB128IntValue(CFAOffset, 1);
return;
}
@@ -549,7 +554,6 @@ void FrameEmitterImpl::EmitCFIInstruction(MCStreamer &Streamer,
unsigned Reg = Src.getReg();
- const bool IsRelative = Instr.getOperation() == MCCFIInstruction::RelMove;
int Offset = Dst.getOffset();
if (IsRelative)
Offset -= CFAOffset;
OpenPOWER on IntegriCloud