diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/include/llvm/Passes/PassBuilder.h | 3 | ||||
| -rw-r--r-- | llvm/lib/Passes/PassBuilder.cpp | 9 | 
2 files changed, 9 insertions, 3 deletions
diff --git a/llvm/include/llvm/Passes/PassBuilder.h b/llvm/include/llvm/Passes/PassBuilder.h index 69756dd9b46..383f49e0d75 100644 --- a/llvm/include/llvm/Passes/PassBuilder.h +++ b/llvm/include/llvm/Passes/PassBuilder.h @@ -85,6 +85,9 @@ public:    /// is that of the flag: `vectorize-slp`.    bool SLPVectorization; +  /// Tuning option to enable/disable loop unrolling. Its default value is true. +  bool LoopUnrolling; +    /// Tuning option to cap the number of calls to retrive clobbering accesses in    /// MemorySSA, in LICM.    unsigned LicmMssaOptCap; diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index c7976ce2702..1d17f91d5a8 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -217,6 +217,7 @@ PipelineTuningOptions::PipelineTuningOptions() {    LoopInterleaving = EnableLoopInterleaving;    LoopVectorization = EnableLoopVectorization;    SLPVectorization = RunSLPVectorization; +  LoopUnrolling = true;    LicmMssaOptCap = SetLicmMssaOptCap;    LicmMssaNoAccForPromotionCap = SetLicmMssaNoAccForPromotionCap;  } @@ -459,8 +460,9 @@ PassBuilder::buildFunctionSimplificationPipeline(OptimizationLevel Level,    // Do not enable unrolling in PreLinkThinLTO phase during sample PGO    // because it changes IR to makes profile annotation in back compile    // inaccurate. -  if (Phase != ThinLTOPhase::PreLink || !PGOOpt || -      PGOOpt->Action != PGOOptions::SampleUse) +  if ((Phase != ThinLTOPhase::PreLink || !PGOOpt || +       PGOOpt->Action != PGOOptions::SampleUse) && +      PTO.LoopUnrolling)      LPM2.addPass(LoopFullUnrollPass(Level));    for (auto &C : LoopOptimizerEndEPCallbacks) @@ -907,7 +909,8 @@ ModulePassManager PassBuilder::buildModuleOptimizationPipeline(      OptimizePM.addPass(          createFunctionToLoopPassAdaptor(LoopUnrollAndJamPass(Level)));    } -  OptimizePM.addPass(LoopUnrollPass(LoopUnrollOptions(Level))); +  if (PTO.LoopUnrolling) +    OptimizePM.addPass(LoopUnrollPass(LoopUnrollOptions(Level)));    OptimizePM.addPass(WarnMissedTransformationsPass());    OptimizePM.addPass(InstCombinePass());    OptimizePM.addPass(RequireAnalysisPass<OptimizationRemarkEmitterAnalysis, Function>());  | 

