Fixes from Paul Eggert.
authorBruno Haible <bruno@clisp.org>
Thu, 26 Jan 2006 13:32:38 +0000 (13:32 +0000)
committerBruno Haible <bruno@clisp.org>
Thu, 26 Jan 2006 13:32:38 +0000 (13:32 +0000)
m4/ChangeLog
m4/stdbool.m4

index 13ac8a10a5a66f1aaa28aae6731c1c80e3313a64..e4d22b47cc575d727d0305af97b1a0ac393a10cb 100644 (file)
@@ -1,3 +1,9 @@
+2006-01-25  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * stdbool.m4 (AC_HEADER_STDBOOL): Check for xlc bug if __GCC__ too,
+       so that we test the test.
+       Check for yet another HP-UX cc bug involving *bool |= bool.
+
 2006-01-24  Bruno Haible  <bruno@clisp.org>
 
        * stdbool.m4 (AC_HEADER_STDBOOL): Check for IBM and HP-UX bugs.
index f37f27b97332e8fe2d5f1d91296639de3410cd8e..43fbe281543ab3716adb8c607ac92440e4047533 100644 (file)
@@ -74,7 +74,7 @@ AC_DEFUN([AC_HEADER_STDBOOL],
          _Bool n[m];
          char o[sizeof n == m * sizeof n[0] ? 1 : -1];
          char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
-         #if defined __xlc__
+         #if defined __xlc__ || defined __GNUC__
           /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
              reported by James Lemley on 2005-10-05; see
              http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
@@ -86,7 +86,10 @@ AC_DEFUN([AC_HEADER_STDBOOL],
              Let us hope that IBM fixes the xlc bug, and also adds
              support for this kind of constant expression.  In the
              meantime, this test will reject xlc, which is OK, since
-             our stdbool.h substitute should suffice.  */
+             our stdbool.h substitute should suffice.  We also test
+             this with GCC, where it should work, to detect more
+             quickly whether someone messes up the test in the
+             future.  */
           char digs[] = "0123456789";
           int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
          #endif
@@ -98,9 +101,11 @@ AC_DEFUN([AC_HEADER_STDBOOL],
          _Bool *pq = &q;
        ],
        [
+         *pq |= q;
+         *pq |= ! q;
          /* Refer to every declared value, to avoid compiler optimizations.  */
          return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
-                 + !m + !n + !o + !p);
+                 + !m + !n + !o + !p + !q + !pq);
        ],
        [ac_cv_header_stdbool_h=yes],
        [ac_cv_header_stdbool_h=no])])