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.