]> Savannah Git Hosting - gnulib.git/commitdiff
stdalign: work around Apple GCC 4.0 bug
authorPaul Eggert <eggert@cs.ucla.edu>
Wed, 17 Dec 2014 01:29:33 +0000 (17:29 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 18 Dec 2014 20:49:13 +0000 (12:49 -0800)
Reported by David Fang in:
http://lists.gnu.org/archive/html/bug-gnulib/2014-12/msg00194.html
* lib/stdalign.in.h (_Alignas):
* m4/stdalign.m4 (gl_STDALIGN_H):
Do not use aligned attribute with GCC 4.0 on Apple.

ChangeLog
lib/stdalign.in.h
m4/stdalign.m4

index d654b60d48f3418905499608b67e655878ab3455..a2c56459199116601e61d84a398cc673ad267417 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2014-12-16  Paul Eggert  <eggert@cs.ucla.edu>
+
+       stdalign: work around Apple GCC 4.0 bug
+       Reported by David Fang in:
+       http://lists.gnu.org/archive/html/bug-gnulib/2014-12/msg00194.html
+       * lib/stdalign.in.h (_Alignas):
+       * m4/stdalign.m4 (gl_STDALIGN_H):
+       Do not use aligned attribute with GCC 4.0 on Apple.
+
 2014-12-16  Pádraig Brady  <P@draigBrady.com>
 
        getcwd: fix test failure on OS X 10.9
index 32ae4c533ed1b89c57e4f5a3c53fecf046c75a94..dd25f0413ddd1ce0e646de6fe82ff1eb0b1cf2a0 100644 (file)
 #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112
 # if defined __cplusplus && 201103 <= __cplusplus
 #  define _Alignas(a) alignas (a)
-# elif (__GNUC__ || __HP_cc || __HP_aCC || __IBMC__ || __IBMCPP__ \
+# elif ((defined __APPLE__ && defined __MACH__                  \
+         ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__)                 \
+         : __GNUC__)                                            \
+        || __HP_cc || __HP_aCC || __IBMC__ || __IBMCPP__        \
         || __ICC || 0x5110 <= __SUNPRO_C)
 #  define _Alignas(a) __attribute__ ((__aligned__ (a)))
 # elif 1300 <= _MSC_VER
index 9efafe5c5b255e1b297335f6ff307881d11af05b..2b1f90eaa6dfa8d7cccf21892036c0087d2b91aa 100644 (file)
@@ -32,7 +32,10 @@ AC_DEFUN([gl_STDALIGN_H],
             /* Test _Alignas only on platforms where gnulib can help.  */
             #if \
                 ((defined __cplusplus && 201103 <= __cplusplus) \
-                 || __GNUC__ || __IBMC__ || __IBMCPP__ || __ICC \
+                 || (defined __APPLE__ && defined __MACH__ \
+                     ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \
+                     : __GNUC__) \
+                 || __IBMC__ || __IBMCPP__ || __ICC \
                  || 0x5110 <= __SUNPRO_C || 1300 <= _MSC_VER)
               struct alignas_test { char c; char alignas (8) alignas_8; };
               char test_alignas[offsetof (struct alignas_test, alignas_8) == 8