[llvm] [BOLT][DWARF][NFC] Split processUnitDIE into two lambdas (PR #99225)

Alexander Yermolovich via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 16 15:46:28 PDT 2024


================
@@ -768,17 +773,35 @@ void DWARFRewriter::updateDebugInfo() {
     CUPartitionVector PartVec = partitionCUs(*BC.DwCtx);
     for (std::vector<DWARFUnit *> &Vec : PartVec) {
       DIEBlder.buildCompileUnits(Vec);
-      for (DWARFUnit *CU : DIEBlder.getProcessedCUs())
-        processUnitDIE(CU, &DIEBlder);
+      llvm::SmallVector<DWARFUnit *> CompileUnits(
+          std::begin(DIEBlder.getProcessedCUs()),
+          std::end(DIEBlder.getProcessedCUs()));
+      llvm::DenseMap<uint64_t, uint64_t> RangesBaseByCU;
+      llvm::DenseMap<uint64_t, uint64_t> LocListWritersIndexByCU;
+      for (DWARFUnit *CU : CompileUnits) {
+        createRangeLocListAddressWriters(*CU, LocListWritersIndexByCU);
+        std::optional<uint64_t> RangesBase;
+        processSplitCU(CU, &DIEBlder, RangesBase);
+        if (RangesBase)
+          RangesBaseByCU[CU->getOffset()] = *RangesBase;
+      }
+      for (DWARFUnit *CU : CompileUnits) {
+        std::optional<uint64_t> RangesBase;
+        if (RangesBaseByCU.count(CU->getOffset()))
----------------
ayermolo wrote:

User iterator to check and get if exists.

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


More information about the llvm-commits mailing list