llvm-project
d3ac9b5c - [RFC][BOLT] Add a new parallel DWARF processing(2/2) (#197859)

Commit
40 days ago
[RFC][BOLT] Add a new parallel DWARF processing(2/2) (#197859) This PR implements a new parallel DWARF debug info processing pipeline for BOLT that significantly speeds up `--update-debug-sections` for large binaries. It is the second part of the split from the overall RFC changes RFC - [[RFC][BOLT] A New Parallel DWARF Processing Approach in BOLT](https://discourse.llvm.org/t/rfc-bolt-a-new-parallel-dwarf-processing-approach-in-bolt/90736) (The overall changes.) This PR does the following: 1. **Equivalence-class CU partitioning:** Replaces batchsize grouping with union-find over DW_FORM_ref_addr references. Connected CUs share a bucket; isolated CUs become singletons. > For the non-LTO case, CUs have no cross-CU dependencies, so each CU is placed into its own singleton bucket and processed fully in parallel. > For the LTO case, CUs with cross-CU dependencies are grouped into the same bucket and processed sequentially within that bucket, while different buckets are still processed in parallel. 2. **Per-bucket parallel processing with in-order merge:** Each bucket gets its own DIEBuilder and local range/loc writers; completed buckets are then merged sequentially in partition order, applying offset fixups and emitting CUs to ensure deterministic output. 3. **Add main-binary parallel process** : Main-binary CU update and split-DWO processing both happen within the same per-bucket task.
Author
Parents
Loading