[llvm] Reland "[LTO] Run Argument Promotion before IPSCCP" (PR #111853)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 5 07:23:25 PST 2024
================
@@ -1828,6 +1828,15 @@ PassBuilder::buildLTODefaultPipeline(OptimizationLevel Level,
MPM.addPass(PGOIndirectCallPromotion(
true /* InLTO */, PGOOpt && PGOOpt->Action == PGOOptions::SampleUse));
+ // Promoting by-reference arguments to by-value exposes more constants to
+ // IPSCCP.
+ MPM.addPass(
+ createModuleToPostOrderCGSCCPassAdaptor(PostOrderFunctionAttrsPass()));
+ MPM.addPass(
+ createModuleToPostOrderCGSCCPassAdaptor(ArgumentPromotionPass()));
+ MPM.addPass(
+ createModuleToFunctionPassAdaptor(SROAPass(SROAOptions::ModifyCFG)));
----------------
nikic wrote:
You should be able to add SROA to it as well, with a CGSCC to Function pass adaptor. (I think this may also give better results? Otherwise we'll only run SROA after *all* arg promotion, rather than interleaved.)
https://github.com/llvm/llvm-project/pull/111853
More information about the llvm-commits
mailing list