Functions like getcontext and setjmp (maybe also swapcontext?) should have the decl-attribute returns_twice in the header file. This attribute is available starting from gcc-4.1.0 AFAICT. Currently the glibc-headers are missing this attribute, and GCC simply "knows" getcontext, setjmp, _setjmp, __sigsetjmp by name, and injects the ECF_RETURNS_TWICE in special_function_p, but that is a hack. To my knowledge, SPARC and IA64 simply don't save all callee saved registers, and therefore a missing returns_twice attribute may lead to invalid code, other targets would probably not see the -Wclobber warning when appropriate.
I forgot to mention: vfork does also need to be declared return_twice.