summaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/M68k/CodeModel/Small/small-pie.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/M68k/CodeModel/Small/small-pie.ll')
-rw-r--r--llvm/test/CodeGen/M68k/CodeModel/Small/small-pie.ll67
1 files changed, 67 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/M68k/CodeModel/Small/small-pie.ll b/llvm/test/CodeGen/M68k/CodeModel/Small/small-pie.ll
new file mode 100644
index 000000000000..1456149ed12b
--- /dev/null
+++ b/llvm/test/CodeGen/M68k/CodeModel/Small/small-pie.ll
@@ -0,0 +1,67 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -O0 -mtriple=m68k -verify-machineinstrs \
+; RUN: -code-model=small -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}