https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114923
--- Comment #7 from nfxjfg at googlemail dot com --- > Note also the order of the writes to reg1 and reg2 might happen in a > different order in HW so you need to have a full (HW) write barrier between > them to make sure the write is done in the correct order. Seriously? That breaks literally all code that uses volatile for register access (which, in our firmwares, is ALL code). This just fuels my belief that gcc and C compiler developers in general turned C into a useless, fragile language that can't do anything correctly. Is there a way to prevent reordering of volatile accesses?