diff options
author | Craig Topper <craig.topper@intel.com> | 2018-08-29 17:09:21 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2018-08-29 17:09:21 +0000 |
commit | 2bcb1eeee15f867439d937d7c68a297544765cd4 (patch) | |
tree | 47b1f7434e391d943741c2ae31a8dd3012a7cb62 | |
parent | 68a46d89669aa4443bc8d1a4fa98c11da77b9e35 (diff) | |
download | bcm5719-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.cpp | 2 |
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); |