diff options
author | Mandeep Singh Grang <mgrang@codeaurora.org> | 2018-11-14 17:55:07 +0000 |
---|---|---|
committer | Mandeep Singh Grang <mgrang@codeaurora.org> | 2018-11-14 17:55:07 +0000 |
commit | 0905fc77c1832014825fa265bfb7b5751bed250e (patch) | |
tree | 3cd9e766be710550e7fd4cad0d3414c1a775a866 /llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp | |
parent | fca18e94e116581a71017230ab631955cb115af3 (diff) | |
download | bcm5719-llvm-0905fc77c1832014825fa265bfb7b5751bed250e.tar.gz bcm5719-llvm-0905fc77c1832014825fa265bfb7b5751bed250e.zip |
[InstCombine] Remove a couple of asserts based on incorrect assumptions
Summary:
These asserts are based on the assumption that the order of true/false operands in a select and those in the compare would always be the same.
This fixes PR39595.
Reviewers: craig.topper, spatel, dmgreen
Reviewed By: craig.topper
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D54359
llvm-svn: 346874
Diffstat (limited to 'llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp')
-rw-r--r-- | llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp index 26d0b522f01..db75c9383a1 100644 --- a/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp +++ b/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp @@ -1866,8 +1866,7 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) { // MAX(~a, C) -> ~MIN(a, ~C) // MIN(~a, ~b) -> ~MAX(a, b) // MIN(~a, C) -> ~MAX(a, ~C) - auto moveNotAfterMinMax = [&](Value *X, Value *Y, - bool Swapped) -> Instruction * { + auto moveNotAfterMinMax = [&](Value *X, Value *Y) -> Instruction * { Value *A; if (match(X, m_Not(m_Value(A))) && !X->hasNUsesOrMore(3) && !IsFreeToInvert(A, A->hasOneUse()) && @@ -1880,14 +1879,8 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) { if (MDNode *MD = SI.getMetadata(LLVMContext::MD_prof)) { cast<SelectInst>(NewMinMax)->setMetadata(LLVMContext::MD_prof, MD); // Swap the metadata if the operands are swapped. - if (Swapped) { - assert(X == SI.getFalseValue() && Y == SI.getTrueValue() && - "Unexpected operands."); + if (X == SI.getFalseValue() && Y == SI.getTrueValue()) cast<SelectInst>(NewMinMax)->swapProfMetadata(); - } else { - assert(X == SI.getTrueValue() && Y == SI.getFalseValue() && - "Unexpected operands."); - } } return BinaryOperator::CreateNot(NewMinMax); @@ -1896,9 +1889,9 @@ Instruction *InstCombiner::visitSelectInst(SelectInst &SI) { return nullptr; }; - if (Instruction *I = moveNotAfterMinMax(LHS, RHS, /*Swapped*/false)) + if (Instruction *I = moveNotAfterMinMax(LHS, RHS)) return I; - if (Instruction *I = moveNotAfterMinMax(RHS, LHS, /*Swapped*/true)) + if (Instruction *I = moveNotAfterMinMax(RHS, LHS)) return I; if (Instruction *I = factorizeMinMaxTree(SPF, LHS, RHS, Builder)) |