diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-04-12 18:53:30 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-04-12 18:53:30 +0000 |
commit | 5d7dcd3335234d2a2bc16dc69f86fbb5dcaa8962 (patch) | |
tree | 6b10dcdbafc6a5486bd27729a94b17823a9f0f49 /lib/MC/MCDwarf.cpp | |
parent | f9ce2cba42f76ad82bbb17436902f66a9e5f6367 (diff) |
Remove LastOffset from the asm parser.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129378 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCDwarf.cpp')
-rw-r--r-- | lib/MC/MCDwarf.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/MC/MCDwarf.cpp b/lib/MC/MCDwarf.cpp index 84f4a3f531..8770c8fd2b 100644 --- a/lib/MC/MCDwarf.cpp +++ b/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; |