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

Paul Fee paul.f.fee@gmail.com
Mon Jan 25 01:18:30 GMT 2021


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: cxx23_v3.patch
Type: text/x-patch
Size: 10615 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc-patches/attachments/20210125/ae8d255a/attachment-0001.bin>


More information about the Gcc-patches mailing list