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);