https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39942
Peter Cordes <peter at cordes dot ca> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |peter at cordes dot ca --- Comment #53 from Peter Cordes <peter at cordes dot ca> --- I think we can close this as fixed at some point. The last activity on this bug was some patches that sound like they were supposed to fix, and the MCVEs from comments I tested no longer has a problem. GCC9.3 -O3 -march=core2 -fomit-frame-pointer only uses a `.p2align` to align the top of the loop, not between leave and ret or between cmp/jcc. void wait_for_enter() { volatile int foo = 0; // to get a LEAVE instruction emitted at all int u = getchar(); while (!u) u = getchar()-13; } https://godbolt.org/z/RvxzZv (Note that Godbolt normally filters .p2align so you have to either compile to binary or not filter directives in the asm source. Otherwise you'll never see NOPs except in the unusual case where GCC actually emits a nop mnemonic.)