[llvm] [AsmPrinter][DebugNames] Implement DW_IDX_parent entries (PR #77457)

Adrian Prantl via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 9 10:54:02 PST 2024


================
@@ -520,20 +590,34 @@ void Dwarf5AccelTableWriter::emitEntry(
       assert(AttrEnc.Form == dwarf::DW_FORM_ref4);
       Asm->emitInt32(Entry.getDieOffset());
       break;
+    case dwarf::DW_IDX_parent: {
+      if (AttrEnc.Form == dwarf::Form::DW_FORM_flag_present)
+        break;
+      auto ParentSymbolIt = DIEOffsetToAccelEntryLabel.find(*MaybeParentOffset);
+      assert(ParentSymbolIt != DIEOffsetToAccelEntryLabel.end());
+      Asm->emitLabelDifference(ParentSymbolIt->getSecond(), EntryPool, 4);
+      break;
+    }
     default:
       llvm_unreachable("Unexpected index attribute!");
     }
   }
 }
 
-void Dwarf5AccelTableWriter::emitData() const {
+void Dwarf5AccelTableWriter::emitData() {
+  DenseMap<uint64_t, MCSymbol *> DIEOffsetToAccelEntryLabel;
+
+  for (auto Offset : IndexedOffsets)
+    DIEOffsetToAccelEntryLabel[Offset] = Asm->createTempSymbol("symbol");
----------------
adrian-prantl wrote:

would .insert({Offset, Asm->...}) also work here?

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


More information about the llvm-commits mailing list