xref: /llvm-project/llvm/test/Assembler/dso_local_equivalent.ll (revision 79565766be94f7944278671a9f473d79ac18f7e1)
1; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s
2; RUN: verify-uselistorder %s
3
4declare void @extern_func()
5
6; CHECK: @call_extern_func
7; CHECK: call void dso_local_equivalent @extern_func()
8define void @call_extern_func() {
9  call void dso_local_equivalent @extern_func()
10  ret void
11}
12
13declare hidden void @hidden_func()
14declare protected void @protected_func()
15declare dso_local void @dso_local_func()
16define internal void @internal_func() {
17entry:
18  ret void
19}
20define private void @private_func() {
21entry:
22  ret void
23}
24
25; CHECK: @call_hidden_func
26; CHECK: call void dso_local_equivalent @hidden_func()
27define void @call_hidden_func() {
28  call void dso_local_equivalent @hidden_func()
29  ret void
30}
31
32; CHECK: @call_protected_func
33; CHECK: call void dso_local_equivalent @protected_func()
34define void @call_protected_func() {
35  call void dso_local_equivalent @protected_func()
36  ret void
37}
38
39; CHECK: @call_dso_local_func
40; CHECK: call void dso_local_equivalent @dso_local_func()
41define void @call_dso_local_func() {
42  call void dso_local_equivalent @dso_local_func()
43  ret void
44}
45
46; CHECK: @call_internal_func
47; CHECK: call void dso_local_equivalent @internal_func()
48define void @call_internal_func() {
49  call void dso_local_equivalent @internal_func()
50  ret void
51}
52
53define void @aliasee_func() {
54entry:
55  ret void
56}
57
58@alias_func = alias void (), ptr @aliasee_func
59@dso_local_alias_func = dso_local alias void (), ptr @aliasee_func
60
61; CHECK: @call_alias_func
62; CHECK: call void dso_local_equivalent @alias_func()
63define void @call_alias_func() {
64  call void dso_local_equivalent @alias_func()
65  ret void
66}
67
68; CHECK: @call_dso_local_alias_func
69; CHECK: call void dso_local_equivalent @dso_local_alias_func()
70define void @call_dso_local_alias_func() {
71  call void dso_local_equivalent @dso_local_alias_func()
72  ret void
73}
74
75@ifunc_func = ifunc void (), ptr @resolver
76@dso_local_ifunc_func = dso_local ifunc void (), ptr @resolver
77
78define internal ptr @resolver() {
79entry:
80  ret ptr null
81}
82
83; CHECK: @call_ifunc_func
84; CHECK: call void dso_local_equivalent @ifunc_func()
85define void @call_ifunc_func() {
86  call void dso_local_equivalent @ifunc_func()
87  ret void
88}
89
90; CHECK: @call_dso_local_ifunc_func
91; CHECK: call void dso_local_equivalent @dso_local_ifunc_func()
92define void @call_dso_local_ifunc_func() {
93  call void dso_local_equivalent @dso_local_ifunc_func()
94  ret void
95}
96