diff options
author | Martin Liska <mliska@suse.cz> | 2022-03-10 10:42:24 +0100 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2022-03-10 10:42:24 +0100 |
commit | 604bf5da51533a218c0393cb5115bae7c8d95282 (patch) | |
tree | 7c1d3405dde7cc6efe0fbd24566cdf8bb690fbfe | |
parent | 1a576b7ac609d4225a3833e3a9c84a9439d0e45e (diff) | |
parent | 6f8abf2b9ff4f165a61295cdb3525ce1da2a77c6 (diff) | |
download | gcc-604bf5da51533a218c0393cb5115bae7c8d95282.zip gcc-604bf5da51533a218c0393cb5115bae7c8d95282.tar.gz gcc-604bf5da51533a218c0393cb5115bae7c8d95282.tar.bz2 |
Merge branch 'master' into devel/sphinx
189 files changed, 3598 insertions, 1814 deletions
@@ -1,3 +1,9 @@ +2022-03-09 Hans-Peter Nilsson <hp@axis.com> + + * Makefile.def (dependencies): Make configure-sim depend on + all-readline. + * Makefile.in: Regenerate. + 2022-02-22 Christophe Lyon <christophe.lyon@foss.st.com> * MAINTAINERS (Write After Approval): Update my e-mail address. diff --git a/Makefile.def b/Makefile.def index 80347fd..72d5854 100644 --- a/Makefile.def +++ b/Makefile.def @@ -570,7 +570,7 @@ dependencies = { module=all-sim; on=all-intl; }; dependencies = { module=all-sim; on=all-libiberty; }; dependencies = { module=all-sim; on=all-bfd; }; dependencies = { module=all-sim; on=all-opcodes; }; -dependencies = { module=all-sim; on=all-readline; }; +dependencies = { module=configure-sim; on=all-readline; }; // Other host modules. dependencies = { module=all-fastjar; on=all-zlib; }; diff --git a/Makefile.in b/Makefile.in index 7d97049..593495e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -66260,7 +66260,7 @@ install-strip-sid: maybe-install-strip-tcl install-sid: maybe-install-tk install-strip-sid: maybe-install-strip-tk configure-sim: maybe-all-gnulib -all-sim: maybe-all-readline +configure-sim: maybe-all-readline all-fastjar: maybe-all-build-texinfo all-libctf: all-libiberty all-stage1-libctf: all-stage1-libiberty diff --git a/contrib/ChangeLog b/contrib/ChangeLog index d968cbf..4d7bbbb 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,14 @@ +2022-03-09 Jonathan Wakely <jwakely@redhat.com> + + PR other/102664 + * git-descr.sh: Use portable sed commands. + * git-undescr.sh: Likewise. + +2022-03-08 Jonathan Wakely <jwakely@redhat.com> + + PR other/102664 + * git-descr.sh: Use portable form of expr match. + 2022-01-31 Martin Liska <mliska@suse.cz> * analyze_brprob.py: Support more formatted predict.def file. diff --git a/contrib/git-descr.sh b/contrib/git-descr.sh index eb25814..96a9930 100755 --- a/contrib/git-descr.sh +++ b/contrib/git-descr.sh @@ -18,12 +18,12 @@ do done if test x$short = xyes; then - r=$(git describe --all --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\(tags/\)\?basepoints/gcc-\([0-9]\+\)-\([0-9]\+\)-g[0-9a-f]*$,r\2-\3,p;s,^\(tags/\)\?basepoints/gcc-\([0-9]\+\)$,r\2-0,p'); + r=$(git describe --all --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^tags/,,;s,^basepoints/gcc-\([0-9][0-9]*\)-\([0-9][0-9]*\)-g[0-9a-f]*$,r\1-\2,p;s,^basepoints/gcc-\([0-9][0-9]*\)$,r\1-0,p'); elif test x$long = xyes; then - r=$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\(tags/\)\?basepoints/gcc-,r,p') + r=$(git describe --all --abbrev=40 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^tags/,,;s,^basepoints/gcc-,r,p') else - r=$(git describe --all --abbrev=14 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^\(tags/\)\?basepoints/gcc-,r,p'); - expr match ${r:-no} 'r[0-9]\+$' >/dev/null && r=${r}-0-g$(git rev-parse $c); + r=$(git describe --all --abbrev=14 --match 'basepoints/gcc-[0-9]*' $c | sed -n 's,^tags/,,;s,^basepoints/gcc-,r,p') + expr ${r:-no} : 'r[0-9]\+$' >/dev/null && r=${r}-0-g$(git rev-parse $c); fi; if test -n $r; then o=$(git config --get gcc-config.upstream); diff --git a/contrib/git-undescr.sh b/contrib/git-undescr.sh index 9d882a6..1db67dc 100755 --- a/contrib/git-undescr.sh +++ b/contrib/git-undescr.sh @@ -3,11 +3,11 @@ # Script to undescribe a GCC revision o=$(git config --get gcc-config.upstream); -r=$(echo $1 | sed -n 's,^r\([0-9]\+\)-[0-9]\+\(-g[0-9a-f]\+\)\?$,\1,p'); -n=$(echo $1 | sed -n 's,^r[0-9]\+-\([0-9]\+\)\(-g[0-9a-f]\+\)\?$,\1,p'); +r=$(echo $1 | sed -n 's,^r\([0-9][0-9]*\)-[0-9][0-9]*\(-g[0-9a-f]*\)*$,\1,p'); +n=$(echo $1 | sed -n 's,^r[0-9][0-9]*-\([0-9][0-9]*\)\(-g[0-9a-f]*\)*$,\1,p'); test -z $r && echo Invalid id $1 && exit 1; h=$(git rev-parse --verify --quiet ${o:-origin}/releases/gcc-$r); test -z $h && h=$(git rev-parse --verify --quiet ${o:-origin}/master); -p=$(git describe --all --match 'basepoints/gcc-'$r $h | sed -n 's,^\(tags/\)\?basepoints/gcc-[0-9]\+-\([0-9]\+\)-g[0-9a-f]*$,\2,p;s,^\(tags/\)\?basepoints/gcc-[0-9]\+$,0,p'); +p=$(git describe --all --match 'basepoints/gcc-'$r $h | sed -n 's,^tags/,,;s,^basepoints/gcc-[0-9][0-9]*-\([0-9][0-9]*\)-g[0-9a-f]*$,\1,p;s,^basepoints/gcc-[0-9][0-9]*$,0,p'); git rev-parse --verify $h~$(expr $p - $n); diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8a3cfbd..26ae44a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,207 @@ +2022-03-09 Richard Biener <rguenther@suse.de> + + * cfgexpand.cc (expand_gimple_asm): Special-case MEM_REF + with non-decl operand, avoiding a copy. + +2022-03-09 Jakub Jelinek <jakub@redhat.com> + + PR target/104781 + * config/i386/i386.h (LIBGCC2_UNWIND_ATTRIBUTE): Define for ia32. + +2022-03-09 Richard Biener <rguenther@suse.de> + + PR middle-end/104786 + * cfgexpand.cc (expand_asm_stmt): Do not generate a copy + for VLAs without an upper size bound. + +2022-03-09 Xi Ruoyao <xry111@mengyan1223.wang> + + PR tree-optimization/104851 + * optabs-query.cc (supports_vec_convert_optab_p): Fix off-by-one + error. + +2022-03-09 Jakub Jelinek <jakub@redhat.com> + + PR c/104711 + * doc/invoke.texi (-Wextra): Document that -Wshift-negative-value + is enabled by it only for C++11 to C++17 rather than for C++03 or + later. + (-Wshift-negative-value): Similarly (except here we stated + that it is enabled for C++11 or later). + +2022-03-09 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/104839 + * simplify-rtx.cc (simplify_unary_operation_1) <case SIGN_EXTEND>: + Use SRP_SIGNED instead of incorrect 1 in SUBREG_PROMOTED_SET. + (simplify_unary_operation_1) <case ZERO_EXTEND>: Use SRP_UNSIGNED + instead of incorrect 0 in SUBREG_PROMOTED_SET. + +2022-03-09 Xi Ruoyao <xry111@mengyan1223.wang> + + PR target/104842 + * config/mips/mips.h (LUI_OPERAND): Cast the input to an unsigned + value before adding an offset. + +2022-03-08 Christophe Lyon <christophe.lyon@arm.com> + + * config/arm/arm-builtins.cc + (arm_binop_none_none_unone_qualifiers): Delete. + (BINOP_NONE_NONE_UNONE_QUALIFIERS): Delete. + +2022-03-08 Iain Sandoe <iain@sandoe.co.uk> + + PR translation/104552 + * config/host-darwin.cc (darwin_gt_pch_get_address): Amend + the PCH out of memory error message punctuation and wording. + +2022-03-08 Marek Polacek <polacek@redhat.com> + + PR rtl-optimization/104777 + * rtl.cc (classify_insn): For ASM_OPERANDS, return JUMP_INSN only if + ASM_OPERANDS_LABEL_VEC has at least one element. + +2022-03-08 H.J. Lu <hjl.tools@gmail.com> + + PR target/104781 + * config/i386/i386.cc (ix86_expand_epilogue): Sorry if there is + stack realignment or regparm nested function with EH return. + +2022-03-08 Andre Vieira <andre.simoesdiasvieira@arm.com> + + PR target/104790 + * config/arm/arm.h (MVE_STN_LDW_MODE): New MACRO. + * config/arm/arm.cc (mve_vector_mem_operand): Relax constraint on base + register for non widening loads or narrowing stores. + +2022-03-08 Eric Gallager <egallager@gcc.gnu.org> + + PR translation/104552 + * params.opt: Fix typo. + +2022-03-08 Richard Biener <rguenther@suse.de> + + PR tree-optimization/84201 + * params.opt (-param=vect-induction-float): Add. + * doc/invoke.texi (vect-induction-float): Document. + * tree-vect-loop.cc (vectorizable_induction): Honor + param_vect_induction_float. + +2022-03-08 Martin Jambor <mjambor@suse.cz> + + PR translation/104552 + * params.opt (ipa-cp-recursive-freq-factor): Remove repeated word + "that" in the description. + +2022-03-08 Richard Biener <rguenther@suse.de> + + PR tree-optimization/104825 + * tree-ssa-sccvn.cc (visit_reference_op_call): Properly + guard modref get_ao_ref on a pointer typed argument. + +2022-03-08 liuhongt <hongtao.liu@intel.com> + + * config/i386/sse.md (*vec_dupv4si): Disable memory operand + for !TARGET_INTER_UNIT_MOVES_TO_VEC when prefer_for_speed. + +2022-03-07 Jonathan Wakely <jwakely@redhat.com> + + * doc/invoke.texi (C++ Modules): Remove anachronism. + +2022-03-07 Martin Liska <mliska@suse.cz> + + PR middle-end/104381 + * opts.cc (finish_options): If debug info is disabled + (debug_info_level) and -fvar-tracking is unset, disable it. + +2022-03-07 Jakub Jelinek <jakub@redhat.com> + + * tree-ssa-propagate.cc: Fix up duplicated word issue in a comment. + * config/riscv/riscv.cc: Likewise. + * config/darwin.h: Likewise. + * config/i386/i386.cc: Likewise. + * config/aarch64/thunderx3t110.md: Likewise. + * config/aarch64/fractional-cost.h: Likewise. + * config/vax/vax.cc: Likewise. + * config/rs6000/pcrel-opt.md: Likewise. + * config/rs6000/predicates.md: Likewise. + * ctfc.h: Likewise. + * tree-ssa-uninit.cc: Likewise. + * value-relation.h: Likewise. + * gimple-range-gori.cc: Likewise. + * ipa-polymorphic-call.cc: Likewise. + * pointer-query.cc: Likewise. + * ipa-sra.cc: Likewise. + * internal-fn.cc: Likewise. + * varasm.cc: Likewise. + * gimple-ssa-warn-access.cc: Likewise. + +2022-03-07 Martin Liska <mliska@suse.cz> + + PR target/104794 + * config/arm/arm.cc (arm_option_override_internal): Add missing + space. + +2022-03-07 Richard Biener <rguenther@suse.de> + + PR tree-optimization/104782 + * tree-vect-slp.cc (vectorize_slp_instance_root_stmt): + Re-instantiate r10-5979 fix, add comment. + +2022-03-07 Martin Liska <mliska@suse.cz> + + PR target/104797 + * config/msp430/msp430.cc (msp430_expand_delay_cycles): Remove + parenthesis from built-in name. + +2022-03-07 Martin Liska <mliska@suse.cz> + + PR target/104794 + * config/arm/arm.cc (arm_option_override_internal): Fix quoting + of options in error messages. + (arm_option_reconfigure_globals): Likewise. + +2022-03-07 Martin Liska <mliska@suse.cz> + + PR target/104794 + * config/arm/arm-builtins.cc (arm_expand_builtin): Reuse error + message. Fix ARM_BUILTIN_WRORHI and ARM_BUILTIN_WRORH that can + have only range [0,32]. + +2022-03-07 Jakub Jelinek <jakub@redhat.com> + + PR target/104775 + * config/s390/s390.md (*cmp_and_trap_unsigned_int<mode>): Use + S constraint instead of T in the last alternative. + +2022-03-07 Martin Liska <mliska@suse.cz> + + * plugin.cc (default_plugin_dir_name): Remove <dir> from error + message. + +2022-03-07 Martin Liska <mliska@suse.cz> + + PR translation/90148 + * config/rs6000/rs6000.cc (rs6000_linux64_override_options): Put + quote to a proper place. + * plugin.cc (default_plugin_dir_name): Likewise. + +2022-03-07 Martin Liska <mliska@suse.cz> + + PR target/99297 + * config/rx/rx.cc (rx_expand_builtin_mvtc): Fix translation + string. + +2022-03-07 Jakub Jelinek <jakub@redhat.com> + + PR target/104779 + * config/i386/sse.md (avx512dq_mul<mode>3<mask_name>): New + define_expand pattern. Rename define_insn to ... + (*avx512dq_mul<mode>3<mask_name>): ... this. + (<code><mode>3_mask): New any_logic define_expand pattern. + (<mask_codefor><code><mode>3<mask_name>): Rename to ... + (*<code><mode>3<mask_name>): ... this. + 2022-03-05 Jakub Jelinek <jakub@redhat.com> * gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p): Remove diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 7d441aa..284de79 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20220306 +20220310 diff --git a/gcc/analyzer/ChangeLog b/gcc/analyzer/ChangeLog index fad9b30..6fdbb05 100644 --- a/gcc/analyzer/ChangeLog +++ b/gcc/analyzer/ChangeLog @@ -1,3 +1,17 @@ +2022-03-07 David Malcolm <dmalcolm@redhat.com> + + PR analyzer/101983 + * engine.cc (returning_from_function_p): New. + (impl_region_model_context::on_state_leak): Use it when rejecting + leaks at the return from "main". + +2022-03-07 Jakub Jelinek <jakub@redhat.com> + + * store.cc: Fix up duplicated word issue in a comment. + * analyzer.cc: Likewise. + * engine.cc: Likewise. + * sm-taint.cc: Likewise. + 2022-03-04 David Malcolm <dmalcolm@redhat.com> PR analyzer/103521 diff --git a/gcc/analyzer/analyzer.cc b/gcc/analyzer/analyzer.cc index 6784417..2c63a53 100644 --- a/gcc/analyzer/analyzer.cc +++ b/gcc/analyzer/analyzer.cc @@ -109,7 +109,7 @@ get_diagnostic_tree_for_gassign_1 (const gassign *assign_stmt, } /* Subroutine of fixup_tree_for_diagnostic_1, called on SSA names. - Attempt to reconstruct a a tree expression for SSA_NAME + Attempt to reconstruct a tree expression for SSA_NAME based on its def-stmt. SSA_NAME must be non-NULL. VISITED must be non-NULL; it is used to ensure termination. diff --git a/gcc/analyzer/engine.cc b/gcc/analyzer/engine.cc index f5b85ce..8c3133e 100644 --- a/gcc/analyzer/engine.cc +++ b/gcc/analyzer/engine.cc @@ -740,6 +740,51 @@ readability_comparator (const void *p1, const void *p2) return 0; } +/* Return true is SNODE is the EXIT node of a function, or is one + of the final snodes within its function. + + Specifically, handle the final supernodes before the EXIT node, + for the case of clobbers that happen immediately before exiting. + We need a run of snodes leading to the return_p snode, where all edges are + intraprocedural, and every snode has just one successor. + + We use this when suppressing leak reports at the end of "main". */ + +static bool +returning_from_function_p (const supernode *snode) +{ + if (!snode) + return false; + + unsigned count = 0; + const supernode *iter = snode; + while (true) + { + if (iter->return_p ()) + return true; + if (iter->m_succs.length () != 1) + return false; + const superedge *sedge = iter->m_succs[0]; + if (sedge->get_kind () != SUPEREDGE_CFG_EDGE) + return false; + iter = sedge->m_dest; + + /* Impose a limit to ensure we terminate for pathological cases. + + We only care about the final 3 nodes, due to cases like: + BB: + (clobber causing leak) + + BB: + <label>: + return _val; + + EXIT BB.*/ + if (++count > 3) + return false; + } +} + /* Find the best tree for SVAL and call SM's on_leak vfunc with it. If on_leak returns a pending_diagnostic, queue it up to be reported, so that we potentially complain about a leak of SVAL in the given STATE. */ @@ -794,8 +839,7 @@ impl_region_model_context::on_state_leak (const state_machine &sm, gcc_assert (m_enode_for_diag); /* Don't complain about leaks when returning from "main". */ - if (m_enode_for_diag->get_supernode () - && m_enode_for_diag->get_supernode ()->return_p ()) + if (returning_from_function_p (m_enode_for_diag->get_supernode ())) { tree fndecl = m_enode_for_diag->get_function ()->decl; if (id_equal (DECL_NAME (fndecl), "main")) @@ -3918,7 +3962,7 @@ exploded_graph::process_node (exploded_node *node) analysis of the current function. The analyzer handles calls to such functions while - analysing the stmt itself, so the the function call + analysing the stmt itself, so the function call must have been handled by the anlyzer till now. */ exploded_node *next = get_or_create_node (next_point, diff --git a/gcc/analyzer/sm-taint.cc b/gcc/analyzer/sm-taint.cc index 57a0ac6..c7b2832 100644 --- a/gcc/analyzer/sm-taint.cc +++ b/gcc/analyzer/sm-taint.cc @@ -891,7 +891,7 @@ taint_state_machine::check_for_tainted_size_arg (sm_context *sm_ctxt, return; /* Initialize a map of attribute access specifications for arguments - to the function function call. */ + to the function call. */ rdwr_map rdwr_idx; init_attr_rdwr_indices (&rdwr_idx, TYPE_ATTRIBUTES (fntype)); diff --git a/gcc/analyzer/store.cc b/gcc/analyzer/store.cc index ade6dec..58df7aa 100644 --- a/gcc/analyzer/store.cc +++ b/gcc/analyzer/store.cc @@ -1204,7 +1204,7 @@ binding_cluster::validate () const /* Return a new json::object of the form {"escaped": true/false, "touched": true/false, - "map" : object for the the binding_map. */ + "map" : object for the binding_map. */ json::object * binding_cluster::to_json () const @@ -1892,7 +1892,7 @@ binding_cluster::redundant_p () const && !m_touched); } -/* Add PV to OUT_PVS, casting it to TYPE if if is not already of that type. */ +/* Add PV to OUT_PVS, casting it to TYPE if it is not already of that type. */ static void append_pathvar_with_type (path_var pv, diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index b837567..a034d8f 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,16 @@ +2022-03-09 Jakub Jelinek <jakub@redhat.com> + + PR c/104711 + * c-opts.cc (c_common_post_options): Don't enable + -Wshift-negative-value from -Wextra for C++20 or later. + * c-ubsan.cc (ubsan_instrument_shift): Adjust comments. + * c-warn.cc (maybe_warn_shift_overflow): Use TYPE_OVERFLOW_WRAPS + instead of TYPE_UNSIGNED. + +2022-03-07 Jakub Jelinek <jakub@redhat.com> + + * c-attribs.cc: Fix up duplicated word issue in a comment. + 2022-03-01 Martin Liska <mliska@suse.cz> PR ipa/104533 diff --git a/gcc/c-family/c-attribs.cc b/gcc/c-family/c-attribs.cc index d394ea9..c885d88 100644 --- a/gcc/c-family/c-attribs.cc +++ b/gcc/c-family/c-attribs.cc @@ -3421,7 +3421,7 @@ handle_malloc_attribute (tree *node, tree name, tree args, int flags, it with this one. Ideally, the attribute would reference the DECL of the deallocator but since that changes for each redeclaration, use DECL_NAME instead. (DECL_ASSEMBLER_NAME - need not be set set this point and setting it here is too early. */ + need not be set at this point and setting it here is too early. */ tree attrs = build_tree_list (NULL_TREE, DECL_NAME (fndecl)); attrs = tree_cons (get_identifier ("*dealloc"), attrs, at_noinline); decl_attributes (&dealloc, attrs, 0); @@ -5142,7 +5142,7 @@ handle_access_attribute (tree node[3], tree name, tree args, int flags, value: "+^2[*],$0$1^3[*],$1$1" list: < <0, x> <1, y> > - where the list has a single value which itself is is a list each + where the list has a single value which itself is a list, each of whose <node>s corresponds to one VLA bound for each of the two parameters. */ diff --git a/gcc/c-family/c-opts.cc b/gcc/c-family/c-opts.cc index 21ff22d..a341a06 100644 --- a/gcc/c-family/c-opts.cc +++ b/gcc/c-family/c-opts.cc @@ -934,10 +934,12 @@ c_common_post_options (const char **pfilename) if (warn_shift_overflow == -1) warn_shift_overflow = cxx_dialect >= cxx11 || flag_isoc99; - /* -Wshift-negative-value is enabled by -Wextra in C99 and C++11 modes. */ + /* -Wshift-negative-value is enabled by -Wextra in C99 and C++11 to C++17 + modes. */ if (warn_shift_negative_value == -1) warn_shift_negative_value = (extra_warnings - && (cxx_dialect >= cxx11 || flag_isoc99)); + && (cxx_dialect >= cxx11 || flag_isoc99) + && cxx_dialect < cxx20); /* -Wregister is enabled by default in C++17. */ SET_OPTION_IF_UNSET (&global_options, &global_options_set, warn_register, diff --git a/gcc/c-family/c-ubsan.cc b/gcc/c-family/c-ubsan.cc index 7fe4956..48f9487 100644 --- a/gcc/c-family/c-ubsan.cc +++ b/gcc/c-family/c-ubsan.cc @@ -173,7 +173,7 @@ ubsan_instrument_shift (location_t loc, enum tree_code code, || cxx_dialect >= cxx20) ; - /* For signed x << y, in C99/C11, the following: + /* For signed x << y, in C99 and later, the following: (unsigned) x >> (uprecm1 - y) if non-zero, is undefined. */ else if (code == LSHIFT_EXPR && flag_isoc99 && cxx_dialect < cxx11) @@ -186,7 +186,7 @@ ubsan_instrument_shift (location_t loc, enum tree_code code, build_int_cst (TREE_TYPE (tt), 0)); } - /* For signed x << y, in C++11 and later, the following: + /* For signed x << y, in C++11 to C++17, the following: x < 0 || ((unsigned) x >> (uprecm1 - y)) if > 1, is undefined. */ else if (code == LSHIFT_EXPR && cxx_dialect >= cxx11) diff --git a/gcc/c-family/c-warn.cc b/gcc/c-family/c-warn.cc index 1ce2202..9025fc1 100644 --- a/gcc/c-family/c-warn.cc +++ b/gcc/c-family/c-warn.cc @@ -2605,7 +2605,7 @@ maybe_warn_shift_overflow (location_t loc, tree op0, tree op1) unsigned int prec0 = TYPE_PRECISION (type0); /* Left-hand operand must be signed. */ - if (TYPE_UNSIGNED (type0) || cxx_dialect >= cxx20) + if (TYPE_OVERFLOW_WRAPS (type0) || cxx_dialect >= cxx20) return false; unsigned int min_prec = (wi::min_precision (wi::to_wide (op0), SIGNED) diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index b177355..e97a42b 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,21 @@ +2022-03-09 Joseph Myers <joseph@codesourcery.com> + + * c-typeck.cc (function_types_compatible_p): Do not handle C2X + differently from earlier standards for unprototyped function type + compatibility. + +2022-03-09 Jakub Jelinek <jakub@redhat.com> + + PR c/104711 + * c-fold.cc (c_fully_fold_internal): Don't emit + -Wshift-negative-value warning if TYPE_OVERFLOW_WRAPS. + * c-typeck.cc (build_binary_op): Likewise. + +2022-03-07 Jakub Jelinek <jakub@redhat.com> + + * c-parser.cc (c_parser_omp_clause_map): Add missing space in string + literal. + 2022-02-23 Richard Biener <rguenther@suse.de> * gimple-parser.cc (c_parser_parse_gimple_body): Diagnose diff --git a/gcc/c/c-fold.cc b/gcc/c/c-fold.cc index 76ea25b..ac4ceaa 100644 --- a/gcc/c/c-fold.cc +++ b/gcc/c/c-fold.cc @@ -382,6 +382,7 @@ c_fully_fold_internal (tree expr, bool in_init, bool *maybe_const_operands, && TREE_CODE (TREE_TYPE (orig_op0)) == INTEGER_TYPE && TREE_CODE (op0) == INTEGER_CST && c_inhibit_evaluation_warnings == 0 + && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (orig_op0)) && tree_int_cst_sgn (op0) < 0) warning_at (loc, OPT_Wshift_negative_value, "left shift of negative value"); diff --git a/gcc/c/c-parser.cc b/gcc/c/c-parser.cc index 84deac0..129dd72 100644 --- a/gcc/c/c-parser.cc +++ b/gcc/c/c-parser.cc @@ -16230,8 +16230,8 @@ c_parser_omp_clause_map (c_parser *parser, tree list) else { c_parser_error (parser, "%<#pragma omp target%> with " - "modifier other than %<always%> or %<close%>" - "on %<map%> clause"); + "modifier other than %<always%> or " + "%<close%> on %<map%> clause"); parens.skip_until_found_close (parser); return list; } diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc index 3075c88..54b0b0d 100644 --- a/gcc/c/c-typeck.cc +++ b/gcc/c/c-typeck.cc @@ -1693,7 +1693,7 @@ function_types_compatible_p (const_tree f1, const_tree f2, if (args1 == NULL_TREE) { - if (flag_isoc2x ? stdarg_p (f2) : !self_promoting_args_p (args2)) + if (!self_promoting_args_p (args2)) return 0; /* If one of these types comes from a non-prototype fn definition, compare that with the other type's arglist. @@ -1706,7 +1706,7 @@ function_types_compatible_p (const_tree f1, const_tree f2, } if (args2 == NULL_TREE) { - if (flag_isoc2x ? stdarg_p (f1) : !self_promoting_args_p (args1)) + if (!self_promoting_args_p (args1)) return 0; if (TYPE_ACTUAL_ARG_TYPES (f2) && type_lists_compatible_p (args1, TYPE_ACTUAL_ARG_TYPES (f2), @@ -12213,7 +12213,8 @@ build_binary_op (location_t location, enum tree_code code, { doing_shift = true; if (TREE_CODE (op0) == INTEGER_CST - && tree_int_cst_sgn (op0) < 0) + && tree_int_cst_sgn (op0) < 0 + && !TYPE_OVERFLOW_WRAPS (type0)) { /* Don't reject a left shift of a negative value in a context where a constant expression is needed in C90. */ diff --git a/gcc/cfgexpand.cc b/gcc/cfgexpand.cc index 87536ec..d3cc77d 100644 --- a/gcc/cfgexpand.cc +++ b/gcc/cfgexpand.cc @@ -3290,14 +3290,19 @@ expand_asm_stmt (gasm *stmt) generating_concat_p = 0; - if ((TREE_CODE (val) == INDIRECT_REF && allows_mem) + gcc_assert (TREE_CODE (val) != INDIRECT_REF); + if (((TREE_CODE (val) == MEM_REF + && TREE_CODE (TREE_OPERAND (val, 0)) != ADDR_EXPR) + && allows_mem) || (DECL_P (val) && (allows_mem || REG_P (DECL_RTL (val))) && ! (REG_P (DECL_RTL (val)) && GET_MODE (DECL_RTL (val)) != TYPE_MODE (type))) || ! allows_reg || is_inout - || TREE_ADDRESSABLE (type)) + || TREE_ADDRESSABLE (type) + || (!tree_fits_poly_int64_p (TYPE_SIZE (type)) + && !known_size_p (max_int_size_in_bytes (type)))) { op = expand_expr (val, NULL_RTX, VOIDmode, !allows_reg ? EXPAND_MEMORY : EXPAND_WRITE); diff --git a/gcc/config/aarch64/fractional-cost.h b/gcc/config/aarch64/fractional-cost.h index 62961be..7e47cbf 100644 --- a/gcc/config/aarch64/fractional-cost.h +++ b/gcc/config/aarch64/fractional-cost.h @@ -61,7 +61,7 @@ private: constexpr fractional_cost (uint64_t value, raw) : m_value (value) {} // A multiple of [1, 16] * 16. This ensures that 1/N is representable - // for every every possible SVE element count N, or for any "X per cycle" + // for every possible SVE element count N, or for any "X per cycle" // value N in the range [1, 16]. static const uint32_t SCALE = 11531520; diff --git a/gcc/config/aarch64/thunderx3t110.md b/gcc/config/aarch64/thunderx3t110.md index 198c3bf..02ee3c2 100644 --- a/gcc/config/aarch64/thunderx3t110.md +++ b/gcc/config/aarch64/thunderx3t110.md @@ -138,7 +138,7 @@ logic_shift_imm,logics_shift_imm")) "thunderx3t110_i01") -; we are going for the the optimistic answer (13) +; we are going for the optimistic answer (13) ; for now, the worst case is 23 (define_insn_reservation "thunderx3t110_div" 13 (and (eq_attr "tune" "thunderx3t110") diff --git a/gcc/config/arm/arm-builtins.cc b/gcc/config/arm/arm-builtins.cc index a7acc1d..36a40a1 100644 --- a/gcc/config/arm/arm-builtins.cc +++ b/gcc/config/arm/arm-builtins.cc @@ -433,12 +433,6 @@ arm_binop_unone_none_imm_qualifiers[SIMD_MAX_BUILTIN_ARGS] (arm_binop_unone_none_imm_qualifiers) static enum arm_type_qualifiers -arm_binop_none_none_unone_qualifiers[SIMD_MAX_BUILTIN_ARGS] - = { qualifier_none, qualifier_none, qualifier_unsigned }; -#define BINOP_NONE_NONE_UNONE_QUALIFIERS \ - (arm_binop_none_none_unone_qualifiers) - -static enum arm_type_qualifiers arm_binop_pred_none_none_qualifiers[SIMD_MAX_BUILTIN_ARGS] = { qualifier_predicate, qualifier_none, qualifier_none }; #define BINOP_PRED_NONE_NONE_QUALIFIERS \ @@ -3922,65 +3916,92 @@ arm_expand_builtin (tree exp, if (GET_MODE (op1) == VOIDmode) { imm = INTVAL (op1); - if ((fcode == ARM_BUILTIN_WRORHI || fcode == ARM_BUILTIN_WRORWI - || fcode == ARM_BUILTIN_WRORH || fcode == ARM_BUILTIN_WRORW) + if ((fcode == ARM_BUILTIN_WRORWI || fcode == ARM_BUILTIN_WRORW) && (imm < 0 || imm > 32)) { - if (fcode == ARM_BUILTIN_WRORHI) - error ("the range of count should be in 0 to 32; please check the intrinsic %<_mm_rori_pi16%> in code"); - else if (fcode == ARM_BUILTIN_WRORWI) - error ("the range of count should be in 0 to 32; please check the intrinsic %<_mm_rori_pi32%> in code"); - else if (fcode == ARM_BUILTIN_WRORH) - error ("the range of count should be in 0 to 32; please check the intrinsic %<_mm_ror_pi16%> in code"); - else - error ("the range of count should be in 0 to 32; please check the intrinsic %<_mm_ror_pi32%> in code"); + const char *builtin = (fcode == ARM_BUILTIN_WRORWI + ? "_mm_rori_pi32" : "_mm_ror_pi32"); + error ("the range of count should be in 0 to 32; " + "please check the intrinsic %qs in code", builtin); + } + else if ((fcode == ARM_BUILTIN_WRORHI || fcode == ARM_BUILTIN_WRORH) + && (imm < 0 || imm > 16)) + { + const char *builtin = (fcode == ARM_BUILTIN_WRORHI + ? "_mm_rori_pi16" : "_mm_ror_pi16"); + error ("the range of count should be in 0 to 16; " + "please check the intrinsic %qs in code", builtin); } else if ((fcode == ARM_BUILTIN_WRORDI || fcode == ARM_BUILTIN_WRORD) && (imm < 0 || imm > 64)) { - if (fcode == ARM_BUILTIN_WRORDI) - error ("the range of count should be in 0 to 64; please check the intrinsic %<_mm_rori_si64%> in code"); - else - error ("the range of count should be in 0 to 64; please check the intrinsic %<_mm_ror_si64%> in code"); + const char *builtin = (fcode == ARM_BUILTIN_WRORDI + ? "_mm_rori_si64" : "_mm_ror_si64"); + error ("the range of count should be in 0 to 64; " + "please check the intrinsic %qs in code", builtin); } else if (imm < 0) { - if (fcode == ARM_BUILTIN_WSRLHI) - error ("the count should be no less than 0; please check the intrinsic %<_mm_srli_pi16%> in code"); - else if (fcode == ARM_BUILTIN_WSRLWI) - error ("the count should be no less than 0; please check the intrinsic %<_mm_srli_pi32%> in code"); - else if (fcode == ARM_BUILTIN_WSRLDI) - error ("the count should be no less than 0; please check the intrinsic %<_mm_srli_si64%> in code"); - else if (fcode == ARM_BUILTIN_WSLLHI) - error ("the count should be no less than 0; please check the intrinsic %<_mm_slli_pi16%> in code"); - else if (fcode == ARM_BUILTIN_WSLLWI) - error ("the count should be no less than 0; please check the intrinsic %<_mm_slli_pi32%> in code"); - else if (fcode == ARM_BUILTIN_WSLLDI) - error ("the count should be no less than 0; please check the intrinsic %<_mm_slli_si64%> in code"); - else if (fcode == ARM_BUILTIN_WSRAHI) - error ("the count should be no less than 0; please check the intrinsic %<_mm_srai_pi16%> in code"); - else if (fcode == ARM_BUILTIN_WSRAWI) - error ("the count should be no less than 0; please check the intrinsic %<_mm_srai_pi32%> in code"); - else if (fcode == ARM_BUILTIN_WSRADI) - error ("the count should be no less than 0; please check the intrinsic %<_mm_srai_si64%> in code"); - else if (fcode == ARM_BUILTIN_WSRLH) - error ("the count should be no less than 0; please check the intrinsic %<_mm_srl_pi16%> in code"); - else if (fcode == ARM_BUILTIN_WSRLW) - error ("the count should be no less than 0; please check the intrinsic %<_mm_srl_pi32%> in code"); - else if (fcode == ARM_BUILTIN_WSRLD) - error ("the count should be no less than 0; please check the intrinsic %<_mm_srl_si64%> in code"); - else if (fcode == ARM_BUILTIN_WSLLH) - error ("the count should be no less than 0; please check the intrinsic %<_mm_sll_pi16%> in code"); - else if (fcode == ARM_BUILTIN_WSLLW) - error ("the count should be no less than 0; please check the intrinsic %<_mm_sll_pi32%> in code"); - else if (fcode == ARM_BUILTIN_WSLLD) - error ("the count should be no less than 0; please check the intrinsic %<_mm_sll_si64%> in code"); - else if (fcode == ARM_BUILTIN_WSRAH) - error ("the count should be no less than 0; please check the intrinsic %<_mm_sra_pi16%> in code"); - else if (fcode == ARM_BUILTIN_WSRAW) - error ("the count should be no less than 0; please check the intrinsic %<_mm_sra_pi32%> in code"); - else - error ("the count should be no less than 0; please check the intrinsic %<_mm_sra_si64%> in code"); + const char *builtin; + switch (fcode) + { + case ARM_BUILTIN_WSRLHI: + builtin = "_mm_srli_pi16"; + break; + case ARM_BUILTIN_WSRLWI: + builtin = "_mm_srli_pi32"; + break; + case ARM_BUILTIN_WSRLDI: + builtin = "_mm_srli_si64"; + break; + case ARM_BUILTIN_WSLLHI: + builtin = "_mm_slli_pi16"; + break; + case ARM_BUILTIN_WSLLWI: + builtin = "_mm_slli_pi32"; + break; + case ARM_BUILTIN_WSLLDI: + builtin = "_mm_slli_si64"; + break; + case ARM_BUILTIN_WSRAHI: + builtin = "_mm_srai_pi16"; + break; + case ARM_BUILTIN_WSRAWI: + builtin = "_mm_srai_pi32"; + break; + case ARM_BUILTIN_WSRADI: + builtin = "_mm_srai_si64"; + break; + case ARM_BUILTIN_WSRLH: + builtin = "_mm_srl_pi16"; + break; + case ARM_BUILTIN_WSRLW: + builtin = "_mm_srl_pi32"; + break; + case ARM_BUILTIN_WSRLD: + builtin = "_mm_srl_si64"; + break; + case ARM_BUILTIN_WSLLH: + builtin = "_mm_sll_pi16"; + break; + case ARM_BUILTIN_WSLLW: + builtin = "_mm_sll_pi32"; + break; + case ARM_BUILTIN_WSLLD: + builtin = "_mm_sll_si64"; + break; + case ARM_BUILTIN_WSRAH: + builtin = "_mm_sra_pi16"; + break; + case ARM_BUILTIN_WSRAW: + builtin = "_mm_sra_si64"; + break; + default: + builtin = "_mm_sra_si64"; + break; + } + error ("the count should be no less than 0; " + "please check the intrinsic %qs in code", builtin); } } return arm_expand_binop_builtin (icode, exp, target); diff --git a/gcc/config/arm/arm.cc b/gcc/config/arm/arm.cc index c1103d9..e062361 100644 --- a/gcc/config/arm/arm.cc +++ b/gcc/config/arm/arm.cc @@ -3185,8 +3185,8 @@ arm_option_override_internal (struct gcc_options *opts, if (arm_stack_protector_guard == SSP_GLOBAL && opts->x_arm_stack_protector_guard_offset_str) { - error ("incompatible options %'-mstack-protector-guard=global%' and" - "%'-mstack-protector-guard-offset=%qs%'", + error ("incompatible options %<-mstack-protector-guard=global%> and " + "%<-mstack-protector-guard-offset=%s%>", arm_stack_protector_guard_offset_str); } @@ -3880,7 +3880,7 @@ arm_option_reconfigure_globals (void) } if (!TARGET_HARD_TP && arm_stack_protector_guard == SSP_TLSREG) - error("%'-mstack-protector-guard=tls%' needs a hardware TLS register"); + error("%<-mstack-protector-guard=tls%> needs a hardware TLS register"); } /* Perform some validation between the desired architecture and the rest of the @@ -13521,27 +13521,28 @@ mve_vector_mem_operand (machine_mode mode, rtx op, bool strict) case E_V16QImode: case E_V8QImode: case E_V4QImode: - if (abs (val) <= 127) - return (reg_no < LAST_ARM_REGNUM && reg_no != SP_REGNUM) - || reg_no >= FIRST_PSEUDO_REGISTER; - return FALSE; + if (abs (val) > 127) + return FALSE; + break; case E_V8HImode: case E_V8HFmode: case E_V4HImode: case E_V4HFmode: - if (val % 2 == 0 && abs (val) <= 254) - return reg_no <= LAST_LO_REGNUM - || reg_no >= FIRST_PSEUDO_REGISTER; - return FALSE; + if (val % 2 != 0 || abs (val) > 254) + return FALSE; + break; case E_V4SImode: case E_V4SFmode: - if (val % 4 == 0 && abs (val) <= 508) - return (reg_no < LAST_ARM_REGNUM && reg_no != SP_REGNUM) - || reg_no >= FIRST_PSEUDO_REGISTER; - return FALSE; + if (val % 4 != 0 || abs (val) > 508) + return FALSE; + break; default: return FALSE; } + return reg_no >= FIRST_PSEUDO_REGISTER + || (MVE_STN_LDW_MODE (mode) + ? reg_no <= LAST_LO_REGNUM + : (reg_no < LAST_ARM_REGNUM && reg_no != SP_REGNUM)); } return FALSE; } diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index ef7b66f..f479540 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -1099,6 +1099,10 @@ extern const int arm_arch_cde_coproc_bits[]; ((MODE) == V2DImode ||(MODE) == V4SImode || (MODE) == V8HImode \ || (MODE) == V16QImode) +/* Modes used in MVE's narrowing stores or widening loads. */ +#define MVE_STN_LDW_MODE(MODE) \ + ((MODE) == V4QImode || (MODE) == V8QImode || (MODE) == V4HImode) + #define VALID_MVE_SF_MODE(MODE) \ ((MODE) == V8HFmode || (MODE) == V4SFmode || (MODE) == V2DFmode) diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index ceb043a..3682bd2 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -340,7 +340,7 @@ extern GTY(()) int darwin_ms_struct; " %:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) " /* In Darwin linker specs we can put -lcrt0.o and ld will search the library - path for crt0.o or -lcrtx.a and it will search for for libcrtx.a. As for + path for crt0.o or -lcrtx.a and it will search for libcrtx.a. As for other ports, we can also put xxx.{o,a}%s and get the appropriate complete startfile absolute directory. This latter point is important when we want to override ld's rule of .dylib being found ahead of .a and the user wants diff --git a/gcc/config/host-darwin.cc b/gcc/config/host-darwin.cc index d4289ae..01554d5 100644 --- a/gcc/config/host-darwin.cc +++ b/gcc/config/host-darwin.cc @@ -104,7 +104,7 @@ darwin_gt_pch_get_address (size_t sz, int fd) space. */ if (addr == (void *) MAP_FAILED) { - error ("PCH memory not available %m"); + error ("PCH memory is not available: %m"); return NULL; } diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc index 9521990..4121f98 100644 --- a/gcc/config/i386/i386.cc +++ b/gcc/config/i386/i386.cc @@ -9444,12 +9444,15 @@ ix86_expand_epilogue (int style) rtx sa = EH_RETURN_STACKADJ_RTX; rtx_insn *insn; - /* %ecx can't be used for both DRAP register and eh_return. */ - if (crtl->drap_reg) - gcc_assert (REGNO (crtl->drap_reg) != CX_REG); + /* Stack realignment doesn't work with eh_return. */ + if (crtl->stack_realign_needed) + sorry ("Stack realignment not supported with " + "%<__builtin_eh_return%>"); /* regparm nested functions don't work with eh_return. */ - gcc_assert (!ix86_static_chain_on_stack); + if (ix86_static_chain_on_stack) + sorry ("regparm nested function not supported with " + "%<__builtin_eh_return%>"); if (frame_pointer_needed) { @@ -20334,7 +20337,7 @@ ix86_division_cost (const struct processor_costs *cost, /* Return cost of shift in MODE. If CONSTANT_OP1 is true, the op1 value is known and set in OP1_VAL. - AND_IN_OP1 specify in op1 is result of and and SHIFT_AND_TRUNCATE + AND_IN_OP1 specify in op1 is result of AND and SHIFT_AND_TRUNCATE if op1 is a result of subreg. SKIP_OP0/1 is set to true if cost of OP0/1 should be ignored. */ diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index b37d4a9..0d28e57 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -2848,6 +2848,12 @@ extern enum attr_cpu ix86_schedule; #define NUM_X86_64_MS_CLOBBERED_REGS 12 #endif +/* __builtin_eh_return can't handle stack realignment, so restrict to + general regs in 32-bit libgcc functions that call it. */ +#ifndef __x86_64__ +#define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((target ("general-regs-only"))) +#endif + /* Local variables: version-control: t diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 3066ea3..e9292e6 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -15210,7 +15210,15 @@ DONE; }) -(define_insn "avx512dq_mul<mode>3<mask_name>" +(define_expand "avx512dq_mul<mode>3<mask_name>" + [(set (match_operand:VI8_AVX512VL 0 "register_operand") + (mult:VI8_AVX512VL + (match_operand:VI8_AVX512VL 1 "bcst_vector_operand") + (match_operand:VI8_AVX512VL 2 "bcst_vector_operand")))] + "TARGET_AVX512DQ && <mask_mode512bit_condition>" + "ix86_fixup_binary_operands_no_copy (MULT, <MODE>mode, operands);") + +(define_insn "*avx512dq_mul<mode>3<mask_name>" [(set (match_operand:VI8_AVX512VL 0 "register_operand" "=v") (mult:VI8_AVX512VL (match_operand:VI8_AVX512VL 1 "bcst_vector_operand" "%v") @@ -16824,7 +16832,18 @@ DONE; }) -(define_insn "<mask_codefor><code><mode>3<mask_name>" +(define_expand "<code><mode>3_mask" + [(set (match_operand:VI48_AVX512VL 0 "register_operand") + (vec_merge:VI48_AVX512VL + (any_logic:VI48_AVX512VL + (match_operand:VI48_AVX512VL 1 "bcst_vector_operand") + (match_operand:VI48_AVX512VL 2 "bcst_vector_operand")) + (match_operand:VI48_AVX512VL 3 "nonimm_or_0_operand") + (match_operand:<avx512fmaskmode> 4 "register_operand")))] + "TARGET_AVX512F" + "ix86_fixup_binary_operands_no_copy (<CODE>, <MODE>mode, operands);") + +(define_insn "*<code><mode>3<mask_name>" [(set (match_operand:VI48_AVX_AVX512F 0 "register_operand" "=x,x,v") (any_logic:VI48_AVX_AVX512F (match_operand:VI48_AVX_AVX512F 1 "bcst_vector_operand" "%0,x,v") @@ -25134,7 +25153,12 @@ (set_attr "length_immediate" "1,0,1") (set_attr "prefix_extra" "0,1,*") (set_attr "prefix" "maybe_vex,maybe_evex,orig") - (set_attr "mode" "TI,V4SF,V4SF")]) + (set_attr "mode" "TI,V4SF,V4SF") + (set (attr "preferred_for_speed") + (cond [(eq_attr "alternative" "1") + (symbol_ref "!TARGET_INTER_UNIT_MOVES_TO_VEC") + ] + (symbol_ref "true")))]) (define_insn "*vec_dupv2di" [(set (match_operand:V2DI 0 "register_operand" "=x,v,v,x") diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h index bf5c1d5..0029864 100644 --- a/gcc/config/mips/mips.h +++ b/gcc/config/mips/mips.h @@ -2309,7 +2309,7 @@ enum reg_class #define LUI_OPERAND(VALUE) \ (((VALUE) | 0x7fff0000) == 0x7fff0000 \ - || ((VALUE) | 0x7fff0000) + 0x10000 == 0) + || ((unsigned HOST_WIDE_INT) (VALUE) | 0x7fff0000) + 0x10000 == 0) /* Return a value X with the low 16 bits clear, and such that VALUE - X is a signed 16-bit value. */ diff --git a/gcc/config/msp430/msp430.cc b/gcc/config/msp430/msp430.cc index eb219fd..7a378ce 100644 --- a/gcc/config/msp430/msp430.cc +++ b/gcc/config/msp430/msp430.cc @@ -2744,7 +2744,7 @@ msp430_expand_delay_cycles (rtx arg) if (GET_CODE (arg) != CONST_INT) { - error ("%<__delay_cycles()%> only takes constant arguments"); + error ("%<__delay_cycles%> only takes constant arguments"); return NULL_RTX; } diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 6885b4b..7da9d37 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -4984,7 +4984,7 @@ riscv_option_override (void) target_flags |= MASK_FDIV; /* Handle -mtune, use -mcpu if -mtune is not given, and use default -mtune - if -mtune and -mcpu both not not given. */ + if -mtune and -mcpu both not given. */ cpu = riscv_parse_tune (riscv_tune_string ? riscv_tune_string : (riscv_cpu_string ? riscv_cpu_string : RISCV_TUNE_STRING_DEFAULT)); diff --git a/gcc/config/rs6000/pcrel-opt.md b/gcc/config/rs6000/pcrel-opt.md index c72298f..bd05330 100644 --- a/gcc/config/rs6000/pcrel-opt.md +++ b/gcc/config/rs6000/pcrel-opt.md @@ -60,7 +60,7 @@ ;; that both registers may be set in the first insn, and will be used in the ;; second insn. ;; -;; Since we use UNSPEC's and link both the the register holding the external +;; Since we use UNSPEC's and link both the register holding the external ;; address and the value being loaded, it should prevent other passes from ;; modifying it. ;; diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md index 28f6e98..566b85b 100644 --- a/gcc/config/rs6000/predicates.md +++ b/gcc/config/rs6000/predicates.md @@ -496,7 +496,7 @@ }) ;; Return 1 if op is a constant integer valid for D field -;; or non-special register register. +;; or non-special register. (define_predicate "reg_or_short_operand" (if_then_else (match_code "const_int") (match_operand 0 "short_cint_operand") @@ -1109,7 +1109,7 @@ && (DEFAULT_ABI != ABI_AIX || SYMBOL_REF_FUNCTION_P (op))"))) ;; Return 1 if op is an operand that can be loaded via the GOT. -;; or non-special register register field no cr0 +;; or non-special register field no cr0 (define_predicate "got_operand" (match_code "symbol_ref,const,label_ref")) diff --git a/gcc/config/rs6000/rs6000-builtin.cc b/gcc/config/rs6000/rs6000-builtin.cc index 5d34c1b..e925ba9 100644 --- a/gcc/config/rs6000/rs6000-builtin.cc +++ b/gcc/config/rs6000/rs6000-builtin.cc @@ -402,7 +402,9 @@ rs6000_vector_type (const char *name, tree elt_type, unsigned num_elts) static const char *rs6000_type_string (tree type_node) { - if (type_node == void_type_node) + if (type_node == NULL_TREE) + return "**NULL**"; + else if (type_node == void_type_node) return "void"; else if (type_node == long_integer_type_node) return "long"; @@ -432,6 +434,8 @@ const char *rs6000_type_string (tree type_node) return "ss"; else if (type_node == ibm128_float_type_node) return "__ibm128"; + else if (type_node == ieee128_float_type_node) + return "__ieee128"; else if (type_node == opaque_V4SI_type_node) return "opaque"; else if (POINTER_TYPE_P (type_node)) @@ -709,9 +713,9 @@ rs6000_init_builtins (void) For IEEE 128-bit floating point, always create the type __ieee128. If the user used -mfloat128, rs6000-c.cc will create a define from __float128 to __ieee128. */ - if (TARGET_FLOAT128_TYPE) + if (TARGET_LONG_DOUBLE_128 && (!TARGET_IEEEQUAD || TARGET_FLOAT128_TYPE)) { - if (!TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128) + if (!TARGET_IEEEQUAD) ibm128_float_type_node = long_double_type_node; else { @@ -721,22 +725,24 @@ rs6000_init_builtins (void) layout_type (ibm128_float_type_node); } t = build_qualified_type (ibm128_float_type_node, TYPE_QUAL_CONST); - ptr_ibm128_float_type_node = build_pointer_type (t); lang_hooks.types.register_builtin_type (ibm128_float_type_node, "__ibm128"); + } + else + ibm128_float_type_node = NULL_TREE; + if (TARGET_FLOAT128_TYPE) + { if (TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128) ieee128_float_type_node = long_double_type_node; else ieee128_float_type_node = float128_type_node; t = build_qualified_type (ieee128_float_type_node, TYPE_QUAL_CONST); - ptr_ieee128_float_type_node = build_pointer_type (t); lang_hooks.types.register_builtin_type (ieee128_float_type_node, "__ieee128"); } - else - ieee128_float_type_node = ibm128_float_type_node = long_double_type_node; + ieee128_float_type_node = NULL_TREE; /* Vector pair and vector quad support. */ vector_pair_type_node = make_node (OPAQUE_TYPE); @@ -3418,6 +3424,13 @@ rs6000_expand_builtin (tree exp, rtx target, rtx /* subtarget */, return const0_rtx; } + if (bif_is_ibm128 (*bifaddr) && !ibm128_float_type_node) + { + error ("%qs requires %<__ibm128%> type support", + bifaddr->bifname); + return const0_rtx; + } + if (bif_is_cpu (*bifaddr)) return cpu_expand_builtin (fcode, exp, target); @@ -3498,6 +3511,21 @@ rs6000_expand_builtin (tree exp, rtx target, rtx /* subtarget */, gcc_unreachable (); } + if (bif_is_ibm128 (*bifaddr) && TARGET_LONG_DOUBLE_128 && !TARGET_IEEEQUAD) + { + if (fcode == RS6000_BIF_PACK_IF) + { + icode = CODE_FOR_packtf; + fcode = RS6000_BIF_PACK_TF; + uns_fcode = (size_t) fcode; + } + else if (fcode == RS6000_BIF_UNPACK_IF) + { + icode = CODE_FOR_unpacktf; + fcode = RS6000_BIF_UNPACK_TF; + uns_fcode = (size_t) fcode; + } + } /* TRUE iff the built-in function returns void. */ bool void_func = TREE_TYPE (TREE_TYPE (fndecl)) == void_type_node; @@ -3642,23 +3670,6 @@ rs6000_expand_builtin (tree exp, rtx target, rtx /* subtarget */, if (bif_is_mma (*bifaddr)) return mma_expand_builtin (exp, target, icode, fcode); - if (fcode == RS6000_BIF_PACK_IF - && TARGET_LONG_DOUBLE_128 - && !TARGET_IEEEQUAD) - { - icode = CODE_FOR_packtf; - fcode = RS6000_BIF_PACK_TF; - uns_fcode = (size_t) fcode; - } - else if (fcode == RS6000_BIF_UNPACK_IF - && TARGET_LONG_DOUBLE_128 - && !TARGET_IEEEQUAD) - { - icode = CODE_FOR_unpacktf; - fcode = RS6000_BIF_UNPACK_TF; - uns_fcode = (size_t) fcode; - } - if (TREE_TYPE (TREE_TYPE (fndecl)) == void_type_node) target = NULL_RTX; else if (target == 0 diff --git a/gcc/config/rs6000/rs6000-builtins.def b/gcc/config/rs6000/rs6000-builtins.def index ae2760c..221bbc7 100644 --- a/gcc/config/rs6000/rs6000-builtins.def +++ b/gcc/config/rs6000/rs6000-builtins.def @@ -138,6 +138,7 @@ ; lxvrze Needs special handling for load-rightmost, zero-extended ; endian Needs special handling for endianness ; ibmld Restrict usage to the case when TFmode is IBM-128 +; ibm128 Restrict usage to the case where __ibm128 is supported or if ibmld ; ; Each attribute corresponds to extra processing required when ; the built-in is expanded. All such special processing should @@ -234,13 +235,13 @@ MTFSF rs6000_mtfsf {} const __ibm128 __builtin_pack_ibm128 (double, double); - PACK_IF packif {} + PACK_IF packif {ibm128} void __builtin_set_fpscr_rn (const int[0,3]); SET_FPSCR_RN rs6000_set_fpscr_rn {} const double __builtin_unpack_ibm128 (__ibm128, const int<1>); - UNPACK_IF unpackif {} + UNPACK_IF unpackif {ibm128} ; This is redundant with __builtin_unpack_ibm128, as it requires long ; double to be __ibm128. Should probably be deprecated. diff --git a/gcc/config/rs6000/rs6000-c.cc b/gcc/config/rs6000/rs6000-c.cc index d2e480a..3b62b49 100644 --- a/gcc/config/rs6000/rs6000-c.cc +++ b/gcc/config/rs6000/rs6000-c.cc @@ -584,6 +584,10 @@ rs6000_target_modify_macros (bool define_p, HOST_WIDE_INT flags, rs6000_define_or_undefine_macro (true, "__float128=__ieee128"); else rs6000_define_or_undefine_macro (false, "__float128"); + if (ieee128_float_type_node && define_p) + rs6000_define_or_undefine_macro (true, "__SIZEOF_FLOAT128__=16"); + else + rs6000_define_or_undefine_macro (false, "__SIZEOF_FLOAT128__"); } /* OPTION_MASK_FLOAT128_HARDWARE can be turned on if -mcpu=power9 is used or via the target attribute/pragma. */ @@ -623,11 +627,11 @@ rs6000_cpu_cpp_builtins (cpp_reader *pfile) if (TARGET_FRSQRTES) builtin_define ("__RSQRTEF__"); if (TARGET_FLOAT128_TYPE) - builtin_define ("__FLOAT128_TYPE__"); + builtin_define ("__FLOAT128_TYPE__"); if (ibm128_float_type_node) builtin_define ("__SIZEOF_IBM128__=16"); if (ieee128_float_type_node) - builtin_define ("__SIZEOF_FLOAT128__=16"); + builtin_define ("__SIZEOF_IEEE128__=16"); #ifdef TARGET_LIBC_PROVIDES_HWCAP_IN_TCB builtin_define ("__BUILTIN_CPU_SUPPORTS__"); #endif diff --git a/gcc/config/rs6000/rs6000-gen-builtins.cc b/gcc/config/rs6000/rs6000-gen-builtins.cc index 629ead9..0bd7a53 100644 --- a/gcc/config/rs6000/rs6000-gen-builtins.cc +++ b/gcc/config/rs6000/rs6000-gen-builtins.cc @@ -93,6 +93,8 @@ along with GCC; see the file COPYING3. If not see lxvrze Needs special handling for load-rightmost, zero-extended endian Needs special handling for endianness ibmld Restrict usage to the case when TFmode is IBM-128 + ibm128 Restrict usage to the case where __ibm128 is supported or + if ibmld An example stanza might look like this: @@ -392,6 +394,7 @@ struct attrinfo bool islxvrze; bool isendian; bool isibmld; + bool isibm128; }; /* Fields associated with a function prototype (bif or overload). */ @@ -492,8 +495,7 @@ struct typemap maps tokens from a fntype string to a tree type. For example, in "si_ftype_hi" we would map "si" to "intSI_type_node" and map "hi" to "intHI_type_node". */ -#define TYPE_MAP_SIZE 86 -static typemap type_map[TYPE_MAP_SIZE] = +static typemap type_map[] = { { "bi", "bool_int" }, { "bv16qi", "bool_V16QI" }, @@ -506,7 +508,9 @@ static typemap type_map[TYPE_MAP_SIZE] = { "df", "double" }, { "di", "long_long_integer" }, { "hi", "intHI" }, - { "if", "ibm128_float" }, + { "if", "ibm128_float_type_node " + "? ibm128_float_type_node " + ": long_double" }, { "ld", "long_double" }, { "lg", "long_integer" }, { "pbv16qi", "ptr_bool_V16QI" }, @@ -519,7 +523,6 @@ static typemap type_map[TYPE_MAP_SIZE] = { "pdf", "ptr_double" }, { "pdi", "ptr_long_long_integer" }, { "phi", "ptr_intHI" }, - { "pif", "ptr_ibm128_float" }, { "pld", "ptr_long_double" }, { "plg", "ptr_long_integer" }, { "pqi", "ptr_intQI" }, @@ -1439,6 +1442,8 @@ parse_bif_attrs (attrinfo *attrptr) attrptr->isendian = 1; else if (!strcmp (attrname, "ibmld")) attrptr->isibmld = 1; + else if (!strcmp (attrname, "ibm128")) + attrptr->isibm128 = 1; else { diag (oldpos, "unknown attribute.\n"); @@ -1472,14 +1477,15 @@ parse_bif_attrs (attrinfo *attrptr) "ldvec = %d, stvec = %d, reve = %d, pred = %d, htm = %d, " "htmspr = %d, htmcr = %d, mma = %d, quad = %d, pair = %d, " "mmaint = %d, no32bit = %d, 32bit = %d, cpu = %d, ldstmask = %d, " - "lxvrse = %d, lxvrze = %d, endian = %d, ibmdld= %d.\n", + "lxvrse = %d, lxvrze = %d, endian = %d, ibmdld = %d, ibm128 = %d.\n", attrptr->isinit, attrptr->isset, attrptr->isextract, attrptr->isnosoft, attrptr->isldvec, attrptr->isstvec, attrptr->isreve, attrptr->ispred, attrptr->ishtm, attrptr->ishtmspr, attrptr->ishtmcr, attrptr->ismma, attrptr->isquad, attrptr->ispair, attrptr->ismmaint, attrptr->isno32bit, attrptr->is32bit, attrptr->iscpu, attrptr->isldstmask, attrptr->islxvrse, - attrptr->islxvrze, attrptr->isendian, attrptr->isibmld); + attrptr->islxvrze, attrptr->isendian, attrptr->isibmld, + attrptr->isibm128); #endif return PC_OK; @@ -2294,6 +2300,7 @@ write_decls (void) fprintf (header_file, "#define bif_lxvrze_bit\t\t(0x00100000)\n"); fprintf (header_file, "#define bif_endian_bit\t\t(0x00200000)\n"); fprintf (header_file, "#define bif_ibmld_bit\t\t(0x00400000)\n"); + fprintf (header_file, "#define bif_ibm128_bit\t\t(0x00800000)\n"); fprintf (header_file, "\n"); fprintf (header_file, "#define bif_is_init(x)\t\t((x).bifattrs & bif_init_bit)\n"); @@ -2341,6 +2348,8 @@ write_decls (void) "#define bif_is_endian(x)\t((x).bifattrs & bif_endian_bit)\n"); fprintf (header_file, "#define bif_is_ibmld(x)\t((x).bifattrs & bif_ibmld_bit)\n"); + fprintf (header_file, + "#define bif_is_ibm128(x)\t((x).bifattrs & bif_ibm128_bit)\n"); fprintf (header_file, "\n"); fprintf (header_file, @@ -2385,8 +2394,10 @@ write_type_node (char *tok, bool indent) { if (indent) fprintf (init_file, " "); - typemap *entry = (typemap *) bsearch (tok, type_map, TYPE_MAP_SIZE, - sizeof (typemap), typemap_cmp); + typemap *entry + = (typemap *) bsearch (tok, type_map, + sizeof type_map / sizeof type_map[0], + sizeof (typemap), typemap_cmp); if (!entry) fatal ("Type map is inconsistent."); fprintf (init_file, "%s_type_node", entry->value); @@ -2535,6 +2546,8 @@ write_bif_static_init (void) fprintf (init_file, " | bif_endian_bit"); if (bifp->attrs.isibmld) fprintf (init_file, " | bif_ibmld_bit"); + if (bifp->attrs.isibm128) + fprintf (init_file, " | bif_ibm128_bit"); fprintf (init_file, ",\n"); fprintf (init_file, " /* restr_opnd */\t{%d, %d, %d},\n", bifp->proto.restr_opnd[0], bifp->proto.restr_opnd[1], diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index 7afbc29..3afe78f 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -3512,7 +3512,7 @@ rs6000_linux64_override_options () { if (OPTION_SET_P (rs6000_current_cmodel) && rs6000_current_cmodel != CMODEL_SMALL) - error ("%<-mcmodel incompatible with other toc options%>"); + error ("%<-mcmodel%> incompatible with other toc options"); if (TARGET_MINIMAL_TOC) SET_CMODEL (CMODEL_SMALL); else if (TARGET_PCREL diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index 17af314..523256a5 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -2444,8 +2444,6 @@ enum rs6000_builtin_type_index RS6000_BTI_ptr_long_double, RS6000_BTI_ptr_dfloat64, RS6000_BTI_ptr_dfloat128, - RS6000_BTI_ptr_ieee128_float, - RS6000_BTI_ptr_ibm128_float, RS6000_BTI_ptr_vector_pair, RS6000_BTI_ptr_vector_quad, RS6000_BTI_ptr_long_long, @@ -2541,8 +2539,6 @@ enum rs6000_builtin_type_index #define ptr_long_double_type_node (rs6000_builtin_types[RS6000_BTI_ptr_long_double]) #define ptr_dfloat64_type_node (rs6000_builtin_types[RS6000_BTI_ptr_dfloat64]) #define ptr_dfloat128_type_node (rs6000_builtin_types[RS6000_BTI_ptr_dfloat128]) -#define ptr_ieee128_float_type_node (rs6000_builtin_types[RS6000_BTI_ptr_ieee128_float]) -#define ptr_ibm128_float_type_node (rs6000_builtin_types[RS6000_BTI_ptr_ibm128_float]) #define ptr_vector_pair_type_node (rs6000_builtin_types[RS6000_BTI_ptr_vector_pair]) #define ptr_vector_quad_type_node (rs6000_builtin_types[RS6000_BTI_ptr_vector_quad]) #define ptr_long_long_integer_type_node (rs6000_builtin_types[RS6000_BTI_ptr_long_long]) diff --git a/gcc/config/rx/rx.cc b/gcc/config/rx/rx.cc index 7c3975e..412a3a3 100644 --- a/gcc/config/rx/rx.cc +++ b/gcc/config/rx/rx.cc @@ -2477,7 +2477,7 @@ rx_expand_builtin_mvtc (tree exp) if (INTVAL (arg1) == 1) { - warning (0, "invalid control register for mvtc: %d - using 'psw'", + warning (0, "invalid control register %d for mvtc; using %<psw%>", (int) INTVAL (arg1)); arg1 = const0_rtx; } diff --git a/gcc/config/s390/s390.md b/gcc/config/s390/s390.md index 5eee8e8..d0f233e 100644 --- a/gcc/config/s390/s390.md +++ b/gcc/config/s390/s390.md @@ -9578,7 +9578,7 @@ (define_insn "*cmp_and_trap_unsigned_int<mode>" [(trap_if (match_operator 0 "s390_unsigned_integer_comparison" [(match_operand:GPR 1 "register_operand" "d,d,d") - (match_operand:GPR 2 "general_operand" "d,D,T")]) + (match_operand:GPR 2 "general_operand" "d,D,S")]) (const_int 0))] "TARGET_Z10" "@ diff --git a/gcc/config/vax/vax.cc b/gcc/config/vax/vax.cc index 20c4d52..f44e23d 100644 --- a/gcc/config/vax/vax.cc +++ b/gcc/config/vax/vax.cc @@ -1124,7 +1124,7 @@ vax_select_cc_mode (enum rtx_code op, /* Return the narrowest CC mode that spans both modes offered. If they intersect, this will be the wider of the two, and if they do not then - find find one that is a superset of both (i.e. CCNZmode for a pair + find one that is a superset of both (i.e. CCNZmode for a pair consisting of CCNmode and CCZmode). A wider CC writer will satisfy a narrower CC reader, e.g. a comparison operator that uses CCZmode can use a CCNZmode output of a previous instruction. */ diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 86e0432..1aeacce 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,112 @@ +2022-03-09 Patrick Palka <ppalka@redhat.com> + + PR c++/104823 + * except.cc (build_noexcept_spec): Strengthen dependence check + to instantiation_dependent_expression_p. + * parser.cc (cp_parser_parenthesized_expression_list_elt): + Remove fold_expr_p parameter, and don't call + instantiate_non_dependent_expr. + (cp_parser_parenthesized_expression_list): Adjust accordingly. + * pt.cc (expand_integer_pack): Strengthen dependence check + to instantiation_dependent_expression_p. + (instantiate_non_dependent_expr_internal): Adjust comment. + (instantiate_non_dependent_expr_sfinae): Likewise. Drop + the potentially-constant check, and relax and turn the + dependence check into a checking assert. + (instantiate_non_dependent_or_null): Adjust comment. + * semantics.cc (finish_decltype_type): Keep + processing_template_decl cleared after calling + instantiate_non_dependent_expr_sfinae. + +2022-03-09 Patrick Palka <ppalka@redhat.com> + + PR c++/102137 + PR c++/87820 + * cp-tree.h (is_copy_initialization): Declare. + * decl.cc (cp_finish_decl): Set LOOKUP_ONLYCONVERTING + when is_copy_initialization is true. + * init.cc (build_aggr_init): Split out copy-initialization + check into ... + (is_copy_initialization): ... here. + * pt.cc (instantiate_decl): Pass 0 instead of + LOOKUP_ONLYCONVERTING as flags to cp_finish_decl. + +2022-03-09 Patrick Palka <ppalka@redhat.com> + + PR c++/65396 + * cp-tree.h (merge_default_template_args): Declare. + * decl.cc (merge_default_template_args): Define, factored out + from redeclare_class_template. + (duplicate_decls): Use it when merging member function template + and free function declarations. + * pt.cc (redeclare_class_template): Factor out default argument + merging logic into merge_default_template_args. Improve location + of a note when there's a template parameter kind mismatch. + +2022-03-09 Jakub Jelinek <jakub@redhat.com> + + PR c/104711 + * constexpr.cc (cxx_eval_check_shift_p): Use TYPE_OVERFLOW_WRAPS + instead of TYPE_UNSIGNED. + * typeck.cc (cp_build_binary_op): Don't emit + -Wshift-negative-value warning if TYPE_OVERFLOW_WRAPS. + +2022-03-08 Roger Sayle <roger@nextmovesoftware.com> + + PR c++/96440 + * decl.cc (start_decl): Defend against prefix_attributes being + error_mark_node. + +2022-03-08 Roger Sayle <roger@nextmovesoftware.com> + + PR c++/96437 + * parser.cc (synthesize_implicit_template_parm): Check that + TREE_VALUE (new_parm) isn't error_mark_node before setting its + DECL_VIRTUAL_P. + +2022-03-08 Roger Sayle <roger@nextmovesoftware.com> + + PR c++/96329 + * parser.cc (cp_parser_linkage_specification): Treat the case where + linkage is error_mark_node as "invalid linkage-specification". + +2022-03-08 Marek Polacek <polacek@redhat.com> + + PR c++/104108 + * pt.cc (convert_nontype_argument): Recompute + value_dependent_expression_p after build_converted_constant_expr. + +2022-03-08 Marek Polacek <polacek@redhat.com> + + * decl2.cc (is_late_template_attribute): Do not defer attribute + unavailable. + * pt.cc (tsubst_enum): Set TREE_UNAVAILABLE. + +2022-03-08 Jakub Jelinek <jakub@redhat.com> + + PR c++/104806 + * search.cc (lookup_field_fuzzy_info::fuzzy_lookup_field): Ignore + identifiers with space at the end. + +2022-03-07 Jason Merrill <jason@redhat.com> + + PR c++/104618 + * decl2.cc (mark_single_function): Look through parens and location + wrapper. + * typeck.cc (cp_build_addr_expr_1): Not here. + +2022-03-07 Jakub Jelinek <jakub@redhat.com> + + * parser.cc (cp_parser_omp_clause_map): Add missing space in string + literal. + +2022-03-07 Jakub Jelinek <jakub@redhat.com> + + * cvt.cc: Fix up duplicated word issue in a comment. + * pt.cc: Likewise. + * module.cc: Likewise. + * coroutines.cc: Likewise. + 2022-03-04 Nathan Sidwell <nathan@acm.org> * mangle.cc (is_std_substitution): Check global module. diff --git a/gcc/cp/constexpr.cc b/gcc/cp/constexpr.cc index 4716694..3889579 100644 --- a/gcc/cp/constexpr.cc +++ b/gcc/cp/constexpr.cc @@ -3165,7 +3165,7 @@ cxx_eval_check_shift_p (location_t loc, const constexpr_ctx *ctx, The value of E1 << E2 is the unique value congruent to E1 x 2^E2 modulo 2^N, where N is the range exponent of the type of the result. */ if (code == LSHIFT_EXPR - && !TYPE_UNSIGNED (lhstype) + && !TYPE_OVERFLOW_WRAPS (lhstype) && cxx_dialect >= cxx11 && cxx_dialect < cxx20) { diff --git a/gcc/cp/coroutines.cc b/gcc/cp/coroutines.cc index 1792bf6..23dc282 100644 --- a/gcc/cp/coroutines.cc +++ b/gcc/cp/coroutines.cc @@ -1824,7 +1824,7 @@ expand_one_await_expression (tree *stmt, tree *await_expr, void *d) cp_walk_tree (await_init, co_await_find_in_subtree, &aw_expr_ptr, NULL)) expand_one_await_expression (await_init, aw_expr_ptr, d); - /* Expand any more await expressions in the the original statement. */ + /* Expand any more await expressions in the original statement. */ if (cp_walk_tree (revised, co_await_find_in_subtree, &aw_expr_ptr, NULL)) expand_one_await_expression (revised, aw_expr_ptr, d); diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index cf08e16..b71bce1 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -6787,6 +6787,7 @@ extern void note_iteration_stmt_body_end (bool); extern void determine_local_discriminator (tree); extern int decls_match (tree, tree, bool = true); extern bool maybe_version_functions (tree, tree, bool); +extern bool merge_default_template_args (tree, tree, bool); extern tree duplicate_decls (tree, tree, bool hiding = false, bool was_hidden = false); @@ -7036,6 +7037,7 @@ extern void emit_mem_initializers (tree); extern tree build_aggr_init (tree, tree, int, tsubst_flags_t); extern int is_class_type (tree, int); +extern bool is_copy_initialization (tree); extern tree build_zero_init (tree, tree, bool); extern tree build_value_init (tree, tsubst_flags_t); extern tree build_value_init_noctor (tree, tsubst_flags_t); diff --git a/gcc/cp/cvt.cc b/gcc/cp/cvt.cc index 53aa413..30a9806 100644 --- a/gcc/cp/cvt.cc +++ b/gcc/cp/cvt.cc @@ -2092,7 +2092,7 @@ can_convert_tx_safety (tree to, tree from) } /* Return true iff FROM can convert to TO by dropping noexcept. - This is just a subroutine of of fnptr_conv_p. */ + This is just a subroutine of fnptr_conv_p. */ static bool noexcept_conv_p (tree to, tree from) diff --git a/gcc/cp/decl.cc b/gcc/cp/decl.cc index 7f80f9d..5821090 100644 --- a/gcc/cp/decl.cc +++ b/gcc/cp/decl.cc @@ -1470,6 +1470,43 @@ duplicate_function_template_decls (tree newdecl, tree olddecl) return false; } +/* OLD_PARMS is the innermost set of template parameters for some template + declaration, and NEW_PARMS is the corresponding set of template parameters + for a redeclaration of that template. Merge the default arguments within + these two sets of parameters. CLASS_P is true iff the template in + question is a class template. */ + +bool +merge_default_template_args (tree new_parms, tree old_parms, bool class_p) +{ + gcc_checking_assert (TREE_VEC_LENGTH (new_parms) + == TREE_VEC_LENGTH (old_parms)); + for (int i = 0; i < TREE_VEC_LENGTH (new_parms); i++) + { + tree new_parm = TREE_VALUE (TREE_VEC_ELT (new_parms, i)); + tree old_parm = TREE_VALUE (TREE_VEC_ELT (old_parms, i)); + tree& new_default = TREE_PURPOSE (TREE_VEC_ELT (new_parms, i)); + tree& old_default = TREE_PURPOSE (TREE_VEC_ELT (old_parms, i)); + if (new_default != NULL_TREE && old_default != NULL_TREE) + { + auto_diagnostic_group d; + error ("redefinition of default argument for %q+#D", new_parm); + inform (DECL_SOURCE_LOCATION (old_parm), + "original definition appeared here"); + return false; + } + else if (new_default != NULL_TREE) + /* Update the previous template parameters (which are the ones + that will really count) with the new default value. */ + old_default = new_default; + else if (class_p && old_default != NULL_TREE) + /* Update the new parameters, too; they'll be used as the + parameters for any members. */ + new_default = old_default; + } + return true; +} + /* If NEWDECL is a redeclaration of OLDDECL, merge the declarations. If the redeclaration is invalid, a diagnostic is issued, and the error_mark_node is returned. Otherwise, OLDDECL is returned. @@ -1990,7 +2027,21 @@ duplicate_decls (tree newdecl, tree olddecl, bool hiding, bool was_hidden) template shall be specified on the initial declaration of the member function within the class template. */ || CLASSTYPE_TEMPLATE_INFO (CP_DECL_CONTEXT (olddecl)))) - check_redeclaration_no_default_args (newdecl); + { + check_redeclaration_no_default_args (newdecl); + + if (DECL_TEMPLATE_INFO (olddecl) + && DECL_MEMBER_TEMPLATE_P (DECL_TI_TEMPLATE (olddecl))) + { + tree new_parms = DECL_TEMPLATE_INFO (newdecl) + ? DECL_INNERMOST_TEMPLATE_PARMS (DECL_TI_TEMPLATE (newdecl)) + : INNERMOST_TEMPLATE_PARMS (current_template_parms); + tree old_parms + = DECL_INNERMOST_TEMPLATE_PARMS (DECL_TI_TEMPLATE (olddecl)); + merge_default_template_args (new_parms, old_parms, + /*class_p=*/false); + } + } else { tree t1 = FUNCTION_FIRST_USER_PARMTYPE (olddecl); @@ -2235,6 +2286,11 @@ duplicate_decls (tree newdecl, tree olddecl, bool hiding, bool was_hidden) translation unit." */ check_no_redeclaration_friend_default_args (old_result, new_result); + + tree new_parms = DECL_INNERMOST_TEMPLATE_PARMS (newdecl); + tree old_parms = DECL_INNERMOST_TEMPLATE_PARMS (olddecl); + merge_default_template_args (new_parms, old_parms, + /*class_p=*/false); } if (!DECL_UNIQUE_FRIEND_P (old_result)) DECL_UNIQUE_FRIEND_P (new_result) = false; @@ -5483,13 +5539,15 @@ start_decl (const cp_declarator *declarator, *pushed_scope_p = NULL_TREE; - attributes = chainon (attributes, prefix_attributes); + if (prefix_attributes != error_mark_node) + attributes = chainon (attributes, prefix_attributes); decl = grokdeclarator (declarator, declspecs, NORMAL, initialized, &attributes); if (decl == NULL_TREE || VOID_TYPE_P (decl) - || decl == error_mark_node) + || decl == error_mark_node + || prefix_attributes == error_mark_node) return error_mark_node; context = CP_DECL_CONTEXT (decl); @@ -7904,6 +7962,9 @@ cp_finish_decl (tree decl, tree init, bool init_const_expr_p, if (type == error_mark_node) return; + if (VAR_P (decl) && is_copy_initialization (init)) + flags |= LOOKUP_ONLYCONVERTING; + /* Warn about register storage specifiers except when in GNU global or local register variable extension. */ if (VAR_P (decl) && DECL_REGISTER (decl) && asmspec_tree == NULL_TREE) @@ -16202,7 +16263,7 @@ finish_enum_value_list (tree enumtype) /* Update the minimum and maximum values, if appropriate. */ value = DECL_INITIAL (decl); - if (value == error_mark_node) + if (TREE_CODE (value) != INTEGER_CST) value = integer_zero_node; /* Figure out what the minimum and maximum values of the enumerators are. */ @@ -16491,7 +16552,7 @@ build_enumerator (tree name, tree value, tree enumtype, tree attributes, which case the type is an unspecified integral type sufficient to contain the incremented value. */ prev_value = DECL_INITIAL (TREE_VALUE (TYPE_VALUES (enumtype))); - if (error_operand_p (prev_value)) + if (TREE_CODE (prev_value) != INTEGER_CST) value = error_mark_node; else { diff --git a/gcc/cp/decl2.cc b/gcc/cp/decl2.cc index 22edc2b..c53acf4 100644 --- a/gcc/cp/decl2.cc +++ b/gcc/cp/decl2.cc @@ -1314,6 +1314,7 @@ is_late_template_attribute (tree attr, tree decl) /* But some attributes specifically apply to templates. */ && !is_attribute_p ("abi_tag", name) && !is_attribute_p ("deprecated", name) + && !is_attribute_p ("unavailable", name) && !is_attribute_p ("visibility", name)) return true; else @@ -5737,6 +5738,9 @@ decl_dependent_p (tree decl) bool mark_single_function (tree expr, tsubst_flags_t complain) { + expr = maybe_undo_parenthesized_ref (expr); + expr = tree_strip_any_location_wrapper (expr); + if (is_overloaded_fn (expr) == 1 && !mark_used (expr, complain) && (complain & tf_error)) diff --git a/gcc/cp/except.cc b/gcc/cp/except.cc index 9b746be..da0a65c 100644 --- a/gcc/cp/except.cc +++ b/gcc/cp/except.cc @@ -1253,7 +1253,7 @@ build_noexcept_spec (tree expr, tsubst_flags_t complain) if (check_for_bare_parameter_packs (expr)) return error_mark_node; if (TREE_CODE (expr) != DEFERRED_NOEXCEPT - && !value_dependent_expression_p (expr)) + && !instantiation_dependent_expression_p (expr)) { expr = build_converted_constant_bool_expr (expr, complain); expr = instantiate_non_dependent_expr_sfinae (expr, complain); diff --git a/gcc/cp/init.cc b/gcc/cp/init.cc index 545d904..cd1d6f8 100644 --- a/gcc/cp/init.cc +++ b/gcc/cp/init.cc @@ -2019,11 +2019,7 @@ build_aggr_init (tree exp, tree init, int flags, tsubst_flags_t complain) return stmt_expr; } - if (init && init != void_type_node - && TREE_CODE (init) != TREE_LIST - && !(TREE_CODE (init) == TARGET_EXPR - && TARGET_EXPR_DIRECT_INIT_P (init)) - && !DIRECT_LIST_INIT_P (init)) + if (is_copy_initialization (init)) flags |= LOOKUP_ONLYCONVERTING; is_global = begin_init_stmts (&stmt_expr, &compound_stmt); @@ -2331,6 +2327,19 @@ is_class_type (tree type, int or_else) return 1; } +/* Returns true iff the initializer INIT represents copy-initialization + (and therefore we must set LOOKUP_ONLYCONVERTING when processing it). */ + +bool +is_copy_initialization (tree init) +{ + return (init && init != void_type_node + && TREE_CODE (init) != TREE_LIST + && !(TREE_CODE (init) == TARGET_EXPR + && TARGET_EXPR_DIRECT_INIT_P (init)) + && !DIRECT_LIST_INIT_P (init)); +} + /* Build a reference to a member of an aggregate. This is not a C++ `&', but really something which can have its address taken, and then act as a pointer to member, for example TYPE :: FIELD can have diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc index ddaf9c2..cebf9c3 100644 --- a/gcc/cp/module.cc +++ b/gcc/cp/module.cc @@ -4617,7 +4617,7 @@ create_dirs (char *path) } } -/* Given a CLASSTYPE_DECL_LIST VALUE get the the template friend decl, +/* Given a CLASSTYPE_DECL_LIST VALUE get the template friend decl, if that's what this is. */ static tree diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc index 03d99ab..18db9d4 100644 --- a/gcc/cp/parser.cc +++ b/gcc/cp/parser.cc @@ -7958,7 +7958,6 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p, static cp_expr cp_parser_parenthesized_expression_list_elt (cp_parser *parser, bool cast_p, bool allow_expansion_p, - bool fold_expr_p, bool *non_constant_p) { cp_expr expr (NULL_TREE); @@ -7985,9 +7984,6 @@ cp_parser_parenthesized_expression_list_elt (cp_parser *parser, bool cast_p, else expr = cp_parser_assignment_expression (parser, /*pidk=*/NULL, cast_p); - if (fold_expr_p) - expr = instantiate_non_dependent_expr (expr); - /* If we have an ellipsis, then this is an expression expansion. */ if (allow_expansion_p && cp_lexer_next_token_is (parser->lexer, CPP_ELLIPSIS)) @@ -8053,8 +8049,6 @@ cp_parser_postfix_open_square_expression (cp_parser *parser, false, /*allow_exp_p=*/ true, - /*fold_expr_p=*/ - false, /*non_cst_p=*/ NULL); @@ -8424,7 +8418,6 @@ cp_parser_parenthesized_expression_list (cp_parser* parser, bool wrap_locations_p) { vec<tree, va_gc> *expression_list; - bool fold_expr_p = is_attribute_list != non_attr; tree identifier = NULL_TREE; bool saved_greater_than_is_operator_p; @@ -8467,7 +8460,6 @@ cp_parser_parenthesized_expression_list (cp_parser* parser, expr = cp_parser_parenthesized_expression_list_elt (parser, cast_p, allow_expansion_p, - fold_expr_p, non_constant_p); if (wrap_locations_p) @@ -16148,8 +16140,9 @@ cp_parser_linkage_specification (cp_parser* parser, tree prefix_attr) /* Transform the literal into an identifier. If the literal is a wide-character string, or contains embedded NULs, then we can't handle it as the user wants. */ - if (strlen (TREE_STRING_POINTER (linkage)) - != (size_t) (TREE_STRING_LENGTH (linkage) - 1)) + if (linkage == error_mark_node + || strlen (TREE_STRING_POINTER (linkage)) + != (size_t) (TREE_STRING_LENGTH (linkage) - 1)) { cp_parser_error (parser, "invalid linkage-specification"); /* Assume C++ linkage. */ @@ -32126,8 +32119,9 @@ cp_parser_late_parsing_for_member (cp_parser* parser, tree member_function) maybe_begin_member_template_processing (member_function); /* If the body of the function has not yet been parsed, parse it - now. */ - if (DECL_PENDING_INLINE_P (member_function)) + now. Except if the tokens have been purged (PR c++/39751). */ + if (DECL_PENDING_INLINE_P (member_function) + && !DECL_PENDING_INLINE_INFO (member_function)->first->purged_p) { tree function_scope; cp_token_cache *tokens; @@ -39432,8 +39426,8 @@ cp_parser_omp_clause_map (cp_parser *parser, tree list) else { cp_parser_error (parser, "%<#pragma omp target%> with " - "modifier other than %<always%> or %<close%>" - "on %<map%> clause"); + "modifier other than %<always%> or " + "%<close%> on %<map%> clause"); cp_parser_skip_to_closing_parenthesis (parser, /*recovering=*/true, /*or_comma=*/false, @@ -48217,7 +48211,8 @@ synthesize_implicit_template_parm (cp_parser *parser, tree constr) function template is equivalent to an explicit template. Note that DECL_ARTIFICIAL is used elsewhere for template parameters. */ - DECL_VIRTUAL_P (TREE_VALUE (new_parm)) = true; + if (TREE_VALUE (new_parm) != error_mark_node) + DECL_VIRTUAL_P (TREE_VALUE (new_parm)) = true; // Chain the new parameter to the list of implicit parameters. if (parser->implicit_template_parms) diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 8fb1734..f7ee33a 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -3817,7 +3817,7 @@ expand_integer_pack (tree call, tree args, tsubst_flags_t complain, tree hi = tsubst_copy_and_build (ohi, args, complain, in_decl, false/*fn*/, true/*int_cst*/); - if (value_dependent_expression_p (hi)) + if (instantiation_dependent_expression_p (hi)) { if (hi != ohi) { @@ -6274,8 +6274,6 @@ redeclare_class_template (tree type, tree parms, tree cons) { tree tmpl_parm; tree parm; - tree tmpl_default; - tree parm_default; if (TREE_VEC_ELT (tmpl_parms, i) == error_mark_node || TREE_VEC_ELT (parms, i) == error_mark_node) @@ -6286,8 +6284,6 @@ redeclare_class_template (tree type, tree parms, tree cons) return false; parm = TREE_VALUE (TREE_VEC_ELT (parms, i)); - tmpl_default = TREE_PURPOSE (TREE_VEC_ELT (tmpl_parms, i)); - parm_default = TREE_PURPOSE (TREE_VEC_ELT (parms, i)); /* TMPL_PARM and PARM can be either TYPE_DECL, PARM_DECL, or TEMPLATE_DECL. */ @@ -6303,7 +6299,7 @@ redeclare_class_template (tree type, tree parms, tree cons) { auto_diagnostic_group d; error ("template parameter %q+#D", tmpl_parm); - inform (input_location, "redeclared here as %q#D", parm); + inform (DECL_SOURCE_LOCATION (parm), "redeclared here as %q#D", parm); return false; } @@ -6321,28 +6317,6 @@ redeclare_class_template (tree type, tree parms, tree cons) return false; } - if (tmpl_default != NULL_TREE && parm_default != NULL_TREE) - { - /* We have in [temp.param]: - - A template-parameter may not be given default arguments - by two different declarations in the same scope. */ - auto_diagnostic_group d; - error_at (input_location, "redefinition of default argument for %q#D", parm); - inform (DECL_SOURCE_LOCATION (tmpl_parm), - "original definition appeared here"); - return false; - } - - if (parm_default != NULL_TREE) - /* Update the previous template parameters (which are the ones - that will really count) with the new default value. */ - TREE_PURPOSE (TREE_VEC_ELT (tmpl_parms, i)) = parm_default; - else if (tmpl_default != NULL_TREE) - /* Update the new parameters, too; they'll be used as the - parameters for any members. */ - TREE_PURPOSE (TREE_VEC_ELT (parms, i)) = tmpl_default; - /* Give each template template parm in this redeclaration a DECL_CONTEXT of the template for which they are a parameter. */ if (TREE_CODE (parm) == TEMPLATE_DECL) @@ -6352,6 +6326,9 @@ redeclare_class_template (tree type, tree parms, tree cons) } } + if (!merge_default_template_args (parms, tmpl_parms, /*class_p=*/true)) + return false; + tree ci = get_constraints (tmpl); tree req1 = ci ? CI_TEMPLATE_REQS (ci) : NULL_TREE; tree req2 = cons ? CI_TEMPLATE_REQS (cons) : NULL_TREE; @@ -6372,9 +6349,7 @@ redeclare_class_template (tree type, tree parms, tree cons) /* The actual substitution part of instantiate_non_dependent_expr_sfinae, to be used when the caller has already checked - (processing_template_decl - && !instantiation_dependent_expression_p (expr) - && potential_constant_expression (expr)) + !instantiation_dependent_uneval_expression_p (expr) and cleared processing_template_decl. */ tree @@ -6388,8 +6363,7 @@ instantiate_non_dependent_expr_internal (tree expr, tsubst_flags_t complain) /*integral_constant_expression_p=*/true); } -/* Simplify EXPR if it is a non-dependent expression. Returns the - (possibly simplified) expression. */ +/* Instantiate the non-dependent expression EXPR. */ tree instantiate_non_dependent_expr_sfinae (tree expr, tsubst_flags_t complain) @@ -6397,16 +6371,10 @@ instantiate_non_dependent_expr_sfinae (tree expr, tsubst_flags_t complain) if (expr == NULL_TREE) return NULL_TREE; - /* If we're in a template, but EXPR isn't value dependent, simplify - it. We're supposed to treat: - - template <typename T> void f(T[1 + 1]); - template <typename T> void f(T[2]); - - as two declarations of the same function, for example. */ - if (processing_template_decl - && is_nondependent_constant_expression (expr)) + if (processing_template_decl) { + /* The caller should have checked this already. */ + gcc_checking_assert (!instantiation_dependent_uneval_expression_p (expr)); processing_template_decl_sentinel s; expr = instantiate_non_dependent_expr_internal (expr, complain); } @@ -6419,8 +6387,8 @@ instantiate_non_dependent_expr (tree expr) return instantiate_non_dependent_expr_sfinae (expr, tf_error); } -/* Like instantiate_non_dependent_expr, but return NULL_TREE rather than - an uninstantiated expression. */ +/* Like instantiate_non_dependent_expr, but return NULL_TREE if the + expression is dependent or non-constant. */ tree instantiate_non_dependent_or_null (tree expr) @@ -7316,7 +7284,7 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain) if (non_dep) expr = instantiate_non_dependent_expr_internal (expr, complain); - const bool val_dep_p = value_dependent_expression_p (expr); + bool val_dep_p = value_dependent_expression_p (expr); if (val_dep_p) expr = canonicalize_expr_argument (expr, complain); else @@ -7357,6 +7325,8 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain) expr = maybe_constant_value (expr, NULL_TREE, /*manifestly_const_eval=*/true); expr = convert_from_reference (expr); + /* EXPR may have become value-dependent. */ + val_dep_p = value_dependent_expression_p (expr); } else if (TYPE_PTR_OR_PTRMEM_P (type)) { @@ -26602,8 +26572,7 @@ instantiate_decl (tree d, bool defer_ok, bool expl_inst_class_mem_p) const_init = DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (code_pattern); cp_finish_decl (d, init, /*init_const_expr_p=*/const_init, - /*asmspec_tree=*/NULL_TREE, - LOOKUP_ONLYCONVERTING); + /*asmspec_tree=*/NULL_TREE, 0); } if (enter_context) pop_nested_class (); @@ -26976,9 +26945,7 @@ tsubst_enum (tree tag, tree newtag, tree args) DECL_SOURCE_LOCATION (TYPE_NAME (newtag)) = DECL_SOURCE_LOCATION (TYPE_NAME (tag)); TREE_DEPRECATED (newtag) = TREE_DEPRECATED (tag); - /* We don't need to propagate TREE_UNAVAILABLE here, because it is, unlike - deprecated, applied at instantiation time rather than template - definition time. */ + TREE_UNAVAILABLE (newtag) = TREE_UNAVAILABLE (tag); } /* DECL is a FUNCTION_DECL that is a template specialization. Return @@ -30049,7 +30016,7 @@ do_class_deduction (tree ptype, tree tmpl, tree init, OUTER_TARGS is used during template argument deduction (context == adc_unify) to properly substitute the result. It's also used in the adc_unify and - adc_requirement contexts to communicate the the necessary template arguments + adc_requirement contexts to communicate the necessary template arguments to satisfaction. OUTER_TARGS is ignored in other contexts. For partial-concept-ids, extra args may be appended to the list of deduced diff --git a/gcc/cp/search.cc b/gcc/cp/search.cc index 00c669e..2b82104 100644 --- a/gcc/cp/search.cc +++ b/gcc/cp/search.cc @@ -1275,6 +1275,13 @@ lookup_field_fuzzy_info::fuzzy_lookup_field (tree type) if (is_lambda_ignored_entity (field)) continue; + /* Ignore special identifiers with space at the end like cdtor or + conversion op identifiers. */ + if (TREE_CODE (DECL_NAME (field)) == IDENTIFIER_NODE) + if (unsigned int len = IDENTIFIER_LENGTH (DECL_NAME (field))) + if (IDENTIFIER_POINTER (DECL_NAME (field))[len - 1] == ' ') + continue; + m_candidates.safe_push (DECL_NAME (field)); } } diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc index a2c0eb0..799ce94 100644 --- a/gcc/cp/semantics.cc +++ b/gcc/cp/semantics.cc @@ -11217,6 +11217,8 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p, /* decltype is an unevaluated context. */ cp_unevaluated u; + processing_template_decl_sentinel ptds (/*reset=*/false); + /* Depending on the resolution of DR 1172, we may later need to distinguish instantiation-dependent but not type-dependent expressions so that, say, A<decltype(sizeof(T))>::U doesn't require 'typename'. */ @@ -11235,6 +11237,10 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p, expr = instantiate_non_dependent_expr_sfinae (expr, complain); if (expr == error_mark_node) return error_mark_node; + /* Keep processing_template_decl cleared for the rest of the function + (for sake of the call to lvalue_kind below, which handles templated + and non-templated COND_EXPR differently). */ + processing_template_decl = 0; } /* The type denoted by decltype(e) is defined as follows: */ diff --git a/gcc/cp/typeck.cc b/gcc/cp/typeck.cc index bddc837..516fa57 100644 --- a/gcc/cp/typeck.cc +++ b/gcc/cp/typeck.cc @@ -5382,6 +5382,7 @@ cp_build_binary_op (const op_location_t &location, doing_shift = true; if (TREE_CODE (const_op0) == INTEGER_CST && tree_int_cst_sgn (const_op0) < 0 + && !TYPE_OVERFLOW_WRAPS (type0) && (complain & tf_warning) && c_inhibit_evaluation_warnings == 0) warning_at (location, OPT_Wshift_negative_value, @@ -6884,9 +6885,7 @@ cp_build_addr_expr_1 (tree arg, bool strict_lvalue, tsubst_flags_t complain) so we can just form an ADDR_EXPR with the correct type. */ if (processing_template_decl || TREE_CODE (arg) != COMPONENT_REF) { - tree stripped_arg - = tree_strip_any_location_wrapper (maybe_undo_parenthesized_ref (arg)); - if (!mark_single_function (stripped_arg, complain)) + if (!mark_single_function (arg, complain)) return error_mark_node; val = build_address (arg); if (TREE_CODE (arg) == OFFSET_REF) @@ -144,7 +144,7 @@ typedef struct GTY ((chain_next ("%h.dmd_next"))) ctf_dmdef typedef struct GTY (()) ctf_func_arg { ctf_id_t farg_type; /* Type identifier of the argument. */ - const char * farg_name; /* Name of the the argument. */ + const char * farg_name; /* Name of the argument. */ uint32_t farg_name_offset; /* Offset of the name in str table. */ struct ctf_func_arg * farg_next;/* A list node. */ } ctf_func_arg_t; diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index d91cf5d..b745947 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -5772,7 +5772,7 @@ name is still supported, but the newer name is more descriptive.) -Wredundant-move @r{(only for C++)} @gol -Wtype-limits @gol -Wuninitialized @gol --Wshift-negative-value @r{(in C++03 and in C99 and newer)} @gol +-Wshift-negative-value @r{(in C++11 to C++17 and in C99 and newer)} @gol -Wunused-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)} @gol -Wunused-but-set-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)}} @@ -6802,7 +6802,7 @@ of the type. This warning is enabled by default. @opindex Wshift-negative-value @opindex Wno-shift-negative-value Warn if left shifting a negative value. This warning is enabled by -@option{-Wextra} in C99 and C++11 modes (and newer). +@option{-Wextra} in C99 (and newer) and C++11 to C++17 modes. @item -Wno-shift-overflow @itemx -Wshift-overflow=@var{n} @@ -14952,6 +14952,9 @@ in an inner loop relative to the loop being vectorized. The factor applied is the maximum of the estimated number of iterations of the inner loop and this parameter. The default value of this parameter is 50. +@item vect-induction-float +Enable loop vectorization of floating point inductions. + @item avoid-fma-max-bits Maximum number of bits for which we avoid creating FMAs. @@ -34107,9 +34110,7 @@ provides a modular compilation system, intending to provide both faster builds and better library isolation. The ``Merging Modules'' paper @uref{https://wg21.link/p1103}, provides the easiest to read set of changes to the standard, although it does not capture later -changes. That specification is now part of C++20, -@uref{git@@github.com:cplusplus/draft.git}, it is considered complete -(there may be defect reports to come). +changes. @emph{G++'s modules support is not complete.} Other than bugs, the known missing pieces are: diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 03eb245..f49b8e2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,64 @@ +2022-03-09 Harald Anlauf <anlauf@gmx.de> + + PR fortran/104849 + * expr.cc (find_array_section): Avoid NULL pointer dereference on + invalid array section. + +2022-03-09 Tobias Burnus <tobias@codesourcery.com> + + * trans-intrinsic.cc (gfc_conv_intrinsic_sizeof): Fix CLASS handling. + +2022-03-08 Tobias Burnus <tobias@codesourcery.com> + + PR fortran/104126 + * trans-expr.cc (gfc_conv_gfc_desc_to_cfi_desc): Handle NULL + without MOLD. + +2022-03-08 Harald Anlauf <anlauf@gmx.de> + + PR fortran/104811 + * frontend-passes.cc (optimize_minmaxloc): Do not attempt + frontend-optimization of MINLOC/MAXLOC for character arrays, as + there is no suitable code yet for inline expansion. + +2022-03-07 Tobias Burnus <tobias@codesourcery.com> + + PR fortran/99585 + PR fortran/104430 + * trans-expr.cc (conv_parent_component_references): Fix comment; + simplify comparison. + (gfc_maybe_dereference_var): Avoid d referencing a nonpointer. + +2022-03-07 Tobias Burnus <tobias@codesourcery.com> + + * array.cc (gfc_ref_dimen_size): Fix comment typo. + * dump-parse-tree.cc (gfc_dump_c_prototypes): Likewise. + * frontend-passes.cc (cfe_code): Likewise. + * gfortran.texi: Likewise. + * resolve.cc (generate_component_assignments): Likewise. + * simplify.cc (gfc_simplify_this_image): Likewise. + * trans-expr.cc (trans_scalar_class_assign, + gfc_maybe_dereference_var): Likewise. + * intrinsic.texi: Remove word duplication. + * invoke.texi: Likewise. + +2022-03-07 Jakub Jelinek <jakub@redhat.com> + + * trans-expr.cc: Fix up duplicated word issue in a comment. + * gfortran.h: Likewise. + * scanner.cc: Likewise. + +2022-03-07 Martin Liska <mliska@suse.cz> + + * intrinsic.cc (gfc_is_intrinsic): Remove asterisk from error + message. + +2022-03-07 Martin Liska <mliska@suse.cz> + + PR translation/90148 + * intrinsic.cc (gfc_is_intrinsic): Put + quote to a proper place. + 2022-03-03 Kwok Cheung Yeung <kcy@codesourcery.com> PR fortran/104131 diff --git a/gcc/fortran/array.cc b/gcc/fortran/array.cc index f1d92e0..eb9ed85 100644 --- a/gcc/fortran/array.cc +++ b/gcc/fortran/array.cc @@ -2420,7 +2420,7 @@ gfc_ref_dimen_size (gfc_array_ref *ar, int dimen, mpz_t *result, mpz_t *end) gfc_free_expr(stride_expr); } - /* Calculate the number of elements via gfc_dep_differce, but only if + /* Calculate the number of elements via gfc_dep_difference, but only if start and end are both supplied in the reference or the array spec. This is to guard against strange but valid code like diff --git a/gcc/fortran/dump-parse-tree.cc b/gcc/fortran/dump-parse-tree.cc index 322416e..3635460 100644 --- a/gcc/fortran/dump-parse-tree.cc +++ b/gcc/fortran/dump-parse-tree.cc @@ -3543,7 +3543,7 @@ gfc_dump_c_prototypes (gfc_namespace *ns, FILE *file) gfc_traverse_ns (ns, write_interop_decl); } -/* Loop over all global symbols, writing out their declrations. */ +/* Loop over all global symbols, writing out their declarations. */ void gfc_dump_external_c_prototypes (FILE * file) diff --git a/gcc/fortran/expr.cc b/gcc/fortran/expr.cc index c9c0ba4..86d61fe 100644 --- a/gcc/fortran/expr.cc +++ b/gcc/fortran/expr.cc @@ -1594,7 +1594,9 @@ find_array_section (gfc_expr *expr, gfc_ref *ref) { if ((begin && begin->expr_type != EXPR_CONSTANT) || (finish && finish->expr_type != EXPR_CONSTANT) - || (step && step->expr_type != EXPR_CONSTANT)) + || (step && step->expr_type != EXPR_CONSTANT) + || (!begin && !lower) + || (!finish && !upper)) { t = false; goto cleanup; diff --git a/gcc/fortran/frontend-passes.cc b/gcc/fortran/frontend-passes.cc index 22f1bb5..5eba634 100644 --- a/gcc/fortran/frontend-passes.cc +++ b/gcc/fortran/frontend-passes.cc @@ -974,7 +974,7 @@ cfe_code (gfc_code **c, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) changed_statement = NULL; /* Do not do anything inside a WHERE statement; scalar assignments, BLOCKs - and allocation on assigment are prohibited inside WHERE, and finally + and allocation on assignment are prohibited inside WHERE, and finally masking an expression would lead to wrong-code when replacing WHERE (a>0) @@ -2276,6 +2276,7 @@ optimize_minmaxloc (gfc_expr **e) if (fn->rank != 1 || fn->value.function.actual == NULL || fn->value.function.actual->expr == NULL + || fn->value.function.actual->expr->ts.type == BT_CHARACTER || fn->value.function.actual->expr->rank != 1) return; diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index f8fd1ba..7bf1d5a 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -2137,7 +2137,7 @@ typedef struct gfc_namespace /* Linked list of !$omp declare variant constructs. */ struct gfc_omp_declare_variant *omp_declare_variant; - /* A hash set for the the gfc expressions that have already + /* A hash set for the gfc expressions that have already been finalized in this namespace. */ gfc_was_finalized *was_finalized; diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index 2a55676..f8737f4 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -1093,7 +1093,7 @@ variable. The maximum number of bytes of user data in a subrecord is 2147483639 (2 GiB - 9) for a four-byte record marker. This limit can be lowered -with the @option{-fmax-subrecord-length} option, altough this is +with the @option{-fmax-subrecord-length} option, although this is rarely useful. If the length of a logical record exceeds this limit, the data is distributed among several subrecords. diff --git a/gcc/fortran/intrinsic.cc b/gcc/fortran/intrinsic.cc index 52e5f4e..2339d90 100644 --- a/gcc/fortran/intrinsic.cc +++ b/gcc/fortran/intrinsic.cc @@ -1184,7 +1184,7 @@ gfc_is_intrinsic (gfc_symbol* sym, int subroutine_flag, locus loc) gfc_warning_now (OPT_Wintrinsics_std, "The intrinsic %qs at %L is not " "included in the selected standard but %s and %qs will" " be treated as if declared EXTERNAL. Use an" - " appropriate %<-std=%>* option or define" + " appropriate %<-std=%> option or define" " %<-fall-intrinsics%> to allow this intrinsic.", sym->name, &loc, symstd, sym->name); diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index c947425..ceb5171 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -12881,7 +12881,7 @@ end program real_kinds @table @asis @item @emph{Description}: @code{SET_EXPONENT(X, I)} returns the real number whose fractional part -is that that of @var{X} and whose exponent part is @var{I}. +is that of @var{X} and whose exponent part is @var{I}. @item @emph{Standard}: Fortran 90 and later @@ -12901,7 +12901,7 @@ Elemental function @item @emph{Return value}: The return value is of the same type and kind as @var{X}. The real number whose fractional part -is that that of @var{X} and whose exponent part if @var{I} is returned; +is that of @var{X} and whose exponent part if @var{I} is returned; it is @code{FRACTION(X) * RADIX(X)**I}. @item @emph{Example}: diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 4635831..3943ba5 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -1826,7 +1826,7 @@ except when optimizing for size via @option{-Os}. If the code contains a very large number of argument that have to be packed, code size and also compilation time may become excessive. If that is the case, it may be better to disable this option. Instances of packing -can be found by using by using @option{-Warray-temporaries}. +can be found by using @option{-Warray-temporaries}. @item -fexternal-blas @opindex @code{fexternal-blas} @@ -2034,7 +2034,7 @@ does not generate prototypes for @code{BIND(C)} procedures, use @option{-fc-prototypes} for that. The generated prototypes may need inclusion of an appropriate -header, such as as @code{<stdint.h>} or @code{<stdlib.h>}. +header, such as @code{<stdint.h>} or @code{<stdlib.h>}. This is primarily meant for legacy code to ensure that existing C bindings match what @command{gfortran} emits. The generated C diff --git a/gcc/fortran/resolve.cc b/gcc/fortran/resolve.cc index 0afa5d3..0b55961 100644 --- a/gcc/fortran/resolve.cc +++ b/gcc/fortran/resolve.cc @@ -11539,7 +11539,7 @@ generate_component_assignments (gfc_code **code, gfc_namespace *ns) || comp1->attr.proc_pointer) continue; - /* Make an assigment for this component. */ + /* Make an assignment for this component. */ this_code = build_assignment (EXEC_ASSIGN, (*code)->expr1, (*code)->expr2, comp1, comp2, (*code)->loc); diff --git a/gcc/fortran/scanner.cc b/gcc/fortran/scanner.cc index 4df6576..b52282b 100644 --- a/gcc/fortran/scanner.cc +++ b/gcc/fortran/scanner.cc @@ -1915,7 +1915,7 @@ load_line (FILE *input, gfc_char_t **pbuf, int *pbuflen, const int *first_char) /* For truncation and tab warnings, set seen_comment to false if one has either an OpenMP or OpenACC directive - or a !GCC$ attribute. If - OpenMP is enabled, use '!$' as as conditional compilation sentinel + OpenMP is enabled, use '!$' as conditional compilation sentinel and OpenMP directive ('!$omp'). */ if (seen_comment && first_comment && flag_openmp && comment_ix + 1 == i && c == '$') diff --git a/gcc/fortran/simplify.cc b/gcc/fortran/simplify.cc index 6483f9c..0c15bcb 100644 --- a/gcc/fortran/simplify.cc +++ b/gcc/fortran/simplify.cc @@ -8424,7 +8424,7 @@ gfc_simplify_this_image (gfc_expr *coarray, gfc_expr *dim, return NULL; /* If no coarray argument has been passed or when the first argument - is actually a distance argment. */ + is actually a distance argument. */ if (coarray == NULL || !gfc_is_coarray (coarray)) { gfc_expr *result; diff --git a/gcc/fortran/trans-expr.cc b/gcc/fortran/trans-expr.cc index eb6a78c..06713f2 100644 --- a/gcc/fortran/trans-expr.cc +++ b/gcc/fortran/trans-expr.cc @@ -1777,7 +1777,7 @@ trans_scalar_class_assign (stmtblock_t *block, gfc_se *lse, gfc_se *rse) bool not_call_expr = TREE_CODE (rse->expr) != CALL_EXPR; bool not_lhs_array_type; - /* Temporaries arising from depencies in assignment get cast as a + /* Temporaries arising from dependencies in assignment get cast as a character type of the dynamic size of the rhs. Use the vptr copy for this case. */ tmp = TREE_TYPE (lse->expr); @@ -2805,9 +2805,9 @@ conv_parent_component_references (gfc_se * se, gfc_ref * ref) dt = ref->u.c.sym; c = ref->u.c.component; - /* Return if the component is in the parent type. */ + /* Return if the component is in this type, i.e. not in the parent type. */ for (cmp = dt->components; cmp; cmp = cmp->next) - if (strcmp (c->name, cmp->name) == 0) + if (c == cmp) return; /* Build a gfc_ref to recursively call gfc_conv_component_ref. */ @@ -2867,6 +2867,8 @@ tree gfc_maybe_dereference_var (gfc_symbol *sym, tree var, bool descriptor_only_p, bool is_classarray) { + if (!POINTER_TYPE_P (TREE_TYPE (var))) + return var; if (is_CFI_desc (sym, NULL)) return build_fold_indirect_ref_loc (input_location, var); @@ -2934,7 +2936,7 @@ gfc_maybe_dereference_var (gfc_symbol *sym, tree var, bool descriptor_only_p, || CLASS_DATA (sym)->attr.class_pointer)) var = build_fold_indirect_ref_loc (input_location, var); /* And the case where a non-dummy, non-result, non-function, - non-allotable and non-pointer classarray is present. This case was + non-allocable and non-pointer classarray is present. This case was previously covered by the first if, but with introducing the condition !is_classarray there, that case has to be covered explicitly. */ @@ -5608,8 +5610,11 @@ gfc_conv_gfc_desc_to_cfi_desc (gfc_se *parmse, gfc_expr *e, gfc_symbol *fsym) itype = (e->ts.u.derived->intmod_sym_id == ISOCBINDING_FUNPTR ? CFI_type_cfunptr : CFI_type_cptr); else - switch (e->ts.type) - { + { + if (e->expr_type == EXPR_NULL && e->ts.type == BT_UNKNOWN) + e->ts = fsym->ts; + switch (e->ts.type) + { case BT_INTEGER: case BT_LOGICAL: case BT_REAL: @@ -5647,7 +5652,8 @@ gfc_conv_gfc_desc_to_cfi_desc (gfc_se *parmse, gfc_expr *e, gfc_symbol *fsym) case BT_UNKNOWN: // FIXME: Really unreachable? Or reachable for type(*) ? If so, CFI_type_other? gcc_unreachable (); - } + } + } tmp = gfc_get_cfi_desc_type (cfi); gfc_add_modify (&block, tmp, @@ -5678,7 +5684,7 @@ gfc_conv_gfc_desc_to_cfi_desc (gfc_se *parmse, gfc_expr *e, gfc_symbol *fsym) Note that allocatable implies 'len=:'. */ if (e->ts.type != BT_ASSUMED && e->ts.type != BT_CHARACTER ) { - /* Length is known at compile time; use use 'block' for it. */ + /* Length is known at compile time; use 'block' for it. */ tmp = size_in_bytes (gfc_typenode_for_spec (&e->ts)); tmp2 = gfc_get_cfi_desc_elem_len (cfi); gfc_add_modify (&block, tmp2, fold_convert (TREE_TYPE (tmp2), tmp)); @@ -5700,7 +5706,8 @@ gfc_conv_gfc_desc_to_cfi_desc (gfc_se *parmse, gfc_expr *e, gfc_symbol *fsym) gfc_init_block (&block2); /* Set elem_len, which may be only known at run time. */ - if (e->ts.type == BT_CHARACTER) + if (e->ts.type == BT_CHARACTER + && (e->expr_type != EXPR_NULL || gfc_strlen != NULL_TREE)) { gcc_assert (gfc_strlen); tmp = gfc_strlen; diff --git a/gcc/fortran/trans-intrinsic.cc b/gcc/fortran/trans-intrinsic.cc index e680de1..2249723 100644 --- a/gcc/fortran/trans-intrinsic.cc +++ b/gcc/fortran/trans-intrinsic.cc @@ -8099,12 +8099,14 @@ gfc_conv_intrinsic_sizeof (gfc_se *se, gfc_expr *expr) class object. The class object may be a non-pointer object, e.g. located on the stack, or a memory location pointed to, e.g. a parameter, i.e., an indirect_ref. */ - if (arg->rank < 0 - || (arg->rank > 0 && !VAR_P (argse.expr) - && ((INDIRECT_REF_P (TREE_OPERAND (argse.expr, 0)) - && GFC_DECL_CLASS (TREE_OPERAND ( - TREE_OPERAND (argse.expr, 0), 0))) - || GFC_DECL_CLASS (TREE_OPERAND (argse.expr, 0))))) + if (POINTER_TYPE_P (TREE_TYPE (argse.expr)) + && GFC_CLASS_TYPE_P (TREE_TYPE (TREE_TYPE (argse.expr)))) + byte_size + = gfc_class_vtab_size_get (build_fold_indirect_ref (argse.expr)); + else if (GFC_CLASS_TYPE_P (TREE_TYPE (argse.expr))) + byte_size = gfc_class_vtab_size_get (argse.expr); + else if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (argse.expr)) + && TREE_CODE (argse.expr) == COMPONENT_REF) byte_size = gfc_class_vtab_size_get (TREE_OPERAND (argse.expr, 0)); else if (arg->rank > 0 || (arg->rank == 0 @@ -8114,7 +8116,7 @@ gfc_conv_intrinsic_sizeof (gfc_se *se, gfc_expr *expr) byte_size = gfc_class_vtab_size_get ( GFC_DECL_SAVED_DESCRIPTOR (arg->symtree->n.sym->backend_decl)); else - byte_size = gfc_class_vtab_size_get (argse.expr); + gcc_unreachable (); } else { diff --git a/gcc/gimple-range-gori.cc b/gcc/gimple-range-gori.cc index 311214c..772ccb8 100644 --- a/gcc/gimple-range-gori.cc +++ b/gcc/gimple-range-gori.cc @@ -890,7 +890,7 @@ gori_compute::logical_combine (irange &r, enum tree_code code, case BIT_AND_EXPR: if (!lhs.zero_p ()) { - // The TRUE side is the intersection of the the 2 true ranges. + // The TRUE side is the intersection of the 2 true ranges. r = op1_true; r.intersect (op2_true); } diff --git a/gcc/gimple-ssa-warn-access.cc b/gcc/gimple-ssa-warn-access.cc index b5f9e4c..75297ed 100644 --- a/gcc/gimple-ssa-warn-access.cc +++ b/gcc/gimple-ssa-warn-access.cc @@ -2642,7 +2642,7 @@ pass_waccess::check_strncmp (gcall *stmt) a bound that's larger than the size of either array makes no sense and is likely a bug. When the length of neither of the two strings is known but the sizes of both of the arrays they are stored in is, - issue a warning if the bound is larger than than the size of + issue a warning if the bound is larger than the size of the larger of the two arrays. */ c_strlen_data lendata1{ }, lendata2{ }; diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index e68d2d9..d9b1269 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -787fd4475f9d9101bc138d0b9763b0f5ecca89a9 +5042f7efbdb2d64537dfef53a19e96ee5ec4db2d The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc index 8267f15..3de0bd3 100644 --- a/gcc/go/gofrontend/types.cc +++ b/gcc/go/gofrontend/types.cc @@ -5303,7 +5303,7 @@ Function_type::do_export(Export* exp) const if (results != NULL) { exp->write_c_string(" "); - if (results->size() == 1 && results->begin()->name().empty()) + if (results->size() == 1) exp->write_type(results->begin()->type()); else { diff --git a/gcc/internal-fn.cc b/gcc/internal-fn.cc index dd3ee0d..8b1733e 100644 --- a/gcc/internal-fn.cc +++ b/gcc/internal-fn.cc @@ -1500,7 +1500,7 @@ expand_mul_overflow (location_t loc, tree lhs, tree arg0, tree arg1, 0 and there will be no overflow, if the first argument is negative and the second argument positive, the result when treated as signed will be negative (minimum -0x7f80 or - -0x7f..f80..0) there there will be always overflow. So, do + -0x7f..f80..0) there will be always overflow. So, do res = (U) (s1 * u2) ovf = (S) res < 0 */ struct separate_ops ops; diff --git a/gcc/ipa-polymorphic-call.cc b/gcc/ipa-polymorphic-call.cc index 3d5b95b..22f28e9 100644 --- a/gcc/ipa-polymorphic-call.cc +++ b/gcc/ipa-polymorphic-call.cc @@ -1598,7 +1598,7 @@ ipa_polymorphic_call_context::get_dynamic_type (tree instance, if (!maybe_in_construction && !maybe_derived_type) return false; - /* If we are in fact not looking at any object object or the instance is + /* If we are in fact not looking at any object or the instance is some placement new into a random load, give up straight away. */ if (TREE_CODE (instance) == MEM_REF) return false; diff --git a/gcc/ipa-sra.cc b/gcc/ipa-sra.cc index f8a4549..261a720 100644 --- a/gcc/ipa-sra.cc +++ b/gcc/ipa-sra.cc @@ -2874,7 +2874,7 @@ struct caller_issues bool thunk; /* Call site with no available information. */ bool unknown_callsite; - /* Call from outside the the candidate's comdat group. */ + /* Call from outside the candidate's comdat group. */ bool call_from_outside_comdat; /* There is a bit-aligned load into one of non-gimple-typed arguments. */ bool bit_aligned_aggregate_argument; diff --git a/gcc/jit/ChangeLog b/gcc/jit/ChangeLog index 266ecbd..97c40bb 100644 --- a/gcc/jit/ChangeLog +++ b/gcc/jit/ChangeLog @@ -1,3 +1,7 @@ +2022-03-07 Jakub Jelinek <jakub@redhat.com> + + * libgccjit.h: Fix up duplicated word issue in a comment. + 2022-01-17 Martin Liska <mliska@suse.cz> * config-lang.in: Rename .c names to .cc. diff --git a/gcc/jit/libgccjit.h b/gcc/jit/libgccjit.h index 2a5ffac..95d60f8 100644 --- a/gcc/jit/libgccjit.h +++ b/gcc/jit/libgccjit.h @@ -842,7 +842,7 @@ gcc_jit_context_new_global (gcc_jit_context *ctxt, set to the corresponding value in `values`. `fields` and `values` are paired by index. - Each value has to have have the same unqualified type as the field + Each value has to have the same unqualified type as the field it is applied to. A NULL value element in `values` is a shorthand for zero initialization @@ -892,7 +892,7 @@ gcc_jit_context_new_struct_constructor (gcc_jit_context *ctxt, `value` specifies what value to set the corresponding field to. If `value` is NULL, zero initialization will be used. - Each value has to have have the same unqualified type as the field + Each value has to have the same unqualified type as the field it is applied to. `field` need to be the same objects that were used diff --git a/gcc/optabs-query.cc b/gcc/optabs-query.cc index 713c098..68dc679 100644 --- a/gcc/optabs-query.cc +++ b/gcc/optabs-query.cc @@ -720,7 +720,7 @@ static bool supports_vec_convert_optab_p (optab op, machine_mode mode) { int start = mode == VOIDmode ? 0 : mode; - int end = mode == VOIDmode ? MAX_MACHINE_MODE : mode; + int end = mode == VOIDmode ? MAX_MACHINE_MODE - 1 : mode; for (int i = start; i <= end; ++i) if (VECTOR_MODE_P ((machine_mode) i)) for (int j = MIN_MODE_VECTOR_INT; j < MAX_MODE_VECTOR_INT; ++j) diff --git a/gcc/opts.cc b/gcc/opts.cc index 19c68ae..ef5fe9b 100644 --- a/gcc/opts.cc +++ b/gcc/opts.cc @@ -1302,6 +1302,34 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set, SET_OPTION_IF_UNSET (opts, opts_set, flag_vect_cost_model, VECT_COST_MODEL_CHEAP); + if (flag_gtoggle) + { + /* Make sure to process -gtoggle only once. */ + flag_gtoggle = false; + if (debug_info_level == DINFO_LEVEL_NONE) + { + debug_info_level = DINFO_LEVEL_NORMAL; + + if (write_symbols == NO_DEBUG) + write_symbols = PREFERRED_DEBUGGING_TYPE; + } + else + debug_info_level = DINFO_LEVEL_NONE; + } + + if (!OPTION_SET_P (debug_nonbind_markers_p)) + debug_nonbind_markers_p + = (optimize + && debug_info_level >= DINFO_LEVEL_NORMAL + && dwarf_debuginfo_p () + && !(flag_selective_scheduling || flag_selective_scheduling2)); + + /* Note -fvar-tracking is enabled automatically with OPT_LEVELS_1_PLUS and + so we need to drop it if we are called from optimize attribute. */ + if (debug_info_level == DINFO_LEVEL_NONE + && !OPTION_SET_P (flag_var_tracking)) + flag_var_tracking = false; + /* One could use EnabledBy, but it would lead to a circular dependency. */ if (!OPTION_SET_P (flag_var_tracking_uninit)) flag_var_tracking_uninit = flag_var_tracking; @@ -1328,27 +1356,6 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set, profile_flag = 0; } - if (flag_gtoggle) - { - /* Make sure to process -gtoggle only once. */ - flag_gtoggle = false; - if (debug_info_level == DINFO_LEVEL_NONE) - { - debug_info_level = DINFO_LEVEL_NORMAL; - - if (write_symbols == NO_DEBUG) - write_symbols = PREFERRED_DEBUGGING_TYPE; - } - else - debug_info_level = DINFO_LEVEL_NONE; - } - - if (!OPTION_SET_P (debug_nonbind_markers_p)) - debug_nonbind_markers_p - = (optimize - && debug_info_level >= DINFO_LEVEL_NORMAL - && dwarf_debuginfo_p () - && !(flag_selective_scheduling || flag_selective_scheduling2)); diagnose_options (opts, opts_set, loc); } diff --git a/gcc/params.opt b/gcc/params.opt index b07663d..507d24c 100644 --- a/gcc/params.opt +++ b/gcc/params.opt @@ -251,7 +251,7 @@ Recursive cloning only when the probability of call being executed exceeds the p -param=ipa-cp-recursive-freq-factor= Common Joined UInteger Var(param_ipa_cp_recursive_freq_factor) Init(6) Param Optimization -When propagating IPA-CP effect estimates, multiply frequencies of recursive edges that that bring back an unchanged value by this factor. +When propagating IPA-CP effect estimates, multiply frequencies of recursive edges that bring back an unchanged value by this factor. -param=ipa-cp-recursion-penalty= Common Joined UInteger Var(param_ipa_cp_recursion_penalty) Init(40) IntegerRange(0, 100) Param Optimization @@ -551,7 +551,7 @@ Maximum loop depth of a call which is considered for inlining functions called o -param=max-inline-functions-called-once-insns= Common Joined UInteger Var(param_inline_functions_called_once_insns) Init(4000) Optimization Param -Maximum combinaed size of caller and callee wich is inlined if callee is called once. +Maximum combined size of caller and callee which is inlined if callee is called once. -param=max-inline-insns-auto= Common Joined UInteger Var(param_max_inline_insns_auto) Init(15) Optimization Param @@ -1176,6 +1176,10 @@ Controls how loop vectorizer uses partial vectors. 0 means never, 1 means only Common Joined UInteger Var(param_vect_inner_loop_cost_factor) Init(50) IntegerRange(1, 10000) Param Optimization The maximum factor which the loop vectorizer applies to the cost of statements in an inner loop relative to the loop being vectorized. +-param=vect-induction-float= +Common Joined UInteger Var(param_vect_induction_float) Init(1) IntegerRage(0, 1) Param Optimization +Enable loop vectorization of floating point inductions. + -param=vrp1-mode= Common Joined Var(param_vrp1_mode) Enum(vrp_mode) Init(VRP_MODE_VRP) Param Optimization --param=vrp1-mode=[vrp|ranger] Specifies the mode VRP1 should operate in. diff --git a/gcc/plugin.cc b/gcc/plugin.cc index fe28b82..cbe4b7e 100644 --- a/gcc/plugin.cc +++ b/gcc/plugin.cc @@ -1006,6 +1006,6 @@ default_plugin_dir_name (void) { if (!plugindir_string) fatal_error (input_location, - "%<-iplugindir%> <dir> option not passed from the gcc driver"); + "%<-iplugindir%> option not passed from the gcc driver"); return plugindir_string; } diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index 661e8db..90d8298 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -1,3 +1,7 @@ +2022-03-07 Joseph Myers <joseph@codesourcery.com> + + * fr.po, sv.po: Update. + 2022-03-04 Joseph Myers <joseph@codesourcery.com> * de.po: Update. diff --git a/gcc/po/fr.po b/gcc/po/fr.po index 84d1b49..afc6478 100644 --- a/gcc/po/fr.po +++ b/gcc/po/fr.po @@ -100,7 +100,7 @@ msgstr "" "Project-Id-Version: gcc 12.1-b20220213\n" "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" "POT-Creation-Date: 2022-02-11 23:10+0000\n" -"PO-Revision-Date: 2022-02-26 22:55+0100\n" +"PO-Revision-Date: 2022-03-06 16:52+0100\n" "Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n" "Language-Team: French <traduc@traduc.org>\n" "Language: fr\n" @@ -35930,7 +35930,7 @@ msgstr "option %qs inconnue pour %<#pragma GCC aarch64%>" #: config/aarch64/aarch64-sve-builtins.cc:657 #, gcc-internal-format msgid "ACLE function %qD requires ISA extension %qs" -msgstr "la fonction ACLE %qD requière l'extension ISA %qs" +msgstr "la fonction ACLE %qD requiert l'extension ISA %qs" #: config/aarch64/aarch64-sve-builtins.cc:659 #, gcc-internal-format @@ -36126,12 +36126,12 @@ msgstr "passage de %qT à l'argument %d de %qE qui attend un vecteur d'entiers 3 #: config/aarch64/aarch64-sve-builtins.cc:1908 #, gcc-internal-format msgid "when storing %qT, %qE requires a vector base and a scalar index" -msgstr "en stockant %qT, %qE requière une base vectorielle et un index scalaire" +msgstr "en stockant %qT, %qE requiert une base vectorielle et un index scalaire" #: config/aarch64/aarch64-sve-builtins.cc:1913 #, gcc-internal-format msgid "%qE requires a vector base and a scalar index" -msgstr "%qE requière une base vectorielle et un index scalaire" +msgstr "%qE requiert une base vectorielle et un index scalaire" #: config/aarch64/aarch64-sve-builtins.cc:1917 #, gcc-internal-format @@ -36180,112 +36180,95 @@ msgid "cannot combine a base of type %qT with an index of type %qT" msgstr "impossible de combiner une base de type %qT avec un index de type %qT" #: config/aarch64/aarch64-sve-builtins.cc:2197 -#, fuzzy, gcc-internal-format -#| msgid "passing argument %d of %qE makes integer from pointer without a cast" +#, gcc-internal-format msgid "passing %qT to argument %d of %qE, but its %qT form does not accept scalars" -msgstr "le passage de l'argument %d de %qE transforme un pointeur en entier sans transtypage" +msgstr "passage de %qT à l'argument %d de %qE mais sa forme %qT n'accepte pas de scalaires" #: config/aarch64/aarch64-sve-builtins.cc:3526 #: config/arm/arm-mve-builtins.cc:173 -#, fuzzy, gcc-internal-format -#| msgid "duplicate definition of '%s'" +#, gcc-internal-format msgid "duplicate definition of %qs" -msgstr "définition dupliquée de « %s »" +msgstr "définition dupliquée de %qs" #: config/aarch64/aarch64-sve-builtins.cc:3702 -#, fuzzy, gcc-internal-format -#| msgid "%qE cannot be applied to non-pointer type %qT" +#, gcc-internal-format msgid "%qs applied to non-SVE type %qT" -msgstr "%qE ne peut pas être appliqué sur le type non pointeur %qT" +msgstr "%qs appliqué au type non-SVE %qT" #: config/aarch64/aarch64-sve-builtins.cc:3708 -#, fuzzy, gcc-internal-format -#| msgid "%qE cannot be applied to non-pointer type %qT" +#, gcc-internal-format msgid "%qs applied to non-vector type %qT" -msgstr "%qE ne peut pas être appliqué sur le type non pointeur %qT" +msgstr "%qs appliqué au type non-vectoriel %qT" #: config/aarch64/aarch64-sve-builtins.cc:3715 #, gcc-internal-format msgid "%qs applied to type %qT, which already has a size" -msgstr "" +msgstr "%qs appliqué au type %qT qui a déjà une taille" #: config/aarch64/aarch64-sve-builtins.cc:3723 -#, fuzzy, gcc-internal-format -#| msgid "case label is not an integer constant expression" +#, gcc-internal-format msgid "%qs requires an integer constant expression" -msgstr "l'étiquette du « case » doit être une expression constante entière" +msgstr "%qs requiert une expression constante entière" #: config/aarch64/aarch64-sve-builtins.cc:3731 -#, fuzzy, gcc-internal-format -#| msgid "unsupported record layout" +#, gcc-internal-format msgid "unsupported SVE vector size" -msgstr "structure de l'enregistrement non supportée" +msgstr "taille de vecteur SVE non supportée" #: config/aarch64/aarch64-sve-builtins.cc:3845 -#, fuzzy, gcc-internal-format -#| msgid "type %qT does not have a known size" +#, gcc-internal-format msgid "SVE type %qT does not have a fixed size" -msgstr "le type %qT n'a pas de taille connue" +msgstr "le type SVE %qT n'a pas de taille fixe" #: config/aarch64/aarch64-sve-builtins.cc:3850 -#, fuzzy, gcc-internal-format -#| msgid "type %qT does not have a known size" +#, gcc-internal-format msgid "SVE type %qT does not have a defined alignment" -msgstr "le type %qT n'a pas de taille connue" +msgstr "le type SVE %qT n'a pas un alignement défini" #: config/aarch64/aarch64-sve-builtins.cc:3855 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute ignored because %qD does not have thread storage duration" +#, gcc-internal-format msgid "variables of type %qT cannot have thread-local storage duration" -msgstr "l'attribut %qE est ignoré car %qD n'a pas une durée de stockage limitée au thread" +msgstr "les variables de type %qT ne peuvent pas avoir une durée de stockage limitée au thread" #: config/aarch64/aarch64-sve-builtins.cc:3861 -#, fuzzy, gcc-internal-format -#| msgid "arithmetic on pointer to an incomplete type" +#, gcc-internal-format msgid "arithmetic on pointer to SVE type %qT" -msgstr "arithmétique sur un pointeur vers un type incomplet" +msgstr "arithmétique sur un pointeur vers un type SVE %qT" #: config/aarch64/aarch64-sve-builtins.cc:3868 -#, fuzzy, gcc-internal-format -#| msgid "variables cannot be of type void" +#, gcc-internal-format msgid "member variables cannot have SVE type %qT" -msgstr "les variables ne peuvent pas être du type void" +msgstr "les variables membre ne peuvent pas avoir le type SVE %qT" #: config/aarch64/aarch64-sve-builtins.cc:3870 -#, fuzzy, gcc-internal-format -#| msgid "field cannot be `scope`" +#, gcc-internal-format msgid "fields cannot have SVE type %qT" -msgstr "le champ ne peut pas être « scope »" +msgstr "les champs ne peuvent pas avoir le type SVE %qT" #: config/aarch64/aarch64-sve-builtins.cc:3875 -#, fuzzy, gcc-internal-format -#| msgid "variables cannot be of type void" +#, gcc-internal-format msgid "array elements cannot have SVE type %qT" -msgstr "les variables ne peuvent pas être du type void" +msgstr "les éléments de tableau de peuvent pas avoir le type SVE %qT" #: config/aarch64/aarch64-sve-builtins.cc:3880 -#, fuzzy, gcc-internal-format -#| msgid "cannot allocate an object of abstract type %qT" +#, gcc-internal-format msgid "cannot allocate objects with SVE type %qT" -msgstr "ne peut allouer un objet du type abstrait %qT" +msgstr "ne peut allouer des objets du type SVE %qT" #: config/aarch64/aarch64-sve-builtins.cc:3885 -#, fuzzy, gcc-internal-format -#| msgid "cannot delete type %s" +#, gcc-internal-format msgid "cannot delete objects with SVE type %qT" -msgstr "impossible de supprimer le type %s" +msgstr "impossible de supprimer des objets du type SVE %qT" #: config/aarch64/aarch64-sve-builtins.cc:3890 -#, fuzzy, gcc-internal-format -#| msgid "cannot allocate an object of abstract type %qT" +#, gcc-internal-format msgid "cannot throw or catch SVE type %qT" -msgstr "ne peut allouer un objet du type abstrait %qT" +msgstr "ne peut lever ou intercepter une exception sur le type SVE %qT" #: config/aarch64/aarch64-sve-builtins.cc:3895 -#, fuzzy, gcc-internal-format -#| msgid "capture by copy of incomplete type %qT" +#, gcc-internal-format msgid "capture by copy of SVE type %qT" -msgstr "capture par copie du type incomplet %qT" +msgstr "capture par copie du type SVE %qT" #: config/aarch64/aarch64.cc:2190 #, gcc-internal-format @@ -36367,22 +36350,19 @@ msgid "unknown flag passed in %<-moverride=%s%> (%s)" msgstr "fanion inconnu passé à %<-moverride=%s%> (%s)" #: config/aarch64/aarch64.cc:16331 -#, fuzzy, gcc-internal-format -#| msgid "%s string ill-formed\n" +#, gcc-internal-format msgid "%qs string ill-formed" -msgstr "chaîne %s mal formée\n" +msgstr "chaîne %qs mal formée" #: config/aarch64/aarch64.cc:16387 -#, fuzzy, gcc-internal-format -#| msgid "invalid format for sve_width" +#, gcc-internal-format msgid "invalid format for %<sve_width%>" -msgstr "format invalide pour sve_width" +msgstr "format invalide pour %<sve_width%>" #: config/aarch64/aarch64.cc:16399 -#, fuzzy, gcc-internal-format -#| msgid "invalid sve_width value: %d" +#, gcc-internal-format msgid "invalid %<sve_width%> value: %d" -msgstr "valeur invalide pour sve_width: %d" +msgstr "valeur invalide pour %<sve_width%>: %d" #: config/aarch64/aarch64.cc:16419 #, gcc-internal-format, gfc-internal-format @@ -36405,10 +36385,9 @@ msgid "both %<-mstack-protector-guard-offset%> and %<-mstack-protector-guard-reg msgstr "%<-mstack-protector-guard-offset%> et %<-mstack-protector-guard-reg%> doivent être utilisés tous les deux avec %<-mstack-protector-guard=sysreg%>" #: config/aarch64/aarch64.cc:16622 -#, fuzzy, gcc-internal-format -#| msgid "specify a system register with a small string length." +#, gcc-internal-format msgid "specify a system register with a small string length" -msgstr "spécifie un registre système avec une chaîne de courte longueur." +msgstr "spécifie un registre système avec une chaîne de courte longueur" #: config/aarch64/aarch64.cc:16632 config/arm/arm.cc:3197 #: config/riscv/riscv.cc:5099 config/rs6000/rs6000.cc:4600 @@ -36442,10 +36421,9 @@ msgid "invalid argument given to %<-mharden-sls=%>" msgstr "argument invalide donné à %<-mharden-sls=%>" #: config/aarch64/aarch64.cc:16927 -#, fuzzy, gcc-internal-format -#| msgid "%<%s%> must be by itself for %<-mharden-sls=%>" +#, gcc-internal-format msgid "%qs must be by itself for %<-mharden-sls=%>" -msgstr "%<%s%> doit être seul pour %<-mharden-sls=%>" +msgstr "%qs doit être seul pour %<-mharden-sls=%>" #: config/aarch64/aarch64.cc:16932 #, gcc-internal-format @@ -36518,17 +36496,15 @@ msgid "missing name in %<target(\"arch=\")%> pragma or attribute" msgstr "nom manquant dans le pragma ou l'attribut %<target(\"arch=\")%>" #: config/aarch64/aarch64.cc:17566 -#, fuzzy, gcc-internal-format -#| msgid "invalid name (\"%s\") in %<target(\"arch=\")%> pragma or attribute" +#, gcc-internal-format msgid "invalid name (%qs) in %<target(\"arch=\")%> pragma or attribute" -msgstr "nom invalide (« %s ») dans le pragma ou l'attribut %<target(\"arch=\")%>" +msgstr "nom invalide (%qs) dans le pragma ou l'attribut %<target(\"arch=\")%>" #: config/aarch64/aarch64.cc:17570 config/aarch64/aarch64.cc:17612 #: config/aarch64/aarch64.cc:17719 -#, fuzzy, gcc-internal-format -#| msgid "invalid feature modifier %s of value (\"%s\") in %<target()%> pragma or attribute" +#, gcc-internal-format msgid "invalid feature modifier %s of value (%qs) in %<target()%> pragma or attribute" -msgstr "modificateur de fonctionnalité %s invalide avec la valeur (\"%s\") dans le pragma ou l'attribut %<target()%>" +msgstr "modificateur de fonctionnalité %s invalide avec la valeur (%qs) dans le pragma ou l'attribut %<target()%>" #: config/aarch64/aarch64.cc:17605 #, gcc-internal-format @@ -36536,10 +36512,9 @@ msgid "missing name in %<target(\"cpu=\")%> pragma or attribute" msgstr "nom manquant dans le pragma ou l'attribut %<target(\"cpu=\")%>" #: config/aarch64/aarch64.cc:17608 -#, fuzzy, gcc-internal-format -#| msgid "invalid name (\"%s\") in %<target(\"cpu=\")%> pragma or attribute" +#, gcc-internal-format msgid "invalid name (%qs) in %<target(\"cpu=\")%> pragma or attribute" -msgstr "nom invalide (« %s ») dans le pragma ou l'attribut %<target(\"cpu=\")%>" +msgstr "nom invalide (%qs) dans le pragma ou l'attribut %<target(\"cpu=\")%>" #: config/aarch64/aarch64.cc:17635 #, gcc-internal-format @@ -36547,16 +36522,14 @@ msgid "missing argument to %<target(\"branch-protection=\")%> pragma or attribut msgstr "argument manquant dans le pragma ou l'attribut %<target(\"branch-protection=\")%>" #: config/aarch64/aarch64.cc:17639 -#, fuzzy, gcc-internal-format -#| msgid "invalid protection type (\"%s\") in %<target(\"branch-protection=\")%> pragma or attribute" +#, gcc-internal-format msgid "invalid protection type (%qs) in %<target(\"branch-protection=\")%> pragma or attribute" -msgstr "type de protection (\"%s\") invalide dans le pragma ou l'attribut %<target(\"branch-protection=\")%>" +msgstr "type de protection (%qs) invalide dans le pragma ou l'attribut %<target(\"branch-protection=\")%>" #: config/aarch64/aarch64.cc:17674 -#, fuzzy, gcc-internal-format -#| msgid "invalid name (\"%s\") in %<target(\"tune=\")%> pragma or attribute" +#, gcc-internal-format msgid "invalid name (%qs) in %<target(\"tune=\")%> pragma or attribute" -msgstr "nom invalide (« %s ») dans le pragma ou l'attribut %<target(\"tune=\")%>" +msgstr "nom invalide (%qs) dans le pragma ou l'attribut %<target(\"tune=\")%>" #: config/aarch64/aarch64.cc:17715 #, gcc-internal-format @@ -36590,10 +36563,9 @@ msgid "attribute %<target%> argument not a string" msgstr "l'argument %<target%> de l'attribut n'est pas une chaîne" #: config/aarch64/aarch64.cc:17971 -#, fuzzy, gcc-internal-format -#| msgid "clauses in %<simd%> trait should be separated by %<,%>" +#, gcc-internal-format msgid "arch extension %<%s%> should be prefixed by %<+%>" -msgstr "les clauses dans un trait %<simd%> devraient être séparées par des %<,%>" +msgstr "l'extension arch %<%s%> devraient être préfixée par %<+%>" #: config/aarch64/aarch64.cc:17974 #, gcc-internal-format @@ -36935,10 +36907,9 @@ msgid "register number must be a compile-time constant. Try giving higher optim msgstr "le numéro de registre doit être une constante à la compilation. Essayez à des niveaux d'optimisation supérieurs" #: config/arc/arc.cc:8434 -#, fuzzy, gcc-internal-format -#| msgid "insn addresses not set after shorten_branches" +#, gcc-internal-format msgid "insn addresses not set after shorten branches" -msgstr "les adresses des insn ne sont pas définies après shorten_branches" +msgstr "les adresses des insn ne sont pas définies après le raccourcissement des branches" #: config/arc/arc.cc:8649 #, gcc-internal-format @@ -36998,22 +36969,19 @@ msgid "invalid type for %<asm%> flag output" msgstr "type invalide pour la sortie du fanion %<asm%>" #: config/arm/arm-builtins.cc:3011 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "%Kcoprocessor %d is not enabled with +cdecp%d" +#, gcc-internal-format, gfc-internal-format msgid "coprocessor %d is not enabled with +cdecp%d" -msgstr "%Kle coprocesseur %d n'est pas activé avec +cdecp%d" +msgstr "le coprocesseur %d n'est pas activé avec +cdecp%d" #: config/arm/arm-builtins.cc:3015 -#, fuzzy, gcc-internal-format -#| msgid "%Kcoproc must be a constant immediate in range [0-%d] enabled with +cdecp<N>" +#, gcc-internal-format msgid "coproc must be a constant immediate in range [0-%d] enabled with %<+cdecp<N>%>" -msgstr "%Kle coproc doit être une constante immédiate dans la plage [0-%d] activé avec +cdecp<N>" +msgstr "le coproc doit être une constante immédiate dans la plage [0-%d] activé avec %<+cdecp<N>%>" #: config/arm/arm-builtins.cc:3024 -#, fuzzy, gcc-internal-format -#| msgid "%Kargument %d to %qE must be a constant immediate in range [0-%d]" +#, gcc-internal-format msgid "argument %d to %qE must be a constant immediate in range [0-%d]" -msgstr "%Kl'argument %d de %qE doit être une constante immédiate dans l'intervalle [0-%d]" +msgstr "l'argument %d de %qE doit être une constante immédiate dans l'intervalle [0-%d]" #: config/arm/arm-builtins.cc:3143 #, gcc-internal-format @@ -37021,16 +36989,14 @@ msgid "this builtin is not supported for this target" msgstr "cette fonction interne n'est pas supportée pour cette cible" #: config/arm/arm-builtins.cc:3251 -#, fuzzy, gcc-internal-format -#| msgid "%Ksaturation bit range must be in the range [%wd, %wd]" +#, gcc-internal-format msgid "saturation bit range must be in the range [%wd, %wd]" -msgstr "%Kla plage du bit de saturation doit être dans la plage [%wd, %wd]" +msgstr "la plage du bit de saturation doit être dans la plage [%wd, %wd]" #: config/arm/arm-builtins.cc:3256 -#, fuzzy, gcc-internal-format -#| msgid "%Ksaturation bit range must be a constant immediate" +#, gcc-internal-format msgid "saturation bit range must be a constant immediate" -msgstr "%Kla plage du bit de saturation doit être une constante immédiate" +msgstr "la plage du bit de saturation doit être une constante immédiate" #: config/arm/arm-builtins.cc:3279 #, gcc-internal-format @@ -37085,148 +37051,124 @@ msgid "the range of mask should be in 0 to 255" msgstr "la plage du masque doit être entre 0 et 255" #: config/arm/arm-builtins.cc:3863 -#, fuzzy, gcc-internal-format -#| msgid "the range of count should be in 0 to 32. please check the intrinsic _mm_rori_pi16 in code." +#, gcc-internal-format msgid "the range of count should be in 0 to 32; please check the intrinsic %<_mm_rori_pi16%> in code" -msgstr "la plage du décompte doit être entre 0 et 32. Veuillez vérifier l'intrinsèque _mm_rori_pi16 dans le code." +msgstr "la plage du décompte doit être entre 0 et 32. Veuillez vérifier l'intrinsèque %<_mm_rori_pi16%> dans le code" #: config/arm/arm-builtins.cc:3865 -#, fuzzy, gcc-internal-format -#| msgid "the range of count should be in 0 to 32. please check the intrinsic _mm_rori_pi32 in code." +#, gcc-internal-format msgid "the range of count should be in 0 to 32; please check the intrinsic %<_mm_rori_pi32%> in code" -msgstr "la plage du décompte doit être entre 0 et 32. Veuillez vérifier l'intrinsèque _mm_rori_pi32 dans le code." +msgstr "la plage du décompte doit être entre 0 et 32. Veuillez vérifier l'intrinsèque %<_mm_rori_pi32%> dans le code" #: config/arm/arm-builtins.cc:3867 -#, fuzzy, gcc-internal-format -#| msgid "the range of count should be in 0 to 32. please check the intrinsic _mm_ror_pi16 in code." +#, gcc-internal-format msgid "the range of count should be in 0 to 32; please check the intrinsic %<_mm_ror_pi16%> in code" -msgstr "la plage du décompte doit être entre 0 et 32. Veuillez vérifier l'intrinsèque _mm_ror_pi16 dans le code." +msgstr "la plage du décompte doit être entre 0 et 32. Veuillez vérifier l'intrinsèque %<_mm_ror_pi16%> dans le code" #: config/arm/arm-builtins.cc:3869 -#, fuzzy, gcc-internal-format -#| msgid "the range of count should be in 0 to 32. please check the intrinsic _mm_ror_pi32 in code." +#, gcc-internal-format msgid "the range of count should be in 0 to 32; please check the intrinsic %<_mm_ror_pi32%> in code" -msgstr "la plage du décompte doit être entre 0 et 32. Veuillez vérifier l'intrinsèque _mm_ror_pi32 dans le code." +msgstr "la plage du décompte doit être entre 0 et 32. Veuillez vérifier l'intrinsèque %<_mm_ror_pi32%> dans le code" #: config/arm/arm-builtins.cc:3875 -#, fuzzy, gcc-internal-format -#| msgid "the range of count should be in 0 to 64. please check the intrinsic _mm_rori_si64 in code." +#, gcc-internal-format msgid "the range of count should be in 0 to 64; please check the intrinsic %<_mm_rori_si64%> in code" -msgstr "la plage du décompte doit être entre 0 et 64. Veuillez vérifier l'intrinsèque _mm_rori_si64 dans le code." +msgstr "la plage du décompte doit être entre 0 et 64. Veuillez vérifier l'intrinsèque %<_mm_rori_si64%> dans le code" #: config/arm/arm-builtins.cc:3877 -#, fuzzy, gcc-internal-format -#| msgid "the range of count should be in 0 to 64. please check the intrinsic _mm_ror_si64 in code." +#, gcc-internal-format msgid "the range of count should be in 0 to 64; please check the intrinsic %<_mm_ror_si64%> in code" -msgstr "la plage du décompte doit être entre 0 et 64. Veuillez vérifier l'intrinsèque _mm_ror_si64 dans le code." +msgstr "la plage du décompte doit être entre 0 et 64. Veuillez vérifier l'intrinsèque %<_mm_ror_si64%> dans le code" #: config/arm/arm-builtins.cc:3882 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_srli_pi16 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_srli_pi16%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_srli_pi16 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_srli_pi16%> dans le code" #: config/arm/arm-builtins.cc:3884 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_srli_pi32 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_srli_pi32%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_srli_pi32 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_srli_pi32%> dans le code" #: config/arm/arm-builtins.cc:3886 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_srli_si64 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_srli_si64%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_srli_si64 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_srli_si64%> dans le code" #: config/arm/arm-builtins.cc:3888 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_slli_pi16 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_slli_pi16%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_slli_pi16 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_slli_pi16%> dans le code" #: config/arm/arm-builtins.cc:3890 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_slli_pi32 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_slli_pi32%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_slli_pi32 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_slli_pi32%> dans le code" #: config/arm/arm-builtins.cc:3892 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_slli_si64 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_slli_si64%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_slli_si64 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_slli_si64%> dans le code" #: config/arm/arm-builtins.cc:3894 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_srai_pi16 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_srai_pi16%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_srai_pi16 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_srai_pi16%> dans le code" #: config/arm/arm-builtins.cc:3896 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_srai_pi32 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_srai_pi32%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_srai_pi32 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_srai_pi32%> dans le code" #: config/arm/arm-builtins.cc:3898 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_srai_si64 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_srai_si64%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_srai_si64 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_srai_si64%> dans le code" #: config/arm/arm-builtins.cc:3900 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_srl_pi16 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_srl_pi16%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_srl_pi16 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_srl_pi16%> dans le code" #: config/arm/arm-builtins.cc:3902 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_srl_pi32 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_srl_pi32%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_srl_pi32 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_srl_pi32%> dans le code" #: config/arm/arm-builtins.cc:3904 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_srl_si64 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_srl_si64%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_srl_si64 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_srl_si64%> dans le code" #: config/arm/arm-builtins.cc:3906 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_sll_pi16 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_sll_pi16%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_sll_pi16 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_sll_pi16%> dans le code" #: config/arm/arm-builtins.cc:3908 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_sll_pi32 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_sll_pi32%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_sll_pi32 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_sll_pi32%> dans le code" #: config/arm/arm-builtins.cc:3910 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_sll_si64 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_sll_si64%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_sll_si64 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_sll_si64%> dans le code" #: config/arm/arm-builtins.cc:3912 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_sra_pi16 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_sra_pi16%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_sra_pi16 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_sra_pi16%> dans le code" #: config/arm/arm-builtins.cc:3914 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_sra_pi32 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_sra_pi32%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_sra_pi32 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_sra_pi32%> dans le code" #: config/arm/arm-builtins.cc:3916 -#, fuzzy, gcc-internal-format -#| msgid "the count should be no less than 0. please check the intrinsic _mm_sra_si64 in code." +#, gcc-internal-format msgid "the count should be no less than 0; please check the intrinsic %<_mm_sra_si64%> in code" -msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque _mm_sra_si64 dans le code" +msgstr "le décompte ne devrait pas être inférieur à 0. Veuillez vérifier l'intrinsèque %<_mm_sra_si64%> dans le code" #: config/arm/arm-c.cc:108 #, gcc-internal-format @@ -37234,22 +37176,19 @@ msgid "argument %u to function %qE is of type %qT which is not known to be 128 b msgstr "l'argument %u de la fonction %qE est du type %qT qui n'est pas connu comme ayant 128 bits" #: config/arm/arm-c.cc:140 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma GCC aarch64%> requires a string parameter" +#, gcc-internal-format msgid "%<#pragma GCC arm%> requires a string parameter" -msgstr "%<#pragma GCC aarch64%> existe une chaîne en paramètre" +msgstr "%<#pragma GCC arm%> existe une chaîne en paramètre" #: config/arm/arm-c.cc:148 -#, fuzzy, gcc-internal-format -#| msgid "unknown %<#pragma GCC aarch64%> option %qs" +#, gcc-internal-format msgid "unknown %<#pragma GCC arm%> option %qs" -msgstr "option %qs inconnue pour %<#pragma GCC aarch64%>" +msgstr "option %qs inconnue pour %<#pragma GCC arm%>" #: config/arm/arm-mve-builtins.cc:179 -#, fuzzy, gcc-internal-format -#| msgid "this operation requires the SVE ISA extension" +#, gcc-internal-format msgid "this definition requires the MVE ISA extension" -msgstr "cette opération requiert l'extension de l'ISA SVE" +msgstr "cette définition requiert l'extension de l'ISA MVE" #: config/arm/arm.cc:2938 #, gcc-internal-format @@ -37317,10 +37256,9 @@ msgid "target CPU does not support unaligned accesses" msgstr "le processeur cible ne supporte pas les accès non alignés" #: config/arm/arm.cc:3185 -#, fuzzy, gcc-internal-format -#| msgid "incompatible options %<-mstack-protector-guard=global%> and %<-mstack-protector-guard-offset=%s%>" +#, gcc-internal-format msgid "incompatible options %'-mstack-protector-guard=global%' and%'-mstack-protector-guard-offset=%qs%'" -msgstr "%<-mstack-protector-guard=global%> et %<-mstack-protector-guard-offset=%qs%> incompatibles" +msgstr "%'-mstack-protector-guard=global%' et %'-mstack-protector-guard-offset=%qs%' incompatibles" #: config/arm/arm.cc:3284 #, gcc-internal-format @@ -37388,10 +37326,9 @@ msgid "selected fp16 options are incompatible" msgstr "les options fp16 sélectionnées sont incompatibles" #: config/arm/arm.cc:3880 -#, fuzzy, gcc-internal-format -#| msgid "-mstack-protector-guard=tls needs a valid base register" +#, gcc-internal-format msgid "%'-mstack-protector-guard=tls%' needs a hardware TLS register" -msgstr "-mstack-protector-guard=tls a besoin d'un registre de base valable" +msgstr "%'-mstack-protector-guard=tls%' a besoin d'un registre TLS matériel" #: config/arm/arm.cc:3900 #, gcc-internal-format @@ -37419,10 +37356,9 @@ msgid "AAPCS does not support %<-mcallee-super-interworking%>" msgstr "AAPCS ne supporte pas %<-mcallee-super-interworking%>" #: config/arm/arm.cc:3932 -#, fuzzy, gcc-internal-format -#| msgid "__fp16 and no ldrh" +#, gcc-internal-format msgid "%<__fp16%> and no ldrh" -msgstr "__fp16 et pas de ldrh" +msgstr "%<__fp16%> et pas de ldrh" #: config/arm/arm.cc:3935 #, gcc-internal-format @@ -37460,16 +37396,14 @@ msgid "PCS variant" msgstr "variante PCS" #: config/arm/arm.cc:6493 -#, fuzzy, gcc-internal-format -#| msgid "Thumb-1 hard-float VFP ABI" +#, gcc-internal-format msgid "Thumb-1 %<hard-float%> VFP ABI" -msgstr "ABI VFP en virgule flottante matérielle du Thumb-1" +msgstr "ABI VFP %<hard-float%> du Thumb-1" #: config/arm/arm.cc:6582 -#, fuzzy, gcc-internal-format -#| msgid "argument of type %qT not permitted with -mgeneral-regs-only" +#, gcc-internal-format msgid "argument of type %qT not permitted with %<-mgeneral-regs-only%>" -msgstr "argument de type %qT pas permis avec -mgeneral-regs-only" +msgstr "argument de type %qT pas permis avec %<-mgeneral-regs-only%>" #: config/arm/arm.cc:6966 config/arm/arm.cc:7187 config/arm/arm.cc:7220 #: config/arm/arm.cc:28974 @@ -37498,10 +37432,9 @@ msgid "%qE attribute not available to functions that return value on the stack" msgstr "l'attribut %qE n'est pas disponible pour les fonctions qui retournent une valeur sur la pile" #: config/arm/arm.cc:7525 config/arm/arm.cc:7577 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute ignored without %<-mcmse%> option." +#, gcc-internal-format msgid "%qE attribute ignored without %<-mcmse%> option" -msgstr "l'attribut %qE est ignoré sans l'option %<-mcmse%>." +msgstr "l'attribut %qE est ignoré sans l'option %<-mcmse%>" #: config/arm/arm.cc:7544 #, gcc-internal-format @@ -37572,10 +37505,9 @@ msgid "unknown target attribute or pragma %qs" msgstr "attribut ou pragma cible %qs inconnu" #: config/arm/arm.cc:34154 -#, fuzzy, gcc-internal-format -#| msgid "asm flags not supported in thumb1 mode" +#, gcc-internal-format msgid "%<asm%> flags not supported in thumb1 mode" -msgstr "fanions asm non supportés en mode thumb1" +msgstr "fanions %<asm%> non supportés en mode thumb1" #: config/avr/avr-c.cc:65 config/avr/avr-c.cc:190 #, gcc-internal-format @@ -37765,10 +37697,9 @@ msgid "IO definition for %q+D needs an address" msgstr "la définition IO pour %q+D a besoin d'une adresse" #: config/avr/avr.cc:10197 -#, fuzzy, gcc-internal-format -#| msgid "only uninitialized variables can be placed in the .noinit section" +#, gcc-internal-format msgid "only uninitialized variables can be placed in the %<.noinit%> section" -msgstr "seules les variables non initialisées peuvent être placées dans la section .noinit" +msgstr "seules les variables non initialisées peuvent être placées dans la section %<.noinit%>" #. This might happen with C++ if stuff needs constructing. #: config/avr/avr.cc:10273 @@ -37847,14 +37778,12 @@ msgid "%<-fstack-limit-%> options are ignored with %<-mfdpic%>; use %<-mstack-ch msgstr "les options %<-fstack-limit-%> sont ignorées avec %<-mfdpic%>, utilisez %<-mstack-check-l1%>" #: config/bfin/bfin.cc:2385 -#, fuzzy, gcc-internal-format -#| msgid "can%'t use multiple stack checking methods together" +#, gcc-internal-format msgid "cannot use multiple stack checking methods together" msgstr "impossible d'utiliser plusieurs méthodes de validation de la pile en même temps" #: config/bfin/bfin.cc:2388 -#, fuzzy, gcc-internal-format -#| msgid "ID shared libraries and FD-PIC mode can%'t be used together" +#, gcc-internal-format msgid "ID shared libraries and FD-PIC mode cannot be used together" msgstr "les bibliothèques partagées utilisant un ID et FD-PIC ne peuvent pas être utilisés ensemble" @@ -37879,8 +37808,7 @@ msgid "%<-mcoreb%> should be used with %<-mmulticore%>" msgstr "%<-mcoreb%> devrait être utilisé avec %<-mmulticore%>" #: config/bfin/bfin.cc:2422 -#, fuzzy, gcc-internal-format -#| msgid "%<-mcorea%> and %<-mcoreb%> can%'t be used together" +#, gcc-internal-format msgid "%<-mcorea%> and %<-mcoreb%> cannot be used together" msgstr "%<-mcorea%> et %<-mcoreb%> ne peuvent être utilisés ensemble" @@ -37890,8 +37818,7 @@ msgid "multiple function type attributes specified" msgstr "plusieurs attributs de type de fonction spécifiés" #: config/bfin/bfin.cc:4766 -#, fuzzy, gcc-internal-format -#| msgid "can%'t apply both longcall and shortcall attributes to the same function" +#, gcc-internal-format msgid "cannott apply both longcall and shortcall attributes to the same function" msgstr "ne peut appliquer à la fois les attributs longcall et shortcall à la même fonction" @@ -37906,21 +37833,19 @@ msgid "%qE requires an argument" msgstr "%qE requiert un argument" #: config/bpf/bpf.cc:139 -#, fuzzy, gcc-internal-format -#| msgid "%qE attribute only applies to function types" +#, gcc-internal-format msgid "%qE attribute only applies to structure, union and class types" -msgstr "l'attribut %qE ne s'applique qu'à des types de fonction" +msgstr "l'attribut %qE ne s'applique qu'à des structures, unions et types classes" #: config/bpf/bpf.cc:216 #, gcc-internal-format msgid "BPF CO-RE requires BTF debugging information, use %<-gbtf%>" -msgstr "" +msgstr "BPF CO-RE requiert les informations de débogage BTF, utilisez %<-gbtf%>" #: config/bpf/bpf.cc:236 -#, fuzzy, gcc-internal-format -#| msgid "%s does not support %s" +#, gcc-internal-format msgid "BPF CO-RE does not support LTO" -msgstr "%s ne supporte pas %s" +msgstr "BPF CO-RE ne supporte pas LTO" #: config/bpf/bpf.cc:416 #, gcc-internal-format @@ -37954,10 +37879,9 @@ msgid "invalid argument to built-in function" msgstr "argument invalide pour la fonction interne" #: config/bpf/bpf.cc:1339 -#, fuzzy, gcc-internal-format -#| msgid "expected template-argument" +#, gcc-internal-format msgid "expected exactly 1 argument" -msgstr "argument de patron attendu" +msgstr "exactement 1 argument attendu" #: config/c6x/c6x.cc:245 #, gcc-internal-format @@ -37979,10 +37903,9 @@ msgstr "option de modèle de données %<-mdata-model=%s%> invalide" #. MULT, we need to apply TARGET_MUL_BUG in the caller. Make sure #. we notice. #: config/cris/cris.cc:728 -#, fuzzy, gcc-internal-format -#| msgid "MULT case in cris_op_str" +#, gcc-internal-format msgid "MULT case in %<cris_op_str%>" -msgstr "MULT rencontré dans cris_op_str" +msgstr "MULT rencontré dans %<cris_op_str%>" #: config/cris/cris.cc:1245 config/moxie/moxie.cc:186 config/or1k/or1k.cc:1291 #, gcc-internal-format, gfc-internal-format @@ -37991,10 +37914,9 @@ msgstr "erreur interne: registre erroné: %d" #. If we get here, the caller got its initial tests wrong. #: config/cris/cris.cc:2216 -#, fuzzy, gcc-internal-format -#| msgid "internal error: cris_side_effect_mode_ok with bad operands" +#, gcc-internal-format msgid "internal error: %<cris_side_effect_mode_ok%> with bad operands" -msgstr "erreur interne: cris_side_effect_mode_ok avec des opérandes erronées" +msgstr "erreur interne: %>cris_side_effect_mode_ok%> avec des opérandes erronées" #: config/cris/cris.cc:2269 #, gcc-internal-format @@ -38002,16 +37924,14 @@ msgid "%<-max-stackframe=%d%> is not usable, not between 0 and %d" msgstr "%<-max-stackframe=%d%> n'est pas utilisable, n'est pas entre 0 et %d" #: config/cris/cris.cc:2298 -#, fuzzy, gcc-internal-format -#| msgid "unknown CRIS version specification in %<-march=%> or %<-mcpu=%> : %s" +#, gcc-internal-format msgid "unknown CRIS version specification in %<-march=%> or %<-mcpu=%>: %s" -msgstr "spécification de version CRIS inconnue dans %<-march=%> ou %<-mcpu=%> : %s" +msgstr "spécification de version CRIS inconnue dans %<-march=%> ou %<-mcpu=%> : %s" #: config/cris/cris.cc:2334 -#, fuzzy, gcc-internal-format -#| msgid "unknown CRIS cpu version specification in %<-mtune=%> : %s" +#, gcc-internal-format msgid "unknown CRIS cpu version specification in %<-mtune=%>: %s" -msgstr "spécification de version du processeur CRIS inconnue dans %<-mtune=%> : %s" +msgstr "spécification de version du processeur CRIS inconnue dans %<-mtune=%> : %s" #. Use error rather than warning, so invalid use is easily #. detectable. Still change to the values we expect, to avoid @@ -38097,19 +38017,17 @@ msgstr "les gestionnaires d'interruptions ne peuvent pas avoir d'argument" #: config/epiphany/epiphany.cc:523 #, gcc-internal-format msgid "argument of %qE attribute is not %qs, %qs %qs, %qs, %qs, %qs, %qs, %qs, %qs or %qs" -msgstr "" +msgstr "l'argument de l'attribut %qE n'est pas %qs, %qs %qs, %qs, %qs, %qs, %qs, %qs, %qs ou %qs" #: config/epiphany/epiphany.cc:1543 -#, fuzzy, gcc-internal-format -#| msgid "stack_offset must be at least 4" +#, gcc-internal-format msgid "%<stack_offset%> must be at least 4" -msgstr "stack_offset doit être au moins 4" +msgstr "%<stack_offset%> doit être au moins 4" #: config/epiphany/epiphany.cc:1545 -#, fuzzy, gcc-internal-format -#| msgid "stack_offset must be a multiple of 4" +#, gcc-internal-format msgid "%<stack_offset%> must be a multiple of 4" -msgstr "stack_offset doit être un multiple de 4" +msgstr "%<stack_offset%> doit être un multiple de 4" #: config/frv/frv.cc:8477 #, gcc-internal-format @@ -38157,20 +38075,17 @@ msgid "this media function is only available on the fr400 and fr550" msgstr "cette fonction média est seulement disponible sur les fr400 et fr550" #: config/frv/frv.cc:9137 -#, fuzzy, gcc-internal-format -#| msgid "this builtin function is only available on the fr405 and fr450" +#, gcc-internal-format msgid "this built-in function is only available on the fr405 and fr450" msgstr "cette fonction interne est seulement disponible sur les fr405 et fr450" #: config/frv/frv.cc:9146 -#, fuzzy, gcc-internal-format -#| msgid "this builtin function is only available on the fr500 and fr550" +#, gcc-internal-format msgid "this built-in function is only available on the fr500 and fr550" msgstr "cette fonction interne est seulement disponible sur les fr500 et fr550" #: config/frv/frv.cc:9158 -#, fuzzy, gcc-internal-format -#| msgid "this builtin function is only available on the fr450" +#, gcc-internal-format msgid "this built-in function is only available on the fr450" msgstr "cette fonction interne est seulement disponible sur le fr450" @@ -38764,10 +38679,9 @@ msgid "%<-mregparm=%d%> is not between 0 and %d" msgstr "%<-mregparm=%d%> n'est pas entre 0 et %d" #: config/i386/i386-options.cc:2380 -#, fuzzy, gcc-internal-format -#| msgid "%<-mnop-mcount%> is not compatible with this target" +#, gcc-internal-format msgid "%<-m96bit-long-double%> is not compatible with this target" -msgstr "%<-mnop-mcount%> n'est pas compatible avec cette cible" +msgstr "%<-m96bit-long-double%> n'est pas compatible avec cette cible" #: config/i386/i386-options.cc:2385 #, gcc-internal-format @@ -39117,10 +39031,8 @@ msgid "the ABI of passing structure with %<complex float%> member has changed in msgstr "l'ABI pour passer une structure possédant un membre %<complex float%> a changé dans GCC 4.4" #: config/i386/i386.cc:2538 -#, fuzzy -#| msgid "the ABI of passing structure with %<complex float%> member has changed in GCC 4.4" msgid "the ABI of passing C structures with zero-width bit-fields has changed in GCC %{12.1%}" -msgstr "l'ABI pour passer une structure possédant un membre %<complex float%> a changé dans GCC 4.4" +msgstr "l'ABI pour passer des structures C avec des champs de bits de largeur zéro a changé dans GCC %{12.1%}" #: config/i386/i386.cc:2633 #, gcc-internal-format @@ -39249,10 +39161,9 @@ msgid "unsupported argument type %qT for simd" msgstr "type d'argument %qT non supporté pour simd" #: config/i386/i386.cc:23923 -#, fuzzy, gcc-internal-format -#| msgid "%<-fcf-protection%> is not compatible with this target" +#, gcc-internal-format msgid "%<-fexcess-precision=16%> is not compatible with %<-mfpmath=387%>" -msgstr "%<-fcf-protection%> n'est pas compatible avec cette cible" +msgstr "%<-fexcess-precision=16%> n'est pas compatible avec %<-mfpmath=387%>" #: config/i386/intelmic-mkoffload.cc:601 #, gcc-internal-format @@ -39275,10 +39186,9 @@ msgid "definition of static data member %q+D of dllimport%'d class" msgstr "définition d'un membre de données statique %q+D de la classe importée avec l'attribut dllimport" #: config/ia64/ia64-c.cc:50 -#, fuzzy, gcc-internal-format -#| msgid "malformed #pragma builtin" +#, gcc-internal-format msgid "malformed %<#pragma builtin%>" -msgstr "#pragma builtin mal composé" +msgstr "%<#pragma builtin%> mal composé" #: config/ia64/ia64.cc:751 #, gcc-internal-format @@ -39311,10 +39221,9 @@ msgid "version attribute is not a string" msgstr "l'attribut de version n'est pas une chaîne" #: config/iq2000/iq2000.cc:1867 -#, fuzzy, gcc-internal-format -#| msgid "gp_offset (%ld) or end_offset (%ld) is less than zero" +#, gcc-internal-format msgid "%<gp_offset%> (%ld) or %<end_offset%> (%ld) is less than zero" -msgstr "gp_offset (%ld) ou end_offset (%ld) est plus petit que zéro" +msgstr "%<gp_offset%> (%ld) ou %<end_offset%> (%ld) est plus petit que zéro" #: config/iq2000/iq2000.cc:2590 #, gcc-internal-format @@ -39322,52 +39231,44 @@ msgid "argument %qd is not a constant" msgstr "l'argument %qd n'est pas une constante" #: config/iq2000/iq2000.cc:2893 config/xtensa/xtensa.cc:2552 -#, fuzzy, gcc-internal-format -#| msgid "PRINT_OPERAND_ADDRESS, null pointer" +#, gcc-internal-format msgid "%<PRINT_OPERAND_ADDRESS%>, null pointer" -msgstr "PRINT_OPERAND_ADDRESS, pointeur nul" +msgstr "%<PRINT_OPERAND_ADDRESS%>, pointeur nul" #: config/iq2000/iq2000.cc:3048 -#, fuzzy, gcc-internal-format -#| msgid "PRINT_OPERAND: Unknown punctuation %<%c%>" +#, gcc-internal-format msgid "%<PRINT_OPERAND%>: Unknown punctuation %<%c%>" -msgstr "PRINT_OPERAND: Ponctuation %<%c%> inconnue" +msgstr "%<PRINT_OPERAND%>: Ponctuation %<%c%> inconnue" #: config/iq2000/iq2000.cc:3057 config/xtensa/xtensa.cc:2395 -#, fuzzy, gcc-internal-format -#| msgid "PRINT_OPERAND null pointer" +#, gcc-internal-format msgid "%<PRINT_OPERAND%> null pointer" -msgstr "PRINT_OPERAND pointeur nul" +msgstr "%<PRINT_OPERAND%> pointeur nul" #: config/m32c/m32c-pragma.cc:54 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of #pragma GCC memregs [0..16]" +#, gcc-internal-format msgid "junk at end of %<#pragma GCC memregs%> [0-16]" -msgstr "rebut à la fin de #pragma GCC memregs [0..16]" +msgstr "rebut à la fin de %<#pragma GCC memregs%> [0-16]" #: config/m32c/m32c-pragma.cc:61 -#, fuzzy, gcc-internal-format -#| msgid "#pragma GCC memregs must precede any function decls" +#, gcc-internal-format msgid "%<#pragma GCC memregs%> must precede any function declarations" -msgstr "#pragma GCC memregs doit précéder toute déclaration de fonction" +msgstr "%<#pragma GCC memregs%> doit précéder toute déclaration de fonction" #: config/m32c/m32c-pragma.cc:69 config/m32c/m32c-pragma.cc:76 -#, fuzzy, gcc-internal-format -#| msgid "#pragma GCC memregs takes a number [0..16]" +#, gcc-internal-format msgid "%<#pragma GCC memregs%> takes a number [0-16]" -msgstr "#pragma GCC memregs accepte un nombre [0..16]" +msgstr "%<#pragma GCC memregs%> accepte un nombre [0-16]" #: config/m32c/m32c-pragma.cc:104 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of #pragma ADDRESS" +#, gcc-internal-format msgid "junk at end of %<#pragma ADDRESS%>" -msgstr "rebut à la fin de #pragma ADDRESSs" +msgstr "rebut à la fin de %<#pragma ADDRESS%>" #: config/m32c/m32c-pragma.cc:109 -#, fuzzy, gcc-internal-format -#| msgid "malformed #pragma ADDRESS variable address" +#, gcc-internal-format msgid "malformed %<#pragma ADDRESS%> variable address" -msgstr "adresse variable de #pragma ADDRESS mal composée" +msgstr "adresse variable de %<#pragma ADDRESS%> mal composée" #: config/m32c/m32c.cc:419 #, gcc-internal-format @@ -39436,10 +39337,9 @@ msgid "multiple interrupt attributes not allowed" msgstr "plusieurs attributs d'interruption ne sont pas permis" #: config/m68k/m68k.cc:806 -#, fuzzy, gcc-internal-format -#| msgid "interrupt_thread is available only on fido" +#, gcc-internal-format msgid "%<interrupt_thread%> is available only on fido" -msgstr "interrupt_thread est disponible uniquement sur fido" +msgstr "%<interrupt_thread%> est disponible uniquement sur fido" #: config/m68k/m68k.cc:1140 config/rs6000/rs6000-logue.cc:1756 #, gcc-internal-format @@ -39447,10 +39347,9 @@ msgid "stack limit expression is not supported" msgstr "l'expression limitant la pile n'est pas supportée" #: config/m68k/m68k.cc:7119 config/s390/s390.cc:16596 -#, fuzzy, gcc-internal-format -#| msgid "%<-fcf-protection=full%> is not supported for this target" +#, gcc-internal-format msgid "%<-fexcess-precision=16%> is not supported on this target" -msgstr "%<-fcf-protection=full%> n'est pas supporté pour cette cible" +msgstr "%<-fexcess-precision=16%> n'est pas supporté pour cette cible" #: config/mcore/mcore.cc:2959 #, gcc-internal-format @@ -39510,16 +39409,14 @@ msgid "%qE attribute requires a string argument" msgstr "l'attribut %qE requiert une chaîne comme argument" #: config/mips/mips.cc:1521 -#, fuzzy, gcc-internal-format -#| msgid "argument to %qE attribute is neither eic, nor vector=<line>" +#, gcc-internal-format msgid "argument to %qE attribute is neither eic, nor %<vector=<line>%>" -msgstr "l'argument de l'attribut %qE n'est ni eic ni vector=<ligne>" +msgstr "l'argument de l'attribut %qE n'est ni eic ni %<vector=<ligne>%>" #: config/mips/mips.cc:1537 -#, fuzzy, gcc-internal-format -#| msgid "interrupt vector to %qE attribute is not vector=(sw0|sw1|hw0|hw1|hw2|hw3|hw4|hw5)" +#, gcc-internal-format msgid "interrupt vector to %qE attribute is not %<vector=(sw0|sw1|hw0|hw1|hw2|hw3|hw4|hw5)%>" -msgstr "le vecteur d'interruption de l'attribut %qE n'est pas vector=(sw0|sw1|hw0|hw1|hw2|hw3|hw4|hw5)" +msgstr "le vecteur d'interruption de l'attribut %qE n'est pas %<vector=(sw0|sw1|hw0|hw1|hw2|hw3|hw4|hw5)%>" #: config/mips/mips.cc:1574 #, gcc-internal-format @@ -39577,10 +39474,9 @@ msgid "MIPS16 %<-mxgot%> code" msgstr "code %<-mxgot%> MIPS16" #: config/mips/mips.cc:19715 -#, fuzzy, gcc-internal-format -#| msgid "hard-float MIPS16 code for ABIs other than o32 and o64" +#, gcc-internal-format msgid "%<hard-float%> MIPS16 code for ABIs other than o32 and o64" -msgstr "code MIPS16 avec des flottants matériels pour des ABI autres que o32 et o64" +msgstr "code MIPS16 %<hard-float%> pour des ABI autres que o32 et o64" #: config/mips/mips.cc:19718 #, gcc-internal-format @@ -39786,10 +39682,9 @@ msgid "too large function value type, needs %d registers, have only %d registers msgstr "type de valeur de fonction trop grand, a besoin de %d registres mais seuls %d sont disponibles" #: config/mmix/mmix.cc:980 -#, fuzzy, gcc-internal-format -#| msgid "function_profiler support for MMIX" +#, gcc-internal-format msgid "%<function_profiler%> support for MMIX" -msgstr "function_profiler supporté pour MMIX" +msgstr "%<function_profiler%> supporté pour MMIX" #: config/mmix/mmix.cc:1003 #, gcc-internal-format @@ -39803,10 +39698,9 @@ msgstr "MMIX interne: Registre erroné: %d" #. Presumably there's a missing case above if we get here. #: config/mmix/mmix.cc:1766 -#, fuzzy, gcc-internal-format -#| msgid "MMIX Internal: Missing %qc case in mmix_print_operand" +#, gcc-internal-format msgid "MMIX Internal: Missing %qc case in %<mmix_print_operand%>" -msgstr "MMIX interne: Cas %qc manquant dans mmix_print_operand" +msgstr "MMIX interne: Cas %qc manquant dans %<mmix_print_operand%>" #: config/mmix/mmix.cc:2055 #, gcc-internal-format @@ -39819,10 +39713,9 @@ msgid "stack frame not a multiple of octabyte: %wd" msgstr "la trame de pile n'est pas un multiple de 8 octets: %wd" #: config/mmix/mmix.cc:2594 config/mmix/mmix.cc:2653 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "MMIX Internal: %s is not a shiftable int" +#, gcc-internal-format, gfc-internal-format msgid "MMIX Internal: %s is not a shiftable integer" -msgstr "MMIX interne: %s n'est pas un entier pouvant décalé" +msgstr "MMIX interne: %s n'est pas un entier pouvant être décalé" #: config/mn10300/mn10300.cc:107 #, gcc-internal-format @@ -39845,22 +39738,19 @@ msgid "unhandled arguments %qs and %qs to %<msp430_set_driver_var%>" msgstr "arguments %qs et %qs pas gérés pour %<msp430_set_driver_var%>" #: config/msp430/driver-msp430.cc:92 -#, fuzzy, gcc-internal-format -#| msgid "unexpected argument to msp430_select_hwmult_lib: %s" +#, gcc-internal-format msgid "unexpected argument to %<msp430_select_hwmult_lib%>: %s" -msgstr "argument inattendu pour msp430_select_hwmult_lib: %s" +msgstr "argument inattendu pour %<msp430_select_hwmult_lib%> : %s" #: config/msp430/driver-msp430.cc:141 -#, fuzzy, gcc-internal-format -#| msgid "unexpected first argument to msp430_select_hwmult_lib: %s" +#, gcc-internal-format msgid "unexpected first argument to %<msp430_select_hwmult_lib%>: %s" -msgstr "premier argument inattendu pour msp430_select_hwmult_lib: %s" +msgstr "premier argument inattendu pour %<msp430_select_hwmult_lib%> : %s" #: config/msp430/driver-msp430.cc:146 -#, fuzzy, gcc-internal-format -#| msgid "msp430_select_hwmult_lib needs one or more arguments" +#, gcc-internal-format msgid "%<msp430_select_hwmult_lib%> needs one or more arguments" -msgstr "msp430_select_hwmult_lib a besoin d'au moins un argument" +msgstr "%<msp430_select_hwmult_lib%> a besoin d'au moins un argument" #: config/msp430/msp430-devices.cc:258 #, gcc-internal-format @@ -39943,34 +39833,19 @@ msgid "MCU %qs supports %s hardware multiply, but %<-mhwmult%> is set to f5serie msgstr "le MCU %qs supporte la multiplication matérielle %s mais %<-mhwmult%> est défini à f5series" #: config/msp430/msp430.cc:225 -#, fuzzy, gcc-internal-format -#| msgid "" -#| "Unrecognized MCU name %qs, assuming that it is just a MSP430X with no hardware multiply.\n" -#| "Use the %<-mcpu%> and %<-mhwmult%> options to set these explicitly." +#, gcc-internal-format msgid "unrecognized MCU name %qs, assuming that it is just a MSP430X with no hardware multiply; use the %<-mcpu%> and %<-mhwmult%> options to set these explicitly" -msgstr "" -"Nom de MCU %qs non reconnu, on va supposer que c'est simplement un MSP430X sans multiplication matérielle.\n" -"Utilisez les options %<-mcpu%> et %<-mhwmult%> pour les définir explicitement." +msgstr "nom de MCU %qs non reconnu, on va supposer que c'est simplement un MSP430X sans multiplication matérielle ; utilisez les options %<-mcpu%> et %<-mhwmult%> pour les définir explicitement" #: config/msp430/msp430.cc:232 -#, fuzzy, gcc-internal-format -#| msgid "" -#| "Unrecognized MCU name %qs, assuming that it has no hardware multiply.\n" -#| "Use the %<-mhwmult%> option to set this explicitly." +#, gcc-internal-format msgid "unrecognized MCU name %qs, assuming that it has no hardware multiply; use the %<-mhwmult%> option to set this explicitly" -msgstr "" -"Nom de MCU %qs non reconnu, on va supposer qu'il ne dispose pas de multiplication matérielle.\n" -"Utilisez l'option %<-mhwmult%> pour la définir explicitement." +msgstr "nom de MCU %qs non reconnu, on va supposer qu'il ne dispose pas de multiplication matérielle ; utilisez l'option %<-mhwmult%> pour la définir explicitement" #: config/msp430/msp430.cc:244 -#, fuzzy, gcc-internal-format -#| msgid "" -#| "Unrecognized MCU name %qs, assuming that it just supports the MSP430X ISA.\n" -#| "Use the %<-mcpu%> option to set the ISA explicitly." +#, gcc-internal-format msgid "unrecognized MCU name %qs, assuming that it just supports the MSP430X ISA; use the %<-mcpu%> option to set the ISA explicitly" -msgstr "" -"Nom de MCU %qs non reconnu, on va supposer qu'il supporte uniquement l'ISA du MSP430X.\n" -"Utilisez l'option %<-mcpu%> pour définir l'ISA explicitement." +msgstr "nom de MCU %qs non reconnu, on va supposer qu'il supporte uniquement l'ISA du MSP430X ; utilisez l'option %<-mcpu%> pour définir l'ISA explicitement" #: config/msp430/msp430.cc:250 #, gcc-internal-format @@ -40018,10 +39893,9 @@ msgid "unrecognized interrupt vector argument of %qE attribute" msgstr "argument de vecteur d'interruption non reconnu pour l'attribut %qE" #: config/msp430/msp430.cc:1904 -#, fuzzy, gcc-internal-format -#| msgid "numeric argument of %qE attribute must be in range 0..63" +#, gcc-internal-format msgid "numeric argument of %qE attribute must be in range [0-63]" -msgstr "l'argument numérique de l'attribut %qE doit être dans la plage 0..63" +msgstr "l'argument numérique de l'attribut %qE doit être dans la plage [0-63]" #: config/msp430/msp430.cc:1910 #, gcc-internal-format @@ -40074,10 +39948,9 @@ msgid "argument to interrupt attribute is unsupported for weak functions" msgstr "l'argument de l'attribut d'interruption n'est pas supporté pour les fonctions faibles" #: config/msp430/msp430.cc:2747 -#, fuzzy, gcc-internal-format -#| msgid "%<__delay_cycles%> only takes constant arguments" +#, gcc-internal-format msgid "%<__delay_cycles()%> only takes constant arguments" -msgstr "%<__delay_cycle%> ne prend que des arguments constants" +msgstr "%<__delay_cycle()%> ne prend que des arguments constants" #: config/msp430/msp430.cc:2757 config/pru/pru.cc:2945 #, gcc-internal-format @@ -40090,8 +39963,7 @@ msgid "%<__delay_cycles%> is limited to 32-bit loop counts" msgstr "%<__delay_cycles%> est limité à des décomptes de boucles sur 32 bits" #: config/msp430/msp430.cc:2849 -#, fuzzy, gcc-internal-format -#| msgid "MSP430 builtin functions only work inside interrupt handlers" +#, gcc-internal-format msgid "MSP430 built-in functions only work inside interrupt handlers" msgstr "les fonctions internes du MSP430 ne fonctionnent qu'à l'intérieur des gestionnaires d'interruptions" @@ -40117,20 +39989,17 @@ msgid "don%'t support DSP extension instructions" msgstr "ne pas supporter les instructions de l%'extension DSP" #: config/nds32/nds32-intrinsic.cc:1016 -#, fuzzy, gcc-internal-format -#| msgid "this builtin function is only available on the v3s or v3f toolchain" +#, gcc-internal-format msgid "this built-in function is only available on the v3s or v3f toolchain" msgstr "cette fonction interne est seulement disponible sur la chaîne de compilation v3s ou v3f" #: config/nds32/nds32-intrinsic.cc:1028 -#, fuzzy, gcc-internal-format -#| msgid "this builtin function is only available on the v3f toolchain" +#, gcc-internal-format msgid "this built-in function is only available on the v3f toolchain" msgstr "cette fonction interne est seulement disponible sur la chaîne de compilation v3f" #: config/nds32/nds32-intrinsic.cc:1043 -#, fuzzy, gcc-internal-format -#| msgid "this builtin function not support on the v3m toolchain" +#, gcc-internal-format msgid "this built-in function not support on the v3m toolchain" msgstr "cette fonction interne n'est pas supportée sur la chaîne de compilation v3m" @@ -40165,8 +40034,7 @@ msgid "invalid id value for exception attribute" msgstr "valeur de id invalide pour l'attribut d'exception" #: config/nds32/nds32-isr.cc:617 -#, fuzzy, gcc-internal-format -#| msgid "multiple save reg attributes to function %qD" +#, gcc-internal-format msgid "multiple save register attributes to function %qD" msgstr "attributs de sauvegarde de registres multiples pour la fonction %qD" @@ -40214,22 +40082,19 @@ msgstr "l'index du registre intrinsèque est hors limite" #: config/nds32/nds32.cc:3479 config/nds32/nds32.cc:3486 #: config/nds32/nds32.cc:3493 config/nds32/nds32.cc:3500 #: config/nds32/nds32.cc:3507 -#, fuzzy, gcc-internal-format -#| msgid "CCTL intrinsic function subtype out of range!" +#, gcc-internal-format msgid "CCTL intrinsic function subtype out of range" -msgstr "le sous-type de fonction intrinsèque CCTL est hors limite !" +msgstr "le sous-type de fonction intrinsèque CCTL est hors limite" #: config/nds32/nds32.cc:3944 -#, fuzzy, gcc-internal-format -#| msgid "cannot use indirect_call attribute under linux toolchain" +#, gcc-internal-format msgid "cannot use %<indirect_call%> attribute under linux toolchain" -msgstr "impossible d'utiliser l'attribut indirect_call avec la chaîne de compilation de linux" +msgstr "impossible d'utiliser l'attribut %<indirect_call%> avec la chaîne de compilation de linux" #: config/nds32/nds32.cc:3952 -#, fuzzy, gcc-internal-format -#| msgid "indirect_call attribute can%'t apply for static function" +#, gcc-internal-format msgid "%<indirect_call%> attribute cannot apply for static function" -msgstr "l%'attribut indirect_call ne s%'applique pas à une fonction statique" +msgstr "l%'attribut %<indirect_call%> ne s%'applique pas à une fonction statique" #: config/nds32/nds32.cc:4041 #, gcc-internal-format @@ -40482,27 +40347,24 @@ msgid "%qE attribute not allowed with auto storage class" msgstr "l'attribut %qE n'est pas permis avec une classe de stockage auto" #: config/nvptx/nvptx.cc:6067 -#, fuzzy, gcc-internal-format -#| msgid "using vector_length (%d) due to call to vector-partitionable routine, ignoring %d" +#, gcc-internal-format msgid "using %<vector_length (%d)%> due to call to vector-partitionable routine, ignoring %d" -msgstr "utilisation de vector_length (%d) à cause de l'appel à la routine vector-partitionable, %d est ignoré" +msgstr "utilisation de %<vector_length (%d)%> à cause de l'appel à la routine vector-partitionable, %d est ignoré" #: config/nvptx/nvptx.cc:6075 -#, fuzzy, gcc-internal-format -#| msgid "using %<vector_length (64)%>, ignoring runtime setting" +#, gcc-internal-format msgid "using %<vector_length (%d)%>, ignoring runtime setting" -msgstr "utilisation de %<vector_length (64)%>, le paramètre à l'exécution est ignoré" +msgstr "utilisation de %<vector_length (%d)%>, le paramètre à l'exécution est ignoré" #: config/nvptx/nvptx.cc:6089 -#, fuzzy, gcc-internal-format -#| msgid "using %<vector_length (64)%>, ignoring %d" +#, gcc-internal-format msgid "using %<vector_length (%d)%>, ignoring %d" -msgstr "utilisation de %<vector_length (64)%>, %d est ignoré" +msgstr "utilisation de %<vector_length (%d)%>, %d est ignoré" #: config/nvptx/nvptx.cc:6975 #, gcc-internal-format msgid "variable %qD adjusted for OpenACC privatization level: %qs" -msgstr "" +msgstr "variable %qD ajustée pour le niveau de privatisation de OpenACC : %qs" #: config/or1k/or1k.cc:1311 #, gcc-internal-format, gfc-internal-format @@ -40566,44 +40428,42 @@ msgstr "adresse variable de %<#pragma CTABLE_ENTRY%> mal composée" #: config/pru/pru.cc:2115 #, gcc-internal-format msgid "aggregate types are prohibited in %<__regio_symbol%> address space" -msgstr "" +msgstr "les types d'agrégats sont interdits dans l'espace d'adresse de %<__regio_symbol%>" #: config/pru/pru.cc:2122 #, gcc-internal-format msgid "variables in %<__regio_symbol%> address space cannot have initial value" -msgstr "" +msgstr "les variables dans l'espace d'adresses de %<__regio_symbol%> ne peuvent pas avoir de valeur initiale" #: config/pru/pru.cc:2125 -#, fuzzy, gcc-internal-format -#| msgid "variable previously declared %<static%> redeclared %<extern%>" +#, gcc-internal-format msgid "variables in %<__regio_symbol%> address space cannot be declared %<register%>" -msgstr "une variable précédemment déclarée %<static%> est redéclarée %<extern%>" +msgstr "les variables dans l'espace d'adresses de %<__regio_symbol%> ne peuvent pas être déclarées %<register%>" #: config/pru/pru.cc:2128 #, gcc-internal-format msgid "variables in %<__regio_symbol%> address space must be declared %<volatile%>" -msgstr "" +msgstr "les variables dans l'espace d'adresses de %<__regio_symbol%> doivent être déclarées %<volatile%>" #: config/pru/pru.cc:2131 -#, fuzzy, gcc-internal-format -#| msgid "variable previously declared %<static%> redeclared %<extern%>" +#, gcc-internal-format msgid "variables in %<__regio_symbol%> address space must be declared %<extern%>" -msgstr "une variable précédemment déclarée %<static%> est redéclarée %<extern%>" +msgstr "les variables dans l'espace d'adresses de %<__regio_symbol%> doivent être déclarées %<extern%>" #: config/pru/pru.cc:2134 #, gcc-internal-format msgid "only 32-bit access is supported for %<__regio_symbol%> address space" -msgstr "" +msgstr "seul l'accès 32 bits est supporté pour l'espace d'adresses de %<__regio_symbol%>" #: config/pru/pru.cc:2137 #, gcc-internal-format msgid "register name %<%s%> not recognized in %<__regio_symbol%> address space" -msgstr "" +msgstr "nom de registre %<%s%> non reconnu dans l'espace d'adresses de %<__regio_symbol%>" #: config/pru/pru.cc:2162 #, gcc-internal-format msgid "pointers to %<__regio_symbol%> address space are prohibited" -msgstr "" +msgstr "les pointeurs vers l'espace d'adresses %<__regio_symbol%> sont interdits" #: config/pru/pru.cc:2936 #, gcc-internal-format @@ -40621,10 +40481,9 @@ msgid "ABI for flattened struct with zero-length bit-fields changed in GCC 10" msgstr "l'ABI pour des structures aplaties avec un champ de bits d'une taille non nulle a changé dans GCC 10" #: config/riscv/riscv.cc:3312 -#, fuzzy, gcc-internal-format -#| msgid "argument to %qE attribute is not \"user\", \"supervisor\", or \"machine\"" +#, gcc-internal-format msgid "argument to %qE attribute is not %<\"user\"%>, %<\"supervisor\"%>, or %<\"machine\"%>" -msgstr "l'argument de l'attribut %qE n'est pas « user », « supervisor » ou « machine »" +msgstr "l'argument de l'attribut %qE n'est pas %<\"user\"%>, %<\"supervisor\"%> ou %<\"machine\"%>" #: config/riscv/riscv.cc:4980 #, gcc-internal-format @@ -40733,16 +40592,14 @@ msgid "please use an explicit cpu name; valid cpu names are: %s" msgstr "veuillez utiliser un nom de processeur explicite. Les noms de processeurs valides sont : %s" #: config/rs6000/host-darwin.cc:61 -#, fuzzy, gcc-internal-format -#| msgid "Segmentation Fault (code)" +#, gcc-internal-format msgid "segmentation fault (code)" -msgstr "Faute de segmentation (code)" +msgstr "faute de segmentation (code)" #: config/rs6000/host-darwin.cc:131 -#, fuzzy, gcc-internal-format -#| msgid "Segmentation Fault" +#, gcc-internal-format msgid "segmentation fault" -msgstr "Faute de segmentation" +msgstr "faute de segmentation" #: config/rs6000/host-darwin.cc:145 #, gcc-internal-format @@ -40767,10 +40624,9 @@ msgstr "%qs requiert l'option %qs" #: config/rs6000/rs6000-builtin.cc:86 config/rs6000/rs6000-builtin.cc:102 #: config/rs6000/rs6000-builtin.cc:116 config/rs6000/rs6000-builtin.cc:139 -#, fuzzy, gcc-internal-format -#| msgid "%qs requires the %qs (or newer), and %qs or %qs options" +#, gcc-internal-format msgid "%qs requires the %qs option and either the %qs or %qs option" -msgstr "%qs requiert les options %qs (ou plus récente) et %qs ou %qs" +msgstr "%qs requiert l'option %qs et soit l'option %qs ou %qs" #: config/rs6000/rs6000-builtin.cc:109 config/rs6000/rs6000-builtin.cc:120 #, gcc-internal-format @@ -40778,10 +40634,9 @@ msgid "%qs requires the %qs and %qs options" msgstr "%qs requiert les options %qs et %qs" #: config/rs6000/rs6000-builtin.cc:124 -#, fuzzy, gcc-internal-format -#| msgid "Generate double-precision floating-point instructions." +#, gcc-internal-format msgid "%qs requires quad-precision floating-point arithmetic" -msgstr "Générer des instructions en virgule flottante double précision." +msgstr "%qs requiert l'arithmétique en virgule flottante de précision quadruple" #: config/rs6000/rs6000-builtin.cc:2273 #, gcc-internal-format @@ -40831,45 +40686,39 @@ msgid "builtin %qs is only valid in 64-bit mode" msgstr "la fonction interne %qs est uniquement valable en mode 64 bits" #: config/rs6000/rs6000-builtin.cc:3403 -#, fuzzy, gcc-internal-format -#| msgid "%<__builtin_mffsl%> not supported with %<-msoft-float%>" +#, gcc-internal-format msgid "%qs not supported with %<-msoft-float%>" -msgstr "%<__builtin_mffsl%> n'est pas supporté avec %<-msoft-float%>" +msgstr "%qs n'est pas supporté avec %<-msoft-float%>" #: config/rs6000/rs6000-builtin.cc:3410 -#, fuzzy, gcc-internal-format -#| msgid "%<-mcmodel=%> is not supported in 32-bit mode" +#, gcc-internal-format msgid "%qs is not supported in 32-bit mode" -msgstr "%<-mcmodel=%> n'est pas supporté sur les systèmes 32 bits" +msgstr "%qs n'est pas supporté en mode 32 bits" #: config/rs6000/rs6000-builtin.cc:3416 #, gcc-internal-format msgid "%qs requires %<long double%> to be IBM 128-bit format" -msgstr "" +msgstr "%qs requiert que %<long double%> soit au format IBM 128 bits" #: config/rs6000/rs6000-builtin.cc:3556 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "argument 2 must be unsigned literal between 2 and 7 inclusive" +#, gcc-internal-format, gfc-internal-format msgid "argument %d must be a literal between 0 and %d, inclusive" -msgstr "l'argument 2 doit être un littéral non signé entre 2 et 7 inclus" +msgstr "l'argument %d doit être un littéral entre 0 et %d inclus" #: config/rs6000/rs6000-builtin.cc:3572 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "argument 2 must be unsigned literal between 2 and 7 inclusive" +#, gcc-internal-format, gfc-internal-format msgid "argument %d must be a literal between %d and %d, inclusive" -msgstr "l'argument 2 doit être un littéral non signé entre 2 et 7 inclus" +msgstr "l'argument %d doit être un littéral entre %d et %d inclus" #: config/rs6000/rs6000-builtin.cc:3589 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "argument 2 must be unsigned literal between 2 and 7 inclusive" +#, gcc-internal-format, gfc-internal-format msgid "argument %d must be a variable or a literal between %d and %d, inclusive" -msgstr "l'argument 2 doit être un littéral non signé entre 2 et 7 inclus" +msgstr "l'argument %d doit être une variable ou un littéral entre %d et %d inclus" #: config/rs6000/rs6000-builtin.cc:3605 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "argument %d must be an unsigned literal" +#, gcc-internal-format, gfc-internal-format msgid "argument %d must be either a literal %d or a literal %d" -msgstr "l'argument %d doit être un littéral non signé" +msgstr "l'argument %d doit être soit un littéral %d ou un littéral %d" #: config/rs6000/rs6000-c.cc:55 #, gcc-internal-format @@ -40927,10 +40776,9 @@ msgid "%<vec_lvsr%> is deprecated for little endian; use assignment for unaligne msgstr "%<vec_lvsr%> est déprécié pour les petits boutistes; utilisation d'une affectation pour des chargements et des stockages non alignés" #: config/rs6000/rs6000-c.cc:1783 -#, fuzzy, gcc-internal-format -#| msgid "passing argument %d of %qE discards qualifiers from pointer target type" +#, gcc-internal-format msgid "passing argument %d of %qE discards const qualifier from pointer target type" -msgstr "passer l'argument %d de %qE abandonne les qualificatifs du type cible du pointeur" +msgstr "passer l'argument %d de %qE abandonne le qualificatif const du type cible du pointeur" #: config/rs6000/rs6000-c.cc:1868 config/rs6000/rs6000-c.cc:2024 #, gcc-internal-format @@ -40938,10 +40786,9 @@ msgid "invalid parameter combination for AltiVec intrinsic %qs" msgstr "combinaison invalide de paramètres pour l'intrinsèque Altivec %qs" #: config/rs6000/rs6000-c.cc:2013 -#, fuzzy, gcc-internal-format -#| msgid "builtin %qs requires builtin %qs" +#, gcc-internal-format msgid "overloaded builtin %qs is implemented by builtin %qs" -msgstr "l'interne %qs requiert l'interne %qs" +msgstr "l'interne surchargé %qs est implémenté par l'interne %qs" #: config/rs6000/rs6000-c.cc:2017 #, gcc-internal-format @@ -40951,7 +40798,7 @@ msgstr "%qs n'est pas supporté dans cette configuration du compilateur" #: config/rs6000/rs6000-call.cc:387 #, gcc-internal-format msgid "ELFv2 parameter passing for an argument containing zero-width bit fields but that is otherwise a homogeneous aggregate was corrected in GCC 12" -msgstr "" +msgstr "le passage d'un paramètre ELFv2 pour un argument contenant des champs de bits de largeur zéro qui est, par ailleurs, un agrégat homogène a été corrigé dans GCC 12" #: config/rs6000/rs6000-call.cc:455 #, gcc-internal-format @@ -41240,8 +41087,7 @@ msgid "multiple fast interrupt routines seen: %qE and %qE" msgstr "plusieurs routines d'interruptions rapides vues: %qE et %qE" #: config/rx/rx.cc:2480 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "invalid control register for mvtc : %d - using 'psw'" +#, gcc-internal-format, gfc-internal-format msgid "invalid control register for mvtc: %d - using 'psw'" msgstr "registre de contrôle invalide pour mvtc : %d – utilisation de « psw »" @@ -41251,10 +41097,9 @@ msgid "%<__builtin_rx_%s%> takes %<C%>, %<Z%>, %<S%>, %<O%>, %<I%>, or %<U%>" msgstr "%<__builtin_rx_%s%> accepte %<C%>, %<Z%>, %<S%>, %<O%>, %<I%> ou %<U%>" #: config/rx/rx.cc:2605 -#, fuzzy, gcc-internal-format -#| msgid "use %<__builtin_rx_mvtc%> (0, ... ) to write arbitrary values to PSW" +#, gcc-internal-format msgid "use %<__builtin_rx_mvtc (0, ... )%> to write arbitrary values to PSW" -msgstr "utilisez %<__builtin_rx_mvtc%> (0, ... ) pour écrire des valeurs arbitraires dans le PSW" +msgstr "utilisez %<__builtin_rx_mvtc (0, ... )%> pour écrire des valeurs arbitraires dans le PSW" #: config/rx/rx.cc:2652 #, gcc-internal-format @@ -41267,10 +41112,9 @@ msgid "RX FPU instructions do not support NaNs and infinities" msgstr "Les instructions du FPU RX ne supportent pas les NaN et les infinis" #: config/s390/s390-c.cc:487 -#, fuzzy, gcc-internal-format -#| msgid "builtin vec_step can only be used on vector types." +#, gcc-internal-format msgid "builtin %qs can only be used on vector types" -msgstr "la fonction interne vec_step peut uniquement être utilisée sur des types vectoriels." +msgstr "la fonction interne %qs peut uniquement être utilisée sur des types vectoriels." #: config/s390/s390-c.cc:717 config/s390/s390.cc:922 #, gcc-internal-format @@ -41283,16 +41127,14 @@ msgid "valid values for builtin %qF argument %d are 64, 128, 256, 512, 1024, 204 msgstr "les valeurs valides pour l'argument %2$d de la fonction interne %1$qF sont 64, 128, 256, 512, 1024, 2048 et 4096" #: config/s390/s390-c.cc:909 -#, fuzzy, gcc-internal-format -#| msgid "builtin %qF is for GCC internal use only." +#, gcc-internal-format msgid "builtin %qF is for GCC internal use only" -msgstr "la fonction interne %qF est réservée pour le propre usage de GCC." +msgstr "la fonction interne %qF est réservée pour le propre usage de GCC" #: config/s390/s390-c.cc:917 -#, fuzzy, gcc-internal-format -#| msgid "builtin %qF is deprecated." +#, gcc-internal-format msgid "builtin %qF is deprecated" -msgstr "la fonction interne %qF est obsolète." +msgstr "la fonction interne %qF est obsolète" #: config/s390/s390-c.cc:921 #, gcc-internal-format @@ -41335,10 +41177,9 @@ msgid "%qs matching variant requires z15 or higher" msgstr "la variante correspondant à %qs requiert z15 ou supérieur" #: config/s390/s390-c.cc:1025 -#, fuzzy, gcc-internal-format -#| msgid "%qs matching variant is deprecated." +#, gcc-internal-format msgid "%qs matching variant is deprecated" -msgstr "la variante correspondant à %qs est obsolète." +msgstr "la variante correspondant à %qs est obsolète" #: config/s390/s390-c.cc:1065 #, gcc-internal-format @@ -41351,40 +41192,34 @@ msgid "constant argument %d for builtin %qF is invalid (%s)" msgstr "l'argument constant %d de la fonction interne %qF est invalide (%s)" #: config/s390/s390.cc:769 -#, fuzzy, gcc-internal-format -#| msgid "constant argument %d for builtin %qF is out of range (0..%wu)" +#, gcc-internal-format msgid "constant argument %d for builtin %qF is out of range (0-%wu)" -msgstr "l'argument constant %d de la fonction interne %qF est hors limite (0..%wu)" +msgstr "l'argument constant %d de la fonction interne %qF est hors limite (0-%wu)" #: config/s390/s390.cc:785 -#, fuzzy, gcc-internal-format -#| msgid "constant argument %d for builtin %qF is out of range (%wd..%wd)" +#, gcc-internal-format msgid "constant argument %d for builtin %qF is out of range (%wd-%wd)" -msgstr "l'argument constant %d de la fonction interne %qF est hors limite (%wd..%wd)" +msgstr "l'argument constant %d de la fonction interne %qF est hors limite (%wd-%wd)" #: config/s390/s390.cc:834 -#, fuzzy, gcc-internal-format -#| msgid "builtin %qF is not supported without %<-mhtm%> (default with %<-march=zEC12%> and higher)." +#, gcc-internal-format msgid "builtin %qF is not supported without %<-mhtm%> (default with %<-march=zEC12%> and higher)" -msgstr "la fonction interne %qF n'est pas supportée sans %<-mhtm%> (par défaut avec %<-march=zEC12%> et supérieur)." +msgstr "la fonction interne %qF n'est pas supportée sans %<-mhtm%> (par défaut avec %<-march=zEC12%> et supérieur)" #: config/s390/s390.cc:840 -#, fuzzy, gcc-internal-format -#| msgid "builtin %qF requires %<-mvx%> (default with %<-march=z13%> and higher)." +#, gcc-internal-format msgid "builtin %qF requires %<-mvx%> (default with %<-march=z13%> and higher)" -msgstr "la fonction interne %qF requiert %<-mvx%> (par défaut avec %<-march=z13%> et supérieur)." +msgstr "la fonction interne %qF requiert %<-mvx%> (par défaut avec %<-march=z13%> et supérieur)" #: config/s390/s390.cc:847 -#, fuzzy, gcc-internal-format -#| msgid "Builtin %qF requires z14 or higher." +#, gcc-internal-format msgid "Builtin %qF requires z14 or higher" -msgstr "La fonction interne %qF requiert z14 ou supérieur." +msgstr "La fonction interne %qF requiert z14 ou supérieur" #: config/s390/s390.cc:853 -#, fuzzy, gcc-internal-format -#| msgid "Builtin %qF requires z15 or higher." +#, gcc-internal-format msgid "Builtin %qF requires z15 or higher" -msgstr "La fonction interne %qF requiert z15 ou supérieur." +msgstr "La fonction interne %qF requiert z15 ou supérieur" #: config/s390/s390.cc:859 #, gcc-internal-format @@ -41423,16 +41258,14 @@ msgid "total size of local variables exceeds architecture limit" msgstr "la taille totale des variables locales excède la limite de l'architecture" #: config/s390/s390.cc:11465 -#, fuzzy, gcc-internal-format -#| msgid "frame size of function %qs is %wd bytes exceeding user provided stack limit of %d bytes. An unconditional trap is added." +#, gcc-internal-format msgid "frame size of function %qs is %wd bytes exceeding user provided stack limit of %d bytes; an unconditional trap is added" -msgstr "la taille de la trame de la fonction %qs est de %wd octets. Elle dépasse la limite de %d octets de la pile fournie par l'utilisateur. Un déroutement inconditionnel est ajouté." +msgstr "la taille de la trame de la fonction %qs est de %wd octets ; elle dépasse la limite de %d octets de la pile fournie par l'utilisateur ; un déroutement inconditionnel est ajouté" #: config/s390/s390.cc:11481 -#, fuzzy, gcc-internal-format -#| msgid "frame size of function %qs is %wd bytes which is more than half the stack size. The dynamic check would not be reliable. No check emitted for this function." +#, gcc-internal-format msgid "frame size of function %qs is %wd bytes which is more than half the stack size; the dynamic check would not be reliable; no check emitted for this function" -msgstr "la taille de la trame de la fonction %qs est de %wd octets. C'est plus que la moitié de la taille de la pile. Le contrôle dynamique ne serait pas fiable. Aucun contrôle n'est généré pour cette fonction." +msgstr "la taille de la trame de la fonction %qs est de %wd octets ; c'est plus que la moitié de la taille de la pile ; le contrôle dynamique ne serait pas fiable. Aucun contrôle n'est généré pour cette fonction" #: config/s390/s390.cc:11509 #, gcc-internal-format @@ -41470,20 +41303,17 @@ msgid "hardware vector support not available with %<-msoft-float%>" msgstr "le support des vecteurs matériels n'est pas disponible avec %<-msoft-float%>" #: config/s390/s390.cc:15560 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "hardware decimal floating point instructions not available on %s" +#, gcc-internal-format, gfc-internal-format msgid "hardware decimal floating-point instructions not available on %s" msgstr "les instructions décimales en virgule flottante matérielles ne sont pas disponibles sur %s" #: config/s390/s390.cc:15564 -#, fuzzy, gcc-internal-format -#| msgid "hardware decimal floating point instructions not available in ESA/390 mode" +#, gcc-internal-format msgid "hardware decimal floating-point instructions not available in ESA/390 mode" msgstr "les instructions décimales en virgule flottante matérielles ne sont pas disponibles en mode ESA/390" #: config/s390/s390.cc:15576 -#, fuzzy, gcc-internal-format -#| msgid "%<-mhard-dfp%> can%'t be used in conjunction with %<-msoft-float%>" +#, gcc-internal-format msgid "%<-mhard-dfp%> cannot be used in conjunction with %<-msoft-float%>" msgstr "%<-mhard-dfp%> ne peut être utilisé en conjonction avec %<-msoft-float%>" @@ -41508,28 +41338,24 @@ msgid "%<-mstack-guard%> implies use of %<-mstack-size%>" msgstr "%<-mstack-guard%> implique l'utilisation de %<-mstack-size%>" #: config/s390/s390.cc:15609 -#, fuzzy, gcc-internal-format -#| msgid "-mtpf-trace-hook-prologue-check requires integer in range 0..4095" +#, gcc-internal-format msgid "%<-mtpf-trace-hook-prologue-check%> requires integer in range 0-4095" -msgstr "-mtpf-trace-hook-prologue-check requiert un entier dans la plage 0..4095" +msgstr "%<-mtpf-trace-hook-prologue-check%> requiert un entier dans la plage 0-4095" #: config/s390/s390.cc:15612 -#, fuzzy, gcc-internal-format -#| msgid "-mtpf-trace-hook-prologue-target requires integer in range 0..4095" +#, gcc-internal-format msgid "%<-mtpf-trace-hook-prologue-target%> requires integer in range 0-4095" -msgstr "-mtpf-trace-hook-prologue-target requiert un entier dans la plage 0..4095" +msgstr "%<-mtpf-trace-hook-prologue-target%> requiert un entier dans la plage 0-4095" #: config/s390/s390.cc:15615 -#, fuzzy, gcc-internal-format -#| msgid "-mtpf-trace-hook-epilogue-check requires integer in range 0..4095" +#, gcc-internal-format msgid "%<-mtpf-trace-hook-epilogue-check%> requires integer in range 0-4095" -msgstr "-mtpf-trace-hook-epilogue-check requiert un entier dans la plage 0..4095" +msgstr "%<-mtpf-trace-hook-epilogue-check%> requiert un entier dans la plage 0-4095" #: config/s390/s390.cc:15618 -#, fuzzy, gcc-internal-format -#| msgid "-mtpf-trace-hook-epilogue-target requires integer in range 0..4095" +#, gcc-internal-format msgid "%<-mtpf-trace-hook-epilogue-target%> requires integer in range 0-4095" -msgstr "-mtpf-trace-hook-epilogue-target requiert un entier dans la plage 0..4095" +msgstr "%<-mtpf-trace-hook-epilogue-target%> requiert un entier dans la plage 0-4095" #: config/s390/s390.cc:15671 #, gcc-internal-format @@ -41554,10 +41380,9 @@ msgstr "%<-mno-pic-data-is-text-relative%> ne peut pas être utilisé sans %<-fp #: config/s390/s390.cc:15906 config/s390/s390.cc:15956 #: config/s390/s390.cc:15973 -#, fuzzy, gcc-internal-format -#| msgid "attribute %qs argument %qs is unknown" +#, gcc-internal-format msgid "attribute %<target%> argument %qs is unknown" -msgstr "l'argument %qs de l'attribut %qs est inconnu" +msgstr "l'argument %<target%> de l'attribut %qs est inconnu" #. Value is not allowed for the target attribute. #: config/s390/s390.cc:15912 @@ -41631,16 +41456,14 @@ msgid "local variable memory requirements exceed capacity" msgstr "les exigences en mémoire pour les variables locales excèdent la capacité" #: config/stormy16/stormy16.cc:1215 -#, fuzzy, gcc-internal-format -#| msgid "function_profiler support" +#, gcc-internal-format msgid "%<function_profiler%> support" -msgstr "support de function_profiler" +msgstr "support de %<function_profiler%>" #: config/stormy16/stormy16.cc:1309 -#, fuzzy, gcc-internal-format -#| msgid "cannot use va_start in interrupt function" +#, gcc-internal-format msgid "cannot use %<va_start%> in interrupt function" -msgstr "ne peut utiliser va_start dans une fonction d'interruption" +msgstr "ne peut utiliser %<va_start%> dans une fonction d'interruption" #: config/stormy16/stormy16.cc:1880 #, gcc-internal-format, gfc-internal-format @@ -41653,10 +41476,9 @@ msgid "%<__BELOW100__%> attribute only applies to variables" msgstr "l'attribut %<__BELOW100__%> s'applique uniquement aux variables" #: config/stormy16/stormy16.cc:2259 -#, fuzzy, gcc-internal-format -#| msgid "__BELOW100__ attribute not allowed with auto storage class" +#, gcc-internal-format msgid "%<__BELOW100__%> attribute not allowed with auto storage class" -msgstr "l'attribut __BELOW100__ n'est pas autorisé avec la classe de stockage « auto »" +msgstr "l'attribut %<__BELOW100__%> n'est pas autorisé avec la classe de stockage « auto »" #: config/tilegx/tilegx.cc:3581 config/tilepro/tilepro.cc:3129 #, gcc-internal-format @@ -41664,16 +41486,14 @@ msgid "operand must be an immediate of the right size" msgstr "l'opérande doit être une valeur immédiate de la bonne taille" #: config/v850/v850-c.cc:67 -#, fuzzy, gcc-internal-format -#| msgid "#pragma GHS endXXXX found without previous startXXX" +#, gcc-internal-format msgid "%<#pragma%> GHS endXXXX found without previous startXXX" -msgstr "#pragma GHS endXXXX repéré sans être précédé de startXXX" +msgstr "%<#pragma%> GHS endXXXX repéré sans être précédé de startXXX" #: config/v850/v850-c.cc:70 -#, fuzzy, gcc-internal-format -#| msgid "#pragma GHS endXXX does not match previous startXXX" +#, gcc-internal-format msgid "%<#pragma%> GHS endXXX does not match previous startXXX" -msgstr "#pragma GHS endXXX ne concorde pas avec le précédent startXXX" +msgstr "%<#pragma%> GHS endXXX ne concorde pas avec le précédent startXXX" #: config/v850/v850-c.cc:96 #, gcc-internal-format @@ -41686,10 +41506,9 @@ msgid "cannot set interrupt attribute: no such identifier" msgstr "ne peut définir l'attribut d'interruption: pas de tel identificateur" #: config/v850/v850-c.cc:153 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of #pragma ghs section" +#, gcc-internal-format msgid "junk at end of %<#pragma%> ghs section" -msgstr "rebut à la fin de la section #pragma ghs" +msgstr "rebut à la fin de la section %<#pragma%> ghs" #: config/v850/v850-c.cc:170 #, gcc-internal-format @@ -41697,52 +41516,44 @@ msgid "unrecognized section name %qE" msgstr "nom de section %qE non reconnu" #: config/v850/v850-c.cc:184 -#, fuzzy, gcc-internal-format -#| msgid "malformed #pragma ghs section" +#, gcc-internal-format msgid "malformed %<#pragma%> ghs section" -msgstr "section mal composée #pragma ghs" +msgstr "section %<#pragma%> ghs mal composée" #: config/v850/v850-c.cc:203 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of #pragma ghs interrupt" +#, gcc-internal-format msgid "junk at end of %<#pragma%> ghs interrupt" -msgstr "rebut à la fin de #pragma ghs interrupt" +msgstr "rebut à la fin de %<#pragma%> ghs interrupt" #: config/v850/v850-c.cc:214 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of #pragma ghs starttda" +#, gcc-internal-format msgid "junk at end of %<#pragma%> ghs starttda" -msgstr "rebut à la fin de #pragma ghs starttda" +msgstr "rebut à la fin de %<#pragma%> ghs starttda" #: config/v850/v850-c.cc:225 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of #pragma ghs startsda" +#, gcc-internal-format msgid "junk at end of %<#pragma%> ghs startsda" -msgstr "rebut à la fin de #pragma ghs startsda" +msgstr "rebut à la fin de %<#pragma%> ghs startsda" #: config/v850/v850-c.cc:236 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of #pragma ghs startzda" +#, gcc-internal-format msgid "junk at end of %<#pragma%> ghs startzda" -msgstr "rebut à la fin de #pragma ghs startzda" +msgstr "rebut à la fin de %<#pragma%> ghs startzda" #: config/v850/v850-c.cc:247 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of #pragma ghs endtda" +#, gcc-internal-format msgid "junk at end of %<#pragma%> ghs endtda" -msgstr "rebut à la fin de #pragma ghs endtda" +msgstr "rebut à la fin de %<#pragma%> ghs endtda" #: config/v850/v850-c.cc:258 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of #pragma ghs endsda" +#, gcc-internal-format msgid "junk at end of %<#pragma%> ghs endsda" -msgstr "rebut à la fin de #pragma ghs endsda" +msgstr "rebut à la fin de %<#pragma%> ghs endsda" #: config/v850/v850-c.cc:269 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of #pragma ghs endzda" +#, gcc-internal-format msgid "junk at end of %<#pragma%> ghs endzda" -msgstr "rebut à la fin de #pragma ghs endzda" +msgstr "rebut à la fin de %<#pragma%> ghs endzda" #: config/v850/v850.cc:2046 #, gcc-internal-format @@ -41795,16 +41606,14 @@ msgid "an interrupt handler cannot be compiled with %<-muser-mode%>" msgstr "un gestionnaire d'interruption ne peut pas être compilé avec %<-muser-mode%>" #: config/vms/vms-c.cc:44 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of #pragma __nostandard" +#, gcc-internal-format msgid "junk at end of %<#pragma __nostandard%>" -msgstr "rebut à la fin de #pragma __nostandard" +msgstr "rebut à la fin de %<#pragma __nostandard%>" #: config/vms/vms-c.cc:55 -#, fuzzy, gcc-internal-format -#| msgid "junk at end of #pragma __standard" +#, gcc-internal-format msgid "junk at end of %<#pragma __standard%>" -msgstr "rebut à la fin de #pragma __standard" +msgstr "rebut à la fin de %<#pragma __standard%>" #: config/vms/vms-c.cc:81 #, gcc-internal-format @@ -41857,10 +41666,9 @@ msgid "vms '#pragma __message' is ignored" msgstr "le « #pragma __message » du vms est ignoré" #: config/vms/vms-c.cc:274 config/vms/vms-c.cc:280 -#, fuzzy, gcc-internal-format -#| msgid "malformed '#pragma __extern_prefix', ignoring" +#, gcc-internal-format msgid "malformed %<#pragma __extern_prefix%>, ignoring" -msgstr "« #pragma __extern_prefix » mal composé, ignoré" +msgstr "%<#pragma __extern_prefix%> mal composé, ignoré" #: config/vms/vms-c.cc:313 config/vms/vms-c.cc:333 #, gcc-internal-format @@ -41888,10 +41696,9 @@ msgid "PIC is required but not supported with CONST16 instructions" msgstr "PIC est requis mais non supporté avec des instructions CONST16" #: config/xtensa/xtensa.cc:3664 -#, fuzzy, gcc-internal-format -#| msgid "only uninitialized variables can be placed in a .bss section" +#, gcc-internal-format msgid "only uninitialized variables can be placed in a %<.bss%> section" -msgstr "seules les variables non initialisées peuvent être placées dans une section .bss" +msgstr "seules les variables non initialisées peuvent être placées dans une section %<.bss%>" #: ada/gcc-interface/misc.cc:155 #, gcc-internal-format @@ -41904,10 +41711,9 @@ msgid "%<-fexcess-precision=standard%> for Ada" msgstr "%<-fexcess-precision=standard%> pour Ada" #: ada/gcc-interface/misc.cc:260 -#, fuzzy, gcc-internal-format -#| msgid "%<-fexcess-precision=standard%> for Ada" +#, gcc-internal-format msgid "%<-fexcess-precision=16%> for Ada" -msgstr "%<-fexcess-precision=standard%> pour Ada" +msgstr "%<-fexcess-precision=16%> pour Ada" #: ada/gcc-interface/trans.cc:332 #, gcc-internal-format, gfc-internal-format @@ -43309,10 +43115,9 @@ msgid "type %qT is too large" msgstr "le type %qT est trop grand" #: c/c-decl.cc:8903 -#, fuzzy, gcc-internal-format -#| msgid "reverse scalar storage order" +#, gcc-internal-format msgid "type punning toggles scalar storage order" -msgstr "ordre de stockage inverse des scalaires" +msgstr "le transtypage à la barbare inverse l'ordre de stockage scalaire" #: c/c-decl.cc:8970 #, gcc-internal-format @@ -44803,10 +44608,9 @@ msgid "expected %<none%> or %<present%>" msgstr "%<none%> ou %<present%> attendu" #: c/c-parser.cc:13562 cp/parser.cc:37317 -#, fuzzy, gcc-internal-format -#| msgid "expected %<simd%>, %<reduction%>, %<target%> or %<variant%>" +#, gcc-internal-format msgid "expected %<none%>, %<shared%>, %<private%> or %<firstprivate%>" -msgstr "%<simd%>, %<reduction%>, %<target%> ou %<variant%> attendu" +msgstr "%<none%>, %<shared%>, %<private%> ou %<firstprivate%> attendu" #: c/c-parser.cc:13683 cp/parser.cc:37429 #, gcc-internal-format @@ -44919,10 +44723,9 @@ msgid "%<tile%> argument needs positive integral constant" msgstr "l'argument %<tile%> a besoin d'une constante entière positive" #: c/c-parser.cc:14726 cp/parser.cc:38000 -#, fuzzy, gcc-internal-format -#| msgid "expected %<none%> or %<shared%>" +#, gcc-internal-format msgid "expected %<reproducible%> or %<unconstrained%>" -msgstr "%<none%> ou %<shared%> attendu" +msgstr "%<reproducible%> ou %<unconstrained%%> attendu" #: c/c-parser.cc:14735 c/c-parser.cc:14741 cp/parser.cc:38009 #: cp/parser.cc:38019 @@ -44991,16 +44794,14 @@ msgid "%<aligned%> clause alignment expression must be positive constant integer msgstr "l'expression d'alignement %<aligned%> doit être une expression entière constante positive" #: c/c-parser.cc:15526 -#, fuzzy, gcc-internal-format -#| msgid "expected %<allocator%>" +#, gcc-internal-format msgid "expected %<allocator%> or %<align%>" -msgstr "%<allocator%> attendu" +msgstr "%<allocator%> ou %<align%> attendu" #: c/c-parser.cc:15533 -#, fuzzy, gcc-internal-format -#| msgid "duplicate %qs" +#, gcc-internal-format msgid "duplicate %qs modifier" -msgstr "%qs dupliqué" +msgstr "modificateur %qs dupliqué" #: c/c-parser.cc:15581 cp/semantics.cc:7738 #, gcc-internal-format @@ -45008,10 +44809,9 @@ msgid "%<allocate%> clause allocator expression has type %qT rather than %<omp_a msgstr "l'expression d'allocation de la clause %<allocate%> a le type %qT plutôt que %<omp_allocator_handle_t%>" #: c/c-parser.cc:15592 cp/semantics.cc:7693 cp/semantics.cc:7709 -#, fuzzy, gcc-internal-format -#| msgid "%<aligned%> clause alignment expression must be positive constant integer expression" +#, gcc-internal-format msgid "%<allocate%> clause %<align%> modifier argument needs to be positive constant power of two integer expression" -msgstr "l'expression d'alignement %<aligned%> doit être une expression entière constante positive" +msgstr "dans la clause %<allocate%>, l'argument du modificateur %<align%> doit être une expression entière constante positive qui est une puissance de deux" #: c/c-parser.cc:15668 #, gcc-internal-format @@ -45040,22 +44840,19 @@ msgid "invalid depend kind" msgstr "type de « depend » invalide" #: c/c-parser.cc:16205 cp/parser.cc:39410 -#, fuzzy, gcc-internal-format -#| msgid "too many %<if%> clauses with %qs modifier" +#, gcc-internal-format msgid "too many %<always%> modifiers" -msgstr "trop de %<if%> avec le modificateur %qs" +msgstr "trop de modificateurs %<always%>" #: c/c-parser.cc:16215 cp/parser.cc:39423 -#, fuzzy, gcc-internal-format -#| msgid "too many %<if%> clauses with %qs modifier" +#, gcc-internal-format msgid "too many %<close%> modifiers" -msgstr "trop de %<if%> avec le modificateur %qs" +msgstr "trop de modificateurs %<close%>" #: c/c-parser.cc:16223 cp/parser.cc:39434 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp target enter data%> with map-type other than %<to%> or %<alloc%> on %<map%> clause" +#, gcc-internal-format msgid "%<#pragma omp target%> with modifier other than %<always%> or %<close%>on %<map%> clause" -msgstr "%<#pragma omp target enter data%> avec un type avec correspondance autre que %<to%> ou %<alloc%> sur une clause %<map%>" +msgstr "%<#pragma omp target%> avec un modificateur autre que %<always%> ou %<close%> sur une clause %<map%>" #: c/c-parser.cc:16251 cp/parser.cc:39465 #, gcc-internal-format @@ -45065,19 +44862,17 @@ msgstr "type de « map » invalide" #: c/c-parser.cc:16303 cp/parser.cc:39524 #, gcc-internal-format msgid "%<ancestor%> device modifier not preceded by %<requires%> directive with %<reverse_offload%> clause" -msgstr "" +msgstr "le modificateur de périphérique %<ancestor%> pas précédé de la directive %<requires%> avec la clause %<reverse_offload%>" #: c/c-parser.cc:16315 cp/parser.cc:39535 -#, fuzzy, gcc-internal-format -#| msgid "expected %<none%> or %<present%>" +#, gcc-internal-format msgid "expected %<ancestor%> or %<device_num%>" -msgstr "%<none%> ou %<present%> attendu" +msgstr "%<ancestor%> ou %<device_num%> attendu" #: c/c-parser.cc:16338 cp/semantics.cc:7500 -#, fuzzy, gcc-internal-format -#| msgid "%<linear%> clause step expression must be integral" +#, gcc-internal-format msgid "the %<device%> clause expression must evaluate to %<1%>" -msgstr "l'expression du pas de %<linear%> doit être fondamentale" +msgstr "l'expression de la clause %<device%> doit être évaluée à %<1%>" #: c/c-parser.cc:16371 cp/parser.cc:39606 #, gcc-internal-format @@ -45236,16 +45031,14 @@ msgid "expected %<read%>, %<write%>, %<update%>, or %<capture%> clause" msgstr "clause %<read%>, %<write%>, %<update%> ou %<capture%> attendue" #: c/c-parser.cc:18114 cp/parser.cc:40631 -#, fuzzy, gcc-internal-format -#| msgid "expected %<seq_cst%>, %<relaxed%> or %<acq_rel%>" +#, gcc-internal-format msgid "expected %<seq_cst%>, %<acquire%> or %<relaxed%>" -msgstr "%<seq_cst%>, %<relaxed%> ou %<acq_rel%> attendu" +msgstr "%<seq_cst%>, %<acquire%> ou %<relaxed%> attendu" #: c/c-parser.cc:18138 cp/parser.cc:40660 -#, fuzzy, gcc-internal-format -#| msgid "expected %<read%>, %<write%>, %<update%>, %<capture%>, %<seq_cst%>, %<acq_rel%>, %<release%>, %<relaxed%> or %<hint%> clause" +#, gcc-internal-format msgid "expected %<read%>, %<write%>, %<update%>, %<capture%>, %<compare%>, %<weak%>, %<fail%>, %<seq_cst%>, %<acq_rel%>, %<release%>, %<relaxed%> or %<hint%> clause" -msgstr "clause %<read%>, %<write%>, %<update%>, %<capture%>, %<seq_cst%>, %<acq_rel%>, %<release%>, %<relaxed%> ou %<hint%> attendue" +msgstr "clause %<read%>, %<write%>, %<update%>, %<capture%>, %<compare%>, %<weak%>, %<fail%>, %<seq_cst%>, %<acq_rel%>, %<release%>, %<relaxed%> ou %<hint%> attendue" #: c/c-parser.cc:18153 cp/parser.cc:40675 #, gcc-internal-format @@ -45259,59 +45052,51 @@ msgstr "trop de clauses d'ordre de mémoire" #: c/c-parser.cc:18198 c/c-parser.cc:18205 cp/parser.cc:40720 #: cp/parser.cc:40727 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp atomic write%> incompatible with %<acq_rel%> or %<acquire%> clauses" +#, gcc-internal-format msgid "%qs clause is incompatible with %<read%> or %<write%> clauses" -msgstr "%<#pragma omp atomic write%> est incompatible avec les clauses %<acq_rel%> ou %<acquire%>" +msgstr "la clause %qs est incompatible avec les clauses %<read%> ou %<write%>" #: c/c-parser.cc:18211 c/c-parser.cc:18216 cp/parser.cc:40733 #: cp/parser.cc:40738 -#, fuzzy, gcc-internal-format -#| msgid "%qs requires %qs" +#, gcc-internal-format msgid "%qs clause requires %qs clause" -msgstr "%qs requiert %qs" +msgstr "la clause %qs requiert la clause %qs" #: c/c-parser.cc:18260 cp/parser.cc:40782 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp atomic read%> incompatible with %<acq_rel%> or %<release%> clauses" +#, gcc-internal-format msgid "%<#pragma omp atomic read%> incompatible with %<release%> clause" -msgstr "%<#pragma omp atomic read%> est incompatible avec les clauses %<acq_rel%> ou %<release%>" +msgstr "%<#pragma omp atomic read%> est incompatible avec la clause %<release%>" #: c/c-parser.cc:18270 cp/parser.cc:40792 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp atomic write%> incompatible with %<acq_rel%> or %<acquire%> clauses" +#, gcc-internal-format msgid "%<#pragma omp atomic write%> incompatible with %<acquire%> clause" -msgstr "%<#pragma omp atomic write%> est incompatible avec les clauses %<acq_rel%> ou %<acquire%>" +msgstr "%<#pragma omp atomic write%> est incompatible avec la clause %<acquire%>" #: c/c-parser.cc:18393 cp/parser.cc:40892 -#, fuzzy, gcc-internal-format -#| msgid "expected %<;%> after union definition" +#, gcc-internal-format msgid "expected %<==%> comparison in %<if%> condition" -msgstr "%<;%> attendu après la définition de l'union" +msgstr "la comparaison %<==%> est attendue dans la condition %<if%>" #: c/c-parser.cc:18400 cp/parser.cc:40899 #, gcc-internal-format msgid "expected %<==%>, %<<%> or %<>%> comparison in %<if%> condition" -msgstr "" +msgstr "la comparaison %<==%>, %<<%> ou %<>%> est attendue dans la condition %<if%>" #: c/c-parser.cc:18473 cp/parser.cc:40964 cp/parser.cc:41245 #: cp/parser.cc:41339 cp/parser.cc:41357 -#, fuzzy, gcc-internal-format -#| msgid "invalid form of %<#pragma omp atomic%>" +#, gcc-internal-format msgid "invalid form of %<#pragma omp atomic compare%>" -msgstr "forme invalide de %<#pragma omp atomic%>" +msgstr "forme invalide de %<#pragma omp atomic compare%>" #: c/c-parser.cc:18484 cp/parser.cc:40975 -#, fuzzy, gcc-internal-format -#| msgid "expected %<delete%>" +#, gcc-internal-format msgid "unexpected %<else%>" -msgstr "%<delete%> attendu" +msgstr "%<else%> attendu" #: c/c-parser.cc:18544 cp/parser.cc:41412 -#, fuzzy, gcc-internal-format -#| msgid "invalid form of %<#pragma omp atomic%>" +#, gcc-internal-format msgid "invalid form of %<pragma omp atomic compare%>" -msgstr "forme invalide de %<#pragma omp atomic%>" +msgstr "forme invalide de %<pragma omp atomic compare%>" #: c/c-parser.cc:18816 cp/parser.cc:41266 cp/parser.cc:41292 #, gcc-internal-format @@ -45326,7 +45111,7 @@ msgstr "opération invalide pour %<#pragma omp atomic%>" #: c/c-parser.cc:18871 cp/parser.cc:41401 #, gcc-internal-format msgid "%<weak%> clause requires atomic equality comparison" -msgstr "" +msgstr "la clause %<weak%> requiert une comparaison d'égalité atomique" #: c/c-parser.cc:18877 cp/semantics.cc:10754 cp/semantics.cc:10764 #, gcc-internal-format @@ -45349,10 +45134,9 @@ msgid "expected %<depend%>, %<destroy%> or %<update%> clause" msgstr "clause %<depend%>, %<destroy%> ou %<update%> attendue" #: c/c-parser.cc:19084 cp/parser.cc:41623 -#, fuzzy, gcc-internal-format -#| msgid "expected %<acq_rel%>, %<release%> or %<acquire%>" +#, gcc-internal-format msgid "expected %<seq_cst%>, %<acq_rel%>, %<release%> or %<acquire%>" -msgstr "%<acq_rel%>, %<release%> ou %<acquire%> attendu" +msgstr "%<seq_cst%>, %<acq_rel%>, %<release%> ou %<acquire%> attendu" #: c/c-parser.cc:19092 cp/parser.cc:41631 #, gcc-internal-format @@ -45685,34 +45469,29 @@ msgid "variable sized type %qT in %<reduction%> clause" msgstr "type %qT de taille variable dans la clause %<reduction%>" #: c/c-parser.cc:22837 cp/parser.cc:46650 -#, fuzzy, gcc-internal-format -#| msgid "expected %<depend%>, %<destroy%> or %<update%> clause" +#, gcc-internal-format msgid "expected %<at%>, %<severity%> or %<message%> clause" -msgstr "clause %<depend%>, %<destroy%> ou %<update%> attendue" +msgstr "clause %<at%>, %<severity%> ou %<message%> attendue" #: c/c-parser.cc:22870 cp/parser.cc:46685 -#, fuzzy, gcc-internal-format -#| msgid "expected %<,%> or %<)%>" +#, gcc-internal-format msgid "expected %qs or %qs" -msgstr "%<,%> ou %<)%> attendu" +msgstr "%qs ou %qs attendu" #: c/c-parser.cc:22927 cp/parser.cc:46747 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp ordered%> with %<depend%> clause may only be used in compound statements" +#, gcc-internal-format msgid "%<#pragma omp error%> with %<at(execution)%> clause may only be used in compound statements" -msgstr "%<#pragma omp ordered%> avec une clause %<depend%> peut uniquement être utilisé dans des instructions composées" +msgstr "%<#pragma omp error%> avec une clause %<at(execution)%> peut uniquement être utilisé dans des instructions composées" #: c/c-parser.cc:22950 cp/parser.cc:46774 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp allocate%> not yet supported" +#, gcc-internal-format msgid "%<pragma omp error%> encountered: %s" -msgstr "%<#pragma omp allocated%> n'est pas encore supporté" +msgstr "%<pragma omp error%> rencontrée : %s" #: c/c-parser.cc:22953 cp/parser.cc:46777 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp allocate%> not yet supported" +#, gcc-internal-format msgid "%<pragma omp error%> encountered" -msgstr "%<#pragma omp allocated%> n'est pas encore supporté" +msgstr "%<pragma omp error%> rencontrée" #: c/c-parser.cc:23100 cp/semantics.cc:9238 #, gcc-internal-format @@ -45816,10 +45595,9 @@ msgid "cannot mix operands of decimal floating and other floating types" msgstr "les opérandes de types décimaux flottants ne peuvent pas être mélangés avec d'autres flottants" #: c/c-typeck.cc:1332 -#, fuzzy, gcc-internal-format -#| msgid "pointers to arrays with different qualifiers are incompatible in ISO C" +#, gcc-internal-format msgid "invalid use of pointers to arrays with different qualifiers in ISO C before C2X" -msgstr "des pointeurs vers des tableaux avec des qualificatifs différents sont incompatibles en C ISO" +msgstr "l'utilisation de pointeurs vers des tableaux ayant des qualificatifs différent est interdite en ISO C avant C2X" #: c/c-typeck.cc:1336 #, gcc-internal-format @@ -46200,10 +45978,9 @@ msgid "pointer to array loses qualifier in conditional expression" msgstr "le pointeur vers le tableau perd le qualificatif dans l'expression conditionnelle" #: c/c-typeck.cc:5453 -#, fuzzy, gcc-internal-format -#| msgid "pointer to array loses qualifier in conditional expression" +#, gcc-internal-format msgid "pointer to array loses qualifier in conditional expression in ISO C before C2X" -msgstr "le pointeur vers le tableau perd le qualificatif dans l'expression conditionnelle" +msgstr "le pointeur vers le tableau perd le qualificatif dans l'expression conditionnelle dans le C ISO avant C2X" #: c/c-typeck.cc:5458 #, gcc-internal-format @@ -46863,10 +46640,9 @@ msgid "ISO C forbids %<goto *expr;%>" msgstr "le C ISO interdit %<goto *expr;%>" #: c/c-typeck.cc:10828 -#, fuzzy, gcc-internal-format -#| msgid "argument %d of %qE must be a pointer type" +#, gcc-internal-format msgid "computed goto must be pointer type" -msgstr "l'argument %d de %qE doit être un type pointeur" +msgstr "le goto calculé doit être un type pointeur" #: c/c-typeck.cc:10857 c/gimple-parser.cc:2434 cp/typeck.cc:10427 #, gcc-internal-format @@ -46950,28 +46726,24 @@ msgid "expression statement has incomplete type" msgstr "l'instruction de l'expression a un type incomplet" #: c/c-typeck.cc:11624 -#, fuzzy, gcc-internal-format -#| msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL" +#, gcc-internal-format msgid "the comparison will always evaluate as %<false%> for the pointer operand in %qE must not be NULL" -msgstr "la comparaison sera toujours %<false%> car l'adresse de %qD ne sera jamais NULL" +msgstr "la comparaison sera toujours %<false%> car l'opérande pointeur dans %qE ne peut pas être NULL" #: c/c-typeck.cc:11629 -#, fuzzy, gcc-internal-format -#| msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL" +#, gcc-internal-format msgid "the comparison will always evaluate as %<true%> for the pointer operand in %qE must not be NULL" -msgstr "la comparaison sera toujours %<true%> car l'adresse de %qD ne sera jamais NULL" +msgstr "la comparaison sera toujours %<true%> car l'opérande pointeur dans %qE ne peut pas être NULL" #: c/c-typeck.cc:11647 c/c-typeck.cc:11684 -#, fuzzy, gcc-internal-format -#| msgid "the comparison will always evaluate as %<false%> for the address of %qD will never be NULL" +#, gcc-internal-format msgid "the comparison will always evaluate as %<false%> for the address of %qE will never be NULL" -msgstr "la comparaison sera toujours %<false%> car l'adresse de %qD ne sera jamais NULL" +msgstr "la comparaison sera toujours %<false%> car l'adresse de %qE ne sera jamais NULL" #: c/c-typeck.cc:11652 c/c-typeck.cc:11689 -#, fuzzy, gcc-internal-format -#| msgid "the comparison will always evaluate as %<true%> for the address of %qD will never be NULL" +#, gcc-internal-format msgid "the comparison will always evaluate as %<true%> for the address of %qE will never be NULL" -msgstr "la comparaison sera toujours %<true%> car l'adresse de %qD ne sera jamais NULL" +msgstr "la comparaison sera toujours %<true%> car l'adresse de %qE ne sera jamais NULL" #: c/c-typeck.cc:12274 c/c-typeck.cc:12410 cp/typeck.cc:5732 #, gcc-internal-format @@ -47332,10 +47104,9 @@ msgid "%qE is not a variable in clause %qs" msgstr "%qE n'est pas une variable dans la clause %qs" #: c/c-typeck.cc:14551 cp/semantics.cc:6986 -#, fuzzy, gcc-internal-format -#| msgid "%qD appears more than once in data clauses" +#, gcc-internal-format msgid "%qD appears more than once in data-sharing clauses" -msgstr "%qD apparaît plus d'une fois dans les clauses de données" +msgstr "%qD apparaît plus d'une fois dans les clauses de partage de données" #: c/c-typeck.cc:14562 cp/semantics.cc:6997 #, gcc-internal-format @@ -47421,10 +47192,9 @@ msgid "%<depend%> clause with %<depobj%> dependence type on array section" msgstr "clause %<depend%> avec le type de dépendance %<depobj%> sur une section de tableau" #: c/c-typeck.cc:14835 cp/semantics.cc:7813 -#, fuzzy, gcc-internal-format -#| msgid "%qE is not lvalue expression nor array section in %<depend%> clause" +#, gcc-internal-format msgid "%qE is not lvalue expression nor array section in %qs clause" -msgstr "%qE n'est pas une une expression l-valeur ni une section de tableau dans la clause %<depend%>" +msgstr "%qE n'est pas une une expression l-valeur ni une section de tableau dans la clause %qs" #: c/c-typeck.cc:14856 cp/semantics.cc:7835 #, gcc-internal-format @@ -47637,10 +47407,9 @@ msgid "invalid source block specification" msgstr "spécification de bloc source invalide" #: c/gimple-parser.cc:886 -#, fuzzy, gcc-internal-format -#| msgid "unexpected argument" +#, gcc-internal-format msgid "unexpected RHS for assignment" -msgstr "argument inattendu" +msgstr "assignation pour le terme de droite inattendue" #: c/gimple-parser.cc:990 #, gcc-internal-format @@ -47719,16 +47488,14 @@ msgid "anonymous SSA name cannot have default definition" msgstr "un nom SSA anonyme ne peut pas avoir de définition par défaut" #: c/gimple-parser.cc:1766 -#, fuzzy, gcc-internal-format -#| msgid "call to non-function %qD" +#, gcc-internal-format msgid "invalid call to non-function" -msgstr "appel à la non fonction %qD" +msgstr "appel invalide à la non fonction" #: c/gimple-parser.cc:1820 -#, fuzzy, gcc-internal-format -#| msgid "dereferencing a null pointer" +#, gcc-internal-format msgid "dereference of non-pointer" -msgstr "déréférencement d'un pointeur nul" +msgstr "déréférencement d'un non-pointeur" #: c/gimple-parser.cc:1945 #, gcc-internal-format @@ -47741,10 +47508,9 @@ msgid "invalid operation" msgstr "opération invalide" #: c/gimple-parser.cc:2130 -#, fuzzy, gcc-internal-format -#| msgid "bogus comparison result type" +#, gcc-internal-format msgid "comparison required" -msgstr "type foireux pour le résultat d'une comparaison" +msgstr "comparaison requise" #: c/gimple-parser.cc:2182 #, gcc-internal-format @@ -48117,16 +47883,14 @@ msgid "comparison between %q#T and %q#T" msgstr "comparaison entre %q#T et %q#T" #: cp/call.cc:7009 -#, fuzzy, gcc-internal-format -#| msgid "no match for call to %<(%T) (%A)%>" +#, gcc-internal-format msgid "no match for call to %<%T::operator[] (%A)%>" -msgstr "pas de concordance pour l'appel à %<(%T) (%A)%>" +msgstr "pas de concordance pour l'appel à %<%T::operator[] (%A)%>" #: cp/call.cc:7023 -#, fuzzy, gcc-internal-format -#| msgid "call of %<(%T) (%A)%> is ambiguous" +#, gcc-internal-format msgid "call of %<%T::operator[] (%A)%> is ambiguous" -msgstr "l'appel à %<(%T) (%A)%> est ambigu" +msgstr "l'appel à %<%T::operator[] (%A)%> est ambigu" #: cp/call.cc:7298 #, gcc-internal-format @@ -48260,10 +48024,8 @@ msgstr "impossible de lier la référence d'une l-valeur non constante de type % #. extype is volatile #: cp/call.cc:8228 -#, fuzzy -#| msgid "cannot bind rvalue reference of type %qH to lvalue of type %qI" msgid "cannot bind lvalue reference of type %qH to an rvalue of type %qI" -msgstr "impossible de lier la référence d'une r-valeur de type %qH à une l-valeur de type %qI" +msgstr "impossible de lier la référence d'une l-valeur de type %qH à une r-valeur de type %qI" #: cp/call.cc:8241 msgid "cannot bind reference of type %qH to %qI due to different array bounds" @@ -48977,16 +48739,14 @@ msgid "non-static const member %q#D in class without a constructor" msgstr "le membre constant non statique %q#D dans la classe sans un constructeur" #: cp/class.cc:6457 -#, fuzzy, gcc-internal-format -#| msgid "empty class %qT parameter passing ABI changes in %<-fabi-version=12%> (GCC 8)" +#, gcc-internal-format msgid "offset of %qT base class for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)" -msgstr "l'ABI de passage de paramètres pour la classe vide %qT change avec %<-fabi-version=12%> (GCC 8)" +msgstr "l'offset de la classe de base %qT pour %<-std=c++14%> et au delà change avec %<-fabi-version=17%> (GCC 12)" #: cp/class.cc:6461 -#, fuzzy, gcc-internal-format -#| msgid "empty class %qT parameter passing ABI changes in %<-fabi-version=12%> (GCC 8)" +#, gcc-internal-format msgid "offset of %qD for %<-std=c++14%> and up changes in %<-fabi-version=17%> (GCC 12)" -msgstr "l'ABI de passage de paramètres pour la classe vide %qT change avec %<-fabi-version=12%> (GCC 8)" +msgstr "l'offset de %qD pour %<-std=c++14%> et au delà change avec %<-fabi-version=17%> (GCC 12)" #: cp/class.cc:6501 #, gcc-internal-format @@ -49150,10 +48910,9 @@ msgid "the type %qT of %<constexpr%> variable %qD is not literal" msgstr "le type %qT de la variable %<constexpr%> %qD n'est pas littéral" #: cp/constexpr.cc:121 -#, fuzzy, gcc-internal-format -#| msgid "%<try%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>" +#, gcc-internal-format msgid "variable %qD of non-literal type %qT in %<constexpr%> function only available with %<-std=c++2b%> or %<-std=gnu++2b%>" -msgstr "%<try%> dans une fonction %<constexpr%> uniquement disponible avec %<-std=c++20%> ou %<-std=gnu++20%>" +msgstr "la variable %qD du type non littéral %qT dans une fonction %<constexpr%> uniquement disponible avec %<-std=c++2b%> ou %<-std=gnu++2b%>" #: cp/constexpr.cc:134 #, gcc-internal-format @@ -49279,10 +49038,9 @@ msgstr "appel à la fonction non %<constexpr%> %qD" #. 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:2321 -#, fuzzy, gcc-internal-format -#| msgid "cannot call member function %qD without object" +#, gcc-internal-format msgid "calling constexpr member function %qD through virtual base subobject" -msgstr "impossible d'appeler la fonction membre %qD sans objet" +msgstr "appel à la fonction membre constexpr %qD via un sous-objet de base virtuel" #: cp/constexpr.cc:2438 #, gcc-internal-format @@ -49586,30 +49344,29 @@ msgid "only unevaluated inline assembly is allowed in a %<constexpr%> function i msgstr "seul de l'assembleur en ligne non évalué est autorisé dans une fonction %<constexpr%> en C++20" #: cp/constexpr.cc:6408 -#, fuzzy, gcc-internal-format -#| msgid "invalid use of %qD" +#, gcc-internal-format msgid "use of %qD" -msgstr "utilisation invalide de %qD" +msgstr "utilisation de %qD" #: cp/constexpr.cc:6412 #, gcc-internal-format msgid "its value can vary between compiler versions or with different %<-mtune%> or %<-mcpu%> flags" -msgstr "" +msgstr "sa valeur peut varier entre les versions du compilateur ou avec des fanions %<-mtune%> ou %<-mcpu%> différents" #: cp/constexpr.cc:6414 #, gcc-internal-format msgid "if this use is part of a public ABI, change it to instead use a constant variable you define" -msgstr "" +msgstr "si son utilisation fait partie d'une ABI publique, changez-le pour utiliser plutôt une variable constante que vous définissez" #: cp/constexpr.cc:6416 #, gcc-internal-format, gfc-internal-format msgid "the default value for the current CPU tuning is %d bytes" -msgstr "" +msgstr "la valeur par défaut pour les réglages actuels du processeur est %d octets" #: cp/constexpr.cc:6418 #, 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 "" +msgstr "vous pouvez stabiliser cette valeur avec %<--param hardware_destructive_interference_size=%d%> ou désactiver cet avertissement avec %<-Wno-interference-size%>" #: cp/constexpr.cc:6490 #, gcc-internal-format @@ -49622,16 +49379,14 @@ msgid "%<constexpr%> evaluation operation count exceeds limit of %wd (use %<-fco msgstr "le décompte des opérations d'évaluation de %<constexpr%> dépasse la limite permise %wd (utilisez %<-fconstexpr-ops-limit=%> pour augmenter la limite)" #: cp/constexpr.cc:6655 -#, fuzzy, gcc-internal-format -#| msgid "non-thread-local declaration of %q+D follows thread-local declaration" +#, gcc-internal-format msgid "control passes through declaration of %qD with thread storage duration" -msgstr "la déclaration non locale au thread de %q+D suit une déclaration locale au thread" +msgstr "le contrôle passe au travers de la déclaration de %qD avec une durée de stockage limitée au thread" #: cp/constexpr.cc:6658 -#, fuzzy, gcc-internal-format -#| msgid "capture of variable %qD with non-automatic storage duration" +#, gcc-internal-format msgid "control passes through declaration of %qD with static storage duration" -msgstr "capture de la variable %qD avec une durée de stockage non automatique" +msgstr "le contrôle passe au travers de la déclaration de %qD avec une durée de stockage statique" #: cp/constexpr.cc:6706 cp/constexpr.cc:9119 #, gcc-internal-format @@ -49789,10 +49544,9 @@ msgid "non-constant array initialization" msgstr "initialisation d'un tableau non constant" #: cp/constexpr.cc:9382 -#, fuzzy, gcc-internal-format -#| msgid "%<asm%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>" +#, gcc-internal-format msgid "label definition in %<constexpr%> function only available with %<-std=c++2b%> or %<-std=gnu++2b%>" -msgstr "%<asm%> dans une fonction %<constexpr%> uniquement disponible avec %<-std=c++20%> ou %<-std=gnu++20%>" +msgstr "la définition d'une étiquette dans une fonction %<constexpr%> est uniquement disponible avec %<-std=c++2b%> ou %<-std=gnu++2b%>" #: cp/constexpr.cc:9412 #, gcc-internal-format, gfc-internal-format @@ -49800,551 +49554,480 @@ msgid "unexpected AST of kind %s" msgstr "arbre syntaxique abstrait (AST=Abstract Syntax Tree) de type %s inattendu" #: cp/constraint.cc:166 -#, fuzzy, gcc-internal-format -#| msgid "%<~%> on an expression of type %<bool%>" +#, gcc-internal-format msgid "constraint expression does not have type %<bool%>" -msgstr "%<~%> sur une expression de type %<bool%>" +msgstr "la contrainte d'expression n'a pas le type %<bool%>" #: cp/constraint.cc:373 -#, fuzzy, gcc-internal-format -#| msgid "specialization of variable concept %q#D" +#, gcc-internal-format msgid "function call of variable concept %qE" -msgstr "spécialisation du concept de variable %q#D" +msgstr "appel de fonction sur le concept de variable %qE" #: cp/constraint.cc:545 #, gcc-internal-format msgid "MAP %qD TO %qT" -msgstr "" +msgstr "Fait correspondre (MAP) %qD à (TO) %qT" #: cp/constraint.cc:547 #, gcc-internal-format msgid "MAP %qD TO %qE" -msgstr "" +msgstr "Fait correspondre (MAP) %qD à (TO) %qE" #: cp/constraint.cc:560 -#, fuzzy, gcc-internal-format -#| msgid "no arguments" +#, gcc-internal-format msgid "argument %qT" -msgstr "pas d'argument" +msgstr "argument %qT" #: cp/constraint.cc:562 -#, fuzzy, gcc-internal-format -#| msgid "directive argument %qE" +#, gcc-internal-format msgid "argument %qE" -msgstr "argument de directive %qE" +msgstr "argument %qE" #: cp/constraint.cc:1141 -#, fuzzy, gcc-internal-format -#| msgid "type of %qD does not match original declaration" +#, gcc-internal-format msgid "%qT does not match original declaration" -msgstr "le type de %qD ne correspond pas à la déclaration originale" +msgstr "%qT ne correspond pas à la déclaration originale" #: cp/constraint.cc:1144 -#, fuzzy, gcc-internal-format -#| msgid "variable template declared here" +#, gcc-internal-format msgid "original template declaration here" -msgstr "le patron de variable a été déclaré ici" +msgstr "la déclaration originale du patron est ici" #: cp/constraint.cc:1348 -#, fuzzy, gcc-internal-format -#| msgid "no matching template for %qD found" +#, gcc-internal-format msgid "no matching concepts for %qE" -msgstr "aucun patron correspondant trouvé pour %qD" +msgstr "aucun concept correspondant pour %qE" #: cp/constraint.cc:1649 -#, fuzzy, gcc-internal-format -#| msgid "variadic constraint introduced without %<...%>" +#, gcc-internal-format msgid "%qE cannot be introduced with an ellipsis %<...%>" -msgstr "contrainte variadique introduite sans %<...%>" +msgstr "%qE ne peut pas être introduit avec les points de suspension %<...%>" # la phrase fait référence à une variable ou une fonction (cf les deux messages ci-dessus) d'où le féminin #: cp/constraint.cc:1650 -#, fuzzy, gcc-internal-format -#| msgid "previously declared here" +#, gcc-internal-format msgid "prototype declared here" -msgstr "précédemment déclarée ici" +msgstr "prototype déclaré ici" #: cp/constraint.cc:1737 -#, fuzzy, gcc-internal-format -#| msgid "template parameters cannot be friends" +#, gcc-internal-format msgid "all template parameters of %qD must be introduced" -msgstr "les paramètres du patron ne peuvent pas être amis" +msgstr "tous les paramètres du patron %qD doivent être introduits" #: cp/constraint.cc:1765 -#, fuzzy, gcc-internal-format -#| msgid "cannot deduce template arguments of %qT, as it has no viable deduction guides" +#, gcc-internal-format msgid "cannot deduce template parameters from introduction list" -msgstr "impossible de déduire les arguments du patron de %qT car il n'a pas de guides de déduction viables" +msgstr "impossible de déduire les paramètres du patron depuis la liste d'introduction" #: cp/constraint.cc:1929 -#, fuzzy, gcc-internal-format -#| msgid "unexpected expression %qE of kind %s" +#, gcc-internal-format msgid "the required expression %qE is invalid, because" -msgstr "l'expression %qE du sous-type %s est inattendue" +msgstr "l'expression requise %qE est invalide à cause de" #: cp/constraint.cc:1936 -#, fuzzy, gcc-internal-format -#| msgid "unexpected expression %qE of kind %s" +#, gcc-internal-format msgid "the required expression %qE is invalid" -msgstr "l'expression %qE du sous-type %s est inattendue" +msgstr "l'expression requise %qE est invalide" #. Replay the substitution error. #: cp/constraint.cc:1975 -#, fuzzy, gcc-internal-format -#| msgid "zero sized type %qT in %qs clause" +#, gcc-internal-format msgid "the required type %qT is invalid, because" -msgstr "type de taille nulle %qT dans la clause %qs" +msgstr "le type requis %qT est invalide à cause de" #: cp/constraint.cc:1979 -#, fuzzy, gcc-internal-format -#| msgid "size of type %s is invalid" +#, gcc-internal-format msgid "the required type %qT is invalid" -msgstr "la taille du type %s est invalide" +msgstr "le type requis %qT est invalide" #: cp/constraint.cc:2032 cp/constraint.cc:2105 -#, fuzzy, gcc-internal-format -#| msgid "cannot convert %qH to %qI" +#, gcc-internal-format msgid "cannot convert %qE to %qT" -msgstr "ne peut convertir %qH en %qI" +msgstr "ne peut convertir %qE en %qT" #: cp/constraint.cc:2058 -#, fuzzy, gcc-internal-format -#| msgid "%qE is not a template" +#, gcc-internal-format msgid "%qE is not %<noexcept%>" -msgstr "%qE n'est pas un patron" +msgstr "%qE n'est pas %<noexcept%>" #: cp/constraint.cc:2082 #, gcc-internal-format msgid "%qE does not satisfy return-type-requirement, because" -msgstr "" +msgstr "%qE ne satisfait pas l'exigence du type de retour car" #: cp/constraint.cc:2089 -#, fuzzy, gcc-internal-format -#| msgid "insn does not satisfy its constraints:" +#, gcc-internal-format msgid "%qE does not satisfy return-type-requirement" -msgstr "insn ne satisfait pas à ses contraintes:" +msgstr "%qE ne satisfait pas l'exigence du type de retour" #: cp/constraint.cc:2100 -#, fuzzy, gcc-internal-format -#| msgid "cannot convert %qH to %qI" +#, gcc-internal-format msgid "cannot convert %qE to %qT because" -msgstr "ne peut convertir %qH en %qI" +msgstr "ne peut convertir %qE en %qT car" #. Replay the substitution error. #: cp/constraint.cc:2132 #, gcc-internal-format msgid "nested requirement %qE is not satisfied, because" -msgstr "" +msgstr "l'exigence imbriquée %qE n'est pas satisfaite car" #: cp/constraint.cc:2136 -#, fuzzy, gcc-internal-format -#| msgid "constructors may not be `%s'" +#, gcc-internal-format msgid "nested requirement %qE is not satisfied" -msgstr "constructeurs ne peuvent pas être « %s »" +msgstr "l'exigence imbriquée %qE n'est pas satisfaite" #: cp/constraint.cc:2623 -#, fuzzy, gcc-internal-format -#| msgid "exception specification of %qD depends on itself" +#, gcc-internal-format msgid "satisfaction of atomic constraint %qE depends on itself" -msgstr "la spécification d'exception %qD dépend d'elle-même" +msgstr "la satisfaction de la contrainte atomique %qE dépend d'elle-même" #: cp/constraint.cc:2669 -#, fuzzy, gcc-internal-format -#| msgid "conversion from %qT to %qT changes value from %qE to %qE" +#, gcc-internal-format msgid "satisfaction value of atomic constraint %qE changed from %qE to %qE" -msgstr "la conversion depuis %qT vers %qT change la valeur de %qE en %qE" +msgstr "la valeur de satisfaction de la contrainte %qE a changé entre %qE et %qE" #: cp/constraint.cc:2672 #, gcc-internal-format msgid "satisfaction value first evaluated to %qE from here" -msgstr "" +msgstr "la valeur de satisfaction a été évaluée en premier pour %qE ici" #: cp/constraint.cc:2789 #, gcc-internal-format msgid "no operand of the disjunction is satisfied" -msgstr "" +msgstr "aucun opérande de la disjonction est satisfait" #: cp/constraint.cc:2802 #, gcc-internal-format msgid "the operand %qE is unsatisfied because" -msgstr "" +msgstr "l'opérande %qE n'est pas satisfait car" #: cp/constraint.cc:3422 -#, fuzzy, gcc-internal-format -#| msgid "in definition of macro %qs" +#, gcc-internal-format msgid "definition of concept %qD is empty" -msgstr "dans la définition de la macro %qs" +msgstr "la définition du concept %qD est vide" #: cp/constraint.cc:3425 -#, fuzzy, gcc-internal-format -#| msgid "macro expands to multiple statements" +#, gcc-internal-format msgid "definition of concept %qD has multiple statements" -msgstr "la macro s'étend en des instructions multiples" +msgstr "la définition du concept %qD a plusieurs instructions" #: cp/constraint.cc:3571 #, gcc-internal-format msgid " %qT is not %<nothrow%> copy assignable" -msgstr "" +msgstr " %qT n'est pas copiable par affectation avec %<nothrow%>" #: cp/constraint.cc:3574 -#, fuzzy, gcc-internal-format -#| msgid "%q#T has no user-provided default constructor" +#, gcc-internal-format msgid " %qT is not %<nothrow%> default constructible" -msgstr "%q#T n'a pas de constructeur par défaut fourni par l'utilisateur" +msgstr " %qT n'a pas de constructeur par défaut avec %<nothrow%>" #: cp/constraint.cc:3577 #, gcc-internal-format msgid " %qT is not %<nothrow%> copy constructible" -msgstr "" +msgstr " %qT n'a pas de constructeur par copie avec %<nothrow%>" #: cp/constraint.cc:3580 -#, fuzzy, gcc-internal-format -#| msgid "%qD is not a variable" +#, gcc-internal-format msgid " %qT is not trivially copy assignable" -msgstr "%qD n'est pas une variable" +msgstr " %qT n'est pas trivialement copiable par affectation" #: cp/constraint.cc:3583 -#, fuzzy, gcc-internal-format -#| msgid "%q#T has no user-provided default constructor" +#, gcc-internal-format msgid " %qT is not trivially default constructible" -msgstr "%q#T n'a pas de constructeur par défaut fourni par l'utilisateur" +msgstr " %qT n'a pas de constructeur par défaut trivialement utilisable" #: cp/constraint.cc:3586 -#, fuzzy, gcc-internal-format -#| msgid " %q+T has a non-trivial destructor" +#, gcc-internal-format msgid " %qT is not trivially copy constructible" -msgstr " %q+T a un destructeur non trivial" +msgstr " %qT n'a pas de constructeur par copie trivialement utilisable" #: cp/constraint.cc:3589 -#, fuzzy, gcc-internal-format -#| msgid " %q+T has a non-trivial destructor" +#, gcc-internal-format msgid " %qT is not trivially destructible" -msgstr " %q+T a un destructeur non trivial" +msgstr " %qT n'a pas de destructeur trivialement utilisable" #: cp/constraint.cc:3592 -#, fuzzy, gcc-internal-format -#| msgid " %q+T does not have %<constexpr%> destructor" +#, gcc-internal-format msgid " %qT does not have a virtual destructor" -msgstr " %q+T n'a pas de destructeur %<constexpr%>" +msgstr " %qT n'a pas de destructeur virtuel" #: cp/constraint.cc:3595 -#, fuzzy, gcc-internal-format -#| msgid "%q#T is not a class" +#, gcc-internal-format msgid " %qT is not an abstract class" -msgstr "%q#T n'est pas une classe" +msgstr " %qT n'est pas une classe abstraite" #: cp/constraint.cc:3598 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a base of %qT" +#, gcc-internal-format msgid " %qT is not a base of %qT" -msgstr "%qT n'est pas une base de %qT" +msgstr " %qT n'est pas une base de %qT" #: cp/constraint.cc:3601 -#, fuzzy, gcc-internal-format -#| msgid "%q#T is not a class" +#, gcc-internal-format msgid " %qT is not a class" -msgstr "%q#T n'est pas une classe" +msgstr " %qT n'est pas une classe" #: cp/constraint.cc:3604 -#, fuzzy, gcc-internal-format -#| msgid "%q#T is not a class" +#, gcc-internal-format msgid " %qT is not an empty class" -msgstr "%q#T n'est pas une classe" +msgstr " %qT n'est pas une classe vide" #: cp/constraint.cc:3607 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a template" +#, gcc-internal-format msgid " %qT is not an enum" -msgstr "%qT n'est pas un patron" +msgstr " %qT n'est pas une énumération" #: cp/constraint.cc:3610 -#, fuzzy, gcc-internal-format -#| msgid "%q#T is not a class" +#, gcc-internal-format msgid " %qT is not a final class" -msgstr "%q#T n'est pas une classe" +msgstr " %qT n'est pas une classe finale" #: cp/constraint.cc:3613 -#, fuzzy, gcc-internal-format -#| msgid "%qD is not compatible with %qD" +#, gcc-internal-format msgid " %qT is not layout compatible with %qT" -msgstr "%qD n'est pas compatible avec %qD" +msgstr " %qT n'a pas une disposition compatible avec %qT" #: cp/constraint.cc:3616 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a class type" +#, gcc-internal-format msgid " %qT is not a literal type" -msgstr "%qT n'est pas un type de classe" +msgstr " %qT n'est pas un type littéral" #: cp/constraint.cc:3619 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not an accessible base of %qT" +#, gcc-internal-format msgid " %qT is not pointer-interconvertible base of %qT" -msgstr "%qT n'est pas une base accessible de %qT" +msgstr " %qT n'est pas une base qui peut être convertie par pointeur en %qT" #: cp/constraint.cc:3623 -#, fuzzy, gcc-internal-format -#| msgid "%qD is not a type" +#, gcc-internal-format msgid " %qT is not a POD type" -msgstr "%qD n'est pas un type" +msgstr " %qT n'est pas un type simple (aussi appelé POD : Plain Old Data)" #: cp/constraint.cc:3626 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a class type" +#, gcc-internal-format msgid " %qT is not a polymorphic type" -msgstr "%qT n'est pas un type de classe" +msgstr " %qT n'est pas un type polymorphique" #: cp/constraint.cc:3629 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a base of %qT" +#, gcc-internal-format msgid " %qT is not the same as %qT" -msgstr "%qT n'est pas une base de %qT" +msgstr " %qT n'est pas le même que %qT" #: cp/constraint.cc:3632 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a template type" +#, gcc-internal-format msgid " %qT is not an standard layout type" -msgstr "%qT n'est pas un type de patron" +msgstr " %qT n'est pas un type ayant une disposition standard" #: cp/constraint.cc:3635 -#, fuzzy, gcc-internal-format -#| msgid "%qT is not a class type" +#, gcc-internal-format msgid " %qT is not a trivial type" -msgstr "%qT n'est pas un type de classe" +msgstr " %qT n'est pas un type trivial" #: cp/constraint.cc:3638 -#, fuzzy, gcc-internal-format -#| msgid "%qT is a union" +#, gcc-internal-format msgid " %qT is not a union" -msgstr "%qT est une union" +msgstr " %qT est une union" #: cp/constraint.cc:3660 -#, fuzzy, gcc-internal-format -#| msgid "invalid constant" +#, gcc-internal-format msgid "invalid constraints" -msgstr "constante invalide" +msgstr "contraintes invalides" #: cp/constraint.cc:3686 -#, fuzzy, gcc-internal-format -#| msgid "concept must have type %<bool%>" +#, gcc-internal-format msgid "constraint %qE has type %qT, not %<bool%>" -msgstr "un concept doit avoir le type %<bool%>" +msgstr "la contrainte %qE a le type %qT au lieu de %<bool%>" #: cp/constraint.cc:3689 -#, fuzzy, gcc-internal-format -#| msgid "%qE evaluates to false" +#, gcc-internal-format msgid "the expression %qE evaluated to %<false%>" -msgstr "%qE est évalué à « faux »" +msgstr "l'expression %qE est évaluée à %<false%>" #: cp/constraint.cc:3740 -#, fuzzy, gcc-internal-format -#| msgid "constructors may not be `%s'" +#, gcc-internal-format msgid "constraints not satisfied" -msgstr "constructeurs ne peuvent pas être « %s »" +msgstr "la contrainte n'est pas satisfaite" #: cp/constraint.cc:3755 #, gcc-internal-format msgid "set %qs to at least %d for more detail" -msgstr "" +msgstr "définissez %qs à au moins %d pour plus de détails" #: cp/coroutines.cc:303 #, gcc-internal-format msgid "coroutines require a traits template; cannot find %<%E::%E%>" -msgstr "" +msgstr "les coroutines nécessitent des patrons de traits ; impossible de trouver %<%E::%E%>" #: cp/coroutines.cc:305 #, gcc-internal-format msgid "perhaps %<#include <coroutine>%> is missing" -msgstr "" +msgstr "peut-être que %<#include <coroutine>%> est manquant" #: cp/coroutines.cc:360 -#, fuzzy, gcc-internal-format -#| msgid "cannot inline function %<main%>" +#, gcc-internal-format msgid "cannot instantiate %<coroutine traits%>" -msgstr "la fonction %<main%> ne peut pas être mise en ligne" +msgstr "impossible d'instancier %<coroutine traits%>" #: cp/coroutines.cc:382 #, gcc-internal-format msgid "coroutines require a handle class template; cannot find %<%E::%E%>" -msgstr "" +msgstr "les coroutines requièrent un identificateur de patron de classe ; impossible de trouver %<%E::%E%>" #: cp/coroutines.cc:407 #, gcc-internal-format msgid "cannot instantiate a %<coroutine handle%> for promise type %qT" -msgstr "" +msgstr "impossible d'instancier une %<coroutine handle%> pour une « promise » de type %qT" #: cp/coroutines.cc:492 -#, fuzzy, gcc-internal-format -#| msgid "unable to find a register to spill" +#, gcc-internal-format msgid "unable to find the promise type for this coroutine" -msgstr "impossible de trouver un registre à déverser" +msgstr "impossible de trouver le type « promise » pour cette coroutine" #: cp/coroutines.cc:511 #, gcc-internal-format msgid "the coroutine promise type %qT declares both %<return_value%> and %<return_void%>" -msgstr "" +msgstr "le type de « promise » %qT pour la coroutine déclare à la fois %<return_value%> et %<return_void%>" #: cp/coroutines.cc:515 -#, fuzzy, gcc-internal-format -#| msgid "%qD target declared here" +#, gcc-internal-format msgid "%<return_void%> declared here" -msgstr "cible %qD déclarée ici" +msgstr "%<return_void%> déclaré ici" #: cp/coroutines.cc:517 -#, fuzzy, gcc-internal-format -#| msgid "routine %qD declared here" +#, gcc-internal-format msgid "%<return_value%> declared here" -msgstr "la routine %qD est déclarée ici" +msgstr "%<return_value%> déclaré ici" #: cp/coroutines.cc:642 cp/coroutines.cc:720 cp/coroutines.cc:4280 -#, fuzzy, gcc-internal-format -#| msgid "no type named %q#T in %q#T" +#, gcc-internal-format msgid "no member named %qE in %qT" -msgstr "pas de type nommé %q#T dans %q#T" +msgstr "pas de membre nommé %qE dans %qT" #: cp/coroutines.cc:735 -#, fuzzy, gcc-internal-format -#| msgid "%qE cannot be used as a function" +#, gcc-internal-format msgid "%qs cannot be used outside a function" -msgstr "%qE ne peut pas être utilisé comme une fonction" +msgstr "%qs ne peut pas être utilisé en dehors d'une fonction" #. [basic.start.main] 3. The function main shall not be a coroutine. #: cp/coroutines.cc:743 -#, fuzzy, gcc-internal-format -#| msgid "%qE cannot be used as a function" +#, gcc-internal-format msgid "%qs cannot be used in the %<main%> function" -msgstr "%qE ne peut pas être utilisé comme une fonction" +msgstr "%qs ne peut pas être utilisé dans la fonction %<main%>" #. [dcl.constexpr] 3.3 it shall not be a coroutine. #: cp/coroutines.cc:754 -#, fuzzy, gcc-internal-format -#| msgid "%qE cannot be used as a function" +#, gcc-internal-format msgid "%qs cannot be used in a %<constexpr%> function" -msgstr "%qE ne peut pas être utilisé comme une fonction" +msgstr "%qs ne peut pas être utilisé dans une fonction %<constexpr%>" #: cp/coroutines.cc:765 -#, fuzzy, gcc-internal-format -#| msgid "virtual function cannot have deduced return type" +#, gcc-internal-format msgid "%qs cannot be used in a function with a deduced return type" -msgstr "une fonction virtuelle ne peut pas avoir un type de retour déduit" +msgstr "%qs ne peut pas être utilisé dans une fonction avec un type de retour déduit" #: cp/coroutines.cc:776 -#, fuzzy, gcc-internal-format -#| msgid "%qE cannot be used as a function" +#, gcc-internal-format msgid "%qs cannot be used in a varargs function" -msgstr "%qE ne peut pas être utilisé comme une fonction" +msgstr "%qs ne peut pas être utilisé dans une fonction varargs" #. [class.ctor] 7. a constructor shall not be a coroutine. #: cp/coroutines.cc:783 -#, fuzzy, gcc-internal-format -#| msgid "%qE cannot be used as a function" +#, gcc-internal-format msgid "%qs cannot be used in a constructor" -msgstr "%qE ne peut pas être utilisé comme une fonction" +msgstr "%qs ne peut pas être utilisé dans un constructeur" #. [class.dtor] 21. a destructor shall not be a coroutine. #: cp/coroutines.cc:790 -#, fuzzy, gcc-internal-format -#| msgid "%qE cannot be used as a function" +#, gcc-internal-format msgid "%qs cannot be used in a destructor" -msgstr "%qE ne peut pas être utilisé comme une fonction" +msgstr "%qs ne peut pas être utilisé dans un destructeur" #. TODO: record or extract positions of returns (and the first coro #. keyword) so that we can add notes to the diagnostic about where #. the bad keyword is and what made the function into a coro. #: cp/coroutines.cc:821 -#, fuzzy, gcc-internal-format -#| msgid "return-statement with no value, in function returning %qT" +#, gcc-internal-format msgid "a %<return%> statement is not allowed in coroutine; did you mean %<co_return%>?" -msgstr "instruction « return » sans valeur dans une fonction retournant %qT" +msgstr "une instruction %<return%> n'est pas permise dans une coroutine ; vouliez-vous utiliser %<co_return%> ?" #: cp/coroutines.cc:869 -#, fuzzy, gcc-internal-format -#| msgid "integral expression %qE is not constant" +#, gcc-internal-format msgid "the expression %qE is required to be non-throwing" -msgstr "l'expression intégrale %qE n'est pas une constante" +msgstr "l'expression %qE doit être déclarée comme ne levant pas d'exception" #: cp/coroutines.cc:871 #, gcc-internal-format msgid "must be declared with %<noexcept(true)%>" -msgstr "" +msgstr "doit être déclaré avec %<noexcept(true)%>" #: cp/coroutines.cc:955 -#, fuzzy, gcc-internal-format -#| msgid "qualified type %qT does not match destructor name ~%qT" +#, gcc-internal-format msgid "awaitable type %qT is not a structure" -msgstr "le type qualifié %qT ne concorde pas avec le nom du destructeur ~%qT" +msgstr "le type %qT sur lequel une attente est possible n'est pas une structure" #: cp/coroutines.cc:1066 #, gcc-internal-format msgid "%<await_suspend%> must return %<void%>, %<bool%> or a coroutine handle" -msgstr "" +msgstr "%<await_suspend%> doit retourner %<void%>, %<bool%> ou un identifiant de coroutine" #: cp/coroutines.cc:1376 -#, fuzzy, gcc-internal-format -#| msgid "function declared %<noreturn%> has a %<return%> statement" +#, gcc-internal-format msgid "function declared %<noreturn%> has a %<co_return%> statement" -msgstr "la fonction est déclarée avec %<noreturn%> mais elle utilise l'instruction %<return%>" +msgstr "la fonction déclarée avec %<noreturn%> a une instruction %<co_return%>" #: cp/coroutines.cc:1414 -#, fuzzy, gcc-internal-format -#| msgid "third argument to %<__builtin_prefetch%> must be a constant" +#, gcc-internal-format msgid "the align argument to %<__builtin_coro_promise%> must be a constant" -msgstr "le troisième argument de %<__builtin_prefetch%> doit être une constante" +msgstr "l'argument d'alignement de %<__builtin_core_promise%> doit être une constante" #: cp/coroutines.cc:1424 -#, fuzzy, gcc-internal-format -#| msgid "third argument to %<__builtin_prefetch%> must be a constant" +#, gcc-internal-format msgid "the direction argument to %<__builtin_coro_promise%> must be a constant" -msgstr "le troisième argument de %<__builtin_prefetch%> doit être une constante" +msgstr "l'argument de direction de %<__builtin_core_promise%> doit être une constante" #: cp/coroutines.cc:1904 -#, fuzzy, gcc-internal-format -#| msgid "no previous prototype for %qD" +#, gcc-internal-format msgid "no suspend point info for %qD" -msgstr "aucun prototype précédent pour %qD" +msgstr "aucune information du point de suspension pour %qD" #: cp/coroutines.cc:2102 cp/coroutines.cc:4653 #, gcc-internal-format msgid "%qE is provided by %qT but is not usable with the function signature %qD" -msgstr "" +msgstr "%qE est fourni par %qT mais il n'est pas utilisable avec la fonction ayant la signature %qD" #: cp/coroutines.cc:2552 -#, fuzzy, gcc-internal-format -#| msgid "duplicate %qE" +#, gcc-internal-format msgid "duplicate info for %qE" -msgstr "%qE dupliqué" +msgstr "information dupliquée pour %qE" #: cp/coroutines.cc:3703 -#, fuzzy, gcc-internal-format -#| msgid "pointers are not permitted as case values" +#, gcc-internal-format msgid "await expressions are not permitted in handlers" -msgstr "les pointeurs ne sont pas permis comme valeurs de « case »" +msgstr "les expressions temporisables ne sont pas permises dans les gestionnaires" #: cp/coroutines.cc:3934 #, gcc-internal-format msgid "variable length arrays are not yet supported in coroutines" -msgstr "" +msgstr "les tableaux de longueur variable ne sont pas encore supportés dans les coroutines" #: cp/coroutines.cc:4658 #, gcc-internal-format msgid "%qE is provided by %qT but %qE is not marked %<throw()%> or %<noexcept%>" -msgstr "" +msgstr "%qE est fourni par %qT mais %qE n'est pas marqué avec %<throw()%> ou %<noexcept%>" #: cp/coroutines.cc:4661 #, gcc-internal-format msgid "%qE is marked %<throw()%> or %<noexcept%> but no usable %<get_return_object_on_allocation_failure%> is provided by %qT" -msgstr "" +msgstr "%qE est marqué avec %<throw()%> ou %<noexcep%> mais aucun %<get_return_object_on_allocation_failure%> utilisable est fourni par %qT" #: cp/coroutines.cc:4690 #, gcc-internal-format msgid "%qE is provided by %qT but %<std::nothrow%> cannot be found" -msgstr "" +msgstr "%qE est fourni par %qT mais %<std::nothrow%> n'est pas trouvé" #. We can't initialize a non-class return value from void. #: cp/coroutines.cc:5088 -#, fuzzy, gcc-internal-format -#| msgid "cannot bind non-const lvalue reference of type %qH to an rvalue of type %qI" +#, gcc-internal-format msgid "cannot initialize a return object of type %qT with an rvalue of type %<void%>" -msgstr "impossible de lier la référence d'une l-valeur non constante de type %qH à une r-valeur de type %qI" +msgstr "impossible d'initialiser un objet retourné de type %qT avec une r-valeur de type %<void%>" #: cp/cp-gimplify.cc:154 #, gcc-internal-format @@ -51183,10 +50866,9 @@ msgid " enters %<constexpr if%> statement" msgstr " entre dans l'instruction %<constexpr if%>" #: cp/decl.cc:3499 cp/decl.cc:3637 -#, fuzzy, gcc-internal-format -#| msgid " enters %<constexpr if%> statement" +#, gcc-internal-format msgid " enters %<consteval if%> statement" -msgstr " entre dans l'instruction %<constexpr if%>" +msgstr " entre dans l'instruction %<consteval if%>" #: cp/decl.cc:3618 #, gcc-internal-format @@ -51279,10 +50961,9 @@ msgid "this flexibility is deprecated and will be removed" msgstr "cette flexibilité est dépréciée et sera supprimée" #: cp/decl.cc:5142 -#, fuzzy, gcc-internal-format -#| msgid "anonymous struct not inside named type" +#, gcc-internal-format msgid "anonymous struct with base classes" -msgstr "struct anonyme pas à l'intérieur d'un type nommé" +msgstr "struct anonyme avec des classes de base" #: cp/decl.cc:5154 #, gcc-internal-format @@ -51462,16 +51143,14 @@ msgid "block-scope extern declaration %q#D not permitted in module purview" msgstr "la déclaration externe avec la portée bloc %q#D n'est pas permise dans le domaine du module" #: cp/decl.cc:5711 -#, fuzzy, gcc-internal-format -#| msgid "%<try%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>" +#, gcc-internal-format msgid "%qD declared %<thread_local%> in %qs function only available with %<-std=c++2b%> or %<-std=gnu++2b%>" -msgstr "%<try%> dans une fonction %<constexpr%> uniquement disponible avec %<-std=c++20%> ou %<-std=gnu++20%>" +msgstr "%qD déclaré %<thread_local%> dans la fonction %qs est uniquement disponible avec %<-std=c++2b%> ou %<-std=gnu++2b%>" #: cp/decl.cc:5717 -#, fuzzy, gcc-internal-format -#| msgid "%<asm%> in %<constexpr%> function only available with %<-std=c++20%> or %<-std=gnu++20%>" +#, gcc-internal-format msgid "%qD declared %<static%> in %qs function only available with %<-std=c++2b%> or %<-std=gnu++2b%>" -msgstr "%<asm%> dans une fonction %<constexpr%> uniquement disponible avec %<-std=c++20%> ou %<-std=gnu++20%>" +msgstr "%qD déclaré %<static%> dans la fonction %qs est uniquement disponible avec %<-std=c++2b%> ou %<-std=gnu++2b%>" #: cp/decl.cc:5782 #, gcc-internal-format @@ -51604,10 +51283,9 @@ msgid "%qT has no non-static data member named %qD" msgstr "%qT n'a pas de membre de données non statique nommé %qD" #: cp/decl.cc:6588 -#, fuzzy, gcc-internal-format -#| msgid "%qD is not a member of %qT" +#, gcc-internal-format msgid "%qD is not a direct member of %qT" -msgstr "%qD n'est pas un membre de %qT" +msgstr "%qD n'est pas un membre direct de %qT" #: cp/decl.cc:6624 #, gcc-internal-format @@ -52092,10 +51770,9 @@ msgid "deduction guide %qD must be declared in the same scope as %qT" msgstr "le guide de déduction %qD doit être déclaré dans la même portée que %qT" #: cp/decl.cc:10187 -#, fuzzy, gcc-internal-format -#| msgid "deduction guide %qD must be declared in the same scope as %qT" +#, gcc-internal-format msgid "deduction guide %qD must have the same access as %qT" -msgstr "le guide de déduction %qD doit être déclaré dans la même portée que %qT" +msgstr "le guide de déduction %qD doit avoir le même accès que %qT" #: cp/decl.cc:10193 #, gcc-internal-format @@ -52268,16 +51945,14 @@ msgid "overflow in array dimension" msgstr "débordement dans la dimension du tableau" #: cp/decl.cc:11111 -#, fuzzy, gcc-internal-format -#| msgid "%qD declared as array of %qT" +#, gcc-internal-format msgid "%qD declared as array of template placeholder type %qT" -msgstr "%qD est déclaré comme tableau de %qT" +msgstr "%qD est déclaré comme tableau de type à remplacer dans un patron %qT" #: cp/decl.cc:11114 -#, fuzzy, gcc-internal-format -#| msgid "creating pointer to member reference type %qT" +#, gcc-internal-format msgid "creating array of template placeholder type %qT" -msgstr "création d'un pointeur vers le type de référence au membre %qT" +msgstr "création d'un tableau de type à remplacer dans un patron %qT" #: cp/decl.cc:11124 #, gcc-internal-format @@ -52330,10 +52005,9 @@ msgid "multidimensional array must have bounds for all dimensions except the fir msgstr "le tableau multidimensionnel doit avoir des bornes pour chaque dimension excepté la première" #: cp/decl.cc:11184 -#, fuzzy, gcc-internal-format -#| msgid "variable length array is used" +#, gcc-internal-format msgid "variable-length array of %<auto%>" -msgstr "le tableau de taille variable est utilisé" +msgstr "tableau de taille variable de %<auto%>" #: cp/decl.cc:11260 #, gcc-internal-format @@ -53154,10 +52828,9 @@ msgid "unnamed field is neither function nor member function; cannot be declared msgstr "le champ sans nom n'est ni une fonction ni une fonction membre; il ne peut pas être déclaré ami" #: cp/decl.cc:13970 cp/parser.cc:20646 cp/parser.cc:27044 -#, fuzzy, gcc-internal-format -#| msgid "an attribute that appertains to a type-specifier is ignored" +#, gcc-internal-format msgid "an attribute that appertains to a friend declaration that is not a definition is ignored" -msgstr "un attribut qui appartient à un spécificateur de type est ignoré" +msgstr "un attribut qui appartient à une déclaration amie qui n'est pas une définition est ignorée" #: cp/decl.cc:14016 cp/decl.cc:14027 #, gcc-internal-format @@ -53495,10 +53168,9 @@ msgid "reference to %qD is ambiguous" msgstr "la référence à %qD est ambiguë" #: cp/decl.cc:15498 -#, fuzzy, gcc-internal-format -#| msgid "function template %qD redeclared as a class template" +#, gcc-internal-format msgid "class template %qD redeclared as non-template" -msgstr "le patron de fonction %qD est redéclaré comme un patron de classe" +msgstr "le patron de classe %qD est redéclaré comme un non patron" #: cp/decl.cc:15520 cp/name-lookup.cc:5415 #, gcc-internal-format @@ -53677,20 +53349,19 @@ msgid "name missing for member function" msgstr "nom manquant pour la fonction membre" #: cp/decl2.cc:447 cp/decl2.cc:480 -#, fuzzy, gcc-internal-format -#| msgid "top-level comma expression in array subscript is deprecated" +#, gcc-internal-format msgid "top-level comma expression in array subscript changed meaning in C++23" -msgstr "une expression avec une virgule au plus haut niveau dans l'indice d'un tableau est déprécié" +msgstr "une expression avec une virgule au plus haut niveau dans l'indice d'un tableau a changé de signification en C++23" #: cp/decl2.cc:470 #, gcc-internal-format msgid "built-in subscript operator without expression list" -msgstr "" +msgstr "opérateur d'indice interne sans liste d'expression" #: cp/decl2.cc:484 #, gcc-internal-format msgid "built-in subscript operator with more than one expression in expression list" -msgstr "" +msgstr "opérateur d'indice interne avec plus d'une expression dans la liste d'expression" #: cp/decl2.cc:502 cp/decl2.cc:516 #, gcc-internal-format @@ -53853,10 +53524,9 @@ msgid "%q+D static data member inside of declare target directive" msgstr "membre de donnée statique %q+D à l'intérieur de la directive de déclaration de cible" #: cp/decl2.cc:1680 cp/name-lookup.cc:8520 -#, fuzzy, gcc-internal-format -#| msgid "%<this%> may not be used in this context" +#, gcc-internal-format msgid "%<omp::%E%> not allowed to be specified in this context" -msgstr "%<this%> ne peut pas être utilisé dans ce contexte" +msgstr "%<omp::%E%> ne peut pas être spécifié dans ce contexte" #: cp/decl2.cc:1749 #, gcc-internal-format @@ -54154,10 +53824,9 @@ msgid "inheriting constructors only available with %<-std=c++11%> or %<-std=gnu+ msgstr "les constructeurs hérités sont uniquement disponibles avec %<-std=c++11%> ou %<-std=gnu++11%>" #: cp/error.cc:4524 -#, fuzzy, gcc-internal-format -#| msgid "c++11 attributes only available with %<-std=c++11%> or %<-std=gnu++11%>" +#, gcc-internal-format msgid "C++11 attributes only available with %<-std=c++11%> or %<-std=gnu++11%>" -msgstr "les attributs c++11 sont uniquement disponibles avec %<-std=c++11%> ou %<-std=gnu++11%>" +msgstr "les attributs C++11 sont uniquement disponibles avec %<-std=c++11%> ou %<-std=gnu++11%>" #: cp/error.cc:4529 #, gcc-internal-format @@ -54398,13 +54067,12 @@ msgstr "%qD est initialisé avec lui-même" #: cp/init.cc:894 #, gcc-internal-format msgid "reference %qD is not yet bound to a value when used here" -msgstr "" +msgstr "la référence %qD n'est pas encore liée à une valeur lorsqu'elle est utilisée ici" #: cp/init.cc:898 -#, fuzzy, gcc-internal-format -#| msgid "%qD is used uninitialized" +#, gcc-internal-format msgid "member %qD is used uninitialized" -msgstr "%qD est utilisé sans avoir été initialisé" +msgstr "le membre %qD est utilisé sans avoir été initialisé" #: cp/init.cc:946 #, gcc-internal-format @@ -54910,28 +54578,27 @@ msgstr "le nom décoré de la variable de protection de l'initialisation pour %q #: cp/mapper-client.cc:307 #, gcc-internal-format msgid "failed %s mapper %qs line %u" -msgstr "" +msgstr "échec du %s mapper %qs ligne %u" #: cp/mapper-client.cc:308 #, gcc-internal-format msgid "failed %s mapper %qs" -msgstr "" +msgstr "échec du %s mapper %qs" #: cp/mapper-client.cc:320 #, gcc-internal-format, gfc-internal-format msgid "failed mapper handshake %s" -msgstr "" +msgstr "échec de la négociation du mapper %s" #: cp/mapper-client.cc:354 #, gcc-internal-format, gfc-internal-format msgid "mapper died by signal %s" -msgstr "" +msgstr "le mapper a été tué par le signal %s" #: cp/mapper-client.cc:357 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "failed to get exit status: %m" +#, gcc-internal-format, gfc-internal-format msgid "mapper exit status %d" -msgstr "erreur pour obtenir le statut de sortie: %m" +msgstr "statut de sortie du mapper %d" #: cp/method.cc:855 cp/method.cc:2319 #, gcc-internal-format @@ -55140,265 +54807,244 @@ msgid "defaulted function %q+D with default argument" msgstr "fonction %q+D imposée par défaut avec un argument par défaut" #: cp/module.cc:1546 -#, fuzzy, gcc-internal-format -#| msgid "%s: section %s.%d is missing" +#, gcc-internal-format msgid "section %qs is missing or corrupted" -msgstr "%s: la section %s.%d est manquante" +msgstr "la section %qs est manquante ou corrompue" #: cp/module.cc:1548 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "missing or corrupt object.d" +#, gcc-internal-format, gfc-internal-format msgid "section #%u is missing or corrupted" -msgstr "object.d manquant ou corrompu" +msgstr "la section #%u est manquante ou corrompue" +# Cette notion est décrite dans [gcc r11-6084] c++: Modules Is Landing +# Il s'agit d'un format qui permet de charger tardivement un module à la demande. +# Je ne le traduis pas. #: cp/module.cc:1770 #, gcc-internal-format msgid "not Encapsulated Lazy Records of Named Declarations" -msgstr "" +msgstr "pas Encapsulated Lazy Records of Named Declarations" #: cp/module.cc:1785 -#, fuzzy, gcc-internal-format -#| msgid "expected template-id for type" +#, gcc-internal-format msgid "unexpected encapsulation format or type" -msgstr "template-id attendu pour le type" +msgstr "format d'encapsulation ou type inattendu" #: cp/module.cc:1794 #, gcc-internal-format msgid "encapsulation is malformed" -msgstr "" +msgstr "l'encapsulation est mal composée" #: cp/module.cc:11083 -#, fuzzy, gcc-internal-format -#| msgid "conflicting declaration %q#D" +#, gcc-internal-format msgid "conflicting global module declaration %#qD" -msgstr "entre en conflit avec la déclaration %q#D" +msgstr "déclaration de module global %#qD conflictuelle" #: cp/module.cc:11085 -#, fuzzy, gcc-internal-format -#| msgid "in declaration %q+D" +#, gcc-internal-format msgid "existing declaration %#qD" -msgstr "dans la déclaration de %q+D" +msgstr "déclaration %#qD existante" #: cp/module.cc:12149 -#, fuzzy, gcc-internal-format -#| msgid "extern declaration of %q#D doesn%'t match" +#, gcc-internal-format msgid "definition of %qD does not match" -msgstr "la déclaration externe de %q#D ne concorde pas" +msgstr "la définition de %qD ne concorde pas" #: cp/module.cc:12151 -#, fuzzy, gcc-internal-format -#| msgid "missing definition" +#, gcc-internal-format msgid "existing definition %qD" -msgstr "définition manquante" +msgstr "définition %qD existante" #: cp/module.cc:12163 -#, fuzzy, gcc-internal-format -#| msgid "redeclaration of enumerator %q+D" +#, gcc-internal-format msgid "... this enumerator %qD" -msgstr "redéclaration de l'énumération %q+D" +msgstr "... cet énumérateur %qD" #: cp/module.cc:12165 -#, fuzzy, gcc-internal-format -#| msgid "extern declaration of %q#D doesn%'t match" +#, gcc-internal-format msgid "enumerator %qD does not match ..." -msgstr "la déclaration externe de %q#D ne concorde pas" +msgstr "l'énumérateur %qD ne concorde pas avec ..." #: cp/module.cc:12171 #, gcc-internal-format msgid "additional enumerators beginning with %qD" -msgstr "" +msgstr "énumérateurs supplémentaires commençant par %qD" #: cp/module.cc:12175 #, gcc-internal-format msgid "enumeration range differs" -msgstr "" +msgstr "la plage d'énumération diffère" #: cp/module.cc:13294 #, gcc-internal-format msgid "%q#D references internal linkage entity %q#D" -msgstr "" +msgstr "%q#D fait référence à l'entité avec liaison interne %q#D" #: cp/module.cc:13863 -#, fuzzy, gcc-internal-format -#| msgid "recursive expansion" +#, gcc-internal-format msgid "recursive lazy load" -msgstr "expansion récursive" +msgstr "chargement tardif à la demande récursif" #. Cannot import the current module. #: cp/module.cc:13882 #, gcc-internal-format msgid "cannot import module in its own purview" -msgstr "" +msgstr "impossible d'importer le module dans sa propre portée" #: cp/module.cc:13883 cp/module.cc:18965 -#, fuzzy, gcc-internal-format -#| msgid "routine %qD declared here" +#, gcc-internal-format msgid "module %qs declared here" -msgstr "la routine %qD est déclarée ici" +msgstr "le module %qs est déclaré ici" #: cp/module.cc:14228 -#, fuzzy, gcc-internal-format -#| msgid "cast from %qT is not allowed" +#, gcc-internal-format msgid "indirect import %qs is not already loaded" -msgstr "le transtypage depuis %qT n'est pas permis" +msgstr "l'import indirect %qs n'est pas déjà chargé" #: cp/module.cc:14234 #, gcc-internal-format msgid "import %qs has CRC mismatch" -msgstr "" +msgstr "l'import %qs a un CRC non concordant" #: cp/module.cc:15933 #, gcc-internal-format msgid "unable to represent further imported source locations" -msgstr "" +msgstr "impossible de représenter les emplacements sources des imports supplémentaires" #: cp/module.cc:16846 #, gcc-internal-format msgid "not exporting %<#define %E%> as it is a keyword" -msgstr "" +msgstr "pas d'export de %<#define %E%> car il est un mot-clé" #: cp/module.cc:17083 -#, fuzzy, gcc-internal-format -#| msgid "previous definition of %qD here" +#, gcc-internal-format msgid "macro definitions of %qE corrupted" -msgstr "la définition précédente de %qD est ici" +msgstr "la définition de macro de %qE est corrompue" #: cp/module.cc:17107 cp/module.cc:17110 -#, fuzzy, gcc-internal-format -#| msgid " inconsistent parameter pack deduction with %qT and %qT" +#, gcc-internal-format msgid "inconsistent imported macro definition %qE" -msgstr " déduction du paquet de paramètres inconsistante entre %qT et %qT" +msgstr "définition de macro %qE importée de manière inconsistante" #: cp/module.cc:17116 #, gcc-internal-format msgid "%<#undef %E%>" -msgstr "" +msgstr "%<#undef %E%>" #: cp/module.cc:17118 #, gcc-internal-format msgid "%<#define %s%>" -msgstr "" +msgstr "%<#define %s%>" #: cp/module.cc:17348 -#, fuzzy, gcc-internal-format -#| msgid "Cannot delete module file %qs: %s" +#, gcc-internal-format msgid "compiled module file is %qs" -msgstr "Impossible d%'effacer le fichier module %qs: %s" +msgstr "le fichier du module compilé est %qs" #: cp/module.cc:17385 cp/module.cc:17390 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Compile release version." +#, gcc-internal-format, gfc-internal-format msgid "compiled module is %sversion %s" -msgstr "Compiler en version publiable." +msgstr "le module compilé est %sversion %s" #: cp/module.cc:17396 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "collect2 version %s\n" +#, gcc-internal-format, gfc-internal-format msgid "compiler is %sversion %s%s%s" -msgstr "collect2 version %s\n" +msgstr "le compilateur est %sversion %s%s%s" #: cp/module.cc:17426 -#, fuzzy, gcc-internal-format -#| msgid "no %qs getter found" +#, gcc-internal-format msgid "module %qs found" -msgstr "pas de getter %qs trouvé" +msgstr "module %qs trouvé" #: cp/module.cc:17428 #, gcc-internal-format msgid "header module expected, module %qs found" -msgstr "" +msgstr "module d'en-tête attendu, module %qs trouvé" #: cp/module.cc:17429 #, gcc-internal-format msgid "module %qs expected, header module found" -msgstr "" +msgstr "module %qs attendu, module d'en-tête trouvé" #: cp/module.cc:17444 #, gcc-internal-format msgid "module %qs CRC mismatch" -msgstr "" +msgstr "désaccord dans la CRC du module %qs" #: cp/module.cc:17458 #, gcc-internal-format msgid "target & host is %qs:%qs, expected %qs:%qs" -msgstr "" +msgstr "la cible et l'hôte sont %qs:%qs, %qs:%qs attendu" #: cp/module.cc:17470 #, gcc-internal-format msgid "language dialect differs %qs, expected %qs" -msgstr "" +msgstr "le dialecte du langage %qs diffère, %qs attendu" #: cp/module.cc:17486 -#, fuzzy, gcc-internal-format -#| msgid "exception handling disabled, use %<-fexceptions%> to enable" +#, gcc-internal-format msgid "module contains OpenMP, use %<-fopenmp%> to enable" -msgstr "le traitement des exceptions est désactivé, utilisez %<-fexceptions%> pour l'activer" +msgstr "le module contient OpenMP, utilisez %<-fopenmp%> pour l'activer" #: cp/module.cc:17503 -#, fuzzy, gcc-internal-format -#| msgid "return value type mismatch" +#, gcc-internal-format msgid "fixed tree mismatch" -msgstr "désaccord dans le type de la valeur retournée" +msgstr "désaccord dans l'arbre fixe" #: cp/module.cc:17590 -#, fuzzy, gcc-internal-format -#| msgid "stack limit expression is not supported" +#, gcc-internal-format msgid "interface partition is not exported" -msgstr "l'expression limitant la pile n'est pas supportée" +msgstr "la partition de l'interface n'est pas exportée" #: cp/module.cc:18124 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "failed to create map component '%s'" +#, gcc-internal-format, gfc-internal-format msgid "failed to read compiled module cluster %u: %s" -msgstr "échec lors de la création du composant du tableau associatif « %s »" +msgstr "échec de la lecture de la grappe %u du module compilé : %s" #: cp/module.cc:18162 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "failed to create map component '%s'" +#, gcc-internal-format, gfc-internal-format msgid "failed to read compiled module: %s" -msgstr "échec lors de la création du composant du tableau associatif « %s »" +msgstr "échec de la lecture du module compilé : %s" #: cp/module.cc:18172 #, gcc-internal-format msgid "consider using %<-fno-module-lazy%>, increasing %<-param-lazy-modules=%u%> value, or increasing the per-process file descriptor limit" -msgstr "" +msgstr "envisagez d'utiliser %<-fno-module-lazy%>, augmenter la valeur de %<-param-lazy-modules=%u%> ou d'augmenter la limite des descripteurs de fichiers par processus" #: cp/module.cc:18177 #, gcc-internal-format msgid "imports must be built before being imported" -msgstr "" +msgstr "les imports doivent être construit avant d'être importés" #: cp/module.cc:18180 #, gcc-internal-format msgid "returning to the gate for a mechanical issue" -msgstr "" +msgstr "retour à la porte pour un problème mécanique" # le %qs est un nom de région non traduit tel que « parallel », « task », « teams ». #: cp/module.cc:18670 -#, fuzzy, gcc-internal-format -#| msgid "evaluating %qs" +#, gcc-internal-format msgid "reading CMI %qs" -msgstr "évaluation de %qs" +msgstr "lecture du CMI %qs" #: cp/module.cc:18814 #, gcc-internal-format msgid "failed to load binding %<%E%s%E%>" -msgstr "" +msgstr "échec du chargement de la liaison %<%E%s%E%>" #: cp/module.cc:18815 #, gcc-internal-format msgid "failed to load binding %<%E%s%E@%s%>" -msgstr "" +msgstr "échec du chargement de la liaison %<%E%s%E@%s%>" #: cp/module.cc:18822 #, gcc-internal-format msgid "during load of binding %<%E%s%E%>" -msgstr "" +msgstr "durant le chargement de la liaison %<%E%s%E%>" #: cp/module.cc:18823 #, gcc-internal-format msgid "during load of binding %<%E%s%E@%s%>" -msgstr "" +msgstr "durant le chargement de la liaison %<%E%s%E@%s%>" #: cp/module.cc:18881 #, gcc-internal-format @@ -55421,117 +55067,102 @@ msgstr "option inconnue pour %<%s=%s%>" #: cp/module.cc:18930 #, gcc-internal-format msgid "import of named module %qs inside language-linkage block" -msgstr "" +msgstr "import du module nommé %qs à l'intérieur d'un bloc de liaison du langage" #: cp/module.cc:18960 -#, fuzzy, gcc-internal-format -#| msgid "Symbol %qs already declared" +#, gcc-internal-format msgid "module already declared" -msgstr "Symbole %qs déjà déclaré" +msgstr "module déjà déclaré" #: cp/module.cc:18961 -#, fuzzy, gcc-internal-format -#| msgid "In module imported at" +#, gcc-internal-format msgid "module already imported" -msgstr "Dans le module importé à " +msgstr "module déjà importé" #: cp/module.cc:18966 -#, fuzzy, gcc-internal-format -#| msgid "In module imported at" +#, gcc-internal-format msgid "module %qs imported here" -msgstr "Dans le module importé à " +msgstr "module %qs importé ici" #: cp/module.cc:19153 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "Note Compiled Module Interface pathnames." +#, gcc-internal-format, gfc-internal-format msgid "unknown Compiled Module Interface: %s" -msgstr "Noter les noms des chemins de l'interface de module compilé (Compiled Module Interface)." +msgstr "Interface de module compilé inconnue : %s" #: cp/module.cc:19196 -#, fuzzy, gcc-internal-format -#| msgid "Note a #include translation of a specific header." +#, gcc-internal-format msgid "cannot determine %<#include%> translation of %s: %s" -msgstr "Noter une traduction de #include d'un en-tête spécifique." +msgstr "impossible de déterminer la traduction %<#include%> de %s : %s" #: cp/module.cc:19214 -#, fuzzy, gcc-internal-format -#| msgid "Note #include directives translated to import declarations." +#, gcc-internal-format msgid "include %qs translated to import" -msgstr "Noter les directives #include traduites en déclarations d'import." +msgstr "inclusion %qs traduite en import" #: cp/module.cc:19215 #, gcc-internal-format msgid "include %qs processed textually" -msgstr "" +msgstr "inclusion %qs traitée textuellement" #: cp/module.cc:19572 -#, fuzzy, gcc-internal-format -#| msgid "the %qs debug format cannot be used with pre-compiled headers" +#, gcc-internal-format msgid "C++ modules are incompatible with precompiled headers" -msgstr "le format de débogage %qs ne peut pas être utilisé avec des en-têtes précompilés" +msgstr "les modules C++ sont incompatibles avec les en-têtes précompilés" #: cp/module.cc:19576 -#, fuzzy, gcc-internal-format -#| msgid "Enable traditional preprocessing." +#, gcc-internal-format msgid "C++ modules are incompatible with traditional preprocessing" -msgstr "Activer le pré-traitement traditionnel." +msgstr "les modules C++ sont incompatibles avec le prétraitement traditionnel" #: cp/module.cc:19586 #, gcc-internal-format msgid "macro debug output may be incomplete with modules" -msgstr "" +msgstr "la sortie de débogage de macro peut être incomplète avec les modules" #: cp/module.cc:19587 #, gcc-internal-format msgid "module dependencies require preprocessing" -msgstr "" +msgstr "les dépendances du module requièrent un prétraitement" #: cp/module.cc:19589 -#, fuzzy, gcc-internal-format -#| msgid "%qs requires the %qs option" +#, gcc-internal-format msgid "you should use the %<-%s%> option" -msgstr "%qs requiert l'option %qs" +msgstr "vous devriez utiliser l'option %<-%s%>" #: cp/module.cc:19624 cp/module.cc:19653 -#, fuzzy, gcc-internal-format -#| msgid "invalid --param name %qs" +#, gcc-internal-format msgid "invalid header name %qs" -msgstr "nom de --param %qs invalide" +msgstr "nom d'en-tête %qs invalide" #: cp/module.cc:19663 -#, fuzzy, gcc-internal-format -#| msgid "invalid --param name %qs" +#, gcc-internal-format msgid "invalid module name %qs" -msgstr "nom de --param %qs invalide" +msgstr "nom de module %qs invalide" #: cp/module.cc:19829 #, gcc-internal-format msgid "%<-fmodule-only%> used for non-interface" -msgstr "" +msgstr "%<-fmodule-only%> utilisé pour une non-interface" #: cp/module.cc:19869 -#, fuzzy, gcc-internal-format -#| msgid "error writing %qs" +#, gcc-internal-format msgid "writing CMI %qs" -msgstr "erreur d'écriture dans %qs" +msgstr "écriture CMI %qs" #: cp/module.cc:19874 -#, fuzzy, gcc-internal-format -#| msgid "Error writing modules file: %s" +#, gcc-internal-format msgid "not writing module %qs due to errors" -msgstr "Erreur en écrivant le fichier des modules: %s" +msgstr "pas d'écriture du module %qs à cause d'erreurs" #: cp/module.cc:19902 -#, fuzzy, gcc-internal-format, gfc-internal-format -#| msgid "failed to create map component '%s'" +#, gcc-internal-format, gfc-internal-format msgid "failed to write compiled module: %s" -msgstr "échec lors de la création du composant du tableau associatif « %s »" +msgstr "échec de l'écriture du module compilé : %s" #: cp/module.cc:20039 -#, fuzzy, gcc-internal-format -#| msgid "unknown evrp mode %qs" +#, gcc-internal-format msgid "unknown header kind %qs" -msgstr "mode evrp %qs inconnu" +msgstr "type d'en-tête %qs inconnu" #: cp/name-lookup.cc:2727 #, gcc-internal-format @@ -55829,10 +55460,9 @@ msgid "%<#pragma omp declare %s%> not immediately followed by function declarati msgstr "%<#pragma omp declare %s%> pas immédiatement suivi par une déclaration ou une définition de fonction" #: cp/parser.cc:1484 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp declare %s%> not immediately followed by function declaration or definition" +#, gcc-internal-format msgid "%<declare %s%> directive not immediately followed by function declaration or definition" -msgstr "%<#pragma omp declare %s%> pas immédiatement suivi par une déclaration ou une définition de fonction" +msgstr "directive %<declare %s%> pas immédiatement suivie d'une déclaration ou d'une définition de fonction" #: cp/parser.cc:3022 #, gcc-internal-format @@ -56367,16 +55997,14 @@ msgid "wrong number of arguments to %<__builtin_launder%>" msgstr "mauvais nombre d'arguments pour %<__builtin_launder%>" #: cp/parser.cc:7465 -#, fuzzy, gcc-internal-format -#| msgid "wrong number of arguments to %<__builtin_addressof%>" +#, gcc-internal-format msgid "wrong number of arguments to %<__builtin_assoc_barrier%>" -msgstr "mauvais nombre d'arguments pour %<__builtin_addressof%>" +msgstr "mauvais nombre d'arguments pour %<__builtin_assoc_barrier%>" #: cp/parser.cc:7491 -#, fuzzy, gcc-internal-format -#| msgid "wrong number of arguments to %<__builtin_shuffle%>" +#, gcc-internal-format msgid "wrong number of arguments to %<__builtin_shufflevector%>" -msgstr "mauvais nombre d'arguments pour %<__builtin_shuffle%>" +msgstr "mauvais nombre d'arguments pour %<__builtin_shufflevector%>" #: cp/parser.cc:7625 #, gcc-internal-format @@ -56690,16 +56318,14 @@ msgid "%<if constexpr%> only available with %<-std=c++17%> or %<-std=gnu++17%>" msgstr "%<if constexpr%> uniquement disponible avec %<-std=c++17%> ou %<-std=gnu++17%>" #: cp/parser.cc:12987 -#, fuzzy, gcc-internal-format -#| msgid "%<if constexpr%> only available with %<-std=c++17%> or %<-std=gnu++17%>" +#, gcc-internal-format msgid "%<if consteval%> only available with %<-std=c++2b%> or %<-std=gnu++2b%>" -msgstr "%<if constexpr%> uniquement disponible avec %<-std=c++17%> ou %<-std=gnu++17%>" +msgstr "%<if consteval%> uniquement disponible avec %<-std=c++2b%> ou %<-std=gnu++2b%>" #: cp/parser.cc:13012 cp/parser.cc:13047 -#, fuzzy, gcc-internal-format -#| msgid "%<#pragma omp cancel%> may only be used in compound statements" +#, gcc-internal-format msgid "%<if consteval%> requires compound statement" -msgstr "%<#pragma omp cancel%> ne peut être utilisé que dans des instructions composées" +msgstr "%<if consteval%> requiert une instruction composée" #: cp/parser.cc:13089 #, gcc-internal-format @@ -67844,7 +67470,7 @@ msgstr "make_generic(): Impossible de trouver le symbole générique %qs" #: fortran/intrinsic.cc:4311 #, gcc-internal-format, gfc-internal-format msgid "ALLOCATED intrinsic at %L requires an array or scalar allocatable entity" -msgstr "L'intrinsèque ALLOCATED à %L requière un tableau ou une entité allouable scalaire" +msgstr "L'intrinsèque ALLOCATED à %L requiert un tableau ou une entité allouable scalaire" #: fortran/intrinsic.cc:4324 #, gcc-internal-format, gfc-internal-format diff --git a/gcc/po/sv.po b/gcc/po/sv.po index a121cf5..effff10 100644 --- a/gcc/po/sv.po +++ b/gcc/po/sv.po @@ -29,7 +29,7 @@ msgstr "" "Project-Id-Version: gcc 12.1-b20220213\n" "Report-Msgid-Bugs-To: https://gcc.gnu.org/bugs/\n" "POT-Creation-Date: 2022-02-11 23:10+0000\n" -"PO-Revision-Date: 2022-02-27 11:54+0100\n" +"PO-Revision-Date: 2022-03-06 17:03+0100\n" "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language: sv\n" @@ -3617,16 +3617,14 @@ msgid "Implement DIP1008: Allow exceptions in @nogc code." msgstr "Implementera DIP1008: tillÃ¥t undantag i @nogc-kod." #: d/lang.opt:357 -#, fuzzy, no-c-format -#| msgid "malformed spec function arguments" +#, no-c-format msgid "Implement DIP1021: Mutable function arguments." -msgstr "felaktiga specifikationsfunktionsargument" +msgstr "Implementera DIP1021: förändringsbara funktionsargument." #: d/lang.opt:361 -#, fuzzy, no-c-format -#| msgid "Implement DIP25: Sealed references (experimental)." +#, no-c-format msgid "Implement DIP25: Sealed references." -msgstr "Implementera DIP25: förseglade referenser (experimentellt)." +msgstr "Implementera DIP25: förseglade referenser." #: d/lang.opt:365 #, no-c-format @@ -3654,16 +3652,14 @@ msgid "Implement 'in' contracts of overridden methods to be a superset of parent msgstr "Implementera â€inâ€-kontrakt för Ã¥sidosatta metoder att vara en övermängd av föräldrakontraktet." #: d/lang.opt:385 -#, fuzzy, no-c-format -#| msgid "Consider access to byte sized memory slow." +#, no-c-format msgid "Disable access to shared memory objects." -msgstr "Betrakta Ã¥tkomst till bytestort minne som lÃ¥ngsam." +msgstr "Avaktivera Ã¥tkomst till delat-minne-objekt." #: d/lang.opt:389 -#, fuzzy, no-c-format -#| msgid "valid arguments to %qs are: %s" +#, no-c-format msgid "Enable rvalue arguments to ref parameters." -msgstr "giltiga argument till %qs är: %s" +msgstr "Aktivera r-värdesargument till ref-parametrar." #: d/lang.opt:393 #, no-c-format @@ -3681,10 +3677,9 @@ msgid "Turn off all revertable D language features." msgstr "SlÃ¥ av alla Ã¥terställbara funktioner i sprÃ¥ket D." #: d/lang.opt:405 -#, fuzzy, no-c-format -#| msgid "Implement DIP25: Sealed references (experimental)." +#, no-c-format msgid "Revert DIP25: Sealed references." -msgstr "Implementera DIP25: förseglade referenser (experimentellt)." +msgstr "Ã…terställ DIP25: förseglade referenser." #: d/lang.opt:409 #, no-c-format @@ -3697,10 +3692,9 @@ msgid "Use C-style integral promotion for unary '+', '-' and '~'." msgstr "Använd heltalskonvertering i C-stil för unära â€+â€, â€-†och â€~â€." #: d/lang.opt:417 -#, fuzzy, no-c-format -#| msgid "Disable hardware floating point." +#, no-c-format msgid "Disable Markdown replacements in Ddoc." -msgstr "Använd inte hÃ¥rdvaruflyttal." +msgstr "Avaktivera Markdown-ersättningar i Ddoc." #: d/lang.opt:425 #, no-c-format @@ -3713,10 +3707,9 @@ msgid "Generate code for switches without a default case." msgstr "Generera kod för switch:ar utan ett standardfall." #: d/lang.opt:433 -#, fuzzy, no-c-format -#| msgid "List information on all language changes." +#, no-c-format msgid "List information on all D language transitions." -msgstr "Lista information om alla sprÃ¥kändringar." +msgstr "Lista information om alla övergÃ¥ngar i sprÃ¥ket D." #: d/lang.opt:437 #, no-c-format @@ -3724,10 +3717,9 @@ msgid "List all non-mutable fields which occupy an object instance." msgstr "Lista alla icke förändringsbara fält som tar upp en objektinstans." #: d/lang.opt:441 -#, fuzzy, no-c-format -#| msgid "List all usages of complex or imaginary types." +#, no-c-format msgid "List all usages of 'in' on parameter." -msgstr "Lista alla användningar av komplexa eller imaginära typer." +msgstr "Lista alla användningar av â€in†pÃ¥ parametrar." #: d/lang.opt:445 #, no-c-format @@ -3735,10 +3727,9 @@ msgid "List all hidden GC allocations." msgstr "Lista alla dolda GC-allokeringar." #: d/lang.opt:449 -#, fuzzy, no-c-format -#| msgid "attributes ignored on template instantiation" +#, no-c-format msgid "List statistics on template instantiations." -msgstr "attribut ignoreras vid mallinstansiering" +msgstr "Räkna upp statistik om mallinstansieringar." #: d/lang.opt:453 #, no-c-format @@ -3966,10 +3957,9 @@ msgid "Warn about code paths in which a longjmp rewinds to a jmp_buf saved in a msgstr "Varna för kodvägar i vilka en longjmp hoppar tillbaka till en jmp_buf som sparades i en stackram som har returnerat." #: analyzer/analyzer.opt:119 -#, fuzzy, no-c-format -#| msgid "Warn about code paths in which an unsanitized value is used as an array index." +#, no-c-format msgid "Warn about code paths in which an unsanitized value is used as an allocation size." -msgstr "Varna för kodvägar i vilka ett osanerat värde används som ett vektorindex." +msgstr "Varna för kodvägar i vilka ett osanerat värde används som en allokeringsstorlek." #: analyzer/analyzer.opt:123 #, no-c-format @@ -3977,22 +3967,19 @@ msgid "Warn about code paths in which an unsanitized value is used as an array i msgstr "Varna för kodvägar i vilka ett osanerat värde används som ett vektorindex." #: analyzer/analyzer.opt:127 -#, fuzzy, no-c-format -#| msgid "Warn about code paths in which an unsanitized value is used as an array index." +#, no-c-format msgid "Warn about code paths in which an unsanitized value is used as a divisor." -msgstr "Varna för kodvägar i vilka ett osanerat värde används som ett vektorindex." +msgstr "Varna för kodvägar i vilka ett osanerat värde används som en nämnare." #: analyzer/analyzer.opt:131 -#, fuzzy, no-c-format -#| msgid "Warn about code paths in which an unsanitized value is used as an array index." +#, no-c-format msgid "Warn about code paths in which an unsanitized value is used as a pointer offset." -msgstr "Varna för kodvägar i vilka ett osanerat värde används som ett vektorindex." +msgstr "Varna för kodvägar i vilka ett osanerat värde används som ett pekaravstÃ¥nd." #: analyzer/analyzer.opt:135 -#, fuzzy, no-c-format -#| msgid "Warn about code paths in which an unsanitized value is used as an array index." +#, no-c-format msgid "Warn about code paths in which an unsanitized value is used as a size." -msgstr "Varna för kodvägar i vilka ett osanerat värde används som ett vektorindex." +msgstr "Varna för kodvägar i vilka ett osanerat värde används som en storlek." #: analyzer/analyzer.opt:139 #, no-c-format @@ -4015,10 +4002,9 @@ msgid "Warn about code paths which attempt to write to a string literal." msgstr "Varna för kodvägar i vilka försök görs att skriva till en stränglitteral." #: analyzer/analyzer.opt:155 -#, fuzzy, no-c-format -#| msgid "Warn about code paths in which a freed value is used." +#, no-c-format msgid "Warn about code paths in which an uninitialized value is used." -msgstr "Varna för kodvägar i vilka ett frigjort värde används." +msgstr "Varna för kodvägar i vilka ett oinitierat värde används." #: analyzer/analyzer.opt:159 #, no-c-format @@ -4116,10 +4102,9 @@ msgid "Dump a textual representation of the exploded graph to SRCFILE.eg-ID.txt. msgstr "Dumpa en textuell representation av den exploderade grafen till KÄLLFIL.eg-ID.txt." #: analyzer/analyzer.opt:235 -#, fuzzy, no-c-format -#| msgid "Dump a textual representation of the exploded graph to SRCFILE.eg.txt." +#, no-c-format msgid "Dump a textual representation of each diagnostic's exploded path to SRCFILE.IDX.KIND.epath.txt." -msgstr "Dumpa en textuell representation av den exploderade grafen till KÄLLFIL.eg.txt." +msgstr "Dumpa en textuell representation av varje felmeddelandes expoderade sökväg till KÄLLFIL.IDX.SORT.epath.txt." #: analyzer/analyzer.opt:239 #, no-c-format @@ -6439,16 +6424,14 @@ msgid "Known preferred register vector length (to use with the -mprefer-vector-w msgstr "Känd föredragen registervektorlängd (att användas med flaggan -mprefer-vector-width=):" #: config/i386/i386.opt:629 -#, fuzzy, no-c-format -#| msgid "Maximum number of disambiguations to perform per memory access." +#, no-c-format msgid "Maximum number of bits that can be moved from memory to memory efficiently." -msgstr "Maximalt antal upplösningar av tvetydigheter att utföra per minnesÃ¥tkomst." +msgstr "Maximalt antal bitar som kan flyttas frÃ¥n minne till minne effektivt." #: config/i386/i386.opt:633 -#, fuzzy, no-c-format -#| msgid "Maximum number of bases stored in each modref tree." +#, no-c-format msgid "Maximum number of bits that can be stored to memory efficiently." -msgstr "Maximalt antal baser som lagras i varje modref-träd." +msgstr "Maximalt antal bitar som kan lagras till minne effektivt." #: config/i386/i386.opt:639 #, no-c-format @@ -6981,10 +6964,9 @@ msgid "Generate a __return_loc section pointing to all return instrumentation co msgstr "Generera en __return_loc-sektion som pekar pÃ¥ all returinstrumenteringskod." #: config/i386/i386.opt:1138 -#, fuzzy, no-c-format -#| msgid "Generate code to mitigate against straight line speculation." +#, no-c-format msgid "Known choices for mitigation against straight line speculation with -mharden-sls=:" -msgstr "Generera kod för att kompensera för rätlinjig spekulation." +msgstr "Kända val för att kompensera för rätlinjig spekulation med -mharden-sls=:" #: config/i386/i386.opt:1154 #, no-c-format @@ -7047,22 +7029,19 @@ msgid "Emit GNU_PROPERTY_X86_ISA_1_NEEDED GNU property." msgstr "Mata ut GNU-egenskapen GNU_PROPERTY_X86_ISA_1_NEEDED." #: config/i386/i386.opt:1204 -#, fuzzy, no-c-format -#| msgid "Support MWAITX and MONITORX built-in functions and code generation." +#, no-c-format msgid "Support MWAIT and MONITOR built-in functions and code generation." -msgstr "Stöd inbyggda MWAITX- och MONITORX-funktioner och -kodgenerering." +msgstr "Stöd inbyggda MWAIT- och MONITOR-funktioner och -kodgenerering." #: config/i386/i386.opt:1208 -#, fuzzy, no-c-format -#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512BF16 built-in functions and code generation." +#, no-c-format msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512FP16 built-in functions and code generation." -msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX512F- och AVX512BF16-funktioner och -kodgenerering." +msgstr "Stöd inbyggda MMX-, SSE-, SSE2-, SSE3-, SSSE3-, SSE4.1-, SSE4.2-, AVX-, AVX2-, AVX512F- och AVX512FP16-funktioner och -kodgenerering." #: config/i386/i386.opt:1212 -#, fuzzy, no-c-format -#| msgid "Do not use the AltiVec ABI extensions." +#, no-c-format msgid "Do not use GOT to access external symbols." -msgstr "Använd inte ABI-utökningarna AltiVec." +msgstr "Använd inte GOT för att komma Ã¥t externa symboler." #: config/pa/pa64-hpux.opt:23 #, no-c-format @@ -55290,12 +55269,12 @@ msgstr "misslyckades med att %s avbildaren %qs" #: cp/mapper-client.cc:320 #, gcc-internal-format, gfc-internal-format msgid "failed mapper handshake %s" -msgstr "" +msgstr "misslyckades med handskakning till avbildaren %s" #: cp/mapper-client.cc:354 #, gcc-internal-format, gfc-internal-format msgid "mapper died by signal %s" -msgstr "" +msgstr "avbildaren dog av signalen %s" #: cp/mapper-client.cc:357 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -55521,10 +55500,12 @@ msgstr "%s: sektion %s.%d saknas" msgid "section #%u is missing or corrupted" msgstr "saknad eller trasig object.d" +# "Encapsulated Lazy Records of Named Declarations" är ett formatnamn, ungefär +# som ELF (Executable and Linkable Format) #: cp/module.cc:1770 #, gcc-internal-format msgid "not Encapsulated Lazy Records of Named Declarations" -msgstr "" +msgstr "inte Encapsulated Lazy Records of Named Declarations" #: cp/module.cc:1785 #, fuzzy, gcc-internal-format @@ -55535,7 +55516,7 @@ msgstr "mall-id för typ förväntades" #: cp/module.cc:1794 #, gcc-internal-format msgid "encapsulation is malformed" -msgstr "" +msgstr "inkapslingen är felgjord" #: cp/module.cc:11083 #, fuzzy, gcc-internal-format @@ -55576,17 +55557,17 @@ msgstr " mallargument %qE stämmer inte med %qE" #: cp/module.cc:12171 #, gcc-internal-format msgid "additional enumerators beginning with %qD" -msgstr "" +msgstr "ytterligare uppräknare som börjar med %qD" #: cp/module.cc:12175 #, gcc-internal-format msgid "enumeration range differs" -msgstr "" +msgstr "uppräkningsintevrallen skiljer" #: cp/module.cc:13294 #, gcc-internal-format msgid "%q#D references internal linkage entity %q#D" -msgstr "" +msgstr "%q#D refererar entiteten %q#D med intern länkning" #: cp/module.cc:13863 #, fuzzy, gcc-internal-format @@ -55598,7 +55579,7 @@ msgstr "rekursiv expansion" #: cp/module.cc:13882 #, gcc-internal-format msgid "cannot import module in its own purview" -msgstr "" +msgstr "det gÃ¥r inte att importera en modul i sin egen räckvidd" #: cp/module.cc:13883 cp/module.cc:18965 #, fuzzy, gcc-internal-format @@ -55615,17 +55596,17 @@ msgstr "typkonvertering frÃ¥n %qT är inte tillÃ¥tet" #: cp/module.cc:14234 #, gcc-internal-format msgid "import %qs has CRC mismatch" -msgstr "" +msgstr "import %qs har CRC som inte stämmer" #: cp/module.cc:15933 #, gcc-internal-format msgid "unable to represent further imported source locations" -msgstr "" +msgstr "kan inte representera ytterligare importerade källplatser" #: cp/module.cc:16846 #, gcc-internal-format msgid "not exporting %<#define %E%> as it is a keyword" -msgstr "" +msgstr "exporterar inte %<#define %E%> eftersom det är ett nyckelord" #: cp/module.cc:17083 #, fuzzy, gcc-internal-format @@ -55642,12 +55623,12 @@ msgstr " inkonsistent härledning av parameterpaket med %qT och %qT" #: cp/module.cc:17116 #, gcc-internal-format msgid "%<#undef %E%>" -msgstr "" +msgstr "%<#undef %E%>" #: cp/module.cc:17118 #, gcc-internal-format msgid "%<#define %s%>" -msgstr "" +msgstr "%<#define %s%>" #: cp/module.cc:17348 #, fuzzy, gcc-internal-format @@ -55676,27 +55657,27 @@ msgstr "nÃ¥gon %qs-hämtare finns inte" #: cp/module.cc:17428 #, gcc-internal-format msgid "header module expected, module %qs found" -msgstr "" +msgstr "huvudmodul förväntades, modul %qs fanns" #: cp/module.cc:17429 #, gcc-internal-format msgid "module %qs expected, header module found" -msgstr "" +msgstr "modul %qs förväntades, huvudmodul fanns" #: cp/module.cc:17444 #, gcc-internal-format msgid "module %qs CRC mismatch" -msgstr "" +msgstr "modul %qs har CRC som inte stämmer" #: cp/module.cc:17458 #, gcc-internal-format msgid "target & host is %qs:%qs, expected %qs:%qs" -msgstr "" +msgstr "mÃ¥l & värd är %qs:%qs, %qs:%qs förväntades" #: cp/module.cc:17470 #, gcc-internal-format msgid "language dialect differs %qs, expected %qs" -msgstr "" +msgstr "sprÃ¥kdialekten skiljer %qs, %qs förväntades" #: cp/module.cc:17486 #, fuzzy, gcc-internal-format @@ -55731,48 +55712,47 @@ msgstr "misslyckades att skapa en avbildningskomponent â€%sâ€" #: cp/module.cc:18172 #, gcc-internal-format msgid "consider using %<-fno-module-lazy%>, increasing %<-param-lazy-modules=%u%> value, or increasing the per-process file descriptor limit" -msgstr "" +msgstr "överväg att använda %<-fno-module-lazy%>, att öka värdet pÃ¥ %<-param-lazy-modules=%u%> eller att öka gränsen pÃ¥ beskrivare per process" #: cp/module.cc:18177 #, gcc-internal-format msgid "imports must be built before being imported" -msgstr "" +msgstr "importer mÃ¥ste byggas före de importeras" #: cp/module.cc:18180 #, gcc-internal-format msgid "returning to the gate for a mechanical issue" -msgstr "" +msgstr "Ã¥tervänder till grinden för ett mekaniskt problem" #: cp/module.cc:18670 -#, fuzzy, gcc-internal-format -#| msgid "evaluating %qs" +#, gcc-internal-format msgid "reading CMI %qs" -msgstr "beräknar %qs" +msgstr "läser CMI %qs" #: cp/module.cc:18814 #, gcc-internal-format msgid "failed to load binding %<%E%s%E%>" -msgstr "" +msgstr "misslyckades att ladda bindningen %<%E%s%E%>" #: cp/module.cc:18815 #, gcc-internal-format msgid "failed to load binding %<%E%s%E@%s%>" -msgstr "" +msgstr "misslyckades att ladda bindningen %<%E%s%E@%s%>" #: cp/module.cc:18822 #, gcc-internal-format msgid "during load of binding %<%E%s%E%>" -msgstr "" +msgstr "under laddning av bindningen %<%E%s%E%>" #: cp/module.cc:18823 #, gcc-internal-format msgid "during load of binding %<%E%s%E@%s%>" -msgstr "" +msgstr "under laddning av bindningen %<%E%s%E@%s%>" #: cp/module.cc:18881 #, gcc-internal-format msgid "failed to load pendings for %<%E%s%E%>" -msgstr "" +msgstr "misslyckades att ladda väntande för %<%E%s%E%>" #: cp/module.cc:18885 #, fuzzy, gcc-internal-format @@ -55790,7 +55770,7 @@ msgstr "okänt alternativ till %<%s=%s%>" #: cp/module.cc:18930 #, gcc-internal-format msgid "import of named module %qs inside language-linkage block" -msgstr "" +msgstr "import av den namngivna modulen %qs inuti sprÃ¥klänkningsblock" #: cp/module.cc:18960 #, fuzzy, gcc-internal-format @@ -55831,7 +55811,7 @@ msgstr "Notera #include-direktiv översatta till importdeklarationer." #: cp/module.cc:19215 #, gcc-internal-format msgid "include %qs processed textually" -msgstr "" +msgstr "inkluderingen %qs bearbetad textuellt" #: cp/module.cc:19572 #, fuzzy, gcc-internal-format @@ -55848,12 +55828,12 @@ msgstr "Aktivera traditionell preprocessning." #: cp/module.cc:19586 #, gcc-internal-format msgid "macro debug output may be incomplete with modules" -msgstr "" +msgstr "makrofelsökningsutdata kan vara ofullständig med moduler" #: cp/module.cc:19587 #, gcc-internal-format msgid "module dependencies require preprocessing" -msgstr "" +msgstr "modulberoenden kräver preprocessning" #: cp/module.cc:19589 #, fuzzy, gcc-internal-format @@ -55876,7 +55856,7 @@ msgstr "felaktig klick i %qs" #: cp/module.cc:19829 #, gcc-internal-format msgid "%<-fmodule-only%> used for non-interface" -msgstr "" +msgstr "%<-fmodule-only%> använd för annat än gränssnitt" #: cp/module.cc:19869 #, fuzzy, gcc-internal-format @@ -56511,7 +56491,7 @@ msgstr "inkonsistenta användardefinierade litteralsuffix %qD och %qD i strängl #: cp/parser.cc:4451 #, gcc-internal-format msgid "concatenation of string literals with conflicting encoding prefixes" -msgstr "" +msgstr "sammanslagning av strängliteraler med motstridiga kodningsprefix" #: cp/parser.cc:4618 #, gcc-internal-format @@ -56641,7 +56621,7 @@ msgstr "id-uttryck förväntades" #: cp/parser.cc:6266 #, gcc-internal-format msgid "expected %qs keyword before dependent template name" -msgstr "" +msgstr "nyckelordet %qs förväntades före ett beroende mallnamn" #: cp/parser.cc:6393 #, gcc-internal-format @@ -56994,32 +56974,32 @@ msgstr "%<constexpr%> lambda är endast tillgängligt med %<-std=c++17%> eller % #: cp/parser.cc:11865 cp/parser.cc:12004 cp/parser.cc:45683 #, gcc-internal-format msgid "mixing OpenMP directives with attribute and pragma syntax on the same statement" -msgstr "" +msgstr "OpenMP-direktiv blandas med attribut- och pragma-syntax pÃ¥ pÃ¥ samma sats" #: cp/parser.cc:11891 cp/parser.cc:45665 #, gcc-internal-format msgid "unknown OpenMP directive name in %<omp::directive%> attribute argument" -msgstr "" +msgstr "okänt OpenMP-direktvnamn i attributargumentet %<omp::directive%>" #: cp/parser.cc:11973 #, gcc-internal-format msgid "OpenMP construct among %<omp::directive%> attributes requires all %<omp::directive%> attributes on the same statement to be in the same %<omp::sequence%>" -msgstr "" +msgstr "OpenMP-konstruktion bland %<omp::directive%>-attribut kräver att alla %<omp::directive%>-attribut pÃ¥ samma sats är i samma %<omp::sequence%>" #: cp/parser.cc:11981 #, gcc-internal-format msgid "multiple OpenMP standalone directives among %<omp::directive%> attributes must be all within the same %<omp::sequence%>" -msgstr "" +msgstr "flera fristÃ¥ende OpenMP-direktiv bland %<omp::directive%>-attribut mÃ¥ste alla vara inom samma %<omp::sequence%>" #: cp/parser.cc:11993 #, gcc-internal-format msgid "standalone OpenMP directives in %<omp::directive%> attribute can only appear on an empty statement" -msgstr "" +msgstr "fristÃ¥ende OpenMP-direktiv i attributet %<omp::directive%> fÃ¥r bara förekomma pÃ¥ en tom sats" #: cp/parser.cc:12113 #, gcc-internal-format msgid "mixing OpenMP directives with attribute and pragma syntax on the same declaration" -msgstr "" +msgstr "OpenMP-direktiv blandas med attribut- och pragma-syntax pÃ¥ samma deklaration" #: cp/parser.cc:12536 cp/parser.cc:12737 #, gcc-internal-format @@ -57065,7 +57045,7 @@ msgstr "%<if constexpr%> är endast tillgängligt med %<-std=c++17%> eller %<-st #: cp/parser.cc:13012 cp/parser.cc:13047 #, gcc-internal-format msgid "%<if consteval%> requires compound statement" -msgstr "" +msgstr "%<if consteval%> kräver en sammansatt sats" #: cp/parser.cc:13089 #, gcc-internal-format @@ -57342,12 +57322,12 @@ msgstr "typspecificerare är ogiltig i lambda" #: cp/parser.cc:15977 #, gcc-internal-format msgid "standard attributes in middle of decl-specifiers" -msgstr "" +msgstr "standardattribut i mitten av decl-specificerare" #: cp/parser.cc:15979 #, gcc-internal-format msgid "standard attributes must precede the decl-specifiers to apply to the declaration, or follow them to apply to the type" -msgstr "" +msgstr "standardattribut mÃ¥ste föregÃ¥ decl-specificerarna för att gälla fr deklarationen, eller följa dem för att gälla för typen" #: cp/parser.cc:15994 #, gcc-internal-format @@ -58386,7 +58366,7 @@ msgstr "ytterligare %<requires%> saknas för att inleda ett requires-uttryck" #: cp/parser.cc:30152 #, gcc-internal-format msgid "testing if a concept-id is a valid expression; add %<requires%> to check satisfaction" -msgstr "" +msgstr "testar om ett koncept-id är ett giltigt uttryck; lägg till %<requires%> för att kontrollera uppfyllnad" #: cp/parser.cc:30290 #, gcc-internal-format @@ -58831,7 +58811,7 @@ msgstr "initiering i parenteser är inte tillÃ¥tet i en OpenMP-%<for%>-slinga" #: cp/parser.cc:42258 #, gcc-internal-format msgid "%<[[omp::directive(%s)]]%> must be the only specified attribute on a statement" -msgstr "" +msgstr "%<[[omp::directive(%s)]]%> mÃ¥ste vara det enda angivna attributet pÃ¥ en sats" #: cp/parser.cc:42517 #, gcc-internal-format @@ -58856,17 +58836,17 @@ msgstr "%<#pragma omp declare %s%> följt av %<#pragma omp declare %s%>" #: cp/parser.cc:45674 #, gcc-internal-format msgid "OpenMP directive other than %<declare simd%> or %<declare variant%> appertains to a declaration" -msgstr "" +msgstr "OpenMP-direktiv andra än %<declare simd%> eller %<declare variant%> hör till en deklaration" #: cp/parser.cc:45953 #, gcc-internal-format msgid "%<declare target%> in attribute syntax terminated with %<end declare target%> in pragma syntax" -msgstr "" +msgstr "%<declare target%> i attrbutsyntax som avslutas med %<end declare target%> i pragma-syntax" #: cp/parser.cc:45957 #, gcc-internal-format msgid "%<declare target%> in pragma syntax terminated with %<end declare target%> in attribute syntax" -msgstr "" +msgstr "%<declare target%> i pragma-syntax avslutat med %<end declare target%> i attributsyntax" #: cp/parser.cc:46063 #, gcc-internal-format @@ -61028,17 +61008,17 @@ msgstr "%<decltype%> kan inte lösa upp adressen till en överlagrad funktion" #: cp/semantics.cc:11501 #, gcc-internal-format msgid "%<__builtin_is_pointer_interconvertible_with_class%> needs a single argument" -msgstr "" +msgstr "%<__builtin_is_pointer_interconvertible_with_class%> behöver ett ensamt argument" #: cp/semantics.cc:11510 #, gcc-internal-format msgid "%<__builtin_is_pointer_interconvertible_with_class%> argument is not pointer to member" -msgstr "" +msgstr "argumentet till %<__builtin_is_pointer_interconvertible_with_class%> är inte en pekare till en medlem" #: cp/semantics.cc:11681 #, gcc-internal-format msgid "%<__builtin_is_corresponding_member%> not well defined for anonymous unions" -msgstr "" +msgstr "%<__builtin_is_corresponding_member%> är inte väldefinierat för anonyma unioner" #: cp/semantics.cc:11705 #, fuzzy, gcc-internal-format @@ -61049,7 +61029,7 @@ msgstr "%<__builtin_next_arg%> anropad utan argument" #: cp/semantics.cc:11716 #, gcc-internal-format msgid "%<__builtin_is_corresponding_member%> argument is not pointer to member" -msgstr "" +msgstr "argumentet till %<__builtin_is_corresponding_member%> är inte en pekare till en medlem" #: cp/semantics.cc:12194 #, gcc-internal-format @@ -61594,7 +61574,7 @@ msgstr "adressen till %qD kommer aldrig vara NULL" #: cp/typeck.cc:4749 #, gcc-internal-format msgid "comparing the result of pointer addition %qE and NULL" -msgstr "" +msgstr "jämför resultatet av pekaraddition %qE och NULL" #: cp/typeck.cc:4763 #, gcc-internal-format @@ -62568,12 +62548,12 @@ msgstr "adressen till %qD kommer aldrig vara NULL" #: d/d-codegen.cc:2132 #, gcc-internal-format msgid "need %<this%> to access member %qE" -msgstr "" +msgstr "behöver %<this%> för att komma Ã¥t medlemmen %qE" #: d/d-codegen.cc:2286 #, gcc-internal-format msgid "tried to perform floating-point modulo division on %qT" -msgstr "" +msgstr "försökte utföra flyttalsmodulodivision pÃ¥ %qT" #: d/d-codegen.cc:2337 #, fuzzy, gcc-internal-format @@ -62678,12 +62658,12 @@ msgstr "ogiltigt argument till flaggan %<-falign-%s%>: %qs" #: d/d-lang.cc:1032 #, gcc-internal-format msgid "%<-fonly=%> argument is different from first input file name" -msgstr "" +msgstr "argumentet till %<-fonly=%> skiljer sig frÃ¥n det första indatafilnamnet" #: d/d-lang.cc:1209 #, gcc-internal-format msgid "unable to resolve forward reference in definition" -msgstr "" +msgstr "kan inte slÃ¥ upp en framÃ¥treferens i en definition" #: d/d-lang.cc:1326 #, fuzzy, gcc-internal-format @@ -62718,7 +62698,7 @@ msgstr "%s stödjs inte pÃ¥ denna mÃ¥larkitektur" #: d/d-target.cc:245 #, gcc-internal-format msgid "cannot represent built-in %<va_list%> type in D" -msgstr "" +msgstr "kan inte representera inbyggd %<va_list%>-typ i D" #: d/decl.cc:259 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -62729,7 +62709,7 @@ msgstr "Inbyggd inte implementerad" #: d/decl.cc:366 d/decl.cc:481 d/decl.cc:555 d/decl.cc:598 d/decl.cc:637 #, gcc-internal-format msgid "had semantic errors when compiling" -msgstr "" +msgstr "hade semantiska fel vid kompileringen" #: d/decl.cc:453 #, fuzzy, gcc-internal-format @@ -62740,18 +62720,17 @@ msgstr "ogiltigt användning av %qD" #: d/decl.cc:455 #, gcc-internal-format msgid "is hidden by %qs" -msgstr "" +msgstr "döljs av %qs" #: d/decl.cc:458 #, gcc-internal-format msgid "use %<alias %s = %s.%s;%> to introduce base class overload set" -msgstr "" +msgstr "använd %<alias %s = %s.%s;%> för att introducera basklassöverlagringsmängd" #: d/decl.cc:688 -#, fuzzy, gcc-internal-format -#| msgid "size of array is too large" +#, gcc-internal-format msgid "size is too large" -msgstr "storleken pÃ¥ vektorn är för stor" +msgstr "storleken är för stor" #: d/decl.cc:1217 #, fuzzy, gcc-internal-format @@ -62762,7 +62741,7 @@ msgstr "anropet behöver %<ifunc%>, som inte stödjs av detta mÃ¥l" #: d/decl.cc:1600 #, gcc-internal-format msgid "mismatch between declaration %qE size (%wd) and its initializer size (%wd)" -msgstr "" +msgstr "saknad överensstämmelse mellan storleken pÃ¥ deklarationen %qE (%wd) och dess initierarstorlek (%wd)" #: d/decl.cc:1892 #, fuzzy, gcc-internal-format @@ -62798,7 +62777,7 @@ msgstr "%qD är inte en pekarvariabel" #: d/expr.cc:1799 d/expr.cc:2168 #, gcc-internal-format msgid "need %<this%> to access member %qs" -msgstr "" +msgstr "behöver %<this%> för att komma Ã¥t medlemmen %qs" #: d/expr.cc:1875 #, fuzzy, gcc-internal-format @@ -62881,7 +62860,7 @@ msgstr "det gÃ¥r inte att ärva frÃ¥n en slutlig klass %s" #: d/toir.cc:1166 #, gcc-internal-format msgid "cannot throw COM objects" -msgstr "" +msgstr "det gÃ¥r inte att kasta COM-objekt" #: d/toir.cc:1299 #, fuzzy, gcc-internal-format @@ -62892,7 +62871,7 @@ msgstr "nakna assemblerfunktioner med kontrakt stödjs inte" #: d/typeinfo.cc:1067 #, gcc-internal-format, gfc-internal-format msgid "toHash() must be declared as extern (D) size_t toHash() const nothrow @safe, not %s" -msgstr "" +msgstr "toHash() mÃ¥ste deklareras som extern (D) size_t toHash() const nothrow @safe, inte %s" #: d/typeinfo.cc:1411 #, fuzzy, gcc-internal-format @@ -64844,7 +64823,7 @@ msgstr "Teckenargument %qs vid %L mÃ¥ste ha längden 1 eftersom proceduren %qs à #: fortran/decl.cc:1639 #, gcc-internal-format msgid "Character dummy argument %qs at %L must be of constant length of one or assumed length, unless it has assumed shape or assumed rank, as procedure %qs has the BIND(C) attribute" -msgstr "" +msgstr "Teckenatrappargument %qs vid %L mÃ¥ste ha konstant längd pÃ¥ ett eller antagen längd, om inte den har antagen antagen form eller antagen ordning, eftersom proceduren %qs har attributet BIND(C)" #: fortran/decl.cc:1657 #, gcc-internal-format @@ -67102,7 +67081,7 @@ msgstr "NAME=-specificerare vid %C skall vara ett konstant uttryck" #: fortran/expr.cc:4398 #, gcc-internal-format, gfc-internal-format msgid "Substring starting and ending points of target specification at %L must be constant expressions" -msgstr "" +msgstr "Substrängens star- och slutpunkter i mÃ¥lspecifikationen vid %L mÃ¥ste vara konstanta uttryck" #: fortran/expr.cc:4414 #, gcc-internal-format, gfc-internal-format @@ -70509,7 +70488,7 @@ msgstr "INCLUSIVE- eller EXCLUSIVE-klausul förväntades vid %C" #: fortran/openmp.cc:1661 #, gcc-internal-format, gfc-internal-format msgid "Expected TEAMS, PARALLEL or THREAD as binding in BIND at %C" -msgstr "" +msgstr "TEAMS, PARALLEL eller THREAD förväntades som bindning i BIND vid %C" #: fortran/openmp.cc:1692 #, gcc-internal-format, gfc-internal-format @@ -70519,7 +70498,7 @@ msgstr "COLLAPSE-klausulargument är inte ett konstant positivt heltal vid %C" #: fortran/openmp.cc:1771 #, gcc-internal-format, gfc-internal-format msgid "Expected ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, NONE or DEFAULT at %C" -msgstr "" +msgstr "ALLOC, TO, FROM, TOFROM, FIRSTPRIVATE, NONE eller DEFAULT förväntades vid %C" #: fortran/openmp.cc:1791 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -70530,12 +70509,12 @@ msgstr "AQC_REL, RELEASE eller ACQUIRE förväntades vid %C" #: fortran/openmp.cc:1820 #, gcc-internal-format, gfc-internal-format msgid "DEFAULTMAP at %C but prior DEFAULTMAP with unspecified category" -msgstr "" +msgstr "DEFAULTMAP vid %C men före DEFAULTMAP med ospecificerad kategori" #: fortran/openmp.cc:1823 #, gcc-internal-format, gfc-internal-format msgid "DEFAULTMAP at %C but prior DEFAULTMAP for category %s" -msgstr "" +msgstr "DEFAULTMAP vid %C men före DEFAULTMAP för kategorin %s" #: fortran/openmp.cc:1859 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -70552,12 +70531,12 @@ msgstr "SEQ_CST, ACQ_REL eller RELAXED förväntades för ATOMIC_DEFAULT_MEM_ORD #: fortran/openmp.cc:1902 #, gcc-internal-format, gfc-internal-format msgid "ITERATOR may not be combined with SOURCE at %C" -msgstr "" +msgstr "ITERATOR fÃ¥r inte kombineras med SOURCE vid %C" #: fortran/openmp.cc:1914 #, gcc-internal-format, gfc-internal-format msgid "ITERATOR may not be combined with SINK at %C" -msgstr "" +msgstr "ITERATOR fÃ¥r inte kombineras med SINK vid %C" #: fortran/openmp.cc:1971 fortran/openmp.cc:1999 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -70568,7 +70547,7 @@ msgstr "heltalsuttryck förväntades" #: fortran/openmp.cc:1980 #, gcc-internal-format msgid "%<ancestor%> device modifier not preceded by %<requires%> directive with %<reverse_offload%> clause at %C" -msgstr "" +msgstr "%<ancestor%>-enhetsmodifierare föregÃ¥s inte av direktivet %<requires%> med en %<reverse_offload%> klausul vid %C" #: fortran/openmp.cc:1992 #, fuzzy, gcc-internal-format @@ -70579,7 +70558,7 @@ msgstr "%<linear%>-klausulens steguttryck mÃ¥ste vara heltal" #: fortran/openmp.cc:2005 #, gcc-internal-format msgid "Expected integer expression or a single device-modifier %<device_num%> or %<ancestor%> at %C" -msgstr "" +msgstr "Heltalsuttryck eller en ensam enhetsmodifierare %<device_num%> eller %<ancestor%> förväntades vid %C" #: fortran/openmp.cc:2035 #, gcc-internal-format, gfc-internal-format @@ -70607,7 +70586,7 @@ msgstr "för mÃ¥nga %<if%>-klausuler med %qs-modifierare" #: fortran/openmp.cc:2555 #, gcc-internal-format msgid "Expected ORDER(CONCURRENT) at %C with optional %<reproducible%> or %<unconstrained%> modifier" -msgstr "" +msgstr "ORDER(CONCURRENT) vid %C förväntades med en frivillig modifierare %<reproducible%> eller %<unconstrained%>" #: fortran/openmp.cc:2580 #, gcc-internal-format, gfc-internal-format @@ -70725,7 +70704,7 @@ msgstr "%<(%> förväntades vid %C" #: fortran/openmp.cc:3781 #, gcc-internal-format msgid "Expected IN, OUT, INOUT, MUTEXINOUTSET followed by %<)%> at %C" -msgstr "" +msgstr "IN, OUT, INOUT, MUTEXINOUTSET förväntades följt av %<)%> vid %C" #: fortran/openmp.cc:3799 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -70736,12 +70715,12 @@ msgstr "INCLUSIVE- eller EXCLUSIVE-klausul förväntades vid %C" #: fortran/openmp.cc:3807 #, gcc-internal-format, gfc-internal-format msgid "DEPEND clause at %L of OMP DEPOBJ construct shall not have dependence-type SOURCE, SINK or DEPOBJ" -msgstr "" +msgstr "DEPEND-klausulen vid %L av OMP DEPOBJ-konstruktion skall inte ha beroendetypen SOURCE, SINK eller DEPOBJ" #: fortran/openmp.cc:3815 #, gcc-internal-format, gfc-internal-format msgid "DEPEND clause at %L of OMP DEPOBJ construct shall have only a single locator" -msgstr "" +msgstr "DEPEND-klausulen vid %L av OMP DEPOBJ-konstruktionen skall bara ha en ensam lokaliserare" #: fortran/openmp.cc:3941 fortran/openmp.cc:7561 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -70758,7 +70737,7 @@ msgstr "Konstant uttryck krävs vid %C" #: fortran/openmp.cc:3954 #, gcc-internal-format, gfc-internal-format msgid "$OMP ERROR encountered at %L: %s" -msgstr "" +msgstr "$OMP ERROR pÃ¥träffat vid %L: %s" #: fortran/openmp.cc:3973 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -71311,7 +71290,7 @@ msgstr "Schemaläggningsmodifieraren NONMONOTONIC angiven med en klausul ORDERED #: fortran/openmp.cc:6494 #, gcc-internal-format, gfc-internal-format msgid "DEPOBJ in DEPOBJ construct at %L shall be a scalar integer of OMP_DEPEND_KIND kind" -msgstr "" +msgstr "DEPOBJ i DEPOBJ-konstruktion vid %L skall vara ett skalärt heltal av sorten OMP_DEPEND_KIND" #: fortran/openmp.cc:6509 #, gcc-internal-format @@ -71353,13 +71332,12 @@ msgstr "Symbolen %qs finns i flera fall vid %L" #: fortran/openmp.cc:6655 #, gcc-internal-format, gfc-internal-format msgid "Expected integer expression of the 'omp_allocator_handle_kind' kind at %L" -msgstr "" +msgstr "Ett heltalsuttryck av sorten â€omp_allocator_handle_kind†förväntades vid %L" #: fortran/openmp.cc:6673 -#, fuzzy, gcc-internal-format -#| msgid "%qE appears more than once in %<allocate%> clauses" +#, gcc-internal-format msgid "%qs appears more than once in %<allocate%> clauses at %L" -msgstr "%qE förekommer mer än en gÃ¥ng i %<allocate%>-klausuler" +msgstr "%qs förekommer mer än en gÃ¥ng i %<allocate%>-klausuler vid %L" #: fortran/openmp.cc:6715 fortran/trans-openmp.cc:6358 #, fuzzy, gcc-internal-format @@ -71469,12 +71447,12 @@ msgstr "Endast SOURCE- eller SINK-beroendetyper är tillÃ¥tna med ORDERED-direkt #: fortran/openmp.cc:6907 #, gcc-internal-format msgid "Locator %qs at %L in DEPEND clause of depobj type shall be a scalar integer of OMP_DEPEND_KIND kind" -msgstr "" +msgstr "Lokaliseraren %qs vid %L i DEPEND-klausul av typen depobj skall vara ett skalärt heltal av sorten OMP_DEPEND_KIND" #: fortran/openmp.cc:6918 #, gcc-internal-format, gfc-internal-format msgid "Locator at %L in DEPEND clause of depobj type shall be a scalar integer of OMP_DEPEND_KIND kind" -msgstr "" +msgstr "Lokaliseraren vid %L i DEPEND-klausul av typen depobj skall vara ett skalärt heltal av sorten OMP_DEPEND_KIND" #: fortran/openmp.cc:6962 #, gcc-internal-format, gfc-internal-format @@ -71668,22 +71646,22 @@ msgstr "en %<DETACH%>-klausul vid %L fÃ¥r inte användas tillsammans med en %<ME #: fortran/openmp.cc:7736 #, gcc-internal-format, gfc-internal-format msgid "Expected IF at %L in atomic compare capture" -msgstr "" +msgstr "IF förväntades vid %L i atomic compare capture" #: fortran/openmp.cc:7744 #, gcc-internal-format, gfc-internal-format msgid "Expected ELSE at %L in atomic compare capture" -msgstr "" +msgstr "ELSE förväntades vid %L i atomic compare capture" #: fortran/openmp.cc:7856 #, gcc-internal-format msgid "Expected %<==%>, %<.EQ.%> or %<.EQV.%> atomic comparison expression at %L" -msgstr "" +msgstr "%<==%>, %<.EQ.%> eller %<.EQV.%> förväntades i atomärt jämförelseuttryck vid %L" #: fortran/openmp.cc:7862 #, gcc-internal-format, gfc-internal-format msgid "Expected scalar intrinsic variable at %L in atomic comparison" -msgstr "" +msgstr "En skalär inbyggd variabel förväntades vid %L i atomär jämförelse" #: fortran/openmp.cc:7870 #, fuzzy, gcc-internal-format, gfc-internal-format @@ -71749,7 +71727,7 @@ msgstr "uttr i !$OMP ATOMIC WRITE-tilldelning var = uttr mÃ¥ste vara skalär och #: fortran/openmp.cc:7988 #, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC UPDATE at %L with FAIL clause requiries either the COMPARE clause or using the intrinsic MIN/MAX procedure" -msgstr "" +msgstr "!$OMP ATOMIC UPDATE vid %L med en FAIL-klausul behöver antingen klausulen COMPARE eller användning av den inbyggda proceduren MIN/MAX" #: fortran/openmp.cc:8015 #, gcc-internal-format, gfc-internal-format @@ -73536,7 +73514,7 @@ msgstr "Kan inte slÃ¥ upp den specifika funktionen %qs vid %L" #: fortran/resolve.cc:2984 #, gcc-internal-format msgid "Missing explicit declaration with EXTERNAL attribute for symbol %qs at %L" -msgstr "" +msgstr "Saknad explicit deklaration med attributet EXTERNAL för symbolen %qs vid %L" #: fortran/resolve.cc:3016 #, gcc-internal-format @@ -75750,7 +75728,7 @@ msgstr "Ogiltigt preprocessordirektiv" #: fortran/scanner.cc:2551 #, gcc-internal-format msgid "File %qs is being included recursively" -msgstr "" +msgstr "Filen %qs inkluderas rekursivt" #: fortran/scanner.cc:2563 #, gcc-internal-format @@ -76049,7 +76027,7 @@ msgstr "Beräkningen av en sträng längre än 2**28 vid %L fördröjd till kör #: fortran/simplify.cc:6876 #, gcc-internal-format, gfc-internal-format msgid "The SHAPE array for the RESHAPE intrinsic at %L has a negative value %d for dimension %d" -msgstr "" +msgstr "SHAPE-vektorn för den inbyggda RESHAPE vid %L har ett negativt värde %d som dimension %d" #: fortran/simplify.cc:6900 #, gcc-internal-format, gfc-internal-format @@ -76798,7 +76776,7 @@ msgstr "Felaktig IO-bastyp (%d)" #: fortran/trans-openmp.cc:824 fortran/trans-openmp.cc:1336 #, gcc-internal-format msgid "Sorry, polymorphic arrays not yet supported for firstprivate" -msgstr "" +msgstr "Ledsen, polymorfa vektorer stödjs inte ännu för firstprivate" #: fortran/trans-openmp.cc:1490 #, gcc-internal-format @@ -76978,7 +76956,7 @@ msgstr "gfc_trans_code(): Felaktig satskod" #: go/gofrontend/embed.cc:278 #, gcc-internal-format msgid "invalid embedcfg: not a JSON object" -msgstr "" +msgstr "felaktig embedcfg: omte ett JSON-objekt" #: go/gofrontend/embed.cc:285 #, fuzzy, gcc-internal-format @@ -76989,27 +76967,27 @@ msgstr "ogiltigt uttryck som operand" #: go/gofrontend/embed.cc:290 #, gcc-internal-format msgid "invalid embedcfg: Patterns is not a JSON object" -msgstr "" +msgstr "felaktig embedcfg: Patterns är inte ett JSON-objekt" #: go/gofrontend/embed.cc:297 #, gcc-internal-format msgid "invalid embedcfg: missing Files" -msgstr "" +msgstr "felaktig embedcfg: saknad Files" #: go/gofrontend/embed.cc:302 #, gcc-internal-format msgid "invalid embedcfg: Files is not a JSON object" -msgstr "" +msgstr "felaktig embedcfg: Files är inte ett JSON-objekt" #: go/gofrontend/embed.cc:312 #, gcc-internal-format msgid "invalid embedcfg: Patterns entry is not an array" -msgstr "" +msgstr "felaktig embedcfg: Patterns-posten är inte en vektor" #: go/gofrontend/embed.cc:324 #, gcc-internal-format msgid "invalid embedcfg: duplicate Patterns entry" -msgstr "" +msgstr "felakig embedcfg: dubbla Patterns-poster" #: go/gofrontend/embed.cc:336 #, fuzzy, gcc-internal-format @@ -77020,7 +76998,7 @@ msgstr "argument till attribut %qs är inte en sträng" #: go/gofrontend/embed.cc:353 #, gcc-internal-format msgid "empty file" -msgstr "" +msgstr "tom fil" #: go/gofrontend/embed.cc:391 go/gofrontend/embed.cc:520 #, fuzzy, gcc-internal-format diff --git a/gcc/pointer-query.cc b/gcc/pointer-query.cc index afbcd0a..1c3b732 100644 --- a/gcc/pointer-query.cc +++ b/gcc/pointer-query.cc @@ -959,7 +959,7 @@ void access_ref::add_offset (const offset_int &min, const offset_int &max) (which may be greater than MAX_OBJECT_SIZE). The lower bound is either the sum of the current offset and MIN when abs(MAX) is greater than the former, or zero otherwise. - Zero because then then inverted range includes the negative of + Zero because then the inverted range includes the negative of the lower bound. */ offset_int maxoff = wi::to_offset (TYPE_MAX_VALUE (ptrdiff_type_node)); offrng[1] = maxoff; @@ -765,7 +765,7 @@ classify_insn (rtx x) return CALL_INSN; if (ANY_RETURN_P (x)) return JUMP_INSN; - if (GET_CODE (x) == ASM_OPERANDS && ASM_OPERANDS_LABEL_VEC (x)) + if (GET_CODE (x) == ASM_OPERANDS && ASM_OPERANDS_LABEL_LENGTH (x)) return JUMP_INSN; if (GET_CODE (x) == SET) { @@ -794,7 +794,7 @@ classify_insn (rtx x) if (has_return_p) return JUMP_INSN; if (GET_CODE (XVECEXP (x, 0, 0)) == ASM_OPERANDS - && ASM_OPERANDS_LABEL_VEC (XVECEXP (x, 0, 0))) + && ASM_OPERANDS_LABEL_LENGTH (XVECEXP (x, 0, 0))) return JUMP_INSN; } #ifdef GENERATOR_FILE diff --git a/gcc/simplify-rtx.cc b/gcc/simplify-rtx.cc index 3355b1a..5d4939c 100644 --- a/gcc/simplify-rtx.cc +++ b/gcc/simplify-rtx.cc @@ -1527,7 +1527,7 @@ simplify_context::simplify_unary_operation_1 (rtx_code code, machine_mode mode, if (partial_subreg_p (temp)) { SUBREG_PROMOTED_VAR_P (temp) = 1; - SUBREG_PROMOTED_SET (temp, 1); + SUBREG_PROMOTED_SET (temp, SRP_SIGNED); } return temp; } @@ -1662,7 +1662,7 @@ simplify_context::simplify_unary_operation_1 (rtx_code code, machine_mode mode, if (partial_subreg_p (temp)) { SUBREG_PROMOTED_VAR_P (temp) = 1; - SUBREG_PROMOTED_SET (temp, 0); + SUBREG_PROMOTED_SET (temp, SRP_UNSIGNED); } return temp; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3987bb0..8073258 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,206 @@ +2022-03-09 Joseph Myers <joseph@codesourcery.com> + + * gcc.dg/c11-unproto-1.c, gcc.dg/c11-unproto-2.c: Update comments. + * gcc.dg/c2x-unproto-1.c, gcc.dg/c2x-unproto-2.c: Expect same + results as in C11 mode. Update comments. + +2022-03-09 Harald Anlauf <anlauf@gmx.de> + + PR fortran/104849 + * gfortran.dg/pr104849.f90: New test. + +2022-03-09 Patrick Palka <ppalka@redhat.com> + + PR c++/104823 + * g++.dg/cpp0x/Wnarrowing19.C: New test. + * g++.dg/cpp0x/constexpr-attribute4.C: New file. + +2022-03-09 Patrick Palka <ppalka@redhat.com> + + PR c++/102137 + PR c++/87820 + * g++.dg/cpp0x/explicit15.C: New test. + * g++.dg/cpp1z/class-deduction108.C: New test. + +2022-03-09 Patrick Palka <ppalka@redhat.com> + + PR c++/65396 + * g++.dg/cpp0x/vt-34314.C: Adjust expected location of + "redeclared here" note. + * g++.dg/template/pr92440.C: Likewise. + * g++.old-deja/g++.pt/redecl1.C: Adjust expected location of + "redefinition of default argument" error. + * g++.dg/template/defarg23.C: New test. + * g++.dg/template/defarg23a.C: New test. + +2022-03-09 Richard Biener <rguenther@suse.de> + + PR testsuite/104759 + * gcc.dg/vect/vect-multitypes-12.c: Adjust. + +2022-03-09 Richard Biener <rguenther@suse.de> + + PR middle-end/104786 + * gcc.dg/pr104786.c: New testcase. + +2022-03-09 Tobias Burnus <tobias@codesourcery.com> + + * gfortran.dg/sizeof_6.f90: New test. + +2022-03-09 Jakub Jelinek <jakub@redhat.com> + + PR c/104711 + * c-c++-common/Wshift-negative-value-1.c: Remove + dg-additional-options, instead in target selectors of each diagnostic + check for exact C++ versions where it should be diagnosed. + * c-c++-common/Wshift-negative-value-2.c: Likewise. + * c-c++-common/Wshift-negative-value-3.c: Likewise. + * c-c++-common/Wshift-negative-value-4.c: Likewise. + * c-c++-common/Wshift-negative-value-7.c: New test. + * c-c++-common/Wshift-negative-value-8.c: New test. + * c-c++-common/Wshift-negative-value-9.c: New test. + * c-c++-common/Wshift-negative-value-10.c: New test. + * c-c++-common/Wshift-overflow-1.c: Remove + dg-additional-options, instead in target selectors of each diagnostic + check for exact C++ versions where it should be diagnosed. + * c-c++-common/Wshift-overflow-2.c: Likewise. + * c-c++-common/Wshift-overflow-5.c: Likewise. + * c-c++-common/Wshift-overflow-6.c: Likewise. + * c-c++-common/Wshift-overflow-7.c: Likewise. + * c-c++-common/Wshift-overflow-8.c: New test. + * c-c++-common/Wshift-overflow-9.c: New test. + * c-c++-common/Wshift-overflow-10.c: New test. + * c-c++-common/Wshift-overflow-11.c: New test. + * c-c++-common/Wshift-overflow-12.c: New test. + +2022-03-09 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/104839 + * gcc.c-torture/execute/pr104839.c: New test. + +2022-03-08 Roger Sayle <roger@nextmovesoftware.com> + + PR c++/96440 + * g++.dg/cpp0x/pr96440.C: New test case. + +2022-03-08 Tobias Burnus <tobias@codesourcery.com> + + PR fortran/104126 + * gfortran.dg/null_actual_2.f90: New test. + +2022-03-08 Roger Sayle <roger@nextmovesoftware.com> + + PR c++/96437 + * g++.dg/cpp2a/pr96437.C: New test case. + +2022-03-08 Roger Sayle <roger@nextmovesoftware.com> + + PR c++/96329 + * g++.dg/template/pr96329.C: New test case. + +2022-03-08 Marek Polacek <polacek@redhat.com> + + PR c++/104108 + * g++.dg/cpp0x/alias-decl-74.C: New test. + +2022-03-08 Marek Polacek <polacek@redhat.com> + + * g++.dg/ext/attr-unavailable-9.C: Add dg-error. + +2022-03-08 Harald Anlauf <anlauf@gmx.de> + + PR fortran/104811 + * gfortran.dg/minmaxloc_16.f90: New test. + +2022-03-08 Jakub Jelinek <jakub@redhat.com> + + PR c++/104806 + * g++.dg/spellcheck-pr104806.C: New test. + +2022-03-08 David Malcolm <dmalcolm@redhat.com> + + PR analyzer/99771 + * gcc.dg/analyzer/leak-4.c: New test. + +2022-03-08 Marek Polacek <polacek@redhat.com> + + PR rtl-optimization/104777 + * gcc.dg/torture/tls/pr104777.c: New test. + +2022-03-08 H.J. Lu <hjl.tools@gmail.com> + + PR target/104781 + * gcc.target/i386/eh_return-1.c: Add -mincoming-stack-boundary=4. + * gcc.target/i386/eh_return-2.c: Likewise. + +2022-03-08 Richard Biener <rguenther@suse.de> + + PR tree-optimization/84201 + * gcc.dg/vect/pr84201.c: New testcase. + +2022-03-08 Tamar Christina <tamar.christina@arm.com> + + PR tree-optimization/104755 + * gcc.dg/vect/vect-bic-bitmask-10.c: Disable sparc. + * gcc.dg/vect/vect-bic-bitmask-11.c: Likewise. + * gcc.dg/vect/vect-bic-bitmask-12.c: Likewise. + * gcc.dg/vect/vect-bic-bitmask-2.c: Likewise. + * gcc.dg/vect/vect-bic-bitmask-23.c: Likewise. + * gcc.dg/vect/vect-bic-bitmask-3.c: Likewise. + * gcc.dg/vect/vect-bic-bitmask-4.c: Likewise. + * gcc.dg/vect/vect-bic-bitmask-5.c: Likewise. + * gcc.dg/vect/vect-bic-bitmask-6.c: Likewise. + * gcc.dg/vect/vect-bic-bitmask-8.c: Likewise. + * gcc.dg/vect/vect-bic-bitmask-9.c: Likewise. + +2022-03-08 Richard Biener <rguenther@suse.de> + + PR tree-optimization/104825 + * gcc.dg/torture/pr104825.c: New testcase. + +2022-03-08 liuhongt <hongtao.liu@intel.com> + + * gcc.target/i386/pr100865-8a.c: Adjust testcase. + * gcc.target/i386/pr100865-8c.c: Ditto. + * gcc.target/i386/pr100865-9c.c: Ditto. + +2022-03-07 Tobias Burnus <tobias@codesourcery.com> + + PR fortran/99585 + PR fortran/104430 + * gfortran.dg/class_result_10.f90: New test. + +2022-03-07 David Malcolm <dmalcolm@redhat.com> + + PR analyzer/101983 + * gcc.dg/analyzer/pr101983-main.c: New test. + * gcc.dg/analyzer/pr101983-not-main.c: New test. + +2022-03-07 Martin Liska <mliska@suse.cz> + + PR middle-end/104381 + * gcc.dg/pr104381.c: New test. + +2022-03-07 Richard Biener <rguenther@suse.de> + + PR tree-optimization/104782 + * gcc.dg/vect/pr104782.c: New testcase. + +2022-03-07 Jakub Jelinek <jakub@redhat.com> + + PR target/104775 + * gcc.target/s390/pr104775.c: New test. + +2022-03-07 Jakub Jelinek <jakub@redhat.com> + + PR target/104779 + * gcc.target/i386/pr104779.c: New test. + +2022-03-06 Roger Sayle <roger@nextmovesoftware.com> + + * gcc.dg/lower-subreg-1.c: Update test case. iordi3 is no longer + lowered by the RTL subreg1 pass on ia32 [even with -mno-stv]. + 2022-03-05 Roger Sayle <roger@nextmovesoftware.com> UroÅ¡ Bizjak <ubizjak@gmail.com> diff --git a/gcc/testsuite/c-c++-common/Wshift-negative-value-1.c b/gcc/testsuite/c-c++-common/Wshift-negative-value-1.c index d58d8b9..615020c 100644 --- a/gcc/testsuite/c-c++-common/Wshift-negative-value-1.c +++ b/gcc/testsuite/c-c++-common/Wshift-negative-value-1.c @@ -1,13 +1,12 @@ /* PR c/65179 */ /* { dg-do compile } */ /* { dg-options "-O -Wextra" } */ -/* { dg-additional-options "-std=c++11" { target c++ } } */ enum E { A = 0 << 1, B = 1 << 1, - C = -1 << 1, /* { dg-warning "10:left shift of negative value|not an integer constant" } */ - /* { dg-error "left operand of shift expression" "shift" { target c++ } .-1 } */ + C = -1 << 1, /* { dg-warning "10:left shift of negative value|not an integer constant" "" { target { c || { c++11 && c++17_down } } } } */ + /* { dg-error "left operand of shift expression" "shift" { target { c++11 && c++17_down } } .-1 } */ D = 0 >> 1, E = 1 >> 1, F = -1 >> 1 @@ -23,10 +22,10 @@ left (int x) int r = 0; r += z << x; r += o << x; - r += m << x; /* { dg-warning "10:left shift of negative value" } */ + r += m << x; /* { dg-warning "10:left shift of negative value" "" { target { c || { c++11 && c++17_down } } } } */ r += 0 << x; r += 1 << x; - r += -1 << x; /* { dg-warning "11:left shift of negative value" } */ + r += -1 << x; /* { dg-warning "11:left shift of negative value" "" { target { c || { c++11 && c++17_down } } } } */ r += -1U << x; return r; } diff --git a/gcc/testsuite/c-c++-common/Wshift-negative-value-10.c b/gcc/testsuite/c-c++-common/Wshift-negative-value-10.c new file mode 100644 index 0000000..eee414d --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wshift-negative-value-10.c @@ -0,0 +1,7 @@ +/* PR c/65179 */ +/* { dg-do compile } */ +/* { dg-options "-O -Wshift-negative-value -fwrapv" } */ +/* { dg-additional-options "-std=c++03" { target c++ } } */ +/* { dg-additional-options "-std=c90" { target c } } */ + +#include "Wshift-negative-value-1.c" diff --git a/gcc/testsuite/c-c++-common/Wshift-negative-value-2.c b/gcc/testsuite/c-c++-common/Wshift-negative-value-2.c index 9f435e8..65e3f30 100644 --- a/gcc/testsuite/c-c++-common/Wshift-negative-value-2.c +++ b/gcc/testsuite/c-c++-common/Wshift-negative-value-2.c @@ -1,14 +1,13 @@ /* PR c/65179 */ /* { dg-do compile } */ /* { dg-options "-O -Wshift-negative-value" } */ -/* { dg-additional-options "-std=c++11" { target c++ } } */ enum E { A = 0 << 1, B = 1 << 1, C = -1 << 1, /* { dg-warning "10:left shift of negative value" } */ - /* { dg-error "not an integer constant" "no constant" { target c++ } .-1 } */ - /* { dg-error "left operand of shift expression" "shift" { target c++ } .-2 } */ + /* { dg-error "not an integer constant" "no constant" { target { c++11 && c++17_down } } .-1 } */ + /* { dg-error "left operand of shift expression" "shift" { target { c++11 && c++17_down } } .-2 } */ D = 0 >> 1, E = 1 >> 1, F = -1 >> 1 diff --git a/gcc/testsuite/c-c++-common/Wshift-negative-value-3.c b/gcc/testsuite/c-c++-common/Wshift-negative-value-3.c index 503ca61..402db9d 100644 --- a/gcc/testsuite/c-c++-common/Wshift-negative-value-3.c +++ b/gcc/testsuite/c-c++-common/Wshift-negative-value-3.c @@ -1,14 +1,13 @@ /* PR c/65179 */ /* { dg-do compile } */ /* { dg-options "-O -Wextra -Wno-shift-negative-value" } */ -/* { dg-additional-options "-std=c++11" { target c++ } } */ enum E { A = 0 << 1, B = 1 << 1, C = -1 << 1, - /* { dg-error "not an integer constant" "no constant" { target c++ } .-1 } */ - /* { dg-error "left operand of shift expression" "shift" { target c++ } .-2 } */ + /* { dg-error "not an integer constant" "no constant" { target { c++11 && c++17_down } } .-1 } */ + /* { dg-error "left operand of shift expression" "shift" { target { c++11 && c++17_down } } .-2 } */ D = 0 >> 1, E = 1 >> 1, F = -1 >> 1 diff --git a/gcc/testsuite/c-c++-common/Wshift-negative-value-4.c b/gcc/testsuite/c-c++-common/Wshift-negative-value-4.c index fa7cb4e..a47213d 100644 --- a/gcc/testsuite/c-c++-common/Wshift-negative-value-4.c +++ b/gcc/testsuite/c-c++-common/Wshift-negative-value-4.c @@ -1,14 +1,13 @@ /* PR c/65179 */ /* { dg-do compile } */ /* { dg-options "-O" } */ -/* { dg-additional-options "-std=c++11" { target c++ } } */ enum E { A = 0 << 1, B = 1 << 1, C = -1 << 1, - /* { dg-error "not an integer constant" "no constant" { target c++ } .-1 } */ - /* { dg-error "left operand of shift expression" "shift" { target c++ } .-2 } */ + /* { dg-error "not an integer constant" "no constant" { target { c++11 && c++17_down } } .-1 } */ + /* { dg-error "left operand of shift expression" "shift" { target { c++11 && c++17_down } } .-2 } */ D = 0 >> 1, E = 1 >> 1, F = -1 >> 1 diff --git a/gcc/testsuite/c-c++-common/Wshift-negative-value-7.c b/gcc/testsuite/c-c++-common/Wshift-negative-value-7.c new file mode 100644 index 0000000..f58b0f1 --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wshift-negative-value-7.c @@ -0,0 +1,5 @@ +/* PR c/65179 */ +/* { dg-do compile } */ +/* { dg-options "-O -Wextra -fwrapv" } */ + +#include "Wshift-negative-value-1.c" diff --git a/gcc/testsuite/c-c++-common/Wshift-negative-value-8.c b/gcc/testsuite/c-c++-common/Wshift-negative-value-8.c new file mode 100644 index 0000000..d1e5fe7 --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wshift-negative-value-8.c @@ -0,0 +1,5 @@ +/* PR c/65179 */ +/* { dg-do compile } */ +/* { dg-options "-O -Wshift-negative-value -fwrapv" } */ + +#include "Wshift-negative-value-1.c" diff --git a/gcc/testsuite/c-c++-common/Wshift-negative-value-9.c b/gcc/testsuite/c-c++-common/Wshift-negative-value-9.c new file mode 100644 index 0000000..3243010 --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wshift-negative-value-9.c @@ -0,0 +1,5 @@ +/* PR c/65179 */ +/* { dg-do compile } */ +/* { dg-options "-O -fwrapv" } */ + +#include "Wshift-negative-value-1.c" diff --git a/gcc/testsuite/c-c++-common/Wshift-overflow-1.c b/gcc/testsuite/c-c++-common/Wshift-overflow-1.c index a69f2b83..be5535f 100644 --- a/gcc/testsuite/c-c++-common/Wshift-overflow-1.c +++ b/gcc/testsuite/c-c++-common/Wshift-overflow-1.c @@ -1,7 +1,6 @@ /* PR c++/55095 */ /* { dg-do compile { target int32 } } */ /* { dg-options "-O" } */ -/* { dg-additional-options "-std=c++11" { target c++ } } */ #define INTM1 (sizeof (int) * __CHAR_BIT__ - 1) #define INTM2 (sizeof (int) * __CHAR_BIT__ - 2) @@ -12,16 +11,16 @@ #define LONG_LONG_MIN (-__LONG_LONG_MAX__-1) int i1 = 1 << INTM1; -int i2 = 9 << INTM1; /* { dg-warning "requires 36 bits to represent" } */ -int i3 = 10 << INTM2; /* { dg-warning "requires 35 bits to represent" } */ -int i4 = __INT_MAX__ << 2; /* { dg-warning "requires 34 bits to represent" } */ -int i5 = __INT_MAX__ << INTM1; /* { dg-warning "requires 63 bits to represent" } */ +int i2 = 9 << INTM1; /* { dg-warning "requires 36 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +int i3 = 10 << INTM2; /* { dg-warning "requires 35 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +int i4 = __INT_MAX__ << 2; /* { dg-warning "requires 34 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +int i5 = __INT_MAX__ << INTM1; /* { dg-warning "requires 63 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ int i6 = -1 << INTM1; -int i7 = -9 << INTM1; /* { dg-warning "requires 36 bits to represent" } */ -int i8 = -10 << INTM2; /* { dg-warning "requires 35 bits to represent" } */ -int i9 = -__INT_MAX__ << 2; /* { dg-warning "requires 34 bits to represent" } */ -int i10 = -__INT_MAX__ << INTM1; /* { dg-warning "requires 63 bits to represent" } */ -int i11 = INT_MIN << 1; /* { dg-warning "requires 33 bits to represent" } */ +int i7 = -9 << INTM1; /* { dg-warning "requires 36 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +int i8 = -10 << INTM2; /* { dg-warning "requires 35 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +int i9 = -__INT_MAX__ << 2; /* { dg-warning "requires 34 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +int i10 = -__INT_MAX__ << INTM1; /* { dg-warning "requires 63 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +int i11 = INT_MIN << 1; /* { dg-warning "requires 33 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ int r1 = 1 >> INTM1; int r2 = 9 >> INTM1; @@ -35,29 +34,29 @@ int r9 = -__INT_MAX__ >> 2; int r10 = -__INT_MAX__ >> INTM1; unsigned u1 = 1 << INTM1; -unsigned u2 = 9 << INTM1; /* { dg-warning "requires 36 bits to represent" } */ +unsigned u2 = 9 << INTM1; /* { dg-warning "requires 36 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ unsigned u3 = 2U << INTM1; unsigned u4 = 9U << INTM1; unsigned u5 = 10U << INTM2; long long int l1 = 1LL << LLONGM1; -long long int l2 = 9LL << LLONGM1; /* { dg-warning "requires 68 bits to represent" } */ -long long int l3 = 10LL << LLONGM2; /* { dg-warning "requires 67 bits to represent" } */ -long long int l4 = __LONG_LONG_MAX__ << 2; /* { dg-warning "requires 66 bits to represent" } */ -long long int l5 = __LONG_LONG_MAX__ << LLONGM1; /* { dg-warning "requires 127 bits to represent" } */ +long long int l2 = 9LL << LLONGM1; /* { dg-warning "requires 68 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +long long int l3 = 10LL << LLONGM2; /* { dg-warning "requires 67 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +long long int l4 = __LONG_LONG_MAX__ << 2; /* { dg-warning "requires 66 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +long long int l5 = __LONG_LONG_MAX__ << LLONGM1; /* { dg-warning "requires 127 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ long long int l6 = -1LL << LLONGM1; -long long int l7 = -9LL << LLONGM1; /* { dg-warning "requires 68 bits to represent" } */ -long long int l8 = -10LL << LLONGM2; /* { dg-warning "requires 67 bits to represent" } */ -long long int l9 = -__LONG_LONG_MAX__ << 2; /* { dg-warning "requires 66 bits to represent" } */ -long long int l10 = -__LONG_LONG_MAX__ << LLONGM1; /* { dg-warning "requires 127 bits to represent" } */ -long long int l11 = LONG_LONG_MIN << 1; /* { dg-warning "requires 65 bits to represent" } */ +long long int l7 = -9LL << LLONGM1; /* { dg-warning "requires 68 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +long long int l8 = -10LL << LLONGM2; /* { dg-warning "requires 67 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +long long int l9 = -__LONG_LONG_MAX__ << 2; /* { dg-warning "requires 66 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +long long int l10 = -__LONG_LONG_MAX__ << LLONGM1; /* { dg-warning "requires 127 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ +long long int l11 = LONG_LONG_MIN << 1; /* { dg-warning "requires 65 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ void fn (void) { const int a = 10; const __SIZE_TYPE__ b = INTM1; - int k1 = a << b; /* { dg-warning "requires 36 bits to represent" } */ - int k2 = 10 << b; /* { dg-warning "requires 36 bits to represent" } */ - int k3 = a << INTM1; /* { dg-warning "requires 36 bits to represent" } */ + int k1 = a << b; /* { dg-warning "requires 36 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ + int k2 = 10 << b; /* { dg-warning "requires 36 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ + int k3 = a << INTM1; /* { dg-warning "requires 36 bits to represent" "" { target { c || { c++11 && c++17_down } } } } */ } diff --git a/gcc/testsuite/c-c++-common/Wshift-overflow-10.c b/gcc/testsuite/c-c++-common/Wshift-overflow-10.c new file mode 100644 index 0000000..3efd391 --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wshift-overflow-10.c @@ -0,0 +1,5 @@ +/* PR c++/55095 */ +/* { dg-do compile { target int32 } } */ +/* { dg-options "-O -Wshift-overflow=2 -fwrapv" } */ + +#include "Wshift-overflow-5.c" diff --git a/gcc/testsuite/c-c++-common/Wshift-overflow-11.c b/gcc/testsuite/c-c++-common/Wshift-overflow-11.c new file mode 100644 index 0000000..9063d80 --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wshift-overflow-11.c @@ -0,0 +1,5 @@ +/* PR c++/55095 */ +/* { dg-do compile { target int32 } } */ +/* { dg-options "-Wshift-overflow=1 -fwrapv" } */ + +#include "Wshift-overflow-6.c" diff --git a/gcc/testsuite/c-c++-common/Wshift-overflow-12.c b/gcc/testsuite/c-c++-common/Wshift-overflow-12.c new file mode 100644 index 0000000..5c1c42e --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wshift-overflow-12.c @@ -0,0 +1,5 @@ +/* PR c++/55095 */ +/* { dg-do compile { target int32 } } */ +/* { dg-options "-Wshift-overflow=2 -fwrapv" } */ + +#include "Wshift-overflow-7.c" diff --git a/gcc/testsuite/c-c++-common/Wshift-overflow-2.c b/gcc/testsuite/c-c++-common/Wshift-overflow-2.c index 30fd255..3fc05dc 100644 --- a/gcc/testsuite/c-c++-common/Wshift-overflow-2.c +++ b/gcc/testsuite/c-c++-common/Wshift-overflow-2.c @@ -1,7 +1,6 @@ /* PR c++/55095 */ /* { dg-do compile { target int32 } } */ /* { dg-options "-O -Wno-shift-overflow" } */ -/* { dg-additional-options "-std=c++11" { target c++ } } */ #define INTM1 (sizeof (int) * __CHAR_BIT__ - 1) #define INTM2 (sizeof (int) * __CHAR_BIT__ - 2) diff --git a/gcc/testsuite/c-c++-common/Wshift-overflow-5.c b/gcc/testsuite/c-c++-common/Wshift-overflow-5.c index c9f4643..36d617e 100644 --- a/gcc/testsuite/c-c++-common/Wshift-overflow-5.c +++ b/gcc/testsuite/c-c++-common/Wshift-overflow-5.c @@ -1,11 +1,10 @@ /* PR c++/55095 */ /* { dg-do compile { target int32 } } */ /* { dg-options "-O -Wshift-overflow=2" } */ -/* { dg-additional-options "-std=c++11" { target c++ } } */ #define INTM1 (sizeof (int) * __CHAR_BIT__ - 1) #define LLONGM1 (sizeof (long long) * __CHAR_BIT__ - 1) -int i1 = 1 << INTM1; /* { dg-warning "requires 33 bits to represent" } */ -unsigned u1 = 1 << INTM1; /* { dg-warning "requires 33 bits to represent" } */ -long long int l1 = 1LL << LLONGM1; /* { dg-warning "requires 65 bits to represent" } */ +int i1 = 1 << INTM1; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +unsigned u1 = 1 << INTM1; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +long long int l1 = 1LL << LLONGM1; /* { dg-warning "requires 65 bits to represent" "" { target { c || c++11_down } } } */ diff --git a/gcc/testsuite/c-c++-common/Wshift-overflow-6.c b/gcc/testsuite/c-c++-common/Wshift-overflow-6.c index 64797f4..c514118 100644 --- a/gcc/testsuite/c-c++-common/Wshift-overflow-6.c +++ b/gcc/testsuite/c-c++-common/Wshift-overflow-6.c @@ -1,7 +1,6 @@ /* PR c++/55095 */ /* { dg-do compile { target int32 } } */ /* { dg-options "-Wshift-overflow=1" } */ -/* { dg-additional-options "-std=c++11" { target c++ } } */ int i00 = 0b1 << 31; int i01 = 0b10 << 30; @@ -34,4 +33,4 @@ int i27 = 0b1000000000000000000000000000 << 4; int i28 = 0b10000000000000000000000000000 << 3; int i29 = 0b100000000000000000000000000000 << 2; int i30 = 0b1000000000000000000000000000000 << 1; -int i31 = (int) 0b10000000000000000000000000000000u << 1; /* { dg-warning "requires 33 bits to represent" } */ +int i31 = (int) 0b10000000000000000000000000000000u << 1; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++17_down } } } */ diff --git a/gcc/testsuite/c-c++-common/Wshift-overflow-7.c b/gcc/testsuite/c-c++-common/Wshift-overflow-7.c index ca99d2e..2779a15 100644 --- a/gcc/testsuite/c-c++-common/Wshift-overflow-7.c +++ b/gcc/testsuite/c-c++-common/Wshift-overflow-7.c @@ -1,37 +1,36 @@ /* PR c++/55095 */ /* { dg-do compile { target int32 } } */ /* { dg-options "-Wshift-overflow=2" } */ -/* { dg-additional-options "-std=c++11" { target c++ } } */ -int i00 = 0b1 << 31; /* { dg-warning "requires 33 bits to represent" } */ -int i01 = 0b10 << 30; /* { dg-warning "requires 33 bits to represent" } */ -int i02 = 0b100 << 29; /* { dg-warning "requires 33 bits to represent" } */ -int i03 = 0b1000 << 28; /* { dg-warning "requires 33 bits to represent" } */ -int i04 = 0b10000 << 27; /* { dg-warning "requires 33 bits to represent" } */ -int i05 = 0b100000 << 26; /* { dg-warning "requires 33 bits to represent" } */ -int i06 = 0b1000000 << 25; /* { dg-warning "requires 33 bits to represent" } */ -int i07 = 0b10000000 << 24; /* { dg-warning "requires 33 bits to represent" } */ -int i08 = 0b100000000 << 23; /* { dg-warning "requires 33 bits to represent" } */ -int i09 = 0b1000000000 << 22; /* { dg-warning "requires 33 bits to represent" } */ -int i10 = 0b10000000000 << 21; /* { dg-warning "requires 33 bits to represent" } */ -int i11 = 0b100000000000 << 20; /* { dg-warning "requires 33 bits to represent" } */ -int i12 = 0b1000000000000 << 19; /* { dg-warning "requires 33 bits to represent" } */ -int i13 = 0b10000000000000 << 18; /* { dg-warning "requires 33 bits to represent" } */ -int i14 = 0b100000000000000 << 17; /* { dg-warning "requires 33 bits to represent" } */ -int i15 = 0b1000000000000000 << 16; /* { dg-warning "requires 33 bits to represent" } */ -int i16 = 0b10000000000000000 << 15; /* { dg-warning "requires 33 bits to represent" } */ -int i17 = 0b100000000000000000 << 14; /* { dg-warning "requires 33 bits to represent" } */ -int i18 = 0b1000000000000000000 << 13; /* { dg-warning "requires 33 bits to represent" } */ -int i19 = 0b10000000000000000000 << 12; /* { dg-warning "requires 33 bits to represent" } */ -int i20 = 0b100000000000000000000 << 11; /* { dg-warning "requires 33 bits to represent" } */ -int i21 = 0b1000000000000000000000 << 10; /* { dg-warning "requires 33 bits to represent" } */ -int i22 = 0b10000000000000000000000 << 9; /* { dg-warning "requires 33 bits to represent" } */ -int i23 = 0b100000000000000000000000 << 8; /* { dg-warning "requires 33 bits to represent" } */ -int i24 = 0b1000000000000000000000000 << 7; /* { dg-warning "requires 33 bits to represent" } */ -int i25 = 0b10000000000000000000000000 << 6; /* { dg-warning "requires 33 bits to represent" } */ -int i26 = 0b100000000000000000000000000 << 5; /* { dg-warning "requires 33 bits to represent" } */ -int i27 = 0b1000000000000000000000000000 << 4; /* { dg-warning "requires 33 bits to represent" } */ -int i28 = 0b10000000000000000000000000000 << 3; /* { dg-warning "requires 33 bits to represent" } */ -int i29 = 0b100000000000000000000000000000 << 2; /* { dg-warning "requires 33 bits to represent" } */ -int i30 = 0b1000000000000000000000000000000 << 1; /* { dg-warning "requires 33 bits to represent" } */ -int i31 = (int) 0b10000000000000000000000000000000u << 1; /* { dg-warning "requires 33 bits to represent" } */ +int i00 = 0b1 << 31; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i01 = 0b10 << 30; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i02 = 0b100 << 29; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i03 = 0b1000 << 28; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i04 = 0b10000 << 27; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i05 = 0b100000 << 26; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i06 = 0b1000000 << 25; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i07 = 0b10000000 << 24; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i08 = 0b100000000 << 23; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i09 = 0b1000000000 << 22; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i10 = 0b10000000000 << 21; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i11 = 0b100000000000 << 20; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i12 = 0b1000000000000 << 19; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i13 = 0b10000000000000 << 18; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i14 = 0b100000000000000 << 17; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i15 = 0b1000000000000000 << 16; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i16 = 0b10000000000000000 << 15; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i17 = 0b100000000000000000 << 14; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i18 = 0b1000000000000000000 << 13; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i19 = 0b10000000000000000000 << 12; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i20 = 0b100000000000000000000 << 11; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i21 = 0b1000000000000000000000 << 10; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i22 = 0b10000000000000000000000 << 9; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i23 = 0b100000000000000000000000 << 8; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i24 = 0b1000000000000000000000000 << 7; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i25 = 0b10000000000000000000000000 << 6; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i26 = 0b100000000000000000000000000 << 5; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i27 = 0b1000000000000000000000000000 << 4; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i28 = 0b10000000000000000000000000000 << 3; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i29 = 0b100000000000000000000000000000 << 2; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i30 = 0b1000000000000000000000000000000 << 1; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++11_down } } } */ +int i31 = (int) 0b10000000000000000000000000000000u << 1; /* { dg-warning "requires 33 bits to represent" "" { target { c || c++17_down } } } */ diff --git a/gcc/testsuite/c-c++-common/Wshift-overflow-8.c b/gcc/testsuite/c-c++-common/Wshift-overflow-8.c new file mode 100644 index 0000000..1de228a --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wshift-overflow-8.c @@ -0,0 +1,5 @@ +/* PR c++/55095 */ +/* { dg-do compile { target int32 } } */ +/* { dg-options "-O -fwrapv" } */ + +#include "Wshift-overflow-1.c" diff --git a/gcc/testsuite/c-c++-common/Wshift-overflow-9.c b/gcc/testsuite/c-c++-common/Wshift-overflow-9.c new file mode 100644 index 0000000..7d84bad --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wshift-overflow-9.c @@ -0,0 +1,7 @@ +/* PR c++/55095 */ +/* { dg-do compile { target int32 } } */ +/* { dg-options "-O -Wshift-overflow -fwrapv" } */ +/* { dg-additional-options "-std=gnu90" { target c } } */ +/* { dg-additional-options "-std=c++03" { target c++ } } */ + +#include "Wshift-overflow-1.c" diff --git a/gcc/testsuite/g++.dg/cpp0x/Wnarrowing19.C b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing19.C new file mode 100644 index 0000000..7735701 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/Wnarrowing19.C @@ -0,0 +1,6 @@ +// PR c++/104823 +// { dg-do compile { target c++11 } } + +struct S { S(int); }; +double id(double); +template<class> auto f(double v) -> decltype(S{id(v)}); // { dg-error "narrowing" } diff --git a/gcc/testsuite/g++.dg/cpp0x/alias-decl-74.C b/gcc/testsuite/g++.dg/cpp0x/alias-decl-74.C new file mode 100644 index 0000000..8382d85 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/alias-decl-74.C @@ -0,0 +1,9 @@ +// PR c++/104108 +// { dg-do compile { target c++11 } } + +template<template<const int&> class T> +struct S { + static int m_parameter; + template<template<const int&> class TT> + using U = TT<m_parameter>; +}; diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-attribute4.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-attribute4.C new file mode 100644 index 0000000..c52d58f --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-attribute4.C @@ -0,0 +1,14 @@ +// Verify we correctly handle the non-dependent attribute expression which +// which we used to reject due to double folding. +// { dg-do compile { target { c++11 } } } + +struct A { + constexpr int f() const { return __alignof__(int); }; +}; + +template<class...> +void f() { + int a __attribute__((aligned(A{}.f()))); +} + +template void f(); diff --git a/gcc/testsuite/g++.dg/cpp0x/explicit15.C b/gcc/testsuite/g++.dg/cpp0x/explicit15.C new file mode 100644 index 0000000..58ce97b --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/explicit15.C @@ -0,0 +1,83 @@ +// PR c++/87820 +// { dg-do compile { target c++11 } } + +struct A { + constexpr explicit operator int() const { return 0; } +}; + +template<class T> +void f() { + A a; + T t1 = a; // { dg-error "cannot convert" } + T t2 = {a}; // { dg-error "cannot convert" } + T t3(a); + T t4{a}; + T t5 = T(a); + T t6 = T{a}; + new T(a); + new T{a}; +} + +template<class T> +void g() { + T t; + int n1 = t; // { dg-error "cannot convert" } + int n2 = {t}; // { dg-error "cannot convert" } + int n3(t); + int n4{t}; + int n5 = int(t); + int n6 = int{t}; + new int(t); + new int{t}; +} + +template void f<int>(); +template void g<A>(); + +template<class T> +struct B { + static constexpr A a{}; + static constexpr T t1 = a; // { dg-error "cannot convert" } + static constexpr T t2 = {a}; // { dg-error "cannot convert" } + static constexpr T t4{a}; + static constexpr T t5 = T(a); + static constexpr T t6 = T{a}; +}; + +template<class T> +struct C { + static constexpr T t{}; + static constexpr int n1 = t; // { dg-error "cannot convert" } + static constexpr int n2 = {t}; // { dg-error "cannot convert" } + static constexpr int n4{t}; + static constexpr int n5 = int(t); + static constexpr int n6 = int{t}; +}; + +template struct B<int>; +template struct C<A>; + +#if __cpp_inline_variables +template<class T> +struct D { + static inline A a; + static inline T t1 = a; // { dg-error "cannot convert" "" { target c++17 } } + static inline T t2 = {a}; // { dg-error "cannot convert" "" { target c++17 } } + static inline T t4{a}; + static inline T t5 = T(a); + static inline T t6 = T{a}; +}; + +template<class T> +struct E { + static inline T t; + static inline int n1 = t; // { dg-error "cannot convert" "" { target c++17 } } + static inline int n2 = {t}; // { dg-error "cannot convert" "" { target c++17 } } + static inline int n4{t}; + static inline int n5 = int(t); + static inline int n6 = int{t}; +}; + +template struct D<int>; +template struct E<A>; +#endif diff --git a/gcc/testsuite/g++.dg/cpp0x/pr96440.C b/gcc/testsuite/g++.dg/cpp0x/pr96440.C new file mode 100644 index 0000000..000caf3 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/pr96440.C @@ -0,0 +1,4 @@ +/* { dg-do compile } */ +/* { dg-excess-errors "" } */ + +auto alignas a [[]] [[const]] (); diff --git a/gcc/testsuite/g++.dg/cpp0x/vt-34314.C b/gcc/testsuite/g++.dg/cpp0x/vt-34314.C index b37cac5..704a975 100644 --- a/gcc/testsuite/g++.dg/cpp0x/vt-34314.C +++ b/gcc/testsuite/g++.dg/cpp0x/vt-34314.C @@ -3,8 +3,8 @@ template<typename Fun, typename... Args> // { dg-error "template parameter" } struct call; -template<typename Fun, typename Arg0> -struct call // { dg-message "note: redeclared here" } +template<typename Fun, typename Arg0> // { dg-message "note: redeclared here" } +struct call { template<typename Sig> struct result; @@ -20,8 +20,8 @@ struct call // { dg-message "note: redeclared here" } template<typename Fun, int... N> // { dg-error "template parameter" } struct call2; -template<typename Fun, int N> -struct call2 // { dg-message "note: redeclared here" } +template<typename Fun, int N> // { dg-message "note: redeclared here" } +struct call2 { template<typename Sig> struct result; @@ -36,8 +36,8 @@ struct call2 // { dg-message "note: redeclared here" } template<typename Fun, template<typename> class... TT> // { dg-error "template parameter" } struct call3; -template<typename Fun, template<typename> class TT> -struct call3 // { dg-message "note: redeclared here" } +template<typename Fun, template<typename> class TT> // { dg-message "note: redeclared here" } +struct call3 { template<typename Sig> struct result; diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction108.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction108.C new file mode 100644 index 0000000..e82c4ba --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction108.C @@ -0,0 +1,78 @@ +// PR c++/102137 +// { dg-do compile { target c++17 } } + +template<class T> +struct A { + constexpr A() { } + constexpr A(int) { } +}; + +explicit A(...) -> A<int>; + +template<template<class> class TT> +void f() { + TT x1 = 0; // { dg-error "deduction|no match" } + TT x2 = {0}; // { dg-error "explicit deduction guide" } + TT x3(0); + TT x4{0}; + TT x5; + new TT(0); + new TT{0}; + new TT(); + new TT{}; + new TT; +} + +template<class T> +void g(T t) { + A a1 = t; // { dg-error "deduction|no match" } + A a2 = {t}; // { dg-error "explicit deduction guide" } + A a3(t); + A a4{t}; + A a5; + new A(t); + new A{t}; +} + +template void f<A>(); +template void g(int); + +template<template<class> class TT> +struct B { + static inline TT x1 = 0; // { dg-error "deduction|no match" } + static inline TT x2 = {0}; // { dg-error "explicit deduction guide" } + static inline TT x4{0}; + static inline TT x5; +}; + +template<class T> +struct C { + static inline T t; + static inline A a1 = t; // { dg-error "deduction|no match" } + static inline A a2 = {t}; // { dg-error "explicit deduction guide" } + static inline A a4{t}; + static inline A a5{}; +}; + +template struct B<A>; +template struct C<int>; + +template<template<class> class TT> +struct E { + static constexpr TT x1 = 0; // { dg-error "deduction|no match" } + static constexpr TT x2 = {0}; // { dg-error "explicit deduction guide" } + static constexpr TT x4{0}; + static constexpr TT x5{}; +}; + +template<class T> +struct F { + static constexpr T t{}; + static constexpr A a1 = t; // { dg-error "deduction|no match" } + static constexpr A a2 = {t}; // { dg-error "explicit deduction guide" } + static constexpr A a4{t}; + static constexpr A a5{}; +}; + +template struct E<A>; +template struct F<int>; diff --git a/gcc/testsuite/g++.dg/cpp2a/pr96437.C b/gcc/testsuite/g++.dg/cpp2a/pr96437.C new file mode 100644 index 0000000..79d481e --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/pr96437.C @@ -0,0 +1,4 @@ +/* { dg-do compile } */ +/* { dg-excess-errors "" } */ + +template <()> void A(auto){} diff --git a/gcc/testsuite/g++.dg/ext/attr-unavailable-9.C b/gcc/testsuite/g++.dg/ext/attr-unavailable-9.C index 4416133..6df55d5 100644 --- a/gcc/testsuite/g++.dg/ext/attr-unavailable-9.C +++ b/gcc/testsuite/g++.dg/ext/attr-unavailable-9.C @@ -3,10 +3,10 @@ /* { dg-options "" } */ template<typename T> struct __attribute__ ((unavailable)) S {}; -S<int> s; +S<int> s; // { dg-error "unavailable" } template <template <class> class T> struct A { }; -A<S> a; +A<S> a; // { dg-error "unavailable" } template <class T> void f() __attribute__ ((unavailable)); diff --git a/gcc/testsuite/g++.dg/parse/pr39751.C b/gcc/testsuite/g++.dg/parse/pr39751.C new file mode 100644 index 0000000..cfe803c --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/pr39751.C @@ -0,0 +1,10 @@ +/* { dg-do compile } */ + +template < typename > +struct A +{ +A < struct +{ +f () : + +// { dg-excess-errors "" } diff --git a/gcc/testsuite/g++.dg/parse/pr95999.C b/gcc/testsuite/g++.dg/parse/pr95999.C new file mode 100644 index 0000000..cf8437e --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/pr95999.C @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +int a; +enum struct b; +template <typename = enum struct b { c = a d } +template <> enum struct b { e }; // { dg-error "explicit specialization" } +// { dg-excess-errors "note" } +// { dg-excess-errors "5:" } + diff --git a/gcc/testsuite/g++.dg/spellcheck-pr104806.C b/gcc/testsuite/g++.dg/spellcheck-pr104806.C new file mode 100644 index 0000000..559e601 --- /dev/null +++ b/gcc/testsuite/g++.dg/spellcheck-pr104806.C @@ -0,0 +1,5 @@ +// PR c++/104806 + +struct S {}; +int main() { S s; s.__d; } // { dg-bogus "'struct S' has no member named '__d'; did you mean '__\[a-z]* '" } + // { dg-error "'struct S' has no member named '__d'" "" { target *-*-* } .-1 } diff --git a/gcc/testsuite/g++.dg/template/defarg23.C b/gcc/testsuite/g++.dg/template/defarg23.C new file mode 100644 index 0000000..443d026 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/defarg23.C @@ -0,0 +1,21 @@ +// PR c++/65396 +// { dg-do compile { target c++11 } } + +template<class T> void f(); +template<class T=int> void f(); + +template<class T=int> void g(); // { dg-message "original definition" } +template<class T=int> void g(); // { dg-error "redefinition of default" } + +template<class T, class U=bool> void h(); +template<class T=char, class U> +void h() { + static_assert(__is_same(T, char), ""); + static_assert(__is_same(U, bool), ""); +} + +int main() { + f(); + g(); + h(); +} diff --git a/gcc/testsuite/g++.dg/template/defarg23a.C b/gcc/testsuite/g++.dg/template/defarg23a.C new file mode 100644 index 0000000..3de0306 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/defarg23a.C @@ -0,0 +1,24 @@ +// PR c++/65396 +// { dg-do compile { target c++11 } } +// Like defarg23.C, but for member functions. + +struct A { + template<class T> void f(); + template<class T=int> void g(); // { dg-message "original definition" } + template<class T=char, class U> void h(); +}; + +template<class T=int> void A::f() { } +template<class T=int> void A::g() { } // { dg-error "redefinition of default" } +template<class T, class U=bool> +void A::h() { + static_assert(__is_same(T, char), ""); + static_assert(__is_same(U, bool), ""); +} + +int main() { + A a; + a.f(); + a.g(); + a.h(); +} diff --git a/gcc/testsuite/g++.dg/template/pr92440.C b/gcc/testsuite/g++.dg/template/pr92440.C index 20db5f1..f1e9281 100644 --- a/gcc/testsuite/g++.dg/template/pr92440.C +++ b/gcc/testsuite/g++.dg/template/pr92440.C @@ -3,8 +3,8 @@ template <int T> // { dg-error "template parameter" } struct S { - template <class U> - friend struct S; // { dg-message "note: redeclared here as" } + template <class U> // { dg-message "note: redeclared here as" } + friend struct S; }; S<0> s; diff --git a/gcc/testsuite/g++.dg/template/pr96329.C b/gcc/testsuite/g++.dg/template/pr96329.C new file mode 100644 index 0000000..3664322 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/pr96329.C @@ -0,0 +1,4 @@ +/* { dg-do compile } */ +/* { dg-excess-errors "" } */ + +extern "C" ""a diff --git a/gcc/testsuite/g++.old-deja/g++.pt/redecl1.C b/gcc/testsuite/g++.old-deja/g++.pt/redecl1.C index 48517f5d..7596513 100644 --- a/gcc/testsuite/g++.old-deja/g++.pt/redecl1.C +++ b/gcc/testsuite/g++.old-deja/g++.pt/redecl1.C @@ -9,14 +9,14 @@ struct S1 {}; // { dg-error "redeclared" } used 1 template parameter template <class T = int> // { dg-message "original definition" } struct S2; -template <class T = int> -struct S2; // { dg-error "redefinition of default" } +template <class T = int> // { dg-error "redefinition of default" } +struct S2; template <class T> // { dg-error "template parameter" } struct S3; -template <int I> -struct S3; // { dg-message "note: redeclared here" } +template <int I> // { dg-message "note: redeclared here" } +struct S3; -template <template <class T> class C> -struct S3; // { dg-message "note: redeclared here" } +template <template <class T> class C> // { dg-message "note: redeclared here" } +struct S3; diff --git a/gcc/testsuite/gcc.c-torture/execute/pr104839.c b/gcc/testsuite/gcc.c-torture/execute/pr104839.c new file mode 100644 index 0000000..1703df6 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr104839.c @@ -0,0 +1,37 @@ +/* PR rtl-optimization/104839 */ + +__attribute__((noipa)) short +foo (void) +{ + return -1; +} + +__attribute__((noipa)) int +bar (void) +{ + short i = foo (); + if (i == -2) + return 2; + long k = i; + int j = -1; + volatile long s = 300; + if (k < 0) + { + k += s; + if (k < 0) + j = 0; + } + else if (k >= s) + j = 0; + if (j != -1) + return 1; + return 0; +} + +int +main () +{ + if (bar () != 0) + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/analyzer/leak-4.c b/gcc/testsuite/gcc.dg/analyzer/leak-4.c new file mode 100644 index 0000000..75090e6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/leak-4.c @@ -0,0 +1,103 @@ +/* Various tests of memory leak detection. */ + +#include <stdlib.h> + +/* Example of an leak due to incomplete cleanup when freeing a struct. */ + +struct s1 +{ + void *ptr; +}; + +void test_1 (void) +{ + struct s1 *a = malloc (sizeof (struct s1)); + if (!a) + return; + a->ptr = malloc (1024); /* { dg-message "allocated here" } */ + free (a); /* { dg-warning "leak of '<unknown>'" } */ + /* TODO: we should print "a->ptr' here, rather than '<unknown>' + (PR analyzer/99771). */ +} + + +/* Examples involving arrays. */ + +struct s2 +{ + void *m_arr[10]; +}; + +void test_2a (void) +{ + struct s2 arr[5]; + arr[3].m_arr[4] = malloc (1024); /* { dg-message "allocated here" } */ +} /* { dg-warning "leak of 'arr\\\[3\\\].m_arr\\\[4\\\]'" } */ + +void test_2b (int i) +{ + struct s2 arr[5]; + arr[3].m_arr[i] = malloc (1024); /* { dg-message "allocated here" } */ +} /* { dg-warning "leak of 'arr\\\[3\\\].m_arr\\\[i\\\]'" } */ + +void test_2c (int i) +{ + struct s2 arr[5]; + arr[i].m_arr[4] = malloc (1024); /* { dg-message "allocated here" } */ +} /* { dg-warning "leak of 'arr\\\[i\\\].m_arr\\\[4\\\]'" } */ + +void test_2d (int i, int j) +{ + struct s2 arr[5]; + arr[i].m_arr[j] = malloc (1024); /* { dg-message "allocated here" } */ +} /* { dg-warning "leak of 'arr\\\[i\\\].m_arr\\\[j\\\]'" } */ + + +/* Example involving fields. */ + +struct s3 +{ + struct s3 *m_left; + struct s3 *m_right; +}; + +void test_3 (void) +{ + struct s3 *a = malloc (sizeof (struct s3)); + a->m_right = malloc (sizeof (struct s3)); /* { dg-warning "dereference of possibly-NULL 'a'" } */ + a->m_right->m_left = malloc (sizeof (struct s3)); /* { dg-warning "dereference of possibly-NULL '\\*a.m_right'" } */ +} /* { dg-warning "leak of 'a'" "leak of a" } */ +/* { dg-warning "leak of '<unknown>'" "leak of unknown" { target *-*-* } .-1 } */ +/* TODO: rather than '<unknown>', we should print 'a->m_right' + and 'a->m_right->m_left' (PR analyzer/99771). */ + + +/* Example involving faking inheritance via casts. */ + +struct s4_base +{ + int m_placeholder; +}; + +struct s4_sub +{ + void *m_buffer; +}; + +static struct s4_sub * +make_s4_sub (void) +{ + struct s4_sub *sub = malloc (sizeof (struct s4_sub)); /* { dg-message "allocated here" } */ + if (!sub) + return NULL; + sub->m_buffer = malloc (1024); /* { dg-message "allocated here" } */ + return sub; +} + +void test_4 (void) +{ + struct s4_base *base = (struct s4_base *)make_s4_sub (); +} /* { dg-warning "leak of 'base'" "leak of base" } */ +/* { dg-warning "leak of '<unknown>'" "leak of sub buffer" { target *-*-* } .-1 } */ +/* TODO: rather than 'unknown', we should print something + like '((struct s4_sub *)base)->m_buffer' (PR analyzer/99771). */ diff --git a/gcc/testsuite/gcc.dg/analyzer/pr101983-main.c b/gcc/testsuite/gcc.dg/analyzer/pr101983-main.c new file mode 100644 index 0000000..a84353b --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/pr101983-main.c @@ -0,0 +1,38 @@ +/* { dg-additional-options "-Wno-analyzer-too-complex -fno-analyzer-call-summaries" } */ + +#include <stdbool.h> +#include <stddef.h> +#include <stdlib.h> + +struct list { + struct list* next; + void *a; +}; + +void func(struct list **res) +{ + struct list *cur = NULL; + do { + struct list *n = malloc(sizeof(struct list)); + void *a = malloc(1); + if (n == NULL || a == NULL) { + if (n != NULL) free(n); + if (a != NULL) free(a); + break; + } + + if (cur == NULL) { + *res = cur = n; + } else { + cur->next = n; + cur = n; + } + n->a = a; + } while (true); +} + +int main() +{ + struct list *res; + func(&res); +} diff --git a/gcc/testsuite/gcc.dg/analyzer/pr101983-not-main.c b/gcc/testsuite/gcc.dg/analyzer/pr101983-not-main.c new file mode 100644 index 0000000..fbf3a39 --- /dev/null +++ b/gcc/testsuite/gcc.dg/analyzer/pr101983-not-main.c @@ -0,0 +1,40 @@ +/* { dg-additional-options "-Wno-analyzer-too-complex -fno-analyzer-call-summaries" } */ + +#include <stdbool.h> +#include <stddef.h> +#include <stdlib.h> + +struct list { + struct list* next; + void *a; +}; + +void func(struct list **res) +{ + struct list *cur = NULL; + do { + struct list *n = malloc(sizeof(struct list)); + void *a = malloc(1); + if (n == NULL || a == NULL) { + if (n != NULL) free(n); + if (a != NULL) free(a); + break; + } + + if (cur == NULL) { + *res = cur = n; + } else { + cur->next = n; + cur = n; + } + n->a = a; + } while (true); +} + +int not_main() +{ + struct list *res; + func(&res); +} /* { dg-warning "leak of 'res'" "leak of res" } */ +/* { dg-warning "leak of '<unknown>'" "leak of res->a" { target *-*-* } .-1 } */ +/* TODO: we should emit 'res->a' rather than '<unknown>' here. */ diff --git a/gcc/testsuite/gcc.dg/c11-unproto-1.c b/gcc/testsuite/gcc.dg/c11-unproto-1.c index ea9e807..0949c7b 100644 --- a/gcc/testsuite/gcc.dg/c11-unproto-1.c +++ b/gcc/testsuite/gcc.dg/c11-unproto-1.c @@ -1,6 +1,7 @@ -/* Test compatibility of unprototyped and prototyped function types (C2x makes - the case of types affected by default argument promotions compatible). Test - valid-in-C2x usages are not accepted for C11. */ +/* Test compatibility of unprototyped and prototyped function types (C2x made + the case of types affected by default argument promotions compatible, before + removing unprototyped functions completely). Test affected usages are not + accepted for C11. */ /* { dg-do compile } */ /* { dg-options "-std=c11 -pedantic-errors" } */ diff --git a/gcc/testsuite/gcc.dg/c11-unproto-2.c b/gcc/testsuite/gcc.dg/c11-unproto-2.c index 0557ae3..06da935 100644 --- a/gcc/testsuite/gcc.dg/c11-unproto-2.c +++ b/gcc/testsuite/gcc.dg/c11-unproto-2.c @@ -1,6 +1,7 @@ -/* Test compatibility of unprototyped and prototyped function types (C2x makes - the case of types affected by default argument promotions compatible). Test - invalid-in-C2x usages, in C11 mode. */ +/* Test compatibility of unprototyped and prototyped function types (C2x made + the case of types affected by default argument promotions compatible, before + removing unprototyped functions completely). Test always-invalid-in-C2x + usages, in C11 mode. */ /* { dg-do compile } */ /* { dg-options "-std=c11 -pedantic-errors" } */ diff --git a/gcc/testsuite/gcc.dg/c2x-unproto-1.c b/gcc/testsuite/gcc.dg/c2x-unproto-1.c index 45d68f2..aa87d78 100644 --- a/gcc/testsuite/gcc.dg/c2x-unproto-1.c +++ b/gcc/testsuite/gcc.dg/c2x-unproto-1.c @@ -1,20 +1,25 @@ -/* Test compatibility of unprototyped and prototyped function types (C2x makes - the case of types affected by default argument promotions compatible). Test - valid-in-C2x usages. */ +/* Test compatibility of unprototyped and prototyped function types (C2x made + the case of types affected by default argument promotions compatible, before + removing unprototyped functions completely). Test affected usages are not + accepted for C2x. */ /* { dg-do compile } */ /* { dg-options "-std=c2x -pedantic-errors" } */ -void f1 (); -void f1 (float); +void f1 (); /* { dg-message "previous declaration" } */ +void f1 (float); /* { dg-error "conflicting types" } */ +/* { dg-message "default promotion" "" { target *-*-* } .-1 } */ -void f2 (float); -void f2 (); +void f2 (float); /* { dg-message "previous declaration" } */ +void f2 (); /* { dg-error "conflicting types" } */ +/* { dg-message "default promotion" "" { target *-*-* } .-1 } */ -void f3 (); -void f3 (char); +void f3 (); /* { dg-message "previous declaration" } */ +void f3 (char); /* { dg-error "conflicting types" } */ +/* { dg-message "default promotion" "" { target *-*-* } .-1 } */ -void f4 (char); -void f4 (); +void f4 (char); /* { dg-message "previous declaration" } */ +void f4 (); /* { dg-error "conflicting types" } */ +/* { dg-message "default promotion" "" { target *-*-* } .-1 } */ /* Built-in function case. */ -float sqrtf (); +float sqrtf (); /* { dg-warning "conflicting types for built-in function" } */ diff --git a/gcc/testsuite/gcc.dg/c2x-unproto-2.c b/gcc/testsuite/gcc.dg/c2x-unproto-2.c index f826b7c..3d5ae9d 100644 --- a/gcc/testsuite/gcc.dg/c2x-unproto-2.c +++ b/gcc/testsuite/gcc.dg/c2x-unproto-2.c @@ -1,6 +1,7 @@ -/* Test compatibility of unprototyped and prototyped function types (C2x makes - the case of types affected by default argument promotions compatible). Test - invalid-in-C2x usages. */ +/* Test compatibility of unprototyped and prototyped function types (C2x made + the case of types affected by default argument promotions compatible, before + removing unprototyped functions completely). Test always-invalid-in-C2x + usages, in C2X mode. */ /* { dg-do compile } */ /* { dg-options "-std=c2x -pedantic-errors" } */ diff --git a/gcc/testsuite/gcc.dg/pr104381.c b/gcc/testsuite/gcc.dg/pr104381.c new file mode 100644 index 0000000..a3aec91 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr104381.c @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -g -gtoggle -fdump-tree-optimized" } */ + +int foo (int x) +{ + int tem = x + 1; + int tem2 = tem - 1; + return tem2; +} + +int +__attribute__((optimize("no-tree-pre"))) +bar (int x) +{ + int tem = x + 1; + int tem2 = tem - 1; + return tem2; +} + +// { dg-final { scan-tree-dump-not "DEBUG " "optimized" } } diff --git a/gcc/testsuite/gcc.dg/pr104786.c b/gcc/testsuite/gcc.dg/pr104786.c new file mode 100644 index 0000000..3076d23 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr104786.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu90" } */ + +void h(void *di, int num) +{ + char (*t)[num] = di; + __asm__ ("" : "=X"( *t)); +} diff --git a/gcc/testsuite/gcc.dg/pr99708.c b/gcc/testsuite/gcc.dg/pr99708.c new file mode 100644 index 0000000..b1eaf13 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr99708.c @@ -0,0 +1,7 @@ +/* PR target/99708 */ +/* { dg-do compile } */ + +#ifdef __SIZEOF_FLOAT128__ +__float128 f = 1.0; +#endif +long double l = 1.0; diff --git a/gcc/testsuite/gcc.dg/torture/pr104825.c b/gcc/testsuite/gcc.dg/torture/pr104825.c new file mode 100644 index 0000000..7affacc --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr104825.c @@ -0,0 +1,14 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-Wno-stringop-overread" } */ + +int foo (fmt) +char* fmt; +{ + return (__builtin_strchr (fmt, '*') != 0 + || __builtin_strchr (fmt, 'n') != 0); +} +void bar () +{ + if (foo (1)) + __builtin_abort (); +} diff --git a/gcc/testsuite/gcc.dg/torture/tls/pr104777.c b/gcc/testsuite/gcc.dg/torture/tls/pr104777.c new file mode 100644 index 0000000..abaf597 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/tls/pr104777.c @@ -0,0 +1,30 @@ +/* PR rtl-optimization/104777 */ +/* { dg-do compile } */ +/* { dg-require-effective-target tls } */ + +int savestate_r; +int savestate_ssb; +extern void abort(); +__thread int loop; +void f (void) +{ + int savestate_r0_5; + int savestate_r1_6; + + __asm__("" : "=m" (savestate_ssb), "=r" (savestate_r)); + savestate_r0_5 = savestate_r; + if (savestate_r0_5 == 0) + { + __asm__ __volatile__("" : : "m" (loop)); + abort (); + } + + __asm__("" : "=m" (savestate_ssb), "=r" (savestate_r)); + savestate_r1_6 = savestate_r; + if (savestate_r1_6 != 0) + return; + + __asm__ __volatile__("" : : "m" (loop)); + abort (); + +} diff --git a/gcc/testsuite/gcc.dg/vect/pr104782.c b/gcc/testsuite/gcc.dg/vect/pr104782.c new file mode 100644 index 0000000..7b8ca6c --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr104782.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-O3" } */ +/* { dg-additional-options "-march=armv8.2-a+sve -msve-vector-bits=128" { target aarch64-*-* } } */ + +int a, b, c; +static int d; +short *q; +void f() { + int *p = &d; + b = 9; + for (b = 9; b; b--) { + a = 2; + for (c = 2; c <= 9; c++) { + for (int i = 0; i < 3; i++) + *p |= (*q)++; + } + } +} diff --git a/gcc/testsuite/gcc.dg/vect/pr84201.c b/gcc/testsuite/gcc.dg/vect/pr84201.c new file mode 100644 index 0000000..1cc6d1f --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/pr84201.c @@ -0,0 +1,22 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-Ofast --param vect-induction-float=0" } */ + +void foo (float *a, float f, float s, int n) +{ + for (int i = 0; i < n; ++i) + { + a[i] = f; + f += s; + } +} + +void bar (double *a, double f, double s, int n) +{ + for (int i = 0; i < n; ++i) + { + a[i] = f; + f += s; + } +} + +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect" } } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-10.c b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-10.c index fe4f677..e9ec960 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-10.c +++ b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-10.c @@ -1,3 +1,4 @@ +/* { dg-skip-if "missing optab for vectorization" { sparc*-*-* } } */ /* { dg-do run } */ /* { dg-additional-options "-O3 -save-temps -fdump-tree-dce -w" } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-11.c b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-11.c index b77f4d4..06c103d 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-11.c +++ b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-11.c @@ -1,3 +1,4 @@ +/* { dg-skip-if "missing optab for vectorization" { sparc*-*-* } } */ /* { dg-do run } */ /* { dg-additional-options "-O3 -save-temps -fdump-tree-dce -w" } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-12.c b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-12.c index 30d36f4..36ec5a8 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-12.c +++ b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-12.c @@ -1,3 +1,4 @@ +/* { dg-skip-if "missing optab for vectorization" { sparc*-*-* } } */ /* { dg-do assemble } */ /* { dg-additional-options "-O3 -fdump-tree-dce -w" } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-2.c b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-2.c index 58c0b92..059bfb3 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-2.c +++ b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-2.c @@ -1,3 +1,4 @@ +/* { dg-skip-if "missing optab for vectorization" { sparc*-*-* } } */ /* { dg-do run } */ /* { dg-additional-options "-O3 -save-temps -fdump-tree-dce -w" } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-23.c b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-23.c index 67119d3..5b4c3b6 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-23.c +++ b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-23.c @@ -1,3 +1,4 @@ +/* { dg-skip-if "missing optab for vectorization" { sparc*-*-* } } */ /* { dg-do assemble } */ /* { dg-additional-options "-O1 -fdump-tree-dce -w" } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-3.c b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-3.c index 58c0b92..059bfb3 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-3.c +++ b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-3.c @@ -1,3 +1,4 @@ +/* { dg-skip-if "missing optab for vectorization" { sparc*-*-* } } */ /* { dg-do run } */ /* { dg-additional-options "-O3 -save-temps -fdump-tree-dce -w" } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-4.c b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-4.c index 6e2da41..91b82fb 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-4.c +++ b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-4.c @@ -1,3 +1,4 @@ +/* { dg-skip-if "missing optab for vectorization" { sparc*-*-* } } */ /* { dg-do run } */ /* { dg-additional-options "-O3 -save-temps -fdump-tree-dce -w" } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-5.c b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-5.c index 5ef0f46..59f339f 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-5.c +++ b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-5.c @@ -1,3 +1,4 @@ +/* { dg-skip-if "missing optab for vectorization" { sparc*-*-* } } */ /* { dg-do run } */ /* { dg-additional-options "-O3 -save-temps -fdump-tree-dce -w" } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-6.c b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-6.c index 22e5f88..84df837 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-6.c +++ b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-6.c @@ -1,3 +1,4 @@ +/* { dg-skip-if "missing optab for vectorization" { sparc*-*-* } } */ /* { dg-do run } */ /* { dg-additional-options "-O3 -save-temps -fdump-tree-dce -w" } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-8.c b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-8.c index edff542..b3e0b5b 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-8.c +++ b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-8.c @@ -1,3 +1,4 @@ +/* { dg-skip-if "missing optab for vectorization" { sparc*-*-* } } */ /* { dg-do run } */ /* { dg-additional-options "-O3 -save-temps -fdump-tree-dce -w" } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-9.c b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-9.c index 319d80e..5fcde11 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-9.c +++ b/gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-9.c @@ -1,3 +1,4 @@ +/* { dg-skip-if "missing optab for vectorization" { sparc*-*-* } } */ /* { dg-do run } */ /* { dg-additional-options "-O3 -save-temps -fdump-tree-dce -w" } */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c index b09caeb..4782d3f 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c @@ -26,6 +26,7 @@ int main (void) for (i=0; i<N; i++) { x[i] = i; + __asm__ volatile ("" : : : "memory"); } foo (N,z+2); @@ -38,7 +39,4 @@ int main (void) return 0; } -/* bleah */ -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_unpack } } } */ -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! vect_unpack } } } } */ - +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_unpack } } } */ diff --git a/gcc/testsuite/gcc.target/i386/eh_return-1.c b/gcc/testsuite/gcc.target/i386/eh_return-1.c index b21fd75..43f94f0 100644 --- a/gcc/testsuite/gcc.target/i386/eh_return-1.c +++ b/gcc/testsuite/gcc.target/i386/eh_return-1.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -march=haswell -mno-avx512f -mtune-ctrl=avx256_move_by_pieces" } */ +/* { dg-options "-O2 -mincoming-stack-boundary=4 -march=haswell -mno-avx512f -mtune-ctrl=avx256_move_by_pieces" } */ struct _Unwind_Context { diff --git a/gcc/testsuite/gcc.target/i386/eh_return-2.c b/gcc/testsuite/gcc.target/i386/eh_return-2.c index f23f449..cb762f9 100644 --- a/gcc/testsuite/gcc.target/i386/eh_return-2.c +++ b/gcc/testsuite/gcc.target/i386/eh_return-2.c @@ -1,6 +1,6 @@ /* PR target/101772 */ /* { dg-do compile } */ -/* { dg-additional-options "-O0 -march=x86-64 -mstackrealign" } */ +/* { dg-additional-options "-O0 -mincoming-stack-boundary=4 -march=x86-64 -mstackrealign" } */ struct _Unwind_Context _Unwind_Resume_or_Rethrow_this_context; diff --git a/gcc/testsuite/gcc.target/i386/pr100865-8a.c b/gcc/testsuite/gcc.target/i386/pr100865-8a.c index 911b14d..544a14d 100644 --- a/gcc/testsuite/gcc.target/i386/pr100865-8a.c +++ b/gcc/testsuite/gcc.target/i386/pr100865-8a.c @@ -20,5 +20,5 @@ foo (void) array[i] = MK_CONST128_BROADCAST_SIGNED (-45); } -/* { dg-final { scan-assembler-times "(?:vpbroadcastd|vpshufd)\[\\t \]+\[^\n\]*, %xmm\[0-9\]+" 1 { xfail *-*-* } } } */ +/* { dg-final { scan-assembler-times "(?:vpbroadcastd|vpshufd)\[\\t \]+\[^\n\]*, %xmm\[0-9\]+" 1 } } */ /* { dg-final { scan-assembler-times "vmovdqa\[\\t \]%xmm\[0-9\]+, " 16 } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr100865-8c.c b/gcc/testsuite/gcc.target/i386/pr100865-8c.c index 00682ed..efee048 100644 --- a/gcc/testsuite/gcc.target/i386/pr100865-8c.c +++ b/gcc/testsuite/gcc.target/i386/pr100865-8c.c @@ -3,5 +3,5 @@ #include "pr100865-8a.c" -/* { dg-final { scan-assembler-times "vpshufd\[\\t \]+\[^\n\]*, %xmm\[0-9\]+" 1 { xfail *-*-* } } } */ +/* { dg-final { scan-assembler-times "vpshufd\[\\t \]+\[^\n\]*, %xmm\[0-9\]+" 1 } } */ /* { dg-final { scan-assembler-times "vmovdqa\[\\t \]%xmm\[0-9\]+, " 16 } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr100865-9c.c b/gcc/testsuite/gcc.target/i386/pr100865-9c.c index 8ffcdc1..e6f2590 100644 --- a/gcc/testsuite/gcc.target/i386/pr100865-9c.c +++ b/gcc/testsuite/gcc.target/i386/pr100865-9c.c @@ -3,5 +3,5 @@ #include "pr100865-9a.c" -/* { dg-final { scan-assembler-times "vpshufd\[\\t \]+\[^\n\]*, %xmm\[0-9\]+" 1 { xfail *-*-* } } } */ +/* { dg-final { scan-assembler-times "vpshufd\[\\t \]+\[^\n\]*, %xmm\[0-9\]+" 1 } } */ /* { dg-final { scan-assembler-times "vmovdqa\[\\t \]%xmm\[0-9\]+, " 16 } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr104779.c b/gcc/testsuite/gcc.target/i386/pr104779.c new file mode 100644 index 0000000..2dd8ec6 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr104779.c @@ -0,0 +1,27 @@ +/* PR target/104779 */ +/* { dg-do compile } */ +/* { dg-options "-O1 --param sccvn-max-alias-queries-per-access=0" } */ + +__attribute__ ((simd)) int +foo (int x, int y, int z) +{ + return (x & y) * !!z; +} + +__attribute__ ((simd)) int +bar (int x, int y, int z) +{ + return (x | y) * !!z; +} + +__attribute__ ((simd)) int +baz (int x, int y, int z) +{ + return (x ^ y) * !!z; +} + +__attribute__ ((simd, target ("avx512dq"))) long +qux (long x, long y, long z) +{ + return (x * y) * !!z; +} diff --git a/gcc/testsuite/gcc.target/powerpc/convert-fp-128.c b/gcc/testsuite/gcc.target/powerpc/convert-fp-128.c index 69f4a02..3e47334 100644 --- a/gcc/testsuite/gcc.target/powerpc/convert-fp-128.c +++ b/gcc/testsuite/gcc.target/powerpc/convert-fp-128.c @@ -7,7 +7,9 @@ #define mode_sf float #define mode_df double typedef float __attribute__((mode(IF))) mode_if; +#ifdef __FLOAT128_TYPE__ typedef float __attribute__((mode(KF))) mode_kf; +#endif #define mode_sd _Decimal32 #define mode_dd _Decimal64 #define mode_td _Decimal128 diff --git a/gcc/testsuite/gcc.target/powerpc/pr99708-2.c b/gcc/testsuite/gcc.target/powerpc/pr99708-2.c new file mode 100644 index 0000000..e6f9358 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr99708-2.c @@ -0,0 +1,22 @@ +/* PR target/99708 */ +/* { dg-do compile } */ + +#ifdef __SIZEOF_IBM128__ +__ibm128 f = 1.0; +#endif +#ifdef __SIZEOF_IEEE128__ +__ieee128 g = 1.0; +#endif +long double h = 1.0; + +void +foo (void) +{ +#ifdef __SIZEOF_IBM128__ + f += 2.0; +#endif +#ifdef __SIZEOF_IEEE128__ + g += 2.0; +#endif + h += 2.0; +} diff --git a/gcc/testsuite/gcc.target/s390/pr104775.c b/gcc/testsuite/gcc.target/s390/pr104775.c new file mode 100644 index 0000000..fd4258b --- /dev/null +++ b/gcc/testsuite/gcc.target/s390/pr104775.c @@ -0,0 +1,14 @@ +/* PR target/104775 */ +/* { dg-do assemble { target s390_zEC12_hw } } */ +/* { dg-options "-O2 -march=zEC12" } */ + +long a[64]; +void bar (void); + +void +foo (int x, int y) +{ + if (x != a[y]) + bar (); + __builtin_trap (); +} diff --git a/gcc/testsuite/gfortran.dg/class_result_10.f90 b/gcc/testsuite/gfortran.dg/class_result_10.f90 new file mode 100644 index 0000000..a4d29ab --- /dev/null +++ b/gcc/testsuite/gfortran.dg/class_result_10.f90 @@ -0,0 +1,52 @@ +! { dg-do run} + + +! PR fortran/99585 + +module m2 + type t + class(*), pointer :: bar(:) + end type + type t2 + class(t), allocatable :: my(:) + end type t2 +contains + function f (x, y) result(z) + class(t) :: x(:) + class(t) :: y(size(x(1)%bar)) + type(t) :: z(size(x(1)%bar)) + end + function g (x) result(z) + class(t) :: x(:) + type(t) :: z(size(x(1)%bar)) + end + subroutine s () + class(t2), allocatable :: a(:), b(:), c(:), d(:) + class(t2), pointer :: p(:) + c(1)%my = f (a(1)%my, b(1)%my) + d(1)%my = g (p(1)%my) + end +end + +! Contributed by G. Steinmetz: +! PR fortran/104430 + +module m + type t + integer :: a + end type +contains + function f(x) result(z) + class(t) :: x(:) + type(t) :: z(size(x%a)) + z%a = 42 + end +end +program p + use m + class(t), allocatable :: y(:), z(:) + allocate (y(32)) + z = f(y) + if (size(z) /= 32) stop 1 + if (any (z%a /= 42)) stop 2 +end diff --git a/gcc/testsuite/gfortran.dg/minmaxloc_16.f90 b/gcc/testsuite/gfortran.dg/minmaxloc_16.f90 new file mode 100644 index 0000000..099248d --- /dev/null +++ b/gcc/testsuite/gfortran.dg/minmaxloc_16.f90 @@ -0,0 +1,14 @@ +! { dg-do run } +! { dg-options "-fdump-tree-original" } +! PR fortran/104811 +! Frontend-optimization mis-optimized minloc/maxloc of character arrays + +program p + character(1) :: str(3) + str = ["a", "c", "a"] + if (any (maxloc (str) /= 2)) stop 1 + if (minloc (str,dim=1) /= 1) stop 2 +end + +! { dg-final { scan-tree-dump-times "_gfortran_maxloc0_4_s1" 1 "original" } } +! { dg-final { scan-tree-dump-times "_gfortran_minloc2_4_s1" 1 "original" } } diff --git a/gcc/testsuite/gfortran.dg/null_actual_2.f90 b/gcc/testsuite/gfortran.dg/null_actual_2.f90 new file mode 100644 index 0000000..de481f0 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/null_actual_2.f90 @@ -0,0 +1,16 @@ +! { dg-do compile } +! +! PR fortran/104126 +! +! Contributed by G. Steinmetz +! +program p + use iso_c_binding, only: c_char + character(len=:,kind=c_char), pointer :: d + call s(null(d)) + call s(null()) +contains + subroutine s(x) bind(c) + character(len=:, kind=c_char), pointer, intent(in) :: x + end +end diff --git a/gcc/testsuite/gfortran.dg/pr104849.f90 b/gcc/testsuite/gfortran.dg/pr104849.f90 new file mode 100644 index 0000000..ae221b5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr104849.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +! PR fortran/104849 - ICE in find_array_section +! Contributed by G.Steinmetz + +program p + integer, parameter :: a(:) = [1, 2] ! { dg-error "deferred shape" } + integer :: x(2) + data x /a(:)/ ! { dg-error "Invalid" } +end diff --git a/gcc/testsuite/gfortran.dg/sizeof_6.f90 b/gcc/testsuite/gfortran.dg/sizeof_6.f90 new file mode 100644 index 0000000..21b5735 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/sizeof_6.f90 @@ -0,0 +1,437 @@ +! { dg-do run } +! +! Check that sizeof is properly handled +! +use iso_c_binding +implicit none (type, external) + +type t + integer, allocatable :: a(:,:,:), aa + integer :: b(5), c +end type t + +type t2 + class(t), allocatable :: d(:,:), e +end type t2 + +type, extends(t2) :: t2e + integer :: q(7), z +end type t2e + +type t3 + class(t2), allocatable :: ct2, ct2a(:,:,:) + type(t2), allocatable :: tt2, tt2a(:,:,:) + integer, allocatable :: ii, iia(:,:,:) +end type t3 + +type(t3) :: var, vara(5) +type(t3), allocatable :: avar, avara(:) +class(t3), allocatable :: cvar, cvara(:) +type(t2), allocatable :: ax, axa(:,:,:) +class(t2), allocatable :: cx, cxa(:,:,:) + +integer(c_size_t) :: n + +allocate (t3 :: avar, avara(5)) +allocate (t3 :: cvar, cvara(5)) + +n = sizeof(var) + +! Assume alignment plays no tricks and system has 32bit/64bit. +! If needed change +if (n /= 376 .and. n /= 200) error stop + +if (n /= sizeof(avar)) error stop +if (n /= sizeof(cvar)) error stop +if (n * 5 /= sizeof(vara)) error stop +if (n * 5 /= sizeof(avara)) error stop +if (n * 5 /= sizeof(cvara)) error stop + +if (n /= sz_ar(var,var,var,var)) error stop +if (n /= sz_s(var,var)) error stop +if (n /= sz_t3(var,var,var,var)) error stop +if (n /= sz_ar(avar,avar,avar,avar)) error stop +if (n /= sz_s(avar,avar)) error stop +if (n /= sz_t3(avar,avar,avar,avar)) error stop +if (n /= sz_t3_at(avar,avar)) error stop +if (n /= sz_ar(cvar,cvar,cvar,cvar)) error stop +if (n /= sz_s(cvar,cvar)) error stop +if (n /= sz_t3(cvar,cvar,cvar,cvar)) error stop +if (n /= sz_t3_a(cvar,cvar)) error stop + +if (n*5 /= sz_ar(vara,vara,vara,vara)) error stop +if (n*5 /= sz_r1(vara,vara,vara,vara)) error stop +if (n*5 /= sz_t3(vara,vara,vara,vara)) error stop +if (n*5 /= sz_ar(avara,avara,avara,avara)) error stop +if (n*5 /= sz_r1(avara,avara,avara,avara)) error stop +if (n*5 /= sz_t3(avara,avara,avara,avara)) error stop +if (n*5 /= sz_t3_at(avara,avara)) error stop +if (n*5 /= sz_ar(cvara,cvara,cvara,cvara)) error stop +if (n*5 /= sz_r1(cvara,cvara,cvara,cvara)) error stop +if (n*5 /= sz_t3(cvara,cvara,cvara,cvara)) error stop +if (n*5 /= sz_t3_a(cvara,cvara)) error stop + +allocate (var%ct2, var%ct2a(5,4,2), var%tt2, var%tt2a(5,4,2), var%ii, var%iia(5,3,2)) +allocate (avar%ct2, avar%ct2a(5,4,2), avar%tt2, avar%tt2a(5,4,2), avar%ii, avar%iia(5,3,2)) +allocate (cvar%ct2, cvar%ct2a(5,4,2), cvar%tt2, cvar%tt2a(5,4,2), cvar%ii, cvar%iia(5,3,2)) +allocate (vara(1)%ct2, vara(1)%ct2a(5,4,2), vara(1)%tt2, vara(1)%tt2a(5,4,2), vara(1)%ii, vara(1)%iia(5,3,2)) +allocate (avara(1)%ct2, avara(1)%ct2a(5,4,2), avara(1)%tt2, avara(1)%tt2a(5,4,2), avara(1)%ii, avara(1)%iia(5,3,2)) +allocate (cvara(1)%ct2, cvara(1)%ct2a(5,4,2), cvara(1)%tt2, cvara(1)%tt2a(5,4,2), cvara(1)%ii, cvara(1)%iia(5,3,2)) +allocate (ax, axa(5,4,2), cx, cxa(5,4,2)) + +! Should be still be the same +if (n /= sizeof(avar)) error stop +if (n /= sizeof(cvar)) error stop +if (n * 5 /= sizeof(vara)) error stop +if (n * 5 /= sizeof(avara)) error stop +if (n * 5 /= sizeof(cvara)) error stop + +if (n /= sz_ar(var,var,var,var)) error stop +if (n /= sz_s(var,var)) error stop +if (n /= sz_t3(var,var,var,var)) error stop +if (n /= sz_ar(avar,avar,avar,avar)) error stop +if (n /= sz_s(avar,avar)) error stop +if (n /= sz_t3(avar,avar,avar,avar)) error stop +if (n /= sz_t3_at(avar,avar)) error stop +if (n /= sz_ar(cvar,cvar,cvar,cvar)) error stop +if (n /= sz_s(cvar,cvar)) error stop +if (n /= sz_t3(cvar,cvar,cvar,cvar)) error stop +if (n /= sz_t3_a(cvar,cvar)) error stop + +if (n*5 /= sz_ar(vara,vara,vara,vara)) error stop +if (n*5 /= sz_r1(vara,vara,vara,vara)) error stop +if (n*5 /= sz_t3(vara,vara,vara,vara)) error stop +if (n*5 /= sz_ar(avara,avara,avara,avara)) error stop +if (n*5 /= sz_r1(avara,avara,avara,avara)) error stop +if (n*5 /= sz_t3(avara,avara,avara,avara)) error stop +if (n*5 /= sz_t3_at(avara,avara)) error stop +if (n*5 /= sz_ar(cvara,cvara,cvara,cvara)) error stop +if (n*5 /= sz_r1(cvara,cvara,cvara,cvara)) error stop +if (n*5 /= sz_t3(cvara,cvara,cvara,cvara)) error stop +if (n*5 /= sz_t3_a(cvara,cvara)) error stop + +! This one did segfault before in gfc_conv_intrinsic_sizeof +n = sizeof(var%ct2) +if (n /= 112 .and. n /= 60) error stop +if (n /= sizeof (var%tt2)) error stop +if (n /= sizeof (avar%ct2)) error stop +if (n /= sizeof (avar%tt2)) error stop +if (n /= sizeof (cvar%ct2)) error stop +if (n /= sizeof (cvar%tt2)) error stop +if (n /= sizeof (vara(1)%tt2)) error stop +if (n /= sizeof (avara(1)%ct2)) error stop +if (n /= sizeof (avara(1)%tt2)) error stop +if (n /= sizeof (cvara(1)%ct2)) error stop +if (n /= sizeof (cvara(1)%tt2)) error stop + +if (n /= sizeof (ax)) error stop +if (n /= sizeof (cx)) error stop + +if (n /= sz_ar(var%ct2,var%ct2,var%ct2,var%ct2)) error stop +if (n /= sz_s(var%ct2,var%ct2)) error stop +if (n /= sz_t2(var%ct2,var%ct2,var%ct2,var%ct2,.false.)) error stop +if (n /= sz_t2_a(var%ct2,var%ct2)) error stop +if (n /= sz_ar(var%tt2,var%tt2,var%tt2,var%tt2)) error stop +if (n /= sz_s(var%tt2,var%tt2)) error stop +if (n /= sz_t2(var%tt2,var%tt2,var%tt2,var%tt2,.false.)) error stop +if (n /= sz_t2_at(var%tt2,var%tt2)) error stop + +if (n*5*4*2 /= sizeof (var%tt2a)) error stop +if (n*5*4*2 /= sizeof (avar%ct2a)) error stop +if (n*5*4*2 /= sizeof (avar%tt2a)) error stop +if (n*5*4*2 /= sizeof (cvar%ct2a)) error stop +if (n*5*4*2 /= sizeof (cvar%tt2a)) error stop +if (n*5*4*2 /= sizeof (vara(1)%tt2a)) error stop +if (n*5*4*2 /= sizeof (avara(1)%ct2a)) error stop +if (n*5*4*2 /= sizeof (avara(1)%tt2a)) error stop +if (n*5*4*2 /= sizeof (cvara(1)%ct2a)) error stop +if (n*5*4*2 /= sizeof (cvara(1)%tt2a)) error stop + +if (n*5*4*2 /= sizeof (axa)) error stop +if (n*5*4*2 /= sizeof (cxa)) error stop + +if (n*5*4*2 /= sz_ar(var%ct2a,var%ct2a,var%ct2a,var%ct2a)) error stop +if (n*5*4*2 /= sz_r3(var%ct2a,var%ct2a,var%ct2a,var%ct2a)) error stop +if (n*5*4*2 /= sz_t2(var%ct2a,var%ct2a,var%ct2a,var%ct2a,.false.)) error stop +if (n*5*4*2 /= sz_t2_a(var%ct2a,var%ct2a)) error stop +if (n*5*4*2 /= sz_ar(var%tt2a,var%tt2a,var%tt2a,var%tt2a)) error stop +if (n*5*4*2 /= sz_r3(var%tt2a,var%tt2a,var%tt2a,var%tt2a)) error stop +if (n*5*4*2 /= sz_t2(var%tt2a,var%tt2a,var%tt2a,var%tt2a,.false.)) error stop +if (n*5*4*2 /= sz_t2_at(var%tt2a,var%tt2a)) error stop + +n = sizeof(var%ii) +if (n /= 4) error stop +if (n /= sizeof (var%ii)) error stop +if (n /= sizeof (avar%ii)) error stop +if (n /= sizeof (avar%ii)) error stop +if (n /= sizeof (cvar%ii)) error stop +if (n /= sizeof (cvar%ii)) error stop +if (n /= sizeof (vara(1)%ii)) error stop +if (n /= sizeof (avara(1)%ii)) error stop +if (n /= sizeof (avara(1)%ii)) error stop +if (n /= sizeof (cvara(1)%ii)) error stop +if (n /= sizeof (cvara(1)%ii)) error stop + +if (n*5*3*2 /= sizeof (var%iia)) error stop +if (n*5*3*2 /= sizeof (avar%iia)) error stop +if (n*5*3*2 /= sizeof (avar%iia)) error stop +if (n*5*3*2 /= sizeof (cvar%iia)) error stop +if (n*5*3*2 /= sizeof (cvar%iia)) error stop +if (n*5*3*2 /= sizeof (vara(1)%iia)) error stop +if (n*5*3*2 /= sizeof (avara(1)%iia)) error stop +if (n*5*3*2 /= sizeof (avara(1)%iia)) error stop +if (n*5*3*2 /= sizeof (cvara(1)%iia)) error stop +if (n*5*3*2 /= sizeof (cvara(1)%iia)) error stop + +deallocate (var%ct2, var%ct2a, var%tt2, var%tt2a, var%ii, var%iia) +deallocate (avar%ct2, avar%ct2a, avar%tt2, avar%tt2a, avar%ii, avar%iia) +deallocate (cvar%ct2, cvar%ct2a, cvar%tt2, cvar%tt2a, cvar%ii, cvar%iia) +deallocate (vara(1)%ct2, vara(1)%ct2a, vara(1)%tt2, vara(1)%tt2a, vara(1)%ii, vara(1)%iia) +deallocate (avara(1)%ct2, avara(1)%ct2a, avara(1)%tt2, avara(1)%tt2a, avara(1)%ii, avara(1)%iia) +deallocate (cvara(1)%ct2, cvara(1)%ct2a, cvara(1)%tt2, cvara(1)%tt2a, cvara(1)%ii, cvara(1)%iia) +deallocate (ax, axa, cx, cxa) + +allocate (t2e :: var%ct2, var%ct2a(5,4,2)) +allocate (t2e :: avar%ct2, avar%ct2a(5,4,2)) +allocate (t2e :: cvar%ct2, cvar%ct2a(5,4,2)) +allocate (t2e :: vara(1)%ct2, vara(1)%ct2a(5,4,2)) +allocate (t2e :: avara(1)%ct2, avara(1)%ct2a(5,4,2)) +allocate (t2e :: cvara(1)%ct2, cvara(1)%ct2a(5,4,2)) +allocate (t2e :: cx, cxa(5,4,2)) + +n = sizeof(cx) +if (n /= 144 .and. n /= 92) error stop +if (n /= sizeof(var%ct2)) error stop +if (n /= sizeof(avar%ct2)) error stop +if (n /= sizeof(cvar%ct2)) error stop +if (n /= sizeof(vara(1)%ct2)) error stop +if (n /= sizeof(avara(1)%ct2)) error stop +if (n /= sizeof(cvara(1)%ct2)) error stop +if (n*5*4*2 /= sizeof(cxa)) error stop +if (n*5*4*2 /= sizeof(var%ct2a)) error stop +if (n*5*4*2 /= sizeof(avar%ct2a)) error stop +if (n*5*4*2 /= sizeof(cvar%ct2a)) error stop +if (n*5*4*2 /= sizeof(vara(1)%ct2a)) error stop +if (n*5*4*2 /= sizeof(avara(1)%ct2a)) error stop +if (n*5*4*2 /= sizeof(cvara(1)%ct2a)) error stop + +! FAILS as declare not dynamic type arrives for TYPE(*),dimension(..) +! -> FIXME, PR fortran/104844 (trice) +!if (n /= sz_ar(var%ct2,var%ct2,var%ct2,var%ct2)) error stop ! FIXME +if (n /= sz_s(var%ct2,var%ct2)) error stop +if (n /= sz_t2(var%ct2,var%ct2,var%ct2,var%ct2,.true.)) error stop +if (n /= sz_t2_a(var%ct2,var%ct2)) error stop +!if (n*5*4*2 /= sz_ar(var%ct2a,var%ct2a,var%ct2a,var%ct2a)) error stop ! FIXME +!if (n*5*4*2 /= sz_r3(var%ct2a,var%ct2a,var%ct2a,var%ct2a)) error stop ! FIXME +if (n*5*4*2 /= sz_t2(var%ct2a,var%ct2a,var%ct2a,var%ct2a,.true.)) error stop +if (n*5*4*2 /= sz_t2_a(var%ct2a,var%ct2a)) error stop + +allocate (t :: var%ct2%d(3,2), var%ct2a(5,4,2)%d(3,2)) +allocate (t :: avar%ct2%d(3,2), avar%ct2a(5,4,2)%d(3,2)) +allocate (t :: cvar%ct2%d(3,2), cvar%ct2a(5,4,2)%d(3,2)) +allocate (t :: vara(1)%ct2%d(3,2), vara(1)%ct2a(5,4,2)%d(3,2)) +allocate (t :: avara(1)%ct2%d(3,2), avara(1)%ct2a(5,4,2)%d(3,2)) +allocate (t :: cvara(1)%ct2%d(3,2), cvara(1)%ct2a(5,4,2)%d(3,2)) +allocate (t :: cx%d(3,2), cxa(5,4,2)%d(3,2)) + +allocate (t :: var%ct2%e, var%ct2a(5,4,2)%e) +allocate (t :: avar%ct2%e, avar%ct2a(5,4,2)%e) +allocate (t :: cvar%ct2%e, cvar%ct2a(5,4,2)%e) +allocate (t :: vara(1)%ct2%e, vara(1)%ct2a(5,4,2)%e) +allocate (t :: avara(1)%ct2%e, avara(1)%ct2a(5,4,2)%e) +allocate (t :: cvara(1)%ct2%e, cvara(1)%ct2a(5,4,2)%e) +allocate (t :: cx%e, cxa(5,4,2)%e) + +n = sizeof(cx%e) +if (n /= 144 .and. n /= 88) error stop +if (n /= sizeof(var%ct2%e)) error stop +if (n /= sizeof(var%ct2a(5,4,2)%e)) error stop +if (n /= sizeof(avar%ct2%e)) error stop +if (n /= sizeof(avar%ct2a(5,4,2)%e)) error stop +if (n /= sizeof(cvar%ct2%e)) error stop +if (n /= sizeof(cvar%ct2a(5,4,2)%e)) error stop +if (n /= sizeof(avara(1)%ct2%e)) error stop +if (n /= sizeof(avara(1)%ct2a(5,4,2)%e)) error stop +if (n /= sizeof(cvara(1)%ct2%e)) error stop +if (n /= sizeof(cvara(1)%ct2a(5,4,2)%e)) error stop + +if (n /= sz_ar(var%ct2%e,var%ct2a(5,3,2)%e,cvar%ct2%e,cvar%ct2a(5,3,2)%e)) error stop +if (n /= sz_s(var%ct2%e,var%ct2a(5,3,2)%e)) error stop +if (n /= sz_t(var%ct2%e,var%ct2a(5,3,2)%e,cvar%ct2%e,cvar%ct2a(5,3,2)%e)) error stop +if (n /= sz_t_a(var%ct2%e,var%ct2a(5,3,2)%e)) error stop + +! FIXME - all of the following fail as size(... % ct2a(5,3,2) % d) == 0 instead of 6 +! See PR fortran/104845 +!if (n*3*2 /= sz_ar(var%ct2%d,var%ct2a(5,3,2)%d,cvar%ct2%d,cvar%ct2a(5,3,2)%d)) error stop +!if (n*3*2 /= sz_r2(var%ct2%d,var%ct2a(5,3,2)%d,cvar%ct2%d,cvar%ct2a(5,3,2)%d)) error stop +!if (n*3*2 /= sz_t(var%ct2%d,var%ct2a(5,3,2)%d,cvar%ct2%d,cvar%ct2a(5,3,2)%d)) error stop +!if (n*3*2 /= sz_t_a(var%ct2%d,var%ct2a(5,3,2)%d)) error stop + +if (n*3*2 /= sizeof(var%ct2%d)) error stop +if (n*3*2 /= sizeof(var%ct2a(5,4,2)%d)) error stop +if (n*3*2 /= sizeof(avar%ct2%d)) error stop +if (n*3*2 /= sizeof(avar%ct2a(5,4,2)%d)) error stop +if (n*3*2 /= sizeof(cvar%ct2%d)) error stop +if (n*3*2 /= sizeof(cvar%ct2a(5,4,2)%d)) error stop +if (n*3*2 /= sizeof(avara(1)%ct2%d)) error stop +if (n*3*2 /= sizeof(avara(1)%ct2a(5,4,2)%d)) error stop +if (n*3*2 /= sizeof(cvara(1)%ct2%d)) error stop +if (n*3*2 /= sizeof(cvara(1)%ct2a(5,4,2)%d)) error stop + +deallocate (var%ct2, var%ct2a) +deallocate (avar%ct2, avar%ct2a) +deallocate (cvar%ct2, cvar%ct2a) +deallocate (cx, cxa) + +deallocate (avar, avara) +deallocate (cvar, cvara) + +contains + integer(c_size_t) function sz_ar (a, b, c, d) result(res) + type(*) :: a(..), c(..) + class(*) :: b(..), d(..) + optional :: c, d + res = sizeof(a) + if (sizeof(b) /= res) error stop + if (sizeof(c) /= res) error stop + if (sizeof(d) /= res) error stop + end + integer(c_size_t) function sz_ar_a (a, b) result(res) + class(*), allocatable :: a(..), b(..) + optional :: b + res = sizeof(a) + if (sizeof(b) /= res) error stop + end + integer(c_size_t) function sz_s (a, b) result(res) + class(*) :: a, b + optional :: b + res = sizeof(a) + if (sizeof(b) /= res) error stop + end + integer(c_size_t) function sz_s_a (a, b) result(res) + class(*), allocatable :: a, b + optional :: b + res = sizeof(a) + if (sizeof(b) /= res) error stop + end + integer(c_size_t) function sz_r1 (a, b, c, d) result(res) + type(*) :: a(:), c(:) + class(*) :: b(:), d(:) + optional :: c, d + res = sizeof(a) + if (sizeof(b) /= res) error stop + if (sizeof(c) /= res) error stop + if (sizeof(d) /= res) error stop + end + integer(c_size_t) function sz_r1_a (a, b) result(res) + class(*), allocatable :: a(:), b(:) + optional :: b + res = sizeof(a) + if (sizeof(b) /= res) error stop + end + integer(c_size_t) function sz_r2 (a, b, c, d) result(res) + type(*) :: a(:,:), c(:,:) + class(*) :: b(:,:), d(:,:) + optional :: c, d + res = sizeof(a) + if (sizeof(b) /= res) error stop + if (sizeof(c) /= res) error stop + if (sizeof(d) /= res) error stop + end + integer(c_size_t) function sz_r2_a (a, b) result(res) + class(*), allocatable :: a(:,:), b(:,:) + optional :: b + res = sizeof(a) + if (sizeof(b) /= res) error stop + end + integer(c_size_t) function sz_r3 (a, b, c, d) result(res) + type(*) :: a(:,:,:), c(:,:,:) + class(*) :: b(:,:,:), d(:,:,:) + optional :: c, d + res = sizeof(a) + if (sizeof(b) /= res) error stop + if (sizeof(c) /= res) error stop + if (sizeof(d) /= res) error stop + end + integer(c_size_t) function sz_r3_a (a, b) result(res) + class(*), allocatable :: a(:,:,:), b(:,:,:) + optional :: b + res = sizeof(a) + if (sizeof(b) /= res) error stop + end + integer(c_size_t) function sz_t (a, b, c, d) result(res) + type(t) :: a(..), c(..) + class(t) :: b(..), d(..) + optional :: c, d + + res = sizeof(b) + if (sizeof(d) /= sizeof(b)) error stop + if (sizeof(a) /= sizeof(c)) error stop + if (sizeof(a) /= res) error stop + end + integer(c_size_t) function sz_t_a (a, b) result(res) + class(t), allocatable :: a(..), b(..) + optional :: b + + res = sizeof(b) + if (sizeof(b) /= sizeof(a)) error stop + end + integer(c_size_t) function sz_t_at (a, b) result(res) + type(t), allocatable :: a(..), b(..) + optional :: b + + res = sizeof(b) + if (sizeof(b) /= sizeof(a)) error stop + end + integer(c_size_t) function sz_t2 (a, b, c, d, extends) result(res) + type(t2) :: a(..), c(..) + class(t2) :: b(..), d(..) + optional :: c, d + logical, value :: extends + + res = sizeof(b) + if (sizeof(d) /= sizeof(b)) error stop + if (sizeof(a) /= sizeof(c)) error stop + if (.not.extends) then + if (sizeof(a) /= res) error stop + else + ! Here, extension has extra elements + if (sizeof(a) >= res) error stop + end if + end + integer(c_size_t) function sz_t2_a (a, b) result(res) + class(t2), allocatable :: a(..), b(..) + optional :: b + + res = sizeof(b) + if (sizeof(b) /= sizeof(a)) error stop + end + integer(c_size_t) function sz_t2_at (a, b) result(res) + type(t2), allocatable :: a(..), b(..) + optional :: b + + res = sizeof(b) + if (sizeof(b) /= sizeof(a)) error stop + end + integer(c_size_t) function sz_t3 (a, b, c, d) result(res) + type(t3) :: a(..), c(..) + class(t3) :: b(..), d(..) + optional :: c, d + res = sizeof(b) + if (sizeof(d) /= sizeof(b)) error stop + if (sizeof(a) /= sizeof(c)) error stop + if (sizeof(a) /= res) error stop + end + integer(c_size_t) function sz_t3_a (a, b) result(res) + class(t3), allocatable :: a(..), b(..) + optional :: b + res = sizeof(b) + if (sizeof(a) /= sizeof(b)) error stop + end + integer(c_size_t) function sz_t3_at (a, b) result(res) + type(t3), allocatable :: a(..), b(..) + optional :: b + res = sizeof(b) + if (sizeof(a) /= sizeof(b)) error stop + end +end diff --git a/gcc/tree-ssa-propagate.cc b/gcc/tree-ssa-propagate.cc index 5092b37..7813e51 100644 --- a/gcc/tree-ssa-propagate.cc +++ b/gcc/tree-ssa-propagate.cc @@ -697,7 +697,7 @@ private: gimple_stmt_iterator new_gsi); }; -/* Call post_new_stmt for each each new statement that has been added +/* Call post_new_stmt for each new statement that has been added to the current BB. OLD_GSI is the statement iterator before the BB changes ocurred. NEW_GSI is the iterator which may contain new statements. */ diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc index d4d0aba..66b4fc2 100644 --- a/gcc/tree-ssa-sccvn.cc +++ b/gcc/tree-ssa-sccvn.cc @@ -5140,11 +5140,12 @@ visit_reference_op_call (tree lhs, gcall *stmt) { accesses.quick_grow (accesses.length () + 1); ao_ref *r = &accesses.last (); - if (!access_node.get_ao_ref (stmt, r)) + tree arg = access_node.get_call_arg (stmt); + if (!POINTER_TYPE_P (TREE_TYPE (arg)) + || !access_node.get_ao_ref (stmt, r)) { /* Initialize a ref based on the argument and unknown offset if possible. */ - tree arg = access_node.get_call_arg (stmt); if (arg && TREE_CODE (arg) == SSA_NAME) arg = SSA_VAL (arg); if (arg diff --git a/gcc/tree-ssa-uninit.cc b/gcc/tree-ssa-uninit.cc index ab83a4b..b48fcf1 100644 --- a/gcc/tree-ssa-uninit.cc +++ b/gcc/tree-ssa-uninit.cc @@ -403,7 +403,7 @@ maybe_warn_read_write_only (tree fndecl, gimple *stmt, tree arg, tree ptr) return; /* Initialize a map of attribute access specifications for arguments - to the function function call. */ + to the function call. */ rdwr_map rdwr_idx; init_attr_rdwr_indices (&rdwr_idx, TYPE_ATTRIBUTES (fntype)); @@ -514,7 +514,7 @@ check_defs (ao_ref *ref, tree vdef, void *data_) return true; } -/* Counters and limits controlling the the depth of analysis and +/* Counters and limits controlling the depth of analysis and strictness of the warning. */ struct wlimits { @@ -785,7 +785,7 @@ maybe_warn_pass_by_reference (gcall *stmt, wlimits &wlims) const bool save_always_executed = wlims.always_executed; /* Initialize a map of attribute access specifications for arguments - to the function function call. */ + to the function call. */ rdwr_map rdwr_idx; init_attr_rdwr_indices (&rdwr_idx, TYPE_ATTRIBUTES (fntype)); @@ -979,7 +979,7 @@ warn_uninit_phi_uses (basic_block bb) static void warn_uninitialized_vars (bool wmaybe_uninit) { - /* Counters and limits controlling the the depth of the warning. */ + /* Counters and limits controlling the depth of the warning. */ wlimits wlims = { }; wlims.wmaybe_uninit = wmaybe_uninit; diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc index 1f30fc8..7fcec12 100644 --- a/gcc/tree-vect-loop.cc +++ b/gcc/tree-vect-loop.cc @@ -8175,6 +8175,14 @@ vectorizable_induction (loop_vec_info loop_vinfo, return false; } + if (FLOAT_TYPE_P (vectype) && !param_vect_induction_float) + { + if (dump_enabled_p ()) + dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location, + "floating point induction vectorization disabled\n"); + return false; + } + step_expr = STMT_VINFO_LOOP_PHI_EVOLUTION_PART (stmt_info); gcc_assert (step_expr != NULL_TREE); tree step_vectype = get_same_sized_vectype (TREE_TYPE (step_expr), vectype); diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index f9bbc87..4ac2b70 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -7382,6 +7382,10 @@ vectorize_slp_instance_root_stmt (slp_tree node, slp_instance instance) gimple *child_stmt = SLP_TREE_VEC_STMTS (node)[0]; tree vect_lhs = gimple_get_lhs (child_stmt); tree root_lhs = gimple_get_lhs (instance->root_stmts[0]->stmt); + if (!useless_type_conversion_p (TREE_TYPE (root_lhs), + TREE_TYPE (vect_lhs))) + vect_lhs = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (root_lhs), + vect_lhs); rstmt = gimple_build_assign (root_lhs, vect_lhs); } else if (SLP_TREE_NUMBER_OF_VEC_STMTS (node) > 1) @@ -7392,6 +7396,9 @@ vectorize_slp_instance_root_stmt (slp_tree node, slp_instance instance) vec<constructor_elt, va_gc> *v; vec_alloc (v, nelts); + /* A CTOR can handle V16HI composition from VNx8HI so we + do not need to convert vector elements if the types + do not match. */ FOR_EACH_VEC_ELT (SLP_TREE_VEC_STMTS (node), j, child_stmt) CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, gimple_get_lhs (child_stmt)); diff --git a/gcc/value-relation.h b/gcc/value-relation.h index 6f47133..36e4cf9 100644 --- a/gcc/value-relation.h +++ b/gcc/value-relation.h @@ -50,7 +50,7 @@ along with GCC; see the file COPYING3. If not see // relation comes back EQ_EXPR, it is also possible to query the set of // equivlaencies. These are basically bitmaps over ssa_names. // -// relations are maintained via the dominace trees, are are optimized assuming +// Relations are maintained via the dominace trees and are optimized assuming // they are registered in dominance order. When a new relation is added, it // is intersected with whatever existing relation exists in the dominance tree // and registered at the specified block. diff --git a/gcc/varasm.cc b/gcc/varasm.cc index d3d9daf..c41f17d 100644 --- a/gcc/varasm.cc +++ b/gcc/varasm.cc @@ -283,7 +283,7 @@ get_noswitch_section (unsigned int flags, noswitch_section_callback callback) a new section with the given fields if no such structure exists. When NOT_EXISTING, then fail if the section already exists. Return the existing section if the SECTION_RETAIN bit doesn't match. Set - the SECTION_WRITE | SECTION_RELRO bits on the the existing section + the SECTION_WRITE | SECTION_RELRO bits on the existing section if one of the section flags is SECTION_WRITE | SECTION_RELRO and the other has none of these flags in named sections and either the section hasn't been declared yet or has been declared as writable. */ diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 82d88ed..f023ce2 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,11 @@ +2022-03-09 Tobias Burnus <tobias@codesourcery.com> + + PR target/102215 + * config/gcn/atomic.c (__sync_val_compare_and_swap_##SIZE): Move + a line up to non-arg-dependent value first. + (__ATOMIC_COMPARE_EXCHANGE): Define + call to generate + __atomic_compare_exchange_{1,2}. + 2022-03-04 Iain Sandoe <iain@sandoe.co.uk> * config/rs6000/t-darwin-ehs: Add darwin-fallback.o. diff --git a/libgcc/config/gcn/atomic.c b/libgcc/config/gcn/atomic.c index 8784f90..cf29fa8 100644 --- a/libgcc/config/gcn/atomic.c +++ b/libgcc/config/gcn/atomic.c @@ -28,9 +28,9 @@ TYPE \ __sync_val_compare_and_swap_##SIZE (TYPE *ptr, TYPE oldval, TYPE newval) \ { \ + unsigned int valmask = (1 << (SIZE * 8)) - 1; \ unsigned int *wordptr = (unsigned int *)((__UINTPTR_TYPE__ ) ptr & ~3UL); \ int shift = ((__UINTPTR_TYPE__ ) ptr & 3UL) * 8; \ - unsigned int valmask = (1 << (SIZE * 8)) - 1; \ unsigned int wordmask = ~(valmask << shift); \ unsigned int oldword = *wordptr; \ for (;;) \ @@ -57,3 +57,30 @@ __sync_bool_compare_and_swap_##SIZE (TYPE *ptr, TYPE oldval, TYPE newval) \ __SYNC_SUBWORD_COMPARE_AND_SWAP (unsigned char, 1) __SYNC_SUBWORD_COMPARE_AND_SWAP (unsigned short, 2) + +#define __ATOMIC_COMPARE_EXCHANGE(TYPE,SIZE) \ +bool \ +__atomic_compare_exchange_##SIZE (TYPE *ptr, TYPE *expected, \ + TYPE desired, bool weak, \ + int success_memorder, int failure_memorder) \ +{ \ + unsigned int valmask = (1 << (SIZE * 8)) - 1; \ + \ + unsigned int *wordptr = (unsigned int *)((__UINTPTR_TYPE__ ) ptr & ~3UL); \ + int ptrshift = ((__UINTPTR_TYPE__ ) ptr & 3UL) * 8; \ + unsigned int wordmask = ~(valmask << ptrshift); \ + \ + unsigned int ptrword = *wordptr; \ + unsigned int exptword = ptrword & wordmask; \ + unsigned int newword = ptrword & wordmask; \ + exptword |= ((unsigned int) *expected) << ptrshift; \ + newword |= ((unsigned int) desired) << ptrshift; \ + if (__atomic_compare_exchange_4 (wordptr, &exptword, newword, weak, \ + success_memorder, failure_memorder)) \ + return true; \ + *expected = (TYPE) ((exptword >> ptrshift) & valmask); \ + return false; \ +} + +__ATOMIC_COMPARE_EXCHANGE (unsigned char, 1) +__ATOMIC_COMPARE_EXCHANGE (unsigned short, 2) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 6237d55..4893e51 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,27 @@ +2022-03-09 Patrick Palka <ppalka@redhat.com> + + PR libstdc++/104859 + * src/c++17/floating_to_chars.cc (__floating_to_chars_hex): + Be explicit when narrowing the shifted effective_mantissa, + since it may have an integer-class type. + +2022-03-08 Jonathan Wakely <jwakely@redhat.com> + + * include/bits/uses_allocator_args.h: Remove incorrect copyright + notice. + +2022-03-07 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/104807 + * include/bits/c++config (__terminate, __glibcxx_assert_fail): + Replace _GLIBCXX_VISIBILITY on function with visibility pragma. + (__is_constant_evaluated): Add visibility pragma. + +2022-03-07 Rasmus Villemoes <rasmus.villemoes@prevas.dk> + + * config/locale/vxworks/ctype_members.cc: Remove <iostream> + include. + 2022-03-05 Jonathan Wakely <jwakely@redhat.com> * include/bits/c++config (__glibcxx_assert_fail): Add visibility diff --git a/libstdc++-v3/config/locale/vxworks/ctype_members.cc b/libstdc++-v3/config/locale/vxworks/ctype_members.cc index 82569d0..d8ca551 100644 --- a/libstdc++-v3/config/locale/vxworks/ctype_members.cc +++ b/libstdc++-v3/config/locale/vxworks/ctype_members.cc @@ -33,7 +33,6 @@ #include <cstdlib> #include <cstring> #include <cstdio> -#include <iostream> namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config index 6c134f1..2798b97 100644 --- a/libstdc++-v3/include/bits/c++config +++ b/libstdc++-v3/include/bits/c++config @@ -302,15 +302,16 @@ namespace std typedef decltype(nullptr) nullptr_t; #endif +#pragma GCC visibility push(default) // This allows the library to terminate without including all of <exception> // and without making the declaration of std::terminate visible to users. extern "C++" __attribute__ ((__noreturn__, __always_inline__)) - _GLIBCXX_VISIBILITY(default) inline void __terminate() _GLIBCXX_USE_NOEXCEPT { void terminate() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__noreturn__)); terminate(); } +#pragma GCC visibility pop } #define _GLIBCXX_USE_DUAL_ABI @@ -506,6 +507,7 @@ namespace std namespace std { +#pragma GCC visibility push(default) // Internal version of std::is_constant_evaluated(). // This can be used without checking if the compiler supports the feature. // The macro _GLIBCXX_HAVE_IS_CONSTANT_EVALUATED can be used to check if @@ -523,6 +525,7 @@ namespace std return false; #endif } +#pragma GCC visibility pop } // Debug Mode implies checking assertions. @@ -553,13 +556,15 @@ namespace std # ifdef _GLIBCXX_VERBOSE_ASSERT namespace std { +#pragma GCC visibility push(default) // Avoid the use of assert, because we're trying to keep the <cassert> // include out of the mix. - extern "C++" _GLIBCXX_NORETURN _GLIBCXX_VISIBILITY(default) + extern "C++" _GLIBCXX_NORETURN void __glibcxx_assert_fail(const char* __file, int __line, const char* __function, const char* __condition) _GLIBCXX_NOEXCEPT; +#pragma GCC visibility pop } #define __glibcxx_assert_impl(_Condition) \ if (__builtin_expect(!bool(_Condition), false)) \ diff --git a/libstdc++-v3/include/bits/uses_allocator_args.h b/libstdc++-v3/include/bits/uses_allocator_args.h index d92dd1f..09cdbf1 100644 --- a/libstdc++-v3/include/bits/uses_allocator_args.h +++ b/libstdc++-v3/include/bits/uses_allocator_args.h @@ -22,20 +22,6 @@ // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see // <http://www.gnu.org/licenses/>. -/* - * Copyright (c) 1997-1999 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - */ - /** @file include/bits/uses_allocator_args.h * This is an internal header file, included by other library headers. * Do not attempt to use it directly. @headername{memory} diff --git a/libstdc++-v3/src/c++17/floating_to_chars.cc b/libstdc++-v3/src/c++17/floating_to_chars.cc index 5825e66..66bd457 100644 --- a/libstdc++-v3/src/c++17/floating_to_chars.cc +++ b/libstdc++-v3/src/c++17/floating_to_chars.cc @@ -801,14 +801,14 @@ template<typename T> char leading_hexit; if constexpr (has_implicit_leading_bit) { - const unsigned nibble = effective_mantissa >> rounded_mantissa_bits; + const auto nibble = unsigned(effective_mantissa >> rounded_mantissa_bits); __glibcxx_assert(nibble <= 2); leading_hexit = '0' + nibble; effective_mantissa &= ~(mantissa_t{0b11} << rounded_mantissa_bits); } else { - const unsigned nibble = effective_mantissa >> (rounded_mantissa_bits-4); + const auto nibble = unsigned(effective_mantissa >> (rounded_mantissa_bits-4)); __glibcxx_assert(nibble < 16); leading_hexit = "0123456789abcdef"[nibble]; effective_mantissa &= ~(mantissa_t{0b1111} << (rounded_mantissa_bits-4)); @@ -853,7 +853,7 @@ template<typename T> while (effective_mantissa != 0) { nibble_offset -= 4; - const unsigned nibble = effective_mantissa >> nibble_offset; + const auto nibble = unsigned(effective_mantissa >> nibble_offset); __glibcxx_assert(nibble < 16); *first++ = "0123456789abcdef"[nibble]; ++written_hexits; |