https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91395
--- Comment #5 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- It's *accessible objects* whose value on second return from setjmp is the same as when longjmp is called (unless non-volatile, automatic storage duration and changed between setjmp and longjmp). The point is that when longjmp is called, save_exception_stack may not be an accessible object (because of having gone out of scope), so has no defined value, so it's just like goto jumping into the block where save_exception_stack is declared and thus bypassing its initialization - it's valid to jump into the scope like that (unless jumping into the scope of a declaration with variably modified type), but the variable is uninitialized.