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.