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

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
diff --git a/gcc/tree-vect-patterns.cc b/gcc/tree-vect-patterns.cc
index 217bdfd7045..ff9a628321f 100644
--- a/gcc/tree-vect-patterns.cc
+++ b/gcc/tree-vect-patterns.cc
@@ -4450,18 +4450,16 @@ vect_recog_bool_pattern (vec_info *vinfo,
       if (get_vectype_for_scalar_type (vinfo, type) == NULL_TREE)
        return NULL;

-      if (!check_bool_pattern (var, vinfo, bool_stmts))
-       return NULL;
-
-      rhs = adjust_bool_stmts (vinfo, bool_stmts, type, stmt_vinfo);
+      if (check_bool_pattern (var, vinfo, bool_stmts))
+       var = adjust_bool_stmts (vinfo, bool_stmts, type, stmt_vinfo);

       lhs = vect_recog_temp_ssa_var (TREE_TYPE (lhs), NULL);
       pattern_stmt 
-         = gimple_build_assign (lhs, COND_EXPR,
-                                build2 (NE_EXPR, boolean_type_node,
-                                        rhs, build_int_cst (type, 0)),
-                                gimple_assign_rhs2 (last_stmt),
-                                gimple_assign_rhs3 (last_stmt));
+       = gimple_build_assign (lhs, COND_EXPR,
+                              build2 (NE_EXPR, boolean_type_node,
+                                      var, build_int_cst (TREE_TYPE (var),
0)),
+                              gimple_assign_rhs2 (last_stmt),
+                              gimple_assign_rhs3 (last_stmt));
       *type_out = vectype;
       vect_pattern_detected ("vect_recog_bool_pattern", last_stmt);

Reply via email to