summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2018-08-29 17:09:21 +0000
committerCraig Topper <craig.topper@intel.com>2018-08-29 17:09:21 +0000
commit2bcb1eeee15f867439d937d7c68a297544765cd4 (patch)
tree47b1f7434e391d943741c2ae31a8dd3012a7cb62
parent68a46d89669aa4443bc8d1a4fa98c11da77b9e35 (diff)
downloadbcm5719-llvm-2bcb1eeee15f867439d937d7c68a297544765cd4.tar.gz
bcm5719-llvm-2bcb1eeee15f867439d937d7c68a297544765cd4.zip
[InstCombine] Replace two calls to getNumUses() with !hasNUsesOrMore
We were calling getNumUses to check for 1 or 2 uses. But getNumUses is linear in the number of uses. We can instead use !hasNUsesOrMore(3) which will stop the linear scan as soon as it determines there are at least 3 uses even if there are more. llvm-svn: 340939
-rw-r--r--llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
index 0313cc9bb06..3b79ea55a21 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
@@ -1822,7 +1822,7 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) {
// MIN(~a, ~b) -> ~MAX(a, b)
Value *A, *B;
if (match(LHS, m_Not(m_Value(A))) && match(RHS, m_Not(m_Value(B))) &&
- (LHS->getNumUses() <= 2 || RHS->getNumUses() <= 2)) {
+ (!LHS->hasNUsesOrMore(3) || !RHS->hasNUsesOrMore(3))) {
CmpInst::Predicate InvertedPred = getInverseMinMaxPred(SPF);
Value *InvertedCmp = Builder.CreateICmp(InvertedPred, A, B);
Value *NewSel = Builder.CreateSelect(InvertedCmp, A, B);
OpenPOWER on IntegriCloud