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;