Skip to content

Commit 611b0c1

Browse files
committed
[𝘀𝗽𝗿] initial version
Created using spr 1.3.4
2 parents 083686d + 45fc89f commit 611b0c1

File tree

2 files changed

+38
-16
lines changed

2 files changed

+38
-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/ThinLTO/X86/coro.ll

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
; RU1N: llvm-as %s -o %t1.bc
2+
; RU1N: llvm-lto2 run %t1.bc -o %t2.o -r=%t1.bc,test,plx -r=%t1.bc,extern_func,plx -save-temps
3+
; RU1N: 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)