Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / DebugInfo / X86 / pr45181.ll
blob3a469309642ebba3dac0ddc408761a8fa3387f67
1 ; RUN: llc -O1 -filetype=obj -emit-call-site-info -debug-entry-values -o - < %s | llvm-dwarfdump -verify - -o /dev/null
3 ; TODO: This test should be made more targeted by converting to MIR and reducing,
4 ; however at the moment conversion to MIR fails with:
5 ; Assertion failed: (!NameRef.empty() && "Normal symbols cannot be unnamed!")
7 target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
8 target triple = "x86_64-apple-macosx10.14.0"
10 %struct.e = type opaque
11 %"class.aa::aq" = type { i8 }
12 %"class.aa::ah" = type { i8 }
13 %"class.aa::y" = type { i8 }
14 %"class.aa::y.0" = type { i8 }
15 %struct.j = type opaque
16 %struct.h = type opaque
17 %struct.r = type opaque
19 @o = local_unnamed_addr global i32 0, align 4, !dbg !0
20 @p = local_unnamed_addr global ptr null, align 8, !dbg !42
22 ; Function Attrs: optsize ssp uwtable
23 define void @_ZN2aa2aq2arEv(ptr %this) local_unnamed_addr #0 align 2 !dbg !50 {
24 entry:
25   call void @llvm.dbg.value(metadata ptr %this, metadata !71, metadata !DIExpression()), !dbg !75
26   tail call void @_ZN2aa2ah2aiEiib(ptr %this, i32 undef, i32 undef, i1 zeroext true) #5, !dbg !76
27   ret void, !dbg !77
30 ; Function Attrs: nounwind readnone speculatable willreturn
31 declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
33 ; Function Attrs: argmemonly nounwind willreturn
34 declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2
36 ; Function Attrs: optsize ssp uwtable
37 define linkonce_odr void @_ZN2aa2ah2aiEiib(ptr %this, i32 %aj, i32 %0, i1 zeroext %1) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 !dbg !78 {
38 entry:
39   %ao = alloca %"class.aa::y", align 1
40   %ap = alloca %"class.aa::y.0", align 1
41   call void @llvm.dbg.value(metadata ptr %this, metadata !80, metadata !DIExpression()), !dbg !126
42   call void @llvm.dbg.value(metadata i32 %aj, metadata !82, metadata !DIExpression()), !dbg !126
43   call void @llvm.dbg.value(metadata i32 %0, metadata !83, metadata !DIExpression()), !dbg !126
44   call void @llvm.dbg.value(metadata i1 %1, metadata !84, metadata !DIExpression()), !dbg !126
45   call void @llvm.dbg.value(metadata i32 %aj, metadata !85, metadata !DIExpression()), !dbg !126
46   call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ao) #6, !dbg !127
47   call void @llvm.dbg.declare(metadata ptr %ao, metadata !91, metadata !DIExpression()), !dbg !128
48   %call = tail call ptr @_Z1mPvS_lPFvS_PKvlE(ptr undef, ptr undef, i64 0, ptr nonnull @_ZN2aa12_GLOBAL__N_12agEPvPKvl) #5, !dbg !129
49   call void @_ZN2aa1yIP1jNS_2ac1zI1eEEEC1ES2_(ptr nonnull %ao, ptr %call) #5, !dbg !128
50   call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ap) #6, !dbg !130
51   call void @llvm.dbg.declare(metadata ptr %ap, metadata !110, metadata !DIExpression()), !dbg !131
52   %2 = load ptr, ptr @p, align 8, !dbg !132, !tbaa !133
53   %call3 = invoke ptr @_Z1qP1e(ptr %2) #5
54           to label %invoke.cont unwind label %lpad, !dbg !137
56 invoke.cont:                                      ; preds = %entry
57   invoke void @_ZN2aa1yIP1hNS_2ac1zI1eEEEC1ES2_(ptr nonnull %ap, ptr %call3) #5
58           to label %invoke.cont4 unwind label %lpad, !dbg !131
60 invoke.cont4:                                     ; preds = %invoke.cont
61   %conv = sext i32 %aj to i64, !dbg !138
62   %mul = shl nsw i32 %aj, 2, !dbg !139
63   %conv6 = sext i32 %mul to i64, !dbg !140
64   %call9 = invoke ptr @_ZN2aa1yIP1hNS_2ac1zI1eEEE2abEv(ptr nonnull %ap) #5
65           to label %invoke.cont8 unwind label %lpad7, !dbg !141
67 invoke.cont8:                                     ; preds = %invoke.cont4
68   %call11 = invoke ptr @_ZN2aa1yIP1jNS_2ac1zI1eEEE2abEv(ptr nonnull %ao) #5
69           to label %invoke.cont10 unwind label %lpad7, !dbg !142
71 invoke.cont10:                                    ; preds = %invoke.cont8
72   %3 = load i32, ptr @o, align 4, !dbg !143, !tbaa !144
73   %call13 = invoke ptr @_Z1vlllllP1hiP1jPdb1n(i64 %conv, i64 0, i64 8, i64 2, i64 %conv6, ptr %call9, i32 0, ptr %call11, ptr null, i1 zeroext false, i32 %3) #5
74           to label %invoke.cont12 unwind label %lpad7, !dbg !146
76 invoke.cont12:                                    ; preds = %invoke.cont10
77   unreachable, !dbg !146
79 lpad:                                             ; preds = %invoke.cont, %entry
80   %4 = landingpad { ptr, i32 }
81           cleanup, !dbg !147
82   %5 = extractvalue { ptr, i32 } %4, 0, !dbg !147
83   %6 = extractvalue { ptr, i32 } %4, 1, !dbg !147
84   br label %ehcleanup, !dbg !147
86 lpad7:                                            ; preds = %invoke.cont10, %invoke.cont8, %invoke.cont4
87   %7 = landingpad { ptr, i32 }
88           cleanup, !dbg !147
89   %8 = extractvalue { ptr, i32 } %7, 0, !dbg !147
90   %9 = extractvalue { ptr, i32 } %7, 1, !dbg !147
91   call void @_ZN2aa1yIP1hNS_2ac1zI1eEEED1Ev(ptr nonnull %ap) #7, !dbg !147
92   br label %ehcleanup, !dbg !147
94 ehcleanup:                                        ; preds = %lpad7, %lpad
95   %exn.slot.0 = phi ptr [ %8, %lpad7 ], [ %5, %lpad ], !dbg !147
96   %ehselector.slot.0 = phi i32 [ %9, %lpad7 ], [ %6, %lpad ], !dbg !147
97   call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ap) #6, !dbg !147
98   call void @_ZN2aa1yIP1jNS_2ac1zI1eEEED1Ev(ptr nonnull %ao) #7, !dbg !147
99   call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ao) #6, !dbg !147
100   %lpad.val = insertvalue { ptr, i32 } undef, ptr %exn.slot.0, 0, !dbg !147
101   %lpad.val19 = insertvalue { ptr, i32 } %lpad.val, i32 %ehselector.slot.0, 1, !dbg !147
102   resume { ptr, i32 } %lpad.val19, !dbg !147
105 ; Function Attrs: argmemonly nounwind willreturn
106 declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2
108 ; Function Attrs: optsize
109 declare !dbg !11 ptr @_Z1mPvS_lPFvS_PKvlE(ptr, ptr, i64, ptr) local_unnamed_addr #3
111 ; Function Attrs: optsize
112 declare void @_ZN2aa12_GLOBAL__N_12agEPvPKvl(ptr, ptr, i64) #3
114 ; Function Attrs: optsize
115 declare void @_ZN2aa1yIP1jNS_2ac1zI1eEEEC1ES2_(ptr, ptr) unnamed_addr #3
117 ; Function Attrs: optsize
118 declare !dbg !24 ptr @_Z1qP1e(ptr) local_unnamed_addr #3
120 declare i32 @__gxx_personality_v0(...)
122 ; Function Attrs: optsize
123 declare void @_ZN2aa1yIP1hNS_2ac1zI1eEEEC1ES2_(ptr, ptr) unnamed_addr #3
125 ; Function Attrs: optsize
126 declare !dbg !31 ptr @_Z1vlllllP1hiP1jPdb1n(i64, i64, i64, i64, i64, ptr, i32, ptr, ptr, i1 zeroext, i32) local_unnamed_addr #3
128 ; Function Attrs: optsize
129 declare ptr @_ZN2aa1yIP1hNS_2ac1zI1eEEE2abEv(ptr) local_unnamed_addr #3
131 ; Function Attrs: optsize
132 declare ptr @_ZN2aa1yIP1jNS_2ac1zI1eEEE2abEv(ptr) local_unnamed_addr #3
134 ; Function Attrs: nounwind optsize
135 declare void @_ZN2aa1yIP1hNS_2ac1zI1eEEED1Ev(ptr) unnamed_addr #4
137 ; Function Attrs: nounwind optsize
138 declare void @_ZN2aa1yIP1jNS_2ac1zI1eEEED1Ev(ptr) unnamed_addr #4
140 ; Function Attrs: nounwind readnone speculatable willreturn
141 declare void @llvm.dbg.value(metadata, metadata, metadata) #1
143 attributes #0 = { optsize ssp uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
144 attributes #1 = { nounwind readnone speculatable willreturn }
145 attributes #2 = { argmemonly nounwind willreturn }
146 attributes #3 = { optsize "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
147 attributes #4 = { nounwind optsize "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
148 attributes #5 = { optsize }
149 attributes #6 = { nounwind }
150 attributes #7 = { nounwind optsize }
152 !llvm.dbg.cu = !{!2}
153 !llvm.module.flags = !{!45, !46, !47, !48}
154 !llvm.ident = !{!49}
156 !0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
157 !1 = distinct !DIGlobalVariable(name: "o", scope: !2, file: !6, line: 11, type: !40, isLocal: false, isDefinition: true)
158 !2 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !3, producer: "clang version 11.0.0 (git@github.com:llvm/llvm-project.git 0fecdcd1628999a1900d9cf84cd33dacf1319fa6)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4, retainedTypes: !10, globals: !41, nameTableKind: None, sysroot: "/")
159 !3 = !DIFile(filename: "/Users/vsk/tmp/x.cc", directory: "/Users/vsk/src/llvm-backup-main")
160 !4 = !{!5}
161 !5 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !6, line: 16, baseType: !7, size: 32, elements: !8)
162 !6 = !DIFile(filename: "tmp/x.cc", directory: "/Users/vsk")
163 !7 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned)
164 !8 = !{!9}
165 !9 = !DIEnumerator(name: "u", value: 0, isUnsigned: true)
166 !10 = !{!11, !24, !31}
167 !11 = !DISubprogram(name: "m", linkageName: "_Z1mPvS_lPFvS_PKvlE", scope: !6, file: !6, line: 10, type: !12, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !23)
168 !12 = !DISubroutineType(types: !13)
169 !13 = !{!14, !16, !16, !17, !18}
170 !14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64)
171 !15 = !DICompositeType(tag: DW_TAG_structure_type, name: "j", file: !6, line: 8, flags: DIFlagFwdDecl, identifier: "_ZTS1j")
172 !16 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)
173 !17 = !DIBasicType(name: "long int", size: 64, encoding: DW_ATE_signed)
174 !18 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !19, size: 64)
175 !19 = !DISubroutineType(types: !20)
176 !20 = !{null, !16, !21, !17}
177 !21 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !22, size: 64)
178 !22 = !DIDerivedType(tag: DW_TAG_const_type, baseType: null)
179 !23 = !{}
180 !24 = !DISubprogram(name: "q", linkageName: "_Z1qP1e", scope: !6, file: !6, line: 13, type: !25, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !23)
181 !25 = !DISubroutineType(types: !26)
182 !26 = !{!27, !29}
183 !27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !28, size: 64)
184 !28 = !DICompositeType(tag: DW_TAG_structure_type, name: "h", file: !6, line: 7, flags: DIFlagFwdDecl, identifier: "_ZTS1h")
185 !29 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !30, size: 64)
186 !30 = !DICompositeType(tag: DW_TAG_structure_type, name: "e", file: !6, line: 5, flags: DIFlagFwdDecl, identifier: "_ZTS1e")
187 !31 = !DISubprogram(name: "v", linkageName: "_Z1vlllllP1hiP1jPdb1n", scope: !6, file: !6, line: 17, type: !32, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !23)
188 !32 = !DISubroutineType(types: !33)
189 !33 = !{!34, !17, !17, !17, !17, !17, !27, !36, !14, !37, !39, !40}
190 !34 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !35, size: 64)
191 !35 = !DICompositeType(tag: DW_TAG_structure_type, name: "r", file: !6, line: 14, flags: DIFlagFwdDecl, identifier: "_ZTS1r")
192 !36 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
193 !37 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !38, size: 64)
194 !38 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float)
195 !39 = !DIBasicType(name: "bool", size: 8, encoding: DW_ATE_boolean)
196 !40 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "n", file: !6, line: 11, size: 32, flags: DIFlagFwdDecl, identifier: "_ZTS1n")
197 !41 = !{!0, !42}
198 !42 = !DIGlobalVariableExpression(var: !43, expr: !DIExpression())
199 !43 = distinct !DIGlobalVariable(name: "p", scope: !2, file: !6, line: 12, type: !44, isLocal: false, isDefinition: true)
200 !44 = !DIDerivedType(tag: DW_TAG_typedef, name: "f", file: !6, line: 5, baseType: !29)
201 !45 = !{i32 7, !"Dwarf Version", i32 4}
202 !46 = !{i32 2, !"Debug Info Version", i32 3}
203 !47 = !{i32 1, !"wchar_size", i32 4}
204 !48 = !{i32 7, !"PIC Level", i32 2}
205 !49 = !{!"clang version 11.0.0 (git@github.com:llvm/llvm-project.git 0fecdcd1628999a1900d9cf84cd33dacf1319fa6)"}
206 !50 = distinct !DISubprogram(name: "ar", linkageName: "_ZN2aa2aq2arEv", scope: !51, file: !6, line: 48, type: !67, scopeLine: 48, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, declaration: !66, retainedNodes: !70)
207 !51 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "aq", scope: !52, file: !6, line: 45, size: 8, flags: DIFlagTypePassByValue, elements: !53, identifier: "_ZTSN2aa2aqE")
208 !52 = !DINamespace(name: "aa", scope: null)
209 !53 = !{!54, !66}
210 !54 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !51, baseType: !55, extraData: i32 0)
211 !55 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "ah", scope: !52, file: !6, line: 34, size: 8, flags: DIFlagTypePassByValue, elements: !56, identifier: "_ZTSN2aa2ahE")
212 !56 = !{!57}
213 !57 = !DISubprogram(name: "ai", linkageName: "_ZN2aa2ah2aiEiib", scope: !55, file: !6, line: 36, type: !58, scopeLine: 36, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
214 !58 = !DISubroutineType(types: !59)
215 !59 = !{!60, !64, !65, !65, !39}
216 !60 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "af<w>", scope: !52, file: !6, line: 30, size: 8, flags: DIFlagTypePassByValue, elements: !23, templateParams: !61, identifier: "_ZTSN2aa2afI1wEE")
217 !61 = !{!62}
218 !62 = !DITemplateTypeParameter(type: !63)
219 !63 = !DICompositeType(tag: DW_TAG_class_type, name: "w", file: !6, line: 18, flags: DIFlagFwdDecl, identifier: "_ZTS1w")
220 !64 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !55, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
221 !65 = !DIDerivedType(tag: DW_TAG_typedef, name: "b", file: !6, line: 2, baseType: !36)
222 !66 = !DISubprogram(name: "ar", linkageName: "_ZN2aa2aq2arEv", scope: !51, file: !6, line: 46, type: !67, scopeLine: 46, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized)
223 !67 = !DISubroutineType(types: !68)
224 !68 = !{null, !69}
225 !69 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !51, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
226 !70 = !{!71, !73, !74}
227 !71 = !DILocalVariable(name: "this", arg: 1, scope: !50, type: !72, flags: DIFlagArtificial | DIFlagObjectPointer)
228 !72 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !51, size: 64)
229 !73 = !DILocalVariable(name: "aj", scope: !50, file: !6, line: 49, type: !65)
230 !74 = !DILocalVariable(name: "am", scope: !50, file: !6, line: 50, type: !65)
231 !75 = !DILocation(line: 0, scope: !50)
232 !76 = !DILocation(line: 51, column: 3, scope: !50)
233 !77 = !DILocation(line: 52, column: 1, scope: !50)
234 !78 = distinct !DISubprogram(name: "ai", linkageName: "_ZN2aa2ah2aiEiib", scope: !55, file: !6, line: 36, type: !58, scopeLine: 36, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !2, declaration: !57, retainedNodes: !79)
235 !79 = !{!80, !82, !83, !84, !85, !86, !87, !91, !110}
236 !80 = !DILocalVariable(name: "this", arg: 1, scope: !78, type: !81, flags: DIFlagArtificial | DIFlagObjectPointer)
237 !81 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !55, size: 64)
238 !82 = !DILocalVariable(name: "aj", arg: 2, scope: !78, file: !6, line: 36, type: !65)
239 !83 = !DILocalVariable(arg: 3, scope: !78, file: !6, line: 36, type: !65)
240 !84 = !DILocalVariable(arg: 4, scope: !78, file: !6, line: 36, type: !39)
241 !85 = !DILocalVariable(name: "ak", scope: !78, file: !6, line: 37, type: !65)
242 !86 = !DILocalVariable(name: "al", scope: !78, file: !6, line: 38, type: !65)
243 !87 = !DILocalVariable(name: "an", scope: !78, file: !6, line: 39, type: !88)
244 !88 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !89, size: 64)
245 !89 = !DIDerivedType(tag: DW_TAG_typedef, name: "c", file: !6, line: 3, baseType: !90)
246 !90 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char)
247 !91 = !DILocalVariable(name: "ao", scope: !78, file: !6, line: 40, type: !92)
248 !92 = !DIDerivedType(tag: DW_TAG_typedef, name: "ae<k>", scope: !52, file: !6, line: 29, baseType: !93)
249 !93 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "y<j *, aa::ac::z<e> >", scope: !52, file: !6, line: 20, size: 8, flags: DIFlagTypePassByReference | DIFlagNonTrivial, elements: !94, templateParams: !105, identifier: "_ZTSN2aa1yIP1jNS_2ac1zI1eEEEE")
250 !94 = !{!95, !99, !102}
251 !95 = !DISubprogram(name: "y", scope: !93, file: !6, line: 22, type: !96, scopeLine: 22, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
252 !96 = !DISubroutineType(types: !97)
253 !97 = !{null, !98, !14}
254 !98 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !93, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
255 !99 = !DISubprogram(name: "~y", scope: !93, file: !6, line: 23, type: !100, scopeLine: 23, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
256 !100 = !DISubroutineType(types: !101)
257 !101 = !{null, !98}
258 !102 = !DISubprogram(name: "ab", linkageName: "_ZN2aa1yIP1jNS_2ac1zI1eEEE2abEv", scope: !93, file: !6, line: 24, type: !103, scopeLine: 24, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
259 !103 = !DISubroutineType(types: !104)
260 !104 = !{!14, !98}
261 !105 = !{!106, !107}
262 !106 = !DITemplateTypeParameter(name: "x", type: !14)
263 !107 = !DITemplateTypeParameter(type: !108)
264 !108 = !DICompositeType(tag: DW_TAG_structure_type, name: "z<e>", scope: !109, file: !6, line: 27, flags: DIFlagFwdDecl, identifier: "_ZTSN2aa2ac1zI1eEE")
265 !109 = !DINamespace(name: "ac", scope: !52)
266 !110 = !DILocalVariable(name: "ap", scope: !78, file: !6, line: 41, type: !111)
267 !111 = !DIDerivedType(tag: DW_TAG_typedef, name: "ae<i>", scope: !52, file: !6, line: 29, baseType: !112)
268 !112 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "y<h *, aa::ac::z<e> >", scope: !52, file: !6, line: 20, size: 8, flags: DIFlagTypePassByReference | DIFlagNonTrivial, elements: !113, templateParams: !124, identifier: "_ZTSN2aa1yIP1hNS_2ac1zI1eEEEE")
269 !113 = !{!114, !118, !121}
270 !114 = !DISubprogram(name: "y", scope: !112, file: !6, line: 22, type: !115, scopeLine: 22, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
271 !115 = !DISubroutineType(types: !116)
272 !116 = !{null, !117, !27}
273 !117 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !112, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
274 !118 = !DISubprogram(name: "~y", scope: !112, file: !6, line: 23, type: !119, scopeLine: 23, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
275 !119 = !DISubroutineType(types: !120)
276 !120 = !{null, !117}
277 !121 = !DISubprogram(name: "ab", linkageName: "_ZN2aa1yIP1hNS_2ac1zI1eEEE2abEv", scope: !112, file: !6, line: 24, type: !122, scopeLine: 24, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
278 !122 = !DISubroutineType(types: !123)
279 !123 = !{!27, !117}
280 !124 = !{!125, !107}
281 !125 = !DITemplateTypeParameter(name: "x", type: !27)
282 !126 = !DILocation(line: 0, scope: !78)
283 !127 = !DILocation(line: 40, column: 5, scope: !78)
284 !128 = !DILocation(line: 40, column: 11, scope: !78)
285 !129 = !DILocation(line: 40, column: 14, scope: !78)
286 !130 = !DILocation(line: 41, column: 5, scope: !78)
287 !131 = !DILocation(line: 41, column: 11, scope: !78)
288 !132 = !DILocation(line: 41, column: 16, scope: !78)
289 !133 = !{!134, !134, i64 0}
290 !134 = !{!"any pointer", !135, i64 0}
291 !135 = !{!"omnipotent char", !136, i64 0}
292 !136 = !{!"Simple C++ TBAA"}
293 !137 = !DILocation(line: 41, column: 14, scope: !78)
294 !138 = !DILocation(line: 42, column: 7, scope: !78)
295 !139 = !DILocation(line: 42, column: 23, scope: !78)
296 !140 = !DILocation(line: 42, column: 21, scope: !78)
297 !141 = !DILocation(line: 42, column: 32, scope: !78)
298 !142 = !DILocation(line: 42, column: 44, scope: !78)
299 !143 = !DILocation(line: 42, column: 70, scope: !78)
300 !144 = !{!145, !145, i64 0}
301 !145 = !{!"_ZTS1n", !135, i64 0}
302 !146 = !DILocation(line: 42, column: 5, scope: !78)
303 !147 = !DILocation(line: 43, column: 3, scope: !78)