aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/AsmPrinter/AccelTable.cpp
diff options
context:
space:
mode:
authorAlexander Yermolovich <43973793+ayermolo@users.noreply.github.com>2023-10-25 12:39:28 -0700
committerGitHub <noreply@github.com>2023-10-25 12:39:28 -0700
commitda27c25c19faef008c992a68387efcdc9fc0adb4 (patch)
tree688b2945fc935d1e90652c056af1e9e8292a2e59 /llvm/lib/CodeGen/AsmPrinter/AccelTable.cpp
parentd32e801d74fae1cbe9cf256a81def6ee9c2b4153 (diff)
downloadllvm-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.cpp24
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";
}