https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
Nick Desaulniers <ndesaulniers at google dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ndesaulniers at google dot com --- Comment #10 from Nick Desaulniers <ndesaulniers at google dot com> --- Specifically, it seems this was fixed in the gcc-4.8.2 timeframe. This shows no issue in gcc-4.8.2, but the issue from comment #5 in gcc-4.8.1. It seems the Linux kernel works around this with a macro called `asm_volatile_goto` that simply inserts an empty asm block `asm("");` after an `asm goto`, which even in this reproducer fixes the problem. https://godbolt.org/z/ZUDRnU