Check if we can use GCC's __noreturn__ attribute in prototypes to indicate
that functions never return. This can be used by the compiler to do some
extra optimizations.
FUNCATTR_NORETURN is defined as what we should put at the end of function
prototypes to achieve this. If the compiler doesn't support it then it is
defined as empty.
An example of a a function's prototype and implementation using this macro:
void this_function_never_returns (void) FUNCATTR_NORETURN;
void this_function_never_returns (void) {
exit (0);
}