> register int a; > extern volatile int b; > > a = b; > a |= 0x54; > b = a; > > The ISO spec seems to allow gcc to perform those operations in a > single physical insn, as long as the operations on 'b' are all > performed, and in the correct sequence.
And I believe it's also consistent with the "traditional" view of volatile if that were done with a single read-modify-write insn.