[llvm] [LLVM[NFC] Refactor to allow debug_names entries to conatain DIE offset (PR #69399)

Alexander Yermolovich via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 18 15:59:06 PDT 2023


================
@@ -252,20 +252,27 @@ class DWARF5AccelTableData : public AccelTableData {
 public:
   static uint32_t hash(StringRef Name) { return caseFoldingDjbHash(Name); }
 
-  DWARF5AccelTableData(const DIE &Die) : Die(Die) {}
+  DWARF5AccelTableData(const DIE &Die, const DwarfCompileUnit &CU);
 
 #ifndef NDEBUG
   void print(raw_ostream &OS) const override;
 #endif
 
-  const DIE &getDie() const { return Die; }
-  uint64_t getDieOffset() const { return Die.getOffset(); }
-  unsigned getDieTag() const { return Die.getTag(); }
+  uint64_t getDieOffset() const {
+    if (const DIE *const *TDie = std::get_if<const DIE *>(&OffsetVal))
+      return (*TDie)->getOffset();
+    return std::get<uint64_t>(OffsetVal);
+  }
+  unsigned getDieTag() const { return Tag; }
+  unsigned getUnitID() const { return UnitID; }
+  void normalizeDIEToOffset() { OffsetVal = getDieOffset(); }
 
 protected:
-  const DIE &Die;
+  std::variant<const DIE *, uint64_t> OffsetVal;
+  dwarf::Tag Tag;
+  unsigned UnitID;
----------------
ayermolo wrote:

If it's a blocker I can redesign, but personally I think trying to squeeze most bits out just leads to a more fragile implementation. Plus cool c++ features. :D

Running llc on sema bitcode:
time ~/local/llvm-build-upstream-release/bin/llc -filetype=obj tools/clang/lib/Sema/CMakeFiles/obj.clangSema.dir/Sema.cpp.ir.o -dwarf-version=5 -mtriple x86_64-pc-linux -o foo.o
with refactor

0:05.98 real,   5.80 user,      0.17 sys,       0 amem, 297044 mmem

0:06.18 real,   6.00 user,      0.17 sys,       0 amem, 296656 mmem

0:05.85 real,   5.69 user,      0.15 sys,       0 amem, 297264 mmem



main

0:05.52 real,   5.33 user,      0.17 sys,       0 amem, 297412 mmem

0:05.99 real,   5.82 user,      0.16 sys,       0 amem, 297068 mmem

0:05.87 real,   5.69 user,      0.16 sys,       0 amem, 297080 mmem

Seems like these changes fall under noise?

https://github.com/llvm/llvm-project/pull/69399


More information about the llvm-commits mailing list