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

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
For the ICE the fix is easy:
--- tree-vect-patterns.c.jj1    2016-03-23 10:51:23.000000000 +0100
+++ tree-vect-patterns.c        2016-05-03 08:39:17.779229143 +0200
@@ -3673,8 +3673,10 @@ vect_recog_mask_conversion_pattern (vec<
          if (!rhs1_type)
            return NULL;
        }
-      else
+      else if (COMPARISON_CLASS_P (rhs1))
        rhs1_type = TREE_TYPE (TREE_OPERAND (rhs1, 0));
+      else
+       return NULL;

       vectype2 = get_mask_type_for_scalar_type (rhs1_type);

now to figure out why tree-if-conv.c actually emitted something = 1 ? op2 :
op3;

Reply via email to