diff options
Diffstat (limited to 'libcpp')
-rw-r--r-- | libcpp/ChangeLog | 54 | ||||
-rw-r--r-- | libcpp/charset.cc | 4 | ||||
-rw-r--r-- | libcpp/expr.cc | 23 | ||||
-rw-r--r-- | libcpp/include/cpplib.h | 11 | ||||
-rw-r--r-- | libcpp/include/line-map.h | 10 | ||||
-rw-r--r-- | libcpp/include/symtab.h | 5 | ||||
-rw-r--r-- | libcpp/init.cc | 52 | ||||
-rw-r--r-- | libcpp/lex.cc | 20 | ||||
-rw-r--r-- | libcpp/line-map.cc | 38 | ||||
-rw-r--r-- | libcpp/po/ChangeLog | 4 | ||||
-rw-r--r-- | libcpp/po/ro.po | 1140 |
11 files changed, 1309 insertions, 52 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 5984915..18d5bcc 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,57 @@ +2022-10-19 Lewis Hyatt <lhyatt@gmail.com> + + * include/cpplib.h (struct cpp_string): Use new "string_length" GTY. + * include/symtab.h (struct ht_identifier): Likewise. + +2022-10-14 Joseph Myers <joseph@codesourcery.com> + + * charset.cc (ucn_valid_in_identifier): Check xid_identifiers not + cplusplus to determine whether to use CXX23 and NXX23 flags. + * include/cpplib.h (struct cpp_options): Add xid_identifiers. + * init.cc (struct lang_flags, lang_defaults): Add xid_identifiers. + (cpp_set_lang): Set xid_identifiers. + * lex.cc (warn_about_normalization): Add parameter identifier. + Only pedwarn about non-NFC for identifiers, not pp-numbers. + (_cpp_lex_direct): Update calls to warn_about_normalization. + +2022-10-14 Jakub Jelinek <jakub@redhat.com> + + * include/cpplib.h (CPP_N_BFLOAT16): Define. + * expr.cc (interpret_float_suffix): Handle bf16 and BF16 suffixes for + C++. + +2022-09-28 Eugene Rozenfeld <erozen@microsoft.com> + + * include/line-map.h: Add discriminator to location_adhoc_data. + (get_combined_adhoc_loc): Add discriminator parameter. + (get_discriminator_from_adhoc_loc): Add external declaration. + (get_discriminator_from_loc): Add external declaration. + (COMBINE_LOCATION_DATA): Add discriminator parameter. + * lex.cc (get_location_for_byte_range_in_cur_line) Pass 0 discriminator + in a call to COMBINE_LOCATION_DATA. + (warn_about_normalization): Pass 0 discriminator in a call to + COMBINE_LOCATION_DATA. + (_cpp_lex_direct): Pass 0 discriminator in a call to + COMBINE_LOCATION_DATA. + * line-map.cc (location_adhoc_data_hash): Use discriminator compute + location_adhoc_data hash. + (location_adhoc_data_eq): Use discriminator when comparing + location_adhoc_data. + (can_be_stored_compactly_p): Check discriminator to determine + compact storage. + (get_combined_adhoc_loc): Add discriminator parameter. + (get_discriminator_from_adhoc_loc): New function to get the discriminator + from an ad-hoc location. + (get_discriminator_from_loc): New function to get the discriminator + from a location. + +2022-09-27 Jakub Jelinek <jakub@redhat.com> + + PR c++/106652 + PR c++/85518 + * expr.cc (interpret_float_suffix): Allow {f,F}{16,32,64,128} and + {f,F}{32,64,128}x suffixes for C++. + 2022-09-08 Lewis Hyatt <lhyatt@gmail.com> * line-map.cc (location_adhoc_data_update): Remove reliance on diff --git a/libcpp/charset.cc b/libcpp/charset.cc index 6834969..12a398e 100644 --- a/libcpp/charset.cc +++ b/libcpp/charset.cc @@ -1291,7 +1291,7 @@ ucn_valid_in_identifier (cpp_reader *pfile, cppchar_t c, valid_flags = C99 | CXX | C11 | CXX23; if (CPP_PEDANTIC (pfile)) { - if (CPP_OPTION (pfile, cplusplus)) + if (CPP_OPTION (pfile, xid_identifiers)) valid_flags = CXX23; else if (CPP_OPTION (pfile, c11_identifiers)) valid_flags = C11; @@ -1355,7 +1355,7 @@ ucn_valid_in_identifier (cpp_reader *pfile, cppchar_t c, return 2; } - if (CPP_OPTION (pfile, cplusplus)) + if (CPP_OPTION (pfile, xid_identifiers)) invalid_start_flags = NXX23; else if (CPP_OPTION (pfile, c11_identifiers)) invalid_start_flags = N11; diff --git a/libcpp/expr.cc b/libcpp/expr.cc index 1d68064..5ee28c4 100644 --- a/libcpp/expr.cc +++ b/libcpp/expr.cc @@ -91,10 +91,10 @@ interpret_float_suffix (cpp_reader *pfile, const uchar *s, size_t len) size_t orig_len = len; const uchar *orig_s = s; size_t flags; - size_t f, d, l, w, q, i, fn, fnx, fn_bits; + size_t f, d, l, w, q, i, fn, fnx, fn_bits, bf16; flags = 0; - f = d = l = w = q = i = fn = fnx = fn_bits = 0; + f = d = l = w = q = i = fn = fnx = fn_bits = bf16 = 0; /* The following decimal float suffixes, from TR 24732:2009, TS 18661-2:2015 and C2X, are supported: @@ -131,7 +131,8 @@ interpret_float_suffix (cpp_reader *pfile, const uchar *s, size_t len) w, W - machine-specific type such as __float80 (GNU extension). q, Q - machine-specific type such as __float128 (GNU extension). fN, FN - _FloatN (TS 18661-3:2015). - fNx, FNx - _FloatNx (TS 18661-3:2015). */ + fNx, FNx - _FloatNx (TS 18661-3:2015). + bf16, BF16 - std::bfloat16_t (ISO C++23). */ /* Process decimal float suffixes, which are two letters starting with d or D. Order and case are significant. */ @@ -239,6 +240,19 @@ interpret_float_suffix (cpp_reader *pfile, const uchar *s, size_t len) fn++; } break; + case 'b': case 'B': + if (len > 2 + /* Except for bf16 / BF16 where case is significant. */ + && s[1] == (s[0] == 'b' ? 'f' : 'F') + && s[2] == '1' + && s[3] == '6') + { + bf16++; + len -= 3; + s += 3; + break; + } + return 0; case 'd': case 'D': d++; break; case 'l': case 'L': l++; break; case 'w': case 'W': w++; break; @@ -257,7 +271,7 @@ interpret_float_suffix (cpp_reader *pfile, const uchar *s, size_t len) of N larger than can be represented in the return value. The caller is responsible for rejecting _FloatN suffixes where _FloatN is not supported on the chosen target. */ - if (f + d + l + w + q + fn + fnx > 1 || i > 1) + if (f + d + l + w + q + fn + fnx + bf16 > 1 || i > 1) return 0; if (fn_bits > CPP_FLOATN_MAX) return 0; @@ -295,6 +309,7 @@ interpret_float_suffix (cpp_reader *pfile, const uchar *s, size_t len) q ? CPP_N_MD_Q : fn ? CPP_N_FLOATN | (fn_bits << CPP_FLOATN_SHIFT) : fnx ? CPP_N_FLOATNX | (fn_bits << CPP_FLOATN_SHIFT) : + bf16 ? CPP_N_BFLOAT16 : CPP_N_DEFAULT)); } diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index 2db1e9c..1d34c00 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -179,7 +179,11 @@ enum c_lang {CLK_GNUC89 = 0, CLK_GNUC99, CLK_GNUC11, CLK_GNUC17, CLK_GNUC2X, /* Payload of a NUMBER, STRING, CHAR or COMMENT token. */ struct GTY(()) cpp_string { unsigned int len; - const unsigned char *text; + + /* TEXT is always null terminated (terminator not included in len); but this + GTY markup arranges that PCH streaming works properly even if there is a + null byte in the middle of the string. */ + const unsigned char * GTY((string_length ("1 + %h.len"))) text; }; /* Flags for the cpp_token structure. */ @@ -496,6 +500,10 @@ struct cpp_options in C11. */ unsigned char c11_identifiers; + /* Nonzero means extended identifiers allow the characters specified + by Unicode XID_Start and XID_Continue properties. */ + unsigned char xid_identifiers; + /* Nonzero for C++ 2014 Standard binary constants. */ unsigned char binary_constants; @@ -1275,6 +1283,7 @@ struct cpp_num #define CPP_N_USERDEF 0x1000000 /* C++11 user-defined literal. */ #define CPP_N_SIZE_T 0x2000000 /* C++23 size_t literal. */ +#define CPP_N_BFLOAT16 0x4000000 /* std::bfloat16_t type. */ #define CPP_N_WIDTH_FLOATN_NX 0xF0000000 /* _FloatN / _FloatNx value of N, divided by 16. */ diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h index 9bdd5b9..50207ca 100644 --- a/libcpp/include/line-map.h +++ b/libcpp/include/line-map.h @@ -757,6 +757,7 @@ struct GTY(()) location_adhoc_data { location_t locus; source_range src_range; void * GTY((skip)) data; + unsigned discriminator; }; struct htab; @@ -1034,12 +1035,14 @@ LINEMAPS_LAST_ALLOCATED_MACRO_MAP (const line_maps *set) } extern location_t get_combined_adhoc_loc (line_maps *, location_t, - source_range, void *); + source_range, void *, unsigned); extern void *get_data_from_adhoc_loc (const line_maps *, location_t); +extern unsigned get_discriminator_from_adhoc_loc (const line_maps *, location_t); extern location_t get_location_from_adhoc_loc (const line_maps *, location_t); extern source_range get_range_from_loc (line_maps *set, location_t loc); +extern unsigned get_discriminator_from_loc (line_maps *set, location_t loc); /* Get whether location LOC is a "pure" location, or whether it is an ad-hoc location, or embeds range information. */ @@ -1058,9 +1061,10 @@ inline location_t COMBINE_LOCATION_DATA (class line_maps *set, location_t loc, source_range src_range, - void *block) + void *block, + unsigned discriminator) { - return get_combined_adhoc_loc (set, loc, src_range, block); + return get_combined_adhoc_loc (set, loc, src_range, block, discriminator); } extern void rebuild_location_adhoc_htab (class line_maps *); diff --git a/libcpp/include/symtab.h b/libcpp/include/symtab.h index 53efe6c..8b45fd5 100644 --- a/libcpp/include/symtab.h +++ b/libcpp/include/symtab.h @@ -29,7 +29,10 @@ along with this program; see the file COPYING3. If not see typedef struct ht_identifier ht_identifier; typedef struct ht_identifier *ht_identifier_ptr; struct GTY(()) ht_identifier { - const unsigned char *str; + /* This GTY markup arranges that the null-terminated identifier would still + stream to PCH correctly, if a null byte were to make its way into an + identifier somehow. */ + const unsigned char * GTY((string_length ("1 + %h.len"))) str; unsigned int len; unsigned int hash_value; }; diff --git a/libcpp/init.cc b/libcpp/init.cc index d3b4f00..5f34e35 100644 --- a/libcpp/init.cc +++ b/libcpp/init.cc @@ -82,6 +82,7 @@ struct lang_flags char extended_numbers; char extended_identifiers; char c11_identifiers; + char xid_identifiers; char std; char digraphs; char uliterals; @@ -102,31 +103,31 @@ struct lang_flags }; static const struct lang_flags lang_defaults[] = -{ /* c99 c++ xnum xid c11 std digr ulit rlit udlit bincst digsep trig u8chlit vaopt scope dfp szlit elifdef warndir delim trufal */ - /* GNUC89 */ { 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, - /* GNUC99 */ { 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, - /* GNUC11 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, - /* GNUC17 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, - /* GNUC2X */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1 }, - /* STDC89 */ { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 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, 0, 0, 0 }, - /* STDC99 */ { 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 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, 0, 0, 0 }, - /* STDC17 */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* STDC2X */ { 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 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, 0, 0, 1 }, - /* CXX98 */ { 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 }, - /* GNUCXX11 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 }, - /* CXX11 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 }, - /* GNUCXX14 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 }, - /* CXX14 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 }, - /* GNUCXX17 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1 }, - /* CXX17 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1 }, - /* GNUCXX20 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1 }, - /* CXX20 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1 }, - /* GNUCXX23 */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1 }, - /* CXX23 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1 }, - /* ASM */ { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +{ /* c99 c++ xnum xid c11 xidid std digr ulit rlit udlit bincst digsep trig u8chlit vaopt scope dfp szlit elifdef warndir delim trufal */ + /* GNUC89 */ { 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, + /* GNUC99 */ { 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, + /* GNUC11 */ { 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, + /* GNUC17 */ { 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, + /* GNUC2X */ { 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 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, 0, 0, 0 }, + /* STDC94 */ { 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 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, 0, 0, 0 }, + /* STDC11 */ { 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 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, 0, 0, 0 }, + /* STDC2X */ { 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 }, + /* GNUCXX */ { 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 }, + /* CXX98 */ { 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 }, + /* GNUCXX11 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 }, + /* CXX11 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 }, + /* GNUCXX14 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1 }, + /* CXX14 */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1 }, + /* GNUCXX17 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1 }, + /* CXX17 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 1 }, + /* GNUCXX20 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1 }, + /* CXX20 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1 }, + /* GNUCXX23 */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1 }, + /* CXX23 */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1 }, + /* ASM */ { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; /* Sets internal flags correctly for a given language. */ @@ -142,6 +143,7 @@ cpp_set_lang (cpp_reader *pfile, enum c_lang lang) 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, xid_identifiers) = l->xid_identifiers; CPP_OPTION (pfile, std) = l->std; CPP_OPTION (pfile, digraphs) = l->digraphs; CPP_OPTION (pfile, uliterals) = l->uliterals; diff --git a/libcpp/lex.cc b/libcpp/lex.cc index 41f905de..cc12a52d 100644 --- a/libcpp/lex.cc +++ b/libcpp/lex.cc @@ -1362,7 +1362,8 @@ get_location_for_byte_range_in_cur_line (cpp_reader *pfile, location_t combined_loc = COMBINE_LOCATION_DATA (pfile->line_table, start_loc, src_range, - NULL); + NULL, + 0); return combined_loc; } @@ -2006,7 +2007,8 @@ name_p (cpp_reader *pfile, const cpp_string *string) static void warn_about_normalization (cpp_reader *pfile, const cpp_token *token, - const struct normalize_state *s) + const struct normalize_state *s, + bool identifier) { if (CPP_OPTION (pfile, warn_normalize) < NORMALIZE_STATE_RESULT (s) && !pfile->state.skipping) @@ -2028,7 +2030,7 @@ warn_about_normalization (cpp_reader *pfile, CPP_BUF_COLUMN (pfile->buffer, pfile->buffer->cur)); loc = COMBINE_LOCATION_DATA (pfile->line_table, - loc, tok_range, NULL); + loc, tok_range, NULL, 0); } encoding_rich_location rich_loc (pfile, loc); @@ -2042,7 +2044,7 @@ warn_about_normalization (cpp_reader *pfile, 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, cplusplus)) + else if (identifier && CPP_OPTION (pfile, xid_identifiers)) cpp_pedwarning_at (pfile, CPP_W_NORMALIZE, &rich_loc, "`%.*s' is not in NFC", (int) sz, buf); else @@ -3838,7 +3840,7 @@ _cpp_lex_direct (cpp_reader *pfile) struct normalize_state nst = INITIAL_NORMALIZE_STATE; result->type = CPP_NUMBER; lex_number (pfile, &result->val.str, &nst); - warn_about_normalization (pfile, result, &nst); + warn_about_normalization (pfile, result, &nst, false); break; } @@ -3887,7 +3889,7 @@ _cpp_lex_direct (cpp_reader *pfile) result->val.node.node = lex_identifier (pfile, buffer->cur - 1, false, &nst, &result->val.node.spelling); - warn_about_normalization (pfile, result, &nst); + warn_about_normalization (pfile, result, &nst, true); } /* Convert named operators to their proper types. */ @@ -4100,7 +4102,7 @@ _cpp_lex_direct (cpp_reader *pfile) struct normalize_state nst = INITIAL_NORMALIZE_STATE; result->type = CPP_NUMBER; lex_number (pfile, &result->val.str, &nst); - warn_about_normalization (pfile, result, &nst); + warn_about_normalization (pfile, result, &nst, false); } else if (*buffer->cur == '.' && buffer->cur[1] == '.') buffer->cur += 2, result->type = CPP_ELLIPSIS; @@ -4191,7 +4193,7 @@ _cpp_lex_direct (cpp_reader *pfile) result->type = CPP_NAME; result->val.node.node = lex_identifier (pfile, base, true, &nst, &result->val.node.spelling); - warn_about_normalization (pfile, result, &nst); + warn_about_normalization (pfile, result, &nst, true); break; } @@ -4256,7 +4258,7 @@ _cpp_lex_direct (cpp_reader *pfile) result->src_loc = COMBINE_LOCATION_DATA (pfile->line_table, result->src_loc, - tok_range, NULL); + tok_range, NULL, 0); } return result; diff --git a/libcpp/line-map.cc b/libcpp/line-map.cc index 391f1d4..50e8043 100644 --- a/libcpp/line-map.cc +++ b/libcpp/line-map.cc @@ -67,7 +67,8 @@ location_adhoc_data_hash (const void *l) return ((hashval_t) lb->locus + (hashval_t) lb->src_range.m_start + (hashval_t) lb->src_range.m_finish - + (size_t) lb->data); + + (size_t) lb->data + + lb->discriminator); } /* Compare function for location_adhoc_data hashtable. */ @@ -82,7 +83,8 @@ location_adhoc_data_eq (const void *l1, const void *l2) return (lb1->locus == lb2->locus && lb1->src_range.m_start == lb2->src_range.m_start && lb1->src_range.m_finish == lb2->src_range.m_finish - && lb1->data == lb2->data); + && lb1->data == lb2->data + && lb1->discriminator == lb2->discriminator); } /* Update the hashtable when location_adhoc_data_map::data is reallocated. @@ -127,13 +129,17 @@ static bool can_be_stored_compactly_p (line_maps *set, location_t locus, source_range src_range, - void *data) + void *data, + unsigned discriminator) { /* If there's an ad-hoc pointer, we can't store it directly in the location_t, we need the lookaside. */ if (data) return false; + if (discriminator != 0) + return false; + /* We only store ranges that begin at the locus and that are sufficiently "sane". */ if (src_range.m_start != locus) @@ -168,7 +174,8 @@ location_t get_combined_adhoc_loc (line_maps *set, location_t locus, source_range src_range, - void *data) + void *data, + unsigned discriminator) { struct location_adhoc_data lb; struct location_adhoc_data **slot; @@ -186,7 +193,7 @@ get_combined_adhoc_loc (line_maps *set, || pure_location_p (set, locus)); /* Consider short-range optimization. */ - if (can_be_stored_compactly_p (set, locus, src_range, data)) + if (can_be_stored_compactly_p (set, locus, src_range, data, discriminator)) { /* The low bits ought to be clear. */ linemap_assert (pure_location_p (set, locus)); @@ -206,15 +213,16 @@ get_combined_adhoc_loc (line_maps *set, when locus == start == finish (and data is NULL). */ if (locus == src_range.m_start && locus == src_range.m_finish - && !data) + && !data && discriminator == 0) return locus; - if (!data) + if (!data && discriminator == 0) set->num_unoptimized_ranges++; lb.locus = locus; lb.src_range = src_range; lb.data = data; + lb.discriminator = discriminator; slot = (struct location_adhoc_data **) htab_find_slot (set->location_adhoc_data_map.htab, &lb, INSERT); if (*slot == NULL) @@ -261,6 +269,13 @@ get_data_from_adhoc_loc (const class line_maps *set, location_t loc) return set->location_adhoc_data_map.data[loc & MAX_LOCATION_T].data; } +unsigned +get_discriminator_from_adhoc_loc (const class line_maps *set, location_t loc) +{ + linemap_assert (IS_ADHOC_LOC (loc)); + return set->location_adhoc_data_map.data[loc & MAX_LOCATION_T].discriminator; +} + /* Return the location for the adhoc loc. */ location_t @@ -306,6 +321,15 @@ get_range_from_loc (line_maps *set, return source_range::from_location (loc); } +unsigned +get_discriminator_from_loc (line_maps *set, + location_t loc) +{ + if (IS_ADHOC_LOC (loc)) + return get_discriminator_from_adhoc_loc (set, loc); + return 0; +} + /* Get whether location LOC is a "pure" location, or whether it is an ad-hoc location, or embeds range information. */ diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog index a8ffca2..7ab8d50 100644 --- a/libcpp/po/ChangeLog +++ b/libcpp/po/ChangeLog @@ -1,3 +1,7 @@ +2022-10-10 Joseph Myers <joseph@codesourcery.com> + + * ro.po: New. + 2022-05-04 Joseph Myers <joseph@codesourcery.com> * es.po: Update. diff --git a/libcpp/po/ro.po b/libcpp/po/ro.po new file mode 100644 index 0000000..5084b0b --- /dev/null +++ b/libcpp/po/ro.po @@ -0,0 +1,1140 @@ +# Mesajele în limba română pentru pachetul cpplib. +# Copyright © 2022 Free Software Foundation, Inc. +# This file is distributed under the same license as the gcc package. +# +# Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>, 2022. +# +# Cronologia traducerii fișierului „cpplib”: +# Traducerea inițială, făcută de R-GC, pentru versiunea cpplib 12.1-b20220213. +# Actualizare a traducerii pentru versiunea Y, făcută de X. +# +msgid "" +msgstr "" +"Project-Id-Version: cpplib 12.1-b20220213\n" +"Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" +"POT-Creation-Date: 2022-02-11 23:02+0000\n" +"PO-Revision-Date: 2022-10-09 09:43+0200\n" +"Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n" +"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || ((n%100) > 0 && (n%100) < 20)) ? 1 : 2);\n" +"X-Bugs: Report translation errors to the Language-Team address.\n" +"X-Generator: Poedit 3.1.1\n" + +#: charset.cc:683 +#, c-format +msgid "conversion from %s to %s not supported by iconv" +msgstr "conversia de la %s la %s nu este acceptată de iconv" + +#: charset.cc:686 +msgid "iconv_open" +msgstr "iconv_open" + +#: charset.cc:696 +#, c-format +msgid "no iconv implementation, cannot convert from %s to %s" +msgstr "nicio implementare iconv, nu se poate converti de la %s la %s" + +#: charset.cc:794 +#, c-format +msgid "character 0x%lx is not in the basic source character set\n" +msgstr "caracterul 0x%lx nu se află în setul de caractere sursă de bază\n" + +#: charset.cc:811 charset.cc:1800 +msgid "converting to execution character set" +msgstr "se convertește în setul de caractere de execuție" + +#: charset.cc:817 +#, c-format +msgid "character 0x%lx is not unibyte in execution character set" +msgstr "caracterul 0x%lx nu este un octet unic în setul de caractere de execuție" + +#: charset.cc:1087 +msgid "universal character names are only valid in C++ and C99" +msgstr "numele de caractere universale sunt valabile numai în C++ și C99" + +#: charset.cc:1091 +msgid "C99's universal character names are incompatible with C90" +msgstr "numele de caractere universale ale lui C99 sunt incompatibile cu C90" + +#: charset.cc:1094 +#, c-format +msgid "the meaning of '\\%c' is different in traditional C" +msgstr "semnificația lui „\\%c” este diferită în limbajul C tradițional" + +#: charset.cc:1103 +msgid "In _cpp_valid_ucn but not a UCN" +msgstr "Este în _cpp_valid_ucn, dar nu este un UCN(NumedeCaracterUniversal)" + +#: charset.cc:1136 +#, c-format +msgid "incomplete universal character name %.*s" +msgstr "nume de caracter universal incomplet %.*s" + +#: charset.cc:1151 +#, c-format +msgid "%.*s is not a valid universal character" +msgstr "%.*s nu este un caracter universal valid" + +#: charset.cc:1161 lex.cc:1876 +msgid "'$' in identifier or number" +msgstr "„$” în identificator sau în număr" + +#: charset.cc:1171 +#, c-format +msgid "universal character %.*s is not valid in an identifier" +msgstr "caracterul universal %.*s nu este valid într-un identificator" + +#: charset.cc:1175 +#, c-format +msgid "universal character %.*s is not valid at the start of an identifier" +msgstr "caracterul universal %.*s nu este valid la începutul unui identificator" + +#: charset.cc:1182 +#, c-format +msgid "%.*s is outside the UCS codespace" +msgstr "%.*s se află în afara spațiului de cod UCS" + +#: charset.cc:1227 charset.cc:2145 +msgid "converting UCN to source character set" +msgstr "se convertește UCN în setul de caractere sursă" + +#: charset.cc:1234 +msgid "converting UCN to execution character set" +msgstr "se convertește UCN în setul de caractere de execuție" + +#: charset.cc:1298 +#, c-format +msgid "extended character %.*s is not valid in an identifier" +msgstr "caracterul extins %.*s nu este valid într-un identificator" + +#: charset.cc:1315 +#, c-format +msgid "extended character %.*s is not valid at the start of an identifier" +msgstr "caracterul extins %.*s nu este valid la începutul unui identificator" + +#: charset.cc:1401 +msgid "the meaning of '\\x' is different in traditional C" +msgstr "semnificația lui „\\x” este diferită în limbajul C tradițional" + +#: charset.cc:1426 +msgid "\\x used with no following hex digits" +msgstr "„\\x” utilizat fără să fie urmat de cifre hexazecimale" + +#: charset.cc:1433 +msgid "hex escape sequence out of range" +msgstr "secvență de eludare hexazecimală în afara intervalului" + +#: charset.cc:1483 +msgid "octal escape sequence out of range" +msgstr "secvență de eludare octală în afara intervalului" + +#: charset.cc:1564 +msgid "the meaning of '\\a' is different in traditional C" +msgstr "semnificația lui „\\a” este diferită în limbajul C tradițional" + +#: charset.cc:1571 +#, c-format +msgid "non-ISO-standard escape sequence, '\\%c'" +msgstr "secvență de eludare non-standard ISO, „\\%c”" + +#: charset.cc:1579 +#, c-format +msgid "unknown escape sequence: '\\%c'" +msgstr "secvență de eludare necunoscută: „\\%c”" + +#: charset.cc:1589 +#, c-format +msgid "unknown escape sequence: '\\%s'" +msgstr "secvență de eludare necunoscută: „\\%s”" + +#: charset.cc:1597 +msgid "converting escape sequence to execution character set" +msgstr "se convertește secvența de eludare în set de caractere de execuție" + +#: charset.cc:1737 +msgid "missing open quote" +msgstr "lipsește ghilimeaua de deschidere" + +#: charset.cc:1955 charset.cc:2034 +msgid "character constant too long for its type" +msgstr "constantă de caractere prea lungă pentru tipul său" + +#: charset.cc:1958 +msgid "multi-character character constant" +msgstr "constantă de caractere cu mai multe caractere" + +#: charset.cc:2074 +msgid "empty character constant" +msgstr "constantă de caractere goală" + +#: charset.cc:2230 +#, c-format +msgid "failure to convert %s to %s" +msgstr "eșec la conversia %s în %s" + +#: directives.cc:237 directives.cc:280 +#, c-format +msgid "extra tokens at end of #%s directive" +msgstr "simboluri suplimentare la finalul directivei #%s" + +#: directives.cc:387 +#, c-format +msgid "#%s is a GCC extension" +msgstr "#%s este o extensie GCC" + +#: directives.cc:392 +#, c-format +msgid "#%s is a deprecated GCC extension" +msgstr "#%s este o extensie GCC învechită" + +#: directives.cc:405 +msgid "suggest not using #elif in traditional C" +msgstr "se sugerează neutilizarea directivei #elif în limbajul C tradițional" + +#: directives.cc:408 +#, c-format +msgid "traditional C ignores #%s with the # indented" +msgstr "limbajul C tradițional ignoră #%s cu # indentat" + +#: directives.cc:412 +#, c-format +msgid "suggest hiding #%s from traditional C with an indented #" +msgstr "se sugerează ascunderea #%s din C tradițional cu un # indentat" + +#: directives.cc:438 +msgid "embedding a directive within macro arguments is not portable" +msgstr "înglobarea unei directive în argumentele macro nu este portabilă" + +#: directives.cc:466 +msgid "style of line directive is a GCC extension" +msgstr "directiva de stil de linie este o extensie GCC" + +#: directives.cc:541 +#, c-format +msgid "invalid preprocessing directive #%s; did you mean #%s?" +msgstr "directivă de preprocesare nevalidă #%s; ați vrut să spuneți #%s?" + +#: directives.cc:547 +#, c-format +msgid "invalid preprocessing directive #%s" +msgstr "directivă de preprocesare nevalidă #%s" + +#: directives.cc:617 +#, c-format +msgid "\"%s\" cannot be used as a macro name" +msgstr "„%s” nu poate fi utilizat ca nume de macrocomandă" + +#: directives.cc:624 +#, c-format +msgid "\"%s\" cannot be used as a macro name as it is an operator in C++" +msgstr "„%s” nu poate fi utilizat ca nume de macrocomandă, deoarece este un operator în C++" + +#: directives.cc:627 +#, c-format +msgid "no macro name given in #%s directive" +msgstr "niciun nume de macrocomandă nu este dat în directiva #%s" + +#: directives.cc:630 +msgid "macro names must be identifiers" +msgstr "numele macrocomenzilor trebuie să fie identificatori" + +#: directives.cc:679 directives.cc:684 +#, c-format +msgid "undefining \"%s\"" +msgstr "a fost eliminată definiția „%s”" + +#: directives.cc:741 +msgid "missing terminating > character" +msgstr "lipsește caracterul de terminare „>”" + +#: directives.cc:800 +#, c-format +msgid "#%s expects \"FILENAME\" or <FILENAME>" +msgstr "#%s se așteaptă „NUME_FIȘIER” sau <NUME_FIȘIER>" + +#: directives.cc:846 +#, c-format +msgid "empty filename in #%s" +msgstr "nume de fișier gol în #%s" + +#: directives.cc:855 +#, c-format +msgid "#include nested depth %u exceeds maximum of %u (use -fmax-include-depth=DEPTH to increase the maximum)" +msgstr "adâncimea de imbricare %u din #include depășește maximul de %u (utilizați „-fmax-include-depth=ADÂNCIME” pentru a crește valoarea maximă)" + +#: directives.cc:900 +msgid "#include_next in primary source file" +msgstr "#include_next în fișierul sursă principal (primar)" + +#: directives.cc:926 +#, c-format +msgid "invalid flag \"%s\" in line directive" +msgstr "opțiune nevalidă „%s” în directiva de linie" + +#: directives.cc:993 +msgid "unexpected end of file after #line" +msgstr "sfârșit de fișier neașteptat, după #line" + +#: directives.cc:996 +#, c-format +msgid "\"%s\" after #line is not a positive integer" +msgstr "„%s” aflat după #line nu este un număr întreg pozitiv" + +#: directives.cc:1002 directives.cc:1004 +msgid "line number out of range" +msgstr "număr de linie în afara intervalului" + +#: directives.cc:1017 directives.cc:1098 +#, c-format +msgid "\"%s\" is not a valid filename" +msgstr "„%s” nu este un nume de fișier valid" + +#: directives.cc:1058 +#, c-format +msgid "\"%s\" after # is not a positive integer" +msgstr "„%s” aflat după # nu este un număr întreg pozitiv" + +#: directives.cc:1125 +#, c-format +msgid "file \"%s\" linemarker ignored due to incorrect nesting" +msgstr "marcatorul de linie al fișierului „%s” a fost ignorat din cauza imbricației incorecte" + +#: directives.cc:1203 directives.cc:1205 directives.cc:1207 directives.cc:1795 +#, c-format +msgid "%s" +msgstr "%s" + +#: directives.cc:1231 +#, c-format +msgid "invalid #%s directive" +msgstr "directivă #%s nevalidă" + +#: directives.cc:1294 +#, c-format +msgid "registering pragmas in namespace \"%s\" with mismatched name expansion" +msgstr "se înregistrează pragmas în spațiul de nume „%s” cu o expandare a numelui ce nu coincide" + +#: directives.cc:1303 +#, c-format +msgid "registering pragma \"%s\" with name expansion and no namespace" +msgstr "se înregistrează pragma „%s” cu expandarea numelui și fără spațiu de nume" + +#: directives.cc:1321 +#, c-format +msgid "registering \"%s\" as both a pragma and a pragma namespace" +msgstr "se înregistrează „%s” atât ca pragma, cât și ca spațiu de nume pragma" + +#: directives.cc:1324 +#, c-format +msgid "#pragma %s %s is already registered" +msgstr "#pragma %s %s este deja înregistrată" + +#: directives.cc:1327 +#, c-format +msgid "#pragma %s is already registered" +msgstr "#pragma %s este deja înregistrată" + +#: directives.cc:1357 +msgid "registering pragma with NULL handler" +msgstr "se înregistrează pragma cu gestionar NULL" + +#: directives.cc:1574 +msgid "#pragma once in main file" +msgstr "#pragma apare o dată în fișierul principal" + +#: directives.cc:1597 +msgid "invalid #pragma push_macro directive" +msgstr "directivă #pragma push_macro nevalidă" + +#: directives.cc:1654 +msgid "invalid #pragma pop_macro directive" +msgstr "directivă #pragma pop_macro nevalidă" + +#: directives.cc:1709 +msgid "invalid #pragma GCC poison directive" +msgstr "directivă #pragma GCC poison nevalidă" + +#: directives.cc:1718 +#, c-format +msgid "poisoning existing macro \"%s\"" +msgstr "se „otrăvește” macrocomanda existentă „%s”" + +#: directives.cc:1737 +msgid "#pragma system_header ignored outside include file" +msgstr "#pragma system_header ignorat în afara fișierului de includere" + +#: directives.cc:1762 +#, c-format +msgid "cannot find source file %s" +msgstr "nu se poate găsi fișierul sursă %s" + +#: directives.cc:1766 +#, c-format +msgid "current file is older than %s" +msgstr "fișierul curent este mai vechi decât %s" + +#: directives.cc:1790 +#, c-format +msgid "invalid \"#pragma GCC %s\" directive" +msgstr "directivă „#pragma GCC %s” nevalidă" + +#: directives.cc:1992 +msgid "_Pragma takes a parenthesized string literal" +msgstr "_Pragma preia un șir literal între paranteze" + +#: directives.cc:2075 +msgid "#else without #if" +msgstr "#else fără #if" + +#: directives.cc:2080 +msgid "#else after #else" +msgstr "#else după #else" + +#: directives.cc:2082 directives.cc:2116 +msgid "the conditional began here" +msgstr "condiționalul a început aici" + +#: directives.cc:2108 +#, c-format +msgid "#%s without #if" +msgstr "#%s fără #if" + +#: directives.cc:2113 +#, c-format +msgid "#%s after #else" +msgstr "#%s după #else" + +#: directives.cc:2136 directives.cc:2175 +#, c-format +msgid "#%s before C++23 is a GCC extension" +msgstr "#%s înainte de C++23 este o extensie GCC" + +#: directives.cc:2140 directives.cc:2179 +#, c-format +msgid "#%s before C2X is a GCC extension" +msgstr "#%s înainte de C2X este o extensie GCC" + +#: directives.cc:2215 +msgid "#endif without #if" +msgstr "#endif fără #if" + +#: directives.cc:2291 +msgid "missing '(' after predicate" +msgstr "lipsește „(” după predicat" + +#: directives.cc:2309 +msgid "missing ')' to complete answer" +msgstr "lipsește „)” pentru a completa răspunsul" + +#: directives.cc:2321 +msgid "predicate's answer is empty" +msgstr "răspunsul predicatului este gol" + +#: directives.cc:2351 +msgid "assertion without predicate" +msgstr "afirmație fără predicat" + +#: directives.cc:2354 +msgid "predicate must be an identifier" +msgstr "predicatul trebuie să fie un identificator" + +#: directives.cc:2436 +#, c-format +msgid "\"%s\" re-asserted" +msgstr "„%s” a fost reafirmat" + +#: directives.cc:2754 +#, c-format +msgid "unterminated #%s" +msgstr "neterminat #%s" + +#: errors.cc:335 errors.cc:350 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: errors.cc:348 +msgid "stdout" +msgstr "ieșirea standard" + +#: expr.cc:632 expr.cc:749 +msgid "fixed-point constants are a GCC extension" +msgstr "constantele cu virgulă fixă sunt o extensie GCC" + +#: expr.cc:657 +msgid "invalid prefix \"0b\" for floating constant" +msgstr "prefix nevalid „0b” pentru constanta cu virgulă mobilă" + +#: expr.cc:670 +msgid "use of C++17 hexadecimal floating constant" +msgstr "utilizare a constantei cu virgulă mobilă hexazecimală C++17" + +#: expr.cc:673 +msgid "use of C99 hexadecimal floating constant" +msgstr "utilizare a constantei cu virgulă mobilă hexazecimală C99" + +#: expr.cc:717 +#, c-format +msgid "invalid suffix \"%.*s\" on floating constant" +msgstr "sufix nevalid „%.*s” pentru o constantă cu virgulă mobilă" + +#: expr.cc:728 expr.cc:795 +#, c-format +msgid "traditional C rejects the \"%.*s\" suffix" +msgstr "limbajul C tradițional respinge sufixul „%.*s”" + +#: expr.cc:736 +msgid "suffix for double constant is a GCC extension" +msgstr "sufixul pentru constantă dublă este o extensie GCC" + +#: expr.cc:742 +#, c-format +msgid "invalid suffix \"%.*s\" with hexadecimal floating constant" +msgstr "sufix nevalid „%.*s” pentru o constantă cu virgulă mobilă hexazecimală" + +#: expr.cc:755 expr.cc:759 +msgid "decimal float constants are a C2X feature" +msgstr "constantele cu virgulă mobilă zecimale sunt o caracteristică C2X" + +#: expr.cc:778 +#, c-format +msgid "invalid suffix \"%.*s\" on integer constant" +msgstr "sufix nevalid „%.*s” pentru o constantă de număr întreg" + +#: expr.cc:803 +msgid "use of C++11 long long integer constant" +msgstr "utilizare a constantei de număr întreg lung lung C++11" + +#: expr.cc:804 +msgid "use of C99 long long integer constant" +msgstr "utilizare a constantei de număr întreg lung lung C99" + +#: expr.cc:818 +msgid "use of C++23 %<size_t%> integer constant" +msgstr "utilizare a constantei de număr întreg %<size_t%> C++23" + +#: expr.cc:819 +msgid "use of C++23 %<make_signed_t<size_t>%> integer constant" +msgstr "utilizare a constantei de număr întreg %<make_signed_t<size_t>%> C++23" + +#: expr.cc:830 +msgid "imaginary constants are a GCC extension" +msgstr "constantele imaginare sunt o extensie GCC" + +#: expr.cc:837 +msgid "binary constants are a C++14 feature or GCC extension" +msgstr "constantele binare sunt o caracteristică C++14 sau o extensie GCC" + +#: expr.cc:839 +msgid "binary constants are a C2X feature or GCC extension" +msgstr "constantele binare sunt o caracteristică C2X sau o extensie GCC" + +#: expr.cc:844 +msgid "binary constants are a C2X feature" +msgstr "constantele binare sunt o caracteristică C2X" + +#: expr.cc:940 +msgid "integer constant is too large for its type" +msgstr "constanta de număr întreg este prea mare pentru tipul său" + +#: expr.cc:971 +msgid "integer constant is so large that it is unsigned" +msgstr "constanta de număr întreg este atât de mare încât este nesemnată" + +#: expr.cc:1066 +msgid "missing ')' after \"defined\"" +msgstr "lipsește „)” după «defined»" + +#: expr.cc:1073 +msgid "operator \"defined\" requires an identifier" +msgstr "operatorul «defined» necesită un identificator" + +#: expr.cc:1081 +#, c-format +msgid "(\"%s\" is an alternative token for \"%s\" in C++)" +msgstr "(„%s” este un element lexical alternativ pentru „%s” în C++)" + +#: expr.cc:1094 +msgid "this use of \"defined\" may not be portable" +msgstr "este posibil ca această utilizare a lui «defined» să nu fie portabilă" + +#: expr.cc:1139 +msgid "user-defined literal in preprocessor expression" +msgstr "literal definit de utilizator în expresia preprocesorului" + +#: expr.cc:1144 +msgid "floating constant in preprocessor expression" +msgstr "constantă cu virgulă mobilă în expresia preprocesorului" + +#: expr.cc:1150 +msgid "imaginary number in preprocessor expression" +msgstr "număr imaginar în expresia preprocesorului" + +#: expr.cc:1199 +#, c-format +msgid "\"%s\" is not defined, evaluates to 0" +msgstr "„%s” nu este definit, se evaluează la 0" + +#: expr.cc:1212 +msgid "assertions are a GCC extension" +msgstr "aserțiunile sunt o extensie GCC" + +#: expr.cc:1215 +msgid "assertions are a deprecated extension" +msgstr "aserțiunile sunt o extensie depreciată" + +#: expr.cc:1461 +#, c-format +msgid "unbalanced stack in %s" +msgstr "stivă dezechilibrată în %s" + +#: expr.cc:1481 +#, c-format +msgid "impossible operator '%u'" +msgstr "operator „%u” imposibil" + +#: expr.cc:1582 +msgid "missing ')' in expression" +msgstr "lipsește „)” în expresie" + +#: expr.cc:1611 +msgid "'?' without following ':'" +msgstr "„?” fără să fie urmat de „:”" + +#: expr.cc:1621 +msgid "integer overflow in preprocessor expression" +msgstr "depășire de număr întreg în expresia preprocesorului" + +#: expr.cc:1626 +msgid "missing '(' in expression" +msgstr "lipsește „(” în expresie" + +#: expr.cc:1658 +#, c-format +msgid "the left operand of \"%s\" changes sign when promoted" +msgstr "operandul din stânga lui „%s” își schimbă semnul atunci când este promovat" + +#: expr.cc:1663 +#, c-format +msgid "the right operand of \"%s\" changes sign when promoted" +msgstr "operandul din dreapta lui „%s” își schimbă semnul atunci când este promovat" + +#: expr.cc:1922 +msgid "traditional C rejects the unary plus operator" +msgstr "limbajul C tradițional respinge operatorul unar plus" + +#: expr.cc:2020 +msgid "comma operator in operand of #if" +msgstr "operator virgulă în operandul #if" + +#: expr.cc:2156 +msgid "division by zero in #if" +msgstr "împărțire la zero în #if" + +#: files.cc:516 +msgid "NULL directory in find_file" +msgstr "director NULL în find_file" + +#: files.cc:570 +msgid "one or more PCH files were found, but they were invalid" +msgstr "au fost găsite unul sau mai multe fișiere PCH, dar acestea nu erau valide" + +#: files.cc:574 +msgid "use -Winvalid-pch for more information" +msgstr "utilizați „-Winvalid-pch” pentru mai multe informații" + +#: files.cc:688 +#, c-format +msgid "%s is a block device" +msgstr "%s este un dispozitiv bloc" + +#: files.cc:707 +#, c-format +msgid "%s is too large" +msgstr "%s este prea mare" + +#: files.cc:748 +#, c-format +msgid "%s is shorter than expected" +msgstr "%s este mai scurt decât se aștepta" + +#: files.cc:1060 +#, c-format +msgid "no include path in which to search for %s" +msgstr "nicio cale de inclus pentru a căuta %s" + +#: files.cc:1578 +msgid "Multiple include guards may be useful for:\n" +msgstr "Multiple „include guards” pot fi utile pentru:\n" + +#: init.cc:618 +msgid "cppchar_t must be an unsigned type" +msgstr "cppchar_t trebuie să fie un tip nesemnat" + +#: init.cc:622 +#, c-format +msgid "preprocessor arithmetic has maximum precision of %lu bits; target requires %lu bits" +msgstr "aritmetica preprocesorului are o precizie maximă de %lu biți; ținta necesită %lu biți" + +#: init.cc:629 +msgid "CPP arithmetic must be at least as precise as a target int" +msgstr "Aritmetica CPP trebuie să fie cel puțin la fel de precisă ca o țintă int" + +#: init.cc:632 +msgid "target char is less than 8 bits wide" +msgstr "char țintă are mai puțin de 8 biți lățime" + +#: init.cc:636 +msgid "target wchar_t is narrower than target char" +msgstr "wchar_t țintă este mai îngust decât char tintă" + +#: init.cc:640 +msgid "target int is narrower than target char" +msgstr "int țintă este mai îngust decât char țintă" + +#: init.cc:645 +msgid "CPP half-integer narrower than CPP character" +msgstr "half-integer din CPP este mai îngust decât caracterul din CPP" + +# R-GC, scrie: +# după revizarea fișerului, DȘ spune: +# „"CPP de pe această gazdă nu poate gestiona constante de caracter largi de peste %lu biți, dar ținta necesită %lu biți" (traducerea inițială) +# → nu știu sigur despre ce este vorba dar nu cred că „wide” se traduce cu „larg”, „lat” ar fi mai potrivit.” +# *** +# după „despicarea firului problemei”, am creat +# trei propuneri de substituire a acestui mesaj: +# . +# a) „CPP de pe această gazdă nu poate gestiona constante de caracter largi, mai +# lungi de %lu biți, dar ținta necesită %lu biți” +# . +# b) „CPP de pe această gazdă nu poate gestiona constante de caracter lungi mai +# mari de %lu biți, dar ținta necesită %lu biți” +# . +# c) „CPP de pe această gazdă nu poate gestiona constante de caracter mai lungi de +# %lu biți, dar ținta necesită %lu biți” +# *** +# în final, a avut «cîștig de cauză», varianta C. +#: init.cc:649 +#, c-format +msgid "CPP on this host cannot handle wide character constants over %lu bits, but the target requires %lu bits" +msgstr "CPP de pe această gazdă nu poate gestiona constante de caracter mai lungi de %lu biți, dar ținta necesită %lu biți" + +#: lex.cc:1126 +msgid "backslash and newline separated by space" +msgstr "bară oblică inversă și linie nouă separate de spațiu «\\ n»" + +#: lex.cc:1131 +msgid "backslash-newline at end of file" +msgstr "bară oblică inversă și linie nouă «\\n» la sfârșit de fișier" + +#: lex.cc:1147 +#, c-format +msgid "trigraph ??%c converted to %c" +msgstr "trigraf ??%c convertit în %c" + +#: lex.cc:1155 +#, c-format +msgid "trigraph ??%c ignored, use -trigraphs to enable" +msgstr "trigraf ??%c ignorat, utilizați „-trigraphs” pentru a activa recunoașterea sa" + +#: lex.cc:1536 +msgid "end of bidirectional context" +msgstr "sfârșitul contextului bidirecţional" + +#: lex.cc:1577 +msgid "unpaired UTF-8 bidirectional control characters detected" +msgstr "au fost detectate caractere de control bidirecțional UTF-8 fără pereche" + +#: lex.cc:1581 +msgid "unpaired UTF-8 bidirectional control character detected" +msgstr "a fost detectat un caracter de control bidirecțional UTF-8 fără pereche" + +#: lex.cc:1619 +#, c-format +msgid "UTF-8 vs UCN mismatch when closing a context by \"%s\"" +msgstr "nepotrivire între UTF-8 și UCN atunci când se încheie contextul cu „%s”" + +#: lex.cc:1628 +#, c-format +msgid "\"%s\" is closing an unopened context" +msgstr "„%s” închide un context nedeschis" + +#: lex.cc:1632 +#, c-format +msgid "found problematic Unicode character \"%s\"" +msgstr "s-a găsit caracterul Unicode problematic „%s”" + +#: lex.cc:1682 +msgid "\"/*\" within comment" +msgstr "„/*” în comentariu" + +#: lex.cc:1772 +#, c-format +msgid "%s in preprocessing directive" +msgstr "%s în directiva de preprocesare" + +#: lex.cc:1784 +msgid "null character(s) ignored" +msgstr "caracter(e) null ignorat(e)" + +#: lex.cc:1844 +#, c-format +msgid "`%.*s' is not in NFKC" +msgstr "„%.*s” nu se este în NFKC" + +#: lex.cc:1847 lex.cc:1850 +#, c-format +msgid "`%.*s' is not in NFC" +msgstr "„%.*s” nu se este în NFC" + +#: lex.cc:1932 +msgid "__VA_OPT__ is not available until C++20" +msgstr "__VA_OPT__ nu este disponibilă până la C++20" + +#: lex.cc:1939 +msgid "__VA_OPT__ can only appear in the expansion of a C++20 variadic macro" +msgstr "__VA_OPT__ poate apărea doar în expansiunea unei macrocomenzi C++20 cu un număr variabil de argumente" + +#: lex.cc:1970 lex.cc:2066 +#, c-format +msgid "attempt to use poisoned \"%s\"" +msgstr "încercați să utilizați „%s” «otrăvit»" + +#: lex.cc:1980 lex.cc:2076 +msgid "__VA_ARGS__ can only appear in the expansion of a C++11 variadic macro" +msgstr "__VA_ARGS__ poate apărea doar în expansiunea unei macrocomenzi C++11 cu un număr variabil de argumente" + +#: lex.cc:1984 lex.cc:2080 +msgid "__VA_ARGS__ can only appear in the expansion of a C99 variadic macro" +msgstr "__VA_ARGS__ poate apărea doar în expansiunea unei macrocomenzi C99 cu un număr variabil de argumente" + +#: lex.cc:1994 lex.cc:2092 +#, c-format +msgid "identifier \"%s\" is a special operator name in C++" +msgstr "identificatorul „%s” este un nume de operator special în C++" + +#: lex.cc:2132 +msgid "adjacent digit separators" +msgstr "separatori de cifre adiacenți" + +#: lex.cc:2450 +msgid "raw string delimiter longer than 16 characters" +msgstr "delimitator de șir brut, mai lung de 16 caractere" + +#: lex.cc:2454 +msgid "invalid new-line in raw string delimiter" +msgstr "linie nouă nevalidă în delimitatorul de șir brut" + +#: lex.cc:2458 lex.cc:5257 +#, c-format +msgid "invalid character '%c' in raw string delimiter" +msgstr "caracter nevalid „%c” în delimitatorul de șir brut" + +#: lex.cc:2497 lex.cc:2520 +msgid "unterminated raw string" +msgstr "șir brut neterminat" + +#: lex.cc:2552 lex.cc:2701 +msgid "invalid suffix on literal; C++11 requires a space between literal and string macro" +msgstr "sufix nevalid la literal; C++11 necesită un spațiu între literal și macrocomanda șir" + +#: lex.cc:2684 +msgid "null character(s) preserved in literal" +msgstr "caracter(e) null păstrat(e) în literal" + +#: lex.cc:2687 +#, c-format +msgid "missing terminating %c character" +msgstr "lipsește caracterul %c de încheiere" + +#: lex.cc:2719 +msgid "C++11 requires a space between string literal and macro" +msgstr "C++11 necesită un spațiu între șir literal și macro" + +#: lex.cc:3312 +msgid "module control-line cannot be in included file" +msgstr "linia de control a modulului nu poate fi în fișierul inclus" + +#: lex.cc:3326 +#, c-format +msgid "module control-line \"%s\" cannot be an object-like macro" +msgstr "linia de control al modulului „%s” nu poate fi un obiect precum o macrocomandă" + +#: lex.cc:3714 lex.cc:5090 traditional.cc:174 +msgid "unterminated comment" +msgstr "comentariu neterminat" + +#: lex.cc:3728 lex.cc:3762 +msgid "C++ style comments are not allowed in ISO C90" +msgstr "comentariile în stil C++ nu sunt permise în ISO C90" + +#: lex.cc:3730 lex.cc:3741 lex.cc:3765 +msgid "(this will be reported only once per input file)" +msgstr "(acest lucru va fi raportat o singură dată pentru fiecare fișier de intrare)" + +#: lex.cc:3739 +msgid "C++ style comments are incompatible with C90" +msgstr "comentariile în stil C++ sunt incompatibile cu C90" + +#: lex.cc:3771 +msgid "multi-line comment" +msgstr "comentariu pe mai multe linii" + +#: lex.cc:4165 +#, c-format +msgid "unspellable token %s" +msgstr "element neortografiabil %s" + +#: lex.cc:5245 +#, c-format +msgid "raw string delimiter longer than %d characters" +msgstr "delimitator de șir brut mai lung de %d caractere" + +#: lex.cc:5315 +msgid "unterminated literal" +msgstr "literal neterminat" + +#: macro.cc:94 +msgid "'##' cannot appear at either end of __VA_OPT__" +msgstr "„##” nu poate apărea la niciunul dintre capetele lui __VA_OPT__" + +#: macro.cc:144 +msgid "__VA_OPT__ may not appear in a __VA_OPT__" +msgstr "__VA_OPT__ nu poate să apară într-o __VA_OPT__" + +#: macro.cc:157 +msgid "__VA_OPT__ must be followed by an open parenthesis" +msgstr "__VA_OPT__ trebuie să fie urmată de o paranteză deschisă" + +#: macro.cc:235 +msgid "unterminated __VA_OPT__" +msgstr "__VA_OPT__ neterminată" + +#: macro.cc:397 +#, c-format +msgid "\"%s\" used outside of preprocessing directive" +msgstr "„%s” folosit în afara directivei de preprocesare" + +#: macro.cc:407 +#, c-format +msgid "missing '(' before \"%s\" operand" +msgstr "lipsește „(” înainte de operandul „%s”" + +#: macro.cc:422 +#, c-format +msgid "operator \"%s\" requires a header-name" +msgstr "operatorul „%s” necesită un nume de antet" + +#: macro.cc:439 +#, c-format +msgid "missing ')' after \"%s\" operand" +msgstr "lipsește „)” după operandul „%s”" + +#: macro.cc:459 +#, c-format +msgid "macro \"%s\" is not used" +msgstr "macrocomanda „%s” nu este utilizată" + +#: macro.cc:498 macro.cc:797 +#, c-format +msgid "invalid built-in macro \"%s\"" +msgstr "macrocomandă încorporată „%s” nevalidă" + +#: macro.cc:505 macro.cc:613 +#, c-format +msgid "macro \"%s\" might prevent reproducible builds" +msgstr "macrocomanda „%s” ar putea împiedica compilările reproductibile" + +#: macro.cc:536 +msgid "could not determine file timestamp" +msgstr "nu s-a putut determina marcajul de timp al fișierului" + +#: macro.cc:627 +msgid "could not determine date and time" +msgstr "nu s-a putut determina data și ora" + +#: macro.cc:659 +msgid "__COUNTER__ expanded inside directive with -fdirectives-only" +msgstr "__COUNTER__ expandat în interiorul directivei cu „-fdirectives-only”" + +#: macro.cc:916 +msgid "invalid string literal, ignoring final '\\'" +msgstr "literal de șir nevalid, se ignoră „\\” final" + +#: macro.cc:980 +#, c-format +msgid "pasting \"%.*s\" and \"%.*s\" does not give a valid preprocessing token" +msgstr "lipirea lui „%.*s” și a lui„%.*s” nu oferă un element lexical de preprocesare valid" + +#: macro.cc:1112 +msgid "ISO C++11 requires at least one argument for the \"...\" in a variadic macro" +msgstr "ISO C++11 necesită cel puțin un argument pentru „...” într-o macrocomandă cu un număr variabil de argumente" + +#: macro.cc:1116 +msgid "ISO C99 requires at least one argument for the \"...\" in a variadic macro" +msgstr "ISO C99 necesită cel puțin un argument pentru „...” într-o macrocomandă cu un număr variabil de argumente" + +#: macro.cc:1123 +#, c-format +msgid "macro \"%s\" requires %u arguments, but only %u given" +msgstr "macrocomanda „%s” necesită %u argumente, dar numai %u sunt date" + +#: macro.cc:1128 +#, c-format +msgid "macro \"%s\" passed %u arguments, but takes just %u" +msgstr "macrocomenzii „%s” i s-au transmis %u argumente, dar are nevoie doar de %u" + +#: macro.cc:1132 +#, c-format +msgid "macro \"%s\" defined here" +msgstr "macrocomanda „%s” este definită aici" + +#: macro.cc:1326 traditional.cc:822 +#, c-format +msgid "unterminated argument list invoking macro \"%s\"" +msgstr "listă neterminată de argumente care invocă macrocomanda „%s”" + +#: macro.cc:1472 +#, c-format +msgid "function-like macro \"%s\" must be used with arguments in traditional C" +msgstr "macrocomanda „%s” asemănătoare unei funcții trebuie să fie utilizată cu argumente în limbajul C tradițional" + +#: macro.cc:2307 +#, c-format +msgid "invoking macro %s argument %d: empty macro arguments are undefined in ISO C++98" +msgstr "se invocă macrocomanda %s argument %d: argumentele macro goale sunt nedefinite în ISO C++98" + +#: macro.cc:2315 macro.cc:2324 +#, c-format +msgid "invoking macro %s argument %d: empty macro arguments are undefined in ISO C90" +msgstr "se invocă macrocomanda %s argument %d: argumentele macro goale sunt nedefinite în ISO C90" + +#: macro.cc:3375 +#, c-format +msgid "duplicate macro parameter \"%s\"" +msgstr "parametru de macrocomandă duplicat „%s”" + +#: macro.cc:3457 +#, c-format +msgid "expected parameter name, found \"%s\"" +msgstr "se aștepta un nume parametru, s-a găsit „%s”" + +#: macro.cc:3458 +#, c-format +msgid "expected ',' or ')', found \"%s\"" +msgstr "se aștepta «,» sau «)», s-a găsit „%s”" + +#: macro.cc:3459 +msgid "expected parameter name before end of line" +msgstr "se aștepta un nume de parametru înainte de sfârșitul liniei" + +#: macro.cc:3460 +msgid "expected ')' before end of line" +msgstr "se aștepta „)” înainte de sfârșitul liniei" + +#: macro.cc:3461 +msgid "expected ')' after \"...\"" +msgstr "se aștepta „)” după „...”" + +#: macro.cc:3518 +msgid "anonymous variadic macros were introduced in C++11" +msgstr "macrocomenzile anonime cu un număr variabil de argumente au fost introduse în C++11" + +#: macro.cc:3519 macro.cc:3523 +msgid "anonymous variadic macros were introduced in C99" +msgstr "macrocomenzile anonime cu un număr variabil de argumente au fost introduse în C99" + +#: macro.cc:3529 +msgid "ISO C++ does not permit named variadic macros" +msgstr "ISO C++ nu permite macrocomenzi variadice(cu număr variabil de argumente) cu nume" + +#: macro.cc:3530 +msgid "ISO C does not permit named variadic macros" +msgstr "ISO C nu permite macrocomenzi variadice(cu număr variabil de argumente) cu nume" + +#: macro.cc:3576 +msgid "'##' cannot appear at either end of a macro expansion" +msgstr "„##” nu poate apărea la niciunul dintre capetele unei expandări de macrocomandă" + +#: macro.cc:3614 +msgid "ISO C++11 requires whitespace after the macro name" +msgstr "ISO C++11 necesită un spațiu alb după numele macrocomenzii" + +#: macro.cc:3615 +msgid "ISO C99 requires whitespace after the macro name" +msgstr "ISO C99 necesită un spațiu alb după numele macrocomenzii" + +#: macro.cc:3639 +msgid "missing whitespace after the macro name" +msgstr "lipsește spațiul alb după numele macrocomenzii" + +#: macro.cc:3692 +msgid "'#' is not followed by a macro parameter" +msgstr "„#” nu este urmat de un parametru macro" + +#: macro.cc:3848 +#, c-format +msgid "\"%s\" redefined" +msgstr "„%s” redefinit" + +#: macro.cc:3853 +msgid "this is the location of the previous definition" +msgstr "aceasta este locația definiției precedente" + +#: macro.cc:3990 +#, c-format +msgid "macro argument \"%s\" would be stringified in traditional C" +msgstr "argumentul macrocomenzii „%s” trebuie să fie schimbat în șir în limbajul C tradițional" + +#: pch.cc:90 pch.cc:342 pch.cc:356 pch.cc:374 pch.cc:380 pch.cc:389 pch.cc:396 +msgid "while writing precompiled header" +msgstr "în timpul scrierii antetului precompilat" + +#: pch.cc:616 +#, c-format +msgid "%s: not used because `%.*s' is poisoned" +msgstr "%s: nu este folosit deoarece „%.*s” este «otrăvit»" + +#: pch.cc:638 +#, c-format +msgid "%s: not used because `%.*s' not defined" +msgstr "%s: nu este folosit deoarece „%.*s” nu este definit" + +#: pch.cc:650 +#, c-format +msgid "%s: not used because `%.*s' defined as `%s' not `%.*s'" +msgstr "%s: nu este folosit deoarece „%.*s” este definit ca „%s” nu „%.*s”" + +#: pch.cc:691 +#, c-format +msgid "%s: not used because `%s' is defined" +msgstr "%s: nu este folosit deoarece „%s” este definit" + +#: pch.cc:711 +#, c-format +msgid "%s: not used because `__COUNTER__' is invalid" +msgstr "%s: nu este folosit deoarece „__COUNTER__” este nevalid" + +#: pch.cc:720 pch.cc:876 +msgid "while reading precompiled header" +msgstr "în timpul citirii antetului precompilat" + +#: traditional.cc:891 +#, c-format +msgid "detected recursion whilst expanding macro \"%s\"" +msgstr "s-a detectat recursivitate în timpul expandării macrocomenzii „%s”" + +# R-GC, scrie: +# după revizarea fișierului, DȘ spune: +# msgid "syntax error in macro parameter list" +# msgstr "eroare de sintaxă în lista de parametri macro" +# → poți spune „ai macrocomenzii” pentru a fi consistent cu restul fișierului +# *** +# Ok, corecție aplicată! +#: traditional.cc:1114 +msgid "syntax error in macro parameter list" +msgstr "eroare de sintaxă în lista de parametri ai macrocomenzii" |