Implement C1X _Alignas, _Alignof, max_align_t, stdalign.h

Jonathan Wakely jwakely.gcc@gmail.com
Mon Nov 7 08:47:00 GMT 2011


On 7 November 2011 00:43, Jonathan Wakely wrote:
> On 7 November 2011 00:37, Joseph S. Myers wrote:
>> On Mon, 7 Nov 2011, Jonathan Wakely wrote:
>>
>>> On 6 November 2011 23:53, Joseph S. Myers wrote:
>>> >
>>> > As with stdnoreturn.h, the contents of stdalign.h are conditioned out
>>> > for C++; I'll leave it to C++ people to work out what's most useful
>>> > there if something nonempty is wanted (stdnoreturn.h is empty for C++,
>>> > stdbool.h defines _Bool and bool to bool, true to true etc.).
>>>
>>> Thanks Joseph, that will allow use to provide <cstdalign> in libstdc++.
>>>
>>> By my reading of the C++11 standard, the __alignas_is_defined macro
>>> should still be defined in C++, and alignof isn't mentioned, was that
>>> a late addition to C1X?
>>
>> The move from alignof as a keyword to _Alignof as a keyword with alignof
>> as a macro in stdalign.h was done at the London meeting (March 2011) in
>> response to comment US20.  stdnoreturn.h was also added at that meeting.
>
> Thanks for the info.  I think treating alignof identically to alignas
> for C++ makes sense then - the __alignof_is_defined macro is in the
> reserved namespace so it's OK for a conforming C++11 implementation to
> define it.
>
>> It looks like what GCC defines in stdbool.h for C++ goes beyond what C++11
>> says it should ("The header <cstdbool> and the header <stdbool.h> shall
>> not define macros named bool, true, or false.")  stdint.h is another case
>> needing adjustment for C++11, though there what I've suggested is that GCC
>> should predefine __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS in C++11
>> mode as the best way to work with all implementations of that header that
>> follow what C99 footnotes suggest.
>
> Indeed - I was just noticing that the libstdc++ testsuite doesn't
> check that stdbool.h doesn't define those macros.


This patch adds <cstdalign> to libstdc++

        * acinclude.m4: Check for <stdalign.h>
        * configure: Regenerate.
        * config.h.in: Likewise.
        * include/Makefile.am: Add <cstdalign>.
        * include/Makefile.in: Regenerate.
        * include/c_global/cstdalign: New.
        * testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc: New.
        * doc/xml/manual/backwards_compatibility.xml: Update.
        * doc/xml/manual/status_cxx2011.xml: Update.

Tested x86_64-linux, committed to trunk.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cstdalign.patch
Type: text/x-patch
Size: 4781 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20111107/7d08be7a/attachment.bin>


More information about the Libstdc++ mailing list