[llvm-commits] [llvm] r124694 - /llvm/trunk/lib/Target/ARM/ARMJITInfo.cpp
Bob Wilson
bob.wilson at apple.com
Tue Feb 1 14:30:51 PST 2011
Author: bwilson
Date: Tue Feb 1 16:30:51 2011
New Revision: 124694
URL: http://llvm.org/viewvc/llvm-project?rev=124694&view=rev
Log:
PR9081: Split up LDM instruction with deprecated use of both LR and PC.
This is completely untested but pretty straightforward, so hopefully I
got it right.
Modified:
llvm/trunk/lib/Target/ARM/ARMJITInfo.cpp
Modified: llvm/trunk/lib/Target/ARM/ARMJITInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMJITInfo.cpp?rev=124694&r1=124693&r2=124694&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMJITInfo.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMJITInfo.cpp Tue Feb 1 16:30:51 2011
@@ -43,7 +43,7 @@
#define ASMPREFIX GETASMPREFIX(__USER_LABEL_PREFIX__)
// CompilationCallback stub - We can't use a C function with inline assembly in
-// it, because we the prolog/epilog inserted by GCC won't work for us (we need
+// it, because the prolog/epilog inserted by GCC won't work for us. (We need
// to preserve more context and manipulate the stack directly). Instead,
// write our own wrapper, which does things our way, so we have complete
// control over register saving and restoring.
@@ -99,7 +99,8 @@
// The above twiddling of the saved return addresses allows us to
// deallocate everything, including the LR the stub saved, all in one
// pop instruction.
- "ldmia sp!, {r0, r1, r2, r3, lr, pc}\n"
+ "ldmia sp!, {r0, r1, r2, r3, lr}\n"
+ "ldr pc, [sp], #4\n"
);
#else // Not an ARM host
void ARMCompilationCallback() {
More information about the llvm-commits
mailing list