@@ -568,7 +568,8 @@ class PeepholeOptimizerLegacy : public MachineFunctionPass {
568568 void getAnalysisUsage (AnalysisUsage &AU) const override {
569569 MachineFunctionPass::getAnalysisUsage (AU);
570570 AU.addRequired <MachineLoopInfoWrapperPass>();
571- AU.addRequired <MachineDominatorTreeWrapperPass>();
571+ if (Aggressive)
572+ AU.addRequired <MachineDominatorTreeWrapperPass>();
572573 }
573574
574575 MachineFunctionProperties getRequiredProperties () const override {
@@ -1645,7 +1646,8 @@ PreservedAnalyses
16451646PeepholeOptimizerPass::run (MachineFunction &MF,
16461647 MachineFunctionAnalysisManager &MFAM) {
16471648 MFPropsModifier _ (*this , MF);
1648- auto *DT = &MFAM.getResult <MachineDominatorTreeAnalysis>(MF);
1649+ auto *DT =
1650+ Aggressive ? &MFAM.getResult <MachineDominatorTreeAnalysis>(MF) : nullptr ;
16491651 auto *MLI = &MFAM.getResult <MachineLoopAnalysis>(MF);
16501652 PeepholeOptimizer Impl (DT, MLI);
16511653 bool Changed = Impl.run (MF);
@@ -1658,7 +1660,9 @@ PeepholeOptimizerPass::run(MachineFunction &MF,
16581660bool PeepholeOptimizerLegacy::runOnMachineFunction (MachineFunction &MF) {
16591661 if (skipFunction (MF.getFunction ()))
16601662 return false ;
1661- auto *DT = &getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree ();
1663+ auto *DT = Aggressive
1664+ ? &getAnalysis<MachineDominatorTreeWrapperPass>().getDomTree ()
1665+ : nullptr ;
16621666 auto *MLI = &getAnalysis<MachineLoopInfoWrapperPass>().getLI ();
16631667 PeepholeOptimizer Impl (DT, MLI);
16641668 return Impl.run (MF);
@@ -1788,7 +1792,7 @@ bool PeepholeOptimizer::run(MachineFunction &MF) {
17881792 MachineInstr *Dead = &*MII;
17891793 ++MII;
17901794 MachineBasicBlock *DeadDest = TII->getBranchDestBlock (*Dead);
1791- if (TII->getBranchDestBlock (*NewBr)!= DeadDest)
1795+ if (DT && TII->getBranchDestBlock (*NewBr) != DeadDest)
17921796 DT->deleteEdge (&MBB, DeadDest);
17931797 Dead->eraseFromParent ();
17941798 }
0 commit comments