summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
diff options
context:
space:
mode:
authorMandeep Singh Grang <mgrang@codeaurora.org>2018-11-14 17:55:07 +0000
committerMandeep Singh Grang <mgrang@codeaurora.org>2018-11-14 17:55:07 +0000
commit0905fc77c1832014825fa265bfb7b5751bed250e (patch)
tree3cd9e766be710550e7fd4cad0d3414c1a775a866 /llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
parentfca18e94e116581a71017230ab631955cb115af3 (diff)
downloadbcm5719-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.cpp15
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))
OpenPOWER on IntegriCloud