llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-llvm-transforms Author: Aiden Grossman (boomanaiden154) <details> <summary>Changes</summary> This reverts 272ad5da54a63a16312e8c3ba0de4290d4931002. This should not have any impact on CodeGeneration given PrepareForLTO is now a no-op currently in LoopUnroll. This just gets the plumbing done for some future planned uses around respecting pragmas. This also pulls in changes from #<!-- -->219604 to be complete. --- Full diff: https://github.com/llvm/llvm-project/pull/229151.diff 2 Files Affected: - (modified) llvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h (+2-2) - (modified) llvm/lib/Passes/PassBuilderPipelines.cpp (+6-3) ``````````diff diff --git a/llvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h b/llvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h index ea2d8576d15cb..328a027bbb553 100644 --- a/llvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h +++ b/llvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h @@ -88,9 +88,9 @@ struct LoopUnrollOptions { bool PrepareForLTO = false; LoopUnrollOptions(int OptLevel = 2, bool OnlyWhenForced = false, - bool ForgetSCEV = false) + bool ForgetSCEV = false, bool PrepareForLTO = false) : OptLevel(OptLevel), OnlyWhenForced(OnlyWhenForced), - ForgetSCEV(ForgetSCEV) {} + ForgetSCEV(ForgetSCEV), PrepareForLTO(PrepareForLTO) {} /// Enables or disables partial unrolling. When disabled only full unrolling /// is allowed. diff --git a/llvm/lib/Passes/PassBuilderPipelines.cpp b/llvm/lib/Passes/PassBuilderPipelines.cpp index bd37fffc8e991..85a854b6584cb 100644 --- a/llvm/lib/Passes/PassBuilderPipelines.cpp +++ b/llvm/lib/Passes/PassBuilderPipelines.cpp @@ -577,7 +577,8 @@ PassBuilder::buildO1FunctionSimplificationPipeline(OptimizationLevel Level, PGOOpt->Action != PGOOptions::SampleUse) LPM2.addPass(LoopFullUnrollPass(static_cast<int>(Level), /* OnlyWhenForced= */ !PTO.LoopUnrolling, - PTO.ForgetAllSCEVInLoopUnroll)); + PTO.ForgetAllSCEVInLoopUnroll, + /*PrepareForLTO=*/isLTOPreLink(Phase))); invokeLoopOptimizerEndEPCallbacks(LPM2, Level); @@ -759,7 +760,8 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level, PGOOpt->Action != PGOOptions::SampleUse) LPM2.addPass(LoopFullUnrollPass(static_cast<int>(Level), /* OnlyWhenForced= */ !PTO.LoopUnrolling, - PTO.ForgetAllSCEVInLoopUnroll)); + PTO.ForgetAllSCEVInLoopUnroll, + /*PrepareForLTO=*/isLTOPreLink(Phase))); invokeLoopOptimizerEndEPCallbacks(LPM2, Level); @@ -1477,7 +1479,8 @@ void PassBuilder::addVectorPasses(OptimizationLevel Level, } FPM.addPass(LoopUnrollPass(LoopUnrollOptions( static_cast<int>(Level), /*OnlyWhenForced=*/!PTO.LoopUnrolling, - PTO.ForgetAllSCEVInLoopUnroll))); + PTO.ForgetAllSCEVInLoopUnroll, + /*PrepareForLTO=*/isLTOPreLink(LTOPhase)))); FPM.addPass(WarnMissedTransformationsPass()); // Now that we are done with loop unrolling, be it either by LoopVectorizer, // or LoopUnroll passes, some variable-offset GEP's into alloca's could have `````````` </details> https://github.com/llvm/llvm-project/pull/229151 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
