https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128053

Drea Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |14.5
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2026-10-21
            Summary|wrong code at -O2 and -O3   |[14/15/16/17 Regression]
                   |for a vectorized read of an |wrong code at -O2 and -O3
                   |unsigned bit-field that     |for a vectorized read of an
                   |contains the sign bit of a  |unsigned bit-field that
                   |union's int member          |contains the sign bit of a
                   |                            |union's int member

--- Comment #1 from Drea Pinski <pinskia at gcc dot gnu.org> ---
Confirmed.

We are doing the shift in signed which copies the sign bit:

  vect_patt_18.8_23 = vect__2.7_5 & { -16777216, -16777216, -16777216,
-16777216 };
  vect_patt_17.9_24 = vect_patt_18.8_23 >> 24;
  vect_patt_16.10_25 = VIEW_CONVERT_EXPR<vector(4) unsigned
int>(vect_patt_17.9_24);

Reply via email to