[llvm] 606ea0d - llvm-dwarfdump: support for type printing "decltype(nullptr)" as "nullptr_t"
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 19 17:34:58 PDT 2021
Author: David Blaikie
Date: 2021-09-19T17:33:56-07:00
New Revision: 606ea0dd2a7308d4af222ddcf0ae66c6267cb90d
URL: https://github.com/llvm/llvm-project/commit/606ea0dd2a7308d4af222ddcf0ae66c6267cb90d
DIFF: https://github.com/llvm/llvm-project/commit/606ea0dd2a7308d4af222ddcf0ae66c6267cb90d.diff
LOG: llvm-dwarfdump: support for type printing "decltype(nullptr)" as "nullptr_t"
This should probably be rendered as "std::nullptr_t" but for now clang
uses the unqualified name (which is ambiguous with possible user defined
name in the global namespace), so match that here.
Added:
Modified:
llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
llvm/test/tools/llvm-dwarfdump/X86/prettyprint_types.s
Removed:
################################################################################
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
index 1f161580204c..60adc907c113 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFDie.cpp
@@ -122,9 +122,13 @@ struct DWARFTypePrinter {
/// Dump the name encoded in the type tag.
void appendTypeTagName(dwarf::Tag T) {
StringRef TagStr = TagString(T);
- if (!TagStr.startswith("DW_TAG_") || !TagStr.endswith("_type"))
+ static constexpr StringRef Prefix = "DW_TAG_";
+ static constexpr StringRef Suffix = "_type";
+ if (!TagStr.startswith(Prefix) || !TagStr.endswith(Suffix))
return;
- OS << TagStr.substr(7, TagStr.size() - 12) << " ";
+ OS << TagStr.substr(Prefix.size(),
+ TagStr.size() - (Prefix.size() + Suffix.size()))
+ << " ";
}
void appendArrayType(const DWARFDie &D) {
@@ -201,11 +205,6 @@ struct DWARFTypePrinter {
OS << "void";
return DWARFDie();
}
- if (const char *Name = D.getName(DINameKind::LinkageName)) {
- OS << Name;
- return DWARFDie();
- }
-
DWARFDie Inner = D.getAttributeValueAsReferencedDie(DW_AT_type);
const dwarf::Tag T = D.getTag();
switch (T) {
@@ -260,9 +259,22 @@ struct DWARFTypePrinter {
OS << "(anonymous namespace)";
break;
}
+ case DW_TAG_unspecified_type: {
+ StringRef TypeName = D.getShortName();
+ if (TypeName == "decltype(nullptr)")
+ TypeName = "nullptr_t";
+ Word = true;
+ OS << TypeName;
+ EndedWithTemplate = false;
+ break;
+ }
default:
- appendTypeTagName(T);
- appendQualifiedNameBefore(Inner);
+ const char *NamePtr = dwarf::toString(D.find(DW_AT_name), nullptr);
+ if (!NamePtr) {
+ appendTypeTagName(D.getTag());
+ break;
+ }
+ OS << NamePtr;
break;
}
return Inner;
diff --git a/llvm/test/tools/llvm-dwarfdump/X86/prettyprint_types.s b/llvm/test/tools/llvm-dwarfdump/X86/prettyprint_types.s
index 6e07276dbb19..89cadffe3d0d 100644
--- a/llvm/test/tools/llvm-dwarfdump/X86/prettyprint_types.s
+++ b/llvm/test/tools/llvm-dwarfdump/X86/prettyprint_types.s
@@ -53,6 +53,12 @@
# base_type
# CHECK: DW_AT_type{{.*}}"int"
+# FIXME: This might change in clang to std::nullptr_t which would be more
+# accurate and not be ambiguous with some arbitrary ::nullptr_t a user could
+# define. If that change is made, this code/test should be fixed too.
+# nullptr_t unspecified type
+# CHECK: DW_AT_type{{.*}}"nullptr_t"
+
# reference_type
# CHECK: DW_AT_type{{.*}}"int &"
@@ -173,51 +179,58 @@
.byte 0 # EOM(1)
.byte 0 # EOM(2)
.byte 7 # Abbreviation Code
+ .byte 59 # DW_TAG_unspecified_type
+ .byte 0 # DW_CHILDREN_no
+ .byte 3 # DW_AT_name
+ .byte 14 # DW_FORM_strp
+ .byte 0 # EOM(1)
+ .byte 0 # EOM(2)
+ .byte 8 # Abbreviation Code
.byte 16 # DW_TAG_reference_type
.byte 0 # DW_CHILDREN_no
.byte 73 # DW_AT_type
.byte 19 # DW_FORM_ref4
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 8 # Abbreviation Code
+ .byte 9 # Abbreviation Code
.byte 66 # DW_TAG_rvalue_reference_type
.byte 0 # DW_CHILDREN_no
.byte 73 # DW_AT_type
.byte 19 # DW_FORM_ref4
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 9 # Abbreviation Code
+ .byte 10 # Abbreviation Code
.byte 15 # DW_TAG_pointer_type
.byte 0 # DW_CHILDREN_no
.byte 73 # DW_AT_type
.byte 19 # DW_FORM_ref4
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 10 # Abbreviation Code
+ .byte 11 # Abbreviation Code
.byte 38 # DW_TAG_const_type
.byte 0 # DW_CHILDREN_no
.byte 73 # DW_AT_type
.byte 19 # DW_FORM_ref4
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 11 # Abbreviation Code
+ .byte 12 # Abbreviation Code
.byte 38 # DW_TAG_const_type
.byte 0 # DW_CHILDREN_no
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 12 # Abbreviation Code
+ .byte 13 # Abbreviation Code
.byte 53 # DW_TAG_volatile_type
.byte 0 # DW_CHILDREN_no
.byte 73 # DW_AT_type
.byte 19 # DW_FORM_ref4
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 13 # Abbreviation Code
+ .byte 14 # Abbreviation Code
.byte 15 # DW_TAG_pointer_type
.byte 0 # DW_CHILDREN_no
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 14 # Abbreviation Code
+ .byte 15 # Abbreviation Code
.byte 31 # DW_TAG_ptr_to_member_type
.byte 0 # DW_CHILDREN_no
.byte 73 # DW_AT_type
@@ -226,7 +239,7 @@
.byte 19 # DW_FORM_ref4
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 15 # Abbreviation Code
+ .byte 16 # Abbreviation Code
.byte 19 # DW_TAG_structure_type
.byte 0 # DW_CHILDREN_no
.byte 3 # DW_AT_name
@@ -235,12 +248,12 @@
.byte 25 # DW_FORM_flag_present
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 16 # Abbreviation Code
+ .byte 17 # Abbreviation Code
.byte 21 # DW_TAG_subroutine_type
.byte 1 # DW_CHILDREN_yes
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 17 # Abbreviation Code
+ .byte 18 # Abbreviation Code
.byte 5 # DW_TAG_formal_parameter
.byte 0 # DW_CHILDREN_no
.byte 73 # DW_AT_type
@@ -249,28 +262,28 @@
.byte 25 # DW_FORM_flag_present
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 18 # Abbreviation Code
+ .byte 19 # Abbreviation Code
.byte 5 # DW_TAG_formal_parameter
.byte 0 # DW_CHILDREN_no
.byte 73 # DW_AT_type
.byte 19 # DW_FORM_ref4
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 19 # Abbreviation Code
+ .byte 20 # Abbreviation Code
.byte 21 # DW_TAG_subroutine_type
.byte 1 # DW_CHILDREN_yes
.byte 120 # DW_AT_rvalue_reference
.byte 25 # DW_FORM_flag_present
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 20 # Abbreviation Code
+ .byte 21 # Abbreviation Code
.byte 1 # DW_TAG_array_type
.byte 1 # DW_CHILDREN_yes
.byte 73 # DW_AT_type
.byte 19 # DW_FORM_ref4
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 21 # Abbreviation Code
+ .byte 22 # Abbreviation Code
.byte 33 # DW_TAG_subrange_type
.byte 0 # DW_CHILDREN_no
.byte 73 # DW_AT_type
@@ -279,7 +292,7 @@
.byte 11 # DW_FORM_data1
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 22 # Abbreviation Code
+ .byte 23 # Abbreviation Code
.byte 36 # DW_TAG_base_type
.byte 0 # DW_CHILDREN_no
.byte 3 # DW_AT_name
@@ -290,47 +303,47 @@
.byte 11 # DW_FORM_data1
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 23 # Abbreviation Code
+ .byte 24 # Abbreviation Code
.byte 21 # DW_TAG_subroutine_type
.byte 0 # DW_CHILDREN_no
.byte 73 # DW_AT_type
.byte 19 # DW_FORM_ref4
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 24 # Abbreviation Code
+ .byte 25 # Abbreviation Code
.byte 21 # DW_TAG_subroutine_type
.byte 0 # DW_CHILDREN_no
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 25 # Abbreviation Code
+ .byte 26 # Abbreviation Code
.byte 21 # DW_TAG_subroutine_type
.byte 0 # DW_CHILDREN_no
.byte 120 # DW_AT_rvalue_reference
.byte 25 # DW_FORM_flag_present
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 26 # Abbreviation Code
+ .byte 27 # Abbreviation Code
.byte 21 # DW_TAG_subroutine_type
.byte 0 # DW_CHILDREN_no
.byte 119 # DW_AT_reference
.byte 25 # DW_FORM_flag_present
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 27 # Abbreviation Code
+ .byte 28 # Abbreviation Code
.byte 21 # DW_TAG_subroutine_type
.byte 1 # DW_CHILDREN_yes
.byte 73 # DW_AT_type
.byte 19 # DW_FORM_ref4
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 28 # Abbreviation Code
+ .byte 29 # Abbreviation Code
.byte 57 # DW_TAG_namespace
.byte 1 # DW_CHILDREN_yes
.byte 3 # DW_AT_name
.byte 14 # DW_FORM_strp
.byte 0 # EOM(1)
.byte 0 # EOM(2)
- .byte 29 # Abbreviation Code
+ .byte 30 # Abbreviation Code
.byte 57 # DW_TAG_namespace
.byte 1 # DW_CHILDREN_yes
.byte 0 # EOM(1)
@@ -343,7 +356,7 @@
.short 4 # DWARF version number
.long .debug_abbrev # Offset Into Abbrev. Section
.byte 8 # Address Size (in bytes)
- .byte 1 # Abbrev [1] 0xb:0x247 DW_TAG_compile_unit
+ .byte 1 # Abbrev [1] 0xb:0x251 DW_TAG_compile_unit
.long .Linfo_string0 # DW_AT_producer
.short 33 # DW_AT_language
.long .Linfo_string1 # DW_AT_name
@@ -353,262 +366,266 @@
.long .Linfo_string3 # DW_AT_name
.long 51 # DW_AT_type
.byte 1 # DW_AT_decl_file
- .byte 33 # DW_AT_decl_line
+ .byte 35 # DW_AT_decl_line
.byte 9 # DW_AT_location
.byte 3
.quad v1
- .byte 3 # Abbrev [3] 0x33:0xb5 DW_TAG_structure_type
+ .byte 3 # Abbrev [3] 0x33:0xba DW_TAG_structure_type
.byte 5 # DW_AT_calling_convention
- .long .Linfo_string12 # DW_AT_name
+ .long .Linfo_string13 # DW_AT_name
.byte 1 # DW_AT_byte_size
.byte 1 # DW_AT_decl_file
.byte 3 # DW_AT_decl_line
- .byte 4 # Abbrev [4] 0x3c:0xab DW_TAG_GNU_template_parameter_pack
+ .byte 4 # Abbrev [4] 0x3c:0xb0 DW_TAG_GNU_template_parameter_pack
.long .Linfo_string4 # DW_AT_name
.byte 5 # Abbrev [5] 0x41:0x5 DW_TAG_template_type_parameter
- .long 232 # DW_AT_type
+ .long 237 # DW_AT_type
.byte 5 # Abbrev [5] 0x46:0x5 DW_TAG_template_type_parameter
- .long 239 # DW_AT_type
- .byte 5 # Abbrev [5] 0x4b:0x5 DW_TAG_template_type_parameter
.long 244 # DW_AT_type
- .byte 5 # Abbrev [5] 0x50:0x5 DW_TAG_template_type_parameter
+ .byte 5 # Abbrev [5] 0x4b:0x5 DW_TAG_template_type_parameter
.long 249 # DW_AT_type
- .byte 5 # Abbrev [5] 0x55:0x5 DW_TAG_template_type_parameter
+ .byte 5 # Abbrev [5] 0x50:0x5 DW_TAG_template_type_parameter
.long 254 # DW_AT_type
- .byte 5 # Abbrev [5] 0x5a:0x5 DW_TAG_template_type_parameter
+ .byte 5 # Abbrev [5] 0x55:0x5 DW_TAG_template_type_parameter
.long 259 # DW_AT_type
+ .byte 5 # Abbrev [5] 0x5a:0x5 DW_TAG_template_type_parameter
+ .long 264 # DW_AT_type
.byte 5 # Abbrev [5] 0x5f:0x5 DW_TAG_template_type_parameter
- .long 270 # DW_AT_type
+ .long 269 # DW_AT_type
.byte 5 # Abbrev [5] 0x64:0x5 DW_TAG_template_type_parameter
- .long 275 # DW_AT_type
- .byte 5 # Abbrev [5] 0x69:0x5 DW_TAG_template_type_parameter
.long 280 # DW_AT_type
+ .byte 5 # Abbrev [5] 0x69:0x5 DW_TAG_template_type_parameter
+ .long 285 # DW_AT_type
.byte 5 # Abbrev [5] 0x6e:0x5 DW_TAG_template_type_parameter
- .long 286 # DW_AT_type
+ .long 290 # DW_AT_type
.byte 5 # Abbrev [5] 0x73:0x5 DW_TAG_template_type_parameter
- .long 300 # DW_AT_type
+ .long 296 # DW_AT_type
.byte 5 # Abbrev [5] 0x78:0x5 DW_TAG_template_type_parameter
- .long 326 # DW_AT_type
+ .long 310 # DW_AT_type
.byte 5 # Abbrev [5] 0x7d:0x5 DW_TAG_template_type_parameter
- .long 367 # DW_AT_type
+ .long 336 # DW_AT_type
.byte 5 # Abbrev [5] 0x82:0x5 DW_TAG_template_type_parameter
- .long 372 # DW_AT_type
+ .long 377 # DW_AT_type
.byte 5 # Abbrev [5] 0x87:0x5 DW_TAG_template_type_parameter
- .long 396 # DW_AT_type
+ .long 382 # DW_AT_type
.byte 5 # Abbrev [5] 0x8c:0x5 DW_TAG_template_type_parameter
- .long 401 # DW_AT_type
+ .long 406 # DW_AT_type
.byte 5 # Abbrev [5] 0x91:0x5 DW_TAG_template_type_parameter
- .long 418 # DW_AT_type
+ .long 411 # DW_AT_type
.byte 5 # Abbrev [5] 0x96:0x5 DW_TAG_template_type_parameter
- .long 423 # DW_AT_type
+ .long 428 # DW_AT_type
.byte 5 # Abbrev [5] 0x9b:0x5 DW_TAG_template_type_parameter
- .long 430 # DW_AT_type
+ .long 433 # DW_AT_type
.byte 5 # Abbrev [5] 0xa0:0x5 DW_TAG_template_type_parameter
- .long 442 # DW_AT_type
+ .long 440 # DW_AT_type
.byte 5 # Abbrev [5] 0xa5:0x5 DW_TAG_template_type_parameter
- .long 464 # DW_AT_type
+ .long 452 # DW_AT_type
.byte 5 # Abbrev [5] 0xaa:0x5 DW_TAG_template_type_parameter
- .long 475 # DW_AT_type
+ .long 474 # DW_AT_type
.byte 5 # Abbrev [5] 0xaf:0x5 DW_TAG_template_type_parameter
- .long 480 # DW_AT_type
+ .long 485 # DW_AT_type
.byte 5 # Abbrev [5] 0xb4:0x5 DW_TAG_template_type_parameter
- .long 486 # DW_AT_type
+ .long 490 # DW_AT_type
.byte 5 # Abbrev [5] 0xb9:0x5 DW_TAG_template_type_parameter
- .long 497 # DW_AT_type
+ .long 496 # DW_AT_type
.byte 5 # Abbrev [5] 0xbe:0x5 DW_TAG_template_type_parameter
- .long 509 # DW_AT_type
+ .long 507 # DW_AT_type
.byte 5 # Abbrev [5] 0xc3:0x5 DW_TAG_template_type_parameter
- .long 544 # DW_AT_type
+ .long 519 # DW_AT_type
.byte 5 # Abbrev [5] 0xc8:0x5 DW_TAG_template_type_parameter
- .long 550 # DW_AT_type
+ .long 554 # DW_AT_type
.byte 5 # Abbrev [5] 0xcd:0x5 DW_TAG_template_type_parameter
- .long 555 # DW_AT_type
+ .long 560 # DW_AT_type
.byte 5 # Abbrev [5] 0xd2:0x5 DW_TAG_template_type_parameter
- .long 567 # DW_AT_type
+ .long 565 # DW_AT_type
.byte 5 # Abbrev [5] 0xd7:0x5 DW_TAG_template_type_parameter
- .long 572 # DW_AT_type
+ .long 577 # DW_AT_type
.byte 5 # Abbrev [5] 0xdc:0x5 DW_TAG_template_type_parameter
- .long 581 # DW_AT_type
+ .long 582 # DW_AT_type
.byte 5 # Abbrev [5] 0xe1:0x5 DW_TAG_template_type_parameter
- .long 587 # DW_AT_type
+ .long 591 # DW_AT_type
+ .byte 5 # Abbrev [5] 0xe6:0x5 DW_TAG_template_type_parameter
+ .long 597 # DW_AT_type
.byte 0 # End Of Children Mark
.byte 0 # End Of Children Mark
- .byte 6 # Abbrev [6] 0xe8:0x7 DW_TAG_base_type
+ .byte 6 # Abbrev [6] 0xed:0x7 DW_TAG_base_type
.long .Linfo_string5 # DW_AT_name
.byte 5 # DW_AT_encoding
.byte 4 # DW_AT_byte_size
- .byte 7 # Abbrev [7] 0xef:0x5 DW_TAG_reference_type
- .long 232 # DW_AT_type
- .byte 8 # Abbrev [8] 0xf4:0x5 DW_TAG_rvalue_reference_type
- .long 232 # DW_AT_type
- .byte 9 # Abbrev [9] 0xf9:0x5 DW_TAG_pointer_type
- .long 232 # DW_AT_type
- .byte 9 # Abbrev [9] 0xfe:0x5 DW_TAG_pointer_type
- .long 259 # DW_AT_type
- .byte 10 # Abbrev [10] 0x103:0x5 DW_TAG_const_type
- .long 264 # DW_AT_type
- .byte 9 # Abbrev [9] 0x108:0x5 DW_TAG_pointer_type
+ .byte 7 # Abbrev [7] 0xf4:0x5 DW_TAG_unspecified_type
+ .long .Linfo_string6 # DW_AT_name
+ .byte 8 # Abbrev [8] 0xf9:0x5 DW_TAG_reference_type
+ .long 237 # DW_AT_type
+ .byte 9 # Abbrev [9] 0xfe:0x5 DW_TAG_rvalue_reference_type
+ .long 237 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x103:0x5 DW_TAG_pointer_type
+ .long 237 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x108:0x5 DW_TAG_pointer_type
.long 269 # DW_AT_type
- .byte 11 # Abbrev [11] 0x10d:0x1 DW_TAG_const_type
- .byte 10 # Abbrev [10] 0x10e:0x5 DW_TAG_const_type
- .long 275 # DW_AT_type
- .byte 12 # Abbrev [12] 0x113:0x5 DW_TAG_volatile_type
- .long 249 # DW_AT_type
- .byte 10 # Abbrev [10] 0x118:0x5 DW_TAG_const_type
+ .byte 11 # Abbrev [11] 0x10d:0x5 DW_TAG_const_type
+ .long 274 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x112:0x5 DW_TAG_pointer_type
+ .long 279 # DW_AT_type
+ .byte 12 # Abbrev [12] 0x117:0x1 DW_TAG_const_type
+ .byte 11 # Abbrev [11] 0x118:0x5 DW_TAG_const_type
.long 285 # DW_AT_type
- .byte 13 # Abbrev [13] 0x11d:0x1 DW_TAG_pointer_type
- .byte 14 # Abbrev [14] 0x11e:0x9 DW_TAG_ptr_to_member_type
- .long 232 # DW_AT_type
- .long 295 # DW_AT_containing_type
- .byte 15 # Abbrev [15] 0x127:0x5 DW_TAG_structure_type
- .long .Linfo_string6 # DW_AT_name
+ .byte 13 # Abbrev [13] 0x11d:0x5 DW_TAG_volatile_type
+ .long 259 # DW_AT_type
+ .byte 11 # Abbrev [11] 0x122:0x5 DW_TAG_const_type
+ .long 295 # DW_AT_type
+ .byte 14 # Abbrev [14] 0x127:0x1 DW_TAG_pointer_type
+ .byte 15 # Abbrev [15] 0x128:0x9 DW_TAG_ptr_to_member_type
+ .long 237 # DW_AT_type
+ .long 305 # DW_AT_containing_type
+ .byte 16 # Abbrev [16] 0x131:0x5 DW_TAG_structure_type
+ .long .Linfo_string7 # DW_AT_name
# DW_AT_declaration
- .byte 14 # Abbrev [14] 0x12c:0x9 DW_TAG_ptr_to_member_type
- .long 309 # DW_AT_type
- .long 295 # DW_AT_containing_type
- .byte 16 # Abbrev [16] 0x135:0xc DW_TAG_subroutine_type
- .byte 17 # Abbrev [17] 0x136:0x5 DW_TAG_formal_parameter
- .long 321 # DW_AT_type
+ .byte 15 # Abbrev [15] 0x136:0x9 DW_TAG_ptr_to_member_type
+ .long 319 # DW_AT_type
+ .long 305 # DW_AT_containing_type
+ .byte 17 # Abbrev [17] 0x13f:0xc DW_TAG_subroutine_type
+ .byte 18 # Abbrev [18] 0x140:0x5 DW_TAG_formal_parameter
+ .long 331 # DW_AT_type
# DW_AT_artificial
- .byte 18 # Abbrev [18] 0x13b:0x5 DW_TAG_formal_parameter
- .long 232 # DW_AT_type
+ .byte 19 # Abbrev [19] 0x145:0x5 DW_TAG_formal_parameter
+ .long 237 # DW_AT_type
.byte 0 # End Of Children Mark
- .byte 9 # Abbrev [9] 0x141:0x5 DW_TAG_pointer_type
- .long 295 # DW_AT_type
- .byte 7 # Abbrev [7] 0x146:0x5 DW_TAG_reference_type
- .long 331 # DW_AT_type
- .byte 10 # Abbrev [10] 0x14b:0x5 DW_TAG_const_type
- .long 336 # DW_AT_type
- .byte 14 # Abbrev [14] 0x150:0x9 DW_TAG_ptr_to_member_type
- .long 345 # DW_AT_type
- .long 295 # DW_AT_containing_type
- .byte 19 # Abbrev [19] 0x159:0x7 DW_TAG_subroutine_type
+ .byte 10 # Abbrev [10] 0x14b:0x5 DW_TAG_pointer_type
+ .long 305 # DW_AT_type
+ .byte 8 # Abbrev [8] 0x150:0x5 DW_TAG_reference_type
+ .long 341 # DW_AT_type
+ .byte 11 # Abbrev [11] 0x155:0x5 DW_TAG_const_type
+ .long 346 # DW_AT_type
+ .byte 15 # Abbrev [15] 0x15a:0x9 DW_TAG_ptr_to_member_type
+ .long 355 # DW_AT_type
+ .long 305 # DW_AT_containing_type
+ .byte 20 # Abbrev [20] 0x163:0x7 DW_TAG_subroutine_type
# DW_AT_rvalue_reference
- .byte 17 # Abbrev [17] 0x15a:0x5 DW_TAG_formal_parameter
- .long 352 # DW_AT_type
+ .byte 18 # Abbrev [18] 0x164:0x5 DW_TAG_formal_parameter
+ .long 362 # DW_AT_type
# DW_AT_artificial
.byte 0 # End Of Children Mark
- .byte 9 # Abbrev [9] 0x160:0x5 DW_TAG_pointer_type
- .long 357 # DW_AT_type
- .byte 10 # Abbrev [10] 0x165:0x5 DW_TAG_const_type
- .long 362 # DW_AT_type
- .byte 12 # Abbrev [12] 0x16a:0x5 DW_TAG_volatile_type
- .long 295 # DW_AT_type
- .byte 7 # Abbrev [7] 0x16f:0x5 DW_TAG_reference_type
+ .byte 10 # Abbrev [10] 0x16a:0x5 DW_TAG_pointer_type
+ .long 367 # DW_AT_type
+ .byte 11 # Abbrev [11] 0x16f:0x5 DW_TAG_const_type
.long 372 # DW_AT_type
- .byte 10 # Abbrev [10] 0x174:0x5 DW_TAG_const_type
- .long 377 # DW_AT_type
- .byte 20 # Abbrev [20] 0x179:0xc DW_TAG_array_type
- .long 249 # DW_AT_type
- .byte 21 # Abbrev [21] 0x17e:0x6 DW_TAG_subrange_type
- .long 389 # DW_AT_type
+ .byte 13 # Abbrev [13] 0x174:0x5 DW_TAG_volatile_type
+ .long 305 # DW_AT_type
+ .byte 8 # Abbrev [8] 0x179:0x5 DW_TAG_reference_type
+ .long 382 # DW_AT_type
+ .byte 11 # Abbrev [11] 0x17e:0x5 DW_TAG_const_type
+ .long 387 # DW_AT_type
+ .byte 21 # Abbrev [21] 0x183:0xc DW_TAG_array_type
+ .long 259 # DW_AT_type
+ .byte 22 # Abbrev [22] 0x188:0x6 DW_TAG_subrange_type
+ .long 399 # DW_AT_type
.byte 1 # DW_AT_count
.byte 0 # End Of Children Mark
- .byte 22 # Abbrev [22] 0x185:0x7 DW_TAG_base_type
- .long .Linfo_string7 # DW_AT_name
+ .byte 23 # Abbrev [23] 0x18f:0x7 DW_TAG_base_type
+ .long .Linfo_string8 # DW_AT_name
.byte 8 # DW_AT_byte_size
.byte 7 # DW_AT_encoding
- .byte 7 # Abbrev [7] 0x18c:0x5 DW_TAG_reference_type
- .long 401 # DW_AT_type
- .byte 10 # Abbrev [10] 0x191:0x5 DW_TAG_const_type
- .long 406 # DW_AT_type
- .byte 20 # Abbrev [20] 0x196:0xc DW_TAG_array_type
- .long 232 # DW_AT_type
- .byte 21 # Abbrev [21] 0x19b:0x6 DW_TAG_subrange_type
- .long 389 # DW_AT_type
+ .byte 8 # Abbrev [8] 0x196:0x5 DW_TAG_reference_type
+ .long 411 # DW_AT_type
+ .byte 11 # Abbrev [11] 0x19b:0x5 DW_TAG_const_type
+ .long 416 # DW_AT_type
+ .byte 21 # Abbrev [21] 0x1a0:0xc DW_TAG_array_type
+ .long 237 # DW_AT_type
+ .byte 22 # Abbrev [22] 0x1a5:0x6 DW_TAG_subrange_type
+ .long 399 # DW_AT_type
.byte 1 # DW_AT_count
.byte 0 # End Of Children Mark
- .byte 23 # Abbrev [23] 0x1a2:0x5 DW_TAG_subroutine_type
- .long 232 # DW_AT_type
- .byte 16 # Abbrev [16] 0x1a7:0x7 DW_TAG_subroutine_type
- .byte 18 # Abbrev [18] 0x1a8:0x5 DW_TAG_formal_parameter
- .long 232 # DW_AT_type
- .byte 0 # End Of Children Mark
- .byte 16 # Abbrev [16] 0x1ae:0xc DW_TAG_subroutine_type
- .byte 18 # Abbrev [18] 0x1af:0x5 DW_TAG_formal_parameter
- .long 232 # DW_AT_type
- .byte 18 # Abbrev [18] 0x1b4:0x5 DW_TAG_formal_parameter
- .long 232 # DW_AT_type
+ .byte 24 # Abbrev [24] 0x1ac:0x5 DW_TAG_subroutine_type
+ .long 237 # DW_AT_type
+ .byte 17 # Abbrev [17] 0x1b1:0x7 DW_TAG_subroutine_type
+ .byte 19 # Abbrev [19] 0x1b2:0x5 DW_TAG_formal_parameter
+ .long 237 # DW_AT_type
.byte 0 # End Of Children Mark
- .byte 9 # Abbrev [9] 0x1ba:0x5 DW_TAG_pointer_type
- .long 447 # DW_AT_type
- .byte 16 # Abbrev [16] 0x1bf:0xc DW_TAG_subroutine_type
- .byte 18 # Abbrev [18] 0x1c0:0x5 DW_TAG_formal_parameter
- .long 459 # DW_AT_type
- .byte 18 # Abbrev [18] 0x1c5:0x5 DW_TAG_formal_parameter
- .long 232 # DW_AT_type
+ .byte 17 # Abbrev [17] 0x1b8:0xc DW_TAG_subroutine_type
+ .byte 19 # Abbrev [19] 0x1b9:0x5 DW_TAG_formal_parameter
+ .long 237 # DW_AT_type
+ .byte 19 # Abbrev [19] 0x1be:0x5 DW_TAG_formal_parameter
+ .long 237 # DW_AT_type
.byte 0 # End Of Children Mark
- .byte 9 # Abbrev [9] 0x1cb:0x5 DW_TAG_pointer_type
- .long 295 # DW_AT_type
- .byte 10 # Abbrev [10] 0x1d0:0x5 DW_TAG_const_type
+ .byte 10 # Abbrev [10] 0x1c4:0x5 DW_TAG_pointer_type
+ .long 457 # DW_AT_type
+ .byte 17 # Abbrev [17] 0x1c9:0xc DW_TAG_subroutine_type
+ .byte 19 # Abbrev [19] 0x1ca:0x5 DW_TAG_formal_parameter
.long 469 # DW_AT_type
- .byte 9 # Abbrev [9] 0x1d5:0x5 DW_TAG_pointer_type
- .long 474 # DW_AT_type
- .byte 24 # Abbrev [24] 0x1da:0x1 DW_TAG_subroutine_type
- .byte 10 # Abbrev [10] 0x1db:0x5 DW_TAG_const_type
- .long 474 # DW_AT_type
- .byte 12 # Abbrev [12] 0x1e0:0x5 DW_TAG_volatile_type
- .long 485 # DW_AT_type
- .byte 25 # Abbrev [25] 0x1e5:0x1 DW_TAG_subroutine_type
+ .byte 19 # Abbrev [19] 0x1cf:0x5 DW_TAG_formal_parameter
+ .long 237 # DW_AT_type
+ .byte 0 # End Of Children Mark
+ .byte 10 # Abbrev [10] 0x1d5:0x5 DW_TAG_pointer_type
+ .long 305 # DW_AT_type
+ .byte 11 # Abbrev [11] 0x1da:0x5 DW_TAG_const_type
+ .long 479 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x1df:0x5 DW_TAG_pointer_type
+ .long 484 # DW_AT_type
+ .byte 25 # Abbrev [25] 0x1e4:0x1 DW_TAG_subroutine_type
+ .byte 11 # Abbrev [11] 0x1e5:0x5 DW_TAG_const_type
+ .long 484 # DW_AT_type
+ .byte 13 # Abbrev [13] 0x1ea:0x5 DW_TAG_volatile_type
+ .long 495 # DW_AT_type
+ .byte 26 # Abbrev [26] 0x1ef:0x1 DW_TAG_subroutine_type
# DW_AT_rvalue_reference
- .byte 10 # Abbrev [10] 0x1e6:0x5 DW_TAG_const_type
- .long 491 # DW_AT_type
- .byte 12 # Abbrev [12] 0x1eb:0x5 DW_TAG_volatile_type
- .long 496 # DW_AT_type
- .byte 26 # Abbrev [26] 0x1f0:0x1 DW_TAG_subroutine_type
+ .byte 11 # Abbrev [11] 0x1f0:0x5 DW_TAG_const_type
+ .long 501 # DW_AT_type
+ .byte 13 # Abbrev [13] 0x1f5:0x5 DW_TAG_volatile_type
+ .long 506 # DW_AT_type
+ .byte 27 # Abbrev [27] 0x1fa:0x1 DW_TAG_subroutine_type
# DW_AT_reference
- .byte 16 # Abbrev [16] 0x1f1:0x7 DW_TAG_subroutine_type
- .byte 18 # Abbrev [18] 0x1f2:0x5 DW_TAG_formal_parameter
- .long 504 # DW_AT_type
+ .byte 17 # Abbrev [17] 0x1fb:0x7 DW_TAG_subroutine_type
+ .byte 19 # Abbrev [19] 0x1fc:0x5 DW_TAG_formal_parameter
+ .long 514 # DW_AT_type
.byte 0 # End Of Children Mark
- .byte 9 # Abbrev [9] 0x1f8:0x5 DW_TAG_pointer_type
- .long 357 # DW_AT_type
- .byte 27 # Abbrev [27] 0x1fd:0xb DW_TAG_subroutine_type
- .long 520 # DW_AT_type
- .byte 18 # Abbrev [18] 0x202:0x5 DW_TAG_formal_parameter
- .long 232 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x202:0x5 DW_TAG_pointer_type
+ .long 367 # DW_AT_type
+ .byte 28 # Abbrev [28] 0x207:0xb DW_TAG_subroutine_type
+ .long 530 # DW_AT_type
+ .byte 19 # Abbrev [19] 0x20c:0x5 DW_TAG_formal_parameter
+ .long 237 # DW_AT_type
.byte 0 # End Of Children Mark
- .byte 9 # Abbrev [9] 0x208:0x5 DW_TAG_pointer_type
- .long 525 # DW_AT_type
- .byte 16 # Abbrev [16] 0x20d:0x7 DW_TAG_subroutine_type
- .byte 18 # Abbrev [18] 0x20e:0x5 DW_TAG_formal_parameter
- .long 532 # DW_AT_type
+ .byte 10 # Abbrev [10] 0x212:0x5 DW_TAG_pointer_type
+ .long 535 # DW_AT_type
+ .byte 17 # Abbrev [17] 0x217:0x7 DW_TAG_subroutine_type
+ .byte 19 # Abbrev [19] 0x218:0x5 DW_TAG_formal_parameter
+ .long 542 # DW_AT_type
.byte 0 # End Of Children Mark
- .byte 6 # Abbrev [6] 0x214:0x7 DW_TAG_base_type
- .long .Linfo_string8 # DW_AT_name
+ .byte 6 # Abbrev [6] 0x21e:0x7 DW_TAG_base_type
+ .long .Linfo_string9 # DW_AT_name
.byte 4 # DW_AT_encoding
.byte 4 # DW_AT_byte_size
- .byte 28 # Abbrev [28] 0x21b:0xb DW_TAG_namespace
- .long .Linfo_string9 # DW_AT_name
- .byte 15 # Abbrev [15] 0x220:0x5 DW_TAG_structure_type
+ .byte 29 # Abbrev [29] 0x225:0xb DW_TAG_namespace
.long .Linfo_string10 # DW_AT_name
+ .byte 16 # Abbrev [16] 0x22a:0x5 DW_TAG_structure_type
+ .long .Linfo_string11 # DW_AT_name
# DW_AT_declaration
.byte 0 # End Of Children Mark
- .byte 23 # Abbrev [23] 0x226:0x5 DW_TAG_subroutine_type
- .long 544 # DW_AT_type
- .byte 20 # Abbrev [20] 0x22b:0xc DW_TAG_array_type
- .long 544 # DW_AT_type
- .byte 21 # Abbrev [21] 0x230:0x6 DW_TAG_subrange_type
- .long 389 # DW_AT_type
+ .byte 24 # Abbrev [24] 0x230:0x5 DW_TAG_subroutine_type
+ .long 554 # DW_AT_type
+ .byte 21 # Abbrev [21] 0x235:0xc DW_TAG_array_type
+ .long 554 # DW_AT_type
+ .byte 22 # Abbrev [22] 0x23a:0x6 DW_TAG_subrange_type
+ .long 399 # DW_AT_type
.byte 1 # DW_AT_count
.byte 0 # End Of Children Mark
- .byte 9 # Abbrev [9] 0x237:0x5 DW_TAG_pointer_type
- .long 544 # DW_AT_type
- .byte 14 # Abbrev [14] 0x23c:0x9 DW_TAG_ptr_to_member_type
- .long 544 # DW_AT_type
- .long 544 # DW_AT_containing_type
- .byte 10 # Abbrev [10] 0x245:0x5 DW_TAG_const_type
- .long 544 # DW_AT_type
- .byte 29 # Abbrev [29] 0x24a:0x7 DW_TAG_namespace
- .byte 15 # Abbrev [15] 0x24b:0x5 DW_TAG_structure_type
- .long .Linfo_string11 # DW_AT_name
+ .byte 10 # Abbrev [10] 0x241:0x5 DW_TAG_pointer_type
+ .long 554 # DW_AT_type
+ .byte 15 # Abbrev [15] 0x246:0x9 DW_TAG_ptr_to_member_type
+ .long 554 # DW_AT_type
+ .long 554 # DW_AT_containing_type
+ .byte 11 # Abbrev [11] 0x24f:0x5 DW_TAG_const_type
+ .long 554 # DW_AT_type
+ .byte 30 # Abbrev [30] 0x254:0x7 DW_TAG_namespace
+ .byte 16 # Abbrev [16] 0x255:0x5 DW_TAG_structure_type
+ .long .Linfo_string12 # DW_AT_name
# DW_AT_declaration
.byte 0 # End Of Children Mark
.byte 0 # End Of Children Mark
.Ldebug_info_end0:
.section .debug_str,"MS", at progbits,1
.Linfo_string0:
- .asciz "clang version 14.0.0 (git at github.com:llvm/llvm-project.git 51eba07e98b79a47d54e4fb36a3812cf3c91c667)" # string offset=0
+ .asciz "clang version 14.0.0 (git at github.com:llvm/llvm-project.git 3d6f4552349be047bc0e631733f3deaf311ea17b)" # string offset=0
.Linfo_string1:
.asciz "test.cpp" # string offset=101
.Linfo_string2:
@@ -620,20 +637,22 @@
.Linfo_string5:
.asciz "int" # string offset=159
.Linfo_string6:
- .asciz "foo" # string offset=163
+ .asciz "decltype(nullptr)" # string offset=163
.Linfo_string7:
- .asciz "__ARRAY_SIZE_TYPE__" # string offset=167
+ .asciz "foo" # string offset=181
.Linfo_string8:
- .asciz "float" # string offset=187
+ .asciz "__ARRAY_SIZE_TYPE__" # string offset=185
.Linfo_string9:
- .asciz "ns" # string offset=193
+ .asciz "float" # string offset=205
.Linfo_string10:
- .asciz "inner" # string offset=196
+ .asciz "ns" # string offset=211
.Linfo_string11:
- .asciz "anon_ns_mem" # string offset=202
+ .asciz "inner" # string offset=214
.Linfo_string12:
- .asciz "t1" # string offset=214
- .ident "clang version 14.0.0 (git at github.com:llvm/llvm-project.git 51eba07e98b79a47d54e4fb36a3812cf3c91c667)"
+ .asciz "anon_ns_mem" # string offset=220
+.Linfo_string13:
+ .asciz "t1" # string offset=232
+ .ident "clang version 14.0.0 (git at github.com:llvm/llvm-project.git 3d6f4552349be047bc0e631733f3deaf311ea17b)"
.section ".note.GNU-stack","", at progbits
.addrsig
.addrsig_sym v1
More information about the llvm-commits
mailing list