[llvm] c20381b - llvm-dwarf-dump: include type name for AT_containing_type
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 17 17:52:43 PDT 2022
Author: Felipe de Azevedo Piovezan
Date: 2022-06-18T00:52:34Z
New Revision: c20381b226039d5789929c1942a2003711d6b4d0
URL: https://github.com/llvm/llvm-project/commit/c20381b226039d5789929c1942a2003711d6b4d0
DIFF: https://github.com/llvm/llvm-project/commit/c20381b226039d5789929c1942a2003711d6b4d0.diff
LOG: llvm-dwarf-dump: include type name for AT_containing_type
Type attributes are currently printed as:
DW_AT_type (<address> "<name>")
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
Added:
Modified:
llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
llvm/test/DebugInfo/Generic/containing-type-extension.ll
llvm/test/DebugInfo/Generic/tu-composite.ll
llvm/test/DebugInfo/X86/containing-type-extension-rust.ll
Removed:
################################################################################
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
More information about the llvm-commits
mailing list