blob: 2256b3e212a74583779ef5f0bcd6c05eb94fd0e0 [file] [log] [blame]
Eric Christopher67646432013-07-26 17:02:41 +00001; REQUIRES: object-emission
2
David Blaikie2da282b2014-05-21 23:27:41 +00003; RUN: llc %s -o %t -filetype=obj -O0 -generate-type-units -mtriple=x86_64-unknown-linux-gnu
David Blaikie15ed5eb2014-01-10 01:38:41 +00004; RUN: llvm-dwarfdump %t | FileCheck --check-prefix=CHECK --check-prefix=SINGLE %s
5
David Blaikie2da282b2014-05-21 23:27:41 +00006; RUN: llc %s -split-dwarf=Enable -o %t -filetype=obj -O0 -generate-type-units -mtriple=x86_64-unknown-linux-gnu
David Blaikie15ed5eb2014-01-10 01:38:41 +00007; RUN: llvm-dwarfdump %t | FileCheck --check-prefix=CHECK --check-prefix=FISSION %s
David Blaikie8a263cb2013-11-26 00:22:37 +00008
David Blaikie5b858582014-02-12 00:40:47 +00009; Generated from bar.cpp:
10
11; #line 1 "bar.h"
Eric Christopher67646432013-07-26 17:02:41 +000012; struct bar {};
David Blaikie5b858582014-02-12 00:40:47 +000013; #line 2 "bar.cpp"
Eric Christophere414ece2013-07-29 23:53:08 +000014
Eric Christopher67646432013-07-26 17:02:41 +000015; struct bar b;
Eric Christophere414ece2013-07-29 23:53:08 +000016
Eric Christopher67646432013-07-26 17:02:41 +000017; void foo(void) {
18; struct baz {};
19; baz b;
20; }
Eric Christophere414ece2013-07-29 23:53:08 +000021
Eric Christopher67646432013-07-26 17:02:41 +000022; namespace echidna {
23; namespace capybara {
24; namespace mongoose {
25; class fluffy {
26; int a;
27; int b;
28; };
Eric Christophere414ece2013-07-29 23:53:08 +000029
Eric Christopher67646432013-07-26 17:02:41 +000030; fluffy animal;
31; }
32; }
33; }
Eric Christophere414ece2013-07-29 23:53:08 +000034
Eric Christopher67646432013-07-26 17:02:41 +000035; namespace {
Eric Christophere414ece2013-07-29 23:53:08 +000036; struct walrus {
37; walrus() {}
38; };
Eric Christopher67646432013-07-26 17:02:41 +000039; }
Eric Christophere414ece2013-07-29 23:53:08 +000040
Eric Christopher67646432013-07-26 17:02:41 +000041; walrus w;
Eric Christophere414ece2013-07-29 23:53:08 +000042
Eric Christopherd853ea32013-07-29 23:53:05 +000043; struct wombat {
44; struct {
Eric Christophere414ece2013-07-29 23:53:08 +000045; int a;
46; int b;
Eric Christopherd853ea32013-07-29 23:53:05 +000047; } a_b;
48; };
Eric Christophere414ece2013-07-29 23:53:08 +000049
Eric Christopherd853ea32013-07-29 23:53:05 +000050; wombat wom;
Eric Christopher67646432013-07-26 17:02:41 +000051
David Blaikie15ed5eb2014-01-10 01:38:41 +000052; SINGLE-LABEL: .debug_info contents:
53; FISSION-LABEL: .debug_info.dwo contents:
Eric Christopherc4dd56b2013-12-05 01:00:12 +000054; CHECK: Compile Unit: length = [[CU_SIZE:[0-9a-f]+]]
David Blaikiebc563272013-12-13 21:33:40 +000055
David Blaikiec3d9e9e2014-03-06 01:42:00 +000056; CHECK: [[BAR:^0x........]]: DW_TAG_structure_type
David Blaikie322d79b2014-01-31 19:52:26 +000057; CHECK-NEXT: DW_AT_declaration
David Blaikiec3d9e9e2014-03-06 01:42:00 +000058; CHECK-NEXT: DW_AT_signature {{.*}} (0x1d02f3be30cc5688)
59; CHECK: [[FLUFFY:^0x........]]: DW_TAG_class_type
David Blaikie322d79b2014-01-31 19:52:26 +000060; CHECK-NEXT: DW_AT_declaration
David Blaikiec3d9e9e2014-03-06 01:42:00 +000061; CHECK-NEXT: DW_AT_signature {{.*}} (0xb04af47397402e77)
David Blaikiecfb21152014-01-03 18:59:42 +000062
63; Ensure the CU-local type 'walrus' is not placed in a type unit.
David Blaikiec3d9e9e2014-03-06 01:42:00 +000064; CHECK: [[WALRUS:^0x........]]: DW_TAG_structure_type
David Blaikie15ed5eb2014-01-10 01:38:41 +000065; CHECK-NEXT: DW_AT_name{{.*}}"walrus"
David Blaikiecfb21152014-01-03 18:59:42 +000066; CHECK-NEXT: DW_AT_byte_size
67; CHECK-NEXT: DW_AT_decl_file
68; CHECK-NEXT: DW_AT_decl_line
69
David Blaikiec3d9e9e2014-03-06 01:42:00 +000070
71; CHECK: [[WOMBAT:^0x........]]: DW_TAG_structure_type
72; CHECK-NEXT: DW_AT_declaration
73; CHECK-NEXT: DW_AT_signature {{.*}} (0xfd756cee88f8a118)
74
David Blaikie15ed5eb2014-01-10 01:38:41 +000075; FISSION-LABEL: .debug_types contents:
76; FISSION-NOT: type_signature
77; FISSION-LABEL: type_signature = 0x1d02f3be30cc5688
78; FISSION: DW_TAG_type_unit
David Blaikie4a2f95f2014-03-18 01:17:26 +000079; FISSION-NEXT: DW_AT_GNU_dwo_name{{.*}}"bar.dwo"
David Blaikie4a2f95f2014-03-18 01:17:26 +000080; FISSION-NEXT: DW_AT_comp_dir{{.*}}"/tmp/dbginfo"
David Blaikie15ed5eb2014-01-10 01:38:41 +000081; FISSION-NOT: type_signature
82; FISSION-LABEL: type_signature = 0xb04af47397402e77
83; FISSION-NOT: type_signature
84; FISSION-LABEL: type_signature = 0xfd756cee88f8a118
85; FISSION-NOT: type_signature
86; FISSION-LABEL: type_signature = 0xe94f6d3843e62d6b
87
88; SINGLE-LABEL: .debug_types contents:
89; FISSION-LABEL: .debug_types.dwo contents:
David Blaikiebc563272013-12-13 21:33:40 +000090
David Blaikie62017122013-12-13 01:24:54 +000091; Check that we generate a hash for bar and the value.
David Blaikiecfb21152014-01-03 18:59:42 +000092; CHECK-NOT: type_signature
93; CHECK-LABEL: type_signature = 0x1d02f3be30cc5688
David Blaikie62017122013-12-13 01:24:54 +000094; CHECK: DW_TAG_structure_type
David Blaikie15ed5eb2014-01-10 01:38:41 +000095; CHECK-NEXT: DW_AT_name{{.*}}"bar"
David Blaikie409dd9c2013-11-19 23:08:21 +000096
David Blaikiebc563272013-12-13 21:33:40 +000097
David Blaikie409dd9c2013-11-19 23:08:21 +000098; Check that we generate a hash for fluffy and the value.
David Blaikiecfb21152014-01-03 18:59:42 +000099; CHECK-NOT: type_signature
100; CHECK-LABEL: type_signature = 0xb04af47397402e77
101; CHECK-NOT: DW_AT_GNU_odr_signature [DW_FORM_data8] (0x9a0124d5a0c21c52)
Eric Christopher67646432013-07-26 17:02:41 +0000102; CHECK: DW_TAG_namespace
David Blaikie15ed5eb2014-01-10 01:38:41 +0000103; CHECK-NEXT: DW_AT_name{{.*}}"echidna"
Eric Christopher67646432013-07-26 17:02:41 +0000104; CHECK: DW_TAG_namespace
David Blaikie15ed5eb2014-01-10 01:38:41 +0000105; CHECK-NEXT: DW_AT_name{{.*}}"capybara"
Eric Christopher67646432013-07-26 17:02:41 +0000106; CHECK: DW_TAG_namespace
David Blaikie15ed5eb2014-01-10 01:38:41 +0000107; CHECK-NEXT: DW_AT_name{{.*}}"mongoose"
Eric Christopher67646432013-07-26 17:02:41 +0000108; CHECK: DW_TAG_class_type
David Blaikie15ed5eb2014-01-10 01:38:41 +0000109; CHECK-NEXT: DW_AT_name{{.*}}"fluffy"
Eric Christopherd853ea32013-07-29 23:53:05 +0000110
David Blaikie62017122013-12-13 01:24:54 +0000111; Check that we generate a hash for wombat and the value, but not for the
112; anonymous type contained within.
David Blaikiecfb21152014-01-03 18:59:42 +0000113; CHECK-NOT: type_signature
114; CHECK-LABEL: type_signature = 0xfd756cee88f8a118
115; CHECK-NOT: DW_AT_GNU_odr_signature [DW_FORM_data8] (0x685bcc220141e9d7)
David Blaikie62017122013-12-13 01:24:54 +0000116; CHECK: DW_TAG_structure_type
David Blaikie15ed5eb2014-01-10 01:38:41 +0000117; CHECK-NEXT: DW_AT_name{{.*}}"wombat"
David Blaikiebc563272013-12-13 21:33:40 +0000118
David Blaikiecfb21152014-01-03 18:59:42 +0000119; CHECK-NOT: type_signature
120; CHECK-LABEL: type_signature = 0xe94f6d3843e62d6b
David Blaikie62017122013-12-13 01:24:54 +0000121; CHECK: DW_TAG_type_unit
David Blaikie4a2f95f2014-03-18 01:17:26 +0000122; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000)
David Blaikiebc563272013-12-13 21:33:40 +0000123; CHECK-NOT: NULL
David Blaikiebc563272013-12-13 21:33:40 +0000124; CHECK-NOT: DW_AT_GNU_odr_signature
David Blaikie62017122013-12-13 01:24:54 +0000125; CHECK: DW_TAG_structure_type
David Blaikiebc563272013-12-13 21:33:40 +0000126; The signature for the outer 'wombat' type
David Blaikiecfb21152014-01-03 18:59:42 +0000127; CHECK: DW_AT_signature [DW_FORM_ref_sig8] (0xfd756cee88f8a118)
Eric Christopherd853ea32013-07-29 23:53:05 +0000128; CHECK: DW_TAG_structure_type
David Blaikie409dd9c2013-11-19 23:08:21 +0000129; CHECK-NOT: DW_AT_name
130; CHECK-NOT: DW_AT_GNU_odr_signature
Eric Christopherd853ea32013-07-29 23:53:05 +0000131; CHECK: DW_TAG_member
David Blaikie15ed5eb2014-01-10 01:38:41 +0000132; CHECK-NEXT: DW_AT_name{{.*}}"a"
Eric Christopherd853ea32013-07-29 23:53:05 +0000133
David Blaikie9acebfd2014-02-14 19:51:35 +0000134; CHECK-LABEL: .debug_line contents:
135; CHECK: Line table prologue
136; CHECK-NOT: file_names[
David Blaikie4a2f95f2014-03-18 01:17:26 +0000137; SINGLE: file_names{{.*}} bar.h
David Blaikie9acebfd2014-02-14 19:51:35 +0000138; CHECK: file_names{{.*}} bar.cpp
139; CHECK-NOT: file_names[
David Blaikie4a2f95f2014-03-18 01:17:26 +0000140
141; CHECK-LABEL: .debug_line.dwo contents:
142; FISSION: Line table prologue
David Blaikie8287aff2014-03-18 02:13:23 +0000143; FISSION: opcode_base: 1
144; FISSION-NOT: standard_opcode_lengths
David Blaikie47f4b822014-03-19 00:11:28 +0000145; FISSION-NOT: include_directories
David Blaikie4a2f95f2014-03-18 01:17:26 +0000146; FISSION-NOT: file_names[
147; FISSION: file_names{{.*}} bar.h
148; FISSION: file_names{{.*}} bar.cpp
149; FISSION-NOT: file_names[
150
David Blaikie9acebfd2014-02-14 19:51:35 +0000151; CHECK-LABEL: .debug_str contents:
152
David Blaikiefd1eff52013-11-26 19:14:34 +0000153; Use the unit size as a rough hash/identifier for the unit we're dealing with
154; it happens to be unambiguous at the moment, but it's hardly ideal.
David Blaikie8a263cb2013-11-26 00:22:37 +0000155; CHECK-LABEL: .debug_pubtypes contents:
David Blaikiefd1eff52013-11-26 19:14:34 +0000156; Don't emit pubtype entries for type DIEs in the compile unit that just indirect to a type unit.
Eric Christopherc4dd56b2013-12-05 01:00:12 +0000157; CHECK-NEXT: unit_size = [[CU_SIZE]]
David Blaikiefd1eff52013-11-26 19:14:34 +0000158; CHECK-NEXT: Offset Name
David Blaikie553eb4a2014-06-06 22:16:56 +0000159; CHECK-DAG: [[BAR]] "bar"
160; CHECK-DAG: [[WALRUS]] "(anonymous namespace)::walrus"
161; CHECK-DAG: [[WOMBAT]] "wombat"
162; CHECK-DAG: [[FLUFFY]] "echidna::capybara::mongoose::fluffy"
David Blaikie8a263cb2013-11-26 00:22:37 +0000163
Eric Christopher67646432013-07-26 17:02:41 +0000164%struct.bar = type { i8 }
165%"class.echidna::capybara::mongoose::fluffy" = type { i32, i32 }
Eric Christophere414ece2013-07-29 23:53:08 +0000166%"struct.<anonymous namespace>::walrus" = type { i8 }
Eric Christopherd853ea32013-07-29 23:53:05 +0000167%struct.wombat = type { %struct.anon }
168%struct.anon = type { i32, i32 }
Eric Christopher67646432013-07-26 17:02:41 +0000169%struct.baz = type { i8 }
170
171@b = global %struct.bar zeroinitializer, align 1
172@_ZN7echidna8capybara8mongoose6animalE = global %"class.echidna::capybara::mongoose::fluffy" zeroinitializer, align 4
Eric Christophere414ece2013-07-29 23:53:08 +0000173@w = internal global %"struct.<anonymous namespace>::walrus" zeroinitializer, align 1
Eric Christopherd853ea32013-07-29 23:53:05 +0000174@wom = global %struct.wombat zeroinitializer, align 4
Eric Christophere414ece2013-07-29 23:53:08 +0000175@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }]
176
Eric Christopher67646432013-07-26 17:02:41 +0000177; Function Attrs: nounwind uwtable
178define void @_Z3foov() #0 {
179entry:
180 %b = alloca %struct.baz, align 1
David Blaikie5b858582014-02-12 00:40:47 +0000181 call void @llvm.dbg.declare(metadata !{%struct.baz* %b}, metadata !46), !dbg !48
182 ret void, !dbg !49
Eric Christopher67646432013-07-26 17:02:41 +0000183}
184
185; Function Attrs: nounwind readnone
186declare void @llvm.dbg.declare(metadata, metadata) #1
187
Eric Christophere414ece2013-07-29 23:53:08 +0000188define internal void @__cxx_global_var_init() section ".text.startup" {
189entry:
David Blaikie5b858582014-02-12 00:40:47 +0000190 call void @_ZN12_GLOBAL__N_16walrusC2Ev(%"struct.<anonymous namespace>::walrus"* @w), !dbg !50
191 ret void, !dbg !50
Eric Christophere414ece2013-07-29 23:53:08 +0000192}
193
194; Function Attrs: nounwind uwtable
195define internal void @_ZN12_GLOBAL__N_16walrusC2Ev(%"struct.<anonymous namespace>::walrus"* %this) unnamed_addr #0 align 2 {
196entry:
197 %this.addr = alloca %"struct.<anonymous namespace>::walrus"*, align 8
198 store %"struct.<anonymous namespace>::walrus"* %this, %"struct.<anonymous namespace>::walrus"** %this.addr, align 8
David Blaikie5b858582014-02-12 00:40:47 +0000199 call void @llvm.dbg.declare(metadata !{%"struct.<anonymous namespace>::walrus"** %this.addr}, metadata !51), !dbg !53
Eric Christophere414ece2013-07-29 23:53:08 +0000200 %this1 = load %"struct.<anonymous namespace>::walrus"** %this.addr
David Blaikie5b858582014-02-12 00:40:47 +0000201 ret void, !dbg !54
Eric Christophere414ece2013-07-29 23:53:08 +0000202}
203
204define internal void @_GLOBAL__I_a() section ".text.startup" {
205entry:
David Blaikie5b858582014-02-12 00:40:47 +0000206 call void @__cxx_global_var_init(), !dbg !55
207 ret void, !dbg !55
Eric Christophere414ece2013-07-29 23:53:08 +0000208}
209
David Blaikieba8125d2013-11-01 22:29:28 +0000210attributes #0 = { nounwind 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" }
Eric Christopher67646432013-07-26 17:02:41 +0000211attributes #1 = { nounwind readnone }
212
213!llvm.dbg.cu = !{!0}
David Blaikie5b858582014-02-12 00:40:47 +0000214!llvm.module.flags = !{!43, !44}
215!llvm.ident = !{!45}
Eric Christopher67646432013-07-26 17:02:41 +0000216
David Blaikie5b858582014-02-12 00:40:47 +0000217!0 = metadata !{i32 786449, metadata !1, i32 4, metadata !"clang version 3.5 ", i1 false, metadata !"", i32 0, metadata !2, metadata !3, metadata !21, metadata !38, metadata !2, metadata !"bar.dwo"} ; [ DW_TAG_compile_unit ] [/tmp/dbginfo/bar.cpp] [DW_LANG_C_plus_plus]
David Blaikieba8125d2013-11-01 22:29:28 +0000218!1 = metadata !{metadata !"bar.cpp", metadata !"/tmp/dbginfo"}
David Blaikie5e390e42014-02-04 01:23:52 +0000219!2 = metadata !{}
David Blaikie5b858582014-02-12 00:40:47 +0000220!3 = metadata !{metadata !4, metadata !6, metadata !14, metadata !17}
221!4 = metadata !{i32 786451, metadata !5, null, metadata !"bar", i32 1, i64 8, i64 8, i32 0, i32 0, null, metadata !2, i32 0, null, null, metadata !"_ZTS3bar"} ; [ DW_TAG_structure_type ] [bar] [line 1, size 8, align 8, offset 0] [def] [from ]
222!5 = metadata !{metadata !"bar.h", metadata !"/tmp/dbginfo"}
223!6 = metadata !{i32 786434, metadata !1, metadata !7, metadata !"fluffy", i32 13, i64 64, i64 32, i32 0, i32 0, null, metadata !10, i32 0, null, null, metadata !"_ZTSN7echidna8capybara8mongoose6fluffyE"} ; [ DW_TAG_class_type ] [fluffy] [line 13, size 64, align 32, offset 0] [def] [from ]
224!7 = metadata !{i32 786489, metadata !1, metadata !8, metadata !"mongoose", i32 12} ; [ DW_TAG_namespace ] [mongoose] [line 12]
225!8 = metadata !{i32 786489, metadata !1, metadata !9, metadata !"capybara", i32 11} ; [ DW_TAG_namespace ] [capybara] [line 11]
226!9 = metadata !{i32 786489, metadata !1, null, metadata !"echidna", i32 10} ; [ DW_TAG_namespace ] [echidna] [line 10]
227!10 = metadata !{metadata !11, metadata !13}
228!11 = metadata !{i32 786445, metadata !1, metadata !"_ZTSN7echidna8capybara8mongoose6fluffyE", metadata !"a", i32 14, i64 32, i64 32, i64 0, i32 1, metadata !12} ; [ DW_TAG_member ] [a] [line 14, size 32, align 32, offset 0] [private] [from int]
229!12 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]
230!13 = metadata !{i32 786445, metadata !1, metadata !"_ZTSN7echidna8capybara8mongoose6fluffyE", metadata !"b", i32 15, i64 32, i64 32, i64 32, i32 1, metadata !12} ; [ DW_TAG_member ] [b] [line 15, size 32, align 32, offset 32] [private] [from int]
231!14 = metadata !{i32 786451, metadata !1, null, metadata !"wombat", i32 31, i64 64, i64 32, i32 0, i32 0, null, metadata !15, i32 0, null, null, metadata !"_ZTS6wombat"} ; [ DW_TAG_structure_type ] [wombat] [line 31, size 64, align 32, offset 0] [def] [from ]
232!15 = metadata !{metadata !16}
233!16 = metadata !{i32 786445, metadata !1, metadata !"_ZTS6wombat", metadata !"a_b", i32 35, i64 64, i64 32, i64 0, i32 0, metadata !"_ZTSN6wombatUt_E"} ; [ DW_TAG_member ] [a_b] [line 35, size 64, align 32, offset 0] [from _ZTSN6wombatUt_E]
234!17 = metadata !{i32 786451, metadata !1, metadata !"_ZTS6wombat", metadata !"", i32 32, i64 64, i64 32, i32 0, i32 0, null, metadata !18, i32 0, null, null, metadata !"_ZTSN6wombatUt_E"} ; [ DW_TAG_structure_type ] [line 32, size 64, align 32, offset 0] [def] [from ]
235!18 = metadata !{metadata !19, metadata !20}
236!19 = metadata !{i32 786445, metadata !1, metadata !"_ZTSN6wombatUt_E", metadata !"a", i32 33, i64 32, i64 32, i64 0, i32 0, metadata !12} ; [ DW_TAG_member ] [a] [line 33, size 32, align 32, offset 0] [from int]
237!20 = metadata !{i32 786445, metadata !1, metadata !"_ZTSN6wombatUt_E", metadata !"b", i32 34, i64 32, i64 32, i64 32, i32 0, metadata !12} ; [ DW_TAG_member ] [b] [line 34, size 32, align 32, offset 32] [from int]
238!21 = metadata !{metadata !22, metadata !26, metadata !27, metadata !36}
239!22 = metadata !{i32 786478, metadata !1, metadata !23, metadata !"foo", metadata !"foo", metadata !"_Z3foov", i32 5, metadata !24, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, void ()* @_Z3foov, null, null, metadata !2, i32 5} ; [ DW_TAG_subprogram ] [line 5] [def] [foo]
240!23 = metadata !{i32 786473, metadata !1} ; [ DW_TAG_file_type ] [/tmp/dbginfo/bar.cpp]
241!24 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !25, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
242!25 = metadata !{null}
243!26 = metadata !{i32 786478, metadata !1, metadata !23, metadata !"__cxx_global_var_init", metadata !"__cxx_global_var_init", metadata !"", i32 29, metadata !24, i1 true, i1 true, i32 0, i32 0, null, i32 256, i1 false, void ()* @__cxx_global_var_init, null, null, metadata !2, i32 29} ; [ DW_TAG_subprogram ] [line 29] [local] [def] [__cxx_global_var_init]
244!27 = metadata !{i32 786478, metadata !1, metadata !28, metadata !"walrus", metadata !"walrus", metadata !"_ZN12_GLOBAL__N_16walrusC2Ev", i32 25, metadata !32, i1 true, i1 true, i32 0, i32 0, null, i32 256, i1 false, void (%"struct.<anonymous namespace>::walrus"*)* @_ZN12_GLOBAL__N_16walrusC2Ev, null, metadata !31, metadata !2, i32 25} ; [ DW_TAG_subprogram ] [line 25] [local] [def] [walrus]
245!28 = metadata !{i32 786451, metadata !1, metadata !29, metadata !"walrus", i32 24, i64 8, i64 8, i32 0, i32 0, null, metadata !30, i32 0, null, null, null} ; [ DW_TAG_structure_type ] [walrus] [line 24, size 8, align 8, offset 0] [def] [from ]
246!29 = metadata !{i32 786489, metadata !1, null, metadata !"", i32 23} ; [ DW_TAG_namespace ] [line 23]
247!30 = metadata !{metadata !31}
248!31 = metadata !{i32 786478, metadata !1, metadata !28, metadata !"walrus", metadata !"walrus", metadata !"", i32 25, metadata !32, i1 false, i1 false, i32 0, i32 0, null, i32 256, i1 false, null, null, i32 0, metadata !35, i32 25} ; [ DW_TAG_subprogram ] [line 25] [walrus]
249!32 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !33, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
250!33 = metadata !{null, metadata !34}
251!34 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 1088, metadata !28} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [artificial] [from walrus]
252!35 = metadata !{i32 786468}
253!36 = metadata !{i32 786478, metadata !1, metadata !23, metadata !"", metadata !"", metadata !"_GLOBAL__I_a", i32 25, metadata !37, i1 true, i1 true, i32 0, i32 0, null, i32 64, i1 false, void ()* @_GLOBAL__I_a, null, null, metadata !2, i32 25} ; [ DW_TAG_subprogram ] [line 25] [local] [def]
254!37 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !2, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
255!38 = metadata !{metadata !39, metadata !40, metadata !41, metadata !42}
256!39 = metadata !{i32 786484, i32 0, null, metadata !"b", metadata !"b", metadata !"", metadata !23, i32 3, metadata !4, i32 0, i32 1, %struct.bar* @b, null} ; [ DW_TAG_variable ] [b] [line 3] [def]
257!40 = metadata !{i32 786484, i32 0, metadata !7, metadata !"animal", metadata !"animal", metadata !"_ZN7echidna8capybara8mongoose6animalE", metadata !23, i32 18, metadata !6, i32 0, i32 1, %"class.echidna::capybara::mongoose::fluffy"* @_ZN7echidna8capybara8mongoose6animalE, null} ; [ DW_TAG_variable ] [animal] [line 18] [def]
258!41 = metadata !{i32 786484, i32 0, null, metadata !"w", metadata !"w", metadata !"", metadata !23, i32 29, metadata !28, i32 1, i32 1, %"struct.<anonymous namespace>::walrus"* @w, null} ; [ DW_TAG_variable ] [w] [line 29] [local] [def]
259!42 = metadata !{i32 786484, i32 0, null, metadata !"wom", metadata !"wom", metadata !"", metadata !23, i32 38, metadata !14, i32 0, i32 1, %struct.wombat* @wom, null} ; [ DW_TAG_variable ] [wom] [line 38] [def]
260!43 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
261!44 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
262!45 = metadata !{metadata !"clang version 3.5 "}
263!46 = metadata !{i32 786688, metadata !22, metadata !"b", metadata !23, i32 7, metadata !47, i32 0, i32 0} ; [ DW_TAG_auto_variable ] [b] [line 7]
264!47 = metadata !{i32 786451, metadata !1, metadata !22, metadata !"baz", i32 6, i64 8, i64 8, i32 0, i32 0, null, metadata !2, i32 0, null, null, null} ; [ DW_TAG_structure_type ] [baz] [line 6, size 8, align 8, offset 0] [def] [from ]
265!48 = metadata !{i32 7, i32 0, metadata !22, null}
266!49 = metadata !{i32 8, i32 0, metadata !22, null} ; [ DW_TAG_imported_declaration ]
267!50 = metadata !{i32 29, i32 0, metadata !26, null}
268!51 = metadata !{i32 786689, metadata !27, metadata !"this", null, i32 16777216, metadata !52, i32 1088, i32 0} ; [ DW_TAG_arg_variable ] [this] [line 0]
269!52 = metadata !{i32 786447, null, null, metadata !"", i32 0, i64 64, i64 64, i64 0, i32 0, metadata !28} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from walrus]
270!53 = metadata !{i32 0, i32 0, metadata !27, null}
271!54 = metadata !{i32 25, i32 0, metadata !27, null}
272!55 = metadata !{i32 25, i32 0, metadata !36, null}