diff --git a/include/__config b/include/__config index 7cd01dc1b..c104a3f5c 100644 --- a/include/__config +++ b/include/__config @@ -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__)) # define _ALIGNAS(x) __attribute__((__aligned__(x))) #endif diff --git a/src/iostream.cpp b/src/iostream.cpp index bfb1bfb85..f5b959b4b 100644 --- a/src/iostream.cpp +++ b/src/iostream.cpp @@ -13,21 +13,21 @@ _LIBCPP_BEGIN_NAMESPACE_STD -alignas (__stdinbuf ) static char __cin [sizeof(__stdinbuf )]; -alignas (__stdoutbuf) static char __cout[sizeof(__stdoutbuf)]; -alignas (__stdoutbuf) static char __cerr[sizeof(__stdoutbuf)]; -alignas (__stdinbuf ) static char __wcin [sizeof(__stdinbuf )]; -alignas (__stdoutbuf) static char __wcout[sizeof(__stdoutbuf)]; -alignas (__stdoutbuf) static char __wcerr[sizeof(__stdoutbuf)]; +_ALIGNAS_TYPE (__stdinbuf ) static char __cin [sizeof(__stdinbuf )]; +_ALIGNAS_TYPE (__stdoutbuf) static char __cout[sizeof(__stdoutbuf)]; +_ALIGNAS_TYPE (__stdoutbuf) static char __cerr[sizeof(__stdoutbuf)]; +_ALIGNAS_TYPE (__stdinbuf ) static char __wcin [sizeof(__stdinbuf )]; +_ALIGNAS_TYPE (__stdoutbuf) static char __wcout[sizeof(__stdoutbuf)]; +_ALIGNAS_TYPE (__stdoutbuf) static char __wcerr[sizeof(__stdoutbuf)]; -alignas (istream) char cin [sizeof(istream)]; -alignas (ostream) char cout[sizeof(ostream)]; -alignas (ostream) char cerr[sizeof(ostream)]; -alignas (ostream) char clog[sizeof(ostream)]; -alignas (wistream) char wcin [sizeof(wistream)]; -alignas (wostream) char wcout[sizeof(wostream)]; -alignas (wostream) char wcerr[sizeof(wostream)]; -alignas (wostream) char wclog[sizeof(wostream)]; +_ALIGNAS_TYPE (istream) char cin [sizeof(istream)]; +_ALIGNAS_TYPE (ostream) char cout[sizeof(ostream)]; +_ALIGNAS_TYPE (ostream) char cerr[sizeof(ostream)]; +_ALIGNAS_TYPE (ostream) char clog[sizeof(ostream)]; +_ALIGNAS_TYPE (wistream) char wcin [sizeof(wistream)]; +_ALIGNAS_TYPE (wostream) char wcout[sizeof(wostream)]; +_ALIGNAS_TYPE (wostream) char wcerr[sizeof(wostream)]; +_ALIGNAS_TYPE (wostream) char wclog[sizeof(wostream)]; ios_base::Init __start_std_streams;