https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93209
--- Comment #4 from John Adriaan <John.Adriaan at BigPond dot com> --- @RichardBiener, I used the different types to prove my point: if they're all `unsigned`, it still happens. And the ABI merely defines whether `-fstrict-volatile-bitfields` is the default or not (for ARM, it is): I explicitly enabled it in all cases to eliminate this. Also, I did indeed try changing the example to make the bitfields themselves `volatile` rather than the variable itself (good pick!): no change.