diff --git a/m4/restrict.m4 b/m4/restrict.m4 new file mode 100644 index 000000000..c5492f9ba --- /dev/null +++ b/m4/restrict.m4 @@ -0,0 +1,24 @@ +dnl Available from the GNU Autoconf Macro Archive at: +dnl http://www.gnu.org/software/ac-archive/htmldoc/acx_restrict.html +dnl +AC_DEFUN([ACX_C_RESTRICT], +[AC_CACHE_CHECK([for C restrict keyword], acx_cv_c_restrict, +[acx_cv_c_restrict=unsupported + AC_LANG_SAVE + AC_LANG_C + # Try the official restrict keyword, then gcc's __restrict__, then + # SGI's __restrict. __restrict has slightly different semantics than + # restrict (it's a bit stronger, in that __restrict pointers can't + # overlap even with non __restrict pointers), but I think it should be + # okay under the circumstances where restrict is normally used. + for acx_kw in restrict __restrict__ __restrict; do + AC_TRY_COMPILE([], [float * $acx_kw x;], [acx_cv_c_restrict=$acx_kw; break]) + done + AC_LANG_RESTORE +]) + if test "$acx_cv_c_restrict" != "restrict"; then + acx_kw="$acx_cv_c_restrict" + if test "$acx_kw" = unsupported; then acx_kw=""; fi + AC_DEFINE_UNQUOTED(restrict, $acx_kw, [Define to equivalent of C99 restrict keyword, or to nothing if this is not supported. Do not define if restrict is supported directly.]) + fi +])