[llvm] [CodeGen] Remove `applySplitCriticalEdges` in `MachineDominatorTree` (PR #97055)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 11 00:22:44 PDT 2024
================
@@ -1338,9 +1340,17 @@ MachineBasicBlock *MachineBasicBlock::SplitCriticalEdge(
LIS->repairIntervalsInRange(this, getFirstTerminator(), end(), UsedRegs);
}
- if (auto *MDTWrapper =
- P.getAnalysisIfAvailable<MachineDominatorTreeWrapperPass>())
- MDTWrapper->getDomTree().recordSplitCriticalEdge(this, Succ, NMBB);
+ auto *MDTWrapper =
+ P.getAnalysisIfAvailable<MachineDominatorTreeWrapperPass>();
+ auto *MPDTWrapper =
+ P.getAnalysisIfAvailable<MachinePostDominatorTreeWrapperPass>();
+ auto *MDT = MDTWrapper ? &MDTWrapper->getDomTree() : nullptr;
+ auto *MPDT = MPDTWrapper ? &MPDTWrapper->getPostDomTree() : nullptr;
+ MachineDomTreeUpdater MDTU(MDT, MPDT,
+ MachineDomTreeUpdater::UpdateStrategy::Eager);
+ MDTU.applyUpdates({{MachineDominatorTree::Insert, this, NMBB},
+ {MachineDominatorTree::Insert, NMBB, Succ},
+ {MachineDominatorTree::Delete, this, Succ}});
----------------
nikic wrote:
This means that you are now doing DT updates for critical edge splitting one by one, instead of batching many together.
https://github.com/llvm/llvm-project/pull/97055
More information about the llvm-commits
mailing list