https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109667
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- So, either SRA should be tweaked so that it can deal with DSE trimming of initializations (I think that is the best way forward, after all, user could have done it manually too - struct i256 { long v[4]; }; void assign(struct i256 *v, long z) { struct i256 r; __builtin_memset (&r.v[1], 0, sizeof (long) * 3); for (int i = 0; i < 1; ++i) r.v[i] = z; *v = r; } regressed with r7-2588-gdf7ec09f1209a33b35 ), or we should do something at the RTL level like it apparently worked before the r7-2588 change, or we should disable trimming in the DSE part before SRA.