[memprof] Remove an unused using directive (#117004)
[llvm-project.git] / lld / test / COFF / pdb-inlinees-extrafiles.s
blob759663d7a4f463f24d2e0970b323dbc7fcf0f1ed
1 # REQUIRES: x86
2 # RUN: llvm-mc -filetype=obj %s -o %t.obj -triple x86_64-windows-msvc
3 # RUN: lld-link -entry:main -nodefaultlib %t.obj -out:%t.exe -pdb:%t.pdb -debug
4 # RUN: llvm-pdbutil dump -il %t.pdb | FileCheck %s
6 # The assembly was hand written to model the following C code. As of this
7 # writing, clang does not emit extra files for inlinees, so it had to be hand
8 # written.
10 # // t1.h:
11 # ++x;
12 # #include "t2.h"
13 # ++x;
15 # // t2.h:
16 # ++x;
17 # __debugbreak();
18 # ++x;
20 # // t.c:
21 # volatile int x;
22 # static __forceinline void inlinee_1(void) {
23 # ++x;
24 # #include "t1.inc"
25 # ++x;
26 # }
27 # int main() {
28 # ++x;
29 # inlinee_1();
30 # ++x;
31 # return x;
32 # }
34 # CHECK: Inlinee Lines
35 # CHECK: Mod 0000 | `{{.*}}pdb-inlinees-extrafiles.s.tmp.obj`:
36 # CHECK-NEXT: Inlinee | Line | Source File
37 # CHECK-NEXT: 0x1000 | 7 | C:\src\llvm-project\build\t.c (MD5: A79D837C976E9F0463A474D74E2EE9E7)
38 # CHECK-NEXT: C:\src\llvm-project\build\t1.h (MD5: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
39 # CHECK-NEXT: C:\src\llvm-project\build\t2.h (MD5: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)
41 .text
42 .def @feat.00;
43 .scl 3;
44 .type 0;
45 .endef
46 .globl @feat.00
47 .set @feat.00, 0
48 .intel_syntax noprefix
49 .file "t.c"
50 .def main;
51 .scl 2;
52 .type 32;
53 .endef
54 .section .text,"xr",one_only,main
55 .globl main # -- Begin function main
56 main: # @main
57 .Lfunc_begin0:
58 .cv_func_id 0
59 # %bb.0: # %entry
60 .cv_file 1 "C:\\src\\llvm-project\\build\\t.c" "A79D837C976E9F0463A474D74E2EE9E7" 1
61 .cv_file 2 "C:\\src\\llvm-project\\build\\t1.h" "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" 1
62 .cv_file 3 "C:\\src\\llvm-project\\build\\t2.h" "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" 1
63 .cv_loc 0 1 13 0 # t.c:13:0
64 inc dword ptr [rip + x]
65 .Ltmp0:
66 .cv_inline_site_id 1 within 0 inlined_at 1 14 0
67 .cv_loc 1 1 3 0 # t.c:3:0
68 inc dword ptr [rip + x]
69 .Ltmp1:
70 .cv_loc 1 2 1 0 # t1.h:1:0
71 inc dword ptr [rip + x]
72 .cv_loc 1 3 1 0 # t2.h:1:0
73 inc dword ptr [rip + x]
74 .cv_loc 1 3 2 0 # t2.h:2:0
75 int3
76 .cv_loc 1 3 3 0 # t2.h:3:0
77 inc dword ptr [rip + x]
78 .cv_loc 1 2 3 0 # t1.h:3:0
79 inc dword ptr [rip + x]
80 .Ltmp2:
81 .cv_loc 1 1 5 0 # t.c:5:0
82 inc dword ptr [rip + x]
83 .Ltmp3:
84 .cv_loc 0 1 15 0 # t.c:15:0
85 inc dword ptr [rip + x]
86 .cv_loc 0 1 16 0 # t.c:16:0
87 mov eax, dword ptr [rip + x]
88 ret
89 .Ltmp4:
90 .Lfunc_end0:
91 # -- End function
92 .comm x,4,2 # @x
93 .section .debug$S,"dr"
94 .p2align 2
95 .long 4 # Debug section magic
96 .long 241
97 .long .Ltmp6-.Ltmp5 # Subsection size
98 .Ltmp5:
99 .short .Ltmp8-.Ltmp7 # Record length
100 .Ltmp7:
101 .short 4412 # Record kind: S_COMPILE3
102 .long 0 # Flags and language
103 .short 208 # CPUType
104 .short 9 # Frontend version
105 .short 0
106 .short 0
107 .short 0
108 .short 9000 # Backend version
109 .short 0
110 .short 0
111 .short 0
112 .asciz "clang version 9.0.0 (git@github.com:llvm/llvm-project.git aa762a56caf3ef2b0b41c501e66d3ef32903a2d0)" # Null-terminated compiler version string
113 .p2align 2
114 .Ltmp8:
115 .Ltmp6:
116 .p2align 2
117 .long 246 # Inlinee lines subsection
118 .long .Ltmp10-.Ltmp9 # Subsection size
119 .Ltmp9:
120 .long 1 # Inlinee lines signature, extra files
122 # Inlined function inlinee_1 starts at t.c:7
123 .long 4098 # Type index of inlined function
124 .cv_filechecksumoffset 1 # Offset into filechecksum table
125 .long 7 # Starting line number
126 .long 2
127 .cv_filechecksumoffset 2 # Offset into filechecksum table
128 .cv_filechecksumoffset 3 # Offset into filechecksum table
130 .Ltmp10:
131 .p2align 2
132 .section .debug$S,"dr",associative,main
133 .p2align 2
134 .long 4 # Debug section magic
135 .long 241 # Symbol subsection for main
136 .long .Ltmp12-.Ltmp11 # Subsection size
137 .Ltmp11:
138 .short .Ltmp14-.Ltmp13 # Record length
139 .Ltmp13:
140 .short 4423 # Record kind: S_GPROC32_ID
141 .long 0 # PtrParent
142 .long 0 # PtrEnd
143 .long 0 # PtrNext
144 .long .Lfunc_end0-main # Code size
145 .long 0 # Offset after prologue
146 .long 0 # Offset before epilogue
147 .long 4101 # Function type index
148 .secrel32 main # Function section relative address
149 .secidx main # Function section index
150 .byte 0 # Flags
151 .asciz "main" # Function name
152 .p2align 2
153 .Ltmp14:
154 .short .Ltmp16-.Ltmp15 # Record length
155 .Ltmp15:
156 .short 4114 # Record kind: S_FRAMEPROC
157 .long 0 # FrameSize
158 .long 0 # Padding
159 .long 0 # Offset of padding
160 .long 0 # Bytes of callee saved registers
161 .long 0 # Exception handler offset
162 .short 0 # Exception handler section
163 .long 0 # Flags (defines frame register)
164 .p2align 2
165 .Ltmp16:
166 .short .Ltmp18-.Ltmp17 # Record length
167 .Ltmp17:
168 .short 4429 # Record kind: S_INLINESITE
169 .long 0 # PtrParent
170 .long 0 # PtrEnd
171 .long 4098 # Inlinee type index
172 .cv_inline_linetable 1 1 7 .Lfunc_begin0 .Lfunc_end0
173 .p2align 2
174 .Ltmp18:
175 .short 2 # Record length
176 .short 4430 # Record kind: S_INLINESITE_END
177 .short 2 # Record length
178 .short 4431 # Record kind: S_PROC_ID_END
179 .Ltmp12:
180 .p2align 2
181 .cv_linetable 0, main, .Lfunc_end0
182 .section .debug$S,"dr"
183 .long 241 # Symbol subsection for globals
184 .long .Ltmp22-.Ltmp21 # Subsection size
185 .Ltmp21:
186 .short .Ltmp24-.Ltmp23 # Record length
187 .Ltmp23:
188 .short 4365 # Record kind: S_GDATA32
189 .long 4102 # Type
190 .secrel32 x # DataOffset
191 .secidx x # Segment
192 .asciz "x" # Name
193 .p2align 2
194 .Ltmp24:
195 .Ltmp22:
196 .p2align 2
197 .cv_filechecksums # File index to string table offset subsection
198 .cv_stringtable # String table
199 .long 241
200 .long .Ltmp26-.Ltmp25 # Subsection size
201 .Ltmp25:
202 .short .Ltmp28-.Ltmp27 # Record length
203 .Ltmp27:
204 .short 4428 # Record kind: S_BUILDINFO
205 .long 4105 # LF_BUILDINFO index
206 .p2align 2
207 .Ltmp28:
208 .Ltmp26:
209 .p2align 2
210 .section .debug$T,"dr"
211 .p2align 2
212 .long 4 # Debug section magic
213 # ArgList (0x1000) {
214 # TypeLeafKind: LF_ARGLIST (0x1201)
215 # NumArgs: 0
216 # Arguments [
219 .byte 0x06, 0x00, 0x01, 0x12
220 .byte 0x00, 0x00, 0x00, 0x00
221 # Procedure (0x1001) {
222 # TypeLeafKind: LF_PROCEDURE (0x1008)
223 # ReturnType: void (0x3)
224 # CallingConvention: NearC (0x0)
225 # FunctionOptions [ (0x0)
227 # NumParameters: 0
228 # ArgListType: () (0x1000)
230 .byte 0x0e, 0x00, 0x08, 0x10
231 .byte 0x03, 0x00, 0x00, 0x00
232 .byte 0x00, 0x00, 0x00, 0x00
233 .byte 0x00, 0x10, 0x00, 0x00
234 # FuncId (0x1002) {
235 # TypeLeafKind: LF_FUNC_ID (0x1601)
236 # ParentScope: 0x0
237 # FunctionType: void () (0x1001)
238 # Name: inlinee_1
240 .byte 0x16, 0x00, 0x01, 0x16
241 .byte 0x00, 0x00, 0x00, 0x00
242 .byte 0x01, 0x10, 0x00, 0x00
243 .byte 0x69, 0x6e, 0x6c, 0x69
244 .byte 0x6e, 0x65, 0x65, 0x5f
245 .byte 0x31, 0x00, 0xf2, 0xf1
246 # FuncId (0x1003) {
247 # TypeLeafKind: LF_FUNC_ID (0x1601)
248 # ParentScope: 0x0
249 # FunctionType: void () (0x1001)
250 # Name: inlinee_2
252 .byte 0x16, 0x00, 0x01, 0x16
253 .byte 0x00, 0x00, 0x00, 0x00
254 .byte 0x01, 0x10, 0x00, 0x00
255 .byte 0x69, 0x6e, 0x6c, 0x69
256 .byte 0x6e, 0x65, 0x65, 0x5f
257 .byte 0x32, 0x00, 0xf2, 0xf1
258 # Procedure (0x1004) {
259 # TypeLeafKind: LF_PROCEDURE (0x1008)
260 # ReturnType: int (0x74)
261 # CallingConvention: NearC (0x0)
262 # FunctionOptions [ (0x0)
264 # NumParameters: 0
265 # ArgListType: () (0x1000)
267 .byte 0x0e, 0x00, 0x08, 0x10
268 .byte 0x74, 0x00, 0x00, 0x00
269 .byte 0x00, 0x00, 0x00, 0x00
270 .byte 0x00, 0x10, 0x00, 0x00
271 # FuncId (0x1005) {
272 # TypeLeafKind: LF_FUNC_ID (0x1601)
273 # ParentScope: 0x0
274 # FunctionType: int () (0x1004)
275 # Name: main
277 .byte 0x12, 0x00, 0x01, 0x16
278 .byte 0x00, 0x00, 0x00, 0x00
279 .byte 0x04, 0x10, 0x00, 0x00
280 .byte 0x6d, 0x61, 0x69, 0x6e
281 .byte 0x00, 0xf3, 0xf2, 0xf1
282 # Modifier (0x1006) {
283 # TypeLeafKind: LF_MODIFIER (0x1001)
284 # ModifiedType: int (0x74)
285 # Modifiers [ (0x2)
286 # Volatile (0x2)
289 .byte 0x0a, 0x00, 0x01, 0x10
290 .byte 0x74, 0x00, 0x00, 0x00
291 .byte 0x02, 0x00, 0xf2, 0xf1
292 # StringId (0x1007) {
293 # TypeLeafKind: LF_STRING_ID (0x1605)
294 # Id: 0x0
295 # StringData: C:\src\llvm-project\build
297 .byte 0x22, 0x00, 0x05, 0x16
298 .byte 0x00, 0x00, 0x00, 0x00
299 .byte 0x43, 0x3a, 0x5c, 0x73
300 .byte 0x72, 0x63, 0x5c, 0x6c
301 .byte 0x6c, 0x76, 0x6d, 0x2d
302 .byte 0x70, 0x72, 0x6f, 0x6a
303 .byte 0x65, 0x63, 0x74, 0x5c
304 .byte 0x62, 0x75, 0x69, 0x6c
305 .byte 0x64, 0x00, 0xf2, 0xf1
306 # StringId (0x1008) {
307 # TypeLeafKind: LF_STRING_ID (0x1605)
308 # Id: 0x0
309 # StringData: t.c
311 .byte 0x0a, 0x00, 0x05, 0x16
312 .byte 0x00, 0x00, 0x00, 0x00
313 .byte 0x74, 0x2e, 0x63, 0x00
314 # BuildInfo (0x1009) {
315 # TypeLeafKind: LF_BUILDINFO (0x1603)
316 # NumArgs: 5
317 # Arguments [
318 # ArgType: C:\src\llvm-project\build (0x1007)
319 # ArgType: 0x0
320 # ArgType: t.c (0x1008)
321 # ArgType: 0x0
322 # ArgType: 0x0
325 .byte 0x1a, 0x00, 0x03, 0x16
326 .byte 0x05, 0x00, 0x07, 0x10
327 .byte 0x00, 0x00, 0x00, 0x00
328 .byte 0x00, 0x00, 0x08, 0x10
329 .byte 0x00, 0x00, 0x00, 0x00
330 .byte 0x00, 0x00, 0x00, 0x00
331 .byte 0x00, 0x00, 0xf2, 0xf1
333 .addrsig
334 .addrsig_sym x