diff options
author | Alexander Yermolovich <43973793+ayermolo@users.noreply.github.com> | 2023-10-25 12:39:28 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-25 12:39:28 -0700 |
commit | da27c25c19faef008c992a68387efcdc9fc0adb4 (patch) | |
tree | 688b2945fc935d1e90652c056af1e9e8292a2e59 /llvm/lib/CodeGen/AsmPrinter/AccelTable.cpp | |
parent | d32e801d74fae1cbe9cf256a81def6ee9c2b4153 (diff) | |
download | llvm-da27c25c19faef008c992a68387efcdc9fc0adb4.zip llvm-da27c25c19faef008c992a68387efcdc9fc0adb4.tar.gz llvm-da27c25c19faef008c992a68387efcdc9fc0adb4.tar.bz2 |
[LLVM[NFC] Refactor to allow debug_names entries to conatain DIE offset (#69399)
This is pre-cursor patch to enabling type units with DWARF5 acceleration
tables.
With this change it allows for entries to contain offsets directly, this
way type
units do not need to be preserved until .debug_names is written out.
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/AccelTable.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/AccelTable.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/AccelTable.cpp b/llvm/lib/CodeGen/AsmPrinter/AccelTable.cpp index 88d5487..e393951 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AccelTable.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AccelTable.cpp @@ -357,6 +357,10 @@ void AppleAccelTableWriter::emit() const { emitData(); } +DWARF5AccelTableData::DWARF5AccelTableData(const DIE &Die, + const DwarfCompileUnit &CU) + : OffsetVal(&Die), DieTag(Die.getTag()), UnitID(CU.getUniqueID()) {} + template <typename DataT> void Dwarf5AccelTableWriter<DataT>::Header::emit(Dwarf5AccelTableWriter &Ctx) { assert(CompUnitCount > 0 && "Index must have at least one CU."); @@ -545,8 +549,8 @@ void llvm::emitAppleAccelTableImpl(AsmPrinter *Asm, AccelTableBase &Contents, } void llvm::emitDWARF5AccelTable( - AsmPrinter *Asm, AccelTable<DWARF5AccelTableData> &Contents, - const DwarfDebug &DD, ArrayRef<std::unique_ptr<DwarfCompileUnit>> CUs) { + AsmPrinter *Asm, DWARF5AccelTable &Contents, const DwarfDebug &DD, + ArrayRef<std::unique_ptr<DwarfCompileUnit>> CUs) { std::vector<std::variant<MCSymbol *, uint64_t>> CompUnits; SmallVector<unsigned, 1> CUIndex(CUs.size()); int Count = 0; @@ -575,20 +579,19 @@ void llvm::emitDWARF5AccelTable( Dwarf5AccelTableWriter<DWARF5AccelTableData>( Asm, Contents, CompUnits, [&](const DWARF5AccelTableData &Entry) { - const DIE *CUDie = Entry.getDie().getUnitDie(); - return CUIndex[DD.lookupCU(CUDie)->getUniqueID()]; + return CUIndex[Entry.getUnitID()]; }) .emit(); } void llvm::emitDWARF5AccelTable( - AsmPrinter *Asm, AccelTable<DWARF5AccelTableStaticData> &Contents, + AsmPrinter *Asm, DWARF5AccelTable &Contents, ArrayRef<std::variant<MCSymbol *, uint64_t>> CUs, - llvm::function_ref<unsigned(const DWARF5AccelTableStaticData &)> + llvm::function_ref<unsigned(const DWARF5AccelTableData &)> getCUIndexForEntry) { Contents.finalize(Asm, "names"); - Dwarf5AccelTableWriter<DWARF5AccelTableStaticData>(Asm, Contents, CUs, - getCUIndexForEntry) + Dwarf5AccelTableWriter<DWARF5AccelTableData>(Asm, Contents, CUs, + getCUIndexForEntry) .emit(); } @@ -687,11 +690,6 @@ void DWARF5AccelTableData::print(raw_ostream &OS) const { OS << " Tag: " << dwarf::TagString(getDieTag()) << "\n"; } -void DWARF5AccelTableStaticData::print(raw_ostream &OS) const { - OS << " Offset: " << getDieOffset() << "\n"; - OS << " Tag: " << dwarf::TagString(getDieTag()) << "\n"; -} - void AppleAccelTableOffsetData::print(raw_ostream &OS) const { OS << " Offset: " << Die.getOffset() << "\n"; } |