https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104800
--- Comment #18 from Richard Biener <rguenth at gcc dot gnu.org> --- Note that all my comments about how the middle-end implementation is totally lacking "appropriate" handling of a volatile access (so also volatile reads). And I would expect outcry from 'volatile' users (kernel folks) when we aggressively put into place mitigation - make a volatile access terminate BBs and have outgoing or incoming abnormal edges to prevent any code motion. So IMO this is a WONTFIX bug. Sure we can "fix" PRE, but it's nearly impossible to "fix" for example the signed overflow case or the case where a volatile access itself causes abnormal program behavior (raise a signal, use siglongjmp in signal handler).