1 ; REQUIRES: object-emission
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)
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)
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"
21 ; CHECK: [[FOO:0x[0-9a-f]*]]:{{ *}}DW_TAG_structure_type
22 ; CHECK-NEXT: DW_AT_name{{.*}}= "foo"
23 ; CHECK-NEXT: DW_AT_declaration
25 ; CHECK: [[BAR:0x[0-9a-f]*]]:{{ *}}DW_TAG_structure_type
26 ; CHECK-NEXT: DW_AT_name{{.*}}= "bar"
27 ; CHECK: [[FUNC1:.*]]: DW_TAG_subprogram
29 ; CHECK: DW_AT_MIPS_linkage_name
31 ; CHECK: DW_AT_name{{.*}}= "f1"
32 ; CHECK: [[BAZ:0x[0-9a-f]*]]:{{.*}}DW_TAG_typedef
34 ; CHECK: DW_AT_name{{.*}}= "baz"
35 ; CHECK: [[VAR_DECL:0x[0-9a-f]*]]:{{.*}}DW_TAG_variable
37 ; CHECK: DW_AT_name{{.*}}= "var_decl"
39 ; CHECK: DW_AT_declaration
40 ; CHECK: [[FUNC_DECL:0x[0-9a-f]*]]:{{.*}}DW_TAG_subprogram
42 ; CHECK: DW_AT_name{{.*}}= "func_decl"
44 ; CHECK: DW_AT_declaration
45 ; CHECK: [[FUNC_FWD:0x[0-9a-f]*]]:{{.*}}DW_TAG_subprogram
47 ; CHECK: DW_AT_name{{.*}}= "func_fwd"
48 ; CHECK-NOT: DW_AT_declaration
49 ; CHECK: DW_TAG_subprogram
51 ; CHECK: DW_AT_MIPS_linkage_name
53 ; CHECK: DW_AT_name{{.*}}= "f1"
57 ; CHECK: DW_TAG_imported_module
58 ; This is a bug, it should be in F2 but it inherits the file from its
60 ; CHECK-NEXT: DW_AT_decl_file{{.*}}([[F1]])
61 ; CHECK-NEXT: DW_AT_decl_line{{.*}}(15)
62 ; CHECK-NEXT: DW_AT_import{{.*}}=> {[[NS2]]})
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]]})
73 ; CHECK: DW_TAG_subprogram
75 ; CHECK: DW_AT_MIPS_linkage_name
77 ; CHECK: DW_AT_name{{.*}}= "func"
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]]})
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]]})
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]]})
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]]})
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]]})
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]]})
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"
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"
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]]})
138 ; CHECK: DW_TAG_lexical_block
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{{.*}}=>
148 ; IR generated from clang/test/CodeGenCXX/debug-info-namespace.cpp, file paths
149 ; changed to protect the guilty. The C++ source code is:
158 ; int f1() { return 0; }
163 ; extern int var_decl;
164 ; void func_decl(void);
165 ; extern int var_fwd;
166 ; void func_fwd(void);
178 ; using namespace A::B;
190 ; using B::func_decl;
193 ; return i + X::B::i + Y::B::i;
202 ; void B::func_fwd() {}
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 }]
208 ; Function Attrs: nounwind ssp uwtable
209 define i32 @_ZN1A1B2f1Ev() #0 {
214 ; Function Attrs: nounwind ssp uwtable
215 define void @_ZN1A1B2f1Ei(i32) #0 {
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
223 ; Function Attrs: nounwind readnone
224 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
226 define internal void @__cxx_global_var_init() section "__TEXT,__StaticInit,regular,pure_instructions" {
228 %call = call i32 @_ZN1A1B2f1Ev(), !dbg !65
229 store i32 %call, i32* @_ZN1A1B1iE, align 4, !dbg !65
233 ; Function Attrs: nounwind ssp uwtable
234 define i32 @_Z4funcb(i1 zeroext %b) #0 {
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
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
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
259 return: ; preds = %if.end, %if.then
260 %5 = load i32* %retval, !dbg !71
264 define internal void @__cxx_global_var_init1() section "__TEXT,__StaticInit,regular,pure_instructions" {
266 %0 = load i32* @_ZN1A1B1iE, align 4, !dbg !72
267 store i32 %0, i32* @_ZN1A1B7var_fwdE, align 4, !dbg !72
271 ; Function Attrs: nounwind ssp uwtable
272 define void @_ZN1A1B8func_fwdEv() #0 {
277 define internal void @_GLOBAL__sub_I_debug_info_namespace.cpp() section "__TEXT,__StaticInit,regular,pure_instructions" {
279 call void @__cxx_global_var_init(), !dbg !74
280 call void @__cxx_global_var_init1(), !dbg !74
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 }
288 !llvm.module.flags = !{!57, !58}
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"}
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]