[$] Who's afraid of a big bad optimizing compiler?
Our increasingly aggressive moderncompilers produce increasingly surprising code optimizations. Some ofthese optimizations might be especially surprising to developers who assumethat each plain C-language load or store will always result in anassembly-language load or store. Although this article is written forLinux kernel developers, many of these scenarios also apply to otherconcurrent code bases, keeping in mind that "concurrent code bases" alsoincludes single-threaded code bases that use interrupts or signals.