[Bug tree-optimization/88828] Inefficient update of the first element of vector registers
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Jan 14 06:54:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88828
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |missed-optimization
Target| |x86_64
Component|target |tree-optimization
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I think there are two issues here (maybe only one since I have not tested one
of them).
The first is not recognizing:
typedef float __v4sf __attribute__ ((__vector_size__ (16)));
__v4sf
foo (__v4sf x, float f)
{
__v4sf y = __extension__ (__v4sf)
{ f, x[1], x[2], x[3] };
return y;
}
is the same as:
__v4sf
foo1 (__v4sf x, float f)
{
__v4sf y = x;
y[0] = f;
return y;
}
This is a generic tree optimization issue.
The second is if foo1 is not optimized to what you want it to be. That would
be a target issue.
More information about the Gcc-bugs
mailing list