https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90271
--- Comment #6 from Eyal Rozenberg <eyalroz at technion dot ac.il> --- > Is the example from real-world code? Yes. Example: Some machines support atomic instructions on aligned 32 bits or on 64 bits, but not directly on 1, 2, 3, 5, 6 or 7 bytes. So in order to atomically change a value of one of those "undesirable" sizes, you have to work on its corresponding 4-byte or 8-byte stretch: You read it, change it in the middle, then apply atomic compare-and-swap to it.