From: Felipe de Azevedo Piovezan Date: Sat, 18 Jun 2022 00:48:40 +0000 (+0000) Subject: llvm-dwarf-dump: include type name for AT_containing_type X-Git-Tag: upstream/15.0.7~4308 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c20381b226039d5789929c1942a2003711d6b4d0;p=platform%2Fupstream%2Fllvm.git llvm-dwarf-dump: include type name for AT_containing_type Type attributes are currently printed as: DW_AT_type (
"") For example: DW_AT_type (0x00000086 "double") However, containing_type attributes omit the name, for example: DW_AT_containing_type (0x00000086) In order to make the dwarf dumps easier to read, and to have consistency between the type-like attributes, this commit changes the way DW_AT_containing_type is printed so that it includes the name of the type it refers to: DW_AT_containing_type (0x00000086 "double") Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D127078 --- diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp index 9bbe09fccfe6..fb982804c7b1 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp @@ -194,7 +194,7 @@ static void dumpAttribute(raw_ostream &OS, const DWARFDie &Die, 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 index 2eab36c423a8..ada407929374 100644 --- 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 index a95b9460d67d..1700507b1b3b 100644 --- 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 index 3e6c6d269082..0ec839776919 100644 --- 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