diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp --- a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp @@ -194,7 +194,7 @@ Die.getAttributeValueAsReferencedDie(FormValue).getName( DINameKind::LinkageName)) OS << Space << "\"" << Name << '\"'; - } else if (Attr == DW_AT_type) { + } else if (Attr == DW_AT_type || Attr == DW_AT_containing_type) { DWARFDie D = resolveReferencedType(Die, FormValue); if (D && !D.isNULL()) { OS << Space << "\""; diff --git a/llvm/test/DebugInfo/Generic/containing-type-extension.ll b/llvm/test/DebugInfo/Generic/containing-type-extension.ll --- a/llvm/test/DebugInfo/Generic/containing-type-extension.ll +++ b/llvm/test/DebugInfo/Generic/containing-type-extension.ll @@ -4,7 +4,7 @@ ; Check that any type can have a vtable holder. ; CHECK: [[SP:.*]]: DW_TAG_structure_type ; CHECK-NOT: TAG -; CHECK: DW_AT_containing_type [DW_FORM_ref4] +; CHECK: DW_AT_containing_type [DW_FORM_ref4] ({{.*}} "int") ; CHECK: DW_AT_name {{.*}}"vtable" ; The code doesn't actually matter. diff --git a/llvm/test/DebugInfo/Generic/tu-composite.ll b/llvm/test/DebugInfo/Generic/tu-composite.ll --- a/llvm/test/DebugInfo/Generic/tu-composite.ll +++ b/llvm/test/DebugInfo/Generic/tu-composite.ll @@ -2,14 +2,14 @@ ; RUN: llvm-dwarfdump -v -debug-info %t | FileCheck %s ; CHECK: [[TYPE:.*]]: DW_TAG_structure_type ; Make sure we correctly handle containing type of a struct being a type identifier. -; CHECK-NEXT: DW_AT_containing_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE]]}) +; CHECK-NEXT: DW_AT_containing_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE]]} "C") ; CHECK-NEXT: DW_AT_name {{.*}}"C" ; Make sure we correctly handle context of a subprogram being a type identifier. ; CHECK: [[SP:.*]]: DW_TAG_subprogram ; CHECK: DW_AT_name {{.*}}"foo" ; Make sure we correctly handle containing type of a subprogram being a type identifier. -; CHECK: DW_AT_containing_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE]]}) +; CHECK: DW_AT_containing_type [DW_FORM_ref4] (cu + {{.*}} => {[[TYPE]]} "C") ; CHECK: DW_TAG_formal_parameter ; CHECK: NULL ; CHECK: NULL diff --git a/llvm/test/DebugInfo/X86/containing-type-extension-rust.ll b/llvm/test/DebugInfo/X86/containing-type-extension-rust.ll --- a/llvm/test/DebugInfo/X86/containing-type-extension-rust.ll +++ b/llvm/test/DebugInfo/X86/containing-type-extension-rust.ll @@ -4,7 +4,7 @@ ; Check that any type can have a vtable holder. ; CHECK: [[SP:.*]]: DW_TAG_structure_type ; CHECK-NOT: TAG -; CHECK: DW_AT_containing_type [DW_FORM_ref4] +; CHECK: DW_AT_containing_type [DW_FORM_ref4] ({{.*}} "f64") ; CHECK: DW_AT_name [DW_FORM_strp] {{.*}}= "vtable") ; This was compiled using