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
0 commit comments