https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110754
Xi Ruoyao <xry111 at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |xry111 at gcc dot gnu.org --- Comment #1 from Xi Ruoyao <xry111 at gcc dot gnu.org> --- It happens w/o assume: int bar(int p) { volatile int n = p; if (1 == n) __builtin_unreachable(); return 1 + n; } Is this a bug? The standard defines accessing volatile objects as side-effects so it's not allowed to merge volatile loads, AFAIU.