diff options
Diffstat (limited to 'test/CodeGen/ARM/none-macho-v4t.ll')
-rw-r--r-- | test/CodeGen/ARM/none-macho-v4t.ll | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/test/CodeGen/ARM/none-macho-v4t.ll b/test/CodeGen/ARM/none-macho-v4t.ll new file mode 100644 index 0000000..4c6e68e --- /dev/null +++ b/test/CodeGen/ARM/none-macho-v4t.ll @@ -0,0 +1,21 @@ +; RUN: llc -mtriple=thumb-none-macho -mcpu=arm7tdmi %s -o - | FileCheck %s +; RUN: llc -mtriple=thumb-none-macho -mcpu=arm7tdmi %s -filetype=obj -o /dev/null + +declare void @callee() + +define void @test_call() { + ; BX can only take a register before v5t came along, so we must materialise + ; the address properly. +; CHECK-LABEL: test_call: +; CHECK: ldr r[[CALLEE_STUB:[0-9]+]], [[LITPOOL:LCPI[0-9]+_[0-9]+]] +; CHECK: [[PC_LABEL:LPC[0-9]+_[0-9]+]]: +; CHECK-NEXT: add r[[CALLEE_STUB]], pc +; CHECK: ldr [[CALLEE:r[0-9]+]], [r[[CALLEE_STUB]]] +; CHECK: mov lr, pc +; CHECK: bx [[CALLEE]] + +; CHECK: [[LITPOOL]]: +; CHECK-NEXT: .long L_callee$non_lazy_ptr-([[PC_LABEL]]+4) + call void @callee() + ret void +} |