1 ; RUN: llc -mtriple=i686-pc-win32 -O0 < %s | FileCheck --check-prefix=X86 %s
2 ; RUN: llc -mtriple=i686-pc-win32 -o - -O0 < %s | llvm-mc -triple=i686-pc-win32 -filetype=obj | llvm-readobj -s -sr -codeview-linetables | FileCheck --check-prefix=OBJ32 %s
3 ; RUN: llc -mtriple=x86_64-pc-win32 -O0 < %s | FileCheck --check-prefix=X64 %s
4 ; RUN: llc -mtriple=x86_64-pc-win32 -o - -O0 < %s | llvm-mc -triple=x86_64-pc-win32 -filetype=obj | llvm-readobj -s -sr -codeview-linetables | FileCheck --check-prefix=OBJ64 %s
6 ; This LL file was generated by running clang on the following code:
16 ; X86-NEXT: [[CALL_LINE:^L.*]]:{{$}}
18 ; X86-NEXT: [[RETURN_STMT:.*]]:
20 ; X86-NEXT: [[END_OF_F:.*]]:
22 ; X86: .section .debug$S,"rn"
25 ; X86-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
26 ; X86-NEXT: [[F2_START]]:
27 ; X86-NEXT: .secrel32 _f
28 ; X86-NEXT: .secidx _f
29 ; X86-NEXT: .long [[END_OF_F]]-_f
30 ; X86-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
33 ; X86-NEXT: .long [[FILE_SEGMENT_END:.*]]-[[FILE_SEGMENT_START]]
34 ; X86-NEXT: .long [[CALL_LINE]]-_f
36 ; X86-NEXT: .long [[RETURN_STMT]]-_f
38 ; X86-NEXT: [[FILE_SEGMENT_END]]:
39 ; X86-NEXT: [[F2_END]]:
40 ; File index to string table offset subsection
49 ; X86-NEXT: .ascii "D:\\test.c"
55 ; OBJ32: Name: .debug$S (2E 64 65 62 75 67 24 53)
56 ; OBJ32: Characteristics [ (0x42100040)
58 ; OBJ32: Relocations [
59 ; OBJ32-NEXT: 0xC IMAGE_REL_I386_SECREL _f
60 ; OBJ32-NEXT: 0x10 IMAGE_REL_I386_SECTION _f
62 ; OBJ32: FunctionLineTable [
63 ; OBJ32-NEXT: Name: _f
64 ; OBJ32-NEXT: CodeSize: 0x6
65 ; OBJ32-NEXT: FilenameSegment [
66 ; OBJ32-NEXT: Filename: D:\test.c
74 ; X64-NEXT: [[START:.*]]:{{$}}
76 ; X64-NEXT: subq $40, %rsp
77 ; X64-NEXT: [[CALL_LINE:.*]]:{{$}}
79 ; X64-NEXT: [[EPILOG_AND_RET:.*]]:
80 ; X64-NEXT: addq $40, %rsp
82 ; X64-NEXT: [[END_OF_F:.*]]:
84 ; X64: .section .debug$S,"rn"
87 ; X64-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
88 ; X64-NEXT: [[F2_START]]:
89 ; X64-NEXT: .secrel32 f
91 ; X64-NEXT: .long [[END_OF_F]]-f
92 ; X64-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
95 ; X64-NEXT: .long [[FILE_SEGMENT_END:.*]]-[[FILE_SEGMENT_START]]
96 ; X64-NEXT: .long [[START]]-f
98 ; X64-NEXT: .long [[CALL_LINE]]-f
100 ; X64-NEXT: .long [[EPILOG_AND_RET]]-f
102 ; X64-NEXT: [[FILE_SEGMENT_END]]:
103 ; X64-NEXT: [[F2_END]]:
104 ; File index to string table offset subsection
105 ; X64-NEXT: .long 244
110 ; X64-NEXT: .long 243
113 ; X64-NEXT: .ascii "D:\\test.c"
119 ; OBJ64: Name: .debug$S (2E 64 65 62 75 67 24 53)
120 ; OBJ64: Characteristics [ (0x42100040)
122 ; OBJ64: Relocations [
123 ; OBJ64-NEXT: 0xC IMAGE_REL_AMD64_SECREL f
124 ; OBJ64-NEXT: 0x10 IMAGE_REL_AMD64_SECTION f
126 ; OBJ64: FunctionLineTable [
127 ; OBJ64-NEXT: Name: f
128 ; OBJ64-NEXT: CodeSize: 0xE
129 ; OBJ64-NEXT: FilenameSegment [
130 ; OBJ64-NEXT: Filename: D:\test.c
131 ; OBJ64-NEXT: +0x0: 3
132 ; OBJ64-NEXT: +0x4: 4
133 ; OBJ64-NEXT: +0x9: 5
138 ; Function Attrs: nounwind
139 define void @f() #0 {
141 call void @g(), !dbg !12
147 attributes #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" }
148 attributes #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" }
151 !llvm.module.flags = !{!9, !10}
154 !0 = metadata !{i32 786449, metadata !1, i32 12, metadata !"clang version 3.5 ", i1 false, metadata !"", i32 0, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2, metadata !""} ; [ DW_TAG_compile_unit ] [D:\/<unknown>] [DW_LANG_C99]
155 !1 = metadata !{metadata !"<unknown>", metadata !"D:\5C"}
156 !2 = metadata !{i32 0}
157 !3 = metadata !{metadata !4}
158 !4 = metadata !{i32 786478, metadata !5, metadata !6, metadata !"f", metadata !"f", metadata !"", i32 3, metadata !7, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, void ()* @f, null, null, metadata !2, i32 3} ; [ DW_TAG_subprogram ] [line 3] [def] [f]
159 !5 = metadata !{metadata !"test.c", metadata !"D:\5C"}
160 !6 = metadata !{i32 786473, metadata !5} ; [ DW_TAG_file_type ] [D:\/test.c]
161 !7 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !8, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
162 !8 = metadata !{null}
163 !9 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
164 !10 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
165 !11 = metadata !{metadata !"clang version 3.5 "}
166 !12 = metadata !{i32 4, i32 0, metadata !4, null}
167 !13 = metadata !{i32 5, i32 0, metadata !4, null}