https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108117
--- Comment #9 from Alexander Monakov <amonakov at gcc dot gnu.org> --- (In reply to Feng Xue from comment #8) > In another angle, because gcc already model control flow and SSA web for > setjmp/longjmp, explicit volatile specification is not really needed. That covers GIMPLE, but after transitioning to RTL, setjmp is not properly modeled anymore (like in old versions of GCC before Tree-SSA). Many RTL passes simply refuse touching the function if it has a setjmp call, but as your example demonstrated, scheduling still can make a surprising transform.