From 9e56b09bc68d9d267f128f2b3441303d9ae79f6d Mon Sep 17 00:00:00 2001 From: Luke Lau Date: Thu, 18 Sep 2025 13:23:21 +0800 Subject: [PATCH 1/3] [NewPM] Remove BranchProbabilityInfo from FunctionToLoopPassAdaptor. NFCI No loop pass seems to use it after LoopPredication stopped using it in https://reviews.llvm.org/D111668 --- .../llvm/Analysis/LoopAnalysisManager.h | 1 - .../llvm/Transforms/Scalar/LoopPassManager.h | 19 +++++++------------ llvm/lib/Passes/PassBuilder.cpp | 5 +---- .../lib/Transforms/Scalar/LoopPassManager.cpp | 5 ----- 4 files changed, 8 insertions(+), 22 deletions(-) diff --git a/llvm/include/llvm/Analysis/LoopAnalysisManager.h b/llvm/include/llvm/Analysis/LoopAnalysisManager.h index a825ada05df11..a394d45fe8c5f 100644 --- a/llvm/include/llvm/Analysis/LoopAnalysisManager.h +++ b/llvm/include/llvm/Analysis/LoopAnalysisManager.h @@ -60,7 +60,6 @@ struct LoopStandardAnalysisResults { TargetLibraryInfo &TLI; TargetTransformInfo &TTI; BlockFrequencyInfo *BFI; - BranchProbabilityInfo *BPI; MemorySSA *MSSA; }; diff --git a/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h b/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h index 79ccd63fd834c..750f9546625a2 100644 --- a/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h +++ b/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h @@ -405,11 +405,9 @@ class FunctionToLoopPassAdaptor explicit FunctionToLoopPassAdaptor(std::unique_ptr Pass, bool UseMemorySSA = false, bool UseBlockFrequencyInfo = false, - bool UseBranchProbabilityInfo = false, bool LoopNestMode = false) : Pass(std::move(Pass)), UseMemorySSA(UseMemorySSA), UseBlockFrequencyInfo(UseBlockFrequencyInfo), - UseBranchProbabilityInfo(UseBranchProbabilityInfo), LoopNestMode(LoopNestMode) { LoopCanonicalizationFPM.addPass(LoopSimplifyPass()); LoopCanonicalizationFPM.addPass(LCSSAPass()); @@ -432,7 +430,6 @@ class FunctionToLoopPassAdaptor bool UseMemorySSA = false; bool UseBlockFrequencyInfo = false; - bool UseBranchProbabilityInfo = false; const bool LoopNestMode; }; @@ -446,8 +443,7 @@ class FunctionToLoopPassAdaptor template inline FunctionToLoopPassAdaptor createFunctionToLoopPassAdaptor(LoopPassT &&Pass, bool UseMemorySSA = false, - bool UseBlockFrequencyInfo = false, - bool UseBranchProbabilityInfo = false) { + bool UseBlockFrequencyInfo = false) { if constexpr (is_detected::value) { using PassModelT = detail::PassModel( new PassModelT(std::forward(Pass))), - UseMemorySSA, UseBlockFrequencyInfo, UseBranchProbabilityInfo, false); + UseMemorySSA, UseBlockFrequencyInfo, false); } else { LoopPassManager LPM; LPM.addPass(std::forward(Pass)); @@ -469,7 +465,7 @@ createFunctionToLoopPassAdaptor(LoopPassT &&Pass, bool UseMemorySSA = false, return FunctionToLoopPassAdaptor( std::unique_ptr( new PassModelT(std::move(LPM))), - UseMemorySSA, UseBlockFrequencyInfo, UseBranchProbabilityInfo, true); + UseMemorySSA, UseBlockFrequencyInfo, true); } } @@ -477,9 +473,9 @@ createFunctionToLoopPassAdaptor(LoopPassT &&Pass, bool UseMemorySSA = false, /// be in loop-nest mode if the pass manager contains only loop-nest passes. template <> inline FunctionToLoopPassAdaptor -createFunctionToLoopPassAdaptor( - LoopPassManager &&LPM, bool UseMemorySSA, bool UseBlockFrequencyInfo, - bool UseBranchProbabilityInfo) { +createFunctionToLoopPassAdaptor(LoopPassManager &&LPM, + bool UseMemorySSA, + bool UseBlockFrequencyInfo) { // Check if LPM contains any loop pass and if it does not, returns an adaptor // in loop-nest mode. using PassModelT = @@ -491,8 +487,7 @@ createFunctionToLoopPassAdaptor( return FunctionToLoopPassAdaptor( std::unique_ptr( new PassModelT(std::move(LPM))), - UseMemorySSA, UseBlockFrequencyInfo, UseBranchProbabilityInfo, - LoopNestMode); + UseMemorySSA, UseBlockFrequencyInfo, LoopNestMode); } /// Pass for printing a loop's contents as textual IR. diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp index 8cf277657a54a..4a47dac66a097 100644 --- a/llvm/lib/Passes/PassBuilder.cpp +++ b/llvm/lib/Passes/PassBuilder.cpp @@ -2098,11 +2098,8 @@ Error PassBuilder::parseFunctionPass(FunctionPassManager &FPM, bool UseBFI = llvm::any_of(InnerPipeline, [](auto Pipeline) { return Pipeline.Name.contains("simple-loop-unswitch"); }); - bool UseBPI = llvm::any_of(InnerPipeline, [](auto Pipeline) { - return Pipeline.Name == "loop-predication"; - }); FPM.addPass(createFunctionToLoopPassAdaptor(std::move(LPM), UseMemorySSA, - UseBFI, UseBPI)); + UseBFI)); return Error::success(); } if (Name == "machine-function") { diff --git a/llvm/lib/Transforms/Scalar/LoopPassManager.cpp b/llvm/lib/Transforms/Scalar/LoopPassManager.cpp index 4b26ce12a28db..1e72996cddb71 100644 --- a/llvm/lib/Transforms/Scalar/LoopPassManager.cpp +++ b/llvm/lib/Transforms/Scalar/LoopPassManager.cpp @@ -223,10 +223,6 @@ PreservedAnalyses FunctionToLoopPassAdaptor::run(Function &F, BlockFrequencyInfo *BFI = UseBlockFrequencyInfo && F.hasProfileData() ? (&AM.getResult(F)) : nullptr; - BranchProbabilityInfo *BPI = - UseBranchProbabilityInfo && F.hasProfileData() - ? (&AM.getResult(F)) - : nullptr; LoopStandardAnalysisResults LAR = {AM.getResult(F), AM.getResult(F), AM.getResult(F), @@ -235,7 +231,6 @@ PreservedAnalyses FunctionToLoopPassAdaptor::run(Function &F, AM.getResult(F), AM.getResult(F), BFI, - BPI, MSSA}; // Setup the loop analysis manager from its proxy. It is important that From a8828f4f0d03736f846db3f2083408a865fe44d7 Mon Sep 17 00:00:00 2001 From: Luke Lau Date: Thu, 18 Sep 2025 15:24:36 +0800 Subject: [PATCH 2/3] Remove dead forward decl --- llvm/include/llvm/Analysis/LoopAnalysisManager.h | 1 - 1 file changed, 1 deletion(-) diff --git a/llvm/include/llvm/Analysis/LoopAnalysisManager.h b/llvm/include/llvm/Analysis/LoopAnalysisManager.h index a394d45fe8c5f..fc69cb03849c6 100644 --- a/llvm/include/llvm/Analysis/LoopAnalysisManager.h +++ b/llvm/include/llvm/Analysis/LoopAnalysisManager.h @@ -37,7 +37,6 @@ namespace llvm { class AAResults; class AssumptionCache; class BlockFrequencyInfo; -class BranchProbabilityInfo; class DominatorTree; class Function; class Loop; From 4c8feade6ec269b3a7d694c84572fa29bffdd75d Mon Sep 17 00:00:00 2001 From: Luke Lau Date: Thu, 18 Sep 2025 15:27:10 +0800 Subject: [PATCH 3/3] Remove dead include --- llvm/lib/Transforms/Scalar/LoopPassManager.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/llvm/lib/Transforms/Scalar/LoopPassManager.cpp b/llvm/lib/Transforms/Scalar/LoopPassManager.cpp index 1e72996cddb71..32078b1720508 100644 --- a/llvm/lib/Transforms/Scalar/LoopPassManager.cpp +++ b/llvm/lib/Transforms/Scalar/LoopPassManager.cpp @@ -9,7 +9,6 @@ #include "llvm/Transforms/Scalar/LoopPassManager.h" #include "llvm/Analysis/AssumptionCache.h" #include "llvm/Analysis/BlockFrequencyInfo.h" -#include "llvm/Analysis/BranchProbabilityInfo.h" #include "llvm/Analysis/MemorySSA.h" #include "llvm/Analysis/ScalarEvolution.h" #include "llvm/Analysis/TargetLibraryInfo.h"