From: Paul Eggert Date: Wed, 17 Dec 2014 01:29:33 +0000 (-0800) Subject: stdalign: work around Apple GCC 4.0 bug X-Git-Tag: v1.0~7221 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=a8c75ca739fb9dec34645e497de94dc9ab5357f2;p=gnulib.git 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. --- diff --git a/ChangeLog b/ChangeLog index d654b60d48..a2c5645919 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2014-12-16 Paul Eggert + + 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 getcwd: fix test failure on OS X 10.9 diff --git a/lib/stdalign.in.h b/lib/stdalign.in.h index 32ae4c533e..dd25f0413d 100644 --- a/lib/stdalign.in.h +++ b/lib/stdalign.in.h @@ -95,7 +95,10 @@ #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 diff --git a/m4/stdalign.m4 b/m4/stdalign.m4 index 9efafe5c5b..2b1f90eaa6 100644 --- a/m4/stdalign.m4 +++ b/m4/stdalign.m4 @@ -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