summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2011-02-01 22:30:51 +0000
committerBob Wilson <bob.wilson@apple.com>2011-02-01 22:30:51 +0000
commit59513209aa95c567a014ed6eaf48722af46c08f2 (patch)
treef2ebebf54d89e201eb3ee4f55f28bd566f821859 /llvm/lib
parentf4f8278c95c2f15fc03c76abe37ebcb76e47d602 (diff)
downloadbcm5719-llvm-59513209aa95c567a014ed6eaf48722af46c08f2.tar.gz
bcm5719-llvm-59513209aa95c567a014ed6eaf48722af46c08f2.zip
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. llvm-svn: 124694
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/ARM/ARMJITInfo.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMJITInfo.cpp b/llvm/lib/Target/ARM/ARMJITInfo.cpp
index 50e6562c79e..61c68ef1379 100644
--- a/llvm/lib/Target/ARM/ARMJITInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMJITInfo.cpp
@@ -43,7 +43,7 @@ static TargetJITInfo::JITCompilerFn JITCompilerFunction;
#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 @@ extern "C" {
// 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() {
OpenPOWER on IntegriCloud