xref: /llvm-project/llvm/test/Assembler/associated-metadata.ll (revision 87f2e9448e82bbed4ac59bb61bea03256aa5f4de)
1; RUN: llvm-as < %s | llvm-dis | FileCheck %s
2
3@gv.decl = external constant [8 x i8]
4@gv.def = constant [8 x i8] zeroinitializer
5
6@gv.associated.func.decl = external addrspace(1) constant [8 x i8], !associated !0
7@gv.associated.func.def = external addrspace(1) constant [8 x i8], !associated !1
8
9@gv.associated.gv.decl = external addrspace(1) constant [8 x i8], !associated !2
10@gv.associated.gv.def = external addrspace(1) constant [8 x i8], !associated !3
11
12@alias = alias i32, ptr @gv.def
13
14@gv.associated.alias.gv.def = external addrspace(1) constant [8 x i8], !associated !4
15
16@gv.associated.alias.addrspacecast = external addrspace(1) constant [8 x i8], !associated !5
17@alias.addrspacecast = alias i32, ptr addrspace(1) addrspacecast (ptr @gv.def to ptr addrspace(1))
18
19
20@gv.def.associated.addrspacecast = external addrspace(1) constant [8 x i8], !associated !6
21
22@ifunc = dso_local ifunc i32 (i32), ptr @ifunc_resolver
23@gv.associated.ifunc = external constant [8 x i8], !associated !7
24
25@gv.associated.null = external constant [8 x i8], !associated !8
26@gv.associated.inttoptr = external constant [8 x i8], !associated !9
27@gv.associated.poison = external constant [8 x i8], !associated !10
28@gv.associated.undef = external constant [8 x i8], !associated !11
29@associated.addrspacecast.null = external addrspace(1) constant [8 x i8], !associated !12
30
31
32;.
33; CHECK: @[[GV_DECL:[a-zA-Z0-9_$"\\.-]+]] = external constant [8 x i8]
34; CHECK: @[[GV_DEF:[a-zA-Z0-9_$"\\.-]+]] = constant [8 x i8] zeroinitializer
35; CHECK: @[[GV_ASSOCIATED_FUNC_DECL:[a-zA-Z0-9_$"\\.-]+]] = external addrspace(1) constant [8 x i8], !associated !0
36; CHECK: @[[GV_ASSOCIATED_FUNC_DEF:[a-zA-Z0-9_$"\\.-]+]] = external addrspace(1) constant [8 x i8], !associated !1
37; CHECK: @[[GV_ASSOCIATED_GV_DECL:[a-zA-Z0-9_$"\\.-]+]] = external addrspace(1) constant [8 x i8], !associated !2
38; CHECK: @[[GV_ASSOCIATED_GV_DEF:[a-zA-Z0-9_$"\\.-]+]] = external addrspace(1) constant [8 x i8], !associated !3
39; CHECK: @[[GV_ASSOCIATED_ALIAS_GV_DEF:[a-zA-Z0-9_$"\\.-]+]] = external addrspace(1) constant [8 x i8], !associated !4
40; CHECK: @[[GV_ASSOCIATED_ALIAS_ADDRSPACECAST:[a-zA-Z0-9_$"\\.-]+]] = external addrspace(1) constant [8 x i8], !associated !5
41; CHECK: @[[GV_DEF_ASSOCIATED_ADDRSPACECAST:[a-zA-Z0-9_$"\\.-]+]] = external addrspace(1) constant [8 x i8], !associated !6
42; CHECK: @[[GV_ASSOCIATED_IFUNC:[a-zA-Z0-9_$"\\.-]+]] = external constant [8 x i8], !associated !7
43; CHECK: @[[GV_ASSOCIATED_NULL:[a-zA-Z0-9_$"\\.-]+]] = external constant [8 x i8], !associated !8
44; CHECK: @[[GV_ASSOCIATED_INTTOPTR:[a-zA-Z0-9_$"\\.-]+]] = external constant [8 x i8], !associated !9
45; CHECK: @[[GV_ASSOCIATED_POISON:[a-zA-Z0-9_$"\\.-]+]] = external constant [8 x i8], !associated !10
46; CHECK: @[[GV_ASSOCIATED_UNDEF:[a-zA-Z0-9_$"\\.-]+]] = external constant [8 x i8], !associated !11
47; CHECK: @[[ALIAS:[a-zA-Z0-9_$"\\.-]+]] = alias i32, ptr @gv.def
48; CHECK: @[[ALIAS_ADDRSPACECAST:[a-zA-Z0-9_$"\\.-]+]] = alias i32, addrspacecast (ptr @gv.def to ptr addrspace(1))
49; CHECK: @[[IFUNC:[a-zA-Z0-9_$"\\.-]+]] = dso_local ifunc i32 (i32), ptr @ifunc_resolver
50;.
51define ptr @ifunc_resolver() {
52; CHECK-LABEL: @ifunc_resolver(
53; CHECK-NEXT:    ret ptr null
54;
55  ret ptr null
56}
57
58
59declare void @func.decl()
60define void @func.def() {
61; CHECK-LABEL: @func.def(
62; CHECK-NEXT:    ret void
63;
64  ret void
65}
66
67!0 = !{ ptr @func.decl }
68!1 = !{ ptr @func.def }
69!2 = !{ ptr @gv.decl }
70!3 = !{ ptr @gv.def }
71!4 = !{ ptr @alias }
72!5 = !{ ptr addrspace(1) @alias.addrspacecast }
73!6 = !{ ptr addrspace(1) addrspacecast (ptr @gv.def to ptr addrspace(1)) }
74!7 = !{ ptr @ifunc }
75!8 = !{ ptr null }
76!9 = !{ ptr inttoptr (i64 12345 to ptr) }
77!10 = !{ ptr poison }
78!11 = !{ ptr undef }
79!12 = !{ptr addrspace(1) addrspacecast (ptr null to ptr addrspace(1))}
80;.
81; CHECK: [[META0:![0-9]+]] = !{ptr @func.decl}
82; CHECK: [[META1:![0-9]+]] = !{ptr @func.def}
83; CHECK: [[META2:![0-9]+]] = !{ptr @gv.decl}
84; CHECK: [[META3:![0-9]+]] = !{ptr @gv.def}
85; CHECK: [[META4:![0-9]+]] = !{ptr @alias}
86; CHECK: [[META5:![0-9]+]] = !{ptr addrspace(1) @alias.addrspacecast}
87; CHECK: [[META6:![0-9]+]] = !{ptr addrspace(1) addrspacecast (ptr @gv.def to ptr addrspace(1))}
88; CHECK: [[META7:![0-9]+]] = !{ptr @ifunc}
89; CHECK: [[META8:![0-9]+]] = !{ptr null}
90; CHECK: [[META9:![0-9]+]] = !{ptr inttoptr (i64 12345 to ptr)}
91; CHECK: [[META10:![0-9]+]] = !{ptr poison}
92; CHECK: [[META11:![0-9]+]] = !{ptr undef}
93;.
94