From 72295228c697bf97434d831583c9b4974e8b51a5 Mon Sep 17 00:00:00 2001 From: "Vladimir N. Makarov" Date: Wed, 29 Apr 2026 08:15:49 -0400 Subject: [PATCH 001/453] [IRA]: Use correct allocno when building conflicts When conflicts are built in IRA a wrong conflict allocno is taken. The allocno is used only in assertion which becomes always true and checks nothing. The patch fixes this. gcc/ChangeLog: * ira-conflicts.cc (build_object_conflicts): Use the right conflicting allocno. --- gcc/ira-conflicts.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/ira-conflicts.cc b/gcc/ira-conflicts.cc index 0168b255ae82..c43b1e72ccc2 100644 --- a/gcc/ira-conflicts.cc +++ b/gcc/ira-conflicts.cc @@ -583,7 +583,7 @@ build_object_conflicts (ira_object_t obj) OBJECT_MIN (obj), OBJECT_MAX (obj), i, asi) { ira_object_t another_obj = ira_object_id_map[i]; - ira_allocno_t another_a = OBJECT_ALLOCNO (obj); + ira_allocno_t another_a = OBJECT_ALLOCNO (another_obj); ira_assert (ira_reg_classes_intersect_p [ALLOCNO_CLASS (a)][ALLOCNO_CLASS (another_a)]); From fb3b31e0cbdd779b3687b25334aa6a3766aec3f3 Mon Sep 17 00:00:00 2001 From: "Vladimir N. Makarov" Date: Wed, 29 Apr 2026 08:50:32 -0400 Subject: [PATCH 002/453] [LRA]: Fix a bug in finding conflicts in rematerialization In LRA rematerialization wrong mode is used to find register conflicts. It can result in wrong rematerialization. The patch fixes this. gcc/ChangeLog: * lra-remat.cc (reg_overlap_for_remat_p): Use the right mode for regno2. --- gcc/lra-remat.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/lra-remat.cc b/gcc/lra-remat.cc index c7ae0f7b8c16..c4da3f75e598 100644 --- a/gcc/lra-remat.cc +++ b/gcc/lra-remat.cc @@ -697,7 +697,7 @@ reg_overlap_for_remat_p (lra_insn_reg *reg, rtx_insn *insn) if (regno2 >= FIRST_PSEUDO_REGISTER) nregs2 = 1; else - nregs2 = hard_regno_nregs (regno2, reg->biggest_mode); + nregs2 = hard_regno_nregs (regno2, reg2->biggest_mode); if ((regno2 + nregs2 - 1 >= regno && regno2 < regno + nregs) || (regno + nregs - 1 >= regno2 && regno < regno2 + nregs2)) From ef039a5bf888f736eb4504fe1322b8c1d5523dea Mon Sep 17 00:00:00 2001 From: "Vladimir N. Makarov" Date: Wed, 29 Apr 2026 09:37:11 -0400 Subject: [PATCH 003/453] [LRA]: Fix a bug in updating live info in rematerialization LRA rematerialization ignores that a pseudo can require more one hard reg when updating live hard reg info. This can result in wrong rematerialization. The patch fixes this. gcc/ChangeLog: * lra-remat.cc (do_remat): Use the right nregs for pseudo hard reg when updating live hard regs. --- gcc/lra-remat.cc | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/gcc/lra-remat.cc b/gcc/lra-remat.cc index c4da3f75e598..20d9f47d2e9a 100644 --- a/gcc/lra-remat.cc +++ b/gcc/lra-remat.cc @@ -1073,11 +1073,17 @@ do_remat (void) CLEAR_HARD_REG_SET (live_hard_regs); EXECUTE_IF_SET_IN_BITMAP (df_get_live_in (bb), 0, regno, bi) { - int hard_regno = regno < FIRST_PSEUDO_REGISTER - ? regno - : reg_renumber[regno]; - if (hard_regno >= 0) - SET_HARD_REG_BIT (live_hard_regs, hard_regno); + int nregs = 1; + int hard_regno = regno; + if (regno >= FIRST_PSEUDO_REGISTER) + { + hard_regno = reg_renumber[regno]; + if (hard_regno < 0) + continue; + nregs = hard_regno_nregs (hard_regno, PSEUDO_REGNO_MODE (regno)); + } + for (int i = 0; i < nregs; i++) + SET_HARD_REG_BIT (live_hard_regs, hard_regno + i); } bitmap_and (avail_cands, &get_remat_bb_data (bb)->avin_cands, &get_remat_bb_data (bb)->livein_cands); From 0a95113f1ef138b00666fc5a3a490446bdc9c271 Mon Sep 17 00:00:00 2001 From: Wilco Dijkstra Date: Wed, 29 Apr 2026 16:04:07 +0000 Subject: [PATCH 004/453] AArch64: Cleanup code models Cleanup code models - remove the confusing AARCH64_CMODEL_TINY_PIC, AARCH64_CMODEL_SMALL_PIC and AARCH64_CMODEL_SMALL_SPIC. This simplifies a lot of code. No change to generated code. gcc: * config/aarch64/aarch64.h (HAS_LONG_COND_BRANCH): Unused, remove. (HAS_LONG_UNCOND_BRANCH): unused, remove. * config/aarch64/aarch64.cc (aarch64_use_pseudo_pic_reg): Declare. (aarch64_rtx_costs): Update. (aarch64_override_options_after_change_1): Likewise. (initialize_aarch64_code_model): Simplify. (aarch64_classify_tls_symbol): Likewise. (aarch64_classify_symbol): Simplify, remove duplicated code. (aarch64_asm_preferred_eh_data_format): Update. (aarch64_use_pseudo_pic_reg): Update. * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Remove uses of AARCH64_CMODEL_TINY_PIC, AARCH64_CMODEL_SMALL_PIC, and AARCH64_CMODEL_SMALL_SPIC. * config/aarch64/aarch64-opts.h (aarch64_code_model): Remove AARCH64_CMODEL_TINY_PIC, AARCH64_CMODEL_SMALL_PIC and AARCH64_CMODEL_SMALL_SPIC. --- gcc/config/aarch64/aarch64-c.cc | 2 - gcc/config/aarch64/aarch64-opts.h | 22 ++---- gcc/config/aarch64/aarch64.cc | 117 +++++++++--------------------- gcc/config/aarch64/aarch64.h | 10 --- 4 files changed, 41 insertions(+), 110 deletions(-) diff --git a/gcc/config/aarch64/aarch64-c.cc b/gcc/config/aarch64/aarch64-c.cc index b2cc3e67f6da..9c9918151e75 100644 --- a/gcc/config/aarch64/aarch64-c.cc +++ b/gcc/config/aarch64/aarch64-c.cc @@ -181,11 +181,9 @@ aarch64_update_cpp_builtins (cpp_reader *pfile) switch (aarch64_cmodel) { case AARCH64_CMODEL_TINY: - case AARCH64_CMODEL_TINY_PIC: builtin_define ("__AARCH64_CMODEL_TINY__"); break; case AARCH64_CMODEL_SMALL: - case AARCH64_CMODEL_SMALL_PIC: builtin_define ("__AARCH64_CMODEL_SMALL__"); break; case AARCH64_CMODEL_LARGE: diff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h index 45527809549a..423285d6b0f9 100644 --- a/gcc/config/aarch64/aarch64-opts.h +++ b/gcc/config/aarch64/aarch64-opts.h @@ -61,26 +61,16 @@ enum aarch64_tls_type { TLS_DESCRIPTORS }; -/* The code model defines the address generation strategy. - Most have a PIC and non-PIC variant. */ +/* The code model defines the address generation strategy. */ enum aarch64_code_model { - /* Static code and data fit within a 1MB region. + /* Static code, data and GOT/PLT fit within a 1MB region. Not fully implemented, mostly treated as SMALL. */ AARCH64_CMODEL_TINY, - /* Static code, data and GOT/PLT fit within a 1MB region. - Not fully implemented, mostly treated as SMALL_PIC. */ - AARCH64_CMODEL_TINY_PIC, - /* Static code and data fit within a 4GB region. - The default non-PIC code model. */ - AARCH64_CMODEL_SMALL, /* Static code, data and GOT/PLT fit within a 4GB region. - The default PIC code model. */ - AARCH64_CMODEL_SMALL_PIC, - /* -fpic for small memory model. - GOT size to 28KiB (4K*8-4K) or 3580 entries. */ - AARCH64_CMODEL_SMALL_SPIC, - /* No assumptions about addresses of code and data. - The PIC variant is not yet implemented. */ + The default code model. */ + AARCH64_CMODEL_SMALL, + /* Static code, rodata and GOT/PLT fit within a 4GB region, + data/bss are unlimited. */ AARCH64_CMODEL_LARGE }; diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 37c28c8f2f8f..64e25b2df189 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -370,6 +370,7 @@ static bool aarch64_builtin_support_vector_misalignment (machine_mode mode, static machine_mode aarch64_simd_container_mode (scalar_mode, poly_int64); static bool aarch64_print_address_internal (FILE*, machine_mode, rtx, aarch64_addr_query_type); +bool aarch64_use_pseudo_pic_reg (void); /* The processor for which instructions should be scheduled. */ enum aarch64_cpu aarch64_tune = AARCH64_CPU_cortexa53; @@ -16110,22 +16111,20 @@ aarch64_rtx_costs (rtx x, machine_mode mode, int outer ATTRIBUTE_UNUSED, case SYMBOL_REF: if (aarch64_cmodel == AARCH64_CMODEL_LARGE - || aarch64_cmodel == AARCH64_CMODEL_SMALL_SPIC) + || aarch64_use_pseudo_pic_reg ()) { /* LDR. */ if (speed) *cost += extra_cost->ldst.load; } - else if (aarch64_cmodel == AARCH64_CMODEL_SMALL - || aarch64_cmodel == AARCH64_CMODEL_SMALL_PIC) + else if (aarch64_cmodel == AARCH64_CMODEL_SMALL) { /* ADRP, followed by ADD. */ *cost += COSTS_N_INSNS (1); if (speed) *cost += 2 * extra_cost->alu.arith; } - else if (aarch64_cmodel == AARCH64_CMODEL_TINY - || aarch64_cmodel == AARCH64_CMODEL_TINY_PIC) + else if (aarch64_cmodel == AARCH64_CMODEL_TINY) { /* ADR. */ if (speed) @@ -19587,8 +19586,7 @@ aarch64_override_options_after_change_1 (struct gcc_options *opts) /* In the tiny memory model it makes no sense to disallow PC relative literal pool loads. */ - if (aarch64_cmodel == AARCH64_CMODEL_TINY - || aarch64_cmodel == AARCH64_CMODEL_TINY_PIC) + if (aarch64_cmodel == AARCH64_CMODEL_TINY) aarch64_pcrelative_literal_loads = true; /* When enabling the lower precision Newton series for the square root, also @@ -20212,35 +20210,13 @@ static void initialize_aarch64_code_model (struct gcc_options *opts) { aarch64_cmodel = opts->x_aarch64_cmodel_var; - switch (opts->x_aarch64_cmodel_var) + if (aarch64_cmodel == AARCH64_CMODEL_LARGE) { - case AARCH64_CMODEL_TINY: - if (opts->x_flag_pic) - aarch64_cmodel = AARCH64_CMODEL_TINY_PIC; - break; - case AARCH64_CMODEL_SMALL: - if (opts->x_flag_pic) - { -#ifdef HAVE_AS_SMALL_PIC_RELOCS - aarch64_cmodel = (flag_pic == 2 - ? AARCH64_CMODEL_SMALL_PIC - : AARCH64_CMODEL_SMALL_SPIC); -#else - aarch64_cmodel = AARCH64_CMODEL_SMALL_PIC; -#endif - } - break; - case AARCH64_CMODEL_LARGE: if (opts->x_flag_pic) sorry ("code model %qs with %<-f%s%>", "large", opts->x_flag_pic > 1 ? "PIC" : "pic"); if (opts->x_aarch64_abi == AARCH64_ABI_ILP32) sorry ("code model %qs not supported in ilp32 mode", "large"); - break; - case AARCH64_CMODEL_TINY_PIC: - case AARCH64_CMODEL_SMALL_PIC: - case AARCH64_CMODEL_SMALL_SPIC: - gcc_unreachable (); } } @@ -22125,23 +22101,16 @@ aarch64_tls_symbol_p (rtx x) enum aarch64_symbol_type aarch64_classify_tls_symbol (rtx x) { - enum tls_model tls_kind = tls_symbolic_operand_type (x); - - switch (tls_kind) + switch (tls_symbolic_operand_type (x)) { case TLS_MODEL_GLOBAL_DYNAMIC: case TLS_MODEL_LOCAL_DYNAMIC: return TARGET_TLS_DESC ? SYMBOL_SMALL_TLSDESC : SYMBOL_SMALL_TLSGD; case TLS_MODEL_INITIAL_EXEC: - switch (aarch64_cmodel) - { - case AARCH64_CMODEL_TINY: - case AARCH64_CMODEL_TINY_PIC: - return SYMBOL_TINY_TLSIE; - default: - return SYMBOL_SMALL_TLSIE; - } + if (aarch64_cmodel == AARCH64_CMODEL_TINY) + return SYMBOL_TINY_TLSIE; + return SYMBOL_SMALL_TLSIE; case TLS_MODEL_LOCAL_EXEC: if (aarch64_tls_size == 12) @@ -22155,10 +22124,6 @@ aarch64_classify_tls_symbol (rtx x) else gcc_unreachable (); - case TLS_MODEL_EMULATED: - case TLS_MODEL_NONE: - return SYMBOL_FORCE_TO_MEM; - default: gcc_unreachable (); } @@ -22174,23 +22139,13 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset) if (LABEL_REF_P (x)) { - switch (aarch64_cmodel) - { - case AARCH64_CMODEL_LARGE: - return SYMBOL_FORCE_TO_MEM; + if (aarch64_cmodel == AARCH64_CMODEL_TINY) + return SYMBOL_TINY_ABSOLUTE; - case AARCH64_CMODEL_TINY_PIC: - case AARCH64_CMODEL_TINY: - return SYMBOL_TINY_ABSOLUTE; + if (aarch64_cmodel == AARCH64_CMODEL_LARGE) + return SYMBOL_FORCE_TO_MEM; - case AARCH64_CMODEL_SMALL_SPIC: - case AARCH64_CMODEL_SMALL_PIC: - case AARCH64_CMODEL_SMALL: - return SYMBOL_SMALL_ABSOLUTE; - - default: - gcc_unreachable (); - } + return SYMBOL_SMALL_ABSOLUTE; } if (SYMBOL_REF_P (x)) @@ -22198,17 +22153,22 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset) if (aarch64_tls_symbol_p (x)) return aarch64_classify_tls_symbol (x); - switch (aarch64_cmodel) + /* With -fPIC non-local symbols use the GOT. For orthogonality + always use the GOT for extern weak symbols. */ + if (!TARGET_PECOFF + && (flag_pic || SYMBOL_REF_WEAK (x)) + && !aarch64_symbol_binds_local_p (x)) { - case AARCH64_CMODEL_TINY_PIC: - case AARCH64_CMODEL_TINY: - /* With -fPIC non-local symbols use the GOT. For orthogonality - always use the GOT for extern weak symbols. */ - if (!TARGET_PECOFF - && (flag_pic || SYMBOL_REF_WEAK (x)) - && !aarch64_symbol_binds_local_p (x)) + if (aarch64_cmodel == AARCH64_CMODEL_TINY) return SYMBOL_TINY_GOT; + if (aarch64_use_pseudo_pic_reg ()) + return SYMBOL_SMALL_GOT_28K; + return SYMBOL_SMALL_GOT_4G; + } + switch (aarch64_cmodel) + { + case AARCH64_CMODEL_TINY: /* When we retrieve symbol + offset address, we have to make sure the offset does not cause overflow of the final address. But we have no way of knowing the address of symbol at compile time @@ -22224,15 +22184,7 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset) return SYMBOL_TINY_ABSOLUTE; - case AARCH64_CMODEL_SMALL_SPIC: - case AARCH64_CMODEL_SMALL_PIC: case AARCH64_CMODEL_SMALL: - if (!TARGET_PECOFF - && (flag_pic || SYMBOL_REF_WEAK (x)) - && !aarch64_symbol_binds_local_p (x)) - return aarch64_cmodel == AARCH64_CMODEL_SMALL_SPIC - ? SYMBOL_SMALL_GOT_28K : SYMBOL_SMALL_GOT_4G; - /* Same reasoning as the tiny code model, but the offset cap here is 1MB, allowing +/-3.9GB for the offset to the symbol. */ if (!(IN_RANGE (offset, -0x100000, 0x100000) @@ -26229,10 +26181,7 @@ aarch64_asm_preferred_eh_data_format (int code ATTRIBUTE_UNUSED, int global) switch (aarch64_cmodel) { case AARCH64_CMODEL_TINY: - case AARCH64_CMODEL_TINY_PIC: case AARCH64_CMODEL_SMALL: - case AARCH64_CMODEL_SMALL_PIC: - case AARCH64_CMODEL_SMALL_SPIC: /* text+got+data < 4Gb. 4-byte signed relocs are sufficient for everything. */ type = DW_EH_PE_sdata4; @@ -30252,13 +30201,17 @@ aarch64_empty_mask_is_expensive (unsigned) return false; } -/* Return 1 if pseudo register should be created and used to hold - GOT address for PIC code. */ +/* Return true if a pseudo register should be created and used to hold the + GOT address for -fpic. */ bool aarch64_use_pseudo_pic_reg (void) { - return aarch64_cmodel == AARCH64_CMODEL_SMALL_SPIC; +#ifdef HAVE_AS_SMALL_PIC_RELOCS + return flag_pic == 1 && aarch64_cmodel == AARCH64_CMODEL_SMALL; +#else + return false; +#endif } /* Implement TARGET_UNSPEC_MAY_TRAP_P. */ diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index d61705d78f61..681dff03bbf0 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -1500,16 +1500,6 @@ typedef struct extern enum aarch64_code_model aarch64_cmodel; -/* When using the tiny addressing model conditional and unconditional branches - can span the whole of the available address space (1MB). */ -#define HAS_LONG_COND_BRANCH \ - (aarch64_cmodel == AARCH64_CMODEL_TINY \ - || aarch64_cmodel == AARCH64_CMODEL_TINY_PIC) - -#define HAS_LONG_UNCOND_BRANCH \ - (aarch64_cmodel == AARCH64_CMODEL_TINY \ - || aarch64_cmodel == AARCH64_CMODEL_TINY_PIC) - #define TARGET_HAS_FMV_TARGET_ATTRIBUTE 0 #define TARGET_SUPPORTS_WIDE_INT 1 From 631427fc512fba0c16eab30c69f3c3aa16f2dab1 Mon Sep 17 00:00:00 2001 From: Wilco Dijkstra Date: Tue, 3 Feb 2026 18:31:51 +0000 Subject: [PATCH 005/453] AArch64: Deprecate -mpc-relative-literal-loads Deprecate -mpc-relative-literal-loads. Emitting special symbols in the text section causes issues (see PR123791). Since the option is relatively obscure and GCC now uses anchors for literals, there is no need to keep it. gcc: * config/aarch64/aarch64.opt (mpc-relative-literal-loads): Deprecate. * config/aarch64/aarch64.cc (aarch64_override_options): Add deprecated warning for -mpc-relative-literal-loads. * doc/invoke.texi (mpc-relative-literal-loads): Update docs. gcc/testsuite: * gcc.target/aarch64/pr123791.c: Add -Wno-deprecated. * gcc.target/aarch64/pr78733.c: Likewise. * gcc.target/aarch64/pr79041-2.c: Likewise. * gcc.target/aarch64/pr94530.c: Likewise. --- gcc/config/aarch64/aarch64.cc | 3 +++ gcc/config/aarch64/aarch64.opt | 2 +- gcc/doc/invoke.texi | 2 ++ gcc/testsuite/gcc.target/aarch64/pr123791.c | 2 +- gcc/testsuite/gcc.target/aarch64/pr78733.c | 2 +- gcc/testsuite/gcc.target/aarch64/pr79041-2.c | 2 +- gcc/testsuite/gcc.target/aarch64/pr94530.c | 2 +- 7 files changed, 10 insertions(+), 5 deletions(-) diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index 64e25b2df189..a85fb0f8cfbe 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -20152,6 +20152,9 @@ aarch64_override_options (void) if (TARGET_ILP32) warning (OPT_Wdeprecated, "%<-mabi=ilp32%> is deprecated"); + if (global_options.x_pcrelative_literal_loads == 1) + warning (OPT_Wdeprecated, "%<-mpc-relative-literal-loads%> is deprecated"); + /* Convert -msve-vector-bits to a VG count. */ aarch64_sve_vg = aarch64_convert_sve_vector_bits (aarch64_sve_vector_bits); diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt index 64004f21332c..ef0d96e74860 100644 --- a/gcc/config/aarch64/aarch64.opt +++ b/gcc/config/aarch64/aarch64.opt @@ -222,7 +222,7 @@ Enum(aarch64_abi) String(lp64) Value(AARCH64_ABI_LP64) mpc-relative-literal-loads Target Save Var(pcrelative_literal_loads) Init(2) Save -PC relative literal loads. +PC relative literal loads. This option is deprecated. mbranch-protection= Target RejectNegative Joined Var(aarch64_branch_protection_string) Save diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index c9b8953d2a82..756af474310c 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -21672,6 +21672,8 @@ accessed using a single instruction and emitted after each function. This limits the maximum size of functions to 1MB. This is enabled by default for @option{-mcmodel=tiny}. +The @option{-mpc-relative-literal-loads} is deprecated. + @opindex msign-return-address @item -msign-return-address=@var{scope} Select the function scope on which return address signing will be applied. diff --git a/gcc/testsuite/gcc.target/aarch64/pr123791.c b/gcc/testsuite/gcc.target/aarch64/pr123791.c index afdf37e8aac1..8e394231a4a0 100644 --- a/gcc/testsuite/gcc.target/aarch64/pr123791.c +++ b/gcc/testsuite/gcc.target/aarch64/pr123791.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -mpc-relative-literal-loads" } */ +/* { dg-options "-O2 -mpc-relative-literal-loads -Wno-deprecated" } */ char * foo () diff --git a/gcc/testsuite/gcc.target/aarch64/pr78733.c b/gcc/testsuite/gcc.target/aarch64/pr78733.c index 8556ef3f3718..9de6fb6dc1ae 100644 --- a/gcc/testsuite/gcc.target/aarch64/pr78733.c +++ b/gcc/testsuite/gcc.target/aarch64/pr78733.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -mcmodel=large -mpc-relative-literal-loads -fno-pie" } */ +/* { dg-options "-O2 -mcmodel=large -mpc-relative-literal-loads -fno-pie -Wno-deprecated" } */ /* { dg-require-effective-target lp64 } */ /* { dg-skip-if "-mcmodel=large, no support for -fpic" { aarch64-*-* } { "-fpic" } { "" } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/pr79041-2.c b/gcc/testsuite/gcc.target/aarch64/pr79041-2.c index 8556ef3f3718..9de6fb6dc1ae 100644 --- a/gcc/testsuite/gcc.target/aarch64/pr79041-2.c +++ b/gcc/testsuite/gcc.target/aarch64/pr79041-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -mcmodel=large -mpc-relative-literal-loads -fno-pie" } */ +/* { dg-options "-O2 -mcmodel=large -mpc-relative-literal-loads -fno-pie -Wno-deprecated" } */ /* { dg-require-effective-target lp64 } */ /* { dg-skip-if "-mcmodel=large, no support for -fpic" { aarch64-*-* } { "-fpic" } { "" } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/pr94530.c b/gcc/testsuite/gcc.target/aarch64/pr94530.c index 5dfdbe3311d7..9620b63769db 100644 --- a/gcc/testsuite/gcc.target/aarch64/pr94530.c +++ b/gcc/testsuite/gcc.target/aarch64/pr94530.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-require-effective-target lp64 } */ -/* { dg-options "-Os -mcpu=falkor -mpc-relative-literal-loads -mcmodel=large -fno-pie" } */ +/* { dg-options "-Os -mcpu=falkor -mpc-relative-literal-loads -mcmodel=large -fno-pie -Wno-deprecated" } */ extern void bar(const char *); From 9fa927b851ae90fb588f10d85ea86ea2c4d74dab Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Wed, 29 Apr 2026 14:09:55 -0400 Subject: [PATCH 006/453] hppa64: doc/install.texi - Remove incorrect statement regarding GNU ld support 2026-04-29 John David Anglin gcc/ChangeLog: * doc/install.texi (hppa64-hp-hpux11*): Remove incorrect statement. --- gcc/doc/install.texi | 3 --- 1 file changed, 3 deletions(-) diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index e96c32d70998..3e8c46107a9e 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -4351,9 +4351,6 @@ It may be helpful to configure GCC with the @uref{./configure.html#with-gnu-as,,@option{--with-gnu-as}} and @option{--with-as=@dots{}} options to ensure that GCC can find GAS@. -Only the HP linker is supported. Thus, it is best to explicitly -configure the target with the @option{--with-ld=@dots{}} option. - The DCE thread library is not supported, so @option{--enable-threads=dce} does not work. From ad2d8a375404628de396380bb36e6f81c054c4e1 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Wed, 29 Apr 2026 12:49:49 -0700 Subject: [PATCH 007/453] testsuite: Fix cond-add-vec-2.C and make cond-add-vec-1.C test some more With -march=cascadelake/-mavx512f, the VEC_COND_EXPR is turned into a COND_ADD. This breaks cond-add-vec-2.C check to make sure the conditional add is still there. So we need to check for COND_ADD or VEC_COND_EXPR in forwprop1. Even though cond-add-vec-1.C works right now, it is best to make sure COND_ADD is not there. Pushed as obvious after testing with and without -march=cascadelake on x86_64. gcc/testsuite/ChangeLog: * g++.dg/tree-ssa/cond-add-vec-1.C: Add a check to make sure COND_ADD is not there either. * g++.dg/tree-ssa/cond-add-vec-2.C: Change the check for VEC_COND_EXPR to allow for COND_ADD. Signed-off-by: Andrew Pinski --- gcc/testsuite/g++.dg/tree-ssa/cond-add-vec-1.C | 1 + gcc/testsuite/g++.dg/tree-ssa/cond-add-vec-2.C | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/g++.dg/tree-ssa/cond-add-vec-1.C b/gcc/testsuite/g++.dg/tree-ssa/cond-add-vec-1.C index ce5ee51be528..9c7c1e0f138d 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/cond-add-vec-1.C +++ b/gcc/testsuite/g++.dg/tree-ssa/cond-add-vec-1.C @@ -34,3 +34,4 @@ f3 (vector4_u8 unsigned char x) } /* { dg-final { scan-tree-dump-not "VEC_COND_EXPR" "forwprop1" } } */ +/* { dg-final { scan-tree-dump-not "COND_ADD" "forwprop1" } } */ diff --git a/gcc/testsuite/g++.dg/tree-ssa/cond-add-vec-2.C b/gcc/testsuite/g++.dg/tree-ssa/cond-add-vec-2.C index 06c218f77514..554f24bf8973 100644 --- a/gcc/testsuite/g++.dg/tree-ssa/cond-add-vec-2.C +++ b/gcc/testsuite/g++.dg/tree-ssa/cond-add-vec-2.C @@ -17,4 +17,4 @@ vector2_u64 unsigned long g2 (vector2_u64 unsigned long x) { : (vector2_u64 unsigned long){40, 40}; } -/* { dg-final { scan-tree-dump-times "VEC_COND_EXPR" 2 "forwprop1" } } */ +/* { dg-final { scan-tree-dump-times "VEC_COND_EXPR|COND_ADD" 2 "forwprop1" } } */ From f4b5c2bf40d68e1666c83556a236a53cdddc34a2 Mon Sep 17 00:00:00 2001 From: Pengxuan Zheng Date: Thu, 26 Mar 2026 11:42:57 -0700 Subject: [PATCH 008/453] match: Add MIN {<=,>,<,>=} MAX simplifications [PR113379] The following patterns and their variants are added. min(a,b) {<=,>,<,>=} max(a,b) -> {true,false,a!=b,a==b} Bootstrapped and tested on x86_64-linux-gnu and aarch64-linux-gnu. PR tree-optimization/113379 gcc/ChangeLog: * match.pd (min(a,b) {<=,>,<,>=} max(a,b)): New patterns. gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/pr113379.c: New test. Signed-off-by: Pengxuan Zheng --- gcc/match.pd | 21 ++++++++ gcc/testsuite/gcc.dg/tree-ssa/pr113379.c | 69 ++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr113379.c diff --git a/gcc/match.pd b/gcc/match.pd index 65a2292ecae3..df960a0cf29f 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -5012,6 +5012,27 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (if (!HONOR_NANS (@0)) (op @0 @1)))) +/* min (a, b) <= max (a, b) -> true + max (a, b) >= min (a, b) -> true + min (a, b) > max (a, b) -> false + max (a, b) < min (a, b) -> false */ +(for legt (le gt) + (simplify + (legt:c (min @0 @1) (max @0 @1)) + (if (!HONOR_NANS (@0)) + { constant_boolean_node (legt == LE_EXPR, type); }))) + +/* min (a, b) < max (a, b) -> a != b + max (a, b) > min (a, b) -> a != b + min (a, b) >= max (a, b) -> a == b + max (a, b) <= min (a, b) -> a == b */ +(for ltge (lt ge) + neeq (ne eq) + (simplify + (ltge:c (min @0 @1) (max @0 @1)) + (if (!HONOR_NANS (@0)) + (neeq @0 @1)))) + /* Simplify min (&var[off0], &var[off1]) etc. depending on whether the addresses are known to be less, equal or greater. */ (for minmax (min max) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr113379.c b/gcc/testsuite/gcc.dg/tree-ssa/pr113379.c new file mode 100644 index 000000000000..684fbd241401 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr113379.c @@ -0,0 +1,69 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -fdump-tree-optimized" } */ + +int +f1 (int a, int b) +{ + int min = a < b ? a : b; + int max = a > b ? a : b; + return min <= max; +} + +int +f2 (int a, int b) +{ + int min = a < b ? a : b; + int max = a > b ? a : b; + return min > max; +} + +int +f3 (int a, int b) +{ + int max = a > b ? a : b; + int min = a < b ? a : b; + return max >= min; +} + +int +f4 (int a, int b) +{ + int max = a > b ? a : b; + int min = a < b ? a : b; + return max < min; +} + +int +f5 (int a, int b) +{ + int min = a < b ? a : b; + int max = a > b ? a : b; + return min < max; +} + +int +f6 (int a, int b) +{ + int min = a < b ? a : b; + int max = a > b ? a : b; + return min >= max; +} + +int +f7 (int a, int b) +{ + int max = a > b ? a : b; + int min = a < b ? a : b; + return max > min; +} + +int +f8 (int a, int b) +{ + int max = a > b ? a : b; + int min = a < b ? a : b; + return max <= min; +} + +/* { dg-final { scan-tree-dump-not "MIN_EXPR" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "MAX_EXPR" "optimized" } } */ From 4695252ee8493236c6267892b52b204c22106d37 Mon Sep 17 00:00:00 2001 From: GCC Administrator Date: Thu, 30 Apr 2026 00:16:31 +0000 Subject: [PATCH 009/453] Daily bump. --- gcc/ChangeLog | 457 ++++++++++++++++++++++++++++++++++++++++ gcc/DATESTAMP | 2 +- gcc/c-family/ChangeLog | 12 ++ gcc/c/ChangeLog | 12 ++ gcc/cp/ChangeLog | 42 ++++ gcc/fortran/ChangeLog | 9 + gcc/testsuite/ChangeLog | 131 ++++++++++++ libsanitizer/ChangeLog | 5 + libstdc++-v3/ChangeLog | 27 +++ 9 files changed, 696 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8ec41237655d..f331efbdc127 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,460 @@ +2026-04-29 Pengxuan Zheng + + PR tree-optimization/113379 + * match.pd (min(a,b) {<=,>,<,>=} max(a,b)): New patterns. + +2026-04-29 John David Anglin + + * doc/install.texi (hppa64-hp-hpux11*): Remove incorrect + statement. + +2026-04-29 Wilco Dijkstra + + * config/aarch64/aarch64.opt (mpc-relative-literal-loads): + Deprecate. + * config/aarch64/aarch64.cc (aarch64_override_options): + Add deprecated warning for -mpc-relative-literal-loads. + * doc/invoke.texi (mpc-relative-literal-loads): Update docs. + +2026-04-29 Wilco Dijkstra + + * config/aarch64/aarch64.h (HAS_LONG_COND_BRANCH): Unused, remove. + (HAS_LONG_UNCOND_BRANCH): unused, remove. + * config/aarch64/aarch64.cc (aarch64_use_pseudo_pic_reg): Declare. + (aarch64_rtx_costs): Update. + (aarch64_override_options_after_change_1): Likewise. + (initialize_aarch64_code_model): Simplify. + (aarch64_classify_tls_symbol): Likewise. + (aarch64_classify_symbol): Simplify, remove duplicated code. + (aarch64_asm_preferred_eh_data_format): Update. + (aarch64_use_pseudo_pic_reg): Update. + * config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): + Remove uses of AARCH64_CMODEL_TINY_PIC, AARCH64_CMODEL_SMALL_PIC, + and AARCH64_CMODEL_SMALL_SPIC. + * config/aarch64/aarch64-opts.h (aarch64_code_model): + Remove AARCH64_CMODEL_TINY_PIC, AARCH64_CMODEL_SMALL_PIC and + AARCH64_CMODEL_SMALL_SPIC. + +2026-04-29 Vladimir N. Makarov + + * lra-remat.cc (do_remat): Use the right nregs for pseudo hard reg + when updating live hard regs. + +2026-04-29 Vladimir N. Makarov + + * lra-remat.cc (reg_overlap_for_remat_p): Use the right mode for + regno2. + +2026-04-29 Vladimir N. Makarov + + * ira-conflicts.cc (build_object_conflicts): Use the right + conflicting allocno. + +2026-04-29 Richard Biener + + PR tree-optimization/125080 + * tree-vect-slp.cc (vect_bb_slp_mark_stmts_vectorized): Only + add instance root stmts to scalar coverage if they do not + appear in externs. + +2026-04-29 Xin Liu + Zhaoling Bao + + * common/config/i386/cpuinfo.h (get_hygon_cpu): Detect the specific + type of HYGON CPU and return HYGON CPU name. + (cpu_indicator_init): Handle HYGON CPU. + * common/config/i386/i386-common.cc (processor_names): Add HYGON + C86-4G processors c86-4g-m{4,6,7}. + (processor_alias_table): Add hygon, hygonfam18h and c86-4g-m{4,6,7} + entries. + (ARRAY_SIZE): Update as new entries added. + * common/config/i386/i386-cpuinfo.h (enum processor_vendor): Add + VENDOR_HYGON. + (enum processor_types): Add HYGONFAM18H. + (enum processor_subtypes): Add HYGONFAM18H_C86_4G_M{4,6,7}. + * config.gcc: Add support for c86_4g_m{4,6,7}. + * config/i386/cpuid.h (signature_HYGON_ebx): Add signature for HYGON. + (signature_HYGON_ecx): Ditto. + (signature_HYGON_edx): Ditto. + * config/i386/driver-i386.cc (host_detect_local_cpu): Support HYGON + c86-4g-m4{4,6,7} processors. + * config/i386/i386-c.cc (ix86_target_macros_internal): Ditto. + * config/i386/i386-options.cc (m_C86_4G_M4): New definition. + (m_C86_4G_M6): Ditto. + (m_C86_4G_M7): Ditto. + (m_C86_4G): Ditto. + (processor_cost_table): Add cost entries for c86-4g-m4{4,6,7}. + * config/i386/i386.cc (ix86_reassociation_width): Add handlings for + PROCESSOR_C86_4G_M{4,6,7}. + * config/i386/i386.h (enum processor_type): Define + PROCESSOR_C86_4G_M{4,6,7}. + (PTA_C86_4G_M4): New define. + (PTA_C86_4G_M6): Ditto. + (PTA_C86_4G_M7): Ditto. + * config/i386/x86-tune-costs.h (c86_4g_m4_memcpy): New stringop_algs. + (c86_4g_m4_cost): New processor_costs. + (c86_4g_m6_cost): Ditto. + (c86_4g_m7_cost): Ditto. + * config/i386/x86-tune-sched.cc (ix86_issue_rate): Handle + PROCESSOR_C86_4G_M{4,6,7}. + (ix86_adjust_cost): Ditto. + * config/i386/x86-tune.def (X86_TUNE_SCHEDULE): Handle m_C86_4G. + (X86_TUNE_PARTIAL_REG_DEPENDENCY): Ditto. + (X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY): Ditto. + (X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY): Ditto. + (X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY): Ditto. + (X86_TUNE_MEMORY_MISMATCH_STALL): Ditto. + (X86_TUNE_FUSE_CMP_AND_BRANCH_32): Ditto. + (X86_TUNE_FUSE_CMP_AND_BRANCH_64): Ditto. + (X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS): Ditto. + (X86_TUNE_USE_LEAVE): Ditto. + (X86_TUNE_PUSH_MEMORY): Ditto. + (X86_TUNE_INTEGER_DFMODE_MOVES): Ditto. + (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Ditto. + (X86_TUNE_USE_SAHF): Ditto. + (X86_TUNE_USE_BT): Ditto. + (X86_TUNE_AVOID_MFENCE): Ditto. + (X86_TUNE_USE_FFREEP): Ditto. + (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Ditto. + (X86_TUNE_SSE_PACKED_SINGLE_INSN_OPTIMAL): Ditto. + (X86_TUNE_SSE_TYPELESS_STORES): Ditto. + (X86_TUNE_SSE_LOAD0_BY_PXOR): Ditto. + (X86_TUNE_USE_GATHER_2PARTS): Ditto. + (X86_TUNE_USE_GATHER_4PARTS): Ditto. + (X86_TUNE_USE_GATHER_8PARTS): Ditto. + (X86_TUNE_AVOID_128FMA_CHAINS): Ditto. + (X86_TUNE_AVOID_256FMA_CHAINS): Ditto. + (X86_TUNE_USE_RCR): Ditto. + (X86_TUNE_AVX256_MOVE_BY_PIECES): Handle m_C86_4G_M{4,6}. + (X86_TUNE_USE_SCATTER_2PARTS): Handle m_C86_4G_M7. + (X86_TUNE_USE_SCATTER_4PARTS): Ditto. + (X86_TUNE_USE_SCATTER_8PARTS): Ditto. + (X86_TUNE_SSE_REDUCTION_PREFER_PSHUF): Ditto. + (X86_TUNE_AVX512_SPLIT_REGS): Ditto. + (X86_TUNE_AVX512_MOVE_BY_PIECES): Ditto. + (X86_TUNE_AVX512_MASKED_EPILOGUES): Ditto. + * doc/extend.texi: Document about hygonfam18h and c86-4g-m{4,6,7}. + * doc/invoke.texi: Document about c86-4g-m{4,6,7}. + * config/i386/c86-4g-m7.md: New file for c86-4g-m7 scheduling model + information. + * config/i386/c86-4g.md: New file for c86-4g-m{4,6} scheduling model + information. + * config/i386/i386.md (cpu attr): Add c86_4g_m{4,6,7}. + (c86-4g.md): New include. + (c86-4g-m7.md): Ditto. + (*cmpixf_i387): Set attr c86_decode. + (*cmpi): Ditto. + (swap): Ditto. + (*swap): Ditto. + (extendhisi2): Ditto. + (floathi2): Ditto. + (floatxf2): Ditto. + (*float2): Ditto. + (*floatdi2_i387): Ditto. + (*anddi_1_bt): Ditto. + (*iordi_1_bts): Ditto. + (*xordi_1_btc): Ditto. + (*): Ditto. + (*btr): Ditto. + (*btsq_imm): Ditto. + (*btrq_imm): Ditto. + (*btcq_imm): Ditto. + (*tzcnt_1): Ditto. + (*tzcnt_1_falsedep): Ditto. + (*bsf_1): Ditto. + (*ctz2_falsedep): Ditto. + (*ctzsi2_zext): Ditto. + (*ctzsi2_zext_falsedep): Ditto. + (bsr_rex64): Ditto. + (bsr_rex64_1): Ditto. + (bsr_rex64_1_zext): Ditto. + (bsr): Ditto. + (bsr_1): Ditto. + (bsr_zext_1): Ditto. + (*bswaphi2_movbe): Ditto. + (*bswaphi2): Ditto. + (bswaphisi2_lowpart): Ditto. + (fpremxf4_i387): Ditto. + (fprem1xf4_i387): Ditto. + (xf2): Ditto. + (sincosxf3): Ditto. + (fptanxf4_i387): Ditto. + (atan2xf3): Ditto. + (fyl2xxf3_i387): Ditto. + (fyl2xp1xf3_i387): Ditto. + (fxtractxf3_i387): Ditto. + (*f2xm1xf2_i387): Ditto. + (fscalexf4_i387): Ditto. + (rintxf2): Ditto. + (*movxi_internal_avx512f): Set attr c86_attr. + (*movoi_internal_avx): Ditto. + (*movti_internal): Ditto. + (*movdi_internal): Ditto. + (*movsi_internal): Ditto. + (*movhi_internal): Ditto. + (*movtf_internal): Ditto. + (*movdf_internal): Ditto. + (*movsf_internal): Ditto. + (*zero_extendsidi2): Ditto. + (sqrtxf2): Ditto. + (3): Ditto. + (*ieee_s3): Ditto. + * config/i386/mmx.md (*mmx_maskmovq): Set attr c86_decode. + (*mmx_maskmovq): Ditto. + (sse_movntq): Set attr c86_attr. + (*mmx_blendps): Ditto. + (mmx_blendvps): Ditto. + (*mmx_pmaddwd): Ditto. + (mmx_pblendvb_v8qi): Ditto. + (mmx_pblendvb_): Ditto. + (sse4_1_v4qiv4hi2): Ditto. + (sse4_1_v2hiv2si2): Ditto. + (sse4_1_v2qiv2si2): Ditto. + (sse4_1_v2qiv2hi2): Ditto. + (*mmx_pinsrd): Ditto. + (*mmx_pinsrw): Ditto. + (*mmx_pinsrb): Ditto. + (*mmx_pextrw): Ditto. + (*mmx_pextrw): Ditto. + (*mmx_pextrw_zext): Ditto. + (*mmx_pextrb): Ditto. + (*mmx_pextrb_zext): Ditto. + (*mmx_pblendw64): Ditto. + (*mmx_pblendw32): Ditto. + (*vec_extractv2si_1): Ditto. + (*vec_extractv2si_1_zext): Ditto. + (*pinsrw): Ditto. + (*pinsrb): Ditto. + (*pextrw): Ditto. + (*pextrw): Ditto. + (*pextrw_zext): Ditto. + (*pextrb): Ditto. + (*pextrb_zext): Ditto. + (*mmx_psadbw): Ditto. + * config/i386/sse.md (ktest): Set attr c86_decode. + (*kortest): Ditto. + (sse_cvtsi2ss): Ditto. + (sse2_cvtsi2sd): Ditto. + (sse2_maskmovdqu): Ditto. + (*_dp): Ditto. + (*_mpsadbw): Ditto. + (pclmulqdq): Ditto. + (conflict): Ditto. + (_blendm): Set attr c86_attr. + (sse2_movnti): Ditto. + (_movnt): Ditto. + (_movnt): Ditto. + (_rcp2): Ditto. + (sse_vmrcpv4sf2): Ditto. + (rcp14): Ditto. + (srcp14): Ditto. + (srcp14_mask): Ditto. + (_sqrt2): Ditto. + (_vmsqrt2): Ditto. + (*_vmsqrt2): Ditto. + (rsqrt14): Ditto. + (rsqrt14): Ditto. + (rsqrt14__mask"): Ditto. + (*3): Ditto. + (ieee_3): Ditto. + (*_vm3): + Ditto. + (_ieee_vm3 + ): Ditto. + (*ieee_3): Ditto. + (avx_hv4df3): Ditto. + (*sse3_haddv2df3): Ditto. + (sse3_hsubv2df3): Ditto. + (*sse3_haddv2df3_low): Ditto. + (*sse3_hsubv2df3_low): Ditto. + (avx_hv8sf3): Ditto. + (sse3_hv4sf3): Ditto. + (*reducep): Ditto. + (reduces): Ditto. + (*_eq3_1): Ditto. + (_andnot3): Ditto. + (*3): Ditto. + (*andnot3): Ditto. + (3): Ditto. + (*tf3): Ditto. + (vec_set_0): Ditto. + (@vec_set_0): Ditto. + (*sse4_1_extractps): Ditto. + (vec_extract): Ditto. + (_align): Ditto. + (avx512bw_pmaddwd512): Ditto. + (*avx2_pmaddw): Ditto. + (*sse2_pmaddwd): Ditto. + (*avx2_3): Ditto. + (*avx512f_3): Ditto. + (*avx512bw_3): Ditto. + (*sse4_1_3): Ditto. + (*v8hi3): Ditto. + (*v16qi3): Ditto. + (*andnot3_mask): Ditto. + (*3): Ditto. + (v1ti3): Ditto. + (_pinsr): Ditto. + (*_vinsert_0): Ditto. + (_vinsert + _1): Ditto. + (vec_set_lo_): Ditto. + (vec_set_hi_): Ditto. + (avx512dq_shuf_64x2_1): Ditto. + (avx512f_shuf_64x2_1): Ditto. + (*avx512f_shuf_64x2_1_1): Ditto. + (avx512vl_shuf_32x4_1): Ditto. + (avx512f_shuf_32x4_1): Ditto. + (*avx512f_shuf_32x4_1_1): Ditto. + (*vec_extract): Ditto. + (*vec_extract_zext): Ditto. + (*vec_extractv16qi_zext): Ditto. + (*vec_extractv4si): Ditto. + (*vec_extractv4si_zext): Ditto. + (*vec_extractv2di_1): Ditto. + (*vec_concatv2si_sse4_1): Ditto. + (vec_concatv2di): Ditto. + (*_uavg3): Ditto. + (*_psadbw): Ditto. + (_movmsk): Ditto. + (*_movmsk_ext): Ditto. + (_pmovmskb): Ditto. + (*_pmovmskb_zext): Ditto. + (*sse2_maskmovdqu): Ditto. + (avx2_phwv16hi3): Ditto. + (ssse3_phwv8hi3): Ditto. + (ssse3_phdv4si3): Ditto. + (avx2_phdv8si3): Ditto. + (avx2_pmaddubsw256): Ditto. + (avx512bw_pmaddubsw512): Ditto. + (ssse3_pmaddubsw128): Ditto. + (_psign3): Ditto. + (ssse3_psign3): Ditto. + (*abs2): Ditto. + (abs2_mask): Ditto. + (abs2_mask): Ditto. + (sse4a_movnt): Ditto. + (sse4a_vmmovnt): Ditto. + (_blend): Ditto. + (_blendv): Ditto. + (sse4_1_blendv): Ditto. + (_movntdqa): Ditto. + (_pblendvb): Ditto. + (sse4_1_pblend): Ditto. + (*avx2_pblend): Ditto. + (avx2_pblendd): Ditto. + (avx2_v16qiv16hi2): Ditto. + (avx512bw_v32qiv32hi2): Ditto. + (sse4_1_v8qiv8hi2): Ditto. + (*sse4_1_v8qiv8hi2_1): Ditto. + (avx512f_v16qiv16si2): Ditto. + (avx2_v8qiv8si2): Ditto. + (*avx2_v8qiv8si2_1): Ditto. + (sse4_1_v4qiv4si2): Ditto. + (*sse4_1_v4qiv4si2_1): Ditto. + (avx512f_v16hiv16si2): Ditto. + (avx2_v8hiv8si2): Ditto. + (sse4_1_v4hiv4si2): Ditto. + (*sse4_1_v4hiv4si2_1): Ditto. + (avx512f_v8qiv8di2): Ditto. + (*avx512f_v8qiv8di2_1): Ditto. + (avx2_v4qiv4di2): Ditto. + (*avx2_v4qiv4di2_1): Ditto. + (sse4_1_v2qiv2di2): Ditto. + (*sse4_1_v2qiv2di2_1): Ditto. + (avx512f_v8hiv8di2): Ditto. + (avx2_v4hiv4di2): Ditto. + (*avx2_v4hiv4di2_1): Ditto. + (sse4_1_v2hiv2di2): Ditto. + (*sse4_1_v2hiv2di2_1): Ditto. + (avx512f_v8siv8di2): Ditto. + (avx2_v4siv4di2): Ditto. + (sse4_1_v2siv2di2): Ditto. + (*sse4_1_v2siv2di2_1): Ditto. + (sse4_1_round): Ditto. + (*sse4_1_round"): Ditto. + (sse4_2_pcmpestri): Ditto. + (sse4_2_pcmpestrm): Ditto. + (sse4_2_pcmpestr_cconly): Ditto. + (sse4_2_pcmpistri): Ditto. + (sse4_2_pcmpistrm): Ditto. + (sse4_2_pcmpistr_cconly): Ditto. + (xop_phaddbw): Ditto. + (xop_phaddbd): Ditto. + (xop_phaddbq): Ditto. + (xop_phaddwd): Ditto. + (xop_phaddwq): Ditto. + (xop_phadddq): Ditto. + (xop_phsubbw): Ditto. + (xop_phsubwd): Ditto. + (xop_phsubdq): Ditto. + (aesenc): Ditto. + (aesenclast): Ditto. + (aesdec): Ditto. + (aesdeclast): Ditto. + (aesimc): Ditto. + (aeskeygenassist): Ditto. + (_permvar): Ditto. + (avx2_perm_1): Ditto. + (_permvar): Ditto. + (avx512f_perm_1): Ditto. + (avx512f_broadcast): Ditto. + (avx_vbroadcastf128_): Ditto. + (avx512vl_broadcast_1): Ditto. + (avx512dq_broadcast_1): Ditto. + (*_vpermi2var3_mask): Ditto. + (_vpermt2var3): Ditto. + (_vpermt2var3_mask): Ditto. + (*avx_vperm2f128_nozero): Ditto. + (vec_set_lo_): Ditto. + (vec_set_hi_): Ditto. + (vec_set_lo_): Ditto. + (vec_set_hi_): Ditto. + (vec_set_lo_v32qi): Ditto. + (_maskload): Ditto. + (_maskstore): Ditto. + (avx_vec_concat): Ditto. + (_compress_mask): Ditto. + (compress_mask): Ditto. + (_compressstore_mask): Ditto. + (compressstore_mask): Ditto. + (expand_mask): Ditto. + (avx512bw_dbpsadbw): Ditto. + (clz2): Ditto. + (vpmadd52v8di): Ditto. + (vpmadd52): Ditto. + (vpmadd52_maskz_1): Ditto. + (vpmadd52_mask): Ditto. + (vaesdec_): Ditto. + (vaesdeclast_): Ditto. + (vaesenc_): Ditto. + (vaesenclast_): Ditto. + +2026-04-29 Pan Li + + * config/riscv/predicates.md: Add ltu to swappable + cmp operator. + * config/riscv/riscv-v.cc (get_swapped_cmp_rtx_code): Handle + the swapped rtx code as well. + +2026-04-29 Jakub Jelinek + + PR middle-end/123635 + * gimple-lower-bitint.cc (bitint_large_huge::finish_arith_overflow): + Move obj_nelts/atype computation before bitint_extended handling. For + bitint_big_endian in the bitint_extended handling use size_zero_node + only for limb_access_type calls, otherwise use + size_int (nelts - obj_nelts) and pass NULL_TREE as first argument to + limb_access calls. + +2026-04-29 Raghesh Aloor + + * tree-vect-slp.cc (vect_slp_linearize_chain): Optional parameter + allow_alt_code added (default true), check added not to follow + MINUS_EXPR, when false. + (vect_slp_check_for_roots): Calls vect_slp_linearize_chain with + parameter allow_alt_code set to false. + 2026-04-28 David Malcolm PR analyzer/124217 diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 9d1459a9cd52..500371a7ade1 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20260429 +20260430 diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 6851725b2b4b..aa40526bd079 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,15 @@ +2026-04-29 Julian Brown + + * c-common.h (c_omp_region_type): Add C_ORT_EXIT_DATA, + C_ORT_OMP_EXIT_DATA. + (c_omp_instantiate_mappers): Add region type parameter. + * c-omp.cc (omp_split_map_kind, omp_join_map_kind, + omp_map_decayed_kind): New functions. + (omp_instantiate_mapper): Add ORT parameter. Implement map kind decay + for instantiated mapper clauses. + (c_omp_instantiate_mappers): Add ORT parameter, pass to + omp_instantiate_mapper. + 2026-04-28 Jakub Jelinek * c-common.cc (c_common_signed_or_unsigned_type): Use diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 305041fb081c..a8edc7f4c450 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,15 @@ +2026-04-29 Julian Brown + + * c-parser.cc (c_parser_omp_target_data): Instantiate mappers for + 'omp target data'. + (c_parser_omp_target_enter_data): Instantiate mappers for 'omp target + enter data'. + (c_parser_omp_target_exit_data): Instantiate mappers for 'omp target + exit data'. + (c_parser_omp_target): Add c_omp_region_type argument to + c_omp_instantiate_mappers call. + * c-tree.h (c_omp_instantiate_mappers): Remove spurious prototype. + 2026-04-28 Jakub Jelinek * c-decl.cc (finish_declspecs) : Implement diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 786cb94b48b0..08f64a95e4e5 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,45 @@ +2026-04-29 Patrick Palka + + PR c++/125035 + * module.cc (merge_key): Add iobj_p and xobj_p bits. + (trees_out::key_mergeable) : Set and stream + merge_key's iobj_p and xobj_p bits. + (check_mergeable_decl) : Compare merge_key's + iobj_p and xobj_p bits with that of the given function. + (trees_in::key_mergeable): Stream merge_key's iobj_p and xobj_p + bits. + +2026-04-29 Patrick Palka + + PR c++/124582 + PR c++/123810 + * module.cc (check_mergeable_decl) : Handle + merging a typedef to an unnamed type with the -freflection + representation. + +2026-04-29 Julian Brown + + * parser.cc (cp_parser_omp_target_data): Instantiate mappers for 'omp + target data'. + (cp_parser_omp_target_enter_data): Instantiate mappers for 'omp target + enter data'. + (cp_parser_omp_target_exit_data): Instantiate mappers for 'omp target + exit data'. + (cp_parser_omp_target): Add c_omp_region_type argument to + c_omp_instantiate_mappers call. + * pt.cc (tsubst_omp_clauses): Instantiate mappers for OMP regions other + than just C_ORT_OMP_TARGET. + (tsubst_expr): Update call to tsubst_omp_clauses for OMP_TARGET_UPDATE, + OMP_TARGET_ENTER_DATA, OMP_TARGET_EXIT_DATA stanza. + * semantics.cc (cxx_omp_map_array_section): Avoid calling + build_array_ref for non-array/non-pointer bases (error reported + already). + +2026-04-29 Jakub Jelinek + + * reflect.cc (compare_reflection): For REFLECT_BASE use lhs == rhs rather + than cp_tree_equal. + 2026-04-28 Marek Polacek PR c++/124756 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6fc08d9ccedb..e62e800ec3d7 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2026-04-29 Andre Vehreschild + + PR fortran/125021 + * coarray.cc (check_add_new_comp_handle_array): Prefix internal + symbols by two underscores. + (create_get_callback): Same. + (create_allocated_callback): Same. + (create_send_callback): Same. + 2026-04-21 Paul Thomas PR fortran/117077 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5e7e1f3056b0..c05e82cc90a8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,134 @@ +2026-04-29 Pengxuan Zheng + + PR tree-optimization/113379 + * gcc.dg/tree-ssa/pr113379.c: New test. + +2026-04-29 Andrew Pinski + + * g++.dg/tree-ssa/cond-add-vec-1.C: Add a check to make sure COND_ADD + is not there either. + * g++.dg/tree-ssa/cond-add-vec-2.C: Change the check for VEC_COND_EXPR + to allow for COND_ADD. + +2026-04-29 Wilco Dijkstra + + * gcc.target/aarch64/pr123791.c: Add -Wno-deprecated. + * gcc.target/aarch64/pr78733.c: Likewise. + * gcc.target/aarch64/pr79041-2.c: Likewise. + * gcc.target/aarch64/pr94530.c: Likewise. + +2026-04-29 Richard Biener + + PR tree-optimization/125080 + * gcc.dg/torture/pr125080.c: New testcase. + +2026-04-29 Patrick Palka + + PR c++/125035 + * g++.dg/modules/merge-22.h: New test. + * g++.dg/modules/merge-22_a.H: New test. + * g++.dg/modules/merge-22_b.C: New test. + +2026-04-29 Patrick Palka + + PR c++/124582 + PR c++/123810 + * g++.dg/modules/anon-4.h: New test. + * g++.dg/modules/anon-4_a.H: New test. + * g++.dg/modules/anon-4_b.C: New test. + +2026-04-29 Andre Vehreschild + + PR fortran/125021 + * gfortran.dg/coarray/pr125021.f90: New test. + +2026-04-29 Xin Liu + Zhaoling Bao + + * gcc.target/i386/builtin_target.c: Add handling for HYGON CPUs by + validating the vendor and invoking HYGON-specific CPU detection. + * gcc.target/i386/funcspec-56.inc: Test function target attribute on + {arch,tune}=c86-4g-m{4,6,7}. + * g++.target/i386/mv33.C: New test. + +2026-04-29 Julian Brown + + * c-c++-common/gomp/declare-mapper-15.c: New test. + * c-c++-common/gomp/declare-mapper-16.c: New test. + * g++.dg/gomp/declare-mapper-1.C: Adjust expected scan output. + +2026-04-29 Pan Li + + * gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u16.c: Add asm check + for vmsgtu.vx. + * gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u32.c: Ditto. + * gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u64.c: Ditto. + * gcc.target/riscv/rvv/autovec/vx_vf/vx-1-u8.c: Ditto. + * gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u16.c: Ditto. + * gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u32.c: Ditto. + * gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u64.c: Ditto. + * gcc.target/riscv/rvv/autovec/vx_vf/vx-2-u8.c: Ditto. + * gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u16.c: Ditto. + * gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u32.c: Ditto. + * gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u64.c: Ditto. + * gcc.target/riscv/rvv/autovec/vx_vf/vx-3-u8.c: Ditto. + * gcc.target/riscv/rvv/autovec/vx_vf/vx_binary.h: Add test + helper macro. + * gcc.target/riscv/rvv/autovec/vx_vf/vx_binary_data.h: Add test + data for run test. + * gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsgtu-run-1-u16.c: New test. + * gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsgtu-run-1-u32.c: New test. + * gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsgtu-run-1-u64.c: New test. + * gcc.target/riscv/rvv/autovec/vx_vf/vx_vmsgtu-run-1-u8.c: New test. + +2026-04-29 Raghesh Aloor + + * gcc.dg/vect/bb-slp-sum-of-diffs.c: New test. + +2026-04-29 Jakub Jelinek + + * g++.dg/reflect/compare12.C: New test. + +2026-04-29 Jakub Jelinek + + * g++.dg/plugin/uglification_plugin.cc (plugin_check_tree): Walk + REQUIRES_EXPR_PARMS of REQUIRES_EXPR. + (plugin_walk_decl): Walk TEMPLATE_PARMS_CONSTRAINTS using + plugin_check_tree. Walk DECL_INITIAL of CONCEPT_DECL as well. + * g++.dg/plugin/uglification.C: Add tests for non-uglified names + in lambda parameters, lambda captures and requires expressions. + +2026-04-29 Jakub Jelinek + + * g++.dg/plugin/plugin.exp: Set PLUGIN_DEFAULT_REPO. Add + set*module*exports* to plugin_test_list. Remove *.gcm files + at the start and end. + * g++.dg/plugin/std_module_exports_plugin.cc: New file. + * g++.dg/plugin/std-module-exports-c++20.C: New test. + * g++.dg/plugin/std-module-exports-c++23.C: New test. + * g++.dg/plugin/std-module-exports-c++26.C: New test. + +2026-04-29 Jakub Jelinek + + * g++.dg/plugin/plugin.exp (plugin_test_list): Add uglification tests. + * g++.dg/plugin/uglification_plugin.cc: New file. + * g++.dg/plugin/uglification.C: New test. + * g++.dg/plugin/uglification-c++98.C: New test. + * g++.dg/plugin/uglification-c++11.C: New test. + * g++.dg/plugin/uglification-c++14.C: New test. + * g++.dg/plugin/uglification-c++17.C: New test. + * g++.dg/plugin/uglification-c++20.C: New test. + * g++.dg/plugin/uglification-c++23.C: New test. + * g++.dg/plugin/uglification-c++26.C: New test. + +2026-04-29 Alexandre Oliva + + * gcc.dg/shouldfail-abort.c: New. + * gcc.dg/shouldfail-exit-neg.c: New. + * gcc.dg/shouldfail-exit-pos.c: New. + * gcc.dg/shouldfail-return-neg.c: New. + * gcc.dg/shouldfail-return-pos.c: New. + 2026-04-28 David Malcolm PR analyzer/124217 diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog index a58e7de581be..0fdc7f57e007 100644 --- a/libsanitizer/ChangeLog +++ b/libsanitizer/ChangeLog @@ -1,3 +1,8 @@ +2026-04-29 Jakub Jelinek + + * sanitizer_common/sanitizer_platform_limits_posix.cpp: Cherry picked + from LLVM commit 3dc4fd6dd41100f051a63642f449b16324389c96. + 2026-04-28 Maximilian Ciric * configure.tgt: Enable HWASAN support for RISC-V target. diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 0a9136386ba9..83250ce01b88 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,30 @@ +2026-04-29 Tomasz KamiƄski + + * testsuite/29_atomics/headers/stdatomic.h/macros.cc: + Copy of ../atomic/macros.cc with header include changed. + +2026-04-29 Alexandre Oliva + + PR libstdc++/124657 + * include/experimental/bits/simd_x86.h + (__is_x86_ps<_Tp>): New. Replace is_same_v<_Tp, float> with it. + (__is_x86_pd<_Tp>): New. Replace is_same_v<_Tp, double> with it. + +2026-04-29 Alexandre Oliva + + PR libstdc++/124657 + * include/experimental/bits/simd.h (__intrinsic_type::type): + Map long double to double. + +2026-04-29 Alexandre Oliva + + * include/std/limits (__glibcxx_integral_traps): Set to + false. Update comments. + (numeric_limits::traps): Drop comments. + * config/cpu/arm/cpu_defines.h: Remove. + * config/cpu/powerpc/cpu_defines.h: Likewise. + * configure.host (cpu_defines_dir): Adjust. + 2026-04-28 Jonathan Wakely * doc/xml/manual/status_cxx2023.xml: Update status table. From a3a46ae2204a5355e649648dcda00c58a39e5075 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Kami=C5=84ski?= Date: Tue, 13 Jan 2026 10:35:42 +0100 Subject: [PATCH 010/453] libstdc++: Rework P0952 generate_cannonical tests. This expands on the changes from test fix r16-6710-gda5a5c55284969: * test name now reflect the size of the generator range, * extracted code repeated between tests was exctracted to run_generator, * expanded non-power of two ranges types to cover all IEC559 floating point, * select values to test based on the size of mantisa instead of type, handling different long double representations. The test now cover the cases, where mutliple value greater than one are produced (and skipped) in the row. To avoid test running infinite loop, the number of skips per element is limited by max_skips_per_elem template parameter of run_generator. The values checked in test_2p31m1 differs from their old test03 counterpart, as we now request mantissa - 5 bits for each type (48bits for ieee64) instead of previously hardoced 30bits. libstdc++-v3/ChangeLog: * testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc: Updated tests. Reviewed-by: Nathan Myers Reviewed-by: Jonathan Wakely --- .../operators/gencanon.cc | 328 +++++++++--------- 1 file changed, 166 insertions(+), 162 deletions(-) diff --git a/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc b/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc index 7ef81c656934..ae93ec13b7a3 100644 --- a/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc +++ b/libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc @@ -15,16 +15,11 @@ struct local_rng : std::mt19937 static constexpr std::uint64_t min() { return 0; } static constexpr std::uint64_t max() { return max_val; } std::uint64_t operator()() - { return static_cast(*this)() % (max() + 1); } + { return std::mt19937::operator()() % (max() + 1); } + local_rng(std::mt19937 const& arg) : std::mt19937(arg) {} }; -// Verify P0952R2 implementation requiring a second round-trip -// if first yields exactly 1. In this test, the RNG delivering -// 32 bits per call is seeded such that this occurs once on the -// sixth iteration for float, and not at all for double. -// However, each double iteration requires two calls to the RNG. - template int ifloor(T t) { return static_cast(std::floor(t)); } @@ -34,39 +29,40 @@ int ifloor(__float128 t) { return static_cast(t); } #endif -template -void -test01(RNG& rng, RNG& rng2, int& skips) +// Verify P0952R2 implementation requiring a second round-trip +// if first yields exactly 1. +template +int run_generator(const RNG& rng, int& deviation, int& max, int& rms, int& zeros) { - constexpr size_t mantissa = std::numeric_limits::digits; - constexpr size_t call_per_elem = (mantissa + 31) / 32; - - const auto size = 1000000, buckets = 100; + constexpr int iters = 1000000, buckets = 100; std::array histo{}; - int zero = 0; - for (auto i = 0; i != size; ++i) { - T sample = std::generate_canonical(rng); + + RNG rng1(rng), rng2(rng); + int skips = 0; + for (auto i = 0; i != iters; ++i) { + T sample = std::generate_canonical(rng1); VERIFY(sample >= T(0.0)); VERIFY(sample < T(1.0)); // libstdc++/64351 if (sample == T(0.0)) { - ++zero; + ++zeros; } auto bucket = ifloor(sample * buckets); ++histo[bucket]; rng2.discard(call_per_elem); - if (rng != rng2) { - ++skips; + for (int j = 0; j < max_skips_per_elem; ++j) { + if (rng1 == rng2) + break; rng2.discard(call_per_elem); - VERIFY(rng == rng2); + ++skips; } + VERIFY(rng1 == rng2); } - if (!std::numeric_limits::is_iec559) - return; - - int deviation = 0, max = 0, rms = 0, devsquare = 0; + int devsquare = 0; + const int expected = iters / buckets; for (int i = 0; i < buckets; ++i) { - const auto expected = size / buckets; auto count = histo[i]; auto diff = count - expected; if (diff < 0) diff = -diff; @@ -76,26 +72,51 @@ test01(RNG& rng, RNG& rng2, int& skips) } rms = std::sqrt(devsquare); + return skips; +} + +// In this test, the RNG delivering 32 bits per call is seeded +// such that this occurs once on the sixth iteration for float, +// and not at all for double and other types requiring two +// calls to the RNG. +template +void +test_2p32(const std::mt19937& rng) +{ + if (!std::numeric_limits::is_iec559) + return; + + constexpr size_t mantissa = std::numeric_limits::digits; + constexpr size_t call_per_elem = (mantissa + 31) / 32; + + int deviation = 0, max = 0, rms = 0, zeros = 0; + int skips = run_generator + (rng, deviation, max, rms, zeros); + if (call_per_elem == 1) + VERIFY(skips == 1); + else // would require constitutive elements with all bits set + VERIFY(skips == 0); + switch (mantissa) { case 24: // ieee32 VERIFY(deviation == 7032); VERIFY(max == 276); VERIFY(rms == 906); - VERIFY(zero == 0); + VERIFY(zeros == 0); break; case 53: // ieee64 case 64: // ieee80 VERIFY(deviation == 7650); VERIFY(max == 259); VERIFY(rms == 975); - VERIFY(zero == 0); + VERIFY(zeros == 0); break; case 113: // ieee128 VERIFY(deviation == 9086); VERIFY(max == 290); VERIFY(rms == 1142); - VERIFY(zero == 0); + VERIFY(zeros == 0); break; default: VERIFY(false); @@ -103,158 +124,141 @@ test01(RNG& rng, RNG& rng2, int& skips) } } -// This one is for use with local_rng -template +// Uses a generate that emits range of size 10^6. +// The elements are multiplied and then dividided, +// skips are more common. +template void -test02(RNG& rng, RNG& rng2, - int& deviation, int& max, int& rms, int& zero, int& skips) +test_10p6(const std::mt19937& rng) { - const auto size = 1000000, buckets = 100; - std::array histo{}; - for (auto i = 0; i != size; ++i) { - T sample = std::generate_canonical(rng); - VERIFY(sample >= T(0.0)); - VERIFY(sample < T(1.0)); // libstdc++/64351 - if (sample == T(0.0)) { - ++zero; - } - auto bucket = static_cast(std::floor(sample * buckets)); - ++histo[bucket]; - rng2.discard(2); - if (rng != rng2) { - ++skips; - rng2.discard(2); - VERIFY(rng == rng2); - } - } - int devsquare = 0; - for (int i = 0; i < buckets; ++i) { - const auto expected = size / buckets; - auto count = histo[i]; - auto diff = count - expected; - if (diff < 0) diff = -diff; - deviation += diff; - devsquare += diff * diff; - if (diff > max) max = diff; + if (!std::numeric_limits::is_iec559) + return; + + constexpr size_t mantissa = std::numeric_limits::digits; + static_assert(mantissa < 120); + constexpr size_t call_per_elem = (mantissa / 20) + 1; + const local_rng<999999ULL> lrng{rng}; + + int deviation = 0, max = 0, rms = 0, zeros = 0; + int skips = run_generator + (lrng, deviation, max, rms, zeros); + + switch (mantissa) + { + case 24: // ieee32 + VERIFY(skips == 18); + VERIFY(deviation == 8146); + VERIFY(max == 250); + VERIFY(rms == 1021); + VERIFY(zeros == 0); + break; + case 53: // ieee64 + VERIFY(skips == 211); + VERIFY(deviation == 7492); + VERIFY(max == 235); + VERIFY(rms == 921); + VERIFY(zeros == 0); + break; + case 64: // ieee80 + VERIFY(skips == 1); + VERIFY(deviation == 7774); + VERIFY(max == 250); + VERIFY(rms == 958); + VERIFY(zeros == 0); + break; + case 113: // ieee128 + VERIFY(skips == 3074); + VERIFY(deviation == 7568); + VERIFY(max == 282); + VERIFY(rms == 1001); + VERIFY(zeros == 0); + break; + default: + VERIFY(false); + break; } - rms = std::sqrt(devsquare); } -// This one is for the edge-case local_rng. It takes a bit count -// to use that is smaller than the floating point mantissa's. -template +// Uses a generate that emits range of size 2^31-1. +// It takes a bit count to use that is smaller than the floating point mantissa's. +template void -test03(RNG& rng, RNG& rng2, - int& deviation, int& max, int& rms, int& zero, int& skips) +test_2p31m1(const std::mt19937& rng) { - const auto size = 1000000, buckets = 100; - std::array histo{}; - for (auto i = 0; i != size; ++i) { - T sample = std::generate_canonical(rng); - VERIFY(sample >= T(0.0)); - VERIFY(sample < T(1.0)); // libstdc++/64351 - if (sample == T(0.0)) { - ++zero; - } - auto bucket = static_cast(std::floor(sample * buckets)); - ++histo[bucket]; - rng2.discard(2); - if (rng != rng2) { - ++skips; - rng2.discard(2); - VERIFY(rng == rng2); - } - } - int devsquare = 0; - for (int i = 0; i < buckets; ++i) { - const auto expected = size / buckets; - auto count = histo[i]; - auto diff = count - expected; - if (diff < 0) diff = -diff; - deviation += diff; - devsquare += diff * diff; - if (diff > max) max = diff; + if (!std::numeric_limits::is_iec559) + return; + + constexpr size_t mantissa = std::numeric_limits::digits; + constexpr size_t bits = mantissa - 5; + static_assert(bits < 124); + constexpr size_t call_per_elem = (bits / 31) + 1; + const local_rng<0x07ffffffeULL> lrng{rng}; + + int deviation = 0, max = 0, rms = 0, zeros = 0; + int skips = run_generator + (lrng, deviation, max, rms, zeros); + + switch (mantissa) + { + case 24: // ieee32 + VERIFY(skips == 215); + VERIFY(deviation == 7624); + VERIFY(max == 217); + VERIFY(rms == 933); + VERIFY(zeros == 1); + break; + case 53: // ieee64 + VERIFY(skips == 62); + VERIFY(deviation == 7698); + VERIFY(max == 234); + VERIFY(rms == 937); + VERIFY(zeros == 0); + break; + case 64: // ieee80 + VERIFY(skips == 143342); + VERIFY(deviation == 7788); + VERIFY(max == 296); + VERIFY(rms == 977); + VERIFY(zeros == 0); + break; + case 113: // ieee128 + VERIFY(skips == 8); + VERIFY(deviation == 8824); + VERIFY(max == 334); + VERIFY(rms == 1086); + VERIFY(zeros == 0); + break; + default: + VERIFY(false); + break; } - rms = std::sqrt(devsquare); } -void -test00() +int main() { std::mt19937 rng(8890); std::seed_seq sequence{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; rng.seed(sequence); rng.discard(12 * 629143); + + test_2p32(rng); + test_10p6(rng); + test_2p31m1(rng); + + test_2p32(rng); + test_10p6(rng); + test_2p31m1(rng); + + test_2p32(rng); + test_10p6(rng); + test_2p31m1(rng); - { // float - int skips{}; - auto rng2{rng}; - auto rng3{rng}; - test01(rng2, rng3, skips); - VERIFY(skips == 1); - } - { // double - int skips{}; - auto rng2{rng}; - auto rng3{rng}; - test01(rng2, rng3, skips); - VERIFY(skips == 0); - } - { // long double -#if __LDBL_MANT_DIG__ != 106 // disable this for IBM double double - int skips{}; - auto rng2{rng}; - auto rng3{rng}; - test01(rng2, rng3, skips); - VERIFY(skips == 0); -#endif - } #ifndef _GLIBCXX_GENERATE_CANONICAL_STRICT # ifdef __SIZEOF_FLOAT128__ - { - int skips{}; - auto rng2{rng}; - auto rng3{rng}; - test01<__float128>(rng2, rng3, skips); - VERIFY(skips == 0); - } + test_2p32<__float128>(rng); + test_10p6<__float128>(rng); + test_2p31m1<__float128>(rng); # endif #endif - - { // local RNG, returns [0..999'999) - int deviation{}, max{}, rms{}, zero{}, skips{}; - local_rng<999999ULL> rng2{rng}; - local_rng<999999ULL> rng3{rng}; - test02(rng2, rng3, deviation, max, rms, zero, skips); - - if (std::numeric_limits::is_iec559) - { - VERIFY(deviation == 8146); - VERIFY(max == 250); - VERIFY(rms == 1021); - VERIFY(zero == 0); - } - VERIFY(skips == 18); - } - - { // local RNG, returns [0..0x0'7fff'fffe) - int deviation{}, max{}, rms{}, zero{}, skips{}; - local_rng<0x07ffffffeULL> rng2{rng}; - local_rng<0x07ffffffeULL> rng3{rng}; - test03(rng2, rng3, deviation, max, rms, zero, skips); - - if (std::numeric_limits::is_iec559) - { - VERIFY(deviation == 7820); - VERIFY(max == 240); - VERIFY(rms == 950); - VERIFY(zero == 0); - } - VERIFY(skips == 0); - } } -int main() -{ - test00(); -} From efeeb755192cb03e5b24b44cb4fb563c11626a8e Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Tue, 28 Apr 2026 11:00:38 +0200 Subject: [PATCH 011/453] [x86] override vector_costs::better_main_loop_than_p This overrides vector_costs::better_main_loop_than_p to avoid regressing gcc.target/i386/vect-partial-vectors-2.c with --param ix86-vect-compare-costs=1. As the user (or a tuning model) asks for masked epilogs the vectorizer considers to mask the main loop in case it effectively works as a standalone vector epilog due to known small number of iterations of the loop. While the generic cost compare rightfully figures masking of AVX is more expensive than not masking with SSE it does not consider the cost of the epilog. This compensates with a x86 specific heuristic that prefers the masked loop if the loop cannot be vectorized with a non-masked main loop and at most a single vector epilog plus a single scalar epilog iteration. This is a reasonable heuristic for x86 and a small number of iterations as icache footprint matters here, so considering the possibility of 3 vector epilogs and 1 scalar iteration does not look profitable. Unless testcases will prove to us otherwise. I'm not sure if it makes sense to preserve --param ix86-vect-compare-costs=0 in the end, if people think so I'll duplicate the testcase with both modes explicitly specified. * tree-vectorizer.h (vector_costs::vinfo): New accessor. * config/i386/i386.cc (ix86_vector_costs::better_main_loop_than_p): Prefer a masked main loop if we can elide enough of (vector) epilog loop iterations. --- gcc/config/i386/i386.cc | 23 +++++++++++++++++++++++ gcc/tree-vectorizer.h | 3 +++ 2 files changed, 26 insertions(+) diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc index cfec6845c168..b92338bc6dd0 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -26128,6 +26128,7 @@ class ix86_vector_costs : public vector_costs tree vectype, int misalign, vect_cost_model_location where) override; void finish_cost (const vector_costs *) override; + bool better_main_loop_than_p (const vector_costs *) const override; private: @@ -26987,6 +26988,28 @@ ix86_vector_costs::finish_cost (const vector_costs *scalar_costs) vector_costs::finish_cost (scalar_costs); } +/* Return true if THIS should be preferred over OTHER as main vector loop. */ + +bool +ix86_vector_costs::better_main_loop_than_p (const vector_costs *other) const +{ + loop_vec_info this_loop_vinfo = as_a (this->vinfo ()); + loop_vec_info other_loop_vinfo = as_a (other->vinfo ()); + + /* If the other loop is masked it does not need an epilog. Prefer that + if the current loop cannot be vectorized fully with a vector + epilogs with at most one scalar iteration left. */ + if (LOOP_VINFO_NITERS_KNOWN_P (this_loop_vinfo) + && LOOP_VINFO_USING_PARTIAL_VECTORS_P (other_loop_vinfo) + && known_gt (LOOP_VINFO_VECT_FACTOR (other_loop_vinfo), + LOOP_VINFO_INT_NITERS (this_loop_vinfo)) + && (popcount_hwi (LOOP_VINFO_INT_NITERS (this_loop_vinfo) & ~1) + > (param_vect_epilogues_nomask != 0))) + return false; + + return vector_costs::better_main_loop_than_p (other); +} + /* Validate target specific memory model bits in VAL. */ static unsigned HOST_WIDE_INT diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index c01b17b3ee69..de50ed3277c4 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -1804,8 +1804,11 @@ class vector_costs unsigned int epilogue_cost () const; unsigned int outside_cost () const; unsigned int total_cost () const; + unsigned int suggested_unroll_factor () const; machine_mode suggested_epilogue_mode (int &masked) const; + + vec_info *vinfo () const { return m_vinfo; } bool costing_for_scalar () const { return m_costing_for_scalar; } protected: From bab20a370641484fffa5ac5bb30b7d19f5d3fe92 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Tue, 28 Apr 2026 14:55:04 +0200 Subject: [PATCH 012/453] [x86] override vector_costs::better_epilogue_loop_than_p The following resolves the gcc.target/i386/vect-epilogues-3.c failure when --param ix86-vect-compare-costs=1 is specified. When the target requests multiple epilogues to be used and the new candidate is the epilogue of choice of the currently prevailing epilogue keep that. But avoid doing so if the new candidate uses a vectorization factor of one which should be an optimal vector epilog. This avoids regressing gcc.dg/vect/costmodel/x86_64/costmodel-pr122573.c * config/i386/i386.cc (ix86_vector_costs::better_epilogue_loop_than_p): New. If the other loop suggests this as epilog prefer other. --- gcc/config/i386/i386.cc | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc index b92338bc6dd0..c11da783c8cf 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -26129,6 +26129,8 @@ class ix86_vector_costs : public vector_costs vect_cost_model_location where) override; void finish_cost (const vector_costs *) override; bool better_main_loop_than_p (const vector_costs *) const override; + bool better_epilogue_loop_than_p (const vector_costs *other, + loop_vec_info main_loop) const; private: @@ -27010,6 +27012,25 @@ ix86_vector_costs::better_main_loop_than_p (const vector_costs *other) const return vector_costs::better_main_loop_than_p (other); } +/* Return true if THIS should be preferred over OTHER as epilog vector + loop when vectorizing MAIN_LOOP. */ + +bool +ix86_vector_costs::better_epilogue_loop_than_p (const vector_costs *other, + loop_vec_info main_loop) const +{ + loop_vec_info this_loop_info = as_a (this->vinfo ()); + /* The x86 target allows for multiple vector epilogues, if THIS is + the suggested epilog mode of OTHER then keep the latter unless + THIS has a VF of one which means no further epilog needed. */ + int tem; + if (known_gt (LOOP_VINFO_VECT_FACTOR (this_loop_info), 1U) + && (GET_MODE_SIZE (other->suggested_epilogue_mode (tem)) + == GET_MODE_SIZE (this_loop_info->vector_mode))) + return false; + return vector_costs::better_epilogue_loop_than_p (other, main_loop); +} + /* Validate target specific memory model bits in VAL. */ static unsigned HOST_WIDE_INT From cc1ca3c60f20621565dffa6c64a5105c10e8b894 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Tue, 28 Apr 2026 15:44:41 +0200 Subject: [PATCH 013/453] [x86] Adjust gcc.target/i386/vect-strided-?.c for cost compare With cost comparison and MMX-with-SSE vector width available we prefer to use V2SImode over V4SImode with shuffles, rightfully so I think. The following adds variants with explicit cost compare enabled and disabled and adjusts the cost comparison variant accordingly. * gcc.target/i386/vect-strided-1.c: Disable vector cost comparison. * gcc.target/i386/vect-strided-2.c: Likewise. * gcc.target/i386/vect-strided-3.c: Likewise. * gcc.target/i386/vect-strided-4.c: Likewise. * gcc.target/i386/vect-strided-1b.c: Copy of gcc.target/i386/vect-strided-1.c, enable vector cost comparison and adjust expected code generation. * gcc.target/i386/vect-strided-2b.c: Likewise. * gcc.target/i386/vect-strided-3b.c: Likewise. * gcc.target/i386/vect-strided-4b.c: Likewise. --- .../gcc.target/i386/vect-strided-1.c | 2 +- .../gcc.target/i386/vect-strided-1b.c | 23 +++++++++++++++++++ .../gcc.target/i386/vect-strided-2.c | 2 +- .../gcc.target/i386/vect-strided-2b.c | 17 ++++++++++++++ .../gcc.target/i386/vect-strided-3.c | 2 +- .../gcc.target/i386/vect-strided-3b.c | 20 ++++++++++++++++ .../gcc.target/i386/vect-strided-4.c | 2 +- .../gcc.target/i386/vect-strided-4b.c | 19 +++++++++++++++ 8 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/vect-strided-1b.c create mode 100644 gcc/testsuite/gcc.target/i386/vect-strided-2b.c create mode 100644 gcc/testsuite/gcc.target/i386/vect-strided-3b.c create mode 100644 gcc/testsuite/gcc.target/i386/vect-strided-4b.c diff --git a/gcc/testsuite/gcc.target/i386/vect-strided-1.c b/gcc/testsuite/gcc.target/i386/vect-strided-1.c index db4a06711f11..8e232540bd44 100644 --- a/gcc/testsuite/gcc.target/i386/vect-strided-1.c +++ b/gcc/testsuite/gcc.target/i386/vect-strided-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -msse2 -mno-avx" } */ +/* { dg-options "-O2 -msse2 -mno-avx --param ix86-vect-compare-costs=0" } */ void foo (int * __restrict a, int *b, int s) { diff --git a/gcc/testsuite/gcc.target/i386/vect-strided-1b.c b/gcc/testsuite/gcc.target/i386/vect-strided-1b.c new file mode 100644 index 000000000000..6f173eaea5c7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vect-strided-1b.c @@ -0,0 +1,23 @@ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-O2 -msse2 -mno-avx --param ix86-vect-compare-costs=1" } */ + +void foo (int * __restrict a, int *b, int s) +{ + for (int i = 0; i < 1024; ++i) + { + a[8*i+0] = b[s*i+0]; + a[8*i+1] = b[s*i+1]; + a[8*i+2] = b[s*i+2]; + a[8*i+3] = b[s*i+3]; + a[8*i+4] = b[s*i+4]; + a[8*i+5] = b[s*i+5]; + a[8*i+6] = b[s*i+4]; + a[8*i+7] = b[s*i+5]; + } +} + +/* Three two-element loads, four two-element stores. No wider loads + or permutes. */ +/* { dg-final { scan-assembler-times "movq" 7 } } */ +/* { dg-final { scan-assembler-times "movhps" 0 } } */ +/* { dg-final { scan-assembler-times "movups" 0 } } */ diff --git a/gcc/testsuite/gcc.target/i386/vect-strided-2.c b/gcc/testsuite/gcc.target/i386/vect-strided-2.c index 6fd64e28cf0d..67aa3917c4e4 100644 --- a/gcc/testsuite/gcc.target/i386/vect-strided-2.c +++ b/gcc/testsuite/gcc.target/i386/vect-strided-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -msse2 -mno-avx" } */ +/* { dg-options "-O2 -msse2 -mno-avx --param ix86-vect-compare-costs=0" } */ void foo (int * __restrict a, int *b, int s) { diff --git a/gcc/testsuite/gcc.target/i386/vect-strided-2b.c b/gcc/testsuite/gcc.target/i386/vect-strided-2b.c new file mode 100644 index 000000000000..9eabfbb082b7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vect-strided-2b.c @@ -0,0 +1,17 @@ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-O2 -msse2 -mno-avx --param ix86-vect-compare-costs=1" } */ + +void foo (int * __restrict a, int *b, int s) +{ + for (int i = 0; i < 1024; ++i) + { + a[4*i+0] = b[s*i+0]; + a[4*i+1] = b[s*i+1]; + a[4*i+2] = b[s*i+0]; + a[4*i+3] = b[s*i+1]; + } +} + +/* One two-element load, two two-element stores. */ +/* { dg-final { scan-assembler-times "movq" 3 } } */ +/* { dg-final { scan-assembler-times "movups" 0 } } */ diff --git a/gcc/testsuite/gcc.target/i386/vect-strided-3.c b/gcc/testsuite/gcc.target/i386/vect-strided-3.c index f9c54a6f7159..d08d5836a7ad 100644 --- a/gcc/testsuite/gcc.target/i386/vect-strided-3.c +++ b/gcc/testsuite/gcc.target/i386/vect-strided-3.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -msse2 -mno-sse4 -fno-tree-slp-vectorize" } */ +/* { dg-options "-O2 -msse2 -mno-sse4 -fno-tree-slp-vectorize --param ix86-vect-compare-costs=0" } */ void foo (int * __restrict a, int *b, int s) { diff --git a/gcc/testsuite/gcc.target/i386/vect-strided-3b.c b/gcc/testsuite/gcc.target/i386/vect-strided-3b.c new file mode 100644 index 000000000000..829fb0ccd39a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vect-strided-3b.c @@ -0,0 +1,20 @@ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-O2 -msse2 -mno-sse4 -fno-tree-slp-vectorize --param ix86-vect-compare-costs=1" } */ + +void foo (int * __restrict a, int *b, int s) +{ + if (s >= 6) + for (int i = 0; i < 1024; ++i) + { + a[s*i+0] = b[4*i+0]; + a[s*i+1] = b[4*i+1]; + a[s*i+2] = b[4*i+2]; + a[s*i+3] = b[4*i+3]; + a[s*i+4] = b[4*i+0]; + a[s*i+5] = b[4*i+1]; + } +} + +/* The vectorizer generates 3 uint64 stores and two uint64 loads. */ +/* { dg-final { scan-assembler-times "movq" 5 } } */ +/* { dg-final { scan-assembler-times "movhps" 0 } } */ diff --git a/gcc/testsuite/gcc.target/i386/vect-strided-4.c b/gcc/testsuite/gcc.target/i386/vect-strided-4.c index 3fb9f07886e3..37f6e72c0a94 100644 --- a/gcc/testsuite/gcc.target/i386/vect-strided-4.c +++ b/gcc/testsuite/gcc.target/i386/vect-strided-4.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -msse4.2 -mno-avx -fno-tree-slp-vectorize" } */ +/* { dg-options "-O2 -msse4.2 -mno-avx -fno-tree-slp-vectorize --param ix86-vect-compare-costs=0" } */ void foo (int * __restrict a, int * __restrict b, int *c, int s) { diff --git a/gcc/testsuite/gcc.target/i386/vect-strided-4b.c b/gcc/testsuite/gcc.target/i386/vect-strided-4b.c new file mode 100644 index 000000000000..3183a5c53859 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vect-strided-4b.c @@ -0,0 +1,19 @@ +/* { dg-do compile { target { ! ia32 } } } */ +/* { dg-options "-O2 -msse4.2 -mno-avx -fno-tree-slp-vectorize --param ix86-vect-compare-costs=1" } */ + +void foo (int * __restrict a, int * __restrict b, int *c, int s) +{ + if (s >= 2) + for (int i = 0; i < 1024; ++i) + { + a[s*i+0] = c[4*i+0]; + a[s*i+1] = c[4*i+1]; + b[s*i+0] = c[4*i+2]; + b[s*i+1] = c[4*i+3]; + } +} + +/* Vectorization factor two, two two-element stores using movq + and two two-element stores to b via movq. One reg-reg copy with movq. */ +/* { dg-final { scan-assembler-times "movq\[^\r\n\]+\\\(" 4 } } */ +/* { dg-final { scan-assembler-times "pextrq" 0 } } */ From 5c09804150b2da7c18751905e7f1a23b7357bc06 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 29 Apr 2026 11:07:06 +0200 Subject: [PATCH 014/453] [x86] Adjust gcc.target/i386/vect-epilogues-2.c and vect-pr113078.c The following adjusts two very similar testcases that when vector cost comparison is enabled and with generic tuning, chose to use SSE vector size for the vector epilogue as that reduces the possible iterations through the scalar epilogue following that and thus speeds up the overall epilogue processing for a majority of cases. I have chosen to duplicate the testcases for --param ix86-vect-compare-costs=0 and =1. * gcc.target/i386/vect-epilogues-2.c: Add --param ix86-vect-compare-costs=0. * gcc.target/i386/vect-epilogues-2b.c: Duplicate from gcc.target/i386/vect-epilogues-2.c, add --param ix86-vect-compare-costs=1 and adjust expected vectorization. * gcc.target/i386/vect-pr113078.c: Likewise. * gcc.target/i386/vect-pr113078b.c: Likewise. --- .../gcc.target/i386/vect-epilogues-2.c | 2 +- .../gcc.target/i386/vect-epilogues-2b.c | 15 +++++++++++++++ gcc/testsuite/gcc.target/i386/vect-pr113078.c | 2 +- gcc/testsuite/gcc.target/i386/vect-pr113078b.c | 18 ++++++++++++++++++ 4 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/vect-epilogues-2b.c create mode 100644 gcc/testsuite/gcc.target/i386/vect-pr113078b.c diff --git a/gcc/testsuite/gcc.target/i386/vect-epilogues-2.c b/gcc/testsuite/gcc.target/i386/vect-epilogues-2.c index d6c06edcacd1..52bdade7e3b4 100644 --- a/gcc/testsuite/gcc.target/i386/vect-epilogues-2.c +++ b/gcc/testsuite/gcc.target/i386/vect-epilogues-2.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -mavx512bw -mtune=generic -fdump-tree-vect-optimized" } */ +/* { dg-options "-O3 -mavx512bw -mtune=generic --param ix86-vect-compare-costs=0 -fdump-tree-vect-optimized" } */ int test (signed char *data, int n) { diff --git a/gcc/testsuite/gcc.target/i386/vect-epilogues-2b.c b/gcc/testsuite/gcc.target/i386/vect-epilogues-2b.c new file mode 100644 index 000000000000..4a58dc67bde2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vect-epilogues-2b.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -mavx512bw -mtune=generic --param ix86-vect-compare-costs=1 -fdump-tree-vect-optimized" } */ + +int test (signed char *data, int n) +{ + int sum = 0; + for (int i = 0; i < n; ++i) + sum += data[i]; + return sum; +} + +/* { dg-final { scan-tree-dump "loop vectorized using 64 byte vectors" "vect" } } */ +/* { dg-final { scan-tree-dump-not "loop vectorized using 32 byte vectors" "vect" } } */ +/* { dg-final { scan-tree-dump "loop vectorized using 16 byte vectors" "vect" } } */ +/* { dg-final { scan-tree-dump "loop vectorized using 8 byte vectors" "vect" { target { ! ia32 } } } } */ diff --git a/gcc/testsuite/gcc.target/i386/vect-pr113078.c b/gcc/testsuite/gcc.target/i386/vect-pr113078.c index e76660543247..3a1235f64265 100644 --- a/gcc/testsuite/gcc.target/i386/vect-pr113078.c +++ b/gcc/testsuite/gcc.target/i386/vect-pr113078.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -mavx512vl" } */ +/* { dg-options "-O3 -mavx512vl --param ix86-vect-compare-costs=0" } */ int foo (int n, int* p, int* pi) diff --git a/gcc/testsuite/gcc.target/i386/vect-pr113078b.c b/gcc/testsuite/gcc.target/i386/vect-pr113078b.c new file mode 100644 index 000000000000..a60f3bb35adc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/vect-pr113078b.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -mavx512vl -mtune=generic --param ix86-vect-compare-costs=1" } */ + +int +foo (int n, int* p, int* pi) +{ + int sum = 0; + for (int i = 0; i != n; i++) + { + if (pi[i] > 0) + sum -= p[i]; + } + return sum; +} + +/* We vectorize with 64 byte vectors and 16 byte vector epilog which + we completely peel. */ +/* { dg-final { scan-assembler-times "vpsub\[^\r\n\]*%k" 4 } } */ From 7624176826db62a3918a9703368dfddc1ef2c4c0 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 29 Apr 2026 15:26:35 +0200 Subject: [PATCH 015/453] [x86] Avoid gcc.target/i386/shift-gf2p8affine-?.c fails with compare costs The following disables epilogue vectorization for the gcc.target/i386/shift-gf2p8affine-?.c tests so they pass with both --param ix86-vect-compare-costs=1 and =0. * gcc.target/i386/shift-gf2p8affine-1.c: Disable epilogue vectorization. * gcc.target/i386/shift-gf2p8affine-3.c: Likewise. * gcc.target/i386/shift-gf2p8affine-7.c: Likewise. --- gcc/testsuite/gcc.target/i386/shift-gf2p8affine-1.c | 4 ++-- gcc/testsuite/gcc.target/i386/shift-gf2p8affine-3.c | 4 ++-- gcc/testsuite/gcc.target/i386/shift-gf2p8affine-7.c | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-1.c b/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-1.c index cb576eb44988..7bde8e5d3c0c 100644 --- a/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-1.c +++ b/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-1.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ -/* { dg-options "-mgfni -mavx512vl -mavx512bw -mavx512f -O3 -march=x86-64 -mtune=generic" } */ -/* { dg-final { scan-assembler-times "vgf2p8affineqb" 14 } } */ +/* { dg-options "-mgfni -mavx512vl -mavx512bw -mavx512f -O3 -march=x86-64 --param vect-epilogues-nomask=0 -mtune=generic" } */ +/* { dg-final { scan-assembler-times "vgf2p8affineqb" 7 } } */ #ifndef N #define N 5 diff --git a/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-3.c b/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-3.c index 2099f4edddfa..aea60e1a6b79 100644 --- a/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-3.c +++ b/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-3.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ -/* { dg-options "-mgfni -mavx512bw -mavx512f -O3 -march=x86-64 -mtune=generic" } */ -/* { dg-final { scan-assembler-times "vgf2p8affineqb" 12 } } */ +/* { dg-options "-mgfni -mavx512bw -mavx512f -O3 -march=x86-64 -mtune=generic --param vect-epilogues-nomask=0" } */ +/* { dg-final { scan-assembler-times "vgf2p8affineqb" 6 } } */ /* Based on a test case from Andrew Pinski */ diff --git a/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-7.c b/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-7.c index 8e93bb32e5d4..7608aa141c7c 100644 --- a/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-7.c +++ b/gcc/testsuite/gcc.target/i386/shift-gf2p8affine-7.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-mgfni -mavx512vl -mavx512bw -mavx512f -O3 -Wno-shift-count-negative -mtune=generic -march=x86-64" } */ -/* { dg-final { scan-assembler-times "vgf2p8affineqb" 53 } } */ +/* { dg-options "-mgfni -mavx512vl -mavx512bw -mavx512f -O3 -Wno-shift-count-negative -mtune=generic -march=x86-64 --param vect-epilogues-nomask=0" } */ +/* { dg-final { scan-assembler-times "vgf2p8affineqb" 27 } } */ #include "shift-gf2p8affine-2.c" From a22b31304e0a1ad21751f882c02c32c167c78793 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Fri, 24 Apr 2026 14:35:49 +0200 Subject: [PATCH 016/453] flip --param ix86-vect-compare-costs default The following flips the default of ix86-vect-compare-costs as discussed during stage3/4. It adds the testcase from PR120398 and ensures the existing one works without specifying the --param. Testcases have been adjusted with simple dump scan adjustments. gcc.target/i386/vect-epilogues-10.c shows that we compute the masked epilog to be more expensive than the not masked one. That's probably correct as we're facing an in-order reduction. I have added -fno-vect-cost-model given this is a testcase for a missing feature. PR tree-optimization/120398 PR tree-optimization/123603 * config/i386/i386.opt (ix86-vect-compare-costs): Default to 1. * gcc.dg/vect/costmodel/x86_64/costmodel-pr120398.c: New testcase. * gcc.dg/vect/costmodel/x86_64/costmodel-pr123603.c: Adjust. * gcc.target/i386/vect-alignment-peeling-1.c: Likewise. * gcc.target/i386/vect-alignment-peeling-2.c: Likewise. * gcc.target/i386/vect-epilogues-10.c: Add -fno-vect-cost-model. --- gcc/config/i386/i386.opt | 2 +- .../vect/costmodel/x86_64/costmodel-pr120398.c | 17 +++++++++++++++++ .../vect/costmodel/x86_64/costmodel-pr123603.c | 1 - .../gcc.target/i386/vect-alignment-peeling-1.c | 2 +- .../gcc.target/i386/vect-alignment-peeling-2.c | 2 +- .../gcc.target/i386/vect-epilogues-10.c | 2 +- 6 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr120398.c diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt index 3b530944a36b..ff08188c7612 100644 --- a/gcc/config/i386/i386.opt +++ b/gcc/config/i386/i386.opt @@ -1258,7 +1258,7 @@ Target Joined UInteger Var(ix86_vect_unroll_limit) Init(4) Param Limit how much the autovectorizer may unroll a loop. -param=ix86-vect-compare-costs= -Target Joined UInteger Var(ix86_vect_compare_costs) Init(0) IntegerRange(0, 1) Param Optimization +Target Joined UInteger Var(ix86_vect_compare_costs) Init(1) IntegerRange(0, 1) Param Optimization Whether x86 vectorizer cost modeling compares costs of different vector sizes. mlam= diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr120398.c b/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr120398.c new file mode 100644 index 000000000000..e348c8eb550a --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr120398.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ + +static float muladd(float x, float y, float z) +{ + return x * y + z; +} +float g(float x[], long n) +{ + float r0 = 0, r1 = 0; + for (; n; x += 2, n--) { + r0 = muladd(x[0], x[0], r0); + r1 = muladd(x[1], x[1], r1); + } + return r0 + r1; +} + +/* { dg-final { scan-tree-dump "optimized: loop vectorized using 8 byte vectors" "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr123603.c b/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr123603.c index c074176a7e42..6509aaac713d 100644 --- a/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr123603.c +++ b/gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr123603.c @@ -1,5 +1,4 @@ /* { dg-do compile } */ -/* { dg-additional-options "--param ix86-vect-compare-costs=1" } */ void foo (int *block) { diff --git a/gcc/testsuite/gcc.target/i386/vect-alignment-peeling-1.c b/gcc/testsuite/gcc.target/i386/vect-alignment-peeling-1.c index cec959f3e078..d24b143a47d5 100644 --- a/gcc/testsuite/gcc.target/i386/vect-alignment-peeling-1.c +++ b/gcc/testsuite/gcc.target/i386/vect-alignment-peeling-1.c @@ -90,6 +90,6 @@ int main() __builtin_abort (); } -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 4 "vect" } } */ +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 7 "vect" } } */ /* Verify all vector accesses are emitted as aligned. */ /* { dg-final { scan-assembler-not "movup" } } */ diff --git a/gcc/testsuite/gcc.target/i386/vect-alignment-peeling-2.c b/gcc/testsuite/gcc.target/i386/vect-alignment-peeling-2.c index 0317c77a3890..67a5ce9c181c 100644 --- a/gcc/testsuite/gcc.target/i386/vect-alignment-peeling-2.c +++ b/gcc/testsuite/gcc.target/i386/vect-alignment-peeling-2.c @@ -90,6 +90,6 @@ int main() __builtin_abort (); } -/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 4 "vect" } } */ +/* { dg-final { scan-tree-dump-times "Alignment of access forced using peeling" 7 "vect" } } */ /* Verify all vector accesses are emitted as aligned. */ /* { dg-final { scan-assembler-not "movup" } } */ diff --git a/gcc/testsuite/gcc.target/i386/vect-epilogues-10.c b/gcc/testsuite/gcc.target/i386/vect-epilogues-10.c index a187955e6f17..2f660921e425 100644 --- a/gcc/testsuite/gcc.target/i386/vect-epilogues-10.c +++ b/gcc/testsuite/gcc.target/i386/vect-epilogues-10.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O3 -mavx512f -mprefer-vector-width=512 --param vect-partial-vector-usage=1 -fdump-tree-vect-optimized" } */ +/* { dg-options "-O3 -mavx512f -mprefer-vector-width=512 --param vect-partial-vector-usage=1 -fdump-tree-vect-optimized -fno-vect-cost-model" } */ double foo (double *a, long long *mask, int n) { From 19864661c96c457e4a2a30ae3ec732f17a1d7a6a Mon Sep 17 00:00:00 2001 From: Michiel Derhaeg Date: Wed, 29 Apr 2026 08:38:58 -0700 Subject: [PATCH 017/453] niter: Make MAX_DOMINATORS_TO_WALK configurable at runtime MAX_DOMINATORS_TO_WALK can be too small for very large function bodies. Made it an option such that we can increase the value when needed. gcc/ChangeLog: * doc/params.texi: Added --param=max-niter-dominators-walk. * params.opt: Added --param=max-niter-dominators-walk. * tree-ssa-loop-niter.cc (MAX_DOMINATORS_TO_WALK): Removed. (determine_value_range): Updated. (bound_difference): Updated. (simplify_using_initial_conditions): Updated. Signed-off-by: Michiel Derhaeg --- gcc/doc/params.texi | 5 +++++ gcc/params.opt | 4 ++++ gcc/tree-ssa-loop-niter.cc | 14 ++++++-------- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/gcc/doc/params.texi b/gcc/doc/params.texi index 31b04688cf77..e6c89607e0d8 100644 --- a/gcc/doc/params.texi +++ b/gcc/doc/params.texi @@ -889,6 +889,11 @@ protection when @option{-fstack-protector} is used. The minimum size of variables taking part in stack slot sharing when not optimizing. +@paindex max-niter-dominators-walk +@item max-niter-dominators-walk +Maximum number of dominators BBs to walk when simplifying loop bounds +and conditions. + @paindex max-jump-thread-duplication-stmts @item max-jump-thread-duplication-stmts Maximum number of statements allowed in a block that needs to be diff --git a/gcc/params.opt b/gcc/params.opt index b35ca688cdf1..9eeb1f3fa64e 100644 --- a/gcc/params.opt +++ b/gcc/params.opt @@ -674,6 +674,10 @@ Bound on the cost of an expression to compute the number of iterations. Common Joined UInteger Var(param_max_iterations_to_track) Init(1000) Param Optimization Bound on the number of iterations the brute force # of iterations analysis algorithm evaluates. +-param=max-niter-dominators-walk= +Common Joined UInteger Var(param_max_niter_dominators_walk) Init(8) IntegerRange(1, 1024) Param Optimization +Maximum number of dominators BBs to walk when simplifying loop bounds and conditions. + -param=max-jump-thread-duplication-stmts= Common Joined UInteger Var(param_max_jump_thread_duplication_stmts) Init(15) Param Optimization Maximum number of statements allowed in a block that needs to be duplicated when threading jumps. diff --git a/gcc/tree-ssa-loop-niter.cc b/gcc/tree-ssa-loop-niter.cc index 00c4a9c81f85..c39401147aed 100644 --- a/gcc/tree-ssa-loop-niter.cc +++ b/gcc/tree-ssa-loop-niter.cc @@ -48,11 +48,6 @@ along with GCC; see the file COPYING3. If not see #include "sreal.h" -/* The maximum number of dominator BBs we search for conditions - of loop header copies we use for simplifying a conditional - expression. */ -#define MAX_DOMINATORS_TO_WALK 8 - /* Analysis of number of iterations of an affine exit test. @@ -441,7 +436,8 @@ determine_value_range (class loop *loop, tree type, tree var, mpz_t off, /* Now walk the dominators of the loop header and use the entry guards to refine the estimates. */ for (bb = loop->header; - bb != ENTRY_BLOCK_PTR_FOR_FN (cfun) && cnt < MAX_DOMINATORS_TO_WALK; + bb != ENTRY_BLOCK_PTR_FOR_FN (cfun) + && cnt < param_max_niter_dominators_walk; bb = get_immediate_dominator (CDI_DOMINATORS, bb)) { edge e; @@ -769,7 +765,8 @@ bound_difference (class loop *loop, tree x, tree y, bounds *bnds) /* Now walk the dominators of the loop header and use the entry guards to refine the estimates. */ for (bb = loop->header; - bb != ENTRY_BLOCK_PTR_FOR_FN (cfun) && cnt < MAX_DOMINATORS_TO_WALK; + bb != ENTRY_BLOCK_PTR_FOR_FN (cfun) + && cnt < param_max_niter_dominators_walk; bb = get_immediate_dominator (CDI_DOMINATORS, bb)) { if (!single_pred_p (bb)) @@ -3100,7 +3097,8 @@ simplify_using_initial_conditions (class loop *loop, tree expr) the number of BBs times the number of loops in degenerate cases. */ for (bb = loop->header; - bb != ENTRY_BLOCK_PTR_FOR_FN (cfun) && cnt < MAX_DOMINATORS_TO_WALK; + bb != ENTRY_BLOCK_PTR_FOR_FN (cfun) + && cnt < param_max_niter_dominators_walk; bb = get_immediate_dominator (CDI_DOMINATORS, bb)) { if (!single_pred_p (bb)) From 86a3af821a82fdfca8755495021685f005fa5565 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 30 Apr 2026 10:19:01 +0200 Subject: [PATCH 018/453] Update gennews for GCC 16. 2026-04-30 Jakub Jelinek * gennews (files): Add files for GCC 16. --- contrib/gennews | 1 + 1 file changed, 1 insertion(+) diff --git a/contrib/gennews b/contrib/gennews index 03298d90a5fa..d6d84fde1ab3 100755 --- a/contrib/gennews +++ b/contrib/gennews @@ -23,6 +23,7 @@ website=http://gcc.gnu.org/ files=" + gcc-16/index.html gcc-16/changes.html gcc-15/index.html gcc-15/changes.html gcc-14/index.html gcc-14/changes.html gcc-13/index.html gcc-13/changes.html From b81218009e091e92145a3fc54971fbbdb82d7298 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 29 Apr 2026 19:50:38 +0800 Subject: [PATCH 019/453] x86_cse: Convert CONST_VECTOR load to constant integer load Convert CONST_VECTOR load no larger than integer register: (set (reg:V2SI 106) (const_vector:V2SI [(const_int 1 [1]) repeated x2])) to constant integer load: (set (subreg:DI (reg:V2SI 106 [ _20 ]) 0) (const_int 4294967297 [0x100000001])) and keep redundant constant integer load. Generate zero CONST_VECTOR load which works for both MMX and XMM registers. Tested on Linux/x86-64 and Linux/i686. gcc/ PR target/125026 PR target/125032 * config/i386/i386-features.cc (ix86_place_single_vector_set): Don't check CONST_VECTOR load size. (replace_vector_const): Handle constant integer load. (x86_cse::x86_cse): Convert CONST_VECTOR load no larger than integer to constant integer load and keep redundant constant integer load. Generate zero CONST_VECTOR load. gcc/testsuite/ PR target/125026 PR target/125032 * gcc.target/i386/pr125026.c: New test. * gcc.target/i386/pr125032-1.c: Likewise. * gcc.target/i386/pr125032-2.c: Likewise. Signed-off-by: H.J. Lu --- gcc/config/i386/i386-features.cc | 97 ++++++++++++++++------ gcc/testsuite/gcc.target/i386/pr125026.c | 18 ++++ gcc/testsuite/gcc.target/i386/pr125032-1.c | 30 +++++++ gcc/testsuite/gcc.target/i386/pr125032-2.c | 15 ++++ 4 files changed, 135 insertions(+), 25 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/pr125026.c create mode 100644 gcc/testsuite/gcc.target/i386/pr125032-1.c create mode 100644 gcc/testsuite/gcc.target/i386/pr125032-2.c diff --git a/gcc/config/i386/i386-features.cc b/gcc/config/i386/i386-features.cc index 63f9dcc9f93f..ce5f0e9c1789 100644 --- a/gcc/config/i386/i386-features.cc +++ b/gcc/config/i386/i386-features.cc @@ -3321,16 +3321,10 @@ ix86_place_single_vector_set (rtx dest, rtx src, bitmap bbs, } } - /* CONST_VECTOR load no larger than integer register - - (set (reg:V2QI 294) - (const_vector:V2QI [(const_int 0 [0]) repeated x2])) - - can use integer load. */ + /* NB: CONST_VECTOR load is generated and handled in x86_cse. */ if (load - && load->kind == X86_CSE_VEC_DUP - && (!CONST_VECTOR_P (src) - || GET_MODE_SIZE (GET_MODE (dest)) > UNITS_PER_WORD)) + && !CONST_VECTOR_P (src) + && load->kind == X86_CSE_VEC_DUP) { /* Get the source from LOAD as (reg:SI 99) in @@ -3644,7 +3638,9 @@ replace_vector_const (machine_mode vector_mode, rtx vector_const, rtx replace; /* Replace the source operand with VECTOR_CONST. */ - if (SUBREG_P (src) || mode == vector_mode) + if (SUBREG_P (src) + || mode == vector_mode + || CONST_INT_P (vector_const)) replace = vector_const; else { @@ -3686,6 +3682,11 @@ replace_vector_const (machine_mode vector_mode, rtx vector_const, print_rtl_single (dump_file, insn); } SET_SRC (set) = replace; + if (CONST_INT_P (replace)) + { + dest = gen_rtx_SUBREG (scalar_mode, dest, 0); + SET_DEST (set) = dest; + } /* Drop possible dead definitions. */ PATTERN (insn) = set; INSN_CODE (insn) = -1; @@ -4701,7 +4702,8 @@ pass_x86_cse::x86_cse (void) if (load->count >= load->threshold) { machine_mode mode; - rtx reg, broadcast_source, broadcast_reg; + rtx reg, broadcast_reg; + rtx broadcast_source = nullptr; replaced = true; switch (load->kind) { @@ -4716,9 +4718,61 @@ pass_x86_cse::x86_cse (void) load->broadcast_reg = broadcast_reg; break; + case X86_CSE_VEC_DUP: + if (CONST_INT_P (load->val) + && (load->val == CONST0_RTX (load->mode) + || load->size <= UNITS_PER_WORD)) + { + /* Generate CONST_VECTOR load. */ + mode = ix86_get_vector_cse_mode (load->size, + load->mode); + + if (load->val == CONST0_RTX (load->mode)) + broadcast_source = CONST0_RTX (mode); + else if (load->val == CONSTM1_RTX (load->mode)) + broadcast_source = CONSTM1_RTX (mode); + else + { + int nunits = GET_MODE_NUNITS (mode); + rtvec v = rtvec_alloc (nunits); + for (int j = 0; j < nunits ; j++) + RTVEC_ELT (v, j) = load->val; + broadcast_source = gen_rtx_CONST_VECTOR (mode, v); + } + + /* NB: Zero CONST_VECTOR load works for MMX and XMM + registers. */ + if (load->size <= UNITS_PER_WORD) + { + /* Convert CONST_VECTOR load no larger than integer + register: + + (set (reg:V2SI 106) + (const_vector:V2SI [(const_int 1 [1]) repeated x2])) + + to constant integer load: + + (set (subreg:DI (reg:V2SI 106 [ _20 ]) 0) + (const_int 4294967297 [0x100000001])) + */ + machine_mode int_mode + = int_mode_for_mode (mode).require (); + broadcast_source = simplify_subreg (int_mode, + broadcast_source, + mode, 0); + gcc_assert (broadcast_source != nullptr); + replace_vector_const (mode, broadcast_source, + load->insns, int_mode); + /* Keep redundant constant integer load. */ + load->broadcast_source = nullptr; + load->broadcast_reg = nullptr; + break; + } + } + /* FALLTHRU */ + case X86_CSE_CONST0_VECTOR: case X86_CSE_CONSTM1_VECTOR: - case X86_CSE_VEC_DUP: mode = ix86_get_vector_cse_mode (load->size, load->mode); broadcast_reg = gen_reg_rtx (mode); if (load->def_insn) @@ -4743,18 +4797,7 @@ pass_x86_cse::x86_cse (void) broadcast_source = CONSTM1_RTX (mode); break; case X86_CSE_VEC_DUP: - if (CONST_INT_P (load->val) - && GET_MODE_SIZE (mode) <= UNITS_PER_WORD) - { - /* CONST_VECTOR load no larger than integer - register size can use integer load. */ - int nunits = GET_MODE_NUNITS (mode); - rtvec v = rtvec_alloc (nunits); - for (int j = 0; j < nunits ; j++) - RTVEC_ELT (v, j) = load->val; - broadcast_source = gen_rtx_CONST_VECTOR (mode, v); - } - else + if (!broadcast_source) { reg = gen_reg_rtx (load->mode); broadcast_source = gen_rtx_VEC_DUPLICATE (mode, @@ -4844,9 +4887,13 @@ pass_x86_cse::x86_cse (void) updated_gnu_tls_insns, updated_gnu2_tls_insns); break; + case X86_CSE_VEC_DUP: + /* Keep redundant constant integer load. */ + if (!load->broadcast_reg) + break; + /* FALLTHRU */ case X86_CSE_CONST0_VECTOR: case X86_CSE_CONSTM1_VECTOR: - case X86_CSE_VEC_DUP: ix86_place_single_vector_set (load->broadcast_reg, load->broadcast_source, load->bbs, diff --git a/gcc/testsuite/gcc.target/i386/pr125026.c b/gcc/testsuite/gcc.target/i386/pr125026.c new file mode 100644 index 000000000000..96ac6a9ef207 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr125026.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=x86-64" } */ + +extern void a(int[]); +int b; +int d(int e, volatile int f) { + b = f - e; + int t[2] = {b, b}; + a(t); +} +void g(int h[1]) { + if (d(0, 1)) + h[0] = 0; + d(0, 1); +} + +/* { dg-final { scan-assembler-times "movabsq\[ \\t\]+\\\$4294967297, %r\[a-z0-9\]+" 2 { target { ! ia32 } } } } */ +/* { dg-final { scan-assembler-not "xmm" { target { ! ia32 } } } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr125032-1.c b/gcc/testsuite/gcc.target/i386/pr125032-1.c new file mode 100644 index 000000000000..7c54bab332aa --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr125032-1.c @@ -0,0 +1,30 @@ +/* { dg-do compile { target { ia32 && pie } } } */ +/* { dg-options "-O2 -march=i686 -mmmx -fPIE" } */ + +typedef int __m64 __attribute__((__vector_size__(8))); +typedef short __v4hi __attribute__((__vector_size__(8))); +typedef char __v8qi __attribute__((__vector_size__(8))); +int mmx_composite_over_n_8_0565_info_0, mmx_composite_over_n_8_0565_w; +long long mmx_composite_over_n_8_0565_m3; +__m64 mmx_composite_over_n_8_0565_v2, mmx_composite_over_n_8_0565_v3; +__m64 in_over(__m64 src) +{ + __m64 __m1 = src, __m2; + return (__m64)__builtin_ia32_pmullw((__v4hi)__m1, (__v4hi)__m2); +} +__m64 load8888() +{ + __m64 __m2, __m1; + return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2); +} +void mmx_composite_over_n_8_0565() +{ + __m64 vsrc = load8888(); + mmx_composite_over_n_8_0565_w = mmx_composite_over_n_8_0565_info_0; + while (mmx_composite_over_n_8_0565_info_0) + if (mmx_composite_over_n_8_0565_m3) + { + mmx_composite_over_n_8_0565_v2 = in_over(vsrc); + mmx_composite_over_n_8_0565_v3 = in_over(vsrc); + } +} diff --git a/gcc/testsuite/gcc.target/i386/pr125032-2.c b/gcc/testsuite/gcc.target/i386/pr125032-2.c new file mode 100644 index 000000000000..71b072a7bfe2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr125032-2.c @@ -0,0 +1,15 @@ +/* { dg-do compile { target fpic } } */ +/* { dg-options "-O2 -fPIC" } */ + +long _HMAC_SHA256_Init_Klen; +char _crypt_HMAC_SHA256_Init_pad[64]; +char _crypt_HMAC_SHA256_Init_pad_0, _crypt_HMAC_SHA256_Init_K_0; +void _crypt_HMAC_SHA256_Init_i() { + if (_HMAC_SHA256_Init_Klen) + _HMAC_SHA256_Init_Klen = 2; + long __trans_tmp_1 = + __builtin_dynamic_object_size(_crypt_HMAC_SHA256_Init_pad, 0); + __builtin___memset_chk(_crypt_HMAC_SHA256_Init_pad, 2, 64, __trans_tmp_1); + for (; _HMAC_SHA256_Init_Klen;) + _crypt_HMAC_SHA256_Init_pad_0 ^= _crypt_HMAC_SHA256_Init_K_0; +} From 9a520bb987d3944ed9bb09f29b0f38f319817759 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Thu, 30 Apr 2026 08:39:52 +0200 Subject: [PATCH 020/453] tree-optimization/125088 - some TLC to the new vect_bb_slp_scalar_cost This realizes that orig_stmt_info == stmt and refactors control flow around cost recording to avoid the do { } while (false); loop which had continue stmts confusing coverity. PR tree-optimization/125088 * tree-vect-slp.cc (vect_bb_slp_scalar_cost): Refactor and simplify. * tree-vect-stmts.cc (vect_nop_conversion_p): Exclude copies with memory accesses. --- gcc/tree-vect-slp.cc | 36 ++++++++++++++++-------------------- gcc/tree-vect-stmts.cc | 2 +- 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index 00bb891fccb2..17b8dc5b9dc2 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -9454,15 +9454,21 @@ vect_bb_slp_scalar_cost (bb_vec_info vinfo, gcc_assert (!gimple_visited_p (stmt->stmt)); - gcc_assert (vect_orig_stmt (stmt) == stmt); - stmt_vec_info orig_stmt_info = stmt; - - do + if (vect_nop_conversion_p (stmt)) + ; + /* For single-argument PHIs assume coalescing which means zero + cost for the scalar and the vector PHIs. This avoids + artificially favoring the vector path (but may pessimize it + in some cases). */ + else if (is_a (stmt->stmt) + && gimple_phi_num_args (as_a (stmt->stmt)) == 1) + ; + else { vect_cost_for_stmt kind; - if (STMT_VINFO_DATA_REF (orig_stmt_info)) + if (STMT_VINFO_DATA_REF (stmt)) { - data_reference_p dr = STMT_VINFO_DATA_REF (orig_stmt_info); + data_reference_p dr = STMT_VINFO_DATA_REF (stmt); tree base = get_base_address (DR_REF (dr)); /* When the scalar access is to a non-global not address-taken decl that is not BLKmode assume we can @@ -9472,27 +9478,17 @@ vect_bb_slp_scalar_cost (bb_vec_info vinfo, && !TREE_ADDRESSABLE (base) && DECL_MODE (base) != BLKmode) kind = scalar_stmt; - else if (DR_IS_READ (STMT_VINFO_DATA_REF (orig_stmt_info))) + else if (DR_IS_READ (STMT_VINFO_DATA_REF (stmt))) kind = scalar_load; else kind = scalar_store; } - else if (vect_nop_conversion_p (orig_stmt_info)) - continue; - /* For single-argument PHIs assume coalescing which means zero - cost for the scalar and the vector PHIs. This avoids - artificially favoring the vector path (but may pessimize it - in some cases). */ - else if (is_a (orig_stmt_info->stmt) - && gimple_phi_num_args - (as_a (orig_stmt_info->stmt)) == 1) - continue; else kind = scalar_stmt; + /* Cost each scalar stmt only once. */ gimple_set_visited (stmt->stmt, true); - record_stmt_cost (cost_vec, 1, kind, orig_stmt_info, - NULL_TREE, 0, vect_body); - } while (false); + record_stmt_cost (cost_vec, 1, kind, stmt, NULL_TREE, 0, vect_body); + } /* Now walk relevant parts of the SSA use-def graph. */ slp_oprnds child_ops (stmt); diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index 9328cb820f89..32691f47eb7f 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -5935,7 +5935,7 @@ bool vect_nop_conversion_p (stmt_vec_info stmt_info) { gassign *stmt = dyn_cast (stmt_info->stmt); - if (!stmt) + if (!stmt || STMT_VINFO_DATA_REF (stmt_info)) return false; tree lhs = gimple_assign_lhs (stmt); From edc868bc73f4b8ab076a8a87749a3f33326cfd5f Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Thu, 30 Apr 2026 09:27:06 +0200 Subject: [PATCH 021/453] Ada: Fix spurious error on primitive function of tagged task type This comes from an internal confusion about the subtype of the controlling result. This has probably never worked, but the fix is trivial. gcc/ada/ PR ada/125044 * sem_disp.adb (Check_Controlling_Formals): Apply the same massaging to the result subtype as to the parameter subtypes. gcc/testsuite/ * gnat.dg/task6.ads, gnat.dg/task6.adb: New test. --- gcc/ada/sem_disp.adb | 23 ++++++++++++++++++----- gcc/testsuite/gnat.dg/task6.adb | 15 +++++++++++++++ gcc/testsuite/gnat.dg/task6.ads | 13 +++++++++++++ 3 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 gcc/testsuite/gnat.dg/task6.adb create mode 100644 gcc/testsuite/gnat.dg/task6.ads diff --git a/gcc/ada/sem_disp.adb b/gcc/ada/sem_disp.adb index 36699e237f0c..ff606c7cfa7b 100644 --- a/gcc/ada/sem_disp.adb +++ b/gcc/ada/sem_disp.adb @@ -336,9 +336,7 @@ package body Sem_Disp is end if; if Present (Ctrl_Type) then - - -- Obtain the full type in case we are looking at an incomplete - -- view. + -- Use the full view for an incomplete type if Ekind (Ctrl_Type) = E_Incomplete_Type and then Present (Full_View (Ctrl_Type)) @@ -346,8 +344,7 @@ package body Sem_Disp is Ctrl_Type := Full_View (Ctrl_Type); end if; - -- When controlling type is concurrent and declared within a - -- generic or inside an instance use corresponding record type. + -- Use the corresponding record type for a concurrent type if Is_Concurrent_Type (Ctrl_Type) and then Present (Corresponding_Record_Type (Ctrl_Type)) @@ -439,6 +436,22 @@ package body Sem_Disp is Ctrl_Type := Check_Controlling_Type (Etype (Subp), Subp); if Present (Ctrl_Type) then + -- Use the full view for an incomplete type + + if Ekind (Ctrl_Type) = E_Incomplete_Type + and then Present (Full_View (Ctrl_Type)) + then + Ctrl_Type := Full_View (Ctrl_Type); + end if; + + -- Use the corresponding record type for a concurrent type + + if Is_Concurrent_Type (Ctrl_Type) + and then Present (Corresponding_Record_Type (Ctrl_Type)) + then + Ctrl_Type := Corresponding_Record_Type (Ctrl_Type); + end if; + if Ctrl_Type = Typ then Set_Has_Controlling_Result (Subp); diff --git a/gcc/testsuite/gnat.dg/task6.adb b/gcc/testsuite/gnat.dg/task6.adb new file mode 100644 index 000000000000..dd0ebfc3ebef --- /dev/null +++ b/gcc/testsuite/gnat.dg/task6.adb @@ -0,0 +1,15 @@ +-- { dg-do compile } + +package body Task6 is + + task body T is + begin + accept E; + end T; + + function Make return T is + begin + return Ret : T; + end; + +end Task6; diff --git a/gcc/testsuite/gnat.dg/task6.ads b/gcc/testsuite/gnat.dg/task6.ads new file mode 100644 index 000000000000..d1e605c2a73e --- /dev/null +++ b/gcc/testsuite/gnat.dg/task6.ads @@ -0,0 +1,13 @@ +package Task6 is + + type Int is task interface; + + procedure E (T: Int) is abstract; + + task type T is new Int with + entry E; + end T; + + function Make return T; + +end Task6; From 6a1407bac7e334ff04ac668ca9edb1af576110b6 Mon Sep 17 00:00:00 2001 From: Christopher Bazley Date: Thu, 30 Apr 2026 10:29:14 +0000 Subject: [PATCH 022/453] MAINTAINERS: Add myself to write after approval Add an entry for myself to the write after approval list. ChangeLog: * MAINTAINERS: Add myself to write after approval. --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 1d6c47d9bf1a..6ed956dc0e44 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -363,6 +363,7 @@ Gergö Barany - Daniel Barboza dbarboza Thiago Jung Bauermann - Charles Baylis cbaylis +Christopher Bazley chrbaz01 Tejas Belagod belagod Andrey Belevantsev abel Matthew Beliveau - From 319c0f0249cb30c2290426a3a9d4ce81a47a684d Mon Sep 17 00:00:00 2001 From: Christopher Bazley Date: Wed, 29 Apr 2026 12:26:42 +0000 Subject: [PATCH 023/453] aarch64: Handle opts_set parameter properly in aarch64_option_restore Previously, the AArch64 implementation of TARGET_OPTION_RESTORE ignored the opts_set parameter and its callee, aarch64_override_options_internal, invoked SET_OPTION_IF_UNSET with &global_options_set instead of with opts_set. That was bad for maintainability, because it was based on an assumption that cl_target_option_restore would only be called with &global_options_set. Otherwise, if an option were set in *opts_set but not in global_options_set, the corresponding value would have been wrongly overridden; conversely, if an option were set in global_options_set but not in *opts_set then its value would not have been overridden as expected. It looks as though cl_target_option_restore is not currently called with an argument expression other than &global_options_set except by the arm, i386 and s390 backends. However, ascertaining that and ensuring it will always be true wastes more time than simply doing the right thing. gcc/ChangeLog: * config/aarch64/aarch64-c.cc (aarch64_pragma_target_parse): Pass &global_options_set as an argument to aarch64_override_options_internal. * config/aarch64/aarch64-protos.h (aarch64_override_options_internal): Add a parameter declaration for opts_set. * config/aarch64/aarch64.cc (aarch64_override_options_internal): Add a parameter declaration for opts_set and use the argument when invoking SET_OPTION_IF_UNSET. (aarch64_override_options): Pass &global_options_set as an argument to aarch64_override_options_internal. (aarch64_option_restore): As above. (aarch64_set_current_function): As above. (aarch64_option_valid_attribute_p): As above. (aarch64_option_valid_version_attribute_p): As above. --- gcc/config/aarch64/aarch64-c.cc | 2 +- gcc/config/aarch64/aarch64-protos.h | 3 +- gcc/config/aarch64/aarch64.cc | 58 +++++++++++++++-------------- 3 files changed, 33 insertions(+), 30 deletions(-) diff --git a/gcc/config/aarch64/aarch64-c.cc b/gcc/config/aarch64/aarch64-c.cc index 9c9918151e75..8da9163bc32b 100644 --- a/gcc/config/aarch64/aarch64-c.cc +++ b/gcc/config/aarch64/aarch64-c.cc @@ -356,7 +356,7 @@ aarch64_pragma_target_parse (tree args, tree pop_target) if (!aarch64_process_target_attr (args)) return false; - aarch64_override_options_internal (&global_options); + aarch64_override_options_internal (&global_options, &global_options_set); } /* args is NULL, restore to the state described in pop_target. */ diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index afacc004cb90..16b58f39a97e 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -1140,7 +1140,8 @@ void aarch64_expand_tag_memory (rtx, rtx, rtx); #endif /* RTX_CODE */ bool aarch64_process_target_attr (tree); -void aarch64_override_options_internal (struct gcc_options *); +void aarch64_override_options_internal (struct gcc_options *, + struct gcc_options *); const char *aarch64_general_mangle_builtin_type (const_tree); void aarch64_general_init_builtins (void); diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index a85fb0f8cfbe..162947b047bf 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -19597,12 +19597,15 @@ aarch64_override_options_after_change_1 (struct gcc_options *opts) } /* 'Unpack' up the internal tuning structs and update the options - in OPTS. The caller must have set up selected_tune and selected_arch + in OPTS. OPTS_SET can be used to avoid overriding values that + were explicitly set on the command line. + The caller must have set up selected_tune and selected_arch as all the other target-specific codegen decisions are derived from them. */ void -aarch64_override_options_internal (struct gcc_options *opts) +aarch64_override_options_internal (struct gcc_options *opts, + struct gcc_options *opts_set) { const struct processor *tune = aarch64_get_tune_cpu (opts->x_selected_tune); aarch64_tune = tune->sched_core; @@ -19734,33 +19737,31 @@ aarch64_override_options_internal (struct gcc_options *opts) gcc_unreachable (); } - /* We don't mind passing in global_options_set here as we don't use - the *options_set structs anyway. */ - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_sched_autopref_queue_depth, queue_depth); /* Set up parameters to be used in prefetching algorithm. Do not override the defaults unless we are tuning for a core we have researched values for. */ if (aarch64_tune_params.prefetch->num_slots > 0) - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_simultaneous_prefetches, aarch64_tune_params.prefetch->num_slots); if (aarch64_tune_params.prefetch->l1_cache_size >= 0) - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_l1_cache_size, aarch64_tune_params.prefetch->l1_cache_size); if (aarch64_tune_params.prefetch->l1_cache_line_size >= 0) - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_l1_cache_line_size, aarch64_tune_params.prefetch->l1_cache_line_size); if (aarch64_tune_params.prefetch->l1_cache_line_size >= 0) { - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_destruct_interfere_size, aarch64_tune_params.prefetch->l1_cache_line_size); - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_construct_interfere_size, aarch64_tune_params.prefetch->l1_cache_line_size); } @@ -19768,28 +19769,28 @@ aarch64_override_options_internal (struct gcc_options *opts) { /* For a generic AArch64 target, cover the current range of cache line sizes. */ - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_destruct_interfere_size, 256); - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_construct_interfere_size, 64); } if (aarch64_tune_params.prefetch->l2_cache_size >= 0) - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_l2_cache_size, aarch64_tune_params.prefetch->l2_cache_size); if (!aarch64_tune_params.prefetch->prefetch_dynamic_strides) - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_prefetch_dynamic_strides, 0); if (aarch64_tune_params.prefetch->minimum_stride >= 0) - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_prefetch_minimum_stride, aarch64_tune_params.prefetch->minimum_stride); /* Use the alternative scheduling-pressure algorithm by default. */ - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_sched_pressure_algorithm, SCHED_PRESSURE_MODEL); @@ -19803,7 +19804,7 @@ aarch64_override_options_internal (struct gcc_options *opts) /* Enforce that interval is the same size as size so the mid-end does the right thing. */ - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_stack_clash_protection_probe_interval, guard_size); @@ -19828,13 +19829,13 @@ aarch64_override_options_internal (struct gcc_options *opts) /* Avoid loop-dependant FMA chains. */ if (aarch64_tune_params.extra_tuning_flags & AARCH64_EXTRA_TUNE_AVOID_CROSS_LOOP_FMA) - SET_OPTION_IF_UNSET (opts, &global_options_set, param_avoid_fma_max_bits, + SET_OPTION_IF_UNSET (opts, opts_set, param_avoid_fma_max_bits, 512); /* Consider fully pipelined FMA in reassociation. */ if (aarch64_tune_params.extra_tuning_flags & AARCH64_EXTRA_TUNE_FULLY_PIPELINED_FMA) - SET_OPTION_IF_UNSET (opts, &global_options_set, param_fully_pipelined_fma, + SET_OPTION_IF_UNSET (opts, opts_set, param_fully_pipelined_fma, 1); /* If dispatch scheduling is enabled, the dispatch_constraints in the @@ -19845,7 +19846,7 @@ aarch64_override_options_internal (struct gcc_options *opts) /* Enable possible unprofitable vectorization. */ if (opts->x_flag_aarch64_max_vectorization) - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, param_vect_allow_possibly_not_worthwhile_vectorizations, 1); @@ -19853,7 +19854,7 @@ aarch64_override_options_internal (struct gcc_options *opts) whichever one is not default. If both are set then prefer the param flag over the parameters. */ if (opts->x_autovec_preference != AARCH64_AUTOVEC_DEFAULT) - SET_OPTION_IF_UNSET (opts, &global_options_set, + SET_OPTION_IF_UNSET (opts, opts_set, aarch64_autovec_preference, opts->x_autovec_preference); @@ -20167,7 +20168,7 @@ aarch64_override_options (void) if (aarch64_track_speculation) flag_shrink_wrap = 0; - aarch64_override_options_internal (&global_options); + aarch64_override_options_internal (&global_options, &global_options_set); /* Save these options as the default ones in case we push and pop them later while processing functions with potential target attributes. */ @@ -20224,14 +20225,15 @@ initialize_aarch64_code_model (struct gcc_options *opts) } /* Implements TARGET_OPTION_RESTORE. Restore the backend codegen decisions - using the information saved in PTR. */ + using the information saved in PTR. OPTS_SET can be used to avoid + overriding values that were explicitly set on the command line. */ static void aarch64_option_restore (struct gcc_options *opts, - struct gcc_options * /* opts_set */, + struct gcc_options *opts_set, struct cl_target_option * /* ptr */) { - aarch64_override_options_internal (opts); + aarch64_override_options_internal (opts, opts_set); } /* Implement TARGET_OPTION_PRINT. */ @@ -20351,7 +20353,7 @@ aarch64_set_current_function (tree fndecl) aarch64_set_asm_isa_flags (base_flags | aarch64_feature_flags (new_isa_mode)); - aarch64_override_options_internal (&global_options); + aarch64_override_options_internal (&global_options, &global_options_set); new_tree = build_target_option_node (&global_options, &global_options_set); DECL_FUNCTION_SPECIFIC_TARGET (fndecl) = new_tree; @@ -20907,7 +20909,7 @@ aarch64_option_valid_attribute_p (tree fndecl, tree, tree args, int) /* Set up any additional state. */ if (ret) { - aarch64_override_options_internal (&global_options); + aarch64_override_options_internal (&global_options, &global_options_set); new_target = build_target_option_node (&global_options, &global_options_set); } @@ -21184,7 +21186,7 @@ aarch64_option_valid_version_attribute_p (tree fndecl, tree, tree args, int) /* Set up any additional state. */ if (ret) { - aarch64_override_options_internal (&global_options); + aarch64_override_options_internal (&global_options, &global_options_set); new_target = build_target_option_node (&global_options, &global_options_set); } From c65691bc5a2873e0e2ffbfcaa80eb9bdc6e1f7b8 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Wed, 29 Apr 2026 14:34:32 -0700 Subject: [PATCH 024/453] match: Simplify patterns for `a != b` implies a or b is non-zero This simplified the patterns by using a for loop. Also noticed that the `:c` on the inner ne/eq is not needed as it will match the same canonicalization as the inner bit_ior too so removes that too. This removes a little more 300 lines from the generated gimple-match*.cc files too. Bootstrapped and tested on x86_64-linux-gnu. gcc/ChangeLog: * match.pd (`(a !=/== b) &\| ((a|b) ==/!= 0)`): Simplify patterns using for loop and remove the `:c` on the inner ne/eq. Signed-off-by: Andrew Pinski --- gcc/match.pd | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/gcc/match.pd b/gcc/match.pd index df960a0cf29f..62c43b31117a 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -7068,29 +7068,29 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) #if GIMPLE /* Given two integers a and b: (a != b) & ((a|b) != 0) -> (a != b) - (a != b) | ((a|b) != 0) -> ((a|b) != 0) - (a == b) & ((a|b) == 0) -> ((a|b) == 0) (a == b) | ((a|b) == 0) -> (a == b) + + (a == b) & ((a|b) == 0) -> ((a|b) == 0) + (a != b) | ((a|b) != 0) -> ((a|b) != 0) + (a != b) & ((a|b) == 0) -> false (a == b) | ((a|b) != 0) -> true */ -(simplify - (bit_and:c (ne:c @0 @1) (ne (bit_ior @0 @1) integer_zerop)) - (ne @0 @1)) -(simplify - (bit_ior:c (ne:c @0 @1) (ne (bit_ior@2 @0 @1) integer_zerop@3)) - (ne @2 @3)) -(simplify - (bit_and:c (eq:c @0 @1) (eq (bit_ior@2 @0 @1) integer_zerop@3)) - (eq @2 @3)) -(simplify - (bit_ior:c (eq:c @0 @1) (eq (bit_ior @0 @1) integer_zerop)) - (eq @0 @1)) -(simplify - (bit_and:c (ne:c @0 @1) (eq (bit_ior @0 @1) integer_zerop)) - { constant_boolean_node (false, type); }) -(simplify - (bit_ior:c (eq:c @0 @1) (ne (bit_ior @0 @1) integer_zerop)) - { constant_boolean_node (true, type); }) +(for bitop (bit_and bit_ior) + neeq (ne eq) + (simplify + (bitop:c (neeq @0 @1) (neeq (bit_ior @0 @1) integer_zerop)) + (neeq @0 @1))) +(for bitop (bit_and bit_ior) + neeq (eq ne) + (simplify + (bitop:c (neeq @0 @1) (neeq (bit_ior@2 @0 @1) integer_zerop@3)) + (neeq @2 @3))) +(for bitop (bit_and bit_ior) + neeql (ne eq) + neeqr (eq ne) + (simplify + (bitop (neeql @0 @1) (neeqr (bit_ior @0 @1) integer_zerop)) + { constant_boolean_node (bitop==BIT_AND_EXPR, type); })) #endif /* These was part of minmax phiopt. */ From 4e760f7662dc6d0aa7dc8f6f733c0f5c15124811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20H=C3=A4rdin?= Date: Tue, 28 Apr 2026 22:49:32 +0200 Subject: [PATCH 025/453] gcc/toplev.cc: Output mangled function names with -fstack-usage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is more useful for automated stack checking tools such as Daniel Beer's avstack.pl gcc/ChangeLog: * toplev.cc (output_stack_usage_1): Pass RINT_DECL_UNIQUE_NAME instead of PRINT_DECL_NAME to print_decl_identifier. Signed-off-by: Tomas HĂ€rdin --- gcc/toplev.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/toplev.cc b/gcc/toplev.cc index 682459220a20..66fa927c53d3 100644 --- a/gcc/toplev.cc +++ b/gcc/toplev.cc @@ -840,7 +840,7 @@ output_stack_usage_1 (FILE *cf) if (stack_usage_file) { print_decl_identifier (stack_usage_file, current_function_decl, - PRINT_DECL_ORIGIN | PRINT_DECL_NAME + PRINT_DECL_ORIGIN | PRINT_DECL_UNIQUE_NAME | PRINT_DECL_REMAP_DEBUG); fprintf (stack_usage_file, "\t" HOST_WIDE_INT_PRINT_DEC"\t%s\n", stack_usage, stack_usage_kind_str[stack_usage_kind]); From 6efd09212a591001a7e631f780a5ca85f39389f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Heiko=20Ei=C3=9Ffeldt?= Date: Wed, 8 Apr 2026 23:36:12 +0200 Subject: [PATCH 026/453] - ICE verify_vssa exceeds stack space for big functions [PR124805] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The source from PR124561 led to an ICE with --enable-checking, caused by a stack overflow. The recursive verification code verify_vssa in tree-ssa.cc could not handle the extreme number of basic blocks within the typical limits of stack space. As for PR124561 the recursive code was transformed into an iterative version, which avoided the recursive calls. A worklist is used, which has as entries a pair of a basic_block and a tree (vdef). The logic of verification steps for each basic_block is unchanged, although the order of basic_blocks is changed. This fixes PR124805. Reg tested OK. 2026-04-07 Heiko Eißfeldt PR middle-end/124805 * tree-ssa.cc (verify_vssa): replace recursive calls with iteration for lower stack usage --- gcc/tree-ssa.cc | 153 ++++++++++++++++++++++++++++-------------------- 1 file changed, 88 insertions(+), 65 deletions(-) diff --git a/gcc/tree-ssa.cc b/gcc/tree-ssa.cc index 3c899eb5979f..e110e4acf2b0 100644 --- a/gcc/tree-ssa.cc +++ b/gcc/tree-ssa.cc @@ -636,96 +636,119 @@ release_defs_bitset (bitmap toremove) /* Verify virtual SSA form. */ bool -verify_vssa (basic_block bb, tree current_vdef, sbitmap visited) +verify_vssa (basic_block bb_start, tree current_vdef, sbitmap visited) { bool err = false; - if (!bitmap_set_bit (visited, bb->index)) - return false; + struct state_t { + basic_block bb; + tree vdef; + } state; + + auto_vec worklist; + state.bb = bb_start; + state.vdef = current_vdef; + worklist.safe_push (state); - /* Pick up the single virtual PHI def. */ - gphi *phi = NULL; - for (gphi_iterator si = gsi_start_phis (bb); !gsi_end_p (si); - gsi_next (&si)) + while (!worklist.is_empty ()) { - tree res = gimple_phi_result (si.phi ()); - if (virtual_operand_p (res)) + const auto &state = worklist.pop (); + const auto &bb = state.bb; + current_vdef = state.vdef; + + if (!bitmap_set_bit (visited, bb->index)) + continue; + + /* Pick up the single virtual PHI def. */ + gphi *phi = NULL; + for (gphi_iterator si = gsi_start_phis (bb); !gsi_end_p (si); + gsi_next (&si)) + { + tree res = gimple_phi_result (si.phi ()); + if (virtual_operand_p (res)) + { + if (phi) + { + error ("multiple virtual PHI nodes in BB %d", bb->index); + print_gimple_stmt (stderr, phi, 0); + print_gimple_stmt (stderr, si.phi (), 0); + err = true; + } + else + phi = si.phi (); + } + } + if (phi) { - if (phi) + current_vdef = gimple_phi_result (phi); + if (TREE_CODE (current_vdef) != SSA_NAME) { - error ("multiple virtual PHI nodes in BB %d", bb->index); + error ("virtual definition is not an SSA name"); print_gimple_stmt (stderr, phi, 0); - print_gimple_stmt (stderr, si.phi (), 0); err = true; } - else - phi = si.phi (); } - } - if (phi) - { - current_vdef = gimple_phi_result (phi); - if (TREE_CODE (current_vdef) != SSA_NAME) + + /* Verify stmts. */ + for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi); + gsi_next (&gsi)) { - error ("virtual definition is not an SSA name"); - print_gimple_stmt (stderr, phi, 0); - err = true; + gimple *stmt = gsi_stmt (gsi); + tree vuse = gimple_vuse (stmt); + if (vuse) + { + if (vuse != current_vdef) + { + error ("stmt with wrong VUSE"); + print_gimple_stmt (stderr, stmt, 0, TDF_VOPS); + fprintf (stderr, "expected "); + print_generic_expr (stderr, current_vdef); + fprintf (stderr, "\n"); + err = true; + } + tree vdef = gimple_vdef (stmt); + if (vdef) + { + current_vdef = vdef; + if (TREE_CODE (current_vdef) != SSA_NAME) + { + error ("virtual definition is not an SSA name"); + print_gimple_stmt (stderr, phi, 0); + err = true; + } + } + } } - } - /* Verify stmts. */ - for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi); - gsi_next (&gsi)) - { - gimple *stmt = gsi_stmt (gsi); - tree vuse = gimple_vuse (stmt); - if (vuse) + /* Verify destination PHI uses and add successors to worklist. */ + edge_iterator ei; + edge e; + FOR_EACH_EDGE (e, ei, bb->succs) { - if (vuse != current_vdef) + gphi *phi = get_virtual_phi (e->dest); + if (phi + && PHI_ARG_DEF_FROM_EDGE (phi, e) != current_vdef) { - error ("stmt with wrong VUSE"); - print_gimple_stmt (stderr, stmt, 0, TDF_VOPS); + error ("PHI node with wrong VUSE on edge from BB %d", + e->src->index); + print_gimple_stmt (stderr, phi, 0, TDF_VOPS); fprintf (stderr, "expected "); print_generic_expr (stderr, current_vdef); fprintf (stderr, "\n"); err = true; } - tree vdef = gimple_vdef (stmt); - if (vdef) + + /* Add successor BB along with current vdef to worklist. */ + if (!bitmap_bit_p (visited, e->dest->index)) { - current_vdef = vdef; - if (TREE_CODE (current_vdef) != SSA_NAME) - { - error ("virtual definition is not an SSA name"); - print_gimple_stmt (stderr, phi, 0); - err = true; - } - } - } - } + state_t new_state; + new_state.bb = e->dest; + new_state.vdef = current_vdef; - /* Verify destination PHI uses and recurse. */ - edge_iterator ei; - edge e; - FOR_EACH_EDGE (e, ei, bb->succs) - { - gphi *phi = get_virtual_phi (e->dest); - if (phi - && PHI_ARG_DEF_FROM_EDGE (phi, e) != current_vdef) - { - error ("PHI node with wrong VUSE on edge from BB %d", - e->src->index); - print_gimple_stmt (stderr, phi, 0, TDF_VOPS); - fprintf (stderr, "expected "); - print_generic_expr (stderr, current_vdef); - fprintf (stderr, "\n"); - err = true; + worklist.safe_push (new_state); + } } - - /* Recurse. */ - err |= verify_vssa (e->dest, current_vdef, visited); } - return err; } From bf9b70e68133498358391c054da60b939c0feaa9 Mon Sep 17 00:00:00 2001 From: "Vladimir N. Makarov" Date: Thu, 30 Apr 2026 09:01:54 -0400 Subject: [PATCH 027/453] [IRA]: Fix soft conflict and hard reg cost calculation When finding soft conflict in IRA, we wrongly use conflict allocno mode. This can result in more shuffling on the region borders and worse code generation. The patch fixes this. gcc/ChangeLog: * ira-color.cc (assign_hard_reg): Use the right allocno mode to call note_conflict. --- gcc/ira-color.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/ira-color.cc b/gcc/ira-color.cc index 279b36ef7d4d..953dbd94ad80 100644 --- a/gcc/ira-color.cc +++ b/gcc/ira-color.cc @@ -2107,8 +2107,9 @@ assign_hard_reg (ira_allocno_t a, bool retry_p) full_costs[hri] += cost; } }; + enum machine_mode a_mode = ALLOCNO_MODE (a); for (int r = hard_regno; - r >= 0 && (int) end_hard_regno (mode, r) > hard_regno; + r >= 0 && (int) end_hard_regno (a_mode, r) > hard_regno; r--) note_conflict (r); for (int r = hard_regno + 1; From 61fc8acde23b047c669011fc5b390b6ebf68097d Mon Sep 17 00:00:00 2001 From: "Vladimir N. Makarov" Date: Thu, 30 Apr 2026 09:02:51 -0400 Subject: [PATCH 028/453] [IRA]: Process operand NO_REGS class for reg cost calculation In record_reg_classes there is no special processing of case op_class == NO_REGS. It can result in very high cost of the insn alternative cost. The patch fixes this and can change generated code. gcc/ChangeLog: * ira-costs.cc (record_reg_classes): Process correctly case op_class == NO_REGS. --- gcc/ira-costs.cc | 42 +++++++++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/gcc/ira-costs.cc b/gcc/ira-costs.cc index 3a42837a9959..d2ea0cc49e39 100644 --- a/gcc/ira-costs.cc +++ b/gcc/ira-costs.cc @@ -722,13 +722,21 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops, } } - /* If the alternative actually allows memory, make - things a bit cheaper since we won't need an extra - insn to load it. */ - pp->mem_cost - = ((out_p ? ira_memory_move_cost[mode][op_class][0] : 0) - + (in_p ? ira_memory_move_cost[mode][op_class][1] : 0) - - allows_mem[i]) * frequency; + if (op_class == NO_REGS) + /* Although we don't need insn to reload from + memory, still accessing memory is usually more + expensive than a register. */ + pp->mem_cost = frequency; + else + /* If the alternative actually allows memory, make + things a bit cheaper since we won't need an + extra insn to load it. */ + pp->mem_cost + = ((out_p + ? ira_memory_move_cost[mode][op_class][0] : 0) + + (in_p + ? ira_memory_move_cost[mode][op_class][1] : 0) + - allows_mem[i]) * frequency; /* If we have assigned a class to this allocno in our first pass, add a cost to this alternative @@ -739,16 +747,28 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops, enum reg_class pref_class = pref[COST_INDEX (REGNO (op))]; if (pref_class == NO_REGS) + { + if (op_class != NO_REGS) + alt_cost + += ((out_p + ? ira_memory_move_cost[mode][op_class][0] + : 0) + + (in_p + ? ira_memory_move_cost[mode][op_class][1] + : 0)); + } + else if (op_class == NO_REGS) alt_cost += ((out_p - ? ira_memory_move_cost[mode][op_class][0] : 0) + ? ira_memory_move_cost[mode][pref_class][0] + : 0) + (in_p - ? ira_memory_move_cost[mode][op_class][1] + ? ira_memory_move_cost[mode][pref_class][1] : 0)); else if (ira_reg_class_intersect [pref_class][op_class] == NO_REGS) - alt_cost - += ira_register_move_cost[mode][pref_class][op_class]; + alt_cost += (ira_register_move_cost + [mode][pref_class][op_class]); } if (REGNO (ops[i]) != REGNO (ops[j]) && ! find_reg_note (insn, REG_DEAD, op)) From a3ac769a5973057b0006a0aca5e754a9dc53e357 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Thu, 30 Apr 2026 20:56:25 +0200 Subject: [PATCH 029/453] Ada: Fix build of GNAT tools with coverage enabled This removes an obsolete comment in the process. gcc/ * Makefile.in (COVERAGE_FLAGS): Remove obsolete comment. gcc/ada/ PR ada/110336 * gcc-interface/Makefile.in (COVERAGE_FLAGS): New variable (GCC_LINK_FLAGS): Add $(COVERAGE_FLAGS). (ALL_CFLAGS): Likewise. (enable_host_pie): Fold into single use. --- gcc/Makefile.in | 4 +--- gcc/ada/gcc-interface/Makefile.in | 12 ++++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 0fd619140d28..0f0efcda3955 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -162,9 +162,7 @@ PICFLAG = @PICFLAG@ # The linker flag for the above. LD_PICFLAG = @LD_PICFLAG@ -# Flags to determine code coverage. When coverage is disabled, this will -# contain the optimization flags, as you normally want code coverage -# without optimization. +# Flags to determine code coverage. COVERAGE_FLAGS = @coverage_flags@ coverageexts = .{gcda,gcno} diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in index d0500c727c0e..32b394f66e18 100644 --- a/gcc/ada/gcc-interface/Makefile.in +++ b/gcc/ada/gcc-interface/Makefile.in @@ -93,10 +93,14 @@ RANLIB_FLAGS = @ranlib_flags@ AWK = @AWK@ # Should we build position-independent host code? -enable_host_pie = @enable_host_pie@ PICFLAG = @PICFLAG@ + +# The linker flag for the above. LD_PICFLAG = @LD_PICFLAG@ +# Flags to determine code coverage. +COVERAGE_FLAGS = @coverage_flags@ + SHELL = @SHELL@ PWD_COMMAND = $${PWDCMD-pwd} # How to copy preserving the date @@ -204,12 +208,12 @@ RTSDIR = rts$(subst /,_,$(MULTISUBDIR)) # Link flags used to build gnat tools. By default we prefer to statically # link with libgcc to avoid a dependency on shared libgcc (which is tricky # to deal with as it may conflict with the libgcc provided by the system). -GCC_LINK_FLAGS=-static-libstdc++ -static-libgcc +GCC_LINK_FLAGS = -static-libstdc++ -static-libgcc $(COVERAGE_FLAGS) # We need to link against libbacktrace because diagnostics use it LIBBACKTRACE = ../../../libbacktrace/.libs/libbacktrace.a -ifneq ($(enable_host_pie),) +ifeq (@enable_host_pie@,yes) LIBIBERTY = ../../../libiberty/pic/libiberty.a LIBGNAT = ../$(RTSDIR)/libgnat_pic.a else @@ -245,7 +249,7 @@ all.indirect: Makefile ../gnat1$(exeext) INTERNAL_CFLAGS = @CROSS@ -DIN_GCC # This is the variable actually used when we compile. -ALL_CFLAGS = $(INTERNAL_CFLAGS) $(T_CFLAGS) $(CFLAGS) +ALL_CFLAGS = $(T_CFLAGS) $(CFLAGS) $(INTERNAL_CFLAGS) $(COVERAGE_FLAGS) # Likewise. ALL_CPPFLAGS = $(CPPFLAGS) From d4ca6c0d87626c0e065525a87ea278bedfceb68d Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Thu, 30 Apr 2026 17:24:07 +0100 Subject: [PATCH 030/453] libstdc++: Add to freestanding headers [PR125112] The header was added to the freestanding headers in r16-3575-g1a41e52d7ecb58 but bits/binders.h that it depends on was not moved, making unusable with --disable-libstdcxx-hosted. libstdc++-v3/ChangeLog: PR libstdc++/125112 * include/Makefile.am: Move bits/binders.h from bits_headers to bits_freestanding. * include/Makefile.in: --- libstdc++-v3/include/Makefile.am | 2 +- libstdc++-v3/include/Makefile.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am index e9e46139da2f..ec932181a966 100644 --- a/libstdc++-v3/include/Makefile.am +++ b/libstdc++-v3/include/Makefile.am @@ -129,6 +129,7 @@ bits_freestanding = \ ${bits_srcdir}/alloc_traits.h \ ${bits_srcdir}/atomic_base.h \ ${bits_srcdir}/c++0x_warning.h \ + ${bits_srcdir}/binders.h \ ${bits_srcdir}/boost_concept_check.h \ ${bits_srcdir}/concept_check.h \ ${bits_srcdir}/char_traits.h \ @@ -201,7 +202,6 @@ bits_headers = \ ${bits_srcdir}/basic_ios.tcc \ ${bits_srcdir}/basic_string.h \ ${bits_srcdir}/basic_string.tcc \ - ${bits_srcdir}/binders.h \ ${bits_srcdir}/charconv.h \ ${bits_srcdir}/chrono.h \ ${bits_srcdir}/chrono_io.h \ diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in index f3d2f58dbe42..00ae5209f604 100644 --- a/libstdc++-v3/include/Makefile.in +++ b/libstdc++-v3/include/Makefile.in @@ -487,6 +487,7 @@ bits_freestanding = \ ${bits_srcdir}/alloc_traits.h \ ${bits_srcdir}/atomic_base.h \ ${bits_srcdir}/c++0x_warning.h \ + ${bits_srcdir}/binders.h \ ${bits_srcdir}/boost_concept_check.h \ ${bits_srcdir}/concept_check.h \ ${bits_srcdir}/char_traits.h \ @@ -557,7 +558,6 @@ bits_freestanding = \ @GLIBCXX_HOSTED_TRUE@ ${bits_srcdir}/basic_ios.tcc \ @GLIBCXX_HOSTED_TRUE@ ${bits_srcdir}/basic_string.h \ @GLIBCXX_HOSTED_TRUE@ ${bits_srcdir}/basic_string.tcc \ -@GLIBCXX_HOSTED_TRUE@ ${bits_srcdir}/binders.h \ @GLIBCXX_HOSTED_TRUE@ ${bits_srcdir}/charconv.h \ @GLIBCXX_HOSTED_TRUE@ ${bits_srcdir}/chrono.h \ @GLIBCXX_HOSTED_TRUE@ ${bits_srcdir}/chrono_io.h \ From f7a08d53ab3074d1661d74a438932da6ed4879cc Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 30 Apr 2026 15:37:13 +0800 Subject: [PATCH 031/453] x86: Disable 16-bit imm store for TARGET_LCP_STALL When TARGET_LCP_STALL is enabled, 16-bit immediate integer store should be avoided. Update V_16_32_64:*mov_imm to disable 16-bit immediate integer store when TARGET_LCP_STALL is enabled. Tested on Linux/x86-64 and Linux/i686. PR target/125102 * config/i386/mmx.md (V_16_32_64:*mov_imm): Disable 16-bit immediate integer store if TARGET_LCP_STALL is true. Signed-off-by: H.J. Lu --- gcc/config/i386/mmx.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/config/i386/mmx.md b/gcc/config/i386/mmx.md index 8c50480b76bc..d747146776b8 100644 --- a/gcc/config/i386/mmx.md +++ b/gcc/config/i386/mmx.md @@ -598,7 +598,7 @@ (define_insn_and_split "*mov_imm" [(set (match_operand:V_16_32_64 0 "memory_operand" "=m") (match_operand:V_16_32_64 1 "x86_64_const_vector_operand" "i"))] - "" + "!TARGET_LCP_STALL || mode != V2QImode" "#" "&& reload_completed" [(set (match_dup 0) (match_dup 1))] From 68e0c7bfa12ab1c7188ac7d8f0d92c22e899a323 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Wed, 15 Apr 2026 13:43:08 +0800 Subject: [PATCH 032/453] x86: Remove DI_REG/SI_REG from x86_64_int_return_registers Since only AX/DX register pair and XMM0/XMM1 register pair are used for function return values in 64-bit mode, remove DI_REG and SI_REG registers from x86_64_int_return_registers and limit the number of registers used in return values to 2 in 64-bit mode. Tested on Linux/x86-64 and Linux/i686. PR target/124878 * config/i386/i386.cc (x86_64_int_return_registers): Remove DI_REG and SI_REG. (ix86_function_value_regno_p): Remove DI_REG and SI_REG cases. (function_value_64): Replace X86_64_REGPARM_MAX and X86_64_SSE_REGPARM_MAX with X86_64_MAX_RETURN_NREGS and X86_64_MAX_SSE_RETURN_NREGS for the number of registers used in return values. * config/i386/i386.h (X86_64_MAX_RETURN_NREGS): New. Defined to 2. (X86_64_MAX_SSE_RETURN_NREGS): Likewise. Signed-off-by: H.J. Lu --- gcc/config/i386/i386.cc | 10 ++++------ gcc/config/i386/i386.h | 5 +++++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc index c11da783c8cf..15c2d631635b 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -343,9 +343,9 @@ static int const x86_64_preserve_none_int_parameter_registers[6] = R12_REG, R13_REG, R14_REG, R15_REG, DI_REG, SI_REG }; -static int const x86_64_int_return_registers[4] = +static int const x86_64_int_return_registers[2] = { - AX_REG, DX_REG, DI_REG, SI_REG + AX_REG, DX_REG }; /* Define the structure for the machine field in struct function. */ @@ -3870,9 +3870,6 @@ ix86_function_value_regno_p (const unsigned int regno) return true; case DX_REG: return (!TARGET_64BIT || ix86_cfun_abi () != MS_ABI); - case DI_REG: - case SI_REG: - return TARGET_64BIT && ix86_cfun_abi () != MS_ABI; /* Complex values are returned in %st(0)/%st(1) pair. */ case ST0_REG: @@ -4310,7 +4307,8 @@ function_value_64 (machine_mode orig_mode, machine_mode mode, } ret = construct_container (mode, orig_mode, valtype, true, - X86_64_REGPARM_MAX, X86_64_SSE_REGPARM_MAX, + X86_64_MAX_RETURN_NREGS, + X86_64_MAX_SSE_RETURN_NREGS, x86_64_int_return_registers, 0); /* For zero sized structures, construct_container returns NULL, but we diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index 80dafd1f9ae9..21108f399384 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -1878,6 +1878,11 @@ typedef struct ix86_args { #define X86_64_REGPARM_MAX 6 #define X86_64_MS_REGPARM_MAX 4 +/* Maximum numbers of registers used in return values according to x86-64 + psABI. */ +#define X86_64_MAX_RETURN_NREGS 2 +#define X86_64_MAX_SSE_RETURN_NREGS 2 + #define X86_32_REGPARM_MAX 3 #define REGPARM_MAX \ From 2a5b03d40ee9590b4e44ac6a8db0d78e35a91f3e Mon Sep 17 00:00:00 2001 From: GCC Administrator Date: Fri, 1 May 2026 00:16:27 +0000 Subject: [PATCH 033/453] Daily bump. --- ChangeLog | 4 ++ contrib/ChangeLog | 4 ++ gcc/ChangeLog | 114 ++++++++++++++++++++++++++++++++++++++++ gcc/DATESTAMP | 2 +- gcc/ada/ChangeLog | 14 +++++ gcc/testsuite/ChangeLog | 54 +++++++++++++++++++ libstdc++-v3/ChangeLog | 12 +++++ 7 files changed, 203 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 6e67c1dc4e8e..ec571b7cf9df 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2026-04-30 Christopher Bazley + + * MAINTAINERS: Add myself to write after approval. + 2026-04-28 Bohan Lei * MAINTAINERS: Add myself to write after approval and DCO. diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 162e66ef98e7..96731fa4e2be 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,7 @@ +2026-04-30 Jakub Jelinek + + * gennews (files): Add files for GCC 16. + 2026-04-22 Jakub Jelinek * gcc-changelog/git_update_version.py (active_refs): Add diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f331efbdc127..c7a32f7a056e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,117 @@ +2026-04-30 H.J. Lu + + PR target/124878 + * config/i386/i386.cc (x86_64_int_return_registers): Remove + DI_REG and SI_REG. + (ix86_function_value_regno_p): Remove DI_REG and SI_REG cases. + (function_value_64): Replace X86_64_REGPARM_MAX and + X86_64_SSE_REGPARM_MAX with X86_64_MAX_RETURN_NREGS and + X86_64_MAX_SSE_RETURN_NREGS for the number of registers used + in return values. + * config/i386/i386.h (X86_64_MAX_RETURN_NREGS): New. Defined + to 2. + (X86_64_MAX_SSE_RETURN_NREGS): Likewise. + +2026-04-30 H.J. Lu + + PR target/125102 + * config/i386/mmx.md (V_16_32_64:*mov_imm): Disable + 16-bit immediate integer store if TARGET_LCP_STALL is true. + +2026-04-30 Eric Botcazou + + * Makefile.in (COVERAGE_FLAGS): Remove obsolete comment. + +2026-04-30 Vladimir N. Makarov + + * ira-costs.cc (record_reg_classes): Process correctly case + op_class == NO_REGS. + +2026-04-30 Vladimir N. Makarov + + * ira-color.cc (assign_hard_reg): Use the right allocno mode to + call note_conflict. + +2026-04-30 Heiko Eißfeldt + + PR middle-end/124805 + * tree-ssa.cc (verify_vssa): + replace recursive calls with iteration for lower stack usage + +2026-04-30 Tomas HĂ€rdin + + * toplev.cc (output_stack_usage_1): Pass RINT_DECL_UNIQUE_NAME + instead of PRINT_DECL_NAME to print_decl_identifier. + +2026-04-30 Andrew Pinski + + * match.pd (`(a !=/== b) &\| ((a|b) ==/!= 0)`): + Simplify patterns using for loop and remove the `:c` + on the inner ne/eq. + +2026-04-30 Christopher Bazley + + * config/aarch64/aarch64-c.cc (aarch64_pragma_target_parse): + Pass &global_options_set as an argument to + aarch64_override_options_internal. + * config/aarch64/aarch64-protos.h (aarch64_override_options_internal): + Add a parameter declaration for opts_set. + * config/aarch64/aarch64.cc (aarch64_override_options_internal): + Add a parameter declaration for opts_set and use the argument + when invoking SET_OPTION_IF_UNSET. + (aarch64_override_options): Pass &global_options_set as an argument to + aarch64_override_options_internal. + (aarch64_option_restore): As above. + (aarch64_set_current_function): As above. + (aarch64_option_valid_attribute_p): As above. + (aarch64_option_valid_version_attribute_p): As above. + +2026-04-30 Richard Biener + + PR tree-optimization/125088 + * tree-vect-slp.cc (vect_bb_slp_scalar_cost): Refactor and + simplify. + * tree-vect-stmts.cc (vect_nop_conversion_p): Exclude + copies with memory accesses. + +2026-04-30 H.J. Lu + + PR target/125026 + PR target/125032 + * config/i386/i386-features.cc (ix86_place_single_vector_set): + Don't check CONST_VECTOR load size. + (replace_vector_const): Handle constant integer load. + (x86_cse::x86_cse): Convert CONST_VECTOR load no larger than + integer to constant integer load and keep redundant constant + integer load. Generate zero CONST_VECTOR load. + +2026-04-30 Michiel Derhaeg + + * doc/params.texi: Added --param=max-niter-dominators-walk. + * params.opt: Added --param=max-niter-dominators-walk. + * tree-ssa-loop-niter.cc (MAX_DOMINATORS_TO_WALK): Removed. + (determine_value_range): Updated. + (bound_difference): Updated. + (simplify_using_initial_conditions): Updated. + +2026-04-30 Richard Biener + + PR tree-optimization/120398 + PR tree-optimization/123603 + * config/i386/i386.opt (ix86-vect-compare-costs): Default to 1. + +2026-04-30 Richard Biener + + * config/i386/i386.cc (ix86_vector_costs::better_epilogue_loop_than_p): + New. If the other loop suggests this as epilog prefer other. + +2026-04-30 Richard Biener + + * tree-vectorizer.h (vector_costs::vinfo): New accessor. + * config/i386/i386.cc (ix86_vector_costs::better_main_loop_than_p): + Prefer a masked main loop if we can elide enough of (vector) + epilog loop iterations. + 2026-04-29 Pengxuan Zheng PR tree-optimization/113379 diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 500371a7ade1..c409c973e9fc 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20260430 +20260501 diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 17d113140cea..a5ce7a928fb4 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,17 @@ +2026-04-30 Eric Botcazou + + PR ada/110336 + * gcc-interface/Makefile.in (COVERAGE_FLAGS): New variable + (GCC_LINK_FLAGS): Add $(COVERAGE_FLAGS). + (ALL_CFLAGS): Likewise. + (enable_host_pie): Fold into single use. + +2026-04-30 Eric Botcazou + + PR ada/125044 + * sem_disp.adb (Check_Controlling_Formals): Apply the same massaging + to the result subtype as to the parameter subtypes. + 2026-04-22 Eric Botcazou PR ada/85766 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c05e82cc90a8..3c2b7109cb8d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,57 @@ +2026-04-30 Eric Botcazou + + * gnat.dg/task6.ads, gnat.dg/task6.adb: New test. + +2026-04-30 H.J. Lu + + PR target/125026 + PR target/125032 + * gcc.target/i386/pr125026.c: New test. + * gcc.target/i386/pr125032-1.c: Likewise. + * gcc.target/i386/pr125032-2.c: Likewise. + +2026-04-30 Richard Biener + + PR tree-optimization/120398 + PR tree-optimization/123603 + * gcc.dg/vect/costmodel/x86_64/costmodel-pr120398.c: New testcase. + * gcc.dg/vect/costmodel/x86_64/costmodel-pr123603.c: Adjust. + * gcc.target/i386/vect-alignment-peeling-1.c: Likewise. + * gcc.target/i386/vect-alignment-peeling-2.c: Likewise. + * gcc.target/i386/vect-epilogues-10.c: Add -fno-vect-cost-model. + +2026-04-30 Richard Biener + + * gcc.target/i386/shift-gf2p8affine-1.c: Disable epilogue + vectorization. + * gcc.target/i386/shift-gf2p8affine-3.c: Likewise. + * gcc.target/i386/shift-gf2p8affine-7.c: Likewise. + +2026-04-30 Richard Biener + + * gcc.target/i386/vect-epilogues-2.c: Add + --param ix86-vect-compare-costs=0. + * gcc.target/i386/vect-epilogues-2b.c: Duplicate from + gcc.target/i386/vect-epilogues-2.c, add + --param ix86-vect-compare-costs=1 and adjust expected + vectorization. + * gcc.target/i386/vect-pr113078.c: Likewise. + * gcc.target/i386/vect-pr113078b.c: Likewise. + +2026-04-30 Richard Biener + + * gcc.target/i386/vect-strided-1.c: Disable vector cost + comparison. + * gcc.target/i386/vect-strided-2.c: Likewise. + * gcc.target/i386/vect-strided-3.c: Likewise. + * gcc.target/i386/vect-strided-4.c: Likewise. + * gcc.target/i386/vect-strided-1b.c: Copy of + gcc.target/i386/vect-strided-1.c, enable vector cost comparison + and adjust expected code generation. + * gcc.target/i386/vect-strided-2b.c: Likewise. + * gcc.target/i386/vect-strided-3b.c: Likewise. + * gcc.target/i386/vect-strided-4b.c: Likewise. + 2026-04-29 Pengxuan Zheng PR tree-optimization/113379 diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 83250ce01b88..b7aeb09a39b8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,15 @@ +2026-04-30 Felix Morgner + + PR libstdc++/125112 + * include/Makefile.am: Move bits/binders.h from bits_headers to + bits_freestanding. + * include/Makefile.in: + +2026-04-30 Tomasz KamiƄski + + * testsuite/26_numerics/random/uniform_real_distribution/operators/gencanon.cc: + Updated tests. + 2026-04-29 Tomasz KamiƄski * testsuite/29_atomics/headers/stdatomic.h/macros.cc: From fff26a966b9f686bbdfb1baaac757bd9352af7fd Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Thu, 30 Apr 2026 21:37:34 -0600 Subject: [PATCH 034/453] [V3][RISC-V][PR rtl-optimization/96692] Improve xor+xor+ior sequence when possible Consider this code: int f(int a, int b, int c) { return (a ^ b) ^ (a | c); } For RISC-V we generate something like this: xor a1,a0,a1 or a0,a0,a2 xor a0,a1,a0 But this would be better: andn a0,a2,a0 xor a0,a0,a1 It looks like Roger tackled this earlier with splitters for x86. I'd have leaned more towards simplify-rtx, but there may be secondary concerns at play. So I'll attack in the RISC-V target files in a similar manner. The patch, but not the testcase, have been in my tester for a while, so it's been bootstrapped and regression tested on the Pioneer and BPI-F3 board and regression tested on riscv32-elf and riscv64-elf. Obviously I'll wait for pre-commit CI before moving forward. PR rtl-optimization/96692 gcc/ * config/riscv/bitmanip.md (xor+xor+ior splitters): New splitters that ultimately generate andn+xor when possible. gcc/testsuite * gcc.target/riscv/pr96692.c: New test. --- gcc/config/riscv/bitmanip.md | 23 +++++++++++++++++++++++ gcc/testsuite/gcc.target/riscv/pr96692.c | 12 ++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/pr96692.c diff --git a/gcc/config/riscv/bitmanip.md b/gcc/config/riscv/bitmanip.md index c9561b0b6228..79ab17b6a60f 100644 --- a/gcc/config/riscv/bitmanip.md +++ b/gcc/config/riscv/bitmanip.md @@ -1441,3 +1441,26 @@ operands[3] = gen_lowpart (DImode, operands[3]); operands[6] = gen_lowpart (SImode, operands[5]); }) + +(define_split + [(set (match_operand:X 0 "register_operand") + (xor:X (xor:X (ior:X (match_operand:X 1 "register_operand") + (match_operand:X 2 "register_operand")) + (match_dup 1)) + (match_operand:X 3 "register_operand"))) + (clobber (match_operand:X 4 "register_operand"))] + "TARGET_ZBB || TARGET_ZBKB" + [(set (match_dup 4) (and:X (not:X (match_dup 1)) (match_dup 2))) + (set (match_dup 0) (xor:X (match_dup 4) (match_dup 3)))]) + +(define_split + [(set (match_operand:X 0 "register_operand") + (xor:X (xor:X (ior:X (match_operand:X 1 "register_operand") + (match_operand:X 2 "register_operand")) + (match_dup 2)) + (match_operand:X 3 "register_operand"))) + (clobber (match_operand:X 4 "register_operand"))] + "TARGET_ZBB || TARGET_ZBKB" + [(set (match_dup 4) (and:X (not:X (match_dup 2)) (match_dup 1))) + (set (match_dup 0) (xor:X (match_dup 4) (match_dup 3)))]) + diff --git a/gcc/testsuite/gcc.target/riscv/pr96692.c b/gcc/testsuite/gcc.target/riscv/pr96692.c new file mode 100644 index 000000000000..650f4f0f80dd --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/pr96692.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-march=rv64gcb_zicond -mabi=lp64d" { target rv64 } } */ +/* { dg-additional-options "-march=rv32gcb_zicond -mabi=ilp32" { target rv32 } } */ +/* { dg-skip-if "" { *-*-* } { "-O0" "-Og" } } */ + +int f(int a, int b, int c) +{ + return (a ^ b) ^ (a | c); +} + +/* { dg-final { scan-assembler-times "xor\t" 1 } } */ +/* { dg-final { scan-assembler-times "andn\t" 1 } } */ From b7c69e8f540ccd41b0368cd5fe650b4aef3758eb Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 1 May 2026 08:36:24 +0200 Subject: [PATCH 035/453] tree-vect-loop: Remove useless && 1. r16-476 has replaced && slp_node with && 1 and it remained that way until now. THis patch just removes that. 2026-05-01 Jakub Jelinek * tree-vect-loop.cc (vectorizable_reduction): Remove pointless && 1. --- gcc/tree-vect-loop.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index 43b0606a5943..ac7e08cf205c 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -7476,7 +7476,6 @@ vectorizable_reduction (loop_vec_info loop_vinfo, || reduction_type == INTEGER_INDUC_COND_REDUCTION || reduction_type == CONST_COND_REDUCTION || reduction_type == EXTRACT_LAST_REDUCTION) - && 1 && ncopies > 1) { if (dump_enabled_p ()) From c97767d716303fd74aa8a5aa4c3a5c4aea8c9d99 Mon Sep 17 00:00:00 2001 From: Stefan Schulze Frielinghaus Date: Fri, 1 May 2026 09:16:48 +0200 Subject: [PATCH 036/453] s390: Fix dealing with HF vector modes in s390_secondary_reload Initial HF mode support was added in commit r16-6682-g5d6d56d837c which is missing HF vector mode support when dealing with secondary reloads for instructions which do not accept relative operands. gcc/ChangeLog: * config/s390/s390.cc (s390_secondary_reload): Add cases for HF vector modes. * config/s390/s390.md: Add modes V{1,2,4,8}HF to mode iterator ALL. --- gcc/config/s390/s390.cc | 4 ++++ gcc/config/s390/s390.md | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/config/s390/s390.cc b/gcc/config/s390/s390.cc index a8afef3222bb..67e002eed3ac 100644 --- a/gcc/config/s390/s390.cc +++ b/gcc/config/s390/s390.cc @@ -5038,6 +5038,10 @@ s390_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i, __SECONDARY_RELOAD_CASE (V1DI, v1di); __SECONDARY_RELOAD_CASE (V2DI, v2di); __SECONDARY_RELOAD_CASE (V1TI, v1ti); + __SECONDARY_RELOAD_CASE (V1HF, v1hf); + __SECONDARY_RELOAD_CASE (V2HF, v2hf); + __SECONDARY_RELOAD_CASE (V4HF, v4hf); + __SECONDARY_RELOAD_CASE (V8HF, v8hf); __SECONDARY_RELOAD_CASE (V1SF, v1sf); __SECONDARY_RELOAD_CASE (V2SF, v2sf); __SECONDARY_RELOAD_CASE (V4SF, v4sf); diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 7219c9b4a6db..0f3222827c7a 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -748,7 +748,8 @@ (define_mode_iterator ALL [TI DI SI HI QI TF FPRX2 DF SF HF TD DD SD V1QI V2QI V4QI V8QI V16QI V1HI V2HI V4HI V8HI V1SI V2SI V4SI - V1DI V2DI V1SF V2SF V4SF V1TI V1DF V2DF V1TF]) + V1DI V2DI V1HF V2HF V4HF V8HF V1SF V2SF V4SF + V1TI V1DF V2DF V1TF]) ;; These mode iterators allow floating point patterns to be generated from the ;; same template. From 6e2a2d445b15de103c966863183a326600475b20 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 1 May 2026 09:13:21 +0800 Subject: [PATCH 037/453] x86: Correct last_4x_vec_label in ix86_expand_movmem commit b41f96465190751561f6909e858604ceab00595b Author: H.J. Lu x86-64: Inline memmove with overlapping unaligned loads and stores has rtx_code_label *last_4x_vec_label = nullptr; if (min_size == 0 || min_size < 4 * move_max) last_4x_vec_label = gen_label_rtx (); /* Jump to LAST_4X_VEC_LABEL if size < 4 * MOVE_MAX. */ if (last_4x_vec_label) emit_cmp_and_jump_insns (count_exp, GEN_INT (4 * move_max), LTU, nullptr, count_mode, 1, last_4x_vec_label); ... if (last_4x_vec_label) { /* Size > 2 * MOVE_MAX and size <= 4 * MOVE_MAX. */ emit_label (last_4x_vec_label); The last_4x_vec_label block covers min_size <= 4 * MOVE_MAX, not min_size < 4 * MOVE_MAX. When MOVE_MAX == 16 bytes and min_size == 64, the last_4x_vec_label isn't generated. Change min_size < 4 * move_max to min_size <= 4 * move_max to correct the last_4x_vec_label condition. Tested on Linux/x86-64. gcc/ PR target/125117 * config/i386/i386-expand.cc (ix86_expand_movmem): Generate last_4x_vec_label when min_size <= 4 * MOVE_MAX. gcc/testsuite/ PR target/125117 * gcc.dg/pr125117.c: New test. * gfortran.dg/pr125117.f90: Likewise. * gcc.target/i386/builtin-memmove-10.c: Updated. * gcc.target/i386/builtin-memmove-15.c: Likewise. * gcc.target/i386/builtin-memmove-2a.c: Likewise. * gcc.target/i386/builtin-memmove-2b.c: Likewise. * gcc.target/i386/builtin-memmove-2c.c: Likewise. * gcc.target/i386/builtin-memmove-2d.c: Likewise. * gcc.target/i386/builtin-memmove-3a.c: Likewise. * gcc.target/i386/builtin-memmove-3b.c: Likewise. * gcc.target/i386/builtin-memmove-3c.c: Likewise. * gcc.target/i386/builtin-memmove-4a.c: Likewise. * gcc.target/i386/builtin-memmove-4b.c: Likewise. * gcc.target/i386/builtin-memmove-4c.c: Likewise. * gcc.target/i386/builtin-memmove-5b.c: Likewise. * gcc.target/i386/builtin-memmove-5c.c: Likewise. Signed-off-by: H.J. Lu --- gcc/config/i386/i386-expand.cc | 6 ++-- gcc/testsuite/gcc.dg/pr125117.c | 31 ++++++++++++++++++ .../gcc.target/i386/builtin-memmove-10.c | 32 +++++++++++++------ .../gcc.target/i386/builtin-memmove-15.c | 2 +- .../gcc.target/i386/builtin-memmove-2a.c | 2 +- .../gcc.target/i386/builtin-memmove-2b.c | 2 +- .../gcc.target/i386/builtin-memmove-2c.c | 2 +- .../gcc.target/i386/builtin-memmove-2d.c | 2 +- .../gcc.target/i386/builtin-memmove-3a.c | 2 +- .../gcc.target/i386/builtin-memmove-3b.c | 2 +- .../gcc.target/i386/builtin-memmove-3c.c | 2 +- .../gcc.target/i386/builtin-memmove-4a.c | 2 +- .../gcc.target/i386/builtin-memmove-4b.c | 2 +- .../gcc.target/i386/builtin-memmove-4c.c | 2 +- .../gcc.target/i386/builtin-memmove-5b.c | 2 +- .../gcc.target/i386/builtin-memmove-5c.c | 2 +- gcc/testsuite/gfortran.dg/pr125117.f90 | 23 +++++++++++++ 17 files changed, 93 insertions(+), 25 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr125117.c create mode 100644 gcc/testsuite/gfortran.dg/pr125117.f90 diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc index 366ad513da96..df44a4eb99da 100644 --- a/gcc/config/i386/i386-expand.cc +++ b/gcc/config/i386/i386-expand.cc @@ -10585,12 +10585,12 @@ ix86_expand_movmem (rtx operands[]) more_8x_vec_label); rtx_code_label *last_4x_vec_label = nullptr; - if (min_size == 0 || min_size < 4 * move_max) + if (min_size == 0 || min_size <= 4 * move_max) last_4x_vec_label = gen_label_rtx (); - /* Jump to LAST_4X_VEC_LABEL if size < 4 * MOVE_MAX. */ + /* Jump to LAST_4X_VEC_LABEL if size <= 4 * MOVE_MAX. */ if (last_4x_vec_label) - emit_cmp_and_jump_insns (count_exp, GEN_INT (4 * move_max), LTU, + emit_cmp_and_jump_insns (count_exp, GEN_INT (4 * move_max), LEU, nullptr, count_mode, 1, last_4x_vec_label); diff --git a/gcc/testsuite/gcc.dg/pr125117.c b/gcc/testsuite/gcc.dg/pr125117.c new file mode 100644 index 000000000000..6535484bce53 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr125117.c @@ -0,0 +1,31 @@ +/* { dg-do run } */ +/* { dg-options "-O0" } */ + +#include +#include + +#define OFFSET 32 + +char buffer[128]; +char expected[64]; + +void +foo (char *dest, char *src, size_t n) +{ + if (n == 64) + __builtin_memmove (dest, src, n); +} + +int +main () +{ + memset (buffer, -2, sizeof (buffer)); + memset (buffer + OFFSET, -1, sizeof (buffer) - OFFSET); + memset (expected, -2, sizeof (expected)); + memset (expected + OFFSET / 2, -1, OFFSET + OFFSET / 2); + foo (buffer, buffer + OFFSET / 2, 64); + if (memcmp (expected, buffer, 64) != 0) + abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-10.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-10.c index 4f183747e702..76afef9d2954 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-10.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-10.c @@ -9,25 +9,25 @@ **.LFB0: ** .cfi_startproc ** cmpq \$63, %rdx -** ja .L12 +** ja .L13 **.L1: ** ret ** .p2align 4,,10 ** .p2align 3 -**.L12: +**.L13: ** movq %rdi, %rcx ** movq %rsi, %rax ** cmpq \$128, %rdx -** jbe .L13 +** jbe .L14 ** movq %rdx, %rsi ** cmpq %rdi, %rax -** jb .L6 +** jb .L7 ** je .L1 ** movdqu -16\(%rax,%rdx\), %xmm7 ** movdqu -32\(%rax,%rdx\), %xmm6 ** movdqu -48\(%rax,%rdx\), %xmm5 ** movdqu -64\(%rax,%rdx\), %xmm4 -**.L7: +**.L8: ** movdqu \(%rax\), %xmm3 ** subq \$64, %rsi ** addq \$64, %rcx @@ -40,7 +40,7 @@ ** movups %xmm1, -32\(%rcx\) ** movups %xmm0, -16\(%rcx\) ** cmpq \$64, %rsi -** ja .L7 +** ja .L8 ** movups %xmm7, -16\(%rdi,%rdx\) ** movups %xmm6, -32\(%rdi,%rdx\) ** movups %xmm5, -48\(%rdi,%rdx\) @@ -48,7 +48,9 @@ ** ret ** .p2align 4,,10 ** .p2align 3 -**.L13: +**.L14: +** cmpq \$64, %rdx +** jbe .L6 ** movdqu \(%rsi\), %xmm7 ** movdqu 16\(%rsi\), %xmm6 ** movdqu 32\(%rsi\), %xmm5 @@ -69,13 +71,25 @@ ** .p2align 4,,10 ** .p2align 3 **.L6: +** movdqu \(%rsi\), %xmm3 +** movdqu 16\(%rsi\), %xmm2 +** movdqu -16\(%rsi,%rdx\), %xmm1 +** movdqu -32\(%rsi,%rdx\), %xmm0 +** movups %xmm3, \(%rdi\) +** movups %xmm2, 16\(%rdi\) +** movups %xmm1, -16\(%rdi,%rdx\) +** movups %xmm0, -32\(%rdi,%rdx\) +** ret +** .p2align 4,,10 +** .p2align 3 +**.L7: ** movdqu \(%rax\), %xmm3 ** movdqu 16\(%rax\), %xmm2 ** leaq \(%rdi,%rdx\), %rcx ** movdqu 32\(%rax\), %xmm1 ** movdqu 48\(%rax\), %xmm0 ** addq %rdx, %rax -**.L8: +**.L9: ** movdqu -16\(%rax\), %xmm7 ** movdqu -32\(%rax\), %xmm6 ** subq \$64, %rsi @@ -88,7 +102,7 @@ ** movups %xmm5, 16\(%rcx\) ** movups %xmm4, \(%rcx\) ** cmpq \$64, %rsi -** ja .L8 +** ja .L9 ** movups %xmm3, \(%rdi\) ** movups %xmm2, 16\(%rdi\) ** movups %xmm1, 32\(%rdi\) diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-15.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-15.c index 5fb833bc7e8e..339c07f9d701 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-15.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-15.c @@ -42,7 +42,7 @@ ** .p2align 3 **.L5: ** cmpl \$64, %edx -** jnb .L14 +** ja .L14 ** movl %edx, %edx ** movdqu \(%rsi\), %xmm3 ** movdqu 16\(%rsi\), %xmm2 diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-2a.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-2a.c index 903a31cfd343..b77cadfa063e 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-2a.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-2a.c @@ -76,7 +76,7 @@ ** .p2align 3 **.L18: ** cmpq \$64, %rdx -** jb .L10 +** jbe .L10 ** movdqu \(%rsi\), %xmm7 ** movdqu 16\(%rsi\), %xmm6 ** movdqu 32\(%rsi\), %xmm5 diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-2b.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-2b.c index ac676d078673..9076a0a9ff3d 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-2b.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-2b.c @@ -80,7 +80,7 @@ ** .p2align 3 **.L19: ** cmpq \$128, %rdx -** jb .L11 +** jbe .L11 ** vmovdqu \(%rsi\), %ymm7 ** vmovdqu 32\(%rsi\), %ymm6 ** vmovdqu 64\(%rsi\), %ymm5 diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-2c.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-2c.c index 656986b458eb..946173a6f789 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-2c.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-2c.c @@ -83,7 +83,7 @@ ** .p2align 3 **.L20: ** cmpq \$256, %rdx -** jb .L12 +** jbe .L12 ** vmovdqu64 \(%rsi\), %zmm7 ** vmovdqu64 64\(%rsi\), %zmm6 ** vmovdqu64 -64\(%rsi,%rdx\), %zmm3 diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-2d.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-2d.c index 324de74519ea..c7c0543b793c 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-2d.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-2d.c @@ -94,7 +94,7 @@ **.L20: ** .cfi_def_cfa_offset 40 ** cmpq \$32, %rdx -** jb .L9 +** jbe .L9 ** movq %rbx, \(%rsp\) ** movq %r14, 16\(%rsp\) ** .cfi_offset 3, -40 diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-3a.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-3a.c index cddfd49615b3..23ab0fa9f982 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-3a.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-3a.c @@ -22,7 +22,7 @@ ** cmpq \$128, %rdx ** ja .L5 ** cmpq \$64, %rdx -** jnb .L15 +** ja .L15 ** movdqu \(%rsi\), %xmm3 ** movdqu 16\(%rsi\), %xmm2 ** movdqu -16\(%rsi,%rdx\), %xmm1 diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-3b.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-3b.c index eda5e749c54b..d45adbcdf481 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-3b.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-3b.c @@ -72,7 +72,7 @@ ** .p2align 3 **.L17: ** cmpq \$128, %rdx -** jb .L8 +** jbe .L8 ** vmovdqu \(%rsi\), %ymm7 ** vmovdqu 32\(%rsi\), %ymm6 ** vmovdqu 64\(%rsi\), %ymm5 diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-3c.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-3c.c index 50fac7e64d1a..4b2f27fefa08 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-3c.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-3c.c @@ -83,7 +83,7 @@ ** .p2align 3 **.L20: ** cmpq \$256, %rdx -** jb .L9 +** jbe .L9 ** vmovdqu64 \(%rsi\), %zmm7 ** vmovdqu64 64\(%rsi\), %zmm6 ** vmovdqu64 -64\(%rsi,%rdx\), %zmm3 diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-4a.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-4a.c index 49b84477482b..82c2367a1c3d 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-4a.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-4a.c @@ -50,7 +50,7 @@ ** .p2align 3 **.L14: ** cmpq \$64, %rdx -** jb .L6 +** jbe .L6 ** movdqu \(%rsi\), %xmm7 ** movdqu 16\(%rsi\), %xmm6 ** movdqu 32\(%rsi\), %xmm5 diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-4b.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-4b.c index f948d17a0805..4004f0d18456 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-4b.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-4b.c @@ -22,7 +22,7 @@ ** cmpq \$256, %rdx ** ja .L5 ** cmpq \$128, %rdx -** jnb .L16 +** ja .L16 ** vmovdqu \(%rsi\), %ymm3 ** vmovdqu 32\(%rsi\), %ymm2 ** vmovdqu -32\(%rsi,%rdx\), %ymm1 diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-4c.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-4c.c index 5cf2520d2140..1319fac0d50f 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-4c.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-4c.c @@ -73,7 +73,7 @@ ** .p2align 3 **.L17: ** cmpq \$256, %rdx -** jb .L8 +** jbe .L8 ** vmovdqu64 \(%rsi\), %zmm7 ** vmovdqu64 64\(%rsi\), %zmm6 ** vmovdqu64 -64\(%rsi,%rdx\), %zmm3 diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-5b.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-5b.c index d42da7f2c809..cba000bd282a 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-5b.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-5b.c @@ -51,7 +51,7 @@ ** .p2align 3 **.L15: ** cmpq \$128, %rdx -** jb .L6 +** jbe .L6 ** vmovdqu \(%rsi\), %ymm7 ** vmovdqu 32\(%rsi\), %ymm6 ** vmovdqu 64\(%rsi\), %ymm5 diff --git a/gcc/testsuite/gcc.target/i386/builtin-memmove-5c.c b/gcc/testsuite/gcc.target/i386/builtin-memmove-5c.c index 8eac584029f6..07f1e05e4f27 100644 --- a/gcc/testsuite/gcc.target/i386/builtin-memmove-5c.c +++ b/gcc/testsuite/gcc.target/i386/builtin-memmove-5c.c @@ -22,7 +22,7 @@ ** cmpq \$512, %rdx ** ja .L5 ** cmpq \$256, %rdx -** jnb .L16 +** ja .L16 ** vmovdqu64 \(%rsi\), %zmm3 ** vmovdqu64 64\(%rsi\), %zmm2 ** vmovdqu64 -64\(%rsi,%rdx\), %zmm1 diff --git a/gcc/testsuite/gfortran.dg/pr125117.f90 b/gcc/testsuite/gfortran.dg/pr125117.f90 new file mode 100644 index 000000000000..a03250dde08c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr125117.f90 @@ -0,0 +1,23 @@ +! { dg-do run } +! { dg-options "-O0" } +! PR fortran/125117 + +program test + implicit none + character(len=64) :: fixed + character(:), allocatable :: got + fixed = 'hello world' + got = getName(fixed) + if (trim(got) == 'hello world') then + print *, 'PASS' + else + print *, 'FAIL: got=[', trim(got), ']' + call abort() + end if +contains + function getName(fixed) result(name) + character(len=64), intent(in) :: fixed + character(:), allocatable :: name + name = fixed + end function +end program From c1ac0abefe574cda048760b4540bb12097fe0876 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Fri, 1 May 2026 12:54:38 +0200 Subject: [PATCH 038/453] Ada: Link with PIC static Ada runtime when -pie is specified This changes gnatlink to append _pic to the name of the static Ada runtime when -pie is passed on the command line. gcc/ada/ PR ada/87936 * gnatlink.adb (Gnatlink): Rename local variable and add Output_PIE local variable; when it is set, compile the binder file with -fPIE. (Process_Args): Set Output_PIE upon seeing -pie. (Process_Binder_File): Append "_pic" to the name of the static Ada runtime if Output_PIE is set. gcc/testsuite/ * gnat.dg/pie1.adb: New file. --- gcc/ada/gnatlink.adb | 57 ++++++++++++++++++++++++++++------ gcc/testsuite/gnat.dg/pie1.adb | 9 ++++++ 2 files changed, 56 insertions(+), 10 deletions(-) create mode 100644 gcc/testsuite/gnat.dg/pie1.adb diff --git a/gcc/ada/gnatlink.adb b/gcc/ada/gnatlink.adb index 6a53d550470a..85517bf3318d 100644 --- a/gcc/ada/gnatlink.adb +++ b/gcc/ada/gnatlink.adb @@ -166,8 +166,6 @@ procedure Gnatlink is Verbose_Mode : Boolean := False; Very_Verbose_Mode : Boolean := False; - Standard_Gcc : Boolean := True; - Compile_Bind_File : Boolean := True; -- Set to False if bind file is not to be compiled @@ -175,6 +173,12 @@ procedure Gnatlink is -- Set to True by switch -M. The map file name is derived from -- the ALI file name (mainprog.ali => mainprog.map). + Output_PIE : Boolean := False; + -- Set to True if -pie is specified on the command line + + Standard_GCC : Boolean := True; + -- Set to False if --GCC is specified on the command line + Object_List_File_Supported : Boolean; for Object_List_File_Supported'Size use Character'Size; pragma Import @@ -568,6 +572,13 @@ procedure Gnatlink is Binder_Options.Table (Binder_Options.Last) := Linker_Options.Table (Linker_Options.Last); + elsif Arg'Length = 4 and then Arg (2 .. 4) = "pie" then + Output_PIE := True; + + Linker_Options.Increment_Last; + Linker_Options.Table (Linker_Options.Last) := + new String'(Arg); + elsif Arg'Length >= 7 and then Arg (1 .. 7) = "--LINK=" then if Arg'Length = 7 then Exit_With_Error ("Missing argument for --LINK="); @@ -615,7 +626,7 @@ procedure Gnatlink is begin if Program_Args.all (1).all /= Gcc.all then Gcc := new String'(Program_Args.all (1).all); - Standard_Gcc := False; + Standard_GCC := False; end if; -- Set appropriate flags for switches passed @@ -1114,10 +1125,28 @@ procedure Gnatlink is elsif Next_Line (Nfirst .. Nlast) = "-lgnarl" or else Next_Line (Nfirst .. Nlast) = "-lgnat" - or else - Next_Line - (1 .. Natural'Min (Nlast, 8 + Library_Version'Length)) = - Shared_Lib ("gnarl") + then + if Output_PIE and then GNAT_Static then + Search_Library_Path + (Next_Line => Next_Line (Nfirst .. Nlast) & "_pic", + Nfirst => Nfirst, + Nlast => Nlast + 4, + Last => Nlast + 4, + GNAT_Static => True, + GNAT_Shared => GNAT_Shared); + else + Search_Library_Path + (Next_Line => Next_Line, + Nfirst => Nfirst, + Nlast => Nlast, + Last => Nlast, + GNAT_Static => GNAT_Static, + GNAT_Shared => GNAT_Shared); + end if; + + elsif Next_Line + (1 .. Natural'Min (Nlast, 8 + Library_Version'Length)) = + Shared_Lib ("gnarl") or else Next_Line (1 .. Natural'Min (Nlast, 7 + Library_Version'Length)) = @@ -1518,7 +1547,7 @@ begin -- back end switches from this ALI file and use these switches to compile -- the binder generated file - if Compile_Bind_File and then Standard_Gcc then + if Compile_Bind_File and then Standard_GCC then Initialize_ALI; Name_Len := Ali_File_Name'Length; Name_Buffer (1 .. Name_Len) := Ali_File_Name.all; @@ -1621,8 +1650,6 @@ begin -- because bindgen uses brackets encoding for all upper -- half and wide characters in identifier names. - -- In addition, in CodePeer mode compile with -x adascil -gnatcC - Binder_Options_From_ALI.Increment_Last; Binder_Options_From_ALI.Table (Binder_Options_From_ALI.Last) := new String'("-gnatA"); @@ -1633,6 +1660,8 @@ begin Binder_Options_From_ALI.Table (Binder_Options_From_ALI.Last) := new String'("-gnatiw"); + -- In addition, in CodePeer mode compile with -x adascil -gnatcC + if Opt.CodePeer_Mode then Binder_Options_From_ALI.Increment_Last; Binder_Options_From_ALI.Table (Binder_Options_From_ALI.Last) := @@ -1645,6 +1674,14 @@ begin new String'("-gnatcC"); end if; + -- Moreover, if -pie is specified, make sure that -fPIE is passed + + if Output_PIE then + Binder_Options_From_ALI.Increment_Last; + Binder_Options_From_ALI.Table (Binder_Options_From_ALI.Last) := + new String'("-fPIE"); + end if; + -- Locate all the necessary programs and verify required files are present Gcc_Path := System.OS_Lib.Locate_Exec_On_Path (Gcc.all); diff --git a/gcc/testsuite/gnat.dg/pie1.adb b/gcc/testsuite/gnat.dg/pie1.adb new file mode 100644 index 000000000000..5d79206ad45f --- /dev/null +++ b/gcc/testsuite/gnat.dg/pie1.adb @@ -0,0 +1,9 @@ +-- { dg-do link } +-- { dg-options "-fPIE -largs -pie" { target pie } } + +with Ada.Text_IO; use Ada.Text_IO; + +procedure PIE1 is +begin + Put_Line ("Hello PIE World!"); +end; From 0a2b9dc9655f12e43a0e67f26ea21ff4f4e038fe Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Thu, 30 Apr 2026 13:27:48 +0100 Subject: [PATCH 039/453] libstdc++: Do not assume URBG::result_type exists [PR121919] The ranges::sample and ranges::shuffle algorithms are supposed to work with types which model std::uniform_random_bit_generator, which means they should not assume that G::result_type is present. That isn't needed to satisfy the concept. Change the algorithms to use decltype(__g()) instead of using result_type. This isn't sufficient to fix the bug though, because those algorithms use std::uniform_int_distribution and that class template's operator() overloads depend on the more restrictive uniform random bit generator requirements, which do include the presence of a nested result_type member. We need to change std::uniform_int_distribution to also use decltype instead of the nested result_type, even though the standard says that std::uniform_int_distribution is allowed to assume that result_type exists. There's yet another problem, which is that a type that returns random bool values can model the concept, but doesn't meet the named requirements and can't be used with std::uniform_int_distribution. That isn't addressed by this change. libstdc++-v3/ChangeLog: PR libstdc++/121919 * include/bits/ranges_algo.h (__sample_fn, __shuffle_fn): Use decltype(__g()) instead of remove_reference_t<_G>::result_type. * include/bits/uniform_int_dist.h (uniform_int_distribution::operator()): Use decltype(__urng()) instead of _UniformRandomBitGenerator::result_type (uniform_int_distribution::__generate_impl): Likewise. * testsuite/25_algorithms/sample/121919.cc: New test. * testsuite/25_algorithms/shuffle/121919.cc: New test. Reviewed-by: Nathan Myers --- libstdc++-v3/include/bits/ranges_algo.h | 7 ++--- libstdc++-v3/include/bits/uniform_int_dist.h | 4 +-- .../testsuite/25_algorithms/sample/121919.cc | 28 +++++++++++++++++++ .../testsuite/25_algorithms/shuffle/121919.cc | 25 +++++++++++++++++ 4 files changed, 57 insertions(+), 7 deletions(-) create mode 100644 libstdc++-v3/testsuite/25_algorithms/sample/121919.cc create mode 100644 libstdc++-v3/testsuite/25_algorithms/shuffle/121919.cc diff --git a/libstdc++-v3/include/bits/ranges_algo.h b/libstdc++-v3/include/bits/ranges_algo.h index 0d1928d52a2f..4330d3e70b84 100644 --- a/libstdc++-v3/include/bits/ranges_algo.h +++ b/libstdc++-v3/include/bits/ranges_algo.h @@ -1850,8 +1850,7 @@ namespace ranges using __distrib_type = uniform_int_distribution<_Size>; using __param_type = typename __distrib_type::param_type; using _USize = __detail::__make_unsigned_like_t<_Size>; - using __uc_type - = common_type_t::result_type, _USize>; + using __uc_type = common_type_t; if (__first == __last) return __out; @@ -1964,9 +1963,7 @@ namespace ranges using __ud_type = __detail::__make_unsigned_like_t<_DistanceType>; using __distr_type = std::uniform_int_distribution<__ud_type>; using __p_type = typename __distr_type::param_type; - - using __uc_type - = common_type_t::result_type, __ud_type>; + using __uc_type = common_type_t; if constexpr (sized_sentinel_for<_Sent, _Iter>) { diff --git a/libstdc++-v3/include/bits/uniform_int_dist.h b/libstdc++-v3/include/bits/uniform_int_dist.h index dcf763ae7649..9c5514c7c138 100644 --- a/libstdc++-v3/include/bits/uniform_int_dist.h +++ b/libstdc++-v3/include/bits/uniform_int_dist.h @@ -288,7 +288,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION operator()(_UniformRandomBitGenerator& __urng, const param_type& __param) { - typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; + typedef decltype(__urng()) _Gresult_type; typedef typename make_unsigned::type __utype; typedef typename common_type<_Gresult_type, __utype>::type __uctype; @@ -386,7 +386,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const param_type& __param) { __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - typedef typename _UniformRandomBitGenerator::result_type _Gresult_type; + typedef decltype(__urng()) _Gresult_type; typedef typename make_unsigned::type __utype; typedef typename common_type<_Gresult_type, __utype>::type __uctype; diff --git a/libstdc++-v3/testsuite/25_algorithms/sample/121919.cc b/libstdc++-v3/testsuite/25_algorithms/sample/121919.cc new file mode 100644 index 000000000000..9fdfbf560c71 --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/sample/121919.cc @@ -0,0 +1,28 @@ +// { dg-do compile { target c++20 } } + +// Bug 121919 ranges::sample assumes a uniform_random_bit_generator +// provides result_type + +#include +#include + +struct G +{ + constexpr static unsigned min() { return 0; } + constexpr static unsigned max() { return 10; } + unsigned operator()() const; +}; + +static_assert(std::uniform_random_bit_generator); + +void +test_pr121919() +{ + int i2[2]{ 1, 2 }; + __gnu_test::test_random_access_range from(i2); + int i1[1]; + __gnu_test::test_random_access_range to(i1); + std::ranges::sample(from, std::ranges::begin(to), 1, G{}); + std::ranges::sample(std::ranges::begin(from), std::ranges::end(to), + std::ranges::begin(to), 1, G{}); +} diff --git a/libstdc++-v3/testsuite/25_algorithms/shuffle/121919.cc b/libstdc++-v3/testsuite/25_algorithms/shuffle/121919.cc new file mode 100644 index 000000000000..9425394c50ee --- /dev/null +++ b/libstdc++-v3/testsuite/25_algorithms/shuffle/121919.cc @@ -0,0 +1,25 @@ +// { dg-do compile { target c++20 } } + +// Bug 121919 ranges::shuffle assumes a uniform_random_bit_generator +// provides result_type + +#include +#include + +struct G +{ + constexpr static unsigned min() { return 0; } + constexpr static unsigned max() { return 10; } + unsigned operator()() const; +}; + +static_assert(std::uniform_random_bit_generator); + +void +test_pr121919() +{ + int arr[2]{ 1, 2 }; + __gnu_test::test_random_access_range r(arr); + std::ranges::shuffle(r, G{}); + std::ranges::shuffle(std::ranges::begin(r), std::ranges::end(r), G{}); +} From 8050bda5ec6892c312bfaafa753532cba7b54d8c Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Fri, 1 May 2026 12:15:17 +0100 Subject: [PATCH 040/453] libstdc++: Improve Doxygen comments for contents Use markdown and suppress unwanted docs for internal helpers. libstdc++-v3/ChangeLog: * include/bits/stl_iterator.h: Prevent Doxygen from documenting namespace __detail as part of the Iterators topic. * include/bits/stl_iterator_base_funcs.h: Likewise. Also mark internal helpers as undocumented. (distance, advance): Improve Doxygen comments. * include/bits/stl_iterator_base_types.h (iterator): Use markdown in Doxygen comment. Add @deprecated. (iterator_traits): Improve wording of Doxygen comment. --- libstdc++-v3/include/bits/stl_iterator.h | 4 +++ .../include/bits/stl_iterator_base_funcs.h | 32 +++++++++++++------ .../include/bits/stl_iterator_base_types.h | 17 ++++++---- 3 files changed, 37 insertions(+), 16 deletions(-) diff --git a/libstdc++-v3/include/bits/stl_iterator.h b/libstdc++-v3/include/bits/stl_iterator.h index 6439deb608a6..ea083543c1d4 100644 --- a/libstdc++-v3/include/bits/stl_iterator.h +++ b/libstdc++-v3/include/bits/stl_iterator.h @@ -2619,6 +2619,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template class basic_const_iterator; + /// @cond undocumented namespace __detail { template @@ -2646,11 +2647,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __basic_const_iterator_iter_cat<_It> { using iterator_category = __iter_category_t<_It>; }; } // namespace detail + /// @endcond template using const_iterator = __conditional_t<__detail::__constant_iterator<_It>, _It, basic_const_iterator<_It>>; + /// @cond undocumented namespace __detail { template @@ -2661,6 +2664,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __const_sentinel<_Sent> { using type = const_iterator<_Sent>; }; } // namespace __detail + /// @endcond template using const_sentinel = typename __detail::__const_sentinel<_Sent>::type; diff --git a/libstdc++-v3/include/bits/stl_iterator_base_funcs.h b/libstdc++-v3/include/bits/stl_iterator_base_funcs.h index d85b39365400..2762090c6e48 100644 --- a/libstdc++-v3/include/bits/stl_iterator_base_funcs.h +++ b/libstdc++-v3/include/bits/stl_iterator_base_funcs.h @@ -131,8 +131,10 @@ _GLIBCXX_END_NAMESPACE_CONTAINER #endif #ifdef __glibcxx_concepts +/// @cond undocumented namespace __detail { + // Satisfied if ITER_TRAITS(Iter)::iterator_category is valid and is // at least as strong as ITER_TRAITS(Iter)::iterator_concept. template @@ -149,21 +151,24 @@ namespace __detail = input_iterator<_Iter> && requires { typename __iter_traits<_Iter>::iterator_concept; } && ! __iter_category_converts_to_concept<_Iter>; + } // namespace __detail +/// @endcond #endif /** * @brief A generalization of pointer arithmetic. - * @param __first An input iterator. - * @param __last An input iterator. + * @param __first,__last Input iterators that form a valid range. * @return The distance between them. * - * Returns @c n such that __first + n == __last. This requires - * that @p __last must be reachable from @p __first. Note that @c - * n may be negative. + * Returns `n` such that `__first + n == __last`. + * This requires that `__last` must be reachable from `__first`, or + * for random access iterators either `__last` is reachable from `__first` + * or `__first` is reachable from `__last`. In the latter case, `n` + * may be negative. * - * For random access iterators, this uses their @c + and @c - operations - * and are constant time. For other %iterator classes they are linear time. + * For random access iterators, this uses their `+` and `-` operations + * and is constant time. For other %iterator classes they are linear time. */ template _GLIBCXX_NODISCARD __attribute__((__always_inline__)) @@ -194,6 +199,8 @@ namespace __detail std::__iterator_category(__first)); } + /// @cond undocumented + template inline _GLIBCXX14_CONSTEXPR void __advance(_InputIterator& __i, _Distance __n, input_iterator_tag) @@ -244,15 +251,17 @@ namespace __detail __advance(_OutputIterator&, _Distance, output_iterator_tag) = delete; #endif + /// @endcond + /** * @brief A generalization of pointer arithmetic. * @param __i An input iterator. * @param __n The @a delta by which to change @p __i. * - * This increments @p i by @p n. For bidirectional and random access - * iterators, @p __n may be negative, in which case @p __i is decremented. + * This increments `i` by `n`. For bidirectional and random access + * iterators, `__n` may be negative, in which case `__i` is decremented. * - * For random access iterators, this uses their @c + and @c - operations + * For random access iterators, this uses their `+` and `-` operations * and are constant time. For other %iterator classes they are linear time. */ template @@ -316,6 +325,7 @@ namespace __detail #endif // C++11 + /// @cond undocumented #if __glibcxx_algorithm_iterator_requirements // C++ >= 20 template consteval auto @@ -373,6 +383,8 @@ namespace __detail #define _GLIBCXX_ITER_MOVE(__it) _GLIBCXX_MOVE(*__it) #endif + /// @endcond + _GLIBCXX_END_NAMESPACE_VERSION } // namespace diff --git a/libstdc++-v3/include/bits/stl_iterator_base_types.h b/libstdc++-v3/include/bits/stl_iterator_base_types.h index 9c008276b98f..2366b5b5ce3e 100644 --- a/libstdc++-v3/include/bits/stl_iterator_base_types.h +++ b/libstdc++-v3/include/bits/stl_iterator_base_types.h @@ -122,7 +122,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * used in specializations and overloading. * * In particular, there are no default implementations of requirements - * such as @c operator++ and the like. (How could there be?) + * such as `operator++` and the like. (How could there be?) + * + * @deprecated Deprecated since C++17. The recommended alternative is to + * simply define the typedefs directly in your iterator class. */ template @@ -144,9 +147,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @brief Traits class for iterators. * * This class does nothing but define nested typedefs. The general - * version simply @a forwards the nested typedefs from the Iterator - * argument. Specialized versions for pointers and pointers-to-const - * provide tighter, more correct semantics. + * version simply declares aliases for the nested typedefs from the Iterator + * argument. Partial specializations for pointers define the typedefs + * appropriately for the semantics of pointers. */ template struct iterator_traits; @@ -230,6 +233,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; #endif + /// @cond undocumented /** * This function is not a part of the C++ standard but is syntactic * sugar for internal library use only. @@ -241,8 +245,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __iterator_category(const _Iter&) { return typename iterator_traits<_Iter>::iterator_category(); } - ///@} - #if __cplusplus >= 201103L template using __iter_category_t @@ -281,6 +283,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { enum { __value = __is_base_of(random_access_iterator_tag, _Cat) }; }; #endif + /// @endcond + /// @} + _GLIBCXX_END_NAMESPACE_VERSION } // namespace From 59cf910a43dca038ddab7655215171577e1df238 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Fri, 1 May 2026 12:36:20 +0100 Subject: [PATCH 041/453] libstdc++: Suppress Doxygen docs for internals in libstdc++-v3/ChangeLog: * include/bits/locale_conv.h: Prevent namespace __detail from being documented as part of the Locales topic. --- libstdc++-v3/include/bits/locale_conv.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libstdc++-v3/include/bits/locale_conv.h b/libstdc++-v3/include/bits/locale_conv.h index b331d7d67327..5ef557cc1e1f 100644 --- a/libstdc++-v3/include/bits/locale_conv.h +++ b/libstdc++-v3/include/bits/locale_conv.h @@ -48,6 +48,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @{ */ + /// @cond undocumented + template bool @@ -255,6 +257,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Tp* _M_ptr; }; } + /// @endcond _GLIBCXX_BEGIN_NAMESPACE_CXX11 From bbe8fff16e366976bd95b981c138e5f12caf9010 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Fri, 1 May 2026 10:58:57 +0100 Subject: [PATCH 042/453] libstdc++: Tweak Doxygen comments for experimental simd I noticed that Doxygen was not documenting the contents of as part of namespace std, because it didn't know about the _GLIBCXX_SIMD_BEGIN_NAMESPACE and _GLIBCXX_SIMD_END_NAMESPACE macros which open and close namespace std::experimental::parallelism_v2. After defining those macros in the Doxygen config, the Doxygen comments in experimental/bits/simd.h were causing namespace std to be documented as part of the Parallelism TS v2. That's because the preprocessed code looks like: /** @ingroup ts_simd * @{ */ namespace std::experimental::inline parallelism_v2 { This causes Doxygen to apply the @ingroup command to all three of namespace std, namespace std::experimental, and namespace std::experimental::parallelism_v2. I don't know if this is the intended behaviour, but it doesn't seem useful so I've opened an issue about it: https://github.com/doxygen/doxygen/issues/12114 To workaround this, we can move the _GLIBCXX_SIMD_BEGIN_NAMESPACE macro before the @{ group and document it separately with a @namespace comment. That makes the @ingroup only apply to the namespace named by the @namespace command, not to its enclosing namespaces as well. Moving the position of the BEGIN macro also fixes the nesting, as previously we had @{ then BEGIN then @} then END. Now we have BEGIN @{ @} END which seems preferable. libstdc++-v3/ChangeLog: * doc/doxygen/user.cfg.in (PREDEFINED): Add BEGIN/END macros for the namespace. * include/experimental/bits/simd.h: Move BEGIN macro before Doxygen @{ group. --- libstdc++-v3/doc/doxygen/user.cfg.in | 2 ++ libstdc++-v3/include/experimental/bits/simd.h | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/doc/doxygen/user.cfg.in b/libstdc++-v3/doc/doxygen/user.cfg.in index fc82debd1b4b..9393d5dfb437 100644 --- a/libstdc++-v3/doc/doxygen/user.cfg.in +++ b/libstdc++-v3/doc/doxygen/user.cfg.in @@ -2912,6 +2912,8 @@ PREDEFINED = __cplusplus=202603L \ _GLIBCXX_HAVE_ICONV=1 \ "_GLIBCXX_DOXYGEN_ONLY(X)=X " \ __exception_ptr=__unspecified__ \ + "_GLIBCXX_SIMD_BEGIN_NAMESPACE=namespace std::experimental::inline parallelism_v2 {" \ + "_GLIBCXX_SIMD_END_NAMESPACE=}" \ # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this diff --git a/libstdc++-v3/include/experimental/bits/simd.h b/libstdc++-v3/include/experimental/bits/simd.h index 8c30c8af2688..ce0867fd8eb8 100644 --- a/libstdc++-v3/include/experimental/bits/simd.h +++ b/libstdc++-v3/include/experimental/bits/simd.h @@ -55,6 +55,11 @@ #include #endif +/** @namespace std::experimental::parallelism_v2 + * @ingroup ts_simd + */ +_GLIBCXX_SIMD_BEGIN_NAMESPACE + /** @ingroup ts_simd * @{ */ @@ -78,7 +83,6 @@ * Variable names: * __k: mask object (vector- or bitmask) */ -_GLIBCXX_SIMD_BEGIN_NAMESPACE #if !_GLIBCXX_SIMD_X86INTRIN using __m128 [[__gnu__::__vector_size__(16)]] = float; From 022afdcb9b71f776b825e3d7d148cd73e33b720f Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 1 May 2026 06:47:07 -0600 Subject: [PATCH 043/453] [PR target/124559][RISC-V] Improve RISC-V constant synthesis for some HImode constants So this is a trivial little bug we found doing some comparisons against LLVM. For the function sub2 in load-immediate.c we get this code: li a5,-32768 sh a5,0(a0) xori a5,a5,-1 sh a5,0(a1) Note carefully that li+xori. There's a slightly better sequence here from an encoding standpoint. Instead of using xori we can adjust the synthesis sequence to target an "addi" for that statement and in doing so we can save two code bytes of space. The xori sequence was used because we can't do this in gcc: (set (dest:HI) (const_int 0x8000)) We're in HI mode so the constant must be sign extended from bit 15 to a HOST_WIDE_INT. Fixing this isn't hard. The key is realizing the vast majority of the time we really don't want/need to load in HImode and in fact we're typically going to be generating objects in word_mode. So instead of passing in the pre-promoted mode, pass in the post-promoted mode. That's fine and good with one caveat. CSE fails to use NEG/NOT to derive a new constant from an older constant, even if the cost is smaller, which caused a code quality regression elsewhere on the RISC-V port. So this patch adjusts CSE ever-so-slightly to allow it to derive constants from a previous constant using NOT/NEG in a fairly obvious way. This has been in my tester for a while, so it's been through the usual bootstrap & regression test on the Pioneer, BPI, x86 and aarch64 and others as well as testing across the various embedded targets. Waiting on pre-commit testing to do its thing. PR target/124559 gcc/ * config/riscv/riscv-protos.h (riscv_move_integer): Drop mode argument. * config/riscv/riscv.cc (riscv_move_integer): Pass mode after promotions to riscv_build_integer. All callers changed. * config/riscv/riscv.md: Corresponding changes. * cse.cc (cse_insn): Try to derive one constant from another using NOT/NEG. --- gcc/config/riscv/riscv-protos.h | 2 +- gcc/config/riscv/riscv.cc | 20 ++++++++++---------- gcc/config/riscv/riscv.md | 6 ++---- gcc/cse.cc | 28 ++++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 15 deletions(-) diff --git a/gcc/config/riscv/riscv-protos.h b/gcc/config/riscv/riscv-protos.h index dd029c704133..494feb4458de 100644 --- a/gcc/config/riscv/riscv-protos.h +++ b/gcc/config/riscv/riscv-protos.h @@ -119,7 +119,7 @@ extern rtx riscv_emit_move (rtx, rtx); extern bool riscv_split_symbol (rtx, rtx, machine_mode, rtx *); extern bool riscv_split_symbol_type (enum riscv_symbol_type); extern rtx riscv_unspec_address (rtx, enum riscv_symbol_type); -extern void riscv_move_integer (rtx, rtx, HOST_WIDE_INT, machine_mode); +extern void riscv_move_integer (rtx, rtx, HOST_WIDE_INT); extern bool riscv_legitimize_move (machine_mode, rtx, rtx); extern rtx riscv_subword (rtx, bool); extern bool riscv_split_64bit_move_p (rtx, rtx); diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 97272b4349a6..b936e3c272fc 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -1736,15 +1736,15 @@ riscv_split_integer (HOST_WIDE_INT val, machine_mode mode) bool eq_neg = (loval == hival) && ((loval & 0x80000000) != 0); if (eq_neg) - riscv_move_integer (lo, lo, ~loval & 0xffffffff, mode); + riscv_move_integer (lo, lo, ~loval & 0xffffffff); else - riscv_move_integer (lo, lo, loval, mode); + riscv_move_integer (lo, lo, loval); if (loval == hival) hi = gen_rtx_ASHIFT (mode, lo, GEN_INT (32)); else { - riscv_move_integer (hi, hi, hival, mode); + riscv_move_integer (hi, hi, hival); hi = gen_rtx_ASHIFT (mode, hi, GEN_INT (32)); } @@ -3275,8 +3275,7 @@ riscv_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED, is the original src mode before promotion. */ void -riscv_move_integer (rtx temp, rtx dest, HOST_WIDE_INT value, - machine_mode orig_mode) +riscv_move_integer (rtx temp, rtx dest, HOST_WIDE_INT value) { struct riscv_integer_op codes[RISCV_MAX_INTEGER_OPS]; machine_mode mode; @@ -3284,9 +3283,10 @@ riscv_move_integer (rtx temp, rtx dest, HOST_WIDE_INT value, rtx x = NULL_RTX; mode = GET_MODE (dest); - /* We use the original mode for the riscv_build_integer call, because HImode - values are given special treatment. */ - num_ops = riscv_build_integer (codes, value, orig_mode, can_create_pseudo_p ()); + /* This originally passed in a mode prior to promotions, but what we really + need to do is pass in the mode of the destination, that's what ultimately + determines how a constant needs to be canonicalized. */ + num_ops = riscv_build_integer (codes, value, mode, can_create_pseudo_p ()); if (can_create_pseudo_p () && num_ops > 2 /* not a simple constant */ && num_ops >= riscv_split_integer_cost (value)) @@ -3383,7 +3383,7 @@ riscv_legitimize_const_move (machine_mode mode, rtx dest, rtx src) /* Split moves of big integers into smaller pieces. */ if (splittable_const_int_operand (src, mode)) { - riscv_move_integer (dest, dest, INTVAL (src), mode); + riscv_move_integer (dest, dest, INTVAL (src)); return; } @@ -3970,7 +3970,7 @@ riscv_legitimize_move (machine_mode mode, rtx dest, rtx src) if (splittable_const_int_operand (src, mode)) { reg = gen_reg_rtx (promoted_mode); - riscv_move_integer (reg, reg, INTVAL (src), mode); + riscv_move_integer (reg, reg, INTVAL (src)); } else reg = force_reg (promoted_mode, src); diff --git a/gcc/config/riscv/riscv.md b/gcc/config/riscv/riscv.md index 6b5f824109e6..ee44132291f0 100644 --- a/gcc/config/riscv/riscv.md +++ b/gcc/config/riscv/riscv.md @@ -2504,8 +2504,7 @@ "" [(const_int 0)] { - riscv_move_integer (operands[2], operands[0], INTVAL (operands[1]), - mode); + riscv_move_integer (operands[2], operands[0], INTVAL (operands[1])); DONE; }) @@ -2538,8 +2537,7 @@ "&& 1" [(const_int 0)] { - riscv_move_integer (operands[0], operands[0], INTVAL (operands[1]), - mode); + riscv_move_integer (operands[0], operands[0], INTVAL (operands[1])); DONE; } [(set_attr "type" "move")]) diff --git a/gcc/cse.cc b/gcc/cse.cc index 25b2bf500a96..b4b39e3ebf81 100644 --- a/gcc/cse.cc +++ b/gcc/cse.cc @@ -4980,6 +4980,34 @@ cse_insn (rtx_insn *insn) } } + /* If SRC_EQV is a CONST_INT, try looking up some related + constants (logical and arithmetic negation). Those may + ultimately be cheaper to re-use. */ + if (GET_CODE (src) != CONST_INT + && GET_CODE (src) != REG + && GET_CODE (src) != SUBREG + && src_const + && GET_CODE (src_const) == CONST_INT) + { + rtx trial_rtx = GEN_INT (~UINTVAL (src_const)); + struct table_elt *tmp = lookup (trial_rtx, HASH (trial_rtx, mode), mode); + rtx_code code = NOT; + if (!tmp) + { + trial_rtx = GEN_INT (-UINTVAL (src_const)); + tmp = lookup (trial_rtx, HASH (trial_rtx, mode), mode); + code = NEG; + } + + if (tmp) + { + src_related = gen_rtx_fmt_e (code, mode, tmp->first_same_value->exp); + src_eqv_here = src_related; + src_related_is_const_anchor = true; + } + + } + /* See if a MEM has already been loaded with a widening operation; if it has, we can use a subreg of that. Many CISC machines also have such operations, but this is only likely to be From c1aa090bb8e1c23e733bc7beafceb7c34dc713f8 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 1 May 2026 14:54:35 +0200 Subject: [PATCH 044/453] strlen: Adjust objsz arg in __strcat_chk -> __stpcpy_chk transformation [PR125079] As the following testcase shows, we have two different transformations of __strcat_chk. One done in strlen_pass::handle_builtin_strcat, which transforms __strcat_chk (x, y, z) if we know beforehand strlen (x), so something like: l = strlen (x); __strcat_chk (x, y, z); and since PR87672 we change that to l = strlen (x); __strcpy_chk (x + l, y, z - l); i.e. decrease the objsz in if (objsz) { objsz = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (objsz), objsz, fold_convert_loc (loc, TREE_TYPE (objsz), unshare_expr (dstlen))); objsz = force_gimple_operand_gsi (&m_gsi, objsz, true, NULL_TREE, true, GSI_SAME_STMT); } And another transformation is when we have earlier __strcat_chk (x, y, z) call and want to compute strlen (x) after that. In that case get_string_length transforms __strcat_chk (x, y, z); to t = strlen (x); l = __stpcpy_chk (x + t, y, z) - x; where l is the len we are looking for. This patch changes it similarly to the PR87672 to t = strlen (x); l = __stpcpy_chk (x + t, y, z - t) - x; instead. 2026-05-01 Jakub Jelinek PR tree-optimization/125079 * tree-ssa-strlen.cc (get_string_length): Transform __strcat_chk (x, y, z) when we need strlen (x) afterwards into l1 = strlen (x); l = __stpcpy_chk (x + l1, y, z - l1) - x; where l is the strlen (x), instead of using z as last __stpcpy_chk argument. * gcc.dg/strlenopt-97.c: New test. Reviewed-by: Richard Biener --- gcc/testsuite/gcc.dg/strlenopt-97.c | 33 +++++++++++++++++++++++++++++ gcc/tree-ssa-strlen.cc | 13 +++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/strlenopt-97.c diff --git a/gcc/testsuite/gcc.dg/strlenopt-97.c b/gcc/testsuite/gcc.dg/strlenopt-97.c new file mode 100644 index 000000000000..c4fadbd89425 --- /dev/null +++ b/gcc/testsuite/gcc.dg/strlenopt-97.c @@ -0,0 +1,33 @@ +/* PR tree-optimization/125079 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-strlen1" } */ +/* { dg-final { scan-tree-dump-times "__builtin___strcpy_chk \\\(" 1 "strlen1" } } */ +/* { dg-final { scan-tree-dump-not "__builtin___strcpy_chk \\\(\[^\n\r]*, 64\\\)" "strlen1" } } */ +/* { dg-final { scan-tree-dump-times "__builtin___stpcpy_chk \\\(" 1 "strlen1" } } */ +/* { dg-final { scan-tree-dump-not "__builtin___stpcpy_chk \\\(\[^\n\r]*, 128\\\)" "strlen1" } } */ + +typedef __SIZE_TYPE__ size_t; +void foo (char *, int); +char *stpcpy (char *, const char *); + +size_t +bar (char *r) +{ + char buf[64]; + foo (buf, 0); + size_t ret = __builtin_strlen (buf); + __builtin___strcat_chk (buf, r, 64); + foo (buf, 1); + return ret; +} + +size_t +baz (char *r) +{ + char buf[128]; + foo (buf, 2); + __builtin___strcat_chk (buf, r, 128); + size_t ret = __builtin_strlen (buf); + foo (buf, 3); + return ret; +} diff --git a/gcc/tree-ssa-strlen.cc b/gcc/tree-ssa-strlen.cc index ed4df00c72b8..d6949441f316 100644 --- a/gcc/tree-ssa-strlen.cc +++ b/gcc/tree-ssa-strlen.cc @@ -848,7 +848,7 @@ get_string_length (strinfo *si) attempt to compute the length from the call statement. */ if (si->stmt) { - gimple *stmt = si->stmt, *lenstmt; + gimple *stmt = si->stmt, *lenstmt = NULL; tree callee, lhs, fn, tem; location_t loc; gimple_stmt_iterator gsi; @@ -902,6 +902,17 @@ get_string_length (strinfo *si) gimple_call_set_fndecl (stmt, fn); lhs = make_ssa_name (TREE_TYPE (TREE_TYPE (fn)), stmt); gimple_call_set_lhs (stmt, lhs); + if (DECL_FUNCTION_CODE (callee) == BUILT_IN_STRCAT_CHK) + { + tree objsz = gimple_call_lhs (lenstmt); + gimple *g + = gimple_build_assign (make_ssa_name (TREE_TYPE (objsz)), + MINUS_EXPR, gimple_call_arg (stmt, 2), + objsz); + gimple_set_location (g, gimple_location (stmt)); + gsi_insert_before (&gsi, g, GSI_SAME_STMT); + gimple_call_set_arg (stmt, 2, gimple_assign_lhs (g)); + } update_stmt (stmt); if (dump_file && (dump_flags & TDF_DETAILS) != 0) { From 1fb066c160cab48d141241494a24a6f2957be368 Mon Sep 17 00:00:00 2001 From: Jin Ma Date: Fri, 1 May 2026 07:06:01 -0600 Subject: [PATCH 045/453] [PATCH] RISC-V: Fix missing braces in riscv_rtx_costs for slli.uw pattern [PR???] The AND case in riscv_rtx_costs for the slli.uw pattern (zba extension) has a multi-statement if body without braces. This causes the 'return true' to execute unconditionally whenever the left operand of AND is an ASHIFT, regardless of whether the inner condition (checking register_operand, CONST_INT_P, and the 0xffffffff mask) is satisfied. This effectively short-circuits the entire AND cost calculation for any AND+ASHIFT combination when TARGET_ZBA && TARGET_64BIT && DImode, skipping subsequent pattern checks (bclri, bclr, etc.) and the fallthrough to PLUS/MINUS. gcc/ChangeLog: * config/riscv/riscv.cc (riscv_rtx_costs): Add missing braces around the if body for the slli.uw pattern in the AND case. --- gcc/config/riscv/riscv.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index b936e3c272fc..b0365f682347 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -4377,8 +4377,10 @@ riscv_rtx_costs (rtx x, machine_mode mode, int outer_code, int opno ATTRIBUTE_UN && CONST_INT_P (ashift_rhs) && CONST_INT_P (and_rhs) && ((INTVAL (and_rhs) >> INTVAL (ashift_rhs)) == 0xffffffff)) - *total = COSTS_N_INSNS (1); - return true; + { + *total = COSTS_N_INSNS (1); + return true; + } } /* bclri pattern for zbs. */ if (TARGET_ZBS From 95c8e7d2cb9188aa072ab0261f276c2062dd79fd Mon Sep 17 00:00:00 2001 From: Rainer Orth Date: Fri, 1 May 2026 15:18:04 +0200 Subject: [PATCH 046/453] build: Check solaris_{as,ld} where appropriate Several of the gas and gnu_ld checks in gcc/configure actually need to determine if Solaris as and ld are in use. Since solaris_as and solaris_ld are determined reliably now, it's clearer to check them directly instead of !gas and !gnu_ld. This patch does just that. Since solaris_as/solaris_ld imply target *-*-solaris2*, the tests can be simplified and sometimes converted from case/esac to if/else. Bootstrapped on amd64-pc-solaris2.11, sparcv9-sun-solaris2.11, x86_64-pc-linux-gnu, amd64-pc-freebsd15.0, and x86_64-apple-darwin21.6.0. When there are different flavours of as and/or ld depending on PATH (/usr/bin/as vs. /usr/gnu/bin/as resp. ld on Solaris, /usr/bin/ld, LLD, and /usr/local/bin/ld, GNU ld on FreeBSD), the builds were configured with --with-as/--with-ld. The Solaris tests were run for as/ld, gas/ld, and gas/gld configurations, the FreeBSD tests with gas/gld. In all cases, gcc/auto-host.h and gcc/Makefile were unchanged. 2026-02-08 Rainer Orth gcc: * configure.ac: Test solaris_as, solaris_ld instead of gas, gnu_ld. (gcc_cv_as_working_gdwarf_n_flag): Escape '.' in filename. * acinclude.m4 (gcc_cv_initfini_array): Test solaris_as, solaris_ld instead of gas, gnu_ld. * configure: Regenerate. --- gcc/acinclude.m4 | 73 ++++++++++++------------ gcc/configure | 141 +++++++++++++++++++++-------------------------- gcc/configure.ac | 70 ++++++++++------------- 3 files changed, 127 insertions(+), 157 deletions(-) diff --git a/gcc/acinclude.m4 b/gcc/acinclude.m4 index f10c83ef056c..135a66a91ba5 100644 --- a/gcc/acinclude.m4 +++ b/gcc/acinclude.m4 @@ -308,24 +308,23 @@ int (*fp) (void) __attribute__ ((section (".init_array"))) = foo; gcc_cv_initfini_array=yes fi elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x ; then - case $target:$gas in - *:yes) - sh_flags='"a"' - sh_type='%progbits' - ;; - i?86-*-solaris2*:no | x86_64-*-solaris2*:no) + case $target:$solaris_as in + i?86-*-solaris2*:yes | x86_64-*-solaris2*:yes) sh_flags='"a"' sh_type='@progbits' ;; - sparc*-*-solaris2*:no) + sparc*-*-solaris2*:yes) sh_flags='#alloc' sh_type='#progbits' sh_quote='"' ;; + *:*) + sh_flags='"a"' + sh_type='%progbits' + ;; esac - case "$target:$gnu_ld" in - *:yes) - cat > conftest.s < conftest.s < /dev/null 2>&1 \ - && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \ - && $gcc_cv_objdump -s -j .init_array conftest \ - | grep HHHHFFFFDDDDBBBB > /dev/null 2>&1 \ - && $gcc_cv_objdump -s -j .fini_array conftest \ - | grep GGGGEEEECCCCAAAA > /dev/null 2>&1; then - gcc_cv_initfini_array=yes - fi - ;; - *-*-solaris2*:no) - # When Solaris ld added constructor priority support, it was - # decided to only handle .init_array.N/.fini_array.N since - # there was no need for backwards compatibility with - # .ctors.N/.dtors.N. .ctors/.dtors remain as separate - # sections with correct execution order resp. to - # .init_array/.fini_array, while gld merges them into - # .init_array/.fini_array. - cat > conftest.s < /dev/null 2>&1 \ + && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \ + && $gcc_cv_objdump -s -j .init_array conftest \ + | grep HHHHFFFFDDDDBBBB > /dev/null 2>&1 \ + && $gcc_cv_objdump -s -j .fini_array conftest \ + | grep GGGGEEEECCCCAAAA > /dev/null 2>&1; then + gcc_cv_initfini_array=yes + fi + else + # When Solaris ld added constructor priority support, it was + # decided to only handle .init_array.N/.fini_array.N since + # there was no need for backwards compatibility with + # .ctors.N/.dtors.N. .ctors/.dtors remain as separate + # sections with correct execution order resp. to + # .init_array/.fini_array, while gld merges them into + # .init_array/.fini_array. + cat > conftest.s < /dev/null 2>&1 \ - && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \ - && $gcc_cv_objdump -s -j .init_array conftest \ - | grep HHHHHHHHDDDDDDDD > /dev/null 2>&1 \ - && $gcc_cv_objdump -s -j .fini_array conftest \ - | grep GGGGGGGGCCCCCCCC > /dev/null 2>&1; then - gcc_cv_initfini_array=yes - fi - ;; - esac + if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \ + && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \ + && $gcc_cv_objdump -s -j .init_array conftest \ + | grep HHHHHHHHDDDDDDDD > /dev/null 2>&1 \ + && $gcc_cv_objdump -s -j .fini_array conftest \ + | grep GGGGGGGGCCCCCCCC > /dev/null 2>&1; then + gcc_cv_initfini_array=yes + fi + fi changequote(,)dnl rm -f conftest conftest.* changequote([,])dnl diff --git a/gcc/configure b/gcc/configure index ef780a23c2fd..76220b8c0394 100755 --- a/gcc/configure +++ b/gcc/configure @@ -26914,24 +26914,23 @@ fi gcc_cv_initfini_array=yes fi elif test x"$gcc_cv_as" != x -a x"$gcc_cv_ld" != x -a x"$gcc_cv_objdump" != x ; then - case $target:$gas in - *:yes) - sh_flags='"a"' - sh_type='%progbits' - ;; - i?86-*-solaris2*:no | x86_64-*-solaris2*:no) + case $target:$solaris_as in + i?86-*-solaris2*:yes | x86_64-*-solaris2*:yes) sh_flags='"a"' sh_type='@progbits' ;; - sparc*-*-solaris2*:no) + sparc*-*-solaris2*:yes) sh_flags='#alloc' sh_type='#progbits' sh_quote='"' ;; + *:*) + sh_flags='"a"' + sh_type='%progbits' + ;; esac - case "$target:$gnu_ld" in - *:yes) - cat > conftest.s < conftest.s < /dev/null 2>&1 \ - && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \ - && $gcc_cv_objdump -s -j .init_array conftest \ - | grep HHHHFFFFDDDDBBBB > /dev/null 2>&1 \ - && $gcc_cv_objdump -s -j .fini_array conftest \ - | grep GGGGEEEECCCCAAAA > /dev/null 2>&1; then - gcc_cv_initfini_array=yes - fi - ;; - *-*-solaris2*:no) - # When Solaris ld added constructor priority support, it was - # decided to only handle .init_array.N/.fini_array.N since - # there was no need for backwards compatibility with - # .ctors.N/.dtors.N. .ctors/.dtors remain as separate - # sections with correct execution order resp. to - # .init_array/.fini_array, while gld merges them into - # .init_array/.fini_array. - cat > conftest.s < /dev/null 2>&1 \ + && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \ + && $gcc_cv_objdump -s -j .init_array conftest \ + | grep HHHHFFFFDDDDBBBB > /dev/null 2>&1 \ + && $gcc_cv_objdump -s -j .fini_array conftest \ + | grep GGGGEEEECCCCAAAA > /dev/null 2>&1; then + gcc_cv_initfini_array=yes + fi + else + # When Solaris ld added constructor priority support, it was + # decided to only handle .init_array.N/.fini_array.N since + # there was no need for backwards compatibility with + # .ctors.N/.dtors.N. .ctors/.dtors remain as separate + # sections with correct execution order resp. to + # .init_array/.fini_array, while gld merges them into + # .init_array/.fini_array. + cat > conftest.s < /dev/null 2>&1 \ - && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \ - && $gcc_cv_objdump -s -j .init_array conftest \ - | grep HHHHHHHHDDDDDDDD > /dev/null 2>&1 \ - && $gcc_cv_objdump -s -j .fini_array conftest \ - | grep GGGGGGGGCCCCCCCC > /dev/null 2>&1; then - gcc_cv_initfini_array=yes - fi - ;; - esac + if $gcc_cv_as -o conftest.o conftest.s > /dev/null 2>&1 \ + && $gcc_cv_ld -o conftest conftest.o > /dev/null 2>&1 \ + && $gcc_cv_objdump -s -j .init_array conftest \ + | grep HHHHHHHHDDDDDDDD > /dev/null 2>&1 \ + && $gcc_cv_objdump -s -j .fini_array conftest \ + | grep GGGGGGGGCCCCCCCC > /dev/null 2>&1; then + gcc_cv_initfini_array=yes + fi + fi rm -f conftest conftest.* fi cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -28100,17 +28097,14 @@ foo: .long 25 .word foo(tlsldo)' ;; i?86-*-* | x86_64-*-*) - case "$target:$gas" in - i?86-*-solaris2*:no | x86_64-*-solaris2*:no) - tls_section_flag=t + if test x$solaris_as = xyes; then + tls_section_flag=t $as_echo "#define TLS_SECTION_ASM_FLAG 't'" >>confdefs.h - ;; - *:*) - tls_section_flag=T - ;; - esac + else + tls_section_flag=T + fi conftest_s=' .section .tdata,"aw'$tls_section_flag'",@progbits' case "$target" in @@ -28351,16 +28345,13 @@ foo: .long 25 .long foo@TPOFF' ;; sparc*-*-*) - case "$target:$gas" in - sparc*-sun-solaris2.*:no) - conftest_s=' - .section ".tdata",#alloc,#write,#tls' - ;; - *:*) - conftest_s=' - .section ".tdata","awT",@progbits' - ;; - esac + if test x$solaris_as = xyes; then + conftest_s=' + .section ".tdata",#alloc,#write,#tls' + else + conftest_s=' + .section ".tdata","awT",@progbits' + fi tls_as_opt=$as_32_opt conftest_s="$conftest_s foo: .long 25 @@ -28531,16 +28522,12 @@ ld_version_script_option='' if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then gcc_cv_ld_version_script=yes ld_version_script_option='--version-script' -elif test x$gcc_cv_ld != x; then - case "$target" in - # Solaris 2 ld always supports -M. It also supports a subset of - # --version-script since Solaris 11.4, but requires - # -z gnu-version-script-compat to activate. - *-*-solaris2*) - gcc_cv_ld_version_script=yes - ld_version_script_option='-M' - ;; - esac +elif test x$solaris_ld = xyes; then + # Solaris 2 ld always supports -M. It also supports a subset of + # --version-script since Solaris 11.4, but requires + # -z gnu-version-script-compat to activate. + gcc_cv_ld_version_script=yes + ld_version_script_option='-M' fi # Don't AC_DEFINE result, only used in jit/Make-lang.in so far. { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_version_script" >&5 @@ -32398,7 +32385,7 @@ else then if test x$gcc_cv_objdump != x \ && $gcc_cv_objdump -W conftest.o 2>&1 \ - | grep conftest.s > /dev/null 2>&1; then + | grep 'conftest\.s' > /dev/null 2>&1; then gcc_cv_as_working_gdwarf_n_flag=no else gcc_cv_as_working_gdwarf_n_flag=yes @@ -32986,7 +32973,7 @@ gcc_cv_ld_ctf=no # Check for Solaris ld 1.3315 introduced in Solaris 11.4 SRU 84. ld -z ctf # already went in in SRU 81, but lacked GNU CTF to Solaris CTF conversion. if $gcc_cv_ld --help 2>&1 | grep -- '-z ctf' > /dev/null \ - && test x$gnu_ld = xno && test "$ld_vers_minor" -ge 3315; then + && test x$solaris_ld = xyes && test "$ld_vers_minor" -ge 3315; then gcc_cv_ld_ctf=yes $as_echo "#define HAVE_LD_CTF 1" >>confdefs.h @@ -33269,16 +33256,14 @@ elif test x$gcc_cv_ld != x; then gcc_cv_ld_no_as_needed_option='--pop-state' fi fi - case "$target:$gnu_ld" in - *-*-solaris2*:no) - # Solaris 2 ld always supports -z ignore/-z record. Prefer the native - # forms. - gcc_cv_ld_as_needed=yes - gcc_cv_ld_as_needed_option="-z ignore" - gcc_cv_ld_no_as_needed_option="-z record" - gcc_cv_ld_use_as_needed_ldscript=no - ;; - esac + if test x$solaris_ld = xyes; then + # Solaris 2 ld always supports -z ignore/-z record. Prefer the native + # forms. + gcc_cv_ld_as_needed=yes + gcc_cv_ld_as_needed_option="-z ignore" + gcc_cv_ld_no_as_needed_option="-z record" + gcc_cv_ld_use_as_needed_ldscript=no + fi fi fi diff --git a/gcc/configure.ac b/gcc/configure.ac index cdf2997cb5f8..4c939d6e19c4 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -3993,18 +3993,15 @@ foo: .long 25 .word foo(tlsldo)' ;; i?86-*-* | x86_64-*-*) - case "$target:$gas" in - i?86-*-solaris2*:no | x86_64-*-solaris2*:no) - tls_section_flag=t + if test x$solaris_as = xyes; then + tls_section_flag=t changequote([,])dnl - AC_DEFINE(TLS_SECTION_ASM_FLAG, 't', + AC_DEFINE(TLS_SECTION_ASM_FLAG, 't', [Define to the flag used to mark TLS sections if the default (`T') doesn't work.]) changequote(,)dnl - ;; - *:*) - tls_section_flag=T - ;; - esac + else + tls_section_flag=T + fi conftest_s=' .section .tdata,"aw'$tls_section_flag'",@progbits' case "$target" in @@ -4245,16 +4242,13 @@ foo: .long 25 .long foo@TPOFF' ;; sparc*-*-*) - case "$target:$gas" in - sparc*-sun-solaris2.*:no) - conftest_s=' - .section ".tdata",#alloc,#write,#tls' - ;; - *:*) - conftest_s=' - .section ".tdata","awT",@progbits' - ;; - esac + if test x$solaris_as = xyes; then + conftest_s=' + .section ".tdata",#alloc,#write,#tls' + else + conftest_s=' + .section ".tdata","awT",@progbits' + fi tls_as_opt=$as_32_opt conftest_s="$conftest_s foo: .long 25 @@ -4389,16 +4383,12 @@ ld_version_script_option='' if test $in_tree_ld = yes || test x"$gnu_ld" = xyes; then gcc_cv_ld_version_script=yes ld_version_script_option='--version-script' -elif test x$gcc_cv_ld != x; then - case "$target" in - # Solaris 2 ld always supports -M. It also supports a subset of - # --version-script since Solaris 11.4, but requires - # -z gnu-version-script-compat to activate. - *-*-solaris2*) - gcc_cv_ld_version_script=yes - ld_version_script_option='-M' - ;; - esac +elif test x$solaris_ld = xyes; then + # Solaris 2 ld always supports -M. It also supports a subset of + # --version-script since Solaris 11.4, but requires + # -z gnu-version-script-compat to activate. + gcc_cv_ld_version_script=yes + ld_version_script_option='-M' fi # Don't AC_DEFINE result, only used in jit/Make-lang.in so far. AC_MSG_RESULT($gcc_cv_ld_version_script) @@ -5939,7 +5929,7 @@ foo: [changequote(,)dnl if test x$gcc_cv_objdump != x \ && $gcc_cv_objdump -W conftest.o 2>&1 \ - | grep conftest.s > /dev/null 2>&1; then + | grep 'conftest\.s' > /dev/null 2>&1; then gcc_cv_as_working_gdwarf_n_flag=no else gcc_cv_as_working_gdwarf_n_flag=yes @@ -6347,7 +6337,7 @@ gcc_cv_ld_ctf=no # Check for Solaris ld 1.3315 introduced in Solaris 11.4 SRU 84. ld -z ctf # already went in in SRU 81, but lacked GNU CTF to Solaris CTF conversion. if $gcc_cv_ld --help 2>&1 | grep -- '-z ctf' > /dev/null \ - && test x$gnu_ld = xno && test "$ld_vers_minor" -ge 3315; then + && test x$solaris_ld = xyes && test "$ld_vers_minor" -ge 3315; then gcc_cv_ld_ctf=yes AC_DEFINE(HAVE_LD_CTF, 1, [Define if your linker supports -z ctf.]) fi @@ -6580,16 +6570,14 @@ elif test x$gcc_cv_ld != x; then gcc_cv_ld_no_as_needed_option='--pop-state' fi fi - case "$target:$gnu_ld" in - *-*-solaris2*:no) - # Solaris 2 ld always supports -z ignore/-z record. Prefer the native - # forms. - gcc_cv_ld_as_needed=yes - gcc_cv_ld_as_needed_option="-z ignore" - gcc_cv_ld_no_as_needed_option="-z record" - gcc_cv_ld_use_as_needed_ldscript=no - ;; - esac + if test x$solaris_ld = xyes; then + # Solaris 2 ld always supports -z ignore/-z record. Prefer the native + # forms. + gcc_cv_ld_as_needed=yes + gcc_cv_ld_as_needed_option="-z ignore" + gcc_cv_ld_no_as_needed_option="-z record" + gcc_cv_ld_use_as_needed_ldscript=no + fi fi ]) if test x"$gcc_cv_ld_as_needed" = xyes; then From 0727299846d3cfaa6c1f537019f9a9e583d07d8d Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Wed, 29 Apr 2026 17:24:19 -0400 Subject: [PATCH 047/453] c++/reflection: propagate cv-quals for SPLICE_SCOPE [PR125096] tsubst_splice_scope isn't propagating cv-quals from the template tree to the result, which means wrongly failed asserts in the new test due to a missing 'const'. So let's add the cv-quals like we do in so many other places in tsubst. PR c++/125096 gcc/cp/ChangeLog: * pt.cc (tsubst_splice_scope): Don't return early for dependent_splice_p. Propagate cv-qualifiers from the SPLICE_SCOPE to the result. * reflect.cc (valid_splice_scope_p): Accept SPLICE_SCOPE. gcc/testsuite/ChangeLog: * g++.dg/reflect/mangle4.C: Move dg-error. * g++.dg/reflect/dep16.C: New test. Reviewed-by: Jason Merrill --- gcc/cp/pt.cc | 8 ++++++-- gcc/cp/reflect.cc | 3 ++- gcc/testsuite/g++.dg/reflect/dep16.C | 28 ++++++++++++++++++++++++++ gcc/testsuite/g++.dg/reflect/mangle4.C | 5 ++--- 4 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/g++.dg/reflect/dep16.C diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 9a5eb7ef9b04..6992b5196fe1 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -16904,8 +16904,8 @@ tsubst_splice_scope (tree t, tree args, tsubst_flags_t complain, tree in_decl) return r; const bool type_p = SPLICE_SCOPE_TYPE_P (t); if (dependent_splice_p (r)) - return make_splice_scope (r, type_p); - if (type_p && ctad_template_p (r)) + r = make_splice_scope (r, type_p); + else if (type_p && ctad_template_p (r)) r = make_template_placeholder (r); if (type_p ? !valid_splice_type_p (r) @@ -16925,6 +16925,10 @@ tsubst_splice_scope (tree t, tree args, tsubst_flags_t complain, tree in_decl) return error_mark_node; } + if (type_p) + r = cp_build_qualified_type (r, cp_type_quals (t) | cp_type_quals (r), + complain | tf_ignore_bad_quals); + return r; } diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc index c6b0f6f2bd1a..3b9f56ea5484 100644 --- a/gcc/cp/reflect.cc +++ b/gcc/cp/reflect.cc @@ -8912,7 +8912,8 @@ valid_splice_scope_p (const_tree t) { return (CLASS_TYPE_P (t) || TREE_CODE (t) == ENUMERAL_TYPE - || TREE_CODE (t) == NAMESPACE_DECL); + || TREE_CODE (t) == NAMESPACE_DECL + || TREE_CODE (t) == SPLICE_SCOPE); } /* Return true if T is a valid result of the splice in a class member access, diff --git a/gcc/testsuite/g++.dg/reflect/dep16.C b/gcc/testsuite/g++.dg/reflect/dep16.C new file mode 100644 index 000000000000..70ec9bf4858e --- /dev/null +++ b/gcc/testsuite/g++.dg/reflect/dep16.C @@ -0,0 +1,28 @@ +// PR c++/125096 +// { dg-do compile { target c++26 } } +// { dg-additional-options "-freflection" } + +#include +#include + +namespace ctp { + template struct Reflect; + + namespace impl { + template using custom_target = Reflect::target_type; + } + + template + using target = [: is_scalar_type(^^T) ? ^^T : substitute(^^impl::custom_target, {^^T}) :]; + + template + struct Reflect> { + using underlying = target const; + using target_type = std::span>; + }; +} + +static_assert(dealias(^^ctp::target) == ^^int); +static_assert(dealias(^^ctp::target>) == ^^std::span); +static_assert(dealias(^^ctp::Reflect>::underlying) == ^^int const); +static_assert(dealias(^^ctp::Reflect>::target_type) == ^^std::span); diff --git a/gcc/testsuite/g++.dg/reflect/mangle4.C b/gcc/testsuite/g++.dg/reflect/mangle4.C index 3880468daff2..f9ac44ba869e 100644 --- a/gcc/testsuite/g++.dg/reflect/mangle4.C +++ b/gcc/testsuite/g++.dg/reflect/mangle4.C @@ -20,7 +20,6 @@ template } int main() { - // ??? It's not clear which of these should error. - std::default_accessor _ = std::iterator_accessor(); - std::default_accessor _ = std::iterator_accessor(); // { dg-error "conversion" } + std::default_accessor _ = std::iterator_accessor(); // { dg-error "conversion" } + std::default_accessor _ = std::iterator_accessor(); } From c29a38d644bb6984875d92acac9b30a133dacd6f Mon Sep 17 00:00:00 2001 From: Philipp Tomsich Date: Fri, 1 May 2026 07:32:17 -0600 Subject: [PATCH 048/453] [PATCH GCC17-stage1] riscv: Optimize power-of-2 boundary comparisons in conditional moves In riscv_expand_conditional_move, detect unsigned comparisons against power-of-2 boundaries and convert them to shift-based equality tests. This avoids materializing large constants (e.g. 2^56 - 1) that may require multiple instructions (bseti + sltu), replacing them with a single srli that feeds directly into czero.eqz/czero.nez. The transformation handles four cases: GTU x, (2^N-1) -> NE (x >> N), 0 LEU x, (2^N-1) -> EQ (x >> N), 0 GEU x, 2^N -> NE (x >> N), 0 LTU x, 2^N -> EQ (x >> N), 0 For example, `(a & (0xff << 56)) ? b : 0` previously generated: bseti a5, zero, 56 sltu a0, a0, a5 czero.nez a0, a1, a0 Now generates: srli a0, a0, 56 czero.eqz a0, a1, a0 Existing define_split patterns in riscv.md (lines 3727-3748) handle the same optimization for standalone SCC operations, but they don't fire in the conditional move expansion path which goes through riscv_expand_int_scc directly. gcc/ChangeLog: * config/riscv/riscv.cc (riscv_expand_conditional_move): Convert unsigned comparisons against power-of-2 boundaries to shift-based equality tests. gcc/testsuite/ChangeLog: * gcc.target/riscv/zicond-shift-cond.c: New test. --- gcc/config/riscv/riscv.cc | 36 +++++++++++++++++++ .../gcc.target/riscv/zicond-shift-cond.c | 20 +++++++++++ 2 files changed, 56 insertions(+) create mode 100644 gcc/testsuite/gcc.target/riscv/zicond-shift-cond.c diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index b0365f682347..e09587386ca4 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -5808,6 +5808,42 @@ riscv_expand_conditional_move (rtx dest, rtx op, rtx cons, rtx alt) ? word_mode : dst_mode); bool invert = false; + /* For unsigned comparisons against power-of-2 boundaries, convert + to a shift-based equality test. This avoids materializing large + constants like (2^N - 1) which may require multiple instructions. + GTU x, (2^N-1) -> NE (x >> N), 0 + LEU x, (2^N-1) -> EQ (x >> N), 0 + GEU x, 2^N -> NE (x >> N), 0 + LTU x, 2^N -> EQ (x >> N), 0 */ + if (INTEGRAL_MODE_P (mode0) && CONST_INT_P (op1)) + { + int shift = -1; + rtx_code new_code = UNKNOWN; + + if ((code == GTU || code == LEU) + && exact_log2 (UINTVAL (op1) + 1) > 0) + { + shift = exact_log2 (UINTVAL (op1) + 1); + new_code = (code == GTU) ? NE : EQ; + } + else if ((code == GEU || code == LTU) + && exact_log2 (UINTVAL (op1)) > 0) + { + shift = exact_log2 (UINTVAL (op1)); + new_code = (code == GEU) ? NE : EQ; + } + + if (shift > 0) + { + op0 = expand_simple_binop (mode0, LSHIFTRT, op0, + GEN_INT (shift), NULL_RTX, + 1, OPTAB_DIRECT); + op1 = const0_rtx; + code = new_code; + op = gen_rtx_fmt_ee (code, GET_MODE (op0), op0, op1); + } + } + /* Canonicalize the comparison. It must be an equality comparison of integer operands, or with SFB it can be any comparison of integer operands. If it isn't, then emit an SCC instruction diff --git a/gcc/testsuite/gcc.target/riscv/zicond-shift-cond.c b/gcc/testsuite/gcc.target/riscv/zicond-shift-cond.c new file mode 100644 index 000000000000..50b3a8b9dd8f --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/zicond-shift-cond.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=rv64gc_zicond -mabi=lp64d" } */ +/* { dg-skip-if "" { *-*-* } { "-flto" } } */ + +/* Verify that power-of-2 boundary comparisons use shift instead of + materializing large constants (vrull/gcc#253). */ + +long long high_byte (long long a, long long b) +{ + return (a & (0xffULL << 56)) ? b : 0; +} + +long long high_half (long long a, long long b) +{ + return (a & (0xffffULL << 48)) ? b : 0; +} + +/* { dg-final { scan-assembler-times "srli\t" 2 } } */ +/* { dg-final { scan-assembler-times "czero\\.eqz\t" 2 } } */ +/* { dg-final { scan-assembler-not "bseti\t" } } */ From ba9206f3576004ee6be77e436710d6bad07740b0 Mon Sep 17 00:00:00 2001 From: Michiel Derhaeg Date: Fri, 1 May 2026 07:35:43 -0600 Subject: [PATCH 049/453] [PATCH v2] RISC-V: Add Synopsys RHX-100 series pipeline description This patch introduces the pipeline description for the Synopsys RHX-100 series processor to the RISC-V GCC backend. The RHX-100 features a 10-stage, dual-issue, in-order execution pipeline architecture. It has support for instruction fusion, which will be addressed by subsequent patches. Due to fusion, up to four instructions can be issued in a single cycle. It is modeled as four separate pipelines and the issue_rate is set to four. gcc/ChangeLog: * config/riscv/riscv-cores.def (RISCV_TUNE): Add arc-v-rhx-100-series. * config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): Add arcv_rhx100. * config/riscv/riscv.cc (arcv_rhx100_tune_info): New riscv_tune_param. * config/riscv/riscv.md: Add arcv_rhx100 to tune attribute. * doc/riscv-mtune.texi: Add RHX-100 documentation. * config/riscv/arcv-rhx100.md: New file. Co-authored-by: Artemiy Volkov Co-authored-by: Luis Silva Signed-off-by: Michiel Derhaeg --- gcc/config/riscv/arcv-rhx100.md | 120 +++++++++++++++++++++++++++++++ gcc/config/riscv/riscv-cores.def | 1 + gcc/config/riscv/riscv-opts.h | 1 + gcc/config/riscv/riscv.cc | 26 +++++++ gcc/config/riscv/riscv.md | 4 +- gcc/doc/riscv-mtune.texi | 2 + 6 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 gcc/config/riscv/arcv-rhx100.md diff --git a/gcc/config/riscv/arcv-rhx100.md b/gcc/config/riscv/arcv-rhx100.md new file mode 100644 index 000000000000..da46f714db46 --- /dev/null +++ b/gcc/config/riscv/arcv-rhx100.md @@ -0,0 +1,120 @@ +;; DFA scheduling description of the Synopsys RHX-100 cpu +;; for GNU C compiler +;; Copyright (C) 2026 Free Software Foundation, Inc. + +;; This file is part of GCC. + +;; GCC is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; GCC is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; . + +(define_automaton "arcv_rhx100") + +(define_cpu_unit "arcv_rhx100_ALU_A_fuse0_early" "arcv_rhx100") +(define_cpu_unit "arcv_rhx100_ALU_A_fuse1_early" "arcv_rhx100") +(define_cpu_unit "arcv_rhx100_ALU_B_fuse0_early" "arcv_rhx100") +(define_cpu_unit "arcv_rhx100_ALU_B_fuse1_early" "arcv_rhx100") +(define_cpu_unit "arcv_rhx100_MPY" "arcv_rhx100") +(define_cpu_unit "arcv_rhx100_DIV" "arcv_rhx100") +(define_cpu_unit "arcv_rhx100_DMP_fuse0" "arcv_rhx100") +(define_cpu_unit "arcv_rhx100_DMP_fuse1" "arcv_rhx100") +(define_cpu_unit "arcv_rhx100_fdivsqrt" "arcv_rhx100") +(define_cpu_unit "arcv_rhx100_issueA_fuse0" "arcv_rhx100") +(define_cpu_unit "arcv_rhx100_issueA_fuse1" "arcv_rhx100") +(define_cpu_unit "arcv_rhx100_issueB_fuse0" "arcv_rhx100") +(define_cpu_unit "arcv_rhx100_issueB_fuse1" "arcv_rhx100") + +;; Instruction reservation for arithmetic instructions (pipe A, pipe B). +(define_insn_reservation "arcv_rhx100_alu_early_arith" 1 + (and (eq_attr "tune" "arcv_rhx100") + (eq_attr "type" "unknown,move,const,arith,shift,slt,multi,auipc,nop,logical,\ + bitmanip,min,max,minu,maxu,clz,ctz,atomic,\ + condmove,mvpair,zicond,cpop,clmul,rotate")) + "((arcv_rhx100_issueA_fuse0 + arcv_rhx100_ALU_A_fuse0_early) | (arcv_rhx100_issueA_fuse1 + arcv_rhx100_ALU_A_fuse1_early)) | ((arcv_rhx100_issueB_fuse0 + arcv_rhx100_ALU_B_fuse0_early) | (arcv_rhx100_issueB_fuse1 + arcv_rhx100_ALU_B_fuse1_early))") + +(define_insn_reservation "arcv_rhx100_jmp_insn" 1 + (and (eq_attr "tune" "arcv_rhx100") + (eq_attr "type" "branch,jump,call,jalr,ret,trap")) + "arcv_rhx100_issueA_fuse0 | arcv_rhx100_issueA_fuse1") + +(define_insn_reservation "arcv_rhx100_div_insn" 12 + (and (eq_attr "tune" "arcv_rhx100") + (eq_attr "type" "idiv")) + "arcv_rhx100_issueA_fuse0 + arcv_rhx100_DIV") + +(define_insn_reservation "arcv_rhx100_mpy_insn" 4 + (and (eq_attr "tune" "arcv_rhx100") + (eq_attr "type" "imul")) + "arcv_rhx100_issueA_fuse0 + arcv_rhx100_MPY") + +(define_insn_reservation "arcv_rhx100_load_insn" 3 + (and (eq_attr "tune" "arcv_rhx100") + (eq_attr "type" "load,fpload")) + "(arcv_rhx100_issueB_fuse0 + arcv_rhx100_DMP_fuse0) | (arcv_rhx100_issueB_fuse1 + arcv_rhx100_DMP_fuse1)") + +(define_insn_reservation "arcv_rhx100_store_insn" 1 + (and (eq_attr "tune" "arcv_rhx100") + (eq_attr "type" "store,fpstore")) + "(arcv_rhx100_issueB_fuse0 + arcv_rhx100_DMP_fuse0) | (arcv_rhx100_issueB_fuse1 + arcv_rhx100_DMP_fuse1)") + +;; (soft) floating points +(define_insn_reservation "arcv_rhx100_xfer" 3 + (and (eq_attr "tune" "arcv_rhx100") + (eq_attr "type" "mfc,mtc,fcvt,fcvt_i2f,fcvt_f2i,fmove,fcmp")) + "(arcv_rhx100_ALU_A_fuse0_early | arcv_rhx100_ALU_B_fuse0_early)") + +(define_insn_reservation "arcv_rhx100_fmul" 5 + (and (eq_attr "tune" "arcv_rhx100") + (eq_attr "type" "fadd,fmul,fmadd")) + "(arcv_rhx100_ALU_A_fuse0_early | arcv_rhx100_ALU_B_fuse0_early)") + +(define_insn_reservation "arcv_rhx100_fdiv" 20 + (and (eq_attr "tune" "arcv_rhx100") + (eq_attr "type" "fdiv,fsqrt")) + "arcv_rhx100_fdivsqrt*7") + +(define_insn_reservation "arcv_rhx100_unknown" 5 + (and (eq_attr "tune" "arcv_rhx100") + (eq_attr "type" "vfwalu,vfwcvtftoi,vrol,vmidx,vext,vaeskf1,vfredo, + vector,sfb_alu,vlds,viminmax,vfcmp,vimov,vsmul,vnclip, + vldm,vsetvl_pre,vwsll,vfmerge,vmffs,vclmul,vmpop,wrfrm, + vsha2ms,vidiv,vfncvtitof,vaesef,vldr,vlsegdox,vfwmul, + vfmul,vfredu,crypto,vmalu,vimul,vghsh,vialu,viwmul, + vfcvtftoi,vaalu,vislide1up,vfcvtitof,vfwcvtftof,vgather, + vaesz,vbrev,vshift,vsha2ch,vssegtux,vssegtox,vcompress, + vcpop,vstux,vfncvtftof,vfrecp,vssegts,sf_vfnrclip, + vstox,vstr,vlsegdff,vired,vimovvx,vislide1down,vclz, + vfwredu,rdvl,vlde,vaesem,vsm3me,vmiota,vldux,vlsegde, + vssegte,vfwmaccbf16,vfwredo,vctz,vsm4k,vsshift,vsts, + vmsfs,vfmovvf,vfslide1down,viwred,vslidedown,vfncvtftoi, + vsm3c,vnshift,vfalu,vfsqrt,wrvxrm,vfmuladd,vmov,vsetvl, + vfclass,vsha2cl,vicmp,vldff,vfdiv,vste,vaeskf2, + vfncvtbf16,vandn,vbrev8,vgmul,vaesdm,vlsegdux,vfsgnj, + vfmov,rdfrm,vlsegds,vclmulh,vimuladd,viwalu,vfwmuladd, + vimerge,vror,rdvlenb,vfwcvtitof,vaesdf,viwmuladd,vrev8, + vsm4r,vsalu,vfminmax,vicalu,vslideup,vldox,vstm, + vfwcvtbf16,vfmovfv,vfslide1up,vimovxv,sf_vc,sf_vqmacc, + sf_vc_se")) + "(arcv_rhx100_issueA_fuse0 + arcv_rhx100_issueA_fuse1) | (arcv_rhx100_issueB_fuse0 + arcv_rhx100_issueB_fuse1)") + +;; Bypasses +(define_bypass 1 "arcv_rhx100_alu_early_arith" "arcv_rhx100_store_insn" "riscv_store_data_bypass_p") + +(define_bypass 1 "arcv_rhx100_load_insn" "arcv_rhx100_store_insn" "riscv_store_data_bypass_p") +(define_bypass 1 "arcv_rhx100_load_insn" "arcv_rhx100_alu_early_arith") +(define_bypass 1 "arcv_rhx100_load_insn" "arcv_rhx100_mpy_insn") +(define_bypass 2 "arcv_rhx100_load_insn" "arcv_rhx100_load_insn") +(define_bypass 1 "arcv_rhx100_load_insn" "arcv_rhx100_div_insn") + +(define_bypass 3 "arcv_rhx100_mpy_insn" "arcv_rhx100_mpy_insn") +(define_bypass 3 "arcv_rhx100_mpy_insn" "arcv_rhx100_div_insn") diff --git a/gcc/config/riscv/riscv-cores.def b/gcc/config/riscv/riscv-cores.def index 79a460f8176e..66f1dc703151 100644 --- a/gcc/config/riscv/riscv-cores.def +++ b/gcc/config/riscv/riscv-cores.def @@ -51,6 +51,7 @@ RISCV_TUNE("xt-c920v2", generic, generic_ooo_tune_info) RISCV_TUNE("xiangshan-nanhu", xiangshan, xiangshan_nanhu_tune_info) RISCV_TUNE("xiangshan-kunminghu", xiangshan, generic_ooo_tune_info) RISCV_TUNE("spacemit-x60", spacemit_x60, spacemit_x60_tune_info) +RISCV_TUNE("arc-v-rhx-100-series", arcv_rhx100, arcv_rhx100_tune_info) RISCV_TUNE("generic-ooo", generic_ooo, generic_ooo_tune_info) RISCV_TUNE("size", generic, optimize_size_tune_info) RISCV_TUNE("mips-p8700", mips_p8700, mips_p8700_tune_info) diff --git a/gcc/config/riscv/riscv-opts.h b/gcc/config/riscv/riscv-opts.h index 1c44bc4e6ece..d4bd43100764 100644 --- a/gcc/config/riscv/riscv-opts.h +++ b/gcc/config/riscv/riscv-opts.h @@ -65,6 +65,7 @@ enum riscv_microarchitecture_type { andes_23_series, andes_45_series, spacemit_x60, + arcv_rhx100 }; extern enum riscv_microarchitecture_type riscv_microarchitecture; diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index e09587386ca4..7cb979834929 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -837,6 +837,32 @@ static const struct riscv_tune_param andes_45_tune_info = { true, /* prefer-agnostic. */ }; +/* Costs to use when optimizing for Synopsys RHX-100. */ +static const struct riscv_tune_param arcv_rhx100_tune_info = { + {COSTS_N_INSNS (4), COSTS_N_INSNS (5)}, /* fp_add */ + {COSTS_N_INSNS (4), COSTS_N_INSNS (5)}, /* fp_mul */ + {COSTS_N_INSNS (20), COSTS_N_INSNS (20)}, /* fp_div */ + {COSTS_N_INSNS (4), COSTS_N_INSNS (4)}, /* int_mul */ + {COSTS_N_INSNS (27), COSTS_N_INSNS (43)}, /* int_div */ + 4, /* issue_rate */ + 9, /* branch_cost */ + 2, /* memory_cost */ + 8, /* fmv_cost */ + false, /* slow_unaligned_access */ + false, /* vector_unaligned_access */ + true, /* use_divmod_expansion */ + false, /* overlap_op_by_pieces */ + true, /* use_zero_stride_load */ + false, /* speculative_sched_vsetvl */ + RISCV_FUSE_NOTHING, /* fusible_ops */ + NULL, /* vector cost */ + NULL, /* function_align */ + NULL, /* jump_align */ + NULL, /* loop_align */ + true, /* prefer-agnostic. */ +}; + + static bool riscv_avoid_shrink_wrapping_separate (); static tree riscv_handle_fndecl_attribute (tree *, tree, tree, int, bool *); static tree riscv_handle_type_attribute (tree *, tree, tree, int, bool *); diff --git a/gcc/config/riscv/riscv.md b/gcc/config/riscv/riscv.md index ee44132291f0..43be60339634 100644 --- a/gcc/config/riscv/riscv.md +++ b/gcc/config/riscv/riscv.md @@ -679,7 +679,8 @@ ;; Keep this in sync with enum riscv_microarchitecture. (define_attr "tune" "generic,sifive_7,sifive_p400,sifive_p600,xiangshan,generic_ooo,mips_p8700, - tt_ascalon_d8,andes_25_series,andes_23_series,andes_45_series,spacemit_x60" + tt_ascalon_d8,andes_25_series,andes_23_series,andes_45_series,spacemit_x60, + arcv_rhx100" (const (symbol_ref "((enum attr_tune) riscv_microarchitecture)"))) ;; Describe a user's asm statement. @@ -5203,3 +5204,4 @@ (include "andes-25-series.md") (include "andes-45-series.md") (include "spacemit-x60.md") +(include "arcv-rhx100.md") diff --git a/gcc/doc/riscv-mtune.texi b/gcc/doc/riscv-mtune.texi index 6865bd6fbf70..6ceb9a93facf 100644 --- a/gcc/doc/riscv-mtune.texi +++ b/gcc/doc/riscv-mtune.texi @@ -52,6 +52,8 @@ particular CPU name. Permissible values for this option are: @samp{spacemit-x60}, +@samp{arc-v-rhx-100-series}, + @samp{generic-ooo}, @samp{size}, From 72318db7b685c285769d69acd831bf63607c8be7 Mon Sep 17 00:00:00 2001 From: Michiel Derhaeg Date: Fri, 1 May 2026 07:41:54 -0600 Subject: [PATCH 050/453] [PATCH v2] RISC-V: Add Synopsys RMX-100 series pipeline description. This patch introduces the pipeline description for the Synopsys RMX-100 series processor to the RISC-V GCC backend. The RMX-100 has a short, three-stage, in-order execution pipeline with configurable multiply unit options. The option -mmpy-option was added to control which version of the MPY unit the core has and what the latency of multiply instructions should be similar to ARCv2 cores (see gcc/config/arc/arc.opt:60). gcc/ChangeLog: * config/riscv/riscv-cores.def (RISCV_TUNE): Add arc-v-rmx-100-series. * config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): Add arcv_rmx100. (enum arcv_mpy_option_enum): New enum for ARC-V multiply options. * config/riscv/riscv-protos.h (arcv_mpy_1c_bypass_p): New declaration. (arcv_mpy_2c_bypass_p): New declaration. (arcv_mpy_10c_bypass_p): New declaration. * config/riscv/riscv.cc (arcv_mpy_1c_bypass_p): New function. (arcv_mpy_2c_bypass_p): New function. (arcv_mpy_10c_bypass_p): New function. * config/riscv/riscv.md: Add arcv_rmx100. * config/riscv/riscv.opt: New option for RMX-100 multiply unit configuration. * doc/riscv-mtune.texi: Document arc-v-rmx-100-series. * config/riscv/arcv-rmx100.md: New file. Co-authored-by: Artemiy Volkov Co-authored-by: Luis Silva Signed-off-by: Michiel Derhaeg --- gcc/config/riscv/arcv-rmx100.md | 127 +++++++++++++++++++++++++++++++ gcc/config/riscv/riscv-cores.def | 1 + gcc/config/riscv/riscv-opts.h | 8 ++ gcc/config/riscv/riscv-protos.h | 4 + gcc/config/riscv/riscv.cc | 49 ++++++++++++ gcc/config/riscv/riscv.md | 3 +- gcc/config/riscv/riscv.opt | 17 +++++ gcc/doc/riscv-mtune.texi | 2 + 8 files changed, 210 insertions(+), 1 deletion(-) create mode 100644 gcc/config/riscv/arcv-rmx100.md diff --git a/gcc/config/riscv/arcv-rmx100.md b/gcc/config/riscv/arcv-rmx100.md new file mode 100644 index 000000000000..e573a456db1e --- /dev/null +++ b/gcc/config/riscv/arcv-rmx100.md @@ -0,0 +1,127 @@ +;; DFA scheduling description of the Synopsys RMX-100 cpu +;; for GNU C compiler +;; Copyright (C) 2026 Free Software Foundation, Inc. + +;; This file is part of GCC. + +;; GCC is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; GCC is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GCC; see the file COPYING3. If not see +;; . + +(define_automaton "arcv_rmx100") + +(define_cpu_unit "arcv_rmx100_ALU" "arcv_rmx100") +(define_cpu_unit "arcv_rmx100_FPU" "arcv_rmx100") +(define_cpu_unit "arcv_rmx100_MPY" "arcv_rmx100") +(define_cpu_unit "arcv_rmx100_DIV" "arcv_rmx100") +(define_cpu_unit "arcv_rmx100_DMP" "arcv_rmx100") + +;; Instruction reservation for arithmetic instructions. +(define_insn_reservation "arcv_rmx100_alu_arith" 1 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "unknown, const, arith, shift, slt, multi, auipc, nop, + logical, move, atomic, mvpair, bitmanip, clz, ctz, cpop, + zicond, condmove, clmul, min, max, minu, maxu, rotate")) + "arcv_rmx100_ALU") + +(define_insn_reservation "arcv_rmx100_jmp_insn" 1 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "branch, jump, call, jalr, ret, trap")) + "arcv_rmx100_ALU") + +; DIV insn: latency may be overridden by a define_bypass +(define_insn_reservation "arcv_rmx100_div_insn" 35 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "idiv")) + "arcv_rmx100_DIV*7") + +; MPY insn: latency may be overridden by a define_bypass +(define_insn_reservation "arcv_rmx100_mpy32_insn" 9 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "imul")) + "arcv_rmx100_MPY") + +(define_insn_reservation "arcv_rmx100_load_insn" 3 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "load")) + "arcv_rmx100_DMP") + +(define_insn_reservation "arcv_rmx100_store_insn" 1 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "store,fpstore")) + "arcv_rmx100_DMP") + +;; FPU scheduling. This is based on the "fast" unit for now. + +(define_insn_reservation "arcv_rmx100_fpload_insn" 3 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "fpload")) + "arcv_rmx100_DMP") + +(define_insn_reservation "arcv_rmx100_farith_insn" 2 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "fadd,fcmp")) + "arcv_rmx100_FPU") + +(define_insn_reservation "arcv_rmx100_xfer" 1 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "fmove,mtc,mfc,fcvt,fcvt_f2i,fcvt_i2f")) + "arcv_rmx100_FPU") + +(define_insn_reservation "arcv_rmx100_fmul_insn" 2 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "fmul")) + "arcv_rmx100_FPU") + +(define_insn_reservation "arcv_rmx100_fmac_insn" 2 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "fmadd")) + "arcv_rmx100_FPU") + +(define_insn_reservation "arcv_rmx100_fdiv_insn" 10 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "fdiv,fsqrt")) + "arcv_rmx100_FPU") + +(define_insn_reservation "arcv_rmx100_unknown" 5 + (and (eq_attr "tune" "arcv_rmx100") + (eq_attr "type" "vfwalu,vfwcvtftoi,vrol,vmidx,vext,vaeskf1,vfredo, + vector,sfb_alu,vlds,viminmax,vfcmp,vimov,vsmul,vnclip, + vldm,vsetvl_pre,vwsll,vfmerge,vmffs,vclmul,vmpop,wrfrm, + vsha2ms,vidiv,vfncvtitof,vaesef,vldr,vlsegdox,vfwmul, + vfmul,vfredu,crypto,vmalu,vimul,vghsh,vialu,viwmul, + vfcvtftoi,vaalu,vislide1up,vfcvtitof,vfwcvtftof,vgather, + vaesz,vbrev,vshift,vsha2ch,vssegtux,vssegtox,vcompress, + vcpop,vstux,vfncvtftof,vfrecp,vssegts,sf_vfnrclip, + vstox,vstr,vlsegdff,vired,vimovvx,vislide1down,vclz, + vfwredu,rdvl,vlde,vaesem,vsm3me,vmiota,vldux,vlsegde, + vssegte,vfwmaccbf16,vfwredo,vctz,vsm4k,vsshift,vsts, + vmsfs,vfmovvf,vfslide1down,viwred,vslidedown,vfncvtftoi, + vsm3c,vnshift,vfalu,vfsqrt,wrvxrm,vfmuladd,vmov,vsetvl, + vfclass,vsha2cl,vicmp,vldff,vfdiv,vste,vaeskf2, + vfncvtbf16,vandn,vbrev8,vgmul,vaesdm,vlsegdux,vfsgnj, + vfmov,rdfrm,vlsegds,vclmulh,vimuladd,viwalu,vfwmuladd, + vimerge,vror,rdvlenb,vfwcvtitof,vaesdf,viwmuladd,vrev8, + vsm4r,vsalu,vfminmax,vicalu,vslideup,vldox,vstm, + vfwcvtbf16,vfmovfv,vfslide1up,vimovxv,sf_vc,sf_vqmacc, + sf_vc_se")) + "arcv_rmx100_ALU") + + +(define_bypass 1 "arcv_rmx100_mpy32_insn" + "arcv_rmx100_*" "arcv_mpy_1c_bypass_p") +(define_bypass 2 "arcv_rmx100_mpy32_insn" + "arcv_rmx100_*" "arcv_mpy_2c_bypass_p") + +(define_bypass 9 "arcv_rmx100_div_insn" "arcv_rmx100_*" "arcv_mpy_1c_bypass_p") +(define_bypass 9 "arcv_rmx100_div_insn" "arcv_rmx100_*" "arcv_mpy_2c_bypass_p") diff --git a/gcc/config/riscv/riscv-cores.def b/gcc/config/riscv/riscv-cores.def index 66f1dc703151..257eae1168a2 100644 --- a/gcc/config/riscv/riscv-cores.def +++ b/gcc/config/riscv/riscv-cores.def @@ -58,6 +58,7 @@ RISCV_TUNE("mips-p8700", mips_p8700, mips_p8700_tune_info) RISCV_TUNE("andes-25-series", andes_25_series, andes_25_tune_info) RISCV_TUNE("andes-23-series", andes_23_series, andes_23_tune_info) RISCV_TUNE("andes-45-series", andes_45_series, andes_45_tune_info) +RISCV_TUNE("arc-v-rmx-100-series", arcv_rmx100, arcv_rmx100_tune_info) #undef RISCV_TUNE diff --git a/gcc/config/riscv/riscv-opts.h b/gcc/config/riscv/riscv-opts.h index d4bd43100764..88a4aa339263 100644 --- a/gcc/config/riscv/riscv-opts.h +++ b/gcc/config/riscv/riscv-opts.h @@ -65,6 +65,7 @@ enum riscv_microarchitecture_type { andes_23_series, andes_45_series, spacemit_x60, + arcv_rmx100, arcv_rhx100 }; extern enum riscv_microarchitecture_type riscv_microarchitecture; @@ -93,6 +94,13 @@ enum rvv_max_lmul_enum { RVV_CONV_DYNAMIC = 10 }; +/* ARC-V multiply option. */ +enum arcv_mpy_option_enum { + ARCV_MPY_OPTION_1C = 1, + ARCV_MPY_OPTION_2C = 2, + ARCV_MPY_OPTION_10C = 8, +}; + enum riscv_multilib_select_kind { /* Select multilib by builtin way. */ select_by_builtin, diff --git a/gcc/config/riscv/riscv-protos.h b/gcc/config/riscv/riscv-protos.h index 494feb4458de..5bdccfb317c4 100644 --- a/gcc/config/riscv/riscv-protos.h +++ b/gcc/config/riscv/riscv-protos.h @@ -840,6 +840,10 @@ extern const char *th_output_move (rtx, rtx); extern bool th_print_operand_address (FILE *, machine_mode, rtx); #endif +extern bool arcv_mpy_1c_bypass_p (rtx_insn *, rtx_insn *); +extern bool arcv_mpy_2c_bypass_p (rtx_insn *, rtx_insn *); +extern bool arcv_mpy_10c_bypass_p (rtx_insn *, rtx_insn *); + extern bool strided_load_broadcast_p (void); extern bool riscv_prefer_agnostic_p (void); extern bool riscv_use_divmod_expander (void); diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 7cb979834929..53888f17710c 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -863,6 +863,31 @@ static const struct riscv_tune_param arcv_rhx100_tune_info = { }; +/* Costs to use when optimizing for Synopsys RMX-100. */ +static const struct riscv_tune_param arcv_rmx100_tune_info = { + {COSTS_N_INSNS (2), COSTS_N_INSNS (2)}, /* fp_add */ + {COSTS_N_INSNS (2), COSTS_N_INSNS (2)}, /* fp_mul */ + {COSTS_N_INSNS (17), COSTS_N_INSNS (17)}, /* fp_div */ + {COSTS_N_INSNS (2), COSTS_N_INSNS (2)}, /* int_mul */ + {COSTS_N_INSNS (17), COSTS_N_INSNS (17)}, /* int_div */ + 1, /* issue_rate */ + 4, /* branch_cost */ + 2, /* memory_cost */ + 4, /* fmv_cost */ + false, /* slow_unaligned_access */ + false, /* vector_unaligned_access */ + true, /* use_divmod_expansion */ + false, /* overlap_op_by_pieces */ + true, /* use_zero_stride_load */ + false, /* speculative_sched_vsetvl */ + RISCV_FUSE_NOTHING, /* fusible_ops */ + NULL, /* vector cost */ + NULL, /* function_align */ + NULL, /* jump_align */ + NULL, /* loop_align */ + true, /* prefer-agnostic. */ +}; + static bool riscv_avoid_shrink_wrapping_separate (); static tree riscv_handle_fndecl_attribute (tree *, tree, tree, int, bool *); static tree riscv_handle_type_attribute (tree *, tree, tree, int, bool *); @@ -10770,6 +10795,30 @@ riscv_store_data_bypass_p (rtx_insn *out_insn, rtx_insn *in_insn) return store_data_bypass_p (out_insn, in_insn); } +/* Implement one boolean function for each of the values of the + arcv_mpy_option enum, for the needs of arcv-rmx100.md. */ + +bool +arcv_mpy_1c_bypass_p (rtx_insn *out_insn ATTRIBUTE_UNUSED, + rtx_insn *in_insn ATTRIBUTE_UNUSED) +{ + return arcv_mpy_option == ARCV_MPY_OPTION_1C; +} + +bool +arcv_mpy_2c_bypass_p (rtx_insn *out_insn ATTRIBUTE_UNUSED, + rtx_insn *in_insn ATTRIBUTE_UNUSED) +{ + return arcv_mpy_option == ARCV_MPY_OPTION_2C; +} + +bool +arcv_mpy_10c_bypass_p (rtx_insn *out_insn ATTRIBUTE_UNUSED, + rtx_insn *in_insn ATTRIBUTE_UNUSED) +{ + return arcv_mpy_option == ARCV_MPY_OPTION_10C; +} + /* Implement TARGET_SECONDARY_MEMORY_NEEDED. When floating-point registers are wider than integer ones, moves between diff --git a/gcc/config/riscv/riscv.md b/gcc/config/riscv/riscv.md index 43be60339634..4a49e778fed5 100644 --- a/gcc/config/riscv/riscv.md +++ b/gcc/config/riscv/riscv.md @@ -680,7 +680,7 @@ (define_attr "tune" "generic,sifive_7,sifive_p400,sifive_p600,xiangshan,generic_ooo,mips_p8700, tt_ascalon_d8,andes_25_series,andes_23_series,andes_45_series,spacemit_x60, - arcv_rhx100" + arcv_rmx100,arcv_rhx100" (const (symbol_ref "((enum attr_tune) riscv_microarchitecture)"))) ;; Describe a user's asm statement. @@ -5204,4 +5204,5 @@ (include "andes-25-series.md") (include "andes-45-series.md") (include "spacemit-x60.md") +(include "arcv-rmx100.md") (include "arcv-rhx100.md") diff --git a/gcc/config/riscv/riscv.opt b/gcc/config/riscv/riscv.opt index 2c26ee996913..c6e099eb47e0 100644 --- a/gcc/config/riscv/riscv.opt +++ b/gcc/config/riscv/riscv.opt @@ -423,3 +423,20 @@ Specifies whether the fence.tso instruction should be used. mautovec-segment Target Integer Var(riscv_mautovec_segment) Init(1) Enable (default) or disable generation of vector segment load/store instructions. + +Enum +Name(arcv_mpy_option) Type(enum arcv_mpy_option_enum) +Valid arguments to -mmpy_option=: + +EnumValue +Enum(arcv_mpy_option) String(1c) Value(ARCV_MPY_OPTION_1C) + +EnumValue +Enum(arcv_mpy_option) String(2c) Value(ARCV_MPY_OPTION_2C) + +EnumValue +Enum(arcv_mpy_option) String(10c) Value(ARCV_MPY_OPTION_10C) + +mmpy-option= +Target RejectNegative Joined Enum(arcv_mpy_option) Var(arcv_mpy_option) Init(ARCV_MPY_OPTION_2C) +The type of MPY unit used by the RMX-100 core (to be used in combination with -mtune=arc-v-rmx-100-series) (default: 2c). diff --git a/gcc/doc/riscv-mtune.texi b/gcc/doc/riscv-mtune.texi index 6ceb9a93facf..7ab6f6345409 100644 --- a/gcc/doc/riscv-mtune.texi +++ b/gcc/doc/riscv-mtune.texi @@ -66,4 +66,6 @@ particular CPU name. Permissible values for this option are: @samp{andes-45-series}, +@samp{arc-v-rmx-100-series}, + and all valid options for @option{-mcpu=}. From c776dcd5f868a16661b86842916493b531988d1e Mon Sep 17 00:00:00 2001 From: Kewen Lin Date: Fri, 1 May 2026 13:50:57 +0000 Subject: [PATCH 051/453] i386: Adjust some c86-4g*.md modeling to reduce build time Commit r17-203 caused significant increase in GCC build time on several environments as folks reported, mainly due to excessively long execution time of genautomata. As Alexander pointed out, the current division modeling in c86-4g*.md can cause a combinatorial explosion in the automaton, that further leads to significant build time increase. Following Alexander's suggestion, this patch introduces the dedicated automatons and cpu_units for idiv and fdiv, uses them to updates the integer, floating point division and square root modeling for now. Some evaluated statistics are listed below. With r17-202: *Tested stage-1 i686 build -j 32: 255 seconds* $ nm -CS -t d --defined-only gcc/insn-automata.o \ | sed 's/^[0-9]* 0*//' \ | sort -n | tail -20 13896 r slm_transitions 15360 r znver4_fp_store_transitions 16760 r znver4_ieu_transitions 17776 r bdver1_ieu_transitions 20068 r bdver1_fp_check 20068 r bdver1_fp_transitions 20983 t internal_state_transition(int, DFA_chip*) 22270 t internal_min_issue_delay(int, DFA_chip*) 26208 r slm_min_issue_delay 27244 r bdver1_fp_min_issue_delay 28518 r glm_check 28518 r glm_transitions 33690 r geode_min_issue_delay 45436 r znver4_fpu_min_issue_delay 46980 r bdver3_fp_min_issue_delay 49428 r glm_min_issue_delay 53730 r btver2_fp_min_issue_delay 53760 r znver1_fp_transitions 93960 r bdver3_fp_transitions 181744 r znver4_fpu_transitions With culprit commit r17-203: *Tested stage-1 i686 build -j 32: 949 seconds* $ nm -CS -t d --defined-only gcc/insn-automata.o \ | sed 's/^[0-9]* 0*//' \ | sort -n | tail -20 28518 r glm_check 28518 r glm_transitions 33690 r geode_min_issue_delay 45436 r znver4_fpu_min_issue_delay 46980 r bdver3_fp_min_issue_delay 49428 r glm_min_issue_delay 53730 r btver2_fp_min_issue_delay 53760 r znver1_fp_transitions 68160 r c86_4g_ieu_min_issue_delay 93960 r bdver3_fp_transitions 110080 r c86_4g_fp_min_issue_delay 136320 r c86_4g_ieu_transitions 181744 r znver4_fpu_transitions 220160 r c86_4g_fp_transitions 262988 r c86_4g_m7_fpu_base 475225 r c86_4g_m7_ieu_min_issue_delay 950450 r c86_4g_m7_ieu_transitions 4010567 r c86_4g_m7_fpu_min_issue_delay 5496908 r c86_4g_m7_fpu_check 5496908 r c86_4g_m7_fpu_transitions With this patch: *Tested stage-1 i686 build -j 32: 257 seconds* $ nm -CS -t d --defined-only gcc/insn-automata.o \ | sed 's/^[0-9]* 0*//' \ | sort -n | tail -20 20068 r bdver1_fp_transitions 22354 r c86_4g_m7_ieu_min_issue_delay 25705 t internal_state_transition(int, DFA_chip*) 26208 r slm_min_issue_delay 27164 t internal_min_issue_delay(int, DFA_chip*) 27244 r bdver1_fp_min_issue_delay 28518 r glm_check 28518 r glm_transitions 33690 r geode_min_issue_delay 33728 r c86_4g_fp_transitions 45436 r znver4_fpu_min_issue_delay 46980 r bdver3_fp_min_issue_delay 49428 r glm_min_issue_delay 53730 r btver2_fp_min_issue_delay 53760 r znver1_fp_transitions 89414 r c86_4g_m7_ieu_transitions 93960 r bdver3_fp_transitions 181744 r znver4_fpu_transitions 326322 r c86_4g_m7_fpu_min_issue_delay 1305288 r c86_4g_m7_fpu_transitions I noticed the number of c86_4g_m7_fpu_transitions is still large, but this patch can address the build time issue. To avoid impacting folks' daily builds and regular testings, I'd like to land this patch first if possible. We can then further refine the c86-4g modeling and investigate large transition count as part of the follow-up work, even potentially part of PR 87832. gcc/ChangeLog: * config/i386/c86-4g-m7.md (c86_4g_m7_idiv): New automaton. (c86_4g_m7_fdiv): Ditto. (c86-4g-m7-idiv): New unit. (c86-4g-m7-fdiv): Ditto. (c86_4g_m7_idiv_DI): Adjust unit in the reservation. (c86_4g_m7_idiv_SI): Ditto. (c86_4g_m7_idiv_HI): Ditto. (c86_4g_m7_idiv_QI): Ditto. (c86_4g_m7_idiv_DI_load): Ditto. (c86_4g_m7_idiv_SI_load): Ditto. (c86_4g_m7_idiv_HI_load): Ditto. (c86_4g_m7_idiv_QI_load): Ditto. (c86_4g_m7_fp_div): Ditto. (c86_4g_m7_fp_div_load): Ditto. (c86_4g_m7_fp_idiv_load): Ditto. (c86_4g_m7_avx512_ssediv): Ditto. (c86_4g_m7_avx512_ssediv_mem): Ditto. (c86_4g_m7_avx512_ssediv_z): Ditto. (c86_4g_m7_avx512_ssediv_zmem): Ditto. (c86_4g_m7_avx512_sse_sqrt): Ditto. (c86_4g_m7_avx512_sse_sqrt_load): Ditto. (c86_4g_m7_fp_sqrt): Ditto. Rename from ... (c86_4g_m7fp_sqrt): ... here. * config/i386/c86-4g.md (c86_4g_idiv): New automaton. (c86_4g_fdiv): Ditto. (c86-4g-idiv): New unit. (c86-4g-fdiv): Ditto. (c86_4g_idiv_DI): Ditto. (c86_4g_idiv_SI): Ditto. (c86_4g_idiv_HI): Ditto. (c86_4g_idiv_QI): Ditto. (c86_4g_idiv_mem_DI): Ditto. (c86_4g_idiv_mem_SI): Ditto. (c86_4g_idiv_mem_HI): Ditto. (c86_4g_idiv_mem_QI): Ditto. (c86_4g_fp_sqrt): Ditto. (c86_4g_sse_sqrt_sf): Ditto. (c86_4g_sse_sqrt_sf_mem): Ditto. (c86_4g_sse_sqrt_df): Ditto. (c86_4g_sse_sqrt_df_mem): Ditto. (c86_4g_fp_op_div): Ditto. (c86_4g_fp_op_div_load): Ditto. (c86_4g_fp_op_idiv_load): Ditto. (c86_4g_ssediv_ss_ps): Ditto. (c86_4g_ssediv_ss_ps_load): Ditto. (c86_4g_ssediv_ss_pd): Ditto. (c86_4g_ssediv_ss_pd_load): Ditto. (c86_4g_ssediv_avx256_ps): Ditto. (c86_4g_ssediv_avx256_ps_load): Ditto. (c86_4g_ssediv_avx256_pd): Ditto. (c86_4g_ssediv_avx256_pd_load): Ditto. Signed-off-by: Kewen Lin --- gcc/config/i386/c86-4g-m7.md | 47 ++++++++++++++++------------- gcc/config/i386/c86-4g.md | 57 ++++++++++++++++++++---------------- 2 files changed, 57 insertions(+), 47 deletions(-) diff --git a/gcc/config/i386/c86-4g-m7.md b/gcc/config/i386/c86-4g-m7.md index 7eda123acaa5..54a850db3be8 100644 --- a/gcc/config/i386/c86-4g-m7.md +++ b/gcc/config/i386/c86-4g-m7.md @@ -19,8 +19,9 @@ ;; HYGON c86-4g-m7 Scheduling ;; Modeling automatons for decoders, integer execution pipes, -;; AGU pipes, branch, floating point execution and fp store units. -(define_automaton "c86_4g_m7, c86_4g_m7_ieu, c86_4g_m7_agu, c86_4g_m7_fpu") +;; AGU pipes, branch, floating point execution, fp store units, +;; integer and floating point dividers. +(define_automaton "c86_4g_m7, c86_4g_m7_ieu, c86_4g_m7_agu, c86_4g_m7_fpu, c86_4g_m7_idiv, c86_4g_m7_fdiv") ;; Decoders unit has 4 decoders and all of them can decode fast path ;; and vector type instructions. @@ -29,6 +30,10 @@ (define_cpu_unit "c86-4g-m7-decode2" "c86_4g_m7") (define_cpu_unit "c86-4g-m7-decode3" "c86_4g_m7") +;; Two separated dividers for int and fp. +(define_cpu_unit "c86-4g-m7-idiv" "c86_4g_m7_idiv") +(define_cpu_unit "c86-4g-m7-fdiv" "c86_4g_m7_fdiv") + ;; Currently blocking all decoders for vector path instructions as ;; they are dispatched separetely as microcode sequence. (define_reservation "c86-4g-m7-vector" "c86-4g-m7-decode0+c86-4g-m7-decode1+c86-4g-m7-decode2+c86-4g-m7-decode3") @@ -168,56 +173,56 @@ (and (eq_attr "type" "idiv") (and (eq_attr "mode" "DI") (eq_attr "memory" "none")))) - "c86-4g-m7-double,c86-4g-m7-ieu3*41") + "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*41") (define_insn_reservation "c86_4g_m7_idiv_SI" 25 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "SI") (eq_attr "memory" "none")))) - "c86-4g-m7-double,c86-4g-m7-ieu3*25") + "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*25") (define_insn_reservation "c86_4g_m7_idiv_HI" 17 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "HI") (eq_attr "memory" "none")))) - "c86-4g-m7-double,c86-4g-m7-ieu3*17") + "c86-4g-m7-double,c86-4g-m7-ieu3,c86-4g-m7-idiv*17") (define_insn_reservation "c86_4g_m7_idiv_QI" 15 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "QI") (eq_attr "memory" "none")))) - "c86-4g-m7-direct,c86-4g-m7-ieu3*15") + "c86-4g-m7-direct,c86-4g-m7-ieu3,c86-4g-m7-idiv*15") (define_insn_reservation "c86_4g_m7_idiv_DI_load" 45 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "DI") (eq_attr "memory" "load")))) - "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3*41") + "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*41") (define_insn_reservation "c86_4g_m7_idiv_SI_load" 29 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "SI") (eq_attr "memory" "load")))) - "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3*25") + "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*25") (define_insn_reservation "c86_4g_m7_idiv_HI_load" 21 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "HI") (eq_attr "memory" "load")))) - "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3*17") + "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*17") (define_insn_reservation "c86_4g_m7_idiv_QI_load" 19 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "QI") (eq_attr "memory" "load")))) - "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu3*15") + "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-ieu3,c86-4g-m7-idiv*15") ;; Integer/genaral Instructions (define_insn_reservation "c86_4g_m7_insn" 1 @@ -435,11 +440,11 @@ "c86-4g-m7-direct,c86-4g-m7-fpu1") ;; FSQRT -(define_insn_reservation "c86_4g_m7fp_sqrt" 22 +(define_insn_reservation "c86_4g_m7_fp_sqrt" 22 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "fpspc") (eq_attr "c86_attr" "sqrt"))) - "c86-4g-m7-direct,c86-4g-m7-fpu1*22") + "c86-4g-m7-direct,c86-4g-m7-fpu1,c86-4g-m7-fdiv*22") ;; FPSPC (define_insn_reservation "c86_4g_m7_fp_spc_direct" 5 @@ -482,21 +487,21 @@ (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "fdiv") (eq_attr "memory" "none"))) - "c86-4g-m7-direct,c86-4g-m7-fpu1*7") + "c86-4g-m7-direct,c86-4g-m7-fpu1,c86-4g-m7-fdiv*15") (define_insn_reservation "c86_4g_m7_fp_div_load" 22 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "fdiv") (and (eq_attr "fp_int_src" "false") (eq_attr "memory" "!none")))) - "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1*7") + "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fdiv*15") (define_insn_reservation "c86_4g_m7_fp_idiv_load" 26 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "fdiv") (and (eq_attr "fp_int_src" "true") (eq_attr "memory" "!none")))) - "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1*7") + "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu1,c86-4g-m7-fdiv*15") (define_insn_reservation "c86_4g_m7_fp_fsgn" 1 (and (eq_attr "cpu" "c86_4g_m7") @@ -1531,28 +1536,28 @@ (and (eq_attr "type" "ssediv") (and (not (eq_attr "mode" "V16SF,V8DF")) (eq_attr "memory" "none")))) - "c86-4g-m7-direct,c86-4g-m7-fpu3*7") + "c86-4g-m7-direct,c86-4g-m7-fpu3,c86-4g-m7-fdiv*13") (define_insn_reservation "c86_4g_m7_avx512_ssediv_mem" 20 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "ssediv") (and (not (eq_attr "mode" "V16SF,V8DF")) (eq_attr "memory" "load")))) - "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu3*7") + "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu3,c86-4g-m7-fdiv*13") (define_insn_reservation "c86_4g_m7_avx512_ssediv_z" 24 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "ssediv") (and (eq_attr "mode" "V16SF,V8DF") (eq_attr "memory" "none")))) - "c86-4g-m7-double,c86-4g-m7-fpu3*7") + "c86-4g-m7-double,c86-4g-m7-fpu3,c86-4g-m7-fdiv*24") (define_insn_reservation "c86_4g_m7_avx512_ssediv_zmem" 31 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "ssediv") (and (eq_attr "mode" "V16SF,V8DF") (eq_attr "memory" "load")))) - "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu3*7") + "c86-4g-m7-double,c86-4g-m7-load,c86-4g-m7-fpu3,c86-4g-m7-fdiv*24") ;; SSECMP (define_insn_reservation "c86_4g_m7_avx512_ssecmp" 5 @@ -1932,14 +1937,14 @@ (and (eq_attr "type" "sse") (and (eq_attr "c86_attr" "sqrt") (eq_attr "memory" "none")))) - "c86-4g-m7-direct,c86-4g-m7-fpu1*7|c86-4g-m7-fpu3*7") + "c86-4g-m7-direct,c86-4g-m7-fpu1|c86-4g-m7-fpu3,c86-4g-m7-fdiv*16") (define_insn_reservation "c86_4g_m7_avx512_sse_sqrt_load" 23 (and (eq_attr "cpu" "c86_4g_m7") (and (eq_attr "type" "sse") (and (eq_attr "c86_attr" "sqrt") (eq_attr "memory" "load")))) - "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1*7|c86-4g-m7-fpu3*7") + "c86-4g-m7-direct,c86-4g-m7-load,c86-4g-m7-fpu1|c86-4g-m7-fpu3,c86-4g-m7-fdiv*16") ;; MSKLOG/MSKMOV (define_insn_reservation "c86_4g_m7_avx512_msklog" 1 diff --git a/gcc/config/i386/c86-4g.md b/gcc/config/i386/c86-4g.md index 66c4e2cf744f..49a46a8aa19e 100644 --- a/gcc/config/i386/c86-4g.md +++ b/gcc/config/i386/c86-4g.md @@ -29,8 +29,9 @@ ;; HYGON Scheduling ;; Modeling automatons for decoders, integer execution pipes, -;; AGU pipes and floating point execution units. -(define_automaton "c86_4g, c86_4g_ieu, c86_4g_fp, c86_4g_agu") +;; AGU pipes, floating point execution units, integer and +;; floating point dividers. +(define_automaton "c86_4g, c86_4g_ieu, c86_4g_fp, c86_4g_agu, c86_4g_idiv, c86_4g_fdiv") ;; Decoders unit has 4 decoders and all of them can decode fast path ;; and vector type instructions. @@ -39,6 +40,10 @@ (define_cpu_unit "c86-4g-decode2" "c86_4g") (define_cpu_unit "c86-4g-decode3" "c86_4g") +;; Two separated dividers for int and fp. +(define_cpu_unit "c86-4g-idiv" "c86_4g_idiv") +(define_cpu_unit "c86-4g-fdiv" "c86_4g_fdiv") + ;; Currently blocking all decoders for vector path instructions as ;; they are dispatched separetely as microcode sequence. ;; Fix me: Need to revisit this. @@ -146,28 +151,28 @@ (and (eq_attr "type" "idiv") (and (eq_attr "mode" "DI") (eq_attr "memory" "none")))) - "c86-4g-double,c86-4g-ieu2*41") + "c86-4g-double,c86-4g-ieu2,c86-4g-idiv*41") (define_insn_reservation "c86_4g_idiv_SI" 25 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "SI") (eq_attr "memory" "none")))) - "c86-4g-double,c86-4g-ieu2*25") + "c86-4g-double,c86-4g-ieu2,c86-4g-idiv*25") (define_insn_reservation "c86_4g_idiv_HI" 17 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "HI") (eq_attr "memory" "none")))) - "c86-4g-double,c86-4g-ieu2*17") + "c86-4g-double,c86-4g-ieu2,c86-4g-idiv*17") (define_insn_reservation "c86_4g_idiv_QI" 15 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "QI") (eq_attr "memory" "none")))) - "c86-4g-direct,c86-4g-ieu2*15") + "c86-4g-direct,c86-4g-ieu2,c86-4g-idiv*15") ;; Mem operands (define_insn_reservation "c86_4g_idiv_mem_DI" 45 @@ -175,28 +180,28 @@ (and (eq_attr "type" "idiv") (and (eq_attr "mode" "DI") (eq_attr "memory" "load")))) - "c86-4g-double,c86-4g-load,c86-4g-ieu2*41") + "c86-4g-double,c86-4g-load,c86-4g-ieu2,c86-4g-idiv*41") (define_insn_reservation "c86_4g_idiv_mem_SI" 29 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "SI") (eq_attr "memory" "load")))) - "c86-4g-double,c86-4g-load,c86-4g-ieu2*25") + "c86-4g-double,c86-4g-load,c86-4g-ieu2,c86-4g-idiv*25") (define_insn_reservation "c86_4g_idiv_mem_HI" 21 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "HI") (eq_attr "memory" "load")))) - "c86-4g-double,c86-4g-load,c86-4g-ieu2*17") + "c86-4g-double,c86-4g-load,c86-4g-ieu2,c86-4g-idiv*17") (define_insn_reservation "c86_4g_idiv_mem_QI" 19 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "type" "idiv") (and (eq_attr "mode" "QI") (eq_attr "memory" "load")))) - "c86-4g-direct,c86-4g-load,c86-4g-ieu2*15") + "c86-4g-direct,c86-4g-load,c86-4g-ieu2,c86-4g-idiv*15") ;; STR ISHIFT which are micro coded. ;; Fix me: Latency need to be rechecked. @@ -382,7 +387,7 @@ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "type" "fpspc") (eq_attr "c86_attr" "sqrt"))) - "c86-4g-direct,c86-4g-fp1*22") + "c86-4g-direct,c86-4g-fp1,c86-4g-fdiv*22") (define_insn_reservation "c86_4g_sse_sqrt_sf" 14 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") @@ -390,7 +395,7 @@ (and (eq_attr "memory" "none,unknown") (and (eq_attr "c86_attr" "sqrt") (eq_attr "type" "sse"))))) - "c86-4g-direct,c86-4g-fp1*14") + "c86-4g-direct,c86-4g-fp1,c86-4g-fdiv*14") (define_insn_reservation "c86_4g_sse_sqrt_sf_mem" 21 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") @@ -398,7 +403,7 @@ (and (eq_attr "memory" "load") (and (eq_attr "c86_attr" "sqrt") (eq_attr "type" "sse"))))) - "c86-4g-direct,c86-4g-load,c86-4g-fp1*14") + "c86-4g-direct,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*14") (define_insn_reservation "c86_4g_sse_sqrt_df" 20 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") @@ -406,7 +411,7 @@ (and (eq_attr "memory" "none,unknown") (and (eq_attr "c86_attr" "sqrt") (eq_attr "type" "sse"))))) - "c86-4g-direct,c86-4g-fp1*20") + "c86-4g-direct,c86-4g-fp1,c86-4g-fdiv*20") (define_insn_reservation "c86_4g_sse_sqrt_df_mem" 27 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") @@ -414,7 +419,7 @@ (and (eq_attr "memory" "load") (and (eq_attr "c86_attr" "sqrt") (eq_attr "type" "sse"))))) - "c86-4g-direct,c86-4g-load,c86-4g-fp1*20") + "c86-4g-direct,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*20") ;; RCP (define_insn_reservation "c86_4g_sse_rcp" 5 @@ -487,20 +492,20 @@ (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "type" "fdiv") (eq_attr "memory" "none"))) - "c86-4g-direct,c86-4g-fp1*15") + "c86-4g-direct,c86-4g-fp1,c86-4g-fdiv*15") (define_insn_reservation "c86_4g_fp_op_div_load" 22 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "type" "fdiv") (eq_attr "memory" "load"))) - "c86-4g-direct,c86-4g-load,c86-4g-fp1*15") + "c86-4g-direct,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*15") (define_insn_reservation "c86_4g_fp_op_idiv_load" 27 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "type" "fdiv") (and (eq_attr "fp_int_src" "true") (eq_attr "memory" "load")))) - "c86-4g-double,c86-4g-load,c86-4g-fp1*19") + "c86-4g-double,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*19") ;; MMX, SSE, SSEn.n, AVX, AVX2 instructions (define_insn_reservation "c86_4g_fp_insn" 1 @@ -1019,28 +1024,28 @@ (eq_attr "mode" "V4SF,SF")) (and (eq_attr "type" "ssediv") (eq_attr "memory" "none"))) - "c86-4g-direct,c86-4g-fp1*10") + "c86-4g-direct,c86-4g-fp1,c86-4g-fdiv*10") (define_insn_reservation "c86_4g_ssediv_ss_ps_load" 17 (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (eq_attr "mode" "V4SF,SF")) (and (eq_attr "type" "ssediv") (eq_attr "memory" "load"))) - "c86-4g-direct,c86-4g-load,c86-4g-fp1*10") + "c86-4g-direct,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*10") (define_insn_reservation "c86_4g_ssediv_sd_pd" 13 (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (eq_attr "mode" "V2DF,DF")) (and (eq_attr "type" "ssediv") (eq_attr "memory" "none"))) - "c86-4g-direct,c86-4g-fp1*13") + "c86-4g-direct,c86-4g-fp1,c86-4g-fdiv*13") (define_insn_reservation "c86_4g_ssediv_sd_pd_load" 20 (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (eq_attr "mode" "V2DF,DF")) (and (eq_attr "type" "ssediv") (eq_attr "memory" "load"))) - "c86-4g-direct,c86-4g-load,c86-4g-fp1*13") + "c86-4g-direct,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*13") (define_insn_reservation "c86_4g_ssediv_avx256_ps" 10 @@ -1048,28 +1053,28 @@ (and (eq_attr "mode" "V8SF") (and (eq_attr "memory" "none") (eq_attr "type" "ssediv")))) - "c86-4g-double,c86-4g-fp1*10") + "c86-4g-double,c86-4g-fp1,c86-4g-fdiv*10") (define_insn_reservation "c86_4g_ssediv_avx256_ps_load" 17 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "mode" "V8SF") (and (eq_attr "type" "ssediv") (eq_attr "memory" "load")))) - "c86-4g-double,c86-4g-load,c86-4g-fp1*10") + "c86-4g-double,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*10") (define_insn_reservation "c86_4g_ssediv_avx256_pd" 13 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "mode" "V4DF") (and (eq_attr "type" "ssediv") (eq_attr "memory" "none")))) - "c86-4g-double,c86-4g-fp1*13") + "c86-4g-double,c86-4g-fp1,c86-4g-fdiv*13") (define_insn_reservation "c86_4g_ssediv_avx256_pd_load" 20 (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") (and (eq_attr "mode" "V4DF") (and (eq_attr "type" "ssediv") (eq_attr "memory" "load")))) - "c86-4g-double,c86-4g-load,c86-4g-fp1*13") + "c86-4g-double,c86-4g-load,c86-4g-fp1,c86-4g-fdiv*13") ;; SSE MUL (define_insn_reservation "c86_4g_ssemul_ss_ps" 3 (and (and (eq_attr "cpu" "c86_4g_m4,c86_4g_m6") From 265461613f6edd57450f1356a8782c92fc7c84f4 Mon Sep 17 00:00:00 2001 From: Michiel Derhaeg Date: Fri, 1 May 2026 09:39:48 -0600 Subject: [PATCH 052/453] [PATCH] RISC-V: Extract fusion logic to riscv-fusion.cc Simple non-functional change. I'm planning to add many more cases to riscv_macro_fusion_pair_p so it is moved to a separate source file to prevent riscv.cc from becoming too unwieldy. Also added some tests to verify the cases that are actually tied to mtunes present upstream. Unfortunately, many of them are not. Regtested for rv32gc & rv64gc with the new tests included in the baseline. gcc/ChangeLog: * config.gcc: Added riscv-fusion.o * config/riscv/riscv-protos.h (enum riscv_fusion_pairs): (riscv_macro_fusion_p): Added declaration. (riscv_macro_fusion_pair_p): Idem. (riscv_get_fusible_ops): Idem. * config/riscv/riscv.cc (enum riscv_fusion_pairs): (riscv_macro_fusion_p): Moved to riscv-fusion.cc (riscv_fusion_enabled_p): Idem. (riscv_set_is_add): Idem. (riscv_set_is_addi): Idem. (riscv_set_is_adduw): Idem. (riscv_set_is_shNadd): Idem. (riscv_set_is_shNadduw): Idem. (riscv_macro_fusion_pair_p): Idem. (riscv_get_fusible_ops): New function to access tune_param->fusible_ops from riscv-fusion.cc. * config/riscv/t-riscv: Added riscv-fusion.cc * config/riscv/riscv-fusion.cc: New file. gcc/testsuite/ChangeLog: * gcc.target/riscv/fusion-auipc-addi.c: New test. * gcc.target/riscv/fusion-lui-addi.c: New test. * gcc.target/riscv/fusion-zexth.c: New test. * gcc.target/riscv/fusion-zextw.c: New test. Signed-off-by: Michiel Derhaeg --- gcc/config.gcc | 2 +- gcc/config/riscv/riscv-fusion.cc | 762 ++++++++++++++++++ gcc/config/riscv/riscv-protos.h | 24 + gcc/config/riscv/riscv.cc | 745 +---------------- gcc/config/riscv/t-riscv | 7 + .../gcc.target/riscv/fusion-auipc-addi.c | 11 + .../gcc.target/riscv/fusion-lui-addi.c | 15 + gcc/testsuite/gcc.target/riscv/fusion-zexth.c | 15 + gcc/testsuite/gcc.target/riscv/fusion-zextw.c | 15 + 9 files changed, 854 insertions(+), 742 deletions(-) create mode 100644 gcc/config/riscv/riscv-fusion.cc create mode 100644 gcc/testsuite/gcc.target/riscv/fusion-auipc-addi.c create mode 100644 gcc/testsuite/gcc.target/riscv/fusion-lui-addi.c create mode 100644 gcc/testsuite/gcc.target/riscv/fusion-zexth.c create mode 100644 gcc/testsuite/gcc.target/riscv/fusion-zextw.c diff --git a/gcc/config.gcc b/gcc/config.gcc index d1595a1d85eb..0d4b7897c21d 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -572,7 +572,7 @@ riscv*) extra_objs="riscv-builtins.o riscv-c.o riscv-sr.o riscv-shorten-memrefs.o riscv-selftests.o riscv-string.o" extra_objs="${extra_objs} riscv-v.o riscv-vsetvl.o riscv-vector-costs.o riscv-avlprop.o riscv-vect-permconst.o" extra_objs="${extra_objs} riscv-vector-builtins.o riscv-vector-builtins-shapes.o riscv-vector-builtins-bases.o sifive-vector-builtins-bases.o andes-vector-builtins-bases.o" - extra_objs="${extra_objs} thead.o riscv-target-attr.o riscv-zicfilp.o riscv-bclr-lowest-set-bit.o riscv-opt-popretz.o" + extra_objs="${extra_objs} thead.o riscv-target-attr.o riscv-zicfilp.o riscv-bclr-lowest-set-bit.o riscv-opt-popretz.o riscv-fusion.o" d_target_objs="riscv-d.o" extra_headers="riscv_vector.h riscv_crypto.h riscv_bitmanip.h riscv_th_vector.h sifive_vector.h andes_vector.h" target_gtfiles="$target_gtfiles \$(srcdir)/config/riscv/riscv-vector-builtins.cc" diff --git a/gcc/config/riscv/riscv-fusion.cc b/gcc/config/riscv/riscv-fusion.cc new file mode 100644 index 000000000000..5bce3eda0a6c --- /dev/null +++ b/gcc/config/riscv/riscv-fusion.cc @@ -0,0 +1,762 @@ +/* Subroutines used for instruction fusion for RISC-V. + Copyright (C) 2026 Free Software Foundation, Inc. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +. */ + +#define IN_TARGET_CODE 1 + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "backend.h" +#include "target.h" +#include "rtl.h" +#include "regs.h" +#include "insn-config.h" +#include "recog.h" +#include "function.h" +#include "memmodel.h" +#include "emit-rtl.h" +#include "tm_p.h" +#include "riscv-protos.h" + +/* Implement TARGET_SCHED_MACRO_FUSION_P. Return true if target supports + instruction fusion of some sort. */ + +bool +riscv_macro_fusion_p (void) +{ + return riscv_get_fusible_ops () != RISCV_FUSE_NOTHING; +} + +/* Return true iff the instruction fusion described by OP is enabled. */ + +static bool +riscv_fusion_enabled_p (enum riscv_fusion_pairs op) +{ + return riscv_get_fusible_ops () & op; +} + +/* Matches an add: + (set (reg:DI rd) (plus:SI (reg:SI rs1) (reg:SI rs2))) */ + +static bool +riscv_set_is_add (rtx set) +{ + return (GET_CODE (SET_SRC (set)) == PLUS + && REG_P (XEXP (SET_SRC (set), 0)) + && REG_P (XEXP (SET_SRC (set), 1)) + && REG_P (SET_DEST (set))); +} + +/* Matches an addi: + (set (reg:DI rd) (plus:SI (reg:SI rs1) (const_int imm))) */ + +static bool +riscv_set_is_addi (rtx set) +{ + return (GET_CODE (SET_SRC (set)) == PLUS + && REG_P (XEXP (SET_SRC (set), 0)) + && CONST_INT_P (XEXP (SET_SRC (set), 1)) + && REG_P (SET_DEST (set))); +} + +/* Matches an add.uw: + (set (reg:DI rd) + (plus:DI (zero_extend:DI (reg:SI rs1)) (reg:DI rs2))) */ + +static bool +riscv_set_is_adduw (rtx set) +{ + return (GET_CODE (SET_SRC (set)) == PLUS + && GET_CODE (XEXP (SET_SRC (set), 0)) == ZERO_EXTEND + && REG_P (XEXP (XEXP (SET_SRC (set), 0), 0)) + && REG_P (XEXP (SET_SRC (set), 1)) + && REG_P (SET_DEST (set))); +} + +/* Matches a shNadd: + (set (reg:DI rd) + (plus:DI (ashift:DI (reg:DI rs1) (const_int N)) (reg:DI rS2)) */ + +static bool +riscv_set_is_shNadd (rtx set) +{ + return (GET_CODE (SET_SRC (set)) == PLUS + && GET_CODE (XEXP (SET_SRC (set), 0)) == ASHIFT + && REG_P (XEXP (XEXP (SET_SRC (set), 0), 0)) + && CONST_INT_P (XEXP (XEXP (SET_SRC (set), 0), 1)) + && (INTVAL (XEXP (XEXP (SET_SRC (set), 0), 1)) == 1 + || INTVAL (XEXP (XEXP (SET_SRC (set), 0), 1)) == 2 + || INTVAL (XEXP (XEXP (SET_SRC (set), 0), 1)) == 3) + && REG_P (SET_DEST (set))); +} + +/* Matches a shNadd.uw: + (set (reg:DI rd) + (plus:DI (and:DI (ashift:DI (reg:DI rs1) (const_int N)) + (const_int N)) + (reg:DI rs2)) */ + +static bool +riscv_set_is_shNadduw (rtx set) +{ + return (GET_CODE (SET_SRC (set)) == PLUS + && GET_CODE (XEXP (SET_SRC (set), 0)) == AND + && GET_CODE (XEXP (XEXP (SET_SRC (set), 0), 0)) == ASHIFT + && REG_P (XEXP (XEXP (XEXP (SET_SRC (set), 0), 0), 0)) + && CONST_INT_P (XEXP (XEXP (XEXP (SET_SRC (set), 0), 0), 1)) + && (INTVAL (XEXP (XEXP (XEXP (SET_SRC (set), 0), 0), 1)) == 1 + || INTVAL (XEXP (XEXP (XEXP (SET_SRC (set), 0), 0), 1)) == 2 + || INTVAL (XEXP (XEXP (XEXP (SET_SRC (set), 0), 0), 1)) == 3) + && REG_P (SET_DEST (set))); +} + +/* Implement TARGET_SCHED_MACRO_FUSION_PAIR_P. Return true if PREV and CURR + should be kept together during scheduling. */ + +bool +riscv_macro_fusion_pair_p (rtx_insn *prev, rtx_insn *curr) +{ + /* If fusion is not enabled, then there's nothing to do. */ + if (!riscv_macro_fusion_p ()) + return false; + + /* If PREV is already marked as fused, then we can't fuse CURR with PREV + and if we were to fuse them we'd end up with a blob of insns that + essentially are an atomic unit which is bad for scheduling. */ + if (SCHED_GROUP_P (prev)) + return false; + + rtx prev_set = single_set (prev); + rtx curr_set = single_set (curr); + /* prev and curr are simple SET insns i.e. no flag setting or branching. */ + bool simple_sets_p = prev_set && curr_set && !any_condjump_p (curr); + bool sched1 = can_create_pseudo_p (); + + unsigned int prev_dest_regno = (prev_set && REG_P (SET_DEST (prev_set)) + ? REGNO (SET_DEST (prev_set)) + : FIRST_PSEUDO_REGISTER); + unsigned int curr_dest_regno = (curr_set && REG_P (SET_DEST (curr_set)) + ? REGNO (SET_DEST (curr_set)) + : FIRST_PSEUDO_REGISTER); + + if (simple_sets_p + && (riscv_fusion_enabled_p (RISCV_FUSE_ZEXTW) + || riscv_fusion_enabled_p (RISCV_FUSE_ZEXTWS)) + && (sched1 || prev_dest_regno == curr_dest_regno)) + { + /* We are trying to match the following: + prev (slli) == (set (reg:DI rD) + (ashift:DI (reg:DI rS) (const_int 32))) + curr (slri) == (set (reg:DI rD) + (lshiftrt:DI (reg:DI rD) (const_int ))) + with being either 32 for FUSE_ZEXTW, or + `less than 32 for FUSE_ZEXTWS. */ + + if (GET_CODE (SET_SRC (prev_set)) == ASHIFT + && GET_CODE (SET_SRC (curr_set)) == LSHIFTRT + && REG_P (SET_DEST (prev_set)) + && REG_P (SET_DEST (curr_set)) + && REG_P (XEXP (SET_SRC (curr_set), 0)) + && REGNO (XEXP (SET_SRC (curr_set), 0)) == curr_dest_regno + && CONST_INT_P (XEXP (SET_SRC (prev_set), 1)) + && CONST_INT_P (XEXP (SET_SRC (curr_set), 1)) + && INTVAL (XEXP (SET_SRC (prev_set), 1)) == 32 + && ((INTVAL (XEXP (SET_SRC (curr_set), 1)) == 32 + && riscv_fusion_enabled_p (RISCV_FUSE_ZEXTW) ) + || (INTVAL (XEXP (SET_SRC (curr_set), 1)) < 32 + && riscv_fusion_enabled_p (RISCV_FUSE_ZEXTWS)))) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_ZEXTWS\n"); + return true; + } + } + + if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_ZEXTH) + && (sched1 || prev_dest_regno == curr_dest_regno)) + { + /* We are trying to match the following: + prev (slli) == (set (reg:DI rD) + (ashift:DI (reg:DI rS) (const_int 48))) + curr (slri) == (set (reg:DI rD) + (lshiftrt:DI (reg:DI rD) (const_int 48))) */ + + if (GET_CODE (SET_SRC (prev_set)) == ASHIFT + && GET_CODE (SET_SRC (curr_set)) == LSHIFTRT + && REG_P (SET_DEST (prev_set)) + && REG_P (SET_DEST (curr_set)) + && REG_P (XEXP (SET_SRC (curr_set), 0)) + && REGNO (XEXP (SET_SRC (curr_set), 0)) == curr_dest_regno + && CONST_INT_P (XEXP (SET_SRC (prev_set), 1)) + && CONST_INT_P (XEXP (SET_SRC (curr_set), 1)) + && INTVAL (XEXP (SET_SRC (prev_set), 1)) == 48 + && INTVAL (XEXP (SET_SRC (curr_set), 1)) == 48) + { + if (dump_file) + fprintf (dump_file,"RISCV_FUSE_ZEXTH\n"); + return true; + } + } + + if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_LDINDEXED) + && (sched1 || prev_dest_regno == curr_dest_regno)) + { + /* We are trying to match the following: + prev (add) == (set (reg:DI rD) + (plus:DI (reg:DI rS1) (reg:DI rS2)) + curr (ld) == (set (reg:DI rD) + (mem:DI (reg:DI rD))) */ + + if (MEM_P (SET_SRC (curr_set)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + && REG_P (XEXP (SET_SRC (curr_set), 0)) + && REG_P (XEXP (SET_SRC (curr_set), 0)) + && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno + && GET_CODE (SET_SRC (prev_set)) == PLUS + && REG_P (XEXP (SET_SRC (prev_set), 0)) + && REG_P (XEXP (SET_SRC (prev_set), 1))) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_LDINDEXED\n"); + return true; + } + + /* We are trying to match the following: + prev (add) == (set (reg:DI rD) + (plus:DI (reg:DI rS1) (reg:DI rS2))) + curr (lw) == (set (any_extend:DI (mem:SUBX (reg:DI rD)))) */ + + if ((GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND + || (GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND)) + && MEM_P (XEXP (SET_SRC (curr_set), 0)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) + && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno + && GET_CODE (SET_SRC (prev_set)) == PLUS + && REG_P (XEXP (SET_SRC (prev_set), 0)) + && REG_P (XEXP (SET_SRC (prev_set), 1))) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_LDINDEXED\n"); + return true; + } + } + + if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_EXPANDED_LD) + && (sched1 || prev_dest_regno == curr_dest_regno)) + { + /* For the "expanded add/load fusion" family we have 2 main + categories: memory loads with displacement (i.e. with imm offset) + and loads without displacement (i.e. with offset = x0). + + For loads without displacement we'll need: + - add + ld (done in RISCV_FUSE_LDINDEXED) + - addi + ld (done in RISCV_FUSE_LDPREINCREMENT) + - shNadd + ld + - add.uw + lw + - shNadd.uw + lw + + For loads with displacement/immediates: + with lw with immediate): + - add + ld with displacement + - addi + ld with displacement + - shNadd + ld with displacement + - add.uw + lw with displacement + - shNadd.uw + lw with displacement */ + + /* We're trying to match a curr_set ld with displacement: + prev (add|addi) = (set (reg:DI rd) (...)) + curr (ld) == (set (reg:DI rD) + (mem:DI (plus:DI (reg:DI rD) (const_int IMM12)))) */ + if (MEM_P (SET_SRC (curr_set)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == PLUS + && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) + && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno) + { + if (riscv_set_is_add (prev_set)) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); + return true; + } + + if (riscv_set_is_addi (prev_set)) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); + return true; + } + + if (riscv_set_is_shNadd (prev_set)) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); + return true; + } + } + + /* We're trying to match a ld without displacement: + prev (addi|shNadd) = (reg:DI rD) (...)) + curr (ld) == (set (reg:DI rD) + (mem:DI (reg:DI rD))) */ + if (MEM_P (SET_SRC (curr_set)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + && REG_P (XEXP (SET_SRC (curr_set), 0)) + && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno) + { + if (riscv_set_is_addi (prev_set)) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); + return true; + } + + if (riscv_set_is_shNadd (prev_set)) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); + return true; + } + } + + /* We're trying to match a curr_set lw with displacement: + prev (add.uw|shNadd.uw) = (set (reg:DI rd) (...)) + curr (lw) == (set (reg:DI rd) + (any_extend:DI (mem:SUBX (plus:DI ((reg:DI rd) + (const_int IMM)))) */ + if ((GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND + || (GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND)) + && MEM_P (XEXP (SET_SRC (curr_set), 0)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + && GET_CODE (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == PLUS + && REG_P (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0)) + && (REGNO (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0)) + == prev_dest_regno)) + { + if (riscv_set_is_adduw (prev_set)) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); + return true; + } + + if (riscv_set_is_shNadduw (prev_set)) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); + return true; + } + } + + /* We're trying to match a curr_set lw without displacement: + prev (add.uw|shNadd.uw) = (set (reg:DI rd) (...)) + curr (ld|lh|lw) == (set (reg:DI rd) + (any_extend:DI (mem:SUBX (reg:DI rsd)))) */ + if ((GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND + || (GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND)) + && MEM_P (XEXP (SET_SRC (curr_set), 0)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) + && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno) + { + if (riscv_set_is_adduw (prev_set)) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); + return true; + } + + if (riscv_set_is_shNadduw (prev_set)) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); + return true; + } + } + } + + if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_LDPREINCREMENT) + && (sched1 || prev_dest_regno == curr_dest_regno)) + { + /* We are trying to match the following: + prev (add) == (set (reg:DI rS) + (plus:DI (reg:DI rS) (const_int)) + curr (ld) == (set (reg:DI rD) + (mem:DI (reg:DI rS))) */ + + if (MEM_P (SET_SRC (curr_set)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + && REG_P (XEXP (SET_SRC (curr_set), 0)) + && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno + && GET_CODE (SET_SRC (prev_set)) == PLUS + && REG_P (XEXP (SET_SRC (prev_set), 0)) + && CONST_INT_P (XEXP (SET_SRC (prev_set), 1))) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_LDPREINCREMENT\n"); + return true; + } + } + + if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_LUI_ADDI) + && (sched1 || prev_dest_regno == curr_dest_regno)) + { + /* We are trying to match the following: + prev (lui) == (set (reg:DI rD) (const_int UPPER_IMM_20)) + curr (addi) == (set (reg:DI rD) + (plus:DI (reg:DI rD) (const_int IMM12))) */ + + if ((GET_CODE (SET_SRC (curr_set)) == LO_SUM + || (GET_CODE (SET_SRC (curr_set)) == PLUS + && CONST_INT_P (XEXP (SET_SRC (curr_set), 1)) + && SMALL_OPERAND (INTVAL (XEXP (SET_SRC (curr_set), 1))))) + && (GET_CODE (SET_SRC (prev_set)) == HIGH + || (CONST_INT_P (SET_SRC (prev_set)) + && LUI_OPERAND (INTVAL (SET_SRC (prev_set)))))) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_LUI_ADDI\n"); + return true; + } + } + + if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_AUIPC_ADDI) + && (sched1 || prev_dest_regno == curr_dest_regno)) + { + /* We are trying to match the following: + prev (auipc) == (set (reg:DI rD) (unspec:DI [...] UNSPEC_AUIPC)) + curr (addi) == (set (reg:DI rD) + (plus:DI (reg:DI rD) (const_int IMM12))) + and + prev (auipc) == (set (reg:DI rD) (unspec:DI [...] UNSPEC_AUIPC)) + curr (addi) == (set (reg:DI rD) + (lo_sum:DI (reg:DI rD) (const_int IMM12))) */ + + if (GET_CODE (SET_SRC (prev_set)) == UNSPEC + && XINT (SET_SRC (prev_set), 1) == UNSPEC_AUIPC + && (GET_CODE (SET_SRC (curr_set)) == LO_SUM + || (GET_CODE (SET_SRC (curr_set)) == PLUS + && CONST_INT_P (XEXP (SET_SRC (curr_set), 1)) + && SMALL_OPERAND (INTVAL (XEXP (SET_SRC (curr_set), 1)))))) + + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_AUIPC_ADDI\n"); + return true; + } + } + + if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_LUI_LD) + && (sched1 || prev_dest_regno == curr_dest_regno)) + { + /* We are trying to match the following: + prev (lui) == (set (reg:DI rD) (const_int UPPER_IMM_20)) + curr (ld) == (set (reg:DI rD) + (mem:DI (plus:DI (reg:DI rD) (const_int IMM12)))) */ + + /* A LUI_OPERAND accepts (const_int 0), but we won't emit that as LUI. So + reject that case explicitly. */ + if (CONST_INT_P (SET_SRC (prev_set)) + && SET_SRC (prev_set) != CONST0_RTX (GET_MODE (SET_DEST (prev_set))) + && LUI_OPERAND (INTVAL (SET_SRC (prev_set))) + && MEM_P (SET_SRC (curr_set)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == PLUS + && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) + && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_LUI_LD\n"); + return true; + } + + if (GET_CODE (SET_SRC (prev_set)) == HIGH + && MEM_P (SET_SRC (curr_set)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == LO_SUM + && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) + && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_LUI_LD\n"); + return true; + } + + if (GET_CODE (SET_SRC (prev_set)) == HIGH + && (GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND + || GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND) + && MEM_P (XEXP (SET_SRC (curr_set), 0)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + && (GET_CODE (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == LO_SUM + && REG_P (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0)) + && (REGNO (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0)) + == prev_dest_regno))) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_LUI_LD\n"); + return true; + } + } + + if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_AUIPC_LD) + && (sched1 || prev_dest_regno == curr_dest_regno)) + { + /* We are trying to match the following: + prev (auipc) == (set (reg:DI rD) (unspec:DI [...] UNSPEC_AUIPC)) + curr (ld) == (set (reg:DI rD) + (mem:DI (plus:DI (reg:DI rD) (const_int IMM12)))) */ + + if (GET_CODE (SET_SRC (prev_set)) == UNSPEC + && XINT (prev_set, 1) == UNSPEC_AUIPC + && MEM_P (SET_SRC (curr_set)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == PLUS) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_AUIPC_LD\n"); + return true; + } + } + + if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_CACHE_ALIGNED_STD)) + { + /* We are trying to match the following: + prev (sd) == (set (mem (plus (reg sp|fp) (const_int))) + (reg rS1)) + curr (sd) == (set (mem (plus (reg sp|fp) (const_int))) + (reg rS2)) */ + + if (MEM_P (SET_DEST (prev_set)) + && MEM_P (SET_DEST (curr_set)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + /* We can probably relax this condition. The documentation is a bit + unclear about sub-word cases. So we just model DImode for now. */ + && GET_MODE (SET_DEST (curr_set)) == DImode + && GET_MODE (SET_DEST (prev_set)) == DImode) + { + rtx base_prev, base_curr, offset_prev, offset_curr; + + extract_base_offset_in_addr (SET_DEST (prev_set), &base_prev, &offset_prev); + extract_base_offset_in_addr (SET_DEST (curr_set), &base_curr, &offset_curr); + + /* Proceed only if we find both bases, both bases are register and + bases are the same register. */ + if (base_prev != NULL_RTX && base_curr != NULL_RTX + && REG_P (base_prev) && REG_P (base_curr) + && REGNO (base_prev) != REGNO (base_curr) + /* The alignment of hte base pointer is more useful than the + alignment of the memory reference for determining if we're + on opposite sides of a cache line. */ + && REGNO_POINTER_ALIGN (ORIGINAL_REGNO (base_prev)) >= 128) + { + /* The two stores must be contained within opposite halves of the + same 16 byte aligned block of memory. We know the pointer + has suitable alignment, so we just need to check the offsets + of the two stores for suitable alignment. */ + + /* Get the smaller offset into OFFSET_PREV. */ + if (INTVAL (offset_prev) > INTVAL (offset_curr)) + std::swap (offset_prev, offset_curr); + + /* We have a match if the smaller offset (OFFSET_PREV) is 16 + byte aligned and the higher offset is 8 bytes more than the + lower offset. */ + if ((INTVAL (offset_prev) % 16) == 0 + && (INTVAL (offset_prev) + 8 == INTVAL (offset_curr))) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_ALIGNED_STD\n"); + return true; + } + } + } + } + + /* More general form of the RISCV_FUSE_CACHE_ALIGNED_STD. The + major difference is the dependency on the stores being opposite + halves of a cache line is dropped. Instead the lowest address + needs 2X the alignment of the object and the higher address + immediately followed the first object. */ + if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_ALIGNED_STD)) + { + /* We are trying to match the following: + prev (sd) == (set (mem (plus (reg rS1) (const_int))) + (reg rS2)) + curr (sd) == (set (mem (plus (reg rS1) (const_int))) + (reg rS3)) */ + + if (MEM_P (SET_DEST (prev_set)) + && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) + && MEM_P (SET_DEST (curr_set)) + /* Stores must have the same width */ + && GET_MODE (SET_DEST (curr_set)) == GET_MODE (SET_DEST (prev_set))) + { + rtx base_prev, base_curr, offset_prev, offset_curr; + unsigned mode_size; + + extract_base_offset_in_addr (SET_DEST (prev_set), + &base_prev, &offset_prev); + extract_base_offset_in_addr (SET_DEST (curr_set), + &base_curr, &offset_curr); + + /* Proceed only if we find both bases, both bases + are registers and bases are the same register. */ + if (base_prev != NULL_RTX && base_curr != NULL_RTX + && REG_P (base_prev) && REG_P (base_curr) + && REGNO (base_prev) == REGNO (base_curr)) + { + machine_mode mode = GET_MODE (SET_DEST (curr_set)); + mode_size = estimated_poly_value (GET_MODE_SIZE (mode)); + + HOST_WIDE_INT offset_prev_int = INTVAL (offset_prev); + HOST_WIDE_INT offset_curr_int = INTVAL (offset_curr); + + /* Get the smaller offset into OFFSET_PREV_INT. */ + if (offset_prev_int > offset_curr_int) + std::swap (offset_prev_int, offset_curr_int); + + /* We've normalized, so we need to check that the lower + address is aligned to 2X the size of the object. The + higher address must be the lower address plus the + size of the object. */ + if (((offset_prev_int % (2 * mode_size)) == 0) + && offset_prev_int + mode_size == offset_curr_int) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_ALIGNED_STD\n"); + return true; + } + } + } + } + + if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_BFEXT) + && (sched1 || prev_dest_regno == curr_dest_regno)) + { + /* We are trying to match the following: + prev (slli) == (set (reg:DI rD) + (ashift:DI (reg:DI rS) (const_int))) + curr (srli) == (set (reg:DI rD) + (lshiftrt:DI (reg:DI rD) (const_int))) */ + + if (GET_CODE (SET_SRC (prev_set)) == ASHIFT + && (GET_CODE (SET_SRC (curr_set)) == LSHIFTRT + || GET_CODE (SET_SRC (curr_set)) == ASHIFTRT) + && REG_P (SET_DEST (prev_set)) + && REG_P (SET_DEST (curr_set)) + && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno + && CONST_INT_P (XEXP (SET_SRC (prev_set), 1)) + && CONST_INT_P (XEXP (SET_SRC (curr_set), 1))) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_BFEXT\n"); + return true; + } + } + + if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_B_ALUI) + && (sched1 || prev_dest_regno == curr_dest_regno)) + { + /* We are trying to match the following: + prev (orc.b) == (set (reg rD) + (unspec (reg rS1))) + curr (not) == (set (reg rD2) (not (reg rD))) */ + + if (GET_CODE (SET_SRC (prev_set)) == UNSPEC + && GET_CODE (SET_SRC (curr_set)) == NOT + && XINT (SET_SRC (prev_set), 1) == UNSPEC_ORC_B + && REG_P (SET_DEST (prev_set)) + && REG_P (SET_DEST (curr_set)) + && REG_P (XEXP (SET_SRC (curr_set), 0)) + && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_B_ALUI\n"); + return true; + } + + /* We are trying to match the following: + prev (ctz) == (set (reg rD) (ctz (reg rS1))) + curr (andi) == (set (reg rD) + (and (reg rD) (const_int 63))) */ + + if (GET_CODE (SET_SRC (prev_set)) == CTZ + && GET_CODE (SET_SRC (curr_set)) == AND + && CONST_INT_P (XEXP (SET_SRC (curr_set), 1)) + && INTVAL (XEXP (SET_SRC (curr_set), 1)) == 63 + && REG_P (SET_DEST (prev_set)) + && REG_P (SET_DEST (curr_set)) + && REG_P (XEXP (SET_SRC (curr_set), 0)) + && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_B_ALUI\n"); + return true; + } + + /* We are trying to match the following: + prev (sub) == (set (reg rD) + (minus (const_int 0) (reg rS2)) + curr (max) == (set (reg rD) + (smax (reg rD) (reg rS2))) */ + + if (GET_CODE (SET_SRC (prev_set)) == MINUS + && (XEXP (SET_SRC (prev_set), 0) + == CONST0_RTX (GET_MODE (SET_SRC (prev_set)))) + && CONST_INT_P (XEXP (SET_SRC (prev_set), 0)) + && GET_CODE (SET_SRC (curr_set)) == SMAX + && REG_P (SET_DEST (prev_set)) + && REG_P (SET_DEST (curr_set)) + && REG_P (XEXP (SET_SRC (curr_set), 0)) + && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno + && REG_P (XEXP (SET_SRC (prev_set), 1)) + && REG_P (XEXP (SET_SRC (curr_set), 1)) + && (REGNO (XEXP (SET_SRC (prev_set), 1)) + == REGNO (XEXP (SET_SRC (curr_set), 1)))) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_B_ALUI\n"); + return true; + } + + /* We are trying to match the following: + prev (neg) == (set (reg rD) (neg (reg rS1))) + curr (max) == (set (reg rD) + (smax (reg rD) (reg rS1))) */ + + if (GET_CODE (SET_SRC (prev_set)) == NEG + && GET_CODE (SET_SRC (curr_set)) == SMAX + && REG_P (SET_DEST (prev_set)) + && REG_P (SET_DEST (curr_set)) + && REG_P (XEXP (SET_SRC (curr_set), 0)) + && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno + && REG_P (XEXP (SET_SRC (prev_set), 0)) + && REG_P (XEXP (SET_SRC (curr_set), 1)) + && (REGNO (XEXP (SET_SRC (prev_set), 0)) + == REGNO (XEXP (SET_SRC (curr_set), 1)))) + { + if (dump_file) + fprintf (dump_file, "RISCV_FUSE_B_ALUI\n"); + return true; + } + } + + return false; +} diff --git a/gcc/config/riscv/riscv-protos.h b/gcc/config/riscv/riscv-protos.h index 5bdccfb317c4..e2858a8b19fe 100644 --- a/gcc/config/riscv/riscv-protos.h +++ b/gcc/config/riscv/riscv-protos.h @@ -814,6 +814,30 @@ const unsigned int RISCV_BUILTIN_CLASS = (1 << RISCV_BUILTIN_SHIFT) - 1; extern bool riscv_expand_strcmp (rtx, rtx, rtx, rtx, rtx); extern bool riscv_expand_strlen (rtx, rtx, rtx, rtx); +/* Routines implemented in riscv-fusion.cc. */ +enum riscv_fusion_pairs +{ + RISCV_FUSE_NOTHING = 0, + RISCV_FUSE_ZEXTW = (1 << 0), + RISCV_FUSE_ZEXTH = (1 << 1), + RISCV_FUSE_ZEXTWS = (1 << 2), + RISCV_FUSE_LDINDEXED = (1 << 3), + RISCV_FUSE_LUI_ADDI = (1 << 4), + RISCV_FUSE_AUIPC_ADDI = (1 << 5), + RISCV_FUSE_LUI_LD = (1 << 6), + RISCV_FUSE_AUIPC_LD = (1 << 7), + RISCV_FUSE_LDPREINCREMENT = (1 << 8), + RISCV_FUSE_ALIGNED_STD = (1 << 9), + RISCV_FUSE_CACHE_ALIGNED_STD = (1 << 10), + RISCV_FUSE_BFEXT = (1 << 11), + RISCV_FUSE_EXPANDED_LD = (1 << 12), + RISCV_FUSE_B_ALUI = (1 << 13), +}; + +extern bool riscv_macro_fusion_p (void); +extern bool riscv_macro_fusion_pair_p (rtx_insn *, rtx_insn *); +extern unsigned int riscv_get_fusible_ops (void); + /* Routines implemented in thead.cc. */ extern bool extract_base_offset_in_addr (rtx, rtx *, rtx *); extern bool th_mempair_operands_p (rtx[4], bool, machine_mode); diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 53888f17710c..baa0de22de14 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -274,25 +274,6 @@ struct riscv_integer_op { The worst case is LUI, ADDI, SLLI, ADDI, SLLI, ADDI, SLLI, ADDI. */ #define RISCV_MAX_INTEGER_OPS 8 -enum riscv_fusion_pairs -{ - RISCV_FUSE_NOTHING = 0, - RISCV_FUSE_ZEXTW = (1 << 0), - RISCV_FUSE_ZEXTH = (1 << 1), - RISCV_FUSE_ZEXTWS = (1 << 2), - RISCV_FUSE_LDINDEXED = (1 << 3), - RISCV_FUSE_LUI_ADDI = (1 << 4), - RISCV_FUSE_AUIPC_ADDI = (1 << 5), - RISCV_FUSE_LUI_LD = (1 << 6), - RISCV_FUSE_AUIPC_LD = (1 << 7), - RISCV_FUSE_LDPREINCREMENT = (1 << 8), - RISCV_FUSE_ALIGNED_STD = (1 << 9), - RISCV_FUSE_CACHE_ALIGNED_STD = (1 << 10), - RISCV_FUSE_BFEXT = (1 << 11), - RISCV_FUSE_EXPANDED_LD = (1 << 12), - RISCV_FUSE_B_ALUI = (1 << 13), -}; - /* Costs of various operations on the different architectures. */ struct riscv_tune_param @@ -11222,731 +11203,13 @@ riscv_sched_reorder (FILE *, int, rtx_insn **ready, int *nreadyp, int) } -/* Implement TARGET_SCHED_MACRO_FUSION_P. Return true if target supports - instruction fusion of some sort. */ - -static bool -riscv_macro_fusion_p (void) -{ - return tune_param->fusible_ops != RISCV_FUSE_NOTHING; -} - -/* Return true iff the instruction fusion described by OP is enabled. */ - -static bool -riscv_fusion_enabled_p(enum riscv_fusion_pairs op) -{ - return tune_param->fusible_ops & op; -} -/* Matches an add: - (set (reg:DI rd) (plus:SI (reg:SI rs1) (reg:SI rs2))) */ +/* Return the set of fusible operations for the current tune. */ -static bool -riscv_set_is_add (rtx set) -{ - return (GET_CODE (SET_SRC (set)) == PLUS - && REG_P (XEXP (SET_SRC (set), 0)) - && REG_P (XEXP (SET_SRC (set), 1)) - && REG_P (SET_DEST (set))); -} - -/* Matches an addi: - (set (reg:DI rd) (plus:SI (reg:SI rs1) (const_int imm))) */ - -static bool -riscv_set_is_addi (rtx set) -{ - return (GET_CODE (SET_SRC (set)) == PLUS - && REG_P (XEXP (SET_SRC (set), 0)) - && CONST_INT_P (XEXP (SET_SRC (set), 1)) - && REG_P (SET_DEST (set))); -} - -/* Matches an add.uw: - (set (reg:DI rd) - (plus:DI (zero_extend:DI (reg:SI rs1)) (reg:DI rs2))) */ - -static bool -riscv_set_is_adduw (rtx set) -{ - return (GET_CODE (SET_SRC (set)) == PLUS - && GET_CODE (XEXP (SET_SRC (set), 0)) == ZERO_EXTEND - && REG_P (XEXP (XEXP (SET_SRC (set), 0), 0)) - && REG_P (XEXP (SET_SRC (set), 1)) - && REG_P (SET_DEST (set))); -} - -/* Matches a shNadd: - (set (reg:DI rd) - (plus:DI (ashift:DI (reg:DI rs1) (const_int N)) (reg:DI rS2)) */ - -static bool -riscv_set_is_shNadd (rtx set) -{ - return (GET_CODE (SET_SRC (set)) == PLUS - && GET_CODE (XEXP (SET_SRC (set), 0)) == ASHIFT - && REG_P (XEXP (XEXP (SET_SRC (set), 0), 0)) - && CONST_INT_P (XEXP (XEXP (SET_SRC (set), 0), 1)) - && (INTVAL (XEXP (XEXP (SET_SRC (set), 0), 1)) == 1 - || INTVAL (XEXP (XEXP (SET_SRC (set), 0), 1)) == 2 - || INTVAL (XEXP (XEXP (SET_SRC (set), 0), 1)) == 3) - && REG_P (SET_DEST (set))); -} - -/* Matches a shNadd.uw: - (set (reg:DI rd) - (plus:DI (and:DI (ashift:DI (reg:DI rs1) (const_int N)) - (const_int N)) - (reg:DI rs2)) */ - -static bool -riscv_set_is_shNadduw (rtx set) -{ - return (GET_CODE (SET_SRC (set)) == PLUS - && GET_CODE (XEXP (SET_SRC (set), 0)) == AND - && GET_CODE (XEXP (XEXP (SET_SRC (set), 0), 0)) == ASHIFT - && REG_P (XEXP (XEXP (XEXP (SET_SRC (set), 0), 0), 0)) - && CONST_INT_P (XEXP (XEXP (XEXP (SET_SRC (set), 0), 0), 1)) - && (INTVAL (XEXP (XEXP (XEXP (SET_SRC (set), 0), 0), 1)) == 1 - || INTVAL (XEXP (XEXP (XEXP (SET_SRC (set), 0), 0), 1)) == 2 - || INTVAL (XEXP (XEXP (XEXP (SET_SRC (set), 0), 0), 1)) == 3) - && REG_P (SET_DEST (set))); -} - -/* Implement TARGET_SCHED_MACRO_FUSION_PAIR_P. Return true if PREV and CURR - should be kept together during scheduling. */ - -static bool -riscv_macro_fusion_pair_p (rtx_insn *prev, rtx_insn *curr) +unsigned int +riscv_get_fusible_ops (void) { - /* If fusion is not enabled, then there's nothing to do. */ - if (!riscv_macro_fusion_p ()) - return false; - - /* If PREV is already marked as fused, then we can't fuse CURR with PREV - and if we were to fuse them we'd end up with a blob of insns that - essentially are an atomic unit which is bad for scheduling. */ - if (SCHED_GROUP_P (prev)) - return false; - - rtx prev_set = single_set (prev); - rtx curr_set = single_set (curr); - /* prev and curr are simple SET insns i.e. no flag setting or branching. */ - bool simple_sets_p = prev_set && curr_set && !any_condjump_p (curr); - bool sched1 = can_create_pseudo_p (); - - unsigned int prev_dest_regno = (prev_set && REG_P (SET_DEST (prev_set)) - ? REGNO (SET_DEST (prev_set)) - : FIRST_PSEUDO_REGISTER); - unsigned int curr_dest_regno = (curr_set && REG_P (SET_DEST (curr_set)) - ? REGNO (SET_DEST (curr_set)) - : FIRST_PSEUDO_REGISTER); - - if (simple_sets_p - && (riscv_fusion_enabled_p (RISCV_FUSE_ZEXTW) - || riscv_fusion_enabled_p (RISCV_FUSE_ZEXTWS)) - && (sched1 || prev_dest_regno == curr_dest_regno)) - { - /* We are trying to match the following: - prev (slli) == (set (reg:DI rD) - (ashift:DI (reg:DI rS) (const_int 32))) - curr (slri) == (set (reg:DI rD) - (lshiftrt:DI (reg:DI rD) (const_int ))) - with being either 32 for FUSE_ZEXTW, or - `less than 32 for FUSE_ZEXTWS. */ - - if (GET_CODE (SET_SRC (prev_set)) == ASHIFT - && GET_CODE (SET_SRC (curr_set)) == LSHIFTRT - && REG_P (SET_DEST (prev_set)) - && REG_P (SET_DEST (curr_set)) - && REG_P (XEXP (SET_SRC (curr_set), 0)) - && REGNO (XEXP (SET_SRC (curr_set), 0)) == curr_dest_regno - && CONST_INT_P (XEXP (SET_SRC (prev_set), 1)) - && CONST_INT_P (XEXP (SET_SRC (curr_set), 1)) - && INTVAL (XEXP (SET_SRC (prev_set), 1)) == 32 - && ((INTVAL (XEXP (SET_SRC (curr_set), 1)) == 32 - && riscv_fusion_enabled_p (RISCV_FUSE_ZEXTW) ) - || (INTVAL (XEXP (SET_SRC (curr_set), 1)) < 32 - && riscv_fusion_enabled_p (RISCV_FUSE_ZEXTWS)))) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_ZEXTWS\n"); - return true; - } - } - - if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_ZEXTH) - && (sched1 || prev_dest_regno == curr_dest_regno)) - { - /* We are trying to match the following: - prev (slli) == (set (reg:DI rD) - (ashift:DI (reg:DI rS) (const_int 48))) - curr (slri) == (set (reg:DI rD) - (lshiftrt:DI (reg:DI rD) (const_int 48))) */ - - if (GET_CODE (SET_SRC (prev_set)) == ASHIFT - && GET_CODE (SET_SRC (curr_set)) == LSHIFTRT - && REG_P (SET_DEST (prev_set)) - && REG_P (SET_DEST (curr_set)) - && REG_P (XEXP (SET_SRC (curr_set), 0)) - && REGNO (XEXP (SET_SRC (curr_set), 0)) == curr_dest_regno - && CONST_INT_P (XEXP (SET_SRC (prev_set), 1)) - && CONST_INT_P (XEXP (SET_SRC (curr_set), 1)) - && INTVAL (XEXP (SET_SRC (prev_set), 1)) == 48 - && INTVAL (XEXP (SET_SRC (curr_set), 1)) == 48) - { - if (dump_file) - fprintf (dump_file,"RISCV_FUSE_ZEXTH\n"); - return true; - } - } - - if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_LDINDEXED) - && (sched1 || prev_dest_regno == curr_dest_regno)) - { - /* We are trying to match the following: - prev (add) == (set (reg:DI rD) - (plus:DI (reg:DI rS1) (reg:DI rS2)) - curr (ld) == (set (reg:DI rD) - (mem:DI (reg:DI rD))) */ - - if (MEM_P (SET_SRC (curr_set)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - && REG_P (XEXP (SET_SRC (curr_set), 0)) - && REG_P (XEXP (SET_SRC (curr_set), 0)) - && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno - && GET_CODE (SET_SRC (prev_set)) == PLUS - && REG_P (XEXP (SET_SRC (prev_set), 0)) - && REG_P (XEXP (SET_SRC (prev_set), 1))) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_LDINDEXED\n"); - return true; - } - - /* We are trying to match the following: - prev (add) == (set (reg:DI rD) - (plus:DI (reg:DI rS1) (reg:DI rS2))) - curr (lw) == (set (any_extend:DI (mem:SUBX (reg:DI rD)))) */ - - if ((GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND - || (GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND)) - && MEM_P (XEXP (SET_SRC (curr_set), 0)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) - && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno - && GET_CODE (SET_SRC (prev_set)) == PLUS - && REG_P (XEXP (SET_SRC (prev_set), 0)) - && REG_P (XEXP (SET_SRC (prev_set), 1))) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_LDINDEXED\n"); - return true; - } - } - - if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_EXPANDED_LD) - && (sched1 || prev_dest_regno == curr_dest_regno)) - { - /* For the "expanded add/load fusion" family we have 2 main - categories: memory loads with displacement (i.e. with imm offset) - and loads without displacement (i.e. with offset = x0). - - For loads without displacement we'll need: - - add + ld (done in RISCV_FUSE_LDINDEXED) - - addi + ld (done in RISCV_FUSE_LDPREINCREMENT) - - shNadd + ld - - add.uw + lw - - shNadd.uw + lw - - For loads with displacement/immediates: - with lw with immediate): - - add + ld with displacement - - addi + ld with displacement - - shNadd + ld with displacement - - add.uw + lw with displacement - - shNadd.uw + lw with displacement */ - - /* We're trying to match a curr_set ld with displacement: - prev (add|addi) = (set (reg:DI rd) (...)) - curr (ld) == (set (reg:DI rD) - (mem:DI (plus:DI (reg:DI rD) (const_int IMM12)))) */ - if (MEM_P (SET_SRC (curr_set)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == PLUS - && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) - && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno) - { - if (riscv_set_is_add (prev_set)) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); - return true; - } - - if (riscv_set_is_addi (prev_set)) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); - return true; - } - - if (riscv_set_is_shNadd (prev_set)) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); - return true; - } - } - - /* We're trying to match a ld without displacement: - prev (addi|shNadd) = (reg:DI rD) (...)) - curr (ld) == (set (reg:DI rD) - (mem:DI (reg:DI rD))) */ - if (MEM_P (SET_SRC (curr_set)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - && REG_P (XEXP (SET_SRC (curr_set), 0)) - && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno) - { - if (riscv_set_is_addi (prev_set)) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); - return true; - } - - if (riscv_set_is_shNadd (prev_set)) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); - return true; - } - } - - /* We're trying to match a curr_set lw with displacement: - prev (add.uw|shNadd.uw) = (set (reg:DI rd) (...)) - curr (lw) == (set (reg:DI rd) - (any_extend:DI (mem:SUBX (plus:DI ((reg:DI rd) - (const_int IMM)))) */ - if ((GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND - || (GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND)) - && MEM_P (XEXP (SET_SRC (curr_set), 0)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - && GET_CODE (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == PLUS - && REG_P (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0)) - && (REGNO (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0)) - == prev_dest_regno)) - { - if (riscv_set_is_adduw (prev_set)) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); - return true; - } - - if (riscv_set_is_shNadduw (prev_set)) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); - return true; - } - } - - /* We're trying to match a curr_set lw without displacement: - prev (add.uw|shNadd.uw) = (set (reg:DI rd) (...)) - curr (ld|lh|lw) == (set (reg:DI rd) - (any_extend:DI (mem:SUBX (reg:DI rsd)))) */ - if ((GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND - || (GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND)) - && MEM_P (XEXP (SET_SRC (curr_set), 0)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) - && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno) - { - if (riscv_set_is_adduw (prev_set)) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); - return true; - } - - if (riscv_set_is_shNadduw (prev_set)) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_EXPANDED_LD\n"); - return true; - } - } - } - - if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_LDPREINCREMENT) - && (sched1 || prev_dest_regno == curr_dest_regno)) - { - /* We are trying to match the following: - prev (add) == (set (reg:DI rS) - (plus:DI (reg:DI rS) (const_int)) - curr (ld) == (set (reg:DI rD) - (mem:DI (reg:DI rS))) */ - - if (MEM_P (SET_SRC (curr_set)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - && REG_P (XEXP (SET_SRC (curr_set), 0)) - && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno - && GET_CODE (SET_SRC (prev_set)) == PLUS - && REG_P (XEXP (SET_SRC (prev_set), 0)) - && CONST_INT_P (XEXP (SET_SRC (prev_set), 1))) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_LDPREINCREMENT\n"); - return true; - } - } - - if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_LUI_ADDI) - && (sched1 || prev_dest_regno == curr_dest_regno)) - { - /* We are trying to match the following: - prev (lui) == (set (reg:DI rD) (const_int UPPER_IMM_20)) - curr (addi) == (set (reg:DI rD) - (plus:DI (reg:DI rD) (const_int IMM12))) */ - - if ((GET_CODE (SET_SRC (curr_set)) == LO_SUM - || (GET_CODE (SET_SRC (curr_set)) == PLUS - && CONST_INT_P (XEXP (SET_SRC (curr_set), 1)) - && SMALL_OPERAND (INTVAL (XEXP (SET_SRC (curr_set), 1))))) - && (GET_CODE (SET_SRC (prev_set)) == HIGH - || (CONST_INT_P (SET_SRC (prev_set)) - && LUI_OPERAND (INTVAL (SET_SRC (prev_set)))))) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_LUI_ADDI\n"); - return true; - } - } - - if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_AUIPC_ADDI) - && (sched1 || prev_dest_regno == curr_dest_regno)) - { - /* We are trying to match the following: - prev (auipc) == (set (reg:DI rD) (unspec:DI [...] UNSPEC_AUIPC)) - curr (addi) == (set (reg:DI rD) - (plus:DI (reg:DI rD) (const_int IMM12))) - and - prev (auipc) == (set (reg:DI rD) (unspec:DI [...] UNSPEC_AUIPC)) - curr (addi) == (set (reg:DI rD) - (lo_sum:DI (reg:DI rD) (const_int IMM12))) */ - - if (GET_CODE (SET_SRC (prev_set)) == UNSPEC - && XINT (SET_SRC (prev_set), 1) == UNSPEC_AUIPC - && (GET_CODE (SET_SRC (curr_set)) == LO_SUM - || (GET_CODE (SET_SRC (curr_set)) == PLUS - && CONST_INT_P (XEXP (SET_SRC (curr_set), 1)) - && SMALL_OPERAND (INTVAL (XEXP (SET_SRC (curr_set), 1)))))) - - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_AUIPC_ADDI\n"); - return true; - } - } - - if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_LUI_LD) - && (sched1 || prev_dest_regno == curr_dest_regno)) - { - /* We are trying to match the following: - prev (lui) == (set (reg:DI rD) (const_int UPPER_IMM_20)) - curr (ld) == (set (reg:DI rD) - (mem:DI (plus:DI (reg:DI rD) (const_int IMM12)))) */ - - /* A LUI_OPERAND accepts (const_int 0), but we won't emit that as LUI. So - reject that case explicitly. */ - if (CONST_INT_P (SET_SRC (prev_set)) - && SET_SRC (prev_set) != CONST0_RTX (GET_MODE (SET_DEST (prev_set))) - && LUI_OPERAND (INTVAL (SET_SRC (prev_set))) - && MEM_P (SET_SRC (curr_set)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == PLUS - && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) - && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_LUI_LD\n"); - return true; - } - - if (GET_CODE (SET_SRC (prev_set)) == HIGH - && MEM_P (SET_SRC (curr_set)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == LO_SUM - && REG_P (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) - && REGNO (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == prev_dest_regno) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_LUI_LD\n"); - return true; - } - - if (GET_CODE (SET_SRC (prev_set)) == HIGH - && (GET_CODE (SET_SRC (curr_set)) == SIGN_EXTEND - || GET_CODE (SET_SRC (curr_set)) == ZERO_EXTEND) - && MEM_P (XEXP (SET_SRC (curr_set), 0)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - && (GET_CODE (XEXP (XEXP (SET_SRC (curr_set), 0), 0)) == LO_SUM - && REG_P (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0)) - && (REGNO (XEXP (XEXP (XEXP (SET_SRC (curr_set), 0), 0), 0)) - == prev_dest_regno))) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_LUI_LD\n"); - return true; - } - } - - if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_AUIPC_LD) - && (sched1 || prev_dest_regno == curr_dest_regno)) - { - /* We are trying to match the following: - prev (auipc) == (set (reg:DI rD) (unspec:DI [...] UNSPEC_AUIPC)) - curr (ld) == (set (reg:DI rD) - (mem:DI (plus:DI (reg:DI rD) (const_int IMM12)))) */ - - if (GET_CODE (SET_SRC (prev_set)) == UNSPEC - && XINT (prev_set, 1) == UNSPEC_AUIPC - && MEM_P (SET_SRC (curr_set)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - && GET_CODE (XEXP (SET_SRC (curr_set), 0)) == PLUS) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_AUIPC_LD\n"); - return true; - } - } - - if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_CACHE_ALIGNED_STD)) - { - /* We are trying to match the following: - prev (sd) == (set (mem (plus (reg sp|fp) (const_int))) - (reg rS1)) - curr (sd) == (set (mem (plus (reg sp|fp) (const_int))) - (reg rS2)) */ - - if (MEM_P (SET_DEST (prev_set)) - && MEM_P (SET_DEST (curr_set)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - /* We can probably relax this condition. The documentation is a bit - unclear about sub-word cases. So we just model DImode for now. */ - && GET_MODE (SET_DEST (curr_set)) == DImode - && GET_MODE (SET_DEST (prev_set)) == DImode) - { - rtx base_prev, base_curr, offset_prev, offset_curr; - - extract_base_offset_in_addr (SET_DEST (prev_set), &base_prev, &offset_prev); - extract_base_offset_in_addr (SET_DEST (curr_set), &base_curr, &offset_curr); - - /* Proceed only if we find both bases, both bases are register and - bases are the same register. */ - if (base_prev != NULL_RTX && base_curr != NULL_RTX - && REG_P (base_prev) && REG_P (base_curr) - && REGNO (base_prev) != REGNO (base_curr) - /* The alignment of hte base pointer is more useful than the - alignment of the memory reference for determining if we're - on opposite sides of a cache line. */ - && REGNO_POINTER_ALIGN (ORIGINAL_REGNO (base_prev)) >= 128) - { - /* The two stores must be contained within opposite halves of the - same 16 byte aligned block of memory. We know the pointer - has suitable alignment, so we just need to check the offsets - of the two stores for suitable alignment. */ - - /* Get the smaller offset into OFFSET_PREV. */ - if (INTVAL (offset_prev) > INTVAL (offset_curr)) - std::swap (offset_prev, offset_curr); - - /* We have a match if the smaller offset (OFFSET_PREV) is 16 - byte aligned and the higher offset is 8 bytes more than the - lower offset. */ - if ((INTVAL (offset_prev) % 16) == 0 - && (INTVAL (offset_prev) + 8 == INTVAL (offset_curr))) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_ALIGNED_STD\n"); - return true; - } - } - } - } - - /* More general form of the RISCV_FUSE_CACHE_ALIGNED_STD. The - major difference is the dependency on the stores being opposite - halves of a cache line is dropped. Instead the lowest address - needs 2X the alignment of the object and the higher address - immediately followed the first object. */ - if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_ALIGNED_STD)) - { - /* We are trying to match the following: - prev (sd) == (set (mem (plus (reg rS1) (const_int))) - (reg rS2)) - curr (sd) == (set (mem (plus (reg rS1) (const_int))) - (reg rS3)) */ - - if (MEM_P (SET_DEST (prev_set)) - && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set))) - && MEM_P (SET_DEST (curr_set)) - /* Stores must have the same width */ - && GET_MODE (SET_DEST (curr_set)) == GET_MODE (SET_DEST (prev_set))) - { - rtx base_prev, base_curr, offset_prev, offset_curr; - unsigned mode_size; - - extract_base_offset_in_addr (SET_DEST (prev_set), - &base_prev, &offset_prev); - extract_base_offset_in_addr (SET_DEST (curr_set), - &base_curr, &offset_curr); - - /* Proceed only if we find both bases, both bases - are registers and bases are the same register. */ - if (base_prev != NULL_RTX && base_curr != NULL_RTX - && REG_P (base_prev) && REG_P (base_curr) - && REGNO (base_prev) == REGNO (base_curr)) - { - machine_mode mode = GET_MODE (SET_DEST (curr_set)); - mode_size = estimated_poly_value (GET_MODE_SIZE (mode)); - - HOST_WIDE_INT offset_prev_int = INTVAL (offset_prev); - HOST_WIDE_INT offset_curr_int = INTVAL (offset_curr); - - /* Get the smaller offset into OFFSET_PREV_INT. */ - if (offset_prev_int > offset_curr_int) - std::swap (offset_prev_int, offset_curr_int); - - /* We've normalized, so we need to check that the lower - address is aligned to 2X the size of the object. The - higher address must be the lower address plus the - size of the object. */ - if (((offset_prev_int % (2 * mode_size)) == 0) - && offset_prev_int + mode_size == offset_curr_int) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_ALIGNED_STD\n"); - return true; - } - } - } - } - - if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_BFEXT) - && (sched1 || prev_dest_regno == curr_dest_regno)) - { - /* We are trying to match the following: - prev (slli) == (set (reg:DI rD) - (ashift:DI (reg:DI rS) (const_int))) - curr (srli) == (set (reg:DI rD) - (lshiftrt:DI (reg:DI rD) (const_int))) */ - - if (GET_CODE (SET_SRC (prev_set)) == ASHIFT - && (GET_CODE (SET_SRC (curr_set)) == LSHIFTRT - || GET_CODE (SET_SRC (curr_set)) == ASHIFTRT) - && REG_P (SET_DEST (prev_set)) - && REG_P (SET_DEST (curr_set)) - && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno - && CONST_INT_P (XEXP (SET_SRC (prev_set), 1)) - && CONST_INT_P (XEXP (SET_SRC (curr_set), 1))) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_BFEXT\n"); - return true; - } - } - - if (simple_sets_p && riscv_fusion_enabled_p (RISCV_FUSE_B_ALUI) - && (sched1 || prev_dest_regno == curr_dest_regno)) - { - /* We are trying to match the following: - prev (orc.b) == (set (reg rD) - (unspec (reg rS1))) - curr (not) == (set (reg rD2) (not (reg rD))) */ - - if (GET_CODE (SET_SRC (prev_set)) == UNSPEC - && GET_CODE (SET_SRC (curr_set)) == NOT - && XINT (SET_SRC (prev_set), 1) == UNSPEC_ORC_B - && REG_P (SET_DEST (prev_set)) - && REG_P (SET_DEST (curr_set)) - && REG_P (XEXP (SET_SRC (curr_set), 0)) - && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_B_ALUI\n"); - return true; - } - - /* We are trying to match the following: - prev (ctz) == (set (reg rD) (ctz (reg rS1))) - curr (andi) == (set (reg rD) - (and (reg rD) (const_int 63))) */ - - if (GET_CODE (SET_SRC (prev_set)) == CTZ - && GET_CODE (SET_SRC (curr_set)) == AND - && CONST_INT_P (XEXP (SET_SRC (curr_set), 1)) - && INTVAL (XEXP (SET_SRC (curr_set), 1)) == 63 - && REG_P (SET_DEST (prev_set)) - && REG_P (SET_DEST (curr_set)) - && REG_P (XEXP (SET_SRC (curr_set), 0)) - && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_B_ALUI\n"); - return true; - } - - /* We are trying to match the following: - prev (sub) == (set (reg rD) - (minus (const_int 0) (reg rS2)) - curr (max) == (set (reg rD) - (smax (reg rD) (reg rS2))) */ - - if (GET_CODE (SET_SRC (prev_set)) == MINUS - && (XEXP (SET_SRC (prev_set), 0) - == CONST0_RTX (GET_MODE (SET_SRC (prev_set)))) - && CONST_INT_P (XEXP (SET_SRC (prev_set), 0)) - && GET_CODE (SET_SRC (curr_set)) == SMAX - && REG_P (SET_DEST (prev_set)) - && REG_P (SET_DEST (curr_set)) - && REG_P (XEXP (SET_SRC (curr_set), 0)) - && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno - && REG_P (XEXP (SET_SRC (prev_set), 1)) - && REG_P (XEXP (SET_SRC (curr_set), 1)) - && (REGNO (XEXP (SET_SRC (prev_set), 1)) - == REGNO (XEXP (SET_SRC (curr_set), 1)))) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_B_ALUI\n"); - return true; - } - - /* We are trying to match the following: - prev (neg) == (set (reg rD) (neg (reg rS1))) - curr (max) == (set (reg rD) - (smax (reg rD) (reg rS1))) */ - - if (GET_CODE (SET_SRC (prev_set)) == NEG - && GET_CODE (SET_SRC (curr_set)) == SMAX - && REG_P (SET_DEST (prev_set)) - && REG_P (SET_DEST (curr_set)) - && REG_P (XEXP (SET_SRC (curr_set), 0)) - && REGNO (XEXP (SET_SRC (curr_set), 0)) == prev_dest_regno - && REG_P (XEXP (SET_SRC (prev_set), 0)) - && REG_P (XEXP (SET_SRC (curr_set), 1)) - && (REGNO (XEXP (SET_SRC (prev_set), 0)) - == REGNO (XEXP (SET_SRC (curr_set), 1)))) - { - if (dump_file) - fprintf (dump_file, "RISCV_FUSE_B_ALUI\n"); - return true; - } - } - - return false; + return tune_param->fusible_ops; } /* Adjust the cost/latency of instructions for scheduling. diff --git a/gcc/config/riscv/t-riscv b/gcc/config/riscv/t-riscv index 2761e5e20c00..1f06a3697b61 100644 --- a/gcc/config/riscv/t-riscv +++ b/gcc/config/riscv/t-riscv @@ -95,6 +95,13 @@ riscv-opt-popretz.o: $(srcdir)/config/riscv/riscv-opt-popretz.cc $(CONFIG_H) \ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ $(srcdir)/config/riscv/riscv-opt-popretz.cc +riscv-fusion.o: $(srcdir)/config/riscv/riscv-fusion.cc $(CONFIG_H) \ + $(SYSTEM_H) coretypes.h $(TM_H) $(TARGET_H) $(RTL_H) $(REGS_H) \ + $(RECOG_H) $(FUNCTION_H) $(EMIT_RTL_H) $(TM_P_H) insn-config.h \ + $(srcdir)/config/riscv/riscv-protos.h + $(COMPILE) $< + $(POSTCOMPILE) + riscv-c.o: $(srcdir)/config/riscv/riscv-c.cc $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TM_H) $(TREE_H) output.h $(C_COMMON_H) $(TARGET_H) $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \ diff --git a/gcc/testsuite/gcc.target/riscv/fusion-auipc-addi.c b/gcc/testsuite/gcc.target/riscv/fusion-auipc-addi.c new file mode 100644 index 000000000000..03ff27481dd9 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/fusion-auipc-addi.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" "-Os" "-Oz" "-flto" } } */ +/* { dg-options "-march=rv64gc -mabi=lp64d -mtune=sifive-p600-series -mcmodel=medany -mexplicit-relocs -fno-section-anchors -fdump-rtl-sched1" } */ +/* { dg-final { scan-rtl-dump "RISCV_FUSE_AUIPC_ADDI" "sched1" } } */ +/* { dg-final { scan-assembler "auipc\ta0,%pcrel_hi\\(x\\)\n\taddi\ta0,a0,%pcrel_lo\\(\\.LA\[0-9\]+\\)" } } */ + +extern void use(long *); +void foo(void) { + extern long x; + use(&x); +} diff --git a/gcc/testsuite/gcc.target/riscv/fusion-lui-addi.c b/gcc/testsuite/gcc.target/riscv/fusion-lui-addi.c new file mode 100644 index 000000000000..97976cc94caf --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/fusion-lui-addi.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" "-Os" "-Oz" "-flto" } } */ +/* { dg-options "-march=rv64gc -mabi=lp64d -mtune=sifive-p600-series -fdump-rtl-sched1" } */ +/* { dg-final { check-function-bodies "**" "" } } */ +/* { dg-final { scan-rtl-dump "RISCV_FUSE_LUI_ADDI" "sched1" } } */ + +/* +**foo: +** li a0,305418240 +** addi a0,a0,1656 +** ret +*/ +long foo(void) { + return 0x12345678L; +} diff --git a/gcc/testsuite/gcc.target/riscv/fusion-zexth.c b/gcc/testsuite/gcc.target/riscv/fusion-zexth.c new file mode 100644 index 000000000000..63be24ab2006 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/fusion-zexth.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" "-Os" "-Oz" "-flto" } } */ +/* { dg-options "-march=rv64gc -mabi=lp64d -mtune=xiangshan-nanhu -fdump-rtl-sched2" } */ +/* { dg-final { check-function-bodies "**" "" } } */ +/* { dg-final { scan-rtl-dump "RISCV_FUSE_ZEXTH" "sched2" } } */ + +/* +**foo: +** slli a0,a0,48 +** srli a0,a0,48 +** ret +*/ +unsigned long foo(unsigned long x) { + return (unsigned long)(unsigned short)x; +} diff --git a/gcc/testsuite/gcc.target/riscv/fusion-zextw.c b/gcc/testsuite/gcc.target/riscv/fusion-zextw.c new file mode 100644 index 000000000000..b64344b76e67 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/fusion-zextw.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" "-Os" "-Oz" "-flto" } } */ +/* { dg-options "-march=rv64gc -mabi=lp64d -mtune=xiangshan-nanhu -fdump-rtl-sched2" } */ +/* { dg-final { check-function-bodies "**" "" } } */ +/* { dg-final { scan-rtl-dump "RISCV_FUSE_ZEXTWS" "sched2" } } */ + +/* +**foo: +** slli a0,a0,32 +** srli a0,a0,32 +** ret +*/ +unsigned long foo(unsigned long x) { + return (unsigned long)(unsigned int)x; +} From b4edbe6ff3393733c0bbe9717e0f5abd6775e5d3 Mon Sep 17 00:00:00 2001 From: Patrick Palka Date: Fri, 1 May 2026 12:38:25 -0400 Subject: [PATCH 053/453] c++/modules: merging fn w/ inst noexcept + deduced auto [PR125115] Here when streaming in view_interface::data() and merging it with the in-TU version, we find that the streamed-in version already has its noexcept instantiated _and_ its return type deduced. is_matching_decl has logic to update the in-TU version when that is the case, first by propagating the instantiated noexcept. But this is done by overwriting the entire function type with the streamed-in one, which simultaneously updates the return type as well. This premature return type updating breaks the later deduced return type checks which are partially in terms of the original function type. This patch fixes this by propagating the instantiated noexcept more narrowly via build_exception_variant. Also turn e_type into a reference so that it's not stale after updating e_inner's TREE_TYPE. PR c++/125115 gcc/cp/ChangeLog: * module.cc (trees_in::is_matching_decl): Turn e_type into a reference and use it instead of TREE_TYPE (e_inner). Always use build_exception_variant to propagate an already-instantiated noexcept. gcc/testsuite/ChangeLog: * g++.dg/modules/auto-9.h: New test. * g++.dg/modules/auto-9_a.H: New test. * g++.dg/modules/auto-9_b.C: New test. Reviewed-by: Jason Merrill --- gcc/cp/module.cc | 15 +++------ gcc/testsuite/g++.dg/modules/auto-9.h | 42 +++++++++++++++++++++++++ gcc/testsuite/g++.dg/modules/auto-9_a.H | 9 ++++++ gcc/testsuite/g++.dg/modules/auto-9_b.C | 6 ++++ 4 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 gcc/testsuite/g++.dg/modules/auto-9.h create mode 100644 gcc/testsuite/g++.dg/modules/auto-9_a.H create mode 100644 gcc/testsuite/g++.dg/modules/auto-9_b.C diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index 49330312520e..65307628b7ba 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -12621,7 +12621,7 @@ trees_in::is_matching_decl (tree existing, tree decl, bool is_typedef) goto mismatch; } - tree e_type = TREE_TYPE (e_inner); + tree& e_type = TREE_TYPE (e_inner); tree d_type = TREE_TYPE (d_inner); for (tree e_args = TYPE_ARG_TYPES (e_type), @@ -12660,18 +12660,13 @@ trees_in::is_matching_decl (tree existing, tree decl, bool is_typedef) dump (dumper::MERGE) && dump ("Propagating instantiated noexcept to %N", existing); gcc_checking_assert (existing == e_inner); - TREE_TYPE (existing) = d_type; + e_type = build_exception_variant (e_type, d_spec); /* Propagate to existing clones. */ tree clone; FOR_EACH_CLONE (clone, existing) - { - if (TREE_TYPE (clone) == e_type) - TREE_TYPE (clone) = d_type; - else - TREE_TYPE (clone) - = build_exception_variant (TREE_TYPE (clone), d_spec); - } + TREE_TYPE (clone) + = build_exception_variant (TREE_TYPE (clone), d_spec); } } else if (!DECL_MAYBE_DELETED (d_inner) @@ -12694,7 +12689,7 @@ trees_in::is_matching_decl (tree existing, tree decl, bool is_typedef) gcc_checking_assert (existing == e_inner); FNDECL_USED_AUTO (existing) = true; DECL_SAVED_AUTO_RETURN_TYPE (existing) = TREE_TYPE (e_type); - TREE_TYPE (existing) = change_return_type (TREE_TYPE (d_type), e_type); + e_type = change_return_type (TREE_TYPE (d_type), e_type); } else if (d_undeduced && !e_undeduced) /* EXISTING was deduced, leave it alone. */; diff --git a/gcc/testsuite/g++.dg/modules/auto-9.h b/gcc/testsuite/g++.dg/modules/auto-9.h new file mode 100644 index 000000000000..ff9830adaf85 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/auto-9.h @@ -0,0 +1,42 @@ +namespace ranges { +struct _Begin { + template auto operator()(_Tp __t) { return __t.begin(); } +}; +struct _Data { + template auto operator()(_Tp __t) { return __t.data(); } +}; +inline _Begin begin; +inline _Data data; +struct subrange; +template struct view_interface { + subrange _M_derived(); + auto data() noexcept(noexcept(begin(_M_derived()))) { return begin(_M_derived()); } +}; +} // namespace ranges +struct basic_string_view { + basic_string_view(const char *); + template + basic_string_view(_Range __r) : _M_str(ranges::data(__r)) {} + char *_M_str; +} typedef string_view; +namespace ranges { +struct subrange : view_interface { + char *begin(); +}; +struct split_view { + struct _Iterator { + subrange operator*(); + }; + template split_view(_Range, _Range); + _Iterator begin(); +}; +namespace views { +inline +struct _Split { + template + auto operator()(_Range, _Pattern) { + return split_view(0, 0); + } +} split; +} // namespace views +} // namespace ranges diff --git a/gcc/testsuite/g++.dg/modules/auto-9_a.H b/gcc/testsuite/g++.dg/modules/auto-9_a.H new file mode 100644 index 000000000000..bc559e86a24a --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/auto-9_a.H @@ -0,0 +1,9 @@ +// PR c++/125115 +// { dg-do compile { target c++17 } } +// { dg-additional-options "-fmodule-header" } + +#include "auto-9.h" + +inline void foo() { + auto x = string_view(*ranges::views::split(string_view("1.2"), '.').begin()); +} diff --git a/gcc/testsuite/g++.dg/modules/auto-9_b.C b/gcc/testsuite/g++.dg/modules/auto-9_b.C new file mode 100644 index 000000000000..716f2b43504d --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/auto-9_b.C @@ -0,0 +1,6 @@ +// PR c++/125115 +// { dg-do compile { target c++17 } } +// { dg-additional-options "-fmodules -fno-module-lazy" } + +#include "auto-9.h" +import "auto-9_a.H"; From 7beb7a55a169d98bbc60ddd33874b48b142fe445 Mon Sep 17 00:00:00 2001 From: Manuel Jacob Date: Fri, 1 May 2026 11:29:11 -0600 Subject: [PATCH 054/453] [PATCH v2 1/2] build: Preserve *_FOR_BUILD environment variables in all cases. They were preserved in the `"${build}" != "${host}"` case, but not in the `"${build}" = "${host}"` case. Each of the following commands produces the same build directory with and without the patch: ./configure --build=x86_64-make_autoconf_enable_cross_compiling-linux-gnu --host=x86_64-linux-gnu CC_FOR_BUILD=/tmp/gcc_for_build ./configure --build=x86_64-make_autoconf_enable_cross_compiling-linux-gnu --host=x86_64-linux-gnu ./configure The following command produces a Makefile containing `CC_FOR_BUILD = $(CC)` without the patch and containing `CC_FOR_BUILD = /tmp/gcc_for_build` with the patch: CC_FOR_BUILD=/tmp/gcc_for_build ./configure ChangeLog: * configure.ac: Preserve *_FOR_BUILD environment variables in all cases. * configure: Regenerate. Signed-off-by: Manuel Jacob --- configure | 32 ++++++++++++++++---------------- configure.ac | 32 ++++++++++++++++---------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/configure b/configure index 083e8823d2b6..9a6407d2c6f5 100755 --- a/configure +++ b/configure @@ -4333,22 +4333,22 @@ if test "${build}" != "${host}" ; then WINDRES_FOR_BUILD=${WINDRES_FOR_BUILD-windres} WINDMC_FOR_BUILD=${WINDMC_FOR_BUILD-windmc} else - AR_FOR_BUILD="\$(AR)" - AS_FOR_BUILD="\$(AS)" - CC_FOR_BUILD="\$(CC)" - CXX_FOR_BUILD="\$(CXX)" - DLLTOOL_FOR_BUILD="\$(DLLTOOL)" - DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)" - GFORTRAN_FOR_BUILD="\$(GFORTRAN)" - A68_FOR_BUILD="\$(A68)" - GOC_FOR_BUILD="\$(GOC)" - GDC_FOR_BUILD="\$(GDC)" - GNATMAKE_FOR_BUILD="\$(GNATMAKE)" - LD_FOR_BUILD="\$(LD)" - NM_FOR_BUILD="\$(NM)" - RANLIB_FOR_BUILD="\$(RANLIB)" - WINDRES_FOR_BUILD="\$(WINDRES)" - WINDMC_FOR_BUILD="\$(WINDMC)" + AR_FOR_BUILD="${AR_FOR_BUILD-\$(AR)}" + AS_FOR_BUILD="${AS_FOR_BUILD-\$(AS)}" + CC_FOR_BUILD="${CC_FOR_BUILD-\$(CC)}" + CXX_FOR_BUILD="${CXX_FOR_BUILD-\$(CXX)}" + DLLTOOL_FOR_BUILD="${DLLTOOL_FOR_BUILD-\$(DLLTOOL)}" + DSYMUTIL_FOR_BUILD="${DSYMUTIL_FOR_BUILD-\$(DSYMUTIL)}" + GFORTRAN_FOR_BUILD="${GFORTRAN_FOR_BUILD-\$(GFORTRAN)}" + A68_FOR_BUILD="${A68_FOR_BUILD-\$(A68)}" + GOC_FOR_BUILD="${GOC_FOR_BUILD-\$(GOC)}" + GDC_FOR_BUILD="${GDC_FOR_BUILD-\$(GDC)}" + GNATMAKE_FOR_BUILD="${GNATMAKE_FOR_BUILD-\$(GNATMAKE)}" + LD_FOR_BUILD="${LD_FOR_BUILD-\$(LD)}" + NM_FOR_BUILD="${NM_FOR_BUILD-\$(NM)}" + RANLIB_FOR_BUILD="${RANLIB_FOR_BUILD-\$(RANLIB)}" + WINDRES_FOR_BUILD="${WINDRES_FOR_BUILD-\$(WINDRES)}" + WINDMC_FOR_BUILD="${WINDMC_FOR_BUILD-\$(WINDMC)}" fi ac_ext=c diff --git a/configure.ac b/configure.ac index c5de225b0ac3..0854638e8e85 100644 --- a/configure.ac +++ b/configure.ac @@ -1468,22 +1468,22 @@ if test "${build}" != "${host}" ; then WINDRES_FOR_BUILD=${WINDRES_FOR_BUILD-windres} WINDMC_FOR_BUILD=${WINDMC_FOR_BUILD-windmc} else - AR_FOR_BUILD="\$(AR)" - AS_FOR_BUILD="\$(AS)" - CC_FOR_BUILD="\$(CC)" - CXX_FOR_BUILD="\$(CXX)" - DLLTOOL_FOR_BUILD="\$(DLLTOOL)" - DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)" - GFORTRAN_FOR_BUILD="\$(GFORTRAN)" - A68_FOR_BUILD="\$(A68)" - GOC_FOR_BUILD="\$(GOC)" - GDC_FOR_BUILD="\$(GDC)" - GNATMAKE_FOR_BUILD="\$(GNATMAKE)" - LD_FOR_BUILD="\$(LD)" - NM_FOR_BUILD="\$(NM)" - RANLIB_FOR_BUILD="\$(RANLIB)" - WINDRES_FOR_BUILD="\$(WINDRES)" - WINDMC_FOR_BUILD="\$(WINDMC)" + AR_FOR_BUILD="${AR_FOR_BUILD-\$(AR)}" + AS_FOR_BUILD="${AS_FOR_BUILD-\$(AS)}" + CC_FOR_BUILD="${CC_FOR_BUILD-\$(CC)}" + CXX_FOR_BUILD="${CXX_FOR_BUILD-\$(CXX)}" + DLLTOOL_FOR_BUILD="${DLLTOOL_FOR_BUILD-\$(DLLTOOL)}" + DSYMUTIL_FOR_BUILD="${DSYMUTIL_FOR_BUILD-\$(DSYMUTIL)}" + GFORTRAN_FOR_BUILD="${GFORTRAN_FOR_BUILD-\$(GFORTRAN)}" + A68_FOR_BUILD="${A68_FOR_BUILD-\$(A68)}" + GOC_FOR_BUILD="${GOC_FOR_BUILD-\$(GOC)}" + GDC_FOR_BUILD="${GDC_FOR_BUILD-\$(GDC)}" + GNATMAKE_FOR_BUILD="${GNATMAKE_FOR_BUILD-\$(GNATMAKE)}" + LD_FOR_BUILD="${LD_FOR_BUILD-\$(LD)}" + NM_FOR_BUILD="${NM_FOR_BUILD-\$(NM)}" + RANLIB_FOR_BUILD="${RANLIB_FOR_BUILD-\$(RANLIB)}" + WINDRES_FOR_BUILD="${WINDRES_FOR_BUILD-\$(WINDRES)}" + WINDMC_FOR_BUILD="${WINDMC_FOR_BUILD-\$(WINDMC)}" fi AC_PROG_CC_C99 From 526f0abf6de62adc42bca9dbdc63d50e36138dfc Mon Sep 17 00:00:00 2001 From: Manuel Jacob Date: Fri, 1 May 2026 11:38:01 -0600 Subject: [PATCH 055/453] [PATCH v2 2/2] build: Set default for CPP_FOR_BUILD environment variable in all cases. A default was set in the `"${build}" != "${host}"` case, but not in the `"${build}" = "${host}"` case. For a working build, this change should not make any difference. CPP_FOR_BUILD is passed to build modules as CPP. If not set, autoconf macro AC_PROG_CC infers CPP by trying various programs. First, it tries "$CC -E", which CPP will default to in all cases with this patch. The following command produces the same build directory with and without the patch: ./configure --build=x86_64-make_autoconf_enable_cross_compiling-linux-gnu --host=x86_64-linux-gnu The following command produces a Makefile containing `CPP_FOR_BUILD = ` without the patch and containing `CPP_FOR_BUILD = $(CC_FOR_BUILD) -E` with the patch: ./configure ChangeLog: * configure.ac: Set default for CPP_FOR_BUILD environment variable in all cases. * configure: Regenerate. Signed-off-by: Manuel Jacob --- configure | 2 +- configure.ac | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 9a6407d2c6f5..e2150f50aac5 100755 --- a/configure +++ b/configure @@ -4318,7 +4318,6 @@ if test "${build}" != "${host}" ; then AR_FOR_BUILD=${AR_FOR_BUILD-ar} AS_FOR_BUILD=${AS_FOR_BUILD-as} CC_FOR_BUILD=${CC_FOR_BUILD-gcc} - CPP_FOR_BUILD="${CPP_FOR_BUILD-\$(CC_FOR_BUILD) -E}" CXX_FOR_BUILD=${CXX_FOR_BUILD-g++} DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil} @@ -4350,6 +4349,7 @@ else WINDRES_FOR_BUILD="${WINDRES_FOR_BUILD-\$(WINDRES)}" WINDMC_FOR_BUILD="${WINDMC_FOR_BUILD-\$(WINDMC)}" fi +CPP_FOR_BUILD="${CPP_FOR_BUILD-\$(CC_FOR_BUILD) -E}" ac_ext=c ac_cpp='$CPP $CPPFLAGS' diff --git a/configure.ac b/configure.ac index 0854638e8e85..edd53b2bb42a 100644 --- a/configure.ac +++ b/configure.ac @@ -1453,7 +1453,6 @@ if test "${build}" != "${host}" ; then AR_FOR_BUILD=${AR_FOR_BUILD-ar} AS_FOR_BUILD=${AS_FOR_BUILD-as} CC_FOR_BUILD=${CC_FOR_BUILD-gcc} - CPP_FOR_BUILD="${CPP_FOR_BUILD-\$(CC_FOR_BUILD) -E}" CXX_FOR_BUILD=${CXX_FOR_BUILD-g++} DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil} @@ -1485,6 +1484,7 @@ else WINDRES_FOR_BUILD="${WINDRES_FOR_BUILD-\$(WINDRES)}" WINDMC_FOR_BUILD="${WINDMC_FOR_BUILD-\$(WINDMC)}" fi +CPP_FOR_BUILD="${CPP_FOR_BUILD-\$(CC_FOR_BUILD) -E}" AC_PROG_CC_C99 AC_PROG_CXX From 9c40f8de18908bd0e09dafd5e21895d285044e11 Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Fri, 1 May 2026 14:13:51 -0600 Subject: [PATCH 056/453] [PATCH v3] match.pd: (A>>C) != (B>>C) -> (A^B) >= (1<>C) == (B>>C) -> (A^B) < (1<>C) NE|EQ (B>>C) -> (A^B) GE|LT (1<> C) != (B >> C) -> (A ^ B) >= (1 << C) + and likewise (A >> C) == (B >> C) -> (A ^ B) < (1 << C). + + Note that maybe_canonicalize_comparison_1 related patterns + might change ">= (1 << C)" to "> (1 << C - 1)" and + "< (1 << C)" to "<= (1 << C - 1)". */ +(for cmp (ne eq) + icmp (ge lt) + (simplify + (cmp (rshift @0 INTEGER_CST@2) (rshift @1 INTEGER_CST@2)) + (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)) + && TYPE_UNSIGNED (TREE_TYPE (@0)) + && type_has_mode_precision_p (TREE_TYPE (@0)) + && types_match (@0, @1) + && tree_fits_shwi_p (@2) + && tree_to_shwi (@2) > 0 + && tree_to_shwi (@2) < TYPE_PRECISION (TREE_TYPE (@0))) + (icmp (bit_xor @0 @1) (lshift { build_one_cst (TREE_TYPE (@0)); } @2))))) + /* Convert ~ (-A) to A - 1. */ (simplify (bit_not (convert? (negate @0))) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr110010.c b/gcc/testsuite/gcc.dg/tree-ssa/pr110010.c new file mode 100644 index 000000000000..bda6f1191b14 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr110010.c @@ -0,0 +1,14 @@ +/* { dg-additional-options -O1 } */ +/* { dg-additional-options -fdump-tree-gimple } */ +#define N 5 + +unsigned f(unsigned a, unsigned b) +{ + return (a>>N) != (b>>N); +} + +unsigned f2(unsigned a, unsigned b) +{ + return (a>>N) == (b>>N); +} +/* { dg-final { scan-tree-dump-times " >> " 0 gimple } } */ From 9aaedeaced055efe5041004e0643f4f3127c6ce9 Mon Sep 17 00:00:00 2001 From: Martin Uecker Date: Sun, 26 Apr 2026 18:28:16 +0200 Subject: [PATCH 057/453] c: argument expressions may be evaluated too often by typeof [PR124576] When there are multiple declarators in a declaration and the type is specified via typeof, an expression inside the argument of typeof may be evaluated multiple times. Fix this by adding a save expression. PR c/124576 gcc/c/ChangeLog: * c-decl.cc (declspecs_add_type): Add save_expr. gcc/testsuite/ChangeLog: * gcc.dg/pr124576.c: New test. --- gcc/c/c-decl.cc | 7 ++++--- gcc/testsuite/gcc.dg/pr124576.c | 12 ++++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr124576.c diff --git a/gcc/c/c-decl.cc b/gcc/c/c-decl.cc index 5e5193ed8809..cc07e05e3363 100644 --- a/gcc/c/c-decl.cc +++ b/gcc/c/c-decl.cc @@ -13136,11 +13136,12 @@ declspecs_add_type (location_t loc, struct c_declspecs *specs, } if (spec.expr) { + tree expr = save_expr (fold_convert (void_type_node, spec.expr)); if (specs->expr) - specs->expr = build2 (COMPOUND_EXPR, TREE_TYPE (spec.expr), - specs->expr, spec.expr); + specs->expr = build2 (COMPOUND_EXPR, TREE_TYPE (expr), + specs->expr, expr); else - specs->expr = spec.expr; + specs->expr = expr; specs->expr_const_operands &= spec.expr_const_operands; } } diff --git a/gcc/testsuite/gcc.dg/pr124576.c b/gcc/testsuite/gcc.dg/pr124576.c new file mode 100644 index 000000000000..b66969d60fa3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr124576.c @@ -0,0 +1,12 @@ +/* { dg-do run } */ +/* { dg-options "-std=c99" } */ + +int main() +{ + int i = 0; + int j = 0; + __typeof__((__typeof__(int[i++])*)(j++, (void*)0)) a, b, c; + if (1 != j) + __builtin_abort(); +} + From f6f33ca83cb6b84cc5d157103ac70c143011b176 Mon Sep 17 00:00:00 2001 From: Daniel Barboza Date: Fri, 1 May 2026 14:53:12 -0600 Subject: [PATCH 058/453] [PATCH] match.pd: make "if (c) a |= CST1 else a &= ~CST1" unconditional [PR123967] We have an instance in Perlbench of a code that if a condition is true a bit is set, if false the same bit is cleared. This can be made unconditional by always running the bit clear, and then run the bit_ior with the result of (cond) * CST1: (a & ~CST1) | (cond * CST1) If "cond" is false (zero) the bit_ior is a no-op and the bit will remain cleared, if "cond" is true we'll set the bit as intended. Note that the transformation will add a mult into the pattern, therefore make it valid only if type <= word_size to avoid wide int multiplications. Bootstrapped on x86, aarch64 and rv64. Regression tested on x86 and aarch64. PR rtl-optimization/123967 gcc/ChangeLog: * match.pd(`if (cond) (A | CST1) : (A & ~CST1)`)`: New pattern. gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/pr123967-2.c: New test. * gcc.dg/tree-ssa/pr123967-3.c: New test. * gcc.dg/tree-ssa/pr123967.c: New test. --- gcc/match.pd | 13 +++ gcc/testsuite/gcc.dg/tree-ssa/pr123967-2.c | 25 ++++++ gcc/testsuite/gcc.dg/tree-ssa/pr123967-3.c | 48 +++++++++++ gcc/testsuite/gcc.dg/tree-ssa/pr123967.c | 97 ++++++++++++++++++++++ 4 files changed, 183 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr123967-2.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr123967-3.c create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr123967.c diff --git a/gcc/match.pd b/gcc/match.pd index 9e450f3985fb..3cf07123e716 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -6777,6 +6777,19 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) && INTEGRAL_TYPE_P (TREE_TYPE (@0))) (cond @1 (convert @2) (convert @3)))) +/* PR123967: if (cond) A | CST1 : A & ~CST1 + + Make both bitops unconditional: (A & ~CST1) | (cond * CST1). */ +(for cmp (simple_comparison) + (simplify + (cond (cmp@4 @5 @6) (bit_ior @0 INTEGER_CST@1) (bit_and@3 @0 INTEGER_CST@2)) + (if (INTEGRAL_TYPE_P (type) + && INTEGRAL_TYPE_P (TREE_TYPE (@0)) + && (TYPE_UNSIGNED (TREE_TYPE (@1)) || tree_int_cst_sgn (@1) > 0) + && TYPE_PRECISION (type) <= BITS_PER_WORD + && wi::to_wide (@1) == ~wi::to_wide (@2)) + (bit_ior @3 (mult (convert:type @4) (convert:type @1)))))) + /* Simplification moved from fold_cond_expr_with_comparison. It may also be extended. */ /* This pattern implements two kinds simplification: diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr123967-2.c b/gcc/testsuite/gcc.dg/tree-ssa/pr123967-2.c new file mode 100644 index 000000000000..5abef93c695b --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr123967-2.c @@ -0,0 +1,25 @@ +/* { dg-additional-options -O2 } */ +/* { dg-additional-options -fdump-tree-optimized } */ + +unsigned f1 (unsigned x, unsigned m) +{ + if (x) + m |= 0x3; + else + m = m & ~0x3; + + return m + 1; +} + +unsigned f2 (unsigned x, int m) +{ + int mask = 0x3; + + if (x) + m |= mask; + else + m = m & ~mask; + + return m + 1; +} +/* { dg-final { scan-tree-dump-times " \\\| 3" 0 optimized } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr123967-3.c b/gcc/testsuite/gcc.dg/tree-ssa/pr123967-3.c new file mode 100644 index 000000000000..935a4e207bd8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr123967-3.c @@ -0,0 +1,48 @@ +/* { dg-do run } */ +/* { dg-additional-options -O2 } */ + +void abort(void); + +/* Macro adapted from builtin-object-size-common.h */ +#define FAIL() \ + do { \ + __builtin_printf ("Failure at line: %d\n", __LINE__); \ + abort(); \ + } while (0) + +unsigned f1 (unsigned x, int m) +{ + int mask = 0x3; + + if (x) + m |= mask; + else + m = m & ~mask; + + return m + 1; +} + +unsigned f2 (unsigned x, int m) +{ + if (x) + m |= 0x3; + else + m = m & ~0x8; + + return m + 1; +} + +int main (void) +{ + if (f1 (0, 7) != 5) + FAIL (); + if (f1 (1, 7) != 8) + FAIL (); + + if (f2 (0, 8) != 1) + FAIL (); + if (f2 (1, 8) != 12) + FAIL (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr123967.c b/gcc/testsuite/gcc.dg/tree-ssa/pr123967.c new file mode 100644 index 000000000000..45459ce98bcf --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr123967.c @@ -0,0 +1,97 @@ +/* { dg-additional-options -O2 } */ +/* { dg-additional-options -fdump-tree-optimized } */ + +/* Code taken from Perlbench */ + +typedef long unsigned int size_t; +typedef long int ssize_t; +typedef size_t STRLEN; +typedef struct cop COP; +typedef struct sv SV; +typedef struct p5rx REGEXP; +typedef struct magic MAGIC; +typedef unsigned char U8; +typedef int I32; +typedef unsigned int U32; + +typedef int boolean; + +struct sv +{ + void *sv_any; + U32 sv_flags; + union + { + SV *svu_rv; + } sv_u; +}; +struct p5rx +{ + union + { + struct regexp *svu_rx; + } sv_u; +}; +typedef struct regexp +{ + U32 extflags; +} regexp; +typedef struct +{ + char *ganch; +} regmatch_info; +struct cop +{ + U32 cop_hints; +}; +struct magic +{ + U8 mg_flags; + ssize_t mg_len; +}; +MAGIC *Perl_mg_find_mglob (SV * sv); +extern COP *PL_curcop; +extern STRLEN S_MgBYTEPOS (MAGIC *mg, SV *sv, const char *s, STRLEN len) ; + +static struct regexp * +S_ReANY (const REGEXP *const re) +{ + return re->sv_u.svu_rx; +} + + +I32 +Perl_regexec_flags (REGEXP *const rx, char *stringarg, char *strend, + char *strbeg, ssize_t minend, SV *sv, void *data, + U32 flags) +{ + char *startpos; + ssize_t minlen; + MAGIC *mg; + + const boolean + utf8_target = + (((((sv)->sv_flags & 0x20000000) + && !(((PL_curcop)->cop_hints + 0) & 0x00000008))) ? 1 : 0); + regmatch_info reginfo_buf; + regmatch_info *const reginfo = ®info_buf; + + startpos = stringarg; + + reginfo->ganch = + (flags & 0x08) + ? stringarg + : ((mg = Perl_mg_find_mglob (sv)) && mg->mg_len >= 0) + ? strbeg + S_MgBYTEPOS (mg, sv, strbeg, strend - strbeg) : strbeg; + + if ((startpos + minlen) > strend || startpos < strbeg) + return 0; + + ((utf8_target) + ? (((S_ReANY ((const REGEXP *) (rx)))->extflags) |= + (1U << (((0 + 12) + 2) + 6))) + : (((S_ReANY ((const REGEXP *) (rx)))->extflags) &= + ~(1U << (((0 + 12) + 2) + 6)))); + +} +/* { dg-final { scan-tree-dump-times " \\\| 1048576" 0 optimized } } */ From 3d83dd50bc9aed347570e453dfa60f1a69ea4e5a Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Fri, 1 May 2026 15:27:48 -0600 Subject: [PATCH 059/453] [PATCH v3] match.pd: (A>>bool) == 0 -> (unsigned)A) <= bool [PR119420] Also add its counterpart: "(A>>bool) != 0 -> (unsigned)A) > bool" Changes from v2: - gate the pattern with "#if GIMPLE" - use 'single_use' in the rshift result - add the NE variant - v2 link: https://gcc.gnu.org/pipermail/gcc-patches/2026-April/712431.html Bootstrap tested in x86, aarch64 and RISC-V. Regression tested in x86 and aarch64. PR tree-optimization/119420 gcc/ChangeLog * match.pd(`(A>>bool) EQ 0 -> (unsigned)A LE bool`): New pattern. gcc/testsuite/ChangeLog * gcc.dg/tree-ssa/pr119420.c: New test. --- gcc/match.pd | 13 ++++++++ gcc/testsuite/gcc.dg/tree-ssa/pr119420.c | 42 ++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr119420.c diff --git a/gcc/match.pd b/gcc/match.pd index 3cf07123e716..5fed1419bdb3 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -5439,6 +5439,19 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) @0))))) #endif +#if GIMPLE +/* PR119420: (A >> bool) == 0 -> (unsigned)a <= (unsigned)bool + and its variant: + (A >> bool) != 0 -> (unsigned)a > (unsigned)bool; */ +(for cmp (eq ne) + icmp (le gt) + (simplify + (cmp (rshift@2 @0 zero_one_valued_p@1) integer_zerop) + (if (single_use (@2)) + (with { tree utype = unsigned_type_for (TREE_TYPE (@0)); } + (icmp (convert:utype @0) (convert:utype @1)))))) +#endif + /* Rewrite an LROTATE_EXPR by a constant into an RROTATE_EXPR by a new constant. */ (simplify diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr119420.c b/gcc/testsuite/gcc.dg/tree-ssa/pr119420.c new file mode 100644 index 000000000000..99259fd4a8ba --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr119420.c @@ -0,0 +1,42 @@ +/* { dg-additional-options -O2 } */ +/* { dg-additional-options -fdump-tree-optimized } */ + +int ll (signed a) +{ + int d = a >> 1; + return d == 0; +} + +int ll1 (signed a) +{ + int d = a & ~1; + return d == 0; +} + +int ll2 (signed a) +{ + unsigned aa = a; + return aa <= 1; +} + +int ll3 (signed a) +{ + int d = a >> 1; + return d != 0; +} + +int ll4 (signed a) +{ + int d = a & ~1; + return d != 0; +} + +int ll5 (signed a) +{ + unsigned aa = a; + return aa > 1; +} + +/* { dg-final { scan-tree-dump-times " >> " 0 optimized } } */ +/* { dg-final { scan-tree-dump-times " <= " 3 optimized } } */ +/* { dg-final { scan-tree-dump-times " > " 3 optimized } } */ From 2258d600c1fcecfa6847a363ae7cc5e897aeb7cc Mon Sep 17 00:00:00 2001 From: Peter Damianov Date: Fri, 1 May 2026 23:45:40 +0100 Subject: [PATCH 060/453] algol68: Correct typo exeect -> exeext This typo was breaking compiling for Windows (which of course, uses .exe extension) gcc/algol68/ChangeLog: * Make-lang.in: Correct typo exeect -> exeext --- gcc/algol68/Make-lang.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/algol68/Make-lang.in b/gcc/algol68/Make-lang.in index aa35e460711c..5ad6bec3a20d 100644 --- a/gcc/algol68/Make-lang.in +++ b/gcc/algol68/Make-lang.in @@ -219,7 +219,7 @@ ga68.pod: algol68/ga68.texi algol68.srcextra: algol68.all.cross: ga68$(exeext) -algol68.start.encap: ga68$(exeect) +algol68.start.encap: ga68$(exeext) algol68.rest.encap: algol68.info: doc/ga68.info doc/ga68-internals.info doc/ga68-coding-guidelines.info algol68.dvi: doc/ga68.dvi doc/ga68-internals.dvi doc/ga68-coding-guidelines.dvi From 26a3d80837a91a717cd4f69f279e29bcaac343a9 Mon Sep 17 00:00:00 2001 From: Sam James Date: Sat, 2 May 2026 00:05:27 +0100 Subject: [PATCH 061/453] gcc: fix gcov-tool MOSTLYCLEANFILES typo gcc/ChangeLog: * Makefile.in (MOSTLYCLEANFILES): Fix typo of '$(exeext)'. Signed-off-by: Sam James --- gcc/Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 0f0efcda3955..5e656c3c25b2 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1997,7 +1997,7 @@ MOSTLYCLEANFILES = insn-flags.h insn-config.h insn-codes.h \ $(SPECS) collect2$(exeext) gcc-ar$(exeext) gcc-nm$(exeext) \ gcc-ranlib$(exeext) \ genversion$(build_exeext) gcov$(exeext) gcov-dump$(exeext) \ - gcov-tool$(exeect) \ + gcov-tool$(exeext) \ gengtype$(exeext) *.[0-9][0-9].* *.[si] *-checksum.cc libbackend.a \ libcommon-target.a libcommon.a libgcc.mk perf.data From 1d44e635a8a116ecc2434a7eb4a61ffff605ec79 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Fri, 1 May 2026 23:33:38 +0000 Subject: [PATCH 062/453] Update gcc .po files * be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po, ja.po, ka.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po, zh_TW.po: Update. --- gcc/po/be.po | 12004 ++++++++++++++++++++++----------------------- gcc/po/da.po | 12052 ++++++++++++++++++++++----------------------- gcc/po/de.po | 12070 +++++++++++++++++++++++----------------------- gcc/po/el.po | 12014 ++++++++++++++++++++++----------------------- gcc/po/es.po | 12060 ++++++++++++++++++++++----------------------- gcc/po/fi.po | 12035 ++++++++++++++++++++++----------------------- gcc/po/fr.po | 12043 ++++++++++++++++++++++----------------------- gcc/po/hr.po | 12013 ++++++++++++++++++++++----------------------- gcc/po/id.po | 12035 ++++++++++++++++++++++----------------------- gcc/po/ja.po | 12027 ++++++++++++++++++++++----------------------- gcc/po/ka.po | 12000 ++++++++++++++++++++++----------------------- gcc/po/nl.po | 12018 ++++++++++++++++++++++----------------------- gcc/po/ru.po | 12049 ++++++++++++++++++++++----------------------- gcc/po/sr.po | 12042 ++++++++++++++++++++++----------------------- gcc/po/sv.po | 12066 ++++++++++++++++++++++----------------------- gcc/po/tr.po | 12047 ++++++++++++++++++++++----------------------- gcc/po/uk.po | 12045 ++++++++++++++++++++++----------------------- gcc/po/vi.po | 12038 ++++++++++++++++++++++----------------------- gcc/po/zh_CN.po | 12056 ++++++++++++++++++++++----------------------- gcc/po/zh_TW.po | 12035 ++++++++++++++++++++++----------------------- 20 files changed, 122236 insertions(+), 118513 deletions(-) diff --git a/gcc/po/be.po b/gcc/po/be.po index 487ddc37921f..377b2d4b98da 100644 --- a/gcc/po/be.po +++ b/gcc/po/be.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: gcc 3.1\n" "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" -"POT-Creation-Date: 2026-03-26 15:06+0000\n" +"POT-Creation-Date: 2026-04-22 17:18+0000\n" "PO-Revision-Date: 2002-05-17 15:54+0200\n" "Last-Translator: Ales Nyakhaychyk \n" "Language-Team: Belarusian \n" @@ -1293,12 +1293,12 @@ msgstr "" msgid "Known PTX ISA versions (for use with the -mptx= option):" msgstr "" -#: config/nvptx/nvptx.opt:204 +#: config/nvptx/nvptx.opt:207 #, no-c-format msgid "Specify the PTX ISA version to use." msgstr "" -#: config/nvptx/nvptx.opt:208 +#: config/nvptx/nvptx.opt:211 #, no-c-format msgid "Initialize ptx registers." msgstr "" @@ -2135,13 +2135,13 @@ msgstr "" #: config/rs6000/rs6000.opt:558 config/riscv/riscv.opt:200 #: config/i386/i386.opt:1009 config/arm/arm.opt:347 -#: config/aarch64/aarch64.opt:337 config/s390/s390.opt:201 +#: config/aarch64/aarch64.opt:342 config/s390/s390.opt:201 #, no-c-format msgid "Use given stack-protector guard." msgstr "" #: config/rs6000/rs6000.opt:562 config/riscv/riscv.opt:204 -#: config/arm/arm.opt:351 config/aarch64/aarch64.opt:341 +#: config/arm/arm.opt:351 config/aarch64/aarch64.opt:346 #: config/s390/s390.opt:205 #, no-c-format msgid "Valid arguments to -mstack-protector-guard=:" @@ -2602,7 +2602,7 @@ msgid "Assume target CPU is configured as big endian." msgstr "" #: config/riscv/riscv.opt:30 config/arm/arm.opt:168 -#: config/microblaze/microblaze.opt:64 config/aarch64/aarch64.opt:108 +#: config/microblaze/microblaze.opt:64 config/aarch64/aarch64.opt:113 #, no-c-format msgid "Assume target CPU is configured as little endian." msgstr "" @@ -2677,7 +2677,7 @@ msgstr "" msgid "Convert BASE + LARGE_OFFSET addresses to NEW_BASE + SMALL_OFFSET to allow more memory accesses to be generated as compressed instructions. Currently targets 32-bit integer load/stores." msgstr "" -#: config/riscv/riscv.opt:125 config/aarch64/aarch64.opt:112 +#: config/riscv/riscv.opt:125 config/aarch64/aarch64.opt:117 #: config/loongarch/loongarch.opt:298 #, no-c-format msgid "Specify the code model." @@ -2714,7 +2714,7 @@ msgid "Enable the CSR checking for the ISA-dependent CSR and the read-only CSR. msgstr "" #: config/riscv/riscv.opt:169 config/i386/i386.opt:413 -#: config/aarch64/aarch64.opt:155 +#: config/aarch64/aarch64.opt:160 #, no-c-format msgid "Omit the frame pointer in leaf functions." msgstr "" @@ -2824,7 +2824,7 @@ msgstr "" msgid "-param=riscv-two-source-permutes Enable permutes with two source vectors." msgstr "" -#: config/riscv/riscv.opt:357 config/aarch64/aarch64.opt:315 +#: config/riscv/riscv.opt:357 config/aarch64/aarch64.opt:320 #, no-c-format msgid "Override the scalar cost model such that vectorization is always profitable." msgstr "" @@ -2870,7 +2870,7 @@ msgstr "" msgid "The possible TLS dialects:" msgstr "" -#: config/riscv/riscv.opt:417 config/aarch64/aarch64.opt:159 +#: config/riscv/riscv.opt:417 config/aarch64/aarch64.opt:164 #: config/loongarch/loongarch.opt:325 #, no-c-format msgid "Specify TLS dialect." @@ -5171,7 +5171,7 @@ msgstr "" msgid "Enable conservative small loop unrolling." msgstr "" -#: config/i386/i386.opt:1258 config/aarch64/aarch64.opt:421 +#: config/i386/i386.opt:1258 config/aarch64/aarch64.opt:426 #, no-c-format msgid "Limit how much the autovectorizer may unroll a loop." msgstr "" @@ -5528,7 +5528,7 @@ msgstr "" msgid "Cost to assume for a branch insn." msgstr "" -#: config/arm/arm.opt:335 config/aarch64/aarch64.opt:224 +#: config/arm/arm.opt:335 config/aarch64/aarch64.opt:229 #, no-c-format msgid "Use branch-protection features." msgstr "" @@ -5839,213 +5839,218 @@ msgstr "" msgid "Workaround for ARM Cortex-A53 Erratum number 843419." msgstr "" -#: config/aarch64/aarch64.opt:116 +#: config/aarch64/aarch64.opt:108 +#, no-c-format +msgid "Enable narrowing of 64-bit general purpose register writes to 32-bit when upper 32 bits of the register are unused." +msgstr "" + +#: config/aarch64/aarch64.opt:121 #, no-c-format msgid "The register used to access the thread pointer:" msgstr "" -#: config/aarch64/aarch64.opt:147 +#: config/aarch64/aarch64.opt:152 #, no-c-format msgid "Specify the thread pointer register." msgstr "" -#: config/aarch64/aarch64.opt:151 +#: config/aarch64/aarch64.opt:156 #, no-c-format msgid "Don't assume that unaligned accesses are handled by the system." msgstr "" -#: config/aarch64/aarch64.opt:163 +#: config/aarch64/aarch64.opt:168 #, no-c-format msgid "Specifies bit size of immediate TLS offsets. Valid values are 12, 24, 32, 48." msgstr "" -#: config/aarch64/aarch64.opt:182 +#: config/aarch64/aarch64.opt:187 #, no-c-format msgid "Use features of architecture ARCH." msgstr "" -#: config/aarch64/aarch64.opt:186 +#: config/aarch64/aarch64.opt:191 #, no-c-format msgid "Use features of and optimize for CPU." msgstr "" -#: config/aarch64/aarch64.opt:190 +#: config/aarch64/aarch64.opt:195 #, fuzzy, no-c-format #| msgid "Optimize for 3900" msgid "Optimize for CPU." msgstr "ĐĐżŃ‚Ń‹ĐŒŃ–Đ·Đ°ĐČаць ĐŽĐ»Ń 3900" -#: config/aarch64/aarch64.opt:194 +#: config/aarch64/aarch64.opt:199 #, fuzzy, no-c-format msgid "Generate code that conforms to the specified ABI." msgstr "Đ“Đ”ĐœĐ”Ń€Ń‹Ń€Đ°ĐČаць ĐșĐŸĐŽ ĐŽĐ»Ń ĐŽĐ°ĐŽĐ·Đ”ĐœĐ°ĐłĐ° ЩП" -#: config/aarch64/aarch64.opt:198 +#: config/aarch64/aarch64.opt:203 #, no-c-format msgid "-fdump-tuning-model= Dump current tuning model to a JSON file." msgstr "" -#: config/aarch64/aarch64.opt:202 +#: config/aarch64/aarch64.opt:207 #, no-c-format msgid "-muser-provided-CPU= User specific CPU tunings." msgstr "" -#: config/aarch64/aarch64.opt:206 +#: config/aarch64/aarch64.opt:211 #, no-c-format msgid "-moverride=\tPower users only! Override CPU optimization parameters." msgstr "" -#: config/aarch64/aarch64.opt:210 +#: config/aarch64/aarch64.opt:215 #, no-c-format msgid "Known AArch64 ABIs (for use with the -mabi= option):" msgstr "" -#: config/aarch64/aarch64.opt:220 +#: config/aarch64/aarch64.opt:225 #, no-c-format msgid "PC relative literal loads." msgstr "" -#: config/aarch64/aarch64.opt:228 +#: config/aarch64/aarch64.opt:233 #, no-c-format msgid "Select return address signing scope." msgstr "" -#: config/aarch64/aarch64.opt:232 +#: config/aarch64/aarch64.opt:237 #, no-c-format msgid "Supported AArch64 return address signing scope (for use with -msign-return-address= option):" msgstr "" -#: config/aarch64/aarch64.opt:245 +#: config/aarch64/aarch64.opt:250 #, no-c-format msgid "Enable the reciprocal square root approximation. Enabling this reduces precision of reciprocal square root results to about 16 bits for single precision and to 32 bits for double precision." msgstr "" -#: config/aarch64/aarch64.opt:251 +#: config/aarch64/aarch64.opt:256 #, no-c-format msgid "Enable the square root approximation. Enabling this reduces precision of square root results to about 16 bits for single precision and to 32 bits for double precision. If enabled, it implies -mlow-precision-recip-sqrt." msgstr "" -#: config/aarch64/aarch64.opt:258 +#: config/aarch64/aarch64.opt:263 #, no-c-format msgid "Enable the division approximation. Enabling this reduces precision of division results to about 16 bits for single precision and to 32 bits for double precision." msgstr "" -#: config/aarch64/aarch64.opt:276 +#: config/aarch64/aarch64.opt:281 #, no-c-format msgid "Specify when to enable an early register allocation pass. The possibilities are: all functions, functions that have access to strided multi-register instructions, and no functions." msgstr "" -#: config/aarch64/aarch64.opt:282 +#: config/aarch64/aarch64.opt:287 #, no-c-format msgid "The possible SVE vector lengths:" msgstr "" -#: config/aarch64/aarch64.opt:304 +#: config/aarch64/aarch64.opt:309 #, no-c-format msgid "-msve-vector-bits=\tSet the number of bits in an SVE vector register." msgstr "" -#: config/aarch64/aarch64.opt:308 +#: config/aarch64/aarch64.opt:313 #, no-c-format msgid "-mautovec-preference=[default|asimd-only|sve-only|prefer-asimd|prefer-sve] Force an ISA selection strategy for auto-vectorization. For best performance it is highly recommended to use -mcpu or -mtune instead. This parameter should only be used for code exploration." msgstr "" -#: config/aarch64/aarch64.opt:319 +#: config/aarch64/aarch64.opt:324 #, no-c-format msgid "Enables verbose cost model dumping in the debug dump files." msgstr "" -#: config/aarch64/aarch64.opt:323 +#: config/aarch64/aarch64.opt:328 #, no-c-format msgid "Generate code to track when the CPU might be speculating incorrectly." msgstr "" -#: config/aarch64/aarch64.opt:327 +#: config/aarch64/aarch64.opt:332 #, no-c-format msgid "Enable the copy of the AArch64 load/store pair fusion pass that runs before register allocation." msgstr "" -#: config/aarch64/aarch64.opt:332 +#: config/aarch64/aarch64.opt:337 #, no-c-format msgid "Enable the copy of the AArch64 load/store pair fusion pass that runs after register allocation." msgstr "" -#: config/aarch64/aarch64.opt:351 +#: config/aarch64/aarch64.opt:356 #, no-c-format msgid "Use the system register specified on the command line as the stack protector guard register. This option is for use with fstack-protector-strong and not for use in user-land code." msgstr "" -#: config/aarch64/aarch64.opt:357 +#: config/aarch64/aarch64.opt:362 #, no-c-format msgid "Use an immediate to offset from the stack protector guard register, sp_el0. This option is for use with fstack-protector-strong and not for use in user-land code." msgstr "" -#: config/aarch64/aarch64.opt:366 +#: config/aarch64/aarch64.opt:371 #, no-c-format msgid "Generate local calls to out-of-line atomic operations." msgstr "" -#: config/aarch64/aarch64.opt:370 +#: config/aarch64/aarch64.opt:375 #, no-c-format msgid "When vectorizing, consider using multiple different approaches and use the cost model to choose the cheapest one." msgstr "" -#: config/aarch64/aarch64.opt:375 +#: config/aarch64/aarch64.opt:380 #, no-c-format msgid "The number of Newton iterations for calculating the reciprocal for float type. The precision of division is proportional to this param when division approximation is enabled. The default value is 1." msgstr "" -#: config/aarch64/aarch64.opt:379 +#: config/aarch64/aarch64.opt:384 #, no-c-format msgid "The number of Newton iterations for calculating the reciprocal for double type. The precision of division is proportional to this param when division approximation is enabled. The default value is 2." msgstr "" -#: config/aarch64/aarch64.opt:383 +#: config/aarch64/aarch64.opt:388 #, no-c-format msgid "An old alias for -mautovec-preference. If both -mautovec-preference and --param=aarch64-autovec-preference are passed, the --param value will be used." msgstr "" -#: config/aarch64/aarch64.opt:409 +#: config/aarch64/aarch64.opt:414 #, no-c-format msgid "Constant memcpy size in bytes above which to start using MOPS sequence." msgstr "" -#: config/aarch64/aarch64.opt:413 +#: config/aarch64/aarch64.opt:418 #, no-c-format msgid "Constant memmove size in bytes above which to start using MOPS sequence." msgstr "" -#: config/aarch64/aarch64.opt:417 +#: config/aarch64/aarch64.opt:422 #, no-c-format msgid "Constant memset size in bytes from which to start using MOPS sequence." msgstr "" -#: config/aarch64/aarch64.opt:425 +#: config/aarch64/aarch64.opt:430 #, no-c-format msgid "--param=aarch64-ldp-policy=[default|always|never|aligned] Fine-grained policy for load pairs." msgstr "" -#: config/aarch64/aarch64.opt:429 +#: config/aarch64/aarch64.opt:434 #, no-c-format msgid "--param=aarch64-stp-policy=[default|always|never|aligned] Fine-grained policy for store pairs." msgstr "" -#: config/aarch64/aarch64.opt:448 +#: config/aarch64/aarch64.opt:453 #, no-c-format msgid "Limit on number of alias checks performed when attempting to form an ldp/stp." msgstr "" -#: config/aarch64/aarch64.opt:452 +#: config/aarch64/aarch64.opt:457 #, no-c-format msgid "Param to control which writeback opportunities we try to handle in the load/store pair fusion pass. A value of zero disables writeback handling. One means we try to form pairs involving one or more existing individual writeback accesses where possible. A value of two means we also try to opportunistically form writeback opportunities by folding in trailing destructive updates of the base register used by a pair." msgstr "" -#: config/aarch64/aarch64.opt:461 +#: config/aarch64/aarch64.opt:466 #, no-c-format msgid "Param to control the treshold in number of granules beyond which an explicit loop for tagging a memory block is emitted." msgstr "" -#: config/aarch64/aarch64.opt:466 +#: config/aarch64/aarch64.opt:471 #, no-c-format msgid "This option is deprecated." msgstr "" @@ -11452,7 +11457,7 @@ msgstr "" #: params.opt:1300 #, no-c-format -msgid "The scaling multiplier as a percentage to apply to all scalar loop costing when performing vectorization profitability analysis. The default value is 100." +msgid "Enable vectorization of loops that may not be profitable according to the cost model but still perform costing between vector modes." msgstr "" #: params.opt:1304 @@ -18405,82 +18410,82 @@ msgstr "" msgid "Conform to the latest 202Y D language edition (experimental)." msgstr "" -#: calls.cc:1467 +#: calls.cc:1463 msgid "a callee-copied argument is stored in the current function's frame" msgstr "" -#: calls.cc:1537 +#: calls.cc:1533 msgid "argument must be passed by copying" msgstr "" -#: calls.cc:2554 +#: calls.cc:2555 msgid "machine description does not have a sibcall_epilogue instruction pattern" msgstr "" -#: calls.cc:2566 +#: calls.cc:2567 msgid "callee returns a structure" msgstr "" -#: calls.cc:2574 +#: calls.cc:2575 msgid "target is not able to optimize the call into a sibling call" msgstr "" -#: calls.cc:2583 +#: calls.cc:2584 msgid "callee returns twice" msgstr "" -#: calls.cc:2588 +#: calls.cc:2589 msgid "callee does not return" msgstr "" -#: calls.cc:2595 +#: calls.cc:2596 #, fuzzy msgid "volatile function type" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар \"%s\"" -#: calls.cc:2614 +#: calls.cc:2615 #, fuzzy #| msgid "In function" msgid "nested function" msgstr "ĐŁ Ń„ŃƒĐœĐșцыі" -#: calls.cc:2625 +#: calls.cc:2626 msgid "callee required more stack slots than the caller" msgstr "" -#: calls.cc:2639 +#: calls.cc:2640 msgid "inconsistent number of popped arguments" msgstr "" -#: calls.cc:2646 +#: calls.cc:2647 #, fuzzy #| msgid "%s does not support %s" msgid "frontend does not support sibling call" msgstr "%s ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД %s" -#: calls.cc:2702 +#: calls.cc:2703 msgid "other reasons" msgstr "" -#: calls.cc:3076 +#: calls.cc:3077 msgid "inside another call" msgstr "" -#: calls.cc:3085 +#: calls.cc:3086 msgid "variable size arguments" msgstr "" -#: calls.cc:3109 +#: calls.cc:3110 msgid "hidden string length argument passed on stack" msgstr "" -#: calls.cc:3158 +#: calls.cc:3159 msgid "caller and callee disagree in promotion of function return value" msgstr "" #. Ideally we'd emit a message for all of the ways that it could #. have failed. -#: calls.cc:4085 +#: calls.cc:4086 msgid "tail call production failed" msgstr "" @@ -18601,12 +18606,12 @@ msgstr "" #. PRINT_OPERAND must handle them. #. We can't handle floating point constants; #. TARGET_PRINT_OPERAND must handle them. -#: final.cc:3760 config/arc/arc.cc:6323 config/i386/i386.cc:13346 +#: final.cc:3760 config/arc/arc.cc:6323 config/i386/i386.cc:13370 #, c-format msgid "floating constant misused" msgstr "" -#: final.cc:3818 config/arc/arc.cc:6420 config/i386/i386.cc:13440 +#: final.cc:3818 config/arc/arc.cc:6420 config/i386/i386.cc:13464 #: config/pdp11/pdp11.cc:1872 #, c-format msgid "invalid expression as operand" @@ -19898,11 +19903,11 @@ msgstr "" msgid "this is the insn:" msgstr "" -#: lra-constraints.cc:4197 +#: lra-constraints.cc:4198 msgid "unable to reload address in " msgstr "" -#: lra-constraints.cc:4522 reload.cc:3852 +#: lra-constraints.cc:4523 reload.cc:3852 msgid "unable to generate reloads for:" msgstr "" @@ -20128,7 +20133,7 @@ msgid "%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d msgstr "" #: tree-diagnostic.cc:103 tree-logical-location.cc:131 c/c-decl.cc:6614 -#: c/c-typeck.cc:9587 cp/error.cc:1379 c-family/c-pretty-print.cc:441 +#: c/c-typeck.cc:9595 cp/error.cc:1379 c-family/c-pretty-print.cc:441 #, gcc-internal-format msgid "" msgstr "" @@ -20542,20 +20547,20 @@ msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар \"%s\"" #: config/aarch64/aarch64.cc:13215 config/aarch64/aarch64.cc:13229 #: config/aarch64/aarch64.cc:13455 config/aarch64/aarch64.cc:13468 #: config/aarch64/aarch64.cc:13485 config/pru/pru.cc:1872 -#: config/pru/pru.cc:1883 config/pru/pru.cc:1965 config/riscv/riscv.cc:8092 -#: config/riscv/riscv.cc:8108 config/riscv/riscv.cc:8124 -#: config/riscv/riscv.cc:8140 config/riscv/riscv.cc:8173 -#: config/riscv/riscv.cc:8182 config/riscv/riscv.cc:8191 -#: config/riscv/riscv.cc:8201 +#: config/pru/pru.cc:1883 config/pru/pru.cc:1965 config/riscv/riscv.cc:8095 +#: config/riscv/riscv.cc:8111 config/riscv/riscv.cc:8127 +#: config/riscv/riscv.cc:8143 config/riscv/riscv.cc:8176 +#: config/riscv/riscv.cc:8185 config/riscv/riscv.cc:8194 +#: config/riscv/riscv.cc:8204 #, fuzzy, c-format msgid "invalid operand for '%%%c'" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар \"%s\"" #: config/aarch64/aarch64.cc:13140 config/aarch64/aarch64.cc:13151 #: config/aarch64/aarch64.cc:13315 config/aarch64/aarch64.cc:13326 -#: config/riscv/riscv.cc:7988 config/riscv/riscv.cc:7996 -#: config/riscv/riscv.cc:8003 config/riscv/riscv.cc:8007 -#: config/riscv/riscv.cc:8049 config/riscv/riscv.cc:8067 +#: config/riscv/riscv.cc:7991 config/riscv/riscv.cc:7999 +#: config/riscv/riscv.cc:8006 config/riscv/riscv.cc:8010 +#: config/riscv/riscv.cc:8052 config/riscv/riscv.cc:8070 #, fuzzy, c-format #| msgid "invalid string constant `%E'" msgid "invalid vector constant" @@ -20605,71 +20610,71 @@ msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар \"%s\"" msgid "invalid address mode" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ аЮрас" -#: config/aarch64/aarch64.cc:23806 +#: config/aarch64/aarch64.cc:23822 msgid "invalid conversion from type %" msgstr "" -#: config/aarch64/aarch64.cc:23808 +#: config/aarch64/aarch64.cc:23824 msgid "invalid conversion to type %" msgstr "" -#: config/aarch64/aarch64.cc:31118 +#: config/aarch64/aarch64.cc:31134 msgid "preincrement operation not permitted on svbool_t" msgstr "" -#: config/aarch64/aarch64.cc:31120 +#: config/aarch64/aarch64.cc:31136 msgid "predecrement operation not permitted on svbool_t" msgstr "" -#: config/aarch64/aarch64.cc:31122 +#: config/aarch64/aarch64.cc:31138 msgid "postincrement operation not permitted on svbool_t" msgstr "" -#: config/aarch64/aarch64.cc:31124 +#: config/aarch64/aarch64.cc:31140 msgid "postdecrement operation not permitted on svbool_t" msgstr "" -#: config/aarch64/aarch64.cc:31126 +#: config/aarch64/aarch64.cc:31142 msgid "negation operation not permitted on svbool_t" msgstr "" -#: config/aarch64/aarch64.cc:31128 +#: config/aarch64/aarch64.cc:31144 msgid "plus operation not permitted on svbool_t" msgstr "" -#: config/aarch64/aarch64.cc:31130 +#: config/aarch64/aarch64.cc:31146 msgid "minus operation not permitted on svbool_t" msgstr "" -#: config/aarch64/aarch64.cc:31132 +#: config/aarch64/aarch64.cc:31148 msgid "multiply operation not permitted on svbool_t" msgstr "" -#: config/aarch64/aarch64.cc:31134 +#: config/aarch64/aarch64.cc:31150 msgid "divide operation not permitted on svbool_t" msgstr "" -#: config/aarch64/aarch64.cc:31137 +#: config/aarch64/aarch64.cc:31153 msgid "shift operation not permitted on svbool_t" msgstr "" -#: config/aarch64/aarch64.cc:31142 +#: config/aarch64/aarch64.cc:31158 msgid "only == and != operations permitted on svbool_t" msgstr "" -#: config/aarch64/aarch64.cc:31144 +#: config/aarch64/aarch64.cc:31160 msgid "subscript operation not supported on svbool_t" msgstr "" -#: config/aarch64/aarch64.cc:31165 config/aarch64/aarch64.cc:31198 +#: config/aarch64/aarch64.cc:31181 config/aarch64/aarch64.cc:31214 msgid "operation not permitted on type %" msgstr "" -#: config/aarch64/aarch64.cc:31186 +#: config/aarch64/aarch64.cc:31202 msgid "cannot combine GNU and SVE vectors in a binary operation" msgstr "" -#: config/alpha/alpha.cc:5776 config/i386/i386.cc:14652 +#: config/alpha/alpha.cc:5776 config/i386/i386.cc:14676 #: config/rs6000/rs6000.cc:14685 config/sparc/sparc.cc:9386 #, c-format msgid "'%%&' used without any local dynamic TLS references" @@ -20686,13 +20691,13 @@ msgid "invalid %%r value" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%r" #: config/alpha/alpha.cc:5874 config/ia64/ia64.cc:5591 -#: config/rs6000/rs6000.cc:14380 config/xtensa/xtensa.cc:3011 +#: config/rs6000/rs6000.cc:14380 config/xtensa/xtensa.cc:3016 #, c-format msgid "invalid %%R value" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%R" #: config/alpha/alpha.cc:5880 config/rs6000/rs6000.cc:14300 -#: config/xtensa/xtensa.cc:2984 +#: config/xtensa/xtensa.cc:2989 #, c-format msgid "invalid %%N value" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%N" @@ -20707,7 +20712,7 @@ msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%P" msgid "invalid %%h value" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%h" -#: config/alpha/alpha.cc:5904 config/xtensa/xtensa.cc:3004 +#: config/alpha/alpha.cc:5904 config/xtensa/xtensa.cc:3009 #, c-format msgid "invalid %%L value" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%L" @@ -20722,7 +20727,7 @@ msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%m" msgid "invalid %%M value" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%M" -#: config/alpha/alpha.cc:5966 config/xtensa/xtensa.cc:3018 +#: config/alpha/alpha.cc:5966 config/xtensa/xtensa.cc:3023 #, c-format msgid "invalid %%U value" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%U" @@ -21069,7 +21074,7 @@ msgstr "ĐœĐ”ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČĐ°Đ”ĐŒĐ°Ń ĐČĐ”Ń€ŃŃ–Ń" #: cobol/dts.h:71 final.cc:3204 final.cc:3206 fold-const.cc:347 gcc.cc:6327 #: gcc.cc:6341 rtl-error.cc:101 toplev.cc:325 cobol/gcobolspec.cc:361 #: cobol/gcobolspec.cc:435 cobol/gcobolspec.cc:445 cobol/gcobolspec.cc:529 -#: cobol/genutil.cc:1182 cp/logic.cc:311 cp/logic.cc:313 cp/typeck.cc:8107 +#: cobol/genutil.cc:1179 cp/logic.cc:311 cp/logic.cc:313 cp/typeck.cc:8101 #: d/d-convert.cc:237 go/go-gcc-diagnostics.cc:28 go/go-gcc-diagnostics.cc:37 #: go/go-gcc-diagnostics.cc:45 go/go-gcc-diagnostics.cc:53 #: lto/lto-object.cc:178 lto/lto-object.cc:275 lto/lto-object.cc:332 @@ -21317,130 +21322,130 @@ msgstr "`%E' - ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Ń ĐœŃĐ·ŃŒĐŒĐ”ĐœĐœĐ°Ń тыпу string" msgid "Expected register or constant integer." msgstr "" -#: config/i386/i386.cc:13434 +#: config/i386/i386.cc:13458 #, c-format msgid "invalid UNSPEC as operand" msgstr "" -#: config/i386/i386.cc:13977 +#: config/i386/i386.cc:14001 #, fuzzy, c-format #| msgid "invalid use of `restrict'" msgid "invalid use of register '%s'" msgstr "ĐœŃĐČĐ”Ń€ĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” \"restict\"" -#: config/i386/i386.cc:13982 +#: config/i386/i386.cc:14006 #, fuzzy, c-format #| msgid "invalid use of `restrict'" msgid "invalid use of asm flag output" msgstr "ĐœŃĐČĐ”Ń€ĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” \"restict\"" -#: config/i386/i386.cc:14217 +#: config/i386/i386.cc:14241 #, fuzzy, c-format msgid "invalid operand size for operand code 'O'" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: config/i386/i386.cc:14252 +#: config/i386/i386.cc:14276 #, fuzzy, c-format msgid "invalid operand size for operand code 'z'" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: config/i386/i386.cc:14327 +#: config/i386/i386.cc:14351 #, fuzzy, c-format msgid "invalid operand type used with operand code '%c'" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар \"%s\"" -#: config/i386/i386.cc:14332 +#: config/i386/i386.cc:14356 #, fuzzy, c-format msgid "invalid operand size for operand code '%c'" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар \"%s\"" -#: config/i386/i386.cc:14410 +#: config/i386/i386.cc:14434 #, c-format msgid "operand is not a condition code, invalid operand code 'Y'" msgstr "" -#: config/i386/i386.cc:14489 +#: config/i386/i386.cc:14513 #, c-format msgid "operand is not a condition code, invalid operand code 'D'" msgstr "" -#: config/i386/i386.cc:14507 +#: config/i386/i386.cc:14531 #, c-format msgid "operand is not a condition code, invalid operand code '%c'" msgstr "" -#: config/i386/i386.cc:14528 +#: config/i386/i386.cc:14552 #, c-format msgid "operand is not an offsettable memory reference, invalid operand code 'H'" msgstr "" -#: config/i386/i386.cc:14543 +#: config/i386/i386.cc:14567 #, c-format msgid "operand is not an integer, invalid operand code 'K'" msgstr "" -#: config/i386/i386.cc:14571 +#: config/i386/i386.cc:14595 #, c-format msgid "operand is not a specific integer, invalid operand code 'r'" msgstr "" -#: config/i386/i386.cc:14589 +#: config/i386/i386.cc:14613 #, c-format msgid "operand is not an integer, invalid operand code 'R'" msgstr "" -#: config/i386/i386.cc:14612 +#: config/i386/i386.cc:14636 #, c-format msgid "operand is not a specific integer, invalid operand code 'R'" msgstr "" -#: config/i386/i386.cc:14639 +#: config/i386/i386.cc:14663 #, c-format msgid "operand is not a memory reference, invalid operand code 'v'" msgstr "" -#: config/i386/i386.cc:14727 +#: config/i386/i386.cc:14751 #, fuzzy, c-format msgid "invalid operand code '%c'" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар \"%s\"" -#: config/i386/i386.cc:14789 config/i386/i386.cc:15178 +#: config/i386/i386.cc:14813 config/i386/i386.cc:15202 #, fuzzy, c-format #| msgid "invalid %%c operand" msgid "invalid constraints for operand" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%c Đ°ĐżĐ”Ń€Đ°ĐœĐŽ" -#: config/i386/i386.cc:14890 +#: config/i386/i386.cc:14914 #, fuzzy, c-format msgid "invalid vector immediate" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: config/i386/i386.cc:18068 +#: config/i386/i386.cc:18092 #, fuzzy msgid "unknown insn mode" msgstr "ĐœĐ”ĐČŃĐŽĐŸĐŒŃ‹ Ń€ŃĐ¶Ń‹ĐŒ ĐŒĐ°ŃˆŃ‹ĐœŃ‹ \"%s\"" -#: config/i386/i386.cc:24802 +#: config/i386/i386.cc:24925 msgid "invalid conversion from type %<__bf16%> without option %<-msse2%>" msgstr "" -#: config/i386/i386.cc:24805 +#: config/i386/i386.cc:24928 msgid "invalid conversion from type %<_Float16%> without option %<-msse2%>" msgstr "" -#: config/i386/i386.cc:24808 +#: config/i386/i386.cc:24931 msgid "invalid conversion to type %<__bf16%> without option %<-msse2%>" msgstr "" -#: config/i386/i386.cc:24811 +#: config/i386/i386.cc:24934 msgid "invalid conversion to type %<_Float16%> without option %<-msse2%>" msgstr "" -#: config/i386/i386.cc:24849 config/i386/i386.cc:24874 +#: config/i386/i386.cc:24972 config/i386/i386.cc:24997 msgid "operation not permitted on type %<__bf16%> without option %<-msse2%>" msgstr "" -#: config/i386/i386.cc:24852 config/i386/i386.cc:24878 +#: config/i386/i386.cc:24975 config/i386/i386.cc:25001 msgid "operation not permitted on type %<_Float16%> without option %<-msse2%>" msgstr "" @@ -21526,9 +21531,9 @@ msgstr "\"%s\" - гэта ĐœĐ” пачатаĐș ЮэĐșларацыі" #: config/mips/mips.cc:9557 config/mips/mips.cc:9569 config/mips/mips.cc:9572 #: config/mips/mips.cc:9632 config/mips/mips.cc:9639 config/mips/mips.cc:9660 #: config/mips/mips.cc:9675 config/mips/mips.cc:9694 config/mips/mips.cc:9703 -#: config/riscv/riscv.cc:7789 config/riscv/riscv.cc:8258 -#: config/riscv/riscv.cc:8264 config/riscv/riscv.cc:8280 -#: config/riscv/riscv.cc:8291 +#: config/riscv/riscv.cc:7792 config/riscv/riscv.cc:8261 +#: config/riscv/riscv.cc:8267 config/riscv/riscv.cc:8283 +#: config/riscv/riscv.cc:8294 #, fuzzy, c-format #| msgid "invalid use of `%D'" msgid "invalid use of '%%%c'" @@ -21598,7 +21603,7 @@ msgid "insn contains an invalid address !" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ аЮрас" #: config/microblaze/microblaze.cc:2439 config/microblaze/microblaze.cc:2669 -#: config/xtensa/xtensa.cc:3121 +#: config/xtensa/xtensa.cc:3126 msgid "invalid address" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ аЮрас" @@ -21674,7 +21679,7 @@ msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар %s" msgid "invalid %%H value" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%H" -#: config/or1k/or1k.cc:1271 config/xtensa/xtensa.cc:3039 +#: config/or1k/or1k.cc:1271 config/xtensa/xtensa.cc:3044 #, fuzzy, c-format #| msgid "invalid %%Q value" msgid "invalid %%d value" @@ -21732,34 +21737,34 @@ msgstr "ĐœĐ”Ń€Đ°ŃĐżĐ°Đ·ĐœĐ°ĐœŃ‹ аЮрас" msgid "unsupported memory expression:" msgstr "ĐœĐ”ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČĐ°Đ”ĐŒĐ°Ń ĐČĐ”Ń€ŃŃ–Ń" -#: config/riscv/riscv.cc:7969 +#: config/riscv/riscv.cc:7972 #, fuzzy, c-format #| msgid "invalid %%c operand" msgid "invalid vector operand" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%c Đ°ĐżĐ”Ń€Đ°ĐœĐŽ" -#: config/riscv/riscv.cc:8214 +#: config/riscv/riscv.cc:8217 #, c-format msgid "modifier 'N' require register operand" msgstr "" -#: config/riscv/riscv.cc:8227 +#: config/riscv/riscv.cc:8230 #, fuzzy, c-format #| msgid "invalid register name for `%s'" msgid "invalid register number for 'N' modifier" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Ń ĐœĐ°Đ·ĐČа рэгістра `%s'" -#: config/riscv/riscv.cc:8236 +#: config/riscv/riscv.cc:8239 #, c-format msgid "modifier 'H' require register operand" msgstr "" -#: config/riscv/riscv.cc:8241 +#: config/riscv/riscv.cc:8244 #, c-format msgid "modifier 'H' is for integer registers only" msgstr "" -#: config/riscv/riscv.cc:8246 +#: config/riscv/riscv.cc:8249 #, c-format msgid "modifier 'H' cannot be applied to R31" msgstr "" @@ -21819,7 +21824,7 @@ msgstr "" msgid "invalid %%A value" msgstr "ĐŽŃ€ŃĐœĐœĐ°Đ” %%Q Đ·ĐœĐ°Ń‡ŃĐœĐœĐ”" -#: config/rs6000/rs6000.cc:14137 config/xtensa/xtensa.cc:2950 +#: config/rs6000/rs6000.cc:14137 config/xtensa/xtensa.cc:2955 #, fuzzy, c-format msgid "invalid %%D value" msgstr "ĐŽŃ€ŃĐœĐœĐ°Đ” %%Q Đ·ĐœĐ°Ń‡ŃĐœĐœĐ”" @@ -21860,7 +21865,7 @@ msgstr "" msgid "invalid %%k value" msgstr "" -#: config/rs6000/rs6000.cc:14261 config/xtensa/xtensa.cc:2997 +#: config/rs6000/rs6000.cc:14261 config/xtensa/xtensa.cc:3002 #, c-format msgid "invalid %%K value" msgstr "" @@ -21891,17 +21896,17 @@ msgstr "" msgid "invalid %%u value" msgstr "" -#: config/rs6000/rs6000.cc:14440 config/xtensa/xtensa.cc:2972 +#: config/rs6000/rs6000.cc:14440 config/xtensa/xtensa.cc:2977 #, c-format msgid "invalid %%v value" msgstr "" -#: config/rs6000/rs6000.cc:14490 config/xtensa/xtensa.cc:3025 +#: config/rs6000/rs6000.cc:14490 config/xtensa/xtensa.cc:3030 #, c-format msgid "invalid %%V value" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%V" -#: config/rs6000/rs6000.cc:14506 config/xtensa/xtensa.cc:3032 +#: config/rs6000/rs6000.cc:14506 config/xtensa/xtensa.cc:3037 #, fuzzy, c-format #| msgid "invalid %%x/X value" msgid "invalid %%x value" @@ -22116,27 +22121,27 @@ msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" msgid "floating-point constant not a valid immediate operand" msgstr "" -#: config/stormy16/stormy16.cc:1894 config/stormy16/stormy16.cc:1965 +#: config/stormy16/stormy16.cc:1895 config/stormy16/stormy16.cc:1966 #, fuzzy, c-format msgid "'B' operand is not constant" msgstr "тып ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ° \"%s\" ĐœĐ” аб'ŃŃžĐ»Đ”ĐœŃ‹" -#: config/stormy16/stormy16.cc:1921 +#: config/stormy16/stormy16.cc:1922 #, c-format msgid "'B' operand has multiple bits set" msgstr "" -#: config/stormy16/stormy16.cc:1947 +#: config/stormy16/stormy16.cc:1948 #, fuzzy, c-format msgid "'o' operand is not constant" msgstr "тып ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ° \"%s\" ĐœĐ” аб'ŃŃžĐ»Đ”ĐœŃ‹" -#: config/stormy16/stormy16.cc:1979 +#: config/stormy16/stormy16.cc:1980 #, fuzzy, c-format msgid "'h' operand is not SImode register" msgstr "ĐĐ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚ĐŸŃžĐČаць рэгістра sb" -#: config/stormy16/stormy16.cc:1987 +#: config/stormy16/stormy16.cc:1988 #, c-format msgid "xstormy16_print_operand: unknown code" msgstr "" @@ -22194,26 +22199,26 @@ msgstr "" msgid "Unable to load DLL." msgstr "" -#: config/xtensa/xtensa.cc:845 config/xtensa/xtensa.cc:879 +#: config/xtensa/xtensa.cc:840 config/xtensa/xtensa.cc:874 msgid "bad test" msgstr "" -#: config/xtensa/xtensa.cc:2992 +#: config/xtensa/xtensa.cc:2997 msgid "invalid mask" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Ń ĐŒĐ°ŃĐșа" -#: config/xtensa/xtensa.cc:3058 config/xtensa/xtensa.cc:3068 +#: config/xtensa/xtensa.cc:3063 config/xtensa/xtensa.cc:3073 #, fuzzy, c-format #| msgid "invalid %%x/X value" msgid "invalid %%t/%%b value" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%x/X" -#: config/xtensa/xtensa.cc:3146 +#: config/xtensa/xtensa.cc:3151 #, fuzzy msgid "no register in address" msgstr "ĐœĐ”ĐČŃĐŽĐŸĐŒĐ°Ń ĐœĐ°Đ·ĐČа рэгістра: %s" -#: config/xtensa/xtensa.cc:3154 +#: config/xtensa/xtensa.cc:3159 msgid "address offset not a constant" msgstr "" @@ -22245,7 +22250,7 @@ msgstr "" msgid "aka" msgstr "" -#: c/c-objc-common.cc:395 c/c-typeck.cc:8295 +#: c/c-objc-common.cc:395 c/c-typeck.cc:8303 msgid "({anonymous})" msgstr "" @@ -22270,8 +22275,8 @@ msgstr "" #: c/gimple-parser.cc:2427 c/gimple-parser.cc:2464 c/gimple-parser.cc:2543 #: c/gimple-parser.cc:2570 c/c-parser.cc:4329 c/c-parser.cc:4520 #: c/c-parser.cc:4555 c/c-parser.cc:14968 c/gimple-parser.cc:2234 -#: c/gimple-parser.cc:2246 cp/parser.cc:18008 cp/parser.cc:37077 -#: cp/parser.cc:37716 +#: c/gimple-parser.cc:2246 cp/parser.cc:18046 cp/parser.cc:37137 +#: cp/parser.cc:37776 #, gcc-internal-format msgid "expected %<;%>" msgstr "" @@ -22299,7 +22304,7 @@ msgstr "" #: c/gimple-parser.cc:1711 c/gimple-parser.cc:1737 c/gimple-parser.cc:1944 #: c/gimple-parser.cc:2156 c/gimple-parser.cc:2176 c/gimple-parser.cc:2337 #: c/gimple-parser.cc:2500 c/c-parser.cc:3430 c/c-parser.cc:9605 -#: c/c-parser.cc:21763 cp/parser.cc:37764 cp/parser.cc:46127 +#: c/c-parser.cc:21763 cp/parser.cc:37824 cp/parser.cc:46187 #, gcc-internal-format msgid "expected %<)%>" msgstr "" @@ -22307,7 +22312,7 @@ msgstr "" #: c/c-parser.cc:5217 c/c-parser.cc:5971 c/c-parser.cc:6328 c/c-parser.cc:6346 #: c/c-parser.cc:6347 c/c-parser.cc:6856 c/c-parser.cc:6900 c/c-parser.cc:9704 #: c/c-parser.cc:12163 c/c-parser.cc:13626 c/c-parser.cc:13999 -#: c/c-parser.cc:17056 c/gimple-parser.cc:1920 cp/parser.cc:37728 +#: c/c-parser.cc:17056 c/gimple-parser.cc:1920 cp/parser.cc:37788 #, gcc-internal-format msgid "expected %<]%>" msgstr "" @@ -22327,13 +22332,13 @@ msgstr "" #: c/gimple-parser.cc:1545 c/gimple-parser.cc:1677 c/gimple-parser.cc:1695 #: c/gimple-parser.cc:1730 c/gimple-parser.cc:2125 c/gimple-parser.cc:2136 #: c/gimple-parser.cc:2142 c/gimple-parser.cc:2325 c/gimple-parser.cc:2497 -#: c/c-parser.cc:11068 c/c-parser.cc:17498 cp/parser.cc:37719 +#: c/c-parser.cc:11068 c/c-parser.cc:17498 cp/parser.cc:37779 #, gcc-internal-format msgid "expected %<(%>" msgstr "" -#: c/c-parser.cc:6324 c/c-parser.cc:6326 c/c-parser.cc:16961 cp/parser.cc:37731 -#: cp/parser.cc:41634 go/gofrontend/embed.cc:440 +#: c/c-parser.cc:6324 c/c-parser.cc:6326 c/c-parser.cc:16961 cp/parser.cc:37791 +#: cp/parser.cc:41694 go/gofrontend/embed.cc:440 #, gcc-internal-format msgid "expected %<[%>" msgstr "" @@ -22342,7 +22347,7 @@ msgstr "" #: c/c-parser.cc:24043 c/c-parser.cc:24129 c/c-parser.cc:24890 #: c/c-parser.cc:26036 c/c-parser.cc:31332 c/gimple-parser.cc:452 #: c/gimple-parser.cc:2503 c/c-parser.cc:4316 c/c-parser.cc:4544 -#: c/c-parser.cc:14863 cp/parser.cc:23905 cp/parser.cc:37725 +#: c/c-parser.cc:14863 cp/parser.cc:23969 cp/parser.cc:37785 #: go/gofrontend/embed.cc:371 #, gcc-internal-format msgid "expected %<{%>" @@ -22359,13 +22364,13 @@ msgstr "" #: c/c-parser.cc:29382 c/c-parser.cc:30618 c/gimple-parser.cc:635 #: c/gimple-parser.cc:950 c/gimple-parser.cc:1632 c/gimple-parser.cc:2551 #: c/gimple-parser.cc:2578 c/c-parser.cc:9612 c/c-parser.cc:17642 -#: c/c-parser.cc:19056 cp/parser.cc:37758 cp/parser.cc:39474 cp/parser.cc:42574 -#: cp/parser.cc:43478 go/gofrontend/embed.cc:404 +#: c/c-parser.cc:19056 cp/parser.cc:37818 cp/parser.cc:39534 cp/parser.cc:42634 +#: cp/parser.cc:43538 go/gofrontend/embed.cc:404 #, gcc-internal-format msgid "expected %<:%>" msgstr "" -#: c/c-parser.cc:9106 cp/parser.cc:37645 +#: c/c-parser.cc:9106 cp/parser.cc:37705 #, gcc-internal-format msgid "expected %" msgstr "" @@ -22375,7 +22380,7 @@ msgstr "" #: c/c-parser.cc:13043 c/c-parser.cc:18563 c/c-parser.cc:20443 #: c/gimple-parser.cc:1132 c/gimple-parser.cc:1158 c/gimple-parser.cc:1286 #: c/gimple-parser.cc:1289 c/gimple-parser.cc:1699 c/gimple-parser.cc:1705 -#: cp/parser.cc:37075 cp/parser.cc:37734 +#: cp/parser.cc:37135 cp/parser.cc:37794 #, gcc-internal-format msgid "expected %<,%>" msgstr "" @@ -22385,18 +22390,18 @@ msgid "expected %<.%>" msgstr "" #: c/c-parser.cc:14534 c/c-parser.cc:14566 c/c-parser.cc:14806 -#: cp/parser.cc:40048 cp/parser.cc:40069 +#: cp/parser.cc:40108 cp/parser.cc:40129 #, gcc-internal-format msgid "expected %<@end%>" msgstr "" -#: c/c-parser.cc:15224 c/gimple-parser.cc:1457 cp/parser.cc:37743 +#: c/c-parser.cc:15224 c/gimple-parser.cc:1457 cp/parser.cc:37803 #, gcc-internal-format msgid "expected %<>%>" msgstr "" #: c/c-parser.cc:19146 c/c-parser.cc:21117 c/c-parser.cc:21634 -#: cp/parser.cc:37767 cp/parser.cc:45978 +#: cp/parser.cc:37827 cp/parser.cc:46038 #, gcc-internal-format msgid "expected %<,%> or %<)%>" msgstr "" @@ -22406,45 +22411,45 @@ msgstr "" #: c/c-parser.cc:24140 c/c-parser.cc:24487 c/c-parser.cc:25199 #: c/c-parser.cc:26412 c/c-parser.cc:27936 c/c-parser.cc:29524 #: c/gimple-parser.cc:805 c/c-parser.cc:6923 c/c-parser.cc:24060 -#: c/c-parser.cc:24283 cp/parser.cc:37746 cp/parser.cc:47688 cp/parser.cc:47861 +#: c/c-parser.cc:24283 cp/parser.cc:37806 cp/parser.cc:47748 cp/parser.cc:47921 #, gcc-internal-format msgid "expected %<=%>" msgstr "" #: c/c-parser.cc:21784 c/c-parser.cc:28218 c/c-parser.cc:28239 #: c/c-parser.cc:17096 c/c-parser.cc:17108 c/c-parser.cc:21764 -#: cp/parser.cc:46128 cp/parser.cc:46155 cp/parser.cc:53806 cp/parser.cc:53817 +#: cp/parser.cc:46188 cp/parser.cc:46215 cp/parser.cc:53866 cp/parser.cc:53877 #, gcc-internal-format msgid "expected %<)%> or %<,%>" msgstr "" #: c/c-parser.cc:24071 c/c-parser.cc:24151 c/c-parser.cc:24504 #: c/c-parser.cc:24959 c/gimple-parser.cc:1753 c/gimple-parser.cc:1785 -#: c/gimple-parser.cc:1795 c/gimple-parser.cc:2588 cp/parser.cc:37722 -#: cp/parser.cc:40258 +#: c/gimple-parser.cc:1795 c/gimple-parser.cc:2588 cp/parser.cc:37782 +#: cp/parser.cc:40318 #, gcc-internal-format msgid "expected %<}%>" msgstr "" -#: c/c-parser.cc:24164 cp/parser.cc:47786 +#: c/c-parser.cc:24164 cp/parser.cc:47846 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:26083 c/c-parser.cc:26072 cp/parser.cc:50747 +#: c/c-parser.cc:26083 c/c-parser.cc:26072 cp/parser.cc:50807 #, gcc-internal-format msgid "expected %<#pragma omp section%> or %<}%>" msgstr "" -#: c/c-parser.cc:30216 cp/parser.cc:56058 +#: c/c-parser.cc:30216 cp/parser.cc:56118 msgid "" msgstr "" -#: c/c-typeck.cc:10458 +#: c/c-typeck.cc:10466 msgid "(anonymous)" msgstr "" -#: c/gimple-parser.cc:1446 cp/parser.cc:21168 cp/parser.cc:37740 +#: c/gimple-parser.cc:1446 cp/parser.cc:21232 cp/parser.cc:37800 #, gcc-internal-format msgid "expected %<<%>" msgstr "" @@ -22469,7 +22474,7 @@ msgstr "" msgid " after user-defined conversion:" msgstr "" -#: cp/call.cc:8800 cp/pt.cc:27736 +#: cp/call.cc:8800 cp/pt.cc:27894 msgid "candidate is:" msgid_plural "candidates are:" msgstr[0] "" @@ -22578,7 +22583,7 @@ msgstr "ĐœĐ”ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ”ĐŒŃ‹ ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€ \"%s\"" msgid "" msgstr "" -#: cp/error.cc:2472 cp/error.cc:3636 c-family/c-pretty-print.cc:2688 +#: cp/error.cc:2472 cp/error.cc:3643 c-family/c-pretty-print.cc:2688 #, gcc-internal-format msgid "" msgstr "" @@ -22605,276 +22610,314 @@ msgstr "" msgid "*this" msgstr "" -#: cp/error.cc:3360 +#: cp/error.cc:3367 #, fuzzy #| msgid "parse error" msgid "" msgstr "ĐłŃ€Đ°ĐŒĐ°Ń‚Ń‹Ń‡ĐœĐ°Ń ĐżĐ°ĐŒŃ‹Đ»Đșа" -#: cp/error.cc:3375 +#: cp/error.cc:3382 msgid "" msgstr "" -#: cp/error.cc:3865 +#: cp/error.cc:3872 msgid "At global scope:" msgstr "" -#: cp/reflect.cc:565 -msgid "array element not a constant integer" +#: cp/reflect.cc:408 +msgid "reflect_constant_array failed" msgstr "" -#: cp/reflect.cc:573 cp/reflect.cc:3906 +#: cp/reflect.cc:424 cp/reflect.cc:659 cp/reflect.cc:4039 msgid "reflect_constant failed" msgstr "" -#: cp/reflect.cc:1031 +#: cp/reflect.cc:641 +msgid "array element not a constant integer" +msgstr "" + +#: cp/reflect.cc:1117 #, fuzzy #| msgid "function does not return string type" msgid "reflection does not represent a type" msgstr "Ń„ŃƒĐœĐșцыя ĐœĐ” ĐČŃŃ€Ń‚Đ°Đ” тып string" -#: cp/reflect.cc:1043 +#: cp/reflect.cc:1129 msgid "reflection does not have template arguments" msgstr "" -#: cp/reflect.cc:1054 +#: cp/reflect.cc:1140 #, fuzzy #| msgid "function does not return string type" msgid "reflection does not represent a function or function type" msgstr "Ń„ŃƒĐœĐșцыя ĐœĐ” ĐČŃŃ€Ń‚Đ°Đ” тып string" -#: cp/reflect.cc:2355 +#: cp/reflect.cc:2441 msgid "reflection does not represent an operator function or operator function template" msgstr "" -#: cp/reflect.cc:2405 +#: cp/reflect.cc:2491 #, fuzzy msgid "operators argument is not a valid operator" msgstr "ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€ \"%s\" Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°ĐČĐ°ĐœŃ‹" -#: cp/reflect.cc:2536 +#: cp/reflect.cc:2622 cp/reflect.cc:6057 #, fuzzy #| msgid "function does not return string type" msgid "reflection does not have a type" msgstr "Ń„ŃƒĐœĐșцыя ĐœĐ” ĐČŃŃ€Ń‚Đ°Đ” тып string" -#: cp/reflect.cc:2652 +#: cp/reflect.cc:2738 msgid "reflection does not represent an object with static storage duration, or a reference to such an object" msgstr "" -#: cp/reflect.cc:2733 +#: cp/reflect.cc:2821 msgid "reflection does not represent an annotation or a valid argument to a splice-expression" msgstr "" -#: cp/reflect.cc:2953 +#: cp/reflect.cc:3041 #, fuzzy #| msgid "function does not return string type" msgid "reflection does not represent an entity with parent" msgstr "Ń„ŃƒĐœĐșцыя ĐœĐ” ĐČŃŃ€Ń‚Đ°Đ” тып string" -#: cp/reflect.cc:3076 +#: cp/reflect.cc:3164 msgid "reflection does not represent parameter of current function" msgstr "" -#: cp/reflect.cc:3097 +#: cp/reflect.cc:3185 msgid "reflection does not represent a function or function type with a return type" msgstr "" -#: cp/reflect.cc:3128 +#: cp/reflect.cc:3216 msgid "reflection of virtual direct base relationship with abstract derived class" msgstr "" -#: cp/reflect.cc:3134 +#: cp/reflect.cc:3222 msgid "reflection unsuitable for offset_of" msgstr "" -#: cp/reflect.cc:3139 +#: cp/reflect.cc:3227 msgid "non-constant offset for offset_of" msgstr "" -#: cp/reflect.cc:3203 +#: cp/reflect.cc:3291 msgid "reflection not suitable for size_of" msgstr "" -#: cp/reflect.cc:3222 +#: cp/reflect.cc:3310 msgid "reflection with incomplete type in size_of" msgstr "" -#: cp/reflect.cc:3258 +#: cp/reflect.cc:3347 msgid "reflection not suitable for alignment_of" msgstr "" -#: cp/reflect.cc:3294 +#: cp/reflect.cc:3383 #, fuzzy msgid "alignment_of on function type" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар \"%s\"" -#: cp/reflect.cc:3303 +#: cp/reflect.cc:3392 msgid "reflection with incomplete type in alignment_of" msgstr "" -#: cp/reflect.cc:3338 +#: cp/reflect.cc:3427 msgid "reflection not suitable for bit_size_of" msgstr "" -#: cp/reflect.cc:3362 +#: cp/reflect.cc:3451 msgid "reflection with incomplete type in bit_size_of" msgstr "" -#: cp/reflect.cc:3538 +#: cp/reflect.cc:3627 msgid "reflection with has_identifier false" msgstr "" -#: cp/reflect.cc:3578 cp/reflect.cc:3668 +#: cp/reflect.cc:3667 msgid "identifier_of not representable in ordinary literal encoding" msgstr "" -#: cp/reflect.cc:3582 cp/reflect.cc:3672 +#: cp/reflect.cc:3671 msgid "u8identifier_of not representable in UTF-8" msgstr "" -#: cp/reflect.cc:3805 -msgid "reflection does not represent a type, type alias, variable, function, namespace, enumerator, direct base class relationship, or non-static data member" +#: cp/reflect.cc:3777 +msgid "display_string_of not representable in ordinary literal encoding" +msgstr "" + +#: cp/reflect.cc:3782 +msgid "u8display_string_of not representable in UTF-8" msgstr "" -#: cp/reflect.cc:3817 +#: cp/reflect.cc:3922 +msgid "reflection does not represent a type, type alias, variable, function, function parameter, namespace, enumerator, direct base class relationship, or non-static data member" +msgstr "" + +#: cp/reflect.cc:3935 msgid "reflection does not represent a complete type or type alias" msgstr "" -#: cp/reflect.cc:3930 +#: cp/reflect.cc:4063 msgid "reflect_object failed" msgstr "" -#: cp/reflect.cc:3957 +#: cp/reflect.cc:4090 msgid "reflect_function failed" msgstr "" -#: cp/reflect.cc:4840 +#: cp/reflect.cc:4970 msgid "value member missing" msgstr "" -#: cp/reflect.cc:4851 cp/reflect.cc:4860 +#: cp/reflect.cc:4981 cp/reflect.cc:4990 msgid "unexpected value of value member" msgstr "" -#: cp/reflect.cc:4967 +#: cp/reflect.cc:5097 msgid "type member missing" msgstr "" -#: cp/reflect.cc:4991 +#: cp/reflect.cc:5121 #, fuzzy #| msgid "function does not return string type" msgid "reflection does not represent a complete enumeration type" msgstr "Ń„ŃƒĐœĐșцыя ĐœĐ” ĐČŃŃ€Ń‚Đ°Đ” тып string" -#: cp/reflect.cc:5048 +#: cp/reflect.cc:5178 #, fuzzy #| msgid "function does not return string type" msgid "reflection does not represent an enumerable enumeration type" msgstr "Ń„ŃƒĐœĐșцыя ĐœĐ” ĐČŃŃ€Ń‚Đ°Đ” тып string" -#: cp/reflect.cc:5204 +#: cp/reflect.cc:5334 msgid "reflection represents non-integral or bool type" msgstr "" -#: cp/reflect.cc:5343 +#: cp/reflect.cc:5473 #, fuzzy #| msgid "function does not return string type" msgid "reflection does not represent a template" msgstr "Ń„ŃƒĐœĐșцыя ĐœĐ” ĐČŃŃ€Ń‚Đ°Đ” тып string" -#: cp/reflect.cc:5366 +#: cp/reflect.cc:5496 #, fuzzy msgid "invalid argument to can_substitute" msgstr "ĐœŃĐČĐ”Ń€ĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” \"restict\"" -#: cp/reflect.cc:5428 +#: cp/reflect.cc:5558 msgid "can_substitute returned false" msgstr "" -#: cp/reflect.cc:5559 +#: cp/reflect.cc:5694 msgid "type is not object or reference type" msgstr "" -#: cp/reflect.cc:5804 +#: cp/reflect.cc:5961 msgid "conversion from ordinary literal encoding to source charset failed" msgstr "" -#: cp/reflect.cc:5810 +#: cp/reflect.cc:5967 msgid "conversion from UTF-8 encoding to source charset failed" msgstr "" -#: cp/reflect.cc:5818 +#: cp/reflect.cc:5975 #, fuzzy msgid "name is not a valid identifier" msgstr "\"%s\" - гэта ĐœĐ” пачатаĐș ЮэĐșларацыі" -#: cp/reflect.cc:5824 +#: cp/reflect.cc:5981 msgid "name is a keyword" msgstr "" -#: cp/reflect.cc:5827 +#: cp/reflect.cc:5984 msgid "name is a built-in trait" msgstr "" -#: cp/reflect.cc:5836 +#: cp/reflect.cc:5993 msgid "neither name nor bit_width specified" msgstr "" -#: cp/reflect.cc:5842 +#: cp/reflect.cc:5997 +msgid "no name and non-empty annotations specified" +msgstr "" + +#: cp/reflect.cc:6003 #, fuzzy msgid "bit_width specified with non-integral and non-enumeration type" msgstr "бітаĐČаД ĐżĐŸĐ»Đ” \"%s\" ĐŒĐ°Đ” ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ тып" -#: cp/reflect.cc:5847 +#: cp/reflect.cc:6008 msgid "both alignment and bit_width specified" msgstr "" -#: cp/reflect.cc:5851 +#: cp/reflect.cc:6012 msgid "bit_width specified with no_unique_address true" msgstr "" -#: cp/reflect.cc:5856 +#: cp/reflect.cc:6017 msgid "bit_width 0 with specified name" msgstr "" -#: cp/reflect.cc:5859 +#: cp/reflect.cc:6020 msgid "bit_width is negative" msgstr "" -#: cp/reflect.cc:5866 +#: cp/reflect.cc:6026 +msgid "name unspecified and type is const" +msgstr "" + +#: cp/reflect.cc:6030 +msgid "name unspecified and type is volatile" +msgstr "" + +#: cp/reflect.cc:6038 msgid "alignment is not power of two" msgstr "" -#: cp/reflect.cc:5869 +#: cp/reflect.cc:6041 #, fuzzy #| msgid "size of array is negative" msgid "alignment is negative" msgstr "Đ°ĐŽĐŒĐŸŃžĐœŃ‹ ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа " -#: cp/reflect.cc:5876 +#: cp/reflect.cc:6048 msgid "alignment is smaller than alignment_of" msgstr "" -#: cp/reflect.cc:6413 +#: cp/reflect.cc:6062 +#, fuzzy +#| msgid "function does not return string type" +msgid "reflection does not have non-array object type" +msgstr "Ń„ŃƒĐœĐșцыя ĐœĐ” ĐČŃŃ€Ń‚Đ°Đ” тып string" + +#: cp/reflect.cc:6506 +msgid "current scope does not represent a function" +msgstr "" + +#: cp/reflect.cc:6526 +msgid "current scope does not represent a class nor a member function" +msgstr "" + +#: cp/reflect.cc:6685 msgid "incomplete parent class" msgstr "" -#: cp/reflect.cc:6859 +#: cp/reflect.cc:7149 msgid "neither complete class type nor namespace" msgstr "" -#: cp/reflect.cc:6889 cp/reflect.cc:6917 cp/reflect.cc:6946 cp/reflect.cc:6984 -#: cp/reflect.cc:7022 cp/reflect.cc:7053 +#: cp/reflect.cc:7179 cp/reflect.cc:7207 cp/reflect.cc:7236 cp/reflect.cc:7274 +#: cp/reflect.cc:7312 cp/reflect.cc:7343 #, fuzzy msgid "not a complete class type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/reflect.cc:7012 +#: cp/reflect.cc:7302 msgid "closure type" msgstr "" -#: cp/reflect.cc:7188 cp/reflect.cc:7247 cp/reflect.cc:7321 +#: cp/reflect.cc:7478 cp/reflect.cc:7537 cp/reflect.cc:7611 #, fuzzy #| msgid "virtual functions cannot be friends" msgid "value cannot be extracted" @@ -22925,54 +22968,54 @@ msgstr "" msgid "source type is not polymorphic" msgstr "" -#: cp/semantics.cc:6821 +#: cp/semantics.cc:6842 msgid "candidates are:" msgstr "" -#: cp/typeck.cc:7784 c/c-typeck.cc:5822 +#: cp/typeck.cc:7779 c/c-typeck.cc:5830 #, gcc-internal-format msgid "wrong type argument to unary minus" msgstr "" -#: cp/typeck.cc:7785 c/c-typeck.cc:5808 +#: cp/typeck.cc:7780 c/c-typeck.cc:5816 #, gcc-internal-format msgid "wrong type argument to unary plus" msgstr "" -#: cp/typeck.cc:7812 c/c-typeck.cc:5867 +#: cp/typeck.cc:7807 c/c-typeck.cc:5875 #, gcc-internal-format msgid "wrong type argument to bit-complement" msgstr "" -#: cp/typeck.cc:7832 c/c-typeck.cc:5875 +#: cp/typeck.cc:7827 c/c-typeck.cc:5883 #, gcc-internal-format msgid "wrong type argument to abs" msgstr "" -#: cp/typeck.cc:7844 c/c-typeck.cc:5897 +#: cp/typeck.cc:7839 c/c-typeck.cc:5905 #, gcc-internal-format msgid "wrong type argument to conjugation" msgstr "" -#: cp/typeck.cc:7868 +#: cp/typeck.cc:7862 #, fuzzy #| msgid "too many arguments to function" msgid "in argument to unary !" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі" -#: cp/typeck.cc:7928 +#: cp/typeck.cc:7922 msgid "no pre-increment operator for type" msgstr "" -#: cp/typeck.cc:7930 +#: cp/typeck.cc:7924 msgid "no post-increment operator for type" msgstr "" -#: cp/typeck.cc:7932 +#: cp/typeck.cc:7926 msgid "no pre-decrement operator for type" msgstr "" -#: cp/typeck.cc:7934 +#: cp/typeck.cc:7928 msgid "no post-decrement operator for type" msgstr "" @@ -22989,59 +23032,59 @@ msgstr "" msgid "BOZ constant truncated at %L" msgstr "" -#: fortran/check.cc:4174 +#: fortran/check.cc:4175 #, c-format msgid "arguments 'a%d' and 'a%d' for intrinsic '%s'" msgstr "" -#: fortran/check.cc:4412 fortran/check.cc:4497 fortran/check.cc:4562 -#: fortran/check.cc:5265 +#: fortran/check.cc:4413 fortran/check.cc:4498 fortran/check.cc:4563 +#: fortran/check.cc:5266 #, c-format msgid "arguments '%s' and '%s' for intrinsic %s" msgstr "" -#: fortran/check.cc:5016 fortran/intrinsic.cc:5062 +#: fortran/check.cc:5017 fortran/intrinsic.cc:5062 #, c-format msgid "arguments '%s' and '%s' for intrinsic '%s'" msgstr "" -#: fortran/check.cc:5892 +#: fortran/check.cc:5893 msgid "NULL() is not interoperable" msgstr "" -#: fortran/check.cc:5898 +#: fortran/check.cc:5899 msgid "BOZ literal constant" msgstr "" -#: fortran/check.cc:5904 +#: fortran/check.cc:5905 msgid "Expression is polymorphic" msgstr "" -#: fortran/check.cc:5911 +#: fortran/check.cc:5912 msgid "Expression is a noninteroperable derived type" msgstr "" -#: fortran/check.cc:5917 +#: fortran/check.cc:5918 msgid "Procedure unexpected as argument" msgstr "" -#: fortran/check.cc:5927 +#: fortran/check.cc:5928 msgid "Extension to use a non-C_Bool-kind LOGICAL" msgstr "" -#: fortran/check.cc:5934 +#: fortran/check.cc:5935 msgid "Extension to use a non-C_CHAR-kind CHARACTER" msgstr "" -#: fortran/check.cc:5955 +#: fortran/check.cc:5956 msgid "Type shall have a character length of 1" msgstr "" -#: fortran/check.cc:5966 +#: fortran/check.cc:5967 msgid "Coarrays are not interoperable" msgstr "" -#: fortran/check.cc:5977 +#: fortran/check.cc:5978 msgid "Assumed-size arrays are not interoperable" msgstr "" @@ -23111,7 +23154,7 @@ msgstr "" msgid "Unsigned:" msgstr "" -#: fortran/expr.cc:4136 +#: fortran/expr.cc:4139 msgid "array assignment" msgstr "" @@ -23120,17 +23163,17 @@ msgid "Index variable %qs redefined at %L in procedure %qs called from within DO msgstr "" #. Macros for unified error messages. -#: fortran/frontend-passes.cc:4044 +#: fortran/frontend-passes.cc:4109 #, c-format msgid "Incorrect extent in argument B in MATMUL intrinsic in dimension 1: is %ld, should be %ld" msgstr "" -#: fortran/frontend-passes.cc:4047 +#: fortran/frontend-passes.cc:4112 #, c-format msgid "Array bound mismatch for dimension 1 of array (%ld/%ld)" msgstr "" -#: fortran/frontend-passes.cc:4050 +#: fortran/frontend-passes.cc:4115 #, c-format msgid "Array bound mismatch for dimension 2 of array (%ld/%ld)" msgstr "" @@ -23315,11 +23358,11 @@ msgstr "" msgid "implied END DO" msgstr "" -#: fortran/parse.cc:2532 fortran/resolve.cc:14333 +#: fortran/parse.cc:2532 fortran/resolve.cc:14453 msgid "assignment" msgstr "" -#: fortran/parse.cc:2535 fortran/resolve.cc:14399 fortran/resolve.cc:14402 +#: fortran/parse.cc:2535 fortran/resolve.cc:14519 fortran/resolve.cc:14522 msgid "pointer assignment" msgstr "" @@ -23327,145 +23370,145 @@ msgstr "" msgid "simple IF" msgstr "" -#: fortran/resolve.cc:2489 fortran/resolve.cc:2684 +#: fortran/resolve.cc:2514 fortran/resolve.cc:2709 msgid "elemental procedure" msgstr "" -#: fortran/resolve.cc:2587 +#: fortran/resolve.cc:2612 #, fuzzy #| msgid "no arguments" msgid "allocatable argument" msgstr "ĐœŃĐŒĐ° Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž" -#: fortran/resolve.cc:2592 +#: fortran/resolve.cc:2617 #, fuzzy #| msgid "no arguments" msgid "asynchronous argument" msgstr "ĐœŃĐŒĐ° Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž" -#: fortran/resolve.cc:2597 +#: fortran/resolve.cc:2622 #, fuzzy #| msgid "no arguments" msgid "optional argument" msgstr "ĐœŃĐŒĐ° Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž" -#: fortran/resolve.cc:2602 +#: fortran/resolve.cc:2627 #, fuzzy #| msgid "no arguments" msgid "pointer argument" msgstr "ĐœŃĐŒĐ° Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž" -#: fortran/resolve.cc:2607 +#: fortran/resolve.cc:2632 #, fuzzy #| msgid "no arguments" msgid "target argument" msgstr "ĐœŃĐŒĐ° Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž" -#: fortran/resolve.cc:2612 +#: fortran/resolve.cc:2637 #, fuzzy #| msgid "no arguments" msgid "value argument" msgstr "ĐœŃĐŒĐ° Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž" -#: fortran/resolve.cc:2617 +#: fortran/resolve.cc:2642 #, fuzzy #| msgid "no arguments" msgid "volatile argument" msgstr "ĐœŃĐŒĐ° Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž" -#: fortran/resolve.cc:2622 +#: fortran/resolve.cc:2647 msgid "assumed-shape argument" msgstr "" -#: fortran/resolve.cc:2627 +#: fortran/resolve.cc:2652 #, fuzzy #| msgid "no arguments" msgid "assumed-rank argument" msgstr "ĐœŃĐŒĐ° Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž" -#: fortran/resolve.cc:2632 +#: fortran/resolve.cc:2657 #, fuzzy #| msgid "no arguments" msgid "coarray argument" msgstr "ĐœŃĐŒĐ° Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž" -#: fortran/resolve.cc:2637 +#: fortran/resolve.cc:2662 msgid "parametrized derived type argument" msgstr "" -#: fortran/resolve.cc:2642 +#: fortran/resolve.cc:2667 #, fuzzy #| msgid "no arguments" msgid "polymorphic argument" msgstr "ĐœŃĐŒĐ° Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž" -#: fortran/resolve.cc:2647 +#: fortran/resolve.cc:2672 msgid "NO_ARG_CHECK attribute" msgstr "" #. As assumed-type is unlimited polymorphic (cf. above). #. See also TS 29113, Note 6.1. -#: fortran/resolve.cc:2654 +#: fortran/resolve.cc:2679 msgid "assumed-type argument" msgstr "" -#: fortran/resolve.cc:2665 +#: fortran/resolve.cc:2690 msgid "array result" msgstr "" -#: fortran/resolve.cc:2670 +#: fortran/resolve.cc:2695 msgid "pointer or allocatable result" msgstr "" -#: fortran/resolve.cc:2677 +#: fortran/resolve.cc:2702 msgid "result with non-constant character length" msgstr "" -#: fortran/resolve.cc:2689 +#: fortran/resolve.cc:2714 msgid "bind(c) procedure" msgstr "" -#: fortran/resolve.cc:8326 +#: fortran/resolve.cc:8404 msgid "Loop variable" msgstr "" -#: fortran/resolve.cc:8330 +#: fortran/resolve.cc:8408 msgid "iterator variable" msgstr "" -#: fortran/resolve.cc:8334 +#: fortran/resolve.cc:8412 msgid "Start expression in DO loop" msgstr "" -#: fortran/resolve.cc:8338 +#: fortran/resolve.cc:8416 msgid "End expression in DO loop" msgstr "" -#: fortran/resolve.cc:8342 +#: fortran/resolve.cc:8420 msgid "Step expression in DO loop" msgstr "" -#: fortran/resolve.cc:8975 fortran/resolve.cc:8978 +#: fortran/resolve.cc:9053 fortran/resolve.cc:9056 msgid "DEALLOCATE object" msgstr "" -#: fortran/resolve.cc:9419 fortran/resolve.cc:9422 +#: fortran/resolve.cc:9497 fortran/resolve.cc:9500 msgid "ALLOCATE object" msgstr "" -#: fortran/resolve.cc:9659 fortran/resolve.cc:11846 fortran/resolve.cc:12072 +#: fortran/resolve.cc:9737 fortran/resolve.cc:11924 fortran/resolve.cc:12150 msgid "STAT variable" msgstr "" -#: fortran/resolve.cc:9710 fortran/resolve.cc:11858 fortran/resolve.cc:12084 +#: fortran/resolve.cc:9788 fortran/resolve.cc:11936 fortran/resolve.cc:12162 msgid "ERRMSG variable" msgstr "" -#: fortran/resolve.cc:11654 +#: fortran/resolve.cc:11732 msgid "item in READ" msgstr "" -#: fortran/resolve.cc:11870 +#: fortran/resolve.cc:11948 msgid "ACQUIRED_LOCK variable" msgstr "" @@ -23474,31 +23517,31 @@ msgstr "" msgid "Different CHARACTER lengths (%ld/%ld) in array constructor" msgstr "" -#: fortran/trans-array.cc:6906 +#: fortran/trans-array.cc:6929 msgid "Integer overflow when calculating the amount of memory to allocate" msgstr "" -#: fortran/trans-array.cc:11451 +#: fortran/trans-array.cc:11543 #, c-format msgid "The value of the PDT LEN parameter '%s' does not agree with that in the dummy declaration" msgstr "" -#: fortran/trans-decl.cc:6690 +#: fortran/trans-decl.cc:6770 #, c-format msgid "Actual string length does not match the declared one for dummy argument '%s' (%ld/%ld)" msgstr "" -#: fortran/trans-decl.cc:6698 +#: fortran/trans-decl.cc:6778 #, c-format msgid "Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)" msgstr "" -#: fortran/trans-expr.cc:11598 +#: fortran/trans-expr.cc:11654 #, c-format msgid "Target of rank remapping is too small (%ld < %ld)" msgstr "" -#: fortran/trans-expr.cc:13373 +#: fortran/trans-expr.cc:13458 msgid "Assignment of scalar to unallocated array" msgstr "" @@ -23561,27 +23604,27 @@ msgstr "" msgid "Argument NCOPIES of REPEAT intrinsic is too large" msgstr "" -#: fortran/trans-intrinsic.cc:13166 +#: fortran/trans-intrinsic.cc:13169 #, c-format msgid "FROMPOS argument (%ld) out of range 0:%d in intrinsic MVBITS" msgstr "" -#: fortran/trans-intrinsic.cc:13178 +#: fortran/trans-intrinsic.cc:13181 #, c-format msgid "LEN argument (%ld) out of range 0:%d in intrinsic MVBITS" msgstr "" -#: fortran/trans-intrinsic.cc:13190 +#: fortran/trans-intrinsic.cc:13193 #, c-format msgid "TOPOS argument (%ld) out of range 0:%d in intrinsic MVBITS" msgstr "" -#: fortran/trans-intrinsic.cc:13202 +#: fortran/trans-intrinsic.cc:13205 #, c-format msgid "FROMPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS" msgstr "" -#: fortran/trans-intrinsic.cc:13210 +#: fortran/trans-intrinsic.cc:13213 #, c-format msgid "TOPOS(%ld)+LEN(%ld)>BIT_SIZE(%d) in intrinsic MVBITS" msgstr "" @@ -23679,7 +23722,7 @@ msgid "expected boolean type" msgstr "" #: go/gofrontend/expressions.cc:5610 c/c-parser.cc:20202 c/c-parser.cc:20209 -#: cp/parser.cc:44599 cp/parser.cc:44606 +#: cp/parser.cc:44659 cp/parser.cc:44666 #, gcc-internal-format msgid "expected integer" msgstr "" @@ -23747,7 +23790,7 @@ msgstr "ĐœŃĐŒĐ° Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž" #: go/gofrontend/expressions.cc:11749 go/gofrontend/expressions.cc:11844 #: go/gofrontend/expressions.cc:14020 go/gofrontend/expressions.cc:14149 #: go/gofrontend/expressions.cc:14163 go/gofrontend/expressions.cc:14184 -#: cp/pt.cc:9576 +#: cp/pt.cc:9604 #, fuzzy, gcc-internal-format #| msgid "too many arguments to function" msgid "too many arguments" @@ -24175,7 +24218,7 @@ msgstr "" msgid "target OS does not support unaligned accesses" msgstr "ISO C ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД ĐșĐŸĐŒĐ»Đ”ĐșŃĐœŃ‹Ń Ń†ŃĐ»Đ°Đ»Ń–ĐșаĐČыя тыпы" -#: config/c6x/c6x.h:346 config/nvptx/nvptx.h:194 +#: config/c6x/c6x.h:346 config/nvptx/nvptx.h:195 #, fuzzy, gcc-internal-format msgid "profiling is not yet implemented for this architecture" msgstr "__buitin_saveregs ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаДцца гэтаĐč ĐŒŃŃ‚Đ°Đč" @@ -24419,13 +24462,13 @@ msgstr "" msgid "Global declarative %s for %s" msgstr "ĐżĐ°ŃžŃ‚ĐŸŃ€ĐœĐ°Đ” абĐČŃŃˆŃ‡ŃĐœĐœĐ” ĐŒĐ”Ń‚Đșі \"%s\"" -#: cobol/parse_ante.h:2502 cobol/symbols.h:164 cobol/genapi.cc:6385 +#: cobol/parse_ante.h:2508 cobol/symbols.h:164 cobol/genapi.cc:6562 #: cobol/util.cc:333 cobol/util.cc:380 cobol/util.cc:427 cobol/util.cc:729 #, gcc-internal-format msgid "%s:%d: invalid % %d" msgstr "" -#: cobol/parse_ante.h:3259 +#: cobol/parse_ante.h:3265 #, gcc-internal-format msgid "SET identifier-11 TO LOCALE" msgstr "" @@ -24590,13 +24633,13 @@ msgstr "" msgid "%qs is deprecated; use -fno-zero-initialized-in-bss" msgstr "" -#: config/aarch64/aarch64.opt:387 +#: config/aarch64/aarch64.opt:392 #, fuzzy, gcc-internal-format #| msgid "unknown escape sequence '\\%c'" msgid "unknown autovec preference %qs" msgstr "ĐœĐ”ĐČŃĐŽĐŸĐŒĐ°Ń ESC-ĐżĐ°ŃĐ»ŃĐŽĐŸŃžĐœĐ°ŃŃ†ŃŒ '\\%c'" -#: config/aarch64/aarch64.opt:432 +#: config/aarch64/aarch64.opt:437 #, gcc-internal-format msgid "unknown LDP/STP policy %qs" msgstr "" @@ -25049,8 +25092,8 @@ msgstr "" #: attribs.cc:539 c-family/c-attribs.cc:1086 c-family/c-attribs.cc:2808 #: c-family/c-attribs.cc:3398 c-family/c-attribs.cc:5473 -#: c-family/c-attribs.cc:5566 cp/contracts.cc:595 cp/decl.cc:18264 -#: cp/decl.cc:18315 cp/friend.cc:319 cp/tree.cc:5723 +#: c-family/c-attribs.cc:5566 cp/contracts.cc:597 cp/decl.cc:18328 +#: cp/decl.cc:18379 cp/friend.cc:319 cp/tree.cc:5740 #, fuzzy, gcc-internal-format msgid "previous declaration here" msgstr "ĐœŃĐŒĐ° ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐłĐ° аб'ŃŃžĐ»Đ”ĐœĐœŃ ĐŽĐ»Ń \"%s\"" @@ -25068,7 +25111,7 @@ msgstr "\"%s\" Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚ Ń–ĐłĐœĐ°Ń€Ń‹Ń€ŃƒĐ”Ń†Ń†Đ°" msgid "%<%E::%E%> scoped attribute directive ignored" msgstr "" -#: attribs.cc:762 c/c-parser.cc:2293 cp/cp-gimplify.cc:4115 +#: attribs.cc:762 c/c-parser.cc:2293 cp/cp-gimplify.cc:4141 #, fuzzy, gcc-internal-format #| msgid "wrong number of arguments specified for `%s' attribute" msgid "wrong number of arguments specified for %qE attribute" @@ -25079,7 +25122,7 @@ msgstr "ĐżĐ°ĐŒŃ‹Đ»ĐșĐŸĐČая ĐșĐŸĐ»ŃŒĐșасьць Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž, заЎа msgid "expected %i or more, found %i" msgstr "" -#: attribs.cc:768 c/c-parser.cc:2296 cp/cp-gimplify.cc:4117 +#: attribs.cc:768 c/c-parser.cc:2296 cp/cp-gimplify.cc:4143 #, gcc-internal-format, gfc-internal-format msgid "expected %i, found %i" msgstr "" @@ -25162,12 +25205,12 @@ msgstr "" #: ada/gcc-interface/utils.cc:7519 ada/gcc-interface/utils.cc:7567 #: ada/gcc-interface/utils.cc:7583 ada/gcc-interface/utils.cc:7617 #: c/c-decl.cc:5116 c/c-decl.cc:5119 c/c-decl.cc:5146 c/c-parser.cc:6287 -#: cp/tree.cc:5374 cp/tree.cc:5879 d/d-attribs.cc:483 d/d-attribs.cc:702 -#: d/d-attribs.cc:723 d/d-attribs.cc:739 d/d-attribs.cc:756 d/d-attribs.cc:788 -#: d/d-attribs.cc:917 d/d-attribs.cc:976 d/d-attribs.cc:992 d/d-attribs.cc:1008 -#: d/d-attribs.cc:1157 d/d-attribs.cc:1170 d/d-attribs.cc:1387 -#: d/d-attribs.cc:1405 d/d-attribs.cc:1453 d/d-attribs.cc:1491 -#: d/d-attribs.cc:1507 d/d-attribs.cc:1564 d/d-attribs.cc:1592 +#: cp/tree.cc:5391 cp/tree.cc:5896 d/d-attribs.cc:486 d/d-attribs.cc:705 +#: d/d-attribs.cc:726 d/d-attribs.cc:742 d/d-attribs.cc:759 d/d-attribs.cc:791 +#: d/d-attribs.cc:920 d/d-attribs.cc:979 d/d-attribs.cc:995 d/d-attribs.cc:1011 +#: d/d-attribs.cc:1160 d/d-attribs.cc:1173 d/d-attribs.cc:1390 +#: d/d-attribs.cc:1408 d/d-attribs.cc:1473 d/d-attribs.cc:1511 +#: d/d-attribs.cc:1527 d/d-attribs.cc:1584 d/d-attribs.cc:1612 #: jit/dummy-frontend.cc:284 jit/dummy-frontend.cc:318 #: jit/dummy-frontend.cc:613 jit/dummy-frontend.cc:698 #: jit/dummy-frontend.cc:719 jit/dummy-frontend.cc:738 @@ -25284,135 +25327,135 @@ msgstr "" msgid "auto-profile contains invalid filename index %d" msgstr "" -#: auto-profile.cc:1603 +#: auto-profile.cc:1605 #, gcc-internal-format msgid "auto-profile of %q+F contains inlined function with symbol name %s instead of symbol name %s" msgstr "" -#: auto-profile.cc:1606 auto-profile.cc:1832 auto-profile.cc:1841 -#: auto-profile.cc:1883 +#: auto-profile.cc:1608 auto-profile.cc:1834 auto-profile.cc:1843 +#: auto-profile.cc:1885 #, gcc-internal-format msgid "corresponding call" msgstr "" -#: auto-profile.cc:1651 +#: auto-profile.cc:1653 #, gcc-internal-format msgid "duplicated count information in auto-profile of %q+F with relative location %i discriminator %i" msgstr "" -#: auto-profile.cc:1656 +#: auto-profile.cc:1658 #, gcc-internal-format msgid "corresponding source location" msgstr "" -#: auto-profile.cc:1827 +#: auto-profile.cc:1829 #, gcc-internal-format msgid "duplicated callsite in auto-profile of %q+F with relative location %i, discriminator %i" msgstr "" -#: auto-profile.cc:1835 +#: auto-profile.cc:1837 #, gcc-internal-format msgid "both call targets and inline callsite information is present in auto-profile of function %q+F with relative location %i, discriminator %i" msgstr "" -#: auto-profile.cc:1875 +#: auto-profile.cc:1877 #, gcc-internal-format msgid "auto-profile of %q+F seem to contain lost discriminator %i for call of %s at relative location %i" msgstr "" -#: auto-profile.cc:1919 +#: auto-profile.cc:1921 #, gcc-internal-format msgid "auto-profile of %q+F contains multiple targets for a direct call with relative location %i, discriminator %i" msgstr "" -#: auto-profile.cc:1935 +#: auto-profile.cc:1937 #, gcc-internal-format, gfc-internal-format msgid "function contains two calls of the same relative location +%i, discriminator %i, that leads to lost auto-profile" msgstr "" -#: auto-profile.cc:1943 +#: auto-profile.cc:1945 #, gcc-internal-format msgid "location of the first call" msgstr "" -#: auto-profile.cc:1945 +#: auto-profile.cc:1947 #, gcc-internal-format msgid "location of the second call" msgstr "" -#: auto-profile.cc:1999 +#: auto-profile.cc:2001 #, gcc-internal-format msgid "auto-profile of %q+F contains indirect call targets not associated with an indirect call statement" msgstr "" -#: auto-profile.cc:2004 auto-profile.cc:2051 +#: auto-profile.cc:2006 auto-profile.cc:2053 #, gcc-internal-format msgid "count % with relative location +%i, discriminator %i" msgstr "" -#: auto-profile.cc:2047 +#: auto-profile.cc:2049 #, gcc-internal-format msgid "auto-profile of %q+F contains extra statements" msgstr "" -#: auto-profile.cc:2057 auto-profile.cc:2098 +#: auto-profile.cc:2059 auto-profile.cc:2100 #, fuzzy, gcc-internal-format msgid "location is after end of function" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі" -#: auto-profile.cc:2086 +#: auto-profile.cc:2088 #, gcc-internal-format msgid "auto-profile of %q+F contains extra callsites" msgstr "" -#: auto-profile.cc:2091 +#: auto-profile.cc:2093 #, gcc-internal-format msgid "call of %s with total count %, relative location +%i, discriminator %i" msgstr "" -#: auto-profile.cc:3025 +#: auto-profile.cc:3027 #, gcc-internal-format msgid "Not expected TAG." msgstr "" -#: auto-profile.cc:3048 +#: auto-profile.cc:3050 #, gcc-internal-format, gfc-internal-format msgid "auto-profile contains duplicated function instance %s" msgstr "" -#: auto-profile.cc:3210 +#: auto-profile.cc:3212 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "can't open output file `%s'" msgid "cannot open profile file %s" msgstr "ĐœĐ”ĐŒĐ°ĐłŃ‡Ń‹ĐŒĐ° Đ°ĐŽŃ‡Ń‹ĐœŃ–Ń†ŃŒ фаĐčĐ» уĐČĐŸĐŽŃƒ `%s'" -#: auto-profile.cc:3216 +#: auto-profile.cc:3218 #, gcc-internal-format msgid "AutoFDO profile magic number does not match" msgstr "" -#: auto-profile.cc:3224 +#: auto-profile.cc:3226 #, gcc-internal-format, gfc-internal-format msgid "AutoFDO profile version %u does not match %u" msgstr "" -#: auto-profile.cc:3236 +#: auto-profile.cc:3238 #, gcc-internal-format, gfc-internal-format msgid "cannot read summary information from %s" msgstr "" -#: auto-profile.cc:3244 +#: auto-profile.cc:3246 #, fuzzy, gcc-internal-format, gfc-internal-format msgid "cannot read string table from %s" msgstr "ĐœĐ” ĐŒĐ°ĐłŃƒ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°ĐČаць ŃŃĐ±Ń€ĐŸŃžŃĐșую Ń„ŃƒĐœĐșцыю \"%s\"" -#: auto-profile.cc:3253 +#: auto-profile.cc:3255 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "cannot find file for class %s" msgid "cannot read function profile from %s" msgstr "ĐœĐ”ĐŒĐ°ĐłŃ‡Ń‹ĐŒĐ° Đ·ĐœĐ°Đčсьці фаĐčĐ» ĐŽĐ»Ń ĐșĐ»ŃŃĐ° %s" -#: auto-profile.cc:3263 +#: auto-profile.cc:3265 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "cannot find file for class %s" msgid "cannot read module profile from %s" @@ -25423,7 +25466,7 @@ msgstr "ĐœĐ”ĐŒĐ°ĐłŃ‡Ń‹ĐŒĐ° Đ·ĐœĐ°Đčсьці фаĐčĐ» ĐŽĐ»Ń ĐșĐ»ŃŃĐ° %s" msgid "offset %qwi outside bounds of constant string" msgstr "" -#: builtins.cc:706 c/c-parser.cc:28578 cp/name-lookup.cc:7189 +#: builtins.cc:706 c/c-parser.cc:28578 cp/name-lookup.cc:7229 #, gcc-internal-format msgid "%qE declared here" msgstr "" @@ -25531,7 +25574,7 @@ msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі \"%s\"" msgid "illegal argument 0 to %qs" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ ĐŽĐ»Ń \"%s\" ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ" -#: builtins.cc:7817 internal-fn.cc:4098 +#: builtins.cc:7817 internal-fn.cc:4166 #, fuzzy, gcc-internal-format msgid "third argument to % builtins must be a constant" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" @@ -25612,12 +25655,12 @@ msgstr "" msgid "cannot tail-call: %s" msgstr "ĐœĐ”ĐŒĐ°ĐłŃ‡Ń‹ĐŒĐ° Đ·ĐœĐ°Đčсьці ĐșĐ»ŃŃ `%s'" -#: calls.cc:2828 +#: calls.cc:2829 #, gcc-internal-format msgid "function call has aggregate value" msgstr "" -#: calls.cc:3566 +#: calls.cc:3567 #, gcc-internal-format msgid "passing too large argument on stack" msgstr "" @@ -26283,343 +26326,343 @@ msgstr "" msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)" msgstr "" -#: cgraph.cc:3724 +#: cgraph.cc:3734 #, gcc-internal-format msgid "caller edge count invalid" msgstr "" -#: cgraph.cc:3821 +#: cgraph.cc:3831 #, gcc-internal-format msgid "missing indirect call in speculative call sequence" msgstr "" -#: cgraph.cc:3826 +#: cgraph.cc:3836 #, gcc-internal-format msgid "indirect call in speculative call sequence has no speculative flag" msgstr "" -#: cgraph.cc:3856 +#: cgraph.cc:3866 #, gcc-internal-format msgid "speculative edges are not adjacent" msgstr "" -#: cgraph.cc:3862 +#: cgraph.cc:3872 #, gcc-internal-format, gfc-internal-format msgid "direct call to %s in speculative call sequence has no speculative flag" msgstr "" -#: cgraph.cc:3868 cgraph.cc:3898 +#: cgraph.cc:3878 cgraph.cc:3908 #, gcc-internal-format, gfc-internal-format msgid "direct call to %s in speculative call sequence has speculative_id %i out of range" msgstr "" -#: cgraph.cc:3875 +#: cgraph.cc:3885 #, gcc-internal-format, gfc-internal-format msgid "duplicate direct call to %s in speculative call sequence with speculative_id %i" msgstr "" -#: cgraph.cc:3886 +#: cgraph.cc:3896 #, gcc-internal-format msgid "call stmt hash does not point to first direct edge of speculative call sequence" msgstr "" -#: cgraph.cc:3905 +#: cgraph.cc:3915 #, gcc-internal-format, gfc-internal-format msgid "duplicate reference %s in speculative call sequence with speculative_id %i" msgstr "" -#: cgraph.cc:3918 +#: cgraph.cc:3928 #, gcc-internal-format, gfc-internal-format msgid "missing direct call for speculation %i" msgstr "" -#: cgraph.cc:3923 +#: cgraph.cc:3933 #, fuzzy, gcc-internal-format, gfc-internal-format msgid "missing ref for speculation %i" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ ĐŽĐ»Ń \"%s\" ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ" -#: cgraph.cc:3932 +#: cgraph.cc:3942 #, gcc-internal-format, gfc-internal-format msgid "number of speculative targets %i mismatched with num_speculative_call_targets %i" msgstr "" -#: cgraph.cc:3961 +#: cgraph.cc:3971 #, gcc-internal-format, gfc-internal-format msgid "aux field set for edge %s->%s" msgstr "" -#: cgraph.cc:3968 +#: cgraph.cc:3978 #, gcc-internal-format msgid "cgraph count invalid" msgstr "" -#: cgraph.cc:3973 +#: cgraph.cc:3983 #, gcc-internal-format msgid "inline clone in same comdat group list" msgstr "" -#: cgraph.cc:3978 +#: cgraph.cc:3988 #, gcc-internal-format msgid "inline clone count is not compatible" msgstr "" -#: cgraph.cc:3985 +#: cgraph.cc:3995 #, gcc-internal-format msgid "tp_first_run must be non-negative" msgstr "" -#: cgraph.cc:3990 +#: cgraph.cc:4000 #, fuzzy, gcc-internal-format #| msgid "label `%s' used but not defined" msgid "local symbols must be defined" msgstr "Đ°ĐŽĐŒĐ”Ń†Ń–ĐœĐ° `%s' ĐČыĐșĐ°Ń€Ń‹ŃŃ‚ĐŸŃžĐČыĐČаДцца, алД ĐœŃ ĐČŃ‹Đ·ĐœĐ°Ń‡Đ°ĐœĐ°" -#: cgraph.cc:3995 +#: cgraph.cc:4005 #, gcc-internal-format msgid "externally visible inline clone" msgstr "" -#: cgraph.cc:4000 +#: cgraph.cc:4010 #, gcc-internal-format msgid "inline clone with address taken" msgstr "" -#: cgraph.cc:4005 +#: cgraph.cc:4015 #, gcc-internal-format msgid "inline clone is forced to output" msgstr "" -#: cgraph.cc:4010 +#: cgraph.cc:4020 #, gcc-internal-format msgid "inline clone is referenced by assembly" msgstr "" -#: cgraph.cc:4017 +#: cgraph.cc:4027 #, gcc-internal-format msgid "calls_comdat_local is set outside of a comdat group" msgstr "" -#: cgraph.cc:4022 +#: cgraph.cc:4032 #, gcc-internal-format msgid "invalid calls_comdat_local flag" msgstr "" -#: cgraph.cc:4029 +#: cgraph.cc:4039 #, gcc-internal-format msgid "malloc attribute should be used for a function that returns a pointer" msgstr "" -#: cgraph.cc:4041 +#: cgraph.cc:4051 #, gcc-internal-format msgid "semantic interposition mismatch" msgstr "" -#: cgraph.cc:4048 +#: cgraph.cc:4058 #, gcc-internal-format, gfc-internal-format msgid "aux field set for indirect edge from %s" msgstr "" -#: cgraph.cc:4054 cgraph.cc:4121 +#: cgraph.cc:4064 cgraph.cc:4131 #, gcc-internal-format msgid "edge count is not compatible with function count" msgstr "" -#: cgraph.cc:4061 +#: cgraph.cc:4071 #, gcc-internal-format msgid "edge count is not compatible with inlined to function count" msgstr "" -#: cgraph.cc:4069 +#: cgraph.cc:4079 #, gcc-internal-format, gfc-internal-format msgid "An indirect edge from %s is not marked as indirect or has associated indirect_info, the corresponding statement is: " msgstr "" -#: cgraph.cc:4077 cgraph.cc:4151 +#: cgraph.cc:4087 cgraph.cc:4161 #, gcc-internal-format msgid "edge has both call_stmt and lto_stmt_uid set" msgstr "" -#: cgraph.cc:4089 +#: cgraph.cc:4099 #, gcc-internal-format, gfc-internal-format msgid "comdat-local function called by %s outside its comdat" msgstr "" -#: cgraph.cc:4099 +#: cgraph.cc:4109 #, gcc-internal-format msgid "inlined_to pointer is wrong" msgstr "" -#: cgraph.cc:4104 +#: cgraph.cc:4114 #, gcc-internal-format msgid "multiple inline callers" msgstr "" -#: cgraph.cc:4111 +#: cgraph.cc:4121 #, gcc-internal-format msgid "inlined_to pointer set for noninline callers" msgstr "" -#: cgraph.cc:4141 +#: cgraph.cc:4151 #, gcc-internal-format msgid "caller edge count does not match BB count" msgstr "" -#: cgraph.cc:4172 +#: cgraph.cc:4182 #, gcc-internal-format msgid "indirect call count does not match BB count" msgstr "" -#: cgraph.cc:4189 +#: cgraph.cc:4199 #, gcc-internal-format msgid "reference has both stmt and lto_stmt_uid set" msgstr "" -#: cgraph.cc:4200 +#: cgraph.cc:4210 #, gcc-internal-format msgid "inlined_to pointer is set but no predecessors found" msgstr "" -#: cgraph.cc:4205 +#: cgraph.cc:4215 #, gcc-internal-format msgid "inlined_to pointer refers to itself" msgstr "" -#: cgraph.cc:4216 +#: cgraph.cc:4226 #, gcc-internal-format msgid "cgraph_node has wrong clone_of" msgstr "" -#: cgraph.cc:4229 +#: cgraph.cc:4239 #, gcc-internal-format msgid "cgraph_node has wrong clone list" msgstr "" -#: cgraph.cc:4235 +#: cgraph.cc:4245 #, gcc-internal-format msgid "cgraph_node is in clone list but it is not clone" msgstr "" -#: cgraph.cc:4240 +#: cgraph.cc:4250 #, gcc-internal-format msgid "cgraph_node has wrong prev_clone pointer" msgstr "" -#: cgraph.cc:4245 +#: cgraph.cc:4255 #, gcc-internal-format msgid "double linked list of clones corrupted" msgstr "" -#: cgraph.cc:4257 +#: cgraph.cc:4267 #, gcc-internal-format msgid "Alias has call edges" msgstr "" -#: cgraph.cc:4263 +#: cgraph.cc:4273 #, gcc-internal-format msgid "Alias has non-alias reference" msgstr "" -#: cgraph.cc:4268 +#: cgraph.cc:4278 #, gcc-internal-format msgid "Alias has more than one alias reference" msgstr "" -#: cgraph.cc:4275 +#: cgraph.cc:4285 #, gcc-internal-format msgid "Analyzed alias has no reference" msgstr "" -#: cgraph.cc:4284 +#: cgraph.cc:4294 #, gcc-internal-format msgid "No edge out of thunk node" msgstr "" -#: cgraph.cc:4289 +#: cgraph.cc:4299 #, gcc-internal-format msgid "More than one edge out of thunk node" msgstr "" -#: cgraph.cc:4294 +#: cgraph.cc:4304 #, gcc-internal-format msgid "Thunk is not supposed to have body" msgstr "" -#: cgraph.cc:4330 +#: cgraph.cc:4340 #, gcc-internal-format msgid "shared call_stmt:" msgstr "" -#: cgraph.cc:4343 +#: cgraph.cc:4353 #, fuzzy, gcc-internal-format msgid "edge points to wrong declaration:" msgstr "\"%s\" - гэта ĐœĐ” пачатаĐș ЮэĐșларацыі" -#: cgraph.cc:4352 +#: cgraph.cc:4362 #, gcc-internal-format msgid "an indirect edge with unknown callee corresponding to a call_stmt with a known declaration:" msgstr "" -#: cgraph.cc:4362 +#: cgraph.cc:4372 #, gcc-internal-format msgid "missing callgraph edge for call stmt:" msgstr "" -#: cgraph.cc:4372 +#: cgraph.cc:4382 #, gcc-internal-format msgid "reference to dead statement" msgstr "" -#: cgraph.cc:4385 +#: cgraph.cc:4395 #, gcc-internal-format msgid "non-callback edge has callback_id set" msgstr "" -#: cgraph.cc:4391 +#: cgraph.cc:4401 #, gcc-internal-format msgid "edge has both callback and has_callback set" msgstr "" -#: cgraph.cc:4399 +#: cgraph.cc:4409 #, gcc-internal-format, gfc-internal-format msgid "callback edge %s->%s has no callback-carrying" msgstr "" -#: cgraph.cc:4427 +#: cgraph.cc:4437 #, gcc-internal-format, gfc-internal-format msgid "callback edge %s->%s callback edge count mismatch, expected at most %d, found %d" msgstr "" -#: cgraph.cc:4440 +#: cgraph.cc:4450 #, gcc-internal-format, gfc-internal-format msgid "callback-carrying edge is pointing towards __builtin_unreachable, but its callback edge %s -> %s is not" msgstr "" -#: cgraph.cc:4447 +#: cgraph.cc:4457 #, gcc-internal-format, gfc-internal-format msgid "edge %s->%s has no corresponding call_stmt" msgstr "" -#: cgraph.cc:4459 +#: cgraph.cc:4469 #, gcc-internal-format, gfc-internal-format msgid "an indirect edge from %s has no corresponding call_stmt" msgstr "" -#: cgraph.cc:4478 cgraph.cc:4491 +#: cgraph.cc:4488 cgraph.cc:4501 #, gcc-internal-format msgid "missing origin for a node in a nested list" msgstr "" -#: cgraph.cc:4483 +#: cgraph.cc:4493 #, gcc-internal-format msgid "origin points to a different parent" msgstr "" -#: cgraph.cc:4499 +#: cgraph.cc:4509 #, gcc-internal-format msgid "verify_cgraph_node failed" msgstr "" -#: cgraph.cc:4621 varpool.cc:300 +#: cgraph.cc:4631 varpool.cc:300 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "argument to `-%s' is missing" msgid "%s: section %s.%d is missing" @@ -27406,17 +27449,17 @@ msgstr "" msgid "impossible constraint in %" msgstr "ĐœĐ”ĐŒĐ°ĐłŃ‡Ń‹ĐŒŃ‹ апэратар '%s'" -#: function.cc:4285 +#: function.cc:4292 #, gcc-internal-format msgid "variable %q+D might be clobbered by % or %" msgstr "" -#: function.cc:4306 +#: function.cc:4313 #, gcc-internal-format msgid "argument %q+D might be clobbered by % or %" msgstr "" -#: function.cc:5031 +#: function.cc:5038 #, gcc-internal-format msgid "function returns an aggregate" msgstr "" @@ -28108,7 +28151,7 @@ msgstr "" msgid "flexible array member %qD does not have well defined padding bits for %qs" msgstr "" -#: gimple-fold.cc:4866 cp/constexpr.cc:6367 +#: gimple-fold.cc:4866 cp/constexpr.cc:6380 #, gcc-internal-format msgid "PDP11 bit-field handling unsupported in %qs" msgstr "" @@ -28148,7 +28191,7 @@ msgstr "" msgid "reference to label %qD defined inside of % attribute expression from outside of the attribute" msgstr "" -#: gimple-low.cc:112 cp/name-lookup.cc:9636 +#: gimple-low.cc:112 cp/name-lookup.cc:9676 #, fuzzy, gcc-internal-format msgid "%qD defined here" msgstr "YYDEBUG ĐœĐ” ĐČŃ‹Đ·ĐœĐ°Ń‡Đ°Đœ." @@ -28168,24 +28211,24 @@ msgstr "" msgid "function may return address of local variable" msgstr "" -#: gimple-ssa-isolate-paths.cc:422 c/c-typeck.cc:13501 +#: gimple-ssa-isolate-paths.cc:422 c/c-typeck.cc:13509 #, gcc-internal-format msgid "function returns address of local variable" msgstr "" #: gimple-ssa-isolate-paths.cc:425 gimple-ssa-warn-access.cc:2094 -#: gimple-ssa-warn-access.cc:3761 tree.cc:12759 tree.cc:12796 tree.cc:12837 +#: gimple-ssa-warn-access.cc:3809 tree.cc:12759 tree.cc:12796 tree.cc:12837 #: tree.cc:12870 c/c-decl.cc:10924 c/c-parser.cc:23376 c/c-parser.cc:23517 -#: c/c-typeck.cc:4034 c/c-typeck.cc:4288 c/c-typeck.cc:4300 c/c-typeck.cc:7088 -#: c/c-typeck.cc:13396 c/c-typeck.cc:13413 c/gimple-parser.cc:2650 +#: c/c-typeck.cc:4042 c/c-typeck.cc:4296 c/c-typeck.cc:4308 c/c-typeck.cc:7096 +#: c/c-typeck.cc:13404 c/c-typeck.cc:13421 c/gimple-parser.cc:2650 #: c/gimple-parser.cc:2658 cp/call.cc:8461 cp/call.cc:8544 cp/call.cc:8563 #: cp/call.cc:10845 cp/class.cc:9628 cp/constexpr.cc:902 cp/constexpr.cc:1467 -#: cp/constexpr.cc:5736 cp/constexpr.cc:7566 cp/constexpr.cc:7968 -#: cp/cvt.cc:1123 cp/cvt.cc:1163 cp/decl.cc:10327 cp/decl2.cc:6719 -#: cp/decl2.cc:6768 cp/lambda.cc:666 cp/method.cc:1241 cp/module.cc:14487 -#: cp/module.cc:14523 cp/parser.cc:24780 cp/parser.cc:25654 cp/pt.cc:9376 -#: cp/semantics.cc:2781 cp/semantics.cc:5406 cp/typeck.cc:2279 -#: cp/typeck.cc:2500 cp/typeck.cc:4821 cp/typeck.cc:11081 +#: cp/constexpr.cc:5749 cp/constexpr.cc:7589 cp/constexpr.cc:7991 +#: cp/cvt.cc:1123 cp/cvt.cc:1163 cp/decl.cc:10341 cp/decl2.cc:6719 +#: cp/decl2.cc:6768 cp/lambda.cc:666 cp/method.cc:1241 cp/module.cc:14500 +#: cp/module.cc:14536 cp/parser.cc:24844 cp/parser.cc:25718 cp/pt.cc:9404 +#: cp/semantics.cc:2781 cp/semantics.cc:5427 cp/typeck.cc:2279 +#: cp/typeck.cc:2500 cp/typeck.cc:3606 cp/typeck.cc:4816 cp/typeck.cc:11079 #: rust/backend/rust-constexpr.cc:4627 rust/backend/rust-tree.cc:625 #: rust/backend/rust-tree.cc:3826 #, fuzzy, gcc-internal-format @@ -29076,7 +29119,7 @@ msgstr "" msgid "%qD called on pointer %qE with nonzero offset%s" msgstr "" -#: gimple-ssa-warn-access.cc:2104 gimple-ssa-warn-access.cc:3839 +#: gimple-ssa-warn-access.cc:2104 gimple-ssa-warn-access.cc:3887 #, gcc-internal-format msgid "returned from %qD" msgstr "" @@ -29146,210 +29189,210 @@ msgstr "" msgid "unknown architecture specifier in memory model %wi for %qD" msgstr "" -#: gimple-ssa-warn-access.cc:2985 +#: gimple-ssa-warn-access.cc:2984 #, fuzzy, gcc-internal-format #| msgid "invalid register name for `%s'" msgid "invalid memory model %qs for %qD" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Ń ĐœĐ°Đ·ĐČа рэгістра `%s'" -#: gimple-ssa-warn-access.cc:2989 +#: gimple-ssa-warn-access.cc:2988 #, fuzzy, gcc-internal-format #| msgid "invalid register name for `%s'" msgid "invalid memory model %wi for %qD" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Ń ĐœĐ°Đ·ĐČа рэгістра `%s'" -#: gimple-ssa-warn-access.cc:3003 gimple-ssa-warn-access.cc:3054 +#: gimple-ssa-warn-access.cc:3002 gimple-ssa-warn-access.cc:3053 msgid "valid models are %e" msgstr "" -#: gimple-ssa-warn-access.cc:3017 +#: gimple-ssa-warn-access.cc:3016 #, fuzzy, gcc-internal-format #| msgid "invalid register name for `%s'" msgid "invalid failure memory model %qs for %qD" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Ń ĐœĐ°Đ·ĐČа рэгістра `%s'" -#: gimple-ssa-warn-access.cc:3022 +#: gimple-ssa-warn-access.cc:3021 #, gcc-internal-format msgid "valid failure models are %qs, %qs, %qs, %qs" msgstr "" -#: gimple-ssa-warn-access.cc:3038 +#: gimple-ssa-warn-access.cc:3037 #, gcc-internal-format msgid "failure memory model %qs cannot be stronger than success memory model %qs for %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3061 +#: gimple-ssa-warn-access.cc:3060 #, gcc-internal-format msgid "failure memory model %wi cannot be stronger than success memory model %wi for %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3506 +#: gimple-ssa-warn-access.cc:3554 #, gcc-internal-format, gfc-internal-format msgid "bound argument %i value %s is negative for a variable length array argument %i of type %s" msgstr "" -#: gimple-ssa-warn-access.cc:3514 +#: gimple-ssa-warn-access.cc:3562 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "size of array `%s' is negative" msgid "argument %i value %s is negative" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: gimple-ssa-warn-access.cc:3560 +#: gimple-ssa-warn-access.cc:3608 #, gcc-internal-format, gfc-internal-format msgid "argument %i is null but the corresponding size argument %i value is %s" msgstr "" -#: gimple-ssa-warn-access.cc:3624 +#: gimple-ssa-warn-access.cc:3672 #, gcc-internal-format msgid "referencing argument %u of type %qT" msgstr "" -#: gimple-ssa-warn-access.cc:3638 +#: gimple-ssa-warn-access.cc:3686 #, gcc-internal-format msgid "in a call to function %qD declared with attribute %qs" msgstr "" -#: gimple-ssa-warn-access.cc:3642 +#: gimple-ssa-warn-access.cc:3690 #, gcc-internal-format msgid "in a call with type %qT and attribute %qs" msgstr "" -#: gimple-ssa-warn-access.cc:3649 +#: gimple-ssa-warn-access.cc:3697 #, fuzzy, gcc-internal-format msgid "in a call to function %qD" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар \"%s\"" -#: gimple-ssa-warn-access.cc:3652 +#: gimple-ssa-warn-access.cc:3700 #, gcc-internal-format msgid "in a call with type %qT" msgstr "" -#: gimple-ssa-warn-access.cc:3758 +#: gimple-ssa-warn-access.cc:3806 #, gcc-internal-format msgid "%qD called on unallocated object %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3777 +#: gimple-ssa-warn-access.cc:3825 #, gcc-internal-format msgid "%qD called on a pointer to an unallocated object %qE" msgstr "" -#: gimple-ssa-warn-access.cc:3786 +#: gimple-ssa-warn-access.cc:3834 #, gcc-internal-format msgid "assigned here" msgstr "" -#: gimple-ssa-warn-access.cc:3820 +#: gimple-ssa-warn-access.cc:3868 #, gcc-internal-format msgid "%qD called on pointer returned from a mismatched allocation function" msgstr "" -#: gimple-ssa-warn-access.cc:3829 +#: gimple-ssa-warn-access.cc:3877 #, gcc-internal-format msgid "%qD called on pointer to an unallocated object" msgstr "" -#: gimple-ssa-warn-access.cc:3977 +#: gimple-ssa-warn-access.cc:4025 #, gcc-internal-format msgid "pointer %qE may be used after %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3978 +#: gimple-ssa-warn-access.cc:4026 #, gcc-internal-format msgid "pointer %qE used after %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3982 +#: gimple-ssa-warn-access.cc:4030 #, gcc-internal-format msgid "pointer may be used after %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3983 +#: gimple-ssa-warn-access.cc:4031 #, gcc-internal-format msgid "pointer used after %qD" msgstr "" -#: gimple-ssa-warn-access.cc:3987 +#: gimple-ssa-warn-access.cc:4035 #, fuzzy, gcc-internal-format #| msgid "called from here" msgid "call to %qD here" msgstr "ĐČыĐșліĐșĐ°ĐœĐ° Đ°ĐŽŃŃŽĐ»ŃŒ" -#: gimple-ssa-warn-access.cc:4004 +#: gimple-ssa-warn-access.cc:4052 #, gcc-internal-format msgid "dangling pointer %qE to %qD may be used" msgstr "" -#: gimple-ssa-warn-access.cc:4005 +#: gimple-ssa-warn-access.cc:4053 #, gcc-internal-format msgid "using dangling pointer %qE to %qD" msgstr "" -#: gimple-ssa-warn-access.cc:4010 +#: gimple-ssa-warn-access.cc:4058 #, gcc-internal-format msgid "dangling pointer to %qD may be used" msgstr "" -#: gimple-ssa-warn-access.cc:4011 +#: gimple-ssa-warn-access.cc:4059 #, gcc-internal-format msgid "using a dangling pointer to %qD" msgstr "" -#: gimple-ssa-warn-access.cc:4014 gimple-ssa-warn-access.cc:4671 -#: gimple-ssa-warn-access.cc:4674 gimple-ssa-warn-restrict.cc:1847 +#: gimple-ssa-warn-access.cc:4062 gimple-ssa-warn-access.cc:4719 +#: gimple-ssa-warn-access.cc:4722 gimple-ssa-warn-restrict.cc:1847 #: tree-ssa-uninit.cc:943 tree-ssa-uninit.cc:1142 c/c-decl.cc:4225 -#: c/c-decl.cc:4515 c/c-typeck.cc:10985 c/c-typeck.cc:14219 cp/call.cc:8892 +#: c/c-decl.cc:4515 c/c-typeck.cc:10993 c/c-typeck.cc:14227 cp/call.cc:8892 #: cp/call.cc:8903 cp/class.cc:1755 cp/class.cc:3580 cp/constexpr.cc:1084 -#: cp/decl.cc:5231 cp/decl.cc:14671 cp/decl.cc:15267 cp/decl.cc:15277 -#: cp/decl.cc:16284 cp/friend.cc:407 cp/friend.cc:417 cp/init.cc:2955 -#: cp/parser.cc:3937 cp/parser.cc:4083 cp/parser.cc:4135 cp/parser.cc:8073 -#: cp/parser.cc:27838 cp/reflect.cc:175 cp/typeck.cc:1971 cp/typeck.cc:5316 +#: cp/decl.cc:5231 cp/decl.cc:14714 cp/decl.cc:15310 cp/decl.cc:15320 +#: cp/decl.cc:16327 cp/friend.cc:407 cp/friend.cc:417 cp/init.cc:2955 +#: cp/parser.cc:3937 cp/parser.cc:4083 cp/parser.cc:4135 cp/parser.cc:8056 +#: cp/parser.cc:27902 cp/reflect.cc:168 cp/typeck.cc:1971 cp/typeck.cc:5311 #, fuzzy, gcc-internal-format msgid "%qD declared here" msgstr "\"%s\" ĐœĐ” абĐČĐ”ŃˆŃ‡Đ°Đœ (ĐżĐ”Ń€ŃˆĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” ў гэтаĐč Ń„ŃƒĐœĐșцыі)" -#: gimple-ssa-warn-access.cc:4022 +#: gimple-ssa-warn-access.cc:4070 #, gcc-internal-format msgid "dangling pointer %qE to an unnamed temporary may be used" msgstr "" -#: gimple-ssa-warn-access.cc:4024 +#: gimple-ssa-warn-access.cc:4072 #, gcc-internal-format msgid "using dangling pointer %qE to an unnamed temporary" msgstr "" -#: gimple-ssa-warn-access.cc:4030 +#: gimple-ssa-warn-access.cc:4078 #, gcc-internal-format msgid "dangling pointer to an unnamed temporary may be used" msgstr "" -#: gimple-ssa-warn-access.cc:4032 +#: gimple-ssa-warn-access.cc:4080 #, gcc-internal-format msgid "using a dangling pointer to an unnamed temporary" msgstr "" -#: gimple-ssa-warn-access.cc:4036 +#: gimple-ssa-warn-access.cc:4084 #, fuzzy, gcc-internal-format #| msgid "cannot create temporary file" msgid "unnamed temporary defined here" msgstr "ĐœĐ”ĐŒĐ°ĐłŃ‡Ń‹ĐŒĐ° стĐČарыць Ń‡Đ°ŃĐŸĐČы фаĐčĐ»" -#: gimple-ssa-warn-access.cc:4126 +#: gimple-ssa-warn-access.cc:4174 #, gcc-internal-format msgid "%qD called on pointer %qE passed to mismatched allocation function %qD" msgstr "" -#: gimple-ssa-warn-access.cc:4131 +#: gimple-ssa-warn-access.cc:4179 #, gcc-internal-format msgid "%qD called on a pointer passed to mismatched reallocation function %qD" msgstr "" -#: gimple-ssa-warn-access.cc:4137 +#: gimple-ssa-warn-access.cc:4185 #, gcc-internal-format msgid "call to %qD" msgstr "" -#: gimple-ssa-warn-access.cc:4665 +#: gimple-ssa-warn-access.cc:4713 #, gcc-internal-format msgid "storing the address of local variable %qD in %qE" msgstr "" @@ -30155,346 +30198,346 @@ msgstr "" msgid "invalid use of attribute %" msgstr "ĐœŃĐČĐ”Ń€ĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” \"restict\"" -#: ipa-devirt.cc:679 ipa-devirt.cc:764 ipa-devirt.cc:793 ipa-devirt.cc:835 -#: ipa-devirt.cc:866 +#: ipa-devirt.cc:748 ipa-devirt.cc:833 ipa-devirt.cc:862 ipa-devirt.cc:904 +#: ipa-devirt.cc:935 #, gcc-internal-format msgid "virtual table of type %qD violates one definition rule" msgstr "" -#: ipa-devirt.cc:682 +#: ipa-devirt.cc:751 #, gcc-internal-format msgid "variable of same assembler name as the virtual table is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:723 +#: ipa-devirt.cc:792 #, gcc-internal-format msgid "virtual table of type %qD contains RTTI information" msgstr "" -#: ipa-devirt.cc:729 +#: ipa-devirt.cc:798 #, gcc-internal-format msgid "but is prevailed by one without from other translation unit" msgstr "" -#: ipa-devirt.cc:733 +#: ipa-devirt.cc:802 #, gcc-internal-format msgid "RTTI will not work on this type" msgstr "" -#: ipa-devirt.cc:770 +#: ipa-devirt.cc:839 #, gcc-internal-format msgid "the conflicting type defined in another translation unit has virtual table of different size" msgstr "" -#: ipa-devirt.cc:799 +#: ipa-devirt.cc:868 #, gcc-internal-format msgid "the conflicting type defined in another translation unit with different RTTI information" msgstr "" -#: ipa-devirt.cc:843 ipa-devirt.cc:874 +#: ipa-devirt.cc:912 ipa-devirt.cc:943 #, gcc-internal-format msgid "the conflicting type defined in another translation unit" msgstr "" -#: ipa-devirt.cc:847 +#: ipa-devirt.cc:916 #, fuzzy, gcc-internal-format msgid "contains additional virtual method %qD" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: ipa-devirt.cc:854 +#: ipa-devirt.cc:923 #, gcc-internal-format msgid "the conflicting type defined in another translation unit has virtual table with more entries" msgstr "" -#: ipa-devirt.cc:880 +#: ipa-devirt.cc:949 #, gcc-internal-format msgid "virtual method %qD" msgstr "" -#: ipa-devirt.cc:884 +#: ipa-devirt.cc:953 #, gcc-internal-format msgid "ought to match virtual method %qD but does not" msgstr "" -#: ipa-devirt.cc:890 +#: ipa-devirt.cc:959 #, gcc-internal-format msgid "the conflicting type defined in another translation unit has virtual table with different contents" msgstr "" -#: ipa-devirt.cc:924 +#: ipa-devirt.cc:993 #, gcc-internal-format msgid "type %qT (typedef of %qT) violates the C++ One Definition Rule" msgstr "" -#: ipa-devirt.cc:932 +#: ipa-devirt.cc:1001 #, gcc-internal-format msgid "type %qT violates the C++ One Definition Rule" msgstr "" -#: ipa-devirt.cc:944 ipa-devirt.cc:959 ipa-devirt.cc:1237 ipa-devirt.cc:1290 -#: ipa-devirt.cc:1329 ipa-devirt.cc:1347 +#: ipa-devirt.cc:1013 ipa-devirt.cc:1028 ipa-devirt.cc:1306 ipa-devirt.cc:1359 +#: ipa-devirt.cc:1398 ipa-devirt.cc:1416 #, gcc-internal-format msgid "a different type is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:951 +#: ipa-devirt.cc:1020 #, gcc-internal-format msgid "the first difference of corresponding definitions is field %qD" msgstr "" -#: ipa-devirt.cc:961 +#: ipa-devirt.cc:1030 #, gcc-internal-format msgid "the first difference of corresponding definitions is method %qD" msgstr "" -#: ipa-devirt.cc:1066 +#: ipa-devirt.cc:1135 #, gcc-internal-format msgid "type %qT defined in anonymous namespace cannot match type %qT across the translation unit boundary" msgstr "" -#: ipa-devirt.cc:1071 +#: ipa-devirt.cc:1140 #, gcc-internal-format msgid "type %qT defined in anonymous namespace cannot match across the translation unit boundary" msgstr "" -#: ipa-devirt.cc:1076 +#: ipa-devirt.cc:1145 #, gcc-internal-format msgid "the incompatible type defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1092 +#: ipa-devirt.cc:1161 #, gcc-internal-format msgid "type name %qs should match type name %qs" msgstr "" -#: ipa-devirt.cc:1096 ipa-devirt.cc:1193 +#: ipa-devirt.cc:1165 ipa-devirt.cc:1262 #, gcc-internal-format msgid "the incompatible type is defined here" msgstr "" -#: ipa-devirt.cc:1124 +#: ipa-devirt.cc:1193 #, gcc-internal-format msgid "array types have different bounds" msgstr "" -#: ipa-devirt.cc:1139 +#: ipa-devirt.cc:1208 #, fuzzy, gcc-internal-format msgid "return value type mismatch" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: ipa-devirt.cc:1154 +#: ipa-devirt.cc:1223 #, fuzzy, gcc-internal-format msgid "implicit this pointer type mismatch" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: ipa-devirt.cc:1157 +#: ipa-devirt.cc:1226 #, fuzzy, gcc-internal-format, gfc-internal-format msgid "type mismatch in parameter %i" msgstr "ĐœĐ”ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°Đ”ĐŒŃ‹ ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€ \"%s\"" -#: ipa-devirt.cc:1168 +#: ipa-devirt.cc:1237 #, gcc-internal-format msgid "types have different parameter counts" msgstr "" -#: ipa-devirt.cc:1184 +#: ipa-devirt.cc:1253 #, gcc-internal-format msgid "type %qT itself violates the C++ One Definition Rule" msgstr "" -#: ipa-devirt.cc:1190 +#: ipa-devirt.cc:1259 #, gcc-internal-format msgid "type %qT should match type %qT" msgstr "" -#: ipa-devirt.cc:1265 +#: ipa-devirt.cc:1334 #, gcc-internal-format msgid "a type with different precision is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1273 +#: ipa-devirt.cc:1342 #, gcc-internal-format msgid "a vector type with different number of elements is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1280 +#: ipa-devirt.cc:1349 #, gcc-internal-format msgid "a type with different signedness is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1305 +#: ipa-devirt.cc:1374 #, gcc-internal-format msgid "it is defined as a pointer in different address space in another translation unit" msgstr "" -#: ipa-devirt.cc:1314 +#: ipa-devirt.cc:1383 #, gcc-internal-format msgid "it is defined as a pointer to different type in another translation unit" msgstr "" -#: ipa-devirt.cc:1374 +#: ipa-devirt.cc:1443 #, gcc-internal-format msgid "an array of different size is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1389 +#: ipa-devirt.cc:1458 #, gcc-internal-format msgid "has different return value in another translation unit" msgstr "" -#: ipa-devirt.cc:1412 ipa-devirt.cc:1424 +#: ipa-devirt.cc:1481 ipa-devirt.cc:1493 #, gcc-internal-format msgid "has different parameters in another translation unit" msgstr "" -#: ipa-devirt.cc:1447 +#: ipa-devirt.cc:1516 #, gcc-internal-format msgid "a type defined in another translation unit is not polymorphic" msgstr "" -#: ipa-devirt.cc:1451 +#: ipa-devirt.cc:1520 #, gcc-internal-format msgid "a type defined in another translation unit is polymorphic" msgstr "" -#: ipa-devirt.cc:1469 ipa-devirt.cc:1533 +#: ipa-devirt.cc:1538 ipa-devirt.cc:1602 #, gcc-internal-format msgid "a type with different virtual table pointers is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1476 ipa-devirt.cc:1538 +#: ipa-devirt.cc:1545 ipa-devirt.cc:1607 #, gcc-internal-format msgid "a type with different bases is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1484 +#: ipa-devirt.cc:1553 #, gcc-internal-format msgid "a field with different name is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1498 +#: ipa-devirt.cc:1567 #, gcc-internal-format msgid "a field of same name but different type is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1511 +#: ipa-devirt.cc:1580 #, gcc-internal-format msgid "fields have different layout in another translation unit" msgstr "" -#: ipa-devirt.cc:1518 +#: ipa-devirt.cc:1587 #, gcc-internal-format msgid "one field is a bitfield while the other is not" msgstr "" -#: ipa-devirt.cc:1542 +#: ipa-devirt.cc:1611 #, gcc-internal-format msgid "a type with different number of fields is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1565 +#: ipa-devirt.cc:1634 #, gcc-internal-format msgid "a type with different size is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:1574 +#: ipa-devirt.cc:1643 #, gcc-internal-format msgid "one type needs to be constructed while the other does not" msgstr "" -#: ipa-devirt.cc:1587 +#: ipa-devirt.cc:1656 #, gcc-internal-format msgid "memory layout mismatch" msgstr "" -#: ipa-devirt.cc:1706 +#: ipa-devirt.cc:1775 #, gcc-internal-format msgid "the extra base is defined here" msgstr "" -#: ipa-devirt.cc:3990 +#: ipa-devirt.cc:4060 #, gcc-internal-format msgid "Declaring type %qD final would enable devirtualization of %i call" msgid_plural "Declaring type %qD final would enable devirtualization of %i calls" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.cc:3999 +#: ipa-devirt.cc:4069 #, gcc-internal-format msgid "Declaring type %qD final would enable devirtualization of %i call executed %lli times" msgid_plural "Declaring type %qD final would enable devirtualization of %i calls executed %lli times" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.cc:4029 +#: ipa-devirt.cc:4099 #, gcc-internal-format msgid "Declaring virtual destructor of %qD final would enable devirtualization of %i call" msgid_plural "Declaring virtual destructor of %qD final would enable devirtualization of %i calls" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.cc:4037 +#: ipa-devirt.cc:4107 #, gcc-internal-format msgid "Declaring method %qD final would enable devirtualization of %i call" msgid_plural "Declaring method %qD final would enable devirtualization of %i calls" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.cc:4045 +#: ipa-devirt.cc:4115 #, gcc-internal-format msgid "Declaring virtual destructor of %qD final would enable devirtualization of %i call executed %lli times" msgid_plural "Declaring virtual destructor of %qD final would enable devirtualization of %i calls executed %lli times" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.cc:4056 +#: ipa-devirt.cc:4126 #, gcc-internal-format msgid "Declaring method %qD final would enable devirtualization of %i call executed %lli times" msgid_plural "Declaring method %qD final would enable devirtualization of %i calls executed %lli times" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.cc:4372 +#: ipa-devirt.cc:4442 #, gcc-internal-format msgid "type %qs violates the C++ One Definition Rule" msgstr "" -#: ipa-devirt.cc:4381 +#: ipa-devirt.cc:4451 #, gcc-internal-format msgid "an enum with different number of values is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:4385 +#: ipa-devirt.cc:4455 #, gcc-internal-format msgid "an enum with different value name is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:4389 +#: ipa-devirt.cc:4459 #, gcc-internal-format msgid "an enum with different values is defined in another translation unit" msgstr "" -#: ipa-devirt.cc:4410 +#: ipa-devirt.cc:4480 #, gcc-internal-format msgid "name %qs differs from name %qs defined in another translation unit" msgstr "" -#: ipa-devirt.cc:4416 +#: ipa-devirt.cc:4486 #, gcc-internal-format msgid "name %qs is defined as %u-bit while another translation unit defines it as %u-bit" msgstr "" -#: ipa-devirt.cc:4425 +#: ipa-devirt.cc:4495 #, gcc-internal-format msgid "name %qs is defined to %wd while another translation unit defines it as %wd" msgstr "" -#: ipa-devirt.cc:4431 +#: ipa-devirt.cc:4501 #, gcc-internal-format msgid "name %qs is defined to different value in another translation unit" msgstr "" -#: ipa-devirt.cc:4436 +#: ipa-devirt.cc:4506 #, gcc-internal-format msgid "mismatching definition" msgstr "" @@ -30514,7 +30557,7 @@ msgstr "" msgid "IPA modref summary is missing in input file" msgstr "" -#: ipa-prop.cc:5358 ipa-prop.cc:5402 ipa-prop.cc:5482 ipa-prop.cc:5534 +#: ipa-prop.cc:5384 ipa-prop.cc:5428 ipa-prop.cc:5508 ipa-prop.cc:5560 #, gcc-internal-format msgid "invalid jump function in LTO stream" msgstr "" @@ -30746,12 +30789,12 @@ msgstr "" msgid "unable to find a register to spill" msgstr "ĐĐ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚ĐŸŃžĐČаць рэгістра sb" -#: lra-constraints.cc:4524 reload.cc:3853 reload.cc:4108 +#: lra-constraints.cc:4525 reload.cc:3853 reload.cc:4108 #, gcc-internal-format msgid "inconsistent operand constraints in an %" msgstr "" -#: lra-constraints.cc:5701 +#: lra-constraints.cc:5702 #, gcc-internal-format, gfc-internal-format msgid "maximum number of generated reload insns per insn achieved (%d)" msgstr "" @@ -31123,7 +31166,7 @@ msgstr "" msgid "%qs clause with % modifier refers to iteration never in the iteration space" msgstr "" -#: omp-expand.cc:8239 +#: omp-expand.cc:8236 #, gcc-internal-format msgid "invalid OpenMP non-rectangular loop step; %<(%E - %E) * %E%> is not a multiple of loop %d step %qE" msgstr "" @@ -32531,22 +32574,22 @@ msgstr "" msgid "output operand %d must use %<&%> constraint" msgstr "" -#: regcprop.cc:1296 +#: regcprop.cc:1304 #, gcc-internal-format msgid "%qs: [%u] bad % for empty chain (%u)" msgstr "" -#: regcprop.cc:1308 +#: regcprop.cc:1316 #, gcc-internal-format msgid "%qs: loop in % chain (%u)" msgstr "" -#: regcprop.cc:1311 +#: regcprop.cc:1319 #, gcc-internal-format msgid "%qs: [%u] bad % (%u)" msgstr "" -#: regcprop.cc:1323 +#: regcprop.cc:1331 #, gcc-internal-format msgid "%qs: [%u] non-empty register in chain (%s %u %i)" msgstr "" @@ -33498,171 +33541,171 @@ msgstr "" msgid "ignoring loop annotation" msgstr "ĐĐ”Ń€Đ°ŃĐżĐ°Đ·ĐœĐ°ĐœŃ‹ ĐČыбар \"%s\"" -#: tree-cfg.cc:2981 +#: tree-cfg.cc:2983 #, gcc-internal-format msgid "constant not recomputed when % changed" msgstr "" -#: tree-cfg.cc:2986 +#: tree-cfg.cc:2988 #, gcc-internal-format msgid "side effects not recomputed when % changed" msgstr "" -#: tree-cfg.cc:3001 +#: tree-cfg.cc:3003 #, gcc-internal-format msgid "address taken but % bit not set" msgstr "" -#: tree-cfg.cc:3027 +#: tree-cfg.cc:3029 #, gcc-internal-format msgid "non-scalar %qs" msgstr "" -#: tree-cfg.cc:3041 +#: tree-cfg.cc:3043 #, fuzzy, gcc-internal-format msgid "invalid position or size operand to %qs" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: tree-cfg.cc:3047 +#: tree-cfg.cc:3049 #, gcc-internal-format msgid "integral result type precision does not match field size of %qs" msgstr "" -#: tree-cfg.cc:3056 +#: tree-cfg.cc:3058 #, gcc-internal-format msgid "mode size of non-integral result does not match field size of %qs" msgstr "" -#: tree-cfg.cc:3064 +#: tree-cfg.cc:3066 #, gcc-internal-format msgid "%qs of non-mode-precision operand" msgstr "" -#: tree-cfg.cc:3071 +#: tree-cfg.cc:3073 #, gcc-internal-format msgid "position plus size exceeds size of referenced object in %qs" msgstr "" -#: tree-cfg.cc:3082 +#: tree-cfg.cc:3084 #, gcc-internal-format msgid "type mismatch in %qs reference" msgstr "" -#: tree-cfg.cc:3098 +#: tree-cfg.cc:3100 #, gcc-internal-format msgid "conversion of %qs on the left hand side of %qs" msgstr "" -#: tree-cfg.cc:3106 +#: tree-cfg.cc:3108 #, gcc-internal-format msgid "conversion of register to a different size in %qs" msgstr "" -#: tree-cfg.cc:3126 +#: tree-cfg.cc:3128 #, gcc-internal-format msgid "non-top-level %qs" msgstr "" -#: tree-cfg.cc:3141 +#: tree-cfg.cc:3143 #, fuzzy, gcc-internal-format msgid "invalid operands to %qs" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: tree-cfg.cc:3152 tree-cfg.cc:3161 tree-cfg.cc:3178 tree-cfg.cc:3862 -#: tree-cfg.cc:3891 tree-cfg.cc:3908 tree-cfg.cc:3929 tree-cfg.cc:3975 -#: tree-cfg.cc:3996 tree-cfg.cc:4050 tree-cfg.cc:4070 tree-cfg.cc:4106 -#: tree-cfg.cc:4127 tree-cfg.cc:4188 tree-cfg.cc:4263 tree-cfg.cc:4289 -#: tree-cfg.cc:4325 tree-cfg.cc:4374 tree-cfg.cc:4399 tree-cfg.cc:4474 -#: tree-cfg.cc:4568 +#: tree-cfg.cc:3154 tree-cfg.cc:3163 tree-cfg.cc:3180 tree-cfg.cc:3864 +#: tree-cfg.cc:3893 tree-cfg.cc:3910 tree-cfg.cc:3931 tree-cfg.cc:3977 +#: tree-cfg.cc:3998 tree-cfg.cc:4052 tree-cfg.cc:4072 tree-cfg.cc:4108 +#: tree-cfg.cc:4129 tree-cfg.cc:4190 tree-cfg.cc:4265 tree-cfg.cc:4291 +#: tree-cfg.cc:4327 tree-cfg.cc:4376 tree-cfg.cc:4401 tree-cfg.cc:4476 +#: tree-cfg.cc:4570 #, gcc-internal-format msgid "type mismatch in %qs" msgstr "" -#: tree-cfg.cc:3172 +#: tree-cfg.cc:3174 #, fuzzy, gcc-internal-format #| msgid "invalid %%f operand" msgid "invalid %qs offset operator" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%f Đ°ĐżĐ”Ń€Đ°ĐœĐŽ" -#: tree-cfg.cc:3196 tree-cfg.cc:3222 +#: tree-cfg.cc:3198 tree-cfg.cc:3224 #, fuzzy, gcc-internal-format #| msgid "invalid %%d operand" msgid "invalid address operand in %qs" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%d Đ°ĐżĐ”Ń€Đ°ĐœĐŽ" -#: tree-cfg.cc:3203 tree-cfg.cc:3229 +#: tree-cfg.cc:3205 tree-cfg.cc:3231 #, fuzzy, gcc-internal-format #| msgid "invalid %%f operand" msgid "invalid offset operand in %qs" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%f Đ°ĐżĐ”Ń€Đ°ĐœĐŽ" -#: tree-cfg.cc:3210 tree-cfg.cc:3236 +#: tree-cfg.cc:3212 tree-cfg.cc:3238 #, fuzzy, gcc-internal-format msgid "invalid clique in %qs" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар %s" -#: tree-cfg.cc:3243 tree-cfg.cc:4580 +#: tree-cfg.cc:3245 tree-cfg.cc:4582 #, gcc-internal-format msgid "%qs in gimple IL" msgstr "" -#: tree-cfg.cc:3254 +#: tree-cfg.cc:3256 #, gcc-internal-format msgid "%qs as base where non-register is required" msgstr "" -#: tree-cfg.cc:3269 +#: tree-cfg.cc:3271 #, fuzzy, gcc-internal-format #| msgid "invalid %%m value" msgid "invalid expression for min lvalue" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%m" -#: tree-cfg.cc:3320 +#: tree-cfg.cc:3322 #, gcc-internal-format msgid "gimple call has two targets" msgstr "" -#: tree-cfg.cc:3329 +#: tree-cfg.cc:3331 #, gcc-internal-format msgid "gimple call has no target" msgstr "" -#: tree-cfg.cc:3336 +#: tree-cfg.cc:3338 #, fuzzy, gcc-internal-format msgid "invalid function in gimple call" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Ń спДцыфіĐșацыя! ĐŸĐ°ĐŒŃ‹Đ»Đșа ў cc." -#: tree-cfg.cc:3346 +#: tree-cfg.cc:3348 #, gcc-internal-format msgid "non-function in gimple call" msgstr "" -#: tree-cfg.cc:3357 +#: tree-cfg.cc:3359 #, fuzzy, gcc-internal-format msgid "invalid pure const state for function" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар \"%s\"" -#: tree-cfg.cc:3369 +#: tree-cfg.cc:3371 #, gcc-internal-format msgid "invalid LHS in gimple call" msgstr "" -#: tree-cfg.cc:3377 +#: tree-cfg.cc:3379 #, gcc-internal-format msgid "LHS in % call" msgstr "" -#: tree-cfg.cc:3391 +#: tree-cfg.cc:3393 #, gcc-internal-format msgid "invalid conversion in gimple call" msgstr "" -#: tree-cfg.cc:3400 +#: tree-cfg.cc:3402 #, gcc-internal-format msgid "invalid static chain in gimple call" msgstr "" -#: tree-cfg.cc:3411 +#: tree-cfg.cc:3413 #, gcc-internal-format msgid "static chain with function that doesn%'t use one" msgstr "" @@ -33673,602 +33716,602 @@ msgstr "" #. __builtin_unreachable internally, for example when IPA figures #. out a call cannot happen in a legal program. In such cases, #. we must make sure arguments are stripped off. -#: tree-cfg.cc:3430 +#: tree-cfg.cc:3432 #, gcc-internal-format msgid "%<__builtin_unreachable%> or %<__builtin_trap%> call with arguments" msgstr "" -#: tree-cfg.cc:3461 +#: tree-cfg.cc:3463 #, gcc-internal-format msgid "% calls should have same constant size for the first argument and LHS" msgstr "" -#: tree-cfg.cc:3479 +#: tree-cfg.cc:3481 #, fuzzy, gcc-internal-format msgid "invalid argument to gimple call" msgstr "ĐœŃĐČĐ”Ń€ĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” \"restict\"" -#: tree-cfg.cc:3506 +#: tree-cfg.cc:3508 #, fuzzy, gcc-internal-format msgid "invalid operands in gimple comparison" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: tree-cfg.cc:3517 +#: tree-cfg.cc:3519 #, gcc-internal-format msgid "mismatching comparison operand types" msgstr "" -#: tree-cfg.cc:3534 +#: tree-cfg.cc:3536 #, gcc-internal-format msgid "unsupported operation or type for vector comparison returning a boolean" msgstr "" -#: tree-cfg.cc:3549 +#: tree-cfg.cc:3551 #, gcc-internal-format msgid "non-vector operands in vector comparison" msgstr "" -#: tree-cfg.cc:3558 +#: tree-cfg.cc:3560 #, gcc-internal-format msgid "invalid vector comparison resulting type" msgstr "" -#: tree-cfg.cc:3565 +#: tree-cfg.cc:3567 #, gcc-internal-format msgid "bogus comparison result type" msgstr "" -#: tree-cfg.cc:3587 +#: tree-cfg.cc:3589 #, gcc-internal-format msgid "non-register as LHS of unary operation" msgstr "" -#: tree-cfg.cc:3593 +#: tree-cfg.cc:3595 #, fuzzy, gcc-internal-format msgid "invalid operand in unary operation" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: tree-cfg.cc:3616 +#: tree-cfg.cc:3618 #, gcc-internal-format msgid "invalid vector types in nop conversion" msgstr "" -#: tree-cfg.cc:3653 +#: tree-cfg.cc:3655 #, fuzzy, gcc-internal-format msgid "invalid types in nop conversion" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: tree-cfg.cc:3668 +#: tree-cfg.cc:3670 #, gcc-internal-format msgid "invalid types in address space conversion" msgstr "" -#: tree-cfg.cc:3682 +#: tree-cfg.cc:3684 #, gcc-internal-format msgid "invalid types in fixed-point conversion" msgstr "" -#: tree-cfg.cc:3697 +#: tree-cfg.cc:3699 #, gcc-internal-format msgid "invalid types in conversion to floating-point" msgstr "" -#: tree-cfg.cc:3712 +#: tree-cfg.cc:3714 #, gcc-internal-format msgid "invalid types in conversion to integer" msgstr "" -#: tree-cfg.cc:3752 +#: tree-cfg.cc:3754 #, gcc-internal-format msgid "type mismatch in %qs expression" msgstr "" -#: tree-cfg.cc:3767 tree-cfg.cc:4154 tree-cfg.cc:4176 +#: tree-cfg.cc:3769 tree-cfg.cc:4156 tree-cfg.cc:4178 #, fuzzy, gcc-internal-format msgid "invalid types for %qs" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар %s" -#: tree-cfg.cc:3778 +#: tree-cfg.cc:3780 #, gcc-internal-format msgid "%qs should be from a scalar to a like vector" msgstr "" -#: tree-cfg.cc:3789 +#: tree-cfg.cc:3791 #, fuzzy, gcc-internal-format msgid "invalid type for %qs" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар %s" -#: tree-cfg.cc:3813 +#: tree-cfg.cc:3815 #, gcc-internal-format msgid "non-trivial conversion in unary operation" msgstr "" -#: tree-cfg.cc:3838 +#: tree-cfg.cc:3840 #, gcc-internal-format msgid "non-register as LHS of binary operation" msgstr "" -#: tree-cfg.cc:3845 +#: tree-cfg.cc:3847 #, fuzzy, gcc-internal-format msgid "invalid operands in binary operation" msgstr "ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: tree-cfg.cc:3950 +#: tree-cfg.cc:3952 #, fuzzy, gcc-internal-format msgid "invalid non-vector operands to %qs" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: tree-cfg.cc:3961 +#: tree-cfg.cc:3963 #, fuzzy, gcc-internal-format msgid "invalid (pointer) operands %qs" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: tree-cfg.cc:4196 +#: tree-cfg.cc:4198 #, gcc-internal-format msgid "vector type expected in %qs" msgstr "" -#: tree-cfg.cc:4209 +#: tree-cfg.cc:4211 #, gcc-internal-format msgid "type mismatch in binary expression" msgstr "" -#: tree-cfg.cc:4237 +#: tree-cfg.cc:4239 #, gcc-internal-format msgid "non-register as LHS of ternary operation" msgstr "" -#: tree-cfg.cc:4245 +#: tree-cfg.cc:4247 #, fuzzy, gcc-internal-format msgid "invalid operands in ternary operation" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: tree-cfg.cc:4277 +#: tree-cfg.cc:4279 #, gcc-internal-format msgid "the first argument of a %qs must be of a boolean vector type of the same number of elements as the result" msgstr "" -#: tree-cfg.cc:4309 tree-cfg.cc:4386 +#: tree-cfg.cc:4311 tree-cfg.cc:4388 #, gcc-internal-format msgid "vector types expected in %qs" msgstr "" -#: tree-cfg.cc:4342 +#: tree-cfg.cc:4344 #, gcc-internal-format msgid "vectors with different element number found in %qs" msgstr "" -#: tree-cfg.cc:4358 +#: tree-cfg.cc:4360 #, fuzzy, gcc-internal-format msgid "invalid mask type in %qs" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар %s" -#: tree-cfg.cc:4419 +#: tree-cfg.cc:4421 #, gcc-internal-format msgid "not allowed type combination in %qs" msgstr "" -#: tree-cfg.cc:4428 +#: tree-cfg.cc:4430 #, fuzzy, gcc-internal-format msgid "invalid position or size in %qs" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар %s" -#: tree-cfg.cc:4434 +#: tree-cfg.cc:4436 #, gcc-internal-format msgid "%qs into non-mode-precision operand" msgstr "" -#: tree-cfg.cc:4444 +#: tree-cfg.cc:4446 #, gcc-internal-format msgid "insertion out of range in %qs" msgstr "" -#: tree-cfg.cc:4454 +#: tree-cfg.cc:4456 #, gcc-internal-format msgid "%qs not at element boundary" msgstr "" -#: tree-cfg.cc:4510 +#: tree-cfg.cc:4512 #, gcc-internal-format msgid "non-trivial conversion in %qs" msgstr "" -#: tree-cfg.cc:4519 +#: tree-cfg.cc:4521 #, gcc-internal-format msgid "invalid LHS (%qs) for assignment: %qs" msgstr "" -#: tree-cfg.cc:4527 +#: tree-cfg.cc:4529 #, gcc-internal-format msgid "%qs LHS in clobber statement" msgstr "" -#: tree-cfg.cc:4535 +#: tree-cfg.cc:4537 #, gcc-internal-format msgid "%qs LHS in assignment statement" msgstr "" -#: tree-cfg.cc:4554 +#: tree-cfg.cc:4556 #, fuzzy, gcc-internal-format msgid "invalid operand in %qs" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: tree-cfg.cc:4586 +#: tree-cfg.cc:4588 #, gcc-internal-format msgid "invalid %qs size argument in load" msgstr "" -#: tree-cfg.cc:4605 tree-cfg.cc:4631 +#: tree-cfg.cc:4607 tree-cfg.cc:4633 #, fuzzy, gcc-internal-format #| msgid "invalid register name for `%s'" msgid "invalid RHS for gimple memory store: %qs" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Ń ĐœĐ°Đ·ĐČа рэгістра `%s'" -#: tree-cfg.cc:4648 +#: tree-cfg.cc:4650 #, gcc-internal-format msgid "non-register as LHS with vector constructor" msgstr "" -#: tree-cfg.cc:4670 tree-cfg.cc:4688 +#: tree-cfg.cc:4672 tree-cfg.cc:4690 #, gcc-internal-format msgid "incorrect type of vector %qs elements" msgstr "" -#: tree-cfg.cc:4679 tree-cfg.cc:4696 +#: tree-cfg.cc:4681 tree-cfg.cc:4698 #, gcc-internal-format msgid "incorrect number of vector %qs elements" msgstr "" -#: tree-cfg.cc:4704 +#: tree-cfg.cc:4706 #, gcc-internal-format msgid "incorrect type of vector CONSTRUCTOR elements" msgstr "" -#: tree-cfg.cc:4713 +#: tree-cfg.cc:4715 #, gcc-internal-format msgid "vector %qs with non-NULL element index" msgstr "" -#: tree-cfg.cc:4720 +#: tree-cfg.cc:4722 #, gcc-internal-format msgid "vector %qs element is not a GIMPLE value" msgstr "" -#: tree-cfg.cc:4729 +#: tree-cfg.cc:4731 #, gcc-internal-format msgid "non-vector %qs with elements" msgstr "" -#: tree-cfg.cc:4756 +#: tree-cfg.cc:4758 #, gcc-internal-format msgid "nontemporal store lhs cannot be a gimple register" msgstr "" -#: tree-cfg.cc:4799 +#: tree-cfg.cc:4801 #, fuzzy, gcc-internal-format msgid "invalid operand in return statement" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: tree-cfg.cc:4809 c/gimple-parser.cc:2656 +#: tree-cfg.cc:4811 c/gimple-parser.cc:2656 #, gcc-internal-format msgid "invalid conversion in return statement" msgstr "" -#: tree-cfg.cc:4833 +#: tree-cfg.cc:4835 #, gcc-internal-format msgid "goto destination is neither a label nor a pointer" msgstr "" -#: tree-cfg.cc:4852 +#: tree-cfg.cc:4854 #, fuzzy, gcc-internal-format msgid "invalid operand to switch statement" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: tree-cfg.cc:4860 +#: tree-cfg.cc:4862 #, gcc-internal-format msgid "non-integral type switch statement" msgstr "" -#: tree-cfg.cc:4870 +#: tree-cfg.cc:4872 #, gcc-internal-format msgid "invalid default case label in switch statement" msgstr "" -#: tree-cfg.cc:4882 +#: tree-cfg.cc:4884 #, gcc-internal-format msgid "invalid %" msgstr "" -#: tree-cfg.cc:4888 +#: tree-cfg.cc:4890 #, gcc-internal-format msgid "invalid case label in switch statement" msgstr "" -#: tree-cfg.cc:4895 +#: tree-cfg.cc:4897 #, fuzzy, gcc-internal-format msgid "invalid case range in switch statement" msgstr "ĐœŃĐČĐ”Ń€ĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” \"restict\"" -#: tree-cfg.cc:4905 +#: tree-cfg.cc:4907 #, gcc-internal-format msgid "type precision mismatch in switch statement" msgstr "" -#: tree-cfg.cc:4912 +#: tree-cfg.cc:4914 #, gcc-internal-format msgid "type mismatch for case label in switch statement" msgstr "" -#: tree-cfg.cc:4921 +#: tree-cfg.cc:4923 #, gcc-internal-format msgid "case labels not sorted in switch statement" msgstr "" -#: tree-cfg.cc:4964 +#: tree-cfg.cc:4966 #, fuzzy, gcc-internal-format msgid "label context is not the current function declaration" msgstr "сДĐșцыя \"%s\" ĐșĐ°ĐœŃ„Đ»Ń–ĐșŃ‚ŃƒĐ” Đ· ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐč ЮэĐșĐ»Đ°Ń€Đ°Ń†Ń‹ŃĐč" -#: tree-cfg.cc:4973 +#: tree-cfg.cc:4975 #, gcc-internal-format msgid "incorrect entry in %" msgstr "" -#: tree-cfg.cc:4983 +#: tree-cfg.cc:4985 #, gcc-internal-format msgid "incorrect setting of landing pad number" msgstr "" -#: tree-cfg.cc:4999 +#: tree-cfg.cc:5001 #, fuzzy, gcc-internal-format msgid "invalid comparison code in gimple cond" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" -#: tree-cfg.cc:5007 +#: tree-cfg.cc:5009 #, gcc-internal-format msgid "invalid labels in gimple cond" msgstr "" -#: tree-cfg.cc:5020 +#: tree-cfg.cc:5022 #, gcc-internal-format msgid "gimple cond condition cannot throw" msgstr "" -#: tree-cfg.cc:5106 tree-cfg.cc:5115 +#: tree-cfg.cc:5108 tree-cfg.cc:5117 #, fuzzy, gcc-internal-format #| msgid "invalid %%Q value" msgid "invalid % result" msgstr "ĐŽŃ€ŃĐœĐœĐ°Đ” %%Q Đ·ĐœĐ°Ń‡ŃĐœĐœĐ”" -#: tree-cfg.cc:5125 +#: tree-cfg.cc:5127 #, gcc-internal-format msgid "missing % def" msgstr "" -#: tree-cfg.cc:5139 +#: tree-cfg.cc:5141 #, fuzzy, gcc-internal-format #| msgid "invalid %%Q value" msgid "invalid % argument" msgstr "ĐŽŃ€ŃĐœĐœĐ°Đ” %%Q Đ·ĐœĐ°Ń‡ŃĐœĐœĐ”" -#: tree-cfg.cc:5146 +#: tree-cfg.cc:5148 #, gcc-internal-format msgid "incompatible types in % argument %u" msgstr "" -#: tree-cfg.cc:5249 +#: tree-cfg.cc:5251 #, gcc-internal-format msgid "% failed" msgstr "" -#: tree-cfg.cc:5308 +#: tree-cfg.cc:5310 #, gcc-internal-format msgid "dead statement in EH table" msgstr "" -#: tree-cfg.cc:5324 +#: tree-cfg.cc:5326 #, gcc-internal-format msgid "location references block not in block tree" msgstr "" -#: tree-cfg.cc:5373 +#: tree-cfg.cc:5375 #, fuzzy, gcc-internal-format msgid "local declaration from a different function" msgstr "ĐœŃĐŒĐ° ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐłĐ° аб'ŃŃžĐ»Đ”ĐœĐœŃ ĐŽĐ»Ń \"%s\"" -#: tree-cfg.cc:5476 +#: tree-cfg.cc:5478 #, gcc-internal-format msgid "gimple_bb (phi) is set to a wrong basic block" msgstr "" -#: tree-cfg.cc:5485 +#: tree-cfg.cc:5487 #, gcc-internal-format msgid "PHI node with location" msgstr "" -#: tree-cfg.cc:5496 tree-cfg.cc:5543 +#: tree-cfg.cc:5498 tree-cfg.cc:5545 #, gcc-internal-format msgid "incorrect sharing of tree nodes" msgstr "" -#: tree-cfg.cc:5504 +#: tree-cfg.cc:5506 #, gcc-internal-format msgid "virtual PHI with argument locations" msgstr "" -#: tree-cfg.cc:5531 +#: tree-cfg.cc:5533 #, gcc-internal-format msgid "gimple_bb (stmt) is set to a wrong basic block" msgstr "" -#: tree-cfg.cc:5571 +#: tree-cfg.cc:5573 #, gcc-internal-format msgid "statement marked for throw, but doesn%'t" msgstr "" -#: tree-cfg.cc:5577 +#: tree-cfg.cc:5579 #, gcc-internal-format msgid "statement marked for throw in middle of block" msgstr "" -#: tree-cfg.cc:5599 +#: tree-cfg.cc:5601 #, gcc-internal-format msgid "verify_gimple failed" msgstr "" -#: tree-cfg.cc:5623 +#: tree-cfg.cc:5625 #, gcc-internal-format msgid "ENTRY_BLOCK has IL associated with it" msgstr "" -#: tree-cfg.cc:5630 +#: tree-cfg.cc:5632 #, gcc-internal-format msgid "EXIT_BLOCK has IL associated with it" msgstr "" -#: tree-cfg.cc:5637 +#: tree-cfg.cc:5639 #, gcc-internal-format, gfc-internal-format msgid "fallthru to exit from bb %d" msgstr "" -#: tree-cfg.cc:5643 +#: tree-cfg.cc:5645 #, gcc-internal-format msgid "entry block count not initialized" msgstr "" -#: tree-cfg.cc:5649 +#: tree-cfg.cc:5651 #, gcc-internal-format msgid "exit block count not initialized" msgstr "" -#: tree-cfg.cc:5656 +#: tree-cfg.cc:5658 #, gcc-internal-format msgid "probability of edge from entry block not initialized" msgstr "" -#: tree-cfg.cc:5662 +#: tree-cfg.cc:5664 #, gcc-internal-format msgid "exit block count is not compatible with entry block count" msgstr "" -#: tree-cfg.cc:5677 +#: tree-cfg.cc:5679 #, gcc-internal-format, gfc-internal-format msgid "count of bb %d not initialized" msgstr "" -#: tree-cfg.cc:5683 +#: tree-cfg.cc:5685 #, gcc-internal-format, gfc-internal-format msgid "probability of edge %d->%d not initialized" msgstr "" -#: tree-cfg.cc:5690 +#: tree-cfg.cc:5692 #, gcc-internal-format, gfc-internal-format msgid "count of bb %d is not compatible with entry block count" msgstr "" -#: tree-cfg.cc:5709 +#: tree-cfg.cc:5711 #, gcc-internal-format msgid "nonlocal label %qD is not first in a sequence of labels in bb %d" msgstr "" -#: tree-cfg.cc:5716 +#: tree-cfg.cc:5718 #, gcc-internal-format msgid "EH landing pad label %qD is not first in a sequence of labels in bb %d" msgstr "" -#: tree-cfg.cc:5723 +#: tree-cfg.cc:5725 #, gcc-internal-format msgid "label %qD to block does not match in bb %d" msgstr "" -#: tree-cfg.cc:5730 +#: tree-cfg.cc:5732 #, gcc-internal-format msgid "label %qD has incorrect context in bb %d" msgstr "" -#: tree-cfg.cc:5745 +#: tree-cfg.cc:5747 #, gcc-internal-format, gfc-internal-format msgid "control flow in the middle of basic block %d" msgstr "" -#: tree-cfg.cc:5755 +#: tree-cfg.cc:5757 #, gcc-internal-format msgid "label %qD in the middle of basic block %d" msgstr "" -#: tree-cfg.cc:5774 +#: tree-cfg.cc:5776 #, gcc-internal-format, gfc-internal-format msgid "returns_twice call is not last in basic block %d" msgstr "" -#: tree-cfg.cc:5783 +#: tree-cfg.cc:5785 #, gcc-internal-format, gfc-internal-format msgid "returns_twice call is not first in basic block %d" msgstr "" -#: tree-cfg.cc:5815 +#: tree-cfg.cc:5817 #, gcc-internal-format, gfc-internal-format msgid "fallthru edge after a control statement in bb %d" msgstr "" -#: tree-cfg.cc:5828 +#: tree-cfg.cc:5830 #, gcc-internal-format, gfc-internal-format msgid "true/false edge after a non-GIMPLE_COND in bb %d" msgstr "" -#: tree-cfg.cc:5851 tree-cfg.cc:5873 tree-cfg.cc:5890 tree-cfg.cc:5959 +#: tree-cfg.cc:5853 tree-cfg.cc:5875 tree-cfg.cc:5892 tree-cfg.cc:5961 #, gcc-internal-format, gfc-internal-format msgid "wrong outgoing edge flags at end of bb %d" msgstr "" -#: tree-cfg.cc:5861 +#: tree-cfg.cc:5863 #, gcc-internal-format, gfc-internal-format msgid "explicit goto at end of bb %d" msgstr "" -#: tree-cfg.cc:5895 +#: tree-cfg.cc:5897 #, gcc-internal-format, gfc-internal-format msgid "return edge does not point to exit in bb %d" msgstr "" -#: tree-cfg.cc:5925 +#: tree-cfg.cc:5927 #, gcc-internal-format msgid "found default case not at the start of case vector" msgstr "" -#: tree-cfg.cc:5933 +#: tree-cfg.cc:5935 #, fuzzy, gcc-internal-format #| msgid "-pipe is not supported" msgid "case labels not sorted: " msgstr "-pipe ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаДцца" -#: tree-cfg.cc:5950 +#: tree-cfg.cc:5952 #, gcc-internal-format, gfc-internal-format msgid "extra outgoing edge %d->%d" msgstr "" -#: tree-cfg.cc:5973 +#: tree-cfg.cc:5975 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "missing field '%s' in '%s'" msgid "missing edge %i->%i" msgstr "ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°ĐœĐ° ĐżĐŸĐ»Đ” '%s' у '%s'" -#: tree-cfg.cc:9785 +#: tree-cfg.cc:9787 #, gcc-internal-format msgid "% function does return" msgstr "" -#: tree-cfg.cc:9805 tree-cfg.cc:9840 +#: tree-cfg.cc:9807 tree-cfg.cc:9842 #, gcc-internal-format msgid "control reaches end of non-void function" msgstr "" -#: tree-cfg.cc:9910 +#: tree-cfg.cc:9912 #, gcc-internal-format msgid "ignoring return value of %qD declared with attribute %" msgstr "" -#: tree-cfg.cc:9915 cp/cvt.cc:1167 +#: tree-cfg.cc:9917 cp/cvt.cc:1167 #, gcc-internal-format msgid "ignoring return value of function declared with attribute %" msgstr "" @@ -34448,12 +34491,12 @@ msgstr "" msgid "target does not support atomic profile update, single mode is selected" msgstr "" -#: tree-ssa-alias.cc:4131 +#: tree-ssa-alias.cc:4130 #, fuzzy, gcc-internal-format, gfc-internal-format msgid "invalid fn spec attribute \"%s\"" msgstr "ĐœŃĐČĐ”Ń€ĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” \"restict\"" -#: tree-ssa-alias.cc:4170 +#: tree-ssa-alias.cc:4169 #, gcc-internal-format, gfc-internal-format msgid "invalid fn spec attribute \"%s\" arg %i" msgstr "" @@ -34966,7 +35009,7 @@ msgstr "" msgid "vector shuffling operation will be expanded piecewise" msgstr "" -#: tree-vect-loop.cc:4493 +#: tree-vect-loop.cc:4492 #, gcc-internal-format msgid "vectorization did not happen for a simd loop" msgstr "" @@ -35387,12 +35430,12 @@ msgstr "" msgid "% is not main variant" msgstr "" -#: tree.cc:15620 +#: tree.cc:15640 #, gcc-internal-format msgid "missing % attribute for multi-versioned %qD" msgstr "" -#: tree.cc:15623 tree.cc:15789 tree.cc:15807 tree.cc:15820 cp/decl.cc:1487 +#: tree.cc:15643 tree.cc:15809 tree.cc:15827 tree.cc:15840 cp/decl.cc:1487 #: cp/decl.cc:2620 cp/decl.cc:2668 cp/decl.cc:2684 cp/decl.cc:3331 #: cp/decl.cc:3787 #, fuzzy, gcc-internal-format @@ -35400,16 +35443,16 @@ msgstr "" msgid "previous declaration of %qD" msgstr "ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐ” абĐČŃŃˆŃ‡ŃĐœŃŒĐœĐ” `%D'" -#: tree.cc:15785 +#: tree.cc:15805 #, fuzzy, gcc-internal-format msgid "%qD conflicts with overlapping % declaration" msgstr "сДĐșцыя \"%s\" ĐșĐ°ĐœŃ„Đ»Ń–ĐșŃ‚ŃƒĐ” Đ· ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐč ЮэĐșĐ»Đ°Ń€Đ°Ń†Ń‹ŃĐč" -#: tree.cc:15804 +#: tree.cc:15824 msgid "%qD conflicts for version %qB" msgstr "" -#: tree.cc:15817 +#: tree.cc:15837 #, fuzzy #| msgid "conflicts with previous declaration `%#D'" msgid "%qD conflicts with a previous declaration for version %qB" @@ -35490,7 +35533,7 @@ msgstr "ĐœĐ” ĐŒĐ°ĐłŃƒ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°ĐČаць ŃŃĐ±Ń€ĐŸŃžŃĐșую Ń„ŃƒĐœĐș msgid "no initializers are allowed in section %qs" msgstr "ĐœĐ” ĐŒĐ°ĐłŃƒ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°ĐČаць ŃŃĐ±Ń€ĐŸŃžŃĐșую Ń„ŃƒĐœĐșцыю \"%s\"" -#: varasm.cc:1547 varasm.cc:1556 d/d-attribs.cc:1464 +#: varasm.cc:1547 varasm.cc:1556 d/d-attribs.cc:1484 #, gcc-internal-format msgid "register name not specified for %q+D" msgstr "" @@ -35635,7 +35678,7 @@ msgstr "" msgid "%qs symbol %q+D must have static linkage" msgstr "" -#: varasm.cc:6661 config/nvptx/nvptx.cc:7751 +#: varasm.cc:6661 config/nvptx/nvptx.cc:7757 #, fuzzy, gcc-internal-format msgid "alias definitions not supported in this configuration" msgstr "Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚Ń‹ сДĐșцыі ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаюцца ĐŽĐ»Ń гэтаĐč ĐŒŃŃ‚Ń‹" @@ -35680,55 +35723,55 @@ msgstr "" msgid "cannot tail-call: return value must be a call" msgstr "" -#: c-family/c-attribs.cc:787 d/d-attribs.cc:1195 +#: c-family/c-attribs.cc:787 d/d-attribs.cc:1198 #, fuzzy, gcc-internal-format msgid "%qE attribute argument is invalid" msgstr "ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€ \"%s\" Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°ĐČĐ°ĐœŃ‹" -#: c-family/c-attribs.cc:790 d/d-attribs.cc:1198 +#: c-family/c-attribs.cc:790 d/d-attribs.cc:1201 #, fuzzy, gcc-internal-format msgid "%qE attribute argument %i is invalid" msgstr "ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€ \"%s\" Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°ĐČĐ°ĐœŃ‹" -#: c-family/c-attribs.cc:802 d/d-attribs.cc:1210 +#: c-family/c-attribs.cc:802 d/d-attribs.cc:1213 #, fuzzy, gcc-internal-format #| msgid "default argument for `%#D' has type `%T'" msgid "%qE attribute argument has type %qT" msgstr "Đ·ĐČычаĐčĐœŃ‹ Đ°Ń€ĐłŃƒĐŒŃĐœŃ‚ ĐŽĐ»Ń `%#D' ĐŒĐ°Đ” тып `%T'" -#: c-family/c-attribs.cc:806 d/d-attribs.cc:1214 +#: c-family/c-attribs.cc:806 d/d-attribs.cc:1217 #, fuzzy, gcc-internal-format #| msgid "default argument for `%#D' has type `%T'" msgid "%qE attribute argument %i has type %qT" msgstr "Đ·ĐČычаĐčĐœŃ‹ Đ°Ń€ĐłŃƒĐŒŃĐœŃ‚ ĐŽĐ»Ń `%#D' ĐŒĐ°Đ” тып `%T'" #: c-family/c-attribs.cc:817 c-family/c-attribs.cc:4915 -#: c-family/c-attribs.cc:4919 d/d-attribs.cc:1225 +#: c-family/c-attribs.cc:4919 d/d-attribs.cc:1228 #, fuzzy, gcc-internal-format msgid "%qE attribute argument value %qE is not an integer constant" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: c-family/c-attribs.cc:822 d/d-attribs.cc:1230 +#: c-family/c-attribs.cc:822 d/d-attribs.cc:1233 #, fuzzy, gcc-internal-format msgid "%qE attribute argument %i value %qE is not an integer constant" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: c-family/c-attribs.cc:838 d/d-attribs.cc:1244 +#: c-family/c-attribs.cc:838 d/d-attribs.cc:1247 #, gcc-internal-format msgid "%qE attribute argument value %qE does not refer to a function parameter" msgstr "" -#: c-family/c-attribs.cc:843 d/d-attribs.cc:1249 +#: c-family/c-attribs.cc:843 d/d-attribs.cc:1252 #, gcc-internal-format msgid "%qE attribute argument %i value %qE does not refer to a function parameter" msgstr "" -#: c-family/c-attribs.cc:871 d/d-attribs.cc:1272 +#: c-family/c-attribs.cc:871 d/d-attribs.cc:1275 #, gcc-internal-format msgid "%qE attribute argument value %qE exceeds the number of function parameters %u" msgstr "" -#: c-family/c-attribs.cc:876 d/d-attribs.cc:1277 +#: c-family/c-attribs.cc:876 d/d-attribs.cc:1280 #, gcc-internal-format msgid "%qE attribute argument %i value %qE exceeds the number of function parameters %u" msgstr "" @@ -35743,12 +35786,12 @@ msgstr "" msgid "%qE attribute argument %i value %qE does not refer to a variable argument list" msgstr "" -#: c-family/c-attribs.cc:929 c-family/c-attribs.cc:942 d/d-attribs.cc:1298 +#: c-family/c-attribs.cc:929 c-family/c-attribs.cc:942 d/d-attribs.cc:1301 #, gcc-internal-format msgid "%qE attribute argument value %qE refers to parameter type %qT" msgstr "" -#: c-family/c-attribs.cc:933 c-family/c-attribs.cc:947 d/d-attribs.cc:1303 +#: c-family/c-attribs.cc:933 c-family/c-attribs.cc:947 d/d-attribs.cc:1306 #, gcc-internal-format msgid "%qE attribute argument %i value %qE refers to parameter type %qT" msgstr "" @@ -35961,12 +36004,12 @@ msgstr "" msgid "mode %qs applied to inappropriate type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: c-family/c-attribs.cc:2621 c-family/c-attribs.cc:3081 d/d-attribs.cc:1024 +#: c-family/c-attribs.cc:2621 c-family/c-attribs.cc:3081 d/d-attribs.cc:1027 #, gcc-internal-format msgid "section attributes are not supported for this target" msgstr "Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚Ń‹ сДĐșцыі ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаюцца ĐŽĐ»Ń гэтаĐč ĐŒŃŃ‚Ń‹" -#: c-family/c-attribs.cc:2627 d/d-attribs.cc:1031 +#: c-family/c-attribs.cc:2627 d/d-attribs.cc:1034 #, fuzzy, gcc-internal-format #| msgid "section attributes are not supported for this target" msgid "section attribute not allowed for %q+D" @@ -35977,19 +36020,19 @@ msgstr "Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚Ń‹ сДĐșцыі ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаюцца ĐŽĐ»Ń msgid "section attribute argument not a string constant" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: c-family/c-attribs.cc:2642 d/d-attribs.cc:1047 +#: c-family/c-attribs.cc:2642 d/d-attribs.cc:1050 #, gcc-internal-format msgid "section attribute cannot be specified for local variables" msgstr "" #: c-family/c-attribs.cc:2653 config/bfin/bfin.cc:4796 config/bfin/bfin.cc:4847 -#: config/bfin/bfin.cc:4873 config/bfin/bfin.cc:4886 d/d-attribs.cc:1058 +#: config/bfin/bfin.cc:4873 config/bfin/bfin.cc:4886 d/d-attribs.cc:1061 #, fuzzy, gcc-internal-format #| msgid "section of `%s' conflicts with previous declaration" msgid "section of %q+D conflicts with previous declaration" msgstr "сДĐșцыя \"%s\" ĐșĐ°ĐœŃ„Đ»Ń–ĐșŃ‚ŃƒĐ” Đ· ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐč ЮэĐșĐ»Đ°Ń€Đ°Ń†Ń‹ŃĐč" -#: c-family/c-attribs.cc:2662 c-family/c-attribs.cc:3107 d/d-attribs.cc:1067 +#: c-family/c-attribs.cc:2662 c-family/c-attribs.cc:3107 d/d-attribs.cc:1070 #, fuzzy, gcc-internal-format msgid "section of %q+D cannot be overridden" msgstr "ĐČŃ–Ń€Ń‚ŃƒĐ°Đ»ŃŒĐœŃ‹Ń Ń„ŃƒĐœĐșцыі ĐœĐ” ĐŒĐŸĐłŃƒŃ†ŃŒ Đ±Ń‹Ń†ŃŒ ŃŃĐ±Ń€ĐŸŃžŃĐșŃ–ĐŒŃ–" @@ -36075,7 +36118,7 @@ msgstr "" msgid "% argument %qE conflicts with previous declaration %qE" msgstr "сДĐșцыя \"%s\" ĐșĐ°ĐœŃ„Đ»Ń–ĐșŃ‚ŃƒĐ” Đ· ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐč ЮэĐșĐ»Đ°Ń€Đ°Ń†Ń‹ŃĐč" -#: c-family/c-attribs.cc:3042 d/d-attribs.cc:1146 jit/dummy-frontend.cc:757 +#: c-family/c-attribs.cc:3042 d/d-attribs.cc:1149 jit/dummy-frontend.cc:757 #, fuzzy, gcc-internal-format msgid "inline function %q+D declared weak" msgstr "ĐČŃ–Ń€Ń‚ŃƒĐ°Đ»ŃŒĐœŃ‹Ń Ń„ŃƒĐœĐșцыі ĐœĐ” ĐŒĐŸĐłŃƒŃ†ŃŒ Đ±Ń‹Ń†ŃŒ ŃŃĐ±Ń€ĐŸŃžŃĐșŃ–ĐŒŃ–" @@ -36121,12 +36164,12 @@ msgstr "\"%s\" Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚ Ń–ĐłĐœĐ°Ń€Ń‹Ń€ŃƒĐ”Ń†Ń†Đ°" msgid "%qE attribute is only applicable on functions" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" -#: c-family/c-attribs.cc:3196 d/d-attribs.cc:1094 +#: c-family/c-attribs.cc:3196 d/d-attribs.cc:1097 #, fuzzy, gcc-internal-format msgid "% attribute only applies to functions and variables" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" -#: c-family/c-attribs.cc:3204 d/d-attribs.cc:1102 +#: c-family/c-attribs.cc:3204 d/d-attribs.cc:1105 #, fuzzy, gcc-internal-format msgid "% attribute is only applicable to symbols" msgstr "\"%s\" Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚ Ń–ĐłĐœĐ°Ń€Ń‹Ń€ŃƒĐ”Ń†Ń†Đ°" @@ -36136,12 +36179,12 @@ msgstr "\"%s\" Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚ Ń–ĐłĐœĐ°Ń€Ń‹Ń€ŃƒĐ”Ń†Ń†Đ°" msgid "% attribute argument not a string constant" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: c-family/c-attribs.cc:3228 d/d-attribs.cc:1126 +#: c-family/c-attribs.cc:3228 d/d-attribs.cc:1129 #, gcc-internal-format msgid "symver attribute argument must have format %" msgstr "" -#: c-family/c-attribs.cc:3229 d/d-attribs.cc:1127 +#: c-family/c-attribs.cc:3229 d/d-attribs.cc:1130 #, gcc-internal-format msgid "% attribute argument %qs must contain one or two %<@%>" msgstr "" @@ -36232,23 +36275,23 @@ msgstr "" msgid "visibility argument not a string" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ ĐŽĐ»Ń \"%s\" ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ" -#: c-family/c-attribs.cc:3649 d/d-attribs.cc:1585 jit/dummy-frontend.cc:631 +#: c-family/c-attribs.cc:3649 d/d-attribs.cc:1605 jit/dummy-frontend.cc:631 #, fuzzy, gcc-internal-format msgid "%qE attribute ignored on types" msgstr "\"%s\" Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚ Ń–ĐłĐœĐ°Ń€Ń‹Ń€ŃƒĐ”Ń†Ń†Đ°" -#: c-family/c-attribs.cc:3665 d/d-attribs.cc:1614 jit/dummy-frontend.cc:647 +#: c-family/c-attribs.cc:3665 d/d-attribs.cc:1634 jit/dummy-frontend.cc:647 #, gcc-internal-format msgid "attribute %qE argument must be one of %qs, %qs, %qs, or %qs" msgstr "" -#: c-family/c-attribs.cc:3677 d/d-attribs.cc:1625 jit/dummy-frontend.cc:659 +#: c-family/c-attribs.cc:3677 d/d-attribs.cc:1645 jit/dummy-frontend.cc:659 #, gcc-internal-format msgid "%qD redeclared with different visibility" msgstr "" -#: c-family/c-attribs.cc:3680 c-family/c-attribs.cc:3684 d/d-attribs.cc:1628 -#: d/d-attribs.cc:1632 jit/dummy-frontend.cc:662 jit/dummy-frontend.cc:666 +#: c-family/c-attribs.cc:3680 c-family/c-attribs.cc:3684 d/d-attribs.cc:1648 +#: d/d-attribs.cc:1652 jit/dummy-frontend.cc:662 jit/dummy-frontend.cc:666 #, gcc-internal-format msgid "%qD was declared %qs which implies default visibility" msgstr "" @@ -36265,7 +36308,7 @@ msgstr "" #: c-family/c-attribs.cc:3765 c-family/c-attribs.cc:4362 #: c-family/c-attribs.cc:6538 c-family/c-attribs.cc:6565 -#: config/m32c/m32c.cc:2942 ada/gcc-interface/utils.cc:7700 +#: config/m32c/m32c.cc:2942 ada/gcc-interface/utils.cc:7700 d/d-attribs.cc:1457 #, fuzzy, gcc-internal-format msgid "%qE attribute applies only to functions" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" @@ -36336,7 +36379,7 @@ msgid "%qE attribute argument 1 must take a pointer type as its first argument; msgstr "" #: c-family/c-attribs.cc:4061 c-family/c-attribs.cc:4109 -#: c-family/c-attribs.cc:4136 d/d-attribs.cc:1329 +#: c-family/c-attribs.cc:4136 d/d-attribs.cc:1332 #, fuzzy, gcc-internal-format msgid "%qE attribute ignored on a function returning %qT" msgstr "\"%s\" Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚ Ń–ĐłĐœĐ°Ń€Ń‹Ń€ŃƒĐ”Ń†Ń†Đ°" @@ -36413,7 +36456,7 @@ msgstr "" msgid "%qE argument is not a function" msgstr "`%D' - гэта ĐœŃ Ń„ŃƒĐœĐșцыя," -#: c-family/c-attribs.cc:4716 cp/name-lookup.cc:6814 +#: c-family/c-attribs.cc:4716 cp/name-lookup.cc:6854 #, gcc-internal-format msgid "deprecated message is not a string" msgstr "" @@ -36480,7 +36523,7 @@ msgid "%qE attribute ignored on non-enum" msgstr "\"%s\" Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚ Ń–ĐłĐœĐ°Ń€Ń‹Ń€ŃƒĐ”Ń†Ń†Đ°" #: c-family/c-attribs.cc:5205 config/mips/mips.cc:1346 config/mips/mips.cc:1607 -#: config/mips/mips.cc:1661 config/riscv/riscv.cc:7590 +#: config/mips/mips.cc:1661 config/riscv/riscv.cc:7593 #, gcc-internal-format msgid "%qE attribute requires a string argument" msgstr "" @@ -36642,15 +36685,15 @@ msgid "requested position is less than zero" msgstr "" #: c-family/c-attribs.cc:6375 ada/gcc-interface/utils.cc:7597 -#: d/d-attribs.cc:771 jit/dummy-frontend.cc:798 +#: d/d-attribs.cc:774 jit/dummy-frontend.cc:798 #, gcc-internal-format msgid "empty string in attribute %" msgstr "" #. The argument must be a constant string. -#: c-family/c-attribs.cc:6416 config/sh/sh.cc:8561 d/d-attribs.cc:1038 -#: d/d-attribs.cc:1112 d/d-attribs.cc:1415 d/d-attribs.cc:1458 -#: d/d-attribs.cc:1520 d/d-attribs.cc:1599 +#: c-family/c-attribs.cc:6416 config/sh/sh.cc:8561 d/d-attribs.cc:1041 +#: d/d-attribs.cc:1115 d/d-attribs.cc:1418 d/d-attribs.cc:1478 +#: d/d-attribs.cc:1540 d/d-attribs.cc:1619 #, fuzzy, gcc-internal-format msgid "%qE attribute argument not a string constant" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" @@ -36920,7 +36963,7 @@ msgid "suggest parentheses around assignment used as truth value" msgstr "" #: c-family/c-common.cc:3910 c/c-decl.cc:5192 c/c-decl.cc:7734 -#: c/c-parser.cc:4189 c/c-typeck.cc:18701 +#: c/c-parser.cc:4189 c/c-typeck.cc:18709 #, fuzzy, gcc-internal-format #| msgid "invalid use of `restrict'" msgid "invalid use of %" @@ -37093,8 +37136,8 @@ msgstr "ĐœĐ” хапаД Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі" msgid "missing sentinel in function call" msgstr "" -#: c-family/c-common.cc:6259 c-family/c-common.cc:6312 d/d-attribs.cc:837 -#: d/d-attribs.cc:887 +#: c-family/c-common.cc:6259 c-family/c-common.cc:6312 d/d-attribs.cc:840 +#: d/d-attribs.cc:890 #, gcc-internal-format msgid "bad option %qs to attribute %" msgstr "" @@ -38125,7 +38168,7 @@ msgstr "" msgid "traditional C rejects string constant concatenation" msgstr "" -#: c-family/c-omp.cc:136 cp/pt.cc:20275 +#: c-family/c-omp.cc:136 cp/pt.cc:20421 #, gcc-internal-format msgid "%<#pragma omp critical%> with % clause requires a name, except when % is used" msgstr "" @@ -38180,7 +38223,7 @@ msgstr "" msgid "% modifier may not be specified on % construct" msgstr "" -#: c-family/c-omp.cc:1005 cp/semantics.cc:12083 +#: c-family/c-omp.cc:1005 cp/semantics.cc:12104 #, gcc-internal-format msgid "invalid type for iteration variable %qE" msgstr "" @@ -38196,17 +38239,17 @@ msgstr "" msgid "%qE is not initialized" msgstr "ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: c-family/c-omp.cc:1047 cp/semantics.cc:11967 +#: c-family/c-omp.cc:1047 cp/semantics.cc:11988 #, gcc-internal-format msgid "missing controlling predicate" msgstr "" -#: c-family/c-omp.cc:1153 cp/semantics.cc:11558 +#: c-family/c-omp.cc:1153 cp/semantics.cc:11579 #, fuzzy, gcc-internal-format msgid "invalid controlling predicate" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: c-family/c-omp.cc:1160 cp/semantics.cc:11973 +#: c-family/c-omp.cc:1160 cp/semantics.cc:11994 #, fuzzy, gcc-internal-format msgid "missing increment expression" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ ĐŽĐ»Ń \"%s\" ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ" @@ -38216,7 +38259,7 @@ msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ ĐŽĐ»Ń \"%s\" ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ" msgid "increment is not constant 1 or -1 for % condition" msgstr "" -#: c-family/c-omp.cc:1292 cp/semantics.cc:11675 +#: c-family/c-omp.cc:1292 cp/semantics.cc:11696 #, fuzzy, gcc-internal-format msgid "invalid increment expression" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" @@ -38311,19 +38354,19 @@ msgstr "" msgid "% % clause on construct other than %, %, %, %, %" msgstr "" -#: c-family/c-omp.cc:3078 c/c-typeck.cc:18475 cp/semantics.cc:10586 +#: c-family/c-omp.cc:3078 c/c-typeck.cc:18483 cp/semantics.cc:10607 #, gcc-internal-format msgid "%qD specified in % clause but not in an explicit privatization clause" msgstr "" #: c-family/c-omp.cc:3170 c-family/c-omp.cc:3185 c/c-parser.cc:28140 -#: cp/parser.cc:53709 +#: cp/parser.cc:53769 #, fuzzy, gcc-internal-format #| msgid "`%D' is not a function," msgid "%qD is not a function argument" msgstr "`%D' - гэта ĐœŃ Ń„ŃƒĐœĐșцыя," -#: c-family/c-omp.cc:3466 c/c-typeck.cc:17546 cp/semantics.cc:9158 +#: c-family/c-omp.cc:3466 c/c-typeck.cc:17554 cp/semantics.cc:9179 #, gcc-internal-format msgid "bit-field %qE in %qs clause" msgstr "" @@ -38333,8 +38376,8 @@ msgstr "" msgid "%qE does not have a mappable type in %qs clause" msgstr "" -#: c-family/c-omp.cc:3482 c/c-typeck.cc:15808 c/c-typeck.cc:17645 -#: c/c-typeck.cc:17833 +#: c-family/c-omp.cc:3482 c/c-typeck.cc:15816 c/c-typeck.cc:17653 +#: c/c-typeck.cc:17841 #, gcc-internal-format msgid "%<_Atomic%> %qE in %qs clause" msgstr "" @@ -38855,7 +38898,7 @@ msgstr "" msgid "malformed %<#pragma %s%>, ignored" msgstr "" -#: c-family/c-pragma.cc:1440 cp/lex.cc:694 +#: c-family/c-pragma.cc:1440 cp/lex.cc:697 #, gcc-internal-format msgid "junk at end of %<#pragma %s%>" msgstr "" @@ -38930,8 +38973,8 @@ msgstr "" msgid "wrong type argument to %s" msgstr "ĐœĐ” хапаД Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі" -#: c-family/c-warn.cc:60 c-family/c-warn.cc:73 cp/constexpr.cc:4883 -#: cp/constexpr.cc:9158 m2/gm2-gcc/m2expr.cc:869 +#: c-family/c-warn.cc:60 c-family/c-warn.cc:73 cp/constexpr.cc:4896 +#: cp/constexpr.cc:9191 m2/gm2-gcc/m2expr.cc:869 #: rust/backend/rust-constexpr.cc:1960 rust/backend/rust-constexpr.cc:4551 #, gcc-internal-format msgid "overflow in constant expression" @@ -39424,17 +39467,17 @@ msgstr "ĐœĐ”Ń…Đ°ĐżĐ°Đ” Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі \"%s\"" msgid "function %qD used as % output" msgstr "" -#: c-family/c-warn.cc:1914 c/c-typeck.cc:6401 +#: c-family/c-warn.cc:1914 c/c-typeck.cc:6409 #, gcc-internal-format msgid "assignment of read-only location %qE" msgstr "" -#: c-family/c-warn.cc:1915 c/c-typeck.cc:6404 +#: c-family/c-warn.cc:1915 c/c-typeck.cc:6412 #, gcc-internal-format msgid "increment of read-only location %qE" msgstr "" -#: c-family/c-warn.cc:1916 c/c-typeck.cc:6407 +#: c-family/c-warn.cc:1916 c/c-typeck.cc:6415 #, gcc-internal-format msgid "decrement of read-only location %qE" msgstr "" @@ -39706,7 +39749,7 @@ msgid_plural "passing argument %i to %qs-qualified parameter aliases with argume msgstr[0] "" msgstr[1] "" -#: c-family/c-warn.cc:2934 c/c-typeck.cc:7041 cp/call.cc:6602 +#: c-family/c-warn.cc:2934 c/c-typeck.cc:7049 cp/call.cc:6602 #, gcc-internal-format msgid "this condition has identical branches" msgstr "" @@ -40648,7 +40691,7 @@ msgid "ACLE function %qD requires ISA extension %qs" msgstr "" #: config/aarch64/aarch64-builtins.cc:2675 config/aarch64/aarch64.cc:12191 -#: config/aarch64/aarch64.cc:19694 config/aarch64/aarch64.cc:20321 +#: config/aarch64/aarch64.cc:19710 config/aarch64/aarch64.cc:20337 #, gcc-internal-format msgid "you can enable %qs using the command-line option %<-march%>, or by using the % attribute or pragma" msgstr "" @@ -41289,7 +41332,7 @@ msgstr "" #: config/aarch64/aarch64-sve-builtins.cc:4883 #: config/arm/arm-mve-builtins.cc:502 config/arm/arm-mve-builtins.cc:527 -#: config/riscv/riscv-vector-builtins.cc:5584 +#: config/riscv/riscv-vector-builtins.cc:5591 #, fuzzy, gcc-internal-format msgid "duplicate definition of %qs" msgstr "ĐżĐ°ŃžŃ‚ĐŸŃ€ĐœĐ°Đ” абĐČŃŃˆŃ‡ŃĐœĐœĐ” ĐŒĐ”Ń‚Đșі \"%s\"" @@ -41336,7 +41379,7 @@ msgid "SVE type %qT does not have a defined alignment" msgstr "" #: config/aarch64/aarch64-sve-builtins.cc:5252 -#: config/riscv/riscv-vector-builtins.cc:5468 +#: config/riscv/riscv-vector-builtins.cc:5475 #, gcc-internal-format msgid "variables of type %qT cannot have thread-local storage duration" msgstr "" @@ -41387,7 +41430,7 @@ msgid "SVE type %qT not allowed in % clause" msgstr "" #: config/aarch64/aarch64-sve-builtins.cc:5302 -#: config/riscv/riscv-vector-builtins.cc:5527 +#: config/riscv/riscv-vector-builtins.cc:5534 #, gcc-internal-format msgid "cannot reference %qT object types in % region" msgstr "" @@ -41480,19 +41523,19 @@ msgid "SVE type %qT cannot be passed to an unprototyped function" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" #: config/aarch64/aarch64.cc:7951 config/aarch64/aarch64.cc:8032 -#: config/aarch64/aarch64.cc:22639 +#: config/aarch64/aarch64.cc:22655 #, gcc-internal-format msgid "parameter passing for argument of type %qT changed in GCC 13.1" msgstr "" #: config/aarch64/aarch64.cc:7958 config/aarch64/aarch64.cc:8039 -#: config/aarch64/aarch64.cc:22646 +#: config/aarch64/aarch64.cc:22662 #, gcc-internal-format msgid "parameter passing for argument of type %qT changed in GCC 14.1" msgstr "" #: config/aarch64/aarch64.cc:7969 config/aarch64/aarch64.cc:8049 -#: config/aarch64/aarch64.cc:22654 config/arm/arm.cc:7326 +#: config/aarch64/aarch64.cc:22670 config/arm/arm.cc:7326 #: config/arm/arm.cc:7356 config/arm/arm.cc:29418 #, gcc-internal-format msgid "parameter passing for argument of type %qT changed in GCC 9.1" @@ -41538,210 +41581,210 @@ msgstr "" msgid "use %<__arm_preserves(\"za\")%> if the callee preserves ZA" msgstr "" -#: config/aarch64/aarch64.cc:19278 +#: config/aarch64/aarch64.cc:19294 #, gcc-internal-format msgid "unknown flag passed in %<-moverride=%s%> (%s)" msgstr "" -#: config/aarch64/aarch64.cc:19322 +#: config/aarch64/aarch64.cc:19338 #, gcc-internal-format msgid "%qs string ill-formed" msgstr "" -#: config/aarch64/aarch64.cc:19378 +#: config/aarch64/aarch64.cc:19394 #, gcc-internal-format msgid "invalid format for %" msgstr "" -#: config/aarch64/aarch64.cc:19390 +#: config/aarch64/aarch64.cc:19406 #, fuzzy, gcc-internal-format #| msgid "invalid %%Q value" msgid "invalid % value: %d" msgstr "ĐŽŃ€ŃĐœĐœĐ°Đ” %%Q Đ·ĐœĐ°Ń‡ŃĐœĐœĐ”" -#: config/aarch64/aarch64.cc:19410 +#: config/aarch64/aarch64.cc:19426 #, fuzzy, gcc-internal-format, gfc-internal-format msgid "tuning string missing in option (%s)" msgstr "ĐĐ”Ń€Đ°ŃĐżĐ°Đ·ĐœĐ°ĐœŃ‹ ĐČыбар \"%s\"" -#: config/aarch64/aarch64.cc:19428 +#: config/aarch64/aarch64.cc:19444 #, fuzzy, gcc-internal-format, gfc-internal-format msgid "unknown tuning option (%s)" msgstr "ĐœĐ”ĐČŃĐŽĐŸĐŒĐ°Ń ĐœĐ°Đ·ĐČа рэгістра: %s\n" -#: config/aarch64/aarch64.cc:19638 config/arm/arm.cc:3214 -#: config/riscv/riscv.cc:12481 +#: config/aarch64/aarch64.cc:19654 config/arm/arm.cc:3214 +#: config/riscv/riscv.cc:12484 #, gcc-internal-format msgid "incompatible options %<-mstack-protector-guard=global%> and %<-mstack-protector-guard-offset=%s%>" msgstr "" -#: config/aarch64/aarch64.cc:19647 config/riscv/riscv.cc:12490 +#: config/aarch64/aarch64.cc:19663 config/riscv/riscv.cc:12493 #, gcc-internal-format msgid "both %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg%> must be used with %<-mstack-protector-guard=sysreg%>" msgstr "" -#: config/aarch64/aarch64.cc:19655 +#: config/aarch64/aarch64.cc:19671 #, gcc-internal-format msgid "specify a system register with a small string length" msgstr "" -#: config/aarch64/aarch64.cc:19665 config/arm/arm.cc:3226 -#: config/riscv/riscv.cc:12519 config/rs6000/rs6000.cc:4515 +#: config/aarch64/aarch64.cc:19681 config/arm/arm.cc:3226 +#: config/riscv/riscv.cc:12522 config/rs6000/rs6000.cc:4515 #, fuzzy, gcc-internal-format msgid "%qs is not a valid offset in %qs" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар %s" -#: config/aarch64/aarch64.cc:19673 +#: config/aarch64/aarch64.cc:19689 #, gcc-internal-format msgid "%<-fsanitize=shadow-call-stack%> requires %<-ffixed-x18%>" msgstr "" -#: config/aarch64/aarch64.cc:19676 +#: config/aarch64/aarch64.cc:19692 #, gcc-internal-format msgid "%<-fsanitize=shadow-call-stack%> conflicts with the use of register x18 by the target operating system" msgstr "" -#: config/aarch64/aarch64.cc:19682 +#: config/aarch64/aarch64.cc:19698 #, gcc-internal-format msgid "%<-fsanitize=memtag-stack%> requires the ISA extension %qs" msgstr "" -#: config/aarch64/aarch64.cc:19690 +#: config/aarch64/aarch64.cc:19706 #, gcc-internal-format msgid "streaming functions require the ISA extension %qs" msgstr "" -#: config/aarch64/aarch64.cc:19692 +#: config/aarch64/aarch64.cc:19708 #, gcc-internal-format msgid "functions with SME state require the ISA extension %qs" msgstr "" -#: config/aarch64/aarch64.cc:19785 +#: config/aarch64/aarch64.cc:19801 #, gcc-internal-format msgid "only values 12 (4 KB) and 16 (64 KB) are supported for guard size. Given value %d (%llu KB) is out of range" msgstr "" -#: config/aarch64/aarch64.cc:19801 config/riscv/riscv.cc:12539 +#: config/aarch64/aarch64.cc:19817 config/riscv/riscv.cc:12542 #, gcc-internal-format msgid "stack clash guard size %<%d%> must be equal to probing interval %<%d%>" msgstr "" -#: config/aarch64/aarch64.cc:19896 +#: config/aarch64/aarch64.cc:19912 #, gcc-internal-format msgid "invalid argument given to %<-mharden-sls=%>" msgstr "" -#: config/aarch64/aarch64.cc:19907 +#: config/aarch64/aarch64.cc:19923 #, gcc-internal-format msgid "%qs must be by itself for %<-mharden-sls=%>" msgstr "" -#: config/aarch64/aarch64.cc:19912 +#: config/aarch64/aarch64.cc:19928 #, fuzzy, gcc-internal-format msgid "invalid argument %qs for %<-mharden-sls=%>" msgstr "ĐœŃĐČĐ”Ń€ĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” \"restict\"" -#: config/aarch64/aarch64.cc:20068 +#: config/aarch64/aarch64.cc:20084 #, gcc-internal-format msgid "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch and resulted in options %qs being added" msgstr "" -#: config/aarch64/aarch64.cc:20135 +#: config/aarch64/aarch64.cc:20151 #, fuzzy, gcc-internal-format #| msgid "%s does not support %s" msgid "assembler does not support %<-mabi=ilp32%>" msgstr "%s ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД %s" -#: config/aarch64/aarch64.cc:20138 +#: config/aarch64/aarch64.cc:20154 #, gcc-internal-format msgid "%<-mabi=ilp32%> is deprecated" msgstr "" -#: config/aarch64/aarch64.cc:20144 +#: config/aarch64/aarch64.cc:20160 #, gcc-internal-format msgid "return address signing is only supported for %<-mabi=lp64%>" msgstr "" -#: config/aarch64/aarch64.cc:20218 +#: config/aarch64/aarch64.cc:20234 #, gcc-internal-format msgid "code model %qs with %<-f%s%>" msgstr "" -#: config/aarch64/aarch64.cc:20221 +#: config/aarch64/aarch64.cc:20237 #, fuzzy, gcc-internal-format msgid "code model %qs not supported in ilp32 mode" msgstr "-pipe ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаДцца" -#: config/aarch64/aarch64.cc:20319 +#: config/aarch64/aarch64.cc:20335 #, gcc-internal-format msgid "functions with %qs state require the ISA extension %qs" msgstr "" -#: config/aarch64/aarch64.cc:20429 +#: config/aarch64/aarch64.cc:20445 #, gcc-internal-format msgid "missing name in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:20432 +#: config/aarch64/aarch64.cc:20448 #, gcc-internal-format msgid "invalid name %qs in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:20436 +#: config/aarch64/aarch64.cc:20452 #, gcc-internal-format msgid "invalid feature modifier %s of value %qs in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:20471 +#: config/aarch64/aarch64.cc:20487 #, gcc-internal-format msgid "missing name in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:20474 +#: config/aarch64/aarch64.cc:20490 #, gcc-internal-format msgid "invalid name %qs in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:20478 config/aarch64/aarch64.cc:20562 +#: config/aarch64/aarch64.cc:20494 config/aarch64/aarch64.cc:20578 #, gcc-internal-format msgid "invalid feature modifier %qs of value %qs in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:20517 +#: config/aarch64/aarch64.cc:20533 #, gcc-internal-format msgid "invalid name %qs in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:20558 +#: config/aarch64/aarch64.cc:20574 #, gcc-internal-format msgid "missing value in % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:20618 config/aarch64/aarch64.cc:20796 +#: config/aarch64/aarch64.cc:20634 config/aarch64/aarch64.cc:20812 #: config/loongarch/loongarch-target-attr.cc:197 #: config/loongarch/loongarch-target-attr.cc:395 #, gcc-internal-format msgid "malformed % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:20664 +#: config/aarch64/aarch64.cc:20680 #, gcc-internal-format msgid "pragma or attribute % does not accept an argument" msgstr "" -#: config/aarch64/aarch64.cc:20672 config/i386/i386-options.cc:1302 +#: config/aarch64/aarch64.cc:20688 config/i386/i386-options.cc:1302 #: config/loongarch/loongarch-target-attr.cc:233 #, gcc-internal-format msgid "pragma or attribute % does not allow a negated form" msgstr "" -#: config/aarch64/aarch64.cc:20727 +#: config/aarch64/aarch64.cc:20743 #: config/loongarch/loongarch-target-attr.cc:281 #, gcc-internal-format msgid "pragma or attribute % is not valid" msgstr "" -#: config/aarch64/aarch64.cc:20784 config/arm/arm.cc:33537 +#: config/aarch64/aarch64.cc:20800 config/arm/arm.cc:33537 #: config/loongarch/loongarch-target-attr.cc:383 #: config/riscv/riscv-target-attr.cc:473 config/rs6000/rs6000.cc:24725 #: config/s390/s390.cc:16979 @@ -41749,196 +41792,196 @@ msgstr "" msgid "attribute % argument not a string" msgstr "" -#: config/aarch64/aarch64.cc:20821 +#: config/aarch64/aarch64.cc:20837 #, gcc-internal-format msgid "arch extension %qs should be prefixed by %<+%>" msgstr "" -#: config/aarch64/aarch64.cc:20824 +#: config/aarch64/aarch64.cc:20840 #, gcc-internal-format msgid "pragma or attribute % is not valid" msgstr "" -#: config/aarch64/aarch64.cc:20833 +#: config/aarch64/aarch64.cc:20849 #: config/loongarch/loongarch-target-attr.cc:418 #, gcc-internal-format msgid "malformed % pragma or attribute" msgstr "" -#: config/aarch64/aarch64.cc:21104 config/loongarch/loongarch.cc:11491 +#: config/aarch64/aarch64.cc:21120 config/loongarch/loongarch.cc:11491 #: config/riscv/riscv-target-attr.cc:552 #, gcc-internal-format msgid "attribute % has multiple values" msgstr "" -#: config/aarch64/aarch64.cc:21112 config/loongarch/loongarch.cc:11501 +#: config/aarch64/aarch64.cc:21128 config/loongarch/loongarch.cc:11501 #: config/riscv/riscv-target-attr.cc:562 #, gcc-internal-format msgid "attribute % argument not a string" msgstr "" -#: config/aarch64/aarch64.cc:21134 +#: config/aarch64/aarch64.cc:21150 #, fuzzy, gcc-internal-format msgid "missing value in % attribute" msgstr "ĐœŃĐČĐ”Ń€ĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” \"restict\"" -#: config/aarch64/aarch64.cc:21138 +#: config/aarch64/aarch64.cc:21154 #, gcc-internal-format msgid "invalid feature modifier %qs of value %qs in % attribute" msgstr "" -#: config/aarch64/aarch64.cc:21144 +#: config/aarch64/aarch64.cc:21160 #, gcc-internal-format msgid "duplicate feature modifier %qs of value %qs in % attribute" msgstr "" -#: config/aarch64/aarch64.cc:21726 config/i386/i386-features.cc:5490 -#: config/i386/i386-features.cc:5740 config/loongarch/loongarch.cc:12048 -#: config/riscv/riscv.cc:15547 config/rs6000/rs6000.cc:28526 +#: config/aarch64/aarch64.cc:21742 config/i386/i386-features.cc:5490 +#: config/i386/i386-features.cc:5740 config/loongarch/loongarch.cc:12062 +#: config/riscv/riscv.cc:15560 config/rs6000/rs6000.cc:28526 #, fuzzy, gcc-internal-format #| msgid "virtual functions cannot be friends" msgid "virtual function multiversioning not supported" msgstr "ĐČŃ–Ń€Ń‚ŃƒĐ°Đ»ŃŒĐœŃ‹Ń Ń„ŃƒĐœĐșцыі ĐœĐ” ĐŒĐŸĐłŃƒŃ†ŃŒ Đ±Ń‹Ń†ŃŒ ŃŃĐ±Ń€ĐŸŃžŃĐșŃ–ĐŒŃ–" -#: config/aarch64/aarch64.cc:21783 config/i386/i386-features.cc:5593 -#: config/loongarch/loongarch.cc:11645 config/riscv/riscv.cc:15601 +#: config/aarch64/aarch64.cc:21799 config/i386/i386-features.cc:5593 +#: config/loongarch/loongarch.cc:11645 config/riscv/riscv.cc:15614 #: config/rs6000/rs6000.cc:25381 #, fuzzy, gcc-internal-format msgid "multiversioning needs % which is not supported on this target" msgstr "__buitin_saveregs ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаДцца гэтаĐč ĐŒŃŃ‚Đ°Đč" -#: config/aarch64/aarch64.cc:21822 +#: config/aarch64/aarch64.cc:21838 #, gcc-internal-format msgid "%q+D has an inconsistent function multi-version priority value" msgstr "" -#: config/aarch64/aarch64.cc:21825 +#: config/aarch64/aarch64.cc:21841 #, gcc-internal-format msgid "%q+D was previously declared here with priority value of %d" msgstr "" -#: config/aarch64/aarch64.cc:23434 config/arm/arm.cc:6696 +#: config/aarch64/aarch64.cc:23450 config/arm/arm.cc:6696 #: config/rs6000/rs6000-call.cc:366 config/s390/s390.cc:13289 msgid "parameter passing for argument of type %qT with %<[[no_unique_address]]%> members changed %{in GCC 10.1%}" msgstr "" -#: config/aarch64/aarch64.cc:23439 config/arm/arm.cc:6701 +#: config/aarch64/aarch64.cc:23455 config/arm/arm.cc:6701 #: config/rs6000/rs6000-call.cc:361 config/s390/s390.cc:13284 msgid "parameter passing for argument of type %qT when C++17 is enabled changed to match C++14 %{in GCC 10.1%}" msgstr "" -#: config/aarch64/aarch64.cc:23444 config/arm/arm.cc:6706 +#: config/aarch64/aarch64.cc:23460 config/arm/arm.cc:6706 msgid "parameter passing for argument of type %qT changed %{in GCC 12.1%}" msgstr "" -#: config/aarch64/aarch64.cc:25006 config/aarch64/aarch64.cc:25009 +#: config/aarch64/aarch64.cc:25022 config/aarch64/aarch64.cc:25025 #, gcc-internal-format msgid "lane %wd out of range %wd - %wd" msgstr "" -#: config/aarch64/aarch64.cc:30718 config/i386/i386.cc:26917 -#: config/i386/i386.cc:27048 +#: config/aarch64/aarch64.cc:30734 config/i386/i386.cc:27040 +#: config/i386/i386.cc:27171 #, fuzzy, gcc-internal-format #| msgid "unsupported version" msgid "unsupported simdlen %wd" msgstr "ĐœĐ”ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČĐ°Đ”ĐŒĐ°Ń ĐČĐ”Ń€ŃŃ–Ń" -#: config/aarch64/aarch64.cc:30732 +#: config/aarch64/aarch64.cc:30748 #, gcc-internal-format msgid "GCC does not currently support return type %qT for simd" msgstr "" -#: config/aarch64/aarch64.cc:30736 config/i386/i386.cc:26939 +#: config/aarch64/aarch64.cc:30752 config/i386/i386.cc:27062 #, gcc-internal-format msgid "unsupported return type %qT for simd" msgstr "" -#: config/aarch64/aarch64.cc:30770 +#: config/aarch64/aarch64.cc:30786 #, gcc-internal-format msgid "GCC does not currently support argument type %qT for simd" msgstr "" -#: config/aarch64/aarch64.cc:30774 config/i386/i386.cc:26970 +#: config/aarch64/aarch64.cc:30790 config/i386/i386.cc:27093 #, gcc-internal-format msgid "unsupported argument type %qT for simd" msgstr "" -#: config/aarch64/aarch64.cc:30845 +#: config/aarch64/aarch64.cc:30861 #, gcc-internal-format msgid "GCC does not currently support simdlen %wd for type %qT" msgstr "" -#: config/aarch64/aarch64.cc:30865 +#: config/aarch64/aarch64.cc:30881 #, gcc-internal-format msgid "GCC does not currently support a simdclone with simdlens %wd and %wd for these types." msgstr "" -#: config/aarch64/aarch64.cc:31055 +#: config/aarch64/aarch64.cc:31071 #, gcc-internal-format msgid "cannot apply attribute %qs to %q+D after the function has been defined" msgstr "" -#: config/aarch64/aarch64.cc:31057 +#: config/aarch64/aarch64.cc:31073 #, fuzzy, gcc-internal-format msgid "%q+D defined here" msgstr "YYDEBUG ĐœĐ” ĐČŃ‹Đ·ĐœĐ°Ń‡Đ°Đœ." -#: config/aarch64/aarch64.cc:31876 +#: config/aarch64/aarch64.cc:31892 #, gcc-internal-format msgid "non-local gotos in functions with SME state" msgstr "" -#: config/aarch64/aarch64.cc:32184 +#: config/aarch64/aarch64.cc:32200 #, gcc-internal-format msgid "catching non-call exceptions in functions with SME state" msgstr "" -#: config/aarch64/aarch64.cc:32824 config/arm/arm-mve-builtins.cc:614 -#: config/riscv/riscv-vector-builtins.cc:5216 +#: config/aarch64/aarch64.cc:32840 config/arm/arm-mve-builtins.cc:614 +#: config/riscv/riscv-vector-builtins.cc:5223 #, fuzzy, gcc-internal-format msgid "argument %d of %qE must be an integer constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: config/aarch64/aarch64.cc:32837 +#: config/aarch64/aarch64.cc:32853 #, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects the value %wd" msgstr "" -#: config/aarch64/aarch64.cc:32840 config/arm/arm-mve-builtins.cc:626 -#: config/riscv/riscv-vector-builtins.cc:5230 +#: config/aarch64/aarch64.cc:32856 config/arm/arm-mve-builtins.cc:626 +#: config/riscv/riscv-vector-builtins.cc:5237 #, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd]" msgstr "" -#: config/aarch64/aarch64.cc:32853 +#: config/aarch64/aarch64.cc:32869 #, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects either %wd or %wd" msgstr "" -#: config/aarch64/aarch64.cc:32867 config/arm/arm-mve-builtins.cc:665 +#: config/aarch64/aarch64.cc:32883 config/arm/arm-mve-builtins.cc:665 #, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects %wd, %wd, %wd or %wd" msgstr "" -#: config/aarch64/aarch64.cc:32879 config/arm/arm-mve-builtins.cc:652 +#: config/aarch64/aarch64.cc:32895 config/arm/arm-mve-builtins.cc:652 #, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects a valid %qT value" msgstr "" -#: config/aarch64/aarch64.cc:33113 +#: config/aarch64/aarch64.cc:33129 #, gcc-internal-format msgid "empty string not valid for a % version" msgstr "" -#: config/aarch64/aarch64.cc:33117 +#: config/aarch64/aarch64.cc:33133 msgid "invalid feature modifier %qs in version %qB for % attribute" msgstr "" -#: config/aarch64/aarch64.cc:33123 +#: config/aarch64/aarch64.cc:33139 msgid "duplicate feature modifier %qs in version %qB for % attribute" msgstr "" -#: config/aarch64/aarch64.cc:33129 +#: config/aarch64/aarch64.cc:33145 msgid "invalid feature %qs in version %qB for % attribute" msgstr "" @@ -42128,12 +42171,12 @@ msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃ #: config/i386/i386-options.cc:3785 config/i386/i386-options.cc:3841 #: config/i386/i386-options.cc:3892 config/i386/i386-options.cc:3929 #: config/m68k/m68k.cc:804 config/mcore/mcore.cc:3066 config/mingw/winnt.cc:354 -#: config/nvptx/nvptx.cc:5888 config/riscv/riscv.cc:7562 +#: config/nvptx/nvptx.cc:5894 config/riscv/riscv.cc:7565 #: config/rl78/rl78.cc:821 config/rl78/rl78.cc:890 #: config/rs6000/rs6000.cc:20653 config/rx/rx.cc:2712 config/rx/rx.cc:2738 #: config/s390/s390.cc:1158 config/s390/s390.cc:1248 config/sh/sh.cc:8441 #: config/sh/sh.cc:8459 config/sh/sh.cc:8483 config/sh/sh.cc:8554 -#: config/sh/sh.cc:8577 config/stormy16/stormy16.cc:2402 +#: config/sh/sh.cc:8577 config/stormy16/stormy16.cc:2403 #: config/v850/v850.cc:2010 config/visium/visium.cc:727 #, fuzzy, gcc-internal-format msgid "%qE attribute only applies to functions" @@ -42268,22 +42311,22 @@ msgid "argument of %qE attribute ignored" msgstr "ĐżĐ°ĐŒĐ”Ń€ \"%s\" Đ±ĐŸĐ»ŃŒŃˆ Ń‡Đ°ĐŒ %d баĐčт" #: config/arc/arc.cc:11018 config/avr/avr.cc:11452 config/bfin/bfin.cc:4817 -#: config/mingw/winnt.cc:63 config/nvptx/nvptx.cc:5911 +#: config/mingw/winnt.cc:63 config/nvptx/nvptx.cc:5917 #, fuzzy, gcc-internal-format msgid "%qE attribute only applies to variables" msgstr "\"%s\" Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚ Ń–ĐłĐœĐ°Ń€Ń‹Ń€ŃƒĐ”Ń†Ń†Đ°" -#: config/arm/aarch-common.cc:553 config/i386/i386.cc:25075 +#: config/arm/aarch-common.cc:553 config/i386/i386.cc:25198 #, gcc-internal-format msgid "alternatives not allowed in % flag output" msgstr "" -#: config/arm/aarch-common.cc:614 config/i386/i386.cc:25139 +#: config/arm/aarch-common.cc:614 config/i386/i386.cc:25262 #, gcc-internal-format msgid "unknown % flag output %qs" msgstr "" -#: config/arm/aarch-common.cc:624 config/i386/i386.cc:25168 +#: config/arm/aarch-common.cc:624 config/i386/i386.cc:25291 #, gcc-internal-format msgid "invalid type for % flag output" msgstr "" @@ -42822,12 +42865,12 @@ msgstr "-pipe ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаДцца" msgid "%<-fPIE%> is not supported" msgstr "-pipe ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаДцца" -#: config/avr/avr.cc:1019 config/avr/avr.cc:1024 config/riscv/riscv.cc:12976 +#: config/avr/avr.cc:1019 config/avr/avr.cc:1024 config/riscv/riscv.cc:12979 #, gcc-internal-format msgid "function attributes %qs and %qs are mutually exclusive" msgstr "" -#: config/avr/avr.cc:1046 config/riscv/riscv.cc:12988 +#: config/avr/avr.cc:1046 config/riscv/riscv.cc:12991 #, fuzzy, gcc-internal-format #| msgid "virtual functions cannot be friends" msgid "%qs function cannot have arguments" @@ -42838,7 +42881,7 @@ msgstr "ĐČŃ–Ń€Ń‚ŃƒĐ°Đ»ŃŒĐœŃ‹Ń Ń„ŃƒĐœĐșцыі ĐœĐ” ĐŒĐŸĐłŃƒŃ†ŃŒ Đ±Ń‹Ń†ŃŒ ŃŃĐ± msgid "method %qs has an implicit % argument" msgstr "" -#: config/avr/avr.cc:1052 config/riscv/riscv.cc:12985 +#: config/avr/avr.cc:1052 config/riscv/riscv.cc:12988 #, fuzzy, gcc-internal-format #| msgid "function does not return string type" msgid "%qs function cannot return a value" @@ -43171,7 +43214,7 @@ msgstr "" #: config/bpf/bpf.cc:1058 config/loongarch/loongarch-builtins.cc:3042 #: config/mips/mips.cc:17579 config/riscv/riscv-builtins.cc:369 -#: config/riscv/riscv-vector-builtins.cc:5196 +#: config/riscv/riscv-vector-builtins.cc:5203 #, fuzzy, gcc-internal-format #| msgid "too many arguments to function" msgid "invalid argument to built-in function" @@ -43492,7 +43535,7 @@ msgstr "" msgid "using %, ignoring runtime setting" msgstr "" -#: config/gcn/gcn.cc:6607 config/nvptx/nvptx.cc:6741 +#: config/gcn/gcn.cc:6607 config/nvptx/nvptx.cc:6747 #, gcc-internal-format msgid "using %, ignoring %d" msgstr "" @@ -43664,169 +43707,169 @@ msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃ msgid "parameter to builtin not valid: %s" msgstr "ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€ \"%s\" Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°ĐČĐ°ĐœŃ‹" -#: config/i386/i386-expand.cc:11087 +#: config/i386/i386-expand.cc:11093 #, gcc-internal-format msgid "interrupt service routine cannot be called directly" msgstr "" -#: config/i386/i386-expand.cc:11562 config/i386/i386-expand.cc:13276 +#: config/i386/i386-expand.cc:11568 config/i386/i386-expand.cc:13282 #, fuzzy, gcc-internal-format msgid "the last argument must be a 2-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:12062 +#: config/i386/i386-expand.cc:12068 #, fuzzy, gcc-internal-format msgid "the fifth argument must be an 8-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:12157 +#: config/i386/i386-expand.cc:12163 #, fuzzy, gcc-internal-format msgid "the third argument must be an 8-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:13205 +#: config/i386/i386-expand.cc:13211 #, fuzzy, gcc-internal-format msgid "the last argument must be an 1-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:13220 +#: config/i386/i386-expand.cc:13226 #, fuzzy, gcc-internal-format msgid "the last argument must be a 3-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:13255 +#: config/i386/i386-expand.cc:13261 #, fuzzy, gcc-internal-format msgid "the last argument must be a 4-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:13295 +#: config/i386/i386-expand.cc:13301 #, fuzzy, gcc-internal-format msgid "the last argument must be a 1-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:13304 +#: config/i386/i386-expand.cc:13310 #, gcc-internal-format, gfc-internal-format msgid "'%s' needs isa option %s" msgstr "" -#: config/i386/i386-expand.cc:13317 +#: config/i386/i386-expand.cc:13323 #, fuzzy, gcc-internal-format msgid "the last argument must be a 5-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:13327 +#: config/i386/i386-expand.cc:13333 #, gcc-internal-format msgid "the next to last argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:13332 +#: config/i386/i386-expand.cc:13338 #, fuzzy, gcc-internal-format msgid "the last argument must be an 8-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:13471 +#: config/i386/i386-expand.cc:13477 #, fuzzy, gcc-internal-format msgid "the third argument must be comparison constant" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: config/i386/i386-expand.cc:13476 +#: config/i386/i386-expand.cc:13482 #, gcc-internal-format msgid "incorrect comparison mode" msgstr "" -#: config/i386/i386-expand.cc:13482 config/i386/i386-expand.cc:13905 +#: config/i386/i386-expand.cc:13488 config/i386/i386-expand.cc:13911 #, gcc-internal-format msgid "incorrect rounding operand" msgstr "" -#: config/i386/i386-expand.cc:13885 +#: config/i386/i386-expand.cc:13891 #, fuzzy, gcc-internal-format msgid "the immediate argument must be a 4-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:13893 +#: config/i386/i386-expand.cc:13899 #, fuzzy, gcc-internal-format msgid "the immediate argument must be a 5-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:13896 +#: config/i386/i386-expand.cc:13902 #, gcc-internal-format msgid "the immediate argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386-expand.cc:14376 +#: config/i386/i386-expand.cc:14382 #, gcc-internal-format msgid "the fourth argument must be one of enum %qs" msgstr "" -#: config/i386/i386-expand.cc:14446 +#: config/i386/i386-expand.cc:14452 #, gcc-internal-format msgid "selector must be an integer constant in the range [0, %wi]" msgstr "" -#: config/i386/i386-expand.cc:14702 +#: config/i386/i386-expand.cc:14708 #, gcc-internal-format msgid "%qE needs unknown isa option" msgstr "" -#: config/i386/i386-expand.cc:14706 +#: config/i386/i386-expand.cc:14712 #, fuzzy, gcc-internal-format msgid "%qE needs isa option %s" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар %s" -#: config/i386/i386-expand.cc:15206 +#: config/i386/i386-expand.cc:15212 #, fuzzy, gcc-internal-format msgid "second, third and fourth argument must be a const" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: config/i386/i386-expand.cc:15212 +#: config/i386/i386-expand.cc:15218 #, fuzzy, gcc-internal-format msgid "invalid second argument to %<__builtin_ia32_prefetch%>; using zero" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: config/i386/i386-expand.cc:15221 +#: config/i386/i386-expand.cc:15227 #, fuzzy, gcc-internal-format #| msgid "invalid %%r value" msgid "invalid third argument" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” %%r" #. Ignore the hint. -#: config/i386/i386-expand.cc:15230 config/i386/i386-expand.cc:15291 +#: config/i386/i386-expand.cc:15236 config/i386/i386-expand.cc:15297 #, gcc-internal-format msgid "instruction prefetch applies when in 64-bit mode with RIP-relative addressing and option %<-mprefetchi%>; they stay NOPs otherwise" msgstr "" -#: config/i386/i386-expand.cc:15240 +#: config/i386/i386-expand.cc:15246 #, gcc-internal-format msgid "invalid forth argument to %<__builtin_ia32_prefetch%>; using zero" msgstr "" -#: config/i386/i386-expand.cc:15251 +#: config/i386/i386-expand.cc:15257 #, fuzzy, gcc-internal-format msgid "invalid third argument to %<__builtin_ia32_prefetch%>; using zero" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: config/i386/i386-expand.cc:15279 +#: config/i386/i386-expand.cc:15285 #, fuzzy, gcc-internal-format msgid "second argument must be a const" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: config/i386/i386-expand.cc:15825 +#: config/i386/i386-expand.cc:15831 #, fuzzy, gcc-internal-format msgid "the last argument must be a 32-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:15858 +#: config/i386/i386-expand.cc:15864 #, fuzzy, gcc-internal-format msgid "last argument must be an immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: config/i386/i386-expand.cc:16596 config/i386/i386-expand.cc:16808 +#: config/i386/i386-expand.cc:16602 config/i386/i386-expand.cc:16814 #, gcc-internal-format msgid "the last argument must be scale 1, 2, 4, 8" msgstr "" -#: config/i386/i386-expand.cc:16826 +#: config/i386/i386-expand.cc:16832 #, fuzzy, gcc-internal-format msgid "the argument to % intrinsic must be an 8-bit immediate" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" @@ -44223,8 +44266,8 @@ msgstr "" msgid "%<-fcf-protection=full%> is not enabled by %<-fhardened%> because it was specified on the command line" msgstr "" -#: config/i386/i386-options.cc:3138 config/riscv/riscv.cc:12356 -#: config/riscv/riscv.cc:12360 +#: config/i386/i386-options.cc:3138 config/riscv/riscv.cc:12359 +#: config/riscv/riscv.cc:12363 #, fuzzy, gcc-internal-format msgid "%<-fcf-protection%> is not compatible with this target" msgstr "Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚Ń‹ сДĐșцыі ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаюцца ĐŽĐ»Ń гэтаĐč ĐŒŃŃ‚Ń‹" @@ -44468,7 +44511,7 @@ msgstr "" msgid "the ABI of passing C structures with zero-width bit-fields has changed in GCC %{12.1%}" msgstr "" -#: config/i386/i386.cc:2835 config/i386/i386.cc:4212 config/i386/i386.cc:4222 +#: config/i386/i386.cc:2835 config/i386/i386.cc:4223 config/i386/i386.cc:4233 #, gcc-internal-format msgid "SSE register return with SSE2 disabled" msgstr "" @@ -44493,12 +44536,12 @@ msgstr "" msgid "x87 register return with x87 disabled" msgstr "" -#: config/i386/i386.cc:3194 config/i386/i386.cc:3439 config/i386/i386.cc:4240 +#: config/i386/i386.cc:3194 config/i386/i386.cc:3439 config/i386/i386.cc:4251 #, gcc-internal-format msgid "calling %qD with SSE calling convention without SSE/SSE2 enabled" msgstr "" -#: config/i386/i386.cc:3196 config/i386/i386.cc:3441 config/i386/i386.cc:4242 +#: config/i386/i386.cc:3196 config/i386/i386.cc:3441 config/i386/i386.cc:4253 #, gcc-internal-format msgid "this is a GCC bug that can be worked around by adding attribute used to function called" msgstr "" @@ -44508,128 +44551,128 @@ msgstr "" msgid "the ABI for passing parameters with %d-byte alignment has changed in GCC 4.6" msgstr "" -#: config/i386/i386.cc:6936 +#: config/i386/i386.cc:6947 #, gcc-internal-format msgid "%<-mcall-ms2sysv-xlogues%> is not compatible with %s" msgstr "" -#: config/i386/i386.cc:9289 +#: config/i386/i386.cc:9313 #, gcc-internal-format msgid "% attribute is not compatible with %<-mfentry%> for 32-bit" msgstr "" -#: config/i386/i386.cc:9379 +#: config/i386/i386.cc:9403 #, gcc-internal-format msgid "Dynamic Realign Argument Pointer (DRAP) not supported in interrupt service routine. This may be worked around by avoiding functions with aggregate return." msgstr "" -#: config/i386/i386.cc:10459 +#: config/i386/i386.cc:10483 #, gcc-internal-format msgid "Stack realignment not supported with %<__builtin_eh_return%>" msgstr "" -#: config/i386/i386.cc:10464 +#: config/i386/i386.cc:10488 #, gcc-internal-format msgid "regparm nested function not supported with %<__builtin_eh_return%>" msgstr "" -#: config/i386/i386.cc:10855 +#: config/i386/i386.cc:10879 #, gcc-internal-format msgid "%<-fsplit-stack%> does not support fastcall with nested function" msgstr "" -#: config/i386/i386.cc:10875 +#: config/i386/i386.cc:10899 #, gcc-internal-format msgid "%<-fsplit-stack%> does not support 2 register parameters for a nested function" msgstr "" #. FIXME: We could make this work by pushing a register #. around the addition and comparison. -#: config/i386/i386.cc:10886 +#: config/i386/i386.cc:10910 #, gcc-internal-format msgid "%<-fsplit-stack%> does not support 3 register parameters" msgstr "" -#: config/i386/i386.cc:12641 +#: config/i386/i386.cc:12665 #, gcc-internal-format msgid "%<-mtls-dialect=gnu2%> must be used with a function with the % attribute" msgstr "" -#: config/i386/i386.cc:12645 +#: config/i386/i386.cc:12669 #, gcc-internal-format msgid "%<-mtls-dialect=gnu2%> must be used with an exception service routine" msgstr "" -#: config/i386/i386.cc:12647 +#: config/i386/i386.cc:12671 #, gcc-internal-format msgid "%<-mtls-dialect=gnu2%> must be used with an interrupt service routine" msgstr "" -#: config/i386/i386.cc:13991 +#: config/i386/i386.cc:14015 #, gcc-internal-format msgid "% modifier on non-integer register" msgstr "" -#: config/i386/i386.cc:14002 config/i386/i386.cc:14016 +#: config/i386/i386.cc:14026 config/i386/i386.cc:14040 #, gcc-internal-format msgid "unsupported size for integer register" msgstr "" -#: config/i386/i386.cc:14048 +#: config/i386/i386.cc:14072 #, gcc-internal-format msgid "extended registers have no high halves" msgstr "" -#: config/i386/i386.cc:14063 +#: config/i386/i386.cc:14087 #, gcc-internal-format msgid "unsupported operand size for extended register" msgstr "" -#: config/i386/i386.cc:14262 config/i386/i386.cc:14264 +#: config/i386/i386.cc:14286 config/i386/i386.cc:14288 #, gcc-internal-format msgid "non-integer operand used with operand code %" msgstr "" -#: config/i386/i386.cc:18507 +#: config/i386/i386.cc:18531 #, gcc-internal-format msgid "empty class %qT parameter passing ABI changes in %<-fabi-version=12%> (GCC 8)" msgstr "" -#: config/i386/i386.cc:23913 +#: config/i386/i386.cc:24036 msgid "the alignment of %<_Atomic %T%> fields changed in %{GCC 11.1%}" msgstr "" -#: config/i386/i386.cc:24008 +#: config/i386/i386.cc:24131 #, gcc-internal-format msgid "no register available for profiling %<-mcmodel=large%s%>" msgstr "" -#: config/i386/i386.cc:24112 +#: config/i386/i386.cc:24235 #, gcc-internal-format msgid "profiling %<-mcmodel=large%> with PIC is not supported" msgstr "" -#: config/i386/i386.cc:24827 +#: config/i386/i386.cc:24950 #, gcc-internal-format msgid "%<__bfloat16%> is redefined from typedef % to real %<__bf16%> since GCC 13.1, be careful of implicit conversion between %<__bf16%> and %; an explicit bitcast may be needed here" msgstr "" -#: config/i386/i386.cc:26876 +#: config/i386/i386.cc:26999 #, gcc-internal-format msgid "unknown architecture specific memory model" msgstr "" -#: config/i386/i386.cc:26883 +#: config/i386/i386.cc:27006 #, gcc-internal-format msgid "% not used with % or stronger memory model" msgstr "" -#: config/i386/i386.cc:26890 +#: config/i386/i386.cc:27013 #, gcc-internal-format msgid "% not used with % or stronger memory model" msgstr "" -#: config/i386/i386.cc:27576 +#: config/i386/i386.cc:27699 #, gcc-internal-format msgid "%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>" msgstr "" @@ -44681,7 +44724,7 @@ msgstr "" msgid "argument %qd is not a constant" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: config/iq2000/iq2000.cc:2890 config/xtensa/xtensa.cc:3116 +#: config/iq2000/iq2000.cc:2890 config/xtensa/xtensa.cc:3121 #, gcc-internal-format msgid "%, null pointer" msgstr "" @@ -44691,7 +44734,7 @@ msgstr "" msgid "%: Unknown punctuation %<%c%>" msgstr "" -#: config/iq2000/iq2000.cc:3054 config/xtensa/xtensa.cc:2942 +#: config/iq2000/iq2000.cc:3054 config/xtensa/xtensa.cc:2947 #, gcc-internal-format msgid "% null pointer" msgstr "" @@ -44846,48 +44889,48 @@ msgstr "" msgid "attribute % argument %qs is unknown" msgstr "" -#: config/loongarch/loongarch-target-attr.cc:544 +#: config/loongarch/loongarch-target-attr.cc:541 #, gcc-internal-format msgid "\"default\" cannot be set together with other features in %qs" msgstr "" -#: config/loongarch/loongarch-target-attr.cc:556 +#: config/loongarch/loongarch-target-attr.cc:553 #, gcc-internal-format msgid "character before %<;%> in attribute %qs cannot be empty" msgstr "" -#: config/loongarch/loongarch-target-attr.cc:567 +#: config/loongarch/loongarch-target-attr.cc:564 #, gcc-internal-format msgid "in attribute %qs priority cannot be empty" msgstr "" -#: config/loongarch/loongarch-target-attr.cc:576 +#: config/loongarch/loongarch-target-attr.cc:573 #, gcc-internal-format msgid "in attribute %qs the number of features cannot exceed two" msgstr "" -#: config/loongarch/loongarch-target-attr.cc:600 +#: config/loongarch/loongarch-target-attr.cc:597 #, gcc-internal-format msgid "Setting the priority value to %qs is illegal in attribute %qs" msgstr "" -#: config/loongarch/loongarch-target-attr.cc:611 +#: config/loongarch/loongarch-target-attr.cc:608 #, gcc-internal-format msgid "in attribute %qs, the second feature should be \"priority=%\" instead of %qs" msgstr "" -#: config/loongarch/loongarch-target-attr.cc:630 -#: config/loongarch/loongarch-target-attr.cc:662 +#: config/loongarch/loongarch-target-attr.cc:627 +#: config/loongarch/loongarch-target-attr.cc:661 #, gcc-internal-format msgid "in attribute %qs you need to set a legal value for \"arch\"" msgstr "" -#: config/loongarch/loongarch-target-attr.cc:684 +#: config/loongarch/loongarch-target-attr.cc:685 #, gcc-internal-format msgid "attribute %qs is not supported in % or %" msgstr "" -#: config/loongarch/loongarch-target-attr.cc:701 +#: config/loongarch/loongarch-target-attr.cc:704 #, fuzzy, gcc-internal-format msgid "%qs is not supported in target attribute" msgstr "__buitin_saveregs ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаДцца гэтаĐč ĐŒŃŃ‚Đ°Đč" @@ -45651,7 +45694,7 @@ msgid "MSP430 built-in functions only work inside interrupt handlers" msgstr "" #: config/msp430/msp430.cc:2861 config/pru/pru.cc:3165 config/rx/rx.cc:2651 -#: config/xtensa/xtensa.cc:4155 config/xtensa/xtensa.cc:4181 +#: config/xtensa/xtensa.cc:4161 config/xtensa/xtensa.cc:4187 #, gcc-internal-format msgid "bad builtin code" msgstr "" @@ -45879,82 +45922,82 @@ msgstr "ĐœĐ”ĐŒĐ°ĐłŃ‡Ń‹ĐŒĐ° Đ·Đ°Ń‡Ń‹ĐœŃ–Ń†ŃŒ уĐČĐ°Ń…ĐŸĐŽĐ·ŃŃ‡Ń‹ фаĐčĐ» %s" msgid "option %s is not supported together with %<-fopenacc%>" msgstr "" -#: config/nvptx/nvptx.cc:348 +#: config/nvptx/nvptx.cc:354 #, gcc-internal-format msgid "PTX version (%<-mptx%>) needs to be at least %s to support selected %<-misa%> (sm_%s)" msgstr "" -#: config/nvptx/nvptx.cc:365 +#: config/nvptx/nvptx.cc:371 #, gcc-internal-format msgid "%<-march=%> must be specified" msgstr "" -#: config/nvptx/nvptx.cc:388 +#: config/nvptx/nvptx.cc:394 #, gcc-internal-format msgid "not generating patch area, nops not supported" msgstr "" -#: config/nvptx/nvptx.cc:485 +#: config/nvptx/nvptx.cc:491 #, gcc-internal-format msgid "static initialization of variable %q+D in %<.shared%> memory is not supported" msgstr "" -#: config/nvptx/nvptx.cc:2407 +#: config/nvptx/nvptx.cc:2413 #, gcc-internal-format msgid "cannot emit unaligned pointers in ptx assembly" msgstr "" -#: config/nvptx/nvptx.cc:2657 +#: config/nvptx/nvptx.cc:2663 #, gcc-internal-format msgid "PTX does not support weak declarations (only weak definitions)" msgstr "" -#: config/nvptx/nvptx.cc:5893 +#: config/nvptx/nvptx.cc:5899 #, gcc-internal-format msgid "%qE attribute requires a void return type" msgstr "" -#: config/nvptx/nvptx.cc:5916 +#: config/nvptx/nvptx.cc:5922 #, gcc-internal-format msgid "%qE attribute not allowed with auto storage class" msgstr "" -#: config/nvptx/nvptx.cc:6361 +#: config/nvptx/nvptx.cc:6367 #, gcc-internal-format msgid "barrier value must be within [0,15]" msgstr "" -#: config/nvptx/nvptx.cc:6374 +#: config/nvptx/nvptx.cc:6380 #, fuzzy, gcc-internal-format msgid "complement argument must be constant" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: config/nvptx/nvptx.cc:6714 +#: config/nvptx/nvptx.cc:6720 #, gcc-internal-format msgid "using % due to call to vector-partitionable routine, ignoring %d" msgstr "" -#: config/nvptx/nvptx.cc:6722 +#: config/nvptx/nvptx.cc:6728 #, gcc-internal-format msgid "using %, ignoring runtime setting" msgstr "" -#: config/nvptx/nvptx.cc:6736 +#: config/nvptx/nvptx.cc:6742 #, gcc-internal-format msgid "using %, ignoring %d" msgstr "" -#: config/nvptx/nvptx.cc:7622 +#: config/nvptx/nvptx.cc:7628 #, gcc-internal-format msgid "variable %qD adjusted for OpenACC privatization level: %qs" msgstr "" -#: config/nvptx/nvptx.cc:7761 +#: config/nvptx/nvptx.cc:7767 #, fuzzy, gcc-internal-format msgid "weak alias definitions not supported in this configuration" msgstr "Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚Ń‹ сДĐșцыі ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаюцца ĐŽĐ»Ń гэтаĐč ĐŒŃŃ‚Ń‹" -#: config/nvptx/nvptx.cc:7774 +#: config/nvptx/nvptx.cc:7780 #, fuzzy, gcc-internal-format msgid "non-function alias definitions not supported in this configuration" msgstr "Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚Ń‹ сДĐșцыі ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаюцца ĐŽĐ»Ń гэтаĐč ĐŒŃŃ‚Ń‹" @@ -46184,323 +46227,323 @@ msgstr "" msgid "invalid number of operands for insn %s, expected %d but got %d.\n" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5246 +#: config/riscv/riscv-vector-builtins.cc:5253 #, gcc-internal-format msgid "passing %wd to argument %d of %qE, which expects a value in the range [%wd, %wd] or %wd" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5455 +#: config/riscv/riscv-vector-builtins.cc:5462 #, gcc-internal-format msgid "RVV type %qT does not have a fixed size" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5461 +#: config/riscv/riscv-vector-builtins.cc:5468 #, gcc-internal-format msgid "RVV type %qT does not have a defined alignment" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5476 +#: config/riscv/riscv-vector-builtins.cc:5483 #, gcc-internal-format msgid "arithmetic on pointer to RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5484 +#: config/riscv/riscv-vector-builtins.cc:5491 #, gcc-internal-format msgid "member variables cannot have RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5486 +#: config/riscv/riscv-vector-builtins.cc:5493 #, gcc-internal-format msgid "fields cannot have RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5492 +#: config/riscv/riscv-vector-builtins.cc:5499 #, gcc-internal-format msgid "array elements cannot have RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5498 +#: config/riscv/riscv-vector-builtins.cc:5505 #, gcc-internal-format msgid "cannot allocate objects with RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5504 +#: config/riscv/riscv-vector-builtins.cc:5511 #, gcc-internal-format msgid "cannot delete objects with RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5510 +#: config/riscv/riscv-vector-builtins.cc:5517 #, gcc-internal-format msgid "cannot throw or catch RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5516 +#: config/riscv/riscv-vector-builtins.cc:5523 #, gcc-internal-format msgid "capture by copy of RVV type %qT" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5522 +#: config/riscv/riscv-vector-builtins.cc:5529 #, gcc-internal-format msgid "RVV type %qT not allowed in % clause" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5532 +#: config/riscv/riscv-vector-builtins.cc:5539 #, gcc-internal-format msgid "RVV type %qT not allowed in % % clause" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5538 +#: config/riscv/riscv-vector-builtins.cc:5545 #, gcc-internal-format msgid "RVV type %qT not allowed in % % clause" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5544 +#: config/riscv/riscv-vector-builtins.cc:5551 #, gcc-internal-format msgid "RVV type %qT not allowed in % device clauses" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5656 +#: config/riscv/riscv-vector-builtins.cc:5663 #, gcc-internal-format msgid "built-in function %qE requires the zvfbfmin or zvfbfwma ISA extension" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5666 +#: config/riscv/riscv-vector-builtins.cc:5673 #, gcc-internal-format msgid "built-in function %qE requires the zvfhmin or zvfh ISA extension" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5676 +#: config/riscv/riscv-vector-builtins.cc:5683 #, gcc-internal-format msgid "built-in function %qE requires the zve32f, zve64f, zve64d or v ISA extension" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5686 +#: config/riscv/riscv-vector-builtins.cc:5693 #, gcc-internal-format msgid "built-in function %qE requires the zve64d or v ISA extension" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5695 +#: config/riscv/riscv-vector-builtins.cc:5702 #, gcc-internal-format msgid "built-in function %qE requires the zve64x, zve64f, zve64d or v ISA extension" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5713 +#: config/riscv/riscv-vector-builtins.cc:5720 #, fuzzy, gcc-internal-format msgid "unrecognized RVV builtin" msgstr "ĐœĐ”Ń€Đ°ŃĐżĐ°Đ·ĐœĐ°ĐœŃ‹ ĐČыбар \"-%s\"" -#: config/riscv/riscv-vector-builtins.cc:5720 +#: config/riscv/riscv-vector-builtins.cc:5727 #, gcc-internal-format msgid "built-in function %qE requires the %qs ISA extension" msgstr "" -#: config/riscv/riscv-vector-builtins.cc:5772 +#: config/riscv/riscv-vector-builtins.cc:5779 #, gcc-internal-format msgid "no matching function call to %qE with empty arguments" msgstr "" -#: config/riscv/riscv.cc:1033 +#: config/riscv/riscv.cc:1036 #, gcc-internal-format msgid "unknown cpu %qs for %<-mtune%>" msgstr "" -#: config/riscv/riscv.cc:3464 +#: config/riscv/riscv.cc:3467 #, gcc-internal-format msgid "this operation requires the RVV ISA extension" msgstr "" -#: config/riscv/riscv.cc:3465 +#: config/riscv/riscv.cc:3468 #, gcc-internal-format msgid "you can enable RVV using the command-line option %<-march%>, or by using the % attribute or pragma" msgstr "" -#: config/riscv/riscv.cc:6308 config/riscv/riscv.cc:6396 +#: config/riscv/riscv.cc:6311 config/riscv/riscv.cc:6399 #, gcc-internal-format msgid "ABI for flattened struct with zero-length bit-fields changed in GCC 10" msgstr "" -#: config/riscv/riscv.cc:6337 config/riscv/riscv.cc:6414 +#: config/riscv/riscv.cc:6340 config/riscv/riscv.cc:6417 #, gcc-internal-format msgid "ABI for flattened empty union and zero length array changed in GCC 16" msgstr "" -#: config/riscv/riscv.cc:7029 +#: config/riscv/riscv.cc:7032 #, fuzzy, gcc-internal-format msgid "RVV type %qT cannot be passed to an unprototyped function" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" -#: config/riscv/riscv.cc:7318 config/riscv/riscv.cc:7380 +#: config/riscv/riscv.cc:7321 config/riscv/riscv.cc:7383 #, gcc-internal-format msgid "%s %qT requires the V ISA extension" msgstr "" -#: config/riscv/riscv.cc:7330 +#: config/riscv/riscv.cc:7333 #, gcc-internal-format msgid "%s %qT requires the zve64x, zve64f, zve64d or v ISA extension" msgstr "" -#: config/riscv/riscv.cc:7344 +#: config/riscv/riscv.cc:7347 #, gcc-internal-format msgid "%s %qT requires the zvfhmin or zvfh ISA extension" msgstr "" -#: config/riscv/riscv.cc:7353 +#: config/riscv/riscv.cc:7356 #, gcc-internal-format msgid "%s %qT requires the zve32f, zve64f, zve64d or v ISA extension" msgstr "" -#: config/riscv/riscv.cc:7362 +#: config/riscv/riscv.cc:7365 #, gcc-internal-format msgid "%s %qT requires the zve64d or v ISA extension" msgstr "" -#: config/riscv/riscv.cc:7372 +#: config/riscv/riscv.cc:7375 #, gcc-internal-format msgid "%s %qT requires the minimal vector length %qd but %qd is given" msgstr "" -#: config/riscv/riscv.cc:7438 +#: config/riscv/riscv.cc:7441 #, gcc-internal-format msgid "function attribute %qs requires the V ISA extension" msgstr "" -#: config/riscv/riscv.cc:7464 +#: config/riscv/riscv.cc:7467 #, gcc-internal-format msgid "unsupported % value %d for %qs attribute; % must be in the range [32, 16384] and must be a power of 2" msgstr "" -#: config/riscv/riscv.cc:7489 +#: config/riscv/riscv.cc:7492 #, gcc-internal-format msgid "function attribute %qs requires the vector ISA extension" msgstr "" -#: config/riscv/riscv.cc:7599 +#: config/riscv/riscv.cc:7602 #, gcc-internal-format msgid "attribute 'rnmi' requires the Smrnmi ISA extension" msgstr "" -#: config/riscv/riscv.cc:7607 +#: config/riscv/riscv.cc:7610 #, gcc-internal-format msgid "argument to %qE attribute is not %<\"supervisor\"%>, %<\"machine\"%>, or %<\"rnmi\"%>" msgstr "" -#: config/riscv/riscv.cc:7649 +#: config/riscv/riscv.cc:7652 #, gcc-internal-format msgid "%qs is only supported when %<-mrvv-vector-bits=zvl%> is specified" msgstr "" -#: config/riscv/riscv.cc:7658 +#: config/riscv/riscv.cc:7661 #, fuzzy, gcc-internal-format msgid "%qs applied to non-RVV type %qT" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: config/riscv/riscv.cc:7666 +#: config/riscv/riscv.cc:7669 #, gcc-internal-format msgid "%qs requires an integer constant" msgstr "" -#: config/riscv/riscv.cc:7676 +#: config/riscv/riscv.cc:7679 #, gcc-internal-format msgid "invalid RVV vector size %qd, expected size is %qd based on LMUL of type and %qs" msgstr "" -#: config/riscv/riscv.cc:12270 +#: config/riscv/riscv.cc:12273 #, gcc-internal-format msgid "%<-mdiv%> requires %<-march%> to subsume the % extension" msgstr "" -#: config/riscv/riscv.cc:12275 +#: config/riscv/riscv.cc:12278 #, gcc-internal-format msgid "Currently the % implementation requires the % extension" msgstr "" -#: config/riscv/riscv.cc:12335 +#: config/riscv/riscv.cc:12338 #, gcc-internal-format msgid "Current RISC-V GCC does not support VLEN greater than 4096bit for 'V' Extension" msgstr "" -#: config/riscv/riscv.cc:12341 +#: config/riscv/riscv.cc:12344 #, gcc-internal-format msgid "Current RISC-V GCC does not support RVV in big-endian mode" msgstr "" -#: config/riscv/riscv.cc:12387 config/riscv/riscv.cc:12390 +#: config/riscv/riscv.cc:12390 config/riscv/riscv.cc:12393 #, gcc-internal-format msgid "code model %qs with %qs" msgstr "" -#: config/riscv/riscv.cc:12419 +#: config/riscv/riscv.cc:12422 #, gcc-internal-format msgid "requested ABI requires %<-march%> to subsume the %qc extension" msgstr "" -#: config/riscv/riscv.cc:12426 +#: config/riscv/riscv.cc:12429 #, gcc-internal-format msgid "rv32e requires ilp32e ABI" msgstr "" -#: config/riscv/riscv.cc:12428 +#: config/riscv/riscv.cc:12431 #, gcc-internal-format msgid "rv64e requires lp64e ABI" msgstr "" -#: config/riscv/riscv.cc:12433 +#: config/riscv/riscv.cc:12436 #, fuzzy, gcc-internal-format #| msgid "ISO C89 does not support complex types" msgid "ILP32E ABI does not support the %qc extension" msgstr "ISO C89 ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД ĐșĐŸĐŒĐ»Đ”ĐșŃĐœŃ‹Ń тыпы" -#: config/riscv/riscv.cc:12438 +#: config/riscv/riscv.cc:12441 #, gcc-internal-format msgid "LP64E ABI is marked for deprecation in GCC" msgstr "" -#: config/riscv/riscv.cc:12439 +#: config/riscv/riscv.cc:12442 msgid "if you need LP64E please notify the GCC project via %{PR116152%}" msgstr "" -#: config/riscv/riscv.cc:12447 +#: config/riscv/riscv.cc:12450 #, gcc-internal-format msgid "z*inx requires ABI ilp32, ilp32e, lp64 or lp64e" msgstr "" -#: config/riscv/riscv.cc:12451 +#: config/riscv/riscv.cc:12454 #, gcc-internal-format msgid "ABI requires %<-march=rv%d%>" msgstr "" -#: config/riscv/riscv.cc:12461 +#: config/riscv/riscv.cc:12464 #, gcc-internal-format msgid "%<-mpreferred-stack-boundary=%d%> must be between %d and %d" msgstr "" -#: config/riscv/riscv.cc:12474 +#: config/riscv/riscv.cc:12477 #, gcc-internal-format msgid "%<-mriscv-attribute%> RISC-V ELF attribute requires GNU as 2.32 [%<-mriscv-attribute%>]" msgstr "" -#: config/riscv/riscv.cc:12501 config/rs6000/rs6000.cc:4527 +#: config/riscv/riscv.cc:12504 config/rs6000/rs6000.cc:4527 #, fuzzy, gcc-internal-format #| msgid "invalid register name for `%s'" msgid "%qs is not a valid base register in %qs" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Ń ĐœĐ°Đ·ĐČа рэгістра `%s'" -#: config/riscv/riscv.cc:12515 config/rs6000/rs6000.cc:4510 +#: config/riscv/riscv.cc:12518 config/rs6000/rs6000.cc:4510 #, gcc-internal-format msgid "%qs is not a valid number in %qs" msgstr "" -#: config/riscv/riscv.cc:13047 +#: config/riscv/riscv.cc:13050 #, gcc-internal-format msgid "%qs function cannot have different interrupt type" msgstr "" -#: config/riscv/riscv.cc:13644 +#: config/riscv/riscv.cc:13657 #, gcc-internal-format msgid "cannot allocate vl register for %qs on this target" msgstr "" -#: config/riscv/riscv.cc:15067 +#: config/riscv/riscv.cc:15080 msgid "invalid version %qB for % attribute" msgstr "" @@ -47511,22 +47554,22 @@ msgstr "" msgid "% support" msgstr "" -#: config/stormy16/stormy16.cc:1452 +#: config/stormy16/stormy16.cc:1453 #, gcc-internal-format msgid "cannot use % in interrupt function" msgstr "" -#: config/stormy16/stormy16.cc:2031 +#: config/stormy16/stormy16.cc:2032 #, gcc-internal-format, gfc-internal-format msgid "switch statement of size %lu entries too large" msgstr "" -#: config/stormy16/stormy16.cc:2425 +#: config/stormy16/stormy16.cc:2426 #, fuzzy, gcc-internal-format msgid "%<__BELOW100__%> attribute only applies to variables" msgstr "\"%s\" Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚ Ń–ĐłĐœĐ°Ń€Ń‹Ń€ŃƒĐ”Ń†Ń†Đ°" -#: config/stormy16/stormy16.cc:2432 +#: config/stormy16/stormy16.cc:2433 #, gcc-internal-format msgid "%<__BELOW100__%> attribute not allowed with auto storage class" msgstr "" @@ -47748,32 +47791,32 @@ msgstr "" msgid "%qs is defined but plugin support is disabled" msgstr "" -#: config/xtensa/xtensa.cc:2778 +#: config/xtensa/xtensa.cc:2783 #, gcc-internal-format msgid "boolean registers required for the floating-point option" msgstr "" -#: config/xtensa/xtensa.cc:2813 +#: config/xtensa/xtensa.cc:2818 #, gcc-internal-format msgid "%<-f%s%> is not supported with CONST16 instructions" msgstr "" -#: config/xtensa/xtensa.cc:2820 +#: config/xtensa/xtensa.cc:2825 #, gcc-internal-format msgid "PIC is required but not supported with CONST16 instructions" msgstr "" -#: config/xtensa/xtensa.cc:4290 +#: config/xtensa/xtensa.cc:4296 #, gcc-internal-format msgid "only uninitialized variables can be placed in a %<.bss%> section" msgstr "" -#: config/xtensa/xtensa.cc:6141 +#: config/xtensa/xtensa.cc:6147 #, gcc-internal-format msgid "constantsynth: method %qs invalid insn sequence, expected %wd (%wx)" msgstr "" -#: config/xtensa/xtensa.cc:6146 +#: config/xtensa/xtensa.cc:6152 #, gcc-internal-format msgid "constantsynth: method %qs value mismatch, expected %wd (%wx) synthesized %wd (%wx)" msgstr "" @@ -47860,7 +47903,7 @@ msgstr "" msgid "%qs attribute only applies to variadic functions" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" -#: ada/gcc-interface/utils.cc:7336 d/d-attribs.cc:362 d/d-attribs.cc:488 +#: ada/gcc-interface/utils.cc:7336 d/d-attribs.cc:365 d/d-attribs.cc:491 #: rust/rust-attribs.cc:195 #, fuzzy, gcc-internal-format #| msgid "`%s' attribute ignored" @@ -47947,8 +47990,8 @@ msgstr "" msgid "could not get size of source file" msgstr "ĐœĐ” ĐŒĐ°ĐłŃƒ Đ·ĐœĐ°Đčсці ĐșŃ€Ń‹ĐœŃ–Ń†Ńƒ %s\n" -#: c/c-convert.cc:104 c/c-typeck.cc:2883 c/c-typeck.cc:15490 cp/typeck.cc:2635 -#: cp/typeck.cc:9874 cp/typeck.cc:10682 d/d-convert.cc:262 +#: c/c-convert.cc:104 c/c-typeck.cc:2889 c/c-typeck.cc:15498 cp/typeck.cc:2635 +#: cp/typeck.cc:9872 cp/typeck.cc:10680 d/d-convert.cc:262 #, gcc-internal-format msgid "void value not ignored as it ought to be" msgstr "" @@ -48439,7 +48482,7 @@ msgstr "" msgid "%qE defined as wrong kind of tag" msgstr "" -#: c/c-decl.cc:4824 cp/tree.cc:5397 +#: c/c-decl.cc:4824 cp/tree.cc:5414 #, gcc-internal-format msgid "%qE attribute applied to %qD with void return type" msgstr "" @@ -48592,7 +48635,7 @@ msgstr "ISO C89 ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД \"long long\"" msgid "ISO C90 does not support %<[*]%> array declarators" msgstr "ISO C89 ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД \"long long\"" -#: c/c-decl.cc:5718 cp/decl2.cc:2180 cp/name-lookup.cc:9309 +#: c/c-decl.cc:5718 cp/decl2.cc:2180 cp/name-lookup.cc:9349 #, gcc-internal-format msgid "% not allowed to be specified in this context" msgstr "" @@ -48603,7 +48646,7 @@ msgstr "" msgid "%q+D is usually a function" msgstr "`%s' - Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" -#: c/c-decl.cc:5815 c/c-decl.cc:10959 cp/decl.cc:19852 +#: c/c-decl.cc:5815 c/c-decl.cc:10959 cp/decl.cc:19918 #, fuzzy, gcc-internal-format #| msgid "no previous declaration for `%s'" msgid "no previous declaration for %qD" @@ -48682,7 +48725,7 @@ msgstr "" msgid "uninitialized % is invalid in C++" msgstr "ĐœĐ” ĐŒĐ°ĐłŃƒ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°ĐČаць ŃŃĐ±Ń€ĐŸŃžŃĐșую Ń„ŃƒĐœĐșцыю \"%s\"" -#: c/c-decl.cc:6356 cp/decl.cc:10251 +#: c/c-decl.cc:6356 cp/decl.cc:10265 #, gcc-internal-format msgid "%q+D in declare target directive does not have mappable type" msgstr "" @@ -48887,7 +48930,7 @@ msgstr "" msgid "storage class specified for unnamed parameter" msgstr "" -#: c/c-decl.cc:7170 cp/decl.cc:14915 +#: c/c-decl.cc:7170 cp/decl.cc:14958 #, gcc-internal-format msgid "storage class specified for typename" msgstr "" @@ -49068,7 +49111,7 @@ msgstr "" msgid "function definition has qualified void return type" msgstr "Ń„ŃƒĐœĐșцыя ĐœĐ” ĐČŃŃ€Ń‚Đ°Đ” тып string" -#: c/c-decl.cc:7724 cp/decl.cc:15330 +#: c/c-decl.cc:7724 cp/decl.cc:15373 #, gcc-internal-format msgid "type qualifiers ignored on function return type" msgstr "" @@ -49197,7 +49240,7 @@ msgstr "" msgid "a member of a structure or union cannot have a variably modified type" msgstr "" -#: c/c-decl.cc:8019 cp/decl.cc:13680 +#: c/c-decl.cc:8019 cp/decl.cc:13723 #, fuzzy, gcc-internal-format msgid "variable or field %qE declared void" msgstr "тып ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ° \"%s\" ĐœĐ” аб'ŃŃžĐ»Đ”ĐœŃ‹" @@ -49413,7 +49456,7 @@ msgstr "" msgid "%qT defined in underspecified object initializer" msgstr "" -#: c/c-decl.cc:9085 cp/decl.cc:6314 cp/parser.cc:31012 +#: c/c-decl.cc:9085 cp/decl.cc:6328 cp/parser.cc:31076 #, gcc-internal-format msgid "declaration does not declare anything" msgstr "" @@ -49480,7 +49523,7 @@ msgstr "" msgid "struct has no members" msgstr "" -#: c/c-decl.cc:9744 cp/decl.cc:16369 +#: c/c-decl.cc:9744 cp/decl.cc:16412 #, gcc-internal-format msgid "flexible array member in union is a GCC extension" msgstr "" @@ -49548,7 +49591,7 @@ msgstr "абĐČŃŃˆŃ‡ŃĐœŃŒĐœĐ” `%#D'" msgid "% declared with but defined without fixed underlying type" msgstr "" -#: c/c-decl.cc:10327 cp/decl.cc:19106 m2/gm2-gcc/m2type.cc:2100 +#: c/c-decl.cc:10327 cp/decl.cc:19170 m2/gm2-gcc/m2type.cc:2100 #, gcc-internal-format msgid "specified mode too small for enumerated values" msgstr "" @@ -49603,7 +49646,7 @@ msgstr "" msgid "ISO C restricts enumerator values to range of % before C23" msgstr "" -#: c/c-decl.cc:10806 cp/decl.cc:6655 cp/decl.cc:19710 +#: c/c-decl.cc:10806 cp/decl.cc:6669 cp/decl.cc:19776 #, gcc-internal-format msgid "inline function %qD given attribute %qs" msgstr "" @@ -49759,12 +49802,12 @@ msgstr "" msgid "argument %qD doesn%'t match prototype" msgstr "" -#: c/c-decl.cc:11607 cp/decl.cc:20645 +#: c/c-decl.cc:11607 cp/decl.cc:20711 #, gcc-internal-format msgid "no return statement in function returning non-void" msgstr "" -#: c/c-decl.cc:11626 cp/decl.cc:20721 +#: c/c-decl.cc:11626 cp/decl.cc:20787 #, fuzzy, gcc-internal-format #| msgid "label `%D' defined but not used" msgid "parameter %qD set but not used" @@ -49848,7 +49891,7 @@ msgstr "" msgid "two or more data types in declaration specifiers" msgstr "" -#: c/c-decl.cc:12221 cp/parser.cc:37533 +#: c/c-decl.cc:12221 cp/parser.cc:37593 #, fuzzy, gcc-internal-format #| msgid "`long long long' is too long for GCC" msgid "% is too long for GCC" @@ -49960,7 +50003,7 @@ msgstr "ISO C89 ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД ĐșĐŸĐŒĐ»Đ”ĐșŃĐœŃ‹Ń тыпы" msgid "ISO C does not support the %<_Float%d%s%> type before C23" msgstr "ISO C ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД ĐșĐŸĐŒĐ»Đ”ĐșŃĐœŃ‹Ń Ń†ŃĐ»Đ°Đ»Ń–ĐșаĐČыя тыпы" -#: c/c-decl.cc:12921 cp/parser.cc:22574 +#: c/c-decl.cc:12921 cp/parser.cc:22638 #, fuzzy, gcc-internal-format msgid "%<_Float%d%s%> is not supported on this target" msgstr "__buitin_saveregs ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаДцца гэтаĐč ĐŒŃŃ‚Đ°Đč" @@ -50125,12 +50168,12 @@ msgstr "" msgid "ISO C does not support %<%s_BitInt(%d)%> before C23" msgstr "ISO C ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД ĐșĐŸĐŒĐ»Đ”ĐșŃĐœŃ‹Ń Ń†ŃĐ»Đ°Đ»Ń–ĐșаĐČыя тыпы" -#: c/c-decl.cc:13967 cp/semantics.cc:6991 +#: c/c-decl.cc:13967 cp/semantics.cc:7012 #, gcc-internal-format msgid "%<#pragma omp declare reduction%> combiner refers to variable %qD which is not % nor %" msgstr "" -#: c/c-decl.cc:13971 cp/semantics.cc:6995 +#: c/c-decl.cc:13971 cp/semantics.cc:7016 #, gcc-internal-format msgid "%<#pragma omp declare reduction%> initializer refers to variable %qD which is not % nor %" msgstr "" @@ -50190,37 +50233,37 @@ msgstr "" msgid "%qs is a keyword with %qs onwards" msgstr "" -#: c/c-fold.cc:410 c/c-typeck.cc:14758 cp/typeck.cc:6053 +#: c/c-fold.cc:410 c/c-typeck.cc:14766 cp/typeck.cc:6048 #, gcc-internal-format msgid "left shift of negative value" msgstr "" -#: c/c-fold.cc:423 c/c-typeck.cc:14767 cp/typeck.cc:6061 +#: c/c-fold.cc:423 c/c-typeck.cc:14775 cp/typeck.cc:6056 #, gcc-internal-format msgid "left shift count is negative" msgstr "" -#: c/c-fold.cc:424 c/c-typeck.cc:14694 cp/typeck.cc:6000 +#: c/c-fold.cc:424 c/c-typeck.cc:14702 cp/typeck.cc:5995 #, gcc-internal-format msgid "right shift count is negative" msgstr "" -#: c/c-fold.cc:434 c/c-typeck.cc:14786 cp/typeck.cc:6069 +#: c/c-fold.cc:434 c/c-typeck.cc:14794 cp/typeck.cc:6064 #, gcc-internal-format msgid "left shift count >= width of type" msgstr "" -#: c/c-fold.cc:435 c/c-typeck.cc:14718 cp/typeck.cc:6011 +#: c/c-fold.cc:435 c/c-typeck.cc:14726 cp/typeck.cc:6006 #, gcc-internal-format msgid "right shift count >= width of type" msgstr "" -#: c/c-fold.cc:442 c/c-typeck.cc:14778 +#: c/c-fold.cc:442 c/c-typeck.cc:14786 #, gcc-internal-format msgid "left shift count >= width of vector element" msgstr "" -#: c/c-fold.cc:443 c/c-typeck.cc:14705 +#: c/c-fold.cc:443 c/c-typeck.cc:14713 #, gcc-internal-format msgid "right shift count >= width of vector element" msgstr "" @@ -50240,7 +50283,7 @@ msgstr "" msgid "to match this %qs" msgstr "" -#: c/c-parser.cc:1513 cp/parser.cc:37770 +#: c/c-parser.cc:1513 cp/parser.cc:37830 #, gcc-internal-format msgid "expected end of line" msgstr "" @@ -50251,7 +50294,7 @@ msgstr "" msgid "ISO C forbids an empty translation unit" msgstr "ISO C ĐœĐ” ЎазĐČĐ°Đ»ŃĐ” пусты Ń–Đ·Ń‹Ń…ĐŸĐŽĐœŃ‹ фаĐčĐ»" -#: c/c-parser.cc:2110 c/c-parser.cc:2119 c/c-parser.cc:29067 cp/parser.cc:54560 +#: c/c-parser.cc:2110 c/c-parser.cc:2119 c/c-parser.cc:29067 cp/parser.cc:54620 #: cp/semantics.cc:4059 cp/semantics.cc:4075 #, gcc-internal-format msgid "%qs without corresponding %qs" @@ -50299,8 +50342,8 @@ msgid "unknown type name %qE" msgstr "ĐœĐ”ĐČŃĐŽĐŸĐŒĐ°Ń ĐœĐ°Đ·ĐČа рэгістра: %s" #: c/c-parser.cc:2573 c/c-parser.cc:16296 c/c-parser.cc:25964 -#: c/c-parser.cc:26708 c/c-parser.cc:27297 cp/parser.cc:51254 -#: cp/parser.cc:57386 +#: c/c-parser.cc:26708 c/c-parser.cc:27297 cp/parser.cc:51314 +#: cp/parser.cc:57446 #, fuzzy, gcc-internal-format #| msgid "empty declaration" msgid "expected declaration specifiers" @@ -50337,7 +50380,7 @@ msgstr "" msgid "expected %<;%>, identifier or %<(%>" msgstr "" -#: c/c-parser.cc:2729 cp/parser.cc:40037 cp/parser.cc:40109 +#: c/c-parser.cc:2729 cp/parser.cc:40097 cp/parser.cc:40169 #, fuzzy, gcc-internal-format msgid "prefix attributes are ignored for methods" msgstr "\"%s\" Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚ Ń–ĐłĐœĐ°Ń€Ń‹Ń€ŃƒĐ”Ń†Ń†Đ°" @@ -50353,12 +50396,12 @@ msgstr "Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚Ń‹ сДĐșцыі ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаюцца ĐŽĐ»Ń msgid "unexpected attribute" msgstr "" -#: c/c-parser.cc:2795 c/c-parser.cc:8512 cp/parser.cc:14521 cp/parser.cc:14778 +#: c/c-parser.cc:2795 c/c-parser.cc:8512 cp/parser.cc:14536 cp/parser.cc:14793 #, gcc-internal-format msgid "% attribute not followed by %<;%>" msgstr "" -#: c/c-parser.cc:2798 c/c-parser.cc:8479 cp/cp-gimplify.cc:4095 +#: c/c-parser.cc:2798 c/c-parser.cc:8479 cp/cp-gimplify.cc:4121 #, gcc-internal-format msgid "% attribute not followed by %<;%>" msgstr "" @@ -50401,7 +50444,7 @@ msgstr "" msgid "%qs may only be used with a single declarator" msgstr "" -#: c/c-parser.cc:3185 cp/parser.cc:18168 +#: c/c-parser.cc:3185 cp/parser.cc:18206 #, gcc-internal-format msgid "expected %<,%> or %<;%>" msgstr "" @@ -50435,7 +50478,7 @@ msgid "%<__GIMPLE%> function cannot be a nested function" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" #: c/c-parser.cc:3534 c/c-parser.cc:9832 c/c-parser.cc:16369 -#: c/c-parser.cc:21727 cp/parser.cc:46078 +#: c/c-parser.cc:21727 cp/parser.cc:46138 #, gcc-internal-format msgid "expected string literal" msgstr "" @@ -50466,7 +50509,7 @@ msgstr "" msgid "static assertion failed: %E" msgstr "" -#: c/c-parser.cc:3572 cp/semantics.cc:13123 +#: c/c-parser.cc:3572 cp/semantics.cc:13144 #, gcc-internal-format msgid "static assertion failed" msgstr "" @@ -50522,8 +50565,8 @@ msgstr "" #: c/c-parser.cc:20146 c/c-parser.cc:20283 c/c-parser.cc:21498 #: c/c-parser.cc:24571 c/c-parser.cc:27783 c/c-parser.cc:27983 #: c/c-parser.cc:29186 c/gimple-parser.cc:1971 c/gimple-parser.cc:2018 -#: cp/parser.cc:10760 cp/parser.cc:37773 cp/parser.cc:41014 cp/parser.cc:44543 -#: cp/parser.cc:44735 cp/parser.cc:52957 cp/parser.cc:56605 +#: cp/parser.cc:10754 cp/parser.cc:37833 cp/parser.cc:41074 cp/parser.cc:44603 +#: cp/parser.cc:44795 cp/parser.cc:53017 cp/parser.cc:56665 #, gcc-internal-format msgid "expected identifier" msgstr "" @@ -50556,12 +50599,12 @@ msgstr "ĐœŃĐČĐ”Ń€ĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” \"restict\"" msgid "% underlying type incompatible with previous declaration" msgstr "сДĐșцыя \"%s\" ĐșĐ°ĐœŃ„Đ»Ń–ĐșŃ‚ŃƒĐ” Đ· ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐč ЮэĐșĐ»Đ°Ń€Đ°Ń†Ń‹ŃĐč" -#: c/c-parser.cc:4291 cp/parser.cc:24136 +#: c/c-parser.cc:4291 cp/parser.cc:24200 #, gcc-internal-format msgid "comma at end of enumerator list" msgstr "" -#: c/c-parser.cc:4297 c/c-parser.cc:21775 cp/parser.cc:46141 +#: c/c-parser.cc:4297 c/c-parser.cc:21775 cp/parser.cc:46201 #: go/gofrontend/embed.cc:424 #, gcc-internal-format msgid "expected %<,%> or %<}%>" @@ -50642,22 +50685,22 @@ msgstr "" msgid "parentheses must be omitted if attribute argument list is empty" msgstr "" -#: c/c-parser.cc:6014 cp/parser.cc:33010 +#: c/c-parser.cc:6014 cp/parser.cc:33074 #, gcc-internal-format msgid "expected OpenMP directive name" msgstr "" -#: c/c-parser.cc:6061 cp/parser.cc:33066 +#: c/c-parser.cc:6061 cp/parser.cc:33130 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: c/c-parser.cc:6206 cp/parser.cc:33234 +#: c/c-parser.cc:6206 cp/parser.cc:33298 #, gcc-internal-format msgid "% attribute requires argument" msgstr "" -#: c/c-parser.cc:6222 cp/parser.cc:33250 +#: c/c-parser.cc:6222 cp/parser.cc:33314 #, gcc-internal-format msgid "%qE attribute does not take any arguments" msgstr "" @@ -50667,7 +50710,7 @@ msgstr "" msgid "ISO C does not support %<[[]]%> attributes before C23" msgstr "ISO C89 ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД \"long long\"" -#: c/c-parser.cc:6593 c/c-parser.cc:6659 c/c-typeck.cc:10232 +#: c/c-parser.cc:6593 c/c-parser.cc:6659 c/c-typeck.cc:10240 #, gcc-internal-format msgid "variable-sized object may not be initialized except with an empty initializer" msgstr "" @@ -50698,17 +50741,17 @@ msgstr "" msgid "obsolete use of designated initializer without %<=%>" msgstr "" -#: c/c-parser.cc:7203 cp/parser.cc:14900 +#: c/c-parser.cc:7203 cp/parser.cc:14915 #, gcc-internal-format msgid "inner loops must be perfectly nested in %<#pragma acc loop%>" msgstr "" -#: c/c-parser.cc:7210 cp/parser.cc:14907 +#: c/c-parser.cc:7210 cp/parser.cc:14922 #, gcc-internal-format msgid "inner loops must be perfectly nested with % clause" msgstr "" -#: c/c-parser.cc:7217 cp/parser.cc:14914 +#: c/c-parser.cc:7217 cp/parser.cc:14929 #, gcc-internal-format msgid "inner loops must be perfectly nested with % % clause" msgstr "" @@ -50718,44 +50761,44 @@ msgstr "" msgid "inner loops must be perfectly nested in %" msgstr "" -#: c/c-parser.cc:7280 c/c-parser.cc:7435 cp/parser.cc:13804 cp/parser.cc:13954 -#: cp/parser.cc:53983 +#: c/c-parser.cc:7280 c/c-parser.cc:7435 cp/parser.cc:13819 cp/parser.cc:13969 +#: cp/parser.cc:54043 #, gcc-internal-format msgid "mixing OpenMP directives with attribute and pragma syntax on the same statement" msgstr "" -#: c/c-parser.cc:7288 cp/parser.cc:13812 +#: c/c-parser.cc:7288 cp/parser.cc:13827 #, gcc-internal-format msgid "OpenMP % attribute on a statement" msgstr "" -#: c/c-parser.cc:7312 c/c-parser.cc:7533 c/c-parser.cc:28639 cp/parser.cc:13836 -#: cp/parser.cc:53963 cp/parser.cc:54102 +#: c/c-parser.cc:7312 c/c-parser.cc:7533 c/c-parser.cc:28639 cp/parser.cc:13851 +#: cp/parser.cc:54023 cp/parser.cc:54162 #, gcc-internal-format msgid "unknown OpenMP directive name in %qs attribute argument" msgstr "" -#: c/c-parser.cc:7404 cp/parser.cc:13923 +#: c/c-parser.cc:7404 cp/parser.cc:13938 #, gcc-internal-format msgid "OpenMP construct among % attributes requires all % attributes on the same statement to be in the same %" msgstr "" -#: c/c-parser.cc:7412 cp/parser.cc:13931 +#: c/c-parser.cc:7412 cp/parser.cc:13946 #, gcc-internal-format msgid "multiple OpenMP standalone directives among % attributes must be all within the same %" msgstr "" -#: c/c-parser.cc:7424 cp/parser.cc:13943 +#: c/c-parser.cc:7424 cp/parser.cc:13958 #, gcc-internal-format msgid "standalone OpenMP directives in % attribute can only appear on an empty statement" msgstr "" -#: c/c-parser.cc:7545 cp/parser.cc:14063 +#: c/c-parser.cc:7545 cp/parser.cc:14078 #, gcc-internal-format msgid "mixing OpenMP directives with attribute and pragma syntax on the same declaration" msgstr "" -#: c/c-parser.cc:7603 cp/parser.cc:16828 +#: c/c-parser.cc:7603 cp/parser.cc:16866 #, fuzzy, gcc-internal-format msgid "%qs attribute does not take any arguments" msgstr "Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚Ń‹ сДĐșцыі ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаюцца ĐŽĐ»Ń гэтаĐč ĐŒŃŃ‚Ń‹" @@ -50787,7 +50830,7 @@ msgstr "ISO C ĐœĐ” ЎазĐČĐ°Đ»ŃĐ” ЮэĐșларацыі ĐŒĐ”Ń‚Đ°Đș (label)" msgid "expected %<}%> before %" msgstr "" -#: c/c-parser.cc:7937 cp/parser.cc:14967 +#: c/c-parser.cc:7937 cp/parser.cc:14982 #, gcc-internal-format msgid "% without a previous %" msgstr "" @@ -50802,7 +50845,7 @@ msgstr "" #. delimiter without consuming it, but here we need to consume #. it to proceed further. #: c/c-parser.cc:8029 c/c-parser.cc:8033 c/c-parser.cc:8541 -#: c/gimple-parser.cc:722 c/gimple-parser.cc:2510 cp/parser.cc:14427 +#: c/gimple-parser.cc:722 c/gimple-parser.cc:2510 cp/parser.cc:14442 #, gcc-internal-format msgid "expected statement" msgstr "" @@ -50837,30 +50880,30 @@ msgstr "ISO C89 ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД \"long long\"" msgid "declaration in the controlling expression must have an initializer" msgstr "" -#: c/c-parser.cc:8672 cp/parser.cc:5589 cp/parser.cc:17957 +#: c/c-parser.cc:8672 cp/parser.cc:5589 cp/parser.cc:17995 #, fuzzy, gcc-internal-format #| msgid "empty declaration" msgid "expected declaration" msgstr "ĐżŃƒŃŃ‚ĐŸĐ” абĐČŃŃˆŃ‡ŃĐœŃŒĐœĐ”" -#: c/c-parser.cc:8753 cp/parser.cc:16965 +#: c/c-parser.cc:8753 cp/parser.cc:17003 #, fuzzy, gcc-internal-format #| msgid "empty body in an else-statement" msgid "suggest braces around empty body in an % statement" msgstr "ĐżŃƒŃŃ‚ĐŸĐ” цДла ў else-ĐČŃ‹Ń€Đ°Đ¶ŃĐœĐœŃ–" -#: c/c-parser.cc:8796 cp/parser.cc:16968 +#: c/c-parser.cc:8796 cp/parser.cc:17006 #, fuzzy, gcc-internal-format #| msgid "empty body in an else-statement" msgid "suggest braces around empty body in an % statement" msgstr "ĐżŃƒŃŃ‚ĐŸĐ” цДла ў else-ĐČŃ‹Ń€Đ°Đ¶ŃĐœĐœŃ–" -#: c/c-parser.cc:8890 cp/parser.cc:15381 +#: c/c-parser.cc:8890 cp/parser.cc:15396 #, gcc-internal-format msgid "suggest explicit braces to avoid ambiguous %" msgstr "" -#: c/c-parser.cc:9008 c/c-parser.cc:9087 c/c-parser.cc:9222 cp/parser.cc:16378 +#: c/c-parser.cc:9008 c/c-parser.cc:9087 c/c-parser.cc:9222 cp/parser.cc:16399 #, gcc-internal-format msgid "loop not permitted in intervening code in OpenMP loop body" msgstr "" @@ -50880,12 +50923,12 @@ msgstr "" msgid "invalid iterating variable in fast enumeration" msgstr "ĐœŃĐČĐ”Ń€ĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” \"restict\"" -#: c/c-parser.cc:9335 cp/parser.cc:15689 +#: c/c-parser.cc:9335 cp/parser.cc:15704 #, gcc-internal-format msgid "missing loop condition in loop with % pragma" msgstr "" -#: c/c-parser.cc:9341 cp/parser.cc:15695 +#: c/c-parser.cc:9341 cp/parser.cc:15710 #, gcc-internal-format msgid "missing loop condition in loop with % pragma" msgstr "" @@ -50900,8 +50943,8 @@ msgstr "" msgid "duplicate % qualifier %qE" msgstr "ĐżĐ°ŃžŃ‚Đ°Ń€ŃĐœĐœĐ” \"volatile\"" -#: c/c-parser.cc:9532 c/c-parser.cc:9543 c/c-parser.cc:9554 cp/parser.cc:25090 -#: cp/parser.cc:25108 cp/parser.cc:25123 +#: c/c-parser.cc:9532 c/c-parser.cc:9543 c/c-parser.cc:9554 cp/parser.cc:25154 +#: cp/parser.cc:25172 cp/parser.cc:25187 #, gcc-internal-format msgid "first seen here" msgstr "" @@ -50923,12 +50966,12 @@ msgstr "ISO C ĐœĐ” ЎазĐČĐ°Đ»ŃĐ” пусты Ń–Đ·Ń‹Ń…ĐŸĐŽĐœŃ‹ фаĐčĐ»" #. Location of the binary operator. #. Quiet warning. -#: c/c-parser.cc:10344 cp/typeck.cc:5829 +#: c/c-parser.cc:10344 cp/typeck.cc:5824 #, gcc-internal-format msgid "division % does not compute the number of array elements" msgstr "" -#: c/c-parser.cc:10350 cp/typeck.cc:5834 +#: c/c-parser.cc:10350 cp/typeck.cc:5829 #, gcc-internal-format msgid "first % operand was declared here" msgstr "" @@ -51107,7 +51150,7 @@ msgstr "ISO C ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД ĐșĐŸĐŒĐ»Đ”ĐșŃĐœŃ‹Ń Ń†ŃĐ»Đ°Đ»Ń–Đș #: c/c-parser.cc:11876 c/c-parser.cc:13612 c/c-parser.cc:13634 #: c/c-parser.cc:23988 c/gimple-parser.cc:1887 c/gimple-parser.cc:2527 -#: cp/parser.cc:47626 +#: cp/parser.cc:47686 #, gcc-internal-format msgid "expected expression" msgstr "" @@ -51122,12 +51165,12 @@ msgstr "" msgid "ISO C forbids braced-groups within expressions" msgstr "" -#: c/c-parser.cc:12018 cp/parser.cc:12389 +#: c/c-parser.cc:12018 cp/parser.cc:12383 #, gcc-internal-format msgid "optional second parameter of % not last named argument" msgstr "" -#: c/c-parser.cc:12057 cp/parser.cc:12444 +#: c/c-parser.cc:12057 cp/parser.cc:12438 #, gcc-internal-format msgid "% macro used with additional arguments other than identifier of the last named argument" msgstr "" @@ -51275,7 +51318,7 @@ msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃ msgid "the argument to %<__builtin_counted_by_ref%> must be a field of a structure" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: c/c-parser.cc:12986 c/c-parser.cc:13015 cp/parser.cc:8703 +#: c/c-parser.cc:12986 c/c-parser.cc:13015 cp/parser.cc:8686 #, fuzzy, gcc-internal-format #| msgid "wrong number of arguments specified for `%s' attribute" msgid "wrong number of arguments to %<__builtin_shuffle%>" @@ -51318,7 +51361,7 @@ msgstr "" msgid "rotate count is negative" msgstr "Đ°ĐŽĐŒĐŸŃžĐœŃ‹ ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа " -#: c/c-parser.cc:13589 cp/parser.cc:6977 +#: c/c-parser.cc:13589 cp/parser.cc:6960 #, gcc-internal-format msgid "% may only be used in OpenMP % clause" msgstr "" @@ -51430,7 +51473,7 @@ msgstr "" msgid "absolute value function %qD given an argument of type %qT but has parameter of type %qT which may cause truncation of value" msgstr "" -#: c/c-parser.cc:14074 cp/parser.cc:9140 +#: c/c-parser.cc:14074 cp/parser.cc:9123 #, gcc-internal-format msgid "calls to the OpenMP runtime API are not permitted in intervening code" msgstr "" @@ -51470,12 +51513,12 @@ msgstr "" msgid "no type or storage class may be specified here," msgstr "" -#: c/c-parser.cc:15652 cp/parser.cc:40871 +#: c/c-parser.cc:15652 cp/parser.cc:40931 #, gcc-internal-format msgid "empty property attribute list" msgstr "" -#: c/c-parser.cc:15666 cp/parser.cc:40884 +#: c/c-parser.cc:15666 cp/parser.cc:40944 #, fuzzy, gcc-internal-format msgid "missing property attribute" msgstr "ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" @@ -51485,57 +51528,57 @@ msgstr "ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" msgid "unknown property attribute %<%s%s%>" msgstr "" -#: c/c-parser.cc:15708 cp/parser.cc:40921 +#: c/c-parser.cc:15708 cp/parser.cc:40981 #, gcc-internal-format msgid "unknown property attribute" msgstr "" -#: c/c-parser.cc:15717 cp/parser.cc:40930 +#: c/c-parser.cc:15717 cp/parser.cc:40990 #, gcc-internal-format msgid "expected %<=%> after Objective-C %qE" msgstr "" -#: c/c-parser.cc:15728 cp/parser.cc:40944 +#: c/c-parser.cc:15728 cp/parser.cc:41004 #, gcc-internal-format msgid "expected %qE selector name" msgstr "" -#: c/c-parser.cc:15744 cp/parser.cc:40963 +#: c/c-parser.cc:15744 cp/parser.cc:41023 #, gcc-internal-format msgid "setter method names must terminate with %<:%>" msgstr "" -#: c/c-parser.cc:15968 cp/semantics.cc:14906 +#: c/c-parser.cc:15968 cp/semantics.cc:14927 #, gcc-internal-format msgid "%<#pragma GCC unroll%> requires an assignment-expression that evaluates to a non-negative integral constant less than %u" msgstr "" -#: c/c-parser.cc:16010 cp/parser.cc:56964 +#: c/c-parser.cc:16010 cp/parser.cc:57024 #, gcc-internal-format msgid "intervening code must not contain executable OpenMP directives" msgstr "" #: c/c-parser.cc:16030 c/c-parser.cc:26705 c/c-parser.cc:27014 -#: c/c-parser.cc:27077 c/c-parser.cc:27187 cp/parser.cc:51251 -#: cp/parser.cc:51599 cp/parser.cc:51714 cp/parser.cc:51813 cp/parser.cc:56996 -#: cp/parser.cc:57012 cp/parser.cc:57028 cp/parser.cc:57044 cp/parser.cc:57061 -#: cp/parser.cc:57078 cp/parser.cc:57095 cp/parser.cc:57126 cp/parser.cc:57140 -#: cp/parser.cc:57165 cp/parser.cc:57179 +#: c/c-parser.cc:27077 c/c-parser.cc:27187 cp/parser.cc:51311 +#: cp/parser.cc:51659 cp/parser.cc:51774 cp/parser.cc:51873 cp/parser.cc:57056 +#: cp/parser.cc:57072 cp/parser.cc:57088 cp/parser.cc:57104 cp/parser.cc:57121 +#: cp/parser.cc:57138 cp/parser.cc:57155 cp/parser.cc:57186 cp/parser.cc:57200 +#: cp/parser.cc:57225 cp/parser.cc:57239 #, gcc-internal-format msgid "%<#pragma %s%> may only be used in compound statements" msgstr "" -#: c/c-parser.cc:16053 cp/parser.cc:57154 +#: c/c-parser.cc:16053 cp/parser.cc:57214 #, gcc-internal-format msgid "%<#pragma acc routine%> must be at file scope" msgstr "" -#: c/c-parser.cc:16156 cp/parser.cc:57284 +#: c/c-parser.cc:16156 cp/parser.cc:57344 #, gcc-internal-format msgid "%<#pragma omp scan%> may only be used in a loop construct with % % clause" msgstr "" -#: c/c-parser.cc:16163 cp/parser.cc:57290 +#: c/c-parser.cc:16163 cp/parser.cc:57350 #, gcc-internal-format msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct" msgstr "" @@ -51545,12 +51588,12 @@ msgstr "" msgid "%<#pragma %s%> may only be used at file scope" msgstr "" -#: c/c-parser.cc:16262 cp/parser.cc:57373 +#: c/c-parser.cc:16262 cp/parser.cc:57433 #, gcc-internal-format msgid "for, while or do statement expected" msgstr "" -#: c/c-parser.cc:16278 cp/parser.cc:56986 +#: c/c-parser.cc:16278 cp/parser.cc:57046 #, gcc-internal-format msgid "%<#pragma GCC pch_preprocess%> must be first" msgstr "" @@ -51560,11 +51603,11 @@ msgstr "" #: c/c-parser.cc:23793 c/c-parser.cc:23800 c/c-parser.cc:28193 #: c/c-parser.cc:29773 c/c-parser.cc:29781 c/c-parser.cc:30157 #: c/c-parser.cc:30167 c/c-parser.cc:30276 c/c-parser.cc:30283 -#: c/c-parser.cc:30290 c/c-parser.cc:30297 cp/parser.cc:41414 -#: cp/parser.cc:45726 cp/parser.cc:47152 cp/parser.cc:47189 cp/parser.cc:47378 -#: cp/parser.cc:47441 cp/parser.cc:47448 cp/parser.cc:47455 cp/parser.cc:53195 -#: cp/parser.cc:53202 cp/parser.cc:53209 cp/parser.cc:53216 cp/parser.cc:53764 -#: cp/parser.cc:55835 cp/parser.cc:55843 cp/parser.cc:55995 cp/parser.cc:56005 +#: c/c-parser.cc:30290 c/c-parser.cc:30297 cp/parser.cc:41474 +#: cp/parser.cc:45786 cp/parser.cc:47212 cp/parser.cc:47249 cp/parser.cc:47438 +#: cp/parser.cc:47501 cp/parser.cc:47508 cp/parser.cc:47515 cp/parser.cc:53255 +#: cp/parser.cc:53262 cp/parser.cc:53269 cp/parser.cc:53276 cp/parser.cc:53824 +#: cp/parser.cc:55895 cp/parser.cc:55903 cp/parser.cc:56055 cp/parser.cc:56065 #, fuzzy, gcc-internal-format #| msgid "too many input files" msgid "too many %qs clauses" @@ -51580,59 +51623,59 @@ msgstr "" msgid "%qD is not a variable" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: c/c-parser.cc:17303 cp/semantics.cc:9531 +#: c/c-parser.cc:17303 cp/semantics.cc:9552 #, fuzzy, gcc-internal-format msgid "%qD is not a pointer variable" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" -#: c/c-parser.cc:17345 cp/parser.cc:42305 +#: c/c-parser.cc:17345 cp/parser.cc:42365 #, gcc-internal-format msgid "collapse argument needs positive constant integer expression" msgstr "" -#: c/c-parser.cc:17440 cp/parser.cc:42383 +#: c/c-parser.cc:17440 cp/parser.cc:42443 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: c/c-parser.cc:17442 cp/parser.cc:42385 +#: c/c-parser.cc:17442 cp/parser.cc:42445 #, gcc-internal-format msgid "expected %, %, % or %" msgstr "" -#: c/c-parser.cc:17527 cp/parser.cc:42455 +#: c/c-parser.cc:17527 cp/parser.cc:42515 #, gcc-internal-format msgid "expected constant logical expression" msgstr "" -#: c/c-parser.cc:17604 cp/parser.cc:42537 +#: c/c-parser.cc:17604 cp/parser.cc:42597 #, gcc-internal-format msgid "expected %, %, % or %" msgstr "" #: c/c-parser.cc:17624 c/c-parser.cc:27070 c/c-parser.cc:27180 -#: cp/parser.cc:42555 cp/parser.cc:51591 cp/parser.cc:51706 +#: cp/parser.cc:42615 cp/parser.cc:51651 cp/parser.cc:51766 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:17677 cp/parser.cc:42610 +#: c/c-parser.cc:17677 cp/parser.cc:42670 #, gcc-internal-format msgid "too many % clauses with %qs modifier" msgstr "" -#: c/c-parser.cc:17684 cp/parser.cc:42617 +#: c/c-parser.cc:17684 cp/parser.cc:42677 #, fuzzy, gcc-internal-format #| msgid "too many input files" msgid "too many % clauses" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ уĐČĐ°Ń…ĐŸĐŽĐ·ŃŃ‡Ń‹Ń… фаĐčлаў" -#: c/c-parser.cc:17686 cp/parser.cc:42619 +#: c/c-parser.cc:17686 cp/parser.cc:42679 #, gcc-internal-format msgid "too many % clauses without modifier" msgstr "" -#: c/c-parser.cc:17692 cp/parser.cc:42625 +#: c/c-parser.cc:17692 cp/parser.cc:42685 #, gcc-internal-format msgid "if any % clause has modifier, then all % clauses have to use modifier" msgstr "" @@ -51655,22 +51698,22 @@ msgstr "" msgid "% value must be positive" msgstr "" -#: c/c-parser.cc:17931 cp/semantics.cc:9746 +#: c/c-parser.cc:17931 cp/semantics.cc:9767 #, gcc-internal-format msgid "% value must be positive" msgstr "" -#: c/c-parser.cc:17980 cp/semantics.cc:9776 +#: c/c-parser.cc:17980 cp/semantics.cc:9797 #, gcc-internal-format msgid "% value must be non-negative" msgstr "" -#: c/c-parser.cc:18014 cp/parser.cc:42851 +#: c/c-parser.cc:18014 cp/parser.cc:42911 #, gcc-internal-format msgid "expected constant integer expression with valid sync-hint value" msgstr "" -#: c/c-parser.cc:18086 cp/parser.cc:42921 +#: c/c-parser.cc:18086 cp/parser.cc:42981 #, gcc-internal-format msgid "expected %, %, %, %, %, % or %" msgstr "" @@ -51680,101 +51723,101 @@ msgstr "" msgid "expected %, %, % or %" msgstr "" -#: c/c-parser.cc:18231 cp/parser.cc:43073 +#: c/c-parser.cc:18231 cp/parser.cc:43133 #, gcc-internal-format msgid "too many % clauses with %qs category" msgstr "" -#: c/c-parser.cc:18234 cp/parser.cc:43076 +#: c/c-parser.cc:18234 cp/parser.cc:43136 #, gcc-internal-format msgid "too many % clauses with unspecified category" msgstr "" -#: c/c-parser.cc:18318 cp/semantics.cc:8423 cp/semantics.cc:8488 +#: c/c-parser.cc:18318 cp/semantics.cc:8444 cp/semantics.cc:8509 #, gcc-internal-format msgid "%qs expression must be integral" msgstr "" -#: c/c-parser.cc:18330 c/c-parser.cc:18453 cp/semantics.cc:8458 -#: cp/semantics.cc:8502 +#: c/c-parser.cc:18330 c/c-parser.cc:18453 cp/semantics.cc:8479 +#: cp/semantics.cc:8523 #, gcc-internal-format msgid "%qs value must be positive" msgstr "" -#: c/c-parser.cc:18392 cp/parser.cc:42068 +#: c/c-parser.cc:18392 cp/parser.cc:42128 #, fuzzy, gcc-internal-format #| msgid "too many arguments to function" msgid "too many % arguments" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі" -#: c/c-parser.cc:18426 cp/parser.cc:42101 +#: c/c-parser.cc:18426 cp/parser.cc:42161 #, fuzzy, gcc-internal-format #| msgid "no arguments" msgid "unexpected argument" msgstr "ĐœŃĐŒĐ° Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž" -#: c/c-parser.cc:18593 cp/semantics.cc:9962 +#: c/c-parser.cc:18593 cp/semantics.cc:9983 #, gcc-internal-format msgid "% argument needs positive integral constant" msgstr "" -#: c/c-parser.cc:18661 cp/parser.cc:46354 +#: c/c-parser.cc:18661 cp/parser.cc:46414 #, gcc-internal-format msgid "too many % clauses" msgstr "" -#: c/c-parser.cc:18703 cp/parser.cc:43126 +#: c/c-parser.cc:18703 cp/parser.cc:43186 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: c/c-parser.cc:18712 c/c-parser.cc:18718 cp/parser.cc:43135 -#: cp/parser.cc:43145 +#: c/c-parser.cc:18712 c/c-parser.cc:18718 cp/parser.cc:43195 +#: cp/parser.cc:43205 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:18754 cp/parser.cc:43185 +#: c/c-parser.cc:18754 cp/parser.cc:43245 #, gcc-internal-format msgid "expected %, % or %" msgstr "" -#: c/c-parser.cc:18807 cp/parser.cc:43253 +#: c/c-parser.cc:18807 cp/parser.cc:43313 #, gcc-internal-format msgid "ordered argument needs positive constant integer expression" msgstr "" -#: c/c-parser.cc:18902 cp/parser.cc:43335 +#: c/c-parser.cc:18902 cp/parser.cc:43395 #, gcc-internal-format msgid "%<-%> operator for reductions deprecated in OpenMP 5.2" msgstr "" -#: c/c-parser.cc:18941 c/c-parser.cc:29312 cp/parser.cc:55273 +#: c/c-parser.cc:18941 c/c-parser.cc:29312 cp/parser.cc:55333 #, gcc-internal-format msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or identifier" msgstr "" -#: c/c-parser.cc:19063 cp/parser.cc:43522 +#: c/c-parser.cc:19063 cp/parser.cc:43582 #, gcc-internal-format msgid "both % and % modifiers specified" msgstr "" -#: c/c-parser.cc:19117 cp/parser.cc:43538 +#: c/c-parser.cc:19117 cp/parser.cc:43598 #, gcc-internal-format msgid "schedule % does not take a % parameter" msgstr "" -#: c/c-parser.cc:19121 cp/parser.cc:43541 +#: c/c-parser.cc:19121 cp/parser.cc:43601 #, gcc-internal-format msgid "schedule % does not take a % parameter" msgstr "" -#: c/c-parser.cc:19134 cp/semantics.cc:8549 +#: c/c-parser.cc:19134 cp/semantics.cc:8570 #, gcc-internal-format msgid "chunk size value must be positive" msgstr "" -#: c/c-parser.cc:19157 cp/parser.cc:43561 +#: c/c-parser.cc:19157 cp/parser.cc:43621 #, fuzzy, gcc-internal-format #| msgid "invalid %%-code" msgid "invalid schedule kind" @@ -51785,39 +51828,39 @@ msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%-ĐșĐŸĐŽ" msgid "% value must be positive" msgstr "" -#: c/c-parser.cc:19315 cp/semantics.cc:8516 +#: c/c-parser.cc:19315 cp/semantics.cc:8537 #, gcc-internal-format msgid "% lower bound %qE bigger than upper bound %qE" msgstr "" -#: c/c-parser.cc:19364 cp/semantics.cc:8645 +#: c/c-parser.cc:19364 cp/semantics.cc:8666 #, gcc-internal-format msgid "% value must be positive" msgstr "" -#: c/c-parser.cc:19409 cp/semantics.cc:8773 +#: c/c-parser.cc:19409 cp/semantics.cc:8794 #, gcc-internal-format msgid "% clause alignment expression must be positive constant integer expression" msgstr "" -#: c/c-parser.cc:19521 c/c-parser.cc:23443 cp/parser.cc:47144 +#: c/c-parser.cc:19521 c/c-parser.cc:23443 cp/parser.cc:47204 #, gcc-internal-format msgid "expected % or %" msgstr "" #: c/c-parser.cc:19528 c/c-parser.cc:19695 c/c-parser.cc:19737 -#: cp/parser.cc:44046 +#: cp/parser.cc:44106 #, fuzzy, gcc-internal-format #| msgid "duplicate `%s'" msgid "duplicate %qs modifier" msgstr "ĐżĐ°ŃžŃ‚Đ°Ń€ŃĐœŃŒĐœĐ” `%s'" -#: c/c-parser.cc:19576 cp/semantics.cc:8906 +#: c/c-parser.cc:19576 cp/semantics.cc:8927 #, gcc-internal-format msgid "% clause allocator expression has type %qT rather than %" msgstr "" -#: c/c-parser.cc:19587 cp/semantics.cc:8861 cp/semantics.cc:8877 +#: c/c-parser.cc:19587 cp/semantics.cc:8882 cp/semantics.cc:8898 #, gcc-internal-format msgid "% clause % modifier argument needs to be positive constant power of two integer expression" msgstr "" @@ -51832,22 +51875,22 @@ msgstr "" msgid "legacy %<%s(%s)%> traits syntax not allowed in % clause when using modifiers" msgstr "" -#: c/c-parser.cc:19813 cp/parser.cc:44108 +#: c/c-parser.cc:19813 cp/parser.cc:44168 #, gcc-internal-format msgid "the specification of arguments to % where each item is of the form % is deprecated since OpenMP 5.2" msgstr "" -#: c/c-parser.cc:19821 cp/parser.cc:44116 +#: c/c-parser.cc:19821 cp/parser.cc:44176 #, gcc-internal-format msgid "% clause only accepts a single allocator when using modifiers" msgstr "" -#: c/c-parser.cc:19955 cp/parser.cc:44326 +#: c/c-parser.cc:19955 cp/parser.cc:44386 #, gcc-internal-format msgid "multiple linear modifiers" msgstr "" -#: c/c-parser.cc:19967 cp/parser.cc:44339 +#: c/c-parser.cc:19967 cp/parser.cc:44399 #, gcc-internal-format msgid "multiple % modifiers" msgstr "" @@ -51857,7 +51900,7 @@ msgstr "" msgid "% clause step expression must be integral" msgstr "" -#: c/c-parser.cc:20037 cp/parser.cc:44462 +#: c/c-parser.cc:20037 cp/parser.cc:44522 #, gcc-internal-format msgid "specifying the list items as arguments to the modifiers is deprecated since OpenMP 5.2" msgstr "" @@ -51872,319 +51915,319 @@ msgstr "" msgid "% clause expression must be positive constant integer expression" msgstr "" -#: c/c-parser.cc:20463 cp/parser.cc:44917 +#: c/c-parser.cc:20463 cp/parser.cc:44977 #, gcc-internal-format msgid "% modifier with % clause deprecated since OpenMP 5.2, use with %" msgstr "" -#: c/c-parser.cc:20472 cp/parser.cc:44926 +#: c/c-parser.cc:20472 cp/parser.cc:44986 #, gcc-internal-format msgid "% modifier with % clause deprecated since OpenMP 5.2, use with %" msgstr "" -#: c/c-parser.cc:20489 cp/parser.cc:44943 +#: c/c-parser.cc:20489 cp/parser.cc:45003 #, gcc-internal-format msgid "% modifier incompatible with %qs" msgstr "" -#: c/c-parser.cc:20537 cp/parser.cc:44998 cp/parser.cc:45796 cp/parser.cc:45863 +#: c/c-parser.cc:20537 cp/parser.cc:45058 #, fuzzy, gcc-internal-format #| msgid "invalid %%d operand" msgid "invalid depend kind" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ %%d Đ°ĐżĐ”Ń€Đ°ĐœĐŽ" -#: c/c-parser.cc:20598 cp/parser.cc:45028 +#: c/c-parser.cc:20598 cp/parser.cc:45088 #, fuzzy, gcc-internal-format #| msgid "invalid mask" msgid "invalid doacross kind" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Ń ĐŒĐ°ŃĐșа" -#: c/c-parser.cc:20633 cp/parser.cc:45229 +#: c/c-parser.cc:20633 cp/parser.cc:45289 #, gcc-internal-format msgid "expected % modifier" msgstr "" -#: c/c-parser.cc:20650 cp/parser.cc:45253 +#: c/c-parser.cc:20650 cp/parser.cc:45313 #, gcc-internal-format msgid "expected %, %, or % as fallback mode" msgstr "" -#: c/c-parser.cc:20679 cp/semantics.cc:8469 +#: c/c-parser.cc:20679 cp/semantics.cc:8490 #, gcc-internal-format msgid "% value must be non-negative" msgstr "" -#: c/c-parser.cc:20787 cp/parser.cc:45369 +#: c/c-parser.cc:20787 cp/parser.cc:45429 #, gcc-internal-format msgid "illegal comma" msgstr "" -#: c/c-parser.cc:20797 cp/parser.cc:45379 +#: c/c-parser.cc:20797 cp/parser.cc:45439 #, gcc-internal-format msgid "too many % modifiers" msgstr "" -#: c/c-parser.cc:20808 cp/parser.cc:45393 +#: c/c-parser.cc:20808 cp/parser.cc:45453 #, gcc-internal-format msgid "too many % modifiers" msgstr "" -#: c/c-parser.cc:20819 c/c-parser.cc:21311 cp/parser.cc:45153 -#: cp/parser.cc:45407 +#: c/c-parser.cc:20819 c/c-parser.cc:21311 cp/parser.cc:45213 +#: cp/parser.cc:45467 #, fuzzy, gcc-internal-format #| msgid "too many input files" msgid "too many % modifiers" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ уĐČĐ°Ń…ĐŸĐŽĐ·ŃŃ‡Ń‹Ń… фаĐčлаў" -#: c/c-parser.cc:20835 cp/parser.cc:45427 +#: c/c-parser.cc:20835 cp/parser.cc:45487 #, fuzzy, gcc-internal-format #| msgid "too many input files" msgid "too many % modifiers" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ уĐČĐ°Ń…ĐŸĐŽĐ·ŃŃ‡Ń‹Ń… фаĐčлаў" -#: c/c-parser.cc:20855 cp/parser.cc:45453 +#: c/c-parser.cc:20855 cp/parser.cc:45513 #, gcc-internal-format msgid "in % directives, parameter to % modifier must be %" msgstr "" -#: c/c-parser.cc:20871 c/c-parser.cc:29134 cp/parser.cc:45470 -#: cp/parser.cc:55509 +#: c/c-parser.cc:20871 c/c-parser.cc:29134 cp/parser.cc:45530 +#: cp/parser.cc:55569 #, gcc-internal-format msgid "expected identifier or %" msgstr "" -#: c/c-parser.cc:20889 c/c-parser.cc:21300 cp/parser.cc:45139 -#: cp/parser.cc:45492 +#: c/c-parser.cc:20889 c/c-parser.cc:21300 cp/parser.cc:45199 +#: cp/parser.cc:45552 #, fuzzy, gcc-internal-format #| msgid "too many input files" msgid "too many % modifiers" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ уĐČĐ°Ń…ĐŸĐŽĐ·ŃŃ‡Ń‹Ń… фаĐčлаў" -#: c/c-parser.cc:20898 cp/parser.cc:45504 +#: c/c-parser.cc:20898 cp/parser.cc:45564 #, gcc-internal-format msgid "% clause with map-type modifier other than %, %, %, % or %" msgstr "" -#: c/c-parser.cc:20910 cp/parser.cc:45519 +#: c/c-parser.cc:20910 cp/parser.cc:45579 #, gcc-internal-format msgid "% clause modifiers without comma separation is deprecated since OpenMP 5.2" msgstr "" -#: c/c-parser.cc:20945 cp/parser.cc:45553 +#: c/c-parser.cc:20945 cp/parser.cc:45613 #, fuzzy, gcc-internal-format #| msgid "invalid mask" msgid "invalid map kind" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Ń ĐŒĐ°ŃĐșа" -#: c/c-parser.cc:21029 cp/parser.cc:45649 +#: c/c-parser.cc:21029 cp/parser.cc:45709 #, gcc-internal-format msgid "% device modifier not preceded by % directive with % clause" msgstr "" -#: c/c-parser.cc:21041 cp/parser.cc:45660 +#: c/c-parser.cc:21041 cp/parser.cc:45720 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: c/c-parser.cc:21064 cp/semantics.cc:8670 +#: c/c-parser.cc:21064 cp/semantics.cc:8691 #, gcc-internal-format msgid "the % clause expression must evaluate to %<1%>" msgstr "" -#: c/c-parser.cc:21097 cp/parser.cc:45731 +#: c/c-parser.cc:21097 cp/parser.cc:45791 #, gcc-internal-format msgid "invalid dist_schedule kind" msgstr "" -#: c/c-parser.cc:21161 cp/parser.cc:45770 +#: c/c-parser.cc:21161 cp/parser.cc:45830 #, gcc-internal-format msgid "% affinity deprecated since OpenMP 5.1, use %" msgstr "" -#: c/c-parser.cc:21184 +#: c/c-parser.cc:21184 cp/parser.cc:45856 #, fuzzy, gcc-internal-format msgid "invalid proc_bind kind" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар %s" -#: c/c-parser.cc:21228 +#: c/c-parser.cc:21228 cp/parser.cc:45923 #, gcc-internal-format msgid "expected %, % or %" msgstr "" -#: c/c-parser.cc:21321 cp/parser.cc:45168 +#: c/c-parser.cc:21321 cp/parser.cc:45228 #, gcc-internal-format msgid "%qs clause with modifier other than % or %" msgstr "" -#: c/c-parser.cc:21417 cp/semantics.cc:10084 cp/semantics.cc:10102 +#: c/c-parser.cc:21417 cp/semantics.cc:10105 cp/semantics.cc:10123 #, gcc-internal-format msgid "% argument needs positive constant integer expression" msgstr "" -#: c/c-parser.cc:21518 cp/semantics.cc:9243 +#: c/c-parser.cc:21518 cp/semantics.cc:9264 #, gcc-internal-format msgid "% clause event handle has type %qT rather than %" msgstr "" -#: c/c-parser.cc:21589 c/c-parser.cc:21683 cp/parser.cc:45923 -#: cp/parser.cc:46035 +#: c/c-parser.cc:21589 c/c-parser.cc:21683 cp/parser.cc:45983 +#: cp/parser.cc:46095 #, gcc-internal-format msgid "string literal must not contain %<\\0%>" msgstr "" -#: c/c-parser.cc:21598 c/c-parser.cc:21719 cp/parser.cc:45930 -#: cp/parser.cc:46070 +#: c/c-parser.cc:21598 c/c-parser.cc:21719 cp/parser.cc:45990 +#: cp/parser.cc:46130 #, fuzzy, gcc-internal-format #| msgid "unknown register name: %s" msgid "unknown foreign runtime identifier %qs" msgstr "ĐœĐ”ĐČŃĐŽĐŸĐŒĐ°Ń ĐœĐ°Đ·ĐČа рэгістра: %s" -#: c/c-parser.cc:21613 c/c-parser.cc:21742 cp/parser.cc:45945 -#: cp/parser.cc:46092 +#: c/c-parser.cc:21613 c/c-parser.cc:21742 cp/parser.cc:46005 +#: cp/parser.cc:46152 #, gcc-internal-format msgid "expected string literal or constant integer expression" msgstr "" -#: c/c-parser.cc:21621 c/c-parser.cc:21750 cp/parser.cc:45953 -#: cp/parser.cc:46100 cp/semantics.cc:7747 +#: c/c-parser.cc:21621 c/c-parser.cc:21750 cp/parser.cc:46013 +#: cp/parser.cc:46160 cp/semantics.cc:7768 #, gcc-internal-format msgid "unknown foreign runtime identifier %qwd" msgstr "" -#: c/c-parser.cc:21659 cp/parser.cc:46012 +#: c/c-parser.cc:21659 cp/parser.cc:46072 #, gcc-internal-format msgid "expected % or % preference selector" msgstr "" -#: c/c-parser.cc:21667 cp/parser.cc:46020 +#: c/c-parser.cc:21667 cp/parser.cc:46080 #, gcc-internal-format msgid "duplicated % preference selector" msgstr "" -#: c/c-parser.cc:21693 cp/parser.cc:46044 +#: c/c-parser.cc:21693 cp/parser.cc:46104 #, gcc-internal-format msgid "% string literal must start with %" msgstr "" -#: c/c-parser.cc:21701 cp/parser.cc:46051 +#: c/c-parser.cc:21701 cp/parser.cc:46111 #, gcc-internal-format msgid "% string literal must not contain a comma" msgstr "" -#: c/c-parser.cc:21713 cp/parser.cc:46063 +#: c/c-parser.cc:21713 cp/parser.cc:46123 #, gcc-internal-format msgid "non-empty string literal expected" msgstr "" -#: c/c-parser.cc:21823 cp/parser.cc:46203 +#: c/c-parser.cc:21823 cp/parser.cc:46263 #, gcc-internal-format msgid "duplicate % modifier" msgstr "" -#: c/c-parser.cc:21830 cp/parser.cc:46210 +#: c/c-parser.cc:21830 cp/parser.cc:46270 #, gcc-internal-format msgid "duplicate % modifier" msgstr "" -#: c/c-parser.cc:21837 cp/parser.cc:46217 +#: c/c-parser.cc:21837 cp/parser.cc:46277 #, gcc-internal-format msgid "duplicate % modifier" msgstr "" -#: c/c-parser.cc:21858 cp/parser.cc:46238 +#: c/c-parser.cc:21858 cp/parser.cc:46298 #, gcc-internal-format msgid "expected %, %, or %" msgstr "" -#: c/c-parser.cc:21894 c/c-parser.cc:28222 cp/parser.cc:46275 -#: cp/parser.cc:53789 +#: c/c-parser.cc:21894 c/c-parser.cc:28222 cp/parser.cc:46335 +#: cp/parser.cc:53849 #, gcc-internal-format msgid "missing required % and/or % modifier" msgstr "" -#: c/c-parser.cc:22135 cp/parser.cc:46570 +#: c/c-parser.cc:22135 cp/parser.cc:46630 #, gcc-internal-format msgid "expected an OpenACC clause" msgstr "" #: c/c-parser.cc:22146 c/c-parser.cc:22556 c/c-parser.cc:30589 -#: cp/parser.cc:46581 cp/parser.cc:47049 cp/parser.cc:54743 +#: cp/parser.cc:46641 cp/parser.cc:47109 cp/parser.cc:54803 #, fuzzy, gcc-internal-format #| msgid "complex invalid for `%s'" msgid "%qs is not valid for %qs" msgstr "complex ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐŽĐ»Ń \"%s\"" -#: c/c-parser.cc:22191 cp/parser.cc:46629 +#: c/c-parser.cc:22191 cp/parser.cc:46689 #, gcc-internal-format msgid "clauses in % trait should be separated by %<,%>" msgstr "" -#: c/c-parser.cc:22344 cp/parser.cc:46822 +#: c/c-parser.cc:22344 cp/parser.cc:46882 #, gcc-internal-format msgid "%qs must be the first clause of %qs" msgstr "" -#: c/c-parser.cc:22384 cp/parser.cc:46858 +#: c/c-parser.cc:22384 cp/parser.cc:46918 #, gcc-internal-format msgid "% clause with % deprecated since OpenMP 5.2, use %" msgstr "" -#: c/c-parser.cc:22545 cp/parser.cc:47038 +#: c/c-parser.cc:22545 cp/parser.cc:47098 #, gcc-internal-format msgid "expected an OpenMP clause" msgstr "" -#: c/c-parser.cc:22706 cp/parser.cc:52281 +#: c/c-parser.cc:22706 cp/parser.cc:52341 #, gcc-internal-format msgid "no valid clauses specified in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.cc:22716 cp/parser.cc:52291 +#: c/c-parser.cc:22716 cp/parser.cc:52351 #, gcc-internal-format msgid "array section in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.cc:22736 cp/parser.cc:52311 +#: c/c-parser.cc:22736 cp/parser.cc:52371 #, gcc-internal-format msgid "%qD must be a global variable in %<#pragma acc declare link%>" msgstr "" -#: c/c-parser.cc:22747 cp/parser.cc:52322 +#: c/c-parser.cc:22747 cp/parser.cc:52382 #, gcc-internal-format msgid "invalid OpenACC clause at file scope" msgstr "" -#: c/c-parser.cc:22754 cp/parser.cc:52329 +#: c/c-parser.cc:22754 cp/parser.cc:52389 #, gcc-internal-format msgid "invalid use of % variable %qD in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.cc:22762 cp/parser.cc:52337 +#: c/c-parser.cc:22762 cp/parser.cc:52397 #, gcc-internal-format msgid "invalid use of % variable %qD in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.cc:22773 cp/parser.cc:52359 +#: c/c-parser.cc:22773 cp/parser.cc:52419 #, gcc-internal-format msgid "%qD must be a variable declared in the same scope as %<#pragma acc declare%>" msgstr "" -#: c/c-parser.cc:22783 cp/parser.cc:52382 +#: c/c-parser.cc:22783 cp/parser.cc:52442 #, gcc-internal-format msgid "variable %qD used more than once with %<#pragma acc declare%>" msgstr "" -#: c/c-parser.cc:22876 cp/parser.cc:52466 +#: c/c-parser.cc:22876 cp/parser.cc:52526 #, gcc-internal-format msgid "expected % after %<#pragma acc %s%>" msgstr "" -#: c/c-parser.cc:22892 cp/parser.cc:52483 +#: c/c-parser.cc:22892 cp/parser.cc:52543 #, gcc-internal-format msgid "%<#pragma acc %s data%> has no data movement clause" msgstr "" -#: c/c-parser.cc:22924 cp/parser.cc:52241 +#: c/c-parser.cc:22924 cp/parser.cc:52301 #, gcc-internal-format msgid "% construct requires % clause" msgstr "" @@ -52199,7 +52242,7 @@ msgstr "" msgid "expected function name" msgstr "" -#: c/c-parser.cc:23175 cp/parser.cc:56273 +#: c/c-parser.cc:23175 cp/parser.cc:56333 #, fuzzy, gcc-internal-format #| msgid "`%D' is not a function," msgid "%qD does not refer to a function" @@ -52210,22 +52253,22 @@ msgstr "`%D' - гэта ĐœŃ Ń„ŃƒĐœĐșцыя," msgid "%<#pragma acc routine%> not immediately followed by function declaration or definition" msgstr "" -#: c/c-parser.cc:23238 cp/parser.cc:56324 cp/parser.cc:56371 +#: c/c-parser.cc:23238 cp/parser.cc:56384 cp/parser.cc:56431 #, gcc-internal-format msgid "%<#pragma acc routine%> not immediately followed by a single function declaration or definition" msgstr "" -#: c/c-parser.cc:23269 cp/parser.cc:56399 +#: c/c-parser.cc:23269 cp/parser.cc:56459 #, gcc-internal-format msgid "%<#pragma acc routine%> must be applied before use" msgstr "" -#: c/c-parser.cc:23270 cp/parser.cc:56401 +#: c/c-parser.cc:23270 cp/parser.cc:56461 #, gcc-internal-format msgid "%<#pragma acc routine%> must be applied before definition" msgstr "" -#: c/c-parser.cc:23315 cp/parser.cc:52699 +#: c/c-parser.cc:23315 cp/parser.cc:52759 #, gcc-internal-format msgid "%<#pragma acc update%> must contain at least one % or % or % clause" msgstr "" @@ -52251,7 +52294,7 @@ msgstr "" msgid "modified here" msgstr "'O' ĐŒĐ°ĐŽŃ‹Ń„Ń–Đșатар" -#: c/c-parser.cc:23467 cp/parser.cc:47164 cp/parser.cc:47179 +#: c/c-parser.cc:23467 cp/parser.cc:47224 cp/parser.cc:47239 #, gcc-internal-format msgid "% clause argument needs to be positive constant power of two integer expression" msgstr "" @@ -52286,111 +52329,111 @@ msgstr "" msgid "% clause requires a predefined allocator as %qD is static" msgstr "" -#: c/c-parser.cc:23694 cp/parser.cc:47344 +#: c/c-parser.cc:23694 cp/parser.cc:47404 #, gcc-internal-format msgid "expected %, %, %, or % clause" msgstr "" -#: c/c-parser.cc:23733 cp/parser.cc:47383 +#: c/c-parser.cc:23733 cp/parser.cc:47443 #, gcc-internal-format msgid "expected %, % or %" msgstr "" -#: c/c-parser.cc:23757 cp/parser.cc:47412 +#: c/c-parser.cc:23757 cp/parser.cc:47472 #, gcc-internal-format msgid "expected %, %, %, %, %, %, %, %, %, %, % or % clause" msgstr "" -#: c/c-parser.cc:23772 cp/parser.cc:47427 +#: c/c-parser.cc:23772 cp/parser.cc:47487 #, fuzzy, gcc-internal-format #| msgid "too many input files" msgid "too many atomic clauses" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ уĐČĐ°Ń…ĐŸĐŽĐ·ŃŃ‡Ń‹Ń… фаĐčлаў" -#: c/c-parser.cc:23779 cp/parser.cc:47434 +#: c/c-parser.cc:23779 cp/parser.cc:47494 #, gcc-internal-format msgid "too many memory order clauses" msgstr "" -#: c/c-parser.cc:23817 c/c-parser.cc:23824 cp/parser.cc:47472 -#: cp/parser.cc:47479 +#: c/c-parser.cc:23817 c/c-parser.cc:23824 cp/parser.cc:47532 +#: cp/parser.cc:47539 #, gcc-internal-format msgid "%qs clause is incompatible with % or % clauses" msgstr "" -#: c/c-parser.cc:23830 c/c-parser.cc:23835 cp/parser.cc:47485 -#: cp/parser.cc:47490 +#: c/c-parser.cc:23830 c/c-parser.cc:23835 cp/parser.cc:47545 +#: cp/parser.cc:47550 #, gcc-internal-format msgid "%qs clause requires %qs clause" msgstr "" -#: c/c-parser.cc:23858 cp/parser.cc:47513 +#: c/c-parser.cc:23858 cp/parser.cc:47573 #, gcc-internal-format msgid "%<#pragma omp atomic write%> incompatible with % clause implicitly provided by a % directive" msgstr "" -#: c/c-parser.cc:23869 cp/parser.cc:47524 +#: c/c-parser.cc:23869 cp/parser.cc:47584 #, gcc-internal-format msgid "%<#pragma omp atomic read%> incompatible with % clause implicitly provided by a % directive" msgstr "" -#: c/c-parser.cc:23901 cp/parser.cc:47556 +#: c/c-parser.cc:23901 cp/parser.cc:47616 #, gcc-internal-format msgid "%<#pragma omp atomic read%> incompatible with % clause" msgstr "" -#: c/c-parser.cc:23911 cp/parser.cc:47566 +#: c/c-parser.cc:23911 cp/parser.cc:47626 #, gcc-internal-format msgid "%<#pragma omp atomic write%> incompatible with % clause" msgstr "" -#: c/c-parser.cc:24032 cp/parser.cc:47666 +#: c/c-parser.cc:24032 cp/parser.cc:47726 #, gcc-internal-format msgid "expected %<==%> comparison in % condition" msgstr "" -#: c/c-parser.cc:24039 cp/parser.cc:47673 +#: c/c-parser.cc:24039 cp/parser.cc:47733 #, gcc-internal-format msgid "expected %<==%>, %<<%> or %<>%> comparison in % condition" msgstr "" -#: c/c-parser.cc:24112 cp/parser.cc:47738 cp/parser.cc:48021 cp/parser.cc:48115 -#: cp/parser.cc:48133 +#: c/c-parser.cc:24112 cp/parser.cc:47798 cp/parser.cc:48081 cp/parser.cc:48175 +#: cp/parser.cc:48193 #, gcc-internal-format msgid "invalid form of %<#pragma omp atomic compare%>" msgstr "" -#: c/c-parser.cc:24123 cp/parser.cc:47749 +#: c/c-parser.cc:24123 cp/parser.cc:47809 #, gcc-internal-format msgid "unexpected %" msgstr "" -#: c/c-parser.cc:24183 cp/parser.cc:48188 +#: c/c-parser.cc:24183 cp/parser.cc:48248 #, gcc-internal-format msgid "invalid form of %" msgstr "" -#: c/c-parser.cc:24454 cp/parser.cc:48042 cp/parser.cc:48068 +#: c/c-parser.cc:24454 cp/parser.cc:48102 cp/parser.cc:48128 #, gcc-internal-format msgid "invalid form of %<#pragma omp atomic%>" msgstr "" -#: c/c-parser.cc:24458 cp/parser.cc:48108 cp/parser.cc:48142 +#: c/c-parser.cc:24458 cp/parser.cc:48168 cp/parser.cc:48202 #, gcc-internal-format msgid "invalid operator for %<#pragma omp atomic%>" msgstr "" -#: c/c-parser.cc:24509 cp/parser.cc:48177 +#: c/c-parser.cc:24509 cp/parser.cc:48237 #, gcc-internal-format msgid "% clause requires atomic equality comparison" msgstr "" -#: c/c-parser.cc:24515 cp/semantics.cc:12395 cp/semantics.cc:12405 +#: c/c-parser.cc:24515 cp/semantics.cc:12416 cp/semantics.cc:12426 #, gcc-internal-format msgid "%<#pragma omp atomic capture%> uses two different expressions for memory" msgstr "" -#: c/c-parser.cc:24618 cp/semantics.cc:12482 +#: c/c-parser.cc:24618 cp/semantics.cc:12503 #, gcc-internal-format msgid "% expression is not lvalue expression" msgstr "" @@ -52400,27 +52443,27 @@ msgstr "" msgid "% expression is not lvalue expression" msgstr "" -#: c/c-parser.cc:24667 cp/parser.cc:48330 +#: c/c-parser.cc:24667 cp/parser.cc:48390 #, gcc-internal-format msgid "the % expression %qE should be the same as the % argument %qE" msgstr "" -#: c/c-parser.cc:24698 cp/parser.cc:48366 +#: c/c-parser.cc:24698 cp/parser.cc:48426 #, gcc-internal-format msgid "expected %, %, %, % or %" msgstr "" -#: c/c-parser.cc:24710 cp/parser.cc:48382 +#: c/c-parser.cc:24710 cp/parser.cc:48442 #, gcc-internal-format msgid "expected %, % or % clause" msgstr "" -#: c/c-parser.cc:24751 cp/parser.cc:48420 +#: c/c-parser.cc:24751 cp/parser.cc:48480 #, gcc-internal-format msgid "expected %, %, % or %" msgstr "" -#: c/c-parser.cc:24759 cp/parser.cc:48428 +#: c/c-parser.cc:24759 cp/parser.cc:48488 #, gcc-internal-format msgid "% list specified together with memory order clause" msgstr "" @@ -52430,32 +52473,32 @@ msgstr "" msgid "expected %<(%> or end of line" msgstr "" -#: c/c-parser.cc:24835 cp/parser.cc:49166 +#: c/c-parser.cc:24835 cp/parser.cc:49226 #, gcc-internal-format msgid "%<[[omp::directive(%s)]]%> must be the only specified attribute on a statement" msgstr "" -#: c/c-parser.cc:24902 cp/parser.cc:49235 +#: c/c-parser.cc:24902 cp/parser.cc:49295 #, gcc-internal-format msgid "%<#pragma omp scan%> with zero preceding executable statements" msgstr "" -#: c/c-parser.cc:24936 cp/parser.cc:49268 +#: c/c-parser.cc:24936 cp/parser.cc:49328 #, gcc-internal-format msgid "expected % or % clause" msgstr "" -#: c/c-parser.cc:24941 cp/parser.cc:49274 +#: c/c-parser.cc:24941 cp/parser.cc:49334 #, gcc-internal-format msgid "expected %<#pragma omp scan%>" msgstr "" -#: c/c-parser.cc:24950 cp/parser.cc:49283 +#: c/c-parser.cc:24950 cp/parser.cc:49343 #, gcc-internal-format msgid "%<#pragma omp scan%> with zero succeeding executable statements" msgstr "" -#: c/c-parser.cc:24975 cp/parser.cc:49306 +#: c/c-parser.cc:24975 cp/parser.cc:49366 #, fuzzy, gcc-internal-format msgid "for statement expected" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі" @@ -52463,68 +52506,68 @@ msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі" #. Don't call cp_parser_error here since it overrides the #. provided message with a more confusing one if there was #. a bad pragma or attribute directive. -#: c/c-parser.cc:25004 cp/parser.cc:49328 cp/parser.cc:49330 cp/parser.cc:49515 +#: c/c-parser.cc:25004 cp/parser.cc:49388 cp/parser.cc:49390 cp/parser.cc:49575 #, gcc-internal-format msgid "loop nest expected" msgstr "" -#: c/c-parser.cc:25056 cp/parser.cc:49403 +#: c/c-parser.cc:25056 cp/parser.cc:49463 #, gcc-internal-format msgid "attributes other than OpenMP directives are not allowed on % in loop nest" msgstr "" -#: c/c-parser.cc:25085 cp/parser.cc:49434 +#: c/c-parser.cc:25085 cp/parser.cc:49494 #, gcc-internal-format msgid "% construct with % clause generates just one loop with canonical form but %d loops are needed" msgstr "" -#: c/c-parser.cc:25096 cp/parser.cc:49445 +#: c/c-parser.cc:25096 cp/parser.cc:49505 #, gcc-internal-format msgid "generated loop of % construct without % clause does not have canonical form" msgstr "" -#: c/c-parser.cc:25119 cp/parser.cc:49471 +#: c/c-parser.cc:25119 cp/parser.cc:49531 #, gcc-internal-format msgid "% construct generates %d loops with canonical form but %d loops are needed" msgstr "" -#: c/c-parser.cc:25130 cp/parser.cc:49482 +#: c/c-parser.cc:25130 cp/parser.cc:49542 #, gcc-internal-format msgid "expected % loop or OpenMP loop transformation construct" msgstr "" -#: c/c-parser.cc:25218 cp/semantics.cc:11957 cp/semantics.cc:12050 +#: c/c-parser.cc:25218 cp/semantics.cc:11978 cp/semantics.cc:12071 #, gcc-internal-format msgid "expected iteration declaration or initialization" msgstr "" -#: c/c-parser.cc:25307 c/c-parser.cc:25322 cp/parser.cc:49809 -#: cp/parser.cc:49824 +#: c/c-parser.cc:25307 c/c-parser.cc:25322 cp/parser.cc:49869 +#: cp/parser.cc:49884 #, gcc-internal-format msgid "not enough nested loops" msgstr "" -#: c/c-parser.cc:25425 cp/parser.cc:50117 +#: c/c-parser.cc:25425 cp/parser.cc:50177 #, gcc-internal-format msgid "% clause parameter is less than %" msgstr "" -#: c/c-parser.cc:25548 cp/parser.cc:49644 cp/parser.cc:49687 cp/pt.cc:19181 +#: c/c-parser.cc:25548 cp/parser.cc:49704 cp/parser.cc:49747 cp/pt.cc:19322 #, gcc-internal-format msgid "iteration variable %qD should not be firstprivate" msgstr "" -#: c/c-parser.cc:25796 cp/parser.cc:50510 +#: c/c-parser.cc:25796 cp/parser.cc:50570 #, gcc-internal-format msgid "% construct deprecated since OpenMP 5.1, use %" msgstr "" -#: c/c-parser.cc:25988 cp/parser.cc:50669 +#: c/c-parser.cc:25988 cp/parser.cc:50729 #, gcc-internal-format msgid "%<#pragma omp ordered%> with %qs clause may only be used in compound statements" msgstr "" -#: c/c-parser.cc:26204 cp/parser.cc:50875 +#: c/c-parser.cc:26204 cp/parser.cc:50935 #, gcc-internal-format msgid "expected % after %qs" msgstr "" @@ -52534,7 +52577,7 @@ msgstr "" msgid "expected a function name" msgstr "" -#: c/c-parser.cc:26439 cp/parser.cc:53409 +#: c/c-parser.cc:26439 cp/parser.cc:53469 #, gcc-internal-format msgid "expected target-function call" msgstr "" @@ -52544,47 +52587,47 @@ msgstr "" msgid "%<#pragma omp dispatch%> must be followed by a function call with optional assignment" msgstr "" -#: c/c-parser.cc:26696 cp/parser.cc:51242 +#: c/c-parser.cc:26696 cp/parser.cc:51302 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:26963 cp/parser.cc:51529 +#: c/c-parser.cc:26963 cp/parser.cc:51589 #, gcc-internal-format msgid "%<#pragma omp target data%> with map-type other than %, %, % or % on % clause" msgstr "" -#: c/c-parser.cc:26979 cp/parser.cc:51545 +#: c/c-parser.cc:26979 cp/parser.cc:51605 #, gcc-internal-format msgid "%<#pragma omp target data%> must contain at least one %, % or % clause" msgstr "" -#: c/c-parser.cc:27027 cp/parser.cc:51826 +#: c/c-parser.cc:27027 cp/parser.cc:51886 #, gcc-internal-format msgid "%<#pragma omp target update%> must contain at least one % or % clauses" msgstr "" -#: c/c-parser.cc:27129 cp/parser.cc:51652 +#: c/c-parser.cc:27129 cp/parser.cc:51712 #, gcc-internal-format msgid "%<#pragma omp target enter data%> with map-type other than %, % or % on % clause" msgstr "" -#: c/c-parser.cc:27141 cp/parser.cc:51664 +#: c/c-parser.cc:27141 cp/parser.cc:51724 #, gcc-internal-format msgid "%<#pragma omp target enter data%> must contain at least one % clause" msgstr "" -#: c/c-parser.cc:27240 cp/parser.cc:51769 +#: c/c-parser.cc:27240 cp/parser.cc:51829 #, gcc-internal-format msgid "%<#pragma omp target exit data%> with map-type other than %, %, % or % on % clause" msgstr "" -#: c/c-parser.cc:27253 cp/parser.cc:51782 +#: c/c-parser.cc:27253 cp/parser.cc:51842 #, gcc-internal-format msgid "%<#pragma omp target exit data%> must contain at least one % clause" msgstr "" -#: c/c-parser.cc:27505 cp/semantics.cc:11460 +#: c/c-parser.cc:27505 cp/semantics.cc:11481 #, gcc-internal-format msgid "%<#pragma omp target%> with map-type other than %, %, % or % on % clause" msgstr "" @@ -52599,57 +52642,57 @@ msgstr "" msgid "%<#pragma omp declare %s%> must be followed by function declaration or definition" msgstr "" -#: c/c-parser.cc:27688 cp/parser.cc:52844 +#: c/c-parser.cc:27688 cp/parser.cc:52904 #, gcc-internal-format msgid "expected trait selector name" msgstr "" -#: c/c-parser.cc:27700 cp/parser.cc:52858 +#: c/c-parser.cc:27700 cp/parser.cc:52918 #, gcc-internal-format msgid "unknown selector %qs for context selector set %qs" msgstr "" -#: c/c-parser.cc:27728 cp/parser.cc:52887 +#: c/c-parser.cc:27728 cp/parser.cc:52947 #, gcc-internal-format msgid "selector %qs does not accept any properties" msgstr "" -#: c/c-parser.cc:27750 cp/parser.cc:52919 +#: c/c-parser.cc:27750 cp/parser.cc:52979 #, gcc-internal-format msgid "% cannot be specified in traits in the %qs trait-selector-set" msgstr "" -#: c/c-parser.cc:27759 cp/parser.cc:52929 cp/pt.cc:18829 +#: c/c-parser.cc:27759 cp/parser.cc:52989 cp/pt.cc:18970 #, gcc-internal-format msgid "% argument must be constant integer expression" msgstr "" -#: c/c-parser.cc:27762 cp/parser.cc:52932 cp/pt.cc:18836 +#: c/c-parser.cc:27762 cp/parser.cc:52992 cp/pt.cc:18977 #, gcc-internal-format msgid "% argument must be non-negative" msgstr "" -#: c/c-parser.cc:27803 cp/parser.cc:52978 +#: c/c-parser.cc:27803 cp/parser.cc:53038 #, gcc-internal-format msgid "expected identifier or string literal" msgstr "" -#: c/c-parser.cc:27839 cp/parser.cc:53017 cp/pt.cc:18862 +#: c/c-parser.cc:27839 cp/parser.cc:53077 cp/pt.cc:19003 #, gcc-internal-format msgid "property must be integer expression" msgstr "" -#: c/c-parser.cc:27850 cp/parser.cc:53032 +#: c/c-parser.cc:27850 cp/parser.cc:53092 #, gcc-internal-format msgid "properties for % selector may not be specified in %" msgstr "" -#: c/c-parser.cc:27871 cp/parser.cc:53048 fortran/openmp.cc:6674 +#: c/c-parser.cc:27871 cp/parser.cc:53108 fortran/openmp.cc:6674 #, gcc-internal-format msgid "% selector is not supported yet" msgstr "" -#: c/c-parser.cc:27930 cp/parser.cc:53111 +#: c/c-parser.cc:27930 cp/parser.cc:53171 #, gcc-internal-format msgid "expected context selector set name" msgstr "" @@ -52660,28 +52703,28 @@ msgstr "" msgid "variant %qD is not a function" msgstr "`%D' - гэта ĐœŃ Ń„ŃƒĐœĐșцыя," -#: c/c-parser.cc:28009 cp/decl.cc:9307 +#: c/c-parser.cc:28009 cp/decl.cc:9321 #, gcc-internal-format msgid "variant %qD is a built-in" msgstr "" -#: c/c-parser.cc:28015 cp/decl.cc:9229 +#: c/c-parser.cc:28015 cp/decl.cc:9243 #, fuzzy, gcc-internal-format msgid "variant %qD is the same as base function" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" -#: c/c-parser.cc:28069 cp/parser.cc:53627 +#: c/c-parser.cc:28069 cp/parser.cc:53687 #, gcc-internal-format msgid "expected %, % or % clause" msgstr "" -#: c/c-parser.cc:28085 cp/parser.cc:53640 +#: c/c-parser.cc:28085 cp/parser.cc:53700 #, fuzzy, gcc-internal-format #| msgid "too many input files" msgid "too many % clauses" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ уĐČĐ°Ń…ĐŸĐŽĐ·ŃŃ‡Ń‹Ń… фаĐčлаў" -#: c/c-parser.cc:28147 cp/parser.cc:53716 +#: c/c-parser.cc:28147 cp/parser.cc:53776 #, gcc-internal-format msgid "%qD is specified more than once" msgstr "" @@ -52691,7 +52734,7 @@ msgstr "" msgid "%qD is not of pointer type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: c/c-parser.cc:28174 cp/parser.cc:53749 +#: c/c-parser.cc:28174 cp/parser.cc:53809 #, gcc-internal-format msgid "expected % or %" msgstr "" @@ -52701,17 +52744,17 @@ msgstr "" msgid "% is not valid for C" msgstr "" -#: c/c-parser.cc:28184 cp/parser.cc:53756 +#: c/c-parser.cc:28184 cp/parser.cc:53816 #, gcc-internal-format msgid "expected % or % followed by %<:%>" msgstr "" -#: c/c-parser.cc:28204 cp/parser.cc:53773 +#: c/c-parser.cc:28204 cp/parser.cc:53833 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:28249 cp/parser.cc:53836 +#: c/c-parser.cc:28249 cp/parser.cc:53896 #, gcc-internal-format msgid "expected % clause" msgstr "" @@ -52731,12 +52774,12 @@ msgstr "" msgid "base function %qD declared here" msgstr "ĐČŃ–Ń€Ń‚ŃƒĐ°Đ»ŃŒĐœŃ‹Ń Ń„ŃƒĐœĐșцыі ĐœĐ” ĐŒĐŸĐłŃƒŃ†ŃŒ Đ±Ń‹Ń†ŃŒ ŃŃĐ±Ń€ĐŸŃžŃĐșŃ–ĐŒŃ–" -#: c/c-parser.cc:28330 cp/decl.cc:9289 +#: c/c-parser.cc:28330 cp/decl.cc:9303 #, fuzzy, gcc-internal-format msgid "argument %d of %qD must be of %" msgstr "ĐżĐ”Ń€ŃˆŃ‹ĐŒ Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°ĐŒ \"%s\" паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ \"int\"" -#: c/c-parser.cc:28334 cp/decl.cc:9154 cp/decl.cc:9292 +#: c/c-parser.cc:28334 cp/decl.cc:9168 cp/decl.cc:9306 #, gcc-internal-format msgid "% specified here" msgstr "" @@ -52746,7 +52789,7 @@ msgstr "" msgid "variant %qD and base %qD have incompatible types after % adjustment" msgstr "" -#: c/c-parser.cc:28396 cp/decl.cc:9298 +#: c/c-parser.cc:28396 cp/decl.cc:9312 #, fuzzy, gcc-internal-format msgid "variant %qD and base %qD have incompatible types" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" @@ -52756,7 +52799,7 @@ msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" msgid "%<#pragma omp declare %s%> not immediately followed by a function declaration or definition" msgstr "" -#: c/c-parser.cc:28467 cp/parser.cc:53886 +#: c/c-parser.cc:28467 cp/parser.cc:53946 #, gcc-internal-format msgid "%<#pragma omp declare %s%> not immediately followed by a single function declaration or definition" msgstr "" @@ -52771,84 +52814,84 @@ msgstr "" msgid "no declaration of base function %qs" msgstr "ĐœŃĐŒĐ° ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐłĐ° аб'ŃŃžĐ»Đ”ĐœĐœŃ ĐŽĐ»Ń \"%s\"" -#: c/c-parser.cc:28575 cp/parser.cc:25651 +#: c/c-parser.cc:28575 cp/parser.cc:25715 #, gcc-internal-format msgid "variant function definition does not match declaration of %qE" msgstr "" -#: c/c-parser.cc:28733 cp/parser.cc:54282 +#: c/c-parser.cc:28733 cp/parser.cc:54342 #, gcc-internal-format msgid "use of % as a synonym for % has been deprecated since OpenMP 5.2" msgstr "" -#: c/c-parser.cc:28770 cp/parser.cc:54175 +#: c/c-parser.cc:28770 cp/parser.cc:54235 #, gcc-internal-format msgid "%qD specified both in declare target % and %qs clauses" msgstr "" -#: c/c-parser.cc:28774 cp/parser.cc:54179 +#: c/c-parser.cc:28774 cp/parser.cc:54239 #, gcc-internal-format msgid "%qD specified both in declare target % and % or % clauses" msgstr "" -#: c/c-parser.cc:28834 cp/parser.cc:54317 +#: c/c-parser.cc:28834 cp/parser.cc:54377 #, gcc-internal-format msgid "directive with only % or % clauses" msgstr "" -#: c/c-parser.cc:28837 cp/parser.cc:54320 +#: c/c-parser.cc:28837 cp/parser.cc:54380 #, gcc-internal-format msgid "% clause must specify 'any' when used with an % clause" msgstr "" -#: c/c-parser.cc:28901 cp/parser.cc:54390 +#: c/c-parser.cc:28901 cp/parser.cc:54450 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:28954 c/c-parser.cc:29056 cp/parser.cc:54443 +#: c/c-parser.cc:28954 c/c-parser.cc:29056 cp/parser.cc:54503 #, gcc-internal-format msgid "expected % or %" msgstr "" -#: c/c-parser.cc:28968 cp/parser.cc:54456 +#: c/c-parser.cc:28968 cp/parser.cc:54516 #, gcc-internal-format msgid "expected %, %, or %" msgstr "" -#: c/c-parser.cc:29001 cp/parser.cc:54494 +#: c/c-parser.cc:29001 cp/parser.cc:54554 #, gcc-internal-format msgid "%<#pragma omp end declare target%> without corresponding %<#pragma omp declare target%> or %<#pragma omp begin declare target%>" msgstr "" -#: c/c-parser.cc:29012 c/c-parser.cc:29077 cp/parser.cc:54505 -#: cp/parser.cc:54570 +#: c/c-parser.cc:29012 c/c-parser.cc:29077 cp/parser.cc:54565 +#: cp/parser.cc:54630 #, gcc-internal-format msgid "%qs in attribute syntax terminated with %qs in pragma syntax" msgstr "" -#: c/c-parser.cc:29019 c/c-parser.cc:29082 cp/parser.cc:54512 -#: cp/parser.cc:54575 +#: c/c-parser.cc:29019 c/c-parser.cc:29082 cp/parser.cc:54572 +#: cp/parser.cc:54635 #, gcc-internal-format msgid "%qs in pragma syntax terminated with %qs in attribute syntax" msgstr "" -#: c/c-parser.cc:29033 cp/parser.cc:54526 +#: c/c-parser.cc:29033 cp/parser.cc:54586 #, gcc-internal-format msgid "%<#pragma omp end declare variant%> without corresponding %<#pragma omp begin declare variant%>" msgstr "" -#: c/c-parser.cc:29043 cp/parser.cc:54536 +#: c/c-parser.cc:29043 cp/parser.cc:54596 #, gcc-internal-format msgid "% in attribute syntax terminated with % in pragma syntax" msgstr "" -#: c/c-parser.cc:29048 cp/parser.cc:54541 +#: c/c-parser.cc:29048 cp/parser.cc:54601 #, gcc-internal-format msgid "% in pragma syntax terminated with % in attribute syntax" msgstr "" -#: c/c-parser.cc:29090 cp/parser.cc:54583 +#: c/c-parser.cc:29090 cp/parser.cc:54643 #, gcc-internal-format msgid "expected % or %" msgstr "" @@ -52873,12 +52916,12 @@ msgstr "" msgid "%<#pragma omp declare mapper%> previously declared here" msgstr "" -#: c/c-parser.cc:29206 cp/parser.cc:55578 +#: c/c-parser.cc:29206 cp/parser.cc:55638 #, gcc-internal-format msgid "unexpected clause" msgstr "" -#: c/c-parser.cc:29214 cp/parser.cc:55589 +#: c/c-parser.cc:29214 cp/parser.cc:55649 #, fuzzy, gcc-internal-format #| msgid "Missing class name" msgid "missing % clause" @@ -52939,32 +52982,32 @@ msgstr "" msgid "expected %, %, % or %" msgstr "" -#: c/c-parser.cc:29728 cp/parser.cc:55784 +#: c/c-parser.cc:29728 cp/parser.cc:55844 #, gcc-internal-format msgid "expected %, %, %, % or %" msgstr "" -#: c/c-parser.cc:29757 cp/parser.cc:55819 +#: c/c-parser.cc:29757 cp/parser.cc:55879 #, gcc-internal-format msgid "expected %, %, %, %, % or % clause" msgstr "" -#: c/c-parser.cc:29776 cp/parser.cc:55838 +#: c/c-parser.cc:29776 cp/parser.cc:55898 #, gcc-internal-format msgid "%qs clause used lexically after first target construct or offloading API" msgstr "" -#: c/c-parser.cc:29788 cp/parser.cc:55850 +#: c/c-parser.cc:29788 cp/parser.cc:55910 #, gcc-internal-format msgid "more than one % clause in a single compilation unit" msgstr "" -#: c/c-parser.cc:29797 cp/parser.cc:55859 +#: c/c-parser.cc:29797 cp/parser.cc:55919 #, gcc-internal-format msgid "% clause used lexically after first % construct without memory order clause" msgstr "" -#: c/c-parser.cc:29811 cp/parser.cc:55873 +#: c/c-parser.cc:29811 cp/parser.cc:55933 #, gcc-internal-format msgid "% requires at least one clause" msgstr "" @@ -52979,161 +53022,161 @@ msgstr "" msgid "variable sized type %qT in % clause" msgstr "" -#: c/c-parser.cc:29954 cp/parser.cc:52050 +#: c/c-parser.cc:29954 cp/parser.cc:52110 #, gcc-internal-format msgid "expected %" msgstr "" -#: c/c-parser.cc:29983 cp/semantics.cc:9986 cp/semantics.cc:10003 +#: c/c-parser.cc:29983 cp/semantics.cc:10007 cp/semantics.cc:10024 #, gcc-internal-format msgid "% argument needs positive integral constant" msgstr "" -#: c/c-parser.cc:30099 cp/parser.cc:55930 +#: c/c-parser.cc:30099 cp/parser.cc:55990 #, gcc-internal-format msgid "expected %, % or % clause" msgstr "" -#: c/c-parser.cc:30132 cp/parser.cc:55965 +#: c/c-parser.cc:30132 cp/parser.cc:56025 #, gcc-internal-format msgid "expected %qs or %qs" msgstr "" -#: c/c-parser.cc:30189 cp/parser.cc:56027 +#: c/c-parser.cc:30189 cp/parser.cc:56087 #, gcc-internal-format msgid "%<#pragma omp error%> with % clause may only be used in compound statements" msgstr "" -#: c/c-parser.cc:30196 cp/parser.cc:56034 +#: c/c-parser.cc:30196 cp/parser.cc:56094 #, gcc-internal-format msgid "%<#pragma omp error%> with % clause may not be used in intervening code" msgstr "" -#: c/c-parser.cc:30223 cp/parser.cc:56065 +#: c/c-parser.cc:30223 cp/parser.cc:56125 #, gcc-internal-format msgid "% encountered: %s" msgstr "" -#: c/c-parser.cc:30226 cp/parser.cc:56068 +#: c/c-parser.cc:30226 cp/parser.cc:56128 #, gcc-internal-format msgid "% encountered" msgstr "" -#: c/c-parser.cc:30257 cp/parser.cc:53176 +#: c/c-parser.cc:30257 cp/parser.cc:53236 #, gcc-internal-format msgid "expected at least one assumption clause" msgstr "" -#: c/c-parser.cc:30350 c/c-parser.cc:30657 cp/parser.cc:53269 -#: cp/parser.cc:54812 cp/parser.cc:54839 +#: c/c-parser.cc:30350 c/c-parser.cc:30657 cp/parser.cc:53329 +#: cp/parser.cc:54872 cp/parser.cc:54899 #, gcc-internal-format msgid "expected directive name" msgstr "" -#: c/c-parser.cc:30362 cp/parser.cc:53281 +#: c/c-parser.cc:30362 cp/parser.cc:53341 #, gcc-internal-format msgid "invalid OpenMP directive name in %qs clause argument: declarative, informational, and meta directives not permitted" msgstr "" -#: c/c-parser.cc:30370 cp/parser.cc:53289 +#: c/c-parser.cc:30370 cp/parser.cc:53349 #, gcc-internal-format msgid "unknown OpenMP directive name in %qs clause argument" msgstr "" -#: c/c-parser.cc:30377 cp/parser.cc:53296 +#: c/c-parser.cc:30377 cp/parser.cc:53356 #, gcc-internal-format msgid "%<%s%s%s%s%s%> directive mentioned in both % and % clauses" msgstr "" -#: c/c-parser.cc:30388 cp/parser.cc:53307 +#: c/c-parser.cc:30388 cp/parser.cc:53367 #, gcc-internal-format msgid "%<%s%s%s%s%s%> directive mentioned multiple times in %qs clauses" msgstr "" -#: c/c-parser.cc:30411 cp/parser.cc:53334 +#: c/c-parser.cc:30411 cp/parser.cc:53394 #, fuzzy, gcc-internal-format msgid "unknown assumption clause %qs" msgstr "ĐœĐ”ĐČŃĐŽĐŸĐŒĐ°Ń ĐœĐ°Đ·ĐČа рэгістра: %s\n" -#: c/c-parser.cc:30424 cp/parser.cc:53344 +#: c/c-parser.cc:30424 cp/parser.cc:53404 #, gcc-internal-format msgid "expected assumption clause" msgstr "" -#: c/c-parser.cc:30553 cp/parser.cc:54705 +#: c/c-parser.cc:30553 cp/parser.cc:54765 #, gcc-internal-format msgid "expected %, %, or % clause" msgstr "" -#: c/c-parser.cc:30565 cp/parser.cc:54718 +#: c/c-parser.cc:30565 cp/parser.cc:54778 #, gcc-internal-format msgid "% clause on metadirectives deprecated since OpenMP 5.2, use %" msgstr "" -#: c/c-parser.cc:30575 cp/parser.cc:54728 +#: c/c-parser.cc:30575 cp/parser.cc:54788 #, gcc-internal-format msgid "too many % or % clauses in %" msgstr "" -#: c/c-parser.cc:30583 cp/parser.cc:54737 +#: c/c-parser.cc:30583 cp/parser.cc:54797 #, gcc-internal-format msgid "% or % clause must appear last in %" msgstr "" -#: c/c-parser.cc:30670 cp/parser.cc:54825 +#: c/c-parser.cc:30670 cp/parser.cc:54885 #, fuzzy, gcc-internal-format #| msgid "unknown register name: %s" msgid "unknown directive name" msgstr "ĐœĐ”ĐČŃĐŽĐŸĐŒĐ°Ń ĐœĐ°Đ·ĐČа рэгістра: %s" -#: c/c-parser.cc:30685 cp/parser.cc:54845 +#: c/c-parser.cc:30685 cp/parser.cc:54905 #, gcc-internal-format msgid "metadirectives cannot be used as variants of a %" msgstr "" -#: c/c-parser.cc:30691 cp/parser.cc:54851 +#: c/c-parser.cc:30691 cp/parser.cc:54911 #, gcc-internal-format msgid "declarative directive variants of a % are not supported" msgstr "" -#: c/c-parser.cc:31023 cp/parser.cc:51178 +#: c/c-parser.cc:31023 cp/parser.cc:51238 #, gcc-internal-format msgid "%" msgstr "" -#: c/c-parser.cc:31049 cp/semantics.cc:10764 +#: c/c-parser.cc:31049 cp/semantics.cc:10785 #, gcc-internal-format msgid "%qE declared % after first use" msgstr "" -#: c/c-parser.cc:31051 cp/semantics.cc:10766 +#: c/c-parser.cc:31051 cp/semantics.cc:10787 #, gcc-internal-format msgid "automatic variable %qE cannot be %" msgstr "" -#: c/c-parser.cc:31055 cp/semantics.cc:10768 +#: c/c-parser.cc:31055 cp/semantics.cc:10789 #, fuzzy, gcc-internal-format msgid "% %qE has incomplete type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: c/c-parser.cc:31136 c/c-parser.cc:31205 cp/parser.cc:56696 -#: cp/semantics.cc:12642 +#: c/c-parser.cc:31136 c/c-parser.cc:31205 cp/parser.cc:56756 +#: cp/semantics.cc:12663 #, gcc-internal-format msgid "%<__transaction_atomic%> without transactional memory support enabled" msgstr "" -#: c/c-parser.cc:31138 c/c-parser.cc:31207 cp/parser.cc:56694 -#: cp/semantics.cc:12640 +#: c/c-parser.cc:31138 c/c-parser.cc:31207 cp/parser.cc:56754 +#: cp/semantics.cc:12661 #, gcc-internal-format msgid "%<__transaction_relaxed%> without transactional memory support enabled" msgstr "" -#: c/c-parser.cc:31239 cp/parser.cc:56827 +#: c/c-parser.cc:31239 cp/parser.cc:56887 #, gcc-internal-format msgid "%<__transaction_cancel%> without transactional memory support enabled" msgstr "" -#: c/c-parser.cc:31245 cp/parser.cc:56833 +#: c/c-parser.cc:31245 cp/parser.cc:56893 #, gcc-internal-format msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>" msgstr "" @@ -53143,7 +53186,7 @@ msgstr "" msgid "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%> or a % function" msgstr "" -#: c/c-parser.cc:31262 cp/parser.cc:56851 +#: c/c-parser.cc:31262 cp/parser.cc:56911 #, gcc-internal-format msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>" msgstr "" @@ -53159,7 +53202,7 @@ msgstr "" msgid "%qD has an incomplete type %qT" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: c/c-typeck.cc:260 c/c-typeck.cc:13154 c/c-typeck.cc:13228 cp/call.cc:5129 +#: c/c-typeck.cc:260 c/c-typeck.cc:13162 c/c-typeck.cc:13236 cp/call.cc:5129 #, gcc-internal-format msgid "invalid use of void expression" msgstr "" @@ -53190,168 +53233,168 @@ msgstr "ĐœŃĐČĐ”Ń€ĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” \"restict\"" msgid "%qT and %qT are in disjoint named address spaces" msgstr "" -#: c/c-typeck.cc:657 +#: c/c-typeck.cc:663 #, fuzzy, gcc-internal-format msgid "%qs attribute can only be applied to variadic functions" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" -#: c/c-typeck.cc:730 +#: c/c-typeck.cc:736 #, gcc-internal-format msgid "function types not truly compatible in ISO C" msgstr "" -#: c/c-typeck.cc:1218 +#: c/c-typeck.cc:1224 #, gcc-internal-format msgid "cannot mix operands of decimal floating and vector types" msgstr "" -#: c/c-typeck.cc:1223 +#: c/c-typeck.cc:1229 #, gcc-internal-format msgid "cannot mix operands of decimal floating and complex types" msgstr "" -#: c/c-typeck.cc:1228 +#: c/c-typeck.cc:1234 #, gcc-internal-format msgid "cannot mix operands of decimal floating and other floating types" msgstr "" -#: c/c-typeck.cc:1258 +#: c/c-typeck.cc:1264 #, gcc-internal-format msgid "%<_Complex _BitInt(%d)%> unsupported" msgstr "" -#: c/c-typeck.cc:1907 +#: c/c-typeck.cc:1913 #, gcc-internal-format msgid "invalid use of pointers to arrays with different qualifiers in ISO C before C23" msgstr "" -#: c/c-typeck.cc:1911 +#: c/c-typeck.cc:1917 #, gcc-internal-format msgid "types are not quite compatible" msgstr "" -#: c/c-typeck.cc:1915 +#: c/c-typeck.cc:1921 #, gcc-internal-format msgid "pointer target types incompatible in C++" msgstr "" -#: c/c-typeck.cc:2133 +#: c/c-typeck.cc:2139 #, gcc-internal-format msgid "function return types not compatible due to %" msgstr "" -#: c/c-typeck.cc:2348 +#: c/c-typeck.cc:2354 #, gcc-internal-format msgid "converting an array compound literal to a pointer leads to a dangling pointer in C++" msgstr "" -#: c/c-typeck.cc:3128 +#: c/c-typeck.cc:3134 #, gcc-internal-format msgid "% attribute is not allowed for a pointer to structure or union with flexible array member" msgstr "" -#: c/c-typeck.cc:3370 c/c-typeck.cc:11302 +#: c/c-typeck.cc:3378 c/c-typeck.cc:11310 #, gcc-internal-format msgid "%qT has no member named %qE; did you mean %qE?" msgstr "" -#: c/c-typeck.cc:3374 c/c-typeck.cc:11306 +#: c/c-typeck.cc:3382 c/c-typeck.cc:11314 #, gcc-internal-format msgid "%qT has no member named %qE" msgstr "" -#: c/c-typeck.cc:3383 +#: c/c-typeck.cc:3391 #, gcc-internal-format msgid "accessing a member %qE of an atomic structure %qE" msgstr "" -#: c/c-typeck.cc:3386 +#: c/c-typeck.cc:3394 #, gcc-internal-format msgid "accessing a member %qE of an atomic union %qE" msgstr "" -#: c/c-typeck.cc:3453 +#: c/c-typeck.cc:3461 #, gcc-internal-format msgid "%qE is a pointer to pointer; did you mean to dereference it before applying %<->%> to it?" msgstr "" -#: c/c-typeck.cc:3462 +#: c/c-typeck.cc:3470 #, gcc-internal-format msgid "%qE is a pointer; did you mean to use %<->%>?" msgstr "" -#: c/c-typeck.cc:3469 +#: c/c-typeck.cc:3477 #, gcc-internal-format msgid "request for member %qE in something not a structure or union" msgstr "" -#: c/c-typeck.cc:3517 +#: c/c-typeck.cc:3525 #, gcc-internal-format msgid "dereferencing % pointer" msgstr "" -#: c/c-typeck.cc:3572 +#: c/c-typeck.cc:3580 #, gcc-internal-format msgid "subscripted value is neither array nor pointer nor vector" msgstr "" -#: c/c-typeck.cc:3582 cp/typeck.cc:4273 cp/typeck.cc:4367 +#: c/c-typeck.cc:3590 cp/typeck.cc:4268 cp/typeck.cc:4362 #, gcc-internal-format msgid "array subscript is not an integer" msgstr "" -#: c/c-typeck.cc:3588 +#: c/c-typeck.cc:3596 #, gcc-internal-format msgid "subscripted value is pointer to function" msgstr "" -#: c/c-typeck.cc:3643 +#: c/c-typeck.cc:3651 #, fuzzy, gcc-internal-format #| msgid "size of array `%s' is negative" msgid "array subscript is negative" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: c/c-typeck.cc:3656 +#: c/c-typeck.cc:3664 #, gcc-internal-format msgid "ISO C forbids subscripting % array before C2Y" msgstr "" -#: c/c-typeck.cc:3660 +#: c/c-typeck.cc:3668 #, fuzzy, gcc-internal-format msgid "ISO C90 forbids subscripting non-lvalue array" msgstr "ISO C ĐœĐ” ЎазĐČĐ°Đ»ŃĐ” ЮэĐșларацыі ĐŒĐ”Ń‚Đ°Đș (label)" -#: c/c-typeck.cc:3865 +#: c/c-typeck.cc:3873 #, gcc-internal-format msgid "underspecified %qD referenced in its initializer" msgstr "" -#: c/c-typeck.cc:3910 +#: c/c-typeck.cc:3918 #, gcc-internal-format msgid "enum constant defined in struct or union is not visible in C++" msgstr "" -#: c/c-typeck.cc:3912 +#: c/c-typeck.cc:3920 #, gcc-internal-format msgid "enum constant defined here" msgstr "" -#: c/c-typeck.cc:4031 cp/typeck.cc:2277 +#: c/c-typeck.cc:4039 cp/typeck.cc:2277 #, gcc-internal-format msgid "% on array function parameter %qE will return size of %qT" msgstr "" -#: c/c-typeck.cc:4374 +#: c/c-typeck.cc:4382 #, gcc-internal-format msgid "called object %qE is not a function or function pointer" msgstr "" -#: c/c-typeck.cc:4380 +#: c/c-typeck.cc:4388 #, gcc-internal-format msgid "called object %qD is not a function or function pointer" msgstr "" -#: c/c-typeck.cc:4386 +#: c/c-typeck.cc:4394 #, gcc-internal-format msgid "called object is not a function or function pointer" msgstr "" @@ -53359,1867 +53402,1867 @@ msgstr "" #. This situation leads to run-time undefined behavior. We can't, #. therefore, simply error unless we can prove that all possible #. executions of the program must execute the code. -#: c/c-typeck.cc:4415 +#: c/c-typeck.cc:4423 #, gcc-internal-format msgid "function called through a non-compatible type" msgstr "" -#: c/c-typeck.cc:4420 c/c-typeck.cc:4476 +#: c/c-typeck.cc:4428 c/c-typeck.cc:4484 #, gcc-internal-format msgid "function with qualified void return type called" msgstr "" -#: c/c-typeck.cc:4531 +#: c/c-typeck.cc:4539 #, gcc-internal-format, gfc-internal-format msgid "type of formal parameter %d is incomplete" msgstr "" -#: c/c-typeck.cc:4543 +#: c/c-typeck.cc:4551 #, gcc-internal-format msgid "passing argument %d of %qE as integer rather than floating due to prototype" msgstr "" -#: c/c-typeck.cc:4549 +#: c/c-typeck.cc:4557 #, gcc-internal-format msgid "passing argument %d of %qE as integer rather than complex due to prototype" msgstr "" -#: c/c-typeck.cc:4555 +#: c/c-typeck.cc:4563 #, gcc-internal-format msgid "passing argument %d of %qE as complex rather than floating due to prototype" msgstr "" -#: c/c-typeck.cc:4561 +#: c/c-typeck.cc:4569 #, gcc-internal-format msgid "passing argument %d of %qE as floating rather than integer due to prototype" msgstr "" -#: c/c-typeck.cc:4567 +#: c/c-typeck.cc:4575 #, gcc-internal-format msgid "passing argument %d of %qE as complex rather than integer due to prototype" msgstr "" -#: c/c-typeck.cc:4573 +#: c/c-typeck.cc:4581 #, gcc-internal-format msgid "passing argument %d of %qE as floating rather than complex due to prototype" msgstr "" -#: c/c-typeck.cc:4589 +#: c/c-typeck.cc:4597 #, gcc-internal-format msgid "passing argument %d of %qE as % rather than % due to prototype" msgstr "" -#: c/c-typeck.cc:4615 +#: c/c-typeck.cc:4623 #, gcc-internal-format msgid "passing argument %d of %qE as %qT rather than %qT due to prototype" msgstr "" -#: c/c-typeck.cc:4641 +#: c/c-typeck.cc:4649 #, gcc-internal-format msgid "passing argument %d of %qE with different width due to prototype" msgstr "" -#: c/c-typeck.cc:4665 +#: c/c-typeck.cc:4673 #, gcc-internal-format msgid "passing argument %d of %qE as unsigned due to prototype" msgstr "" -#: c/c-typeck.cc:4670 +#: c/c-typeck.cc:4678 #, gcc-internal-format msgid "passing argument %d of %qE as signed due to prototype" msgstr "" -#: c/c-typeck.cc:4838 +#: c/c-typeck.cc:4846 #, fuzzy, gcc-internal-format #| msgid "too many arguments to function `%s'" msgid "too many arguments to method %qE; expected %i, have %i" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ Đ°Ń€ĐłŃƒĐŒŃĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі `%s'" -#: c/c-typeck.cc:4842 +#: c/c-typeck.cc:4850 #, fuzzy, gcc-internal-format #| msgid "too many arguments to function `%s'" msgid "too many arguments to function %qE; expected %i, have %i" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ Đ°Ń€ĐłŃƒĐŒŃĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі `%s'" -#: c/c-typeck.cc:4852 +#: c/c-typeck.cc:4860 #, fuzzy, gcc-internal-format #| msgid "too many arguments to function `%s'" msgid "too many arguments to built-in function %qE expecting %d" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ Đ°Ń€ĐłŃƒĐŒŃĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі `%s'" -#: c/c-typeck.cc:4865 +#: c/c-typeck.cc:4873 #, gcc-internal-format msgid "ISO C23 does not allow arguments for method %qE declared without parameters" msgstr "" -#: c/c-typeck.cc:4870 +#: c/c-typeck.cc:4878 #, gcc-internal-format msgid "ISO C23 does not allow arguments for function %qE declared without parameters" msgstr "" -#: c/c-typeck.cc:4949 +#: c/c-typeck.cc:4957 #, gcc-internal-format msgid "implicit conversion from %qT to %qT when passing argument to function" msgstr "" -#: c/c-typeck.cc:5030 +#: c/c-typeck.cc:5038 #, fuzzy, gcc-internal-format #| msgid "too few arguments to function `%s'" msgid "too few arguments to function %qE; expected at least %i, have %i" msgstr "ĐœĐ”Ń…Đ°ĐżĐ°Đ” Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі \"%s\"" -#: c/c-typeck.cc:5031 +#: c/c-typeck.cc:5039 #, fuzzy, gcc-internal-format #| msgid "too few arguments to function `%s'" msgid "too few arguments to function %qE; expected %i, have %i" msgstr "ĐœĐ”Ń…Đ°ĐżĐ°Đ” Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі \"%s\"" -#: c/c-typeck.cc:5045 +#: c/c-typeck.cc:5053 #, fuzzy, gcc-internal-format #| msgid "too few arguments to function `%s'" msgid "too few arguments to built-in function %qE expecting %u" msgstr "ĐœĐ”Ń…Đ°ĐżĐ°Đ” Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі \"%s\"" -#: c/c-typeck.cc:5223 c/c-typeck.cc:5251 cp/typeck.cc:6099 cp/typeck.cc:6391 +#: c/c-typeck.cc:5231 c/c-typeck.cc:5259 cp/typeck.cc:6094 cp/typeck.cc:6386 #, gcc-internal-format msgid "comparison with string literal results in unspecified behavior" msgstr "" -#: c/c-typeck.cc:5231 c/c-typeck.cc:5242 cp/typeck.cc:6136 cp/typeck.cc:6160 +#: c/c-typeck.cc:5239 c/c-typeck.cc:5250 cp/typeck.cc:6131 cp/typeck.cc:6155 #, gcc-internal-format msgid "comparison between pointer and zero character constant" msgstr "" -#: c/c-typeck.cc:5234 c/c-typeck.cc:5245 cp/typeck.cc:6139 cp/typeck.cc:6163 +#: c/c-typeck.cc:5242 c/c-typeck.cc:5253 cp/typeck.cc:6134 cp/typeck.cc:6158 #, gcc-internal-format msgid "did you mean to dereference the pointer?" msgstr "" -#: c/c-typeck.cc:5263 c/c-typeck.cc:5270 c/c-typeck.cc:6701 c/c-typeck.cc:6706 -#: c/c-typeck.cc:9255 cp/tree.cc:6866 +#: c/c-typeck.cc:5271 c/c-typeck.cc:5278 c/c-typeck.cc:6709 c/c-typeck.cc:6714 +#: c/c-typeck.cc:9263 cp/tree.cc:6889 #, gcc-internal-format msgid "zero as null pointer constant" msgstr "" -#: c/c-typeck.cc:5291 +#: c/c-typeck.cc:5299 #, gcc-internal-format msgid "comparison between %qT and %qT" msgstr "" -#: c/c-typeck.cc:5350 +#: c/c-typeck.cc:5358 #, gcc-internal-format msgid "pointer of type % used in subtraction" msgstr "" -#: c/c-typeck.cc:5353 +#: c/c-typeck.cc:5361 #, gcc-internal-format msgid "pointer to a function used in subtraction" msgstr "" -#: c/c-typeck.cc:5387 +#: c/c-typeck.cc:5395 #, gcc-internal-format msgid "arithmetic on pointer to an incomplete type" msgstr "" -#: c/c-typeck.cc:5396 cp/typeck.cc:7197 +#: c/c-typeck.cc:5404 cp/typeck.cc:7192 #, gcc-internal-format msgid "arithmetic on pointer to an empty aggregate" msgstr "" -#: c/c-typeck.cc:5847 +#: c/c-typeck.cc:5855 #, gcc-internal-format msgid "%<~%> on a boolean expression" msgstr "" -#: c/c-typeck.cc:5851 +#: c/c-typeck.cc:5859 #, gcc-internal-format msgid "did you mean to use logical not?" msgstr "" -#: c/c-typeck.cc:5861 +#: c/c-typeck.cc:5869 #, fuzzy, gcc-internal-format #| msgid "ISO C89 does not support complex types" msgid "ISO C does not support %<~%> for complex conjugation" msgstr "ISO C89 ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД ĐșĐŸĐŒĐ»Đ”ĐșŃĐœŃ‹Ń тыпы" -#: c/c-typeck.cc:5885 +#: c/c-typeck.cc:5893 #, fuzzy, gcc-internal-format msgid "wrong type argument to absu" msgstr "ĐœĐ” хапаД Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі" -#: c/c-typeck.cc:5911 +#: c/c-typeck.cc:5919 #, gcc-internal-format msgid "wrong type argument to unary exclamation mark" msgstr "" -#: c/c-typeck.cc:5969 +#: c/c-typeck.cc:5977 #, gcc-internal-format msgid "increment of enumeration value is invalid in C++" msgstr "" -#: c/c-typeck.cc:5972 +#: c/c-typeck.cc:5980 #, gcc-internal-format msgid "decrement of enumeration value is invalid in C++" msgstr "" -#: c/c-typeck.cc:5979 +#: c/c-typeck.cc:5987 #, gcc-internal-format msgid "increment of a boolean expression" msgstr "" -#: c/c-typeck.cc:5982 +#: c/c-typeck.cc:5990 #, gcc-internal-format msgid "decrement of a boolean expression" msgstr "" -#: c/c-typeck.cc:5998 +#: c/c-typeck.cc:6006 #, fuzzy, gcc-internal-format #| msgid "ISO C does not support `++' and `--' on complex types" msgid "ISO C does not support %<++%> and %<--%> on complex types before C2Y" msgstr "ISO C ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД \"++\" і \"--\" ĐŽĐ»Ń тыпу complex" -#: c/c-typeck.cc:6025 c/c-typeck.cc:6059 +#: c/c-typeck.cc:6033 c/c-typeck.cc:6067 #, fuzzy, gcc-internal-format msgid "wrong type argument to increment" msgstr "ĐœĐ” хапаД Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі" -#: c/c-typeck.cc:6027 c/c-typeck.cc:6062 +#: c/c-typeck.cc:6035 c/c-typeck.cc:6070 #, gcc-internal-format msgid "wrong type argument to decrement" msgstr "" -#: c/c-typeck.cc:6047 +#: c/c-typeck.cc:6055 #, fuzzy, gcc-internal-format msgid "increment of pointer to an incomplete type %qT" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: c/c-typeck.cc:6051 +#: c/c-typeck.cc:6059 #, fuzzy, gcc-internal-format msgid "decrement of pointer to an incomplete type %qT" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: c/c-typeck.cc:6200 +#: c/c-typeck.cc:6208 #, gcc-internal-format msgid "taking address of expression of type %" msgstr "" -#: c/c-typeck.cc:6263 c/c-typeck.cc:6460 d/d-codegen.cc:759 +#: c/c-typeck.cc:6271 c/c-typeck.cc:6468 d/d-codegen.cc:759 #, fuzzy, gcc-internal-format msgid "cannot take address of bit-field %qD" msgstr "ĐœĐ” ĐŒĐ°ĐłŃƒ Đ°Ń‚Ń€Ń‹ĐŒĐ°Ń†ŃŒ аЮрас бітаĐČага ĐżĐŸĐ»Ń \"%s\"" -#: c/c-typeck.cc:6277 +#: c/c-typeck.cc:6285 #, fuzzy, gcc-internal-format msgid "cannot take address of scalar with reverse storage order" msgstr "ĐœĐ” ĐŒĐ°ĐłŃƒ Đ°Ń‚Ń€Ń‹ĐŒĐ°Ń†ŃŒ аЮрас бітаĐČага ĐżĐŸĐ»Ń \"%s\"" -#: c/c-typeck.cc:6285 +#: c/c-typeck.cc:6293 #, gcc-internal-format msgid "address of array with reverse scalar storage order requested" msgstr "" -#: c/c-typeck.cc:6479 +#: c/c-typeck.cc:6487 #, gcc-internal-format msgid "address of register compound literal requested" msgstr "" -#: c/c-typeck.cc:6501 +#: c/c-typeck.cc:6509 #, gcc-internal-format msgid "global register variable %qD used in nested function" msgstr "" -#: c/c-typeck.cc:6504 +#: c/c-typeck.cc:6512 #, gcc-internal-format msgid "register variable %qD used in nested function" msgstr "" -#: c/c-typeck.cc:6509 +#: c/c-typeck.cc:6517 #, gcc-internal-format msgid "address of global register variable %qD requested" msgstr "" -#: c/c-typeck.cc:6518 d/d-codegen.cc:775 +#: c/c-typeck.cc:6526 d/d-codegen.cc:775 #, gcc-internal-format msgid "address of register variable %qD requested" msgstr "" -#: c/c-typeck.cc:6656 +#: c/c-typeck.cc:6664 #, gcc-internal-format msgid "non-lvalue array in conditional expression" msgstr "" -#: c/c-typeck.cc:6691 +#: c/c-typeck.cc:6699 #, gcc-internal-format msgid "different enum types in conditional is invalid in C++: %qT vs %qT" msgstr "" -#: c/c-typeck.cc:6751 +#: c/c-typeck.cc:6759 #, gcc-internal-format msgid "implicit conversion from %qT to %qT to match other result of conditional" msgstr "" -#: c/c-typeck.cc:6810 c/c-typeck.cc:6816 +#: c/c-typeck.cc:6818 c/c-typeck.cc:6824 #, gcc-internal-format msgid "operand of % changes signedness from %qT to %qT due to unsignedness of other operand" msgstr "" -#: c/c-typeck.cc:6833 +#: c/c-typeck.cc:6841 #, gcc-internal-format msgid "ISO C forbids conditional expr with only one void side" msgstr "" -#: c/c-typeck.cc:6853 +#: c/c-typeck.cc:6861 #, gcc-internal-format msgid "pointers to disjoint address spaces used in conditional expression" msgstr "" -#: c/c-typeck.cc:6877 +#: c/c-typeck.cc:6885 #, gcc-internal-format msgid "pointer to array loses qualifier in conditional expression" msgstr "" -#: c/c-typeck.cc:6881 +#: c/c-typeck.cc:6889 #, gcc-internal-format msgid "pointer to array loses qualifier in conditional expression in ISO C before C23" msgstr "" -#: c/c-typeck.cc:6886 +#: c/c-typeck.cc:6894 #, gcc-internal-format msgid "ISO C forbids conditional expr between % and function pointer" msgstr "" -#: c/c-typeck.cc:6910 +#: c/c-typeck.cc:6918 #, gcc-internal-format msgid "pointer type mismatch in conditional expression" msgstr "" -#: c/c-typeck.cc:6913 +#: c/c-typeck.cc:6921 #, gcc-internal-format msgid "first expression has type %qT" msgstr "" -#: c/c-typeck.cc:6914 +#: c/c-typeck.cc:6922 #, gcc-internal-format msgid "second expression has type %qT" msgstr "" -#: c/c-typeck.cc:6925 c/c-typeck.cc:6938 +#: c/c-typeck.cc:6933 c/c-typeck.cc:6946 #, gcc-internal-format msgid "pointer/integer type mismatch in conditional expression" msgstr "" -#: c/c-typeck.cc:6965 +#: c/c-typeck.cc:6973 #, gcc-internal-format msgid "type mismatch in conditional expression" msgstr "" -#: c/c-typeck.cc:7081 +#: c/c-typeck.cc:7089 #, gcc-internal-format msgid "ignoring return value of %qD, declared with attribute %: %E" msgstr "" -#: c/c-typeck.cc:7085 +#: c/c-typeck.cc:7093 #, gcc-internal-format msgid "ignoring return value of %qD, declared with attribute %" msgstr "" -#: c/c-typeck.cc:7104 +#: c/c-typeck.cc:7112 #, gcc-internal-format msgid "ignoring return value of type %qT, declared with attribute %: %E" msgstr "" -#: c/c-typeck.cc:7109 +#: c/c-typeck.cc:7117 #, gcc-internal-format msgid "ignoring return value of type %qT, declared with attribute %" msgstr "" -#: c/c-typeck.cc:7118 cp/cvt.cc:1145 rust/backend/rust-tree.cc:644 +#: c/c-typeck.cc:7126 cp/cvt.cc:1145 rust/backend/rust-tree.cc:644 #, gcc-internal-format msgid "in call to %qD, declared here" msgstr "" -#: c/c-typeck.cc:7167 +#: c/c-typeck.cc:7175 #, gcc-internal-format msgid "left-hand operand of comma expression has no effect" msgstr "" -#: c/c-typeck.cc:7185 c/c-typeck.cc:13831 +#: c/c-typeck.cc:7193 c/c-typeck.cc:13839 #, gcc-internal-format msgid "right-hand operand of comma expression has no effect" msgstr "" -#: c/c-typeck.cc:7256 +#: c/c-typeck.cc:7264 msgid "cast adds %q#v qualifier to function type" msgstr "" -#: c/c-typeck.cc:7262 +#: c/c-typeck.cc:7270 msgid "cast discards %qv qualifier from pointer target type" msgstr "" -#: c/c-typeck.cc:7297 +#: c/c-typeck.cc:7305 #, gcc-internal-format msgid "to be safe all intermediate pointers in cast from %qT to %qT must be % qualified" msgstr "" -#: c/c-typeck.cc:7389 +#: c/c-typeck.cc:7397 #, gcc-internal-format msgid "cast specifies array type" msgstr "" -#: c/c-typeck.cc:7395 +#: c/c-typeck.cc:7403 #, gcc-internal-format msgid "cast specifies function type" msgstr "" -#: c/c-typeck.cc:7410 +#: c/c-typeck.cc:7418 #, gcc-internal-format msgid "ISO C forbids casting nonscalar to the same type" msgstr "" -#: c/c-typeck.cc:7414 +#: c/c-typeck.cc:7422 #, gcc-internal-format msgid "useless cast to type %qT" msgstr "" -#: c/c-typeck.cc:7434 +#: c/c-typeck.cc:7442 #, gcc-internal-format msgid "ISO C forbids casts to union type" msgstr "" -#: c/c-typeck.cc:7444 +#: c/c-typeck.cc:7452 #, gcc-internal-format msgid "cast to union type from type not present in union" msgstr "" -#: c/c-typeck.cc:7479 +#: c/c-typeck.cc:7487 #, gcc-internal-format msgid "cast to %qs address space pointer from disjoint generic address space pointer" msgstr "" -#: c/c-typeck.cc:7484 +#: c/c-typeck.cc:7492 #, gcc-internal-format msgid "cast to generic address space pointer from disjoint %qs address space pointer" msgstr "" -#: c/c-typeck.cc:7489 +#: c/c-typeck.cc:7497 #, gcc-internal-format msgid "cast to %qs address space pointer from disjoint %qs address space pointer" msgstr "" -#: c/c-typeck.cc:7522 +#: c/c-typeck.cc:7530 #, gcc-internal-format msgid "cast increases required alignment of target type" msgstr "" -#: c/c-typeck.cc:7534 +#: c/c-typeck.cc:7542 #, gcc-internal-format msgid "cast from pointer to integer of different size" msgstr "" -#: c/c-typeck.cc:7540 +#: c/c-typeck.cc:7548 #, gcc-internal-format msgid "cast from function call of type %qT to non-matching type %qT" msgstr "" -#: c/c-typeck.cc:7550 cp/typeck.cc:9654 +#: c/c-typeck.cc:7558 cp/typeck.cc:9652 #, gcc-internal-format msgid "cast to pointer from integer of different size" msgstr "" -#: c/c-typeck.cc:7564 +#: c/c-typeck.cc:7572 #, gcc-internal-format msgid "ISO C forbids conversion of function pointer to object pointer type" msgstr "" -#: c/c-typeck.cc:7573 +#: c/c-typeck.cc:7581 #, gcc-internal-format msgid "ISO C forbids conversion of object pointer to function pointer type" msgstr "" -#: c/c-typeck.cc:7583 +#: c/c-typeck.cc:7591 #, gcc-internal-format msgid "cast between incompatible function types from %qT to %qT" msgstr "" -#: c/c-typeck.cc:7698 +#: c/c-typeck.cc:7706 #, gcc-internal-format msgid "defining a type in a cast is invalid in C++" msgstr "" -#: c/c-typeck.cc:7740 +#: c/c-typeck.cc:7748 #, gcc-internal-format msgid "assignment to expression with array type" msgstr "" -#: c/c-typeck.cc:7881 +#: c/c-typeck.cc:7889 #, gcc-internal-format msgid "enum conversion in assignment is invalid in C++" msgstr "" -#: c/c-typeck.cc:8075 c/c-typeck.cc:8094 c/c-typeck.cc:8153 +#: c/c-typeck.cc:8083 c/c-typeck.cc:8102 c/c-typeck.cc:8161 #, fuzzy, gcc-internal-format #| msgid "initialization" msgid "(near initialization for %qs)" msgstr "Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń†Ń‹Ń" -#: c/c-typeck.cc:8169 +#: c/c-typeck.cc:8177 #, gcc-internal-format msgid "array initialized from parenthesized string constant" msgstr "" -#: c/c-typeck.cc:8219 +#: c/c-typeck.cc:8227 msgid "expected %e but argument is of type %e" msgstr "" -#: c/c-typeck.cc:8253 +#: c/c-typeck.cc:8261 #, gcc-internal-format msgid "%qD argument %d type is %qT where %qT is expected in a call to built-in function declared without prototype" msgstr "" -#: c/c-typeck.cc:8256 +#: c/c-typeck.cc:8264 #, gcc-internal-format msgid "%qD argument %d promotes to %qT where %qT is expected in a call to built-in function declared without prototype" msgstr "" -#: c/c-typeck.cc:8261 +#: c/c-typeck.cc:8269 #, gcc-internal-format msgid "built-in %qD declared here" msgstr "" -#: c/c-typeck.cc:8318 c/c-typeck.cc:9217 +#: c/c-typeck.cc:8326 c/c-typeck.cc:9225 #, fuzzy msgid "%e declared here" msgstr "\"%s\" ĐœĐ” абĐČĐ”ŃˆŃ‡Đ°Đœ (ĐżĐ”Ń€ŃˆĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” ў гэтаĐč Ń„ŃƒĐœĐșцыі)" -#: c/c-typeck.cc:8511 +#: c/c-typeck.cc:8519 #, gcc-internal-format msgid "enum conversion when passing argument %d of %qE is invalid in C++" msgstr "" -#: c/c-typeck.cc:8516 +#: c/c-typeck.cc:8524 #, gcc-internal-format msgid "expected %qT but argument is of type %qT" msgstr "" -#: c/c-typeck.cc:8520 +#: c/c-typeck.cc:8528 #, gcc-internal-format msgid "enum conversion from %qT to %qT in assignment is invalid in C++" msgstr "" -#: c/c-typeck.cc:8525 +#: c/c-typeck.cc:8533 #, gcc-internal-format msgid "enum conversion from %qT to %qT in initialization is invalid in C++" msgstr "" -#: c/c-typeck.cc:8530 +#: c/c-typeck.cc:8538 #, gcc-internal-format msgid "enum conversion from %qT to %qT in return is invalid in C++" msgstr "" -#: c/c-typeck.cc:8548 +#: c/c-typeck.cc:8556 #, fuzzy, gcc-internal-format #| msgid "converting from `%T' to `%T'" msgid "implicit conversion from %qT to %qT" msgstr "пДраўтĐČĐ°Ń€ŃĐœŃŒĐœĐ” Đ· `%T' у `%T'" -#: c/c-typeck.cc:8730 c/c-typeck.cc:9120 +#: c/c-typeck.cc:8738 c/c-typeck.cc:9128 msgid "passing argument %d of %qE makes %q#v qualified function pointer from unqualified" msgstr "" -#: c/c-typeck.cc:8733 c/c-typeck.cc:9123 +#: c/c-typeck.cc:8741 c/c-typeck.cc:9131 msgid "assignment makes %q#v qualified function pointer from unqualified" msgstr "" -#: c/c-typeck.cc:8736 c/c-typeck.cc:9125 +#: c/c-typeck.cc:8744 c/c-typeck.cc:9133 msgid "initialization makes %q#v qualified function pointer from unqualified" msgstr "" -#: c/c-typeck.cc:8739 c/c-typeck.cc:9127 +#: c/c-typeck.cc:8747 c/c-typeck.cc:9135 msgid "return makes %q#v qualified function pointer from unqualified" msgstr "" -#: c/c-typeck.cc:8747 c/c-typeck.cc:9010 c/c-typeck.cc:9053 +#: c/c-typeck.cc:8755 c/c-typeck.cc:9018 c/c-typeck.cc:9061 msgid "passing argument %d of %qE discards %qv qualifier from pointer target type" msgstr "" -#: c/c-typeck.cc:8749 c/c-typeck.cc:9012 c/c-typeck.cc:9055 +#: c/c-typeck.cc:8757 c/c-typeck.cc:9020 c/c-typeck.cc:9063 msgid "assignment discards %qv qualifier from pointer target type" msgstr "" -#: c/c-typeck.cc:8751 c/c-typeck.cc:9014 c/c-typeck.cc:9057 +#: c/c-typeck.cc:8759 c/c-typeck.cc:9022 c/c-typeck.cc:9065 msgid "initialization discards %qv qualifier from pointer target type" msgstr "" -#: c/c-typeck.cc:8753 c/c-typeck.cc:9016 c/c-typeck.cc:9059 +#: c/c-typeck.cc:8761 c/c-typeck.cc:9024 c/c-typeck.cc:9067 msgid "return discards %qv qualifier from pointer target type" msgstr "" -#: c/c-typeck.cc:8762 +#: c/c-typeck.cc:8770 #, gcc-internal-format msgid "ISO C prohibits argument conversion to union type" msgstr "" -#: c/c-typeck.cc:8821 +#: c/c-typeck.cc:8829 #, gcc-internal-format msgid "request for implicit conversion from %qT to %qT not permitted in C++" msgstr "" -#: c/c-typeck.cc:8848 +#: c/c-typeck.cc:8856 #, gcc-internal-format msgid "passing argument %d of %qE from pointer to non-enclosed address space" msgstr "" -#: c/c-typeck.cc:8859 +#: c/c-typeck.cc:8867 #, gcc-internal-format msgid "assignment from pointer to non-enclosed address space" msgstr "" -#: c/c-typeck.cc:8870 +#: c/c-typeck.cc:8878 #, gcc-internal-format msgid "initialization from pointer to non-enclosed address space" msgstr "" -#: c/c-typeck.cc:8880 +#: c/c-typeck.cc:8888 #, gcc-internal-format msgid "return from pointer to non-enclosed address space" msgstr "" -#: c/c-typeck.cc:8896 +#: c/c-typeck.cc:8904 #, gcc-internal-format msgid "expected %qT but pointer is of type %qT" msgstr "" -#: c/c-typeck.cc:8911 +#: c/c-typeck.cc:8919 #, gcc-internal-format msgid "argument %d of %qE might be a candidate for a format attribute" msgstr "" -#: c/c-typeck.cc:8917 +#: c/c-typeck.cc:8925 #, gcc-internal-format msgid "assignment left-hand side might be a candidate for a format attribute" msgstr "" -#: c/c-typeck.cc:8923 +#: c/c-typeck.cc:8931 #, gcc-internal-format msgid "initialization left-hand side might be a candidate for a format attribute" msgstr "" -#: c/c-typeck.cc:8928 cp/typeck.cc:10845 +#: c/c-typeck.cc:8936 cp/typeck.cc:10843 #, gcc-internal-format msgid "return type might be a candidate for a format attribute" msgstr "" -#: c/c-typeck.cc:8952 +#: c/c-typeck.cc:8960 #, gcc-internal-format msgid "passing argument %d of %qE from incompatible scalar storage order" msgstr "" -#: c/c-typeck.cc:8962 +#: c/c-typeck.cc:8970 #, gcc-internal-format msgid "assignment to %qT from pointer type %qT with incompatible scalar storage order" msgstr "" -#: c/c-typeck.cc:8972 +#: c/c-typeck.cc:8980 #, gcc-internal-format msgid "initialization of %qT from pointer type %qT with incompatible scalar storage order" msgstr "" -#: c/c-typeck.cc:8977 +#: c/c-typeck.cc:8985 #, gcc-internal-format msgid "returning %qT from pointer type with incompatible scalar storage order %qT" msgstr "" -#: c/c-typeck.cc:9027 +#: c/c-typeck.cc:9035 #, gcc-internal-format msgid "ISO C forbids passing argument %d of %qE between function pointer and %" msgstr "" -#: c/c-typeck.cc:9030 +#: c/c-typeck.cc:9038 #, gcc-internal-format msgid "ISO C forbids assignment between function pointer and %" msgstr "" -#: c/c-typeck.cc:9032 +#: c/c-typeck.cc:9040 #, gcc-internal-format msgid "ISO C forbids initialization between function pointer and %" msgstr "" -#: c/c-typeck.cc:9034 +#: c/c-typeck.cc:9042 #, gcc-internal-format msgid "ISO C forbids return between function pointer and %" msgstr "" -#: c/c-typeck.cc:9064 +#: c/c-typeck.cc:9072 #, gcc-internal-format msgid "array with qualifier on the element is not qualified before C23" msgstr "" -#: c/c-typeck.cc:9082 +#: c/c-typeck.cc:9090 #, gcc-internal-format msgid "pointer targets in passing argument %d of %qE differ in signedness" msgstr "" -#: c/c-typeck.cc:9090 +#: c/c-typeck.cc:9098 #, gcc-internal-format msgid "pointer targets in assignment from %qT to %qT differ in signedness" msgstr "" -#: c/c-typeck.cc:9096 +#: c/c-typeck.cc:9104 #, gcc-internal-format msgid "pointer targets in initialization of %qT from %qT differ in signedness" msgstr "" -#: c/c-typeck.cc:9101 +#: c/c-typeck.cc:9109 #, gcc-internal-format msgid "pointer targets in returning %qT from a function with return type %qT differ in signedness" msgstr "" -#: c/c-typeck.cc:9148 +#: c/c-typeck.cc:9156 #, gcc-internal-format msgid "passing argument %d of %qE from incompatible pointer type" msgstr "" -#: c/c-typeck.cc:9159 +#: c/c-typeck.cc:9167 #, fuzzy msgid "assignment to %e from pointer to %qD with incompatible type %e" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: c/c-typeck.cc:9165 +#: c/c-typeck.cc:9173 msgid "assignment to %e from incompatible pointer type %e" msgstr "" -#: c/c-typeck.cc:9174 +#: c/c-typeck.cc:9182 #, fuzzy msgid "initialization of %e from pointer to %qD with incompatible type %e" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: c/c-typeck.cc:9180 +#: c/c-typeck.cc:9188 msgid "initialization of %e from incompatible pointer type %e" msgstr "" -#: c/c-typeck.cc:9188 +#: c/c-typeck.cc:9196 msgid "returning pointer to %qD of type %e from a function with incompatible type %e" msgstr "" -#: c/c-typeck.cc:9194 +#: c/c-typeck.cc:9202 msgid "returning %e from a function with incompatible return type %e" msgstr "" -#: c/c-typeck.cc:9272 +#: c/c-typeck.cc:9280 #, gcc-internal-format msgid "passing argument %d of %qE makes pointer from integer without a cast" msgstr "" -#: c/c-typeck.cc:9282 +#: c/c-typeck.cc:9290 #, gcc-internal-format msgid "assignment to %qT from %qT makes pointer from integer without a cast" msgstr "" -#: c/c-typeck.cc:9288 +#: c/c-typeck.cc:9296 #, gcc-internal-format msgid "initialization of %qT from %qT makes pointer from integer without a cast" msgstr "" -#: c/c-typeck.cc:9293 +#: c/c-typeck.cc:9301 #, gcc-internal-format msgid "returning %qT from a function with return type %qT makes pointer from integer without a cast" msgstr "" -#: c/c-typeck.cc:9315 +#: c/c-typeck.cc:9323 #, gcc-internal-format msgid "passing argument %d of %qE makes integer from pointer without a cast" msgstr "" -#: c/c-typeck.cc:9325 +#: c/c-typeck.cc:9333 #, gcc-internal-format msgid "assignment to %qT from %qT makes integer from pointer without a cast" msgstr "" -#: c/c-typeck.cc:9331 +#: c/c-typeck.cc:9339 #, gcc-internal-format msgid "initialization of %qT from %qT makes integer from pointer without a cast" msgstr "" -#: c/c-typeck.cc:9335 +#: c/c-typeck.cc:9343 #, gcc-internal-format msgid "returning %qT from a function with return type %qT makes integer from pointer without a cast" msgstr "" -#: c/c-typeck.cc:9368 +#: c/c-typeck.cc:9376 #, gcc-internal-format msgid "incompatible type for argument %d of %qE" msgstr "" -#: c/c-typeck.cc:9379 +#: c/c-typeck.cc:9387 #, gcc-internal-format msgid "incompatible types when assigning to type %qT from type %qT" msgstr "" -#: c/c-typeck.cc:9390 +#: c/c-typeck.cc:9398 #, gcc-internal-format msgid "incompatible types when initializing type %qT using type %qT" msgstr "" -#: c/c-typeck.cc:9400 +#: c/c-typeck.cc:9408 #, gcc-internal-format msgid "incompatible types when returning type %qT but %qT was expected" msgstr "" -#: c/c-typeck.cc:9480 +#: c/c-typeck.cc:9488 #, gcc-internal-format msgid "traditional C rejects automatic aggregate initialization" msgstr "" -#: c/c-typeck.cc:9722 +#: c/c-typeck.cc:9730 #, gcc-internal-format msgid "% pointer initializer is not null" msgstr "" -#: c/c-typeck.cc:9739 c/c-typeck.cc:9749 c/c-typeck.cc:9811 c/c-typeck.cc:9964 +#: c/c-typeck.cc:9747 c/c-typeck.cc:9757 c/c-typeck.cc:9819 c/c-typeck.cc:9972 #, gcc-internal-format msgid "% initializer not representable in type of object" msgstr "" -#: c/c-typeck.cc:9745 +#: c/c-typeck.cc:9753 #, fuzzy, gcc-internal-format msgid "% integer initializer is not an integer constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: c/c-typeck.cc:9759 +#: c/c-typeck.cc:9767 #, fuzzy, gcc-internal-format msgid "% initializer is not an arithmetic constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: c/c-typeck.cc:9776 +#: c/c-typeck.cc:9784 #, gcc-internal-format msgid "% initializer for a real type is of complex type" msgstr "" -#: c/c-typeck.cc:9785 +#: c/c-typeck.cc:9793 #, gcc-internal-format msgid "% initializer for a binary floating-point type is of decimal type" msgstr "" -#: c/c-typeck.cc:9929 c/c-typeck.cc:10915 cp/typeck2.cc:1329 +#: c/c-typeck.cc:9937 c/c-typeck.cc:10923 cp/typeck2.cc:1329 #, gcc-internal-format msgid "initialization of a flexible array member" msgstr "" -#: c/c-typeck.cc:9945 cp/typeck2.cc:1346 +#: c/c-typeck.cc:9953 cp/typeck2.cc:1346 #, gcc-internal-format msgid "cannot initialize array of %qT from a string literal with type array of %qT" msgstr "" -#: c/c-typeck.cc:9991 +#: c/c-typeck.cc:9999 #, gcc-internal-format msgid "initializer-string for array of %qT is too long (%wu chars into %wu available)" msgstr "" -#: c/c-typeck.cc:9996 +#: c/c-typeck.cc:10004 #, gcc-internal-format msgid "initializer-string for array of %qT is too long for C++ (%wu chars into %wu available)" msgstr "" -#: c/c-typeck.cc:10003 +#: c/c-typeck.cc:10011 #, gcc-internal-format msgid "initializer-string for array of %qT truncates NUL terminator but destination lacks %qs attribute (%wu chars into %wu available)" msgstr "" -#: c/c-typeck.cc:10015 +#: c/c-typeck.cc:10023 #, gcc-internal-format msgid "array of inappropriate type initialized from string constant" msgstr "" -#: c/c-typeck.cc:10083 cp/typeck.cc:2671 +#: c/c-typeck.cc:10091 cp/typeck.cc:2671 #, gcc-internal-format msgid "invalid use of non-lvalue array" msgstr "" -#: c/c-typeck.cc:10097 c/c-typeck.cc:10237 c/c-typeck.cc:11009 +#: c/c-typeck.cc:10105 c/c-typeck.cc:10245 c/c-typeck.cc:11017 #, gcc-internal-format msgid "invalid initializer" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: c/c-typeck.cc:10109 c/c-typeck.cc:10133 c/c-typeck.cc:10136 -#: c/c-typeck.cc:10144 c/c-typeck.cc:10206 c/c-typeck.cc:11993 -#: c/c-typeck.cc:12077 +#: c/c-typeck.cc:10117 c/c-typeck.cc:10141 c/c-typeck.cc:10144 +#: c/c-typeck.cc:10152 c/c-typeck.cc:10214 c/c-typeck.cc:12001 +#: c/c-typeck.cc:12085 #, gcc-internal-format msgid "initializer element is not constant" msgstr "" -#: c/c-typeck.cc:10118 +#: c/c-typeck.cc:10126 #, gcc-internal-format msgid "array initialized from non-constant array expression" msgstr "" -#: c/c-typeck.cc:10149 c/c-typeck.cc:10219 c/c-typeck.cc:12087 +#: c/c-typeck.cc:10157 c/c-typeck.cc:10227 c/c-typeck.cc:12095 #, fuzzy, gcc-internal-format msgid "initializer element is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: c/c-typeck.cc:10171 cp/typeck2.cc:1428 +#: c/c-typeck.cc:10179 cp/typeck2.cc:1428 #, gcc-internal-format msgid "conversion from %qT to %qT changes value from %qd to %qd" msgstr "" -#: c/c-typeck.cc:10213 c/c-typeck.cc:12082 +#: c/c-typeck.cc:10221 c/c-typeck.cc:12090 #, gcc-internal-format msgid "initializer element is not computable at load time" msgstr "" -#: c/c-typeck.cc:10524 cp/decl.cc:8528 +#: c/c-typeck.cc:10532 cp/decl.cc:8542 #, gcc-internal-format msgid "opaque vector types cannot be initialized" msgstr "" -#: c/c-typeck.cc:10755 +#: c/c-typeck.cc:10763 #, gcc-internal-format msgid "extra brace group at end of initializer" msgstr "" -#: c/c-typeck.cc:10842 c/c-typeck.cc:10845 +#: c/c-typeck.cc:10850 c/c-typeck.cc:10853 #, gcc-internal-format msgid "braces around scalar initializer" msgstr "" -#: c/c-typeck.cc:10917 c/c-typeck.cc:10921 c/c-typeck.cc:12685 -#: c/c-typeck.cc:12810 cp/typeck2.cc:1356 cp/typeck2.cc:1714 +#: c/c-typeck.cc:10925 c/c-typeck.cc:10929 c/c-typeck.cc:12693 +#: c/c-typeck.cc:12818 cp/typeck2.cc:1356 cp/typeck2.cc:1714 #, gcc-internal-format msgid "initialization of flexible array member in a nested context" msgstr "" -#: c/c-typeck.cc:10958 +#: c/c-typeck.cc:10966 #, gcc-internal-format msgid "missing braces around initializer" msgstr "" -#: c/c-typeck.cc:10981 +#: c/c-typeck.cc:10989 #, fuzzy, gcc-internal-format msgid "missing initializer for field %qD of %qT" msgstr "ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: c/c-typeck.cc:11021 +#: c/c-typeck.cc:11029 #, gcc-internal-format msgid "extra elements in scalar initializer" msgstr "" -#: c/c-typeck.cc:11144 c/c-typeck.cc:11226 +#: c/c-typeck.cc:11152 c/c-typeck.cc:11234 #, gcc-internal-format msgid "array index in non-array initializer" msgstr "" -#: c/c-typeck.cc:11149 c/c-typeck.cc:11288 +#: c/c-typeck.cc:11157 c/c-typeck.cc:11296 #, gcc-internal-format msgid "field name not in record or union initializer" msgstr "" -#: c/c-typeck.cc:11199 +#: c/c-typeck.cc:11207 #, fuzzy, gcc-internal-format msgid "array index in initializer not of integer type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: c/c-typeck.cc:11208 c/c-typeck.cc:11217 +#: c/c-typeck.cc:11216 c/c-typeck.cc:11225 #, fuzzy, gcc-internal-format msgid "array index in initializer is not an integer constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: c/c-typeck.cc:11222 c/c-typeck.cc:11224 +#: c/c-typeck.cc:11230 c/c-typeck.cc:11232 #, gcc-internal-format msgid "nonconstant array index in initializer" msgstr "" -#: c/c-typeck.cc:11228 c/c-typeck.cc:11231 +#: c/c-typeck.cc:11236 c/c-typeck.cc:11239 #, gcc-internal-format msgid "array index in initializer exceeds array bounds" msgstr "" -#: c/c-typeck.cc:11250 +#: c/c-typeck.cc:11258 #, gcc-internal-format msgid "empty index range in initializer" msgstr "" -#: c/c-typeck.cc:11259 +#: c/c-typeck.cc:11267 #, gcc-internal-format msgid "array index range in initializer exceeds array bounds" msgstr "" -#: c/c-typeck.cc:11393 c/c-typeck.cc:11448 c/c-typeck.cc:11489 -#: c/c-typeck.cc:11549 c/c-typeck.cc:11596 c/c-typeck.cc:12184 +#: c/c-typeck.cc:11401 c/c-typeck.cc:11456 c/c-typeck.cc:11497 +#: c/c-typeck.cc:11557 c/c-typeck.cc:11604 c/c-typeck.cc:12192 #, gcc-internal-format msgid "initialized field overwritten" msgstr "" -#: c/c-typeck.cc:11484 c/c-typeck.cc:11545 c/c-typeck.cc:11592 -#: c/c-typeck.cc:12181 +#: c/c-typeck.cc:11492 c/c-typeck.cc:11553 c/c-typeck.cc:11600 +#: c/c-typeck.cc:12189 #, gcc-internal-format msgid "initialized field with side-effects overwritten" msgstr "" -#: c/c-typeck.cc:12109 +#: c/c-typeck.cc:12117 #, gcc-internal-format msgid "enum conversion in initialization is invalid in C++" msgstr "" -#: c/c-typeck.cc:12555 +#: c/c-typeck.cc:12563 #, fuzzy, gcc-internal-format #| msgid "missing initializer" msgid "excess elements in %qT initializer" msgstr "ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: c/c-typeck.cc:12567 c/c-typeck.cc:12644 +#: c/c-typeck.cc:12575 c/c-typeck.cc:12652 #, gcc-internal-format msgid "excess elements in struct initializer" msgstr "" -#: c/c-typeck.cc:12588 +#: c/c-typeck.cc:12596 #, gcc-internal-format msgid "positional initialization of field in % declared with % attribute" msgstr "" -#: c/c-typeck.cc:12659 c/c-typeck.cc:12785 cp/typeck2.cc:1333 +#: c/c-typeck.cc:12667 c/c-typeck.cc:12793 cp/typeck2.cc:1333 #, gcc-internal-format msgid "non-static initialization of a flexible array member" msgstr "" -#: c/c-typeck.cc:12755 +#: c/c-typeck.cc:12763 #, gcc-internal-format msgid "excess elements in union initializer" msgstr "" -#: c/c-typeck.cc:12777 +#: c/c-typeck.cc:12785 #, gcc-internal-format msgid "traditional C rejects initialization of unions" msgstr "" -#: c/c-typeck.cc:12878 +#: c/c-typeck.cc:12886 #, gcc-internal-format msgid "excess elements in array initializer" msgstr "" -#: c/c-typeck.cc:12955 c/c-typeck.cc:12957 +#: c/c-typeck.cc:12963 c/c-typeck.cc:12965 #, gcc-internal-format msgid "excess elements in vector initializer" msgstr "" -#: c/c-typeck.cc:12991 +#: c/c-typeck.cc:12999 #, gcc-internal-format msgid "excess elements in scalar initializer" msgstr "" -#: c/c-typeck.cc:13159 c/c-typeck.cc:13234 cp/semantics.cc:2371 +#: c/c-typeck.cc:13167 c/c-typeck.cc:13242 cp/semantics.cc:2371 #: cp/semantics.cc:2481 #, gcc-internal-format msgid "constraint allows registers outside of a function" msgstr "" -#: c/c-typeck.cc:13171 cp/semantics.cc:2383 +#: c/c-typeck.cc:13179 cp/semantics.cc:2383 #, gcc-internal-format msgid "side-effects in output operand outside of a function" msgstr "" -#: c/c-typeck.cc:13182 cp/semantics.cc:2399 +#: c/c-typeck.cc:13190 cp/semantics.cc:2399 #, gcc-internal-format msgid "output operand outside of a function is not constant" msgstr "" -#: c/c-typeck.cc:13190 c/c-typeck.cc:13281 cp/semantics.cc:2410 +#: c/c-typeck.cc:13198 c/c-typeck.cc:13289 cp/semantics.cc:2410 #: cp/semantics.cc:2546 #, fuzzy, gcc-internal-format msgid "%<-%> modifier used inside of a function" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" -#: c/c-typeck.cc:13247 cp/semantics.cc:2494 +#: c/c-typeck.cc:13255 cp/semantics.cc:2494 #, gcc-internal-format msgid "%<:%> constraint operand is not address of a function or non-automatic variable" msgstr "" -#: c/c-typeck.cc:13262 cp/semantics.cc:2509 +#: c/c-typeck.cc:13270 cp/semantics.cc:2509 #, gcc-internal-format msgid "side-effects in input operand outside of a function" msgstr "" -#: c/c-typeck.cc:13273 cp/semantics.cc:2524 cp/semantics.cc:2538 +#: c/c-typeck.cc:13281 cp/semantics.cc:2524 cp/semantics.cc:2538 #, gcc-internal-format msgid "input operand outside of a function is not constant" msgstr "" -#: c/c-typeck.cc:13326 +#: c/c-typeck.cc:13334 #, fuzzy, gcc-internal-format #| msgid "ISO C forbids `goto *expr;'" msgid "ISO C forbids %" msgstr "ISO C ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД \"goto *expr;\"" -#: c/c-typeck.cc:13332 +#: c/c-typeck.cc:13340 #, gcc-internal-format msgid "computed goto must be pointer type" msgstr "" -#: c/c-typeck.cc:13362 c/gimple-parser.cc:2638 cp/typeck.cc:11447 +#: c/c-typeck.cc:13370 c/gimple-parser.cc:2638 cp/typeck.cc:11445 #, fuzzy, gcc-internal-format #| msgid "function does not return string type" msgid "function declared % has a % statement" msgstr "Ń„ŃƒĐœĐșцыя ĐœĐ” ĐČŃŃ€Ń‚Đ°Đ” тып string" -#: c/c-typeck.cc:13393 +#: c/c-typeck.cc:13401 #, gcc-internal-format msgid "% with no value, in function returning non-void" msgstr "" -#: c/c-typeck.cc:13406 c/gimple-parser.cc:2648 +#: c/c-typeck.cc:13414 c/gimple-parser.cc:2648 #, gcc-internal-format msgid "% with a value, in function returning void" msgstr "" -#: c/c-typeck.cc:13409 +#: c/c-typeck.cc:13417 #, gcc-internal-format msgid "ISO C forbids % with expression, in function returning void" msgstr "" -#: c/c-typeck.cc:13490 +#: c/c-typeck.cc:13498 #, fuzzy, gcc-internal-format msgid "function returns address of label" msgstr "ISO C ĐœĐ” ЎазĐČĐ°Đ»ŃĐ” пусты Ń–Đ·Ń‹Ń…ĐŸĐŽĐœŃ‹ фаĐčĐ»" -#: c/c-typeck.cc:13495 +#: c/c-typeck.cc:13503 #, gcc-internal-format msgid "function returns address of nested function referencing local context" msgstr "" -#: c/c-typeck.cc:13588 cp/semantics.cc:1945 +#: c/c-typeck.cc:13596 cp/semantics.cc:1945 #, gcc-internal-format msgid "switch quantity not an integer" msgstr "" -#: c/c-typeck.cc:13613 +#: c/c-typeck.cc:13621 #, gcc-internal-format msgid "% switch expression not converted to % in ISO C" msgstr "" -#: c/c-typeck.cc:13651 c/c-typeck.cc:13659 +#: c/c-typeck.cc:13659 c/c-typeck.cc:13667 #, fuzzy, gcc-internal-format msgid "case label is not an integer constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: c/c-typeck.cc:13665 cp/parser.cc:14672 +#: c/c-typeck.cc:13673 cp/parser.cc:14687 #, gcc-internal-format msgid "case label not within a switch statement" msgstr "" -#: c/c-typeck.cc:13667 +#: c/c-typeck.cc:13675 #, gcc-internal-format msgid "% label not within a switch statement" msgstr "" -#: c/c-typeck.cc:13743 cp/parser.cc:16761 +#: c/c-typeck.cc:13751 cp/parser.cc:16799 #, gcc-internal-format msgid "break statement not within loop or switch" msgstr "" -#: c/c-typeck.cc:13746 c/c-typeck.cc:13766 cp/decl.cc:4639 cp/parser.cc:16772 -#: cp/parser.cc:16794 +#: c/c-typeck.cc:13754 c/c-typeck.cc:13774 cp/decl.cc:4639 cp/parser.cc:16810 +#: cp/parser.cc:16832 #, gcc-internal-format msgid "invalid exit from OpenMP structured block" msgstr "" -#: c/c-typeck.cc:13749 cp/parser.cc:16775 +#: c/c-typeck.cc:13757 cp/parser.cc:16813 #, gcc-internal-format msgid "break statement used with OpenMP for loop" msgstr "" -#: c/c-typeck.cc:13763 cp/parser.cc:16785 +#: c/c-typeck.cc:13771 cp/parser.cc:16823 #, gcc-internal-format msgid "continue statement not within a loop" msgstr "" -#: c/c-typeck.cc:13813 cp/cp-gimplify.cc:314 +#: c/c-typeck.cc:13821 cp/cp-gimplify.cc:314 #, gcc-internal-format msgid "statement with no effect" msgstr "" -#: c/c-typeck.cc:13857 +#: c/c-typeck.cc:13865 #, gcc-internal-format msgid "expression statement has incomplete type" msgstr "" -#: c/c-typeck.cc:14148 +#: c/c-typeck.cc:14156 #, gcc-internal-format msgid "the comparison will always evaluate as % for the pointer operand in %qE must not be NULL" msgstr "" -#: c/c-typeck.cc:14153 +#: c/c-typeck.cc:14161 #, gcc-internal-format msgid "the comparison will always evaluate as % for the pointer operand in %qE must not be NULL" msgstr "" -#: c/c-typeck.cc:14171 c/c-typeck.cc:14209 +#: c/c-typeck.cc:14179 c/c-typeck.cc:14217 #, gcc-internal-format msgid "the comparison will always evaluate as % for the address of %qE will never be NULL" msgstr "" -#: c/c-typeck.cc:14176 c/c-typeck.cc:14214 +#: c/c-typeck.cc:14184 c/c-typeck.cc:14222 #, gcc-internal-format msgid "the comparison will always evaluate as % for the address of %qE will never be NULL" msgstr "" -#: c/c-typeck.cc:14808 c/c-typeck.cc:14978 cp/typeck.cc:6417 +#: c/c-typeck.cc:14816 c/c-typeck.cc:14986 cp/typeck.cc:6412 #, gcc-internal-format msgid "comparing vectors with different element types" msgstr "" -#: c/c-typeck.cc:14816 c/c-typeck.cc:14986 cp/typeck.cc:6431 +#: c/c-typeck.cc:14824 c/c-typeck.cc:14994 cp/typeck.cc:6426 #, gcc-internal-format msgid "comparing vectors with different number of elements" msgstr "" -#: c/c-typeck.cc:14831 c/c-typeck.cc:15001 cp/typeck.cc:6449 +#: c/c-typeck.cc:14839 c/c-typeck.cc:15009 cp/typeck.cc:6444 #, gcc-internal-format msgid "comparison between types %qT and %qT" msgstr "" -#: c/c-typeck.cc:14847 c/c-typeck.cc:15011 cp/typeck.cc:6472 +#: c/c-typeck.cc:14855 c/c-typeck.cc:15019 cp/typeck.cc:6467 #, gcc-internal-format msgid "could not find an integer type of the same size as %qT" msgstr "" -#: c/c-typeck.cc:14861 cp/typeck.cc:6088 +#: c/c-typeck.cc:14869 cp/typeck.cc:6083 #, gcc-internal-format msgid "comparing floating-point with %<==%> or % is unsafe" msgstr "" -#: c/c-typeck.cc:14900 c/c-typeck.cc:15052 +#: c/c-typeck.cc:14908 c/c-typeck.cc:15060 #, gcc-internal-format msgid "comparison of pointers to disjoint address spaces" msgstr "" -#: c/c-typeck.cc:14907 c/c-typeck.cc:14913 +#: c/c-typeck.cc:14915 c/c-typeck.cc:14921 #, fuzzy, gcc-internal-format msgid "ISO C forbids comparison of % with function pointer" msgstr "ISO C ĐœĐ” ЎазĐČĐ°Đ»ŃĐ” ЮэĐșларацыі ĐŒĐ”Ń‚Đ°Đș (label)" -#: c/c-typeck.cc:14920 c/c-typeck.cc:15062 +#: c/c-typeck.cc:14928 c/c-typeck.cc:15070 #, gcc-internal-format msgid "comparison of distinct pointer types lacks a cast" msgstr "" -#: c/c-typeck.cc:14933 c/c-typeck.cc:14939 c/c-typeck.cc:15089 -#: c/c-typeck.cc:15095 +#: c/c-typeck.cc:14941 c/c-typeck.cc:14947 c/c-typeck.cc:15097 +#: c/c-typeck.cc:15103 #, gcc-internal-format msgid "comparison between pointer and integer" msgstr "" -#: c/c-typeck.cc:15040 +#: c/c-typeck.cc:15048 #, gcc-internal-format msgid "comparison of complete and incomplete pointers" msgstr "" -#: c/c-typeck.cc:15042 +#: c/c-typeck.cc:15050 #, gcc-internal-format msgid "ISO C forbids ordered comparisons of pointers to functions" msgstr "" -#: c/c-typeck.cc:15047 +#: c/c-typeck.cc:15055 #, gcc-internal-format msgid "ordered comparison of pointer with null pointer" msgstr "" -#: c/c-typeck.cc:15070 c/c-typeck.cc:15073 c/c-typeck.cc:15080 -#: c/c-typeck.cc:15083 +#: c/c-typeck.cc:15078 c/c-typeck.cc:15081 c/c-typeck.cc:15088 +#: c/c-typeck.cc:15091 #, gcc-internal-format msgid "ordered comparison of pointer with integer zero" msgstr "" -#: c/c-typeck.cc:15160 +#: c/c-typeck.cc:15168 #, gcc-internal-format msgid "implicit conversion from %qT to %qT to match other operand of binary expression" msgstr "" -#: c/c-typeck.cc:15478 +#: c/c-typeck.cc:15486 #, gcc-internal-format msgid "used array that cannot be converted to pointer where scalar is required" msgstr "" -#: c/c-typeck.cc:15482 +#: c/c-typeck.cc:15490 #, gcc-internal-format msgid "used struct type value where scalar is required" msgstr "" -#: c/c-typeck.cc:15486 +#: c/c-typeck.cc:15494 #, gcc-internal-format msgid "used union type value where scalar is required" msgstr "" -#: c/c-typeck.cc:15502 +#: c/c-typeck.cc:15510 #, gcc-internal-format msgid "used vector type where scalar is required" msgstr "" -#: c/c-typeck.cc:15705 cp/semantics.cc:12555 +#: c/c-typeck.cc:15713 cp/semantics.cc:12576 #, gcc-internal-format msgid "%<#pragma omp cancel%> must specify one of %, %, % or % clauses" msgstr "" -#: c/c-typeck.cc:15716 c/c-typeck.cc:15726 cp/semantics.cc:12566 -#: cp/semantics.cc:12576 +#: c/c-typeck.cc:15724 c/c-typeck.cc:15734 cp/semantics.cc:12587 +#: cp/semantics.cc:12597 #, gcc-internal-format msgid "expected % % clause modifier" msgstr "" -#: c/c-typeck.cc:15761 cp/semantics.cc:12611 +#: c/c-typeck.cc:15769 cp/semantics.cc:12632 #, gcc-internal-format msgid "%<#pragma omp cancellation point%> must specify one of %, %, % or % clauses" msgstr "" -#: c/c-typeck.cc:15829 cp/semantics.cc:6066 cp/semantics.cc:9478 +#: c/c-typeck.cc:15837 cp/semantics.cc:6087 cp/semantics.cc:9499 #, gcc-internal-format msgid "%qD is not a variable in %qs clause" msgstr "" -#: c/c-typeck.cc:15833 c/c-typeck.cc:17798 cp/semantics.cc:6070 -#: cp/semantics.cc:9482 +#: c/c-typeck.cc:15841 c/c-typeck.cc:17806 cp/semantics.cc:6091 +#: cp/semantics.cc:9503 #, gcc-internal-format msgid "%qE is not a variable in %qs clause" msgstr "" -#: c/c-typeck.cc:15841 +#: c/c-typeck.cc:15849 #, gcc-internal-format msgid "%<_Atomic%> %qD in %qs clause" msgstr "" -#: c/c-typeck.cc:15851 c/c-typeck.cc:17805 c/c-typeck.cc:17959 -#: cp/semantics.cc:6079 cp/semantics.cc:9489 cp/semantics.cc:9678 +#: c/c-typeck.cc:15859 c/c-typeck.cc:17813 c/c-typeck.cc:17967 +#: cp/semantics.cc:6100 cp/semantics.cc:9510 cp/semantics.cc:9699 #, gcc-internal-format msgid "%qD is threadprivate variable in %qs clause" msgstr "" -#: c/c-typeck.cc:15884 cp/semantics.cc:6113 +#: c/c-typeck.cc:15892 cp/semantics.cc:6134 #, gcc-internal-format msgid "low bound %qE of array section does not have integral type" msgstr "" -#: c/c-typeck.cc:15891 cp/semantics.cc:6120 +#: c/c-typeck.cc:15899 cp/semantics.cc:6141 #, gcc-internal-format msgid "length %qE of array section does not have integral type" msgstr "" -#: c/c-typeck.cc:15914 cp/semantics.cc:6153 +#: c/c-typeck.cc:15922 cp/semantics.cc:6174 #, gcc-internal-format msgid "expected single pointer in %qs clause" msgstr "" -#: c/c-typeck.cc:15932 c/c-typeck.cc:15999 c/c-typeck.cc:16290 -#: cp/semantics.cc:6171 cp/semantics.cc:6238 +#: c/c-typeck.cc:15940 c/c-typeck.cc:16007 c/c-typeck.cc:16298 +#: cp/semantics.cc:6192 cp/semantics.cc:6259 #, gcc-internal-format msgid "zero length array section in %qs clause" msgstr "" -#: c/c-typeck.cc:15951 cp/semantics.cc:6190 +#: c/c-typeck.cc:15959 cp/semantics.cc:6211 #, gcc-internal-format msgid "for unknown bound array type length expression must be specified" msgstr "" -#: c/c-typeck.cc:15959 cp/semantics.cc:6198 +#: c/c-typeck.cc:15967 cp/semantics.cc:6219 #, gcc-internal-format msgid "negative low bound in array section in %qs clause" msgstr "" -#: c/c-typeck.cc:15968 c/c-typeck.cc:16092 cp/semantics.cc:6207 -#: cp/semantics.cc:6331 +#: c/c-typeck.cc:15976 c/c-typeck.cc:16100 cp/semantics.cc:6228 +#: cp/semantics.cc:6352 #, gcc-internal-format msgid "negative length in array section in %qs clause" msgstr "" -#: c/c-typeck.cc:15985 cp/semantics.cc:6224 +#: c/c-typeck.cc:15993 cp/semantics.cc:6245 #, gcc-internal-format msgid "low bound %qE above array section size in %qs clause" msgstr "" -#: c/c-typeck.cc:16028 cp/semantics.cc:6267 +#: c/c-typeck.cc:16036 cp/semantics.cc:6288 #, gcc-internal-format msgid "length %qE above array section size in %qs clause" msgstr "" -#: c/c-typeck.cc:16043 cp/semantics.cc:6282 +#: c/c-typeck.cc:16051 cp/semantics.cc:6303 #, gcc-internal-format msgid "high bound %qE above array section size in %qs clause" msgstr "" -#: c/c-typeck.cc:16080 cp/semantics.cc:6319 +#: c/c-typeck.cc:16088 cp/semantics.cc:6340 #, gcc-internal-format msgid "for array function parameter length expression must be specified" msgstr "" -#: c/c-typeck.cc:16084 cp/semantics.cc:6323 +#: c/c-typeck.cc:16092 cp/semantics.cc:6344 #, gcc-internal-format msgid "for pointer type length expression must be specified" msgstr "" -#: c/c-typeck.cc:16112 c/c-typeck.cc:16229 cp/semantics.cc:6350 -#: cp/semantics.cc:6484 +#: c/c-typeck.cc:16120 c/c-typeck.cc:16237 cp/semantics.cc:6371 +#: cp/semantics.cc:6505 #, gcc-internal-format msgid "array section is not contiguous in %qs clause" msgstr "" -#: c/c-typeck.cc:16122 cp/semantics.cc:6360 +#: c/c-typeck.cc:16130 cp/semantics.cc:6381 #, gcc-internal-format msgid "%qE does not have pointer or array type" msgstr "" -#: c/c-typeck.cc:16496 cp/semantics.cc:7539 +#: c/c-typeck.cc:16504 cp/semantics.cc:7560 #, gcc-internal-format msgid "iterator %qD has neither integral nor pointer type" msgstr "" -#: c/c-typeck.cc:16503 +#: c/c-typeck.cc:16511 #, gcc-internal-format msgid "iterator %qD has %<_Atomic%> qualified type" msgstr "" -#: c/c-typeck.cc:16509 cp/semantics.cc:7546 +#: c/c-typeck.cc:16517 cp/semantics.cc:7567 #, gcc-internal-format msgid "iterator %qD has const qualified type" msgstr "" -#: c/c-typeck.cc:16522 cp/semantics.cc:7562 +#: c/c-typeck.cc:16530 cp/semantics.cc:7583 #, fuzzy, gcc-internal-format msgid "iterator step with non-integral type" msgstr "бітаĐČаД ĐżĐŸĐ»Đ” \"%s\" ĐŒĐ°Đ” ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ тып" -#: c/c-typeck.cc:16542 cp/semantics.cc:7598 +#: c/c-typeck.cc:16550 cp/semantics.cc:7619 #, gcc-internal-format msgid "iterator %qD has zero step" msgstr "" -#: c/c-typeck.cc:16569 +#: c/c-typeck.cc:16577 #, gcc-internal-format msgid "type of iterator %qD refers to outer iterator %qD" msgstr "" -#: c/c-typeck.cc:16576 cp/semantics.cc:7632 +#: c/c-typeck.cc:16584 cp/semantics.cc:7653 #, gcc-internal-format msgid "begin expression refers to outer iterator %qD" msgstr "" -#: c/c-typeck.cc:16582 cp/semantics.cc:7638 +#: c/c-typeck.cc:16590 cp/semantics.cc:7659 #, gcc-internal-format msgid "end expression refers to outer iterator %qD" msgstr "" -#: c/c-typeck.cc:16588 cp/semantics.cc:7644 +#: c/c-typeck.cc:16596 cp/semantics.cc:7665 #, gcc-internal-format msgid "step expression refers to outer iterator %qD" msgstr "" -#: c/c-typeck.cc:16625 cp/semantics.cc:7692 +#: c/c-typeck.cc:16633 cp/semantics.cc:7713 #, gcc-internal-format msgid "expected pointer in %qs clause" msgstr "" -#: c/c-typeck.cc:16735 cp/semantics.cc:7865 +#: c/c-typeck.cc:16743 cp/semantics.cc:7886 #, gcc-internal-format msgid "% and non-% % clauses on the same construct" msgstr "" -#: c/c-typeck.cc:16757 cp/semantics.cc:7885 +#: c/c-typeck.cc:16765 cp/semantics.cc:7906 #, gcc-internal-format msgid "% % clause with array section" msgstr "" -#: c/c-typeck.cc:16783 c/c-typeck.cc:16793 +#: c/c-typeck.cc:16791 c/c-typeck.cc:16801 #, gcc-internal-format msgid "%qD in % clause is a zero size array" msgstr "" -#: c/c-typeck.cc:16813 +#: c/c-typeck.cc:16821 #, gcc-internal-format msgid "%<_Atomic%> %qE in % clause" msgstr "" -#: c/c-typeck.cc:16825 +#: c/c-typeck.cc:16833 #, gcc-internal-format msgid "zero sized type %qT in %qs clause" msgstr "" -#: c/c-typeck.cc:16833 +#: c/c-typeck.cc:16841 #, gcc-internal-format msgid "variable sized type %qT in %qs clause" msgstr "" -#: c/c-typeck.cc:16877 +#: c/c-typeck.cc:16885 #, gcc-internal-format msgid "%qE has invalid type for %" msgstr "" -#: c/c-typeck.cc:16886 cp/semantics.cc:7404 +#: c/c-typeck.cc:16894 cp/semantics.cc:7425 #, gcc-internal-format msgid "user defined reduction not found for %qE" msgstr "" -#: c/c-typeck.cc:16974 +#: c/c-typeck.cc:16982 #, gcc-internal-format msgid "variable length element type in array % clause" msgstr "" -#: c/c-typeck.cc:16992 c/c-typeck.cc:18053 cp/semantics.cc:10367 +#: c/c-typeck.cc:17000 c/c-typeck.cc:18061 cp/semantics.cc:10388 #, gcc-internal-format msgid "% clause must not be used together with % clause" msgstr "" -#: c/c-typeck.cc:17004 cp/semantics.cc:10435 +#: c/c-typeck.cc:17012 cp/semantics.cc:10456 #, gcc-internal-format msgid "%qE must be % for %" msgstr "" -#: c/c-typeck.cc:17019 cp/semantics.cc:7928 +#: c/c-typeck.cc:17027 cp/semantics.cc:7949 #, gcc-internal-format msgid "modifier should not be specified in % clause on % or % constructs when not using OpenMP 5.2 modifiers" msgstr "" -#: c/c-typeck.cc:17028 +#: c/c-typeck.cc:17036 #, gcc-internal-format msgid "linear clause applied to non-integral non-pointer variable with type %qT" msgstr "" -#: c/c-typeck.cc:17036 +#: c/c-typeck.cc:17044 #, gcc-internal-format msgid "%<_Atomic%> %qD in % clause" msgstr "" -#: c/c-typeck.cc:17055 cp/semantics.cc:8012 +#: c/c-typeck.cc:17063 cp/semantics.cc:8033 #, gcc-internal-format msgid "% clause step %qE is neither constant nor a parameter" msgstr "" -#: c/c-typeck.cc:17085 c/c-typeck.cc:17953 c/c-typeck.cc:18225 -#: cp/semantics.cc:8099 cp/semantics.cc:9672 cp/semantics.cc:10063 +#: c/c-typeck.cc:17093 c/c-typeck.cc:17961 c/c-typeck.cc:18233 +#: cp/semantics.cc:8120 cp/semantics.cc:9693 cp/semantics.cc:10084 #, gcc-internal-format msgid "%qE is not a variable in clause %qs" msgstr "" -#: c/c-typeck.cc:17102 cp/semantics.cc:8117 +#: c/c-typeck.cc:17110 cp/semantics.cc:8138 #, gcc-internal-format msgid "%qD appears more than once in data-sharing clauses" msgstr "" -#: c/c-typeck.cc:17113 cp/semantics.cc:8128 +#: c/c-typeck.cc:17121 cp/semantics.cc:8149 #, gcc-internal-format msgid "%qD appears more than once in reduction clauses" msgstr "" -#: c/c-typeck.cc:17127 c/c-typeck.cc:17197 c/c-typeck.cc:17232 -#: c/c-typeck.cc:17363 cp/semantics.cc:8946 +#: c/c-typeck.cc:17135 c/c-typeck.cc:17205 c/c-typeck.cc:17240 +#: c/c-typeck.cc:17371 cp/semantics.cc:8967 #, gcc-internal-format msgid "%qE appears more than once in data clauses" msgstr "" -#: c/c-typeck.cc:17137 c/c-typeck.cc:17205 c/c-typeck.cc:17701 -#: c/c-typeck.cc:17853 c/c-typeck.cc:17861 c/c-typeck.cc:17877 -#: c/c-typeck.cc:17886 c/c-typeck.cc:17894 cp/semantics.cc:8142 -#: cp/semantics.cc:8152 cp/semantics.cc:8245 cp/semantics.cc:8253 -#: cp/semantics.cc:8300 cp/semantics.cc:9360 cp/semantics.cc:9550 -#: cp/semantics.cc:9558 cp/semantics.cc:9578 cp/semantics.cc:9587 -#: cp/semantics.cc:9595 +#: c/c-typeck.cc:17145 c/c-typeck.cc:17213 c/c-typeck.cc:17709 +#: c/c-typeck.cc:17861 c/c-typeck.cc:17869 c/c-typeck.cc:17885 +#: c/c-typeck.cc:17894 c/c-typeck.cc:17902 cp/semantics.cc:8163 +#: cp/semantics.cc:8173 cp/semantics.cc:8266 cp/semantics.cc:8274 +#: cp/semantics.cc:8321 cp/semantics.cc:9381 cp/semantics.cc:9571 +#: cp/semantics.cc:9579 cp/semantics.cc:9599 cp/semantics.cc:9608 +#: cp/semantics.cc:9616 #, gcc-internal-format msgid "%qD appears more than once in data clauses" msgstr "" -#: c/c-typeck.cc:17140 c/c-typeck.cc:17211 c/c-typeck.cc:17897 -#: cp/semantics.cc:8155 cp/semantics.cc:8259 cp/semantics.cc:9598 +#: c/c-typeck.cc:17148 c/c-typeck.cc:17219 c/c-typeck.cc:17905 +#: cp/semantics.cc:8176 cp/semantics.cc:8280 cp/semantics.cc:9619 #, gcc-internal-format msgid "%qD appears both in data and map clauses" msgstr "" -#: c/c-typeck.cc:17185 cp/semantics.cc:8232 +#: c/c-typeck.cc:17193 cp/semantics.cc:8253 #, gcc-internal-format msgid "%qE is not a variable in clause %" msgstr "" -#: c/c-typeck.cc:17225 cp/semantics.cc:8292 +#: c/c-typeck.cc:17233 cp/semantics.cc:8313 #, gcc-internal-format msgid "%qE is not a variable in clause %" msgstr "" -#: c/c-typeck.cc:17244 cp/semantics.cc:8725 +#: c/c-typeck.cc:17252 cp/semantics.cc:8746 #, gcc-internal-format msgid "%qE is not a variable in % clause" msgstr "" -#: c/c-typeck.cc:17251 +#: c/c-typeck.cc:17259 #, gcc-internal-format msgid "%qE in % clause is neither a pointer nor an array" msgstr "" -#: c/c-typeck.cc:17258 +#: c/c-typeck.cc:17266 #, gcc-internal-format msgid "%<_Atomic%> %qD in % clause" msgstr "" -#: c/c-typeck.cc:17265 +#: c/c-typeck.cc:17273 #, gcc-internal-format msgid "%qE appears more than once in % clauses" msgstr "" -#: c/c-typeck.cc:17278 cp/semantics.cc:8794 +#: c/c-typeck.cc:17286 cp/semantics.cc:8815 #, gcc-internal-format msgid "%qE is not a variable in % clause" msgstr "" -#: c/c-typeck.cc:17284 +#: c/c-typeck.cc:17292 #, gcc-internal-format msgid "%qE appears more than once in % clauses" msgstr "" -#: c/c-typeck.cc:17297 cp/semantics.cc:8833 +#: c/c-typeck.cc:17305 cp/semantics.cc:8854 #, gcc-internal-format msgid "%qE is not a variable in % clause" msgstr "" -#: c/c-typeck.cc:17303 +#: c/c-typeck.cc:17311 #, gcc-internal-format msgid "%qE appears more than once in % clauses" msgstr "" -#: c/c-typeck.cc:17374 cp/semantics.cc:8965 +#: c/c-typeck.cc:17382 cp/semantics.cc:8986 #, gcc-internal-format msgid "allocator %qE must be of % type" msgstr "" -#: c/c-typeck.cc:17392 cp/semantics.cc:8986 +#: c/c-typeck.cc:17400 cp/semantics.cc:9007 #, gcc-internal-format msgid "allocator %qE must be either a variable or a predefined allocator" msgstr "" -#: c/c-typeck.cc:17406 +#: c/c-typeck.cc:17414 #, gcc-internal-format msgid "modifiers cannot be used with predefined allocator %qE" msgstr "" -#: c/c-typeck.cc:17423 cp/semantics.cc:9018 +#: c/c-typeck.cc:17431 cp/semantics.cc:9039 #, gcc-internal-format msgid "memspace modifier %qE must be constant enum of % type" msgstr "" -#: c/c-typeck.cc:17439 cp/semantics.cc:9038 +#: c/c-typeck.cc:17447 cp/semantics.cc:9059 #, gcc-internal-format msgid "traits array %qE must be defined in same scope as the construct on which the clause appears" msgstr "" -#: c/c-typeck.cc:17464 cp/semantics.cc:9062 +#: c/c-typeck.cc:17472 cp/semantics.cc:9083 #, gcc-internal-format msgid "traits array %qE must be of % type" msgstr "" -#: c/c-typeck.cc:17467 +#: c/c-typeck.cc:17475 #, gcc-internal-format msgid "traits array must be of % type" msgstr "" -#: c/c-typeck.cc:17476 cp/semantics.cc:9078 +#: c/c-typeck.cc:17484 cp/semantics.cc:9099 #, gcc-internal-format msgid "traits array must be initialized with constants" msgstr "" -#: c/c-typeck.cc:17512 cp/semantics.cc:9115 +#: c/c-typeck.cc:17520 cp/semantics.cc:9136 #, gcc-internal-format msgid "% clause with % dependence type on array section" msgstr "" -#: c/c-typeck.cc:17527 cp/semantics.cc:9130 +#: c/c-typeck.cc:17535 cp/semantics.cc:9151 #, gcc-internal-format msgid "% used with % kind other than % or %" msgstr "" -#: c/c-typeck.cc:17535 cp/semantics.cc:9148 +#: c/c-typeck.cc:17543 cp/semantics.cc:9169 #, gcc-internal-format msgid "%qE is not lvalue expression nor array section in %qs clause" msgstr "" -#: c/c-typeck.cc:17556 cp/semantics.cc:9170 +#: c/c-typeck.cc:17564 cp/semantics.cc:9191 #, gcc-internal-format msgid "%qE does not have % type in % clause with % dependence type" msgstr "" -#: c/c-typeck.cc:17566 cp/semantics.cc:9182 +#: c/c-typeck.cc:17574 cp/semantics.cc:9203 #, gcc-internal-format msgid "%qE should not have % type in % clause with dependence type other than %" msgstr "" -#: c/c-typeck.cc:17637 cp/semantics.cc:9295 +#: c/c-typeck.cc:17645 cp/semantics.cc:9316 #, gcc-internal-format msgid "array section does not have mappable type in %qs clause" msgstr "" -#: c/c-typeck.cc:17657 c/c-typeck.cc:17733 c/c-typeck.cc:17769 -#: cp/semantics.cc:9315 cp/semantics.cc:9394 cp/semantics.cc:9430 +#: c/c-typeck.cc:17665 c/c-typeck.cc:17741 c/c-typeck.cc:17777 +#: cp/semantics.cc:9336 cp/semantics.cc:9415 cp/semantics.cc:9451 #, fuzzy, gcc-internal-format #| msgid "unsupported version" msgid "unsupported map expression %qE" msgstr "ĐœĐ”ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČĐ°Đ”ĐŒĐ°Ń ĐČĐ”Ń€ŃŃ–Ń" -#: c/c-typeck.cc:17697 c/c-typeck.cc:17874 cp/semantics.cc:9356 -#: cp/semantics.cc:9575 +#: c/c-typeck.cc:17705 c/c-typeck.cc:17882 cp/semantics.cc:9377 +#: cp/semantics.cc:9596 #, gcc-internal-format msgid "%qD appears more than once in motion clauses" msgstr "" -#: c/c-typeck.cc:17705 c/c-typeck.cc:17880 cp/semantics.cc:9364 -#: cp/semantics.cc:9581 +#: c/c-typeck.cc:17713 c/c-typeck.cc:17888 cp/semantics.cc:9385 +#: cp/semantics.cc:9602 #, gcc-internal-format msgid "%qD appears more than once in map clauses" msgstr "" -#: c/c-typeck.cc:17824 c/c-typeck.cc:17966 cp/semantics.cc:9518 -#: cp/semantics.cc:9686 +#: c/c-typeck.cc:17832 c/c-typeck.cc:17974 cp/semantics.cc:9539 +#: cp/semantics.cc:9707 #, gcc-internal-format msgid "%qD does not have a mappable type in %qs clause" msgstr "" -#: c/c-typeck.cc:17949 cp/semantics.cc:9667 +#: c/c-typeck.cc:17957 cp/semantics.cc:9688 #, gcc-internal-format msgid "%qE is neither a variable nor a function name in clause %qs" msgstr "" -#: c/c-typeck.cc:17975 cp/semantics.cc:9698 +#: c/c-typeck.cc:17983 cp/semantics.cc:9719 #, gcc-internal-format msgid "%qE appears more than once on the same % directive" msgstr "" -#: c/c-typeck.cc:17989 cp/semantics.cc:9714 +#: c/c-typeck.cc:17997 cp/semantics.cc:9735 #, gcc-internal-format msgid "%qD is not an argument in % clause" msgstr "" -#: c/c-typeck.cc:17992 cp/semantics.cc:9717 +#: c/c-typeck.cc:18000 cp/semantics.cc:9738 #, gcc-internal-format msgid "%qE is not an argument in % clause" msgstr "" -#: c/c-typeck.cc:18011 +#: c/c-typeck.cc:18019 #, gcc-internal-format msgid "%qs variable is not a pointer" msgstr "" -#: c/c-typeck.cc:18018 +#: c/c-typeck.cc:18026 #, gcc-internal-format msgid "%qs variable is neither a pointer nor an array" msgstr "" -#: c/c-typeck.cc:18066 c/c-typeck.cc:18172 cp/semantics.cc:10318 +#: c/c-typeck.cc:18074 c/c-typeck.cc:18180 cp/semantics.cc:10339 #, gcc-internal-format msgid "% clause must not be used together with % clause" msgstr "" -#: c/c-typeck.cc:18086 cp/semantics.cc:9222 +#: c/c-typeck.cc:18094 cp/semantics.cc:9243 #, gcc-internal-format msgid "too many %qs clauses on a task construct" msgstr "" -#: c/c-typeck.cc:18208 cp/semantics.cc:10031 +#: c/c-typeck.cc:18216 cp/semantics.cc:10052 #, gcc-internal-format msgid "% clause is incompatible with %" msgstr "" -#: c/c-typeck.cc:18243 cp/semantics.cc:10125 +#: c/c-typeck.cc:18251 cp/semantics.cc:10146 #, gcc-internal-format msgid "%qD appears more than once in action clauses" msgstr "" -#: c/c-typeck.cc:18254 cp/semantics.cc:10139 +#: c/c-typeck.cc:18262 cp/semantics.cc:10160 #, gcc-internal-format msgid "%qD must be of %" msgstr "" -#: c/c-typeck.cc:18263 cp/semantics.cc:10148 +#: c/c-typeck.cc:18271 cp/semantics.cc:10169 #, gcc-internal-format msgid "%qD shall not be const" msgstr "" -#: c/c-typeck.cc:18312 cp/semantics.cc:10506 +#: c/c-typeck.cc:18320 cp/semantics.cc:10527 #, gcc-internal-format msgid "%qE is predetermined %qs for %qs" msgstr "" -#: c/c-typeck.cc:18322 +#: c/c-typeck.cc:18330 #, gcc-internal-format msgid "% qualified %qE may appear only in % or % clauses" msgstr "" -#: c/c-typeck.cc:18358 cp/semantics.cc:10259 +#: c/c-typeck.cc:18366 cp/semantics.cc:10280 #, gcc-internal-format msgid "% clause value is bigger than % clause value" msgstr "" -#: c/c-typeck.cc:18370 cp/semantics.cc:10272 +#: c/c-typeck.cc:18378 cp/semantics.cc:10293 #, gcc-internal-format msgid "% schedule modifier specified together with % clause" msgstr "" -#: c/c-typeck.cc:18381 c/c-typeck.cc:18389 cp/semantics.cc:10281 -#: cp/semantics.cc:10310 +#: c/c-typeck.cc:18389 c/c-typeck.cc:18397 cp/semantics.cc:10302 +#: cp/semantics.cc:10331 #, gcc-internal-format msgid "%qs clause specified together with % % clause" msgstr "" -#: c/c-typeck.cc:18437 cp/semantics.cc:10239 +#: c/c-typeck.cc:18445 cp/semantics.cc:10260 #, gcc-internal-format msgid "% clause step is a parameter %qD not specified in % clause" msgstr "" -#: c/c-typeck.cc:18488 cp/semantics.cc:10289 +#: c/c-typeck.cc:18496 cp/semantics.cc:10310 #, gcc-internal-format msgid "% clause must not be used together with % clause" msgstr "" -#: c/c-typeck.cc:18496 cp/semantics.cc:10300 +#: c/c-typeck.cc:18504 cp/semantics.cc:10321 #, gcc-internal-format msgid "% clause must not be used together with % clause" msgstr "" -#: c/c-typeck.cc:18504 cp/semantics.cc:10356 +#: c/c-typeck.cc:18512 cp/semantics.cc:10377 #, gcc-internal-format msgid "% clause must not be used together with % clause" msgstr "" -#: c/c-typeck.cc:18514 cp/semantics.cc:10329 +#: c/c-typeck.cc:18522 cp/semantics.cc:10350 #, gcc-internal-format msgid "% clause must not be used together with % clause" msgstr "" -#: c/c-typeck.cc:18532 cp/semantics.cc:10531 +#: c/c-typeck.cc:18540 cp/semantics.cc:10552 #, gcc-internal-format msgid "the event handle of a % clause should not be in a data-sharing clause" msgstr "" -#: c/c-typeck.cc:18550 cp/semantics.cc:10602 +#: c/c-typeck.cc:18558 cp/semantics.cc:10623 #, gcc-internal-format msgid "% clause requires action clauses with % interop-type" msgstr "" -#: c/c-typeck.cc:18554 cp/semantics.cc:10606 +#: c/c-typeck.cc:18562 cp/semantics.cc:10627 #, gcc-internal-format msgid "% clause lacks the % modifier" msgstr "" -#: c/c-typeck.cc:18736 +#: c/c-typeck.cc:18744 #, gcc-internal-format msgid "cannot use % with reverse storage order" msgstr "" -#: c/c-typeck.cc:18741 +#: c/c-typeck.cc:18749 #, fuzzy, gcc-internal-format msgid "second argument to % is of incomplete type %qT" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: c/c-typeck.cc:18747 +#: c/c-typeck.cc:18755 #, gcc-internal-format msgid "second argument to % is a function type %qT" msgstr "" -#: c/c-typeck.cc:18754 c/c-typeck.cc:18764 +#: c/c-typeck.cc:18762 c/c-typeck.cc:18772 #, gcc-internal-format msgid "second argument to % is an array type %qT" msgstr "" -#: c/c-typeck.cc:18760 +#: c/c-typeck.cc:18768 #, gcc-internal-format msgid "C++ requires promoted type, not enum type, in %" msgstr "" @@ -55493,253 +55536,248 @@ msgstr "" msgid "no such exception: 0x%x" msgstr "" -#: cobol/genapi.cc:353 +#: cobol/genapi.cc:362 #, gcc-internal-format msgid "Probable cause: it was referenced without being defined." msgstr "" -#: cobol/genapi.cc:597 +#: cobol/genapi.cc:606 #, gcc-internal-format msgid "That string should not be that long." msgstr "" -#: cobol/genapi.cc:1263 +#: cobol/genapi.cc:1272 #, gcc-internal-format, gfc-internal-format msgid "%s should not be null" msgstr "" -#: cobol/genapi.cc:1828 +#: cobol/genapi.cc:1837 #, gcc-internal-format, gfc-internal-format msgid "%s: Knows not the variable type %s for %s" msgstr "" -#: cobol/genapi.cc:2162 +#: cobol/genapi.cc:2171 #, gcc-internal-format, gfc-internal-format msgid "%s: Invalid field type %s:" msgstr "" -#: cobol/genapi.cc:4444 +#: cobol/genapi.cc:4622 #, gcc-internal-format msgid "Not valid for ACCEPT statement." msgstr "" -#: cobol/genapi.cc:5497 +#: cobol/genapi.cc:5675 #, gcc-internal-format msgid "Attempting to send to an input device." msgstr "" -#: cobol/genapi.cc:5520 +#: cobol/genapi.cc:5698 #, gcc-internal-format msgid "Not valid for DISPLAY statement." msgstr "" -#: cobol/genapi.cc:7790 cobol/genapi.cc:7796 cobol/genapi.cc:7802 +#: cobol/genapi.cc:8069 cobol/genapi.cc:8075 cobol/genapi.cc:8081 #, gcc-internal-format msgid "% was called with variable %s on line %d, which is not a FldConditional" msgstr "" -#: cobol/genapi.cc:7909 +#: cobol/genapi.cc:8188 #, gcc-internal-format msgid "% was called with variable %qs, which is not a FldConditional" msgstr "" -#: cobol/genapi.cc:7973 +#: cobol/genapi.cc:8252 #, gcc-internal-format msgid "% was called with variable %s, which is not a FldConditional" msgstr "" -#: cobol/genapi.cc:8018 +#: cobol/genapi.cc:8297 #, gcc-internal-format msgid "% was called with variable %s, which is not a FldConditional" msgstr "" -#: cobol/genapi.cc:8269 +#: cobol/genapi.cc:8552 #, gcc-internal-format msgid "candidate %s has unimplemented % %d(%s)" msgstr "" -#: cobol/genapi.cc:8280 +#: cobol/genapi.cc:8563 #, gcc-internal-format msgid "unknown % code %d" msgstr "" -#: cobol/genapi.cc:8469 +#: cobol/genapi.cc:8752 #, gcc-internal-format msgid "%s:%d: %u exceeds % of %d, line %d" msgstr "" -#: cobol/genapi.cc:9460 -#, gcc-internal-format, gfc-internal-format -msgid "%s:%d: ignoring subscripts" -msgstr "" - -#: cobol/genapi.cc:9683 cobol/genapi.cc:10175 +#: cobol/genapi.cc:9962 cobol/genapi.cc:10454 #, gcc-internal-format, gfc-internal-format msgid "%s: called with NULL *file" msgstr "" -#: cobol/genapi.cc:9808 +#: cobol/genapi.cc:10087 #, gcc-internal-format msgid "%s:%d file %s access mode is % in %s" msgstr "" -#: cobol/genapi.cc:9915 +#: cobol/genapi.cc:10194 #, gcc-internal-format msgid "% called with NULL *file" msgstr "" -#: cobol/genapi.cc:9920 +#: cobol/genapi.cc:10199 #, gcc-internal-format msgid "% for %s called with NULL %" msgstr "" -#: cobol/genapi.cc:9926 +#: cobol/genapi.cc:10205 #, gcc-internal-format, gfc-internal-format msgid "EXTEND can only be used where %s is ACCESS MODE SEQUENTIAL" msgstr "" -#: cobol/genapi.cc:9986 +#: cobol/genapi.cc:10265 #, gcc-internal-format msgid "% called with NULL *file" msgstr "" -#: cobol/genapi.cc:9991 +#: cobol/genapi.cc:10270 #, gcc-internal-format msgid "% for %s called with NULL %var_decl_node%>" msgstr "" -#: cobol/genapi.cc:10046 +#: cobol/genapi.cc:10325 #, gcc-internal-format, gfc-internal-format msgid "%s:%d file %s 'where' is zero in %s" msgstr "" -#: cobol/genapi.cc:10056 +#: cobol/genapi.cc:10335 #, gcc-internal-format msgid "% called with NULL *file" msgstr "" -#: cobol/genapi.cc:10061 +#: cobol/genapi.cc:10340 #, gcc-internal-format msgid "% for %s called with NULL %var_decl_node%>" msgstr "" -#: cobol/genapi.cc:10067 +#: cobol/genapi.cc:10346 #, gcc-internal-format msgid "% called with NULL *field" msgstr "" -#: cobol/genapi.cc:10072 +#: cobol/genapi.cc:10351 #, gcc-internal-format msgid "% for %s called with NULL %var_decl_node%>" msgstr "" -#: cobol/genapi.cc:10078 +#: cobol/genapi.cc:10357 #, gcc-internal-format msgid "%s:%d file %s is RELATIVE/SEQUENTIAL, but %= 0%>" msgstr "" -#: cobol/genapi.cc:10087 +#: cobol/genapi.cc:10366 #, gcc-internal-format msgid "%s:%d file %s is RELATIVE/RANDOM, but %" msgstr "" -#: cobol/genapi.cc:10131 +#: cobol/genapi.cc:10410 #, gcc-internal-format, gfc-internal-format msgid "%s:%d file %s 'sequentially' is %d in %s" msgstr "" -#: cobol/genapi.cc:10180 +#: cobol/genapi.cc:10459 #, gcc-internal-format msgid "%s: for %s called with NULL %var_decl_node%>" msgstr "" -#: cobol/genapi.cc:10186 +#: cobol/genapi.cc:10465 #, gcc-internal-format, gfc-internal-format msgid "%s: called with NULL *field" msgstr "" -#: cobol/genapi.cc:10191 +#: cobol/genapi.cc:10470 #, gcc-internal-format msgid "%s: for %s called with NULL %var_decl_node%>" msgstr "" -#: cobol/genapi.cc:10276 +#: cobol/genapi.cc:10555 #, gcc-internal-format msgid "The file pointer should not be null" msgstr "" -#: cobol/genapi.cc:10459 +#: cobol/genapi.cc:10738 #, gcc-internal-format, gfc-internal-format msgid "%s:%d file %s is INDEXED/SEQUENTIAL, but 'sequentially' is false" msgstr "" -#: cobol/genapi.cc:12290 +#: cobol/genapi.cc:12582 #, gcc-internal-format, gfc-internal-format msgid "%s: asked to sort %s, which is not a table" msgstr "" #. Having both or neither violates SORT syntax -#: cobol/genapi.cc:12422 +#: cobol/genapi.cc:12714 #, gcc-internal-format, gfc-internal-format msgid "%s: syntax error: both (or neither) USING and input-proc are specified" msgstr "" -#: cobol/genapi.cc:12556 +#: cobol/genapi.cc:12848 #, gcc-internal-format, gfc-internal-format msgid "%s: syntax error: both (or neither) GIVING and output-proc are specified" msgstr "" -#: cobol/genapi.cc:12978 +#: cobol/genapi.cc:13270 #, gcc-internal-format, gfc-internal-format msgid "%s: syntax error: both (or neither) files and output-proc are specified" msgstr "" -#: cobol/genapi.cc:13382 +#: cobol/genapi.cc:13674 #, gcc-internal-format msgid "CALL USING BY CONTENT would require REPOSITORY PROTOTYPES." msgstr "" -#: cobol/genapi.cc:13653 +#: cobol/genapi.cc:13945 #, gcc-internal-format, gfc-internal-format msgid "%s: What in the name of Nero are we doing here?" msgstr "" -#: cobol/genapi.cc:15043 +#: cobol/genapi.cc:15462 #, gcc-internal-format msgid "In %, the move of FldLiteralN to %s is unimplemented" msgstr "" -#: cobol/genapi.cc:15280 +#: cobol/genapi.cc:15699 #, gcc-internal-format msgid "In %(%s to %s), the move of %s to %s is unimplemented" msgstr "" -#: cobol/genapi.cc:17171 +#: cobol/genapi.cc:17553 #, gcc-internal-format, gfc-internal-format msgid "LEVEL 01 (%s) OCCURS has insufficient data.memsize" msgstr "" -#: cobol/genapi.cc:17209 +#: cobol/genapi.cc:17591 #, gcc-internal-format msgid "% was called with a NULL %" msgstr "" -#: cobol/genapi.cc:17239 +#: cobol/genapi.cc:17621 #, gcc-internal-format, gfc-internal-format msgid "%s: %d %s is a table, but it improperly has a capacity of zero" msgstr "" -#: cobol/genapi.cc:17279 +#: cobol/genapi.cc:17661 #, gcc-internal-format, gfc-internal-format msgid "%s: %s is its own ancestor" msgstr "" -#: cobol/genapi.cc:17284 +#: cobol/genapi.cc:17666 #, gcc-internal-format msgid "%s: %d %qs has NULL ancestor" msgstr "" -#: cobol/genapi.cc:17291 +#: cobol/genapi.cc:17673 #, gcc-internal-format msgid "%s(%s) improperly has a non-null %" msgstr "" @@ -55748,72 +55786,82 @@ msgstr "" #. During the early stages of implementing cbl_field_t::our_index, there #. were execution paths in parse.y and parser.cc that resulted in #. our_index not being set. Those should be gone. -#: cobol/genapi.cc:17426 +#: cobol/genapi.cc:17808 #, gcc-internal-format msgid "% is NULL under unanticipated circumstances" msgstr "" -#: cobol/genapi.cc:17512 +#: cobol/genapi.cc:17894 #, gcc-internal-format, gfc-internal-format msgid "%s: %d %s<%s> improperly has a data.capacity of zero" msgstr "" -#: cobol/genapi.cc:17580 +#: cobol/genapi.cc:17962 #, gcc-internal-format msgid "% is zero for %s (symbol number " msgstr "" -#: cobol/gengen.cc:360 +#: cobol/gengen.cc:370 #, gcc-internal-format msgid "The given type is NULL, and that is just not fair" msgstr "" -#: cobol/gengen.cc:369 +#: cobol/gengen.cc:379 #, gcc-internal-format msgid "The given type is not a declaration or a TYPE" msgstr "" -#: cobol/gengen.cc:413 +#: cobol/gengen.cc:423 #, gcc-internal-format, gfc-internal-format msgid "Unknown type %d" msgstr "" -#: cobol/gengen.cc:482 +#: cobol/gengen.cc:502 #, gcc-internal-format msgid "Attempting an assignment of differing types." msgstr "" -#: cobol/gengen.cc:526 +#: cobol/gengen.cc:651 #, gcc-internal-format, gfc-internal-format msgid "Somebody asked for the field %s.%s, which does not exist" msgstr "" -#: cobol/gengen.cc:2159 cobol/gengen.cc:2212 cobol/gengen.cc:3039 -#: cobol/gengen.cc:3094 +#: cobol/gengen.cc:1276 +#, gcc-internal-format, gfc-internal-format +msgid "%s:%d: Must not call here with %s" +msgstr "" + +#: cobol/gengen.cc:1294 +#, gcc-internal-format, gfc-internal-format +msgid "%s:%d: Must not call here with non-%s" +msgstr "" + +#: cobol/gengen.cc:2017 cobol/gengen.cc:2070 cobol/gengen.cc:2897 +#: cobol/gengen.cc:2952 #, gcc-internal-format msgid "You *must* be joking" msgstr "" #. Warning: This test is not completely reliable, because a garbage #. byte could have a valid TREE_CODE. But it does help. -#: cobol/gengen.cc:2166 +#: cobol/gengen.cc:2024 #, gcc-internal-format msgid "You forgot to put a % at the end of a % again" msgstr "" #. Warning: This test is not completely reliable, because a garbage #. byte could have a valid TREE_CODE. But it does help. -#: cobol/gengen.cc:2590 cobol/gengen.cc:2749 +#: cobol/gengen.cc:2448 cobol/gengen.cc:2607 #, gcc-internal-format msgid "You forgot to put a % at the end of a % again" msgstr "" -#: cobol/gengen.cc:2601 cobol/gengen.cc:2760 +#: cobol/gengen.cc:2459 cobol/gengen.cc:2618 #, gcc-internal-format, gfc-internal-format msgid "%d parameters? Really? Are you insane?" msgstr "" -#: cobol/gengen.cc:2882 +#: cobol/gengen.cc:2740 #, gcc-internal-format msgid "Residual context count" msgstr "" @@ -55823,13 +55871,13 @@ msgstr "" msgid "% doesn%'t know how to evaluate %<%s = %s %c %s%>" msgstr "" -#: cobol/genutil.cc:643 cobol/genutil.cc:710 +#: cobol/genutil.cc:640 cobol/genutil.cc:707 #, fuzzy, gcc-internal-format #| msgid "too many input files" msgid "Too many subscripts" msgstr "ĐČĐ”Đ»ŃŒĐŒŃ– ŃˆĐŒĐ°Ń‚ уĐČĐ°Ń…ĐŸĐŽĐ·ŃŃ‡Ń‹Ń… фаĐčлаў" -#: cobol/genutil.cc:871 +#: cobol/genutil.cc:868 #, gcc-internal-format msgid "cannot get % value from %s" msgstr "" @@ -55844,62 +55892,62 @@ msgstr "" msgid "%s exited with status %d" msgstr "" -#: cobol/symbols.cc:426 +#: cobol/symbols.cc:434 msgid "%s:%d: LblNone '%s' has parent #%zu" msgstr "" -#: cobol/symbols.cc:1883 +#: cobol/symbols.cc:1900 #, gcc-internal-format, gfc-internal-format msgid "%s: data item %s #" msgstr "" -#: cobol/symbols.cc:2047 +#: cobol/symbols.cc:2069 #, gcc-internal-format, gfc-internal-format msgid "%s: key must be field" msgstr "" -#: cobol/symbols.cc:4232 +#: cobol/symbols.cc:4292 #, gcc-internal-format, gfc-internal-format msgid "%s: %s %s has invalid encoding" msgstr "" -#: cobol/symbols.cc:4400 cobol/symbols.cc:4503 cobol/symbols.cc:4533 +#: cobol/symbols.cc:4460 cobol/symbols.cc:4563 cobol/symbols.cc:4593 #, gcc-internal-format, gfc-internal-format msgid "%s:%d: could not add '%s'" msgstr "" -#: cobol/util.cc:1776 +#: cobol/util.cc:1741 #, gcc-internal-format, gfc-internal-format msgid "%s: %s %lu %s %lu" msgstr "" -#: cobol/util.cc:1791 +#: cobol/util.cc:1756 #, gcc-internal-format, gfc-internal-format msgid "%s: nbytes %lu %s %lu" msgstr "" -#: cobol/util.cc:1869 +#: cobol/util.cc:1834 #, gcc-internal-format, gfc-internal-format msgid "%s:%d: type %s, who woulda thunk?" msgstr "" -#: cobol/util.cc:2224 +#: cobol/util.cc:2189 #, gcc-internal-format, gfc-internal-format msgid "logic error: MOVE %s %s invalid type:" msgstr "" -#: cobol/util.cc:2814 +#: cobol/util.cc:2779 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "%s: compiling `%s'\n" msgid "%s: regcomp: %s" msgstr "%s: ĐșĐ°ĐŒĐżŃ–Đ»ŃŽĐ”Ń†Ń†Đ° \"%s\"\n" -#: cobol/util.cc:2963 +#: cobol/util.cc:2928 #, gcc-internal-format, gfc-internal-format msgid "logic error: missing inode for %s" msgstr "" -#: cobol/util.cc:3387 +#: cobol/util.cc:3352 #, fuzzy, gcc-internal-format, gfc-internal-format #| msgid "%s: compiling `%s'\n" msgid "failed compiling %s" @@ -56340,7 +56388,7 @@ msgstr "ĐœĐ”ĐŒĐ°ĐłŃ‡Ń‹ĐŒŃ‹ апэратар '%s'" msgid "%q#D is private within this context" msgstr "" -#: cp/call.cc:8447 cp/decl.cc:10339 +#: cp/call.cc:8447 cp/decl.cc:10353 #, fuzzy, gcc-internal-format msgid "declared private here" msgstr "\"%s\" ĐœĐ” абĐČĐ”ŃˆŃ‡Đ°Đœ (ĐżĐ”Ń€ŃˆĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” ў гэтаĐč Ń„ŃƒĐœĐșцыі)" @@ -56350,7 +56398,7 @@ msgstr "\"%s\" ĐœĐ” абĐČĐ”ŃˆŃ‡Đ°Đœ (ĐżĐ”Ń€ŃˆĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” ў msgid "%q#D is protected within this context" msgstr "\"%s\" ĐœĐ” абĐČĐ”ŃˆŃ‡Đ°Đœ (ĐżĐ”Ń€ŃˆĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” ў гэтаĐč Ń„ŃƒĐœĐșцыі)" -#: cp/call.cc:8453 cp/decl.cc:10340 +#: cp/call.cc:8453 cp/decl.cc:10354 #, fuzzy, gcc-internal-format #| msgid "called from here" msgid "declared protected here" @@ -56677,7 +56725,7 @@ msgstr "" msgid "constructor delegates to itself" msgstr "" -#: cp/call.cc:11924 cp/typeck.cc:10776 +#: cp/call.cc:11924 cp/typeck.cc:10774 msgid "cannot convert %qH to %qI" msgstr "" @@ -56696,7 +56744,7 @@ msgstr "" msgid "call to non-function %qD" msgstr "" -#: cp/call.cc:12066 cp/pt.cc:18011 cp/typeck.cc:3666 +#: cp/call.cc:12066 cp/pt.cc:18152 cp/typeck.cc:3666 #, gcc-internal-format msgid "cannot call constructor %<%T::%D%> directly" msgstr "" @@ -57295,7 +57343,7 @@ msgstr "" msgid "next member %q#D declared here" msgstr "" -#: cp/class.cc:7967 cp/decl.cc:19542 cp/parser.cc:30588 +#: cp/class.cc:7967 cp/decl.cc:19608 cp/parser.cc:30652 #, fuzzy, gcc-internal-format #| msgid "previous definition of `%#T'" msgid "redefinition of %q#T" @@ -57306,7 +57354,7 @@ msgstr "ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐ” ĐČŃ‹Đ·ĐœĐ°Ń‡ŃĐœŃŒĐœĐ” `%#T'" msgid "defining %qT, which previously failed to be complete in a SFINAE context" msgstr "" -#: cp/class.cc:7979 cp/decl.cc:20587 +#: cp/class.cc:7979 cp/decl.cc:20653 #, gcc-internal-format msgid "here. Use %qs for a diagnostic at that point" msgstr "" @@ -57438,7 +57486,7 @@ msgstr "" msgid "lambdas are implicitly % only in C++17 and later" msgstr "" -#: cp/constexpr.cc:274 cp/decl.cc:16470 +#: cp/constexpr.cc:274 cp/decl.cc:16513 #, gcc-internal-format msgid "% destructors only available with %<-std=c++20%> or %<-std=gnu++20%>" msgstr "" @@ -57489,7 +57537,7 @@ msgstr "" msgid "%qD is not usable as a % function because:" msgstr "" -#: cp/constexpr.cc:1466 cp/constexpr.cc:7964 +#: cp/constexpr.cc:1466 cp/constexpr.cc:7987 #, gcc-internal-format msgid "destroying %qE outside its lifetime" msgstr "" @@ -57524,848 +57572,848 @@ msgstr "" msgid "uncaught exception of type %qT" msgstr "" -#: cp/constexpr.cc:1912 +#: cp/constexpr.cc:1908 #, gcc-internal-format msgid "call to %qD function with incorrect number of arguments" msgstr "" -#: cp/constexpr.cc:1930 +#: cp/constexpr.cc:1926 #, fuzzy, gcc-internal-format msgid "%qD called with no caught exceptions pending" msgstr "\"%s\" ĐœĐ” абĐČĐ”ŃˆŃ‡Đ°Đœ (ĐżĐ”Ń€ŃˆĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” ў гэтаĐč Ń„ŃƒĐœĐșцыі)" -#: cp/constexpr.cc:2014 +#: cp/constexpr.cc:2010 #, gcc-internal-format msgid "cannot allocate exception: size not constant" msgstr "" -#: cp/constexpr.cc:2034 +#: cp/constexpr.cc:2030 #, gcc-internal-format msgid "first argument to %qD function not result of %<__cxa_allocate_exception%>" msgstr "" -#: cp/constexpr.cc:2065 cp/constexpr.cc:2117 +#: cp/constexpr.cc:2061 cp/constexpr.cc:2113 #, fuzzy, gcc-internal-format msgid "%qD called with no caught exceptions active" msgstr "\"%s\" ĐœĐ” абĐČĐ”ŃˆŃ‡Đ°Đœ (ĐżĐ”Ń€ŃˆĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” ў гэтаĐč Ń„ŃƒĐœĐșцыі)" -#: cp/constexpr.cc:2155 +#: cp/constexpr.cc:2151 #, gcc-internal-format msgid "%qD called without % being defined" msgstr "" -#: cp/constexpr.cc:2224 +#: cp/constexpr.cc:2220 #, fuzzy, gcc-internal-format #| msgid "%s does not support %s" msgid "%qD called without supportable %qs" msgstr "%s ĐœĐ” ĐżĐ°ĐŽŃ‚Ń€Ń‹ĐŒĐ»Ń–ĐČаД %s" -#: cp/constexpr.cc:2280 +#: cp/constexpr.cc:2276 #, gcc-internal-format msgid "%qD called with unexpected %qs argument" msgstr "" -#: cp/constexpr.cc:2308 +#: cp/constexpr.cc:2304 #, gcc-internal-format msgid "%qD called with second argument other than 1 or -1" msgstr "" -#: cp/constexpr.cc:2346 +#: cp/constexpr.cc:2342 #, fuzzy, gcc-internal-format #| msgid "wrong number of arguments specified for `%s' attribute" msgid "wrong number of arguments to %qs call" msgstr "ĐżĐ°ĐŒŃ‹Đ»ĐșĐŸĐČая ĐșĐŸĐ»ŃŒĐșасьць Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž, Đ·Đ°ĐŽĐ°ĐŽĐ·Đ”ĐœŃ‹Ń… ĐŽĐ»Ń Đ°Ń‚Ń€Ń‹Đ±ŃƒŃ‚Đ° `%s'" -#: cp/constexpr.cc:2373 +#: cp/constexpr.cc:2369 #, gcc-internal-format msgid "first %qs call argument should be 0, 1, 2, 16, 17 or 18" msgstr "" -#: cp/constexpr.cc:2420 +#: cp/constexpr.cc:2416 #, gcc-internal-format msgid "%qs tag string contains %qc character other than letters, digits or %<_%>" msgstr "" -#: cp/constexpr.cc:2454 +#: cp/constexpr.cc:2450 msgid "constexpr message: %.*s [%r%.*s%R]" msgstr "" -#: cp/constexpr.cc:2458 +#: cp/constexpr.cc:2454 #, gcc-internal-format msgid "constexpr message: %.*s" msgstr "" -#: cp/constexpr.cc:2564 cp/constexpr.cc:4540 +#: cp/constexpr.cc:2573 cp/constexpr.cc:4553 #: rust/backend/rust-constexpr.cc:3510 #, gcc-internal-format msgid "% call flows off the end of the function" msgstr "" -#: cp/constexpr.cc:2566 cp/constexpr.cc:2687 cp/constexpr.cc:2696 -#: cp/constexpr.cc:4873 rust/backend/rust-constexpr.cc:3515 +#: cp/constexpr.cc:2575 cp/constexpr.cc:2696 cp/constexpr.cc:2705 +#: cp/constexpr.cc:4886 rust/backend/rust-constexpr.cc:3515 #: rust/backend/rust-constexpr.cc:3525 #, fuzzy, gcc-internal-format msgid "%q+E is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:2856 cp/constexpr.cc:3821 cp/constexpr.cc:4195 -#: cp/constexpr.cc:4260 cp/constexpr.cc:12039 +#: cp/constexpr.cc:2865 cp/constexpr.cc:3830 cp/constexpr.cc:4204 +#: cp/constexpr.cc:4269 cp/constexpr.cc:12081 #: rust/backend/rust-constexpr.cc:6013 #, gcc-internal-format msgid "call to non-% function %qD" msgstr "" -#: cp/constexpr.cc:2930 cp/constexpr.cc:7481 cp/constexpr.cc:10199 +#: cp/constexpr.cc:2939 cp/constexpr.cc:7504 cp/constexpr.cc:10241 #: rust/backend/rust-constexpr.cc:916 rust/backend/rust-constexpr.cc:2576 #, gcc-internal-format msgid "dereferencing a null pointer" msgstr "" -#: cp/constexpr.cc:3117 +#: cp/constexpr.cc:3126 #, gcc-internal-format msgid "the comparison reduces to %qE" msgstr "" -#: cp/constexpr.cc:3120 +#: cp/constexpr.cc:3129 #, gcc-internal-format msgid "%qE evaluates to false" msgstr "" -#: cp/constexpr.cc:3203 +#: cp/constexpr.cc:3212 #, gcc-internal-format msgid "failed % attribute assumption" msgstr "" -#: cp/constexpr.cc:3243 cp/constexpr.cc:11984 +#: cp/constexpr.cc:3252 cp/constexpr.cc:12026 #: rust/backend/rust-constexpr.cc:5982 #, fuzzy, gcc-internal-format #| msgid "can't initialize friend function `%s'" msgid "call to internal function %qE" msgstr "ĐœĐ” ĐŒĐ°ĐłŃƒ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°ĐČаць ŃŃĐ±Ń€ĐŸŃžŃĐșую Ń„ŃƒĐœĐșцыю \"%s\"" -#: cp/constexpr.cc:3300 rust/backend/rust-constexpr.cc:2697 +#: cp/constexpr.cc:3309 rust/backend/rust-constexpr.cc:2697 #, fuzzy, gcc-internal-format msgid "modifying a const object %qE is not allowed in a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:3328 rust/backend/rust-constexpr.cc:2700 +#: cp/constexpr.cc:3337 rust/backend/rust-constexpr.cc:2700 #, gcc-internal-format msgid "originally declared % here" msgstr "" -#: cp/constexpr.cc:3606 cp/constexpr.cc:3665 cp/constexpr.cc:3698 -#: cp/constexpr.cc:3720 +#: cp/constexpr.cc:3615 cp/constexpr.cc:3674 cp/constexpr.cc:3707 +#: cp/constexpr.cc:3729 #, gcc-internal-format msgid "reference % failed" msgstr "" -#: cp/constexpr.cc:3607 +#: cp/constexpr.cc:3616 #, gcc-internal-format msgid "dynamic type %qT of its operand does not have a base class of type %qT" msgstr "" -#: cp/constexpr.cc:3634 +#: cp/constexpr.cc:3643 #, fuzzy, gcc-internal-format #| msgid "parameter `%s' is initialized" msgid "virtual table pointer is used uninitialized" msgstr "ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€ \"%s\" Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°ĐČĐ°ĐœŃ‹" -#: cp/constexpr.cc:3666 cp/constexpr.cc:3699 +#: cp/constexpr.cc:3675 cp/constexpr.cc:3708 #, gcc-internal-format msgid "static type %qT of its operand is a non-public base class of dynamic type %qT" msgstr "" -#: cp/constexpr.cc:3722 +#: cp/constexpr.cc:3731 #, gcc-internal-format msgid "%qT is an ambiguous base class of dynamic type %qT of its operand" msgstr "" -#: cp/constexpr.cc:3725 +#: cp/constexpr.cc:3734 #, gcc-internal-format msgid "dynamic type %qT of its operand does not have an unambiguous public base class %qT" msgstr "" #. virtual_offset is only set for virtual bases, which make the #. class non-literal, so we don't need to handle it here. -#: cp/constexpr.cc:3827 +#: cp/constexpr.cc:3836 #, gcc-internal-format msgid "calling constexpr member function %qD through virtual base subobject" msgstr "" -#: cp/constexpr.cc:3907 +#: cp/constexpr.cc:3916 #, gcc-internal-format msgid "couldn%'t throw %qT" msgstr "" -#: cp/constexpr.cc:3982 rust/backend/rust-constexpr.cc:3571 +#: cp/constexpr.cc:3991 rust/backend/rust-constexpr.cc:3571 #, gcc-internal-format msgid "expression %qE does not designate a % function" msgstr "" -#: cp/constexpr.cc:4065 +#: cp/constexpr.cc:4074 #, gcc-internal-format msgid "cannot allocate array: size not constant" msgstr "" -#: cp/constexpr.cc:4098 +#: cp/constexpr.cc:4107 #, gcc-internal-format msgid "array deallocation of object allocated with non-array allocation" msgstr "" -#: cp/constexpr.cc:4102 cp/constexpr.cc:4125 +#: cp/constexpr.cc:4111 cp/constexpr.cc:4134 #, gcc-internal-format msgid "allocation performed here" msgstr "" -#: cp/constexpr.cc:4121 +#: cp/constexpr.cc:4130 #, gcc-internal-format msgid "non-array deallocation of object allocated with array allocation" msgstr "" -#: cp/constexpr.cc:4138 +#: cp/constexpr.cc:4147 #, gcc-internal-format msgid "deallocation of already deallocated storage" msgstr "" -#: cp/constexpr.cc:4145 +#: cp/constexpr.cc:4154 #, gcc-internal-format msgid "deallocation of storage that was not previously allocated" msgstr "" -#: cp/constexpr.cc:4303 rust/backend/rust-constexpr.cc:3626 +#: cp/constexpr.cc:4312 rust/backend/rust-constexpr.cc:3626 #, gcc-internal-format msgid "%qD called in a constant expression before its definition is complete" msgstr "" -#: cp/constexpr.cc:4310 +#: cp/constexpr.cc:4319 #, gcc-internal-format msgid "%qD called in a constant expression" msgstr "" -#: cp/constexpr.cc:4314 rust/backend/rust-constexpr.cc:3640 +#: cp/constexpr.cc:4323 rust/backend/rust-constexpr.cc:3640 #, fuzzy, gcc-internal-format msgid "%qD used before its definition" msgstr "\"%s\" ĐœĐ” абĐČĐ”ŃˆŃ‡Đ°Đœ (ĐżĐ”Ń€ŃˆĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” ў гэтаĐč Ń„ŃƒĐœĐșцыі)" -#: cp/constexpr.cc:4398 rust/backend/rust-constexpr.cc:3682 +#: cp/constexpr.cc:4417 rust/backend/rust-constexpr.cc:3682 #, gcc-internal-format msgid "call has circular dependency" msgstr "" -#: cp/constexpr.cc:4409 rust/backend/rust-constexpr.cc:3693 +#: cp/constexpr.cc:4428 rust/backend/rust-constexpr.cc:3693 #, gcc-internal-format msgid "% evaluation depth exceeds maximum of %d (use %<-fconstexpr-depth=%> to increase the maximum)" msgstr "" -#: cp/constexpr.cc:4831 +#: cp/constexpr.cc:4844 #, fuzzy, gcc-internal-format msgid "reference to %qD is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:4834 +#: cp/constexpr.cc:4847 #, fuzzy, gcc-internal-format msgid "pointer to %qD is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:4840 +#: cp/constexpr.cc:4853 #, gcc-internal-format msgid "address of non-static constexpr variable %qD may differ on each invocation of the enclosing function; add % to give it a constant address" msgstr "" -#: cp/constexpr.cc:4916 rust/backend/rust-constexpr.cc:6730 +#: cp/constexpr.cc:4929 rust/backend/rust-constexpr.cc:6730 #, gcc-internal-format msgid "right operand of shift expression %q+E is negative" msgstr "" -#: cp/constexpr.cc:4923 rust/backend/rust-constexpr.cc:6738 +#: cp/constexpr.cc:4936 rust/backend/rust-constexpr.cc:6738 #, gcc-internal-format msgid "right operand of shift expression %q+E is greater than or equal to the precision %wu of the left operand" msgstr "" -#: cp/constexpr.cc:4946 rust/backend/rust-constexpr.cc:6757 +#: cp/constexpr.cc:4959 rust/backend/rust-constexpr.cc:6757 #, gcc-internal-format msgid "left operand of shift expression %q+E is negative" msgstr "" -#: cp/constexpr.cc:4965 rust/backend/rust-constexpr.cc:6776 +#: cp/constexpr.cc:4978 rust/backend/rust-constexpr.cc:6776 #, gcc-internal-format msgid "shift expression %q+E overflows" msgstr "" -#: cp/constexpr.cc:5184 rust/backend/rust-constexpr.cc:3169 +#: cp/constexpr.cc:5197 rust/backend/rust-constexpr.cc:3169 #, gcc-internal-format msgid "arithmetic involving a null pointer in %qE" msgstr "" -#: cp/constexpr.cc:5731 rust/backend/rust-constexpr.cc:4619 +#: cp/constexpr.cc:5744 rust/backend/rust-constexpr.cc:4619 #, gcc-internal-format msgid "array subscript value %qE is outside the bounds of array %qD of type %qT" msgstr "" -#: cp/constexpr.cc:5734 rust/backend/rust-constexpr.cc:4624 +#: cp/constexpr.cc:5747 rust/backend/rust-constexpr.cc:4624 #, gcc-internal-format msgid "nonzero array subscript %qE is used with array %qD of type %qT with unknown bounds" msgstr "" -#: cp/constexpr.cc:5739 rust/backend/rust-constexpr.cc:4631 +#: cp/constexpr.cc:5752 rust/backend/rust-constexpr.cc:4631 #, gcc-internal-format msgid "array subscript value %qE is outside the bounds of array type %qT" msgstr "" -#: cp/constexpr.cc:5742 rust/backend/rust-constexpr.cc:4636 +#: cp/constexpr.cc:5755 rust/backend/rust-constexpr.cc:4636 #, gcc-internal-format msgid "nonzero array subscript %qE is used with array of type %qT with unknown bounds" msgstr "" -#: cp/constexpr.cc:5956 rust/backend/rust-constexpr.cc:1714 +#: cp/constexpr.cc:5969 rust/backend/rust-constexpr.cc:1714 #, fuzzy, gcc-internal-format msgid "accessing uninitialized array element" msgstr "ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: cp/constexpr.cc:6022 rust/backend/rust-constexpr.cc:1773 +#: cp/constexpr.cc:6035 rust/backend/rust-constexpr.cc:1773 #, gcc-internal-format msgid "dereferencing a null pointer in %qE" msgstr "" -#: cp/constexpr.cc:6041 cp/constexpr.cc:6177 cp/constexpr.cc:6189 -#: cp/constexpr.cc:9210 cp/constexpr.cc:9346 cp/constexpr.cc:11934 -#: cp/constexpr.cc:12999 rust/backend/rust-constexpr.cc:1787 +#: cp/constexpr.cc:6054 cp/constexpr.cc:6190 cp/constexpr.cc:6202 +#: cp/constexpr.cc:9243 cp/constexpr.cc:9379 cp/constexpr.cc:11976 +#: cp/constexpr.cc:13041 rust/backend/rust-constexpr.cc:1787 #: rust/backend/rust-constexpr.cc:2046 rust/backend/rust-constexpr.cc:2296 #: rust/backend/rust-constexpr.cc:4964 rust/backend/rust-constexpr.cc:5936 #, fuzzy, gcc-internal-format msgid "%qE is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:6049 rust/backend/rust-constexpr.cc:1793 +#: cp/constexpr.cc:6062 rust/backend/rust-constexpr.cc:1793 #, fuzzy, gcc-internal-format msgid "mutable %qD is not usable in a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:6083 cp/constexpr.cc:6120 cp/constexpr.cc:8155 +#: cp/constexpr.cc:6096 cp/constexpr.cc:6133 cp/constexpr.cc:8178 #: rust/backend/rust-constexpr.cc:1823 rust/backend/rust-constexpr.cc:1846 #, fuzzy, gcc-internal-format msgid "accessing uninitialized member %qD" msgstr "ĐżŃ€Đ°ĐżŃƒŃˆŃ‡Đ°Đœ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: cp/constexpr.cc:6085 +#: cp/constexpr.cc:6098 #, gcc-internal-format msgid "accessing %qD member instead of active %qD member in constant expression" msgstr "" -#: cp/constexpr.cc:6098 cp/constexpr.cc:8150 +#: cp/constexpr.cc:6111 cp/constexpr.cc:8173 #: rust/backend/rust-constexpr.cc:1825 #, gcc-internal-format msgid "accessing %qD member instead of initialized %qD member in constant expression" msgstr "" -#: cp/constexpr.cc:6255 +#: cp/constexpr.cc:6268 #, gcc-internal-format msgid "%qs is not a constant expression because %qT is a union type" msgstr "" -#: cp/constexpr.cc:6258 +#: cp/constexpr.cc:6271 #, gcc-internal-format msgid "%qs is not a constant expression because %qT contains a union type" msgstr "" -#: cp/constexpr.cc:6269 +#: cp/constexpr.cc:6282 #, gcc-internal-format msgid "%qs is not a constant expression because %qT is a pointer type" msgstr "" -#: cp/constexpr.cc:6272 +#: cp/constexpr.cc:6285 #, gcc-internal-format msgid "%qs is not a constant expression because %qT contains a pointer type" msgstr "" -#: cp/constexpr.cc:6283 +#: cp/constexpr.cc:6296 #, gcc-internal-format msgid "%qs is not a constant expression because %qT is a reference type" msgstr "" -#: cp/constexpr.cc:6286 +#: cp/constexpr.cc:6299 #, gcc-internal-format msgid "%qs is not a constant expression because %qT contains a reference type" msgstr "" -#: cp/constexpr.cc:6297 +#: cp/constexpr.cc:6310 #, gcc-internal-format msgid "%qs is not a constant expression because %qT is a pointer to member type" msgstr "" -#: cp/constexpr.cc:6301 +#: cp/constexpr.cc:6314 #, gcc-internal-format msgid "%qs is not a constant expression because %qT contains a pointer to member type" msgstr "" -#: cp/constexpr.cc:6312 +#: cp/constexpr.cc:6325 #, gcc-internal-format msgid "%qs is not a constant expression because %qT is volatile" msgstr "" -#: cp/constexpr.cc:6315 +#: cp/constexpr.cc:6328 #, gcc-internal-format msgid "%qs is not a constant expression because %qT contains a volatile subobject" msgstr "" -#: cp/constexpr.cc:6473 +#: cp/constexpr.cc:6486 #, gcc-internal-format msgid "%qs cannot be constant evaluated on the target" msgstr "" -#: cp/constexpr.cc:6482 cp/constexpr.cc:6492 +#: cp/constexpr.cc:6495 cp/constexpr.cc:6505 #, gcc-internal-format msgid "%qs cannot be constant evaluated because the type is too large" msgstr "" -#: cp/constexpr.cc:6512 +#: cp/constexpr.cc:6525 #, gcc-internal-format msgid "%qs cannot be constant evaluated because the argument cannot be encoded" msgstr "" -#: cp/constexpr.cc:6559 +#: cp/constexpr.cc:6572 #, gcc-internal-format msgid "%qs accessing uninitialized byte at offset %d" msgstr "" -#: cp/constexpr.cc:6571 +#: cp/constexpr.cc:6584 #, gcc-internal-format msgid "%qs cannot be constant evaluated because the argument cannot be interpreted" msgstr "" -#: cp/constexpr.cc:7505 +#: cp/constexpr.cc:7528 #, gcc-internal-format msgid "accessing value of %qT object through a %qT glvalue in a constant expression" msgstr "" -#: cp/constexpr.cc:7513 +#: cp/constexpr.cc:7536 #, gcc-internal-format msgid "%qT object created here" msgstr "" -#: cp/constexpr.cc:7516 cp/parser.cc:13134 cp/parser.cc:13145 -#: cp/reflect.cc:8548 cp/semantics.cc:4693 cp/semantics.cc:4709 +#: cp/constexpr.cc:7539 cp/parser.cc:13128 cp/parser.cc:13139 +#: cp/reflect.cc:9077 cp/semantics.cc:4714 cp/semantics.cc:4730 #, fuzzy, gcc-internal-format msgid "%q#D declared here" msgstr "\"%s\" ĐœĐ” абĐČĐ”ŃˆŃ‡Đ°Đœ (ĐżĐ”Ń€ŃˆĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” ў гэтаĐč Ń„ŃƒĐœĐșцыі)" #. Provide a more accurate message for deleted variables. -#: cp/constexpr.cc:7559 cp/constexpr.cc:7592 +#: cp/constexpr.cc:7582 cp/constexpr.cc:7615 #, fuzzy, gcc-internal-format msgid "use of allocated storage after deallocation in a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:7561 cp/constexpr.cc:7587 cp/constexpr.cc:7594 -#: cp/constexpr.cc:7959 cp/constexpr.cc:11030 cp/constexpr.cc:11043 +#: cp/constexpr.cc:7584 cp/constexpr.cc:7610 cp/constexpr.cc:7617 +#: cp/constexpr.cc:7982 cp/constexpr.cc:11072 cp/constexpr.cc:11085 #, fuzzy, gcc-internal-format #| msgid "called from here" msgid "allocated here" msgstr "ĐČыĐșліĐșĐ°ĐœĐ° Đ°ĐŽŃŃŽĐ»ŃŒ" -#: cp/constexpr.cc:7565 +#: cp/constexpr.cc:7588 #, gcc-internal-format msgid "accessing %qE outside its lifetime" msgstr "" -#: cp/constexpr.cc:7585 +#: cp/constexpr.cc:7608 #, fuzzy, gcc-internal-format msgid "the content of uninitialized storage is not usable in a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:7597 +#: cp/constexpr.cc:7620 #, fuzzy, gcc-internal-format msgid "the value of %qD is not usable in a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:7605 rust/backend/rust-constexpr.cc:4242 +#: cp/constexpr.cc:7628 rust/backend/rust-constexpr.cc:4242 #, fuzzy, gcc-internal-format #| msgid "invalid initializer" msgid "%qD used in its own initializer" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: cp/constexpr.cc:7610 +#: cp/constexpr.cc:7633 #, fuzzy, gcc-internal-format #| msgid "`%D' is not a function," msgid "%q#D is not const" msgstr "`%D' - гэта ĐœŃ Ń„ŃƒĐœĐșцыя," -#: cp/constexpr.cc:7613 +#: cp/constexpr.cc:7636 #, gcc-internal-format msgid "%q#D is volatile" msgstr "" -#: cp/constexpr.cc:7618 cp/constexpr.cc:7625 +#: cp/constexpr.cc:7641 cp/constexpr.cc:7648 #: rust/backend/rust-constexpr.cc:4248 rust/backend/rust-constexpr.cc:4256 #, fuzzy, gcc-internal-format msgid "%qD was not initialized with a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:7631 rust/backend/rust-constexpr.cc:4262 +#: cp/constexpr.cc:7654 rust/backend/rust-constexpr.cc:4262 #, fuzzy, gcc-internal-format msgid "%qD was not declared %" msgstr "\"%s\" ĐœĐ” абĐČĐ”ŃˆŃ‡Đ°Đœ (ĐżĐ”Ń€ŃˆĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” ў гэтаĐč Ń„ŃƒĐœĐșцыі)" -#: cp/constexpr.cc:7634 rust/backend/rust-constexpr.cc:4266 +#: cp/constexpr.cc:7657 rust/backend/rust-constexpr.cc:4266 #, gcc-internal-format msgid "%qD does not have integral or enumeration type" msgstr "" -#: cp/constexpr.cc:7957 +#: cp/constexpr.cc:7980 #, gcc-internal-format msgid "modification of allocated storage after deallocation is not a constant expression" msgstr "" -#: cp/constexpr.cc:7966 +#: cp/constexpr.cc:7989 #, gcc-internal-format msgid "modification of %qE outside its lifetime is not a constant expression" msgstr "" -#: cp/constexpr.cc:7973 +#: cp/constexpr.cc:7996 #, gcc-internal-format msgid "destroying %qE from outside current evaluation is not a constant expression" msgstr "" -#: cp/constexpr.cc:7976 +#: cp/constexpr.cc:7999 #, gcc-internal-format msgid "modification of %qE from outside current evaluation is not a constant expression" msgstr "" -#: cp/constexpr.cc:8128 +#: cp/constexpr.cc:8151 #, gcc-internal-format msgid "change of the active member of a union from %qD to %qD is not a constant expression before C++20" msgstr "" -#: cp/constexpr.cc:8159 +#: cp/constexpr.cc:8182 #, gcc-internal-format msgid "%qD does not implicitly begin its lifetime because %qT does not have a non-deleted trivial default constructor, use % instead" msgstr "" -#: cp/constexpr.cc:8166 +#: cp/constexpr.cc:8189 #, gcc-internal-format msgid "initializing %qD requires a member access expression as the left operand of the assignment" msgstr "" -#: cp/constexpr.cc:8178 rust/backend/rust-constexpr.cc:2906 +#: cp/constexpr.cc:8201 rust/backend/rust-constexpr.cc:2906 #, gcc-internal-format msgid "change of the active member of a union from %qD to %qD during initialization" msgstr "" -#: cp/constexpr.cc:8838 rust/backend/rust-constexpr.cc:5154 +#: cp/constexpr.cc:8871 rust/backend/rust-constexpr.cc:5154 #, gcc-internal-format msgid "% loop iteration count exceeds limit of %d (use %<-fconstexpr-loop-limit=%> to increase the limit)" msgstr "" -#: cp/constexpr.cc:8951 rust/backend/rust-constexpr.cc:1041 +#: cp/constexpr.cc:8984 rust/backend/rust-constexpr.cc:1041 #, fuzzy, gcc-internal-format msgid "inline assembly is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:8953 rust/backend/rust-constexpr.cc:1042 +#: cp/constexpr.cc:8986 rust/backend/rust-constexpr.cc:1042 #, gcc-internal-format msgid "only unevaluated inline assembly is allowed in a % function in C++20" msgstr "" -#: cp/constexpr.cc:8972 +#: cp/constexpr.cc:9005 #, fuzzy, gcc-internal-format #| msgid "invalid use of `%D'" msgid "use of %qD" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœŃŒĐœĐ” `%D'" -#: cp/constexpr.cc:8976 +#: cp/constexpr.cc:9009 #, gcc-internal-format msgid "its value can vary between compiler versions or with different %<-mtune%> or %<-mcpu%> flags" msgstr "" -#: cp/constexpr.cc:8978 +#: cp/constexpr.cc:9011 #, gcc-internal-format msgid "if this use is part of a public ABI, change it to instead use a constant variable you define" msgstr "" -#: cp/constexpr.cc:8980 +#: cp/constexpr.cc:9013 #, gcc-internal-format, gfc-internal-format msgid "the default value for the current CPU tuning is %d bytes" msgstr "" -#: cp/constexpr.cc:8982 +#: cp/constexpr.cc:9015 #, gcc-internal-format msgid "you can stabilize this value with %<--param hardware_destructive_interference_size=%d%>, or disable this warning with %<-Wno-interference-size%>" msgstr "" -#: cp/constexpr.cc:9094 +#: cp/constexpr.cc:9127 #, fuzzy, gcc-internal-format msgid "destructor exited with an exception" msgstr "\"%s\" ĐœĐ” абĐČĐ”ŃˆŃ‡Đ°Đœ (ĐżĐ”Ń€ŃˆĐ°Đ” ĐČыĐșĐ°Ń€Ń‹ŃŃ‚Đ°ĐœĐœĐ” ў гэтаĐč Ń„ŃƒĐœĐșцыі)" -#: cp/constexpr.cc:9172 +#: cp/constexpr.cc:9205 #, fuzzy, gcc-internal-format msgid "value %qE of type %qT is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:9185 +#: cp/constexpr.cc:9218 #, gcc-internal-format msgid "% evaluation operation count exceeds limit of %wd (use %<-fconstexpr-ops-limit=%> to increase the limit)" msgstr "" -#: cp/constexpr.cc:9376 +#: cp/constexpr.cc:9409 #, gcc-internal-format msgid "control passes through definition of %qD with thread storage duration" msgstr "" -#: cp/constexpr.cc:9379 +#: cp/constexpr.cc:9412 #, gcc-internal-format msgid "control passes through definition of %qD with static storage duration" msgstr "" -#: cp/constexpr.cc:9447 cp/constexpr.cc:12692 +#: cp/constexpr.cc:9480 cp/constexpr.cc:12734 #: rust/backend/rust-constexpr.cc:2121 rust/backend/rust-constexpr.cc:6430 #, fuzzy, gcc-internal-format msgid "temporary of non-literal type %qT in a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:9672 +#: cp/constexpr.cc:9714 #, gcc-internal-format msgid "uncaught exception exited from % function %qD" msgstr "" -#: cp/constexpr.cc:9676 +#: cp/constexpr.cc:9718 #, gcc-internal-format msgid "destructor exited with an exception after initializing the exception object" msgstr "" -#: cp/constexpr.cc:9679 +#: cp/constexpr.cc:9721 #, gcc-internal-format msgid "constructor exited with another exception while entering handler" msgstr "" -#: cp/constexpr.cc:10055 cp/constexpr.cc:12162 +#: cp/constexpr.cc:10097 cp/constexpr.cc:12204 #, fuzzy, gcc-internal-format msgid "% is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:10089 rust/backend/rust-constexpr.cc:2543 +#: cp/constexpr.cc:10131 rust/backend/rust-constexpr.cc:2543 #, gcc-internal-format msgid "conversion from pointer type %qT to arithmetic type %qT in a constant expression" msgstr "" -#: cp/constexpr.cc:10144 +#: cp/constexpr.cc:10186 #, gcc-internal-format msgid "cast from %qT is not allowed in a constant expression because pointed-to type %qT is not similar to %qT" msgstr "" -#: cp/constexpr.cc:10154 +#: cp/constexpr.cc:10196 #, gcc-internal-format msgid "pointed-to object declared here" msgstr "" -#: cp/constexpr.cc:10162 +#: cp/constexpr.cc:10204 #, fuzzy, gcc-internal-format msgid "cast from %qT is not allowed in a constant expression before C++26" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:10176 +#: cp/constexpr.cc:10218 #, gcc-internal-format msgid "%qE is not a constant expression when the class %qT is still incomplete" msgstr "" -#: cp/constexpr.cc:10216 rust/backend/rust-constexpr.cc:2588 +#: cp/constexpr.cc:10258 rust/backend/rust-constexpr.cc:2588 #, gcc-internal-format msgid "%(%E)%> is not a constant expression" msgstr "" -#: cp/constexpr.cc:10375 cp/constexpr.cc:12471 cp/constexpr.cc:12920 +#: cp/constexpr.cc:10417 cp/constexpr.cc:12513 cp/constexpr.cc:12962 #: rust/backend/rust-constexpr.cc:6324 rust/backend/rust-constexpr.cc:6644 #, fuzzy, gcc-internal-format msgid "expression %qE is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:10424 cp/constexpr.cc:12964 +#: cp/constexpr.cc:10466 cp/constexpr.cc:13006 #, fuzzy, gcc-internal-format msgid "% is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:10545 +#: cp/constexpr.cc:10587 #, fuzzy, gcc-internal-format msgid "address of a call to %qs is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:10595 cp/constexpr.cc:10607 +#: cp/constexpr.cc:10637 cp/constexpr.cc:10649 #: rust/backend/rust-constexpr.cc:4889 #, fuzzy, gcc-internal-format msgid "statement is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:10610 +#: cp/constexpr.cc:10652 #, gcc-internal-format msgid "unexpected expression %qE of kind %s" msgstr "" -#: cp/constexpr.cc:10628 +#: cp/constexpr.cc:10670 #, gcc-internal-format msgid "%qE accesses an object outside its lifetime" msgstr "" -#: cp/constexpr.cc:10772 +#: cp/constexpr.cc:10814 #, gcc-internal-format msgid "contract condition is not constant" msgstr "" -#: cp/constexpr.cc:10778 +#: cp/constexpr.cc:10820 #, gcc-internal-format msgid "contract predicate is false in constant expression" msgstr "" -#: cp/constexpr.cc:10963 +#: cp/constexpr.cc:11005 #, gcc-internal-format msgid "% outside of a loop or %" msgstr "" -#: cp/constexpr.cc:10965 +#: cp/constexpr.cc:11007 #, gcc-internal-format msgid "% outside of a loop" msgstr "" -#: cp/constexpr.cc:10967 +#: cp/constexpr.cc:11009 #, gcc-internal-format msgid "% in a statement expression" msgstr "" -#: cp/constexpr.cc:11008 rust/backend/rust-constexpr.cc:5382 +#: cp/constexpr.cc:11050 rust/backend/rust-constexpr.cc:5382 #, gcc-internal-format msgid "%qE is not a constant expression because it refers to mutable subobjects of %qT" msgstr "" -#: cp/constexpr.cc:11024 +#: cp/constexpr.cc:11066 #, gcc-internal-format msgid "%qE is not a constant expression because it refers to exception object allocated with %<__cxa_allocate_exception%>" msgstr "" -#: cp/constexpr.cc:11028 rust/backend/rust-constexpr.cc:5407 +#: cp/constexpr.cc:11070 rust/backend/rust-constexpr.cc:5407 #, gcc-internal-format msgid "%qE is not a constant expression because it refers to a result of %" msgstr "" -#: cp/constexpr.cc:11041 rust/backend/rust-constexpr.cc:5419 +#: cp/constexpr.cc:11083 rust/backend/rust-constexpr.cc:5419 #, gcc-internal-format msgid "%qE is not a constant expression because allocated storage has not been deallocated" msgstr "" -#: cp/constexpr.cc:11062 rust/backend/rust-constexpr.cc:5437 +#: cp/constexpr.cc:11104 rust/backend/rust-constexpr.cc:5437 #, gcc-internal-format msgid "immediate evaluation returns address of immediate function %qD" msgstr "" -#: cp/constexpr.cc:11066 +#: cp/constexpr.cc:11108 #, gcc-internal-format msgid "constant evaluation returns address of immediate function %qD" msgstr "" -#: cp/constexpr.cc:11091 +#: cp/constexpr.cc:11133 #, gcc-internal-format msgid "reference into an object of consteval-only type is not a constant expression unless it also has consteval-only type" msgstr "" -#: cp/constexpr.cc:11096 +#: cp/constexpr.cc:11138 #, gcc-internal-format msgid "pointer into an object of consteval-only type is not a constant expression unless it also has consteval-only type" msgstr "" -#: cp/constexpr.cc:11112 rust/backend/rust-constexpr.cc:5391 +#: cp/constexpr.cc:11154 rust/backend/rust-constexpr.cc:5391 #, gcc-internal-format msgid "%qE is not a constant expression because it refers to an incompletely initialized variable" msgstr "" -#: cp/constexpr.cc:11163 +#: cp/constexpr.cc:11205 #, gcc-internal-format msgid "%qE is not a constant expression because it initializes a %qT rather than %qT" msgstr "" -#: cp/constexpr.cc:11870 rust/backend/rust-constexpr.cc:5891 +#: cp/constexpr.cc:11912 rust/backend/rust-constexpr.cc:5891 #, gcc-internal-format msgid "lvalue-to-rvalue conversion of a volatile lvalue %qE with type %qT" msgstr "" -#: cp/constexpr.cc:12124 +#: cp/constexpr.cc:12166 #, fuzzy, gcc-internal-format msgid "lambda capture of %qE is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:12127 +#: cp/constexpr.cc:12169 #, gcc-internal-format msgid "because it is used as a glvalue" msgstr "" -#: cp/constexpr.cc:12183 rust/backend/rust-constexpr.cc:6117 +#: cp/constexpr.cc:12225 rust/backend/rust-constexpr.cc:6117 #, gcc-internal-format msgid "% from integer to pointer" msgstr "" -#: cp/constexpr.cc:12217 rust/backend/rust-constexpr.cc:6144 +#: cp/constexpr.cc:12259 rust/backend/rust-constexpr.cc:6144 #, gcc-internal-format msgid "address-of an object %qE with thread local or automatic storage is not a constant expression" msgstr "" -#: cp/constexpr.cc:12407 +#: cp/constexpr.cc:12449 #, gcc-internal-format msgid "lambda-expression is not a constant expression before C++17" msgstr "" -#: cp/constexpr.cc:12419 +#: cp/constexpr.cc:12461 #, gcc-internal-format msgid "new-expression is not a constant expression before C++20" msgstr "" -#: cp/constexpr.cc:12495 +#: cp/constexpr.cc:12537 #, fuzzy, gcc-internal-format #| msgid "virtual functions cannot be friends" msgid "virtual functions cannot be % before C++20" msgstr "ĐČŃ–Ń€Ń‚ŃƒĐ°Đ»ŃŒĐœŃ‹Ń Ń„ŃƒĐœĐșцыі ĐœĐ” ĐŒĐŸĐłŃƒŃ†ŃŒ Đ±Ń‹Ń†ŃŒ ŃŃĐ±Ń€ĐŸŃžŃĐșŃ–ĐŒŃ–" -#: cp/constexpr.cc:12512 +#: cp/constexpr.cc:12554 #, gcc-internal-format msgid "% is not a constant expression because %qE is of polymorphic type" msgstr "" -#: cp/constexpr.cc:12576 +#: cp/constexpr.cc:12618 #, fuzzy, gcc-internal-format msgid "cast to non-integral type %qT in a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:12650 +#: cp/constexpr.cc:12692 #, gcc-internal-format msgid "%qD defined % in % context" msgstr "" -#: cp/constexpr.cc:12658 +#: cp/constexpr.cc:12700 #, gcc-internal-format msgid "%qD defined % in % context" msgstr "" -#: cp/constexpr.cc:12744 rust/backend/rust-constexpr.cc:6478 +#: cp/constexpr.cc:12786 rust/backend/rust-constexpr.cc:6478 #, fuzzy, gcc-internal-format msgid "division by zero is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:12845 rust/backend/rust-constexpr.cc:6578 +#: cp/constexpr.cc:12887 rust/backend/rust-constexpr.cc:6578 #, fuzzy, gcc-internal-format msgid "% is not a constant expression" msgstr "ĐżĐ°ĐŒĐ”Ń€ ĐŒĐ°ŃŃ–ĐČа \"%s\" Đ°ĐŽĐŒĐŸŃžĐœŃ‹" -#: cp/constexpr.cc:12917 +#: cp/constexpr.cc:12959 #, gcc-internal-format msgid "neither branch of % is a constant expression" msgstr "" -#: cp/constexpr.cc:12930 +#: cp/constexpr.cc:12972 #, fuzzy, gcc-internal-format msgid "non-constant array initialization" msgstr "ĐœĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń‚Đ°Ń€" -#: cp/constexpr.cc:12981 +#: cp/constexpr.cc:13023 #, gcc-internal-format msgid "label definition in % function only available with %<-std=c++23%> or %<-std=gnu++23%>" msgstr "" -#: cp/constexpr.cc:13026 rust/backend/rust-constexpr.cc:6667 +#: cp/constexpr.cc:13068 rust/backend/rust-constexpr.cc:6667 #, gcc-internal-format, gfc-internal-format msgid "unexpected AST of kind %s" msgstr "" @@ -58500,354 +58548,354 @@ msgstr "" msgid "the operand %qE is unsatisfied because" msgstr "" -#: cp/constraint.cc:3147 +#: cp/constraint.cc:3152 #, gcc-internal-format msgid "%qT is not nothrow copy assignable" msgstr "" -#: cp/constraint.cc:3150 +#: cp/constraint.cc:3155 #, gcc-internal-format msgid "%qT is not nothrow default constructible" msgstr "" -#: cp/constraint.cc:3153 +#: cp/constraint.cc:3158 #, gcc-internal-format msgid "%qT is not nothrow copy constructible" msgstr "" -#: cp/constraint.cc:3156 +#: cp/constraint.cc:3161 #, gcc-internal-format msgid "%qT is not trivially copy assignable" msgstr "" -#: cp/constraint.cc:3159 +#: cp/constraint.cc:3164 #, gcc-internal-format msgid "%qT is not trivially default constructible" msgstr "" -#: cp/constraint.cc:3162 +#: cp/constraint.cc:3167 #, gcc-internal-format msgid "%qT is not trivially copy constructible" msgstr "" -#: cp/constraint.cc:3165 +#: cp/constraint.cc:3170 #, gcc-internal-format msgid "%qT is not trivially destructible" msgstr "" -#: cp/constraint.cc:3168 +#: cp/constraint.cc:3173 #, gcc-internal-format msgid "%qT does not have unique object representations, because" msgstr "" -#: cp/constraint.cc:3178 +#: cp/constraint.cc:3183 #, gcc-internal-format msgid "%qT does not have a virtual destructor" msgstr "" -#: cp/constraint.cc:3182 +#: cp/constraint.cc:3187 #, fuzzy, gcc-internal-format msgid "%qT is not an abstract class" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3185 +#: cp/constraint.cc:3190 #, fuzzy, gcc-internal-format msgid "%qT is not an aggregate" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3188 +#: cp/constraint.cc:3193 #, fuzzy, gcc-internal-format msgid "%qT is not an array" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3191 +#: cp/constraint.cc:3196 #, gcc-internal-format msgid "%qT is not assignable from %qT, because" msgstr "" -#: cp/constraint.cc:3195 cp/semantics.cc:13521 cp/typeck.cc:3701 +#: cp/constraint.cc:3200 cp/semantics.cc:13542 cp/typeck.cc:3701 #, gcc-internal-format msgid "%qT is not a base of %qT" msgstr "" -#: cp/constraint.cc:3198 +#: cp/constraint.cc:3203 #, fuzzy, gcc-internal-format msgid "%qT is not a bounded array" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3201 +#: cp/constraint.cc:3206 #, fuzzy, gcc-internal-format msgid "%qT is not a class" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3204 +#: cp/constraint.cc:3209 #, fuzzy, gcc-internal-format msgid "%qT is not a const type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3208 +#: cp/constraint.cc:3213 #, gcc-internal-format msgid "%qT is not default constructible, because" msgstr "" -#: cp/constraint.cc:3210 +#: cp/constraint.cc:3215 #, gcc-internal-format msgid "%qT is not constructible from %qT, because" msgstr "" -#: cp/constraint.cc:3219 +#: cp/constraint.cc:3224 #, gcc-internal-format msgid "%qT is not destructible, because" msgstr "" -#: cp/constraint.cc:3223 +#: cp/constraint.cc:3228 #, fuzzy, gcc-internal-format msgid "%qT is not an empty class" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3226 +#: cp/constraint.cc:3231 #, fuzzy, gcc-internal-format msgid "%qT is not an enum" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3229 +#: cp/constraint.cc:3234 #, fuzzy, gcc-internal-format msgid "%qT is not a final class" msgstr "\"%s\" - гэта ĐœĐ” пачатаĐș ЮэĐșларацыі" -#: cp/constraint.cc:3232 +#: cp/constraint.cc:3237 #, fuzzy, gcc-internal-format #| msgid "`%D' is not a function," msgid "%qT is not a function" msgstr "`%D' - гэта ĐœŃ Ń„ŃƒĐœĐșцыя," -#: cp/constraint.cc:3235 +#: cp/constraint.cc:3240 #, fuzzy, gcc-internal-format msgid "%qT is not an implicit-lifetime type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3240 +#: cp/constraint.cc:3245 #, gcc-internal-format msgid "%qT is not invocable, because" msgstr "" -#: cp/constraint.cc:3242 +#: cp/constraint.cc:3247 #, gcc-internal-format msgid "%qT is not invocable by %qT, because" msgstr "" -#: cp/constraint.cc:3247 +#: cp/constraint.cc:3252 #, gcc-internal-format msgid "%qT is not layout compatible with %qT, because" msgstr "" -#: cp/constraint.cc:3251 +#: cp/constraint.cc:3256 #, fuzzy, gcc-internal-format msgid "%qT is not a literal type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3254 +#: cp/constraint.cc:3259 #, fuzzy, gcc-internal-format msgid "%qT is not a member function pointer" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" -#: cp/constraint.cc:3257 +#: cp/constraint.cc:3262 #, fuzzy, gcc-internal-format msgid "%qT is not a member object pointer" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3260 +#: cp/constraint.cc:3265 #, fuzzy, gcc-internal-format msgid "%qT is not a member pointer" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3263 +#: cp/constraint.cc:3268 #, gcc-internal-format msgid "%qT is not nothrow assignable from %qT, because" msgstr "" -#: cp/constraint.cc:3268 +#: cp/constraint.cc:3273 #, gcc-internal-format msgid "%qT is not nothrow default constructible, because" msgstr "" -#: cp/constraint.cc:3270 +#: cp/constraint.cc:3275 #, gcc-internal-format msgid "%qT is not nothrow constructible from %qT, because" msgstr "" -#: cp/constraint.cc:3275 +#: cp/constraint.cc:3280 #, gcc-internal-format msgid "%qT is not nothrow convertible from %qT, because" msgstr "" -#: cp/constraint.cc:3279 +#: cp/constraint.cc:3284 #, gcc-internal-format msgid "%qT is not nothrow destructible, because" msgstr "" -#: cp/constraint.cc:3285 +#: cp/constraint.cc:3290 #, gcc-internal-format msgid "%qT is not nothrow invocable, because" msgstr "" -#: cp/constraint.cc:3287 +#: cp/constraint.cc:3292 #, gcc-internal-format msgid "%qT is not nothrow invocable by %qT, because" msgstr "" -#: cp/constraint.cc:3294 +#: cp/constraint.cc:3299 #, fuzzy, gcc-internal-format msgid "%qT is not an object type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3298 +#: cp/constraint.cc:3303 #, gcc-internal-format msgid "%qT is not a pointer-interconvertible base of %qT, because" msgstr "" -#: cp/constraint.cc:3303 +#: cp/constraint.cc:3308 #, fuzzy, gcc-internal-format msgid "%qT is not a POD type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3306 +#: cp/constraint.cc:3311 #, fuzzy, gcc-internal-format msgid "%qT is not a pointer" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3309 +#: cp/constraint.cc:3314 #, fuzzy, gcc-internal-format msgid "%qT is not a polymorphic type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3312 +#: cp/constraint.cc:3317 #, fuzzy, gcc-internal-format msgid "%qT is not a reference" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3315 +#: cp/constraint.cc:3320 #, gcc-internal-format msgid "%q#T is not the same as %q#T" msgstr "" -#: cp/constraint.cc:3318 +#: cp/constraint.cc:3323 #, fuzzy, gcc-internal-format msgid "%qT is not a scoped enum" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3321 +#: cp/constraint.cc:3326 #, fuzzy, gcc-internal-format msgid "%qT is not a standard layout type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3324 +#: cp/constraint.cc:3329 #, fuzzy, gcc-internal-format msgid "%qT is not a trivial type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3327 +#: cp/constraint.cc:3332 #, gcc-internal-format msgid "%qT is not trivially assignable from %qT, because" msgstr "" -#: cp/constraint.cc:3332 +#: cp/constraint.cc:3337 #, gcc-internal-format msgid "%qT is not trivially default constructible, because" msgstr "" -#: cp/constraint.cc:3334 +#: cp/constraint.cc:3339 #, gcc-internal-format msgid "%qT is not trivially constructible from %qT, because" msgstr "" -#: cp/constraint.cc:3339 cp/tree.cc:5014 +#: cp/constraint.cc:3344 cp/tree.cc:5031 #, gcc-internal-format msgid "%qT is not trivially copyable" msgstr "" -#: cp/constraint.cc:3342 +#: cp/constraint.cc:3347 #, gcc-internal-format msgid "%qT is not trivially destructible, because" msgstr "" -#: cp/constraint.cc:3346 +#: cp/constraint.cc:3351 #, gcc-internal-format msgid "%qT is not an unbounded array" msgstr "" -#: cp/constraint.cc:3349 +#: cp/constraint.cc:3354 #, fuzzy, gcc-internal-format #| msgid "`%D' is not a function," msgid "%qT is not a union" msgstr "`%D' - гэта ĐœŃ Ń„ŃƒĐœĐșцыя," -#: cp/constraint.cc:3352 +#: cp/constraint.cc:3357 #, gcc-internal-format msgid "%qT is not a virtual base of %qT" msgstr "" -#: cp/constraint.cc:3355 +#: cp/constraint.cc:3360 #, fuzzy, gcc-internal-format msgid "%qT is not a volatile type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3358 -#, gcc-internal-format -msgid "%qT is not consteval-only" -msgstr "" +#: cp/constraint.cc:3363 +#, fuzzy, gcc-internal-format +msgid "%qT is not a structural type" +msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/constraint.cc:3361 +#: cp/constraint.cc:3367 #, gcc-internal-format msgid "%qT cannot yield a rank" msgstr "" -#: cp/constraint.cc:3364 +#: cp/constraint.cc:3370 #, gcc-internal-format msgid "%qT and %qT cannot be ordered" msgstr "" -#: cp/constraint.cc:3367 +#: cp/constraint.cc:3373 #, gcc-internal-format msgid "%qT is not destructurable" msgstr "" -#: cp/constraint.cc:3370 +#: cp/constraint.cc:3376 #, gcc-internal-format msgid "%qT is not a reference that binds to a temporary object of type %qT (direct-initialization)" msgstr "" -#: cp/constraint.cc:3374 +#: cp/constraint.cc:3380 #, gcc-internal-format msgid "%qT is not a reference that binds to a temporary object of type %qT (copy-initialization)" msgstr "" -#: cp/constraint.cc:3378 +#: cp/constraint.cc:3384 #, gcc-internal-format msgid "%qD is not deducible from %qT" msgstr "" -#: cp/constraint.cc:3445 +#: cp/constraint.cc:3451 #, fuzzy, gcc-internal-format msgid "invalid constraints" msgstr "ĐĐ”Ń€ŃŃ‡Đ°Ń–ŃĐœŃ‹ ĐČыбар %s" -#: cp/constraint.cc:3466 +#: cp/constraint.cc:3472 #, gcc-internal-format msgid "constraint %qE has type %qT, not %" msgstr "" -#: cp/constraint.cc:3470 +#: cp/constraint.cc:3476 #, gcc-internal-format msgid "the expression %qE evaluated to %" msgstr "" -#: cp/constraint.cc:3525 +#: cp/constraint.cc:3531 #, gcc-internal-format msgid "constraints not satisfied" msgstr "" -#: cp/constraint.cc:3542 +#: cp/constraint.cc:3548 #, gcc-internal-format msgid "set %qs to at least %d for more detail" msgstr "" @@ -58878,50 +58926,50 @@ msgstr "" msgid "previous declaration with fewer contracts here" msgstr "ĐœŃĐŒĐ° ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐłĐ° аб'ŃŃžĐ»Đ”ĐœĐœŃ ĐŽĐ»Ń \"%s\"" -#: cp/contracts.cc:562 +#: cp/contracts.cc:564 #, gcc-internal-format msgid "a value parameter used in a postcondition must be const" msgstr "" -#: cp/contracts.cc:563 cp/contracts.cc:1039 +#: cp/contracts.cc:565 cp/contracts.cc:1041 #, fuzzy, gcc-internal-format msgid "parameter declared here" msgstr "тып ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đ° \"%s\" ĐœĐ” аб'ŃŃžĐ»Đ”ĐœŃ‹" -#: cp/contracts.cc:593 +#: cp/contracts.cc:595 #, gcc-internal-format msgid "value parameter %qE used in a postcondition must be const" msgstr "" -#: cp/contracts.cc:1036 +#: cp/contracts.cc:1038 #, gcc-internal-format msgid "contract postcondition result name shadows a function parameter" msgstr "" -#: cp/contracts.cc:1660 +#: cp/contracts.cc:1674 #, fuzzy, gcc-internal-format #| msgid "declaration of template `%#D'" msgid "declaration adds contracts to %q#D" msgstr "абĐČŃŃˆŃ‡ŃĐœŃŒĐœĐ” ŃˆĐ°Đ±Đ»Ń‘ĐœŃƒ `%#D'" -#: cp/contracts.cc:1661 +#: cp/contracts.cc:1675 #, gcc-internal-format msgid "first declared here" msgstr "" -#: cp/contracts.cc:1922 +#: cp/contracts.cc:1936 #, fuzzy, gcc-internal-format #| msgid "function does not return string type" msgid "constructor does not return a value to test" msgstr "Ń„ŃƒĐœĐșцыя ĐœĐ” ĐČŃŃ€Ń‚Đ°Đ” тып string" -#: cp/contracts.cc:1924 +#: cp/contracts.cc:1938 #, fuzzy, gcc-internal-format #| msgid "function does not return string type" msgid "destructor does not return a value to test" msgstr "Ń„ŃƒĐœĐșцыя ĐœĐ” ĐČŃŃ€Ń‚Đ°Đ” тып string" -#: cp/contracts.cc:1925 +#: cp/contracts.cc:1939 #, fuzzy, gcc-internal-format #| msgid "function does not return string type" msgid "function does not return a value to test" @@ -58993,7 +59041,7 @@ msgstr "" msgid "% declared here" msgstr "" -#: cp/coroutines.cc:1039 cp/coroutines.cc:1117 cp/coroutines.cc:4732 +#: cp/coroutines.cc:1039 cp/coroutines.cc:1117 cp/coroutines.cc:4747 #, gcc-internal-format msgid "no member named %qE in %qT" msgstr "" @@ -59065,84 +59113,84 @@ msgstr "" msgid "awaitable type %qT is not a structure" msgstr "" -#: cp/coroutines.cc:1500 +#: cp/coroutines.cc:1503 #, gcc-internal-format msgid "% must return %, % or a coroutine handle" msgstr "" -#: cp/coroutines.cc:1592 cp/coroutines.cc:1678 +#: cp/coroutines.cc:1595 cp/coroutines.cc:1681 #, fuzzy, gcc-internal-format msgid "%qs cannot be used in an unevaluated context" msgstr "\"%s\" Đ·ĐČычаĐčĐœĐ° Ń„ŃƒĐœĐșцыя" -#: cp/coroutines.cc:1861 +#: cp/coroutines.cc:1864 #, gcc-internal-format msgid "function declared % has a % statement" msgstr "" -#: cp/coroutines.cc:1898 +#: cp/coroutines.cc:1901 #, fuzzy, gcc-internal-format msgid "the align argument to %<__builtin_coro_promise%> must be a constant" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: cp/coroutines.cc:1908 +#: cp/coroutines.cc:1911 #, fuzzy, gcc-internal-format msgid "the direction argument to %<__builtin_coro_promise%> must be a constant" msgstr "Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚ `__builtin_args_info' паĐČŃ–ĐœĐ”Đœ Đ±Ń‹Ń†ŃŒ ĐșĐ°ĐœŃŃ‚Đ°ĐœŃ‚Đ°Đč" -#: cp/coroutines.cc:2412 +#: cp/coroutines.cc:2426 #, gcc-internal-format msgid "no suspend point info for %qD" msgstr "" -#: cp/coroutines.cc:2984 +#: cp/coroutines.cc:2999 #, fuzzy, gcc-internal-format #| msgid "duplicate `%s'" msgid "duplicate info for %qE" msgstr "ĐżĐ°ŃžŃ‚Đ°Ń€ŃĐœŃŒĐœĐ” `%s'" -#: cp/coroutines.cc:3642 +#: cp/coroutines.cc:3657 #, gcc-internal-format msgid "assumption ignored because it contains an await-expression" msgstr "" -#: cp/coroutines.cc:4149 +#: cp/coroutines.cc:4164 #, gcc-internal-format msgid "await expressions are not permitted in handlers" msgstr "" -#: cp/coroutines.cc:4366 +#: cp/coroutines.cc:4381 #, gcc-internal-format msgid "variable length arrays are not yet supported in coroutines" msgstr "" -#: cp/coroutines.cc:4885 +#: cp/coroutines.cc:4900 #, gcc-internal-format msgid "%qE is provided by %qT but is not usable with the function signature %qD" msgstr "" -#: cp/coroutines.cc:4892 +#: cp/coroutines.cc:4907 #, gcc-internal-format msgid "%qE is provided by %qT but %qE is not marked % or %" msgstr "" -#: cp/coroutines.cc:4897 +#: cp/coroutines.cc:4912 #, gcc-internal-format msgid "%qE is marked % or % but no usable % is provided by %qT" msgstr "" #. Something is seriously wrong, punt. -#: cp/coroutines.cc:4928 +#: cp/coroutines.cc:4943 #, gcc-internal-format msgid "%qE is provided by %qT but % cannot be found" msgstr "" -#: cp/coroutines.cc:5024 +#: cp/coroutines.cc:5039 #, gcc-internal-format msgid "%qE is provided by %qT but is not usable with the function %qD" msgstr "" -#: cp/coroutines.cc:5298 +#: cp/coroutines.cc:5332 #, gcc-internal-format msgid "no viable conversion from % provided by % to return type %qT" msgstr "" @@ -59167,68 +59215,73 @@ msgstr "" msgid "%qs used outside of constant expressions" msgstr "" -#: cp/cp-gimplify.cc:1291 +#: cp/cp-gimplify.cc:999 +#, gcc-internal-format +msgid "unexpected % declaration" +msgstr "" + +#: cp/cp-gimplify.cc:1317 #, gcc-internal-format msgid "taking address of an immediate function %qD" msgstr "" -#: cp/cp-gimplify.cc:1472 +#: cp/cp-gimplify.cc:1498 #, gcc-internal-format msgid "call to consteval function %qE is not a constant expression" msgstr "" -#: cp/cp-gimplify.cc:2311 +#: cp/cp-gimplify.cc:2337 #, gcc-internal-format msgid "% will always call %" msgstr "" -#: cp/cp-gimplify.cc:2314 +#: cp/cp-gimplify.cc:2340 #, gcc-internal-format msgid "in C++11 destructors default to %" msgstr "" -#: cp/cp-gimplify.cc:2326 +#: cp/cp-gimplify.cc:2352 #, gcc-internal-format msgid "in C++11 this % will call % because destructors default to %" msgstr "" -#: cp/cp-gimplify.cc:4061 +#: cp/cp-gimplify.cc:4087 #, gcc-internal-format msgid "ignoring attribute %qE after earlier %qE" msgstr "" -#: cp/cp-gimplify.cc:4104 +#: cp/cp-gimplify.cc:4130 #, gcc-internal-format msgid "pack expansion of %qE attribute" msgstr "" -#: cp/cp-gimplify.cc:4107 +#: cp/cp-gimplify.cc:4133 #, gcc-internal-format msgid "use fold expression in the attribute argument instead" msgstr "" -#: cp/cp-gimplify.cc:4146 cp/cp-gimplify.cc:4158 cp/decl.cc:5053 +#: cp/cp-gimplify.cc:4172 cp/cp-gimplify.cc:4184 cp/decl.cc:5053 #: cp/method.cc:991 #, fuzzy, gcc-internal-format msgid "%qD is not a type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/cp-gimplify.cc:4164 +#: cp/cp-gimplify.cc:4190 #, fuzzy, gcc-internal-format msgid "%qD is not a class type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/cp-gimplify.cc:4181 +#: cp/cp-gimplify.cc:4207 #, gcc-internal-format msgid "%qD does not have % type" msgstr "" -#: cp/cp-gimplify.cc:4191 +#: cp/cp-gimplify.cc:4217 #, fuzzy, gcc-internal-format msgid "%qD does not have integral type" msgstr "\"%s\" ĐŒĐ°Đ” ĐœĐ”Đ·Đ°ĐČĐ”Ń€ŃˆĐ°ĐœŃ‹ тып" -#: cp/cp-gimplify.cc:4203 +#: cp/cp-gimplify.cc:4229 #, gcc-internal-format msgid "% does not contain only non-static data members %<_M_file_name%>, %<_M_function_name%>, %<_M_line%> and %<_M_column%>" msgstr "" @@ -59270,7 +59323,7 @@ msgstr "" msgid "conversion from %qH to %qI discards qualifiers" msgstr "" -#: cp/cvt.cc:499 cp/typeck.cc:9185 +#: cp/cvt.cc:499 cp/typeck.cc:9183 #, gcc-internal-format msgid "casting %qT to %qT does not dereference pointer" msgstr "" @@ -59664,7 +59717,7 @@ msgstr "ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐ” абĐČŃŃˆŃ‡ŃĐœŃŒĐœĐ” `%D'" msgid "redeclaration %qD differs in %qs from previous declaration" msgstr "гэта ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐ” абĐČŃŃˆŃ‡ŃĐœŃŒĐœĐ”" -#: cp/decl.cc:1620 cp/decl.cc:18452 +#: cp/decl.cc:1620 cp/decl.cc:18516 #, fuzzy, gcc-internal-format #| msgid "previous declaration `%D'" msgid "previous declaration %qD" @@ -59892,13 +59945,13 @@ msgstr "ĐœĐ”Ń…Đ°ĐżĐ°Đ” Đ°Ń€ĐłŃƒĐŒĐ”ĐœŃ‚Đ°Ńž у Ń„ŃƒĐœĐșцыі \"%s\"" msgid "previous specification in %q#D here" msgstr "ĐœŃĐŒĐ° ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃĐłĐ° аб'ŃŃžĐ»Đ”ĐœĐœŃ ĐŽĐ»Ń \"%s\"" -#: cp/decl.cc:2570 cp/decl.cc:18470 +#: cp/decl.cc:2570 cp/decl.cc:18534 #, fuzzy, gcc-internal-format #| msgid "conflicts with previous declaration `%#D'" msgid "conflicting exporting for declaration %qD" msgstr "ĐșĐ°ĐœŃ„Đ»Ń–Đșт Đ· ĐżĐ°ĐżŃŃ€ŃĐŽĐœŃ–ĐŒ абĐČŃŃˆŃ‡ŃĐœŃŒĐœĐ”ĐŒ `%#D'" -#: cp/decl.cc:2572 cp/decl.cc:18472 +#: cp/decl.cc:2572 cp/decl.cc:18536 #, gcc-internal-format msgid "previously declared here without exporting" msgstr "" @@ -60108,7 +60161,7 @@ msgstr "Ń–ĐœŃ–Ń†Ń‹ŃĐ»Ń–Đ·Đ°Ń†Ń‹Ń" msgid " enters %