Skip to content

Commit 40d987b

Browse files
fixup! only update dom tree if needed
1 parent 0f6e12f commit 40d987b

File tree

3 files changed

+8
-6
lines changed

3 files changed

+8
-6
lines changed

llvm/lib/CodeGen/PeepholeOptimizer.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,8 @@ class PeepholeOptimizerLegacy : public MachineFunctionPass {
570570
void getAnalysisUsage(AnalysisUsage &AU) const override {
571571
MachineFunctionPass::getAnalysisUsage(AU);
572572
AU.addRequired<MachineLoopInfoWrapperPass>();
573-
AU.addRequired<MachineDominatorTreeWrapperPass>();
573+
if (Aggressive)
574+
AU.addRequired<MachineDominatorTreeWrapperPass>();
574575
}
575576

576577
MachineFunctionProperties getRequiredProperties() const override {
@@ -1647,7 +1648,8 @@ PreservedAnalyses
16471648
PeepholeOptimizerPass::run(MachineFunction &MF,
16481649
MachineFunctionAnalysisManager &MFAM) {
16491650
MFPropsModifier _(*this, MF);
1650-
auto *DT = &MFAM.getResult<MachineDominatorTreeAnalysis>(MF);
1651+
auto *DT =
1652+
Aggressive ? &MFAM.getResult<MachineDominatorTreeAnalysis>(MF) : nullptr;
16511653
auto *MLI = &MFAM.getResult<MachineLoopAnalysis>(MF);
16521654
PeepholeOptimizer Impl(DT, MLI);
16531655
bool Changed = Impl.run(MF);
@@ -1660,7 +1662,9 @@ PeepholeOptimizerPass::run(MachineFunction &MF,
16601662
bool PeepholeOptimizerLegacy::runOnMachineFunction(MachineFunction &MF) {
16611663
if (skipFunction(MF.getFunction()))
16621664
return false;
1663-
auto *DT = &getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree();
1665+
auto *DT = Aggressive
1666+
? &getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree()
1667+
: nullptr;
16641668
auto *MLI = &getAnalysis<MachineLoopInfoWrapperPass>().getLI();
16651669
PeepholeOptimizer Impl(DT, MLI);
16661670
return Impl.run(MF);
@@ -1790,7 +1794,7 @@ bool PeepholeOptimizer::run(MachineFunction &MF) {
17901794
MachineInstr *Dead = &*MII;
17911795
++MII;
17921796
MachineBasicBlock *DeadDest = TII->getBranchDestBlock(*Dead);
1793-
if (TII->getBranchDestBlock(*NewBr)!= DeadDest)
1797+
if (DT && TII->getBranchDestBlock(*NewBr) != DeadDest)
17941798
DT->deleteEdge(&MBB, DeadDest);
17951799
Dead->eraseFromParent();
17961800
}

llvm/test/CodeGen/AArch64/O3-pipeline.ll

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@
158158
; CHECK-NEXT: MachinePostDominator Tree Construction
159159
; CHECK-NEXT: Machine Cycle Info Analysis
160160
; CHECK-NEXT: Machine code sinking
161-
; CHECK-NEXT: MachineDominator Tree Construction
162161
; CHECK-NEXT: Peephole Optimizations
163162
; CHECK-NEXT: Remove dead machine instructions
164163
; CHECK-NEXT: AArch64 MI Peephole Optimization pass

llvm/test/CodeGen/RISCV/O3-pipeline.ll

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@
115115
; CHECK-NEXT: MachinePostDominator Tree Construction
116116
; CHECK-NEXT: Machine Cycle Info Analysis
117117
; CHECK-NEXT: Machine code sinking
118-
; CHECK-NEXT: MachineDominator Tree Construction
119118
; CHECK-NEXT: Peephole Optimizations
120119
; CHECK-NEXT: Remove dead machine instructions
121120
; CHECK-NEXT: Machine Trace Metrics

0 commit comments

Comments
 (0)