diff options
author | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-07-22 00:40:56 +0000 |
---|---|---|
committer | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-07-22 00:40:56 +0000 |
commit | bb969791b4ca0800f887288e5c35b6b46c1a810d (patch) | |
tree | 4fa4355e5837f619791a32428b17f435d9ce521f /llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp | |
parent | 0c5b92cae6ae06aa69a02c2b27fb5074f26420b7 (diff) | |
download | bcm5719-llvm-bb969791b4ca0800f887288e5c35b6b46c1a810d.tar.gz bcm5719-llvm-bb969791b4ca0800f887288e5c35b6b46c1a810d.zip |
[IRCE] Add an option to skip profitability checks
If `-irce-skip-profitability-checks` is passed in, IRCE will kick in in
all cases where it is legal for it to kick in. This flag is intended to
help diagnose and analyse performance issues.
llvm-svn: 276372
Diffstat (limited to 'llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp b/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp index ec7f09a2d59..52e94fa0766 100644 --- a/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp +++ b/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp @@ -82,6 +82,9 @@ static cl::opt<bool> PrintRangeChecks("irce-print-range-checks", cl::Hidden, static cl::opt<int> MaxExitProbReciprocal("irce-max-exit-prob-reciprocal", cl::Hidden, cl::init(10)); +static cl::opt<bool> SkipProfitabilityChecks("irce-skip-profitability-checks", + cl::Hidden, cl::init(false)); + #define DEBUG_TYPE "irce" namespace { @@ -392,7 +395,8 @@ void InductiveRangeCheck::extractRangeChecksFromBranch( BranchProbability LikelyTaken(15, 16); - if (BPI.getEdgeProbability(BI->getParent(), (unsigned)0) < LikelyTaken) + if (!SkipProfitabilityChecks && + BPI.getEdgeProbability(BI->getParent(), (unsigned)0) < LikelyTaken) return; SmallPtrSet<Value *, 8> Visited; @@ -648,7 +652,8 @@ LoopStructure::parseLoopStructure(ScalarEvolution &SE, BranchProbabilityInfo &BP BranchProbability ExitProbability = BPI.getEdgeProbability(LatchBr->getParent(), LatchBrExitIdx); - if (ExitProbability > BranchProbability(1, MaxExitProbReciprocal)) { + if (!SkipProfitabilityChecks && + ExitProbability > BranchProbability(1, MaxExitProbReciprocal)) { FailureReason = "short running loop, not profitable"; return None; } |