On May 31, 2012, at 4:11 PM, Eli Friedman wrote: > On Thu, May 31, 2012 at 1:02 PM, Howard Hinnant <[email protected]> wrote: >> On May 31, 2012, at 3:58 PM, Chandler Carruth wrote: >> >>> On Thu, May 31, 2012 at 12:31 PM, Howard Hinnant <[email protected]> wrote: >>> Author: hhinnant >>> Date: Thu May 31 14:31:14 2012 >>> New Revision: 157764 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=157764&view=rev >>> Log: >>> Protect use of alignas against older versions of clang >>> >>> Modified: >>> libcxx/trunk/include/__config >>> libcxx/trunk/src/iostream.cpp >>> >>> Modified: libcxx/trunk/include/__config >>> URL: >>> http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__config?rev=157764&r1=157763&r2=157764&view=diff >>> ============================================================================== >>> --- libcxx/trunk/include/__config (original) >>> +++ libcxx/trunk/include/__config Thu May 31 14:31:14 2012 >>> @@ -145,8 +145,10 @@ >>> #if defined(__clang__) >>> >>> #if __has_feature(cxx_alignas) >>> +# define _ALIGNAS_TYPE(x) alignas(x) >>> # define _ALIGNAS(x) alignas(x) >>> #else >>> +# define _ALIGNAS_TYPE(x) __attribute__((__aligned__)) >>> >>> Should this be __aligned__(x) as it is here: >>> >>> # define _ALIGNAS(x) __attribute__((__aligned__(x))) >>> >>> Or are you intentionally shooting for the 'maximally aligned' thing? If the >>> latter, maybe comment that this is intentional and not a typo? >> >> It's intentional. My first try was using _ALIGNAS, and the compiler really >> didn't like it: >> >> ../src/iostream.cpp:16:21: error: expected ')' >> _ALIGNAS (__stdinbuf<char> ) static char __cin [sizeof(__stdinbuf <char>)]; >> ^ >> ../include/__config:149:50: note: expanded from macro '_ALIGNAS' >> # define _ALIGNAS(x) __attribute__((__aligned__(x))) >> ^ >> >> And so I punted by introducing _ALIGNAS_TYPE. >> >> I can add a comment, but I'd really like to hold trunk stable for just a >> couple more hours. > > The correct definition for _ALIGNAS_TYPE is something like the following: > > #define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x)))
Done! Thanks Eli! Howard _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
