From a385c20d427d8ec1a91ce8bf34612bf4c87cc34f Mon Sep 17 00:00:00 2001 From: Jakub Staszak Date: Sun, 31 Jul 2011 04:47:20 +0000 Subject: [PATCH] Do not handle case where LHS is equal to zero, because InstCombiner always moves it to RHS anyway. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136586 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Analysis/BranchProbabilityInfo.cpp | 32 +++++++------------------- 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/lib/Analysis/BranchProbabilityInfo.cpp b/lib/Analysis/BranchProbabilityInfo.cpp index 5a7d6bf59a2..014cedc1d53 100644 --- a/lib/Analysis/BranchProbabilityInfo.cpp +++ b/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(LHS)) { - hasZero = CI->isZero(); - lhsZero = true; - } - - if (!hasZero) - if (ConstantInt *CI = dyn_cast(RHS)) - hasZero = CI->isZero(); - - if (!hasZero) + ConstantInt *CV = dyn_cast(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: