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

Ilya Enkovich <ienkovich at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2015-11-11
           Assignee|unassigned at gcc dot gnu.org      |ienkovich at gcc dot 
gnu.org
     Ever confirmed|0                           |1

--- Comment #2 from Ilya Enkovich <ienkovich at gcc dot gnu.org> ---
Forward propagation produces vector comparison which is not expanded as
VEC_COND_EXPR as it was before.  Since we allow vector comparison not lowered
in case it can be expanded as VEC_COND_EXPR, expand should also be fixed.

Trying this patch:

diff --git a/gcc/expr.c b/gcc/expr.c
index 03936ee..bd43dc4 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -11128,7 +11128,8 @@ do_store_flag (sepops ops, rtx target, machine_mode
mode)
   if (TREE_CODE (ops->type) == VECTOR_TYPE)
     {
       tree ifexp = build2 (ops->code, ops->type, arg0, arg1);
-      if (VECTOR_BOOLEAN_TYPE_P (ops->type))
+      if (VECTOR_BOOLEAN_TYPE_P (ops->type)
+         && expand_vec_cmp_expr_p (TREE_TYPE (arg0), ops->type))
        return expand_vec_cmp_expr (ops->type, ifexp, target);
       else
        {

Reply via email to