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.

Reply via email to