@@ -1305,7 +1305,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level,
1305
1305
FPM.addPass (LoopLoadEliminationPass ());
1306
1306
}
1307
1307
// Cleanup after the loop optimization passes.
1308
- FPM.addPass (InstCombinePass ());
1308
+ FPM.addPass (
1309
+ InstCombinePass (InstCombineOptions ().setCleanupAssumptions (true )));
1309
1310
1310
1311
if (Level.getSpeedupLevel () > 1 && ExtraVectorizerPasses) {
1311
1312
ExtraFunctionPassManager<ShouldRunExtraVectorPasses> ExtraPasses;
@@ -1317,7 +1318,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level,
1317
1318
// dead (or speculatable) control flows or more combining opportunities.
1318
1319
ExtraPasses.addPass (EarlyCSEPass ());
1319
1320
ExtraPasses.addPass (CorrelatedValuePropagationPass ());
1320
- ExtraPasses.addPass (InstCombinePass ());
1321
+ ExtraPasses.addPass (
1322
+ InstCombinePass (InstCombineOptions ().setCleanupAssumptions (true )));
1321
1323
LoopPassManager LPM;
1322
1324
LPM.addPass (LICMPass (PTO.LicmMssaOptCap , PTO.LicmMssaNoAccForPromotionCap ,
1323
1325
/* AllowSpeculation=*/ true ));
@@ -1328,7 +1330,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level,
1328
1330
/* UseBlockFrequencyInfo=*/ true ));
1329
1331
ExtraPasses.addPass (
1330
1332
SimplifyCFGPass (SimplifyCFGOptions ().convertSwitchRangeToICmp (true )));
1331
- ExtraPasses.addPass (InstCombinePass ());
1333
+ ExtraPasses.addPass (
1334
+ InstCombinePass (InstCombineOptions ().setCleanupAssumptions (true )));
1332
1335
FPM.addPass (std::move (ExtraPasses));
1333
1336
}
1334
1337
@@ -1351,7 +1354,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level,
1351
1354
1352
1355
if (IsFullLTO) {
1353
1356
FPM.addPass (SCCPPass ());
1354
- FPM.addPass (InstCombinePass ());
1357
+ FPM.addPass (
1358
+ InstCombinePass (InstCombineOptions ().setCleanupAssumptions (true )));
1355
1359
FPM.addPass (BDCEPass ());
1356
1360
}
1357
1361
@@ -1366,7 +1370,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level,
1366
1370
FPM.addPass (VectorCombinePass ());
1367
1371
1368
1372
if (!IsFullLTO) {
1369
- FPM.addPass (InstCombinePass ());
1373
+ FPM.addPass (
1374
+ InstCombinePass (InstCombineOptions ().setCleanupAssumptions (true )));
1370
1375
// Unroll small loops to hide loop backedge latency and saturate any
1371
1376
// parallel execution resources of an out-of-order processor. We also then
1372
1377
// need to clean up redundancies and loop invariant code.
@@ -1392,7 +1397,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level,
1392
1397
}
1393
1398
1394
1399
FPM.addPass (InferAlignmentPass ());
1395
- FPM.addPass (InstCombinePass ());
1400
+ FPM.addPass (
1401
+ InstCombinePass (InstCombineOptions ().setCleanupAssumptions (true )));
1396
1402
1397
1403
// This is needed for two reasons:
1398
1404
// 1. It works around problems that instcombine introduces, such as sinking
0 commit comments