Revert "DI: Fold constant arguments into a single MDString"
[oota-llvm.git] / test / DebugInfo / COFF / simple.ll
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-linetables | 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-linetables | FileCheck --check-prefix=OBJ64 %s
5
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
14 ; X86-LABEL: _f:
15 ; X86-NEXT: # BB
16 ; X86-NEXT: [[CALL_LINE:^L.*]]:{{$}}
17 ; X86-NEXT: calll   _g
18 ; X86-NEXT: [[RETURN_STMT:.*]]:
19 ; X86-NEXT: ret
20 ; X86-NEXT: [[END_OF_F:.*]]:
21 ;
22 ; X86-LABEL: .section        .debug$S,"rd"
23 ; X86-NEXT: .long   4
24 ; X86-NEXT: .long   242
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:[^:]*]]:
31 ; X86-NEXT: .long   0
32 ; X86-NEXT: .long   2
33 ; X86-NEXT: .long [[FILE_SEGMENT_END:.*]]-[[FILE_SEGMENT_START]]
34 ; X86-NEXT: .long [[CALL_LINE]]-_f
35 ; X86-NEXT: .long   4
36 ; X86-NEXT: .long [[RETURN_STMT]]-_f
37 ; X86-NEXT: .long   5
38 ; X86-NEXT: [[FILE_SEGMENT_END]]:
39 ; X86-NEXT: [[F2_END]]:
40 ; File index to string table offset subsection
41 ; X86-NEXT: .long   244
42 ; X86-NEXT: .long   8
43 ; X86-NEXT: .long   1
44 ; X86-NEXT: .long   0
45 ; String table
46 ; X86-NEXT: .long   243
47 ; X86-NEXT: .long   11
48 ; X86-NEXT: .byte   0
49 ; X86-NEXT: .ascii  "D:\\test.c"
50 ; X86-NEXT: .byte   0
51 ; Padding
52 ; X86-NEXT: .zero   1
53
54 ; OBJ32:    Section {
55 ; OBJ32:      Name: .debug$S (2E 64 65 62 75 67 24 53)
56 ; OBJ32:      Characteristics [ (0x42100040)
57 ; OBJ32:      ]
58 ; OBJ32:      Relocations [
59 ; OBJ32-NEXT:   0xC IMAGE_REL_I386_SECREL _f
60 ; OBJ32-NEXT:   0x10 IMAGE_REL_I386_SECTION _f
61 ; OBJ32-NEXT: ]
62 ; OBJ32:      FunctionLineTable [
63 ; OBJ32-NEXT:   Name: _f
64 ; OBJ32-NEXT:   CodeSize: 0x6
65 ; OBJ32-NEXT:   FilenameSegment [
66 ; OBJ32-NEXT:     Filename: D:\test.c
67 ; OBJ32-NEXT:     +0x0: 4
68 ; OBJ32-NEXT:     +0x5: 5
69 ; OBJ32-NEXT:   ]
70 ; OBJ32-NEXT: ]
71 ; OBJ32:    }
72
73 ; X64-LABEL: f:
74 ; X64-NEXT: [[START:.*]]:{{$}}
75 ; X64-NEXT: # BB
76 ; X64-NEXT: subq    $40, %rsp
77 ; X64-NEXT: [[CALL_LINE:.*]]:{{$}}
78 ; X64-NEXT: callq   g
79 ; X64-NEXT: [[EPILOG_AND_RET:.*]]:
80 ; X64-NEXT: addq    $40, %rsp
81 ; X64-NEXT: ret
82 ; X64-NEXT: [[END_OF_F:.*]]:
83 ;
84 ; X64-LABEL: .section        .debug$S,"rd"
85 ; X64-NEXT: .long   4
86 ; X64-NEXT: .long   242
87 ; X64-NEXT: .long [[F2_END:.*]]-[[F2_START:.*]]
88 ; X64-NEXT: [[F2_START]]:
89 ; X64-NEXT: .secrel32 f
90 ; X64-NEXT: .secidx f
91 ; X64-NEXT: .long [[END_OF_F]]-f
92 ; X64-NEXT: [[FILE_SEGMENT_START:[^:]*]]:
93 ; X64-NEXT: .long   0
94 ; X64-NEXT: .long   3
95 ; X64-NEXT: .long [[FILE_SEGMENT_END:.*]]-[[FILE_SEGMENT_START]]
96 ; X64-NEXT: .long [[START]]-f
97 ; X64-NEXT: .long   3
98 ; X64-NEXT: .long [[CALL_LINE]]-f
99 ; X64-NEXT: .long   4
100 ; X64-NEXT: .long [[EPILOG_AND_RET]]-f
101 ; X64-NEXT: .long   5
102 ; X64-NEXT: [[FILE_SEGMENT_END]]:
103 ; X64-NEXT: [[F2_END]]:
104 ; File index to string table offset subsection
105 ; X64-NEXT: .long   244
106 ; X64-NEXT: .long   8
107 ; X64-NEXT: .long   1
108 ; X64-NEXT: .long   0
109 ; String table
110 ; X64-NEXT: .long   243
111 ; X64-NEXT: .long   11
112 ; X64-NEXT: .byte   0
113 ; X64-NEXT: .ascii  "D:\\test.c"
114 ; X64-NEXT: .byte   0
115 ; Padding
116 ; X64-NEXT: .zero   1
117
118 ; OBJ64:    Section {
119 ; OBJ64:      Name: .debug$S (2E 64 65 62 75 67 24 53)
120 ; OBJ64:      Characteristics [ (0x42100040)
121 ; OBJ64:      ]
122 ; OBJ64:      Relocations [
123 ; OBJ64-NEXT:   0xC IMAGE_REL_AMD64_SECREL f
124 ; OBJ64-NEXT:   0x10 IMAGE_REL_AMD64_SECTION f
125 ; OBJ64-NEXT: ]
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
134 ; OBJ64-NEXT:   ]
135 ; OBJ64-NEXT: ]
136 ; OBJ64:    }
137
138 ; Function Attrs: nounwind
139 define void @f() #0 {
140 entry:
141   call void @g(), !dbg !12
142   ret void, !dbg !13
143 }
144
145 declare void @g() #1
146
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" }
149
150 !llvm.dbg.cu = !{!0}
151 !llvm.module.flags = !{!9, !10}
152 !llvm.ident = !{!11}
153
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}