Skip to content

Commit da9e927

Browse files
committed
[LLVM][DWARF] Chnage order for .debug_names abbrev print out
This stemps from conversatin in: #77457 (comment). Right now Abbrev code for abbrev is combination of DIE TAG and other attributes. In the future it will be changed to be an index. Since DenseSet does not preserve an order, added a sort based on abbrev code. Once change to index is made, it will print out abbrevs in the order they are stored.
1 parent e296ced commit da9e927

File tree

3 files changed

+25
-18
lines changed

3 files changed

+25
-18
lines changed

llvm/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -847,8 +847,15 @@ void DWARFDebugNames::NameIndex::dumpForeignTUs(ScopedPrinter &W) const {
847847

848848
void DWARFDebugNames::NameIndex::dumpAbbreviations(ScopedPrinter &W) const {
849849
ListScope AbbrevsScope(W, "Abbreviations");
850-
for (const auto &Abbr : Abbrevs)
851-
Abbr.dump(W);
850+
std::vector<const Abbrev *> AbbrevsVect;
851+
for (const llvm::DWARFDebugNames::Abbrev &Abbr : Abbrevs)
852+
AbbrevsVect.push_back(&Abbr);
853+
std::sort(AbbrevsVect.begin(), AbbrevsVect.end(),
854+
[](const Abbrev *LHS, const Abbrev *RHS) {
855+
return LHS->Code < RHS->Code;
856+
});
857+
for (const llvm::DWARFDebugNames::Abbrev *Abbr : AbbrevsVect)
858+
Abbr->dump(W);
852859
}
853860

854861
void DWARFDebugNames::NameIndex::dumpBucket(ScopedPrinter &W,

llvm/test/DebugInfo/X86/debug-names-dwarf64.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@
4040
; CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref4
4141
; CHECK-NEXT: DW_IDX_parent: DW_FORM_flag_present
4242
; CHECK-NEXT: }
43-
; CHECK-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] {
44-
; CHECK-NEXT: Tag: DW_TAG_variable
43+
; CHECK-NEXT: Abbreviation [[ABBREV_SP:0x[0-9a-f]*]] {
44+
; CHECK-NEXT: Tag: DW_TAG_subprogram
4545
; CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref4
4646
; CHECK-NEXT: DW_IDX_parent: DW_FORM_flag_present
4747
; CHECK-NEXT: }
48-
; CHECK-NEXT: Abbreviation [[ABBREV_SP:0x[0-9a-f]*]] {
49-
; CHECK-NEXT: Tag: DW_TAG_subprogram
48+
; CHECK-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] {
49+
; CHECK-NEXT: Tag: DW_TAG_variable
5050
; CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref4
5151
; CHECK-NEXT: DW_IDX_parent: DW_FORM_flag_present
5252
; CHECK-NEXT: }

llvm/test/DebugInfo/X86/debug-names-types.ll

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,13 @@
3737
; CHECK-NEXT: LocalTU[0]: 0x00000000
3838
; CHECK-NEXT: ]
3939
; CHECK: Abbreviations [
40-
; CHECK-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] {
40+
; CHECK-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] {
4141
; CHECK-NEXT: Tag: DW_TAG_structure_type
42-
; CHECK-NEXT: DW_IDX_type_unit: DW_FORM_data1
4342
; CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref4
4443
; CHECK-NEXT: DW_IDX_parent: DW_FORM_flag_present
4544
; CHECK-NEXT: }
46-
; CHECK-NEXT: Abbreviation [[ABBREV4:0x[0-9a-f]*]] {
47-
; CHECK-NEXT: Tag: DW_TAG_base_type
45+
; CHECK-NEXT: Abbreviation [[ABBREV3:0x[0-9a-f]*]] {
46+
; CHECK-NEXT: Tag: DW_TAG_structure_type
4847
; CHECK-NEXT: DW_IDX_type_unit: DW_FORM_data1
4948
; CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref4
5049
; CHECK-NEXT: DW_IDX_parent: DW_FORM_flag_present
@@ -54,8 +53,9 @@
5453
; CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref4
5554
; CHECK-NEXT: DW_IDX_parent: DW_FORM_flag_present
5655
; CHECK-NEXT: }
57-
; CHECK-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] {
58-
; CHECK-NEXT: Tag: DW_TAG_structure_type
56+
; CHECK-NEXT: Abbreviation [[ABBREV4:0x[0-9a-f]*]] {
57+
; CHECK-NEXT: Tag: DW_TAG_base_type
58+
; CHECK-NEXT: DW_IDX_type_unit: DW_FORM_data1
5959
; CHECK-NEXT: DW_IDX_die_offset: DW_FORM_ref4
6060
; CHECK-NEXT: DW_IDX_parent: DW_FORM_flag_present
6161
; CHECK-NEXT: }
@@ -140,14 +140,13 @@
140140
; CHECK-SPLIT-NEXT: ForeignTU[0]: 0x675d23e4f33235f2
141141
; CHECK-SPLIT-NEXT: ]
142142
; CHECK-SPLIT-NEXT: Abbreviations [
143-
; CHECK-SPLIT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] {
143+
; CHECK-SPLIT-NEXT: Abbreviation [[ABBREV:0x[0-9a-f]*]] {
144144
; CHECK-SPLIT-NEXT: Tag: DW_TAG_structure_type
145-
; CHECK-SPLIT-NEXT: DW_IDX_type_unit: DW_FORM_data1
146145
; CHECK-SPLIT-NEXT: DW_IDX_die_offset: DW_FORM_ref4
147146
; CHECK-SPLIT-NEXT: DW_IDX_parent: DW_FORM_flag_present
148147
; CHECK-SPLIT-NEXT: }
149-
; CHECK-SPLIT-NEXT: Abbreviation [[ABBREV4:0x[0-9a-f]*]] {
150-
; CHECK-SPLIT-NEXT: Tag: DW_TAG_base_type
148+
; CHECK-SPLIT-NEXT: Abbreviation [[ABBREV1:0x[0-9a-f]*]] {
149+
; CHECK-SPLIT-NEXT: Tag: DW_TAG_structure_type
151150
; CHECK-SPLIT-NEXT: DW_IDX_type_unit: DW_FORM_data1
152151
; CHECK-SPLIT-NEXT: DW_IDX_die_offset: DW_FORM_ref4
153152
; CHECK-SPLIT-NEXT: DW_IDX_parent: DW_FORM_flag_present
@@ -157,8 +156,9 @@
157156
; CHECK-SPLIT-NEXT: DW_IDX_die_offset: DW_FORM_ref4
158157
; CHECK-SPLIT-NEXT: DW_IDX_parent: DW_FORM_flag_present
159158
; CHECK-SPLIT-NEXT: }
160-
; CHECK-SPLIT-NEXT: Abbreviation [[ABBREV:0x[0-9a-f]*]] {
161-
; CHECK-SPLIT-NEXT: Tag: DW_TAG_structure_type
159+
; CHECK-SPLIT-NEXT: Abbreviation [[ABBREV4:0x[0-9a-f]*]] {
160+
; CHECK-SPLIT-NEXT: Tag: DW_TAG_base_type
161+
; CHECK-SPLIT-NEXT: DW_IDX_type_unit: DW_FORM_data1
162162
; CHECK-SPLIT-NEXT: DW_IDX_die_offset: DW_FORM_ref4
163163
; CHECK-SPLIT-NEXT: DW_IDX_parent: DW_FORM_flag_present
164164
; CHECK-SPLIT-NEXT: }

0 commit comments

Comments
 (0)