Message ID | ZipCkwLeRN1IDibh@tucnak |
---|---|
State | New |
Headers | show |
Series | libcpp: Adjust __STDC_VERSION__ for C23 | expand |
On Thu, 25 Apr 2024, Jakub Jelinek wrote: > Hi! > > While the C23 standard isn't officially release yet, > in 2011 we've changed __STDC_VERSION__ value for C11 already > in the month in which the new __STDC_VERSION__ value has been > finalized, so we want to change this now or wait > until we implement all the C23 features? > > Note, seems Clang up to 17 also used 202000L for -std=c2x but > Clang 18+ uses 202311L as specified in the latest C23 drafts. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for > trunk? In the spirit of the principle that these macros indicate intent rather than completeness, it's probably reasonable to change now. The main missing feature still to be implemented is #embed, hopefully we can get that done for GCC 15.
--- libcpp/init.cc.jj 2024-01-03 12:07:27.552378565 +0100 +++ libcpp/init.cc 2024-04-24 23:54:32.613204591 +0200 @@ -594,7 +594,7 @@ cpp_init_builtins (cpp_reader *pfile, in _cpp_define_builtin (pfile, "__STDC_VERSION__ 199409L"); else if (CPP_OPTION (pfile, lang) == CLK_STDC23 || CPP_OPTION (pfile, lang) == CLK_GNUC23) - _cpp_define_builtin (pfile, "__STDC_VERSION__ 202000L"); + _cpp_define_builtin (pfile, "__STDC_VERSION__ 202311L"); else if (CPP_OPTION (pfile, lang) == CLK_STDC17 || CPP_OPTION (pfile, lang) == CLK_GNUC17) _cpp_define_builtin (pfile, "__STDC_VERSION__ 201710L"); --- gcc/doc/cpp.texi.jj 2024-01-03 11:38:23.583695795 +0100 +++ gcc/doc/cpp.texi 2024-04-25 00:28:08.144182645 +0200 @@ -1886,8 +1886,8 @@ the 1999 revision of the C standard; the signifies the 2011 revision of the C standard; the value @code{201710L} signifies the 2017 revision of the C standard (which is otherwise identical to the 2011 version apart from correction of -defects). An unspecified value larger than @code{201710L} is used for -the experimental @option{-std=c23} and @option{-std=gnu23} modes. +defects). The value @code{202311L} is used for the experimental +@option{-std=c23} and @option{-std=gnu23} modes. This macro is not defined if the @option{-traditional-cpp} option is used, nor when compiling C++ or Objective-C@.