Re: [PATCH] libcpp, c-family: Implement C++29 P3733R1 - More named universal character escapes
Jason Merrill <[email protected]> Wed, 5 Aug 2026 19:19:13 -0400
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <[email protected]> |
On 6/11/26 10:01 AM, Jakub Jelinek wrote: > Hi! > > The following patch attempts to implement > C++29 P3733R1 - More named universal character escapes > paper as a DR. > I've left out the regenerated file diff, because it is over the mailing > list limits even after xz -9e. > > Ok for trunk if this is voted into C++29 as DR? OK. > 2026-06-11 Jakub Jelinek <[email protected]> > > gcc/c-family/ > * c-cppbuiltin.cc (c_cpp_builtins): Change > __cpp_named_character_escapes value from 202207L to 202606L. > gcc/testsuite/ > * c-c++-common/cpp/named-universal-char-escape-3.c: Remove two > expected errors. > * c-c++-common/cpp/named-universal-char-escape-8.c: New test. > * g++.dg/DRs/dr2581-2.C: Adjust __cpp_named_character_escapes value. > * g++.dg/cpp23/feat-cxx2b.C (__cpp_named_character_escapes): Expect > 202606L rather than 202207L. > * g++.dg/cpp26/feat-cxx26.C (__cpp_named_character_escapes): Likewise. > libcpp/ > * makeuname2c.cc: Implement C++29 P3733R1 - More named universal > character escapes as a DR. > (read_table): Don't ignore figment and abbreviation aliases. > * uname2c.h: Regenerate. > > --- gcc/c-family/c-cppbuiltin.cc.jj 2026-06-08 21:35:37.748685829 +0200 > +++ gcc/c-family/c-cppbuiltin.cc 2026-06-11 14:50:19.582956220 +0200 > @@ -1099,7 +1099,7 @@ c_cpp_builtins (cpp_reader *pfile) > cpp_define (pfile, "__cpp_constexpr=202211L"); > cpp_define (pfile, "__cpp_deduction_guides=202207L"); > cpp_define (pfile, "__cpp_multidimensional_subscript=202211L"); > - cpp_define (pfile, "__cpp_named_character_escapes=202207L"); > + cpp_define (pfile, "__cpp_named_character_escapes=202606L"); > cpp_define (pfile, "__cpp_static_call_operator=202207L"); > cpp_define (pfile, "__cpp_implicit_move=202207L"); > cpp_define (pfile, "__cpp_explicit_this_parameter=202110L"); > --- gcc/testsuite/c-c++-common/cpp/named-universal-char-escape-3.c.jj 2026-03-27 10:17:15.174313768 +0100 > +++ gcc/testsuite/c-c++-common/cpp/named-universal-char-escape-3.c 2026-06-11 15:18:11.104788931 +0200 > @@ -14,5 +14,5 @@ const char32_t *c = U"\N{ I've just made > const char32_t *d = U"\N{_________ _______}"; /* { dg-error "is not a valid universal character" } */ > const char32_t *e = U"\N{O.X}"; /* { dg-error "'\\\\N\\{' not terminated with '\\}' after" } */ > const char32_t *f = U"\N{.}"; /* { dg-error "'\\\\N\\{' not terminated with '\\}' after" } */ > -const char32_t *g = U"\N{BOM}"; /* { dg-error "is not a valid universal character" } */ > -const char32_t *h = U"\N{ZWNBSP}"; /* { dg-error "is not a valid universal character" } */ > +const char32_t *g = U"\N{BOM}"; > +const char32_t *h = U"\N{ZWNBSP}"; > --- gcc/testsuite/c-c++-common/cpp/named-universal-char-escape-8.c.jj 2026-06-11 14:54:07.615925317 +0200 > +++ gcc/testsuite/c-c++-common/cpp/named-universal-char-escape-8.c 2026-06-11 15:26:20.022365209 +0200 > @@ -0,0 +1,388 @@ > +/* P3733R1 - More named universal character escapes */ > +/* { dg-do run } */ > +/* { dg-require-effective-target wchar } */ > +/* { dg-options "-std=gnu99 -Wno-c++-compat" { target c } } */ > +/* { dg-options "-std=c++23" { target c++ } } */ > + > +#ifndef __cplusplus > +#include <wchar.h> > +typedef __CHAR16_TYPE__ char16_t; > +typedef __CHAR32_TYPE__ char32_t; > +#endif > + > +#ifdef __cplusplus > +#if U'\u0080' != U'\N{PADDING CHARACTER}' \ > + || U'\u0081' != U'\N{HIGH OCTET PRESET}' \ > + || U'\u0099' != U'\N{SINGLE GRAPHIC CHARACTER INTRODUCER}' \ > + || U'\u0000' != U'\N{NUL}' \ > + || U'\u0001' != U'\N{SOH}' \ > + || U'\u0002' != U'\N{STX}' \ > + || U'\u0003' != U'\N{ETX}' \ > + || U'\u0004' != U'\N{EOT}' \ > + || U'\u0005' != U'\N{ENQ}' \ > + || U'\u0006' != U'\N{ACK}' \ > + || U'\u0007' != U'\N{BEL}' \ > + || U'\u0008' != U'\N{BS}' \ > + || U'\u0009' != U'\N{HT}' \ > + || U'\u0009' != U'\N{TAB}' \ > + || U'\u000A' != U'\N{LF}' \ > + || U'\u000A' != U'\N{NL}' \ > + || U'\u000A' != U'\N{EOL}' \ > + || U'\u000B' != U'\N{VT}' \ > + || U'\u000C' != U'\N{FF}' \ > + || U'\u000D' != U'\N{CR}' \ > + || U'\u000E' != U'\N{SO}' \ > + || U'\u000F' != U'\N{SI}' \ > + || U'\u0010' != U'\N{DLE}' \ > + || U'\u0011' != U'\N{DC1}' \ > + || U'\u0012' != U'\N{DC2}' \ > + || U'\u0013' != U'\N{DC3}' \ > + || U'\u0014' != U'\N{DC4}' \ > + || U'\u0015' != U'\N{NAK}' \ > + || U'\u0016' != U'\N{SYN}' \ > + || U'\u0017' != U'\N{ETB}' \ > + || U'\u0018' != U'\N{CAN}' \ > + || U'\u0019' != U'\N{EOM}' \ > + || U'\u0019' != U'\N{EM}' \ > + || U'\u001A' != U'\N{SUB}' \ > + || U'\u001B' != U'\N{ESC}' \ > + || U'\u001C' != U'\N{FS}' \ > + || U'\u001D' != U'\N{GS}' \ > + || U'\u001E' != U'\N{RS}' \ > + || U'\u001F' != U'\N{US}' \ > + || U'\u0020' != U'\N{SP}' \ > + || U'\u007F' != U'\N{DEL}' \ > + || U'\u0080' != U'\N{PAD}' \ > + || U'\u0081' != U'\N{HOP}' \ > + || U'\u0082' != U'\N{BPH}' \ > + || U'\u0083' != U'\N{NBH}' \ > + || U'\u0084' != U'\N{IND}' \ > + || U'\u0085' != U'\N{NEL}' \ > + || U'\u0086' != U'\N{SSA}' \ > + || U'\u0087' != U'\N{ESA}' \ > + || U'\u0088' != U'\N{HTS}' \ > + || U'\u0089' != U'\N{HTJ}' \ > + || U'\u008A' != U'\N{VTS}' \ > + || U'\u008B' != U'\N{PLD}' \ > + || U'\u008C' != U'\N{PLU}' \ > + || U'\u008D' != U'\N{RI}' \ > + || U'\u008E' != U'\N{SS2}' \ > + || U'\u008F' != U'\N{SS3}' \ > + || U'\u0090' != U'\N{DCS}' \ > + || U'\u0091' != U'\N{PU1}' \ > + || U'\u0092' != U'\N{PU2}' \ > + || U'\u0093' != U'\N{STS}' \ > + || U'\u0094' != U'\N{CCH}' \ > + || U'\u0095' != U'\N{MW}' \ > + || U'\u0096' != U'\N{SPA}' \ > + || U'\u0097' != U'\N{EPA}' \ > + || U'\u0098' != U'\N{SOS}' \ > + || U'\u0099' != U'\N{SGC}' \ > + || U'\u009A' != U'\N{SCI}' \ > + || U'\u009B' != U'\N{CSI}' \ > + || U'\u009C' != U'\N{ST}' \ > + || U'\u009D' != U'\N{OSC}' \ > + || U'\u009E' != U'\N{PM}' \ > + || U'\u009F' != U'\N{APC}' \ > + || U'\u00A0' != U'\N{NBSP}' \ > + || U'\u00AD' != U'\N{SHY}' \ > + || U'\u034F' != U'\N{CGJ}' \ > + || U'\u061C' != U'\N{ALM}' \ > + || U'\u180B' != U'\N{FVS1}' \ > + || U'\u180C' != U'\N{FVS2}' \ > + || U'\u180D' != U'\N{FVS3}' \ > + || U'\u180E' != U'\N{MVS}' \ > + || U'\u180F' != U'\N{FVS4}' \ > + || U'\u200B' != U'\N{ZWSP}' \ > + || U'\u200C' != U'\N{ZWNJ}' \ > + || U'\u200D' != U'\N{ZWJ}' \ > + || U'\u200E' != U'\N{LRM}' \ > + || U'\u200F' != U'\N{RLM}' \ > + || U'\u202A' != U'\N{LRE}' \ > + || U'\u202B' != U'\N{RLE}' \ > + || U'\u202C' != U'\N{PDF}' \ > + || U'\u202D' != U'\N{LRO}' \ > + || U'\u202E' != U'\N{RLO}' \ > + || U'\u202F' != U'\N{NNBSP}' \ > + || U'\u205F' != U'\N{MMSP}' \ > + || U'\u2060' != U'\N{WJ}' \ > + || U'\u2066' != U'\N{LRI}' \ > + || U'\u2067' != U'\N{RLI}' \ > + || U'\u2068' != U'\N{FSI}' \ > + || U'\u2069' != U'\N{PDI}' \ > + || U'\uFE00' != U'\N{VS1}' \ > + || U'\uFE01' != U'\N{VS2}' \ > + || U'\uFE02' != U'\N{VS3}' \ > + || U'\uFE03' != U'\N{VS4}' \ > + || U'\uFE04' != U'\N{VS5}' \ > + || U'\uFE05' != U'\N{VS6}' \ > + || U'\uFE06' != U'\N{VS7}' \ > + || U'\uFE07' != U'\N{VS8}' \ > + || U'\uFE08' != U'\N{VS9}' \ > + || U'\uFE09' != U'\N{VS10}' \ > + || U'\uFE0A' != U'\N{VS11}' \ > + || U'\uFE0B' != U'\N{VS12}' \ > + || U'\uFE0C' != U'\N{VS13}' \ > + || U'\uFE0D' != U'\N{VS14}' \ > + || U'\uFE0E' != U'\N{VS15}' \ > + || U'\uFE0F' != U'\N{VS16}' \ > + || U'\uFEFF' != U'\N{BOM}' \ > + || U'\uFEFF' != U'\N{ZWNBSP}' \ > + || U'\U0002FA1D' != U'\N{CJK COMPATIBILITY IDEOGRAPH-2FA1D}' > + || U'\U000E0100' != U'\N{VS17}' \ > + || U'\U000E0101' != U'\N{VS18}' \ > + || U'\U000E0102' != U'\N{VS19}' \ > + || U'\U000E0103' != U'\N{VS20}' \ > + || U'\U000E0104' != U'\N{VS21}' \ > + || U'\U000E0105' != U'\N{VS22}' \ > + || U'\U000E0106' != U'\N{VS23}' \ > + || U'\U000E0107' != U'\N{VS24}' \ > + || U'\U000E0108' != U'\N{VS25}' \ > + || U'\U000E0109' != U'\N{VS26}' \ > + || U'\U000E010A' != U'\N{VS27}' \ > + || U'\U000E010B' != U'\N{VS28}' \ > + || U'\U000E010C' != U'\N{VS29}' \ > + || U'\U000E010D' != U'\N{VS30}' \ > + || U'\U000E010E' != U'\N{VS31}' \ > + || U'\U000E010F' != U'\N{VS32}' \ > + || U'\U000E0110' != U'\N{VS33}' \ > + || U'\U000E0111' != U'\N{VS34}' \ > + || U'\U000E0112' != U'\N{VS35}' \ > + || U'\U000E0113' != U'\N{VS36}' \ > + || U'\U000E0114' != U'\N{VS37}' \ > + || U'\U000E0115' != U'\N{VS38}' \ > + || U'\U000E0116' != U'\N{VS39}' \ > + || U'\U000E0117' != U'\N{VS40}' \ > + || U'\U000E0118' != U'\N{VS41}' \ > + || U'\U000E0119' != U'\N{VS42}' \ > + || U'\U000E011A' != U'\N{VS43}' \ > + || U'\U000E011B' != U'\N{VS44}' \ > + || U'\U000E011C' != U'\N{VS45}' \ > + || U'\U000E011D' != U'\N{VS46}' \ > + || U'\U000E011E' != U'\N{VS47}' \ > + || U'\U000E011F' != U'\N{VS48}' \ > + || U'\U000E0120' != U'\N{VS49}' \ > + || U'\U000E0121' != U'\N{VS50}' \ > + || U'\U000E0122' != U'\N{VS51}' \ > + || U'\U000E0123' != U'\N{VS52}' \ > + || U'\U000E0124' != U'\N{VS53}' \ > + || U'\U000E0125' != U'\N{VS54}' \ > + || U'\U000E0126' != U'\N{VS55}' \ > + || U'\U000E0127' != U'\N{VS56}' \ > + || U'\U000E0128' != U'\N{VS57}' \ > + || U'\U000E0129' != U'\N{VS58}' \ > + || U'\U000E012A' != U'\N{VS59}' \ > + || U'\U000E012B' != U'\N{VS60}' \ > + || U'\U000E012C' != U'\N{VS61}' \ > + || U'\U000E012D' != U'\N{VS62}' \ > + || U'\U000E012E' != U'\N{VS63}' \ > + || U'\U000E012F' != U'\N{VS64}' \ > + || U'\U000E0130' != U'\N{VS65}' \ > + || U'\U000E0131' != U'\N{VS66}' \ > + || U'\U000E0132' != U'\N{VS67}' \ > + || U'\U000E0133' != U'\N{VS68}' \ > + || U'\U000E0134' != U'\N{VS69}' \ > + || U'\U000E0135' != U'\N{VS70}' \ > + || U'\U000E0136' != U'\N{VS71}' \ > + || U'\U000E0137' != U'\N{VS72}' \ > + || U'\U000E0138' != U'\N{VS73}' \ > + || U'\U000E0139' != U'\N{VS74}' \ > + || U'\U000E013A' != U'\N{VS75}' \ > + || U'\U000E013B' != U'\N{VS76}' \ > + || U'\U000E013C' != U'\N{VS77}' \ > + || U'\U000E013D' != U'\N{VS78}' \ > + || U'\U000E013E' != U'\N{VS79}' \ > + || U'\U000E013F' != U'\N{VS80}' \ > + || U'\U000E0140' != U'\N{VS81}' \ > + || U'\U000E0141' != U'\N{VS82}' \ > + || U'\U000E0142' != U'\N{VS83}' \ > + || U'\U000E0143' != U'\N{VS84}' \ > + || U'\U000E0144' != U'\N{VS85}' \ > + || U'\U000E0145' != U'\N{VS86}' \ > + || U'\U000E0146' != U'\N{VS87}' \ > + || U'\U000E0147' != U'\N{VS88}' \ > + || U'\U000E0148' != U'\N{VS89}' \ > + || U'\U000E0149' != U'\N{VS90}' \ > + || U'\U000E014A' != U'\N{VS91}' \ > + || U'\U000E014B' != U'\N{VS92}' \ > + || U'\U000E014C' != U'\N{VS93}' \ > + || U'\U000E014D' != U'\N{VS94}' \ > + || U'\U000E014E' != U'\N{VS95}' \ > + || U'\U000E014F' != U'\N{VS96}' \ > + || U'\U000E0150' != U'\N{VS97}' \ > + || U'\U000E0151' != U'\N{VS98}' \ > + || U'\U000E0152' != U'\N{VS99}' \ > + || U'\U000E0153' != U'\N{VS100}' \ > + || U'\U000E0154' != U'\N{VS101}' \ > + || U'\U000E0155' != U'\N{VS102}' \ > + || U'\U000E0156' != U'\N{VS103}' \ > + || U'\U000E0157' != U'\N{VS104}' \ > + || U'\U000E0158' != U'\N{VS105}' \ > + || U'\U000E0159' != U'\N{VS106}' \ > + || U'\U000E015A' != U'\N{VS107}' \ > + || U'\U000E015B' != U'\N{VS108}' \ > + || U'\U000E015C' != U'\N{VS109}' \ > + || U'\U000E015D' != U'\N{VS110}' \ > + || U'\U000E015E' != U'\N{VS111}' \ > + || U'\U000E015F' != U'\N{VS112}' \ > + || U'\U000E0160' != U'\N{VS113}' \ > + || U'\U000E0161' != U'\N{VS114}' \ > + || U'\U000E0162' != U'\N{VS115}' \ > + || U'\U000E0163' != U'\N{VS116}' \ > + || U'\U000E0164' != U'\N{VS117}' \ > + || U'\U000E0165' != U'\N{VS118}' \ > + || U'\U000E0166' != U'\N{VS119}' \ > + || U'\U000E0167' != U'\N{VS120}' \ > + || U'\U000E0168' != U'\N{VS121}' \ > + || U'\U000E0169' != U'\N{VS122}' \ > + || U'\U000E016A' != U'\N{VS123}' \ > + || U'\U000E016B' != U'\N{VS124}' \ > + || U'\U000E016C' != U'\N{VS125}' \ > + || U'\U000E016D' != U'\N{VS126}' \ > + || U'\U000E016E' != U'\N{VS127}' \ > + || U'\U000E016F' != U'\N{VS128}' \ > + || U'\U000E0170' != U'\N{VS129}' \ > + || U'\U000E0171' != U'\N{VS130}' \ > + || U'\U000E0172' != U'\N{VS131}' \ > + || U'\U000E0173' != U'\N{VS132}' \ > + || U'\U000E0174' != U'\N{VS133}' \ > + || U'\U000E0175' != U'\N{VS134}' \ > + || U'\U000E0176' != U'\N{VS135}' \ > + || U'\U000E0177' != U'\N{VS136}' \ > + || U'\U000E0178' != U'\N{VS137}' \ > + || U'\U000E0179' != U'\N{VS138}' \ > + || U'\U000E017A' != U'\N{VS139}' \ > + || U'\U000E017B' != U'\N{VS140}' \ > + || U'\U000E017C' != U'\N{VS141}' \ > + || U'\U000E017D' != U'\N{VS142}' \ > + || U'\U000E017E' != U'\N{VS143}' \ > + || U'\U000E017F' != U'\N{VS144}' \ > + || U'\U000E0180' != U'\N{VS145}' \ > + || U'\U000E0181' != U'\N{VS146}' \ > + || U'\U000E0182' != U'\N{VS147}' \ > + || U'\U000E0183' != U'\N{VS148}' \ > + || U'\U000E0184' != U'\N{VS149}' \ > + || U'\U000E0185' != U'\N{VS150}' \ > + || U'\U000E0186' != U'\N{VS151}' \ > + || U'\U000E0187' != U'\N{VS152}' \ > + || U'\U000E0188' != U'\N{VS153}' \ > + || U'\U000E0189' != U'\N{VS154}' \ > + || U'\U000E018A' != U'\N{VS155}' \ > + || U'\U000E018B' != U'\N{VS156}' \ > + || U'\U000E018C' != U'\N{VS157}' \ > + || U'\U000E018D' != U'\N{VS158}' \ > + || U'\U000E018E' != U'\N{VS159}' \ > + || U'\U000E018F' != U'\N{VS160}' \ > + || U'\U000E0190' != U'\N{VS161}' \ > + || U'\U000E0191' != U'\N{VS162}' \ > + || U'\U000E0192' != U'\N{VS163}' \ > + || U'\U000E0193' != U'\N{VS164}' \ > + || U'\U000E0194' != U'\N{VS165}' \ > + || U'\U000E0195' != U'\N{VS166}' \ > + || U'\U000E0196' != U'\N{VS167}' \ > + || U'\U000E0197' != U'\N{VS168}' \ > + || U'\U000E0198' != U'\N{VS169}' \ > + || U'\U000E0199' != U'\N{VS170}' \ > + || U'\U000E019A' != U'\N{VS171}' \ > + || U'\U000E019B' != U'\N{VS172}' \ > + || U'\U000E019C' != U'\N{VS173}' \ > + || U'\U000E019D' != U'\N{VS174}' \ > + || U'\U000E019E' != U'\N{VS175}' \ > + || U'\U000E019F' != U'\N{VS176}' \ > + || U'\U000E01A0' != U'\N{VS177}' \ > + || U'\U000E01A1' != U'\N{VS178}' \ > + || U'\U000E01A2' != U'\N{VS179}' \ > + || U'\U000E01A3' != U'\N{VS180}' \ > + || U'\U000E01A4' != U'\N{VS181}' \ > + || U'\U000E01A5' != U'\N{VS182}' \ > + || U'\U000E01A6' != U'\N{VS183}' \ > + || U'\U000E01A7' != U'\N{VS184}' \ > + || U'\U000E01A8' != U'\N{VS185}' \ > + || U'\U000E01A9' != U'\N{VS186}' \ > + || U'\U000E01AA' != U'\N{VS187}' \ > + || U'\U000E01AB' != U'\N{VS188}' \ > + || U'\U000E01AC' != U'\N{VS189}' \ > + || U'\U000E01AD' != U'\N{VS190}' \ > + || U'\U000E01AE' != U'\N{VS191}' \ > + || U'\U000E01AF' != U'\N{VS192}' \ > + || U'\U000E01B0' != U'\N{VS193}' \ > + || U'\U000E01B1' != U'\N{VS194}' \ > + || U'\U000E01B2' != U'\N{VS195}' \ > + || U'\U000E01B3' != U'\N{VS196}' \ > + || U'\U000E01B4' != U'\N{VS197}' \ > + || U'\U000E01B5' != U'\N{VS198}' \ > + || U'\U000E01B6' != U'\N{VS199}' \ > + || U'\U000E01B7' != U'\N{VS200}' \ > + || U'\U000E01B8' != U'\N{VS201}' \ > + || U'\U000E01B9' != U'\N{VS202}' \ > + || U'\U000E01BA' != U'\N{VS203}' \ > + || U'\U000E01BB' != U'\N{VS204}' \ > + || U'\U000E01BC' != U'\N{VS205}' \ > + || U'\U000E01BD' != U'\N{VS206}' \ > + || U'\U000E01BE' != U'\N{VS207}' \ > + || U'\U000E01BF' != U'\N{VS208}' \ > + || U'\U000E01C0' != U'\N{VS209}' \ > + || U'\U000E01C1' != U'\N{VS210}' \ > + || U'\U000E01C2' != U'\N{VS211}' \ > + || U'\U000E01C3' != U'\N{VS212}' \ > + || U'\U000E01C4' != U'\N{VS213}' \ > + || U'\U000E01C5' != U'\N{VS214}' \ > + || U'\U000E01C6' != U'\N{VS215}' \ > + || U'\U000E01C7' != U'\N{VS216}' \ > + || U'\U000E01C8' != U'\N{VS217}' \ > + || U'\U000E01C9' != U'\N{VS218}' \ > + || U'\U000E01CA' != U'\N{VS219}' \ > + || U'\U000E01CB' != U'\N{VS220}' \ > + || U'\U000E01CC' != U'\N{VS221}' \ > + || U'\U000E01CD' != U'\N{VS222}' \ > + || U'\U000E01CE' != U'\N{VS223}' \ > + || U'\U000E01CF' != U'\N{VS224}' \ > + || U'\U000E01D0' != U'\N{VS225}' \ > + || U'\U000E01D1' != U'\N{VS226}' \ > + || U'\U000E01D2' != U'\N{VS227}' \ > + || U'\U000E01D3' != U'\N{VS228}' \ > + || U'\U000E01D4' != U'\N{VS229}' \ > + || U'\U000E01D5' != U'\N{VS230}' \ > + || U'\U000E01D6' != U'\N{VS231}' \ > + || U'\U000E01D7' != U'\N{VS232}' \ > + || U'\U000E01D8' != U'\N{VS233}' \ > + || U'\U000E01D9' != U'\N{VS234}' \ > + || U'\U000E01DA' != U'\N{VS235}' \ > + || U'\U000E01DB' != U'\N{VS236}' \ > + || U'\U000E01DC' != U'\N{VS237}' \ > + || U'\U000E01DD' != U'\N{VS238}' \ > + || U'\U000E01DE' != U'\N{VS239}' \ > + || U'\U000E01DF' != U'\N{VS240}' \ > + || U'\U000E01E0' != U'\N{VS241}' \ > + || U'\U000E01E1' != U'\N{VS242}' \ > + || U'\U000E01E2' != U'\N{VS243}' \ > + || U'\U000E01E3' != U'\N{VS244}' \ > + || U'\U000E01E4' != U'\N{VS245}' \ > + || U'\U000E01E5' != U'\N{VS246}' \ > + || U'\U000E01E6' != U'\N{VS247}' \ > + || U'\U000E01E7' != U'\N{VS248}' \ > + || U'\U000E01E8' != U'\N{VS249}' \ > + || U'\U000E01E9' != U'\N{VS250}' \ > + || U'\U000E01EA' != U'\N{VS251}' \ > + || U'\U000E01EB' != U'\N{VS252}' \ > + || U'\U000E01EC' != U'\N{VS253}' \ > + || U'\U000E01ED' != U'\N{VS254}' \ > + || U'\U000E01EE' != U'\N{VS255}' \ > + || U'\U000E01EF' != U'\N{VS256}' > +#error Bad > +#endif > +#endif > + > +const char32_t *a = U"\N{PADDING CHARACTER}\N{HIGH OCTET PRESET}\N{SINGLE GRAPHIC CHARACTER INTRODUCER}"; > +const char32_t *b = U"\N{BEL}\N{NL}\N{CGJ}\N{ZWNJ}\N{VS4}\N{ZWNBSP}\N{BOM}\N{VS46}\N{NUL}"; > + > +int > +main () > +{ > + if (a[0] != U'\u0080' || a[1] != U'\u0081' || a[2] != U'\u0099' || a[3] > + || b[0] != U'\u0007' || b[1] != U'\u000A' || b[2] != U'\u034F' || b[3] != U'\u200C' > + || b[4] != U'\uFE03' || b[5] != U'\uFEFF' || b[6] != U'\uFEFF' || b[7] != U'\U000E011D' > + || b[8] || b[9]) > + __builtin_abort (); > + return 0; > +} > --- gcc/testsuite/g++.dg/DRs/dr2581-2.C.jj 2026-05-22 10:15:30.255057573 +0200 > +++ gcc/testsuite/g++.dg/DRs/dr2581-2.C 2026-06-11 14:51:17.881181353 +0200 > @@ -73,7 +73,7 @@ > #define __cpp_lambdas 200907L // { dg-error "'__cpp_lambdas' redefined" "" { target c++20 } } > #define __cpp_modules 201907L // { dg-error "'__cpp_modules' redefined" "" { target c++20 } } > #define __cpp_multidimensional_subscript 202211L // { dg-error "'__cpp_multidimensional_subscript' redefined" "" { target c++23 } } > -#define __cpp_named_character_escapes 202207L // { dg-error "'__cpp_named_character_escapes' redefined" "" { target c++23 } } > +#define __cpp_named_character_escapes 202606L // { dg-error "'__cpp_named_character_escapes' redefined" "" { target c++23 } } > #define __cpp_namespace_attributes 201411L // { dg-error "'__cpp_namespace_attributes' redefined" "" { target c++20 } } > #define __cpp_noexcept_function_type 201510L // { dg-error "'__cpp_noexcept_function_type' redefined" "" { target c++20 } } > #define __cpp_nontype_template_args 201911L // { dg-error "'__cpp_nontype_template_args' redefined" "" { target c++17 } } > --- gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C.jj 2026-03-27 10:17:15.643306115 +0100 > +++ gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C 2026-06-11 14:51:41.366869194 +0200 > @@ -563,8 +563,8 @@ > > #ifndef __cpp_named_character_escapes > # error "__cpp_named_character_escapes" > -#elif __cpp_named_character_escapes != 202207 > -# error "__cpp_named_character_escapes != 202207" > +#elif __cpp_named_character_escapes != 202606 > +# error "__cpp_named_character_escapes != 202606" > #endif > > #ifndef __cpp_static_call_operator > --- gcc/testsuite/g++.dg/cpp26/feat-cxx26.C.jj 2026-05-26 16:32:28.632304475 +0200 > +++ gcc/testsuite/g++.dg/cpp26/feat-cxx26.C 2026-06-11 14:52:01.595600324 +0200 > @@ -563,8 +563,8 @@ > > #ifndef __cpp_named_character_escapes > # error "__cpp_named_character_escapes" > -#elif __cpp_named_character_escapes != 202207 > -# error "__cpp_named_character_escapes != 202207" > +#elif __cpp_named_character_escapes != 202606 > +# error "__cpp_named_character_escapes != 202606" > #endif > > #ifndef __cpp_static_call_operator > --- libcpp/makeuname2c.cc.jj 2026-03-27 10:17:21.571209381 +0100 > +++ libcpp/makeuname2c.cc 2026-06-11 14:37:46.896960517 +0200 > @@ -220,14 +220,7 @@ read_table (char *fname, bool aliases_p) > > aname = NULL; > if (aliases_p) > - { > - /* Ignore figment and abbreviation aliases. */ > - if (strcmp (l + 1, "correction\n") != 0 > - && strcmp (l + 1, "control\n") != 0 > - && strcmp (l + 1, "alternate\n") != 0) > - continue; > - i = ARRAY_SIZE (generated_ranges); > - } > + i = ARRAY_SIZE (generated_ranges); > else > { > for (i = 0; i < ARRAY_SIZE (generated_ranges); ++i) > > Jakub >