[PATCH v3] c++: Add support for -std=c++23

Jason Merrill jason@redhat.com
Tue Jan 26 22:50:52 GMT 2021


Running git gcc-verify on this version, I get

ERR: cannot find a ChangeLog location in message

I had to fix the indentation of the ChangeLog entries to make it work. 
Probably best to include them in the attachment, e.g. by attaching the 
result of git format-patch.  It looks like you copied them from the 
output of git log, which adds a few unwanted spaces at the beginning; 
this is fine for review, but not if the reviewer needs to commit it.

Or you could use git send-email, which is what I do for patches that 
aren't in reply to something else.

I went ahead and fixed it up, made a few small tweaks, and am checking 
in the following.  Thanks!

On 1/24/21 8:18 PM, Paul Fee via Gcc-patches wrote:
> Derived from the changes that added C++2a support in 2017.
> https://gcc.gnu.org/g:026a79f70cf33f836ea5275eda72d4870a3041e5
> 
> No C++23 features are added here.
> Use of -std=c++23 sets __cplusplus to 202100L.
> 
> $ g++ -std=c++23 -dM -E -x c++ - < /dev/null | grep cplusplus
> #define __cplusplus 202100L
> 
> Changes since v2 (11th Jan 2021):
> * Dropped testsuite change (c++2a to c++20).
> * As suggested by Marek Polacek and Jason Merrill
>    Added -std=c++23 since three year cadence is well established.
> 
> Author: Paul Fee <paul.f.fee@gmail.com>
> Date:   Mon Jan 25 00:12:03 2021 +0000
> 
>     Add support for -std=c++23
> 
>     gcc/
> 
>             * doc/cpp.texi (__cplusplus): Document value for -std=c++23
>             or -std=gnu++23.
>             * doc/invoke.texi: Document -std=c++23 and -std=gnu++23.
>             * dwarf2out.c (highest_c_language): Recognise C++20 and C++23.
>             (gen_compile_unit_die): Recognise C++23.
> 
>     gcc/c-family/
> 
>             * c-common.h (cxx_dialect): Add cxx23 as a dialect.
>             * c.opt: Add options for -std=c++23, std=c++2b, -std=gnu++23
>             and -std=gnu++2b
>             * c-opts.c (set_std_cxx23): New.
>             (c_common_handle_option): Set options when -std=c++23 is enabled.
>             (c_common_post_options): Adjust comments.
>             (set_std_cxx20): Likewise.
> 
>     gcc/testsuite/
> 
>             * lib/target-supports.exp (check_effective_target_c++2a):
>             Check for C++2a or C++23.
>             (check_effective_target_c++2a_down): New.
>             (check_effective_target_c++20_down): New.
>             (check_effective_target_c++23_only): New.
>             (check_effective_target_c++23): New.
>             * g++.dg/cpp23/cplusplus.C: New.
> 
>     libcpp/
> 
>             * include/cpplib.h (c_lang): Add CXX23 and GNUCXX23.
>             * init.c (lang_defaults): Add rows for CXX23 and GNUCXX23.
>             (cpp_init_builtins): Set __cplusplus to 202100L for C++23.
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-c-Add-support-for-std-c-23.patch
Type: text/x-patch
Size: 12635 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/libstdc++/attachments/20210126/edf33e11/attachment.bin>


More information about the Libstdc++ mailing list