https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98335
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ebotcazou at gcc dot gnu.org, | |jakub at gcc dot gnu.org Keywords| |missed-optimization Priority|P3 |P2 Component|rtl-optimization |tree-optimization Last reconfirmed| |2021-01-04 Ever confirmed|0 |1 Target Milestone|--- |9.4 Status|UNCONFIRMED |NEW --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- We expand the first case from MEM <char[7]> [(struct Data *)&D.2365 + 1B] = {}; c.0_1 = c; D.2365.a = c.0_1; return D.2365; I guess store-merging could "merge" the stores as D.2365 = {}; D.2365.a = c.0_1; thus figure the partial unaligned zeroing is better done aligned (and redundant). Alternatively it could emit V_C_E<unsigned> = (unsigned) c.0_1; The second testcase looks vectorization/ABI related for which we have plenty of dups.