https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67644
--- Comment #3 from Oleg Endo ---
It somehow makes sense ...
x->ICR0.BIT.BIT5 |= 1;
or maybe better
x->ICR0.BIT.BIT5 ^= 1;
is a bitfield read and a bitfield write.
A bitfield write implies a bitfield read-modify-write, and thus we get two
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67644
--- Comment #4 from Oleg Endo ---
Hm, maybe it'd be good to add a warning (enabled by default, can be disabled)
if volatile bitfields are used. To me it looks like volatile bitfields have
almost no use (the way they are implemented by GCC now) a
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67644
--- Comment #5 from Oleg Endo ---
Possibly related: PR 50521, PR 56997