https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82730
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Severity|normal |enhancement
Ever confirmed|0 |1
Last reconfirmed| |2021-08-15
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Note the gimple level looks good:
_20 = BIT_FIELD_REF <in_18(D), 8, 120>;
_1 = (int) _20;
_21 = BIT_FIELD_REF <in_18(D), 8, 112>;
_2 = (int) _21;
_22 = BIT_FIELD_REF <in_18(D), 8, 104>;
_3 = (int) _22;
_23 = BIT_FIELD_REF <in_18(D), 8, 96>;
_4 = (int) _23;
_24 = BIT_FIELD_REF <in_18(D), 8, 88>;
_5 = (int) _24;
_25 = BIT_FIELD_REF <in_18(D), 8, 80>;
_6 = (int) _25;
_26 = BIT_FIELD_REF <in_18(D), 8, 72>;
_7 = (int) _26;
_27 = BIT_FIELD_REF <in_18(D), 8, 64>;
_8 = (int) _27;
_28 = BIT_FIELD_REF <in_18(D), 8, 56>;
_9 = (int) _28;
_29 = BIT_FIELD_REF <in_18(D), 8, 48>;
_10 = (int) _29;
_30 = BIT_FIELD_REF <in_18(D), 8, 40>;
_11 = (int) _30;
_31 = BIT_FIELD_REF <in_18(D), 8, 32>;
_12 = (int) _31;
_32 = BIT_FIELD_REF <in_18(D), 8, 24>;
_13 = (int) _32;
_33 = BIT_FIELD_REF <in_18(D), 8, 16>;
_14 = (int) _33;
_34 = BIT_FIELD_REF <in_18(D), 8, 8>;
_15 = (int) _34;
_35 = BIT_FIELD_REF <in_18(D), 8, 0>;
_16 = (int) _35;
----- CUT ----
It is the way extractions are done for bytes is not good.
Note MSVC is the only one which does extractions in a register only and not do
a store to the stack.