summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/BranchProbabilityInfo.cpp
diff options
context:
space:
mode:
authorJakub Staszak <jstaszak@apple.com>2011-07-31 04:47:20 +0000
committerJakub Staszak <jstaszak@apple.com>2011-07-31 04:47:20 +0000
commitbfb1ae223babeb1b6af5877d9fbd89cac3817ca1 (patch)
treedb064076ad01d62d1eb5dd56f88a666f586ef414 /llvm/lib/Analysis/BranchProbabilityInfo.cpp
parenta3a44f3fc3872a95f9a5d323e271e587765b9dea (diff)
downloadbcm5719-llvm-bfb1ae223babeb1b6af5877d9fbd89cac3817ca1.tar.gz
bcm5719-llvm-bfb1ae223babeb1b6af5877d9fbd89cac3817ca1.zip
Do not handle case where LHS is equal to zero, because InstCombiner always moves
it to RHS anyway. llvm-svn: 136586
Diffstat (limited to 'llvm/lib/Analysis/BranchProbabilityInfo.cpp')
-rw-r--r--llvm/lib/Analysis/BranchProbabilityInfo.cpp32
1 files changed, 8 insertions, 24 deletions
diff --git a/llvm/lib/Analysis/BranchProbabilityInfo.cpp b/llvm/lib/Analysis/BranchProbabilityInfo.cpp
index 5a7d6bf59a2..014cedc1d53 100644
--- a/llvm/lib/Analysis/BranchProbabilityInfo.cpp
+++ b/llvm/lib/Analysis/BranchProbabilityInfo.cpp
@@ -287,21 +287,9 @@ bool BranchProbabilityAnalysis::calcZeroHeuristics(BasicBlock *BB) {
if (!CI)
return false;
- Value *LHS = CI->getOperand(0);
Value *RHS = CI->getOperand(1);
-
- bool hasZero = false;
- bool lhsZero = false;
- if (ConstantInt *CI = dyn_cast<ConstantInt>(LHS)) {
- hasZero = CI->isZero();
- lhsZero = true;
- }
-
- if (!hasZero)
- if (ConstantInt *CI = dyn_cast<ConstantInt>(RHS))
- hasZero = CI->isZero();
-
- if (!hasZero)
+ ConstantInt *CV = dyn_cast<ConstantInt>(RHS);
+ if (!CV || !CV->isZero())
return false;
bool isProb;
@@ -321,11 +309,9 @@ bool BranchProbabilityAnalysis::calcZeroHeuristics(BasicBlock *BB) {
case CmpInst::ICMP_SLT:
case CmpInst::ICMP_SLE:
// Less or equal to zero is not expected.
- // 0 < X -> isProb = true
- // 0 <= X -> isProb = true
- // X < 0 -> isProb = false
- // X <= 0 -> isProb = false
- isProb = lhsZero;
+ // X < 0 -> Unlikely
+ // X <= 0 -> Unlikely
+ isProb = false;
break;
case CmpInst::ICMP_UGT:
@@ -333,11 +319,9 @@ bool BranchProbabilityAnalysis::calcZeroHeuristics(BasicBlock *BB) {
case CmpInst::ICMP_SGT:
case CmpInst::ICMP_SGE:
// Greater or equal to zero is expected.
- // 0 > X -> isProb = false
- // 0 >= X -> isProb = false
- // X > 0 -> isProb = true
- // X >= 0 -> isProb = true
- isProb = !lhsZero;
+ // X > 0 -> Likely
+ // X >= 0 -> Likely
+ isProb = true;
break;
default:
OpenPOWER on IntegriCloud