Skip to content

Commit 87b76ea

Browse files
committed
[𝘀𝗽𝗿] changes to main this commit is based on
Created using spr 1.3.4 [skip ci]
1 parent 083686d commit 87b76ea

File tree

4 files changed

+44
-16
lines changed

4 files changed

+44
-16
lines changed

llvm/lib/Passes/PassBuilderPipelines.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
///
1515
//===----------------------------------------------------------------------===//
1616

17+
#include "llvm/ADT/ScopeExit.h"
1718
#include "llvm/ADT/Statistic.h"
1819
#include "llvm/Analysis/AliasAnalysis.h"
1920
#include "llvm/Analysis/BasicAliasAnalysis.h"
@@ -1816,6 +1817,17 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
18161817
// in the current module.
18171818
MPM.addPass(CrossDSOCFIPass());
18181819

1820+
MPM.addPass(CoroEarlyPass());
1821+
1822+
auto Exit = llvm::make_scope_exit([&]() {
1823+
MPM.addPass(CoroCleanupPass());
1824+
1825+
invokeFullLinkTimeOptimizationLastEPCallbacks(MPM, Level);
1826+
1827+
// Emit annotation remarks.
1828+
addAnnotationRemarksPass(MPM);
1829+
});
1830+
18191831
if (Level == OptimizationLevel::O0) {
18201832
// The WPD and LowerTypeTest passes need to run at -O0 to lower type
18211833
// metadata and intrinsics.
@@ -1826,11 +1838,6 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
18261838
MPM.addPass(LowerTypeTestsPass(nullptr, nullptr,
18271839
lowertypetests::DropTestKind::Assume));
18281840

1829-
invokeFullLinkTimeOptimizationLastEPCallbacks(MPM, Level);
1830-
1831-
// Emit annotation remarks.
1832-
addAnnotationRemarksPass(MPM);
1833-
18341841
return MPM;
18351842
}
18361843

@@ -1910,11 +1917,6 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
19101917
MPM.addPass(LowerTypeTestsPass(nullptr, nullptr,
19111918
lowertypetests::DropTestKind::Assume));
19121919

1913-
invokeFullLinkTimeOptimizationLastEPCallbacks(MPM, Level);
1914-
1915-
// Emit annotation remarks.
1916-
addAnnotationRemarksPass(MPM);
1917-
19181920
return MPM;
19191921
}
19201922

@@ -1983,7 +1985,11 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
19831985

19841986
// If we didn't decide to inline a function, check to see if we can
19851987
// transform it to pass arguments by value instead of by reference.
1986-
MPM.addPass(createModuleToPostOrderCGSCCPassAdaptor(ArgumentPromotionPass()));
1988+
CGSCCPassManager CGPM;
1989+
CGPM.addPass(ArgumentPromotionPass());
1990+
CGPM.addPass(CoroSplitPass(Level != OptimizationLevel::O0));
1991+
CGPM.addPass(CoroAnnotationElidePass());
1992+
MPM.addPass(createModuleToPostOrderCGSCCPassAdaptor(std::move(CGPM)));
19871993

19881994
FunctionPassManager FPM;
19891995
// The IPO Passes may leave cruft around. Clean up after them.
@@ -2135,11 +2141,6 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
21352141
if (PTO.CallGraphProfile)
21362142
MPM.addPass(CGProfilePass(/*InLTOPostLink=*/true));
21372143

2138-
invokeFullLinkTimeOptimizationLastEPCallbacks(MPM, Level);
2139-
2140-
// Emit annotation remarks.
2141-
addAnnotationRemarksPass(MPM);
2142-
21432144
return MPM;
21442145
}
21452146

