https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79901

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
On the middle-end side, I see dom3 changing:
-  vect_patt_1.22_94 = VEC_COND_EXPR <vect__13.21_90 <= vect_cst__92,
vect__13.21_90, vect_cst__93>;
-  vect_patt_1.22_95 = VEC_COND_EXPR <vect__13.21_91 <= vect_cst__92,
vect__13.21_91, vect_cst__93>;
+  vect_patt_1.22_94 = MIN_EXPR <vect__13.21_90, { 4294967295, 4294967295,
4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295 }>;
+  vect_patt_1.22_95 = MIN_EXPR <vect__13.21_91, { 4294967295, 4294967295,
4294967295, 4294967295, 4294967295, 4294967295, 4294967295, 4294967295 }>;
without actually verifying there is an optab for that (dunno where exactly, if
it is match.pd (which has some rule for something like that) or something
else),
or the problem is that MIN/MAX_EXPR expansion if there is no optab available
for it should attempt to expand it as a corresponding VEC_COND_EXPR (it ICEs
because it attempts to expand it as a condition followed by jump, which
obviously can't work).  Trying to fix this up in the veclower pass is not
possible, because dom3 comes after veclower2.

Reply via email to