https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111743
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
CC| |pinskia at gcc dot gnu.org
Severity|normal |enhancement
Last reconfirmed| |2023-10-09
Status|UNCONFIRMED |NEW
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
RTL wise we have:
Trying 6, 8 -> 9:
6: {r108:DI=r105:DI 0>>0x20;clobber flags:CC;}
REG_UNUSED flags:CC
8: {r110:SI=r108:DI#0&0x3ff;clobber flags:CC;}
REG_UNUSED flags:CC
REG_DEAD r108:DI
9: {r111:SI=r110:SI<<0x14;clobber flags:CC;}
REG_DEAD r110:SI
REG_UNUSED flags:CC
Failed to match this instruction:
(parallel [
(set (reg:SI 111)
(and:SI (ashift:SI (subreg:SI (zero_extract:DI (reg/v:DI 105 [ bf
])
(const_int 32 [0x20])
(const_int 32 [0x20])) 0)
(const_int 20 [0x14]))
(const_int 1072693248 [0x3ff00000])))
(clobber (reg:CC 17 flags))
])
This should have been simplified.
Anyways bitfields have issues even on the gimple level as they are not lowered
until expand ...