Specifies that a function may return more than one time because of multithreaded or non-linear execution.
function-declaration __attribute__((returns_twice));
function-definition __attribute__((returns_twice));
This attribute specifies to the compiler that the program's flow of execution might enter and leave a function without explicit function calls and returns. For example, the standard library's setjmp() function allows a program to change its execution flow arbitrarily.
With this information, the compiler limits optimizations that require explicit program flow.