diff options
Diffstat (limited to 'llvm/test/CodeGen/M68k/CodeModel/Medium/medium-pie.ll')
| -rw-r--r-- | llvm/test/CodeGen/M68k/CodeModel/Medium/medium-pie.ll | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/M68k/CodeModel/Medium/medium-pie.ll b/llvm/test/CodeGen/M68k/CodeModel/Medium/medium-pie.ll new file mode 100644 index 000000000000..18552f87d154 --- /dev/null +++ b/llvm/test/CodeGen/M68k/CodeModel/Medium/medium-pie.ll @@ -0,0 +1,66 @@ +; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py +; RUN: llc < %s -O0 -mtriple=m68k -verify-machineinstrs \ +; RUN: -code-model=medium -relocation-model=pic \ +; RUN: | FileCheck %s + +define weak void @weak_foo() { +; CHECK-LABEL: weak_foo: +; CHECK: .cfi_startproc +; CHECK-NEXT: ; %bb.0: +; CHECK-NEXT: rts + ret void +} + +define weak_odr void @weak_odr_foo() { +; CHECK-LABEL: weak_odr_foo: +; CHECK: .cfi_startproc +; CHECK-NEXT: ; %bb.0: +; CHECK-NEXT: rts + ret void +} + +define internal void @internal_foo() { +; CHECK-LABEL: internal_foo: +; CHECK: .cfi_startproc +; CHECK-NEXT: ; %bb.0: +; CHECK-NEXT: rts + ret void +} + +declare i32 @ext_baz() + +define void @foo() { +; CHECK-LABEL: foo: +; CHECK: .cfi_startproc +; CHECK-NEXT: ; %bb.0: +; CHECK-NEXT: rts + ret void +} + +define void @bar() { +; CHECK-LABEL: bar: +; CHECK: .cfi_startproc +; CHECK-NEXT: ; %bb.0: ; %entry +; CHECK-NEXT: suba.l #4, %sp +; CHECK-NEXT: .cfi_def_cfa_offset -8 +; CHECK-NEXT: jsr (foo@PLT,%pc) +; CHECK-NEXT: jsr (weak_odr_foo@PLT,%pc) +; CHECK-NEXT: jsr (weak_foo@PLT,%pc) +; CHECK-NEXT: jsr (internal_foo,%pc) +; CHECK-NEXT: jsr (ext_baz@PLT,%pc) +; CHECK-NEXT: adda.l #4, %sp +; CHECK-NEXT: rts +entry: + call void @foo() + call void @weak_odr_foo() + call void @weak_foo() + call void @internal_foo() + call i32 @ext_baz() + ret void +} + +; -fpie for local global data tests should be added here + +!llvm.module.flags = !{!0, !1} +!0 = !{i32 1, !"PIC Level", i32 1} +!1 = !{i32 1, !"PIE Level", i32 1} |
