<div dir="ltr">Merged to 6.0 in r323740.</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 8, 2018 at 7:31 PM, Sanjay Patel via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: spatel<br>
Date: Mon Jan  8 10:31:13 2018<br>
New Revision: 322016<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=322016&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=322016&view=rev</a><br>
Log:<br>
[ValueTracking] remove overzealous assert<br>
<br>
The test is derived from a failing fuzz test:<br>
<a href="https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5008" rel="noreferrer" target="_blank">https://bugs.chromium.org/p/<wbr>oss-fuzz/issues/detail?id=5008</a><br>
<br>
Credit to @rksimon for pointing out the problem.<br>
<br>
<br>
Modified:<br>
    llvm/trunk/lib/Analysis/<wbr>ValueTracking.cpp<br>
    llvm/trunk/test/Transforms/<wbr>InstCombine/minmax-fold.ll<br>
<br>
Modified: llvm/trunk/lib/Analysis/<wbr>ValueTracking.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ValueTracking.cpp?rev=322016&r1=322015&r2=322016&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/<wbr>Analysis/ValueTracking.cpp?<wbr>rev=322016&r1=322015&r2=<wbr>322016&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Analysis/<wbr>ValueTracking.cpp (original)<br>
+++ llvm/trunk/lib/Analysis/<wbr>ValueTracking.cpp Mon Jan  8 10:31:13 2018<br>
@@ -4214,7 +4214,7 @@ static SelectPatternResult matchMinMaxOf<br>
       break;<br>
     return {SPF_UNKNOWN, SPNB_NA, false};<br>
   default:<br>
-    llvm_unreachable("Bad flavor while matching min/max");<br>
+    return {SPF_UNKNOWN, SPNB_NA, false};<br>
   }<br>
<br>
   // a pred c ? m(a, b) : m(c, b) --> m(m(a, b), m(c, b))<br>
<br>
Modified: llvm/trunk/test/Transforms/<wbr>InstCombine/minmax-fold.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/minmax-fold.ll?rev=322016&r1=322015&r2=322016&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/test/<wbr>Transforms/InstCombine/minmax-<wbr>fold.ll?rev=322016&r1=322015&<wbr>r2=322016&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/test/Transforms/<wbr>InstCombine/minmax-fold.ll (original)<br>
+++ llvm/trunk/test/Transforms/<wbr>InstCombine/minmax-fold.ll Mon Jan  8 10:31:13 2018<br>
@@ -887,3 +887,24 @@ define i32 @common_factor_umax_extra_use<br>
   ret i32 %max_abc<br>
 }<br>
<br>
+; This would assert. Don't assume that earlier min/max types match a possible later min/max.<br>
+<br>
+define float @not_min_of_min(i8 %i, float %x) {<br>
+; CHECK-LABEL: @not_min_of_min(<br>
+; CHECK-NEXT:    [[CMP1_INV:%.*]] = fcmp fast oge float [[X:%.*]], 1.000000e+00<br>
+; CHECK-NEXT:    [[MIN1:%.*]] = select i1 [[CMP1_INV]], float 1.000000e+00, float [[X]]<br>
+; CHECK-NEXT:    [[CMP2_INV:%.*]] = fcmp fast oge float [[X]], 2.000000e+00<br>
+; CHECK-NEXT:    [[MIN2:%.*]] = select i1 [[CMP2_INV]], float 2.000000e+00, float [[X]]<br>
+; CHECK-NEXT:    [[CMP3:%.*]] = icmp ult i8 [[I:%.*]], 16<br>
+; CHECK-NEXT:    [[R:%.*]] = select i1 [[CMP3]], float [[MIN1]], float [[MIN2]]<br>
+; CHECK-NEXT:    ret float [[R]]<br>
+;<br>
+  %cmp1 = fcmp fast ult float %x, 1.0<br>
+  %min1 = select i1 %cmp1, float %x, float 1.0<br>
+  %cmp2 = fcmp fast ult float %x, 2.0<br>
+  %min2 = select i1 %cmp2, float %x, float 2.0<br>
+  %cmp3 = icmp ult i8 %i, 16<br>
+  %r = select i1 %cmp3, float %min1, float %min2<br>
+  ret float %r<br>
+}<br>
+<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>