Skip to content

Commit 9418e74

Browse files
committed
[MergeFunc] Add tests for merging weak_odr functions.
1 parent 2bde7a1 commit 9418e74

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --include-generated-funcs --version 5
2+
; RUN: opt -p mergefunc -S %s | FileCheck %s
3+
4+
define weak_odr hidden void @weak_odr_caller_of_foo_1(ptr %p) {
5+
entry:
6+
tail call void @foo(ptr %p)
7+
tail call void @foo(ptr %p)
8+
tail call void @foo(ptr %p)
9+
ret void
10+
}
11+
12+
define weak_odr hidden void @weak_odr_caller_of_foo_2(ptr %p) {
13+
entry:
14+
tail call void @foo(ptr %p)
15+
tail call void @foo(ptr %p)
16+
tail call void @foo(ptr %p)
17+
ret void
18+
}
19+
20+
declare void @foo(ptr)
21+
22+
define hidden void @weak_odr_caller_of_bar_1(ptr %p) {
23+
entry:
24+
tail call void @bar(ptr %p)
25+
tail call void @bar(ptr %p)
26+
tail call void @bar(ptr %p)
27+
ret void
28+
}
29+
30+
define weak_odr hidden void @non_weak_caller_of_bar_2(ptr %p) {
31+
entry:
32+
tail call void @bar(ptr %p)
33+
tail call void @bar(ptr %p)
34+
tail call void @bar(ptr %p)
35+
ret void
36+
}
37+
38+
declare void @bar(ptr)
39+
40+
define hidden void @non_weak_caller_of_zar_1(ptr %p) {
41+
entry:
42+
tail call void @zar(ptr %p)
43+
tail call void @zar(ptr %p)
44+
tail call void @zar(ptr %p)
45+
ret void
46+
}
47+
48+
define weak_odr hidden void @weak_odr_caller_of_zar_2(ptr %p) {
49+
entry:
50+
tail call void @zar(ptr %p)
51+
tail call void @zar(ptr %p)
52+
tail call void @zar(ptr %p)
53+
ret void
54+
}
55+
56+
declare void @zar(ptr)
57+
; CHECK-LABEL: define weak_odr hidden void @weak_odr_caller_of_foo_1(
58+
; CHECK-SAME: ptr [[P:%.*]]) {
59+
; CHECK-NEXT: [[ENTRY:.*:]]
60+
; CHECK-NEXT: tail call void @foo(ptr [[P]])
61+
; CHECK-NEXT: tail call void @foo(ptr [[P]])
62+
; CHECK-NEXT: tail call void @foo(ptr [[P]])
63+
; CHECK-NEXT: ret void
64+
;
65+
;
66+
; CHECK-LABEL: define weak_odr hidden void @non_weak_caller_of_bar_2(
67+
; CHECK-SAME: ptr [[P:%.*]]) {
68+
; CHECK-NEXT: [[ENTRY:.*:]]
69+
; CHECK-NEXT: tail call void @bar(ptr [[P]])
70+
; CHECK-NEXT: tail call void @bar(ptr [[P]])
71+
; CHECK-NEXT: tail call void @bar(ptr [[P]])
72+
; CHECK-NEXT: ret void
73+
;
74+
;
75+
; CHECK-LABEL: define hidden void @non_weak_caller_of_zar_1(
76+
; CHECK-SAME: ptr [[P:%.*]]) {
77+
; CHECK-NEXT: [[ENTRY:.*:]]
78+
; CHECK-NEXT: tail call void @zar(ptr [[P]])
79+
; CHECK-NEXT: tail call void @zar(ptr [[P]])
80+
; CHECK-NEXT: tail call void @zar(ptr [[P]])
81+
; CHECK-NEXT: ret void
82+
;
83+
;
84+
; CHECK-LABEL: define weak_odr hidden void @weak_odr_caller_of_foo_2(
85+
; CHECK-SAME: ptr [[TMP0:%.*]]) {
86+
; CHECK-NEXT: tail call void @weak_odr_caller_of_foo_1(ptr [[TMP0]])
87+
; CHECK-NEXT: ret void
88+
;
89+
;
90+
; CHECK-LABEL: define hidden void @weak_odr_caller_of_bar_1(
91+
; CHECK-SAME: ptr [[TMP0:%.*]]) {
92+
; CHECK-NEXT: tail call void @non_weak_caller_of_bar_2(ptr [[TMP0]])
93+
; CHECK-NEXT: ret void
94+
;
95+
;
96+
; CHECK-LABEL: define weak_odr hidden void @weak_odr_caller_of_zar_2(
97+
; CHECK-SAME: ptr [[TMP0:%.*]]) {
98+
; CHECK-NEXT: tail call void @non_weak_caller_of_zar_1(ptr [[TMP0]])
99+
; CHECK-NEXT: ret void
100+
;

0 commit comments

Comments
 (0)