llvm/test/Other/new-pm-O0-defaults.ll

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,14 @@
4747
; CHECK-THINLTO-NEXT: Running pass: EliminateAvailableExternallyPass
4848
; CHECK-THINLTO-NEXT: Running pass: GlobalDCEPass
4949
; CHECK-LTO: Running pass: CrossDSOCFIPass on [module]
50+
; CHECK-LTO-NEXT: CoroEarlyPass
5051
; CHECK-LTO-NEXT: Running pass: WholeProgramDevirtPass
5152
; CHECK-LTO-NEXT: Running analysis: InnerAnalysisManagerProxy
5253
; CHECK-LTO-NEXT: Running pass: LowerTypeTestsPass
5354
; CHECK-LTO-NEXT: Running pass: LowerTypeTestsPass
5455
; CHECK-CORO-NEXT: Running pass: AnnotationRemarksPass
5556
; CHECK-CORO-NEXT: Running analysis: TargetLibraryAnalysis
57+
; CHECK-LTO-NEXT: CoroCleanupPass
5658
; CHECK-LTO-NEXT: Running pass: AnnotationRemarksPass
5759
; CHECK-LTO-NEXT: Running analysis: TargetLibraryAnalysis
5860
; CHECK-NEXT: Running pass: PrintModulePass

llvm/test/Other/new-pm-lto-defaults.ll

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535

3636
; CHECK-EP: Running pass: NoOpModulePass
3737
; CHECK-O: Running pass: CrossDSOCFIPass
38+
; CHECK-O-NEXT: CoroEarlyPass
3839
; CHECK-O-NEXT: Running pass: OpenMPOptPass
3940
; CHECK-O-NEXT: Running pass: GlobalDCEPass
4041
; CHECK-O-NEXT: Running pass: InferFunctionAttrsPass
@@ -86,6 +87,8 @@
8687
; CHECK-O23SZ-NEXT: Running pass: OpenMPOptPass
8788
; CHECK-O23SZ-NEXT: Running pass: GlobalDCEPass
8889
; CHECK-O23SZ-NEXT: Running pass: ArgumentPromotionPass
90+
; CHECK-O23SZ-NEXT: CoroSplitPass on (foo)
91+
; CHECK-O23SZ-NEXT: CoroAnnotationElidePass on (foo)
8992
; CHECK-O23SZ-NEXT: Running pass: InstCombinePass
9093
; CHECK-EP-PEEPHOLE-NEXT: Running pass: NoOpFunctionPass
9194
; CHECK-O23SZ-NEXT: Running pass: ConstraintEliminationPass
@@ -156,6 +159,7 @@
156159
; CHECK-O23SZ-NEXT: Running pass: GlobalDCEPass
157160
; CHECK-O23SZ-NEXT: Running pass: RelLookupTableConverterPass
158161
; CHECK-O23SZ-NEXT: Running pass: CGProfilePass
162+
; CHECK-O-NEXT: CoroCleanupPass
159163
; CHECK-EP-NEXT: Running pass: NoOpModulePass
160164
; CHECK-O-NEXT: Running pass: AnnotationRemarksPass on foo
161165
; CHECK-O-NEXT: Running pass: PrintModulePass

llvm/test/ThinLTO/X86/coro.ll

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
; RUN: llvm-as %s -o %t1.bc
2+
; RUN: llvm-lto2 run %t1.bc -o %t2.o -r=%t1.bc,test,plx -r=%t1.bc,extern_func,plx -save-temps
3+
; RUN: llvm-dis %t2.o.0.5.precodegen.bc -o - | FileCheck %s --implicit-check-not="call void @llvm.coro"
4+
5+
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
6+
target triple = "x86_64-unknown-fuchsia"
7+
8+
declare void @extern_func()
9+
10+
; CHECK: define {{.*}} void @test(
11+
define void @test(ptr %hdl) {
12+
call void @llvm.coro.resume(ptr %hdl)
13+
call void @llvm.coro.destroy(ptr %hdl)
14+
call i1 @llvm.coro.done(ptr %hdl)
15+
ret void
16+
}
17+
18+
declare void @llvm.coro.resume(ptr)
19+
declare void @llvm.coro.destroy(ptr)
20+
declare i1 @llvm.coro.done(ptr)
21+

0 commit comments

Comments
 (0)