diff options
author | Ian Lance Taylor <iant@golang.org> | 2021-02-12 11:38:19 -0800 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2021-02-12 11:38:19 -0800 |
commit | 89d7be42db00cd0953e7d4584877cf50a56ed046 (patch) | |
tree | 3a471e8ee60b7be687ab7501f70379618adcf174 /libcpp | |
parent | 305e9d2c7815e90a29bbde1e3a7cd776861f4d7c (diff) | |
parent | 9769564e7456453e2273071d0faa5aab2554ff78 (diff) | |
download | gcc-89d7be42db00cd0953e7d4584877cf50a56ed046.zip gcc-89d7be42db00cd0953e7d4584877cf50a56ed046.tar.gz gcc-89d7be42db00cd0953e7d4584877cf50a56ed046.tar.bz2 |
Merge from trunk revision 9769564e7456453e2273071d0faa5aab2554ff78.
Diffstat (limited to 'libcpp')
-rw-r--r-- | libcpp/ChangeLog | 30 | ||||
-rw-r--r-- | libcpp/expr.c | 28 | ||||
-rw-r--r-- | libcpp/include/cpplib.h | 8 | ||||
-rw-r--r-- | libcpp/init.c | 52 | ||||
-rw-r--r-- | libcpp/lex.c | 4 | ||||
-rw-r--r-- | libcpp/line-map.c | 3 | ||||
-rw-r--r-- | libcpp/po/ChangeLog | 4 | ||||
-rw-r--r-- | libcpp/po/cpplib.pot | 431 |
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 "" |