https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112909
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- Reduced testcase: struct machine_thread_all_state { int set; } _hurd_setup_sighandler_state; int _hurd_setup_sighandler_ss_0; struct { int ctx; } *_hurd_setup_sighandler_stackframe; void _setjmp(); void __thread_get_state(); int machine_get_basic_state(struct machine_thread_all_state *state) { if (state->set) __thread_get_state(); return 1; } int *_hurd_setup_sighandler() { int *scp; if (_hurd_setup_sighandler_ss_0) { _setjmp(); _hurd_setup_sighandler_state.set |= 5; } machine_get_basic_state(&_hurd_setup_sighandler_state); scp = &_hurd_setup_sighandler_stackframe->ctx; _setjmp(); return scp; }