| dnl -------------------------------------------------------------------------- |
| dnl PA_FUNC_ATTRIBUTE_ERROR |
| dnl |
| dnl See if this compiler supports __attribute__((error("foo"))) *and* |
| dnl does *not* error if the erroneous call is unreachable. |
| dnl |
| dnl The generic version of this doesn't work as it makes the compiler |
| dnl throw an error by design. |
| dnl |
| dnl This doesn't use a function pointer because there is no need: |
| dnl the error function will never be a function pointer. |
| dnl -------------------------------------------------------------------------- |
| AC_DEFUN([PA_FUNC_ATTRIBUTE_ERROR], |
| [AC_MSG_CHECKING([if $CC supports the error function attribute]) |
| AC_COMPILE_IFELSE([AC_LANG_SOURCE([ |
| AC_INCLUDES_DEFAULT |
| PA_ATTRIBUTE_SYNTAX |
| |
| extern ATTRIBUTE(error("message")) void barf(void); |
| void foo(void); |
| void foo(void) |
| { |
| if (0) |
| barf(); |
| } |
| ])], |
| [AC_MSG_RESULT([yes]) |
| AC_DEFINE([HAVE_FUNC_ATTRIBUTE_ERROR], 1, |
| [Define to 1 if your compiler supports the error attribute on functions])], |
| [AC_MSG_RESULT([no])]) |
| ]) |