Author: Vitaly Buka Date: 2025-03-05T18:40:30-08:00 New Revision: 56f8d690f4d0c812c6e7b4173d4be940dfa1bf36
URL: https://github.com/llvm/llvm-project/commit/56f8d690f4d0c812c6e7b4173d4be940dfa1bf36 DIFF: https://github.com/llvm/llvm-project/commit/56f8d690f4d0c812c6e7b4173d4be940dfa1bf36.diff LOG: Revert "[LTO][Pipelines][Coro] De-duplicate Coro passes (#128654)" This reverts commit 31897e651a1aa69207806d497a7080e252c53ebe. Added: Modified: llvm/lib/Passes/PassBuilderPipelines.cpp llvm/test/LTO/X86/coro.ll llvm/test/Other/new-pm-defaults.ll llvm/test/Other/new-pm-lto-defaults.ll Removed: ################################################################################ diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp index 546a5eb1ec283..07db107325f02 100644 --- a/llvm/lib/Passes/PassBuilderPipelines.cpp +++ b/llvm/lib/Passes/PassBuilderPipelines.cpp @@ -419,16 +419,14 @@ static bool isLTOPostLink(ThinOrFullLTOPhase Phase) { // Helper to wrap conditionally Coro passes. static CoroConditionalWrapper buildCoroWrapper(ThinOrFullLTOPhase Phase) { + // TODO: Skip passes according to Phase. ModulePassManager CoroPM; - if (!isLTOPostLink(Phase)) - CoroPM.addPass(CoroEarlyPass()); - if (!isLTOPreLink(Phase)) { - CGSCCPassManager CGPM; - CGPM.addPass(CoroSplitPass()); - CoroPM.addPass(createModuleToPostOrderCGSCCPassAdaptor(std::move(CGPM))); - CoroPM.addPass(CoroCleanupPass()); - CoroPM.addPass(GlobalDCEPass()); - } + CoroPM.addPass(CoroEarlyPass()); + CGSCCPassManager CGPM; + CGPM.addPass(CoroSplitPass()); + CoroPM.addPass(createModuleToPostOrderCGSCCPassAdaptor(std::move(CGPM))); + CoroPM.addPass(CoroCleanupPass()); + CoroPM.addPass(GlobalDCEPass()); return CoroConditionalWrapper(std::move(CoroPM)); } @@ -1012,7 +1010,7 @@ PassBuilder::buildInlinerPipeline(OptimizationLevel Level, MainCGPipeline.addPass(createCGSCCToFunctionPassAdaptor( RequireAnalysisPass<ShouldNotRunFunctionPassesAnalysis, Function>())); - if (!isLTOPreLink(Phase)) { + if (Phase != ThinOrFullLTOPhase::ThinLTOPreLink) { MainCGPipeline.addPass(CoroSplitPass(Level != OptimizationLevel::O0)); MainCGPipeline.addPass(CoroAnnotationElidePass()); } @@ -1062,7 +1060,7 @@ PassBuilder::buildModuleInlinerPipeline(OptimizationLevel Level, buildFunctionSimplificationPipeline(Level, Phase), PTO.EagerlyInvalidateAnalyses)); - if (!isLTOPreLink(Phase)) { + if (Phase != ThinOrFullLTOPhase::ThinLTOPreLink) { MPM.addPass(createModuleToPostOrderCGSCCPassAdaptor( CoroSplitPass(Level != OptimizationLevel::O0))); MPM.addPass( @@ -1122,8 +1120,7 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level, // Do basic inference of function attributes from known properties of system // libraries and other oracles. MPM.addPass(InferFunctionAttrsPass()); - if (!isLTOPostLink(Phase)) - MPM.addPass(CoroEarlyPass()); + MPM.addPass(CoroEarlyPass()); FunctionPassManager EarlyFPM; EarlyFPM.addPass(EntryExitInstrumenterPass(/*PostInlining=*/false)); @@ -1293,7 +1290,7 @@ PassBuilder::buildModuleSimplificationPipeline(OptimizationLevel Level, // and argument promotion. MPM.addPass(DeadArgumentEliminationPass()); - if (!isLTOPreLink(Phase)) + if (Phase != ThinOrFullLTOPhase::ThinLTOPreLink) MPM.addPass(CoroCleanupPass()); // Optimize globals now that functions are fully simplified. @@ -1958,6 +1955,9 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level, return MPM; } + // TODO: Skip to match buildCoroWrapper. + MPM.addPass(CoroEarlyPass()); + // Optimize globals to try and fold them into constants. MPM.addPass(GlobalOptPass()); diff --git a/llvm/test/LTO/X86/coro.ll b/llvm/test/LTO/X86/coro.ll index f9830d964bc69..cde398dd76d85 100644 --- a/llvm/test/LTO/X86/coro.ll +++ b/llvm/test/LTO/X86/coro.ll @@ -1,6 +1,4 @@ -; RUN: opt %s -passes='lto-pre-link<O0>' -S -o %t1.ll -; RUN: FileCheck %s --check-prefixes=CHECK,PRELINK --implicit-check-not="call void @llvm.coro" --input-file=%t1.ll -; RUN: llvm-as %t1.ll -o %t1.bc +; RUN: llvm-as %s -o %t1.bc ; RUN: llvm-lto2 run %t1.bc -o %t2.o -r=%t1.bc,test,plx -r=%t1.bc,extern_func,plx -save-temps ; RUN: llvm-dis %t2.o.0.5.precodegen.bc -o - | FileCheck %s --implicit-check-not="call void @llvm.coro" @@ -9,9 +7,7 @@ target triple = "x86_64-unknown-fuchsia" declare void @extern_func() -; CHECK: define{{.*}} void @test( -; PRELINK: call ptr @llvm.coro.subfn.addr -; PRELINK: call ptr @llvm.coro.subfn.addr +; CHECK: define {{.*}} void @test( define void @test(ptr %hdl) { call void @llvm.coro.resume(ptr %hdl) call void @llvm.coro.destroy(ptr %hdl) diff --git a/llvm/test/Other/new-pm-defaults.ll b/llvm/test/Other/new-pm-defaults.ll index 30ff1a5879df2..c554fdbf4c799 100644 --- a/llvm/test/Other/new-pm-defaults.ll +++ b/llvm/test/Other/new-pm-defaults.ll @@ -230,13 +230,13 @@ ; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass ; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ShouldNotRunFunctionPassesAnalysis ; CHECK-O-NEXT: Running analysis: ShouldNotRunFunctionPassesAnalysis -; CHECK-DEFAULT-NEXT: Running pass: CoroSplitPass -; CHECK-DEFAULT-NEXT: Running pass: CoroAnnotationElidePass +; CHECK-O-NEXT: Running pass: CoroSplitPass +; CHECK-O-NEXT: Running pass: CoroAnnotationElidePass ; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ShouldNotRunFunctionPassesAnalysis ; CHECK-O-NEXT: Invalidating analysis: ShouldNotRunFunctionPassesAnalysis ; CHECK-O-NEXT: Invalidating analysis: InlineAdvisorAnalysis ; CHECK-O-NEXT: Running pass: DeadArgumentEliminationPass -; CHECK-DEFAULT-NEXT: Running pass: CoroCleanupPass +; CHECK-O-NEXT: Running pass: CoroCleanupPass ; CHECK-O-NEXT: Running pass: GlobalOptPass ; CHECK-O-NEXT: Running pass: GlobalDCEPass ; CHECK-DEFAULT-NEXT: Running pass: EliminateAvailableExternallyPass diff --git a/llvm/test/Other/new-pm-lto-defaults.ll b/llvm/test/Other/new-pm-lto-defaults.ll index e4320bb619533..3aea0f2061f3e 100644 --- a/llvm/test/Other/new-pm-lto-defaults.ll +++ b/llvm/test/Other/new-pm-lto-defaults.ll @@ -67,6 +67,7 @@ ; CHECK-O1-NEXT: Running analysis: TargetLibraryAnalysis ; CHECK-O-NEXT: Running pass: GlobalSplitPass ; CHECK-O-NEXT: Running pass: WholeProgramDevirtPass +; CHECK-O23SZ-NEXT: Running pass: CoroEarlyPass ; CHECK-O1-NEXT: Running pass: LowerTypeTestsPass ; CHECK-O23SZ-NEXT: Running pass: GlobalOptPass ; CHECK-O23SZ-NEXT: Running pass: PromotePass _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits