aboutsummaryrefslogtreecommitdiff
path: root/libcpp
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2021-02-12 11:38:19 -0800
committerIan Lance Taylor <iant@golang.org>2021-02-12 11:38:19 -0800
commit89d7be42db00cd0953e7d4584877cf50a56ed046 (patch)
tree3a471e8ee60b7be687ab7501f70379618adcf174 /libcpp
parent305e9d2c7815e90a29bbde1e3a7cd776861f4d7c (diff)
parent9769564e7456453e2273071d0faa5aab2554ff78 (diff)
downloadgcc-89d7be42db00cd0953e7d4584877cf50a56ed046.zip
gcc-89d7be42db00cd0953e7d4584877cf50a56ed046.tar.gz
gcc-89d7be42db00cd0953e7d4584877cf50a56ed046.tar.bz2
Merge from trunk revision 9769564e7456453e2273071d0faa5aab2554ff78.
Diffstat (limited to 'libcpp')
-rw-r--r--libcpp/ChangeLog30
-rw-r--r--libcpp/expr.c28
-rw-r--r--libcpp/include/cpplib.h8
-rw-r--r--libcpp/init.c52
-rw-r--r--libcpp/lex.c4
-rw-r--r--libcpp/line-map.c3
-rw-r--r--libcpp/po/ChangeLog4
-rw-r--r--libcpp/po/cpplib.pot431
8 files changed, 322 insertions, 238 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 99d5593..0e58af8 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,33 @@
+2021-02-10 David Malcolm <dmalcolm@redhat.com>
+
+ PR preprocessor/96391
+ * line-map.c (linemap_compare_locations): Require that
+ the location be <= LINE_MAP_MAX_LOCATION_WITH_COLS when
+ treating locations as coming from the same macro expansion.
+
+2021-02-04 Jakub Jelinek <jakub@redhat.com>
+
+ * expr.c (cpp_classify_number): Use make_signed_t<size_t> instead of
+ make_signed<size_t>::type in the diagnostics.
+
+2021-02-03 Jakub Jelinek <jakub@redhat.com>
+
+ PR preprocessor/98882
+ * lex.c (cpp_directive_only_process): Don't assert that rlimit[-1]
+ is a newline, instead assert that rlimit[0] is either newline or
+ carriage return. When seeing '\\' followed by '\r', check limit
+ before accessing pos[1].
+
+2021-02-03 Ed Smith-Rowland <3dw4rd@verizon.net>
+
+ * expr.c (interpret_int_suffix): Detect 'z' integer suffix.
+ (cpp_classify_number): Compat warning for use of 'z' suffix.
+ * include/cpplib.h (struct cpp_options): New flag.
+ (enum cpp_warning_reason): New flag.
+ (CPP_N_USERDEF): Comment C++0x -> C++11.
+ (CPP_N_SIZE_T): New flag for cpp_classify_number.
+ * init.c (cpp_set_lang): Initialize new flag.
+
2021-01-27 liuhongt <hongtao.liu@intel.com>
PR target/98833
diff --git a/libcpp/expr.c b/libcpp/expr.c
index 474ea4d..dd5611d 100644
--- a/libcpp/expr.c
+++ b/libcpp/expr.c
@@ -313,13 +313,14 @@ static unsigned int
interpret_int_suffix (cpp_reader *pfile, const uchar *s, size_t len)
{
size_t orig_len = len;
- size_t u, l, i;
+ size_t u, l, i, z;
- u = l = i = 0;
+ u = l = i = z = 0;
while (len--)
switch (s[len])
{
+ case 'z': case 'Z': z++; break;
case 'u': case 'U': u++; break;
case 'i': case 'I':
case 'j': case 'J': i++; break;
@@ -332,9 +333,17 @@ interpret_int_suffix (cpp_reader *pfile, const uchar *s, size_t len)
return 0;
}
- if (l > 2 || u > 1 || i > 1)
+ if (l > 2 || u > 1 || i > 1 || z > 1)
return 0;
+ if (z)
+ {
+ if (l > 0 || i > 0)
+ return 0;
+ if (!CPP_OPTION (pfile, cplusplus))
+ return 0;
+ }
+
if (i)
{
if (!CPP_OPTION (pfile, ext_numeric_literals))
@@ -352,7 +361,8 @@ interpret_int_suffix (cpp_reader *pfile, const uchar *s, size_t len)
return ((i ? CPP_N_IMAGINARY : 0)
| (u ? CPP_N_UNSIGNED : 0)
| ((l == 0) ? CPP_N_SMALL
- : (l == 1) ? CPP_N_MEDIUM : CPP_N_LARGE));
+ : (l == 1) ? CPP_N_MEDIUM : CPP_N_LARGE)
+ | (z ? CPP_N_SIZE_T : 0));
}
/* Return the classification flags for an int suffix. */
@@ -805,6 +815,16 @@ cpp_classify_number (cpp_reader *pfile, const cpp_token *token,
virtual_location, 0, message);
}
+ if ((result & CPP_N_SIZE_T) == CPP_N_SIZE_T
+ && !CPP_OPTION (pfile, size_t_literals))
+ {
+ const char *message = (result & CPP_N_UNSIGNED) == CPP_N_UNSIGNED
+ ? N_("use of C++23 %<size_t%> integer constant")
+ : N_("use of C++23 %<make_signed_t<size_t>%> integer constant");
+ cpp_warning_with_line (pfile, CPP_W_SIZE_T_LITERALS,
+ virtual_location, 0, message);
+ }
+
result |= CPP_N_INTEGER;
}
diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
index 4467c73..17feb64 100644
--- a/libcpp/include/cpplib.h
+++ b/libcpp/include/cpplib.h
@@ -500,6 +500,9 @@ struct cpp_options
/* Nonzero means tokenize C++20 module directives. */
unsigned char module_directives;
+ /* Nonzero for C++23 size_t literals. */
+ unsigned char size_t_literals;
+
/* Holds the name of the target (execution) character set. */
const char *narrow_charset;
@@ -626,6 +629,7 @@ enum cpp_warning_reason {
CPP_W_INVALID_PCH,
CPP_W_WARNING_DIRECTIVE,
CPP_W_LITERAL_SUFFIX,
+ CPP_W_SIZE_T_LITERALS,
CPP_W_DATE_TIME,
CPP_W_PEDANTIC,
CPP_W_C90_C99_COMPAT,
@@ -1211,7 +1215,9 @@ struct cpp_num
#define CPP_N_FLOATN 0x400000 /* _FloatN types. */
#define CPP_N_FLOATNX 0x800000 /* _FloatNx types. */
-#define CPP_N_USERDEF 0x1000000 /* C++0x user-defined literal. */
+#define CPP_N_USERDEF 0x1000000 /* C++11 user-defined literal. */
+
+#define CPP_N_SIZE_T 0x2000000 /* C++23 size_t literal. */
#define CPP_N_WIDTH_FLOATN_NX 0xF0000000 /* _FloatN / _FloatNx value
of N, divided by 16. */
diff --git a/libcpp/init.c b/libcpp/init.c
index ecd3d5b..17b0d25 100644
--- a/libcpp/init.c
+++ b/libcpp/init.c
@@ -94,34 +94,35 @@ struct lang_flags
char va_opt;
char scope;
char dfp_constants;
+ char size_t_literals;
};
static const struct lang_flags lang_defaults[] =
-{ /* c99 c++ xnum xid c11 std digr ulit rlit udlit bincst digsep trig u8chlit vaopt scope dfp */
- /* GNUC89 */ { 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 },
- /* GNUC99 */ { 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0 },
- /* GNUC11 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0 },
- /* GNUC17 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0 },
- /* GNUC2X */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1 },
- /* STDC89 */ { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
- /* STDC94 */ { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
- /* STDC99 */ { 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
- /* STDC11 */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
- /* STDC17 */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0 },
- /* STDC2X */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1 },
- /* GNUCXX */ { 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 },
- /* CXX98 */ { 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0 },
- /* GNUCXX11 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0 },
- /* CXX11 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0 },
- /* GNUCXX14 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0 },
- /* CXX14 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0 },
- /* GNUCXX17 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0 },
- /* CXX17 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 },
- /* GNUCXX20 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0 },
- /* CXX20 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0 },
- /* GNUCXX23 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0 },
- /* CXX23 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0 },
- /* ASM */ { 0, 0, 1, 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 */
+ /* GNUC89 */ { 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 },
+ /* GNUC99 */ { 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0 },
+ /* GNUC11 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0 },
+ /* GNUC17 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0 },
+ /* GNUC2X */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0 },
+ /* STDC89 */ { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
+ /* STDC94 */ { 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
+ /* STDC99 */ { 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
+ /* STDC11 */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
+ /* STDC17 */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0 },
+ /* STDC2X */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0 },
+ /* GNUCXX */ { 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 },
+ /* CXX98 */ { 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0 },
+ /* GNUCXX11 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0 },
+ /* CXX11 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0 },
+ /* GNUCXX14 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0 },
+ /* CXX14 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0 },
+ /* GNUCXX17 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0 },
+ /* CXX17 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0 },
+ /* GNUCXX20 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0 },
+ /* CXX20 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0 },
+ /* GNUCXX23 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1 },
+ /* CXX23 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1 },
+ /* ASM */ { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
/* Sets internal flags correctly for a given language. */
@@ -149,6 +150,7 @@ cpp_set_lang (cpp_reader *pfile, enum c_lang lang)
CPP_OPTION (pfile, va_opt) = l->va_opt;
CPP_OPTION (pfile, scope) = l->scope;
CPP_OPTION (pfile, dfp_constants) = l->dfp_constants;
+ CPP_OPTION (pfile, size_t_literals) = l->size_t_literals;
}
/* Initialize library global state. */
diff --git a/libcpp/lex.c b/libcpp/lex.c
index 6af1404..06bcc31 100644
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -4318,9 +4318,9 @@ cpp_directive_only_process (cpp_reader *pfile,
buffer->cur_note = buffer->notes_used = 0;
buffer->cur = buffer->line_base = buffer->next_line;
buffer->need_line = false;
- /* Files always end in a newline. We rely on this for
+ /* Files always end in a newline or carriage return. We rely on this for
character peeking safety. */
- gcc_assert (buffer->rlimit[-1] == '\n');
+ gcc_assert (buffer->rlimit[0] == '\n' || buffer->rlimit[0] == '\r');
const unsigned char *base = buffer->cur;
unsigned line_count = 0;
diff --git a/libcpp/line-map.c b/libcpp/line-map.c
index 2432cd5..cccacf2 100644
--- a/libcpp/line-map.c
+++ b/libcpp/line-map.c
@@ -1417,7 +1417,8 @@ linemap_compare_locations (line_maps *set,
if (l0 == l1
&& pre_virtual_p
- && post_virtual_p)
+ && post_virtual_p
+ && l0 <= LINE_MAP_MAX_LOCATION_WITH_COLS)
{
/* So pre and post represent two tokens that are present in a
same macro expansion. Let's see if the token for pre was
diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog
index 543b93e..e1054f1 100644
--- a/libcpp/po/ChangeLog
+++ b/libcpp/po/ChangeLog
@@ -1,3 +1,7 @@
+2021-02-05 Joseph Myers <joseph@codesourcery.com>
+
+ * cpplib.pot: Regenerate.
+
2021-01-07 Joseph Myers <joseph@codesourcery.com>
* es.po: Update.
diff --git a/libcpp/po/cpplib.pot b/libcpp/po/cpplib.pot
index 81aa102a..8f818a7 100644
--- a/libcpp/po/cpplib.pot
+++ b/libcpp/po/cpplib.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n"
-"POT-Creation-Date: 2020-07-20 18:03+0000\n"
+"POT-Creation-Date: 2021-02-05 21:38+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,158 +17,158 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: charset.c:674
+#: charset.c:677
#, c-format
msgid "conversion from %s to %s not supported by iconv"
msgstr ""
-#: charset.c:677
+#: charset.c:680
msgid "iconv_open"
msgstr ""
-#: charset.c:685
+#: charset.c:688
#, c-format
msgid "no iconv implementation, cannot convert from %s to %s"
msgstr ""
-#: charset.c:781
+#: charset.c:784
#, c-format
msgid "character 0x%lx is not in the basic source character set\n"
msgstr ""
-#: charset.c:798
-#: charset.c:1768
+#: charset.c:801
+#: charset.c:1771
msgid "converting to execution character set"
msgstr ""
-#: charset.c:804
+#: charset.c:807
#, c-format
msgid "character 0x%lx is not unibyte in execution character set"
msgstr ""
-#: charset.c:1054
+#: charset.c:1057
msgid "universal character names are only valid in C++ and C99"
msgstr ""
-#: charset.c:1058
+#: charset.c:1061
msgid "C99's universal character names are incompatible with C90"
msgstr ""
-#: charset.c:1061
+#: charset.c:1064
#, c-format
msgid "the meaning of '\\%c' is different in traditional C"
msgstr ""
-#: charset.c:1070
+#: charset.c:1073
msgid "In _cpp_valid_ucn but not a UCN"
msgstr ""
-#: charset.c:1103
+#: charset.c:1106
#, c-format
msgid "incomplete universal character name %.*s"
msgstr ""
-#: charset.c:1118
+#: charset.c:1121
#, c-format
msgid "%.*s is not a valid universal character"
msgstr ""
-#: charset.c:1128
+#: charset.c:1131
#: lex.c:1335
msgid "'$' in identifier or number"
msgstr ""
-#: charset.c:1138
+#: charset.c:1141
#, c-format
msgid "universal character %.*s is not valid in an identifier"
msgstr ""
-#: charset.c:1142
+#: charset.c:1145
#, c-format
msgid "universal character %.*s is not valid at the start of an identifier"
msgstr ""
-#: charset.c:1149
+#: charset.c:1152
#, c-format
msgid "%.*s is outside the UCS codespace"
msgstr ""
-#: charset.c:1194
-#: charset.c:2113
+#: charset.c:1197
+#: charset.c:2116
msgid "converting UCN to source character set"
msgstr ""
-#: charset.c:1201
+#: charset.c:1204
msgid "converting UCN to execution character set"
msgstr ""
-#: charset.c:1265
+#: charset.c:1268
#, c-format
msgid "extended character %.*s is not valid in an identifier"
msgstr ""
-#: charset.c:1282
+#: charset.c:1285
#, c-format
msgid "extended character %.*s is not valid at the start of an identifier"
msgstr ""
-#: charset.c:1368
+#: charset.c:1371
msgid "the meaning of '\\x' is different in traditional C"
msgstr ""
-#: charset.c:1393
+#: charset.c:1396
msgid "\\x used with no following hex digits"
msgstr ""
-#: charset.c:1400
+#: charset.c:1403
msgid "hex escape sequence out of range"
msgstr ""
-#: charset.c:1452
+#: charset.c:1455
msgid "octal escape sequence out of range"
msgstr ""
-#: charset.c:1534
+#: charset.c:1537
msgid "the meaning of '\\a' is different in traditional C"
msgstr ""
-#: charset.c:1541
+#: charset.c:1544
#, c-format
msgid "non-ISO-standard escape sequence, '\\%c'"
msgstr ""
-#: charset.c:1549
+#: charset.c:1552
#, c-format
msgid "unknown escape sequence: '\\%c'"
msgstr ""
-#: charset.c:1557
+#: charset.c:1560
#, c-format
msgid "unknown escape sequence: '\\%s'"
msgstr ""
-#: charset.c:1565
+#: charset.c:1568
msgid "converting escape sequence to execution character set"
msgstr ""
-#: charset.c:1705
+#: charset.c:1708
msgid "missing open quote"
msgstr ""
-#: charset.c:1923
-#: charset.c:2002
+#: charset.c:1926
+#: charset.c:2005
msgid "character constant too long for its type"
msgstr ""
-#: charset.c:1926
+#: charset.c:1929
msgid "multi-character character constant"
msgstr ""
-#: charset.c:2042
+#: charset.c:2045
msgid "empty character constant"
msgstr ""
-#: charset.c:2160
+#: charset.c:2163
#, c-format
msgid "failure to convert %s to %s"
msgstr ""
@@ -241,203 +241,203 @@ msgstr ""
msgid "undefining \"%s\""
msgstr ""
-#: directives.c:724
+#: directives.c:725
msgid "missing terminating > character"
msgstr ""
-#: directives.c:783
+#: directives.c:784
#, c-format
msgid "#%s expects \"FILENAME\" or <FILENAME>"
msgstr ""
-#: directives.c:829
+#: directives.c:830
#, c-format
msgid "empty filename in #%s"
msgstr ""
-#: directives.c:838
+#: directives.c:839
#, c-format
msgid ""
"#include nested depth %u exceeds maximum of %u (use -fmax-include-"
"depth=DEPTH to increase the maximum)"
msgstr ""
-#: directives.c:883
+#: directives.c:884
msgid "#include_next in primary source file"
msgstr ""
-#: directives.c:909
+#: directives.c:910
#, c-format
msgid "invalid flag \"%s\" in line directive"
msgstr ""
-#: directives.c:969
+#: directives.c:970
msgid "unexpected end of file after #line"
msgstr ""
-#: directives.c:972
+#: directives.c:973
#, c-format
msgid "\"%s\" after #line is not a positive integer"
msgstr ""
-#: directives.c:978
-#: directives.c:980
+#: directives.c:979
+#: directives.c:981
msgid "line number out of range"
msgstr ""
-#: directives.c:993
-#: directives.c:1074
+#: directives.c:994
+#: directives.c:1075
#, c-format
msgid "\"%s\" is not a valid filename"
msgstr ""
-#: directives.c:1034
+#: directives.c:1035
#, c-format
msgid "\"%s\" after # is not a positive integer"
msgstr ""
-#: directives.c:1101
+#: directives.c:1102
#, c-format
msgid "file \"%s\" linemarker ignored due to incorrect nesting"
msgstr ""
-#: directives.c:1178
#: directives.c:1180
#: directives.c:1182
-#: directives.c:1770
+#: directives.c:1184
+#: directives.c:1772
#, c-format
msgid "%s"
msgstr ""
-#: directives.c:1206
+#: directives.c:1208
#, c-format
msgid "invalid #%s directive"
msgstr ""
-#: directives.c:1269
+#: directives.c:1271
#, c-format
msgid "registering pragmas in namespace \"%s\" with mismatched name expansion"
msgstr ""
-#: directives.c:1278
+#: directives.c:1280
#, c-format
msgid "registering pragma \"%s\" with name expansion and no namespace"
msgstr ""
-#: directives.c:1296
+#: directives.c:1298
#, c-format
msgid "registering \"%s\" as both a pragma and a pragma namespace"
msgstr ""
-#: directives.c:1299
+#: directives.c:1301
#, c-format
msgid "#pragma %s %s is already registered"
msgstr ""
-#: directives.c:1302
+#: directives.c:1304
#, c-format
msgid "#pragma %s is already registered"
msgstr ""
-#: directives.c:1332
+#: directives.c:1334
msgid "registering pragma with NULL handler"
msgstr ""
-#: directives.c:1549
+#: directives.c:1551
msgid "#pragma once in main file"
msgstr ""
-#: directives.c:1572
+#: directives.c:1574
msgid "invalid #pragma push_macro directive"
msgstr ""
-#: directives.c:1629
+#: directives.c:1631
msgid "invalid #pragma pop_macro directive"
msgstr ""
-#: directives.c:1684
+#: directives.c:1686
msgid "invalid #pragma GCC poison directive"
msgstr ""
-#: directives.c:1693
+#: directives.c:1695
#, c-format
msgid "poisoning existing macro \"%s\""
msgstr ""
-#: directives.c:1712
+#: directives.c:1714
msgid "#pragma system_header ignored outside include file"
msgstr ""
-#: directives.c:1737
+#: directives.c:1739
#, c-format
msgid "cannot find source file %s"
msgstr ""
-#: directives.c:1741
+#: directives.c:1743
#, c-format
msgid "current file is older than %s"
msgstr ""
-#: directives.c:1765
+#: directives.c:1767
#, c-format
msgid "invalid \"#pragma GCC %s\" directive"
msgstr ""
-#: directives.c:1966
+#: directives.c:1968
msgid "_Pragma takes a parenthesized string literal"
msgstr ""
-#: directives.c:2049
+#: directives.c:2051
msgid "#else without #if"
msgstr ""
-#: directives.c:2054
+#: directives.c:2056
msgid "#else after #else"
msgstr ""
-#: directives.c:2056
-#: directives.c:2089
+#: directives.c:2058
+#: directives.c:2091
msgid "the conditional began here"
msgstr ""
-#: directives.c:2082
+#: directives.c:2084
msgid "#elif without #if"
msgstr ""
-#: directives.c:2087
+#: directives.c:2089
msgid "#elif after #else"
msgstr ""
-#: directives.c:2118
+#: directives.c:2120
msgid "#endif without #if"
msgstr ""
-#: directives.c:2194
+#: directives.c:2196
msgid "missing '(' after predicate"
msgstr ""
-#: directives.c:2212
+#: directives.c:2214
msgid "missing ')' to complete answer"
msgstr ""
-#: directives.c:2224
+#: directives.c:2226
msgid "predicate's answer is empty"
msgstr ""
-#: directives.c:2254
+#: directives.c:2256
msgid "assertion without predicate"
msgstr ""
-#: directives.c:2257
+#: directives.c:2259
msgid "predicate must be an identifier"
msgstr ""
-#: directives.c:2339
+#: directives.c:2341
#, c-format
msgid "\"%s\" re-asserted"
msgstr ""
-#: directives.c:2620
+#: directives.c:2659
#, c-format
msgid "unterminated #%s"
msgstr ""
@@ -451,168 +451,180 @@ msgstr ""
msgid "stdout"
msgstr ""
-#: expr.c:626
-#: expr.c:743
+#: expr.c:636
+#: expr.c:753
msgid "fixed-point constants are a GCC extension"
msgstr ""
-#: expr.c:651
+#: expr.c:661
msgid "invalid prefix \"0b\" for floating constant"
msgstr ""
-#: expr.c:664
+#: expr.c:674
msgid "use of C++17 hexadecimal floating constant"
msgstr ""
-#: expr.c:667
+#: expr.c:677
msgid "use of C99 hexadecimal floating constant"
msgstr ""
-#: expr.c:711
+#: expr.c:721
#, c-format
msgid "invalid suffix \"%.*s\" on floating constant"
msgstr ""
-#: expr.c:722
-#: expr.c:789
+#: expr.c:732
+#: expr.c:799
#, c-format
msgid "traditional C rejects the \"%.*s\" suffix"
msgstr ""
-#: expr.c:730
+#: expr.c:740
msgid "suffix for double constant is a GCC extension"
msgstr ""
-#: expr.c:736
+#: expr.c:746
#, c-format
msgid "invalid suffix \"%.*s\" with hexadecimal floating constant"
msgstr ""
-#: expr.c:749
-#: expr.c:753
+#: expr.c:759
+#: expr.c:763
msgid "decimal float constants are a C2X feature"
msgstr ""
-#: expr.c:772
+#: expr.c:782
#, c-format
msgid "invalid suffix \"%.*s\" on integer constant"
msgstr ""
-#: expr.c:797
+#: expr.c:807
msgid "use of C++11 long long integer constant"
msgstr ""
-#: expr.c:798
+#: expr.c:808
msgid "use of C99 long long integer constant"
msgstr ""
-#: expr.c:814
+#: expr.c:822
+msgid "use of C++23 %<size_t%> integer constant"
+msgstr ""
+
+#: expr.c:823
+msgid "use of C++23 %<make_signed_t<size_t>%> integer constant"
+msgstr ""
+
+#: expr.c:834
msgid "imaginary constants are a GCC extension"
msgstr ""
-#: expr.c:820
+#: expr.c:841
msgid "binary constants are a C++14 feature or GCC extension"
msgstr ""
-#: expr.c:822
-msgid "binary constants are a GCC extension"
+#: expr.c:843
+msgid "binary constants are a C2X feature or GCC extension"
+msgstr ""
+
+#: expr.c:848
+msgid "binary constants are a C2X feature"
msgstr ""
-#: expr.c:917
+#: expr.c:944
msgid "integer constant is too large for its type"
msgstr ""
-#: expr.c:948
+#: expr.c:975
msgid "integer constant is so large that it is unsigned"
msgstr ""
-#: expr.c:1043
+#: expr.c:1070
msgid "missing ')' after \"defined\""
msgstr ""
-#: expr.c:1050
+#: expr.c:1077
msgid "operator \"defined\" requires an identifier"
msgstr ""
-#: expr.c:1058
+#: expr.c:1085
#, c-format
msgid "(\"%s\" is an alternative token for \"%s\" in C++)"
msgstr ""
-#: expr.c:1070
+#: expr.c:1098
msgid "this use of \"defined\" may not be portable"
msgstr ""
-#: expr.c:1113
+#: expr.c:1143
msgid "user-defined literal in preprocessor expression"
msgstr ""
-#: expr.c:1118
+#: expr.c:1148
msgid "floating constant in preprocessor expression"
msgstr ""
-#: expr.c:1124
+#: expr.c:1154
msgid "imaginary number in preprocessor expression"
msgstr ""
-#: expr.c:1173
+#: expr.c:1203
#, c-format
msgid "\"%s\" is not defined, evaluates to 0"
msgstr ""
-#: expr.c:1186
+#: expr.c:1216
msgid "assertions are a GCC extension"
msgstr ""
-#: expr.c:1189
+#: expr.c:1219
msgid "assertions are a deprecated extension"
msgstr ""
-#: expr.c:1435
+#: expr.c:1465
#, c-format
msgid "unbalanced stack in %s"
msgstr ""
-#: expr.c:1455
+#: expr.c:1485
#, c-format
msgid "impossible operator '%u'"
msgstr ""
-#: expr.c:1556
+#: expr.c:1586
msgid "missing ')' in expression"
msgstr ""
-#: expr.c:1585
+#: expr.c:1615
msgid "'?' without following ':'"
msgstr ""
-#: expr.c:1595
+#: expr.c:1625
msgid "integer overflow in preprocessor expression"
msgstr ""
-#: expr.c:1600
+#: expr.c:1630
msgid "missing '(' in expression"
msgstr ""
-#: expr.c:1632
+#: expr.c:1662
#, c-format
msgid "the left operand of \"%s\" changes sign when promoted"
msgstr ""
-#: expr.c:1637
+#: expr.c:1667
#, c-format
msgid "the right operand of \"%s\" changes sign when promoted"
msgstr ""
-#: expr.c:1896
+#: expr.c:1926
msgid "traditional C rejects the unary plus operator"
msgstr ""
-#: expr.c:1994
+#: expr.c:2024
msgid "comma operator in operand of #if"
msgstr ""
-#: expr.c:2130
+#: expr.c:2160
msgid "division by zero in #if"
msgstr ""
@@ -624,47 +636,47 @@ msgstr ""
msgid "use -Winvalid-pch for more information"
msgstr ""
-#: files.c:1003
+#: files.c:1051
#, c-format
msgid "no include path in which to search for %s"
msgstr ""
-#: files.c:1439
+#: files.c:1546
msgid "Multiple include guards may be useful for:\n"
msgstr ""
-#: init.c:597
+#: init.c:614
msgid "cppchar_t must be an unsigned type"
msgstr ""
-#: init.c:601
+#: init.c:618
#, c-format
msgid ""
"preprocessor arithmetic has maximum precision of %lu bits; target requires "
"%lu bits"
msgstr ""
-#: init.c:608
+#: init.c:625
msgid "CPP arithmetic must be at least as precise as a target int"
msgstr ""
-#: init.c:611
+#: init.c:628
msgid "target char is less than 8 bits wide"
msgstr ""
-#: init.c:615
+#: init.c:632
msgid "target wchar_t is narrower than target char"
msgstr ""
-#: init.c:619
+#: init.c:636
msgid "target int is narrower than target char"
msgstr ""
-#: init.c:624
+#: init.c:641
msgid "CPP half-integer narrower than CPP character"
msgstr ""
-#: init.c:628
+#: init.c:645
#, c-format
msgid ""
"CPP on this host cannot handle wide character constants over %lu bits, but "
@@ -742,81 +754,90 @@ msgstr ""
msgid "identifier \"%s\" is a special operator name in C++"
msgstr ""
-#: lex.c:1872
+#: lex.c:1879
msgid "raw string delimiter longer than 16 characters"
msgstr ""
-#: lex.c:1876
+#: lex.c:1883
msgid "invalid new-line in raw string delimiter"
msgstr ""
-#: lex.c:1880
-#: lex.c:4265
+#: lex.c:1887
+#: lex.c:4639
#, c-format
msgid "invalid character '%c' in raw string delimiter"
msgstr ""
-#: lex.c:1918
-#: lex.c:1941
+#: lex.c:1926
+#: lex.c:1949
msgid "unterminated raw string"
msgstr ""
-#: lex.c:1963
-#: lex.c:2092
+#: lex.c:1971
+#: lex.c:2100
msgid ""
"invalid suffix on literal; C++11 requires a space between literal and string "
"macro"
msgstr ""
-#: lex.c:2075
+#: lex.c:2083
msgid "null character(s) preserved in literal"
msgstr ""
-#: lex.c:2078
+#: lex.c:2086
#, c-format
msgid "missing terminating %c character"
msgstr ""
-#: lex.c:2110
+#: lex.c:2118
msgid "C++11 requires a space between string literal and macro"
msgstr ""
-#: lex.c:2913
-#: lex.c:4098
+#: lex.c:2711
+msgid "module control-line cannot be in included file"
+msgstr ""
+
+#: lex.c:2725
+#, c-format
+msgid "module control-line \"%s\" cannot be an object-like macro"
+msgstr ""
+
+#: lex.c:3099
+#: lex.c:4472
#: traditional.c:174
msgid "unterminated comment"
msgstr ""
-#: lex.c:2927
-#: lex.c:2961
+#: lex.c:3113
+#: lex.c:3147
msgid "C++ style comments are not allowed in ISO C90"
msgstr ""
-#: lex.c:2929
-#: lex.c:2940
-#: lex.c:2964
+#: lex.c:3115
+#: lex.c:3126
+#: lex.c:3150
msgid "(this will be reported only once per input file)"
msgstr ""
-#: lex.c:2938
+#: lex.c:3124
msgid "C++ style comments are incompatible with C90"
msgstr ""
-#: lex.c:2970
+#: lex.c:3156
msgid "multi-line comment"
msgstr ""
-#: lex.c:3364
+#: lex.c:3550
#, c-format
msgid "unspellable token %s"
msgstr ""
-#: lex.c:4253
+#: lex.c:4627
#, c-format
msgid "raw string delimiter longer than %d characters"
msgstr ""
-#: lex.c:4323
+#: lex.c:4697
msgid "unterminated literal"
msgstr ""
@@ -824,183 +845,183 @@ msgstr ""
msgid "'##' cannot appear at either end of __VA_OPT__"
msgstr ""
-#: macro.c:388
+#: macro.c:386
#, c-format
msgid "\"%s\" used outside of preprocessing directive"
msgstr ""
-#: macro.c:398
+#: macro.c:396
#, c-format
msgid "missing '(' before \"%s\" operand"
msgstr ""
-#: macro.c:413
+#: macro.c:411
#, c-format
msgid "operator \"%s\" requires a header-name"
msgstr ""
-#: macro.c:430
+#: macro.c:428
#, c-format
msgid "missing ')' after \"%s\" operand"
msgstr ""
-#: macro.c:450
+#: macro.c:448
#, c-format
msgid "macro \"%s\" is not used"
msgstr ""
-#: macro.c:489
-#: macro.c:747
+#: macro.c:487
+#: macro.c:778
#, c-format
msgid "invalid built-in macro \"%s\""
msgstr ""
-#: macro.c:496
-#: macro.c:598
+#: macro.c:494
+#: macro.c:596
#, c-format
msgid "macro \"%s\" might prevent reproducible builds"
msgstr ""
-#: macro.c:527
+#: macro.c:525
msgid "could not determine file timestamp"
msgstr ""
-#: macro.c:644
+#: macro.c:610
msgid "could not determine date and time"
msgstr ""
-#: macro.c:660
+#: macro.c:642
msgid "__COUNTER__ expanded inside directive with -fdirectives-only"
msgstr ""
-#: macro.c:866
+#: macro.c:897
msgid "invalid string literal, ignoring final '\\'"
msgstr ""
-#: macro.c:928
+#: macro.c:959
#, c-format
msgid "pasting \"%s\" and \"%s\" does not give a valid preprocessing token"
msgstr ""
-#: macro.c:1054
+#: macro.c:1085
msgid ""
"ISO C++11 requires at least one argument for the \"...\" in a variadic macro"
msgstr ""
-#: macro.c:1058
+#: macro.c:1089
msgid ""
"ISO C99 requires at least one argument for the \"...\" in a variadic macro"
msgstr ""
-#: macro.c:1065
+#: macro.c:1096
#, c-format
msgid "macro \"%s\" requires %u arguments, but only %u given"
msgstr ""
-#: macro.c:1070
+#: macro.c:1101
#, c-format
msgid "macro \"%s\" passed %u arguments, but takes just %u"
msgstr ""
-#: macro.c:1270
-#: traditional.c:819
+#: macro.c:1299
+#: traditional.c:822
#, c-format
msgid "unterminated argument list invoking macro \"%s\""
msgstr ""
-#: macro.c:1412
+#: macro.c:1442
#, c-format
msgid "function-like macro \"%s\" must be used with arguments in traditional C"
msgstr ""
-#: macro.c:2190
+#: macro.c:2220
#, c-format
msgid ""
"invoking macro %s argument %d: empty macro arguments are undefined in ISO C+"
"+98"
msgstr ""
-#: macro.c:2198
-#: macro.c:2207
+#: macro.c:2228
+#: macro.c:2237
#, c-format
msgid ""
"invoking macro %s argument %d: empty macro arguments are undefined in ISO C90"
msgstr ""
-#: macro.c:3164
+#: macro.c:3279
#, c-format
msgid "duplicate macro parameter \"%s\""
msgstr ""
-#: macro.c:3246
+#: macro.c:3361
#, c-format
msgid "expected parameter name, found \"%s\""
msgstr ""
-#: macro.c:3247
+#: macro.c:3362
#, c-format
msgid "expected ',' or ')', found \"%s\""
msgstr ""
-#: macro.c:3248
+#: macro.c:3363
msgid "expected parameter name before end of line"
msgstr ""
-#: macro.c:3249
+#: macro.c:3364
msgid "expected ')' before end of line"
msgstr ""
-#: macro.c:3250
+#: macro.c:3365
msgid "expected ')' after \"...\""
msgstr ""
-#: macro.c:3307
+#: macro.c:3422
msgid "anonymous variadic macros were introduced in C++11"
msgstr ""
-#: macro.c:3308
-#: macro.c:3312
+#: macro.c:3423
+#: macro.c:3427
msgid "anonymous variadic macros were introduced in C99"
msgstr ""
-#: macro.c:3318
+#: macro.c:3433
msgid "ISO C++ does not permit named variadic macros"
msgstr ""
-#: macro.c:3319
+#: macro.c:3434
msgid "ISO C does not permit named variadic macros"
msgstr ""
-#: macro.c:3365
+#: macro.c:3480
msgid "'##' cannot appear at either end of a macro expansion"
msgstr ""
-#: macro.c:3403
+#: macro.c:3518
msgid "ISO C++11 requires whitespace after the macro name"
msgstr ""
-#: macro.c:3404
+#: macro.c:3519
msgid "ISO C99 requires whitespace after the macro name"
msgstr ""
-#: macro.c:3428
+#: macro.c:3543
msgid "missing whitespace after the macro name"
msgstr ""
-#: macro.c:3478
+#: macro.c:3593
msgid "'#' is not followed by a macro parameter"
msgstr ""
-#: macro.c:3629
+#: macro.c:3749
#, c-format
msgid "\"%s\" redefined"
msgstr ""
-#: macro.c:3634
+#: macro.c:3754
msgid "this is the location of the previous definition"
msgstr ""
-#: macro.c:3738
+#: macro.c:3891
#, c-format
msgid "macro argument \"%s\" would be stringified in traditional C"
msgstr ""
@@ -1045,11 +1066,11 @@ msgstr ""
msgid "while reading precompiled header"
msgstr ""
-#: traditional.c:888
+#: traditional.c:891
#, c-format
msgid "detected recursion whilst expanding macro \"%s\""
msgstr ""
-#: traditional.c:1111
+#: traditional.c:1114
msgid "syntax error in macro parameter list"
msgstr ""