This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/45902] CPU2006 benchmark sphinx3 fails with vectorization


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45902

--- Comment #9 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-10-10 13:26:39 UTC ---
(In reply to comment #8)
> The problem is in creation of constant operands for SLP, and is caused by my
> patch r155882, which takes the type for the constant from the constant itself.
> This was needed for pointers, but is bad for other cases, like shift of shorts
> that is treated as int here, causing wrong code generation.
> 
> I am going to test this patch now:
> 
> Index: tree-vect-slp.c
> ===================================================================
> --- tree-vect-slp.c     (revision 164987)
> +++ tree-vect-slp.c     (working copy)
> @@ -1894,13 +1894,20 @@ vect_get_constant_vectors (slp_tree slp_
>      }
> 
>    if (CONSTANT_CLASS_P (op))
> -    constant_p = true;
> +    {
> +      constant_p = true;
> +      if (POINTER_TYPE_P (TREE_TYPE (gimple_assign_lhs (stmt))))
> +        vector_type = get_vectype_for_scalar_type (TREE_TYPE (op));
> +      else
> +        vector_type = STMT_VINFO_VECTYPE (stmt_vinfo);
> +    }
>    else
> -    constant_p = false;
> +    {
> +      constant_p = false;
> +      vector_type = get_vectype_for_scalar_type (TREE_TYPE (op));
> +    }
> 
> -  vector_type = get_vectype_for_scalar_type (TREE_TYPE (op));
>    gcc_assert (vector_type);
> -
>    nunits = TYPE_VECTOR_SUBPARTS (vector_type);
> 
>    /* NUMBER_OF_COPIES is the number of times we need to use the same values in

I certainly would prefer unconditional use of STMT_VINFO_VECTYPE (stmt_vinfo).
Why should that not work?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]