https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108656
--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> --- In the setjmp/longjmp case obviously you need some other function that will do the longjmp, on the other side setjmp as pure makes no sense because setjmp has to remember pc/sp etc. in some jump buffer, so it isn't pure. Ditto getcontext etc. But returns_twice isn't just setjmp, it is also fork/vfork or anything else that can arrange multiple returns through other means.