[PowerPC] Handle cmp op promotion for SELECT[_CC] nodes in PPCTL::DAGCombineExtBoolTrunc
[oota-llvm.git] / test / DebugInfo / namespace.ll
1 ; REQUIRES: object-emission
2
3 ; RUN: %llc_dwarf -O0 -filetype=obj < %s > %t
4 ; RUN: llvm-dwarfdump %t | FileCheck %s
5 ; CHECK: debug_info contents
6 ; CHECK: [[NS1:0x[0-9a-f]*]]:{{ *}}DW_TAG_namespace
7 ; CHECK-NEXT: DW_AT_name{{.*}} = "A"
8 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F1:".*debug-info-namespace.cpp"]])
9 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(5)
10 ; CHECK-NOT: NULL
11 ; CHECK: [[NS2:0x[0-9a-f]*]]:{{ *}}DW_TAG_namespace
12 ; CHECK-NEXT: DW_AT_name{{.*}} = "B"
13 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2:".*foo.cpp"]])
14 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(1)
15 ; CHECK-NOT: NULL
16 ; CHECK: [[I:0x[0-9a-f]*]]:{{ *}}DW_TAG_variable
17 ; CHECK-NEXT: DW_AT_name{{.*}}= "i"
18 ; CHECK: [[VAR_FWD:0x[0-9a-f]*]]:{{ *}}DW_TAG_variable
19 ; CHECK-NEXT: DW_AT_name{{.*}}= "var_fwd"
20 ; CHECK-NOT: NULL
21 ; CHECK: [[FOO:0x[0-9a-f]*]]:{{ *}}DW_TAG_structure_type
22 ; CHECK-NEXT: DW_AT_name{{.*}}= "foo"
23 ; CHECK-NEXT: DW_AT_declaration
24 ; CHECK-NOT: NULL
25 ; CHECK: [[BAR:0x[0-9a-f]*]]:{{ *}}DW_TAG_structure_type
26 ; CHECK-NEXT: DW_AT_name{{.*}}= "bar"
27 ; CHECK: [[FUNC1:.*]]: DW_TAG_subprogram
28 ; CHECK-NOT: DW_TAG
29 ; CHECK: DW_AT_MIPS_linkage_name
30 ; CHECK-NOT: DW_TAG
31 ; CHECK: DW_AT_name{{.*}}= "f1"
32 ; CHECK: [[BAZ:0x[0-9a-f]*]]:{{.*}}DW_TAG_typedef
33 ; CHECK-NOT: DW_TAG
34 ; CHECK: DW_AT_name{{.*}}= "baz"
35 ; CHECK: [[VAR_DECL:0x[0-9a-f]*]]:{{.*}}DW_TAG_variable
36 ; CHECK-NOT: DW_TAG
37 ; CHECK: DW_AT_name{{.*}}= "var_decl"
38 ; CHECK-NOT: DW_TAG
39 ; CHECK: DW_AT_declaration
40 ; CHECK: [[FUNC_DECL:0x[0-9a-f]*]]:{{.*}}DW_TAG_subprogram
41 ; CHECK-NOT: DW_TAG
42 ; CHECK: DW_AT_name{{.*}}= "func_decl"
43 ; CHECK-NOT: DW_TAG
44 ; CHECK: DW_AT_declaration
45 ; CHECK: [[FUNC_FWD:0x[0-9a-f]*]]:{{.*}}DW_TAG_subprogram
46 ; CHECK-NOT: DW_TAG
47 ; CHECK: DW_AT_name{{.*}}= "func_fwd"
48 ; CHECK-NOT: DW_AT_declaration
49 ; CHECK: DW_TAG_subprogram
50 ; CHECK-NOT: DW_TAG
51 ; CHECK: DW_AT_MIPS_linkage_name
52 ; CHECK-NOT: DW_TAG
53 ; CHECK: DW_AT_name{{.*}}= "f1"
54 ; CHECK: NULL
55
56 ; CHECK-NOT: NULL
57 ; CHECK: DW_TAG_imported_module
58 ; This is a bug, it should be in F2 but it inherits the file from its
59 ; enclosing scope
60 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F1]])
61 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(15)
62 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS2]]})
63 ; CHECK: NULL
64 ; CHECK-NOT: NULL
65
66 ; CHECK: DW_TAG_imported_module
67 ; Same bug as above, this should be F2, not F1
68 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F1]])
69 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(18)
70 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS1]]})
71 ; CHECK-NOT: NULL
72
73 ; CHECK: DW_TAG_subprogram
74 ; CHECK-NOT: DW_TAG
75 ; CHECK: DW_AT_MIPS_linkage_name
76 ; CHECK-NOT: DW_TAG
77 ; CHECK: DW_AT_name{{.*}}= "func"
78 ; CHECK-NOT: NULL
79 ; CHECK: DW_TAG_imported_module
80 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
81 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(26)
82 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS1]]})
83 ; CHECK-NOT: NULL
84 ; CHECK: DW_TAG_imported_declaration
85 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
86 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(27)
87 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[FOO]]})
88 ; CHECK-NOT: NULL
89 ; CHECK: DW_TAG_imported_declaration
90 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
91 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(28)
92 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[BAR]]})
93 ; CHECK-NOT: NULL
94 ; CHECK: DW_TAG_imported_declaration
95 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
96 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(29)
97 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[FUNC1]]})
98 ; CHECK-NOT: NULL
99 ; CHECK: DW_TAG_imported_declaration
100 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
101 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(30)
102 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[I]]})
103 ; CHECK-NOT: NULL
104 ; CHECK: DW_TAG_imported_declaration
105 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
106 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(31)
107 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[BAZ]]})
108 ; CHECK-NOT: NULL
109 ; CHECK: [[X:0x[0-9a-f]*]]:{{ *}}DW_TAG_imported_declaration
110 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
111 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(32)
112 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS1]]})
113 ; CHECK-NEXT: DW_AT_name{{.*}}"X"
114 ; CHECK-NOT: NULL
115 ; CHECK: DW_TAG_imported_declaration
116 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
117 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(33)
118 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[X]]})
119 ; CHECK-NEXT: DW_AT_name{{.*}}"Y"
120 ; CHECK-NOT: NULL
121 ; CHECK: DW_TAG_imported_declaration
122 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
123 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(34)
124 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[VAR_DECL]]})
125 ; CHECK: DW_TAG_imported_declaration
126 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
127 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(35)
128 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[FUNC_DECL]]})
129 ; CHECK: DW_TAG_imported_declaration
130 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
131 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(36)
132 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[VAR_FWD]]})
133 ; CHECK: DW_TAG_imported_declaration
134 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
135 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(37)
136 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[FUNC_FWD]]})
137
138 ; CHECK: DW_TAG_lexical_block
139 ; CHECK-NOT: NULL
140 ; CHECK: DW_TAG_imported_module
141 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F2]])
142 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(23)
143 ; CHECK-NEXT: DW_AT_import{{.*}}=>
144 ; CHECK: NULL
145 ; CHECK: NULL
146 ; CHECK: NULL
147
148 ; IR generated from clang/test/CodeGenCXX/debug-info-namespace.cpp, file paths
149 ; changed to protect the guilty. The C++ source code is:
150 ; // RUN...
151 ; // RUN...
152 ; // RUN...
153 ;
154 ; namespace A {
155 ; #line 1 "foo.cpp"
156 ; namespace B {
157 ; extern int i;
158 ; int f1() { return 0; }
159 ; void f1(int) { }
160 ; struct foo;
161 ; struct bar { };
162 ; typedef bar baz;
163 ; extern int var_decl;
164 ; void func_decl(void);
165 ; extern int var_fwd;
166 ; void func_fwd(void);
167 ; }
168 ; }
169 ; namespace A {
170 ; using namespace B;
171 ; }
172 ;
173 ; using namespace A;
174 ; namespace E = A;
175 ; int B::i = f1();
176 ; int func(bool b) {
177 ;   if (b) {
178 ;     using namespace A::B;
179 ;     return i;
180 ;   }
181 ;   using namespace A;
182 ;   using B::foo;
183 ;   using B::bar;
184 ;   using B::f1;
185 ;   using B::i;
186 ;   using B::baz;
187 ;   namespace X = A;
188 ;   namespace Y = X;
189 ;   using B::var_decl;
190 ;   using B::func_decl;
191 ;   using B::var_fwd;
192 ;   using B::func_fwd;
193 ;   return i + X::B::i + Y::B::i;
194 ; }
195 ;
196 ; namespace A {
197 ; using B::i;
198 ; namespace B {
199 ; int var_fwd = i;
200 ; }
201 ; }
202 ; void B::func_fwd() {}
203
204 @_ZN1A1B1iE = global i32 0, align 4
205 @_ZN1A1B7var_fwdE = global i32 0, align 4
206 @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__sub_I_debug_info_namespace.cpp, i8* null }]
207
208 ; Function Attrs: nounwind ssp uwtable
209 define i32 @_ZN1A1B2f1Ev() #0 {
210 entry:
211   ret i32 0, !dbg !60
212 }
213
214 ; Function Attrs: nounwind ssp uwtable
215 define void @_ZN1A1B2f1Ei(i32) #0 {
216 entry:
217   %.addr = alloca i32, align 4
218   store i32 %0, i32* %.addr, align 4
219   call void @llvm.dbg.declare(metadata !{i32* %.addr}, metadata !61, metadata !62), !dbg !63
220   ret void, !dbg !64
221 }
222
223 ; Function Attrs: nounwind readnone
224 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
225
226 define internal void @__cxx_global_var_init() section "__TEXT,__StaticInit,regular,pure_instructions" {
227 entry:
228   %call = call i32 @_ZN1A1B2f1Ev(), !dbg !65
229   store i32 %call, i32* @_ZN1A1B1iE, align 4, !dbg !65
230   ret void, !dbg !65
231 }
232
233 ; Function Attrs: nounwind ssp uwtable
234 define i32 @_Z4funcb(i1 zeroext %b) #0 {
235 entry:
236   %retval = alloca i32, align 4
237   %b.addr = alloca i8, align 1
238   %frombool = zext i1 %b to i8
239   store i8 %frombool, i8* %b.addr, align 1
240   call void @llvm.dbg.declare(metadata !{i8* %b.addr}, metadata !66, metadata !62), !dbg !67
241   %0 = load i8* %b.addr, align 1, !dbg !68
242   %tobool = trunc i8 %0 to i1, !dbg !68
243   br i1 %tobool, label %if.then, label %if.end, !dbg !68
244
245 if.then:                                          ; preds = %entry
246   %1 = load i32* @_ZN1A1B1iE, align 4, !dbg !69
247   store i32 %1, i32* %retval, !dbg !69
248   br label %return, !dbg !69
249
250 if.end:                                           ; preds = %entry
251   %2 = load i32* @_ZN1A1B1iE, align 4, !dbg !70
252   %3 = load i32* @_ZN1A1B1iE, align 4, !dbg !70
253   %add = add nsw i32 %2, %3, !dbg !70
254   %4 = load i32* @_ZN1A1B1iE, align 4, !dbg !70
255   %add1 = add nsw i32 %add, %4, !dbg !70
256   store i32 %add1, i32* %retval, !dbg !70
257   br label %return, !dbg !70
258
259 return:                                           ; preds = %if.end, %if.then
260   %5 = load i32* %retval, !dbg !71
261   ret i32 %5, !dbg !71
262 }
263
264 define internal void @__cxx_global_var_init1() section "__TEXT,__StaticInit,regular,pure_instructions" {
265 entry:
266   %0 = load i32* @_ZN1A1B1iE, align 4, !dbg !72
267   store i32 %0, i32* @_ZN1A1B7var_fwdE, align 4, !dbg !72
268   ret void, !dbg !72
269 }
270
271 ; Function Attrs: nounwind ssp uwtable
272 define void @_ZN1A1B8func_fwdEv() #0 {
273 entry:
274   ret void, !dbg !73
275 }
276
277 define internal void @_GLOBAL__sub_I_debug_info_namespace.cpp() section "__TEXT,__StaticInit,regular,pure_instructions" {
278 entry:
279   call void @__cxx_global_var_init(), !dbg !74
280   call void @__cxx_global_var_init1(), !dbg !74
281   ret void, !dbg !74
282 }
283
284 attributes #0 = { nounwind ssp uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
285 attributes #1 = { nounwind readnone }
286
287 !llvm.dbg.cu = !{!0}
288 !llvm.module.flags = !{!57, !58}
289 !llvm.ident = !{!59}
290
291 !0 = metadata !{metadata !"0x11\004\00clang version 3.6.0 \000\00\000\00\001", metadata !1, metadata !2, metadata !3, metadata !9, metadata !30, metadata !33} ; [ DW_TAG_compile_unit ] [/tmp/debug-info-namespace.cpp] [DW_LANG_C_plus_plus]
292 !1 = metadata !{metadata !"debug-info-namespace.cpp", metadata !"/tmp"}
293 !2 = metadata !{}
294 !3 = metadata !{metadata !4, metadata !8}
295 !4 = metadata !{metadata !"0x13\00foo\005\000\000\000\004\000", metadata !5, metadata !6, null, null, null, null, metadata !"_ZTSN1A1B3fooE"} ; [ DW_TAG_structure_type ] [foo] [line 5, size 0, align 0, offset 0] [decl] [from ]
296 !5 = metadata !{metadata !"foo.cpp", metadata !"/tmp"}
297 !6 = metadata !{metadata !"0x39\00B\001", metadata !5, metadata !7} ; [ DW_TAG_namespace ] [B] [line 1]
298 !7 = metadata !{metadata !"0x39\00A\005", metadata !1, null} ; [ DW_TAG_namespace ] [A] [line 5]
299 !8 = metadata !{metadata !"0x13\00bar\006\008\008\000\000\000", metadata !5, metadata !6, null, metadata !2, null, null, metadata !"_ZTSN1A1B3barE"} ; [ DW_TAG_structure_type ] [bar] [line 6, size 8, align 8, offset 0] [def] [from ]
300 !9 = metadata !{metadata !10, metadata !14, metadata !17, metadata !21, metadata !25, metadata !26, metadata !27}
301 !10 = metadata !{metadata !"0x2e\00f1\00f1\00_ZN1A1B2f1Ev\003\000\001\000\000\00256\000\003", metadata !5, metadata !6, metadata !11, null, i32 ()* @_ZN1A1B2f1Ev, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 3] [def] [f1]
302 !11 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", null, null, null, metadata !12, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
303 !12 = metadata !{metadata !13}
304 !13 = metadata !{metadata !"0x24\00int\000\0032\0032\000\000\005", null, null} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]
305 !14 = metadata !{metadata !"0x2e\00f1\00f1\00_ZN1A1B2f1Ei\004\000\001\000\000\00256\000\004", metadata !5, metadata !6, metadata !15, null, void (i32)* @_ZN1A1B2f1Ei, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 4] [def] [f1]
306 !15 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", null, null, null, metadata !16, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
307 !16 = metadata !{null, metadata !13}
308 !17 = metadata !{metadata !"0x2e\00__cxx_global_var_init\00__cxx_global_var_init\00\0020\001\001\000\000\00256\000\0020", metadata !5, metadata !18, metadata !19, null, void ()* @__cxx_global_var_init, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 20] [local] [def] [__cxx_global_var_init]
309 !18 = metadata !{metadata !"0x29", metadata !5}   ; [ DW_TAG_file_type ] [/tmp/foo.cpp]
310 !19 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", null, null, null, metadata !20, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
311 !20 = metadata !{null}
312 !21 = metadata !{metadata !"0x2e\00func\00func\00_Z4funcb\0021\000\001\000\000\00256\000\0021", metadata !5, metadata !18, metadata !22, null, i32 (i1)* @_Z4funcb, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 21] [def] [func]
313 !22 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", null, null, null, metadata !23, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
314 !23 = metadata !{metadata !13, metadata !24}
315 !24 = metadata !{metadata !"0x24\00bool\000\008\008\000\000\002", null, null} ; [ DW_TAG_base_type ] [bool] [line 0, size 8, align 8, offset 0, enc DW_ATE_boolean]
316 !25 = metadata !{metadata !"0x2e\00__cxx_global_var_init1\00__cxx_global_var_init1\00\0044\001\001\000\000\00256\000\0044", metadata !5, metadata !18, metadata !19, null, void ()* @__cxx_global_var_init1, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 44] [local] [def] [__cxx_global_var_init1]
317 !26 = metadata !{metadata !"0x2e\00func_fwd\00func_fwd\00_ZN1A1B8func_fwdEv\0047\000\001\000\000\00256\000\0047", metadata !5, metadata !6, metadata !19, null, void ()* @_ZN1A1B8func_fwdEv, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 47] [def] [func_fwd]
318 !27 = metadata !{metadata !"0x2e\00\00\00_GLOBAL__sub_I_debug_info_namespace.cpp\000\001\001\000\000\0064\000\000", metadata !1, metadata !28, metadata !29, null, void ()* @_GLOBAL__sub_I_debug_info_namespace.cpp, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 0] [local] [def]
319 !28 = metadata !{metadata !"0x29", metadata !1}   ; [ DW_TAG_file_type ] [/tmp/debug-info-namespace.cpp]
320 !29 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", null, null, null, metadata !2, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
321 !30 = metadata !{metadata !31, metadata !32}
322 !31 = metadata !{metadata !"0x34\00i\00i\00_ZN1A1B1iE\0020\000\001", metadata !6, metadata !18, metadata !13, i32* @_ZN1A1B1iE, null} ; [ DW_TAG_variable ] [i] [line 20] [def]
323 !32 = metadata !{metadata !"0x34\00var_fwd\00var_fwd\00_ZN1A1B7var_fwdE\0044\000\001", metadata !6, metadata !18, metadata !13, i32* @_ZN1A1B7var_fwdE, null} ; [ DW_TAG_variable ] [var_fwd] [line 44] [def]
324 !33 = metadata !{metadata !34, metadata !35, metadata !36, metadata !37, metadata !40, metadata !41, metadata !42, metadata !43, metadata !44, metadata !45, metadata !47, metadata !48, metadata !49, metadata !51, metadata !54, metadata !55, metadata !56}
325 !34 = metadata !{metadata !"0x3a\0015\00", metadata !7, metadata !6} ; [ DW_TAG_imported_module ]
326 !35 = metadata !{metadata !"0x3a\0018\00", metadata !0, metadata !7} ; [ DW_TAG_imported_module ]
327 !36 = metadata !{metadata !"0x8\0019\00E", metadata !0, metadata !7} ; [ DW_TAG_imported_declaration ]
328 !37 = metadata !{metadata !"0x3a\0023\00", metadata !38, metadata !6} ; [ DW_TAG_imported_module ]
329 !38 = metadata !{metadata !"0xb\0022\0010\001", metadata !5, metadata !39} ; [ DW_TAG_lexical_block ] [/tmp/foo.cpp]
330 !39 = metadata !{metadata !"0xb\0022\007\000", metadata !5, metadata !21} ; [ DW_TAG_lexical_block ] [/tmp/foo.cpp]
331 !40 = metadata !{metadata !"0x3a\0026\00", metadata !21, metadata !7} ; [ DW_TAG_imported_module ]
332 !41 = metadata !{metadata !"0x8\0027\00", metadata !21, metadata !"_ZTSN1A1B3fooE"} ; [ DW_TAG_imported_declaration ]
333 !42 = metadata !{metadata !"0x8\0028\00", metadata !21, metadata !"_ZTSN1A1B3barE"} ; [ DW_TAG_imported_declaration ]
334 !43 = metadata !{metadata !"0x8\0029\00", metadata !21, metadata !14} ; [ DW_TAG_imported_declaration ]
335 !44 = metadata !{metadata !"0x8\0030\00", metadata !21, metadata !31} ; [ DW_TAG_imported_declaration ]
336 !45 = metadata !{metadata !"0x8\0031\00", metadata !21, metadata !46} ; [ DW_TAG_imported_declaration ]
337 !46 = metadata !{metadata !"0x16\00baz\007\000\000\000\000", metadata !5, metadata !6, metadata !"_ZTSN1A1B3barE"} ; [ DW_TAG_typedef ] [baz] [line 7, size 0, align 0, offset 0] [from _ZTSN1A1B3barE]
338 !47 = metadata !{metadata !"0x8\0032\00X", metadata !21, metadata !7} ; [ DW_TAG_imported_declaration ]
339 !48 = metadata !{metadata !"0x8\0033\00Y", metadata !21, metadata !47} ; [ DW_TAG_imported_declaration ]
340 !49 = metadata !{metadata !"0x8\0034\00", metadata !21, metadata !50} ; [ DW_TAG_imported_declaration ]
341 !50 = metadata !{metadata !"0x34\00var_decl\00var_decl\00_ZN1A1B8var_declE\008\000\000", metadata !6, metadata !18, metadata !13, null, null} ; [ DW_TAG_variable ] [var_decl] [line 8]
342 !51 = metadata !{metadata !"0x8\0035\00", metadata !21, metadata !52} ; [ DW_TAG_imported_declaration ]
343 !52 = metadata !{metadata !"0x2e\00func_decl\00func_decl\00_ZN1A1B9func_declEv\009\000\000\000\000\00256\000\000", metadata !5, metadata !6, metadata !19, null, null, null, null, metadata !53} ; [ DW_TAG_subprogram ] [line 9] [scope 0] [func_decl]
344 !53 = metadata !{metadata !"0x24"}
345 !54 = metadata !{metadata !"0x8\0036\00", metadata !21, metadata !32} ; [ DW_TAG_imported_declaration ]
346 !55 = metadata !{metadata !"0x8\0037\00", metadata !21, metadata !26} ; [ DW_TAG_imported_declaration ]
347 !56 = metadata !{metadata !"0x8\0042\00", metadata !7, metadata !31} ; [ DW_TAG_imported_declaration ]
348 !57 = metadata !{i32 2, metadata !"Dwarf Version", i32 2}
349 !58 = metadata !{i32 2, metadata !"Debug Info Version", i32 2}
350 !59 = metadata !{metadata !"clang version 3.6.0 "}
351 !60 = metadata !{i32 3, i32 12, metadata !10, null}
352 !61 = metadata !{metadata !"0x101\00\0016777220\000", metadata !14, metadata !18, metadata !13} ; [ DW_TAG_arg_variable ] [line 4]
353 !62 = metadata !{metadata !"0x102"}               ; [ DW_TAG_expression ]
354 !63 = metadata !{i32 4, i32 12, metadata !14, null}
355 !64 = metadata !{i32 4, i32 16, metadata !14, null}
356 !65 = metadata !{i32 20, i32 12, metadata !17, null}
357 !66 = metadata !{metadata !"0x101\00b\0016777237\000", metadata !21, metadata !18, metadata !24} ; [ DW_TAG_arg_variable ] [b] [line 21]
358 !67 = metadata !{i32 21, i32 15, metadata !21, null}
359 !68 = metadata !{i32 22, i32 7, metadata !21, null}
360 !69 = metadata !{i32 24, i32 5, metadata !38, null}
361 !70 = metadata !{i32 38, i32 3, metadata !21, null}
362 !71 = metadata !{i32 39, i32 1, metadata !21, null}
363 !72 = metadata !{i32 44, i32 15, metadata !25, null}
364 !73 = metadata !{i32 47, i32 21, metadata !26, null}
365 !74 = metadata !{i32 0, i32 0, metadata !75, null}
366 !75 = metadata !{metadata !"0xb\000", metadata !5, metadata !27} ; [ DW_TAG_lexical_block ] [/tmp/foo.cpp]