mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-18 23:56:49 +00:00
Revert "[LTO][Pipelines][Coro] De-duplicate Coro passes" (#129977)
Reverts llvm/llvm-project#128654 Breaks FatLTO https://github.com/llvm/llvm-project/pull/128654#issuecomment-2700053700
This commit is contained in:
parent
1182be503d
commit
3ccacc4e44
@ -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());
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user