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