https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113597
--- Comment #16 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Note trunk can do better IPA CP and replace the argument g with 0. On the gimple level we get: float32x4_t r[16]; <bb 2> [local count: 6156018]: r[4] = { 0.0, 0.0, 0.0, 0.0 }; __builtin_memcpy (v_53(D), &r, 256); r ={v} {CLOBBER(eos)}; I am still thinking the testcase was over-reduced even. Now I say this could covert that into just MEM<(float32x4_t*)v_53 + 16B> = { 0.0, 0.0, 0.0, 0.0 }; And still have the correct behavior.