xref: /aosp_15_r20/external/llvm/test/DebugInfo/COFF/globals.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s | FileCheck %s --check-prefix=ASM
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -filetype=obj | llvm-readobj - -codeview | FileCheck %s --check-prefix=OBJ
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; C++ source to regenerate:
5*9880d681SAndroid Build Coastguard Worker; $ cat t.cpp
6*9880d681SAndroid Build Coastguard Worker; int first;
7*9880d681SAndroid Build Coastguard Worker; template <typename T> struct A { static const int comdat = 3; };
8*9880d681SAndroid Build Coastguard Worker; const int *middle = &A<void>::comdat;
9*9880d681SAndroid Build Coastguard Worker; int last;
10*9880d681SAndroid Build Coastguard Worker; $ clang t.cpp -S -emit-llvm -g -gcodeview -o t.ll
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Worker; ASM:        .section        .debug$S,"dr"
13*9880d681SAndroid Build Coastguard Worker; ASM:        .p2align        2
14*9880d681SAndroid Build Coastguard Worker; ASM:        .long   4                       # Debug section magic
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Worker; ASM:        .short  {{.*-.*}}               # Record length
17*9880d681SAndroid Build Coastguard Worker; ASM:        .short  4364                    # Record kind: S_LDATA32
18*9880d681SAndroid Build Coastguard Worker; ASM:        .long   116                     # Type
19*9880d681SAndroid Build Coastguard Worker; ASM:        .secrel32       "?first@@3HA"   # DataOffset
20*9880d681SAndroid Build Coastguard Worker; ASM:        .secidx "?first@@3HA"           # Segment
21*9880d681SAndroid Build Coastguard Worker; ASM:        .asciz  "first"                 # Name
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker; ASM:        .short  {{.*-.*}}               # Record length
24*9880d681SAndroid Build Coastguard Worker; ASM:        .short  4371                    # Record kind: S_GTHREAD32
25*9880d681SAndroid Build Coastguard Worker; ASM:        .long   4097                    # Type
26*9880d681SAndroid Build Coastguard Worker; ASM:        .secrel32       "?middle@@3PEBHEB" # DataOffset
27*9880d681SAndroid Build Coastguard Worker; ASM:        .secidx "?middle@@3PEBHEB"      # Segment
28*9880d681SAndroid Build Coastguard Worker; ASM:        .asciz  "middle"                # Name
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker; ASM:        .short  {{.*-.*}}               # Record length
31*9880d681SAndroid Build Coastguard Worker; ASM:        .short  4365                    # Record kind: S_GDATA32
32*9880d681SAndroid Build Coastguard Worker; ASM:        .long   116                     # Type
33*9880d681SAndroid Build Coastguard Worker; ASM:        .secrel32       "?last@@3HA"    # DataOffset
34*9880d681SAndroid Build Coastguard Worker; ASM:        .secidx "?last@@3HA"            # Segment
35*9880d681SAndroid Build Coastguard Worker; ASM:        .asciz  "last"                  # Name
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker; ASM:        .section        .debug$S,"dr",associative,"?comdat@?$A@X@@2HB"
38*9880d681SAndroid Build Coastguard Worker; ASM:        .p2align        2
39*9880d681SAndroid Build Coastguard Worker; ASM:        .long   4                       # Debug section magic
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Worker; ASM:        .short  {{.*-.*}}               # Record length
42*9880d681SAndroid Build Coastguard Worker; ASM:        .short  4365                    # Record kind: S_GDATA32
43*9880d681SAndroid Build Coastguard Worker; ASM:        .long   4096                    # Type
44*9880d681SAndroid Build Coastguard Worker; ASM:        .secrel32       "?comdat@?$A@X@@2HB" # DataOffset
45*9880d681SAndroid Build Coastguard Worker; ASM:        .secidx "?comdat@?$A@X@@2HB"    # Segment
46*9880d681SAndroid Build Coastguard Worker; ASM:        .asciz  "comdat"                # Name
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Worker; OBJ: CodeViewTypes [
49*9880d681SAndroid Build Coastguard Worker; OBJ:   Section: .debug$T
50*9880d681SAndroid Build Coastguard Worker; OBJ:   Magic: 0x4
51*9880d681SAndroid Build Coastguard Worker; OBJ:   Modifier (0x1000) {
52*9880d681SAndroid Build Coastguard Worker; OBJ:     TypeLeafKind: LF_MODIFIER (0x1001)
53*9880d681SAndroid Build Coastguard Worker; OBJ:     ModifiedType: int (0x74)
54*9880d681SAndroid Build Coastguard Worker; OBJ:     Modifiers [ (0x1)
55*9880d681SAndroid Build Coastguard Worker; OBJ:       Const (0x1)
56*9880d681SAndroid Build Coastguard Worker; OBJ:     ]
57*9880d681SAndroid Build Coastguard Worker; OBJ:   }
58*9880d681SAndroid Build Coastguard Worker; OBJ:   Pointer (0x1001) {
59*9880d681SAndroid Build Coastguard Worker; OBJ:     TypeLeafKind: LF_POINTER (0x1002)
60*9880d681SAndroid Build Coastguard Worker; OBJ:     PointeeType: const int (0x1000)
61*9880d681SAndroid Build Coastguard Worker; OBJ:     PointerAttributes: 0x1000C
62*9880d681SAndroid Build Coastguard Worker; OBJ:     PtrType: Near64 (0xC)
63*9880d681SAndroid Build Coastguard Worker; OBJ:     PtrMode: Pointer (0x0)
64*9880d681SAndroid Build Coastguard Worker; OBJ:     IsFlat: 0
65*9880d681SAndroid Build Coastguard Worker; OBJ:     IsConst: 0
66*9880d681SAndroid Build Coastguard Worker; OBJ:     IsVolatile: 0
67*9880d681SAndroid Build Coastguard Worker; OBJ:     IsUnaligned: 0
68*9880d681SAndroid Build Coastguard Worker; OBJ:   }
69*9880d681SAndroid Build Coastguard Worker; OBJ: ]
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard Worker; OBJ: CodeViewDebugInfo [
72*9880d681SAndroid Build Coastguard Worker; OBJ:   Section: .debug$S
73*9880d681SAndroid Build Coastguard Worker; OBJ:   Magic: 0x4
74*9880d681SAndroid Build Coastguard Worker; OBJ:   Subsection [
75*9880d681SAndroid Build Coastguard Worker; OBJ:     SubSectionType: Symbols (0xF1)
76*9880d681SAndroid Build Coastguard Worker; OBJ:     DataSym {
77*9880d681SAndroid Build Coastguard Worker; OBJ:       Kind: S_LDATA32 (0x110C)
78*9880d681SAndroid Build Coastguard Worker; OBJ:       DataOffset: ?first@@3HA+0x0
79*9880d681SAndroid Build Coastguard Worker; OBJ:       Type: int (0x74)
80*9880d681SAndroid Build Coastguard Worker; OBJ:       DisplayName: first
81*9880d681SAndroid Build Coastguard Worker; OBJ:       LinkageName: ?first@@3HA
82*9880d681SAndroid Build Coastguard Worker; OBJ:     }
83*9880d681SAndroid Build Coastguard Worker; OBJ:     ThreadLocalDataSym {
84*9880d681SAndroid Build Coastguard Worker; OBJ:       DataOffset: ?middle@@3PEBHEB+0x0
85*9880d681SAndroid Build Coastguard Worker; OBJ:       Type: const int* (0x1001)
86*9880d681SAndroid Build Coastguard Worker; OBJ:       DisplayName: middle
87*9880d681SAndroid Build Coastguard Worker; OBJ:       LinkageName: ?middle@@3PEBHEB
88*9880d681SAndroid Build Coastguard Worker; OBJ:     }
89*9880d681SAndroid Build Coastguard Worker; OBJ:     DataSym {
90*9880d681SAndroid Build Coastguard Worker; OBJ:       Kind: S_GDATA32 (0x110D)
91*9880d681SAndroid Build Coastguard Worker; OBJ:       DataOffset: ?last@@3HA+0x0
92*9880d681SAndroid Build Coastguard Worker; OBJ:       Type: int (0x74)
93*9880d681SAndroid Build Coastguard Worker; OBJ:       DisplayName: last
94*9880d681SAndroid Build Coastguard Worker; OBJ:       LinkageName: ?last@@3HA
95*9880d681SAndroid Build Coastguard Worker; OBJ:     }
96*9880d681SAndroid Build Coastguard Worker; OBJ:   ]
97*9880d681SAndroid Build Coastguard Worker; OBJ: ]
98*9880d681SAndroid Build Coastguard Worker; OBJ: CodeViewDebugInfo [
99*9880d681SAndroid Build Coastguard Worker; OBJ:   Section: .debug$S (7)
100*9880d681SAndroid Build Coastguard Worker; OBJ:   Magic: 0x4
101*9880d681SAndroid Build Coastguard Worker; OBJ:   Subsection [
102*9880d681SAndroid Build Coastguard Worker; OBJ:     SubSectionType: Symbols (0xF1)
103*9880d681SAndroid Build Coastguard Worker; OBJ:     SubSectionSize: 0x15
104*9880d681SAndroid Build Coastguard Worker; OBJ:     DataSym {
105*9880d681SAndroid Build Coastguard Worker; OBJ:       DataOffset: ?comdat@?$A@X@@2HB+0x0
106*9880d681SAndroid Build Coastguard Worker; OBJ:       Type: const int (0x1000)
107*9880d681SAndroid Build Coastguard Worker; OBJ:       DisplayName: comdat
108*9880d681SAndroid Build Coastguard Worker; OBJ:       LinkageName: ?comdat@?$A@X@@2HB
109*9880d681SAndroid Build Coastguard Worker; OBJ:     }
110*9880d681SAndroid Build Coastguard Worker; OBJ:   ]
111*9880d681SAndroid Build Coastguard Worker; OBJ: ]
112*9880d681SAndroid Build Coastguard Worker
113*9880d681SAndroid Build Coastguard Worker; ModuleID = 't.cpp'
114*9880d681SAndroid Build Coastguard Workersource_filename = "t.cpp"
115*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
116*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-pc-windows-msvc19.0.23918"
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Worker$"\01?comdat@?$A@X@@2HB" = comdat any
119*9880d681SAndroid Build Coastguard Worker
120*9880d681SAndroid Build Coastguard Worker@"\01?first@@3HA" = internal global i32 0, align 4
121*9880d681SAndroid Build Coastguard Worker@"\01?comdat@?$A@X@@2HB" = linkonce_odr constant i32 3, comdat, align 4
122*9880d681SAndroid Build Coastguard Worker@"\01?middle@@3PEBHEB" = thread_local global i32* @"\01?comdat@?$A@X@@2HB", align 8
123*9880d681SAndroid Build Coastguard Worker@"\01?last@@3HA" = global i32 0, align 4
124*9880d681SAndroid Build Coastguard Worker
125*9880d681SAndroid Build Coastguard Worker!llvm.dbg.cu = !{!0}
126*9880d681SAndroid Build Coastguard Worker!llvm.module.flags = !{!16, !17, !18}
127*9880d681SAndroid Build Coastguard Worker!llvm.ident = !{!19}
128*9880d681SAndroid Build Coastguard Worker
129*9880d681SAndroid Build Coastguard Worker!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, producer: "clang version 3.9.0 (trunk 271937)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, globals: !3)
130*9880d681SAndroid Build Coastguard Worker!1 = !DIFile(filename: "t.cpp", directory: "D:\5Csrc\5Cllvm\5Cbuild")
131*9880d681SAndroid Build Coastguard Worker!2 = !{}
132*9880d681SAndroid Build Coastguard Worker!3 = !{!4, !6, !13, !15}
133*9880d681SAndroid Build Coastguard Worker!4 = distinct !DIGlobalVariable(name: "first", linkageName: "\01?first@@3HA", scope: !0, file: !1, line: 1, type: !5, isLocal: true, isDefinition: true, variable: i32* @"\01?first@@3HA")
134*9880d681SAndroid Build Coastguard Worker!5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
135*9880d681SAndroid Build Coastguard Worker!6 = distinct !DIGlobalVariable(name: "comdat", linkageName: "\01?comdat@?$A@X@@2HB", scope: !0, file: !1, line: 2, type: !7, isLocal: false, isDefinition: true, variable: i32* @"\01?comdat@?$A@X@@2HB", declaration: !8)
136*9880d681SAndroid Build Coastguard Worker!7 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !5)
137*9880d681SAndroid Build Coastguard Worker!8 = !DIDerivedType(tag: DW_TAG_member, name: "comdat", scope: !9, file: !1, line: 2, baseType: !7, flags: DIFlagStaticMember, extraData: i32 3)
138*9880d681SAndroid Build Coastguard Worker!9 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "A<void>", file: !1, line: 2, size: 8, align: 8, elements: !10, templateParams: !11)
139*9880d681SAndroid Build Coastguard Worker!10 = !{!8}
140*9880d681SAndroid Build Coastguard Worker!11 = !{!12}
141*9880d681SAndroid Build Coastguard Worker!12 = !DITemplateTypeParameter(name: "T", type: null)
142*9880d681SAndroid Build Coastguard Worker!13 = distinct !DIGlobalVariable(name: "middle", linkageName: "\01?middle@@3PEBHEB", scope: !0, file: !1, line: 3, type: !14, isLocal: false, isDefinition: true, variable: i32** @"\01?middle@@3PEBHEB")
143*9880d681SAndroid Build Coastguard Worker!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !7, size: 64, align: 64)
144*9880d681SAndroid Build Coastguard Worker!15 = distinct !DIGlobalVariable(name: "last", linkageName: "\01?last@@3HA", scope: !0, file: !1, line: 4, type: !5, isLocal: false, isDefinition: true, variable: i32* @"\01?last@@3HA")
145*9880d681SAndroid Build Coastguard Worker!16 = !{i32 2, !"CodeView", i32 1}
146*9880d681SAndroid Build Coastguard Worker!17 = !{i32 2, !"Debug Info Version", i32 3}
147*9880d681SAndroid Build Coastguard Worker!18 = !{i32 1, !"PIC Level", i32 2}
148*9880d681SAndroid Build Coastguard Worker!19 = !{!"clang version 3.9.0 (trunk 271937)"}
149