@@ -1305,7 +1305,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level,
13051305 FPM.addPass (LoopLoadEliminationPass ());
13061306 }
13071307 // Cleanup after the loop optimization passes.
1308- FPM.addPass (InstCombinePass ());
1308+ FPM.addPass (
1309+ InstCombinePass (InstCombineOptions ().setCleanupAssumptions (true )));
13091310
13101311 if (Level.getSpeedupLevel () > 1 && ExtraVectorizerPasses) {
13111312 ExtraFunctionPassManager<ShouldRunExtraVectorPasses> ExtraPasses;
@@ -1317,7 +1318,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level,
13171318 // dead (or speculatable) control flows or more combining opportunities.
13181319 ExtraPasses.addPass (EarlyCSEPass ());
13191320 ExtraPasses.addPass (CorrelatedValuePropagationPass ());
1320- ExtraPasses.addPass (InstCombinePass ());
1321+ ExtraPasses.addPass (
1322+ InstCombinePass (InstCombineOptions ().setCleanupAssumptions (true )));
13211323 LoopPassManager LPM;
13221324 LPM.addPass (LICMPass (PTO.LicmMssaOptCap , PTO.LicmMssaNoAccForPromotionCap ,
13231325 /* AllowSpeculation=*/ true ));
@@ -1328,7 +1330,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level,
13281330 /* UseBlockFrequencyInfo=*/ true ));
13291331 ExtraPasses.addPass (
13301332 SimplifyCFGPass (SimplifyCFGOptions ().convertSwitchRangeToICmp (true )));
1331- ExtraPasses.addPass (InstCombinePass ());
1333+ ExtraPasses.addPass (
1334+ InstCombinePass (InstCombineOptions ().setCleanupAssumptions (true )));
13321335 FPM.addPass (std::move (ExtraPasses));
13331336 }
13341337
@@ -1351,7 +1354,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level,
13511354
13521355 if (IsFullLTO) {
13531356 FPM.addPass (SCCPPass ());
1354- FPM.addPass (InstCombinePass ());
1357+ FPM.addPass (
1358+ InstCombinePass (InstCombineOptions ().setCleanupAssumptions (true )));
13551359 FPM.addPass (BDCEPass ());
13561360 }
13571361
@@ -1366,7 +1370,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level,
13661370 FPM.addPass (VectorCombinePass ());
13671371
13681372 if (!IsFullLTO) {
1369- FPM.addPass (InstCombinePass ());
1373+ FPM.addPass (
1374+ InstCombinePass (InstCombineOptions ().setCleanupAssumptions (true )));
13701375 // Unroll small loops to hide loop backedge latency and saturate any
13711376 // parallel execution resources of an out-of-order processor. We also then
13721377 // need to clean up redundancies and loop invariant code.
@@ -1392,7 +1397,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level,
13921397 }
13931398
13941399 FPM.addPass (InferAlignmentPass ());
1395- FPM.addPass (InstCombinePass ());
1400+ FPM.addPass (
1401+ InstCombinePass (InstCombineOptions ().setCleanupAssumptions (true )));
13961402
13971403 // This is needed for two reasons:
13981404 // 1. It works around problems that instcombine introduces, such as sinking
0 commit comments