blob: ee154359cf84ec512fa0d7ddd0fdb541ad393775 [file] [log] [blame]
Timur Iskhodzhanov4a83bf12014-01-30 17:53:45 +00001; RUN: llc -mcpu=core2 -mtriple=i686-pc-win32 -O0 < %s | FileCheck --check-prefix=X86 %s
Zachary Turner99f02152015-02-18 19:32:05 +00002; 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
Timur Iskhodzhanov4a83bf12014-01-30 17:53:45 +00003; RUN: llc -mcpu=core2 -mtriple=x86_64-pc-win32 -O0 < %s | FileCheck --check-prefix=X64 %s
Zachary Turner99f02152015-02-18 19:32:05 +00004; 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
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +00005
6; This LL file was generated by running clang on the following code:
7; D:\test.c:
8; 1 void g(void);
9; 2
10; 3 void f(void) {
11; 4 g();
12; 5 }
13
Timur Iskhodzhanove32ef932014-03-26 08:45:02 +000014; X86-LABEL: _f:
David Majnemerb9257152014-11-04 08:03:31 +000015; X86: # BB
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +000016; X86-NEXT: [[CALL_LINE:^L.*]]:{{$}}
David Majnemerb9257152014-11-04 08:03:31 +000017; X86: calll _g
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +000018; X86-NEXT: [[RETURN_STMT:.*]]:
David Majnemerb9257152014-11-04 08:03:31 +000019; X86: ret
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +000020; X86-NEXT: [[END_OF_F:.*]]:
21;
David Majnemer5614ea92015-02-07 08:26:40 +000022; X86-LABEL: .section .debug$S,"dr"
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +000023; X86-NEXT: .long 4
Timur Iskhodzhanov2bc90fd2014-10-24 01:27:45 +000024; Symbol subsection
25; X86-NEXT: .long 241
26; X86-NEXT: .long [[F1_END:.*]]-[[F1_START:.*]]
27; X86-NEXT: [[F1_START]]:
28; X86-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]]
29; X86-NEXT: [[PROC_SEGMENT_START]]:
30; X86-NEXT: .short 4423
31; X86-NEXT: .zero 12
32; X86-NEXT: .long [[END_OF_F]]-_f
33; X86-NEXT: .zero 12
34; X86-NEXT: .secrel32 _f
35; X86-NEXT: .secidx _f
36; X86-NEXT: .byte 0
37; X86-NEXT: .byte 102
38; X86-NEXT: .byte 0
39; X86-NEXT: [[PROC_SEGMENT_END]]:
40; X86-NEXT: .short 2
41; X86-NEXT: .short 4431
42; X86-NEXT: [[F1_END]]:
43; Padding
44; X86-NEXT: .zero 3
45; Line table
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +000046; X86-NEXT: .long 242
47; X86-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
48; X86-NEXT: [[F2_START]]:
49; X86-NEXT: .secrel32 _f
50; X86-NEXT: .secidx _f
David Majnemer3f49e662015-07-09 00:19:51 +000051; X86-NEXT: .short 1
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +000052; X86-NEXT: .long [[END_OF_F]]-_f
53; X86-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
54; X86-NEXT: .long 0
55; X86-NEXT: .long 2
56; X86-NEXT: .long [[FILE_SEGMENT_END:.*]]-[[FILE_SEGMENT_START]]
57; X86-NEXT: .long [[CALL_LINE]]-_f
David Majnemerc3340db2016-01-13 01:05:23 +000058; X86-NEXT: .long -2147483644
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +000059; X86-NEXT: .long [[RETURN_STMT]]-_f
David Majnemerc3340db2016-01-13 01:05:23 +000060; X86-NEXT: .long -2147483643
David Majnemer3f49e662015-07-09 00:19:51 +000061; X86-NEXT: .short 0
62; X86-NEXT: .short 0
63; X86-NEXT: .short 0
64; X86-NEXT: .short 0
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +000065; X86-NEXT: [[FILE_SEGMENT_END]]:
66; X86-NEXT: [[F2_END]]:
67; File index to string table offset subsection
68; X86-NEXT: .long 244
69; X86-NEXT: .long 8
70; X86-NEXT: .long 1
71; X86-NEXT: .long 0
72; String table
73; X86-NEXT: .long 243
74; X86-NEXT: .long 11
75; X86-NEXT: .byte 0
76; X86-NEXT: .ascii "D:\\test.c"
77; X86-NEXT: .byte 0
78; Padding
79; X86-NEXT: .zero 1
80
81; OBJ32: Section {
82; OBJ32: Name: .debug$S (2E 64 65 62 75 67 24 53)
83; OBJ32: Characteristics [ (0x42100040)
84; OBJ32: ]
85; OBJ32: Relocations [
Timur Iskhodzhanov2bc90fd2014-10-24 01:27:45 +000086; OBJ32-NEXT: 0x2C IMAGE_REL_I386_SECREL _f
87; OBJ32-NEXT: 0x30 IMAGE_REL_I386_SECTION _f
88; OBJ32-NEXT: 0x44 IMAGE_REL_I386_SECREL _f
89; OBJ32-NEXT: 0x48 IMAGE_REL_I386_SECTION _f
90; OBJ32-NEXT: ]
91; OBJ32: Subsection [
Reid Kleckner72e2ba72016-01-13 19:32:35 +000092; OBJ32-NEXT: SubSectionType: Symbols (0xF1)
Timur Iskhodzhanov2bc90fd2014-10-24 01:27:45 +000093; OBJ32-NOT: ]
94; OBJ32: ProcStart {
Reid Kleckner72e2ba72016-01-13 19:32:35 +000095; OBJ32: CodeSize: 0x6
96; OBJ32: DisplayName: f
97; OBJ32: LinkageName: _f
98; OBJ32: }
Timur Iskhodzhanov2bc90fd2014-10-24 01:27:45 +000099; OBJ32-NEXT: ProcEnd
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000100; OBJ32-NEXT: ]
101; OBJ32: FunctionLineTable [
102; OBJ32-NEXT: Name: _f
David Majnemer3f49e662015-07-09 00:19:51 +0000103; OBJ32-NEXT: Flags: 0x1
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000104; OBJ32-NEXT: CodeSize: 0x6
105; OBJ32-NEXT: FilenameSegment [
106; OBJ32-NEXT: Filename: D:\test.c
David Majnemer04948362016-01-13 01:05:16 +0000107; OBJ32-NEXT: +0x0 [
108; OBJ32-NEXT: LineNumberStart: 4
109; OBJ32-NEXT: LineNumberEndDelta: 0
David Majnemerc3340db2016-01-13 01:05:23 +0000110; OBJ32-NEXT: IsStatement: Yes
David Majnemer04948362016-01-13 01:05:16 +0000111; OBJ32-NEXT: ColStart: 0
112; OBJ32-NEXT: ColEnd: 0
113; OBJ32-NEXT: ]
114; OBJ32-NEXT: +0x5 [
115; OBJ32-NEXT: LineNumberStart: 5
116; OBJ32-NEXT: LineNumberEndDelta: 0
David Majnemerc3340db2016-01-13 01:05:23 +0000117; OBJ32-NEXT: IsStatement: Yes
David Majnemer04948362016-01-13 01:05:16 +0000118; OBJ32-NEXT: ColStart: 0
119; OBJ32-NEXT: ColEnd: 0
120; OBJ32-NEXT: ]
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000121; OBJ32-NEXT: ]
122; OBJ32-NEXT: ]
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000123
Timur Iskhodzhanove32ef932014-03-26 08:45:02 +0000124; X64-LABEL: f:
Rafael Espindola07c03d32015-03-05 02:05:42 +0000125; X64-NEXT: .L{{.*}}:{{$}}
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000126; X64-NEXT: [[START:.*]]:{{$}}
David Majnemerb9257152014-11-04 08:03:31 +0000127; X64: # BB
128; X64: subq $40, %rsp
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000129; X64-NEXT: [[CALL_LINE:.*]]:{{$}}
130; X64-NEXT: callq g
131; X64-NEXT: [[EPILOG_AND_RET:.*]]:
David Majnemerb9257152014-11-04 08:03:31 +0000132; X64: addq $40, %rsp
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000133; X64-NEXT: ret
134; X64-NEXT: [[END_OF_F:.*]]:
135;
David Majnemer5614ea92015-02-07 08:26:40 +0000136; X64-LABEL: .section .debug$S,"dr"
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000137; X64-NEXT: .long 4
Timur Iskhodzhanov2bc90fd2014-10-24 01:27:45 +0000138; Symbol subsection
139; X64-NEXT: .long 241
140; X64-NEXT: .long [[F1_END:.*]]-[[F1_START:.*]]
141; X64-NEXT: [[F1_START]]:
142; X64-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]]
143; X64-NEXT: [[PROC_SEGMENT_START]]:
144; X64-NEXT: .short 4423
145; X64-NEXT: .zero 12
146; X64-NEXT: .long [[END_OF_F]]-f
147; X64-NEXT: .zero 12
148; X64-NEXT: .secrel32 f
149; X64-NEXT: .secidx f
150; X64-NEXT: .byte 0
151; X64-NEXT: .byte 102
152; X64-NEXT: .byte 0
153; X64-NEXT: [[PROC_SEGMENT_END]]:
154; X64-NEXT: .short 2
155; X64-NEXT: .short 4431
156; X64-NEXT: [[F1_END]]:
157; Padding
158; X64-NEXT: .zero 3
159; Line table
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000160; X64-NEXT: .long 242
161; X64-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
162; X64-NEXT: [[F2_START]]:
163; X64-NEXT: .secrel32 f
164; X64-NEXT: .secidx f
David Majnemer3f49e662015-07-09 00:19:51 +0000165; X64-NEXT: .short 1
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000166; X64-NEXT: .long [[END_OF_F]]-f
167; X64-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
168; X64-NEXT: .long 0
169; X64-NEXT: .long 3
170; X64-NEXT: .long [[FILE_SEGMENT_END:.*]]-[[FILE_SEGMENT_START]]
171; X64-NEXT: .long [[START]]-f
David Majnemerc3340db2016-01-13 01:05:23 +0000172; X64-NEXT: .long -2147483645
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000173; X64-NEXT: .long [[CALL_LINE]]-f
David Majnemerc3340db2016-01-13 01:05:23 +0000174; X64-NEXT: .long -2147483644
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000175; X64-NEXT: .long [[EPILOG_AND_RET]]-f
David Majnemerc3340db2016-01-13 01:05:23 +0000176; X64-NEXT: .long -2147483643
David Majnemer3f49e662015-07-09 00:19:51 +0000177; X64-NEXT: .short 0
178; X64-NEXT: .short 0
179; X64-NEXT: .short 0
180; X64-NEXT: .short 0
181; X64-NEXT: .short 0
182; X64-NEXT: .short 0
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000183; X64-NEXT: [[FILE_SEGMENT_END]]:
184; X64-NEXT: [[F2_END]]:
185; File index to string table offset subsection
186; X64-NEXT: .long 244
187; X64-NEXT: .long 8
188; X64-NEXT: .long 1
189; X64-NEXT: .long 0
190; String table
191; X64-NEXT: .long 243
192; X64-NEXT: .long 11
193; X64-NEXT: .byte 0
194; X64-NEXT: .ascii "D:\\test.c"
195; X64-NEXT: .byte 0
196; Padding
197; X64-NEXT: .zero 1
198
199; OBJ64: Section {
200; OBJ64: Name: .debug$S (2E 64 65 62 75 67 24 53)
201; OBJ64: Characteristics [ (0x42100040)
202; OBJ64: ]
203; OBJ64: Relocations [
Timur Iskhodzhanov2bc90fd2014-10-24 01:27:45 +0000204; OBJ64-NEXT: 0x2C IMAGE_REL_AMD64_SECREL f
205; OBJ64-NEXT: 0x30 IMAGE_REL_AMD64_SECTION f
206; OBJ64-NEXT: 0x44 IMAGE_REL_AMD64_SECREL f
207; OBJ64-NEXT: 0x48 IMAGE_REL_AMD64_SECTION f
208; OBJ64-NEXT: ]
209; OBJ64: Subsection [
Reid Kleckner72e2ba72016-01-13 19:32:35 +0000210; OBJ64-NEXT: SubSectionType: Symbols (0xF1)
Timur Iskhodzhanov2bc90fd2014-10-24 01:27:45 +0000211; OBJ64-NOT: ]
212; OBJ64: ProcStart {
Reid Kleckner72e2ba72016-01-13 19:32:35 +0000213; OBJ64: CodeSize: 0xE
214; OBJ64: DisplayName: f
215; OBJ64: LinkageName: f
216; OBJ64: }
Timur Iskhodzhanov2bc90fd2014-10-24 01:27:45 +0000217; OBJ64-NEXT: ProcEnd
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000218; OBJ64-NEXT: ]
219; OBJ64: FunctionLineTable [
220; OBJ64-NEXT: Name: f
David Majnemer3f49e662015-07-09 00:19:51 +0000221; OBJ64-NEXT: Flags: 0x1
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000222; OBJ64-NEXT: CodeSize: 0xE
223; OBJ64-NEXT: FilenameSegment [
224; OBJ64-NEXT: Filename: D:\test.c
David Majnemer04948362016-01-13 01:05:16 +0000225; OBJ64-NEXT: +0x0 [
226; OBJ64-NEXT: LineNumberStart: 3
227; OBJ64-NEXT: LineNumberEndDelta: 0
David Majnemerc3340db2016-01-13 01:05:23 +0000228; OBJ64-NEXT: IsStatement: Yes
David Majnemer04948362016-01-13 01:05:16 +0000229; OBJ64-NEXT: ColStart: 0
230; OBJ64-NEXT: ColEnd: 0
231; OBJ64-NEXT: ]
232; OBJ64-NEXT: +0x4 [
233; OBJ64-NEXT: LineNumberStart: 4
234; OBJ64-NEXT: LineNumberEndDelta: 0
David Majnemerc3340db2016-01-13 01:05:23 +0000235; OBJ64-NEXT: IsStatement: Yes
David Majnemer04948362016-01-13 01:05:16 +0000236; OBJ64-NEXT: ColStart: 0
237; OBJ64-NEXT: ColEnd: 0
238; OBJ64-NEXT: ]
239; OBJ64-NEXT: +0x9 [
240; OBJ64-NEXT: LineNumberStart: 5
241; OBJ64-NEXT: LineNumberEndDelta: 0
David Majnemerc3340db2016-01-13 01:05:23 +0000242; OBJ64-NEXT: IsStatement: Yes
David Majnemer04948362016-01-13 01:05:16 +0000243; OBJ64-NEXT: ColStart: 0
244; OBJ64-NEXT: ColEnd: 0
245; OBJ64-NEXT: ]
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000246; OBJ64-NEXT: ]
247; OBJ64-NEXT: ]
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000248
249; Function Attrs: nounwind
Peter Collingbourned4bff302015-11-05 22:03:56 +0000250define void @f() #0 !dbg !4 {
Timur Iskhodzhanovf166f6c2014-01-30 01:39:17 +0000251entry:
252 call void @g(), !dbg !12
253 ret void, !dbg !13
254}
255
256declare void @g() #1
257
258attributes #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" }
259attributes #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" }
260
261!llvm.dbg.cu = !{!0}
262!llvm.module.flags = !{!9, !10}
263!llvm.ident = !{!11}
264
Duncan P. N. Exon Smith55ca9642015-08-03 17:26:41 +0000265!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)
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +0000266!1 = !DIFile(filename: "<unknown>", directory: "D:\5C")
Duncan P. N. Exon Smithbe7ea192014-12-15 19:07:53 +0000267!2 = !{}
268!3 = !{!4}
Peter Collingbourned4bff302015-11-05 22:03:56 +0000269!4 = distinct !DISubprogram(name: "f", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !5, scope: !6, type: !7, variables: !2)
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +0000270!5 = !DIFile(filename: "test.c", directory: "D:\5C")
271!6 = !DIFile(filename: "test.c", directory: "D:C")
272!7 = !DISubroutineType(types: !8)
Duncan P. N. Exon Smithbe7ea192014-12-15 19:07:53 +0000273!8 = !{null}
Reid Kleckner12d2c122015-08-05 22:26:20 +0000274!9 = !{i32 2, !"CodeView", i32 1}
Duncan P. N. Exon Smithe2741802015-03-03 17:24:31 +0000275!10 = !{i32 1, !"Debug Info Version", i32 3}
Duncan P. N. Exon Smithbe7ea192014-12-15 19:07:53 +0000276!11 = !{!"clang version 3.5 "}
Duncan P. N. Exon Smitha9308c42015-04-29 16:38:44 +0000277!12 = !DILocation(line: 4, scope: !4)
278!13 = !DILocation(line: 5, scope: !4)