ARM assembler stuff is crazy: for .setfp positive values of offset corresponds to...
authorAnton Korobeynikov <asl@math.spbu.ru>
Sat, 5 Mar 2011 18:44:00 +0000 (18:44 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Sat, 5 Mar 2011 18:44:00 +0000 (18:44 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127106 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMAsmPrinter.cpp

index 135148d1645880c2a8a25012fff64cea3d1bbfaa..e1a2cc57abf0bb65bd41f611e390dcd0f69e31e3 100644 (file)
@@ -916,10 +916,11 @@ void ARMAsmPrinter::EmitUnwindingInstruction(const MachineInstr *MI) {
       }
 
       if (DstReg == FramePtr && FramePtr != ARM::SP)
-        // Set-up of the frame pointer.
-        OutStreamer.EmitSetFP(FramePtr, ARM::SP, Offset);
+        // Set-up of the frame pointer. Positive values correspond to "add"
+        // instruction.
+        OutStreamer.EmitSetFP(FramePtr, ARM::SP, -Offset);
       else if (DstReg == ARM::SP) {
-        // Change of SP by an offset. Positive values corresponds to "sub"
+        // Change of SP by an offset. Positive values correspond to "sub"
         // instruction.
         OutStreamer.EmitPad(Offset);
       } else {