Skip to content

Commit f9614b3

Browse files
committed
[AArch64] Improve nonlazybind test
Prepare for -fno-plt implementation.
1 parent 3412bc7 commit f9614b3

File tree

1 file changed

+90
-28
lines changed

1 file changed

+90
-28
lines changed
Lines changed: 90 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,102 @@
1-
; RUN: llc -mtriple=aarch64-apple-ios %s -o - -aarch64-enable-nonlazybind | FileCheck %s
2-
; RUN: llc -mtriple=aarch64-apple-ios %s -o - | FileCheck %s --check-prefix=CHECK-NORMAL
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2+
; RUN: llc -mtriple=aarch64-apple-ios %s -o - -aarch64-enable-nonlazybind | FileCheck %s --check-prefix=MACHO
3+
; RUN: llc -mtriple=aarch64-apple-ios %s -o - | FileCheck %s --check-prefix=MACHO-NORMAL
4+
; RUN: llc -mtriple=aarch64 -fast-isel %s -o - | FileCheck %s --check-prefixes=ELF,ELF-FI
5+
; RUN: llc -mtriple=aarch64 -global-isel %s -o - | FileCheck %s --check-prefixes=ELF,ELF-GI
6+
; RUN: llc -mtriple=aarch64 %s -o - | FileCheck %s --check-prefixes=ELF,ELF-SDAG
37

4-
define void @local() nonlazybind {
8+
define dso_preemptable void @preemptable() nonlazybind {
9+
; MACHO-LABEL: preemptable:
10+
; MACHO: ; %bb.0:
11+
; MACHO-NEXT: ret
12+
;
13+
; MACHO-NORMAL-LABEL: preemptable:
14+
; MACHO-NORMAL: ; %bb.0:
15+
; MACHO-NORMAL-NEXT: ret
16+
;
17+
; ELF-LABEL: preemptable:
18+
; ELF: // %bb.0:
19+
; ELF-NEXT: ret
520
ret void
621
}
722

8-
declare void @nonlocal() nonlazybind
9-
10-
define void @test_laziness() {
11-
; CHECK-LABEL: test_laziness:
12-
13-
; CHECK: bl _local
14-
15-
; CHECK: adrp x[[TMP:[0-9]+]], _nonlocal@GOTPAGE
16-
; CHECK: ldr [[FUNC:x[0-9]+]], [x[[TMP]], _nonlocal@GOTPAGEOFF]
17-
; CHECK: blr [[FUNC]]
23+
define dso_local void @local() nonlazybind {
24+
; MACHO-LABEL: local:
25+
; MACHO: ; %bb.0:
26+
; MACHO-NEXT: ret
27+
;
28+
; MACHO-NORMAL-LABEL: local:
29+
; MACHO-NORMAL: ; %bb.0:
30+
; MACHO-NORMAL-NEXT: ret
31+
;
32+
; ELF-LABEL: local:
33+
; ELF: // %bb.0:
34+
; ELF-NEXT: ret
35+
ret void
36+
}
1837

19-
; CHECK-NORMAL-LABEL: test_laziness:
20-
; CHECK-NORMAL: bl _local
21-
; CHECK-NORMAL: bl _nonlocal
38+
declare void @external() nonlazybind
2239

40+
define void @test_laziness() nounwind {
41+
;
42+
; MACHO-LABEL: test_laziness:
43+
; MACHO: ; %bb.0:
44+
; MACHO-NEXT: stp x29, x30, [sp, #-16]! ; 16-byte Folded Spill
45+
; MACHO-NEXT: bl _preemptable
46+
; MACHO-NEXT: bl _local
47+
; MACHO-NEXT: Lloh0:
48+
; MACHO-NEXT: adrp x8, _external@GOTPAGE
49+
; MACHO-NEXT: Lloh1:
50+
; MACHO-NEXT: ldr x8, [x8, _external@GOTPAGEOFF]
51+
; MACHO-NEXT: blr x8
52+
; MACHO-NEXT: ldp x29, x30, [sp], #16 ; 16-byte Folded Reload
53+
; MACHO-NEXT: ret
54+
; MACHO-NEXT: .loh AdrpLdrGot Lloh0, Lloh1
55+
;
56+
; MACHO-NORMAL-LABEL: test_laziness:
57+
; MACHO-NORMAL: ; %bb.0:
58+
; MACHO-NORMAL-NEXT: stp x29, x30, [sp, #-16]! ; 16-byte Folded Spill
59+
; MACHO-NORMAL-NEXT: bl _preemptable
60+
; MACHO-NORMAL-NEXT: bl _local
61+
; MACHO-NORMAL-NEXT: bl _external
62+
; MACHO-NORMAL-NEXT: ldp x29, x30, [sp], #16 ; 16-byte Folded Reload
63+
; MACHO-NORMAL-NEXT: ret
64+
;
65+
; ELF-LABEL: test_laziness:
66+
; ELF: // %bb.0:
67+
; ELF-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill
68+
; ELF-NEXT: bl preemptable
69+
; ELF-NEXT: bl local
70+
; ELF-NEXT: bl external
71+
; ELF-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload
72+
; ELF-NEXT: ret
73+
call void @preemptable()
2374
call void @local()
24-
call void @nonlocal()
75+
call void @external()
2576
ret void
2677
}
2778

28-
define void @test_laziness_tail() {
29-
; CHECK-LABEL: test_laziness_tail:
30-
31-
; CHECK: adrp x[[TMP:[0-9]+]], _nonlocal@GOTPAGE
32-
; CHECK: ldr [[FUNC:x[0-9]+]], [x[[TMP]], _nonlocal@GOTPAGEOFF]
33-
; CHECK: br [[FUNC]]
34-
35-
; CHECK-NORMAL-LABEL: test_laziness_tail:
36-
; CHECK-NORMAL: b _nonlocal
37-
38-
tail call void @nonlocal()
79+
define void @test_laziness_tail() nounwind {
80+
; MACHO-LABEL: test_laziness_tail:
81+
; MACHO: ; %bb.0:
82+
; MACHO-NEXT: Lloh2:
83+
; MACHO-NEXT: adrp x0, _external@GOTPAGE
84+
; MACHO-NEXT: Lloh3:
85+
; MACHO-NEXT: ldr x0, [x0, _external@GOTPAGEOFF]
86+
; MACHO-NEXT: br x0
87+
; MACHO-NEXT: .loh AdrpLdrGot Lloh2, Lloh3
88+
;
89+
; MACHO-NORMAL-LABEL: test_laziness_tail:
90+
; MACHO-NORMAL: ; %bb.0:
91+
; MACHO-NORMAL-NEXT: b _external
92+
;
93+
; ELF-LABEL: test_laziness_tail:
94+
; ELF: // %bb.0:
95+
; ELF-NEXT: b external
96+
tail call void @external()
3997
ret void
4098
}
99+
;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
100+
; ELF-FI: {{.*}}
101+
; ELF-GI: {{.*}}
102+
; ELF-SDAG: {{.*}}

0 commit comments

Comments
 (0)