2021-11-30 Jakub Jelinek <ja...@redhat.com>
* init.c (struct lang_flags): Remove cxx23_identifiers.
(lang_defaults): Remove cxx23_identifiers initializers.
(cpp_set_lang): Don't copy cxx23_identifiers.
* include/cpplib.h (struct cpp_options): Adjust comment about
c11_identifiers. Remove cxx23_identifiers field.
* lex.c (warn_about_normalization): Use cplusplus instead of
cxx23_identifiers.
* charset.c (ucn_valid_in_identifier): Likewise.
* g++.dg/cpp/ucnid-1.C: Adjust expected diagnostics.
* g++.dg/cpp/ucnid-1-utf8.C: Likewise.
--- gcc/init.c.jj 2021-11-29 22:54:46.503750631 +0100
+++ gcc/init.c 2021-11-30 01:06:31.704473882 +0100
@@ -82,7 +82,6 @@ struct lang_flags
char extended_numbers;
char extended_identifiers;
char c11_identifiers;
- char cxx23_identifiers;
char std;
char digraphs;
char uliterals;
@@ -100,31 +99,31 @@ struct lang_flags
};
static const struct lang_flags lang_defaults[] =
-{ /* c99 c++ xnum xid c11 c++23 std digr ulit rlit udlit bincst
digsep trig u8chlit vaopt scope dfp szlit elifdef */
- /* GNUC89 */ { 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 1, 1, 0, 0, 0 },
- /* GNUC99 */ { 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 0, 1, 1, 0, 0, 0 },
- /* GNUC11 */ { 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0,
0, 0, 0, 1, 1, 0, 0, 0 },
- /* GNUC17 */ { 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0,
0, 0, 0, 1, 1, 0, 0, 0 },
- /* GNUC2X */ { 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1,
1, 0, 1, 1, 1, 1, 0, 1 },
- /* STDC89 */ { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0 },
- /* STDC94 */ { 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0 },
- /* STDC99 */ { 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0 },
- /* STDC11 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0 },
- /* STDC17 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0 },
- /* STDC2X */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1,
1, 1, 1, 0, 1, 1, 0, 1 },
- /* GNUCXX */ { 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 1, 1, 0, 0, 0 },
- /* CXX98 */ { 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0,
0, 1, 0, 0, 1, 0, 0, 0 },
- /* GNUCXX11 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0,
0, 0, 0, 1, 1, 0, 0, 0 },
- /* CXX11 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0,
0, 1, 0, 0, 1, 0, 0, 0 },
- /* GNUCXX14 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,
1, 0, 0, 1, 1, 0, 0, 0 },
- /* CXX14 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 0, 1, 0, 0, 0 },
- /* GNUCXX17 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,
1, 0, 1, 1, 1, 0, 0, 0 },
- /* CXX17 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 0, 1, 0, 0, 0 },
- /* GNUCXX20 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,
1, 0, 1, 1, 1, 0, 0, 0 },
- /* CXX20 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 1, 1, 0, 0, 0 },
- /* GNUCXX23 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,
1, 0, 1, 1, 1, 0, 1, 1 },
- /* CXX23 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 1, 1, 0, 1, 1 },
- /* ASM */ { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 }
+{ /* c99 c++ xnum xid c11 std digr ulit rlit udlit bincst digsep
trig u8chlit vaopt scope dfp szlit elifdef */
+ /* GNUC89 */ { 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 1, 1, 0, 0, 0 },
+ /* GNUC99 */ { 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0,
0, 0, 1, 1, 0, 0, 0 },
+ /* GNUC11 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0,
0, 0, 1, 1, 0, 0, 0 },
+ /* GNUC17 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0,
0, 0, 1, 1, 0, 0, 0 },
+ /* GNUC2X */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1,
0, 1, 1, 1, 1, 0, 1 },
+ /* STDC89 */ { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0 },
+ /* STDC94 */ { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0 },
+ /* STDC99 */ { 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0 },
+ /* STDC11 */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0 },
+ /* STDC17 */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0 },
+ /* STDC2X */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1,
1, 1, 0, 1, 1, 0, 1 },
+ /* GNUCXX */ { 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 1, 1, 0, 0, 0 },
+ /* CXX98 */ { 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0,
1, 0, 0, 1, 0, 0, 0 },
+ /* GNUCXX11 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0,
0, 0, 1, 1, 0, 0, 0 },
+ /* CXX11 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0,
1, 0, 0, 1, 0, 0, 0 },
+ /* GNUCXX14 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,
0, 0, 1, 1, 0, 0, 0 },
+ /* CXX14 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 1, 0, 0, 0 },
+ /* GNUCXX17 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 0, 0, 0 },
+ /* CXX17 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 0, 1, 0, 0, 0 },
+ /* GNUCXX20 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 0, 0, 0 },
+ /* CXX20 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 0, 0, 0 },
+ /* GNUCXX23 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 0, 1, 1 },
+ /* CXX23 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
0, 1, 1, 1, 0, 1, 1 },
+ /* ASM */ { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0 }
};
/* Sets internal flags correctly for a given language. */
@@ -140,7 +139,6 @@ cpp_set_lang (cpp_reader *pfile, enum c_
CPP_OPTION (pfile, extended_numbers) = l->extended_numbers;
CPP_OPTION (pfile, extended_identifiers) = l->extended_identifiers;
CPP_OPTION (pfile, c11_identifiers) = l->c11_identifiers;
- CPP_OPTION (pfile, cxx23_identifiers) = l->cxx23_identifiers;
CPP_OPTION (pfile, std) = l->std;
CPP_OPTION (pfile, digraphs) = l->digraphs;
CPP_OPTION (pfile, uliterals) = l->uliterals;
--- gcc/include/cpplib.h.jj 2021-11-17 20:08:18.359724792 +0100
+++ gcc/include/cpplib.h 2021-11-30 01:06:12.325741705 +0100
@@ -491,13 +491,9 @@ struct cpp_options
unsigned char ext_numeric_literals;
/* Nonzero means extended identifiers allow the characters specified
- in C11 and C++11. */
+ in C11. */
unsigned char c11_identifiers;
- /* Nonzero means extended identifiers allow the characters specified
- in C++23. */
- unsigned char cxx23_identifiers;
-
/* Nonzero for C++ 2014 Standard binary constants. */
unsigned char binary_constants;
--- gcc/lex.c.jj 2021-11-23 23:09:03.404339391 +0100
+++ gcc/lex.c 2021-11-30 01:07:20.713796544 +0100
@@ -1838,7 +1838,7 @@ warn_about_normalization (cpp_reader *pf
if (NORMALIZE_STATE_RESULT (s) == normalized_C)
cpp_warning_at (pfile, CPP_W_NORMALIZE, &rich_loc,
"`%.*s' is not in NFKC", (int) sz, buf);
- else if (CPP_OPTION (pfile, cxx23_identifiers))
+ else if (CPP_OPTION (pfile, cplusplus))
cpp_pedwarning_at (pfile, CPP_W_NORMALIZE, &rich_loc,
"`%.*s' is not in NFC", (int) sz, buf);
else
--- gcc/charset.c.jj 2021-11-01 23:01:30.582702315 +0100
+++ gcc/charset.c 2021-11-30 01:08:13.651064928 +0100
@@ -955,14 +955,12 @@ ucn_valid_in_identifier (cpp_reader *pfi
valid_flags = C99 | CXX | C11 | CXX23;
if (CPP_PEDANTIC (pfile))
{
- if (CPP_OPTION (pfile, cxx23_identifiers))
+ if (CPP_OPTION (pfile, cplusplus))
valid_flags = CXX23;
else if (CPP_OPTION (pfile, c11_identifiers))
valid_flags = C11;
else if (CPP_OPTION (pfile, c99))
valid_flags = C99;
- else if (CPP_OPTION (pfile, cplusplus))
- valid_flags = CXX;
}
if (! (ucnranges[mn].flags & valid_flags))
return 0;
@@ -1021,7 +1019,7 @@ ucn_valid_in_identifier (cpp_reader *pfi
return 2;
}
- if (CPP_OPTION (pfile, cxx23_identifiers))
+ if (CPP_OPTION (pfile, cplusplus))
invalid_start_flags = NXX23;
else if (CPP_OPTION (pfile, c11_identifiers))
invalid_start_flags = N11;
--- gcc/testsuite/g++.dg/cpp/ucnid-1.C.jj 2020-01-14 20:02:46.702611047
+0100
+++ gcc/testsuite/g++.dg/cpp/ucnid-1.C 2021-11-30 18:40:00.664865172 +0100
@@ -1,17 +1,17 @@
/* { dg-do preprocess } */
/* { dg-options "-std=gnu++98 -pedantic" } */
-\u00AA /* { dg-error "not valid in an identifier" } */
+\u00AA
\u00AB /* { dg-error "not valid in an identifier" } */
\u00B6 /* { dg-error "not valid in an identifier" } */
-\u00BA /* { dg-error "not valid in an identifier" } */
+\u00BA
\u00C0
\u00D6
-\u0384
+\u0384 /* { dg-error "not valid in an identifier" } */
-\u0669 /* { dg-error "not valid in an identifier" } */
-A\u0669 /* { dg-error "not valid in an identifier" } */
-0\u00BA /* { dg-error "not valid in an identifier" } */
-0\u0669 /* { dg-error "not valid in an identifier" } */
-\u0E59
+\u0669 /* { dg-error "not valid at the start of an identifier" } */
+A\u0669
+0\u00BA
+0\u0669
+\u0E59 /* { dg-error "not valid at the start of an identifier" } */
A\u0E59
--- gcc/testsuite/g++.dg/cpp/ucnid-1-utf8.C.jj 2020-01-14 20:02:46.702611047
+0100
+++ gcc/testsuite/g++.dg/cpp/ucnid-1-utf8.C 2021-11-30 18:40:51.641121457
+0100
@@ -1,17 +1,17 @@
/* { dg-do preprocess } */
/* { dg-options "-std=gnu++98 -pedantic" } */
-ª /* { dg-error "not valid in an identifier" } */
+ª
« /* { dg-error "not valid in an identifier" } */
¶ /* { dg-error "not valid in an identifier" } */
-º /* { dg-error "not valid in an identifier" } */
+º
À
Ö
-΄
+΄ /* { dg-error "not valid in an identifier" } */
-٩ /* { dg-error "not valid in an identifier" } */
-A٩ /* { dg-error "not valid in an identifier" } */
-0º /* { dg-error "not valid in an identifier" } */
-0٩ /* { dg-error "not valid in an identifier" } */
-๙
+٩ /* { dg-error "not valid at the start of an identifier" } */
+A٩
+0º
+0٩
+๙ /* { dg-error "not valid at the start of an identifier" } */
A๙
Jakub