blob: 87914864bd856e5de0dd5d0d8a1ab6c06c2d0f47 [file] [log] [blame]
Eric Christopher67646432013-07-26 17:02:41 +00001; REQUIRES: object-emission
2
David Blaikie29459ae2014-07-25 17:11:58 +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
David Blaikiec13bc972014-08-27 05:04:14 +00005; RUN: llvm-readobj -s -t %t | FileCheck --check-prefix=OBJ_SINGLE %s
David Blaikie15ed5eb2014-01-10 01:38:41 +00006
David Blaikie29459ae2014-07-25 17:11:58 +00007; 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 +00008; RUN: llvm-dwarfdump %t | FileCheck --check-prefix=CHECK --check-prefix=FISSION %s
David Blaikiec13bc972014-08-27 05:04:14 +00009; RUN: llvm-readobj -s -t %t | FileCheck --check-prefix=OBJ_FISSION %s
David Blaikie8a263cb2013-11-26 00:22:37 +000010
David Blaikie5b858582014-02-12 00:40:47 +000011; Generated from bar.cpp:
12
13; #line 1 "bar.h"
Eric Christopher67646432013-07-26 17:02:41 +000014; struct bar {};
David Blaikie5b858582014-02-12 00:40:47 +000015; #line 2 "bar.cpp"
Eric Christophere414ece2013-07-29 23:53:08 +000016
Eric Christopher67646432013-07-26 17:02:41 +000017; struct bar b;
Eric Christophere414ece2013-07-29 23:53:08 +000018
Eric Christopher67646432013-07-26 17:02:41 +000019; void foo(void) {
20; struct baz {};
21; baz b;
22; }
Eric Christophere414ece2013-07-29 23:53:08 +000023
Eric Christopher67646432013-07-26 17:02:41 +000024; namespace echidna {
25; namespace capybara {
26; namespace mongoose {
27; class fluffy {
28; int a;
29; int b;
30; };
Eric Christophere414ece2013-07-29 23:53:08 +000031
Eric Christopher67646432013-07-26 17:02:41 +000032; fluffy animal;
33; }
34; }
35; }
Eric Christophere414ece2013-07-29 23:53:08 +000036
Eric Christopher67646432013-07-26 17:02:41 +000037; namespace {
Eric Christophere414ece2013-07-29 23:53:08 +000038; struct walrus {
39; walrus() {}
40; };
Eric Christopher67646432013-07-26 17:02:41 +000041; }
Eric Christophere414ece2013-07-29 23:53:08 +000042
Eric Christopher67646432013-07-26 17:02:41 +000043; walrus w;
Eric Christophere414ece2013-07-29 23:53:08 +000044
Eric Christopherd853ea32013-07-29 23:53:05 +000045; struct wombat {
46; struct {
Eric Christophere414ece2013-07-29 23:53:08 +000047; int a;
48; int b;
Eric Christopherd853ea32013-07-29 23:53:05 +000049; } a_b;
50; };
Eric Christophere414ece2013-07-29 23:53:08 +000051
Eric Christopherd853ea32013-07-29 23:53:05 +000052; wombat wom;
Eric Christopher67646432013-07-26 17:02:41 +000053
David Blaikie15ed5eb2014-01-10 01:38:41 +000054; SINGLE-LABEL: .debug_info contents:
55; FISSION-LABEL: .debug_info.dwo contents:
Eric Christopherc4dd56b2013-12-05 01:00:12 +000056; CHECK: Compile Unit: length = [[CU_SIZE:[0-9a-f]+]]
David Blaikiebc563272013-12-13 21:33:40 +000057
David Blaikiec3d9e9e2014-03-06 01:42:00 +000058; CHECK: [[BAR:^0x........]]: DW_TAG_structure_type
David Blaikie322d79b2014-01-31 19:52:26 +000059; CHECK-NEXT: DW_AT_declaration
David Blaikiec3d9e9e2014-03-06 01:42:00 +000060; CHECK-NEXT: DW_AT_signature {{.*}} (0x1d02f3be30cc5688)
61; CHECK: [[FLUFFY:^0x........]]: DW_TAG_class_type
David Blaikie322d79b2014-01-31 19:52:26 +000062; CHECK-NEXT: DW_AT_declaration
David Blaikiec3d9e9e2014-03-06 01:42:00 +000063; CHECK-NEXT: DW_AT_signature {{.*}} (0xb04af47397402e77)
David Blaikiecfb21152014-01-03 18:59:42 +000064
65; Ensure the CU-local type 'walrus' is not placed in a type unit.
David Blaikiec3d9e9e2014-03-06 01:42:00 +000066; CHECK: [[WALRUS:^0x........]]: DW_TAG_structure_type
David Blaikie15ed5eb2014-01-10 01:38:41 +000067; CHECK-NEXT: DW_AT_name{{.*}}"walrus"
David Blaikiecfb21152014-01-03 18:59:42 +000068; CHECK-NEXT: DW_AT_byte_size
69; CHECK-NEXT: DW_AT_decl_file
70; CHECK-NEXT: DW_AT_decl_line
71
David Blaikiec3d9e9e2014-03-06 01:42:00 +000072
73; CHECK: [[WOMBAT:^0x........]]: DW_TAG_structure_type
74; CHECK-NEXT: DW_AT_declaration
75; CHECK-NEXT: DW_AT_signature {{.*}} (0xfd756cee88f8a118)
76
David Blaikie15ed5eb2014-01-10 01:38:41 +000077; SINGLE-LABEL: .debug_types contents:
David Blaikiec13bc972014-08-27 05:04:14 +000078; FISSION-NOT: .debug_types contents:
David Blaikie15ed5eb2014-01-10 01:38:41 +000079; FISSION-LABEL: .debug_types.dwo contents:
David Blaikiebc563272013-12-13 21:33:40 +000080
David Blaikie62017122013-12-13 01:24:54 +000081; Check that we generate a hash for bar and the value.
David Blaikiecfb21152014-01-03 18:59:42 +000082; CHECK-NOT: type_signature
83; CHECK-LABEL: type_signature = 0x1d02f3be30cc5688
David Blaikie62017122013-12-13 01:24:54 +000084; CHECK: DW_TAG_structure_type
David Blaikie15ed5eb2014-01-10 01:38:41 +000085; CHECK-NEXT: DW_AT_name{{.*}}"bar"
David Blaikie409dd9c2013-11-19 23:08:21 +000086
David Blaikiebc563272013-12-13 21:33:40 +000087
David Blaikie409dd9c2013-11-19 23:08:21 +000088; Check that we generate a hash for fluffy and the value.
David Blaikiecfb21152014-01-03 18:59:42 +000089; CHECK-NOT: type_signature
90; CHECK-LABEL: type_signature = 0xb04af47397402e77
91; CHECK-NOT: DW_AT_GNU_odr_signature [DW_FORM_data8] (0x9a0124d5a0c21c52)
Eric Christopher67646432013-07-26 17:02:41 +000092; CHECK: DW_TAG_namespace
David Blaikie15ed5eb2014-01-10 01:38:41 +000093; CHECK-NEXT: DW_AT_name{{.*}}"echidna"
Eric Christopher67646432013-07-26 17:02:41 +000094; CHECK: DW_TAG_namespace
David Blaikie15ed5eb2014-01-10 01:38:41 +000095; CHECK-NEXT: DW_AT_name{{.*}}"capybara"
Eric Christopher67646432013-07-26 17:02:41 +000096; CHECK: DW_TAG_namespace
David Blaikie15ed5eb2014-01-10 01:38:41 +000097; CHECK-NEXT: DW_AT_name{{.*}}"mongoose"
Eric Christopher67646432013-07-26 17:02:41 +000098; CHECK: DW_TAG_class_type
David Blaikie15ed5eb2014-01-10 01:38:41 +000099; CHECK-NEXT: DW_AT_name{{.*}}"fluffy"
Eric Christopherd853ea32013-07-29 23:53:05 +0000100
David Blaikie62017122013-12-13 01:24:54 +0000101; Check that we generate a hash for wombat and the value, but not for the
102; anonymous type contained within.
David Blaikiecfb21152014-01-03 18:59:42 +0000103; CHECK-NOT: type_signature
104; CHECK-LABEL: type_signature = 0xfd756cee88f8a118
105; CHECK-NOT: DW_AT_GNU_odr_signature [DW_FORM_data8] (0x685bcc220141e9d7)
David Blaikie62017122013-12-13 01:24:54 +0000106; CHECK: DW_TAG_structure_type
David Blaikie15ed5eb2014-01-10 01:38:41 +0000107; CHECK-NEXT: DW_AT_name{{.*}}"wombat"
David Blaikiebc563272013-12-13 21:33:40 +0000108
David Blaikiecfb21152014-01-03 18:59:42 +0000109; CHECK-NOT: type_signature
110; CHECK-LABEL: type_signature = 0xe94f6d3843e62d6b
David Blaikie62017122013-12-13 01:24:54 +0000111; CHECK: DW_TAG_type_unit
David Blaikie4a2f95f2014-03-18 01:17:26 +0000112; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000)
David Blaikiebc563272013-12-13 21:33:40 +0000113; CHECK-NOT: NULL
David Blaikiebc563272013-12-13 21:33:40 +0000114; CHECK-NOT: DW_AT_GNU_odr_signature
David Blaikie62017122013-12-13 01:24:54 +0000115; CHECK: DW_TAG_structure_type
David Blaikiebc563272013-12-13 21:33:40 +0000116; The signature for the outer 'wombat' type
David Blaikiecfb21152014-01-03 18:59:42 +0000117; CHECK: DW_AT_signature [DW_FORM_ref_sig8] (0xfd756cee88f8a118)
Eric Christopherd853ea32013-07-29 23:53:05 +0000118; CHECK: DW_TAG_structure_type
David Blaikie409dd9c2013-11-19 23:08:21 +0000119; CHECK-NOT: DW_AT_name
120; CHECK-NOT: DW_AT_GNU_odr_signature
Eric Christopherd853ea32013-07-29 23:53:05 +0000121; CHECK: DW_TAG_member
David Blaikie15ed5eb2014-01-10 01:38:41 +0000122; CHECK-NEXT: DW_AT_name{{.*}}"a"
Eric Christopherd853ea32013-07-29 23:53:05 +0000123
David Blaikie9acebfd2014-02-14 19:51:35 +0000124; CHECK-LABEL: .debug_line contents:
125; CHECK: Line table prologue
126; CHECK-NOT: file_names[
David Blaikie4a2f95f2014-03-18 01:17:26 +0000127; SINGLE: file_names{{.*}} bar.h
David Blaikie9acebfd2014-02-14 19:51:35 +0000128; CHECK: file_names{{.*}} bar.cpp
129; CHECK-NOT: file_names[
David Blaikie4a2f95f2014-03-18 01:17:26 +0000130
131; CHECK-LABEL: .debug_line.dwo contents:
132; FISSION: Line table prologue
David Blaikie8287aff2014-03-18 02:13:23 +0000133; FISSION: opcode_base: 1
134; FISSION-NOT: standard_opcode_lengths
David Blaikie47f4b822014-03-19 00:11:28 +0000135; FISSION-NOT: include_directories
David Blaikie4a2f95f2014-03-18 01:17:26 +0000136; FISSION-NOT: file_names[
137; FISSION: file_names{{.*}} bar.h
138; FISSION: file_names{{.*}} bar.cpp
139; FISSION-NOT: file_names[
140
David Blaikie9acebfd2014-02-14 19:51:35 +0000141; CHECK-LABEL: .debug_str contents:
142
David Blaikiefd1eff52013-11-26 19:14:34 +0000143; Use the unit size as a rough hash/identifier for the unit we're dealing with
144; it happens to be unambiguous at the moment, but it's hardly ideal.
David Blaikie8a263cb2013-11-26 00:22:37 +0000145; CHECK-LABEL: .debug_pubtypes contents:
David Blaikiefd1eff52013-11-26 19:14:34 +0000146; 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 +0000147; CHECK-NEXT: unit_size = [[CU_SIZE]]
David Blaikiefd1eff52013-11-26 19:14:34 +0000148; CHECK-NEXT: Offset Name
David Blaikie553eb4a2014-06-06 22:16:56 +0000149; CHECK-DAG: [[BAR]] "bar"
150; CHECK-DAG: [[WALRUS]] "(anonymous namespace)::walrus"
151; CHECK-DAG: [[WOMBAT]] "wombat"
152; CHECK-DAG: [[FLUFFY]] "echidna::capybara::mongoose::fluffy"
David Blaikie8a263cb2013-11-26 00:22:37 +0000153
David Blaikie29459ae2014-07-25 17:11:58 +0000154; Make sure debug_types are in comdat groups. This could be more rigid to check
155; that they're the right comdat groups (each type in a separate comdat group,
156; etc)
David Blaikiec13bc972014-08-27 05:04:14 +0000157; OBJ_SINGLE: Name: .debug_types (
158; OBJ_SINGLE-NOT: }
159; OBJ_SINGLE: SHF_GROUP
David Blaikie29459ae2014-07-25 17:11:58 +0000160
161; Fission type units don't go in comdat groups, since their linker is debug
162; aware it's handled using the debug info semantics rather than raw ELF object
163; semantics.
164; OBJ_FISSION: Name: .debug_types.dwo (
165; OBJ_FISSION-NOT: SHF_GROUP
166; OBJ_FISSION: }
167
Eric Christopher67646432013-07-26 17:02:41 +0000168%struct.bar = type { i8 }
169%"class.echidna::capybara::mongoose::fluffy" = type { i32, i32 }
Eric Christophere414ece2013-07-29 23:53:08 +0000170%"struct.<anonymous namespace>::walrus" = type { i8 }
Eric Christopherd853ea32013-07-29 23:53:05 +0000171%struct.wombat = type { %struct.anon }
172%struct.anon = type { i32, i32 }
Eric Christopher67646432013-07-26 17:02:41 +0000173%struct.baz = type { i8 }
174
175@b = global %struct.bar zeroinitializer, align 1
176@_ZN7echidna8capybara8mongoose6animalE = global %"class.echidna::capybara::mongoose::fluffy" zeroinitializer, align 4
Eric Christophere414ece2013-07-29 23:53:08 +0000177@w = internal global %"struct.<anonymous namespace>::walrus" zeroinitializer, align 1
Eric Christopherd853ea32013-07-29 23:53:05 +0000178@wom = global %struct.wombat zeroinitializer, align 4
Eric Christophere414ece2013-07-29 23:53:08 +0000179@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }]
180
Eric Christopher67646432013-07-26 17:02:41 +0000181; Function Attrs: nounwind uwtable
182define void @_Z3foov() #0 {
183entry:
184 %b = alloca %struct.baz, align 1
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000185 call void @llvm.dbg.declare(metadata !{%struct.baz* %b}, metadata !46, metadata !{metadata !"0x102"}), !dbg !48
David Blaikie5b858582014-02-12 00:40:47 +0000186 ret void, !dbg !49
Eric Christopher67646432013-07-26 17:02:41 +0000187}
188
189; Function Attrs: nounwind readnone
Adrian Prantl87b7eb92014-10-01 18:55:02 +0000190declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
Eric Christopher67646432013-07-26 17:02:41 +0000191
Eric Christophere414ece2013-07-29 23:53:08 +0000192define internal void @__cxx_global_var_init() section ".text.startup" {
193entry:
David Blaikie5b858582014-02-12 00:40:47 +0000194 call void @_ZN12_GLOBAL__N_16walrusC2Ev(%"struct.<anonymous namespace>::walrus"* @w), !dbg !50
195 ret void, !dbg !50
Eric Christophere414ece2013-07-29 23:53:08 +0000196}
197
198; Function Attrs: nounwind uwtable
199define internal void @_ZN12_GLOBAL__N_16walrusC2Ev(%"struct.<anonymous namespace>::walrus"* %this) unnamed_addr #0 align 2 {
200entry:
201 %this.addr = alloca %"struct.<anonymous namespace>::walrus"*, align 8
202 store %"struct.<anonymous namespace>::walrus"* %this, %"struct.<anonymous namespace>::walrus"** %this.addr, align 8
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000203 call void @llvm.dbg.declare(metadata !{%"struct.<anonymous namespace>::walrus"** %this.addr}, metadata !51, metadata !{metadata !"0x102"}), !dbg !53
Eric Christophere414ece2013-07-29 23:53:08 +0000204 %this1 = load %"struct.<anonymous namespace>::walrus"** %this.addr
David Blaikie5b858582014-02-12 00:40:47 +0000205 ret void, !dbg !54
Eric Christophere414ece2013-07-29 23:53:08 +0000206}
207
208define internal void @_GLOBAL__I_a() section ".text.startup" {
209entry:
David Blaikie5b858582014-02-12 00:40:47 +0000210 call void @__cxx_global_var_init(), !dbg !55
211 ret void, !dbg !55
Eric Christophere414ece2013-07-29 23:53:08 +0000212}
213
David Blaikieba8125d2013-11-01 22:29:28 +0000214attributes #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 +0000215attributes #1 = { nounwind readnone }
216
217!llvm.dbg.cu = !{!0}
David Blaikie5b858582014-02-12 00:40:47 +0000218!llvm.module.flags = !{!43, !44}
219!llvm.ident = !{!45}
Eric Christopher67646432013-07-26 17:02:41 +0000220
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000221!0 = metadata !{metadata !"0x11\004\00clang version 3.5 \000\00\000\00bar.dwo\000", metadata !1, metadata !2, metadata !3, metadata !21, metadata !38, metadata !2} ; [ DW_TAG_compile_unit ] [/tmp/dbginfo/bar.cpp] [DW_LANG_C_plus_plus]
David Blaikieba8125d2013-11-01 22:29:28 +0000222!1 = metadata !{metadata !"bar.cpp", metadata !"/tmp/dbginfo"}
David Blaikie5e390e42014-02-04 01:23:52 +0000223!2 = metadata !{}
David Blaikie5b858582014-02-12 00:40:47 +0000224!3 = metadata !{metadata !4, metadata !6, metadata !14, metadata !17}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000225!4 = metadata !{metadata !"0x13\00bar\001\008\008\000\000\000", metadata !5, null, null, metadata !2, null, null, metadata !"_ZTS3bar"} ; [ DW_TAG_structure_type ] [bar] [line 1, size 8, align 8, offset 0] [def] [from ]
David Blaikie5b858582014-02-12 00:40:47 +0000226!5 = metadata !{metadata !"bar.h", metadata !"/tmp/dbginfo"}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000227!6 = metadata !{metadata !"0x2\00fluffy\0013\0064\0032\000\000\000", metadata !1, metadata !7, null, metadata !10, null, null, metadata !"_ZTSN7echidna8capybara8mongoose6fluffyE"} ; [ DW_TAG_class_type ] [fluffy] [line 13, size 64, align 32, offset 0] [def] [from ]
228!7 = metadata !{metadata !"0x39\00mongoose\0012", metadata !1, metadata !8} ; [ DW_TAG_namespace ] [mongoose] [line 12]
229!8 = metadata !{metadata !"0x39\00capybara\0011", metadata !1, metadata !9} ; [ DW_TAG_namespace ] [capybara] [line 11]
230!9 = metadata !{metadata !"0x39\00echidna\0010", metadata !1, null} ; [ DW_TAG_namespace ] [echidna] [line 10]
David Blaikie5b858582014-02-12 00:40:47 +0000231!10 = metadata !{metadata !11, metadata !13}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000232!11 = metadata !{metadata !"0xd\00a\0014\0032\0032\000\001", metadata !1, metadata !"_ZTSN7echidna8capybara8mongoose6fluffyE", metadata !12} ; [ DW_TAG_member ] [a] [line 14, size 32, align 32, offset 0] [private] [from int]
233!12 = 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]
234!13 = metadata !{metadata !"0xd\00b\0015\0032\0032\0032\001", metadata !1, metadata !"_ZTSN7echidna8capybara8mongoose6fluffyE", metadata !12} ; [ DW_TAG_member ] [b] [line 15, size 32, align 32, offset 32] [private] [from int]
235!14 = metadata !{metadata !"0x13\00wombat\0031\0064\0032\000\000\000", metadata !1, null, null, metadata !15, null, null, metadata !"_ZTS6wombat"} ; [ DW_TAG_structure_type ] [wombat] [line 31, size 64, align 32, offset 0] [def] [from ]
David Blaikie5b858582014-02-12 00:40:47 +0000236!15 = metadata !{metadata !16}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000237!16 = metadata !{metadata !"0xd\00a_b\0035\0064\0032\000\000", metadata !1, metadata !"_ZTS6wombat", metadata !"_ZTSN6wombatUt_E"} ; [ DW_TAG_member ] [a_b] [line 35, size 64, align 32, offset 0] [from _ZTSN6wombatUt_E]
238!17 = metadata !{metadata !"0x13\00\0032\0064\0032\000\000\000", metadata !1, metadata !"_ZTS6wombat", null, metadata !18, null, null, metadata !"_ZTSN6wombatUt_E"} ; [ DW_TAG_structure_type ] [line 32, size 64, align 32, offset 0] [def] [from ]
David Blaikie5b858582014-02-12 00:40:47 +0000239!18 = metadata !{metadata !19, metadata !20}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000240!19 = metadata !{metadata !"0xd\00a\0033\0032\0032\000\000", metadata !1, metadata !"_ZTSN6wombatUt_E", metadata !12} ; [ DW_TAG_member ] [a] [line 33, size 32, align 32, offset 0] [from int]
241!20 = metadata !{metadata !"0xd\00b\0034\0032\0032\0032\000", metadata !1, metadata !"_ZTSN6wombatUt_E", metadata !12} ; [ DW_TAG_member ] [b] [line 34, size 32, align 32, offset 32] [from int]
David Blaikie5b858582014-02-12 00:40:47 +0000242!21 = metadata !{metadata !22, metadata !26, metadata !27, metadata !36}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000243!22 = metadata !{metadata !"0x2e\00foo\00foo\00_Z3foov\005\000\001\000\006\00256\000\005", metadata !1, metadata !23, metadata !24, null, void ()* @_Z3foov, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 5] [def] [foo]
244!23 = metadata !{metadata !"0x29", metadata !1} ; [ DW_TAG_file_type ] [/tmp/dbginfo/bar.cpp]
245!24 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !25, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
David Blaikie5b858582014-02-12 00:40:47 +0000246!25 = metadata !{null}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000247!26 = metadata !{metadata !"0x2e\00__cxx_global_var_init\00__cxx_global_var_init\00\0029\001\001\000\006\00256\000\0029", metadata !1, metadata !23, metadata !24, null, void ()* @__cxx_global_var_init, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 29] [local] [def] [__cxx_global_var_init]
248!27 = metadata !{metadata !"0x2e\00walrus\00walrus\00_ZN12_GLOBAL__N_16walrusC2Ev\0025\001\001\000\006\00256\000\0025", metadata !1, metadata !28, metadata !32, null, void (%"struct.<anonymous namespace>::walrus"*)* @_ZN12_GLOBAL__N_16walrusC2Ev, null, metadata !31, metadata !2} ; [ DW_TAG_subprogram ] [line 25] [local] [def] [walrus]
249!28 = metadata !{metadata !"0x13\00walrus\0024\008\008\000\000\000", metadata !1, metadata !29, null, metadata !30, null, null, null} ; [ DW_TAG_structure_type ] [walrus] [line 24, size 8, align 8, offset 0] [def] [from ]
250!29 = metadata !{metadata !"0x39\00\0023", metadata !1, null} ; [ DW_TAG_namespace ] [line 23]
David Blaikie5b858582014-02-12 00:40:47 +0000251!30 = metadata !{metadata !31}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000252!31 = metadata !{metadata !"0x2e\00walrus\00walrus\00\0025\000\000\000\006\00256\000\0025", metadata !1, metadata !28, metadata !32, null, null, null, i32 0, metadata !35} ; [ DW_TAG_subprogram ] [line 25] [walrus]
253!32 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !33, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
David Blaikie5b858582014-02-12 00:40:47 +0000254!33 = metadata !{null, metadata !34}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000255!34 = metadata !{metadata !"0xf\00\000\0064\0064\000\001088", null, null, metadata !28} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [artificial] [from walrus]
David Blaikie5b858582014-02-12 00:40:47 +0000256!35 = metadata !{i32 786468}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000257!36 = metadata !{metadata !"0x2e\00\00\00_GLOBAL__I_a\0025\001\001\000\006\0064\000\0025", metadata !1, metadata !23, metadata !37, null, void ()* @_GLOBAL__I_a, null, null, metadata !2} ; [ DW_TAG_subprogram ] [line 25] [local] [def]
258!37 = metadata !{metadata !"0x15\00\000\000\000\000\000\000", i32 0, null, null, metadata !2, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
David Blaikie5b858582014-02-12 00:40:47 +0000259!38 = metadata !{metadata !39, metadata !40, metadata !41, metadata !42}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000260!39 = metadata !{metadata !"0x34\00b\00b\00\003\000\001", null, metadata !23, metadata !4, %struct.bar* @b, null} ; [ DW_TAG_variable ] [b] [line 3] [def]
261!40 = metadata !{metadata !"0x34\00animal\00animal\00_ZN7echidna8capybara8mongoose6animalE\0018\000\001", metadata !7, metadata !23, metadata !6, %"class.echidna::capybara::mongoose::fluffy"* @_ZN7echidna8capybara8mongoose6animalE, null} ; [ DW_TAG_variable ] [animal] [line 18] [def]
262!41 = metadata !{metadata !"0x34\00w\00w\00\0029\001\001", null, metadata !23, metadata !28, %"struct.<anonymous namespace>::walrus"* @w, null} ; [ DW_TAG_variable ] [w] [line 29] [local] [def]
263!42 = metadata !{metadata !"0x34\00wom\00wom\00\0038\000\001", null, metadata !23, metadata !14, %struct.wombat* @wom, null} ; [ DW_TAG_variable ] [wom] [line 38] [def]
David Blaikie5b858582014-02-12 00:40:47 +0000264!43 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000265!44 = metadata !{i32 1, metadata !"Debug Info Version", i32 2}
David Blaikie5b858582014-02-12 00:40:47 +0000266!45 = metadata !{metadata !"clang version 3.5 "}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000267!46 = metadata !{metadata !"0x100\00b\007\000", metadata !22, metadata !23, metadata !47} ; [ DW_TAG_auto_variable ] [b] [line 7]
268!47 = metadata !{metadata !"0x13\00baz\006\008\008\000\000\000", metadata !1, metadata !22, null, metadata !2, null, null, null} ; [ DW_TAG_structure_type ] [baz] [line 6, size 8, align 8, offset 0] [def] [from ]
David Blaikie5b858582014-02-12 00:40:47 +0000269!48 = metadata !{i32 7, i32 0, metadata !22, null}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000270!49 = metadata !{i32 8, i32 0, metadata !22, null}
David Blaikie5b858582014-02-12 00:40:47 +0000271!50 = metadata !{i32 29, i32 0, metadata !26, null}
Duncan P. N. Exon Smith176b6912014-10-03 20:01:09 +0000272!51 = metadata !{metadata !"0x101\00this\0016777216\001088", metadata !27, null, metadata !52} ; [ DW_TAG_arg_variable ] [this] [line 0]
273!52 = metadata !{metadata !"0xf\00\000\0064\0064\000\000", null, null, metadata !28} ; [ DW_TAG_pointer_type ] [line 0, size 64, align 64, offset 0] [from walrus]
David Blaikie5b858582014-02-12 00:40:47 +0000274!53 = metadata !{i32 0, i32 0, metadata !27, null}
275!54 = metadata !{i32 25, i32 0, metadata !27, null}
276!55 = metadata !{i32 25, i32 0, metadata !36, null}