commit 636665331bbd4c369a9f33c4d35fb9a863c94646
Author: Vedant Kumar <vsk@apple.com>
Date:   Fri Mar 20 11:12:01 2020 -0700

    PR45181: Fix another invalid DIExpression combination
    
    The original test case from PR45181 triggers a DIExpression combination
    that wasn't fixed in D76164.

diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index 7b469d496b7..529c88f2ac9 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -572,6 +572,18 @@ struct FwdRegParamInfo {
 /// Register worklist for finding call site values.
 using FwdRegWorklist = MapVector<unsigned, SmallVector<FwdRegParamInfo, 2>>;
 
+/// Append the expression \p Addition to \p Original and return the result.
+static const DIExpression *combineDIExpressions(const DIExpression *Original,
+                                                const DIExpression *Addition) {
+  std::vector<uint64_t> Elts = Addition->getElements().vec();
+  // Avoid multiple DW_OP_stack_values.
+  if (Original->isImplicit() && Addition->isImplicit())
+    erase_if(Elts, [](uint64_t Op) { return Op == dwarf::DW_OP_stack_value; });
+  const DIExpression *CombinedExpr =
+      (Elts.size() > 0) ? DIExpression::append(Original, Elts) : Original;
+  return CombinedExpr;
+}
+
 /// Emit call site parameter entries that are described by the given value and
 /// debug expression.
 template <typename ValT>
@@ -591,9 +603,8 @@ static void finishCallSiteParams(ValT Val, const DIExpression *Expr,
     // parameter when walking through the instructions. Append that to the
     // base expression.
     const DIExpression *CombinedExpr =
-        ShouldCombineExpressions
-            ? DIExpression::append(Expr, Param.Expr->getElements())
-            : Expr;
+        ShouldCombineExpressions ? combineDIExpressions(Expr, Param.Expr)
+                                 : Expr;
     assert((!CombinedExpr || CombinedExpr->isValid()) &&
            "Combined debug expression is invalid");
 
@@ -623,15 +634,7 @@ static void addToFwdRegWorklist(FwdRegWorklist &Worklist, unsigned Reg,
     // instructions we may have already created an expression for the
     // parameter when walking through the instructions. Append that to the
     // new expression.
-    std::vector<uint64_t> ParamElts = Param.Expr->getElements().vec();
-    // Avoid multiple DW_OP_stack_values.
-    if (Expr->isImplicit() && Param.Expr->isImplicit())
-      erase_if(ParamElts,
-               [](uint64_t Op) { return Op == dwarf::DW_OP_stack_value; });
-    const DIExpression *CombinedExpr =
-        (Param.Expr->getNumElements() > 0)
-            ? DIExpression::append(Expr, ParamElts)
-            : Expr;
+    const DIExpression *CombinedExpr = combineDIExpressions(Expr, Param.Expr);
     ParamsForFwdReg.push_back({Param.ParamReg, CombinedExpr});
   }
 }
diff --git a/llvm/test/DebugInfo/X86/pr45181.ll b/llvm/test/DebugInfo/X86/pr45181.ll
new file mode 100644
index 00000000000..9c168164d4f
--- /dev/null
+++ b/llvm/test/DebugInfo/X86/pr45181.ll
@@ -0,0 +1,306 @@
+; RUN: llc -O1 -filetype=obj -emit-call-site-info -debug-entry-values -o - < %s | llvm-dwarfdump -verify - -o /dev/null
+
+; TODO: This test should be made more targeted by converting to MIR and reducing,
+; however at the moment conversion to MIR fails with:
+; Assertion failed: (!NameRef.empty() && "Normal symbols cannot be unnamed!")
+
+target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
+target triple = "x86_64-apple-macosx10.14.0"
+
+%struct.e = type opaque
+%"class.aa::aq" = type { i8 }
+%"class.aa::ah" = type { i8 }
+%"class.aa::y" = type { i8 }
+%"class.aa::y.0" = type { i8 }
+%struct.j = type opaque
+%struct.h = type opaque
+%struct.r = type opaque
+
+@o = local_unnamed_addr global i32 0, align 4, !dbg !0
+@p = local_unnamed_addr global %struct.e* null, align 8, !dbg !42
+
+; Function Attrs: optsize ssp uwtable
+define void @_ZN2aa2aq2arEv(%"class.aa::aq"* %this) local_unnamed_addr #0 align 2 !dbg !50 {
+entry:
+  call void @llvm.dbg.value(metadata %"class.aa::aq"* %this, metadata !71, metadata !DIExpression()), !dbg !75
+  %0 = bitcast %"class.aa::aq"* %this to %"class.aa::ah"*, !dbg !76
+  tail call void @_ZN2aa2ah2aiEiib(%"class.aa::ah"* %0, i32 undef, i32 undef, i1 zeroext true) #5, !dbg !76
+  ret void, !dbg !77
+}
+
+; Function Attrs: nounwind readnone speculatable willreturn
+declare void @llvm.dbg.declare(metadata, metadata, metadata) #1
+
+; Function Attrs: argmemonly nounwind willreturn
+declare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) #2
+
+; Function Attrs: optsize ssp uwtable
+define linkonce_odr void @_ZN2aa2ah2aiEiib(%"class.aa::ah"* %this, i32 %aj, i32 %0, i1 zeroext %1) local_unnamed_addr #0 align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) !dbg !78 {
+entry:
+  %ao = alloca %"class.aa::y", align 1
+  %ap = alloca %"class.aa::y.0", align 1
+  call void @llvm.dbg.value(metadata %"class.aa::ah"* %this, metadata !80, metadata !DIExpression()), !dbg !126
+  call void @llvm.dbg.value(metadata i32 %aj, metadata !82, metadata !DIExpression()), !dbg !126
+  call void @llvm.dbg.value(metadata i32 %0, metadata !83, metadata !DIExpression()), !dbg !126
+  call void @llvm.dbg.value(metadata i1 %1, metadata !84, metadata !DIExpression()), !dbg !126
+  call void @llvm.dbg.value(metadata i32 %aj, metadata !85, metadata !DIExpression()), !dbg !126
+  %2 = getelementptr inbounds %"class.aa::y", %"class.aa::y"* %ao, i64 0, i32 0, !dbg !127
+  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %2) #6, !dbg !127
+  call void @llvm.dbg.declare(metadata %"class.aa::y"* %ao, metadata !91, metadata !DIExpression()), !dbg !128
+  %call = tail call %struct.j* @_Z1mPvS_lPFvS_PKvlE(i8* undef, i8* undef, i64 0, void (i8*, i8*, i64)* nonnull @_ZN2aa12_GLOBAL__N_12agEPvPKvl) #5, !dbg !129
+  call void @_ZN2aa1yIP1jNS_2ac1zI1eEEEC1ES2_(%"class.aa::y"* nonnull %ao, %struct.j* %call) #5, !dbg !128
+  %3 = getelementptr inbounds %"class.aa::y.0", %"class.aa::y.0"* %ap, i64 0, i32 0, !dbg !130
+  call void @llvm.lifetime.start.p0i8(i64 1, i8* nonnull %3) #6, !dbg !130
+  call void @llvm.dbg.declare(metadata %"class.aa::y.0"* %ap, metadata !110, metadata !DIExpression()), !dbg !131
+  %4 = load %struct.e*, %struct.e** @p, align 8, !dbg !132, !tbaa !133
+  %call3 = invoke %struct.h* @_Z1qP1e(%struct.e* %4) #5
+          to label %invoke.cont unwind label %lpad, !dbg !137
+
+invoke.cont:                                      ; preds = %entry
+  invoke void @_ZN2aa1yIP1hNS_2ac1zI1eEEEC1ES2_(%"class.aa::y.0"* nonnull %ap, %struct.h* %call3) #5
+          to label %invoke.cont4 unwind label %lpad, !dbg !131
+
+invoke.cont4:                                     ; preds = %invoke.cont
+  %conv = sext i32 %aj to i64, !dbg !138
+  %mul = shl nsw i32 %aj, 2, !dbg !139
+  %conv6 = sext i32 %mul to i64, !dbg !140
+  %call9 = invoke %struct.h* @_ZN2aa1yIP1hNS_2ac1zI1eEEE2abEv(%"class.aa::y.0"* nonnull %ap) #5
+          to label %invoke.cont8 unwind label %lpad7, !dbg !141
+
+invoke.cont8:                                     ; preds = %invoke.cont4
+  %call11 = invoke %struct.j* @_ZN2aa1yIP1jNS_2ac1zI1eEEE2abEv(%"class.aa::y"* nonnull %ao) #5
+          to label %invoke.cont10 unwind label %lpad7, !dbg !142
+
+invoke.cont10:                                    ; preds = %invoke.cont8
+  %5 = load i32, i32* @o, align 4, !dbg !143, !tbaa !144
+  %call13 = invoke %struct.r* @_Z1vlllllP1hiP1jPdb1n(i64 %conv, i64 0, i64 8, i64 2, i64 %conv6, %struct.h* %call9, i32 0, %struct.j* %call11, double* null, i1 zeroext false, i32 %5) #5
+          to label %invoke.cont12 unwind label %lpad7, !dbg !146
+
+invoke.cont12:                                    ; preds = %invoke.cont10
+  unreachable, !dbg !146
+
+lpad:                                             ; preds = %invoke.cont, %entry
+  %6 = landingpad { i8*, i32 }
+          cleanup, !dbg !147
+  %7 = extractvalue { i8*, i32 } %6, 0, !dbg !147
+  %8 = extractvalue { i8*, i32 } %6, 1, !dbg !147
+  br label %ehcleanup, !dbg !147
+
+lpad7:                                            ; preds = %invoke.cont10, %invoke.cont8, %invoke.cont4
+  %9 = landingpad { i8*, i32 }
+          cleanup, !dbg !147
+  %10 = extractvalue { i8*, i32 } %9, 0, !dbg !147
+  %11 = extractvalue { i8*, i32 } %9, 1, !dbg !147
+  call void @_ZN2aa1yIP1hNS_2ac1zI1eEEED1Ev(%"class.aa::y.0"* nonnull %ap) #7, !dbg !147
+  br label %ehcleanup, !dbg !147
+
+ehcleanup:                                        ; preds = %lpad7, %lpad
+  %exn.slot.0 = phi i8* [ %10, %lpad7 ], [ %7, %lpad ], !dbg !147
+  %ehselector.slot.0 = phi i32 [ %11, %lpad7 ], [ %8, %lpad ], !dbg !147
+  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %3) #6, !dbg !147
+  call void @_ZN2aa1yIP1jNS_2ac1zI1eEEED1Ev(%"class.aa::y"* nonnull %ao) #7, !dbg !147
+  call void @llvm.lifetime.end.p0i8(i64 1, i8* nonnull %2) #6, !dbg !147
+  %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn.slot.0, 0, !dbg !147
+  %lpad.val19 = insertvalue { i8*, i32 } %lpad.val, i32 %ehselector.slot.0, 1, !dbg !147
+  resume { i8*, i32 } %lpad.val19, !dbg !147
+}
+
+; Function Attrs: argmemonly nounwind willreturn
+declare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) #2
+
+; Function Attrs: optsize
+declare !dbg !11 %struct.j* @_Z1mPvS_lPFvS_PKvlE(i8*, i8*, i64, void (i8*, i8*, i64)*) local_unnamed_addr #3
+
+; Function Attrs: optsize
+declare void @_ZN2aa12_GLOBAL__N_12agEPvPKvl(i8*, i8*, i64) #3
+
+; Function Attrs: optsize
+declare void @_ZN2aa1yIP1jNS_2ac1zI1eEEEC1ES2_(%"class.aa::y"*, %struct.j*) unnamed_addr #3
+
+; Function Attrs: optsize
+declare !dbg !24 %struct.h* @_Z1qP1e(%struct.e*) local_unnamed_addr #3
+
+declare i32 @__gxx_personality_v0(...)
+
+; Function Attrs: optsize
+declare void @_ZN2aa1yIP1hNS_2ac1zI1eEEEC1ES2_(%"class.aa::y.0"*, %struct.h*) unnamed_addr #3
+
+; Function Attrs: optsize
+declare !dbg !31 %struct.r* @_Z1vlllllP1hiP1jPdb1n(i64, i64, i64, i64, i64, %struct.h*, i32, %struct.j*, double*, i1 zeroext, i32) local_unnamed_addr #3
+
+; Function Attrs: optsize
+declare %struct.h* @_ZN2aa1yIP1hNS_2ac1zI1eEEE2abEv(%"class.aa::y.0"*) local_unnamed_addr #3
+
+; Function Attrs: optsize
+declare %struct.j* @_ZN2aa1yIP1jNS_2ac1zI1eEEE2abEv(%"class.aa::y"*) local_unnamed_addr #3
+
+; Function Attrs: nounwind optsize
+declare void @_ZN2aa1yIP1hNS_2ac1zI1eEEED1Ev(%"class.aa::y.0"*) unnamed_addr #4
+
+; Function Attrs: nounwind optsize
+declare void @_ZN2aa1yIP1jNS_2ac1zI1eEEED1Ev(%"class.aa::y"*) unnamed_addr #4
+
+; Function Attrs: nounwind readnone speculatable willreturn
+declare void @llvm.dbg.value(metadata, metadata, metadata) #1
+
+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" }
+attributes #1 = { nounwind readnone speculatable willreturn }
+attributes #2 = { argmemonly nounwind willreturn }
+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" }
+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" }
+attributes #5 = { optsize }
+attributes #6 = { nounwind }
+attributes #7 = { nounwind optsize }
+
+!llvm.dbg.cu = !{!2}
+!llvm.module.flags = !{!45, !46, !47, !48}
+!llvm.ident = !{!49}
+
+!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
+!1 = distinct !DIGlobalVariable(name: "o", scope: !2, file: !6, line: 11, type: !40, isLocal: false, isDefinition: true)
+!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: "/")
+!3 = !DIFile(filename: "/Users/vsk/tmp/x.cc", directory: "/Users/vsk/src/llvm-backup-master")
+!4 = !{!5}
+!5 = !DICompositeType(tag: DW_TAG_enumeration_type, file: !6, line: 16, baseType: !7, size: 32, elements: !8)
+!6 = !DIFile(filename: "tmp/x.cc", directory: "/Users/vsk")
+!7 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned)
+!8 = !{!9}
+!9 = !DIEnumerator(name: "u", value: 0, isUnsigned: true)
+!10 = !{!11, !24, !31}
+!11 = !DISubprogram(name: "m", linkageName: "_Z1mPvS_lPFvS_PKvlE", scope: !6, file: !6, line: 10, type: !12, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !23)
+!12 = !DISubroutineType(types: !13)
+!13 = !{!14, !16, !16, !17, !18}
+!14 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !15, size: 64)
+!15 = !DICompositeType(tag: DW_TAG_structure_type, name: "j", file: !6, line: 8, flags: DIFlagFwdDecl, identifier: "_ZTS1j")
+!16 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64)
+!17 = !DIBasicType(name: "long int", size: 64, encoding: DW_ATE_signed)
+!18 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !19, size: 64)
+!19 = !DISubroutineType(types: !20)
+!20 = !{null, !16, !21, !17}
+!21 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !22, size: 64)
+!22 = !DIDerivedType(tag: DW_TAG_const_type, baseType: null)
+!23 = !{}
+!24 = !DISubprogram(name: "q", linkageName: "_Z1qP1e", scope: !6, file: !6, line: 13, type: !25, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !23)
+!25 = !DISubroutineType(types: !26)
+!26 = !{!27, !29}
+!27 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !28, size: 64)
+!28 = !DICompositeType(tag: DW_TAG_structure_type, name: "h", file: !6, line: 7, flags: DIFlagFwdDecl, identifier: "_ZTS1h")
+!29 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !30, size: 64)
+!30 = !DICompositeType(tag: DW_TAG_structure_type, name: "e", file: !6, line: 5, flags: DIFlagFwdDecl, identifier: "_ZTS1e")
+!31 = !DISubprogram(name: "v", linkageName: "_Z1vlllllP1hiP1jPdb1n", scope: !6, file: !6, line: 17, type: !32, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !23)
+!32 = !DISubroutineType(types: !33)
+!33 = !{!34, !17, !17, !17, !17, !17, !27, !36, !14, !37, !39, !40}
+!34 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !35, size: 64)
+!35 = !DICompositeType(tag: DW_TAG_structure_type, name: "r", file: !6, line: 14, flags: DIFlagFwdDecl, identifier: "_ZTS1r")
+!36 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
+!37 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !38, size: 64)
+!38 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float)
+!39 = !DIBasicType(name: "bool", size: 8, encoding: DW_ATE_boolean)
+!40 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "n", file: !6, line: 11, size: 32, flags: DIFlagFwdDecl, identifier: "_ZTS1n")
+!41 = !{!0, !42}
+!42 = !DIGlobalVariableExpression(var: !43, expr: !DIExpression())
+!43 = distinct !DIGlobalVariable(name: "p", scope: !2, file: !6, line: 12, type: !44, isLocal: false, isDefinition: true)
+!44 = !DIDerivedType(tag: DW_TAG_typedef, name: "f", file: !6, line: 5, baseType: !29)
+!45 = !{i32 7, !"Dwarf Version", i32 4}
+!46 = !{i32 2, !"Debug Info Version", i32 3}
+!47 = !{i32 1, !"wchar_size", i32 4}
+!48 = !{i32 7, !"PIC Level", i32 2}
+!49 = !{!"clang version 11.0.0 (git@github.com:llvm/llvm-project.git 0fecdcd1628999a1900d9cf84cd33dacf1319fa6)"}
+!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)
+!51 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "aq", scope: !52, file: !6, line: 45, size: 8, flags: DIFlagTypePassByValue, elements: !53, identifier: "_ZTSN2aa2aqE")
+!52 = !DINamespace(name: "aa", scope: null)
+!53 = !{!54, !66}
+!54 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !51, baseType: !55, extraData: i32 0)
+!55 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "ah", scope: !52, file: !6, line: 34, size: 8, flags: DIFlagTypePassByValue, elements: !56, identifier: "_ZTSN2aa2ahE")
+!56 = !{!57}
+!57 = !DISubprogram(name: "ai", linkageName: "_ZN2aa2ah2aiEiib", scope: !55, file: !6, line: 36, type: !58, scopeLine: 36, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
+!58 = !DISubroutineType(types: !59)
+!59 = !{!60, !64, !65, !65, !39}
+!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")
+!61 = !{!62}
+!62 = !DITemplateTypeParameter(type: !63)
+!63 = !DICompositeType(tag: DW_TAG_class_type, name: "w", file: !6, line: 18, flags: DIFlagFwdDecl, identifier: "_ZTS1w")
+!64 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !55, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
+!65 = !DIDerivedType(tag: DW_TAG_typedef, name: "b", file: !6, line: 2, baseType: !36)
+!66 = !DISubprogram(name: "ar", linkageName: "_ZN2aa2aq2arEv", scope: !51, file: !6, line: 46, type: !67, scopeLine: 46, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized)
+!67 = !DISubroutineType(types: !68)
+!68 = !{null, !69}
+!69 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !51, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
+!70 = !{!71, !73, !74}
+!71 = !DILocalVariable(name: "this", arg: 1, scope: !50, type: !72, flags: DIFlagArtificial | DIFlagObjectPointer)
+!72 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !51, size: 64)
+!73 = !DILocalVariable(name: "aj", scope: !50, file: !6, line: 49, type: !65)
+!74 = !DILocalVariable(name: "am", scope: !50, file: !6, line: 50, type: !65)
+!75 = !DILocation(line: 0, scope: !50)
+!76 = !DILocation(line: 51, column: 3, scope: !50)
+!77 = !DILocation(line: 52, column: 1, scope: !50)
+!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)
+!79 = !{!80, !82, !83, !84, !85, !86, !87, !91, !110}
+!80 = !DILocalVariable(name: "this", arg: 1, scope: !78, type: !81, flags: DIFlagArtificial | DIFlagObjectPointer)
+!81 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !55, size: 64)
+!82 = !DILocalVariable(name: "aj", arg: 2, scope: !78, file: !6, line: 36, type: !65)
+!83 = !DILocalVariable(arg: 3, scope: !78, file: !6, line: 36, type: !65)
+!84 = !DILocalVariable(arg: 4, scope: !78, file: !6, line: 36, type: !39)
+!85 = !DILocalVariable(name: "ak", scope: !78, file: !6, line: 37, type: !65)
+!86 = !DILocalVariable(name: "al", scope: !78, file: !6, line: 38, type: !65)
+!87 = !DILocalVariable(name: "an", scope: !78, file: !6, line: 39, type: !88)
+!88 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !89, size: 64)
+!89 = !DIDerivedType(tag: DW_TAG_typedef, name: "c", file: !6, line: 3, baseType: !90)
+!90 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char)
+!91 = !DILocalVariable(name: "ao", scope: !78, file: !6, line: 40, type: !92)
+!92 = !DIDerivedType(tag: DW_TAG_typedef, name: "ae<k>", scope: !52, file: !6, line: 29, baseType: !93)
+!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")
+!94 = !{!95, !99, !102}
+!95 = !DISubprogram(name: "y", scope: !93, file: !6, line: 22, type: !96, scopeLine: 22, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
+!96 = !DISubroutineType(types: !97)
+!97 = !{null, !98, !14}
+!98 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !93, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
+!99 = !DISubprogram(name: "~y", scope: !93, file: !6, line: 23, type: !100, scopeLine: 23, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
+!100 = !DISubroutineType(types: !101)
+!101 = !{null, !98}
+!102 = !DISubprogram(name: "ab", linkageName: "_ZN2aa1yIP1jNS_2ac1zI1eEEE2abEv", scope: !93, file: !6, line: 24, type: !103, scopeLine: 24, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
+!103 = !DISubroutineType(types: !104)
+!104 = !{!14, !98}
+!105 = !{!106, !107}
+!106 = !DITemplateTypeParameter(name: "x", type: !14)
+!107 = !DITemplateTypeParameter(type: !108)
+!108 = !DICompositeType(tag: DW_TAG_structure_type, name: "z<e>", scope: !109, file: !6, line: 27, flags: DIFlagFwdDecl, identifier: "_ZTSN2aa2ac1zI1eEE")
+!109 = !DINamespace(name: "ac", scope: !52)
+!110 = !DILocalVariable(name: "ap", scope: !78, file: !6, line: 41, type: !111)
+!111 = !DIDerivedType(tag: DW_TAG_typedef, name: "ae<i>", scope: !52, file: !6, line: 29, baseType: !112)
+!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")
+!113 = !{!114, !118, !121}
+!114 = !DISubprogram(name: "y", scope: !112, file: !6, line: 22, type: !115, scopeLine: 22, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
+!115 = !DISubroutineType(types: !116)
+!116 = !{null, !117, !27}
+!117 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !112, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)
+!118 = !DISubprogram(name: "~y", scope: !112, file: !6, line: 23, type: !119, scopeLine: 23, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
+!119 = !DISubroutineType(types: !120)
+!120 = !{null, !117}
+!121 = !DISubprogram(name: "ab", linkageName: "_ZN2aa1yIP1hNS_2ac1zI1eEEE2abEv", scope: !112, file: !6, line: 24, type: !122, scopeLine: 24, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagOptimized)
+!122 = !DISubroutineType(types: !123)
+!123 = !{!27, !117}
+!124 = !{!125, !107}
+!125 = !DITemplateTypeParameter(name: "x", type: !27)
+!126 = !DILocation(line: 0, scope: !78)
+!127 = !DILocation(line: 40, column: 5, scope: !78)
+!128 = !DILocation(line: 40, column: 11, scope: !78)
+!129 = !DILocation(line: 40, column: 14, scope: !78)
+!130 = !DILocation(line: 41, column: 5, scope: !78)
+!131 = !DILocation(line: 41, column: 11, scope: !78)
+!132 = !DILocation(line: 41, column: 16, scope: !78)
+!133 = !{!134, !134, i64 0}
+!134 = !{!"any pointer", !135, i64 0}
+!135 = !{!"omnipotent char", !136, i64 0}
+!136 = !{!"Simple C++ TBAA"}
+!137 = !DILocation(line: 41, column: 14, scope: !78)
+!138 = !DILocation(line: 42, column: 7, scope: !78)
+!139 = !DILocation(line: 42, column: 23, scope: !78)
+!140 = !DILocation(line: 42, column: 21, scope: !78)
+!141 = !DILocation(line: 42, column: 32, scope: !78)
+!142 = !DILocation(line: 42, column: 44, scope: !78)
+!143 = !DILocation(line: 42, column: 70, scope: !78)
+!144 = !{!145, !145, i64 0}
+!145 = !{!"_ZTS1n", !135, i64 0}
+!146 = !DILocation(line: 42, column: 5, scope: !78)
+!147 = !DILocation(line: 43, column: 3, scope: !78)
