bug-autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: AC_C_RESTRICT and C/C++


From: Eric Blake-1
Subject: Re: AC_C_RESTRICT and C/C++
Date: Mon, 22 Oct 2007 11:12:10 -0700 (PDT)

> Paul Eggert wrote:
> > Would it suffice to append this to config.h?  I don't have easy access
> > to Sun C 5.0 any more (it's pretty old).
> 
> The same issue also holds with the Sun Studio 11 compiler
> (in /opt/SUNWspro/SunStudio11/SUNWspro/bin).
> 
> Yes, this works around the issue. Thanks!

Then how about this autoconf patch?

2007-10-22  Eric Blake  <address@hidden>
        and Paul Eggert  <address@hidden>

        Don't define restrict for Sun C++.
        * lib/autoconf/c.m4 (AC_C_RESTRICT): Add verbatim block that
        disables definition of restrict for SunPro C++ compiler.
        Reported by Bruno Haible.


From: Eric Blake <address@hidden>
Date: Mon, 22 Oct 2007 12:10:20 -0600
Subject: [PATCH] Don't define restrict for Sun C++.

* lib/autoconf/c.m4 (AC_C_RESTRICT): Add verbatim block that
disables definition of restrict for SunPro C++ compiler.
Reported by Bruno Haible.

Signed-off-by: Eric Blake <address@hidden>
---
 ChangeLog         |    8 ++++++++
 lib/autoconf/c.m4 |   31 ++++++++++++++++++++-----------
 2 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 6827771..9be3277 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,12 @@
 2007-10-22  Eric Blake  <address@hidden>
+       and Paul Eggert  <address@hidden>
+
+       Don't define restrict for Sun C++.
+       * lib/autoconf/c.m4 (AC_C_RESTRICT): Add verbatim block that
+       disables definition of restrict for SunPro C++ compiler.
+       Reported by Bruno Haible.
+
+2007-10-22  Eric Blake  <address@hidden>
 
        * doc/autoconf.texi (Particular Types): Mention bug in HP-UX 11.00
        preprocessor.
diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
index 7e2d76e..6c6da86 100644
--- a/lib/autoconf/c.m4
+++ b/lib/autoconf/c.m4
@@ -1658,28 +1658,37 @@ AN_IDENTIFIER([restrict], [AC_C_RESTRICT])
 AC_DEFUN([AC_C_RESTRICT],
 [AC_CACHE_CHECK([for C/C++ restrict keyword], ac_cv_c_restrict,
   [ac_cv_c_restrict=no
-   # Try the official restrict keyword, then gcc's __restrict, and
-   # the less common variants.
+   # The order here caters to the fact that C++ does not require restrict.
    for ac_kw in __restrict __restrict__ _Restrict restrict; do
      AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
       [[typedef int * int_ptr;
-        int foo (int_ptr $ac_kw ip) {
-        return ip[0];
+       int foo (int_ptr $ac_kw ip) {
+       return ip[0];
        }]],
       [[int s[1];
-        int * $ac_kw t = s;
-        t[0] = 0;
-        return foo(t)]])],
+       int * $ac_kw t = s;
+       t[0] = 0;
+       return foo(t)]])],
       [ac_cv_c_restrict=$ac_kw])
      test "$ac_cv_c_restrict" != no && break
    done
   ])
+ AH_VERBATIM([restrict],
+[/* Define to equivalent of C99 restrict keyword, or to nothing if this
+is not supported.  Do not define if restrict is supported directly.
+Favor a definition that works in both C and C++.  */
+#undef restrict
+/* Work around a bug in Sun C++: it does not support _Restrict, even
+   though the corresponding Sun C compiler does.  Perhaps some future
+   version of Sun C++ will work with _Restrict; if so, it'll probably
+   define __RESTRICT, just as Sun C does.  */
+#if defined __SUNPRO_CC && !defined __RESTRICT
+# define _Restrict
+#endif])
  case $ac_cv_c_restrict in
    restrict) ;;
-   no) AC_DEFINE(restrict,,
-       [Define to equivalent of C99 restrict keyword, or to nothing if this
-       is not supported.  Do not define if restrict is supported directly.]) ;;
-   *)  AC_DEFINE_UNQUOTED(restrict, $ac_cv_c_restrict) ;;
+   no) AC_DEFINE([restrict], []) ;;
+   *)  AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
  esac
 ])# AC_C_RESTRICT
 
-- 
1.5.3.2


-- 
View this message in context: 
http://www.nabble.com/AC_C_RESTRICT-and-C-C%2B%2B-tf4668063.html#a13349412
Sent from the Gnu - Autoconf - Bugs mailing list archive at Nabble.com.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]