diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp --- a/llvm/lib/Passes/PassBuilderPipelines.cpp +++ b/llvm/lib/Passes/PassBuilderPipelines.cpp @@ -722,8 +722,9 @@ // Lastly, add the core function simplification pipeline nested inside the // CGSCC walk. - MainCGPipeline.addPass(createCGSCCToFunctionPassAdaptor( - buildFunctionSimplificationPipeline(Level, Phase))); + FunctionPassManager FPM = buildFunctionSimplificationPipeline(Level, Phase); + FPM.addPass(InvalidateAllAnalysesPass()); + MainCGPipeline.addPass(createCGSCCToFunctionPassAdaptor(std::move(FPM))); MainCGPipeline.addPass(CoroSplitPass(Level != OptimizationLevel::O0)); @@ -792,6 +793,7 @@ // FIXME: revisit how SampleProfileLoad/Inliner/ICP is structured. if (LoadSampleProfile) EarlyFPM.addPass(InstCombinePass()); + EarlyFPM.addPass(InvalidateAllAnalysesPass()); MPM.addPass(createModuleToFunctionPassAdaptor(std::move(EarlyFPM))); if (LoadSampleProfile) { @@ -866,6 +868,7 @@ invokePeepholeEPCallbacks(GlobalCleanupPM, Level); GlobalCleanupPM.addPass(SimplifyCFGPass()); + GlobalCleanupPM.addPass(InvalidateAllAnalysesPass()); MPM.addPass(createModuleToFunctionPassAdaptor(std::move(GlobalCleanupPM))); // Add all the requested passes for instrumentation PGO, if requested. @@ -1148,6 +1151,8 @@ OptimizePM.addPass(CoroCleanupPass()); + OptimizePM.addPass(InvalidateAllAnalysesPass()); + // Add the core optimizing pipeline. MPM.addPass(createModuleToFunctionPassAdaptor(std::move(OptimizePM)));