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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #1)
> Confirmed.  So this is exposing "wrong" padding handling where we basically
> assume that loads from memory materialize "correct" padding as if extended,
> like we do for bool (the only previously handled case).  For bitfields
> we defer to ifcvt to expose BIT_FIELD_REFs.
> 
> The appropriate fix for now is to reject non-mode precision types that
> we can backport and add proper support later.

At least with the exception of bool which we handle correctly.

For _BitInt on the store side, it depends whether the code actually extends or
just keeps undefined bits in the padding bits.  If it extends, then it is ok
for any target, if it can store there random bits, then it is only ok on
non-extend _BitInt targets (x86, aarch64, powerpc*).
Loads can be ok on the extend _BitInt targets (arm, riscv, s390x).

Reply via email to