1; RUN: llc -mcpu=core2 -mtriple=i686-pc-win32 -O0 < %s | FileCheck --check-prefix=X86 %s
2; RUN: llc -mcpu=core2 -mtriple=i686-pc-win32 -o - -O0 < %s | llvm-mc -triple=i686-pc-win32 -filetype=obj | llvm-readobj -s -sr -codeview -section-symbols | FileCheck --check-prefix=OBJ32 %s
3; RUN: llc -mcpu=core2 -mtriple=x86_64-pc-win32 -O0 < %s | FileCheck --check-prefix=X64 %s
4; RUN: llc -mcpu=core2 -mtriple=x86_64-pc-win32 -o - -O0 < %s | llvm-mc -triple=x86_64-pc-win32 -filetype=obj | llvm-readobj -s -sr -codeview -section-symbols | FileCheck --check-prefix=OBJ64 %s
5
6; This LL file was generated by running clang on the following code:
7; D:\source.c:
8;  1 void z(void);
9;  2
10;  3 void x(void) {
11;  4   z();
12;  5 }
13;  6
14;  7 void y(void) {
15;  8   z();
16;  9 }
17; 10
18; 11 void f(void) {
19; 12   x();
20; 13   y();
21; 14   z();
22; 15 }
23
24
25; X86-LABEL: _x:
26; X86:      # BB
27; X86-NEXT: [[X_CALL:.*]]:{{$}}
28; X86:      calll   _z
29; X86-NEXT: [[X_RETURN:.*]]:
30; X86:      ret
31; X86-NEXT: [[END_OF_X:.*]]:
32;
33; X86-LABEL: _y:
34; X86:      # BB
35; X86-NEXT: [[Y_CALL:.*]]:{{$}}
36; X86:      calll   _z
37; X86-NEXT: [[Y_RETURN:.*]]:
38; X86:      ret
39; X86-NEXT: [[END_OF_Y:.*]]:
40;
41; X86-LABEL: _f:
42; X86:      # BB
43; X86-NEXT: [[F_CALLS_X:.*]]:{{$}}
44; X86:      calll   _x
45; X86-NEXT: [[F_CALLS_Y:.*]]:
46; X86:      calll   _y
47; X86-NEXT: [[F_CALLS_Z:.*]]:
48; X86:      calll   _z
49; X86-NEXT: [[F_RETURN:.*]]:
50; X86:      ret
51; X86-NEXT: [[END_OF_F:.*]]:
52;
53; X86-LABEL: .section        .debug$S,"dr"
54; X86-NEXT: .long   4
55; Symbol subsection for x
56; X86-NEXT: .long   241
57; X86-NEXT: .long [[F1_END:.*]]-[[F1_START:.*]]
58; X86-NEXT: [[F1_START]]:
59; X86-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]]
60; X86-NEXT: [[PROC_SEGMENT_START]]:
61; X86-NEXT: .short  4423
62; X86-NEXT: .zero   12
63; X86-NEXT: .long [[END_OF_X]]-_x
64; X86-NEXT: .zero   12
65; X86-NEXT: .secrel32 _x
66; X86-NEXT: .secidx _x
67; X86-NEXT: .byte   0
68; X86-NEXT: .byte   120
69; X86-NEXT: .byte   0
70; X86-NEXT: [[PROC_SEGMENT_END]]:
71; X86-NEXT: .short  2
72; X86-NEXT: .short  4431
73; X86-NEXT: [[F1_END]]:
74; Padding
75; X86-NEXT: .zero   3
76; Line table subsection for x
77; X86-NEXT: .long   242
78; X86-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
79; X86-NEXT: [[F2_START]]:
80; X86-NEXT: .secrel32       _x
81; X86-NEXT: .secidx _x
82; X86-NEXT: .short 1
83; X86-NEXT: .long [[END_OF_X]]-_x
84; X86-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
85; X86-NEXT: .long   0
86; X86-NEXT: .long   2
87; X86-NEXT: .long [[FILE_SEGMENT_END:.*]]-[[FILE_SEGMENT_START]]
88; X86-NEXT: .long [[X_CALL]]-_x
89; X86-NEXT: .long   4
90; X86-NEXT: .long [[X_RETURN]]-_x
91; X86-NEXT: .long   5
92; X86-NEXT: .short 42
93; X86-NEXT: .short 42
94; X86-NEXT: .short 43
95; X86-NEXT: .short 43
96; X86-NEXT: [[FILE_SEGMENT_END]]:
97; X86-NEXT: [[F2_END]]:
98; Symbol subsection for y
99; X86-NEXT: .long   241
100; X86-NEXT: .long [[F1_END:.*]]-[[F1_START:.*]]
101; X86-NEXT: [[F1_START]]:
102; X86-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]]
103; X86-NEXT: [[PROC_SEGMENT_START]]:
104; X86-NEXT: .short  4423
105; X86-NEXT: .zero   12
106; X86-NEXT: .long [[END_OF_Y]]-_y
107; X86-NEXT: .zero   12
108; X86-NEXT: .secrel32 _y
109; X86-NEXT: .secidx _y
110; X86-NEXT: .byte   0
111; X86-NEXT: .byte   121
112; X86-NEXT: .byte   0
113; X86-NEXT: [[PROC_SEGMENT_END]]:
114; X86-NEXT: .short  2
115; X86-NEXT: .short  4431
116; X86-NEXT: [[F1_END]]:
117; Padding
118; X86-NEXT: .zero   3
119; Line table subsection for y
120; X86-NEXT: .long   242
121; X86-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
122; X86-NEXT: [[F2_START]]:
123; X86-NEXT: .secrel32       _y
124; X86-NEXT: .secidx _y
125; X86-NEXT: .short 1
126; X86-NEXT: .long [[END_OF_Y]]-_y
127; X86-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
128; X86-NEXT: .long   0
129; X86-NEXT: .long   2
130; X86-NEXT: .long [[FILE_SEGMENT_END:.*]]-[[FILE_SEGMENT_START]]
131; X86-NEXT: .long [[Y_CALL]]-_y
132; X86-NEXT: .long   8
133; X86-NEXT: .long [[Y_RETURN]]-_y
134; X86-NEXT: .long   9
135; X86-NEXT: .short 52
136; X86-NEXT: .short 52
137; X86-NEXT: .short 53
138; X86-NEXT: .short 53
139; X86-NEXT: [[FILE_SEGMENT_END]]:
140; X86-NEXT: [[F2_END]]:
141; Symbol subsection for f
142; X86-NEXT: .long   241
143; X86-NEXT: .long [[F1_END:.*]]-[[F1_START:.*]]
144; X86-NEXT: [[F1_START]]:
145; X86-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]]
146; X86-NEXT: [[PROC_SEGMENT_START]]:
147; X86-NEXT: .short  4423
148; X86-NEXT: .zero   12
149; X86-NEXT: .long [[END_OF_F]]-_f
150; X86-NEXT: .zero   12
151; X86-NEXT: .secrel32 _f
152; X86-NEXT: .secidx _f
153; X86-NEXT: .byte   0
154; X86-NEXT: .byte   102
155; X86-NEXT: .byte   0
156; X86-NEXT: [[PROC_SEGMENT_END]]:
157; X86-NEXT: .short  2
158; X86-NEXT: .short  4431
159; X86-NEXT: [[F1_END]]:
160; Padding
161; X86-NEXT: .zero   3
162; Line table subsection for f
163; X86-NEXT: .long   242
164; X86-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
165; X86-NEXT: [[F2_START]]:
166; X86-NEXT: .secrel32 _f
167; X86-NEXT: .secidx _f
168; X86-NEXT: .short 1
169; X86-NEXT: .long [[END_OF_F]]-_f
170; X86-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
171; X86-NEXT: .long   0
172; X86-NEXT: .long   4
173; X86-NEXT: .long [[FILE_SEGMENT_END:.*]]-[[FILE_SEGMENT_START]]
174; X86-NEXT: .long [[F_CALLS_X]]-_f
175; X86-NEXT: .long   12
176; X86-NEXT: .long [[F_CALLS_Y]]-_f
177; X86-NEXT: .long   13
178; X86-NEXT: .long [[F_CALLS_Z]]-_f
179; X86-NEXT: .long   14
180; X86-NEXT: .long [[F_RETURN]]-_f
181; X86-NEXT: .long   15
182; X86-NEXT: .short 62
183; X86-NEXT: .short 62
184; X86-NEXT: .short 63
185; X86-NEXT: .short 63
186; X86-NEXT: .short 72
187; X86-NEXT: .short 72
188; X86-NEXT: .short 73
189; X86-NEXT: .short 73
190; X86-NEXT: [[FILE_SEGMENT_END]]:
191; X86-NEXT: [[F2_END]]:
192; File index to string table offset subsection
193; X86-NEXT: .long   244
194; X86-NEXT: .long   8
195; X86-NEXT: .long   1
196; X86-NEXT: .long   0
197; String table
198; X86-NEXT: .long   243
199; X86-NEXT: .long   13
200; X86-NEXT: .byte   0
201; X86-NEXT: .ascii  "D:\\source.c"
202; X86-NEXT: .byte   0
203; X86-NEXT: .zero   3
204
205; OBJ32:    Section {
206; OBJ32:      Name: .debug$S (2E 64 65 62 75 67 24 53)
207; OBJ32:      Characteristics [ (0x42100040)
208; OBJ32:      ]
209; OBJ32:      Relocations [
210; OBJ32-NEXT:   0x2C IMAGE_REL_I386_SECREL _x
211; OBJ32-NEXT:   0x30 IMAGE_REL_I386_SECTION _x
212; OBJ32-NEXT:   0x44 IMAGE_REL_I386_SECREL _x
213; OBJ32-NEXT:   0x48 IMAGE_REL_I386_SECTION _x
214; OBJ32-NEXT:   0x9C IMAGE_REL_I386_SECREL _y
215; OBJ32-NEXT:   0xA0 IMAGE_REL_I386_SECTION _y
216; OBJ32-NEXT:   0xB4 IMAGE_REL_I386_SECREL _y
217; OBJ32-NEXT:   0xB8 IMAGE_REL_I386_SECTION _y
218; OBJ32-NEXT:   0x10C IMAGE_REL_I386_SECREL _f
219; OBJ32-NEXT:   0x110 IMAGE_REL_I386_SECTION _f
220; OBJ32-NEXT:   0x124 IMAGE_REL_I386_SECREL _f
221; OBJ32-NEXT:   0x128 IMAGE_REL_I386_SECTION _f
222; OBJ32-NEXT: ]
223; OBJ32:      Subsection [
224; OBJ32-NEXT:   Type: 0xF1
225; OBJ32-NOT:    ]
226; OBJ32:        ProcStart {
227; OBJ32-NEXT:     DisplayName: x
228; OBJ32-NEXT:     Section: _x
229; OBJ32-NEXT:     CodeSize: 0x6
230; OBJ32-NEXT:   }
231; OBJ32-NEXT:   ProcEnd
232; OBJ32-NEXT: ]
233; OBJ32:      Subsection [
234; OBJ32-NEXT:   Type: 0xF2
235; OBJ32:      ]
236; OBJ32:      Subsection [
237; OBJ32-NEXT:   Type: 0xF1
238; OBJ32-NOT:    ]
239; OBJ32:        ProcStart {
240; OBJ32-NEXT:     DisplayName: y
241; OBJ32-NEXT:     Section: _y
242; OBJ32-NEXT:     CodeSize: 0x6
243; OBJ32-NEXT:   }
244; OBJ32-NEXT:   ProcEnd
245; OBJ32-NEXT: ]
246; OBJ32:      Subsection [
247; OBJ32-NEXT:   Type: 0xF2
248; OBJ32:      ]
249; OBJ32:      Subsection [
250; OBJ32-NEXT:   Type: 0xF1
251; OBJ32-NOT:    ]
252; OBJ32:        ProcStart {
253; OBJ32-NEXT:     DisplayName: f
254; OBJ32-NEXT:     Section: _f
255; OBJ32-NEXT:     CodeSize: 0x10
256; OBJ32-NEXT:   }
257; OBJ32-NEXT:   ProcEnd
258; OBJ32-NEXT: ]
259; OBJ32:      Subsection [
260; OBJ32-NEXT:   Type: 0xF2
261; OBJ32:      ]
262; OBJ32:      FunctionLineTable [
263; OBJ32-NEXT:   Name: _x
264; OBJ32-NEXT:   Flags: 0x1
265; OBJ32-NEXT:   CodeSize: 0x6
266; OBJ32-NEXT:   FilenameSegment [
267; OBJ32-NEXT:     Filename: D:\source.c
268; OBJ32-NEXT:     +0x0: 4
269; OBJ32-NEXT:     +0x5: 5
270; OBJ32-NEXT:     ColStart: 42
271; OBJ32-NEXT:     ColEnd: 42
272; OBJ32-NEXT:     ColStart: 43
273; OBJ32-NEXT:     ColEnd: 43
274; OBJ32-NEXT:   ]
275; OBJ32-NEXT: ]
276; OBJ32-NEXT: FunctionLineTable [
277; OBJ32-NEXT:   Name: _y
278; OBJ32-NEXT:   Flags: 0x1
279; OBJ32-NEXT:   CodeSize: 0x6
280; OBJ32-NEXT:   FilenameSegment [
281; OBJ32-NEXT:     Filename: D:\source.c
282; OBJ32-NEXT:     +0x0: 8
283; OBJ32-NEXT:     +0x5: 9
284; OBJ32-NEXT:     ColStart: 52
285; OBJ32-NEXT:     ColEnd: 52
286; OBJ32-NEXT:     ColStart: 53
287; OBJ32-NEXT:     ColEnd: 53
288; OBJ32-NEXT:   ]
289; OBJ32-NEXT: ]
290; OBJ32-NEXT: FunctionLineTable [
291; OBJ32-NEXT:   Name: _f
292; OBJ32-NEXT:   Flags: 0x1
293; OBJ32-NEXT:   CodeSize: 0x10
294; OBJ32-NEXT:   FilenameSegment [
295; OBJ32-NEXT:     Filename: D:\source.c
296; OBJ32-NEXT:     +0x0: 12
297; OBJ32-NEXT:     +0x5: 13
298; OBJ32-NEXT:     +0xA: 14
299; OBJ32-NEXT:     +0xF: 15
300; OBJ32-NEXT:     ColStart: 62
301; OBJ32-NEXT:     ColEnd: 62
302; OBJ32-NEXT:     ColStart: 63
303; OBJ32-NEXT:     ColEnd: 63
304; OBJ32-NEXT:     ColStart: 72
305; OBJ32-NEXT:     ColEnd: 72
306; OBJ32-NEXT:     ColStart: 73
307; OBJ32-NEXT:     ColEnd: 73
308; OBJ32-NEXT:   ]
309; OBJ32-NEXT: ]
310
311; X64-LABEL: x:
312; X64-NEXT: .L{{.*}}:
313; X64-NEXT: [[X_START:.*]]:{{$}}
314; X64:      # BB
315; X64:      subq    $40, %rsp
316; X64-NEXT: [[X_CALL_LINE:.*]]:{{$}}
317; X64-NEXT: callq   z
318; X64-NEXT: [[X_EPILOG_AND_RET:.*]]:
319; X64:      addq    $40, %rsp
320; X64-NEXT: ret
321; X64-NEXT: [[END_OF_X:.*]]:
322;
323; X64-LABEL: y:
324; X64-NEXT: .L{{.*}}:
325; X64-NEXT: [[Y_START:.*]]:{{$}}
326; X64:      # BB
327; X64:      subq    $40, %rsp
328; X64-NEXT: [[Y_CALL_LINE:.*]]:{{$}}
329; X64-NEXT: callq   z
330; X64-NEXT: [[Y_EPILOG_AND_RET:.*]]:
331; X64:      addq    $40, %rsp
332; X64-NEXT: ret
333; X64-NEXT: [[END_OF_Y:.*]]:
334;
335; X64-LABEL: f:
336; X64-NEXT: .L{{.*}}:
337; X64-NEXT: [[F_START:.*]]:{{$}}
338; X64:      # BB
339; X64:      subq    $40, %rsp
340; X64-NEXT: [[F_CALLS_X:.*]]:{{$}}
341; X64-NEXT: callq   x
342; X64-NEXT: [[F_CALLS_Y:.*]]:
343; X64:      callq   y
344; X64-NEXT: [[F_CALLS_Z:.*]]:
345; X64:      callq   z
346; X64-NEXT: [[F_EPILOG_AND_RET:.*]]:
347; X64:      addq    $40, %rsp
348; X64-NEXT: ret
349; X64-NEXT: [[END_OF_F:.*]]:
350;
351; X64-LABEL: .section        .debug$S,"dr"
352; X64-NEXT: .long   4
353; Symbol subsection for x
354; X64-NEXT: .long   241
355; X64-NEXT: .long [[F1_END:.*]]-[[F1_START:.*]]
356; X64-NEXT: [[F1_START]]:
357; X64-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]]
358; X64-NEXT: [[PROC_SEGMENT_START]]:
359; X64-NEXT: .short  4423
360; X64-NEXT: .zero   12
361; X64-NEXT: .long [[END_OF_X]]-x
362; X64-NEXT: .zero   12
363; X64-NEXT: .secrel32 x
364; X64-NEXT: .secidx x
365; X64-NEXT: .byte   0
366; X64-NEXT: .byte   120
367; X64-NEXT: .byte   0
368; X64-NEXT: [[PROC_SEGMENT_END]]:
369; X64-NEXT: .short  2
370; X64-NEXT: .short  4431
371; X64-NEXT: [[F1_END]]:
372; Padding
373; X64-NEXT: .zero   3
374; Line table subsection for x
375; X64-NEXT: .long   242
376; X64-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
377; X64-NEXT: [[F2_START]]:
378; X64-NEXT: .secrel32 x
379; X64-NEXT: .secidx x
380; X64-NEXT: .short 1
381; X64-NEXT: .long [[END_OF_X]]-x
382; X64-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
383; X64-NEXT: .long   0
384; X64-NEXT: .long   3
385; X64-NEXT: .long [[FILE_SEGMENT_END:.*]]-[[FILE_SEGMENT_START]]
386; X64-NEXT: .long [[X_START]]-x
387; X64-NEXT: .long   3
388; X64-NEXT: .long [[X_CALL_LINE]]-x
389; X64-NEXT: .long   4
390; X64-NEXT: .long [[X_EPILOG_AND_RET]]-x
391; X64-NEXT: .long   5
392; X64-NEXT: .short 0
393; X64-NEXT: .short 0
394; X64-NEXT: .short 42
395; X64-NEXT: .short 42
396; X64-NEXT: .short 43
397; X64-NEXT: .short 43
398; X64-NEXT: [[FILE_SEGMENT_END]]:
399; X64-NEXT: [[F2_END]]:
400; Symbol subsection for y
401; X64-NEXT: .long   241
402; X64-NEXT: .long [[F1_END:.*]]-[[F1_START:.*]]
403; X64-NEXT: [[F1_START]]:
404; X64-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]]
405; X64-NEXT: [[PROC_SEGMENT_START]]:
406; X64-NEXT: .short  4423
407; X64-NEXT: .zero   12
408; X64-NEXT: .long [[END_OF_Y]]-y
409; X64-NEXT: .zero   12
410; X64-NEXT: .secrel32 y
411; X64-NEXT: .secidx y
412; X64-NEXT: .byte   0
413; X64-NEXT: .byte   121
414; X64-NEXT: .byte   0
415; X64-NEXT: [[PROC_SEGMENT_END]]:
416; X64-NEXT: .short  2
417; X64-NEXT: .short  4431
418; X64-NEXT: [[F1_END]]:
419; Padding
420; X64-NEXT: .zero   3
421; Line table subsection for y
422; X64-NEXT: .long   242
423; X64-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
424; X64-NEXT: [[F2_START]]:
425; X64-NEXT: .secrel32 y
426; X64-NEXT: .secidx y
427; X64-NEXT: .short 1
428; X64-NEXT: .long [[END_OF_Y]]-y
429; X64-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
430; X64-NEXT: .long   0
431; X64-NEXT: .long   3
432; X64-NEXT: .long [[FILE_SEGMENT_END:.*]]-[[FILE_SEGMENT_START]]
433; X64-NEXT: .long [[Y_START]]-y
434; X64-NEXT: .long   7
435; X64-NEXT: .long [[Y_CALL_LINE]]-y
436; X64-NEXT: .long   8
437; X64-NEXT: .long [[Y_EPILOG_AND_RET]]-y
438; X64-NEXT: .long   9
439; X64-NEXT: .short 0
440; X64-NEXT: .short 0
441; X64-NEXT: .short 52
442; X64-NEXT: .short 52
443; X64-NEXT: .short 53
444; X64-NEXT: .short 53
445; X64-NEXT: [[FILE_SEGMENT_END]]:
446; X64-NEXT: [[F2_END]]:
447; Symbol subsection for f
448; X64-NEXT: .long   241
449; X64-NEXT: .long [[F1_END:.*]]-[[F1_START:.*]]
450; X64-NEXT: [[F1_START]]:
451; X64-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]]
452; X64-NEXT: [[PROC_SEGMENT_START]]:
453; X64-NEXT: .short  4423
454; X64-NEXT: .zero   12
455; X64-NEXT: .long [[END_OF_F]]-f
456; X64-NEXT: .zero   12
457; X64-NEXT: .secrel32 f
458; X64-NEXT: .secidx f
459; X64-NEXT: .byte   0
460; X64-NEXT: .byte   102
461; X64-NEXT: .byte   0
462; X64-NEXT: [[PROC_SEGMENT_END]]:
463; X64-NEXT: .short  2
464; X64-NEXT: .short  4431
465; X64-NEXT: [[F1_END]]:
466; Padding
467; X64-NEXT: .zero   3
468; Line table subsection for f
469; X64-NEXT: .long   242
470; X64-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
471; X64-NEXT: [[F2_START]]:
472; X64-NEXT: .secrel32 f
473; X64-NEXT: .secidx f
474; X64-NEXT: .short 1
475; X64-NEXT: .long [[END_OF_F]]-f
476; X64-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
477; X64-NEXT: .long   0
478; X64-NEXT: .long   5
479; X64-NEXT: .long [[FILE_SEGMENT_END:.*]]-[[FILE_SEGMENT_START]]
480; X64-NEXT: .long [[F_START]]-f
481; X64-NEXT: .long   11
482; X64-NEXT: .long [[F_CALLS_X]]-f
483; X64-NEXT: .long   12
484; X64-NEXT: .long [[F_CALLS_Y]]-f
485; X64-NEXT: .long   13
486; X64-NEXT: .long [[F_CALLS_Z]]-f
487; X64-NEXT: .long   14
488; X64-NEXT: .long [[F_EPILOG_AND_RET]]-f
489; X64-NEXT: .long   15
490; X64-NEXT: .short 0
491; X64-NEXT: .short 0
492; X64-NEXT: .short 62
493; X64-NEXT: .short 62
494; X64-NEXT: .short 63
495; X64-NEXT: .short 63
496; X64-NEXT: .short 72
497; X64-NEXT: .short 72
498; X64-NEXT: .short 73
499; X64-NEXT: .short 73
500; X64-NEXT: [[FILE_SEGMENT_END]]:
501; X64-NEXT: [[F2_END]]:
502; File index to string table offset subsection
503; X64-NEXT: .long   244
504; X64-NEXT: .long   8
505; X64-NEXT: .long   1
506; X64-NEXT: .long   0
507; String table
508; X64-NEXT: .long   243
509; X64-NEXT: .long   13
510; X64-NEXT: .byte   0
511; X64-NEXT: .ascii  "D:\\source.c"
512; X64-NEXT: .byte   0
513; X64-NEXT: .zero   3
514
515; OBJ64:    Section {
516; OBJ64:      Name: .debug$S (2E 64 65 62 75 67 24 53)
517; OBJ64:      Characteristics [ (0x42100040)
518; OBJ64:      ]
519; OBJ64:      Relocations [
520; OBJ64-NEXT:   0x2C IMAGE_REL_AMD64_SECREL x
521; OBJ64-NEXT:   0x30 IMAGE_REL_AMD64_SECTION x
522; OBJ64-NEXT:   0x44 IMAGE_REL_AMD64_SECREL x
523; OBJ64-NEXT:   0x48 IMAGE_REL_AMD64_SECTION x
524; OBJ64-NEXT:   0xA8 IMAGE_REL_AMD64_SECREL y
525; OBJ64-NEXT:   0xAC IMAGE_REL_AMD64_SECTION y
526; OBJ64-NEXT:   0xC0 IMAGE_REL_AMD64_SECREL y
527; OBJ64-NEXT:   0xC4 IMAGE_REL_AMD64_SECTION y
528; OBJ64-NEXT:   0x124 IMAGE_REL_AMD64_SECREL f
529; OBJ64-NEXT:   0x128 IMAGE_REL_AMD64_SECTION f
530; OBJ64-NEXT:   0x13C IMAGE_REL_AMD64_SECREL f
531; OBJ64-NEXT:   0x140 IMAGE_REL_AMD64_SECTION f
532; OBJ64-NEXT: ]
533; OBJ64:      Subsection [
534; OBJ64-NEXT:   Type: 0xF1
535; OBJ64-NOT:    ]
536; OBJ64:        ProcStart {
537; OBJ64-NEXT:     DisplayName: x
538; OBJ64-NEXT:     Section: x
539; OBJ64-NEXT:     CodeSize: 0xE
540; OBJ64-NEXT:   }
541; OBJ64-NEXT:   ProcEnd
542; OBJ64-NEXT: ]
543; OBJ64:      Subsection [
544; OBJ64-NEXT:   Type: 0xF2
545; OBJ64:      ]
546; OBJ64:      Subsection [
547; OBJ64-NEXT:   Type: 0xF1
548; OBJ64-NOT:    ]
549; OBJ64:        ProcStart {
550; OBJ64-NEXT:     DisplayName: y
551; OBJ64-NEXT:     Section: y
552; OBJ64-NEXT:     CodeSize: 0xE
553; OBJ64-NEXT:   }
554; OBJ64-NEXT:   ProcEnd
555; OBJ64-NEXT: ]
556; OBJ64:      Subsection [
557; OBJ64-NEXT:   Type: 0xF2
558; OBJ64:      ]
559; OBJ64:      Subsection [
560; OBJ64-NEXT:   Type: 0xF1
561; OBJ64-NOT:    ]
562; OBJ64:        ProcStart {
563; OBJ64-NEXT:     DisplayName: f
564; OBJ64-NEXT:     Section: f
565; OBJ64-NEXT:     CodeSize: 0x18
566; OBJ64-NEXT:   }
567; OBJ64-NEXT:   ProcEnd
568; OBJ64-NEXT: ]
569; OBJ64:      Subsection [
570; OBJ64-NEXT:   Type: 0xF2
571; OBJ64:      ]
572; OBJ64:      FunctionLineTable [
573; OBJ64-NEXT:   Name: x
574; OBJ64-NEXT:   Flags: 0x1
575; OBJ64-NEXT:   CodeSize: 0xE
576; OBJ64-NEXT:   FilenameSegment [
577; OBJ64-NEXT:     Filename: D:\source.c
578; OBJ64-NEXT:     +0x0: 3
579; OBJ64-NEXT:     +0x4: 4
580; OBJ64-NEXT:     +0x9: 5
581; OBJ64-NEXT:     ColStart: 0
582; OBJ64-NEXT:     ColEnd: 0
583; OBJ64-NEXT:     ColStart: 42
584; OBJ64-NEXT:     ColEnd: 42
585; OBJ64-NEXT:     ColStart: 43
586; OBJ64-NEXT:     ColEnd: 43
587; OBJ64-NEXT:   ]
588; OBJ64-NEXT: ]
589; OBJ64-NEXT: FunctionLineTable [
590; OBJ64-NEXT:   Name: y
591; OBJ64-NEXT:   Flags: 0x1
592; OBJ64-NEXT:   CodeSize: 0xE
593; OBJ64-NEXT:   FilenameSegment [
594; OBJ64-NEXT:     Filename: D:\source.c
595; OBJ64-NEXT:     +0x0: 7
596; OBJ64-NEXT:     +0x4: 8
597; OBJ64-NEXT:     +0x9: 9
598; OBJ64-NEXT:     ColStart: 0
599; OBJ64-NEXT:     ColEnd: 0
600; OBJ64-NEXT:     ColStart: 52
601; OBJ64-NEXT:     ColEnd: 52
602; OBJ64-NEXT:     ColStart: 53
603; OBJ64-NEXT:     ColEnd: 53
604; OBJ64-NEXT:   ]
605; OBJ64-NEXT: ]
606; OBJ64-NEXT: FunctionLineTable [
607; OBJ64-NEXT:   Name: f
608; OBJ64-NEXT:   Flags: 0x1
609; OBJ64-NEXT:   CodeSize: 0x18
610; OBJ64-NEXT:   FilenameSegment [
611; OBJ64-NEXT:     Filename: D:\source.c
612; OBJ64-NEXT:     +0x0: 11
613; OBJ64-NEXT:     +0x4: 12
614; OBJ64-NEXT:     +0x9: 13
615; OBJ64-NEXT:     +0xE: 14
616; OBJ64-NEXT:     +0x13: 15
617; OBJ64-NEXT:     ColStart: 0
618; OBJ64-NEXT:     ColEnd: 0
619; OBJ64-NEXT:     ColStart: 62
620; OBJ64-NEXT:     ColEnd: 62
621; OBJ64-NEXT:     ColStart: 63
622; OBJ64-NEXT:     ColEnd: 63
623; OBJ64-NEXT:     ColStart: 72
624; OBJ64-NEXT:     ColEnd: 72
625; OBJ64-NEXT:     ColStart: 73
626; OBJ64-NEXT:     ColEnd: 73
627; OBJ64-NEXT:   ]
628; OBJ64-NEXT: ]
629
630; Function Attrs: nounwind
631define void @x() #0 !dbg !4 {
632entry:
633  call void @z(), !dbg !14
634  ret void, !dbg !15
635}
636
637declare void @z() #1
638
639; Function Attrs: nounwind
640define void @y() #0 !dbg !9 {
641entry:
642  call void @z(), !dbg !16
643  ret void, !dbg !17
644}
645
646; Function Attrs: nounwind
647define void @f() #0 !dbg !10 {
648entry:
649  call void @x(), !dbg !18
650  call void @y(), !dbg !19
651  call void @z(), !dbg !20
652  ret void, !dbg !21
653}
654
655attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
656attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
657
658!llvm.dbg.cu = !{!0}
659!llvm.module.flags = !{!11, !12}
660!llvm.ident = !{!13}
661
662!0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5 ", isOptimized: false, emissionKind: 0, file: !1, enums: !2, retainedTypes: !2, subprograms: !3, globals: !2, imports: !2)
663!1 = !DIFile(filename: "<unknown>", directory: "D:\5C")
664!2 = !{}
665!3 = !{!4, !9, !10}
666!4 = distinct !DISubprogram(name: "x", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !5, scope: !6, type: !7, variables: !2)
667!5 = !DIFile(filename: "source.c", directory: "D:\5C")
668!6 = !DIFile(filename: "source.c", directory: "D:C")
669!7 = !DISubroutineType(types: !8)
670!8 = !{null}
671!9 = distinct !DISubprogram(name: "y", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 7, file: !5, scope: !6, type: !7, variables: !2)
672!10 = distinct !DISubprogram(name: "f", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 11, file: !5, scope: !6, type: !7, variables: !2)
673!11 = !{i32 2, !"CodeView", i32 1}
674!12 = !{i32 1, !"Debug Info Version", i32 3}
675!13 = !{!"clang version 3.5 "}
676!14 = !DILocation(line: 4, column: 42, scope: !4)
677!15 = !DILocation(line: 5, column: 43, scope: !4)
678!16 = !DILocation(line: 8, column: 52, scope: !9)
679!17 = !DILocation(line: 9, column: 53, scope: !9)
680!18 = !DILocation(line: 12, column: 62, scope: !10)
681!19 = !DILocation(line: 13, column: 63, scope: !10)
682!20 = !DILocation(line: 14, column: 72, scope: !10)
683!21 = !DILocation(line: 15, column: 73, scope: !10)
684