mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-18 19:06:44 +00:00
[BOLT][DWARF] Sort GDBIndexTUEntryVector (#101264)
Sorts GDBIndexTUEntryVector in decreasing order by hash to ensure determinism when parallelized.
This commit is contained in:
parent
d0b4b6b12d
commit
33960ce5a8
@ -53,6 +53,14 @@ public:
|
||||
const GDBIndexTUEntryType &getGDBIndexTUEntryVector() const {
|
||||
return GDBIndexTUEntryVector;
|
||||
}
|
||||
|
||||
/// Sorts entries in GDBIndexTUEntryVector according to the TypeHash.
|
||||
void sortGDBIndexTUEntryVector() {
|
||||
llvm::stable_sort(GDBIndexTUEntryVector, [](const GDBIndexTUEntry &LHS,
|
||||
const GDBIndexTUEntry &RHS) {
|
||||
return LHS.TypeHash > RHS.TypeHash;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace bolt
|
||||
|
@ -23,7 +23,6 @@ void GDBIndex::updateGdbIndexSection(
|
||||
DebugARangesSectionWriter &ARangesSectionWriter) {
|
||||
if (!BC.getGdbIndexSection())
|
||||
return;
|
||||
|
||||
// See https://sourceware.org/gdb/onlinedocs/gdb/Index-Section-Format.html
|
||||
// for .gdb_index section format.
|
||||
|
||||
@ -141,7 +140,7 @@ void GDBIndex::updateGdbIndexSection(
|
||||
write64le(Buffer + 8, CUInfo.second.Length + 4);
|
||||
Buffer += 16;
|
||||
}
|
||||
|
||||
sortGDBIndexTUEntryVector();
|
||||
// Rewrite TU CU List, since abbrevs can be different.
|
||||
// Entry example:
|
||||
// 0: offset = 0x00000000, type_offset = 0x0000001e, type_signature =
|
||||
|
@ -17,10 +17,10 @@
|
||||
# POSTCHECK-NEXT: 0: Offset = 0x0, Length = 0x34
|
||||
# POSTCHECK-NEXT: 1: Offset = 0x34, Length = 0x34
|
||||
# POSTCHECK: Types CU list offset = 0x38, has 4 entries
|
||||
# POSTCHECK-NEXT: 0: offset = 0x00000000, type_offset = 0x0000001e, type_signature = 0x675d23e4f33235f2
|
||||
# POSTCHECK-NEXT: 1: offset = 0x0000004a, type_offset = 0x0000001e, type_signature = 0x49dc260088be7e56
|
||||
# POSTCHECK-NEXT: 2: offset = 0x00000000, type_offset = 0x0000001e, type_signature = 0x104ec427d2ebea6f
|
||||
# POSTCHECK-NEXT: 3: offset = 0x0000004a, type_offset = 0x0000001e, type_signature = 0xb4580bc1535df1e4
|
||||
# POSTCHECK-NEXT: 0: offset = 0x0000004a, type_offset = 0x0000001e, type_signature = 0xb4580bc1535df1e4
|
||||
# POSTCHECK-NEXT: 1: offset = 0x00000000, type_offset = 0x0000001e, type_signature = 0x675d23e4f33235f2
|
||||
# POSTCHECK-NEXT: 2: offset = 0x0000004a, type_offset = 0x0000001e, type_signature = 0x49dc260088be7e56
|
||||
# POSTCHECK-NEXT: 3: offset = 0x00000000, type_offset = 0x0000001e, type_signature = 0x104ec427d2ebea6f
|
||||
# POSTCHECK: Address area offset = 0x98, has 2 entries
|
||||
# POSTCHECK-NEXT: Low/High address = [0x[[#%.4x,ADDR:]],
|
||||
# POSTCHECK-SAME: 0x[[#ADDR + 0x7a]]) (Size: 0x7a), CU id = 0
|
||||
|
Loading…
x
Reference in New Issue
Block a user