diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-04-25 07:16:49 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-04-25 07:16:49 +0000 |
commit | 3b2ef6864dbb5abe099620f432bb650e84617af3 (patch) | |
tree | cbdab4041baf268d78a8b620a21bed1417a811d7 | |
parent | 523464ff57eea48adea62ae64f3dadc464250513 (diff) | |
download | gcc-3b2ef6864dbb5abe099620f432bb650e84617af3.tar.gz |
2016-04-25 Basile Starynkevitch <basile@starynkevitch.net>
{{merging with even more of GCC 6, using subversion 1.9
svn merge -r234651:235002 ^/trunk
}}
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@235404 138bc75d-0d04-0410-961f-82ee72b054a4
368 files changed, 18404 insertions, 8464 deletions
diff --git a/ChangeLog b/ChangeLog index 29a5f7a5606..a82e275ab62 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2016-04-13 Segher Boessenkool <segher@kernel.crashing.org> + + PR bootstrap/70173 + * Makefile.tpl (local-distclean): Delete the libcc1, gnattools, + and gotools directories. Delete the stage_final file. + * Makefile.in: Regenerate. + +2016-04-12 Andre Vieira <andre.simoesdiasvieira@arm.com> + + * MAINTAINERS (Write After Approval): Add myself. + +2016-04-09 Steven G. Kargl <kargl@gcc.gnu.org> + + * MAINTAINERS (Fortran maintainer): Remove myself. + +2016-04-04 Bill Seurer <seurer@linux.vnet.ibm.com> + + * MAINTAINERS (Write After Approval): Add myself. + 2016-03-29 Kelvin Nilsen <kdnilsen@linux.vnet.ibm.com> * MAINTAINERS (Write After Approval): Add myself. diff --git a/ChangeLog.MELT b/ChangeLog.MELT index 5ceede3e6ac..6c877b6b43f 100644 --- a/ChangeLog.MELT +++ b/ChangeLog.MELT @@ -1,4 +1,9 @@ +2016-04-25 Basile Starynkevitch <basile@starynkevitch.net> + {{merging with even more of GCC 6, using subversion 1.9 + svn merge -r234651:235002 ^/trunk + }} + 2016-04-18 Basile Starynkevitch <basile@starynkevitch.net> {{merging with even more of GCC 6, using subversion 1.9 svn merge -r234051:234650 ^/trunk diff --git a/MAINTAINERS b/MAINTAINERS index e11eb9b7544..a9dec344e59 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -285,7 +285,6 @@ Fortran François-Xavier Coudert <fxcoudert@gcc.gnu.org> Fortran Jerry DeLisle <jvdelisle@gcc.gnu.org> Fortran Erik Edelmann <erik.edelmann@iki.fi> Fortran Daniel Franke <franke.daniel@gmail.com> -Fortran Steven G. Kargl <sgk@troutmask.apl.washington.edu> Fortran Thomas König <tkoenig@gcc.gnu.org> Fortran Daniel Kraft <d@domob.eu> Fortran Toon Moene <toon@moene.org> @@ -566,6 +565,7 @@ Martin Sebor <msebor@gcc.gnu.org> Dodji Seketeli <dodji@gcc.gnu.org> Svein Seldal <svein@dev.seldal.com> Thiemo Seufer <ths@networkno.de> +Bill Seurer <seurer@linux.vnet.ibm.com> Marcus Shawcroft <marcus.shawcroft@arm.com> Tim Shen <timshen@google.com> David Sherwood <david.sherwood@arm.com> @@ -606,6 +606,7 @@ Joost VandeVondele <joost.vandevondele@mat.ethz.ch> Andre Vehreschild <vehre@gmx.de> Alex Velenko <alex.velenko@arm.com> Ilya Verbin <iverbin@gmail.com> +Andre Vieira <andre.simoesdiasvieira@arm.com> Kugan Vivekanandarajah <kuganv@linaro.org> Ville Voutilainen <ville.voutilainen@gmail.com> Tom de Vries <tom@codesourcery.com> diff --git a/Makefile.in b/Makefile.in index a519a547533..1522e39ec5b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -2316,7 +2316,7 @@ local-clean: local-distclean: -rm -f Makefile config.status config.cache mh-frag mt-frag - -rm -f maybedep.tmp serdep.tmp + -rm -f maybedep.tmp serdep.tmp stage_final -if [ "$(TARGET_SUBDIR)" != "." ]; then \ rm -rf $(TARGET_SUBDIR); \ else true; fi @@ -2328,7 +2328,8 @@ local-distclean: -rm -f texinfo/doc/Makefile texinfo/po/POTFILES -rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null -rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null - -rmdir fastjar gcc libiberty texinfo zlib 2>/dev/null + -rmdir fastjar gcc gnattools gotools libcc1 libiberty 2>/dev/null + -rmdir texinfo zlib 2>/dev/null -find . -name config.cache -exec rm -f {} \; \; 2>/dev/null local-maintainer-clean: diff --git a/Makefile.tpl b/Makefile.tpl index 829f664ae00..6b2eb6aca50 100644 --- a/Makefile.tpl +++ b/Makefile.tpl @@ -810,7 +810,7 @@ local-clean: local-distclean: -rm -f Makefile config.status config.cache mh-frag mt-frag - -rm -f maybedep.tmp serdep.tmp + -rm -f maybedep.tmp serdep.tmp stage_final -if [ "$(TARGET_SUBDIR)" != "." ]; then \ rm -rf $(TARGET_SUBDIR); \ else true; fi @@ -822,7 +822,8 @@ local-distclean: -rm -f texinfo/doc/Makefile texinfo/po/POTFILES -rmdir texinfo/doc texinfo/info texinfo/intl texinfo/lib 2>/dev/null -rmdir texinfo/makeinfo texinfo/po texinfo/util 2>/dev/null - -rmdir fastjar gcc libiberty texinfo zlib 2>/dev/null + -rmdir fastjar gcc gnattools gotools libcc1 libiberty 2>/dev/null + -rmdir texinfo zlib 2>/dev/null -find . -name config.cache -exec rm -f {} \; \; 2>/dev/null local-maintainer-clean: diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 54f9d5e72b2..56f2fec809f 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,8 @@ +2016-04-13 Martin Sebor <msebor@redhat.com> + + * check_GNU_style.sh: Avoid false posivies in trailing operator + checks. + 2016-03-07 Martin Sebor <msebor@redhat.com> * check_GNU_style.sh (color): New global variable. diff --git a/contrib/check_GNU_style.sh b/contrib/check_GNU_style.sh index fbf6cb2465d..a7478f8f573 100755 --- a/contrib/check_GNU_style.sh +++ b/contrib/check_GNU_style.sh @@ -240,6 +240,7 @@ g 'There should be no space before closing parenthesis.' \ g 'Braces should be on a separate line.' \ '(\)|else)[[:blank:]]*{' -# Does this apply to definition of aggregate objects? -g 'Trailing operator.' \ +# Does this apply to definitions of aggregate objects? +ag 'Trailing operator.' \ + '^[1-9][0-9]*:\+[[:space:]]' \ '(([^a-zA-Z_]\*)|([-%<=&|^?])|([^*]/)|([^:][+]))$' diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 123987ead6d..f6fdeffcc53 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,559 @@ +2016-04-14 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR target/70669 + * config/rs6000/rs6000.c (rs6000_init_hard_regno_mode_ok): Add + direct move handlers for KFmode. Change TFmode handlers test from + FLOAT128_IEEE_P to FLOAT128_VECTOR_P. + +2016-04-14 Jakub Jelinek <jakub@redhat.com> + + PR c++/70594 + * ipa-utils.h (polymorphic_ctor_dtor_p): New prototype. + * ipa-polymorphic-call.c (polymorphic_ctor_dtor_p): New function. + (inlined_polymorphic_ctor_dtor_block_p): Use it. + * tree-ssa-live.c (remove_unused_scope_block_p): When + in_ctor_dtor_block, avoid discarding not just BLOCKs with + BLOCK_ABSTRACT_ORIGIN being FUNCTION_DECL, but even when + block_ultimate_origin is FUNCTION_DECL. + (remove_unused_locals): If current_function_decl is + polymorphic_ctor_dtor_p, pass initial true to + remove_unused_scope_block_p' is_ctor_dtor_block. + +2016-04-14 Martin Sebor <msebor@redhat.com> + + PR c++/69517 + PR c++/70019 + PR c++/70588 + * doc/extend.texi (Variable Length): Revert. + +2016-04-14 Marek Polacek <polacek@redhat.com> + Jan Hubicka <hubicka@ucw.cz> + + PR c++/70029 + * tree.c (verify_type): Disable the canonical type of main variant + check. + +2016-04-14 Jason Merrill <jason@redhat.com> + + * cfgexpand.c, expr.c: Revert previous change. + +2016-04-14 Cesar Philippidis <cesar@codesourcery.com> + + PR middle-end/70643 + * omp-low.c (lower_oacc_reductions): Check for TREE_CONSTANT + when building a mem ref for the incoming reduction variable. + +2016-04-14 Richard Biener <rguenther@suse.de> + + PR tree-optimization/70614 + * tree-scalar-evolution.c (analyze_evolution_in_loop): Terminate + loop if the evolution dropped to chrec_dont_know. + (interpret_condition_phi): Likewise. + +2016-04-14 Richard Biener <rguenther@suse.de> + + PR tree-optimization/70623 + * tree-ssa-pre.c (changed_blocks): Make global ... + (compute_antic): ... local here. Move and fix worklist + handling here. Do not clear EDGE_DFS_BACK or call mark_dfs_back_edges. + (compute_antic_aux): Add dumping for MAX assumed succs. Remove + worklist handling, dump when ANTIC_IN changed. + (compute_partial_antic_aux): Remove worklist handling. + (init_pre): Do not compute post dominators. Add a comment about + the CFG order chosen. + (fini_pre): Do not free post dominators. + +2016-04-13 Martin Sebor <msebor@redhat.com> + + PR c++/69517 + PR c++/70019 + PR c++/70588 + * doc/extend.texi (Variable Length): Document C++ specifics. + +2016-04-13 Jakub Jelinek <jakub@redhat.com> + + PR c++/70641 + * ipa-pure-const.c (pass_nothrow::execute): Call maybe_clean_eh_stmt + on all recursive call stmts. Return TODO_cleanup_cfg if any dead + eh edges have been purged. + + PR c++/70594 + * tree-sra.c (create_access_replacement, + get_replaced_param_substitute): Set DECL_NAMELESS on repl if it + gets fancy name. + * tree-pretty-print.c (dump_fancy_name): New function. + (dump_decl_name, dump_generic_node): Use it. + +2016-04-13 Jason Merrill <jason@redhat.com> + + * cfgexpand.c (pass_expand::execute): Handle attribute "abi warning". + * expr.c (expand_expr_real_1): Likewise. + +2016-04-13 Ilya Enkovich <ilya.enkovich@intel.com> + + * config/i386/i386.md (kunpckhi): Swap operands. + (kunpcksi): Likewise. + (kunpckdi): Likewise. + * config/i386/sse.md (vec_pack_trunc_qi): Likewise. + (vec_pack_trunc_<mode>): Likewise. + +2016-04-13 Jakub Jelinek <jakub@redhat.com> + + PR debug/70628 + * explow.c (convert_memory_address_addr_space_1): Formatting fix. + + PR middle-end/70633 + * gimplify.c (gimplify_init_constructor): Clear TREE_STATIC if + gimplification turns some element into non-constant. + + PR debug/70628 + * rtl.h (convert_memory_address_addr_space_1): New prototype. + * explow.c (convert_memory_address_addr_space_1): No longer static, + add NO_EMIT argument and don't call convert_modes if true, pass + it down recursively, remove break after return. + (convert_memory_address_addr_space): Adjust caller. + * simplify-rtx.c (simplify_unary_operation_1): Call + convert_memory_address_addr_space_1 instead of convert_memory_address, + if it returns NULL, don't simplify. + +2016-04-12 Eric Botcazou <ebotcazou@adacore.com> + + PR target/70630 + * config/sparc/sparc.c (sparc_compute_frame_size): Add parentheses. + +2016-04-12 Jakub Jelinek <jakub@redhat.com> + + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + Bump the upper SIMDLEN limits, so that if the return type or + characteristic type if the return type is void can be passed in + all available SSE2/AVX/AVX2/AVX512-F registers, the SIMDLEN is + allowed. + +2016-04-12 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR target/70640 + * config/rs6000/rs6000.md (ieee_128bit_vsx_neg<mode>2_internal): + Do not use "=" constraint on an input constraint. + (ieee_128bit_vsx_abs<mode>2_internal): Likewise. + (ieee_128bit_vsx_nabs<mode>2_internal): Likewise. + (ieee_128bit_vsx_nabs<mode>2): Correct splitter so that it + generates (neg (abs ...)) instead of (abs ...). + +2016-04-12 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/70596 + * lra-spills.c (spill_pseudos): Don't delete debug insns, instead + just invalidate LRA data and reset them. Adjust dump wording. + +2016-04-12 Martin Liska <mliska@suse.cz> + + Revert + 2016-03-30 Jan Hubicka <hubicka@ucw.cz> + + * tree-ssa-loop-niter.c (idx_infer_loop_bounds): We can't get realistic + estimates here. + * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Use also + max_loop_iterations_int. + (tree_unswitch_outer_loop): Likewise. + * tree-ssa-loop-ivopts.c (avg_loop_niter): Likewise. + * tree-vect-loop.c (vect_analyze_loop_2): Likewise. + +2016-04-12 Tom de Vries <tom@codesourcery.com> + + PR tree-optimization/68756 + * graphite-isl-ast-to-gimple.c (copy_cond_phi_args): Use new_expr + instead of new_name. + +2016-04-12 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/70602 + * tree-sra.c (generate_subtree_copies): Don't write anything into + constant pool decls. + + * omp-low.c (lower_omp_target): Use GOMP_MAP_FIRSTPRIVATE_INT + regardless whether there are depend clauses or not. + +2016-04-11 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR target/70381 + * config/rs6000/rs6000.c (rs6000_opt_masks): Disable using the + target attribute and pragma from changing the -mfloat128 + and -mfloat128-hardware options. + + * doc/extend.texi (Additional Floating Types): Document PowerPC + __float128 restrictions. + +2016-04-11 James Greenhalgh <james.greenhalgh@arm.com> + + PR target/70133 + * config/aarch64/driver-aarch64.c + (aarch64_get_extension_string_for_isa_flags): New. + (arch_extension): Rename to... + (aarch64_arch_extension): ...This. + (ext_to_feat_string): Rename to... + (aarch64_extensions): ...This. + (aarch64_core_data): Keep track of architecture extension flags. + (cpu_data): Rename to... + (aarch64_cpu_data): ...This. + (aarch64_arch_driver_info): Keep track of architecture extension + flags. + (get_arch_name_from_id): Rename to... + (get_arch_from_id): ...This, change return type. + (host_detect_local_cpu): Update and reformat for renames, handle + extensions through common infrastructure. + +2016-04-11 James Greenhalgh <james.greenhalgh@arm.com> + + PR target/70133 + * config/aarch64/aarch64-common.c (aarch64_option_extension): Keep + track of a canonical flag name. + (all_extensions): Likewise. + (arch_to_arch_name): Also track extension flags enabled by the arch. + (all_architectures): Likewise. + (aarch64_parse_extension): Move to here. + (aarch64_get_extension_string_for_isa_flags): Take a new argument, + rework. + (aarch64_rewrite_selected_cpu): Update for above change. + * config/aarch64/aarch64-option-extensions.def: Rework the way flags + are handled, such that the single explicit value enabled by an + extension is kept seperate from the implicit values it also enables. + * config/aarch64/aarch64-protos.h (aarch64_parse_opt_result): Move + to here. + (aarch64_parse_extension): New. + * config/aarch64/aarch64.c (aarch64_parse_opt_result): Move from + here to config/aarch64/aarch64-protos.h. + (aarch64_parse_extension): Move from here to + common/config/aarch64/aarch64-common.c. + (aarch64_option_print): Update. + (aarch64_declare_function_name): Likewise. + (aarch64_start_file): Likewise. + * config/aarch64/driver-aarch64.c (arch_extension): Keep track of + the canonical flag for extensions. + * config.gcc (aarch64*-*-*): Extend regex for capturing extension + flags. + +2016-04-11 James Greenhalgh <james.greenhalgh@arm.com> + + * config/aarch64/aarch64.h (AARCH64_FL_FOR_ARCH8_1): Also add + AARCH64_FL_CRC. + +2016-04-09 Tom de Vries <tom@codesourcery.com> + + PR tree-optimization/68953 + * graphite-sese-to-poly.c (pdr_add_memory_accesses): Order accesses from + first to last subscript. + +2016-04-09 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/70586 + * tree-ssa-ifcombine.c (bb_no_side_effects_p): Return false + for any calls. + +2016-04-08 Cesar Philippidis <cesar@codesourcery.com> + + PR lto/70289 + PR ipa/70348 + PR tree-optimization/70373 + PR middle-end/70533 + PR middle-end/70534 + PR middle-end/70535 + * gimplify.c (gimplify_adjust_omp_clauses): Add or adjust data + clauses for acc parallel reductions as necessary. Error on those + that are private. + * omp-low.c (scan_sharing_clauses): Don't install variables which + are used in acc parallel reductions. + (lower_rec_input_clauses): Remove dead code. + (lower_oacc_reductions): Add support for reference reductions. + (lower_reduction_clauses): Remove dead code. + (lower_omp_target): Don't remap variables appearing in acc parallel + reductions. + * tree.h (OMP_CLAUSE_MAP_IN_REDUCTION): New macro. + +2016-04-08 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/70593 + * tree-ssa-coalesce.c (build_ssa_conflict_graph): For stmt + with multiple SSA_NAME defs, force the outputs other than first + to be live before calling live_track_process_def on each output. + + PR rtl-optimization/70574 + * fwprop.c (forward_propagate_and_simplify): Don't add + REG_EQUAL note if DF_REF_REG (use) is a paradoxical subreg. + (try_fwprop_subst): Don't add REG_EQUAL note if there are any + paradoxical subregs within *loc. + +2016-04-08 Thomas Schwinge <thomas@codesourcery.com> + + * config/arc/arc.h (LINK_COMMAND_SPEC): Use gt to ignore + -ftree-parallelize-loops={0,1}. + * config/darwin.h (LINK_COMMAND_SPEC_A): Likewise. + * config/i386/mingw32.h (GOMP_SELF_SPECS): Likewise. + * config/ia64/hpux.h (LIB_SPEC): Likewise. + * config/pa/pa-hpux11.h (LIB_SPEC): Likewise. + * config/pa/pa64-hpux.h (LIB_SPEC): Likewise. + +2016-04-08 Maxim Ostapenko <m.ostapenko@samsung.com> + + PR sanitizer/70541 + * asan.c (instrument_derefs): If we get unknown location, extract it + with EXPR_LOCATION. + (maybe_instrument_call): Instrument gimple_call's arguments if needed. + +2016-04-08 Tom de Vries <tom@codesourcery.com> + + * omp-low.c (lower_omp_target): Set TREE_NO_WARNING for oacc + implicit firstprivate clause. + +2016-04-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + PR target/70566 + * config/arm/thumb2.md (tst + branch-> lsls + branch + peephole below *orsi_not_shiftsi_si): Require that condition + register is dead after the peephole. + (second peephole after the above): Likewise. + +2016-04-08 Alan Modra <amodra@gmail.com> + + PR target/70117 + * builtins.c (fold_builtin_classify): For IBM extended precision, + look at just the high-order double to test for NaN. + (fold_builtin_interclass_mathfn): Similarly for Inf. For isnormal + test just the high double for Inf but both doubles for subnormal + limit. + +2016-04-07 Jakub Jelinek <jakub@redhat.com> + + * cgraph.h (struct cgraph_simd_clone): Add mask_mode field. + * omp-low.c (simd_clone_init_simd_arrays, simd_clone_adjust): Handle + node->simdclone->mask_mode != VOIDmode masks. + (simd_clone_adjust_argument_types): Likewise. Move sc var definition + earlier, use it instead of node->simdclone. + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + Set clonei->mask_mode. + +2016-04-06 Patrick Palka <ppalka@gcc.gnu.org> + + PR c/70436 + * parser.c (cp_parser_iteration_statement): New parameter IF_P. + Pass it through to cp_parser_already_scoped_statement. + (cp_parser_already_scoped_statement): New parameter IF_P. Pass + it through to cp_parser_statement. + (cp_parser_statement): Pass IF_P through to + cp_parser_iteration_statement. + (cp_parser_pragma): Adjust call to + cp_parser_iteration_statement. + +2016-04-06 Patrick Palka <ppalka@gcc.gnu.org> + + PR c/70436 + * gimplify.c (gimplify_omp_ordered): Add explicit braces to + resolve a future -Wparentheses warning. + * omp-low.c (scan_sharing_clauses): Likewise. + * tree-parloops.c (eliminate_local_variables): Likewise. + +2016-04-06 Vladimir Makarov <vmakarov@redhat.com> + + PR rtl-optimization/70398 + * lra-constraints.c (process_address_1): Check zero scale and code + for reloading with zero scale. + +2016-04-06 Uros Bizjak <ubizjak@gmail.com> + + * config/i386/sse.md (shuffletype): Add V32HI and V4TI modes. + (ssescalarsize): Add V8SF, V4SF, V4DF and V2DF modes. + +2016-04-06 Jakub Jelinek <jakub@redhat.com> + + * config/i386/i386.c (ix86_simd_clone_compute_vecsize_and_simdlen): + Add support for AVX512F clones, include them by default for + exported OpenMP declare simd functions. For AVX2 allow simdlen 32 + and use it if charasteric type is 8-bit, for AVX512F allow simdlen + up to 128. + + PR middle-end/70550 + * tree.h (OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT): Define. + * gimplify.c (gimplify_adjust_omp_clauses_1): Set it for implicit + firstprivate clauses. + * omp-low.c (lower_send_clauses): Set TREE_NO_WARNING for + OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT !by_ref vars in task contexts. + (lower_omp_target): Set TREE_NO_WARNING for + non-addressable possibly uninitialized vars which are copied into + addressable temporaries or copied for GOMP_MAP_FIRSTPRIVATE_INT. + +2016-04-05 John David Anglin <danglin@gcc.gnu.org> + + * config/pa/predicates.md (integer_store_memory_operand): Accept + REG+D operands with a large offset when reload_in_progress is true. + (floating_point_store_memory_operand): Likewise. + +2016-04-05 Jakub Jelinek <jakub@redhat.com> + + PR c++/70336 + * match.pd (nested int casts): Limit to GIMPLE. + +2016-04-05 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/66223 + * ipa-devirt.c (maybe_record_node): Fix comment; use + SANITIZE_UNREACHABLE instead of SANITIZE_UNDEFINED. + +2016-04-05 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/70542 + * ree.c (add_removable_extension): For VECTOR_MODE_P punt + if there are any uses other than insn or debug insns. + +2016-04-05 Marc Glisse <marc.glisse@inria.fr> + Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/70509 + * simplify-rtx.c (simplify_binary_operation_1) <case VEC_SELECT>: + Shift HOST_WIDE_INT_1U instead of 1. + +2016-04-05 Zdenek Sojka <zsojka@seznam.cz> + + PR tree-optimization/70509 + * tree-ssa-forwprop.c (simplify_bitfield_ref): Use bitsize_int instead + of the vector base type for index. + +2016-04-05 Uros Bizjak <ubizjak@gmail.com> + + PR target/70510 + * config/i386/sse.md (iptr): Add V64QI, V32HI, V16SI and V8DI modes. + +2016-04-05 Richard Biener <rguenther@suse.de> + + PR tree-optimization/70526 + * tree-sra.c (build_ref_for_offset): Use prev_base to + extract the alias pointer type. + +2016-04-05 Richard Biener <rguenther@suse.de> + + * dse.c (struct store_info): Remove alias_set member. + (struct read_info_type): Likewise. + (clear_alias_group, clear_alias_mode_table, clear_alias_mode_holder, + spill_deleted, clear_alias_set_lookup): Remove. + (get_group_info): Remove dead base == NULL_RTX case. + (dse_step0): Remove initialization of removed variables. + (delete_dead_store_insn): Reomve alias set dumping. + (free_read_records): Remove alias_set handling. + (canon_address): Remove alias_set_out parameter. + (record_store): Remove spill_alias_set, it's always zero. + (check_mem_read_rtx): Likewise. + (dse_step2): Rename from ... + (dse_step2_nospill): ... this. Adjust. + (scan_stores): Rename from ... + (scan_stores_nospill): ... this. + (scan_reads): Rename from ... + (scan_reads_nospill): ... this. + (scan_stores_spill, scan_reads_spill): Remove. + (dse_step3_scan): Remove for_spills argument which is always false. + (dse_step3): Likewise. + (dse_step5): Rename from ... + (dse_step5_nospill): ... this. Remove alias_set handling. + (rest_of_handle_dse): Adjust. + +2016-04-05 Jakub Jelinek <jakub@redhat.com> + + PR target/70525 + * config/i386/sse.md (*andnot<mode>3): Simplify assertions. + Use vpandn<ssemodesuffix> for V16SI/V8DImode, vpandnq for + V32HI/V64QImode, don't use <mask_operand3_1>, fix up formatting. + (*andnot<mode>3_mask): Remove insn with VI12_AVX512VL iterator. + +2016-04-05 Richard Biener <rguenther@suse.de> + + PR middle-end/70499 + * gimplify-me.c (gimple_regimplify_operands): Do not rewrite + non-register type temporaries into SSA. + +2016-04-04 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/66223 + * ipa-devirt.c (maybe_record_node): Do not optimize cxa_pure_virtual + calls when sanitizing. + (possible_polymorphic_call_target_p): Fix formatting. + +2016-04-04 Bill Schmidt <wschmidt@linux.vnet.ibm.com> + Jakub Jelinek <jakub@redhat.com> + + PR middle-end/70457 + * tree-inline.c (estimate_num_insn): Use gimple_call_builtin_p + to ensure a call statement is compatible with a built-in's + prototype. + * tree-ssa-math-opts.c (pass_optimize_windening_mul::execute): + Likewise. + +2016-04-04 Richard Biener <rguenther@suse.de> + + PR rtl-optimization/70484 + * rtl.h (canon_output_dependence): Declare. + * alias.c (canon_output_dependence): New function. + * dse.c (record_store): Use canon_output_dependence rather + than canon_true_dependence. + +2016-03-30 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/68881 + * cgraph.h (symtab_node::copy_visibility_from): New function. + * symtab.c (symtab_node::copy_visibility_from): New function. + * ipa-visibility.c (optimize_weakref): New function. + (function_and_variable_visibility): Use it. + +2016-04-04 Martin Liska <mliska@suse.cz> + + PR hsa/70402 + * hsa-gen.c (gen_hsa_insns_for_switch_stmt): Guard index + value that is really in range handled by SBR instruction. + * hsa-brig.c (emit_switch_insn): Do not emit unconditional jump. + * hsa-dump.c (dump_hsa_insn_1): Do not dump default BB. + * hsa.h (hsa_insn_sbr::m_default_bb): Remove field. + +2016-04-03 Oleg Endo <olegendo@gcc.gnu.org> + + PR target/70416 + PR target/67391 + * config/sh/sh.md (*addsi3): Allow pattern when reload_in_progress is + set, but not for SP_REG operands. + +2016-04-02 Martin Sebor <msebor@redhat.com> + + PR c++/67376 + * fold-const.c (maybe_nonzero_address): New function. + (fold_comparison): Call it. Fold equality and relational + expressions involving null pointers. + (tree_single_nonzero_warnv_p): Call maybe_nonzero_address. + +2016-03-31 Evandro Menezes <e.menezes@samsung.com> + + Fix the predicate "aarch64_simd_reg_or_zero" to correctly validate + the "Y" constraint (scalar FP 0.0 immediate). + + * gcc/config/aarch64/predicates.md (aarch64_simd_reg_or_zero): + Add the "const_double" to the list of operand constraints. + +2016-04-01 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/70467 + * config/i386/i386.md (*add<dwi>3_doubleword, *sub<dwi>3_doubleword): + If low word of the last operand is 0, just emit addition/subtraction + for the high word. + +2016-04-01 Andreas Krebbel <krebbel@linux.vnet.ibm.com> + + PR target/70404 + * config/s390/s390.c (s390_expand_insv): Check for everything + constant instead of just VOIDmode stuff. + +2016-04-01 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> + + PR target/70496 + * config/arm/arm.h (ASM_APP_OFF): Handle TARGET_ARM and TARGET_THUMB. + +2016-04-01 Nathan Sidwell <nathan@acm.org> + + * tree.def (TRY_CATCH_EXPR): Correct documentation. + 2016-03-31 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/70461 @@ -39,8 +595,7 @@ (pass_gen_hsail::execute): Do not call convert_switch_statements here. * hsa-regalloc.c (hsa_regalloc): Call update_dominance. - * hsa.h (hsa_function_representation::m_modified_cfg): - New flag. + * hsa.h (hsa_function_representation::m_modified_cfg): New flag. (hsa_function_representation::update_dominance): New function. 2016-03-31 Martin Liska <mliska@suse.cz> @@ -48,23 +603,19 @@ PR hsa/70391 * hsa-brig.c (emit_directive_variable): Emit alignment according to hsa_symbol::m_align. - * hsa-dump.c (hsa_byte_alignment): Move the function to - another file. + * hsa-dump.c (hsa_byte_alignment): Move the function to another file. (dump_hsa_symbol): Dump alignment of HSA symbols. - * hsa-gen.c (get_symbol_for_decl): Set-up alignment - of a symbol. + * hsa-gen.c (get_symbol_for_decl): Set-up alignment of a symbol. (gen_hsa_addr_with_align): New function. (hsa_bitmemref_alignment): Use newly added function. (gen_hsa_insns_for_load): Likewise. (gen_hsa_insns_for_store): Likewise. (gen_hsa_memory_copy): New argument added. (gen_hsa_insns_for_single_assignment): Respect - alignment for assignments processed via - gen_hsa_memory_copy. + alignment for assignments processed via gen_hsa_memory_copy. (gen_hsa_insns_for_direct_call): Likewise. (gen_hsa_insns_for_return): Likewise. - (gen_function_def_parameters): Set default - alignment. + (gen_function_def_parameters): Set default alignment. * hsa.c (hsa_object_alignment): New function. (hsa_byte_alignment): Pasted function. * hsa.h (hsa_symbol::m_align): New field. @@ -81,16 +632,15 @@ 2016-03-31 Ilya Enkovich <enkovich.gnu@gmail.com> PR target/70442 - * config/i386/i386.c (scalar_chain::convert_op): Fix - description. + * config/i386/i386.c (scalar_chain::convert_op): Fix description. (scalar_chain::convert_insn): Call convert_op for reg moves to handle undefined registers. 2016-03-31 Nathan Sidwell <nathan@acm.org> PR c++/70393 - * varasm.c (output_constructor_regular_field): Flush bitfield - earlier. Assert we don't want to move backwards. + * varasm.c (output_constructor_regular_field): Flush bitfield earlier. + Assert we don't want to move backwards. 2016-03-31 Kirill Yukhin <kirill.yukhin@intel.com> @@ -131,8 +681,7 @@ 2016-03-30 Richard Biener <rguenther@suse.de> PR middle-end/70450 - * fold-const.c (extract_muldiv_1): Fix thinko in wide_int::from - usage. + * fold-const.c (extract_muldiv_1): Fix thinko in wide_int::from usage. 2016-03-30 Jakub Jelinek <jakub@redhat.com> @@ -146,6 +695,12 @@ * config/arm/arm.c (arm_reload_out_hi): Add code to handle the case where we are already provided with an SImode SUBREG. +2016-03-30 H.J. Lu <hongjiu.lu@intel.com> + + PR target/70439 + * config/i386/i386.c (ix86_expand_epilogue): Properly check + conflict between DRAP register and __builtin_eh_return. + 2016-03-30 Michael Matz <matz@suse.de> Richard Biener <rguenther@suse.de> @@ -173,8 +728,7 @@ 2016-03-29 Jeff Law <law@redhat.com> - * tree-ssa-coalesce.c (struct ssa_conflicts): Fix typo in - comment. + * tree-ssa-coalesce.c (struct ssa_conflicts): Fix typo in comment. 2016-03-10 Jan Hubicka <hubicka@ucw.cz> @@ -206,8 +760,7 @@ mode != result_mode. PR c++/70353 - * tree-inline.c (remap_decls): Don't add_local_decl if - cfun is null. + * tree-inline.c (remap_decls): Don't add_local_decl if cfun is null. PR tree-optimization/70405 * ssa-iterators.h (num_imm_uses): Add missing braces. @@ -221,8 +774,7 @@ 2016-03-29 Richard Henderson <rth@redhat.com> PR middle-end/70355 - * lower-subreg.c (simplify_subreg_concatn): Reject paradoxical - subregs. + * lower-subreg.c (simplify_subreg_concatn): Reject paradoxical subregs. 2016-03-29 Richard Biener <rguenther@suse.de> @@ -236,17 +788,16 @@ 2016-03-28 James Bowman <james.bowman@ftdichip.com> * config/ft32/ft32.opt (mnodiv): New. - * config/ft32/ft32.md (*divsi3, *modsi3): Qualify with - TARGET_NODIV. + * config/ft32/ft32.md (*divsi3, *modsi3): Qualify with TARGET_NODIV. * doc/invoke.texi (FT32 Options -mnodiv): New. 2016-03-28 Kirill Yukhin <kirill.yukhin@intel.com> - PR target/70406 - * config/i386/i386.md (define_split, andn): Fix modes. + PR target/70406 + * config/i386/i386.md (define_split, andn): Fix modes. 2016-03-26 Richard Biener <rguenther@suse.de> - Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> + Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> PR ipa/70366 * ipa-inline-transform.c (inline_call): Pass opts_for_fn (to->decl) @@ -289,7 +840,7 @@ 2016-03-24 Richard Henderson <rth@redhat.com> - PR middle-end/69845 + PR middle-end/69845 * fold-const.c (extract_muldiv_1): Correct test for multiplication overflow. diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 1528ea5fdf3..8460464baaa 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20160331 +20160415 diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 0c9b179792d..6f84ab32693 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,6 +1,11 @@ +2016-04-02 Eric Botcazou <ebotcazou@adacore.com> + + * gcc-interface/decl.c (components_to_record): Restrict the previous + change to fields with variable size. + 2016-03-27 Eric Botcazou <ebotcazou@adacore.com> - * gcc-interface/decl.c (components_to_record): Add special case for + * gcc-interface/decl.c (components_to_record): Add special case for single field with representation clause at offset 0. 2016-03-16 Svante Signell <svante.signell@gmail.com> diff --git a/gcc/ada/gcc-interface/decl.c b/gcc/ada/gcc-interface/decl.c index ad8452810d4..87026e742bb 100644 --- a/gcc/ada/gcc-interface/decl.c +++ b/gcc/ada/gcc-interface/decl.c @@ -7606,13 +7606,15 @@ components_to_record (tree gnu_record_type, Node_Id gnat_component_list, if (p_gnu_rep_list && gnu_rep_list) *p_gnu_rep_list = chainon (*p_gnu_rep_list, gnu_rep_list); - /* If only one field has a rep clause and it starts at 0, put back the field - at the head of the regular field list. This will avoid creating a useless - REP part below and deal with the annoying case of an extension of a record - with variable size and rep clause, for which the _Parent field is forced - at offset 0 and has variable size, which we do not support below. */ + /* Deal with the annoying case of an extension of a record with variable size + and partial rep clause, for which the _Parent field is forced at offset 0 + and has variable size, which we do not support below. Note that we cannot + do it if the field has fixed size because we rely on the presence of the + REP part built below to trigger the reordering of the fields in a derived + record type when all the fields have a fixed position. */ else if (gnu_rep_list && !DECL_CHAIN (gnu_rep_list) + && TREE_CODE (DECL_SIZE (gnu_rep_list)) != INTEGER_CST && !variants_have_rep && first_free_pos && integer_zerop (first_free_pos) diff --git a/gcc/alias.c b/gcc/alias.c index 753e1aff0b1..a0e25dcce06 100644 --- a/gcc/alias.c +++ b/gcc/alias.c @@ -3057,6 +3057,20 @@ output_dependence (const_rtx mem, const_rtx x) /*mem_canonicalized=*/false, /*x_canonicalized*/false, /*writep=*/true); } + +/* Likewise, but we already have a canonicalized MEM, and X_ADDR for X. + Also, consider X in X_MODE (which might be from an enclosing + STRICT_LOW_PART / ZERO_EXTRACT). + If MEM_CANONICALIZED is true, MEM is canonicalized. */ + +int +canon_output_dependence (const_rtx mem, bool mem_canonicalized, + const_rtx x, machine_mode x_mode, rtx x_addr) +{ + return write_dependence_p (mem, x, x_mode, x_addr, + mem_canonicalized, /*x_canonicalized=*/true, + /*writep=*/true); +} diff --git a/gcc/asan.c b/gcc/asan.c index 47bfdcde53d..71095fb9b1f 100644 --- a/gcc/asan.c +++ b/gcc/asan.c @@ -1766,6 +1766,8 @@ instrument_derefs (gimple_stmt_iterator *iter, tree t, tree type, base; HOST_WIDE_INT size_in_bytes; + if (location == UNKNOWN_LOCATION) + location = EXPR_LOCATION (t); type = TREE_TYPE (t); switch (TREE_CODE (t)) @@ -2049,6 +2051,7 @@ maybe_instrument_call (gimple_stmt_iterator *iter) gsi_insert_before (iter, g, GSI_SAME_STMT); } + bool instrumented = false; if (gimple_store_p (stmt)) { tree ref_expr = gimple_call_lhs (stmt); @@ -2056,11 +2059,30 @@ maybe_instrument_call (gimple_stmt_iterator *iter) gimple_location (stmt), /*is_store=*/true); - gsi_next (iter); - return true; + instrumented = true; } - return false; + /* Walk through gimple_call arguments and check them id needed. */ + unsigned args_num = gimple_call_num_args (stmt); + for (unsigned i = 0; i < args_num; ++i) + { + tree arg = gimple_call_arg (stmt, i); + /* If ARG is not a non-aggregate register variable, compiler in general + creates temporary for it and pass it as argument to gimple call. + But in some cases, e.g. when we pass by value a small structure that + fits to register, compiler can avoid extra overhead by pulling out + these temporaries. In this case, we should check the argument. */ + if (!is_gimple_reg (arg) && !is_gimple_min_invariant (arg)) + { + instrument_derefs (iter, arg, + gimple_location (stmt), + /*is_store=*/false); + instrumented = true; + } + } + if (instrumented) + gsi_next (iter); + return instrumented; } /* Walk each instruction of all basic block and instrument those that diff --git a/gcc/builtins.c b/gcc/builtins.c index 9368ed0f5e3..3d89bafe34a 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -7529,6 +7529,8 @@ fold_builtin_interclass_mathfn (location_t loc, tree fndecl, tree arg) mode = TYPE_MODE (TREE_TYPE (arg)); + bool is_ibm_extended = MODE_COMPOSITE_P (mode); + /* If there is no optab, try generic code. */ switch (DECL_FUNCTION_CODE (fndecl)) { @@ -7538,10 +7540,18 @@ fold_builtin_interclass_mathfn (location_t loc, tree fndecl, tree arg) { /* isinf(x) -> isgreater(fabs(x),DBL_MAX). */ tree const isgr_fn = builtin_decl_explicit (BUILT_IN_ISGREATER); - tree const type = TREE_TYPE (arg); + tree type = TREE_TYPE (arg); REAL_VALUE_TYPE r; char buf[128]; + if (is_ibm_extended) + { + /* NaN and Inf are encoded in the high-order double value + only. The low-order value is not significant. */ + type = double_type_node; + mode = DFmode; + arg = fold_build1_loc (loc, NOP_EXPR, type, arg); + } get_max_float (REAL_MODE_FORMAT (mode), buf, sizeof (buf)); real_from_string (&r, buf); result = build_call_expr (isgr_fn, 2, @@ -7554,10 +7564,18 @@ fold_builtin_interclass_mathfn (location_t loc, tree fndecl, tree arg) { /* isfinite(x) -> islessequal(fabs(x),DBL_MAX). */ tree const isle_fn = builtin_decl_explicit (BUILT_IN_ISLESSEQUAL); - tree const type = TREE_TYPE (arg); + tree type = TREE_TYPE (arg); REAL_VALUE_TYPE r; char buf[128]; + if (is_ibm_extended) + { + /* NaN and Inf are encoded in the high-order double value + only. The low-order value is not significant. */ + type = double_type_node; + mode = DFmode; + arg = fold_build1_loc (loc, NOP_EXPR, type, arg); + } get_max_float (REAL_MODE_FORMAT (mode), buf, sizeof (buf)); real_from_string (&r, buf); result = build_call_expr (isle_fn, 2, @@ -7577,21 +7595,72 @@ fold_builtin_interclass_mathfn (location_t loc, tree fndecl, tree arg) /* isnormal(x) -> isgreaterequal(fabs(x),DBL_MIN) & islessequal(fabs(x),DBL_MAX). */ tree const isle_fn = builtin_decl_explicit (BUILT_IN_ISLESSEQUAL); - tree const isge_fn = builtin_decl_explicit (BUILT_IN_ISGREATEREQUAL); - tree const type = TREE_TYPE (arg); + tree type = TREE_TYPE (arg); + tree orig_arg, max_exp, min_exp; + machine_mode orig_mode = mode; REAL_VALUE_TYPE rmax, rmin; char buf[128]; + orig_arg = arg = builtin_save_expr (arg); + if (is_ibm_extended) + { + /* Use double to test the normal range of IBM extended + precision. Emin for IBM extended precision is + different to emin for IEEE double, being 53 higher + since the low double exponent is at least 53 lower + than the high double exponent. */ + type = double_type_node; + mode = DFmode; + arg = fold_build1_loc (loc, NOP_EXPR, type, arg); + } + arg = fold_build1_loc (loc, ABS_EXPR, type, arg); + get_max_float (REAL_MODE_FORMAT (mode), buf, sizeof (buf)); real_from_string (&rmax, buf); - sprintf (buf, "0x1p%d", REAL_MODE_FORMAT (mode)->emin - 1); + sprintf (buf, "0x1p%d", REAL_MODE_FORMAT (orig_mode)->emin - 1); real_from_string (&rmin, buf); - arg = builtin_save_expr (fold_build1_loc (loc, ABS_EXPR, type, arg)); - result = build_call_expr (isle_fn, 2, arg, - build_real (type, rmax)); - result = fold_build2 (BIT_AND_EXPR, integer_type_node, result, - build_call_expr (isge_fn, 2, arg, - build_real (type, rmin))); + max_exp = build_real (type, rmax); + min_exp = build_real (type, rmin); + + max_exp = build_call_expr (isle_fn, 2, arg, max_exp); + if (is_ibm_extended) + { + /* Testing the high end of the range is done just using + the high double, using the same test as isfinite(). + For the subnormal end of the range we first test the + high double, then if its magnitude is equal to the + limit of 0x1p-969, we test whether the low double is + non-zero and opposite sign to the high double. */ + tree const islt_fn = builtin_decl_explicit (BUILT_IN_ISLESS); + tree const isgt_fn = builtin_decl_explicit (BUILT_IN_ISGREATER); + tree gt_min = build_call_expr (isgt_fn, 2, arg, min_exp); + tree eq_min = fold_build2 (EQ_EXPR, integer_type_node, + arg, min_exp); + tree as_complex = build1 (VIEW_CONVERT_EXPR, + complex_double_type_node, orig_arg); + tree hi_dbl = build1 (REALPART_EXPR, type, as_complex); + tree lo_dbl = build1 (IMAGPART_EXPR, type, as_complex); + tree zero = build_real (type, dconst0); + tree hilt = build_call_expr (islt_fn, 2, hi_dbl, zero); + tree lolt = build_call_expr (islt_fn, 2, lo_dbl, zero); + tree logt = build_call_expr (isgt_fn, 2, lo_dbl, zero); + tree ok_lo = fold_build1 (TRUTH_NOT_EXPR, integer_type_node, + fold_build3 (COND_EXPR, + integer_type_node, + hilt, logt, lolt)); + eq_min = fold_build2 (TRUTH_ANDIF_EXPR, integer_type_node, + eq_min, ok_lo); + min_exp = fold_build2 (TRUTH_ORIF_EXPR, integer_type_node, + gt_min, eq_min); + } + else + { + tree const isge_fn + = builtin_decl_explicit (BUILT_IN_ISGREATEREQUAL); + min_exp = build_call_expr (isge_fn, 2, arg, min_exp); + } + result = fold_build2 (BIT_AND_EXPR, integer_type_node, + max_exp, min_exp); return result; } default: @@ -7664,6 +7733,15 @@ fold_builtin_classify (location_t loc, tree fndecl, tree arg, int builtin_index) if (!HONOR_NANS (arg)) return omit_one_operand_loc (loc, type, integer_zero_node, arg); + { + bool is_ibm_extended = MODE_COMPOSITE_P (TYPE_MODE (TREE_TYPE (arg))); + if (is_ibm_extended) + { + /* NaN and Inf are encoded in the high-order double value + only. The low-order value is not significant. */ + arg = fold_build1_loc (loc, NOP_EXPR, double_type_node, arg); + } + } arg = builtin_save_expr (arg); return fold_build2_loc (loc, UNORDERED_EXPR, type, arg, arg); diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 26b1dabd6ee..f842efc8d4e 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2016-04-13 Marek Polacek <polacek@redhat.com> + + PR c++/70639 + * c-indentation.c (should_warn_for_misleading_indentation): Bail out + for switch statements, too. + 2016-03-28 Jason Merrill <jason@redhat.com> * c-cppbuiltin.c (c_cpp_builtins): Update __cpp_range_based_for. diff --git a/gcc/c-family/c-indentation.c b/gcc/c-family/c-indentation.c index 1da3f6824c1..8c336867d8c 100644 --- a/gcc/c-family/c-indentation.c +++ b/gcc/c-family/c-indentation.c @@ -239,10 +239,11 @@ should_warn_for_misleading_indentation (const token_indent_info &guard_tinfo, if (line_table->seen_line_directive) return false; - /* We can't usefully warn about do-while statements since the bodies of these - statements are always explicitly delimited at both ends, so control flow is - quite obvious. */ - if (guard_tinfo.keyword == RID_DO) + /* We can't usefully warn about do-while and switch statements since the + bodies of these statements are always explicitly delimited at both ends, + so control flow is quite obvious. */ + if (guard_tinfo.keyword == RID_DO + || guard_tinfo.keyword == RID_SWITCH) return false; /* If the token following the body is a close brace or an "else" diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index b52b414478f..4b21d528f80 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,24 @@ +2016-04-13 Marek Polacek <polacek@redhat.com> + + PR c/70436 + * c-parser.c (c_parser_statement_after_labels): Add IF_P argument and + adjust callers. + (c_parser_statement): Likewise. + (c_parser_c99_block_statement): Likewise. + (c_parser_while_statement): Likewise. + (c_parser_for_statement): Likewise. + (c_parser_if_body): Don't set IF_P here. + (c_parser_if_statement): Add IF_P argument. Set IF_P here. Warn + about dangling else here. + * c-tree.h (c_finish_if_stmt): Adjust declaration. + * c-typeck.c (c_finish_if_stmt): Remove NESTED_IF parameter. Don't + warn about dangling else here. + +2016-04-04 Marek Polacek <polacek@redhat.com> + + PR c/70307 + * c-fold.c (c_fully_fold_internal): Handle VEC_COND_EXPR. + 2016-03-31 Marek Polacek <polacek@redhat.com> PR c/70297 diff --git a/gcc/c/c-fold.c b/gcc/c/c-fold.c index f07917f17e7..6c82f242bf1 100644 --- a/gcc/c/c-fold.c +++ b/gcc/c/c-fold.c @@ -528,6 +528,26 @@ c_fully_fold_internal (tree expr, bool in_init, bool *maybe_const_operands, *maybe_const_itself &= op2_const_self; goto out; + case VEC_COND_EXPR: + orig_op0 = op0 = TREE_OPERAND (expr, 0); + orig_op1 = op1 = TREE_OPERAND (expr, 1); + orig_op2 = op2 = TREE_OPERAND (expr, 2); + op0 = c_fully_fold_internal (op0, in_init, maybe_const_operands, + maybe_const_itself, for_int_const); + STRIP_TYPE_NOPS (op0); + op1 = c_fully_fold_internal (op1, in_init, maybe_const_operands, + maybe_const_itself, for_int_const); + STRIP_TYPE_NOPS (op1); + op2 = c_fully_fold_internal (op2, in_init, maybe_const_operands, + maybe_const_itself, for_int_const); + STRIP_TYPE_NOPS (op2); + + if (op0 != orig_op0 || op1 != orig_op1 || op2 != orig_op2) + ret = fold_build3_loc (loc, code, TREE_TYPE (expr), op0, op1, op2); + else + ret = fold (expr); + goto out; + case EXCESS_PRECISION_EXPR: /* Each case where an operand with excess precision may be encountered must remove the EXCESS_PRECISION_EXPR around diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c index 646068424bd..d37c6917b32 100644 --- a/gcc/c/c-parser.c +++ b/gcc/c/c-parser.c @@ -1301,13 +1301,14 @@ static void c_parser_initval (c_parser *, struct c_expr *, static tree c_parser_compound_statement (c_parser *); static void c_parser_compound_statement_nostart (c_parser *); static void c_parser_label (c_parser *); -static void c_parser_statement (c_parser *); -static void c_parser_statement_after_labels (c_parser *, vec<tree> * = NULL); -static void c_parser_if_statement (c_parser *, vec<tree> *); +static void c_parser_statement (c_parser *, bool *); +static void c_parser_statement_after_labels (c_parser *, bool *, + vec<tree> * = NULL); +static void c_parser_if_statement (c_parser *, bool *, vec<tree> *); static void c_parser_switch_statement (c_parser *); -static void c_parser_while_statement (c_parser *, bool); +static void c_parser_while_statement (c_parser *, bool, bool *); static void c_parser_do_statement (c_parser *, bool); -static void c_parser_for_statement (c_parser *, bool); +static void c_parser_for_statement (c_parser *, bool, bool *); static tree c_parser_asm_statement (c_parser *); static tree c_parser_asm_operands (c_parser *); static tree c_parser_asm_goto_operands (c_parser *); @@ -4853,7 +4854,7 @@ c_parser_compound_statement_nostart (c_parser *parser) last_label = false; last_stmt = true; mark_valid_location_for_stdc_pragma (false); - c_parser_statement_after_labels (parser); + c_parser_statement_after_labels (parser, NULL); } parser->error = false; @@ -5095,25 +5096,35 @@ c_parser_label (c_parser *parser) statement: transaction-statement transaction-cancel-statement -*/ + + IF_P is used to track whether there's a (possibly labeled) if statement + which is not enclosed in braces and has an else clause. This is used to + implement -Wparentheses. */ static void -c_parser_statement (c_parser *parser) +c_parser_statement (c_parser *parser, bool *if_p) { c_parser_all_labels (parser); - c_parser_statement_after_labels (parser); + c_parser_statement_after_labels (parser, if_p, NULL); } /* Parse a statement, other than a labeled statement. CHAIN is a vector - of if-else-if conditions. */ + of if-else-if conditions. + + IF_P is used to track whether there's a (possibly labeled) if statement + which is not enclosed in braces and has an else clause. This is used to + implement -Wparentheses. */ static void -c_parser_statement_after_labels (c_parser *parser, vec<tree> *chain) +c_parser_statement_after_labels (c_parser *parser, bool *if_p, + vec<tree> *chain) { location_t loc = c_parser_peek_token (parser)->location; tree stmt = NULL_TREE; bool in_if_block = parser->in_if_block; parser->in_if_block = false; + if (if_p != NULL) + *if_p = false; switch (c_parser_peek_token (parser)->type) { case CPP_OPEN_BRACE: @@ -5123,19 +5134,19 @@ c_parser_statement_after_labels (c_parser *parser, vec<tree> *chain) switch (c_parser_peek_token (parser)->keyword) { case RID_IF: - c_parser_if_statement (parser, chain); + c_parser_if_statement (parser, if_p, chain); break; case RID_SWITCH: c_parser_switch_statement (parser); break; case RID_WHILE: - c_parser_while_statement (parser, false); + c_parser_while_statement (parser, false, if_p); break; case RID_DO: c_parser_do_statement (parser, false); break; case RID_FOR: - c_parser_for_statement (parser, false); + c_parser_for_statement (parser, false, if_p); break; case RID_CILK_FOR: if (!flag_cilkplus) @@ -5321,14 +5332,18 @@ c_parser_paren_condition (c_parser *parser) return cond; } -/* Parse a statement which is a block in C99. */ +/* Parse a statement which is a block in C99. + + IF_P is used to track whether there's a (possibly labeled) if statement + which is not enclosed in braces and has an else clause. This is used to + implement -Wparentheses. */ static tree -c_parser_c99_block_statement (c_parser *parser) +c_parser_c99_block_statement (c_parser *parser, bool *if_p) { tree block = c_begin_compound_stmt (flag_isoc99); location_t loc = c_parser_peek_token (parser)->location; - c_parser_statement (parser); + c_parser_statement (parser, if_p); return c_end_compound_stmt (loc, block, flag_isoc99); } @@ -5338,7 +5353,11 @@ c_parser_c99_block_statement (c_parser *parser) we handle an empty body specially for the sake of -Wempty-body warnings, and (d) we call parser_compound_statement directly because c_parser_statement_after_labels resets - parser->in_if_block. */ + parser->in_if_block. + + IF_P is used to track whether there's a (possibly labeled) if statement + which is not enclosed in braces and has an else clause. This is used to + implement -Wparentheses. */ static tree c_parser_if_body (c_parser *parser, bool *if_p, @@ -5350,7 +5369,6 @@ c_parser_if_body (c_parser *parser, bool *if_p, = get_token_indent_info (c_parser_peek_token (parser)); c_parser_all_labels (parser); - *if_p = c_parser_next_token_is_keyword (parser, RID_IF); if (c_parser_next_token_is (parser, CPP_SEMICOLON)) { location_t loc = c_parser_peek_token (parser)->location; @@ -5363,7 +5381,7 @@ c_parser_if_body (c_parser *parser, bool *if_p, else if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) add_stmt (c_parser_compound_statement (parser)); else - c_parser_statement_after_labels (parser); + c_parser_statement_after_labels (parser, if_p); token_indent_info next_tinfo = get_token_indent_info (c_parser_peek_token (parser)); @@ -5397,7 +5415,7 @@ c_parser_else_body (c_parser *parser, const token_indent_info &else_tinfo, c_parser_consume_token (parser); } else - c_parser_statement_after_labels (parser, chain); + c_parser_statement_after_labels (parser, NULL, chain); token_indent_info next_tinfo = get_token_indent_info (c_parser_peek_token (parser)); @@ -5412,15 +5430,18 @@ c_parser_else_body (c_parser *parser, const token_indent_info &else_tinfo, if ( expression ) statement if ( expression ) statement else statement - CHAIN is a vector of if-else-if conditions. */ + CHAIN is a vector of if-else-if conditions. + IF_P is used to track whether there's a (possibly labeled) if statement + which is not enclosed in braces and has an else clause. This is used to + implement -Wparentheses. */ static void -c_parser_if_statement (c_parser *parser, vec<tree> *chain) +c_parser_if_statement (c_parser *parser, bool *if_p, vec<tree> *chain) { tree block; location_t loc; tree cond; - bool first_if = false; + bool nested_if = false; tree first_body, second_body; bool in_if_block; tree if_stmt; @@ -5439,7 +5460,7 @@ c_parser_if_statement (c_parser *parser, vec<tree> *chain) } in_if_block = parser->in_if_block; parser->in_if_block = true; - first_body = c_parser_if_body (parser, &first_if, if_tinfo); + first_body = c_parser_if_body (parser, &nested_if, if_tinfo); parser->in_if_block = in_if_block; if (warn_duplicated_cond) @@ -5470,10 +5491,22 @@ c_parser_if_statement (c_parser *parser, vec<tree> *chain) } } second_body = c_parser_else_body (parser, else_tinfo, chain); + /* Set IF_P to true to indicate that this if statement has an + else clause. This may trigger the Wparentheses warning + below when we get back up to the parent if statement. */ + if (if_p != NULL) + *if_p = true; } else { second_body = NULL_TREE; + + /* Diagnose an ambiguous else if if-then-else is nested inside + if-then. */ + if (nested_if) + warning_at (loc, OPT_Wparentheses, + "suggest explicit braces to avoid ambiguous %<else%>"); + if (warn_duplicated_cond) { /* This if statement does not have an else clause. We don't @@ -5482,7 +5515,7 @@ c_parser_if_statement (c_parser *parser, vec<tree> *chain) chain = NULL; } } - c_finish_if_stmt (loc, cond, first_body, second_body, first_if); + c_finish_if_stmt (loc, cond, first_body, second_body); if_stmt = c_end_compound_stmt (loc, block, flag_isoc99); /* If the if statement contains array notations, then we expand them. */ @@ -5533,7 +5566,7 @@ c_parser_switch_statement (c_parser *parser) c_start_case (switch_loc, switch_cond_loc, expr, explicit_cast_p); save_break = c_break_label; c_break_label = NULL_TREE; - body = c_parser_c99_block_statement (parser); + body = c_parser_c99_block_statement (parser, NULL/*if??*/); c_finish_case (body, ce.original_type); if (c_break_label) { @@ -5550,10 +5583,13 @@ c_parser_switch_statement (c_parser *parser) while-statement: while (expression) statement -*/ + + IF_P is used to track whether there's a (possibly labeled) if statement + which is not enclosed in braces and has an else clause. This is used to + implement -Wparentheses. */ static void -c_parser_while_statement (c_parser *parser, bool ivdep) +c_parser_while_statement (c_parser *parser, bool ivdep, bool *if_p) { tree block, cond, body, save_break, save_cont; location_t loc; @@ -5580,7 +5616,7 @@ c_parser_while_statement (c_parser *parser, bool ivdep) token_indent_info body_tinfo = get_token_indent_info (c_parser_peek_token (parser)); - body = c_parser_c99_block_statement (parser); + body = c_parser_c99_block_statement (parser, if_p); c_finish_loop (loc, cond, NULL, body, c_break_label, c_cont_label, true); add_stmt (c_end_compound_stmt (loc, block, flag_isoc99)); @@ -5615,7 +5651,7 @@ c_parser_do_statement (c_parser *parser, bool ivdep) c_break_label = NULL_TREE; save_cont = c_cont_label; c_cont_label = NULL_TREE; - body = c_parser_c99_block_statement (parser); + body = c_parser_c99_block_statement (parser, NULL); c_parser_require_keyword (parser, RID_WHILE, "expected %<while%>"); new_break = c_break_label; c_break_label = save_break; @@ -5690,10 +5726,13 @@ c_parser_do_statement (c_parser *parser, bool ivdep) like the beginning of the for-statement, and we can tell it is a foreach-statement only because the initial declaration or expression is terminated by 'in' instead of ';'. -*/ + + IF_P is used to track whether there's a (possibly labeled) if statement + which is not enclosed in braces and has an else clause. This is used to + implement -Wparentheses. */ static void -c_parser_for_statement (c_parser *parser, bool ivdep) +c_parser_for_statement (c_parser *parser, bool ivdep, bool *if_p) { tree block, cond, incr, save_break, save_cont, body; /* The following are only used when parsing an ObjC foreach statement. */ @@ -5869,7 +5908,7 @@ c_parser_for_statement (c_parser *parser, bool ivdep) token_indent_info body_tinfo = get_token_indent_info (c_parser_peek_token (parser)); - body = c_parser_c99_block_statement (parser); + body = c_parser_c99_block_statement (parser, if_p); if (is_foreach_statement) objc_finish_foreach_loop (loc, object_expression, collection_expression, body, c_break_label, c_cont_label); @@ -10118,9 +10157,9 @@ c_parser_pragma (c_parser *parser, enum pragma_context context) return false; } if (c_parser_next_token_is_keyword (parser, RID_FOR)) - c_parser_for_statement (parser, true); + c_parser_for_statement (parser, true, NULL); else if (c_parser_next_token_is_keyword (parser, RID_WHILE)) - c_parser_while_statement (parser, true); + c_parser_while_statement (parser, true, NULL); else c_parser_do_statement (parser, true); return false; @@ -13441,7 +13480,7 @@ static tree c_parser_omp_structured_block (c_parser *parser) { tree stmt = push_stmt_list (); - c_parser_statement (parser); + c_parser_statement (parser, NULL); return pop_stmt_list (stmt); } @@ -14843,7 +14882,7 @@ c_parser_omp_for_loop (location_t loc, c_parser *parser, enum tree_code code, add_stmt (c_end_compound_stmt (here, stmt, true)); } else - add_stmt (c_parser_c99_block_statement (parser)); + add_stmt (c_parser_c99_block_statement (parser, NULL)); if (c_cont_label) { tree t = build1 (LABEL_EXPR, void_type_node, c_cont_label); @@ -15397,7 +15436,7 @@ c_parser_omp_parallel (location_t loc, c_parser *parser, } block = c_begin_omp_parallel (); - c_parser_statement (parser); + c_parser_statement (parser, NULL); stmt = c_finish_omp_parallel (loc, clauses, block); return stmt; @@ -15458,7 +15497,7 @@ c_parser_omp_task (location_t loc, c_parser *parser) "#pragma omp task"); block = c_begin_omp_task (); - c_parser_statement (parser); + c_parser_statement (parser, NULL); return c_finish_omp_task (loc, clauses, block); } diff --git a/gcc/c/c-tree.h b/gcc/c/c-tree.h index 96ab049b982..d5592077524 100644 --- a/gcc/c/c-tree.h +++ b/gcc/c/c-tree.h @@ -641,7 +641,7 @@ extern tree build_asm_stmt (tree, tree); extern int c_types_compatible_p (tree, tree); extern tree c_begin_compound_stmt (bool); extern tree c_end_compound_stmt (location_t, tree, bool); -extern void c_finish_if_stmt (location_t, tree, tree, tree, bool); +extern void c_finish_if_stmt (location_t, tree, tree, tree); extern void c_finish_loop (location_t, tree, tree, tree, tree, tree, bool); extern tree c_begin_stmt_expr (void); extern tree c_finish_stmt_expr (location_t, tree); diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index fb274d5f3c9..9a1499428d4 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -9974,12 +9974,11 @@ c_finish_case (tree body, tree type) /* Emit an if statement. IF_LOCUS is the location of the 'if'. COND, THEN_BLOCK and ELSE_BLOCK are expressions to be used; ELSE_BLOCK - may be null. NESTED_IF is true if THEN_BLOCK contains another IF - statement, and was not surrounded with parenthesis. */ + may be null. */ void c_finish_if_stmt (location_t if_locus, tree cond, tree then_block, - tree else_block, bool nested_if) + tree else_block) { tree stmt; @@ -10011,39 +10010,6 @@ c_finish_if_stmt (location_t if_locus, tree cond, tree then_block, return; } } - /* Diagnose an ambiguous else if if-then-else is nested inside if-then. */ - if (warn_parentheses && nested_if && else_block == NULL) - { - tree inner_if = then_block; - - /* We know from the grammar productions that there is an IF nested - within THEN_BLOCK. Due to labels and c99 conditional declarations, - it might not be exactly THEN_BLOCK, but should be the last - non-container statement within. */ - while (1) - switch (TREE_CODE (inner_if)) - { - case COND_EXPR: - goto found; - case BIND_EXPR: - inner_if = BIND_EXPR_BODY (inner_if); - break; - case STATEMENT_LIST: - inner_if = expr_last (then_block); - break; - case TRY_FINALLY_EXPR: - case TRY_CATCH_EXPR: - inner_if = TREE_OPERAND (inner_if, 0); - break; - default: - gcc_unreachable (); - } - found: - - if (COND_EXPR_ELSE (inner_if)) - warning_at (if_locus, OPT_Wparentheses, - "suggest explicit braces to avoid ambiguous %<else%>"); - } stmt = build3 (COND_EXPR, void_type_node, cond, then_block, else_block); SET_EXPR_LOCATION (stmt, if_locus); diff --git a/gcc/cgraph.h b/gcc/cgraph.h index e9292852399..0d5806b458e 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -293,6 +293,9 @@ public: /* Make DECL local. */ void make_decl_local (void); + /* Copy visibility from N. */ + void copy_visibility_from (symtab_node *n); + /* Return desired alignment of the definition. This is NOT alignment useful to access THIS, because THIS may be interposable and DECL_ALIGN should be used instead. It however must be guaranteed when output definition @@ -763,6 +766,11 @@ struct GTY(()) cgraph_simd_clone { /* Max hardware vector size in bits for floating point vectors. */ unsigned int vecsize_float; + /* Machine mode of the mask argument(s), if they are to be passed + as bitmasks in integer argument(s). VOIDmode if masks are passed + as vectors of characteristic type. */ + machine_mode mask_mode; + /* The mangling character for a given vector size. This is used to determine the ISA mangling bit as specified in the Intel Vector ABI. */ diff --git a/gcc/common/config/aarch64/aarch64-common.c b/gcc/common/config/aarch64/aarch64-common.c index 4969f07fef4..08e79593420 100644 --- a/gcc/common/config/aarch64/aarch64-common.c +++ b/gcc/common/config/aarch64/aarch64-common.c @@ -112,6 +112,7 @@ struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER; struct aarch64_option_extension { const char *const name; + const unsigned long flag_canonical; const unsigned long flags_on; const unsigned long flags_off; }; @@ -119,11 +120,11 @@ struct aarch64_option_extension /* ISA extensions in AArch64. */ static const struct aarch64_option_extension all_extensions[] = { -#define AARCH64_OPT_EXTENSION(NAME, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \ - {NAME, FLAGS_ON, FLAGS_OFF}, +#define AARCH64_OPT_EXTENSION(NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, Z) \ + {NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF}, #include "config/aarch64/aarch64-option-extensions.def" #undef AARCH64_OPT_EXTENSION - {NULL, 0, 0} + {NULL, 0, 0, 0} }; struct processor_name_to_arch @@ -137,6 +138,7 @@ struct arch_to_arch_name { const enum aarch64_arch arch; const std::string arch_name; + const unsigned long flags; }; /* Map processor names to the architecture revision they implement and @@ -155,26 +157,111 @@ static const struct processor_name_to_arch all_cores[] = static const struct arch_to_arch_name all_architectures[] = { #define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH, FLAGS) \ - {AARCH64_ARCH_##ARCH_IDENT, NAME}, + {AARCH64_ARCH_##ARCH_IDENT, NAME, FLAGS}, #include "config/aarch64/aarch64-arches.def" #undef AARCH64_ARCH - {aarch64_no_arch, ""} + {aarch64_no_arch, "", 0} }; -/* Return a string representation of ISA_FLAGS. */ +/* Parse the architecture extension string STR and update ISA_FLAGS + with the architecture features turned on or off. Return a + aarch64_parse_opt_result describing the result. */ + +enum aarch64_parse_opt_result +aarch64_parse_extension (const char *str, unsigned long *isa_flags) +{ + /* The extension string is parsed left to right. */ + const struct aarch64_option_extension *opt = NULL; + + /* Flag to say whether we are adding or removing an extension. */ + int adding_ext = -1; + + while (str != NULL && *str != 0) + { + const char *ext; + size_t len; + + str++; + ext = strchr (str, '+'); + + if (ext != NULL) + len = ext - str; + else + len = strlen (str); + + if (len >= 2 && strncmp (str, "no", 2) == 0) + { + adding_ext = 0; + len -= 2; + str += 2; + } + else if (len > 0) + adding_ext = 1; + + if (len == 0) + return AARCH64_PARSE_MISSING_ARG; + + + /* Scan over the extensions table trying to find an exact match. */ + for (opt = all_extensions; opt->name != NULL; opt++) + { + if (strlen (opt->name) == len && strncmp (opt->name, str, len) == 0) + { + /* Add or remove the extension. */ + if (adding_ext) + *isa_flags |= (opt->flags_on | opt->flag_canonical); + else + *isa_flags &= ~(opt->flags_off | opt->flag_canonical); + break; + } + } + + if (opt->name == NULL) + { + /* Extension not found in list. */ + return AARCH64_PARSE_INVALID_FEATURE; + } + + str = ext; + }; + + return AARCH64_PARSE_OK; +} + +/* Return a string representation of ISA_FLAGS. DEFAULT_ARCH_FLAGS + gives the default set of flags which are implied by whatever -march + we'd put out. Our job is to figure out the minimal set of "+" and + "+no" feature flags to put out, and to put them out grouped such + that all the "+" flags come before the "+no" flags. */ std::string -aarch64_get_extension_string_for_isa_flags (unsigned long isa_flags) +aarch64_get_extension_string_for_isa_flags (unsigned long isa_flags, + unsigned long default_arch_flags) { const struct aarch64_option_extension *opt = NULL; std::string outstr = ""; + /* Pass one: Find all the things we need to turn on. As a special case, + we always want to put out +crc if it is enabled. */ for (opt = all_extensions; opt->name != NULL; opt++) - if ((isa_flags & opt->flags_on) == opt->flags_on) + if ((isa_flags & opt->flag_canonical + && !(default_arch_flags & opt->flag_canonical)) + || (default_arch_flags & opt->flag_canonical + && opt->flag_canonical == AARCH64_ISA_CRC)) { outstr += "+"; outstr += opt->name; } + + /* Pass two: Find all the things we need to turn off. */ + for (opt = all_extensions; opt->name != NULL; opt++) + if ((~isa_flags) & opt->flag_canonical + && !((~default_arch_flags) & opt->flag_canonical)) + { + outstr += "+no"; + outstr += opt->name; + } + return outstr; } @@ -186,7 +273,7 @@ const char * aarch64_rewrite_selected_cpu (const char *name) { std::string original_string (name); - std::string extensions; + std::string extension_str; std::string processor; size_t extension_pos = original_string.find_first_of ('+'); @@ -194,8 +281,8 @@ aarch64_rewrite_selected_cpu (const char *name) if (extension_pos != std::string::npos) { processor = original_string.substr (0, extension_pos); - extensions = original_string.substr (extension_pos, - std::string::npos); + extension_str = original_string.substr (extension_pos, + std::string::npos); } else { @@ -227,9 +314,12 @@ aarch64_rewrite_selected_cpu (const char *name) || a_to_an->arch == aarch64_no_arch) fatal_error (input_location, "unknown value %qs for -mcpu", name); + unsigned long extensions = p_to_a->flags; + aarch64_parse_extension (extension_str.c_str (), &extensions); + std::string outstr = a_to_an->arch_name - + aarch64_get_extension_string_for_isa_flags (p_to_a->flags) - + extensions; + + aarch64_get_extension_string_for_isa_flags (extensions, + a_to_an->flags); /* We are going to memory leak here, nobody elsewhere in the callchain is going to clean up after us. The alternative is diff --git a/gcc/config.gcc b/gcc/config.gcc index 67222601e1c..f66e48cd1ca 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -3620,22 +3620,28 @@ case "${target}" in ${srcdir}/config/aarch64/aarch64-option-extensions.def \ > /dev/null; then - ext_on=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \ + ext_canon=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \ ${srcdir}/config/aarch64/aarch64-option-extensions.def | \ sed -e 's/^[^,]*,[ ]*//' | \ sed -e 's/,.*$//'` - ext_off=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \ + ext_on=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \ ${srcdir}/config/aarch64/aarch64-option-extensions.def | \ sed -e 's/^[^,]*,[ ]*[^,]*,[ ]*//' | \ sed -e 's/,.*$//' | \ sed -e 's/).*$//'` + ext_off=`grep "^AARCH64_OPT_EXTENSION(\"$base_ext\"," \ + ${srcdir}/config/aarch64/aarch64-option-extensions.def | \ + sed -e 's/^[^,]*,[ ]*[^,]*,[ ]*[^,]*,[ ]*//' | \ + sed -e 's/,.*$//' | \ + sed -e 's/).*$//'` + if [ $ext = $base_ext ]; then # Adding extension - ext_mask="("$ext_mask") | ("$ext_on")" + ext_mask="("$ext_mask") | ("$ext_on" | "$ext_canon")" else # Removing extension - ext_mask="("$ext_mask") & ~("$ext_off")" + ext_mask="("$ext_mask") & ~("$ext_off" | "$ext_canon")" fi true diff --git a/gcc/config/aarch64/aarch64-option-extensions.def b/gcc/config/aarch64/aarch64-option-extensions.def index fbf9a53283c..e8706d1c2e7 100644 --- a/gcc/config/aarch64/aarch64-option-extensions.def +++ b/gcc/config/aarch64/aarch64-option-extensions.def @@ -21,23 +21,37 @@ Before using #include to read this file, define a macro: - AARCH64_OPT_EXTENSION(EXT_NAME, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) + AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) EXT_NAME is the name of the extension, represented as a string constant. - FLAGS_ON are the bitwise-or of the features that the extension adds. - FLAGS_OFF are the bitwise-or of the features that the extension removes. + FLAGS_CANONICAL is the canonical internal name for this flag. + FLAGS_ON are the bitwise-or of the features that enabling the extension + adds, or zero if enabling this extension has no effect on other features. + FLAGS_OFF are the bitwise-or of the features that disabling the extension + removes, or zero if disabling this extension has no effect on other + features. FEAT_STRING is a string containing the entries in the 'Features' field of /proc/cpuinfo on a GNU/Linux system that correspond to this architecture extension being available. Sometimes multiple entries are needed to enable the extension (for example, the 'crypto' extension depends on four entries: aes, pmull, sha1, sha2 being present). In that case this field - should contain a whitespace-separated list of the strings in 'Features' + should contain a space (" ") separated list of the strings in 'Features' that are required. Their order is not important. */ -AARCH64_OPT_EXTENSION ("fp", AARCH64_FL_FP, - AARCH64_FL_FPSIMD | AARCH64_FL_CRYPTO, "fp") -AARCH64_OPT_EXTENSION ("simd", AARCH64_FL_FPSIMD, - AARCH64_FL_SIMD | AARCH64_FL_CRYPTO, "asimd") -AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO | AARCH64_FL_FPSIMD, AARCH64_FL_CRYPTO, "aes pmull sha1 sha2") -AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, AARCH64_FL_CRC, "crc32") -AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, AARCH64_FL_LSE, "atomics") +/* Enabling "fp" just enables "fp". + Disabling "fp" also disables "simd", "crypto". */ +AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | AARCH64_FL_CRYPTO, "fp") + +/* Enabling "simd" also enables "fp". + Disabling "simd" also disables "crypto". */ +AARCH64_OPT_EXTENSION("simd", AARCH64_FL_SIMD, AARCH64_FL_FP, AARCH64_FL_CRYPTO, "asimd") + +/* Enabling "crypto" also enables "fp", "simd". + Disabling "crypto" just disables "crypto". */ +AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO, AARCH64_FL_FP | AARCH64_FL_SIMD, 0, "aes pmull sha1 sha2") + +/* Enabling or disabling "crc" only changes "crc". */ +AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, 0, 0, "crc32") + +/* Enabling or disabling "lse" only changes "lse". */ +AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, 0, 0, "atomics") diff --git a/gcc/config/aarch64/aarch64-protos.h b/gcc/config/aarch64/aarch64-protos.h index 58c9d0d01d8..f22a31c2830 100644 --- a/gcc/config/aarch64/aarch64-protos.h +++ b/gcc/config/aarch64/aarch64-protos.h @@ -263,6 +263,18 @@ enum aarch64_extra_tuning_flags }; #undef AARCH64_EXTRA_TUNING_OPTION +/* Enum describing the various ways that the + aarch64_parse_{arch,tune,cpu,extension} functions can fail. + This way their callers can choose what kind of error to give. */ + +enum aarch64_parse_opt_result +{ + AARCH64_PARSE_OK, /* Parsing was successful. */ + AARCH64_PARSE_MISSING_ARG, /* Missing argument. */ + AARCH64_PARSE_INVALID_FEATURE, /* Invalid feature modifier. */ + AARCH64_PARSE_INVALID_ARG /* Invalid arch, tune, cpu arg. */ +}; + extern struct tune_params aarch64_tune_params; HOST_WIDE_INT aarch64_initial_elimination_offset (unsigned, unsigned); @@ -280,8 +292,6 @@ bool aarch64_float_const_zero_rtx_p (rtx); bool aarch64_function_arg_regno_p (unsigned); bool aarch64_gen_movmemqi (rtx *); bool aarch64_gimple_fold_builtin (gimple_stmt_iterator *); -bool aarch64_handle_option (struct gcc_options *, struct gcc_options *, - const struct cl_decoded_option *, location_t); bool aarch64_is_extend_from_extract (machine_mode, rtx, rtx); bool aarch64_is_long_call_p (rtx); bool aarch64_is_noplt_call_p (rtx); @@ -315,7 +325,6 @@ bool aarch64_uimm12_shift (HOST_WIDE_INT); bool aarch64_use_return_insn_p (void); const char *aarch64_mangle_builtin_type (const_tree); const char *aarch64_output_casesi (rtx *); -const char *aarch64_rewrite_selected_cpu (const char *name); enum aarch64_symbol_type aarch64_classify_symbol (rtx, rtx); enum aarch64_symbol_type aarch64_classify_tls_symbol (rtx); @@ -338,7 +347,6 @@ rtx aarch64_simd_gen_const_vector_dup (machine_mode, int); bool aarch64_simd_mem_operand_p (rtx); rtx aarch64_simd_vect_par_cnst_half (machine_mode, bool); rtx aarch64_tls_get_addr (void); -std::string aarch64_get_extension_string_for_isa_flags (unsigned long); tree aarch64_fold_builtin (tree, int, tree *, bool); unsigned aarch64_dbx_register_number (unsigned); unsigned aarch64_trampoline_size (void); @@ -433,4 +441,13 @@ extern bool aarch64_nopcrelative_literal_loads; extern void aarch64_asm_output_pool_epilogue (FILE *, const char *, tree, HOST_WIDE_INT); +/* Defined in common/config/aarch64-common.c. */ +bool aarch64_handle_option (struct gcc_options *, struct gcc_options *, + const struct cl_decoded_option *, location_t); +const char *aarch64_rewrite_selected_cpu (const char *name); +enum aarch64_parse_opt_result aarch64_parse_extension (const char *, + unsigned long *); +std::string aarch64_get_extension_string_for_isa_flags (unsigned long, + unsigned long); + #endif /* GCC_AARCH64_PROTOS_H */ diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c index b7086dd4667..999549426e6 100644 --- a/gcc/config/aarch64/aarch64.c +++ b/gcc/config/aarch64/aarch64.c @@ -666,7 +666,7 @@ struct aarch64_option_extension /* ISA extensions in AArch64. */ static const struct aarch64_option_extension all_extensions[] = { -#define AARCH64_OPT_EXTENSION(NAME, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \ +#define AARCH64_OPT_EXTENSION(NAME, X, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \ {NAME, FLAGS_ON, FLAGS_OFF}, #include "aarch64-option-extensions.def" #undef AARCH64_OPT_EXTENSION @@ -7673,83 +7673,6 @@ aarch64_add_stmt_cost (void *data, int count, enum vect_cost_for_stmt kind, static void initialize_aarch64_code_model (struct gcc_options *); -/* Enum describing the various ways that the - aarch64_parse_{arch,tune,cpu,extension} functions can fail. - This way their callers can choose what kind of error to give. */ - -enum aarch64_parse_opt_result -{ - AARCH64_PARSE_OK, /* Parsing was successful. */ - AARCH64_PARSE_MISSING_ARG, /* Missing argument. */ - AARCH64_PARSE_INVALID_FEATURE, /* Invalid feature modifier. */ - AARCH64_PARSE_INVALID_ARG /* Invalid arch, tune, cpu arg. */ -}; - -/* Parse the architecture extension string STR and update ISA_FLAGS - with the architecture features turned on or off. Return a - aarch64_parse_opt_result describing the result. */ - -static enum aarch64_parse_opt_result -aarch64_parse_extension (char *str, unsigned long *isa_flags) -{ - /* The extension string is parsed left to right. */ - const struct aarch64_option_extension *opt = NULL; - - /* Flag to say whether we are adding or removing an extension. */ - int adding_ext = -1; - - while (str != NULL && *str != 0) - { - char *ext; - size_t len; - - str++; - ext = strchr (str, '+'); - - if (ext != NULL) - len = ext - str; - else - len = strlen (str); - - if (len >= 2 && strncmp (str, "no", 2) == 0) - { - adding_ext = 0; - len -= 2; - str += 2; - } - else if (len > 0) - adding_ext = 1; - - if (len == 0) - return AARCH64_PARSE_MISSING_ARG; - - - /* Scan over the extensions table trying to find an exact match. */ - for (opt = all_extensions; opt->name != NULL; opt++) - { - if (strlen (opt->name) == len && strncmp (opt->name, str, len) == 0) - { - /* Add or remove the extension. */ - if (adding_ext) - *isa_flags |= opt->flags_on; - else - *isa_flags &= ~(opt->flags_off); - break; - } - } - - if (opt->name == NULL) - { - /* Extension not found in list. */ - return AARCH64_PARSE_INVALID_FEATURE; - } - - str = ext; - }; - - return AARCH64_PARSE_OK; -} - /* Parse the TO_PARSE string and put the architecture struct that it selects into RES and the architectural features into ISA_FLAGS. Return an aarch64_parse_opt_result describing the parse result. @@ -8550,7 +8473,7 @@ aarch64_option_print (FILE *file, int indent, struct cl_target_option *ptr) unsigned long isa_flags = ptr->x_aarch64_isa_flags; const struct processor *arch = aarch64_get_arch (ptr->x_explicit_arch); std::string extension - = aarch64_get_extension_string_for_isa_flags (isa_flags); + = aarch64_get_extension_string_for_isa_flags (isa_flags, arch->flags); fprintf (file, "%*sselected tune = %s\n", indent, "", cpu->name); fprintf (file, "%*sselected arch = %s%s\n", indent, "", @@ -11213,7 +11136,8 @@ aarch64_declare_function_name (FILE *stream, const char* name, unsigned long isa_flags = targ_options->x_aarch64_isa_flags; std::string extension - = aarch64_get_extension_string_for_isa_flags (isa_flags); + = aarch64_get_extension_string_for_isa_flags (isa_flags, + this_arch->flags); /* Only update the assembler .arch string if it is distinct from the last such string we printed. */ std::string to_print = this_arch->name + extension; @@ -11253,7 +11177,8 @@ aarch64_start_file (void) = aarch64_get_arch (default_options->x_explicit_arch); unsigned long default_isa_flags = default_options->x_aarch64_isa_flags; std::string extension - = aarch64_get_extension_string_for_isa_flags (default_isa_flags); + = aarch64_get_extension_string_for_isa_flags (default_isa_flags, + default_arch->flags); aarch64_last_printed_arch_string = default_arch->name + extension; aarch64_last_printed_tune_string = ""; diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h index 7750d1c060d..15d7e4019ad 100644 --- a/gcc/config/aarch64/aarch64.h +++ b/gcc/config/aarch64/aarch64.h @@ -145,7 +145,7 @@ extern unsigned aarch64_architecture_version; /* Architecture flags that effect instruction selection. */ #define AARCH64_FL_FOR_ARCH8 (AARCH64_FL_FPSIMD) #define AARCH64_FL_FOR_ARCH8_1 \ - (AARCH64_FL_FOR_ARCH8 | AARCH64_FL_LSE | AARCH64_FL_V8_1) + (AARCH64_FL_FOR_ARCH8 | AARCH64_FL_LSE | AARCH64_FL_CRC | AARCH64_FL_V8_1) /* Macros to test ISA flags. */ diff --git a/gcc/config/aarch64/driver-aarch64.c b/gcc/config/aarch64/driver-aarch64.c index 317a8a9872e..ce771ec7ac1 100644 --- a/gcc/config/aarch64/driver-aarch64.c +++ b/gcc/config/aarch64/driver-aarch64.c @@ -18,17 +18,25 @@ <http://www.gnu.org/licenses/>. */ #include "config.h" +#define INCLUDE_STRING #include "system.h" +#include "coretypes.h" +#include "tm.h" -struct arch_extension +/* Defined in common/config/aarch64/aarch64-common.c. */ +std::string aarch64_get_extension_string_for_isa_flags (unsigned long, + unsigned long); + +struct aarch64_arch_extension { const char *ext; + unsigned int flag; const char *feat_string; }; -#define AARCH64_OPT_EXTENSION(EXT_NAME, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \ - { EXT_NAME, FEATURE_STRING }, -static struct arch_extension ext_to_feat_string[] = +#define AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, FEATURE_STRING) \ + { EXT_NAME, FLAG_CANONICAL, FEATURE_STRING }, +static struct aarch64_arch_extension aarch64_extensions[] = { #include "aarch64-option-extensions.def" }; @@ -41,15 +49,16 @@ struct aarch64_core_data const char* arch; const char* implementer_id; const char* part_no; + const unsigned long flags; }; #define AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHED, ARCH, FLAGS, COSTS, IMP, PART) \ - { CORE_NAME, #ARCH, IMP, PART }, + { CORE_NAME, #ARCH, IMP, PART, FLAGS }, -static struct aarch64_core_data cpu_data [] = +static struct aarch64_core_data aarch64_cpu_data[] = { #include "aarch64-cores.def" - { NULL, NULL, NULL, NULL } + { NULL, NULL, NULL, NULL, 0 } }; #undef AARCH64_CORE @@ -58,37 +67,37 @@ struct aarch64_arch_driver_info { const char* id; const char* name; + const unsigned long flags; }; #define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH_REV, FLAGS) \ - { #ARCH_IDENT, NAME }, + { #ARCH_IDENT, NAME, FLAGS }, -static struct aarch64_arch_driver_info aarch64_arches [] = +static struct aarch64_arch_driver_info aarch64_arches[] = { #include "aarch64-arches.def" - {NULL, NULL} + {NULL, NULL, 0} }; #undef AARCH64_ARCH -/* Return the full architecture name string corresponding to the - identifier ID. */ +/* Return an aarch64_arch_driver_info for the architecture described + by ID, or NULL if ID describes something we don't know about. */ -static const char* -get_arch_name_from_id (const char* id) +static struct aarch64_arch_driver_info* +get_arch_from_id (const char* id) { unsigned int i = 0; for (i = 0; aarch64_arches[i].id != NULL; i++) { if (strcmp (id, aarch64_arches[i].id) == 0) - return aarch64_arches[i].name; + return &aarch64_arches[i]; } return NULL; } - /* Check wether the string CORE contains the same CPU part numbers as BL_STRING. For example CORE="{0xd03, 0xd07}" and BL_STRING="0xd07.0xd03" should return true. */ @@ -97,7 +106,7 @@ static bool valid_bL_string_p (const char** core, const char* bL_string) { return strstr (bL_string, core[0]) != NULL - && strstr (bL_string, core[1]) != NULL; + && strstr (bL_string, core[1]) != NULL; } /* Return true iff ARR contains STR in one of its two elements. */ @@ -141,7 +150,7 @@ host_detect_local_cpu (int argc, const char **argv) { const char *arch_id = NULL; const char *res = NULL; - static const int num_exts = ARRAY_SIZE (ext_to_feat_string); + static const int num_exts = ARRAY_SIZE (aarch64_extensions); char buf[128]; FILE *f = NULL; bool arch = false; @@ -155,6 +164,8 @@ host_detect_local_cpu (int argc, const char **argv) unsigned int n_imps = 0; bool processed_exts = false; const char *ext_string = ""; + unsigned long extension_flags = 0; + unsigned long default_flags = 0; gcc_assert (argc); @@ -183,60 +194,71 @@ host_detect_local_cpu (int argc, const char **argv) { if (strstr (buf, "implementer") != NULL) { - for (i = 0; cpu_data[i].name != NULL; i++) - if (strstr (buf, cpu_data[i].implementer_id) != NULL - && !contains_string_p (imps, cpu_data[i].implementer_id)) + for (i = 0; aarch64_cpu_data[i].name != NULL; i++) + if (strstr (buf, aarch64_cpu_data[i].implementer_id) != NULL + && !contains_string_p (imps, + aarch64_cpu_data[i].implementer_id)) { - if (n_imps == 2) - goto not_found; + if (n_imps == 2) + goto not_found; - imps[n_imps++] = cpu_data[i].implementer_id; + imps[n_imps++] = aarch64_cpu_data[i].implementer_id; - break; + break; } - continue; + continue; } if (strstr (buf, "part") != NULL) { - for (i = 0; cpu_data[i].name != NULL; i++) - if (strstr (buf, cpu_data[i].part_no) != NULL - && !contains_string_p (cores, cpu_data[i].part_no)) + for (i = 0; aarch64_cpu_data[i].name != NULL; i++) + if (strstr (buf, aarch64_cpu_data[i].part_no) != NULL + && !contains_string_p (cores, aarch64_cpu_data[i].part_no)) { - if (n_cores == 2) - goto not_found; + if (n_cores == 2) + goto not_found; - cores[n_cores++] = cpu_data[i].part_no; - core_idx = i; - arch_id = cpu_data[i].arch; - break; + cores[n_cores++] = aarch64_cpu_data[i].part_no; + core_idx = i; + arch_id = aarch64_cpu_data[i].arch; + break; } - continue; - } + continue; + } if (!tune && !processed_exts && strstr (buf, "Features") != NULL) - { - for (i = 0; i < num_exts; i++) - { - bool enabled = true; - char *p = NULL; - char *feat_string = concat (ext_to_feat_string[i].feat_string, NULL); - - p = strtok (feat_string, " "); - - while (p != NULL) - { - if (strstr (buf, p) == NULL) - { - enabled = false; - break; - } - p = strtok (NULL, " "); - } - ext_string = concat (ext_string, "+", enabled ? "" : "no", - ext_to_feat_string[i].ext, NULL); - } - processed_exts = true; - } + { + for (i = 0; i < num_exts; i++) + { + char *p = NULL; + char *feat_string + = concat (aarch64_extensions[i].feat_string, NULL); + bool enabled = true; + + /* This may be a multi-token feature string. We need + to match all parts, which could be in any order. + If this isn't a multi-token feature string, strtok is + just going to return a pointer to feat_string. */ + p = strtok (feat_string, " "); + while (p != NULL) + { + if (strstr (buf, p) == NULL) + { + /* Failed to match this token. Turn off the + features we'd otherwise enable. */ + enabled = false; + break; + } + p = strtok (NULL, " "); + } + + if (enabled) + extension_flags |= aarch64_extensions[i].flag; + else + extension_flags &= ~(aarch64_extensions[i].flag); + } + + processed_exts = true; + } } fclose (f); @@ -251,44 +273,56 @@ host_detect_local_cpu (int argc, const char **argv) if (arch) { - const char* arch_name = get_arch_name_from_id (arch_id); + struct aarch64_arch_driver_info* arch_info = get_arch_from_id (arch_id); /* We got some arch indentifier that's not in aarch64-arches.def? */ - if (!arch_name) - goto not_found; + if (!arch_info) + goto not_found; - res = concat ("-march=", arch_name, NULL); + res = concat ("-march=", arch_info->name, NULL); + default_flags = arch_info->flags; } /* We have big.LITTLE. */ else if (n_cores == 2) { - for (i = 0; cpu_data[i].name != NULL; i++) - { - if (strchr (cpu_data[i].part_no, '.') != NULL - && strncmp (cpu_data[i].implementer_id, imps[0], strlen (imps[0]) - 1) == 0 - && valid_bL_string_p (cores, cpu_data[i].part_no)) - { - res = concat ("-m", cpu ? "cpu" : "tune", "=", cpu_data[i].name, NULL); - break; - } - } + for (i = 0; aarch64_cpu_data[i].name != NULL; i++) + { + if (strchr (aarch64_cpu_data[i].part_no, '.') != NULL + && strncmp (aarch64_cpu_data[i].implementer_id, + imps[0], + strlen (imps[0]) - 1) == 0 + && valid_bL_string_p (cores, aarch64_cpu_data[i].part_no)) + { + res = concat ("-m", + cpu ? "cpu" : "tune", "=", + aarch64_cpu_data[i].name, + NULL); + default_flags = aarch64_cpu_data[i].flags; + break; + } + } if (!res) - goto not_found; + goto not_found; } /* The simple, non-big.LITTLE case. */ else { - if (strncmp (cpu_data[core_idx].implementer_id, imps[0], - strlen (imps[0]) - 1) != 0) - goto not_found; + if (strncmp (aarch64_cpu_data[core_idx].implementer_id, imps[0], + strlen (imps[0]) - 1) != 0) + goto not_found; res = concat ("-m", cpu ? "cpu" : "tune", "=", - cpu_data[core_idx].name, NULL); + aarch64_cpu_data[core_idx].name, NULL); + default_flags = aarch64_cpu_data[core_idx].flags; } if (tune) return res; + ext_string + = aarch64_get_extension_string_for_isa_flags (extension_flags, + default_flags).c_str (); + res = concat (res, ext_string, NULL); return res; diff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md index 11868278c3d..8f2726d4483 100644 --- a/gcc/config/aarch64/predicates.md +++ b/gcc/config/aarch64/predicates.md @@ -302,7 +302,7 @@ }) (define_predicate "aarch64_simd_reg_or_zero" - (and (match_code "reg,subreg,const_int,const_vector") + (and (match_code "reg,subreg,const_int,const_double,const_vector") (ior (match_operand 0 "register_operand") (ior (match_test "op == const0_rtx") (match_test "aarch64_simd_imm_zero_p (op, mode)"))))) diff --git a/gcc/config/arc/arc.h b/gcc/config/arc/arc.h index 21c049f9850..1c2a38d4acf 100644 --- a/gcc/config/arc/arc.h +++ b/gcc/config/arc/arc.h @@ -188,7 +188,8 @@ along with GCC; see the file COPYING3. If not see %(linker) %l " LINK_PIE_SPEC "%X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\ %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\ %{static:} %{L*} %(mfwrap) %(link_libgcc) %o\ - %{fopenacc|fopenmp|ftree-parallelize-loops=*:%:include(libgomp.spec)%(link_gomp)}\ + %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\ + %:include(libgomp.spec)%(link_gomp)}\ %(mflib)\ %{fprofile-arcs|fprofile-generate|coverage:-lgcov}\ %{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}\ diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 63521403f6c..ad123dde991 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -2037,7 +2037,8 @@ extern int making_const_table; "\t.syntax divided\n") #undef ASM_APP_OFF -#define ASM_APP_OFF "\t.syntax unified\n" +#define ASM_APP_OFF (TARGET_ARM ? "\t.arm\n\t.syntax unified\n" : \ + "\t.thumb\n\t.syntax unified\n") /* Output a push or a pop instruction (only used when profiling). We can't push STATIC_CHAIN_REGNUM (r12) directly with Thumb-1. We know diff --git a/gcc/config/arm/thumb2.md b/gcc/config/arm/thumb2.md index 992536593d6..ab08288413c 100644 --- a/gcc/config/arm/thumb2.md +++ b/gcc/config/arm/thumb2.md @@ -1550,7 +1550,8 @@ (match_operand 5 "" "") (match_operand 6 "" "")))] "TARGET_THUMB2 - && (INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) < 32)" + && (INTVAL (operands[2]) >= 0 && INTVAL (operands[2]) < 32) + && peep2_reg_dead_p (2, operands[0])" [(parallel [(set (match_dup 0) (compare:CC_NOOV (ashift:SI (match_dup 1) (match_dup 2)) (const_int 0))) @@ -1578,7 +1579,8 @@ (match_operand 5 "" "") (match_operand 6 "" "")))] "TARGET_THUMB2 - && (INTVAL (operands[2]) > 0 && INTVAL (operands[2]) < 32)" + && (INTVAL (operands[2]) > 0 && INTVAL (operands[2]) < 32) + && peep2_reg_dead_p (2, operands[0])" [(parallel [(set (match_dup 0) (compare:CC_NOOV (ashift:SI (match_dup 1) (match_dup 2)) (const_int 0))) diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h index 9f686d3ad3a..c9981b815cd 100644 --- a/gcc/config/darwin.h +++ b/gcc/config/darwin.h @@ -177,7 +177,7 @@ extern GTY(()) int darwin_ms_struct; %{o*}%{!o:-o a.out} \ %{!nostdlib:%{!nostartfiles:%S}} \ %{L*} %(link_libgcc) %o %{fprofile-arcs|fprofile-generate*|coverage:-lgcov} \ - %{fopenacc|fopenmp|ftree-parallelize-loops=*: \ + %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): \ %{static|static-libgcc|static-libstdc++|static-libgfortran: libgomp.a%s; : -lgomp } } \ %{fgnu-tm: \ %{static|static-libgcc|static-libstdc++|static-libgfortran: libitm.a%s; : -litm } } \ diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index e5dfb95048a..1fa007efdc3 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -53747,7 +53747,7 @@ ix86_memmodel_check (unsigned HOST_WIDE_INT val) return val; } -/* Set CLONEI->vecsize_mangle, CLONEI->vecsize_int, +/* Set CLONEI->vecsize_mangle, CLONEI->mask_mode, CLONEI->vecsize_int, CLONEI->vecsize_float and if CLONEI->simdlen is 0, also CLONEI->simdlen. Return 0 if SIMD clones shouldn't be emitted, or number of vecsize_mangle variants that should be emitted. */ @@ -53761,7 +53761,7 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node, if (clonei->simdlen && (clonei->simdlen < 2 - || clonei->simdlen > 16 + || clonei->simdlen > 1024 || (clonei->simdlen & (clonei->simdlen - 1)) != 0)) { warning_at (DECL_SOURCE_LOCATION (node->decl), 0, @@ -53819,7 +53819,9 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node, { /* If the function isn't exported, we can pick up just one ISA for the clones. */ - if (TARGET_AVX2) + if (TARGET_AVX512F) + clonei->vecsize_mangle = 'e'; + else if (TARGET_AVX2) clonei->vecsize_mangle = 'd'; else if (TARGET_AVX) clonei->vecsize_mangle = 'c'; @@ -53829,9 +53831,10 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node, } else { - clonei->vecsize_mangle = "bcd"[num]; - ret = 3; + clonei->vecsize_mangle = "bcde"[num]; + ret = 4; } + clonei->mask_mode = VOIDmode; switch (clonei->vecsize_mangle) { case 'b': @@ -53846,6 +53849,14 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node, clonei->vecsize_int = 256; clonei->vecsize_float = 256; break; + case 'e': + clonei->vecsize_int = 512; + clonei->vecsize_float = 512; + if (TYPE_MODE (base_type) == QImode) + clonei->mask_mode = DImode; + else + clonei->mask_mode = SImode; + break; } if (clonei->simdlen == 0) { @@ -53854,9 +53865,31 @@ ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node, else clonei->simdlen = clonei->vecsize_float; clonei->simdlen /= GET_MODE_BITSIZE (TYPE_MODE (base_type)); - if (clonei->simdlen > 16) - clonei->simdlen = 16; } + else if (clonei->simdlen > 16) + { + /* For compatibility with ICC, use the same upper bounds + for simdlen. In particular, for CTYPE below, use the return type, + unless the function returns void, in that case use the characteristic + type. If it is possible for given SIMDLEN to pass CTYPE value + in registers (8 [XYZ]MM* regs for 32-bit code, 16 [XYZ]MM* regs + for 64-bit code), accept that SIMDLEN, otherwise warn and don't + emit corresponding clone. */ + tree ctype = ret_type; + if (TREE_CODE (ret_type) == VOID_TYPE) + ctype = base_type; + int cnt = GET_MODE_BITSIZE (TYPE_MODE (ctype)) * clonei->simdlen; + if (SCALAR_INT_MODE_P (TYPE_MODE (ctype))) + cnt /= clonei->vecsize_int; + else + cnt /= clonei->vecsize_float; + if (cnt > (TARGET_64BIT ? 16 : 8)) + { + warning_at (DECL_SOURCE_LOCATION (node->decl), 0, + "unsupported simdlen %d", clonei->simdlen); + return 0; + } + } return ret; } @@ -53881,6 +53914,10 @@ ix86_simd_clone_adjust (struct cgraph_node *node) if (!TARGET_AVX2) str = "avx2"; break; + case 'e': + if (!TARGET_AVX512F) + str = "avx512f"; + break; default: gcc_unreachable (); } @@ -53920,6 +53957,10 @@ ix86_simd_clone_usable (struct cgraph_node *node) if (!TARGET_AVX2) return -1; return 0; + case 'e': + if (!TARGET_AVX512F) + return -1; + return 0; default: gcc_unreachable (); } diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index f324ea7ea41..56a30502d41 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -5449,7 +5449,14 @@ (match_dup 4)) (match_dup 5))) (clobber (reg:CC FLAGS_REG))])] - "split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);") +{ + split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]); + if (operands[2] == const0_rtx) + { + ix86_expand_binary_operator (PLUS, <MODE>mode, &operands[3]); + DONE; + } +}) (define_insn "*add<mode>_1" [(set (match_operand:SWI48 0 "nonimmediate_operand" "=r,rm,r,r") @@ -6379,7 +6386,14 @@ (ltu:DWIH (reg:CC FLAGS_REG) (const_int 0))) (match_dup 5))) (clobber (reg:CC FLAGS_REG))])] - "split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);") +{ + split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]); + if (operands[2] == const0_rtx) + { + ix86_expand_binary_operator (MINUS, <MODE>mode, &operands[3]); + DONE; + } +}) (define_insn "*sub<mode>_1" [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>") @@ -8893,7 +8907,7 @@ (const_int 8)) (zero_extend:HI (match_operand:QI 2 "register_operand" "k"))))] "TARGET_AVX512F" - "kunpckbw\t{%1, %2, %0|%0, %2, %1}" + "kunpckbw\t{%2, %1, %0|%0, %1, %2}" [(set_attr "mode" "HI") (set_attr "type" "msklog") (set_attr "prefix" "vex")]) @@ -8906,7 +8920,7 @@ (const_int 16)) (zero_extend:SI (match_operand:HI 2 "register_operand" "k"))))] "TARGET_AVX512BW" - "kunpckwd\t{%1, %2, %0|%0, %2, %1}" + "kunpckwd\t{%2, %1, %0|%0, %1, %2}" [(set_attr "mode" "SI")]) (define_insn "kunpckdi" @@ -8917,7 +8931,7 @@ (const_int 32)) (zero_extend:DI (match_operand:SI 2 "register_operand" "k"))))] "TARGET_AVX512BW" - "kunpckdq\t{%1, %2, %0|%0, %2, %1}" + "kunpckdq\t{%2, %1, %0|%0, %1, %2}" [(set_attr "mode" "DI")]) ;; See comment for addsi_1_zext why we do use nonimmediate_operand diff --git a/gcc/config/i386/mingw32.h b/gcc/config/i386/mingw32.h index 4ac5f688033..e04818966fa 100644 --- a/gcc/config/i386/mingw32.h +++ b/gcc/config/i386/mingw32.h @@ -207,7 +207,7 @@ do { \ /* mingw32 uses the -mthreads option to enable thread support. */ #undef GOMP_SELF_SPECS -#define GOMP_SELF_SPECS "%{fopenacc|fopenmp|ftree-parallelize-loops=*: " \ +#define GOMP_SELF_SPECS "%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): " \ "-mthreads -pthread}" #undef GTM_SELF_SPECS #define GTM_SELF_SPECS "%{fgnu-tm:-mthreads -pthread}" diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 5fd650fde4a..b64457edab0 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -493,8 +493,9 @@ [(V16SF "f") (V16SI "i") (V8DF "f") (V8DI "i") (V8SF "f") (V8SI "i") (V4DF "f") (V4DI "i") (V4SF "f") (V4SI "i") (V2DF "f") (V2DI "i") - (V32QI "i") (V16HI "i") (V16QI "i") (V8HI "i") - (V64QI "i") (V1TI "i") (V2TI "i")]) + (V32HI "i") (V16HI "i") (V8HI "i") + (V64QI "i") (V32QI "i") (V16QI "i") + (V4TI "i") (V2TI "i") (V1TI "i")]) (define_mode_attr ssequartermode [(V16SF "V4SF") (V8DF "V2DF") (V16SI "V4SI") (V8DI "V2DI")]) @@ -705,7 +706,8 @@ ;; Pointer size override for scalar modes (Intel asm dialect) (define_mode_attr iptr - [(V32QI "b") (V16HI "w") (V8SI "k") (V4DI "q") + [(V64QI "b") (V32HI "w") (V16SI "k") (V8DI "q") + (V32QI "b") (V16HI "w") (V8SI "k") (V4DI "q") (V16QI "b") (V8HI "w") (V4SI "k") (V2DI "q") (V8SF "k") (V4DF "q") (V4SF "k") (V2DF "q") @@ -732,7 +734,8 @@ (V64QI "8") (V32QI "8") (V16QI "8") (V32HI "16") (V16HI "16") (V8HI "16") (V16SI "32") (V8SI "32") (V4SI "32") - (V16SF "32") (V8DF "64")]) + (V16SF "32") (V8SF "32") (V4SF "32") + (V8DF "64") (V4DF "64") (V2DF "64")]) ;; SSE prefix for integer vector modes (define_mode_attr sseintprefix @@ -11377,45 +11380,46 @@ case MODE_XI: gcc_assert (TARGET_AVX512F); case MODE_OI: - gcc_assert (TARGET_AVX2 || TARGET_AVX512VL); + gcc_assert (TARGET_AVX2); case MODE_TI: - gcc_assert (TARGET_SSE2 || TARGET_AVX512VL); + gcc_assert (TARGET_SSE2); switch (<MODE>mode) - { - case V16SImode: - case V8DImode: - if (TARGET_AVX512F) - { - tmp = "pandn<ssemodesuffix>"; - break; - } - case V8SImode: - case V4DImode: - case V4SImode: - case V2DImode: - if (TARGET_AVX512VL) - { - tmp = "pandn<ssemodesuffix>"; - break; - } - default: - tmp = TARGET_AVX512VL ? "pandnq" : "pandn"; - } + { + case V64QImode: + case V32HImode: + /* There is no vpandnb or vpandnw instruction, nor vpandn for + 512-bit vectors. Use vpandnq instead. */ + tmp = "pandnq"; + break; + case V16SImode: + case V8DImode: + tmp = "pandn<ssemodesuffix>"; + break; + case V8SImode: + case V4DImode: + case V4SImode: + case V2DImode: + tmp = TARGET_AVX512VL ? "pandn<ssemodesuffix>" : "pandn"; + break; + default: + tmp = TARGET_AVX512VL ? "pandnq" : "pandn"; + break; + } break; - case MODE_V16SF: + case MODE_V16SF: gcc_assert (TARGET_AVX512F); - case MODE_V8SF: + case MODE_V8SF: gcc_assert (TARGET_AVX); - case MODE_V4SF: + case MODE_V4SF: gcc_assert (TARGET_SSE); tmp = "andnps"; break; - default: + default: gcc_unreachable (); - } + } switch (which_alternative) { @@ -11423,7 +11427,7 @@ ops = "%s\t{%%2, %%0|%%0, %%2}"; break; case 1: - ops = "v%s\t{%%2, %%1, %%0<mask_operand3_1>|%%0<mask_operand3_1>, %%1, %%2}"; + ops = "v%s\t{%%2, %%1, %%0|%%0, %%1, %%2}"; break; default: gcc_unreachable (); @@ -11473,21 +11477,6 @@ (set_attr "prefix" "evex") (set_attr "mode" "<sseinsnmode>")]) -(define_insn "*andnot<mode>3_mask" - [(set (match_operand:VI12_AVX512VL 0 "register_operand" "=v") - (vec_merge:VI12_AVX512VL - (and:VI12_AVX512VL - (not:VI12_AVX512VL - (match_operand:VI12_AVX512VL 1 "register_operand" "v")) - (match_operand:VI12_AVX512VL 2 "nonimmediate_operand" "vm")) - (match_operand:VI12_AVX512VL 3 "vector_move_operand" "0C") - (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))] - "TARGET_AVX512BW" - "vpandn<ssemodesuffix>\t{%2, %1, %0%{%4%}%N3|%0%{%4%}%N3, %1, %2}"; - [(set_attr "type" "sselog") - (set_attr "prefix" "evex") - (set_attr "mode" "<sseinsnmode>")]) - (define_expand "<code><mode>3" [(set (match_operand:VI 0 "register_operand") (any_logic:VI @@ -11758,16 +11747,16 @@ (define_expand "vec_pack_trunc_qi" [(set (match_operand:HI 0 ("register_operand")) - (ior:HI (ashift:HI (zero_extend:HI (match_operand:QI 1 ("register_operand"))) + (ior:HI (ashift:HI (zero_extend:HI (match_operand:QI 2 ("register_operand"))) (const_int 8)) - (zero_extend:HI (match_operand:QI 2 ("register_operand")))))] + (zero_extend:HI (match_operand:QI 1 ("register_operand")))))] "TARGET_AVX512F") (define_expand "vec_pack_trunc_<mode>" [(set (match_operand:<DOUBLEMASKMODE> 0 ("register_operand")) - (ior:<DOUBLEMASKMODE> (ashift:<DOUBLEMASKMODE> (zero_extend:<DOUBLEMASKMODE> (match_operand:SWI24 1 ("register_operand"))) + (ior:<DOUBLEMASKMODE> (ashift:<DOUBLEMASKMODE> (zero_extend:<DOUBLEMASKMODE> (match_operand:SWI24 2 ("register_operand"))) (match_dup 3)) - (zero_extend:<DOUBLEMASKMODE> (match_operand:SWI24 2 ("register_operand")))))] + (zero_extend:<DOUBLEMASKMODE> (match_operand:SWI24 1 ("register_operand")))))] "TARGET_AVX512BW" { operands[3] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode)); diff --git a/gcc/config/ia64/hpux.h b/gcc/config/ia64/hpux.h index 8b90c99f44b..008c4f6ba33 100644 --- a/gcc/config/ia64/hpux.h +++ b/gcc/config/ia64/hpux.h @@ -92,7 +92,7 @@ do { \ #undef LIB_SPEC #define LIB_SPEC \ "%{!shared: \ - %{mt|pthread:%{fopenacc|fopenmp|ftree-parallelize-loops=*:-lrt} -lpthread} \ + %{mt|pthread:%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):-lrt} -lpthread} \ %{p:%{!mlp64:-L/usr/lib/hpux32/libp} \ %{mlp64:-L/usr/lib/hpux64/libp} -lprof} \ %{pg:%{!mlp64:-L/usr/lib/hpux32/libp} \ diff --git a/gcc/config/pa/pa-hpux11.h b/gcc/config/pa/pa-hpux11.h index 3e5207a669d..600b6775316 100644 --- a/gcc/config/pa/pa-hpux11.h +++ b/gcc/config/pa/pa-hpux11.h @@ -147,7 +147,7 @@ along with GCC; see the file COPYING3. If not see #undef LIB_SPEC #define LIB_SPEC \ "%{!shared:\ - %{fopenacc|fopenmp|ftree-parallelize-loops=*:\ + %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\ %{static:-a archive_shared} -lrt %{static:-a archive}}\ %{mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a archive_shared -ldld -a archive -lc}\ diff --git a/gcc/config/pa/pa64-hpux.h b/gcc/config/pa/pa64-hpux.h index a5ccb4aaec7..279406a01fb 100644 --- a/gcc/config/pa/pa64-hpux.h +++ b/gcc/config/pa/pa64-hpux.h @@ -58,21 +58,21 @@ along with GCC; see the file COPYING3. If not see #if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_GNU_LD) #define LIB_SPEC \ "%{!shared:\ - %{!p:%{!pg:%{fopenacc|fopenmp|ftree-parallelize-loops=*:\ + %{!p:%{!pg:%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\ %{static:-a shared} -lrt %{static:-a archive}}\ %{mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}\ %{!mt:%{!pthread:-a shared -lc -a archive}}}}}\ %{p:%{!pg:%{static:%{!mhp-ld:-a shared}%{mhp-ld:-a archive_shared}}\ -lprof %{static:-a archive}\ - %{fopenacc|fopenmp|ftree-parallelize-loops=*:\ + %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\ %{static:-a shared} -lrt %{static:-a archive}}\ %{mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}\ %{!mt:%{!pthread:-a shared -lc -a archive}}}}}\ %{pg:%{static:%{!mhp-ld:-a shared}%{mhp-ld:-a archive_shared}}\ -lgprof %{static:-a archive}\ - %{fopenacc|fopenmp|ftree-parallelize-loops=*:\ + %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\ %{static:-a shared} -lrt %{static:-a archive}}\ %{mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}\ @@ -81,21 +81,21 @@ along with GCC; see the file COPYING3. If not see #else #define LIB_SPEC \ "%{!shared:\ - %{!p:%{!pg:%{fopenacc|fopenmp|ftree-parallelize-loops=*:\ + %{!p:%{!pg:%{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\ %{static:-a shared} -lrt %{static:-a archive}}\ %{mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}\ %{!mt:%{!pthread:-a shared -lc -a archive}}}}}\ %{p:%{!pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\ -lprof %{static:-a archive}\ - %{fopenacc|fopenmp|ftree-parallelize-loops=*:\ + %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\ %{static:-a shared} -lrt %{static:-a archive}}\ %{mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}\ %{!mt:%{!pthread:-a shared -lc -a archive}}}}}\ %{pg:%{static:%{mgnu-ld:-a shared}%{!mgnu-ld:-a archive_shared}}\ -lgprof %{static:-a archive}\ - %{fopenacc|fopenmp|ftree-parallelize-loops=*:\ + %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1):\ %{static:-a shared} -lrt %{static:-a archive}}\ %{mt|pthread:-lpthread} -lc\ %{static:%{!nolibdld:-a shared -ldld -a archive -lc}\ diff --git a/gcc/config/pa/predicates.md b/gcc/config/pa/predicates.md index fbef6aee14b..447a04c090b 100644 --- a/gcc/config/pa/predicates.md +++ b/gcc/config/pa/predicates.md @@ -301,6 +301,9 @@ if (reg_plus_base_memory_operand (op, mode)) { + if (reload_in_progress) + return true; + /* Extract CONST_INT operand. */ if (GET_CODE (op) == SUBREG) op = SUBREG_REG (op); @@ -335,6 +338,9 @@ if (reg_plus_base_memory_operand (op, mode)) { + if (reload_in_progress) + return true; + /* Extract CONST_INT operand. */ if (GET_CODE (op) == SUBREG) op = SUBREG_REG (op); diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index fd4b7cc5a7e..1d0076c41f0 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -3132,8 +3132,6 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p) reg_addr[V4SFmode].reload_load = CODE_FOR_reload_v4sf_di_load; reg_addr[V2DFmode].reload_store = CODE_FOR_reload_v2df_di_store; reg_addr[V2DFmode].reload_load = CODE_FOR_reload_v2df_di_load; - reg_addr[KFmode].reload_store = CODE_FOR_reload_kf_di_store; - reg_addr[KFmode].reload_load = CODE_FOR_reload_kf_di_load; reg_addr[DFmode].reload_store = CODE_FOR_reload_df_di_store; reg_addr[DFmode].reload_load = CODE_FOR_reload_df_di_load; reg_addr[DDmode].reload_store = CODE_FOR_reload_dd_di_store; @@ -3141,7 +3139,13 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p) reg_addr[SFmode].reload_store = CODE_FOR_reload_sf_di_store; reg_addr[SFmode].reload_load = CODE_FOR_reload_sf_di_load; - if (FLOAT128_IEEE_P (TFmode)) + if (FLOAT128_VECTOR_P (KFmode)) + { + reg_addr[KFmode].reload_store = CODE_FOR_reload_kf_di_store; + reg_addr[KFmode].reload_load = CODE_FOR_reload_kf_di_load; + } + + if (FLOAT128_VECTOR_P (TFmode)) { reg_addr[TFmode].reload_store = CODE_FOR_reload_tf_di_store; reg_addr[TFmode].reload_load = CODE_FOR_reload_tf_di_load; @@ -3182,6 +3186,18 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p) reg_addr[V8HImode].reload_vsx_gpr = CODE_FOR_reload_vsx_from_gprv8hi; reg_addr[V16QImode].reload_vsx_gpr = CODE_FOR_reload_vsx_from_gprv16qi; reg_addr[SFmode].reload_vsx_gpr = CODE_FOR_reload_vsx_from_gprsf; + + if (FLOAT128_VECTOR_P (KFmode)) + { + reg_addr[KFmode].reload_gpr_vsx = CODE_FOR_reload_gpr_from_vsxkf; + reg_addr[KFmode].reload_vsx_gpr = CODE_FOR_reload_vsx_from_gprkf; + } + + if (FLOAT128_VECTOR_P (TFmode)) + { + reg_addr[TFmode].reload_gpr_vsx = CODE_FOR_reload_gpr_from_vsxtf; + reg_addr[TFmode].reload_vsx_gpr = CODE_FOR_reload_vsx_from_gprtf; + } } } else @@ -3200,8 +3216,6 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p) reg_addr[V4SFmode].reload_load = CODE_FOR_reload_v4sf_si_load; reg_addr[V2DFmode].reload_store = CODE_FOR_reload_v2df_si_store; reg_addr[V2DFmode].reload_load = CODE_FOR_reload_v2df_si_load; - reg_addr[KFmode].reload_store = CODE_FOR_reload_kf_si_store; - reg_addr[KFmode].reload_load = CODE_FOR_reload_kf_si_load; reg_addr[DFmode].reload_store = CODE_FOR_reload_df_si_store; reg_addr[DFmode].reload_load = CODE_FOR_reload_df_si_load; reg_addr[DDmode].reload_store = CODE_FOR_reload_dd_si_store; @@ -3209,6 +3223,12 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p) reg_addr[SFmode].reload_store = CODE_FOR_reload_sf_si_store; reg_addr[SFmode].reload_load = CODE_FOR_reload_sf_si_load; + if (FLOAT128_VECTOR_P (KFmode)) + { + reg_addr[KFmode].reload_store = CODE_FOR_reload_kf_si_store; + reg_addr[KFmode].reload_load = CODE_FOR_reload_kf_si_load; + } + if (FLOAT128_IEEE_P (TFmode)) { reg_addr[TFmode].reload_store = CODE_FOR_reload_tf_si_store; @@ -34381,8 +34401,8 @@ static struct rs6000_opt_mask const rs6000_opt_masks[] = { "dlmzb", OPTION_MASK_DLMZB, false, true }, { "efficient-unaligned-vsx", OPTION_MASK_EFFICIENT_UNALIGNED_VSX, false, true }, - { "float128", OPTION_MASK_FLOAT128, false, true }, - { "float128-hardware", OPTION_MASK_FLOAT128_HW, false, true }, + { "float128", OPTION_MASK_FLOAT128, false, false }, + { "float128-hardware", OPTION_MASK_FLOAT128_HW, false, false }, { "fprnd", OPTION_MASK_FPRND, false, true }, { "hard-dfp", OPTION_MASK_DFP, false, true }, { "htm", OPTION_MASK_HTM, false, true }, diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index ef1dea82c84..849b19a7b0b 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -7261,7 +7261,7 @@ (define_insn "*ieee_128bit_vsx_neg<mode>2_internal" [(set (match_operand:IEEE128 0 "register_operand" "=wa") (neg:IEEE128 (match_operand:IEEE128 1 "register_operand" "wa"))) - (use (match_operand:V16QI 2 "register_operand" "=v"))] + (use (match_operand:V16QI 2 "register_operand" "v"))] "TARGET_FLOAT128 && !TARGET_FLOAT128_HW" "xxlxor %x0,%x1,%x2" [(set_attr "type" "vecsimple")]) @@ -7290,7 +7290,7 @@ (define_insn "*ieee_128bit_vsx_abs<mode>2_internal" [(set (match_operand:IEEE128 0 "register_operand" "=wa") (abs:IEEE128 (match_operand:IEEE128 1 "register_operand" "wa"))) - (use (match_operand:V16QI 2 "register_operand" "=v"))] + (use (match_operand:V16QI 2 "register_operand" "v"))] "TARGET_FLOAT128 && !TARGET_FLOAT128_HW" "xxlandc %x0,%x1,%x2" [(set_attr "type" "vecsimple")]) @@ -7306,7 +7306,7 @@ "#" "&& 1" [(parallel [(set (match_dup 0) - (abs:IEEE128 (match_dup 1))) + (neg:IEEE128 (abs:IEEE128 (match_dup 1)))) (use (match_dup 2))])] { if (GET_CODE (operands[2]) == SCRATCH) @@ -7323,7 +7323,7 @@ (neg:IEEE128 (abs:IEEE128 (match_operand:IEEE128 1 "register_operand" "wa")))) - (use (match_operand:V16QI 2 "register_operand" "=v"))] + (use (match_operand:V16QI 2 "register_operand" "v"))] "TARGET_FLOAT128 && !TARGET_FLOAT128_HW" "xxlor %x0,%x1,%x2" [(set_attr "type" "vecsimple")]) diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 4f219bee17d..1134d0f1e9d 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -6063,7 +6063,7 @@ s390_expand_insv (rtx dest, rtx op1, rtx op2, rtx src) { machine_mode mode_s = GET_MODE (src); - if (mode_s == VOIDmode) + if (CONSTANT_P (src)) { /* For constant zero values the representation with AND appears to be folded in more situations than the (set diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md index c0a9249c68d..0bb0f2b3038 100644 --- a/gcc/config/sh/sh.md +++ b/gcc/config/sh/sh.md @@ -2242,14 +2242,23 @@ [(set_attr "type" "arith")]) ;; Old reload might generate add insns directly (not through the expander) for -;; the memory address of complex insns like atomic insns when reloading. +;; address register calculations when reloading, in which case it won't try +;; the addsi_scr pattern. Because reload will sometimes try to validate +;; the generated insns and their constraints, this pattern must be +;; recognizable during and after reload. However, when reload generates +;; address register calculations for the stack pointer, we don't allow this +;; pattern. This will make reload prefer using indexed @(reg + reg) address +;; modes when the displacement of a @(disp + reg) doesn't fit. (define_insn_and_split "*addsi3" [(set (match_operand:SI 0 "arith_reg_dest" "=r") (plus:SI (match_operand:SI 1 "arith_reg_operand" "r") (match_operand:SI 2 "arith_or_int_operand" "rn")))] "TARGET_SH1 && !sh_lra_p () - && reload_completed - && !reg_overlap_mentioned_p (operands[0], operands[1])" + && (reload_completed || reload_in_progress) + && !reg_overlap_mentioned_p (operands[0], operands[1]) + && (!reload_in_progress + || ((!REG_P (operands[1]) || REGNO (operands[1]) != SP_REG) + && (!REG_P (operands[2]) || REGNO (operands[2]) != SP_REG)))" "#" "&& 1" [(set (match_dup 0) (plus:SI (match_dup 0) (match_dup 2)))] diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 080be617a5a..082af3cc9b1 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -4917,13 +4917,18 @@ sparc_compute_frame_size (HOST_WIDE_INT size, int leaf_function) /* Calculate space needed for global registers. */ if (TARGET_ARCH64) - for (i = 0; i < 8; i++) - if (save_global_or_fp_reg_p (i, 0)) - n_global_fp_regs += 2; + { + for (i = 0; i < 8; i++) + if (save_global_or_fp_reg_p (i, 0)) + n_global_fp_regs += 2; + } else - for (i = 0; i < 8; i += 2) - if (save_global_or_fp_reg_p (i, 0) || save_global_or_fp_reg_p (i + 1, 0)) - n_global_fp_regs += 2; + { + for (i = 0; i < 8; i += 2) + if (save_global_or_fp_reg_p (i, 0) + || save_global_or_fp_reg_p (i + 1, 0)) + n_global_fp_regs += 2; + } /* In the flat window model, find out which local and in registers need to be saved. We don't reserve space in the current frame for them as they diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d457acc3f33..12900d3cd45 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,238 @@ +2016-04-14 Jason Merrill <jason@redhat.com> + + PR c++/70528 + * class.c (type_has_constexpr_default_constructor): Return true + for an implicitly declared constructor. + + PR c++/70622 + * parser.c (cp_parser_init_declarator): Add auto_result parm. + (cp_parser_simple_declaration): Pass it. + (strip_declarator_types): New. + + PR c++/70543 + * pt.c (value_dependent_expression_p) [VAR_DECL]: A type-dependent + initializer also makes the variable value-dependent. + + PR c++/70648 + * constexpr.c (cxx_eval_store_expression): Also copy + CONSTRUCTOR_NO_IMPLICIT_ZERO. + +2016-04-14 Martin Sebor <msebor@redhat.com> + + PR c++/69517 + PR c++/70019 + PR c++/70588 + * cp-tree.h, decl.c, init.c, typeck2.c: Revert. + +2016-04-14 Jason Merrill <jason@redhat.com> + + * call.c, decl.c, error.c, cp-tree.h, decl.c: Revert empty + parameter ABI change. + +2016-04-13 Martin Sebor <msebor@redhat.com> + + PR c++/69517 + PR c++/70019 + PR c++/70588 + * cp-tree.h (throw_bad_array_length, build_vla_check): Declare new + functions. + * decl.c (check_initializer, cp_finish_decl): Call them. + (reshape_init_r): Reject incompletely braced intializer-lists + for VLAs. + * init.c (throw_bad_array_length, build_vla_check) + (build_vla_size_check, build_vla_init_check): Define new functions. + * typeck2.c (split_nonconstant_init_1): Use variably_modified_type_p() + to detect a VLA. + (store_init_value): Same. + +2016-04-13 Jason Merrill <jason@redhat.com> + + Warn about empty parameter ABI with -Wabi=9. + * call.c (empty_class_msg, mark_for_abi_warning) + (warn_empty_class_abi): New. + (build_call_a): Use them. + * decl.c (store_parm_decls): Use mark_for_abi_warning. + * error.c (pp_format_to_string): New. + + Pass empty class parameters like C. + * call.c (pass_as_empty_struct, empty_class_arg): New. + (type_passed_as, build_x_va_arg): Use pass_as_empty_struct. + (build_call_a): Use empty_class_arg. + * cp-tree.h (CPTI_EMPTY_STRUCT, empty_struct_type): New. + * decl.c (cxx_init_decl_processing): Create empty_struct_type. + +2016-04-13 Jason Merrill <jason@redhat.com> + + PR c++/70627 + * decl.c (start_enum): Don't change an existing ENUM_UNDERLYING_TYPE. + +2016-04-13 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/70635 + * pt.c (resolve_typename_type): Fix typos in infinite recursion + avoidance mechanism. + +2016-04-13 Jason Merrill <jason@redhat.com> + + PR c++/70634 + * pt.c (instantiation_dependent_uneval_expression_p): Split out + from instantiation_dependent_expression_p. + (value_dependent_expression_p): Use it for unevaluated operands. + (instantiation_dependent_r): Don't check value-dependence. + (instantiation_dependent_expression_p): Check + value-dependence of the expression as a whole. + * cp-tree.h: Declare instantiation_dependent_uneval_expression_p. + * semantics.c (finish_decltype_type): Use it. + + * constexpr.c (potential_nondependent_constant_expression): New. + (potential_nondependent_static_init_expression): New. + (maybe_constant_value_1, fold_non_dependent_expr) + (maybe_constant_init): Use them. + * pt.c (instantiate_non_dependent_expr_sfinae) + (instantiate_non_dependent_or_null, convert_nontype_argument): Use + them. + * cp-tree.h: Declare them. + +2016-04-13 Jakub Jelinek <jakub@redhat.com> + + PR c++/70594 + * decl.c (pop_labels_1): Removed. + (note_label, sort_labels): New functions. + (pop_labels): During named_labels traversal, just push the slot + pointers into a vector, then qsort it by DECL_UID and only then + call pop_label and chain it into BLOCK_VARS. + +2016-04-13 Jason Merrill <jason@redhat.com> + + PR c++/70615 + * cp-gimplify.c (cp_genericize_r): Expand PTRMEM_CST here. + (cp_gimplify_expr): Not here. + +2016-04-12 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70610 + * tree.c (lvalue_kind) [NON_DEPENDENT_EXPR]: Unconditionally + recurse into it. + * typeck.c (build_x_conditional_expr): Unconditionally remember + that the result is an lvalue or xvalue. + +2016-04-12 Jason Merrill <jason@redhat.com> + + * class.c (is_really_empty_class): A zero-length array is empty. + An unnamed bit-field doesn't make a class non-empty. + +2016-04-12 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/68722 + * parser.c (cp_parser_cache_defarg): When file ends in default + argument simply return error_mark_node. + +2016-04-12 Nathan Sidwell <nathan@acm.org> + + PR c++/70501 + * constexpr.c (cxx_eval_bare_aggregate): Handle VECTOR_TYPE + similarly to PMF. + +2016-04-11 Jason Merrill <jason@redhat.com> + + * mangle.c (decl_is_template_id): The template itself counts as a + template-id. + +2016-04-08 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70590 + PR c++/70452 + * constexpr.c (cxx_eval_outermost_expression): Call unshare_expr + on the result if it's not a CONSTRUCTOR. + +2016-04-07 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70452 + * constexpr.c (find_constructor): New function. + (unshare_constructor): New function. + (cxx_eval_call_expression): Use unshare_constructor instead of + unshare_expr. + (find_array_ctor_elt): Likewise. + (cxx_eval_vec_init_1): Likewise. + (cxx_eval_store_expression): Likewise. + (cxx_eval_constant_expression): Likewise. + +2016-04-06 Patrick Palka <ppalka@gcc.gnu.org> + + PR c/70436 + * cp-tree.h (FOR_EACH_CLONE): Restructure macro to avoid + potentially generating a future -Wparentheses warning in its + callers. + +2016-04-06 Jason Merrill <jason@redhat.com> + + * class.c (check_abi_tags): Fix function template handling. + +2016-04-05 Nathan Sidwell <nathan@acm.org> + + PR c++/70512 + * class.c (fixup_may_alias): New. + (fixup_attribute_variants): Call it. + +2016-04-05 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70452 + * constexpr.c (struct fundef_copy): New struct. + (struct fundef_copies_table_t): New struct. + (fundef_copies_table): New static variable. + (maybe_initialize_fundef_copies_table): New static function. + (get_fundef_copy): New static function. + (save_fundef_copy): New static function. + (cxx_eval_call_expression): Use get_fundef_copy, and + save_fundef_copy. + (constexpr_call_table): Add "deletable" GTY marker. + +2016-04-05 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70452 + * cp-tree.h (class cache_map): Remove. + * constexpr.c (cv_cache): Change type to + GTY((deletable)) hash_map<tree, tree> *. + (maybe_constant_value): Adjust following the change to cv_cache. + (clear_cv_cache): New static function. + (clear_cv_and_fold_caches): Use it. + * cp-gimplify.c (fold_cache): Change type to + GTY((deletable)) hash_map<tree, tree> *. + (clear_fold_cache): Adjust following the change to fold_cache. + (cp_fold): Likewise. + +2016-04-02 Martin Sebor <msebor@redhat.com> + + PR c++/67376 + PR c++/70170 + PR c++/70172 + PR c++/70228 + * constexpr.c (diag_array_subscript): New function. + (cxx_eval_array_reference): Detect out of bounds array indices. + +2016-04-01 Jason Merrill <jason@redhat.com> + + PR c++/70449 + PR c++/70344 + * pt.c (instantiate_decl): A function isn't fully defined if + DECL_INITIAL is error_mark_node. + * constexpr.c (cxx_eval_call_expression): Likewise. + +2016-04-01 Jakub Jelinek <jakub@redhat.com> + Marek Polacek <polacek@redhat.com> + + PR c++/70488 + * init.c (warn_placement_new_too_small): Test whether + DECL_SIZE_UNIT or TYPE_SIZE_UNIT are integers that fit into uhwi. + +2016-04-01 Nathan Sidwell <nathan@acm.org> + + PR c++/68475 + * decl.c (check_redeclaration_exception_specification): Check + regardless of -fno-exceptions. + * typeck2.c (merge_exception_specifiers): Relax assert by checking + flag_exceptions too. + 2016-03-31 Nathan Sidwell <nathan@acm.org> * decl.c (start_preparsed_function): Remove unnecessary bracing. diff --git a/gcc/cp/class.c b/gcc/cp/class.c index 98cbab5a00f..e6d5bb0fe9c 100644 --- a/gcc/cp/class.c +++ b/gcc/cp/class.c @@ -1604,6 +1604,15 @@ check_abi_tags (tree t, tree subob) void check_abi_tags (tree decl) { + tree t; + if (abi_version_at_least (10) + && DECL_LANG_SPECIFIC (decl) + && DECL_USE_TEMPLATE (decl) + && (t = DECL_TEMPLATE_RESULT (DECL_TI_TEMPLATE (decl)), + t != decl)) + /* Make sure that our template has the appropriate tags, since + write_unqualified_name looks for them there. */ + check_abi_tags (t); if (VAR_P (decl)) check_abi_tags (decl, TREE_TYPE (decl)); else if (TREE_CODE (decl) == FUNCTION_DECL @@ -1978,6 +1987,21 @@ fixup_type_variants (tree t) } } +/* KLASS is a class that we're applying may_alias to after the body is + parsed. Fixup any POINTER_TO and REFERENCE_TO types. The + canonical type(s) will be implicitly updated. */ + +static void +fixup_may_alias (tree klass) +{ + tree t; + + for (t = TYPE_POINTER_TO (klass); t; t = TYPE_NEXT_PTR_TO (t)) + TYPE_REF_CAN_ALIAS_ALL (t) = true; + for (t = TYPE_REFERENCE_TO (klass); t; t = TYPE_NEXT_REF_TO (t)) + TYPE_REF_CAN_ALIAS_ALL (t) = true; +} + /* Early variant fixups: we apply attributes at the beginning of the class definition, and we need to fix up any variants that have already been made via elaborated-type-specifier so that check_qualified_type works. */ @@ -1993,6 +2017,10 @@ fixup_attribute_variants (tree t) tree attrs = TYPE_ATTRIBUTES (t); unsigned align = TYPE_ALIGN (t); bool user_align = TYPE_USER_ALIGN (t); + bool may_alias = lookup_attribute ("may_alias", attrs); + + if (may_alias) + fixup_may_alias (t); for (variants = TYPE_NEXT_VARIANT (t); variants; @@ -2007,6 +2035,8 @@ fixup_attribute_variants (tree t) else TYPE_USER_ALIGN (variants) = user_align; TYPE_ALIGN (variants) = valign; + if (may_alias) + fixup_may_alias (variants); } } @@ -3316,7 +3346,6 @@ add_implicitly_declared_members (tree t, tree* access_decls, CLASSTYPE_LAZY_DEFAULT_CTOR (t) = 1; if (cxx_dialect >= cxx11) TYPE_HAS_CONSTEXPR_CTOR (t) - /* This might force the declaration. */ = type_has_constexpr_default_constructor (t); } @@ -5319,8 +5348,11 @@ type_has_constexpr_default_constructor (tree t) { if (!TYPE_HAS_COMPLEX_DFLT (t)) return trivial_default_constructor_is_constexpr (t); - /* Non-trivial, we need to check subobject constructors. */ - lazily_declare_fn (sfk_constructor, t); + /* Assume it's constexpr to avoid unnecessary instantiation; if the + definition would have made the class non-literal, it will still be + non-literal because of the base or member in question, and that + gives a better diagnostic. */ + return true; } fns = locate_ctor (t); return (fns && DECL_DECLARED_CONSTEXPR_P (fns)); @@ -8376,12 +8408,15 @@ is_really_empty_class (tree type) for (field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field)) if (TREE_CODE (field) == FIELD_DECL && !DECL_ARTIFICIAL (field) + /* An unnamed bit-field is not a data member. */ + && (DECL_NAME (field) || !DECL_C_BIT_FIELD (field)) && !is_really_empty_class (TREE_TYPE (field))) return false; return true; } else if (TREE_CODE (type) == ARRAY_TYPE) - return is_really_empty_class (TREE_TYPE (type)); + return (integer_zerop (array_type_nelts_top (type)) + || is_really_empty_class (TREE_TYPE (type))); return false; } diff --git a/gcc/cp/constexpr.c b/gcc/cp/constexpr.c index ea605dc641b..4abff2011f2 100644 --- a/gcc/cp/constexpr.c +++ b/gcc/cp/constexpr.c @@ -915,7 +915,7 @@ struct constexpr_ctx { /* A table of all constexpr calls that have been evaluated by the compiler in this translation unit. */ -static GTY (()) hash_table<constexpr_call_hasher> *constexpr_call_table; +static GTY ((deletable)) hash_table<constexpr_call_hasher> *constexpr_call_table; static tree cxx_eval_constant_expression (const constexpr_ctx *, tree, bool, bool *, bool *, tree * = NULL); @@ -965,6 +965,78 @@ maybe_initialize_constexpr_call_table (void) constexpr_call_table = hash_table<constexpr_call_hasher>::create_ggc (101); } +/* The representation of a single node in the per-function freelist maintained + by FUNDEF_COPIES_TABLE. */ + +struct fundef_copy +{ + tree body; + tree parms; + tree res; + fundef_copy *prev; +}; + +/* During constexpr CALL_EXPR evaluation, to avoid issues with sharing when + a function happens to get called recursively, we unshare the callee + function's body and evaluate this unshared copy instead of evaluating the + original body. + + FUNDEF_COPIES_TABLE is a per-function freelist of these unshared function + copies. The underlying data structure of FUNDEF_COPIES_TABLE is a hash_map + that's keyed off of the original FUNCTION_DECL and whose value is the chain + of this function's unused copies awaiting reuse. */ + +struct fundef_copies_table_t +{ + hash_map<tree, fundef_copy *> *map; +}; + +static GTY((deletable)) fundef_copies_table_t fundef_copies_table; + +/* Initialize FUNDEF_COPIES_TABLE if it's not initialized. */ + +static void +maybe_initialize_fundef_copies_table () +{ + if (fundef_copies_table.map == NULL) + fundef_copies_table.map = hash_map<tree, fundef_copy *>::create_ggc (101); +} + +/* Reuse a copy or create a new unshared copy of the function FUN. + Return this copy. */ + +static fundef_copy * +get_fundef_copy (tree fun) +{ + maybe_initialize_fundef_copies_table (); + + fundef_copy *copy; + fundef_copy **slot = &fundef_copies_table.map->get_or_insert (fun, NULL); + if (*slot == NULL) + { + copy = ggc_alloc<fundef_copy> (); + copy->body = copy_fn (fun, copy->parms, copy->res); + copy->prev = NULL; + } + else + { + copy = *slot; + *slot = (*slot)->prev; + } + + return copy; +} + +/* Save the copy COPY of function FUN for later reuse by get_fundef_copy(). */ + +static void +save_fundef_copy (tree fun, fundef_copy *copy) +{ + fundef_copy **slot = &fundef_copies_table.map->get_or_insert (fun, NULL); + copy->prev = *slot; + *slot = copy; +} + /* We have an expression tree T that represents a call, either CALL_EXPR or AGGR_INIT_EXPR. If the call is lexically to a named function, retrun the _DECL for that function. */ @@ -1079,6 +1151,30 @@ adjust_temp_type (tree type, tree temp) return cp_fold_convert (type, temp); } +/* Callback for walk_tree used by unshare_constructor. */ + +static tree +find_constructor (tree *tp, int *walk_subtrees, void *) +{ + if (TYPE_P (*tp)) + *walk_subtrees = 0; + if (TREE_CODE (*tp) == CONSTRUCTOR) + return *tp; + return NULL_TREE; +} + +/* If T is a CONSTRUCTOR or an expression that has a CONSTRUCTOR node as a + subexpression, return an unshared copy of T. Otherwise return T. */ + +static tree +unshare_constructor (tree t) +{ + tree ctor = walk_tree (&t, find_constructor, NULL, NULL); + if (ctor != NULL_TREE) + return unshare_expr (t); + return t; +} + /* Subroutine of cxx_eval_call_expression. We are processing a call expression (either CALL_EXPR or AGGR_INIT_EXPR) in the context of CTX. Evaluate @@ -1239,21 +1335,6 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t, return t; } - if (fun == current_function_decl) - { - /* A call to the current function, i.e. - constexpr int f (int i) { - constexpr int j = f(i-1); - return j; - } - This would be OK without the constexpr on the declaration of j. */ - if (!ctx->quiet) - error_at (loc, "%qD called in a constant expression before its " - "definition is complete", fun); - *non_constant_p = true; - return t; - } - constexpr_ctx new_ctx = *ctx; if (DECL_CONSTRUCTOR_P (fun) && !ctx->object && TREE_CODE (t) == AGGR_INIT_EXPR) @@ -1308,7 +1389,10 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t, { if (!ctx->quiet) { - if (DECL_INITIAL (fun)) + if (DECL_INITIAL (fun) == error_mark_node) + error_at (loc, "%qD called in a constant expression before its " + "definition is complete", fun); + else if (DECL_INITIAL (fun)) { /* The definition of fun was somehow unsuitable. */ error_at (loc, "%qD called in a constant expression", fun); @@ -1377,10 +1461,13 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t, if (!result || result == error_mark_node) { gcc_assert (DECL_SAVED_TREE (fun)); - tree parms, res; + tree body, parms, res; - /* Unshare the whole function body. */ - tree body = copy_fn (fun, parms, res); + /* Reuse or create a new unshared copy of this function's body. */ + fundef_copy *copy = get_fundef_copy (fun); + body = copy->body; + parms = copy->parms; + res = copy->res; /* Associate the bindings with the remapped parms. */ tree bound = new_call.bindings; @@ -1391,7 +1478,7 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t, tree arg = TREE_VALUE (bound); gcc_assert (DECL_NAME (remapped) == DECL_NAME (oparm)); /* Don't share a CONSTRUCTOR that might be changed. */ - arg = unshare_expr (arg); + arg = unshare_constructor (arg); ctx->values->put (remapped, arg); bound = TREE_CHAIN (bound); remapped = DECL_CHAIN (remapped); @@ -1409,8 +1496,14 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t, else ctx->values->put (res, NULL_TREE); + /* Track the callee's evaluated SAVE_EXPRs so that we can forget + their values after the call. */ + constexpr_ctx ctx_with_save_exprs = *ctx; + hash_set<tree> save_exprs; + ctx_with_save_exprs.save_exprs = &save_exprs; + tree jump_target = NULL_TREE; - cxx_eval_constant_expression (ctx, body, + cxx_eval_constant_expression (&ctx_with_save_exprs, body, lval, non_constant_p, overflow_p, &jump_target); @@ -1435,6 +1528,11 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t, } } + /* Forget the saved values of the callee's SAVE_EXPRs. */ + for (hash_set<tree>::iterator iter = save_exprs.begin(); + iter != save_exprs.end(); ++iter) + ctx_with_save_exprs.values->remove (*iter); + /* Remove the parms/result from the values map. Is it worth bothering to do this when the map itself is only live for one constexpr evaluation? If so, maybe also clear out @@ -1444,6 +1542,9 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t, ctx->values->remove (slot); for (tree parm = parms; parm; parm = TREE_CHAIN (parm)) ctx->values->remove (parm); + + /* Make the unshared function copy we used available for re-use. */ + save_fundef_copy (fun, copy); } if (result == error_mark_node) @@ -1457,7 +1558,7 @@ cxx_eval_call_expression (const constexpr_ctx *ctx, tree t, } pop_cx_call_context (); - return unshare_expr (result); + return unshare_constructor (result); } /* FIXME speed this up, it's taking 16% of compile time on sieve testcase. */ @@ -1803,7 +1904,7 @@ find_array_ctor_elt (tree ary, tree dindex, bool insert = false) /* Append the element we want to insert. */ ++middle; e.index = dindex; - e.value = unshare_expr (elt.value); + e.value = unshare_constructor (elt.value); vec_safe_insert (CONSTRUCTOR_ELTS (ary), middle, e); } else @@ -1819,7 +1920,7 @@ find_array_ctor_elt (tree ary, tree dindex, bool insert = false) e.index = hi; else e.index = build2 (RANGE_EXPR, sizetype, new_lo, hi); - e.value = unshare_expr (elt.value); + e.value = unshare_constructor (elt.value); vec_safe_insert (CONSTRUCTOR_ELTS (ary), middle+1, e); } } @@ -1837,6 +1938,30 @@ find_array_ctor_elt (tree ary, tree dindex, bool insert = false) return -1; } +/* Under the control of CTX, issue a detailed diagnostic for + an out-of-bounds subscript INDEX into the expression ARRAY. */ + +static void +diag_array_subscript (const constexpr_ctx *ctx, tree array, tree index) +{ + if (!ctx->quiet) + { + tree arraytype = TREE_TYPE (array); + + /* Convert the unsigned array subscript to a signed integer to avoid + printing huge numbers for small negative values. */ + tree sidx = fold_convert (ssizetype, index); + if (DECL_P (array)) + { + error ("array subscript value %qE is outside the bounds " + "of array %qD of type %qT", sidx, array, arraytype); + inform (DECL_SOURCE_LOCATION (array), "declared here"); + } + else + error ("array subscript value %qE is outside the bounds " + "of array type %qT", sidx, arraytype); + } +} /* Subroutine of cxx_eval_constant_expression. Attempt to reduce a reference to an array slot. */ @@ -1885,8 +2010,7 @@ cxx_eval_array_reference (const constexpr_ctx *ctx, tree t, if (!tree_fits_shwi_p (index) || (i = tree_to_shwi (index)) < 0) { - if (!ctx->quiet) - error ("negative array subscript"); + diag_array_subscript (ctx, ary, index); *non_constant_p = true; return t; } @@ -1898,8 +2022,7 @@ cxx_eval_array_reference (const constexpr_ctx *ctx, tree t, VERIFY_CONSTANT (nelts); if (!tree_int_cst_lt (index, nelts)) { - if (!ctx->quiet) - error ("array subscript out of bound"); + diag_array_subscript (ctx, ary, index); *non_constant_p = true; return t; } @@ -2271,10 +2394,10 @@ cxx_eval_bare_aggregate (const constexpr_ctx *ctx, tree t, tree type = TREE_TYPE (t); constexpr_ctx new_ctx; - if (TYPE_PTRMEMFUNC_P (type)) + if (TYPE_PTRMEMFUNC_P (type) || VECTOR_TYPE_P (type)) { - /* We don't really need the ctx->ctor business for a PMF, but it's - simpler to use the same code. */ + /* We don't really need the ctx->ctor business for a PMF or + vector, but it's simpler to use the same code. */ new_ctx = *ctx; new_ctx.ctor = build_constructor (type, NULL); new_ctx.object = NULL_TREE; @@ -2466,7 +2589,7 @@ cxx_eval_vec_init_1 (const constexpr_ctx *ctx, tree atype, tree init, for (i = 1; i < max; ++i) { idx = build_int_cst (size_type_node, i); - CONSTRUCTOR_APPEND_ELT (*p, idx, unshare_expr (eltinit)); + CONSTRUCTOR_APPEND_ELT (*p, idx, unshare_constructor (eltinit)); } break; } @@ -3014,7 +3137,7 @@ cxx_eval_store_expression (const constexpr_ctx *ctx, tree t, init = cxx_eval_constant_expression (&new_ctx, init, false, non_constant_p, overflow_p); /* Don't share a CONSTRUCTOR that might be changed later. */ - init = unshare_expr (init); + init = unshare_constructor (init); if (target == object) /* The hash table might have moved since the get earlier. */ valp = ctx->values->get (object); @@ -3026,6 +3149,8 @@ cxx_eval_store_expression (const constexpr_ctx *ctx, tree t, CONSTRUCTOR_ELTS (*valp) = CONSTRUCTOR_ELTS (init); TREE_CONSTANT (*valp) = TREE_CONSTANT (init); TREE_SIDE_EFFECTS (*valp) = TREE_SIDE_EFFECTS (init); + CONSTRUCTOR_NO_IMPLICIT_ZERO (*valp) + = CONSTRUCTOR_NO_IMPLICIT_ZERO (init); } else *valp = init; @@ -3466,7 +3591,7 @@ cxx_eval_constant_expression (const constexpr_ctx *ctx, tree t, false, non_constant_p, overflow_p); /* Don't share a CONSTRUCTOR that might be changed. */ - init = unshare_expr (init); + init = unshare_constructor (init); ctx->values->put (r, init); } else if (ctx == &new_ctx) @@ -3511,7 +3636,7 @@ cxx_eval_constant_expression (const constexpr_ctx *ctx, tree t, if (lval) { tree slot = TARGET_EXPR_SLOT (t); - r = unshare_expr (r); + r = unshare_constructor (r); ctx->values->put (slot, r); return slot; } @@ -4041,6 +4166,12 @@ cxx_eval_outermost_constant_expr (tree t, bool allow_non_constant, if (!non_constant_p && overflow_p) non_constant_p = true; + /* Unshare the result unless it's a CONSTRUCTOR in which case it's already + unshared. */ + bool should_unshare = true; + if (r == t || TREE_CODE (r) == CONSTRUCTOR) + should_unshare = false; + if (non_constant_p && !allow_non_constant) return error_mark_node; else if (non_constant_p && TREE_CONSTANT (r)) @@ -4057,6 +4188,9 @@ cxx_eval_outermost_constant_expr (tree t, bool allow_non_constant, else if (non_constant_p || r == t) return t; + if (should_unshare) + r = unshare_expr (r); + if (TREE_CODE (r) == CONSTRUCTOR && CLASS_TYPE_P (TREE_TYPE (r))) { if (TREE_CODE (t) == TARGET_EXPR @@ -4183,10 +4317,7 @@ maybe_constant_value_1 (tree t, tree decl) { tree r; - if (instantiation_dependent_expression_p (t) - || type_unknown_p (t) - || BRACE_ENCLOSED_INITIALIZER_P (t) - || !potential_constant_expression (t)) + if (!potential_nondependent_constant_expression (t)) { if (TREE_OVERFLOW_P (t)) { @@ -4205,7 +4336,7 @@ maybe_constant_value_1 (tree t, tree decl) return r; } -static GTY((cache, deletable)) cache_map cv_cache; +static GTY((deletable)) hash_map<tree, tree> *cv_cache; /* If T is a constant expression, returns its reduced value. Otherwise, if T does not have TREE_CONSTANT set, returns T. @@ -4214,21 +4345,32 @@ static GTY((cache, deletable)) cache_map cv_cache; tree maybe_constant_value (tree t, tree decl) { - tree ret = cv_cache.get (t); - if (!ret) - { - ret = maybe_constant_value_1 (t, decl); - cv_cache.put (t, ret); - } + if (cv_cache == NULL) + cv_cache = hash_map<tree, tree>::create_ggc (101); + + if (tree *cached = cv_cache->get (t)) + return *cached; + + tree ret = maybe_constant_value_1 (t, decl); + cv_cache->put (t, ret); return ret; } +/* Dispose of the whole CV_CACHE. */ + +static void +clear_cv_cache (void) +{ + if (cv_cache != NULL) + cv_cache->empty (); +} + /* Dispose of the whole CV_CACHE and FOLD_CACHE. */ void clear_cv_and_fold_caches (void) { - gt_cleare_cache (cv_cache); + clear_cv_cache (); clear_fold_cache (); } @@ -4254,8 +4396,7 @@ fold_non_dependent_expr (tree t) as two declarations of the same function, for example. */ if (processing_template_decl) { - if (!instantiation_dependent_expression_p (t) - && potential_constant_expression (t)) + if (potential_nondependent_constant_expression (t)) { processing_template_decl_sentinel s; t = instantiate_non_dependent_expr_internal (t, tf_none); @@ -4306,10 +4447,7 @@ maybe_constant_init (tree t, tree decl) t = TREE_OPERAND (t, 0); if (TREE_CODE (t) == INIT_EXPR) t = TREE_OPERAND (t, 1); - if (instantiation_dependent_expression_p (t) - || type_unknown_p (t) - || BRACE_ENCLOSED_INITIALIZER_P (t) - || !potential_static_init_expression (t)) + if (!potential_nondependent_static_init_expression (t)) /* Don't try to evaluate it. */; else t = cxx_eval_outermost_constant_expr (t, true, false, decl); @@ -5060,4 +5198,29 @@ require_potential_rvalue_constant_expression (tree t) return potential_constant_expression_1 (t, true, true, tf_warning_or_error); } +/* Returns true if T is a potential constant expression that is not + instantiation-dependent, and therefore a candidate for constant folding even + in a template. */ + +bool +potential_nondependent_constant_expression (tree t) +{ + return (!type_unknown_p (t) + && !BRACE_ENCLOSED_INITIALIZER_P (t) + && potential_constant_expression (t) + && !instantiation_dependent_expression_p (t)); +} + +/* Returns true if T is a potential static initializer expression that is not + instantiation-dependent. */ + +bool +potential_nondependent_static_init_expression (tree t) +{ + return (!type_unknown_p (t) + && !BRACE_ENCLOSED_INITIALIZER_P (t) + && potential_static_init_expression (t) + && !instantiation_dependent_expression_p (t)); +} + #include "gt-cp-constexpr.h" diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index 90b3464e5de..30ac660906d 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -576,11 +576,6 @@ cp_gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p) switch (code) { - case PTRMEM_CST: - *expr_p = cplus_expand_constant (*expr_p); - ret = GS_OK; - break; - case AGGR_INIT_EXPR: simplify_aggr_init_expr (expr_p); ret = GS_OK; @@ -1388,6 +1383,13 @@ cp_genericize_r (tree *stmt_p, int *walk_subtrees, void *data) || TREE_CODE (stmt) == OMP_SIMD || TREE_CODE (stmt) == OMP_DISTRIBUTE) genericize_omp_for_stmt (stmt_p, walk_subtrees, data); + else if (TREE_CODE (stmt) == PTRMEM_CST) + { + /* By the time we get here we're handing off to the back end, so we don't + need or want to preserve PTRMEM_CST anymore. */ + *stmt_p = cplus_expand_constant (stmt); + *walk_subtrees = 0; + } else if ((flag_sanitize & (SANITIZE_NULL | SANITIZE_ALIGNMENT | SANITIZE_VPTR)) && !wtd->no_sanitize_p) @@ -1905,14 +1907,15 @@ c_fully_fold (tree x, bool /*in_init*/, bool */*maybe_const*/) return cp_fold_rvalue (x); } -static GTY((cache, deletable)) cache_map fold_cache; +static GTY((deletable)) hash_map<tree, tree> *fold_cache; /* Dispose of the whole FOLD_CACHE. */ void clear_fold_cache (void) { - gt_cleare_cache (fold_cache); + if (fold_cache != NULL) + fold_cache->empty (); } /* This function tries to fold an expression X. @@ -1942,8 +1945,11 @@ cp_fold (tree x) if (DECL_P (x) || CONSTANT_CLASS_P (x)) return x; - if (tree cached = fold_cache.get (x)) - return cached; + if (fold_cache == NULL) + fold_cache = hash_map<tree, tree>::create_ggc (101); + + if (tree *cached = fold_cache->get (x)) + return *cached; code = TREE_CODE (x); switch (code) @@ -2298,10 +2304,10 @@ cp_fold (tree x) return org_x; } - fold_cache.put (org_x, x); + fold_cache->put (org_x, x); /* Prevent that we try to fold an already folded result again. */ if (x != org_x) - fold_cache.put (x, x); + fold_cache->put (x, x); return x; } diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index b7b770f9200..a3cd834a105 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -2526,12 +2526,14 @@ struct GTY(()) lang_decl { */ #define FOR_EACH_CLONE(CLONE, FN) \ - if (TREE_CODE (FN) == FUNCTION_DECL \ - && (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (FN) \ - || DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (FN))) \ - for (CLONE = DECL_CHAIN (FN); \ - CLONE && DECL_CLONED_FUNCTION_P (CLONE); \ - CLONE = DECL_CHAIN (CLONE)) + if (!(TREE_CODE (FN) == FUNCTION_DECL \ + && (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (FN) \ + || DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (FN))))\ + ; \ + else \ + for (CLONE = DECL_CHAIN (FN); \ + CLONE && DECL_CLONED_FUNCTION_P (CLONE); \ + CLONE = DECL_CHAIN (CLONE)) /* Nonzero if NODE has DECL_DISCRIMINATOR and not DECL_ACCESS. */ #define DECL_DISCRIMINATOR_P(NODE) \ @@ -5525,42 +5527,6 @@ extern cp_parameter_declarator *no_parameters; /* True if we saw "#pragma GCC java_exceptions". */ extern bool pragma_java_exceptions; -/* Data structure for a mapping from tree to tree that's only used as a cache; - we don't GC-mark trees in the map, and we clear the map when collecting - garbage. Global variables of this type must be marked - GTY((cache,deletable)) so that the gt_cleare_cache function is called by - ggc_collect but we don't try to load the map pointer from a PCH. - - FIXME improve to use keep_cache_entry. */ -class cache_map -{ - /* Use a lazily initialized pointer rather than a map member since a - hash_map can't be constructed in a static initializer. */ - hash_map<tree, tree> *map; - -public: - tree get (tree key) - { - if (map) - if (tree *slot = map->get (key)) - return *slot; - return NULL_TREE; - } - - bool put (tree key, tree val) - { - if (!map) - map = new hash_map<tree, tree>; - return map->put (key, val); - } - - friend inline void gt_cleare_cache (cache_map &cm) - { - if (cm.map) - cm.map->empty(); - } -}; - /* in call.c */ extern bool check_dtor_name (tree, tree); int magic_varargs_p (tree); @@ -6161,6 +6127,7 @@ extern bool any_type_dependent_elements_p (const_tree); extern bool type_dependent_expression_p_push (tree); extern bool value_dependent_expression_p (tree); extern bool instantiation_dependent_expression_p (tree); +extern bool instantiation_dependent_uneval_expression_p (tree); extern bool any_value_dependent_elements_p (const_tree); extern bool dependent_omp_for_p (tree, tree, tree, tree); extern tree resolve_typename_type (tree, bool); @@ -6918,6 +6885,8 @@ extern tree register_constexpr_fundef (tree, tree); extern bool check_constexpr_ctor_body (tree, tree, bool); extern tree ensure_literal_type_for_constexpr_object (tree); extern bool potential_constant_expression (tree); +extern bool potential_nondependent_constant_expression (tree); +extern bool potential_nondependent_static_init_expression (tree); extern bool potential_static_init_expression (tree); extern bool potential_rvalue_constant_expression (tree); extern bool require_potential_constant_expression (tree); diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index a6c585515d5..380bc79ea53 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -368,33 +368,61 @@ pop_label (tree label, tree old_value) SET_IDENTIFIER_LABEL_VALUE (DECL_NAME (label), old_value); } -/* At the end of a function, all labels declared within the function - go out of scope. BLOCK is the top-level block for the - function. */ +/* Push all named labels into a vector, so that we can sort it on DECL_UID + to avoid code generation differences. */ int -pop_labels_1 (named_label_entry **slot, tree block) +note_label (named_label_entry **slot, vec<named_label_entry **> &labels) { - struct named_label_entry *ent = *slot; - - pop_label (ent->label_decl, NULL_TREE); - - /* Put the labels into the "variables" of the top-level block, - so debugger can see them. */ - DECL_CHAIN (ent->label_decl) = BLOCK_VARS (block); - BLOCK_VARS (block) = ent->label_decl; + labels.quick_push (slot); + return 1; +} - named_labels->clear_slot (slot); +/* Helper function to sort named label entries in a vector by DECL_UID. */ - return 1; +static int +sort_labels (const void *a, const void *b) +{ + named_label_entry **slot1 = *(named_label_entry **const *) a; + named_label_entry **slot2 = *(named_label_entry **const *) b; + if (DECL_UID ((*slot1)->label_decl) < DECL_UID ((*slot2)->label_decl)) + return -1; + if (DECL_UID ((*slot1)->label_decl) > DECL_UID ((*slot2)->label_decl)) + return 1; + return 0; } +/* At the end of a function, all labels declared within the function + go out of scope. BLOCK is the top-level block for the + function. */ + static void pop_labels (tree block) { if (named_labels) { - named_labels->traverse<tree, pop_labels_1> (block); + auto_vec<named_label_entry **, 32> labels; + named_label_entry **slot; + unsigned int i; + + /* Push all the labels into a vector and sort them by DECL_UID, + so that gaps between DECL_UIDs don't affect code generation. */ + labels.reserve_exact (named_labels->elements ()); + named_labels->traverse<vec<named_label_entry **> &, note_label> (labels); + labels.qsort (sort_labels); + FOR_EACH_VEC_ELT (labels, i, slot) + { + struct named_label_entry *ent = *slot; + + pop_label (ent->label_decl, NULL_TREE); + + /* Put the labels into the "variables" of the top-level block, + so debugger can see them. */ + DECL_CHAIN (ent->label_decl) = BLOCK_VARS (block); + BLOCK_VARS (block) = ent->label_decl; + + named_labels->clear_slot (slot); + } named_labels = NULL; } } @@ -1202,16 +1230,19 @@ check_redeclaration_exception_specification (tree new_decl, specialization, of that function shall have an exception-specification with the same set of type-ids. */ if (! DECL_IS_BUILTIN (old_decl) - && flag_exceptions && !comp_except_specs (new_exceptions, old_exceptions, ce_normal)) { const char *msg = "declaration of %q+F has a different exception specifier"; bool complained = true; - if (! DECL_IN_SYSTEM_HEADER (old_decl)) - error (msg, new_decl); - else + if (DECL_IN_SYSTEM_HEADER (old_decl)) complained = pedwarn (0, OPT_Wsystem_headers, msg, new_decl); + else if (!flag_exceptions) + /* We used to silently permit mismatched eh specs with + -fno-exceptions, so make them a pedwarn now. */ + complained = pedwarn (0, OPT_Wpedantic, msg, new_decl); + else + error (msg, new_decl); if (complained) inform (0, "from previous declaration %q+F", old_decl); } @@ -13222,7 +13253,10 @@ start_enum (tree name, tree enumtype, tree underlying_type, if (underlying_type) { - if (CP_INTEGRAL_TYPE_P (underlying_type)) + if (ENUM_UNDERLYING_TYPE (enumtype)) + /* We already checked that it matches, don't change it to a different + typedef variant. */; + else if (CP_INTEGRAL_TYPE_P (underlying_type)) { copy_type_enum (enumtype, underlying_type); ENUM_UNDERLYING_TYPE (enumtype) = underlying_type; diff --git a/gcc/cp/init.c b/gcc/cp/init.c index aee3b8416e4..5997d53ddb5 100644 --- a/gcc/cp/init.c +++ b/gcc/cp/init.c @@ -2430,7 +2430,8 @@ warn_placement_new_too_small (tree type, tree nelts, tree size, tree oper) though the size of a member of a union may be viewed as extending to the end of the union itself (it is by __builtin_object_size). */ if ((TREE_CODE (oper) == VAR_DECL || use_obj_size) - && DECL_SIZE_UNIT (oper)) + && DECL_SIZE_UNIT (oper) + && tree_fits_uhwi_p (DECL_SIZE_UNIT (oper))) { /* Use the size of the entire array object when the expression refers to a variable or its size depends on an expression @@ -2438,7 +2439,8 @@ warn_placement_new_too_small (tree type, tree nelts, tree size, tree oper) bytes_avail = tree_to_uhwi (DECL_SIZE_UNIT (oper)); exact_size = !use_obj_size; } - else if (TYPE_SIZE_UNIT (TREE_TYPE (oper))) + else if (TYPE_SIZE_UNIT (TREE_TYPE (oper)) + && tree_fits_uhwi_p (TYPE_SIZE_UNIT (TREE_TYPE (oper)))) { /* Use the size of the type of the destination buffer object as the optimistic estimate of the available space in it. */ diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c index 5d38373765b..0e444097c19 100644 --- a/gcc/cp/mangle.c +++ b/gcc/cp/mangle.c @@ -264,9 +264,9 @@ static void write_java_integer_type_codes (const tree); #define write_unsigned_number(NUMBER) \ write_number ((NUMBER), /*unsigned_p=*/1, 10) -/* If DECL is a template instance, return nonzero and, if - TEMPLATE_INFO is non-NULL, set *TEMPLATE_INFO to its template info. - Otherwise return zero. */ +/* If DECL is a template instance (including the uninstantiated template + itself), return nonzero and, if TEMPLATE_INFO is non-NULL, set + *TEMPLATE_INFO to its template info. Otherwise return zero. */ static int decl_is_template_id (const tree decl, tree* const template_info) @@ -290,7 +290,8 @@ decl_is_template_id (const tree decl, tree* const template_info) { /* Check if this is a primary template. */ if (DECL_LANG_SPECIFIC (decl) != NULL - && DECL_USE_TEMPLATE (decl) + && VAR_OR_FUNCTION_DECL_P (decl) + && DECL_TEMPLATE_INFO (decl) && PRIMARY_TEMPLATE_P (DECL_TI_TEMPLATE (decl)) && TREE_CODE (decl) != TEMPLATE_DECL) { diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index 7e13c6e74f6..cba2d6598a7 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -2104,7 +2104,7 @@ static tree cp_parser_selection_statement static tree cp_parser_condition (cp_parser *); static tree cp_parser_iteration_statement - (cp_parser *, bool); + (cp_parser *, bool *, bool); static bool cp_parser_for_init_statement (cp_parser *, tree *decl); static tree cp_parser_for @@ -2127,7 +2127,7 @@ static void cp_parser_declaration_statement static tree cp_parser_implicitly_scoped_statement (cp_parser *, bool *, const token_indent_info &, vec<tree> * = NULL); static void cp_parser_already_scoped_statement - (cp_parser *, const token_indent_info &); + (cp_parser *, bool *, const token_indent_info &); /* Declarations [gram.dcl.dcl] */ @@ -2193,7 +2193,7 @@ static tree cp_parser_decltype static tree cp_parser_init_declarator (cp_parser *, cp_decl_specifier_seq *, vec<deferred_access_check, va_gc> *, - bool, bool, int, bool *, tree *, location_t *); + bool, bool, int, bool *, tree *, location_t *, tree *); static cp_declarator *cp_parser_declarator (cp_parser *, cp_parser_declarator_kind, int *, bool *, bool, bool); static cp_declarator *cp_parser_direct_declarator @@ -10392,7 +10392,7 @@ cp_parser_statement (cp_parser* parser, tree in_statement_expr, case RID_WHILE: case RID_DO: case RID_FOR: - statement = cp_parser_iteration_statement (parser, false); + statement = cp_parser_iteration_statement (parser, if_p, false); break; case RID_CILK_FOR: @@ -10947,7 +10947,7 @@ cp_parser_selection_statement (cp_parser* parser, bool *if_p, else { /* This if statement does not have an else clause. If - NESTED_IF is true, then the then-clause is an if + NESTED_IF is true, then the then-clause has an if statement which does have an else clause. We warn about the potential ambiguity. */ if (nested_if) @@ -11544,7 +11544,7 @@ cp_parser_range_for_member_function (tree range, tree identifier) Returns the new WHILE_STMT, DO_STMT, FOR_STMT or RANGE_FOR_STMT. */ static tree -cp_parser_iteration_statement (cp_parser* parser, bool ivdep) +cp_parser_iteration_statement (cp_parser* parser, bool *if_p, bool ivdep) { cp_token *token; enum rid keyword; @@ -11582,7 +11582,7 @@ cp_parser_iteration_statement (cp_parser* parser, bool ivdep) cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN); /* Parse the dependent statement. */ parser->in_statement = IN_ITERATION_STMT; - cp_parser_already_scoped_statement (parser, guard_tinfo); + cp_parser_already_scoped_statement (parser, if_p, guard_tinfo); parser->in_statement = in_statement; /* We're done with the while-statement. */ finish_while_stmt (statement); @@ -11627,7 +11627,7 @@ cp_parser_iteration_statement (cp_parser* parser, bool ivdep) /* Parse the body of the for-statement. */ parser->in_statement = IN_ITERATION_STMT; - cp_parser_already_scoped_statement (parser, guard_tinfo); + cp_parser_already_scoped_statement (parser, if_p, guard_tinfo); parser->in_statement = in_statement; /* We're done with the for-statement. */ @@ -11937,7 +11937,7 @@ cp_parser_implicitly_scoped_statement (cp_parser* parser, bool *if_p, scope. */ static void -cp_parser_already_scoped_statement (cp_parser* parser, +cp_parser_already_scoped_statement (cp_parser* parser, bool *if_p, const token_indent_info &guard_tinfo) { /* If the token is a `{', then we must take special action. */ @@ -11946,7 +11946,7 @@ cp_parser_already_scoped_statement (cp_parser* parser, token_indent_info body_tinfo = get_token_indent_info (cp_lexer_peek_token (parser->lexer)); - cp_parser_statement (parser, NULL_TREE, false, NULL); + cp_parser_statement (parser, NULL_TREE, false, if_p); token_indent_info next_tinfo = get_token_indent_info (cp_lexer_peek_token (parser->lexer)); warn_for_misleading_indentation (guard_tinfo, body_tinfo, next_tinfo); @@ -12337,10 +12337,9 @@ cp_parser_simple_declaration (cp_parser* parser, && !cp_parser_error_occurred (parser)) cp_parser_commit_to_tentative_parse (parser); - tree last_type, auto_node; + tree last_type; last_type = NULL_TREE; - auto_node = type_uses_auto (decl_specifiers.type); /* Keep going until we hit the `;' at the end of the simple declaration. */ @@ -12351,6 +12350,7 @@ cp_parser_simple_declaration (cp_parser* parser, cp_token *token; bool function_definition_p; tree decl; + tree auto_result = NULL_TREE; if (saw_declarator) { @@ -12376,7 +12376,8 @@ cp_parser_simple_declaration (cp_parser* parser, declares_class_or_enum, &function_definition_p, maybe_range_for_decl, - &init_loc); + &init_loc, + &auto_result); /* If an error occurred while parsing tentatively, exit quickly. (That usually happens when in the body of a function; each statement is treated as a declaration-statement until proven @@ -12384,10 +12385,10 @@ cp_parser_simple_declaration (cp_parser* parser, if (cp_parser_error_occurred (parser)) goto done; - if (auto_node) + if (auto_result) { - tree type = TREE_TYPE (decl); - if (last_type && !same_type_p (type, last_type)) + if (last_type && last_type != error_mark_node + && !same_type_p (auto_result, last_type)) { /* If the list of declarators contains more than one declarator, the type of each declared variable is determined as described @@ -12395,10 +12396,11 @@ cp_parser_simple_declaration (cp_parser* parser, the same in each deduction, the program is ill-formed. */ error_at (decl_specifiers.locations[ds_type_spec], "inconsistent deduction for %qT: %qT and then %qT", - decl_specifiers.type, last_type, type); - auto_node = NULL_TREE; + decl_specifiers.type, last_type, auto_result); + last_type = error_mark_node; } - last_type = type; + else + last_type = auto_result; } /* Handle function definitions specially. */ @@ -18221,6 +18223,31 @@ cp_parser_asm_definition (cp_parser* parser) } } +/* Given the type TYPE of a declaration with declarator DECLARATOR, return the + type that comes from the decl-specifier-seq. */ + +static tree +strip_declarator_types (tree type, cp_declarator *declarator) +{ + for (cp_declarator *d = declarator; d;) + switch (d->kind) + { + case cdk_id: + case cdk_error: + d = NULL; + break; + + default: + if (TYPE_PTRMEMFUNC_P (type)) + type = TYPE_PTRMEMFUNC_FN_TYPE (type); + type = TREE_TYPE (type); + d = d->declarator; + break; + } + + return type; +} + /* Declarators [gram.dcl.decl] */ /* Parse an init-declarator. @@ -18286,7 +18313,8 @@ cp_parser_init_declarator (cp_parser* parser, int declares_class_or_enum, bool* function_definition_p, tree* maybe_range_for_decl, - location_t* init_loc) + location_t* init_loc, + tree* auto_result) { cp_token *token = NULL, *asm_spec_start_token = NULL, *attributes_start_token = NULL; @@ -18677,6 +18705,10 @@ cp_parser_init_declarator (cp_parser* parser, finish_fully_implicit_template (parser, /*member_decl_opt=*/0); } + if (auto_result && is_initialized && decl_specifiers->type + && type_uses_auto (decl_specifiers->type)) + *auto_result = strip_declarator_types (TREE_TYPE (decl), declarator); + return decl; } @@ -25808,7 +25840,7 @@ cp_parser_single_declaration (cp_parser* parser, member_p, declares_class_or_enum, &function_definition_p, - NULL, NULL); + NULL, NULL, NULL); /* 7.1.1-1 [dcl.stc] @@ -27472,8 +27504,7 @@ cp_parser_cache_defarg (cp_parser *parser, bool nsdmi) case CPP_EOF: case CPP_PRAGMA_EOL: error_at (token->location, "file ends in default argument"); - done = true; - break; + return error_mark_node; case CPP_NAME: case CPP_SCOPE: @@ -37310,7 +37341,7 @@ cp_parser_pragma (cp_parser *parser, enum pragma_context context) cp_parser_error (parser, "for, while or do statement expected"); return false; } - cp_parser_iteration_statement (parser, true); + cp_parser_iteration_statement (parser, NULL, true); return true; } diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index a6398c04f85..4a00530b312 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -5655,8 +5655,7 @@ instantiate_non_dependent_expr_sfinae (tree expr, tsubst_flags_t complain) as two declarations of the same function, for example. */ if (processing_template_decl - && !instantiation_dependent_expression_p (expr) - && potential_constant_expression (expr)) + && potential_nondependent_constant_expression (expr)) { processing_template_decl_sentinel s; expr = instantiate_non_dependent_expr_internal (expr, complain); @@ -5680,8 +5679,7 @@ instantiate_non_dependent_or_null (tree expr) return NULL_TREE; if (processing_template_decl) { - if (instantiation_dependent_expression_p (expr) - || !potential_constant_expression (expr)) + if (!potential_nondependent_constant_expression (expr)) expr = NULL_TREE; else { @@ -6240,10 +6238,8 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain) if (TYPE_REF_OBJ_P (type) && has_value_dependent_address (expr)) /* If we want the address and it's value-dependent, don't fold. */; - else if (!type_unknown_p (expr) - && processing_template_decl - && !instantiation_dependent_expression_p (expr) - && potential_constant_expression (expr)) + else if (processing_template_decl + && potential_nondependent_constant_expression (expr)) non_dep = true; if (error_operand_p (expr)) return error_mark_node; @@ -21741,7 +21737,8 @@ instantiate_decl (tree d, int defer_ok, if (TREE_CODE (d) == FUNCTION_DECL) { deleted_p = DECL_DELETED_FN (code_pattern); - pattern_defined = (DECL_SAVED_TREE (code_pattern) != NULL_TREE + pattern_defined = ((DECL_SAVED_TREE (code_pattern) != NULL_TREE + && DECL_INITIAL (code_pattern) != error_mark_node) || DECL_DEFAULTED_OUTSIDE_CLASS_P (code_pattern) || deleted_p); } @@ -22673,6 +22670,7 @@ value_dependent_expression_p (tree expression) && (TREE_CODE (DECL_INITIAL (expression)) == TREE_LIST /* cp_finish_decl doesn't fold reference initializers. */ || TREE_CODE (TREE_TYPE (expression)) == REFERENCE_TYPE + || type_dependent_expression_p (DECL_INITIAL (expression)) || value_dependent_expression_p (DECL_INITIAL (expression)))) return true; return false; @@ -22723,7 +22721,7 @@ value_dependent_expression_p (tree expression) return true; else if (TYPE_P (expression)) return dependent_type_p (expression); - return instantiation_dependent_expression_p (expression); + return instantiation_dependent_uneval_expression_p (expression); case AT_ENCODE_EXPR: /* An 'encode' expression is value-dependent if the operand is @@ -22733,7 +22731,7 @@ value_dependent_expression_p (tree expression) case NOEXCEPT_EXPR: expression = TREE_OPERAND (expression, 0); - return instantiation_dependent_expression_p (expression); + return instantiation_dependent_uneval_expression_p (expression); case SCOPE_REF: /* All instantiation-dependent expressions should also be considered @@ -23104,13 +23102,6 @@ instantiation_dependent_r (tree *tp, int *walk_subtrees, case TREE_VEC: return NULL_TREE; - case VAR_DECL: - case CONST_DECL: - /* A constant with a dependent initializer is dependent. */ - if (value_dependent_expression_p (*tp)) - return *tp; - break; - case TEMPLATE_PARM_INDEX: return *tp; @@ -23136,12 +23127,6 @@ instantiation_dependent_r (tree *tp, int *walk_subtrees, break; } - case TRAIT_EXPR: - if (value_dependent_expression_p (*tp)) - return *tp; - *walk_subtrees = false; - return NULL_TREE; - case COMPONENT_REF: if (identifier_p (TREE_OPERAND (*tp, 1))) /* In a template, finish_class_member_access_expr creates a @@ -23192,10 +23177,15 @@ instantiation_dependent_r (tree *tp, int *walk_subtrees, "An expression is instantiation-dependent if it is type-dependent or value-dependent, or it has a subexpression that is type-dependent - or value-dependent." */ + or value-dependent." + + Except don't actually check value-dependence for unevaluated expressions, + because in sizeof(i) we don't care about the value of i. Checking + type-dependence will in turn check value-dependence of array bounds/template + arguments as needed. */ bool -instantiation_dependent_expression_p (tree expression) +instantiation_dependent_uneval_expression_p (tree expression) { tree result; @@ -23210,6 +23200,15 @@ instantiation_dependent_expression_p (tree expression) return result != NULL_TREE; } +/* As above, but also check value-dependence of the expression as a whole. */ + +bool +instantiation_dependent_expression_p (tree expression) +{ + return (instantiation_dependent_uneval_expression_p (expression) + || value_dependent_expression_p (expression)); +} + /* Like type_dependent_expression_p, but it also works while not processing a template definition, i.e. during substitution or mangling. */ @@ -23597,9 +23596,9 @@ resolve_typename_type (tree type, bool only_current_p) { /* Ill-formed programs can cause infinite recursion here, so we must catch that. */ - TYPENAME_IS_RESOLVING_P (type) = 1; + TYPENAME_IS_RESOLVING_P (result) = 1; result = resolve_typename_type (result, only_current_p); - TYPENAME_IS_RESOLVING_P (type) = 0; + TYPENAME_IS_RESOLVING_P (result) = 0; } /* Qualify the resulting type. */ diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 1574e60199e..0487adf6018 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -8740,7 +8740,7 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p, /* 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'. */ - if (instantiation_dependent_expression_p (expr)) + if (instantiation_dependent_uneval_expression_p (expr)) { type = cxx_make_type (DECLTYPE_TYPE); DECLTYPE_TYPE_EXPR (type) = expr; diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 5d9de344e7c..df2981fd3f4 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -224,13 +224,7 @@ lvalue_kind (const_tree ref) return lvalue_kind (BASELINK_FUNCTIONS (CONST_CAST_TREE (ref))); case NON_DEPENDENT_EXPR: - /* We just return clk_ordinary for NON_DEPENDENT_EXPR in C++98, but - in C++11 lvalues don't bind to rvalue references, so we need to - work harder to avoid bogus errors (c++/44870). */ - if (cxx_dialect < cxx11) - return clk_ordinary; - else - return lvalue_kind (TREE_OPERAND (ref, 0)); + return lvalue_kind (TREE_OPERAND (ref, 0)); default: if (!TREE_TYPE (ref)) diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index 9e61090f57b..cef5604bd0b 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -6275,10 +6275,8 @@ build_x_conditional_expr (location_t loc, tree ifexp, tree op1, tree op2, { tree min = build_min_non_dep (COND_EXPR, expr, orig_ifexp, orig_op1, orig_op2); - /* In C++11, remember that the result is an lvalue or xvalue. - In C++98, lvalue_kind can just assume lvalue in a template. */ - if (cxx_dialect >= cxx11 - && lvalue_or_rvalue_with_address_p (expr) + /* Remember that the result is an lvalue or xvalue. */ + if (lvalue_or_rvalue_with_address_p (expr) && !lvalue_or_rvalue_with_address_p (min)) TREE_TYPE (min) = cp_build_reference_type (TREE_TYPE (min), !real_lvalue_p (expr)); diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index 4ab77cda387..b921689808a 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -2143,7 +2143,7 @@ merge_exception_specifiers (tree list, tree add) return add; noex = TREE_PURPOSE (list); gcc_checking_assert (!TREE_PURPOSE (add) - || errorcount + || errorcount || !flag_exceptions || cp_tree_equal (noex, TREE_PURPOSE (add))); /* Combine the dynamic-exception-specifiers, if any. */ diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 6e2702992c6..a5a8b23df27 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -954,9 +954,13 @@ typedef _Complex float __attribute__((mode(TC))) _Complex128; typedef _Complex float __attribute__((mode(XC))) _Complex80; @end smallexample -On PowerPC 64-bit Linux systems there are currently problems in using -the complex @code{__float128} type. When these problems are fixed, -you would use: +In order to use @code{__float128} and @code{__ibm128} on PowerPC Linux +systems, you must use the @option{-mfloat128}. It is expected in +future versions of GCC that @code{__float128} will be enabled +automatically. In addition, there are currently problems in using the +complex @code{__float128} type. When these problems are fixed, you +would use the following syntax to declare @code{_Complex128} to be a +complex @code{__float128} type: @smallexample typedef _Complex float __attribute__((mode(KC))) _Complex128; diff --git a/gcc/dse.c b/gcc/dse.c index eef564454aa..b03616102b5 100644 --- a/gcc/dse.c +++ b/gcc/dse.c @@ -242,9 +242,6 @@ struct store_info /* Canonized MEM address for use by canon_true_dependence. */ rtx mem_addr; - /* If this is non-zero, it is the alias set of a spill location. */ - alias_set_type alias_set; - /* The offset of the first and byte before the last byte associated with the operation. */ HOST_WIDE_INT begin, end; @@ -306,9 +303,6 @@ struct read_info_type /* The id of the mem group of the base address. */ int group_id; - /* If this is non-zero, it is the alias set of a spill location. */ - alias_set_type alias_set; - /* The offset of the first and byte after the last byte associated with the operation. If begin == end == 0, the read did not have a constant offset. */ @@ -576,19 +570,6 @@ static object_allocator<deferred_change> deferred_change_pool static deferred_change *deferred_change_list = NULL; -/* The group that holds all of the clear_alias_sets. */ -static group_info *clear_alias_group; - -/* The modes of the clear_alias_sets. */ -static htab_t clear_alias_mode_table; - -/* Hash table element to look up the mode for an alias set. */ -struct clear_alias_mode_holder -{ - alias_set_type alias_set; - machine_mode mode; -}; - /* This is true except if cfun->stdarg -- i.e. we cannot do this for vararg functions because they play games with the frame. */ static bool stores_off_frame_dead_at_return; @@ -596,7 +577,6 @@ static bool stores_off_frame_dead_at_return; /* Counter for stats. */ static int globally_deleted; static int locally_deleted; -static int spill_deleted; static bitmap all_blocks; @@ -613,22 +593,6 @@ static unsigned int current_position; ----------------------------------------------------------------------------*/ -/* Find the entry associated with ALIAS_SET. */ - -static struct clear_alias_mode_holder * -clear_alias_set_lookup (alias_set_type alias_set) -{ - struct clear_alias_mode_holder tmp_holder; - void **slot; - - tmp_holder.alias_set = alias_set; - slot = htab_find_slot (clear_alias_mode_table, &tmp_holder, NO_INSERT); - gcc_assert (*slot); - - return (struct clear_alias_mode_holder *) *slot; -} - - /* Hashtable callbacks for maintaining the "bases" field of store_group_info, given that the addresses are function invariants. */ @@ -665,37 +629,13 @@ get_group_info (rtx base) group_info *gi; group_info **slot; - if (base) - { - /* Find the store_base_info structure for BASE, creating a new one - if necessary. */ - tmp_gi.rtx_base = base; - slot = rtx_group_table->find_slot (&tmp_gi, INSERT); - gi = *slot; - } - else - { - if (!clear_alias_group) - { - clear_alias_group = gi = group_info_pool.allocate (); - memset (gi, 0, sizeof (struct group_info)); - gi->id = rtx_group_next_id++; - gi->store1_n = BITMAP_ALLOC (&dse_bitmap_obstack); - gi->store1_p = BITMAP_ALLOC (&dse_bitmap_obstack); - gi->store2_n = BITMAP_ALLOC (&dse_bitmap_obstack); - gi->store2_p = BITMAP_ALLOC (&dse_bitmap_obstack); - gi->escaped_p = BITMAP_ALLOC (&dse_bitmap_obstack); - gi->escaped_n = BITMAP_ALLOC (&dse_bitmap_obstack); - gi->group_kill = BITMAP_ALLOC (&dse_bitmap_obstack); - gi->process_globally = false; - gi->offset_map_size_n = 0; - gi->offset_map_size_p = 0; - gi->offset_map_n = NULL; - gi->offset_map_p = NULL; - rtx_group_vec.safe_push (gi); - } - return clear_alias_group; - } + gcc_assert (base != NULL_RTX); + + /* Find the store_base_info structure for BASE, creating a new one + if necessary. */ + tmp_gi.rtx_base = base; + slot = rtx_group_table->find_slot (&tmp_gi, INSERT); + gi = *slot; if (gi == NULL) { @@ -732,7 +672,6 @@ dse_step0 (void) { locally_deleted = 0; globally_deleted = 0; - spill_deleted = 0; bitmap_obstack_initialize (&dse_bitmap_obstack); gcc_obstack_init (&dse_obstack); @@ -749,8 +688,6 @@ dse_step0 (void) stores_off_frame_dead_at_return = !cfun->stdarg; init_alias_analysis (); - - clear_alias_group = NULL; } @@ -919,15 +856,8 @@ delete_dead_store_insn (insn_info_t insn_info) if (!check_for_inc_dec_1 (insn_info)) return; if (dump_file && (dump_flags & TDF_DETAILS)) - { - fprintf (dump_file, "Locally deleting insn %d ", - INSN_UID (insn_info->insn)); - if (insn_info->store_rec->alias_set) - fprintf (dump_file, "alias set %d\n", - (int) insn_info->store_rec->alias_set); - else - fprintf (dump_file, "\n"); - } + fprintf (dump_file, "Locally deleting insn %d\n", + INSN_UID (insn_info->insn)); free_store_info (insn_info); read_info = insn_info->read_rec; @@ -1057,13 +987,8 @@ free_read_records (bb_info_t bb_info) while (*ptr) { read_info_t next = (*ptr)->next; - if ((*ptr)->alias_set == 0) - { - read_info_type_pool.remove (*ptr); - *ptr = next; - } - else - ptr = &(*ptr)->next; + read_info_type_pool.remove (*ptr); + *ptr = next; } } @@ -1137,7 +1062,6 @@ const_or_frame_p (rtx x) static bool canon_address (rtx mem, - alias_set_type *alias_set_out, int *group_id, HOST_WIDE_INT *offset, cselib_val **base) @@ -1147,8 +1071,6 @@ canon_address (rtx mem, rtx expanded_address, address; int expanded; - *alias_set_out = 0; - cselib_lookup (mem_address, address_mode, 1, GET_MODE (mem)); if (dump_file && (dump_flags & TDF_DETAILS)) @@ -1347,7 +1269,6 @@ record_store (rtx body, bb_info_t bb_info) rtx mem, rhs, const_rhs, mem_addr; HOST_WIDE_INT offset = 0; HOST_WIDE_INT width = 0; - alias_set_type spill_alias_set; insn_info_t insn_info = bb_info->last_insn; store_info *store_info = NULL; int group_id; @@ -1410,7 +1331,7 @@ record_store (rtx body, bb_info_t bb_info) if (MEM_VOLATILE_P (mem)) insn_info->cannot_delete = true; - if (!canon_address (mem, &spill_alias_set, &group_id, &offset, &base)) + if (!canon_address (mem, &group_id, &offset, &base)) { clear_rhs_from_active_local_stores (); return 0; @@ -1421,26 +1342,7 @@ record_store (rtx body, bb_info_t bb_info) else width = GET_MODE_SIZE (GET_MODE (mem)); - if (spill_alias_set) - { - bitmap store1 = clear_alias_group->store1_p; - bitmap store2 = clear_alias_group->store2_p; - - gcc_assert (GET_MODE (mem) != BLKmode); - - if (!bitmap_set_bit (store1, spill_alias_set)) - bitmap_set_bit (store2, spill_alias_set); - - if (clear_alias_group->offset_map_size_p < spill_alias_set) - clear_alias_group->offset_map_size_p = spill_alias_set; - - store_info = rtx_store_info_pool.allocate (); - - if (dump_file && (dump_flags & TDF_DETAILS)) - fprintf (dump_file, " processing spill store %d(%s)\n", - (int) spill_alias_set, GET_MODE_NAME (GET_MODE (mem))); - } - else if (group_id >= 0) + if (group_id >= 0) { /* In the restrictive case where the base is a constant or the frame pointer we can do global analysis. */ @@ -1506,21 +1408,16 @@ record_store (rtx body, bb_info_t bb_info) last = NULL; redundant_reason = NULL; mem = canon_rtx (mem); - /* For alias_set != 0 canon_true_dependence should be never called. */ - if (spill_alias_set) - mem_addr = NULL_RTX; + + if (group_id < 0) + mem_addr = base->val_rtx; else { - if (group_id < 0) - mem_addr = base->val_rtx; - else - { - group_info *group = rtx_group_vec[group_id]; - mem_addr = group->canon_base_addr; - } - if (offset) - mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset); + group_info *group = rtx_group_vec[group_id]; + mem_addr = group->canon_base_addr; } + if (offset) + mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset); while (ptr) { @@ -1534,29 +1431,7 @@ record_store (rtx body, bb_info_t bb_info) while (!s_info->is_set) s_info = s_info->next; - if (s_info->alias_set != spill_alias_set) - del = false; - else if (s_info->alias_set) - { - struct clear_alias_mode_holder *entry - = clear_alias_set_lookup (s_info->alias_set); - /* Generally, spills cannot be processed if and of the - references to the slot have a different mode. But if - we are in the same block and mode is exactly the same - between this store and one before in the same block, - we can still delete it. */ - if ((GET_MODE (mem) == GET_MODE (s_info->mem)) - && (GET_MODE (mem) == entry->mode)) - { - del = true; - set_all_positions_unneeded (s_info); - } - if (dump_file && (dump_flags & TDF_DETAILS)) - fprintf (dump_file, " trying spill store in insn=%d alias_set=%d\n", - INSN_UID (ptr->insn), (int) s_info->alias_set); - } - else if ((s_info->group_id == group_id) - && (s_info->cse_base == base)) + if (s_info->group_id == group_id && s_info->cse_base == base) { HOST_WIDE_INT i; if (dump_file && (dump_flags & TDF_DETAILS)) @@ -1609,10 +1484,9 @@ record_store (rtx body, bb_info_t bb_info) the value of store_info. If it is, set the rhs to NULL to keep it from being used to remove a load. */ { - if (canon_true_dependence (s_info->mem, - GET_MODE (s_info->mem), - s_info->mem_addr, - mem, mem_addr)) + if (canon_output_dependence (s_info->mem, true, + mem, GET_MODE (mem), + mem_addr)) { s_info->rhs = NULL; s_info->const_rhs = NULL; @@ -1647,7 +1521,6 @@ record_store (rtx body, bb_info_t bb_info) store_info->next = insn_info->store_rec; insn_info->store_rec = store_info; store_info->mem = mem; - store_info->alias_set = spill_alias_set; store_info->mem_addr = mem_addr; store_info->cse_base = base; if (width > HOST_BITS_PER_WIDE_INT) @@ -2071,7 +1944,6 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info) insn_info_t insn_info; HOST_WIDE_INT offset = 0; HOST_WIDE_INT width = 0; - alias_set_type spill_alias_set = 0; cselib_val *base = NULL; int group_id; read_info_t read_info; @@ -2093,7 +1965,7 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info) if (MEM_READONLY_P (mem)) return; - if (!canon_address (mem, &spill_alias_set, &group_id, &offset, &base)) + if (!canon_address (mem, &group_id, &offset, &base)) { if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, " adding wild read, canon_address failure.\n"); @@ -2109,64 +1981,21 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info) read_info = read_info_type_pool.allocate (); read_info->group_id = group_id; read_info->mem = mem; - read_info->alias_set = spill_alias_set; read_info->begin = offset; read_info->end = offset + width; read_info->next = insn_info->read_rec; insn_info->read_rec = read_info; - /* For alias_set != 0 canon_true_dependence should be never called. */ - if (spill_alias_set) - mem_addr = NULL_RTX; + if (group_id < 0) + mem_addr = base->val_rtx; else { - if (group_id < 0) - mem_addr = base->val_rtx; - else - { - group_info *group = rtx_group_vec[group_id]; - mem_addr = group->canon_base_addr; - } - if (offset) - mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset); + group_info *group = rtx_group_vec[group_id]; + mem_addr = group->canon_base_addr; } + if (offset) + mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset); - /* We ignore the clobbers in store_info. The is mildly aggressive, - but there really should not be a clobber followed by a read. */ - - if (spill_alias_set) - { - insn_info_t i_ptr = active_local_stores; - insn_info_t last = NULL; - - if (dump_file && (dump_flags & TDF_DETAILS)) - fprintf (dump_file, " processing spill load %d\n", - (int) spill_alias_set); - - while (i_ptr) - { - store_info *store_info = i_ptr->store_rec; - - /* Skip the clobbers. */ - while (!store_info->is_set) - store_info = store_info->next; - - if (store_info->alias_set == spill_alias_set) - { - if (dump_file && (dump_flags & TDF_DETAILS)) - dump_insn_info ("removing from active", i_ptr); - - active_local_stores_len--; - if (last) - last->next_local_store = i_ptr->next_local_store; - else - active_local_stores = i_ptr->next_local_store; - } - else - last = i_ptr; - i_ptr = i_ptr->next_local_store; - } - } - else if (group_id >= 0) + if (group_id >= 0) { /* This is the restricted case where the base is a constant or the frame pointer and offset is a constant. */ @@ -2294,11 +2123,10 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info) bb_info->regs_live)) return; - if (!store_info->alias_set) - remove = canon_true_dependence (store_info->mem, - GET_MODE (store_info->mem), - store_info->mem_addr, - mem, mem_addr); + remove = canon_true_dependence (store_info->mem, + GET_MODE (store_info->mem), + store_info->mem_addr, + mem, mem_addr); if (remove) { @@ -2731,16 +2559,12 @@ dse_step1 (void) /* Skip the clobbers. */ while (!store_info->is_set) store_info = store_info->next; - if (store_info->alias_set && !i_ptr->cannot_delete) - delete_dead_store_insn (i_ptr); - else - if (store_info->group_id >= 0) - { - group_info *group - = rtx_group_vec[store_info->group_id]; - if (group->frame_related && !i_ptr->cannot_delete) - delete_dead_store_insn (i_ptr); - } + if (store_info->group_id >= 0) + { + group_info *group = rtx_group_vec[store_info->group_id]; + if (group->frame_related && !i_ptr->cannot_delete) + delete_dead_store_insn (i_ptr); + } i_ptr = i_ptr->next_local_store; } @@ -2869,10 +2693,10 @@ dse_step2_init (void) } -/* Init the offset tables for the normal case. */ +/* Init the offset tables. */ static bool -dse_step2_nospill (void) +dse_step2 (void) { unsigned int i; group_info *group; @@ -2884,9 +2708,6 @@ dse_step2_nospill (void) bitmap_iterator bi; unsigned int j; - if (group == clear_alias_group) - continue; - memset (group->offset_map_n, 0, sizeof (int) * group->offset_map_size_n); memset (group->offset_map_p, 0, sizeof (int) * group->offset_map_size_p); bitmap_clear (group->group_kill); @@ -2946,7 +2767,7 @@ get_bitmap_index (group_info *group_info, HOST_WIDE_INT offset) may be NULL. */ static void -scan_stores_nospill (store_info *store_info, bitmap gen, bitmap kill) +scan_stores (store_info *store_info, bitmap gen, bitmap kill) { while (store_info) { @@ -2969,35 +2790,11 @@ scan_stores_nospill (store_info *store_info, bitmap gen, bitmap kill) } -/* Process the STORE_INFOs into the bitmaps into GEN and KILL. KILL - may be NULL. */ - -static void -scan_stores_spill (store_info *store_info, bitmap gen, bitmap kill) -{ - while (store_info) - { - if (store_info->alias_set) - { - int index = get_bitmap_index (clear_alias_group, - store_info->alias_set); - if (index != 0) - { - bitmap_set_bit (gen, index); - if (kill) - bitmap_clear_bit (kill, index); - } - } - store_info = store_info->next; - } -} - - /* Process the READ_INFOs into the bitmaps into GEN and KILL. KILL may be NULL. */ static void -scan_reads_nospill (insn_info_t insn_info, bitmap gen, bitmap kill) +scan_reads (insn_info_t insn_info, bitmap gen, bitmap kill) { read_info_t read_info = insn_info->read_rec; int i; @@ -3087,30 +2884,6 @@ scan_reads_nospill (insn_info_t insn_info, bitmap gen, bitmap kill) } } -/* Process the READ_INFOs into the bitmaps into GEN and KILL. KILL - may be NULL. */ - -static void -scan_reads_spill (read_info_t read_info, bitmap gen, bitmap kill) -{ - while (read_info) - { - if (read_info->alias_set) - { - int index = get_bitmap_index (clear_alias_group, - read_info->alias_set); - if (index != 0) - { - if (kill) - bitmap_set_bit (kill, index); - bitmap_clear_bit (gen, index); - } - } - - read_info = read_info->next; - } -} - /* Return the insn in BB_INFO before the first wild read or if there are no wild reads in the block, return the last insn. */ @@ -3149,16 +2922,12 @@ find_insn_before_first_wild_read (bb_info_t bb_info) anything that happens is hidden by the wild read. */ static void -dse_step3_scan (bool for_spills, basic_block bb) +dse_step3_scan (basic_block bb) { bb_info_t bb_info = bb_table[bb->index]; insn_info_t insn_info; - if (for_spills) - /* There are no wild reads in the spill case. */ - insn_info = bb_info->last_insn; - else - insn_info = find_insn_before_first_wild_read (bb_info); + insn_info = find_insn_before_first_wild_read (bb_info); /* In the spill case or in the no_spill case if there is no wild read in the block, we will need a kill set. */ @@ -3179,17 +2948,8 @@ dse_step3_scan (bool for_spills, basic_block bb) this phase. */ if (insn_info->insn && INSN_P (insn_info->insn)) { - /* Process the read(s) last. */ - if (for_spills) - { - scan_stores_spill (insn_info->store_rec, bb_info->gen, bb_info->kill); - scan_reads_spill (insn_info->read_rec, bb_info->gen, bb_info->kill); - } - else - { - scan_stores_nospill (insn_info->store_rec, bb_info->gen, bb_info->kill); - scan_reads_nospill (insn_info, bb_info->gen, bb_info->kill); - } + scan_stores (insn_info->store_rec, bb_info->gen, bb_info->kill); + scan_reads (insn_info, bb_info->gen, bb_info->kill); } insn_info = insn_info->prev_insn; @@ -3244,7 +3004,7 @@ mark_reachable_blocks (sbitmap unreachable_blocks, basic_block bb) /* Build the transfer functions for the function. */ static void -dse_step3 (bool for_spills) +dse_step3 () { basic_block bb; sbitmap unreachable_blocks = sbitmap_alloc (last_basic_block_for_fn (cfun)); @@ -3267,7 +3027,7 @@ dse_step3 (bool for_spills) else if (bb->index == EXIT_BLOCK) dse_step3_exit_block_scan (bb_info); else - dse_step3_scan (for_spills, bb); + dse_step3_scan (bb); if (EDGE_COUNT (bb->succs) == 0) mark_reachable_blocks (unreachable_blocks, bb); @@ -3468,7 +3228,7 @@ dse_step4 (void) static void -dse_step5_nospill (void) +dse_step5 (void) { basic_block bb; FOR_EACH_BB_FN (bb, cfun) @@ -3503,27 +3263,21 @@ dse_step5_nospill (void) while (!store_info->is_set) store_info = store_info->next; - if (store_info->alias_set) - deleted = false; - else + HOST_WIDE_INT i; + group_info *group_info = rtx_group_vec[store_info->group_id]; + + for (i = store_info->begin; i < store_info->end; i++) { - HOST_WIDE_INT i; - group_info *group_info - = rtx_group_vec[store_info->group_id]; + int index = get_bitmap_index (group_info, i); - for (i = store_info->begin; i < store_info->end; i++) + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, "i = %d, index = %d\n", (int)i, index); + if (index == 0 || !bitmap_bit_p (v, index)) { - int index = get_bitmap_index (group_info, i); - if (dump_file && (dump_flags & TDF_DETAILS)) - fprintf (dump_file, "i = %d, index = %d\n", (int)i, index); - if (index == 0 || !bitmap_bit_p (v, index)) - { - if (dump_file && (dump_flags & TDF_DETAILS)) - fprintf (dump_file, "failing at i = %d\n", (int)i); - deleted = false; - break; - } + fprintf (dump_file, "failing at i = %d\n", (int)i); + deleted = false; + break; } } if (deleted) @@ -3544,7 +3298,7 @@ dse_step5_nospill (void) && INSN_P (insn_info->insn) && (!deleted)) { - scan_stores_nospill (insn_info->store_rec, v, NULL); + scan_stores (insn_info->store_rec, v, NULL); if (insn_info->wild_read) { if (dump_file && (dump_flags & TDF_DETAILS)) @@ -3558,7 +3312,7 @@ dse_step5_nospill (void) fprintf (dump_file, "regular read\n"); else if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, "non-frame wild read\n"); - scan_reads_nospill (insn_info, v, NULL); + scan_reads (insn_info, v, NULL); } } @@ -3667,23 +3421,23 @@ rest_of_handle_dse (void) dse_step0 (); dse_step1 (); dse_step2_init (); - if (dse_step2_nospill ()) + if (dse_step2 ()) { df_set_flags (DF_LR_RUN_DCE); df_analyze (); if (dump_file && (dump_flags & TDF_DETAILS)) fprintf (dump_file, "doing global processing\n"); - dse_step3 (false); + dse_step3 (); dse_step4 (); - dse_step5_nospill (); + dse_step5 (); } dse_step6 (); dse_step7 (); if (dump_file) - fprintf (dump_file, "dse: local deletions = %d, global deletions = %d, spill deletions = %d\n", - locally_deleted, globally_deleted, spill_deleted); + fprintf (dump_file, "dse: local deletions = %d, global deletions = %d\n", + locally_deleted, globally_deleted); /* DSE can eliminate potentially-trapping MEMs. Remove any EH edges associated with them. */ diff --git a/gcc/explow.c b/gcc/explow.c index 249318f44b5..e0ce201b86b 100644 --- a/gcc/explow.c +++ b/gcc/explow.c @@ -259,12 +259,14 @@ break_out_memory_refs (rtx x) which way). We take advantage of the fact that pointers are not allowed to overflow by commuting arithmetic operations over conversions so that address arithmetic insns can be used. IN_CONST is true if this conversion is inside - a CONST. */ + a CONST. NO_EMIT is true if no insns should be emitted, and instead + it should return NULL if it can't be simplified without emitting insns. */ -static rtx +rtx convert_memory_address_addr_space_1 (machine_mode to_mode ATTRIBUTE_UNUSED, rtx x, addr_space_t as ATTRIBUTE_UNUSED, - bool in_const ATTRIBUTE_UNUSED) + bool in_const ATTRIBUTE_UNUSED, + bool no_emit ATTRIBUTE_UNUSED) { #ifndef POINTERS_EXTEND_UNSIGNED gcc_assert (GET_MODE (x) == to_mode || GET_MODE (x) == VOIDmode); @@ -310,19 +312,16 @@ convert_memory_address_addr_space_1 (machine_mode to_mode ATTRIBUTE_UNUSED, temp = gen_rtx_LABEL_REF (to_mode, LABEL_REF_LABEL (x)); LABEL_REF_NONLOCAL_P (temp) = LABEL_REF_NONLOCAL_P (x); return temp; - break; case SYMBOL_REF: temp = shallow_copy_rtx (x); PUT_MODE (temp, to_mode); return temp; - break; case CONST: - return gen_rtx_CONST (to_mode, - convert_memory_address_addr_space_1 - (to_mode, XEXP (x, 0), as, true)); - break; + temp = convert_memory_address_addr_space_1 (to_mode, XEXP (x, 0), as, + true, no_emit); + return temp ? gen_rtx_CONST (to_mode, temp) : temp; case PLUS: case MULT: @@ -338,18 +337,25 @@ convert_memory_address_addr_space_1 (machine_mode to_mode ATTRIBUTE_UNUSED, && CONST_INT_P (XEXP (x, 1)) && ((in_const && POINTERS_EXTEND_UNSIGNED != 0) || XEXP (x, 1) == convert_memory_address_addr_space_1 - (to_mode, XEXP (x, 1), as, in_const) + (to_mode, XEXP (x, 1), as, in_const, + no_emit) || POINTERS_EXTEND_UNSIGNED < 0))) - return gen_rtx_fmt_ee (GET_CODE (x), to_mode, - convert_memory_address_addr_space_1 - (to_mode, XEXP (x, 0), as, in_const), - XEXP (x, 1)); + { + temp = convert_memory_address_addr_space_1 (to_mode, XEXP (x, 0), + as, in_const, no_emit); + return (temp ? gen_rtx_fmt_ee (GET_CODE (x), to_mode, + temp, XEXP (x, 1)) + : temp); + } break; default: break; } + if (no_emit) + return NULL_RTX; + return convert_modes (to_mode, from_mode, x, POINTERS_EXTEND_UNSIGNED); #endif /* defined(POINTERS_EXTEND_UNSIGNED) */ @@ -364,7 +370,7 @@ convert_memory_address_addr_space_1 (machine_mode to_mode ATTRIBUTE_UNUSED, rtx convert_memory_address_addr_space (machine_mode to_mode, rtx x, addr_space_t as) { - return convert_memory_address_addr_space_1 (to_mode, x, as, false); + return convert_memory_address_addr_space_1 (to_mode, x, as, false, false); } diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 788ecc3a6b7..0f4bf7eca6b 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -8338,6 +8338,20 @@ pointer_may_wrap_p (tree base, tree offset, HOST_WIDE_INT bitpos) return total.to_uhwi () > (unsigned HOST_WIDE_INT) size; } +/* Return a positive integer when the symbol DECL is known to have + a nonzero address, zero when it's known not to (e.g., it's a weak + symbol), and a negative integer when the symbol is not yet in the + symbol table and so whether or not its address is zero is unknown. */ +static int +maybe_nonzero_address (tree decl) +{ + if (DECL_P (decl) && decl_in_symtab_p (decl)) + if (struct symtab_node *symbol = symtab_node::get_create (decl)) + return symbol->nonzero_address (); + + return -1; +} + /* Subroutine of fold_binary. This routine performs all of the transformations that are common to the equality/inequality operators (EQ_EXPR and NE_EXPR) and the ordering operators @@ -8638,6 +8652,39 @@ fold_comparison (location_t loc, enum tree_code code, tree type, base1 = build_fold_addr_expr_loc (loc, base1); return fold_build2_loc (loc, code, type, base0, base1); } + /* Comparison between an ordinary (non-weak) symbol and a null + pointer can be eliminated since such symbols must have a non + null address. In C, relational expressions between pointers + to objects and null pointers are undefined. The results + below follow the C++ rules with the additional property that + every object pointer compares greater than a null pointer. + */ + else if (DECL_P (base0) + && maybe_nonzero_address (base0) > 0 + /* Avoid folding references to struct members at offset 0 to + prevent tests like '&ptr->firstmember == 0' from getting + eliminated. When ptr is null, although the -> expression + is strictly speaking invalid, GCC retains it as a matter + of QoI. See PR c/44555. */ + && (offset0 == NULL_TREE && bitpos0 != 0) + /* The caller guarantees that when one of the arguments is + constant (i.e., null in this case) it is second. */ + && integer_zerop (arg1)) + { + switch (code) + { + case EQ_EXPR: + case LE_EXPR: + case LT_EXPR: + return boolean_false_node; + case GE_EXPR: + case GT_EXPR: + case NE_EXPR: + return boolean_true_node; + default: + gcc_unreachable (); + } + } } /* Transform comparisons of the form X +- C1 CMP Y +- C2 to @@ -13508,16 +13555,9 @@ tree_single_nonzero_warnv_p (tree t, bool *strict_overflow_p) /* For objects in symbol table check if we know they are non-zero. Don't do anything for variables and functions before symtab is built; it is quite possible that they will be declared weak later. */ - if (DECL_P (base) && decl_in_symtab_p (base)) - { - struct symtab_node *symbol; - - symbol = symtab_node::get_create (base); - if (symbol) - return symbol->nonzero_address (); - else - return false; - } + int nonzero_addr = maybe_nonzero_address (base); + if (nonzero_addr >= 0) + return nonzero_addr; /* Function local objects are never NULL. */ if (DECL_P (base) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 5ab7d3ff285..e2f216d2bc6 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,42 @@ +2016-04-13 Dominique d'Humieres <dominiq@lps.ens.fr> + + PR fortran/67039 + * intrinsic.texi: Correct the documentation of pseudorandom + number intrinsics. + +2016-04-13 Dominique d'Humieres <dominiq@lps.ens.fr> + + PR fortran/58000 + * gfortran.texi: Document OPEN( ... NAME=) as not implemented + in GNU Fortran + +2016-04-09 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/68566 + * array.c (match_array_element_spec): Add check for non-integer. + * simplify.c (gfc_simplify_reshape): If source shape is NULL return. + +2016-04-06 Patrick Palka <ppalka@gcc.gnu.org> + + PR c/70436 + * openmp.c (gfc_find_omp_udr): Add explicit braces to resolve a + future -Wparentheses warning. + +2016-04-04 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/67538 + * resolve.c (resolve_allocate_expr): Emit error message when no + array spec and no array valued source= expression is given in an + F2008 allocate() for an array to allocate. + +2016-04-04 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/65795 + * trans-array.c (gfc_array_allocate): When the array is a coarray, + do not nullyfing its allocatable components in array_allocate, because + the nullify missed the array ref and nullifies the wrong component. + Cosmetics. + 2016-03-29 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/70397 diff --git a/gcc/fortran/array.c b/gcc/fortran/array.c index 2fc9dfaffdb..1430e80251d 100644 --- a/gcc/fortran/array.c +++ b/gcc/fortran/array.c @@ -421,10 +421,15 @@ match_array_element_spec (gfc_array_spec *as) if (!gfc_expr_check_typed (*upper, gfc_current_ns, false)) return AS_UNKNOWN; - if ((*upper)->expr_type == EXPR_FUNCTION && (*upper)->ts.type == BT_UNKNOWN - && (*upper)->symtree && strcmp ((*upper)->symtree->name, "null") == 0) - { - gfc_error ("Expecting a scalar INTEGER expression at %C"); + if (((*upper)->expr_type == EXPR_CONSTANT + && (*upper)->ts.type != BT_INTEGER) || + ((*upper)->expr_type == EXPR_FUNCTION + && (*upper)->ts.type == BT_UNKNOWN + && (*upper)->symtree + && strcmp ((*upper)->symtree->name, "null") == 0)) + { + gfc_error ("Expecting a scalar INTEGER expression at %C, found %s", + gfc_basic_typename ((*upper)->ts.type)); return AS_UNKNOWN; } @@ -448,10 +453,15 @@ match_array_element_spec (gfc_array_spec *as) if (!gfc_expr_check_typed (*upper, gfc_current_ns, false)) return AS_UNKNOWN; - if ((*upper)->expr_type == EXPR_FUNCTION && (*upper)->ts.type == BT_UNKNOWN - && (*upper)->symtree && strcmp ((*upper)->symtree->name, "null") == 0) + if (((*upper)->expr_type == EXPR_CONSTANT + && (*upper)->ts.type != BT_INTEGER) || + ((*upper)->expr_type == EXPR_FUNCTION + && (*upper)->ts.type == BT_UNKNOWN + && (*upper)->symtree + && strcmp ((*upper)->symtree->name, "null") == 0)) { - gfc_error ("Expecting a scalar INTEGER expression at %C"); + gfc_error ("Expecting a scalar INTEGER expression at %C, found %s", + gfc_basic_typename ((*upper)->ts.type)); return AS_UNKNOWN; } diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index 257ee7c4e80..2704bc54978 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -2148,6 +2148,7 @@ code that uses them running with the GNU Fortran compiler. @c * Omitted arguments in procedure call:: * Alternate complex function syntax:: * Volatile COMMON blocks:: +* OPEN( ... NAME=):: @end menu @@ -2355,6 +2356,19 @@ invalid standard Fortran syntax and is not supported by +@node OPEN( ... NAME=) +@subsection @code{OPEN( ... NAME=)} +@cindex @code{NAM} + +Some Fortran compilers, including @command{g77}, let the user declare +@code{OPEN( ... NAME=)}. This is +invalid standard Fortran syntax and is not supported by +@command{gfortran}. @code{OPEN( ... NAME=)} should be replaced +with @code{OPEN( ... FILE=)}. + + + +@c --------------------------------------------------------------------- @c --------------------------------------------------------------------- @c Mixed-Language Programming @c --------------------------------------------------------------------- diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index f9760f6a3ab..88406301d9f 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -12628,10 +12628,12 @@ Does not return anything. See @code{RAND} and @code{IRAND} for examples. @item @emph{Notes}: -The Fortran 2003 standard specifies the intrinsic @code{RANDOM_SEED} to -initialize the pseudo-random numbers generator and @code{RANDOM_NUMBER} -to generate pseudo-random numbers. Please note that in -GNU Fortran, these two sets of intrinsics (@code{RAND}, +The Fortran standard specifies the intrinsic subroutines +@code{RANDOM_SEED} to initialize the pseudo-random number +generator and @code{RANDOM_NUMBER} to generate pseudo-random numbers. +These subroutines should be used in new codes. + +Please note that in GNU Fortran, these two sets of intrinsics (@code{RAND}, @code{IRAND} and @code{SRAND} on the one hand, @code{RANDOM_NUMBER} and @code{RANDOM_SEED} on the other hand) access two independent pseudo-random number generators. diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c index a6c39cda694..0dd1a921370 100644 --- a/gcc/fortran/openmp.c +++ b/gcc/fortran/openmp.c @@ -175,24 +175,26 @@ gfc_find_omp_udr (gfc_namespace *ns, const char *name, gfc_typespec *ts) st = gfc_find_symtree (ns->omp_udr_root, name); if (st != NULL) - for (omp_udr = st->n.omp_udr; omp_udr; omp_udr = omp_udr->next) - if (ts == NULL) - return omp_udr; - else if (gfc_compare_types (&omp_udr->ts, ts)) - { - if (ts->type == BT_CHARACTER) - { - if (omp_udr->ts.u.cl->length == NULL) - return omp_udr; - if (ts->u.cl->length == NULL) - continue; - if (gfc_compare_expr (omp_udr->ts.u.cl->length, - ts->u.cl->length, - INTRINSIC_EQ) != 0) - continue; - } + { + for (omp_udr = st->n.omp_udr; omp_udr; omp_udr = omp_udr->next) + if (ts == NULL) return omp_udr; - } + else if (gfc_compare_types (&omp_udr->ts, ts)) + { + if (ts->type == BT_CHARACTER) + { + if (omp_udr->ts.u.cl->length == NULL) + return omp_udr; + if (ts->u.cl->length == NULL) + continue; + if (gfc_compare_expr (omp_udr->ts.u.cl->length, + ts->u.cl->length, + INTRINSIC_EQ) != 0) + continue; + } + return omp_udr; + } + } /* Don't escape an interface block. */ if (ns && !ns->has_import_set diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 55ab2ecfceb..f5cd588308a 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -7217,7 +7217,15 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code, bool *array_alloc_wo_spec) if (!gfc_notify_std (GFC_STD_F2008, "Array specification required " "in ALLOCATE statement at %L", &e->where)) goto failure; - *array_alloc_wo_spec = true; + if (code->expr3->rank != 0) + *array_alloc_wo_spec = true; + else + { + gfc_error ("Array specification or array-valued SOURCE= " + "expression required in ALLOCATE statement at %L", + &e->where); + goto failure; + } } else { diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 12a8f32ea01..a63101072f1 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -5163,6 +5163,9 @@ gfc_simplify_reshape (gfc_expr *source, gfc_expr *shape_exp, || !is_constant_array_expr (order_exp)) return NULL; + if (source->shape == NULL) + return NULL; + /* Proceed with simplification, unpacking the array. */ mpz_init (index); diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 649b80fec84..825dfb822af 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -5550,8 +5550,8 @@ gfc_array_allocate (gfc_se * se, gfc_expr * expr, tree status, tree errmsg, else gfc_add_expr_to_block (&se->pre, set_descriptor); - if ((expr->ts.type == BT_DERIVED) - && expr->ts.u.derived->attr.alloc_comp) + if (expr->ts.type == BT_DERIVED && expr->ts.u.derived->attr.alloc_comp + && !coarray) { tmp = gfc_nullify_alloc_comp (expr->ts.u.derived, se->expr, ref->u.ar.as->rank); diff --git a/gcc/fwprop.c b/gcc/fwprop.c index c4587d7bf77..d8cb9fa3bbb 100644 --- a/gcc/fwprop.c +++ b/gcc/fwprop.c @@ -999,10 +999,27 @@ try_fwprop_subst (df_ref use, rtx *loc, rtx new_rtx, rtx_insn *def_insn, making a new one if one does not already exist. */ if (set_reg_equal) { - if (dump_file) - fprintf (dump_file, " Setting REG_EQUAL note\n"); + /* If there are any paradoxical SUBREGs, don't add REG_EQUAL note, + because the bits in there can be anything and so might not + match the REG_EQUAL note content. See PR70574. */ + subrtx_var_iterator::array_type array; + FOR_EACH_SUBRTX_VAR (iter, array, *loc, NONCONST) + { + rtx x = *iter; + if (SUBREG_P (x) && paradoxical_subreg_p (x)) + { + set_reg_equal = false; + break; + } + } - note = set_unique_reg_note (insn, REG_EQUAL, copy_rtx (new_rtx)); + if (set_reg_equal) + { + if (dump_file) + fprintf (dump_file, " Setting REG_EQUAL note\n"); + + note = set_unique_reg_note (insn, REG_EQUAL, copy_rtx (new_rtx)); + } } } @@ -1300,14 +1317,19 @@ forward_propagate_and_simplify (df_ref use, rtx_insn *def_insn, rtx def_set) that isn't mentioned in USE_SET, as the note would be invalid otherwise. We also don't want to install a note if we are merely propagating a pseudo since verifying that this pseudo isn't dead - is a pain; moreover such a note won't help anything. */ + is a pain; moreover such a note won't help anything. + If the use is a paradoxical subreg, make sure we don't add a + REG_EQUAL note for it, because it is not equivalent, it is one + possible value for it, but we can't rely on it holding that value. + See PR70574. */ set_reg_equal = (note == NULL_RTX && REG_P (SET_DEST (use_set)) && !REG_P (src) && !(GET_CODE (src) == SUBREG && REG_P (SUBREG_REG (src))) && !reg_mentioned_p (SET_DEST (use_set), - SET_SRC (use_set))); + SET_SRC (use_set)) + && !paradoxical_subreg_p (DF_REF_REG (use))); } if (GET_MODE (*loc) == VOIDmode) diff --git a/gcc/gimplify-me.c b/gcc/gimplify-me.c index c80a4ff459d..28e467b990e 100644 --- a/gcc/gimplify-me.c +++ b/gcc/gimplify-me.c @@ -299,7 +299,8 @@ gimple_regimplify_operands (gimple *stmt, gimple_stmt_iterator *gsi_p) if (need_temp) { tree temp = create_tmp_reg (TREE_TYPE (lhs)); - if (gimple_in_ssa_p (cfun)) + if (gimple_in_ssa_p (cfun) + && is_gimple_reg_type (TREE_TYPE (lhs))) temp = make_ssa_name (temp); gimple_set_lhs (stmt, temp); post_stmt = gimple_build_assign (lhs, temp); diff --git a/gcc/gimplify.c b/gcc/gimplify.c index b9757db4c89..99c9760f85f 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -4164,7 +4164,7 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p, } /* Vector types use CONSTRUCTOR all the way through gimple - compilation as a general initializer. */ + compilation as a general initializer. */ FOR_EACH_VEC_SAFE_ELT (elts, ix, ce) { enum gimplify_status tret; @@ -4172,6 +4172,10 @@ gimplify_init_constructor (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p, fb_rvalue); if (tret == GS_ERROR) ret = GS_ERROR; + else if (TREE_STATIC (ctor) + && !initializer_constant_valid_p (ce->value, + TREE_TYPE (ce->value))) + TREE_STATIC (ctor) = 0; } if (!is_gimple_reg (TREE_OPERAND (*expr_p, 0))) TREE_OPERAND (*expr_p, 1) = get_formal_tmp_var (ctor, pre_p); @@ -7742,6 +7746,8 @@ gimplify_adjust_omp_clauses_1 (splay_tree_node n, void *data) && (flags & GOVD_WRITTEN) == 0 && omp_shared_to_firstprivate_optimizable_decl_p (decl)) OMP_CLAUSE_SHARED_READONLY (clause) = 1; + else if (code == OMP_CLAUSE_FIRSTPRIVATE && (flags & GOVD_EXPLICIT) == 0) + OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT (clause) = 1; else if (code == OMP_CLAUSE_MAP && (flags & GOVD_MAP_0LEN_ARRAY) != 0) { tree nc = build_omp_clause (input_location, OMP_CLAUSE_MAP); @@ -7985,6 +7991,34 @@ gimplify_adjust_omp_clauses (gimple_seq *pre_p, gimple_seq body, tree *list_p, break; } decl = OMP_CLAUSE_DECL (c); + /* Data clasues associated with acc parallel reductions must be + compatible with present_or_copy. Warn and adjust the clause + if that is not the case. */ + if (ctx->region_type == ORT_ACC_PARALLEL) + { + tree t = DECL_P (decl) ? decl : TREE_OPERAND (decl, 0); + n = NULL; + + if (DECL_P (t)) + n = splay_tree_lookup (ctx->variables, (splay_tree_key) t); + + if (n && (n->value & GOVD_REDUCTION)) + { + enum gomp_map_kind kind = OMP_CLAUSE_MAP_KIND (c); + + OMP_CLAUSE_MAP_IN_REDUCTION (c) = 1; + if ((kind & GOMP_MAP_TOFROM) != GOMP_MAP_TOFROM + && kind != GOMP_MAP_FORCE_PRESENT + && kind != GOMP_MAP_POINTER) + { + warning_at (OMP_CLAUSE_LOCATION (c), 0, + "incompatible data clause with reduction " + "on %qE; promoting to present_or_copy", + DECL_NAME (t)); + OMP_CLAUSE_SET_MAP_KIND (c, GOMP_MAP_TOFROM); + } + } + } if (!DECL_P (decl)) { if ((ctx->region_type & ORT_TARGET) != 0 @@ -8116,6 +8150,33 @@ gimplify_adjust_omp_clauses (gimple_seq *pre_p, gimple_seq body, tree *list_p, case OMP_CLAUSE_REDUCTION: decl = OMP_CLAUSE_DECL (c); + /* OpenACC reductions need a present_or_copy data clause. + Add one if necessary. Error is the reduction is private. */ + if (ctx->region_type == ORT_ACC_PARALLEL) + { + n = splay_tree_lookup (ctx->variables, (splay_tree_key) decl); + if (n->value & (GOVD_PRIVATE | GOVD_FIRSTPRIVATE)) + error_at (OMP_CLAUSE_LOCATION (c), "invalid private " + "reduction on %qE", DECL_NAME (decl)); + else if ((n->value & GOVD_MAP) == 0) + { + tree next = OMP_CLAUSE_CHAIN (c); + tree nc = build_omp_clause (UNKNOWN_LOCATION, OMP_CLAUSE_MAP); + OMP_CLAUSE_SET_MAP_KIND (nc, GOMP_MAP_TOFROM); + OMP_CLAUSE_DECL (nc) = decl; + OMP_CLAUSE_CHAIN (c) = nc; + lang_hooks.decls.omp_finish_clause (nc, pre_p); + while (1) + { + OMP_CLAUSE_MAP_IN_REDUCTION (nc) = 1; + if (OMP_CLAUSE_CHAIN (nc) == NULL) + break; + nc = OMP_CLAUSE_CHAIN (nc); + } + OMP_CLAUSE_CHAIN (nc) = next; + n->value |= GOVD_MAP; + } + } if (DECL_P (decl) && omp_shared_to_firstprivate_optimizable_decl_p (decl)) omp_mark_stores (gimplify_omp_ctxp->outer_context, decl); @@ -9876,64 +9937,66 @@ gimplify_omp_ordered (tree expr, gimple_seq body) tree sink_c = NULL_TREE; if (gimplify_omp_ctxp) - for (c = OMP_ORDERED_CLAUSES (expr); c; c = OMP_CLAUSE_CHAIN (c)) - if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND - && gimplify_omp_ctxp->loop_iter_var.is_empty () - && (OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SINK - || OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SOURCE)) - { - error_at (OMP_CLAUSE_LOCATION (c), - "%<ordered%> construct with %<depend%> clause must be " - "closely nested inside a loop with %<ordered%> clause " - "with a parameter"); - failures++; - } - else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND - && OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SINK) - { - bool fail = false; - for (decls = OMP_CLAUSE_DECL (c), i = 0; - decls && TREE_CODE (decls) == TREE_LIST; - decls = TREE_CHAIN (decls), ++i) - if (i >= gimplify_omp_ctxp->loop_iter_var.length () / 2) - continue; - else if (TREE_VALUE (decls) - != gimplify_omp_ctxp->loop_iter_var[2 * i]) + { + for (c = OMP_ORDERED_CLAUSES (expr); c; c = OMP_CLAUSE_CHAIN (c)) + if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND + && gimplify_omp_ctxp->loop_iter_var.is_empty () + && (OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SINK + || OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SOURCE)) + { + error_at (OMP_CLAUSE_LOCATION (c), + "%<ordered%> construct with %<depend%> clause must be " + "closely nested inside a loop with %<ordered%> clause " + "with a parameter"); + failures++; + } + else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND + && OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SINK) + { + bool fail = false; + for (decls = OMP_CLAUSE_DECL (c), i = 0; + decls && TREE_CODE (decls) == TREE_LIST; + decls = TREE_CHAIN (decls), ++i) + if (i >= gimplify_omp_ctxp->loop_iter_var.length () / 2) + continue; + else if (TREE_VALUE (decls) + != gimplify_omp_ctxp->loop_iter_var[2 * i]) + { + error_at (OMP_CLAUSE_LOCATION (c), + "variable %qE is not an iteration " + "of outermost loop %d, expected %qE", + TREE_VALUE (decls), i + 1, + gimplify_omp_ctxp->loop_iter_var[2 * i]); + fail = true; + failures++; + } + else + TREE_VALUE (decls) + = gimplify_omp_ctxp->loop_iter_var[2 * i + 1]; + if (!fail && i != gimplify_omp_ctxp->loop_iter_var.length () / 2) + { + error_at (OMP_CLAUSE_LOCATION (c), + "number of variables in %<depend(sink)%> " + "clause does not match number of " + "iteration variables"); + failures++; + } + sink_c = c; + } + else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND + && OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SOURCE) + { + if (source_c) { error_at (OMP_CLAUSE_LOCATION (c), - "variable %qE is not an iteration " - "of outermost loop %d, expected %qE", - TREE_VALUE (decls), i + 1, - gimplify_omp_ctxp->loop_iter_var[2 * i]); - fail = true; + "more than one %<depend(source)%> clause on an " + "%<ordered%> construct"); failures++; } else - TREE_VALUE (decls) - = gimplify_omp_ctxp->loop_iter_var[2 * i + 1]; - if (!fail && i != gimplify_omp_ctxp->loop_iter_var.length () / 2) - { - error_at (OMP_CLAUSE_LOCATION (c), - "number of variables in %<depend(sink)%> " - "clause does not match number of " - "iteration variables"); - failures++; - } - sink_c = c; - } - else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND - && OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SOURCE) - { - if (source_c) - { - error_at (OMP_CLAUSE_LOCATION (c), - "more than one %<depend(source)%> clause on an " - "%<ordered%> construct"); - failures++; - } - else - source_c = c; - } + source_c = c; + } + } if (source_c && sink_c) { error_at (OMP_CLAUSE_LOCATION (source_c), diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 07ae4d0f00c..ce20dad142f 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -3de822d11255d439fac9717897b017aae2de18c2 +ff29ea8e4e69eb94958aef4388da09a61b2b52b6 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/gcc/graphite-isl-ast-to-gimple.c b/gcc/graphite-isl-ast-to-gimple.c index 8dd5dc8bb84..88609c08de9 100644 --- a/gcc/graphite-isl-ast-to-gimple.c +++ b/gcc/graphite-isl-ast-to-gimple.c @@ -2439,7 +2439,7 @@ copy_cond_phi_args (gphi *phi, gphi *new_phi, vec<tree> iv_map, bool postpone) fprintf (dump_file, "\n"); } gsi_insert_earliest (stmts); - new_phi_args [i] = new_name; + new_phi_args[i] = new_expr; continue; } diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c index b62789f84c6..22a09a1782f 100644 --- a/gcc/graphite-sese-to-poly.c +++ b/gcc/graphite-sese-to-poly.c @@ -672,7 +672,7 @@ pdr_add_memory_accesses (isl_map *acc, dr_info &dri) aff = extract_affine (scop, afn, isl_space_domain (isl_map_get_space (acc))); - acc = set_index (acc, i + 1, aff); + acc = set_index (acc, nb_subscripts - i , aff); } return isl_map_coalesce (acc); diff --git a/gcc/hsa-brig.c b/gcc/hsa-brig.c index 018b7be12fb..a943e379f55 100644 --- a/gcc/hsa-brig.c +++ b/gcc/hsa-brig.c @@ -1577,10 +1577,6 @@ emit_switch_insn (hsa_insn_sbr *sbr) brig_code.add (&repr, sizeof (repr)); brig_insn_count++; - - /* Emit jump to default label. */ - hsa_bb *hbb = hsa_bb_for_bb (sbr->m_default_bb); - emit_unconditional_jump (&hbb->m_label_ref); } /* Emit a HSA convert instruction and all necessary directives, schedule diff --git a/gcc/hsa-dump.c b/gcc/hsa-dump.c index 71b971234d4..985caca24ab 100644 --- a/gcc/hsa-dump.c +++ b/gcc/hsa-dump.c @@ -920,9 +920,6 @@ dump_hsa_insn_1 (FILE *f, hsa_insn_basic *insn, int *indent) if (i != sbr->m_jump_table.length () - 1) fprintf (f, ", "); } - - fprintf (f, "] /* default: BB %i */", - hsa_bb_for_bb (sbr->m_default_bb)->m_index); } else if (is_a <hsa_insn_arg_block *> (insn)) { diff --git a/gcc/hsa-gen.c b/gcc/hsa-gen.c index bc95c5c1955..5baf6073e3b 100644 --- a/gcc/hsa-gen.c +++ b/gcc/hsa-gen.c @@ -1515,7 +1515,7 @@ hsa_insn_br::operator new (size_t) hsa_insn_sbr::hsa_insn_sbr (hsa_op_reg *index, unsigned jump_count) : hsa_insn_basic (1, BRIG_OPCODE_SBR, BRIG_TYPE_B1, index), - m_width (BRIG_WIDTH_1), m_jump_table (vNULL), m_default_bb (NULL), + m_width (BRIG_WIDTH_1), m_jump_table (vNULL), m_label_code_list (new hsa_op_code_list (jump_count)) { } @@ -3436,11 +3436,48 @@ get_switch_size (gswitch *s) static void gen_hsa_insns_for_switch_stmt (gswitch *s, hsa_bb *hbb) { + gimple_stmt_iterator it = gsi_for_stmt (s); + gsi_prev (&it); + + /* Create preambule that verifies that index - lowest_label >= 0. */ + edge e = split_block (hbb->m_bb, gsi_stmt (it)); + e->flags &= ~EDGE_FALLTHRU; + e->flags |= EDGE_TRUE_VALUE; + function *func = DECL_STRUCT_FUNCTION (current_function_decl); tree index_tree = gimple_switch_index (s); tree lowest = get_switch_low (s); + tree highest = get_switch_high (s); hsa_op_reg *index = hsa_cfun->reg_for_gimple_ssa (index_tree); + + hsa_op_reg *cmp1_reg = new hsa_op_reg (BRIG_TYPE_B1); + hsa_op_immed *cmp1_immed = new hsa_op_immed (lowest); + hbb->append_insn (new hsa_insn_cmp (BRIG_COMPARE_GE, cmp1_reg->m_type, + cmp1_reg, index, cmp1_immed)); + + hsa_op_reg *cmp2_reg = new hsa_op_reg (BRIG_TYPE_B1); + hsa_op_immed *cmp2_immed = new hsa_op_immed (highest); + hbb->append_insn (new hsa_insn_cmp (BRIG_COMPARE_LE, cmp2_reg->m_type, + cmp2_reg, index, cmp2_immed)); + + hsa_op_reg *cmp_reg = new hsa_op_reg (BRIG_TYPE_B1); + hbb->append_insn (new hsa_insn_basic (3, BRIG_OPCODE_AND, cmp_reg->m_type, + cmp_reg, cmp1_reg, cmp2_reg)); + + hbb->append_insn (new hsa_insn_br (cmp_reg)); + + tree default_label = gimple_switch_default_label (s); + basic_block default_label_bb = label_to_block_fn (func, + CASE_LABEL (default_label)); + + make_edge (e->src, default_label_bb, EDGE_FALSE_VALUE); + + hsa_cfun->m_modified_cfg = true; + + /* Basic block with the SBR instruction. */ + hbb = hsa_init_new_bb (e->dest); + hsa_op_reg *sub_index = new hsa_op_reg (index->m_type); hbb->append_insn (new hsa_insn_basic (3, BRIG_OPCODE_SUB, sub_index->m_type, sub_index, index, @@ -3452,11 +3489,6 @@ gen_hsa_insns_for_switch_stmt (gswitch *s, hsa_bb *hbb) unsigned HOST_WIDE_INT size = tree_to_uhwi (get_switch_size (s)); hsa_insn_sbr *sbr = new hsa_insn_sbr (sub_index, size + 1); - tree default_label = gimple_switch_default_label (s); - basic_block default_label_bb = label_to_block_fn (func, - CASE_LABEL (default_label)); - - sbr->m_default_bb = default_label_bb; /* Prepare array with default label destination. */ for (unsigned HOST_WIDE_INT i = 0; i <= size; i++) diff --git a/gcc/hsa.h b/gcc/hsa.h index 77ef6f184bd..1b57a3c1c99 100644 --- a/gcc/hsa.h +++ b/gcc/hsa.h @@ -564,9 +564,6 @@ public: /* Jump table. */ vec <basic_block> m_jump_table; - /* Default label basic block. */ - basic_block m_default_bb; - /* Code list for label references. */ hsa_op_code_list *m_label_code_list; diff --git a/gcc/ipa-devirt.c b/gcc/ipa-devirt.c index 069495105bf..2cf018bdf39 100644 --- a/gcc/ipa-devirt.c +++ b/gcc/ipa-devirt.c @@ -2438,10 +2438,14 @@ maybe_record_node (vec <cgraph_node *> &nodes, { gcc_assert (!target_node->global.inlined_to); gcc_assert (target_node->real_symbol_p ()); + /* When sanitizing, do not assume that __cxa_pure_virtual is not called + by valid program. */ + if (flag_sanitize & SANITIZE_UNREACHABLE) + ; /* Only add pure virtual if it is the only possible target. This way we will preserve the diagnostics about pure virtual called in many cases without disabling optimization in other. */ - if (pure_virtual) + else if (pure_virtual) { if (nodes.length ()) return; @@ -3374,8 +3378,7 @@ possible_polymorphic_call_target_p (tree otr_type, bool final; if (TREE_CODE (TREE_TYPE (n->decl)) == FUNCTION_TYPE - && ((fcode = DECL_FUNCTION_CODE (n->decl)) - == BUILT_IN_UNREACHABLE + && ((fcode = DECL_FUNCTION_CODE (n->decl)) == BUILT_IN_UNREACHABLE || fcode == BUILT_IN_TRAP)) return true; diff --git a/gcc/ipa-polymorphic-call.c b/gcc/ipa-polymorphic-call.c index 0ebbd4ae66d..56f334471de 100644 --- a/gcc/ipa-polymorphic-call.c +++ b/gcc/ipa-polymorphic-call.c @@ -479,16 +479,12 @@ contains_type_p (tree outer_type, HOST_WIDE_INT offset, } -/* Return a FUNCTION_DECL if BLOCK represents a constructor or destructor. +/* Return a FUNCTION_DECL if FN represent a constructor or destructor. If CHECK_CLONES is true, also check for clones of ctor/dtors. */ tree -inlined_polymorphic_ctor_dtor_block_p (tree block, bool check_clones) +polymorphic_ctor_dtor_p (tree fn, bool check_clones) { - tree fn = block_ultimate_origin (block); - if (fn == NULL || TREE_CODE (fn) != FUNCTION_DECL) - return NULL_TREE; - if (TREE_CODE (TREE_TYPE (fn)) != METHOD_TYPE || (!DECL_CXX_CONSTRUCTOR_P (fn) && !DECL_CXX_DESTRUCTOR_P (fn))) { @@ -510,6 +506,19 @@ inlined_polymorphic_ctor_dtor_block_p (tree block, bool check_clones) return fn; } +/* Return a FUNCTION_DECL if BLOCK represents a constructor or destructor. + If CHECK_CLONES is true, also check for clones of ctor/dtors. */ + +tree +inlined_polymorphic_ctor_dtor_block_p (tree block, bool check_clones) +{ + tree fn = block_ultimate_origin (block); + if (fn == NULL || TREE_CODE (fn) != FUNCTION_DECL) + return NULL_TREE; + + return polymorphic_ctor_dtor_p (fn, check_clones); +} + /* We know that the instance is stored in variable or parameter (not dynamically allocated) and we want to disprove the fact diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c index 892bf46d53c..3b3a419a3e3 100644 --- a/gcc/ipa-pure-const.c +++ b/gcc/ipa-pure-const.c @@ -1956,10 +1956,25 @@ pass_nothrow::execute (function *) } node->set_nothrow_flag (true); + + bool cfg_changed = false; + if (self_recursive_p (node)) + FOR_EACH_BB_FN (this_block, cfun) + if (gimple *g = last_stmt (this_block)) + if (is_gimple_call (g)) + { + tree callee_t = gimple_call_fndecl (g); + if (callee_t + && recursive_call_p (current_function_decl, callee_t) + && maybe_clean_eh_stmt (g) + && gimple_purge_dead_eh_edges (this_block)) + cfg_changed = true; + } + if (dump_file) fprintf (dump_file, "Function found to be nothrow: %s\n", current_function_name ()); - return 0; + return cfg_changed ? TODO_cleanup_cfg : 0; } } // anon namespace diff --git a/gcc/ipa-utils.h b/gcc/ipa-utils.h index 839c6c51444..58d2de7e3c5 100644 --- a/gcc/ipa-utils.h +++ b/gcc/ipa-utils.h @@ -70,6 +70,7 @@ void dump_possible_polymorphic_call_targets (FILE *, tree, HOST_WIDE_INT, bool possible_polymorphic_call_target_p (tree, HOST_WIDE_INT, const ipa_polymorphic_call_context &, struct cgraph_node *); +tree polymorphic_ctor_dtor_p (tree, bool); tree inlined_polymorphic_ctor_dtor_block_p (tree, bool); bool decl_maybe_in_construction_p (tree, tree, gimple *, tree); tree vtable_pointer_value_to_binfo (const_tree); diff --git a/gcc/ipa-visibility.c b/gcc/ipa-visibility.c index 8198a3da175..e4c3f7c5110 100644 --- a/gcc/ipa-visibility.c +++ b/gcc/ipa-visibility.c @@ -452,6 +452,84 @@ update_visibility_by_resolution_info (symtab_node * node) } } +/* Try to get rid of weakref. */ + +static void +optimize_weakref (symtab_node *node) +{ +#ifdef ASM_OUTPUT_DEF + bool aliases_supported = true; +#else + bool aliases_supported = false; +#endif + bool strip_weakref = false; + bool static_alias = false; + + gcc_assert (node->weakref); + + /* Weakrefs with no target defined can not be optimized. */ + if (!node->analyzed) + return; + symtab_node *target = node->get_alias_target (); + + /* Weakrefs to weakrefs can be optimized only if target can be. */ + if (target->weakref) + optimize_weakref (target); + if (target->weakref) + return; + + /* If we have definition of weakref's target and we know it binds locally, + we can turn weakref to static alias. */ + if (target->definition && decl_binds_to_current_def_p (target->decl) + && aliases_supported) + strip_weakref = static_alias = true; + /* Otherwise we can turn weakref into transparent alias. This transformation + may break asm statements which directly refers to symbol name and expect + GNU as to translate it via .weakref directive. So do not optimize when + DECL_PRESERVED is set and .weakref is supported. */ + else if ((!DECL_PRESERVE_P (target->decl) + || IDENTIFIER_TRANSPARENT_ALIAS (DECL_ASSEMBLER_NAME (node->decl))) + && !DECL_WEAK (target->decl) + && !DECL_EXTERNAL (target->decl) + && ((target->definition && !target->can_be_discarded_p ()) + || target->resolution != LDPR_UNDEF)) + strip_weakref = true; + if (!strip_weakref) + return; + node->weakref = false; + IDENTIFIER_TRANSPARENT_ALIAS (DECL_ASSEMBLER_NAME (node->decl)) = 0; + TREE_CHAIN (DECL_ASSEMBLER_NAME (node->decl)) = NULL_TREE; + DECL_ATTRIBUTES (node->decl) = remove_attribute ("weakref", + DECL_ATTRIBUTES + (node->decl)); + + if (dump_file) + fprintf (dump_file, "Optimizing weakref %s %s\n", + node->name(), + static_alias ? "as static alias" : "as transparent alias"); + + if (static_alias) + { + /* make_decl_local will shortcircuit if it doesn't see TREE_PUBLIC. + be sure it really clears the WEAK flag. */ + TREE_PUBLIC (node->decl) = true; + node->make_decl_local (); + node->forced_by_abi = false; + node->resolution = LDPR_PREVAILING_DEF_IRONLY; + node->externally_visible = false; + gcc_assert (!DECL_WEAK (node->decl)); + node->transparent_alias = false; + } + else + { + symtab->change_decl_assembler_name + (node->decl, DECL_ASSEMBLER_NAME (node->get_alias_target ()->decl)); + node->transparent_alias = true; + node->copy_visibility_from (target); + } + gcc_assert (node->alias); +} + /* Decide on visibility of all symbols. */ static unsigned int @@ -594,6 +672,8 @@ function_and_variable_visibility (bool whole_program) } update_visibility_by_resolution_info (node); + if (node->weakref) + optimize_weakref (node); } FOR_EACH_DEFINED_FUNCTION (node) { @@ -660,6 +740,8 @@ function_and_variable_visibility (bool whole_program) || ! (ADDR_SPACE_GENERIC_P (TYPE_ADDR_SPACE (TREE_TYPE (vnode->decl)))))) DECL_COMMON (vnode->decl) = 0; + if (vnode->weakref) + optimize_weakref (vnode); } FOR_EACH_DEFINED_VARIABLE (vnode) { diff --git a/gcc/lra-constraints.c b/gcc/lra-constraints.c index 4883eefc532..c00afe766cf 100644 --- a/gcc/lra-constraints.c +++ b/gcc/lra-constraints.c @@ -2914,6 +2914,7 @@ process_address_1 (int nop, bool check_only_p, { struct address_info ad; rtx new_reg; + HOST_WIDE_INT scale; rtx op = *curr_id->operand_loc[nop]; const char *constraint = curr_static_id->operand[nop].constraint; enum constraint_num cn = lookup_constraint (constraint); @@ -3161,14 +3162,14 @@ process_address_1 (int nop, bool check_only_p, *ad.inner = simplify_gen_binary (PLUS, GET_MODE (new_reg), new_reg, *ad.index); } - else if (get_index_scale (&ad) == 1) + else if ((scale = get_index_scale (&ad)) == 1) { /* The last transformation to one reg will be made in curr_insn_transform function. */ end_sequence (); return false; } - else + else if (scale != 0) { /* base + scale * index => base + new_reg, case (1) above. @@ -3180,6 +3181,17 @@ process_address_1 (int nop, bool check_only_p, *ad.inner = simplify_gen_binary (PLUS, GET_MODE (new_reg), *ad.base_term, new_reg); } + else + { + enum reg_class cl = base_reg_class (ad.mode, ad.as, + SCRATCH, SCRATCH); + rtx addr = *ad.inner; + + new_reg = lra_create_new_reg (Pmode, NULL_RTX, cl, "addr"); + /* addr => new_base. */ + lra_emit_move (new_reg, addr); + *ad.inner = new_reg; + } *before = get_insns (); end_sequence (); return true; diff --git a/gcc/lra-spills.c b/gcc/lra-spills.c index 5709ef13e8d..7e5f63785a0 100644 --- a/gcc/lra-spills.c +++ b/gcc/lra-spills.c @@ -528,11 +528,12 @@ spill_pseudos (void) if (removed_pseudo_p) { lra_assert (DEBUG_INSN_P (insn)); - lra_set_insn_deleted (insn); + lra_invalidate_insn_data (insn); + INSN_VAR_LOCATION_LOC (insn) = gen_rtx_UNKNOWN_VAR_LOC (); if (lra_dump_file != NULL) fprintf (lra_dump_file, - "Debug insn #%u is deleted as containing removed pseudo\n", - INSN_UID (insn)); + "Debug insn #%u is reset because it referenced " + "removed pseudo\n", INSN_UID (insn)); } bitmap_and_compl_into (df_get_live_in (bb), &spilled_pseudos); bitmap_and_compl_into (df_get_live_out (bb), &spilled_pseudos); diff --git a/gcc/match.pd b/gcc/match.pd index c0ed305ed0e..75aa6013b2e 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1554,7 +1554,8 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) /* A truncation to an unsigned type (a zero-extension) should be canonicalized as bitwise and of a mask. */ - (if (final_int && inter_int && inside_int + (if (GIMPLE /* PR70366: doing this in GENERIC breaks -Wconversion. */ + && final_int && inter_int && inside_int && final_prec == inside_prec && final_prec > inter_prec && inter_unsignedp) diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 3fd6eb304b6..aa3721edc9d 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -2122,7 +2122,8 @@ scan_sharing_clauses (tree clauses, omp_context *ctx, else install_var_field (decl, true, 3, ctx, base_pointers_restrict); - if (is_gimple_omp_offloaded (ctx->stmt)) + if (is_gimple_omp_offloaded (ctx->stmt) + && !OMP_CLAUSE_MAP_IN_REDUCTION (c)) install_var_local (decl, ctx); } } @@ -2379,19 +2380,21 @@ scan_sharing_clauses (tree clauses, omp_context *ctx, gcc_checking_assert (!scan_array_reductions || !is_gimple_omp_oacc (ctx->stmt)); if (scan_array_reductions) - for (c = clauses; c; c = OMP_CLAUSE_CHAIN (c)) - if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_REDUCTION - && OMP_CLAUSE_REDUCTION_PLACEHOLDER (c)) - { - scan_omp (&OMP_CLAUSE_REDUCTION_GIMPLE_INIT (c), ctx); - scan_omp (&OMP_CLAUSE_REDUCTION_GIMPLE_MERGE (c), ctx); - } - else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE - && OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c)) - scan_omp (&OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c), ctx); - else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR - && OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c)) - scan_omp (&OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c), ctx); + { + for (c = clauses; c; c = OMP_CLAUSE_CHAIN (c)) + if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_REDUCTION + && OMP_CLAUSE_REDUCTION_PLACEHOLDER (c)) + { + scan_omp (&OMP_CLAUSE_REDUCTION_GIMPLE_INIT (c), ctx); + scan_omp (&OMP_CLAUSE_REDUCTION_GIMPLE_MERGE (c), ctx); + } + else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LASTPRIVATE + && OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c)) + scan_omp (&OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (c), ctx); + else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_LINEAR + && OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c)) + scan_omp (&OMP_CLAUSE_LINEAR_GIMPLE_SEQ (c), ctx); + } } /* Create a new name for omp child function. Returns an identifier. If @@ -4837,7 +4840,7 @@ lower_rec_input_clauses (tree clauses, gimple_seq *ilist, gimple_seq *dlist, gimplify_assign (ptr, x, ilist); } } - else if (is_reference (var) && !is_oacc_parallel (ctx)) + else if (is_reference (var)) { /* For references that are being privatized for Fortran, allocate new backing storage for the new pointer @@ -5573,7 +5576,8 @@ lower_oacc_reductions (location_t loc, tree clauses, tree level, bool inner, tree orig = OMP_CLAUSE_DECL (c); tree var = maybe_lookup_decl (orig, ctx); tree ref_to_res = NULL_TREE; - tree incoming, outgoing; + tree incoming, outgoing, v1, v2, v3; + bool is_private = false; enum tree_code rcode = OMP_CLAUSE_REDUCTION_CODE (c); if (rcode == MINUS_EXPR) @@ -5586,7 +5590,6 @@ lower_oacc_reductions (location_t loc, tree clauses, tree level, bool inner, if (!var) var = orig; - gcc_assert (!is_reference (var)); incoming = outgoing = var; @@ -5622,22 +5625,38 @@ lower_oacc_reductions (location_t loc, tree clauses, tree level, bool inner, for (; cls; cls = OMP_CLAUSE_CHAIN (cls)) if (OMP_CLAUSE_CODE (cls) == OMP_CLAUSE_REDUCTION && orig == OMP_CLAUSE_DECL (cls)) - goto has_outer_reduction; + { + incoming = outgoing = lookup_decl (orig, probe); + goto has_outer_reduction; + } + else if ((OMP_CLAUSE_CODE (cls) == OMP_CLAUSE_FIRSTPRIVATE + || OMP_CLAUSE_CODE (cls) == OMP_CLAUSE_PRIVATE) + && orig == OMP_CLAUSE_DECL (cls)) + { + is_private = true; + goto do_lookup; + } } do_lookup: /* This is the outermost construct with this reduction, see if there's a mapping for it. */ if (gimple_code (outer->stmt) == GIMPLE_OMP_TARGET - && maybe_lookup_field (orig, outer)) + && maybe_lookup_field (orig, outer) && !is_private) { ref_to_res = build_receiver_ref (orig, false, outer); if (is_reference (orig)) ref_to_res = build_simple_mem_ref (ref_to_res); + tree type = TREE_TYPE (var); + if (POINTER_TYPE_P (type)) + type = TREE_TYPE (type); + outgoing = var; - incoming = omp_reduction_init_op (loc, rcode, TREE_TYPE (var)); + incoming = omp_reduction_init_op (loc, rcode, type); } + else if (ctx->outer) + incoming = outgoing = lookup_decl (orig, ctx->outer); else incoming = outgoing = orig; @@ -5647,6 +5666,37 @@ lower_oacc_reductions (location_t loc, tree clauses, tree level, bool inner, if (!ref_to_res) ref_to_res = integer_zero_node; + if (is_reference (orig)) + { + tree type = TREE_TYPE (var); + const char *id = IDENTIFIER_POINTER (DECL_NAME (var)); + + if (!inner) + { + tree x = create_tmp_var (TREE_TYPE (type), id); + gimplify_assign (var, build_fold_addr_expr (x), fork_seq); + } + + v1 = create_tmp_var (type, id); + v2 = create_tmp_var (type, id); + v3 = create_tmp_var (type, id); + + gimplify_assign (v1, var, fork_seq); + gimplify_assign (v2, var, fork_seq); + gimplify_assign (v3, var, fork_seq); + + var = build_simple_mem_ref (var); + v1 = build_simple_mem_ref (v1); + v2 = build_simple_mem_ref (v2); + v3 = build_simple_mem_ref (v3); + outgoing = build_simple_mem_ref (outgoing); + + if (!TREE_CONSTANT (incoming)) + incoming = build_simple_mem_ref (incoming); + } + else + v1 = v2 = v3 = var; + /* Determine position in reduction buffer, which may be used by target. */ enum machine_mode mode = TYPE_MODE (TREE_TYPE (var)); @@ -5676,20 +5726,20 @@ lower_oacc_reductions (location_t loc, tree clauses, tree level, bool inner, = build_call_expr_internal_loc (loc, IFN_GOACC_REDUCTION, TREE_TYPE (var), 6, init_code, unshare_expr (ref_to_res), - var, level, op, off); + v1, level, op, off); tree fini_call = build_call_expr_internal_loc (loc, IFN_GOACC_REDUCTION, TREE_TYPE (var), 6, fini_code, unshare_expr (ref_to_res), - var, level, op, off); + v2, level, op, off); tree teardown_call = build_call_expr_internal_loc (loc, IFN_GOACC_REDUCTION, TREE_TYPE (var), 6, teardown_code, - ref_to_res, var, level, op, off); + ref_to_res, v3, level, op, off); - gimplify_assign (var, setup_call, &before_fork); - gimplify_assign (var, init_call, &after_fork); - gimplify_assign (var, fini_call, &before_join); + gimplify_assign (v1, setup_call, &before_fork); + gimplify_assign (v2, init_call, &after_fork); + gimplify_assign (v3, fini_call, &before_join); gimplify_assign (outgoing, teardown_call, &after_join); } @@ -5931,9 +5981,6 @@ lower_reduction_clauses (tree clauses, gimple_seq *stmt_seqp, omp_context *ctx) } } - if (is_gimple_omp_oacc (ctx->stmt)) - return; - stmt = gimple_build_call (builtin_decl_explicit (BUILT_IN_GOMP_ATOMIC_START), 0); gimple_seq_add_stmt (stmt_seqp, stmt); @@ -6107,8 +6154,15 @@ lower_send_clauses (tree clauses, gimple_seq *ilist, gimple_seq *olist, switch (OMP_CLAUSE_CODE (c)) { - case OMP_CLAUSE_PRIVATE: case OMP_CLAUSE_FIRSTPRIVATE: + if (OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT (c) + && !by_ref + && is_task_ctx (ctx)) + TREE_NO_WARNING (var) = 1; + do_in = true; + break; + + case OMP_CLAUSE_PRIVATE: case OMP_CLAUSE_COPYIN: case OMP_CLAUSE__LOOPTEMP_: do_in = true; @@ -15676,7 +15730,6 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) location_t loc = gimple_location (stmt); bool offloaded, data_region; unsigned int map_cnt = 0; - bool has_depend = false; offloaded = is_gimple_omp_offloaded (stmt); switch (gimple_omp_target_kind (stmt)) @@ -15711,7 +15764,6 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) dep_bind = gimple_build_bind (NULL, NULL, make_node (BLOCK)); lower_depend_clauses (gimple_omp_target_clauses_ptr (stmt), &dep_ilist, &dep_olist); - has_depend = true; } tgt_bind = NULL; @@ -15820,7 +15872,10 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) if (!maybe_lookup_field (var, ctx)) continue; - if (offloaded) + /* Don't remap oacc parallel reduction variables, because the + intermediate result must be local to each gang. */ + if (offloaded && !(OMP_CLAUSE_CODE (c) == OMP_CLAUSE_MAP + && OMP_CLAUSE_MAP_IN_REDUCTION (c))) { x = build_receiver_ref (var, true, ctx); tree new_var = lookup_decl (var, ctx); @@ -16068,7 +16123,12 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) { gcc_assert (is_gimple_omp_oacc (ctx->stmt)); if (!is_reference (var)) - var = build_fold_addr_expr (var); + { + if (is_gimple_reg (var) + && OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT (c)) + TREE_NO_WARNING (var) = 1; + var = build_fold_addr_expr (var); + } else talign = TYPE_ALIGN_UNIT (TREE_TYPE (TREE_TYPE (ovar))); gimplify_assign (x, var, &ilist); @@ -16083,7 +16143,16 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) || map_kind == GOMP_MAP_POINTER || map_kind == GOMP_MAP_TO_PSET || map_kind == GOMP_MAP_FORCE_DEVICEPTR) - gimplify_assign (avar, var, &ilist); + { + /* If we need to initialize a temporary + with VAR because it is not addressable, and + the variable hasn't been initialized yet, then + we'll get a warning for the store to avar. + Don't warn in that case, the mapping might + be implicit. */ + TREE_NO_WARNING (var) = 1; + gimplify_assign (avar, var, &ilist); + } avar = build_fold_addr_expr (avar); gimplify_assign (x, avar, &ilist); if ((GOMP_MAP_COPY_FROM_P (map_kind) @@ -16209,49 +16278,16 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) type = TREE_TYPE (ovar); if (is_reference (ovar)) type = TREE_TYPE (type); - bool use_firstprivate_int, force_addr; - use_firstprivate_int = false; - force_addr = false; if ((INTEGRAL_TYPE_P (type) && TYPE_PRECISION (type) <= POINTER_SIZE) || TREE_CODE (type) == POINTER_TYPE) - use_firstprivate_int = true; - if (has_depend) - { - if (is_reference (var)) - use_firstprivate_int = false; - else if (is_gimple_reg (var)) - { - if (DECL_HAS_VALUE_EXPR_P (var)) - { - tree v = get_base_address (var); - if (DECL_P (v) && TREE_ADDRESSABLE (v)) - { - use_firstprivate_int = false; - force_addr = true; - } - else - switch (TREE_CODE (v)) - { - case INDIRECT_REF: - case MEM_REF: - use_firstprivate_int = false; - force_addr = true; - break; - default: - break; - } - } - } - else - use_firstprivate_int = false; - } - if (use_firstprivate_int) { tkind = GOMP_MAP_FIRSTPRIVATE_INT; tree t = var; if (is_reference (var)) t = build_simple_mem_ref (var); + else if (OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT (c)) + TREE_NO_WARNING (var) = 1; if (TREE_CODE (type) != POINTER_TYPE) t = fold_convert (pointer_sized_int_node, t); t = fold_convert (TREE_TYPE (x), t); @@ -16259,10 +16295,12 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) } else if (is_reference (var)) gimplify_assign (x, var, &ilist); - else if (!force_addr && is_gimple_reg (var)) + else if (is_gimple_reg (var)) { tree avar = create_tmp_var (TREE_TYPE (var)); mark_addressable (avar); + if (OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT (c)) + TREE_NO_WARNING (var) = 1; gimplify_assign (avar, var, &ilist); avar = build_fold_addr_expr (avar); gimplify_assign (x, avar, &ilist); @@ -16395,40 +16433,9 @@ lower_omp_target (gimple_stmt_iterator *gsi_p, omp_context *ctx) type = TREE_TYPE (var); if (is_reference (var)) type = TREE_TYPE (type); - bool use_firstprivate_int; - use_firstprivate_int = false; if ((INTEGRAL_TYPE_P (type) && TYPE_PRECISION (type) <= POINTER_SIZE) || TREE_CODE (type) == POINTER_TYPE) - use_firstprivate_int = true; - if (has_depend) - { - tree v = lookup_decl_in_outer_ctx (var, ctx); - if (is_reference (v)) - use_firstprivate_int = false; - else if (is_gimple_reg (v)) - { - if (DECL_HAS_VALUE_EXPR_P (v)) - { - v = get_base_address (v); - if (DECL_P (v) && TREE_ADDRESSABLE (v)) - use_firstprivate_int = false; - else - switch (TREE_CODE (v)) - { - case INDIRECT_REF: - case MEM_REF: - use_firstprivate_int = false; - break; - default: - break; - } - } - } - else - use_firstprivate_int = false; - } - if (use_firstprivate_int) { x = build_receiver_ref (var, false, ctx); if (TREE_CODE (type) != POINTER_TYPE) @@ -18896,7 +18903,9 @@ simd_clone_adjust_argument_types (struct cgraph_node *node) adjustments.create (args.length ()); unsigned i, j, veclen; struct ipa_parm_adjustment adj; - for (i = 0; i < node->simdclone->nargs; ++i) + struct cgraph_simd_clone *sc = node->simdclone; + + for (i = 0; i < sc->nargs; ++i) { memset (&adj, 0, sizeof (adj)); tree parm = args[i]; @@ -18904,10 +18913,10 @@ simd_clone_adjust_argument_types (struct cgraph_node *node) adj.base_index = i; adj.base = parm; - node->simdclone->args[i].orig_arg = node->definition ? parm : NULL_TREE; - node->simdclone->args[i].orig_type = parm_type; + sc->args[i].orig_arg = node->definition ? parm : NULL_TREE; + sc->args[i].orig_type = parm_type; - switch (node->simdclone->args[i].arg_type) + switch (sc->args[i].arg_type) { default: /* No adjustment necessary for scalar arguments. */ @@ -18916,29 +18925,29 @@ simd_clone_adjust_argument_types (struct cgraph_node *node) case SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_CONSTANT_STEP: case SIMD_CLONE_ARG_TYPE_LINEAR_UVAL_VARIABLE_STEP: if (node->definition) - node->simdclone->args[i].simd_array + sc->args[i].simd_array = create_tmp_simd_array (IDENTIFIER_POINTER (DECL_NAME (parm)), TREE_TYPE (parm_type), - node->simdclone->simdlen); + sc->simdlen); adj.op = IPA_PARM_OP_COPY; break; case SIMD_CLONE_ARG_TYPE_LINEAR_VAL_CONSTANT_STEP: case SIMD_CLONE_ARG_TYPE_LINEAR_VAL_VARIABLE_STEP: case SIMD_CLONE_ARG_TYPE_VECTOR: if (INTEGRAL_TYPE_P (parm_type) || POINTER_TYPE_P (parm_type)) - veclen = node->simdclone->vecsize_int; + veclen = sc->vecsize_int; else - veclen = node->simdclone->vecsize_float; + veclen = sc->vecsize_float; veclen /= GET_MODE_BITSIZE (TYPE_MODE (parm_type)); - if (veclen > node->simdclone->simdlen) - veclen = node->simdclone->simdlen; + if (veclen > sc->simdlen) + veclen = sc->simdlen; adj.arg_prefix = "simd"; if (POINTER_TYPE_P (parm_type)) adj.type = build_vector_type (pointer_sized_int_node, veclen); else adj.type = build_vector_type (parm_type, veclen); - node->simdclone->args[i].vector_type = adj.type; - for (j = veclen; j < node->simdclone->simdlen; j += veclen) + sc->args[i].vector_type = adj.type; + for (j = veclen; j < sc->simdlen; j += veclen) { adjustments.safe_push (adj); if (j == veclen) @@ -18947,23 +18956,21 @@ simd_clone_adjust_argument_types (struct cgraph_node *node) adj.op = IPA_PARM_OP_NEW; adj.arg_prefix = "simd"; adj.base_index = i; - adj.type = node->simdclone->args[i].vector_type; + adj.type = sc->args[i].vector_type; } } if (node->definition) - node->simdclone->args[i].simd_array + sc->args[i].simd_array = create_tmp_simd_array (IDENTIFIER_POINTER (DECL_NAME (parm)), - parm_type, node->simdclone->simdlen); + parm_type, sc->simdlen); } adjustments.safe_push (adj); } - if (node->simdclone->inbranch) + if (sc->inbranch) { - tree base_type - = simd_clone_compute_base_data_type (node->simdclone->origin, - node->simdclone); + tree base_type = simd_clone_compute_base_data_type (sc->origin, sc); memset (&adj, 0, sizeof (adj)); adj.op = IPA_PARM_OP_NEW; @@ -18971,31 +18978,41 @@ simd_clone_adjust_argument_types (struct cgraph_node *node) adj.base_index = i; if (INTEGRAL_TYPE_P (base_type) || POINTER_TYPE_P (base_type)) - veclen = node->simdclone->vecsize_int; + veclen = sc->vecsize_int; else - veclen = node->simdclone->vecsize_float; + veclen = sc->vecsize_float; veclen /= GET_MODE_BITSIZE (TYPE_MODE (base_type)); - if (veclen > node->simdclone->simdlen) - veclen = node->simdclone->simdlen; - if (POINTER_TYPE_P (base_type)) + if (veclen > sc->simdlen) + veclen = sc->simdlen; + if (sc->mask_mode != VOIDmode) + adj.type + = lang_hooks.types.type_for_mode (sc->mask_mode, 1); + else if (POINTER_TYPE_P (base_type)) adj.type = build_vector_type (pointer_sized_int_node, veclen); else adj.type = build_vector_type (base_type, veclen); adjustments.safe_push (adj); - for (j = veclen; j < node->simdclone->simdlen; j += veclen) + for (j = veclen; j < sc->simdlen; j += veclen) adjustments.safe_push (adj); /* We have previously allocated one extra entry for the mask. Use it and fill it. */ - struct cgraph_simd_clone *sc = node->simdclone; sc->nargs++; + if (sc->mask_mode != VOIDmode) + base_type = boolean_type_node; if (node->definition) { sc->args[i].orig_arg = build_decl (UNKNOWN_LOCATION, PARM_DECL, NULL, base_type); - sc->args[i].simd_array - = create_tmp_simd_array ("mask", base_type, sc->simdlen); + if (sc->mask_mode == VOIDmode) + sc->args[i].simd_array + = create_tmp_simd_array ("mask", base_type, sc->simdlen); + else if (veclen < sc->simdlen) + sc->args[i].simd_array + = create_tmp_simd_array ("mask", adj.type, sc->simdlen / veclen); + else + sc->args[i].simd_array = NULL_TREE; } sc->args[i].orig_type = base_type; sc->args[i].arg_type = SIMD_CLONE_ARG_TYPE_MASK; @@ -19063,6 +19080,27 @@ simd_clone_init_simd_arrays (struct cgraph_node *node, node->simdclone->args[i].vector_arg = arg; tree array = node->simdclone->args[i].simd_array; + if (node->simdclone->mask_mode != VOIDmode + && node->simdclone->args[i].arg_type == SIMD_CLONE_ARG_TYPE_MASK) + { + if (array == NULL_TREE) + continue; + unsigned int l + = tree_to_uhwi (TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (array)))); + for (k = 0; k <= l; k++) + { + if (k) + { + arg = DECL_CHAIN (arg); + j++; + } + tree t = build4 (ARRAY_REF, TREE_TYPE (TREE_TYPE (array)), + array, size_int (k), NULL, NULL); + t = build2 (MODIFY_EXPR, TREE_TYPE (t), t, arg); + gimplify_and_add (t, &seq); + } + continue; + } if (TYPE_VECTOR_SUBPARTS (TREE_TYPE (arg)) == node->simdclone->simdlen) { tree ptype = build_pointer_type (TREE_TYPE (TREE_TYPE (array))); @@ -19433,7 +19471,7 @@ simd_clone_adjust (struct cgraph_node *node) e->probability = REG_BR_PROB_BASE; gsi = gsi_last_bb (incr_bb); gimple *g = gimple_build_assign (iter2, PLUS_EXPR, iter1, - build_int_cst (unsigned_type_node, 1)); + build_int_cst (unsigned_type_node, 1)); gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING); /* Mostly annotate the loop for the vectorizer (the rest is done below). */ @@ -19449,21 +19487,68 @@ simd_clone_adjust (struct cgraph_node *node) gimple_stmt_iterator gsi = gsi_last_bb (loop->header); tree mask_array = node->simdclone->args[node->simdclone->nargs - 1].simd_array; - tree mask = make_ssa_name (TREE_TYPE (TREE_TYPE (mask_array))); - tree aref = build4 (ARRAY_REF, - TREE_TYPE (TREE_TYPE (mask_array)), - mask_array, iter1, - NULL, NULL); - g = gimple_build_assign (mask, aref); - gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING); - int bitsize = GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (aref))); - if (!INTEGRAL_TYPE_P (TREE_TYPE (aref))) + tree mask; + if (node->simdclone->mask_mode != VOIDmode) { - aref = build1 (VIEW_CONVERT_EXPR, - build_nonstandard_integer_type (bitsize, 0), mask); - mask = make_ssa_name (TREE_TYPE (aref)); + tree shift_cnt; + if (mask_array == NULL_TREE) + { + tree arg = node->simdclone->args[node->simdclone->nargs + - 1].vector_arg; + mask = get_or_create_ssa_default_def (cfun, arg); + shift_cnt = iter1; + } + else + { + tree maskt = TREE_TYPE (mask_array); + int c = tree_to_uhwi (TYPE_MAX_VALUE (TYPE_DOMAIN (maskt))); + c = node->simdclone->simdlen / (c + 1); + int s = exact_log2 (c); + gcc_assert (s > 0); + c--; + tree idx = make_ssa_name (TREE_TYPE (iter1)); + g = gimple_build_assign (idx, RSHIFT_EXPR, iter1, + build_int_cst (NULL_TREE, s)); + gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING); + mask = make_ssa_name (TREE_TYPE (TREE_TYPE (mask_array))); + tree aref = build4 (ARRAY_REF, + TREE_TYPE (TREE_TYPE (mask_array)), + mask_array, idx, NULL, NULL); + g = gimple_build_assign (mask, aref); + gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING); + shift_cnt = make_ssa_name (TREE_TYPE (iter1)); + g = gimple_build_assign (shift_cnt, BIT_AND_EXPR, iter1, + build_int_cst (TREE_TYPE (iter1), c)); + gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING); + } + g = gimple_build_assign (make_ssa_name (TREE_TYPE (mask)), + RSHIFT_EXPR, mask, shift_cnt); + gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING); + mask = gimple_assign_lhs (g); + g = gimple_build_assign (make_ssa_name (TREE_TYPE (mask)), + BIT_AND_EXPR, mask, + build_int_cst (TREE_TYPE (mask), 1)); + gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING); + mask = gimple_assign_lhs (g); + } + else + { + mask = make_ssa_name (TREE_TYPE (TREE_TYPE (mask_array))); + tree aref = build4 (ARRAY_REF, + TREE_TYPE (TREE_TYPE (mask_array)), + mask_array, iter1, NULL, NULL); g = gimple_build_assign (mask, aref); gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING); + int bitsize = GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (aref))); + if (!INTEGRAL_TYPE_P (TREE_TYPE (aref))) + { + aref = build1 (VIEW_CONVERT_EXPR, + build_nonstandard_integer_type (bitsize, 0), + mask); + mask = make_ssa_name (TREE_TYPE (aref)); + g = gimple_build_assign (mask, aref); + gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING); + } } g = gimple_build_cond (EQ_EXPR, mask, build_zero_cst (TREE_TYPE (mask)), diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index 4a5069f0193..33cc5ece974 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -1,3 +1,7 @@ +2016-04-08 Joseph Myers <joseph@codesourcery.com> + + * gcc.pot: Regenerate. + 2016-03-17 Joseph Myers <joseph@codesourcery.com> * fr.po: Update. diff --git a/gcc/po/gcc.pot b/gcc/po/gcc.pot index 7be3ce9ce98..586be7053c4 100644 --- a/gcc/po/gcc.pot +++ b/gcc/po/gcc.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" -"POT-Creation-Date: 2016-01-31 15:50+0000\n" +"POT-Creation-Date: 2016-04-08 20:55+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -88,54 +88,54 @@ msgstr "" msgid "const/copy propagation disabled" msgstr "" -#: diagnostic.c:211 +#: diagnostic.c:212 #, c-format msgid "%s: all warnings being treated as errors" msgstr "" -#: diagnostic.c:216 +#: diagnostic.c:217 #, c-format msgid "%s: some warnings being treated as errors" msgstr "" -#: diagnostic.c:310 input.c:169 c-family/c-opts.c:1310 cp/error.c:1193 +#: diagnostic.c:292 input.c:169 c-family/c-opts.c:1310 cp/error.c:1193 #: fortran/cpp.c:576 fortran/error.c:998 fortran/error.c:1018 msgid "<built-in>" msgstr "" -#: diagnostic.c:433 +#: diagnostic.c:451 #, c-format msgid "compilation terminated due to -Wfatal-errors.\n" msgstr "" -#: diagnostic.c:444 +#: diagnostic.c:462 #, c-format msgid "compilation terminated due to -fmax-errors=%u.\n" msgstr "" -#: diagnostic.c:465 +#: diagnostic.c:483 #, c-format msgid "" "Please submit a full bug report,\n" "with preprocessed source if appropriate.\n" msgstr "" -#: diagnostic.c:471 +#: diagnostic.c:489 #, c-format msgid "See %s for instructions.\n" msgstr "" -#: diagnostic.c:480 +#: diagnostic.c:498 #, c-format msgid "compilation terminated.\n" msgstr "" -#: diagnostic.c:759 +#: diagnostic.c:787 #, c-format msgid "%s:%d: confused by earlier errors, bailing out\n" msgstr "" -#: diagnostic.c:1283 +#: diagnostic.c:1311 #, c-format msgid "Internal compiler error: Error reporting routines re-entered.\n" msgstr "" @@ -188,13 +188,13 @@ msgstr "" #. TARGET_PRINT_OPERAND must handle them. #. We can't handle floating point constants; #. PRINT_OPERAND must handle them. -#: final.c:3940 config/arc/arc.c:4714 config/i386/i386.c:15932 +#: final.c:3940 config/arc/arc.c:4817 config/i386/i386.c:15968 #: config/pdp11/pdp11.c:1691 #, c-format msgid "floating constant misused" msgstr "" -#: final.c:3998 config/arc/arc.c:4786 config/i386/i386.c:16030 +#: final.c:3998 config/arc/arc.c:4889 config/i386/i386.c:16066 #: config/pdp11/pdp11.c:1732 #, c-format msgid "invalid expression as operand" @@ -536,39 +536,39 @@ msgid "" "bugreport.\n" msgstr "" -#: gcc.c:7701 +#: gcc.c:7757 #, c-format msgid "install: %s%s\n" msgstr "" -#: gcc.c:7704 +#: gcc.c:7760 #, c-format msgid "programs: %s\n" msgstr "" -#: gcc.c:7706 +#: gcc.c:7762 #, c-format msgid "libraries: %s\n" msgstr "" -#: gcc.c:7823 +#: gcc.c:7879 #, c-format msgid "" "\n" "For bug reporting instructions, please see:\n" msgstr "" -#: gcc.c:7839 gcov-tool.c:525 +#: gcc.c:7895 gcov-tool.c:525 #, c-format msgid "%s %s%s\n" msgstr "" -#: gcc.c:7842 gcov-tool.c:527 gcov.c:504 fortran/gfortranspec.c:280 +#: gcc.c:7898 gcov-tool.c:527 gcov.c:504 fortran/gfortranspec.c:280 #: java/jcf-dump.c:1229 msgid "(C)" msgstr "" -#: gcc.c:7843 fortran/gfortranspec.c:281 java/jcf-dump.c:1230 +#: gcc.c:7899 fortran/gfortranspec.c:281 java/jcf-dump.c:1230 #, c-format msgid "" "This is free software; see the source for copying conditions. There is NO\n" @@ -576,7 +576,7 @@ msgid "" "\n" msgstr "" -#: gcc.c:8148 +#: gcc.c:8204 #, c-format msgid "" "\n" @@ -585,14 +585,14 @@ msgid "" "\n" msgstr "" -#: gcc.c:8149 +#: gcc.c:8205 #, c-format msgid "" "Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n" "\n" msgstr "" -#: gcc.c:9441 +#: gcc.c:9497 #, c-format msgid "" "Assembler options\n" @@ -600,7 +600,7 @@ msgid "" "\n" msgstr "" -#: gcc.c:9442 +#: gcc.c:9498 #, c-format msgid "" "Use \"-Wa,OPTION\" to pass \"OPTION\" to the assembler.\n" @@ -1077,7 +1077,7 @@ msgstr "" msgid "GCSE disabled" msgstr "" -#: gimple-ssa-isolate-paths.c:440 c/c-typeck.c:9752 +#: gimple-ssa-isolate-paths.c:440 c/c-typeck.c:9765 #, gcc-internal-format msgid "function returns address of local variable" msgstr "" @@ -1180,11 +1180,11 @@ msgstr "" msgid "cannot optimize loop, the loop counter may overflow" msgstr "" -#: lra-assigns.c:1417 reload1.c:2111 +#: lra-assigns.c:1417 reload1.c:2089 msgid "this is the insn:" msgstr "" -#: lra-constraints.c:3493 reload.c:3830 +#: lra-constraints.c:3564 reload.c:3830 msgid "unable to generate reloads for:" msgstr "" @@ -1197,92 +1197,92 @@ msgstr "" msgid "Uses of this option are diagnosed." msgstr "" -#: opts.c:1056 +#: opts.c:1061 #, c-format msgid "default %d minimum %d maximum %d" msgstr "" -#: opts.c:1123 +#: opts.c:1128 #, c-format msgid "Same as %s. Use the latter option instead." msgstr "" -#: opts.c:1131 +#: opts.c:1136 #, c-format msgid "%s Same as %s." msgstr "" -#: opts.c:1202 +#: opts.c:1207 msgid "[default]" msgstr "" -#: opts.c:1213 +#: opts.c:1218 msgid "[enabled]" msgstr "" -#: opts.c:1213 +#: opts.c:1218 msgid "[disabled]" msgstr "" -#: opts.c:1232 +#: opts.c:1237 #, c-format msgid " No options with the desired characteristics were found\n" msgstr "" -#: opts.c:1241 +#: opts.c:1246 #, c-format msgid "" " None found. Use --help=%s to show *all* the options supported by the %s " "front-end.\n" msgstr "" -#: opts.c:1247 +#: opts.c:1252 #, c-format msgid "" " All options with the desired characteristics have already been displayed\n" msgstr "" -#: opts.c:1332 +#: opts.c:1337 msgid "The following options are target specific" msgstr "" -#: opts.c:1335 +#: opts.c:1340 msgid "The following options control compiler warning messages" msgstr "" -#: opts.c:1338 +#: opts.c:1343 msgid "The following options control optimizations" msgstr "" -#: opts.c:1341 opts.c:1380 +#: opts.c:1346 opts.c:1385 msgid "The following options are language-independent" msgstr "" -#: opts.c:1344 +#: opts.c:1349 msgid "The --param option recognizes the following as parameters" msgstr "" -#: opts.c:1350 +#: opts.c:1355 msgid "The following options are specific to just the language " msgstr "" -#: opts.c:1352 +#: opts.c:1357 msgid "The following options are supported by the language " msgstr "" -#: opts.c:1363 +#: opts.c:1368 msgid "The following options are not documented" msgstr "" -#: opts.c:1365 +#: opts.c:1370 msgid "The following options take separate arguments" msgstr "" -#: opts.c:1367 +#: opts.c:1372 msgid "The following options take joined arguments" msgstr "" -#: opts.c:1378 +#: opts.c:1383 msgid "The following options are language-related" msgstr "" @@ -1302,16 +1302,16 @@ msgid "" msgstr "" #. It's the compiler's fault. -#: reload1.c:6135 +#: reload1.c:6113 msgid "could not find a spill register" msgstr "" #. It's the compiler's fault. -#: reload1.c:8029 +#: reload1.c:8009 msgid "VOIDmode on an output" msgstr "" -#: reload1.c:8790 +#: reload1.c:8770 msgid "failure trying to reload:" msgstr "" @@ -1323,16 +1323,16 @@ msgstr "" msgid "insn does not satisfy its constraints:" msgstr "" -#: targhooks.c:1675 +#: targhooks.c:1679 #, c-format msgid "created and used with differing settings of '%s'" msgstr "" -#: targhooks.c:1690 +#: targhooks.c:1694 msgid "created and used with different settings of -fpic" msgstr "" -#: targhooks.c:1692 +#: targhooks.c:1696 msgid "created and used with different settings of -fpie" msgstr "" @@ -1397,7 +1397,7 @@ msgstr "" msgid "options enabled: " msgstr "" -#: tree-diagnostic.c:295 c/c-decl.c:5174 c/c-typeck.c:6798 cp/error.c:684 +#: tree-diagnostic.c:295 c/c-decl.c:5203 c/c-typeck.c:6812 cp/error.c:684 #: cp/error.c:992 c-family/c-pretty-print.c:408 #, gcc-internal-format msgid "<anonymous>" @@ -2591,59 +2591,71 @@ msgstr "" #: params.def:1155 #, no-c-format msgid "" +"Maximum number of arguments a PHI may have before the FSM threader will not " +"try to thread through its block." +msgstr "" + +#: params.def:1160 +#, no-c-format +msgid "" "Scale factor to apply to the number of blocks in a threading path when " "comparing to the number of (scaled) statements." msgstr "" -#: params.def:1160 +#: params.def:1165 #, no-c-format msgid "" "Maximum number of instructions to copy when duplicating blocks on a finite " "state automaton jump thread path." msgstr "" -#: params.def:1165 +#: params.def:1170 #, no-c-format msgid "" "Maximum number of basic blocks on a finite state automaton jump thread path." msgstr "" -#: params.def:1170 +#: params.def:1175 #, no-c-format msgid "" "Maximum number of new jump thread paths to create for a finite state " "automaton." msgstr "" -#: params.def:1175 +#: params.def:1180 #, no-c-format msgid "Chunk size of omp schedule for loops parallelized by parloops." msgstr "" -#: params.def:1180 +#: params.def:1185 #, no-c-format msgid "" "Schedule type of omp schedule for loops parallelized by parloops (static, " "dynamic, guided, auto, runtime)." msgstr "" -#: params.def:1187 +#: params.def:1192 #, no-c-format msgid "" "Maximum recursion depth allowed when querying a property of an SSA name." msgstr "" -#: params.def:1193 +#: params.def:1198 #, no-c-format msgid "" "Maximum number of insns in a basic block to consider for RTL if-conversion." msgstr "" -#: params.def:1199 +#: params.def:1204 #, no-c-format msgid "Level of hsa debug stores verbosity" msgstr "" +#: params.def:1209 +#, no-c-format +msgid "Maximum number of may-defs visited when devirtualizing speculatively" +msgstr "" + #: c-family/c-format.c:417 msgid "format" msgstr "" @@ -2917,48 +2929,48 @@ msgstr "" msgid "<command-line>" msgstr "" -#: config/aarch64/aarch64.c:4410 config/arm/arm.c:21889 config/arm/arm.c:21902 -#: config/arm/arm.c:21927 config/nios2/nios2.c:2642 +#: config/aarch64/aarch64.c:4451 config/arm/arm.c:21954 config/arm/arm.c:21967 +#: config/arm/arm.c:21992 config/nios2/nios2.c:2642 #, c-format msgid "Unsupported operand for code '%c'" msgstr "" -#: config/aarch64/aarch64.c:4422 config/aarch64/aarch64.c:4438 -#: config/aarch64/aarch64.c:4451 config/aarch64/aarch64.c:4463 -#: config/aarch64/aarch64.c:4474 config/aarch64/aarch64.c:4497 -#: config/aarch64/aarch64.c:4550 config/aarch64/aarch64.c:4753 +#: config/aarch64/aarch64.c:4463 config/aarch64/aarch64.c:4479 +#: config/aarch64/aarch64.c:4492 config/aarch64/aarch64.c:4504 +#: config/aarch64/aarch64.c:4515 config/aarch64/aarch64.c:4538 +#: config/aarch64/aarch64.c:4591 config/aarch64/aarch64.c:4794 #, c-format msgid "invalid operand for '%%%c'" msgstr "" -#: config/aarch64/aarch64.c:4517 config/aarch64/aarch64.c:4530 -#: config/aarch64/aarch64.c:4540 +#: config/aarch64/aarch64.c:4558 config/aarch64/aarch64.c:4571 +#: config/aarch64/aarch64.c:4581 #, c-format msgid "incompatible floating point / vector register operand for '%%%c'" msgstr "" -#: config/aarch64/aarch64.c:4586 config/arm/arm.c:22434 +#: config/aarch64/aarch64.c:4627 config/arm/arm.c:22499 #, c-format msgid "missing operand" msgstr "" -#: config/aarch64/aarch64.c:4648 +#: config/aarch64/aarch64.c:4689 #, c-format msgid "invalid constant" msgstr "" -#: config/aarch64/aarch64.c:4651 +#: config/aarch64/aarch64.c:4692 #, c-format msgid "invalid operand" msgstr "" -#: config/aarch64/aarch64.c:4764 +#: config/aarch64/aarch64.c:4805 #, c-format msgid "invalid operand prefix '%%%c'" msgstr "" -#: config/alpha/alpha.c:5102 config/i386/i386.c:17104 -#: config/rs6000/rs6000.c:20267 config/sparc/sparc.c:8720 +#: config/alpha/alpha.c:5102 config/i386/i386.c:17140 +#: config/rs6000/rs6000.c:20265 config/sparc/sparc.c:8644 #, c-format msgid "'%%&' used without any local dynamic TLS references" msgstr "" @@ -2974,18 +2986,18 @@ msgid "invalid %%r value" msgstr "" #: config/alpha/alpha.c:5200 config/ia64/ia64.c:5436 -#: config/rs6000/rs6000.c:19947 config/xtensa/xtensa.c:2357 +#: config/rs6000/rs6000.c:19945 config/xtensa/xtensa.c:2357 #, c-format msgid "invalid %%R value" msgstr "" -#: config/alpha/alpha.c:5206 config/rs6000/rs6000.c:19867 +#: config/alpha/alpha.c:5206 config/rs6000/rs6000.c:19865 #: config/xtensa/xtensa.c:2324 #, c-format msgid "invalid %%N value" msgstr "" -#: config/alpha/alpha.c:5214 config/rs6000/rs6000.c:19895 +#: config/alpha/alpha.c:5214 config/rs6000/rs6000.c:19893 #, c-format msgid "invalid %%P value" msgstr "" @@ -3016,7 +3028,7 @@ msgid "invalid %%U value" msgstr "" #: config/alpha/alpha.c:5300 config/alpha/alpha.c:5311 -#: config/rs6000/rs6000.c:19955 +#: config/rs6000/rs6000.c:19953 #, c-format msgid "invalid %%s value" msgstr "" @@ -3026,7 +3038,7 @@ msgstr "" msgid "invalid %%C value" msgstr "" -#: config/alpha/alpha.c:5359 config/rs6000/rs6000.c:19731 +#: config/alpha/alpha.c:5359 config/rs6000/rs6000.c:19729 #, c-format msgid "invalid %%E value" msgstr "" @@ -3037,7 +3049,7 @@ msgid "unknown relocation unspec" msgstr "" #: config/alpha/alpha.c:5393 config/cr16/cr16.c:1531 -#: config/rs6000/rs6000.c:20272 config/spu/spu.c:1446 +#: config/rs6000/rs6000.c:20270 config/spu/spu.c:1446 #, c-format msgid "invalid %%xn code" msgstr "" @@ -3047,82 +3059,82 @@ msgstr "" msgid "invalid operand address" msgstr "" -#: config/arc/arc.c:2863 +#: config/arc/arc.c:2966 #, c-format msgid "invalid operand to %%Z code" msgstr "" -#: config/arc/arc.c:2871 +#: config/arc/arc.c:2974 #, c-format msgid "invalid operand to %%z code" msgstr "" -#: config/arc/arc.c:2879 +#: config/arc/arc.c:2982 #, c-format msgid "invalid operand to %%M code" msgstr "" -#: config/arc/arc.c:3028 config/m32r/m32r.c:2105 +#: config/arc/arc.c:3131 config/m32r/m32r.c:2105 #, c-format msgid "invalid operand to %%R code" msgstr "" -#: config/arc/arc.c:3067 config/m32r/m32r.c:2128 +#: config/arc/arc.c:3170 config/m32r/m32r.c:2128 #, c-format msgid "invalid operand to %%H/%%L code" msgstr "" -#: config/arc/arc.c:3115 config/m32r/m32r.c:2199 +#: config/arc/arc.c:3218 config/m32r/m32r.c:2199 #, c-format msgid "invalid operand to %%U code" msgstr "" -#: config/arc/arc.c:3126 +#: config/arc/arc.c:3229 #, c-format msgid "invalid operand to %%V code" msgstr "" -#: config/arc/arc.c:3183 +#: config/arc/arc.c:3286 #, c-format msgid "invalid operand to %%O code" msgstr "" #. Unknown flag. #. Undocumented flag. -#: config/arc/arc.c:3209 config/epiphany/epiphany.c:1286 -#: config/m32r/m32r.c:2226 config/nds32/nds32.c:2291 config/sparc/sparc.c:8903 +#: config/arc/arc.c:3312 config/epiphany/epiphany.c:1286 +#: config/m32r/m32r.c:2226 config/nds32/nds32.c:2291 config/sparc/sparc.c:8827 #, c-format msgid "invalid operand output code" msgstr "" -#: config/arc/arc.c:4780 +#: config/arc/arc.c:4883 #, c-format msgid "invalid UNSPEC as operand: %d" msgstr "" -#: config/arm/arm.c:18957 config/arm/arm.c:18982 config/arm/arm.c:18992 -#: config/arm/arm.c:19001 config/arm/arm.c:19009 +#: config/arm/arm.c:19021 config/arm/arm.c:19046 config/arm/arm.c:19056 +#: config/arm/arm.c:19065 config/arm/arm.c:19073 #, c-format msgid "invalid shift operand" msgstr "" -#: config/arm/arm.c:21765 config/arm/arm.c:21783 +#: config/arm/arm.c:21830 config/arm/arm.c:21848 #, c-format msgid "predicated Thumb instruction" msgstr "" -#: config/arm/arm.c:21771 +#: config/arm/arm.c:21836 #, c-format msgid "predicated instruction in conditional sequence" msgstr "" -#: config/arm/arm.c:22004 config/arm/arm.c:22026 config/arm/arm.c:22036 -#: config/arm/arm.c:22046 config/arm/arm.c:22056 config/arm/arm.c:22095 -#: config/arm/arm.c:22113 config/arm/arm.c:22138 config/arm/arm.c:22153 -#: config/arm/arm.c:22180 config/arm/arm.c:22187 config/arm/arm.c:22205 -#: config/arm/arm.c:22212 config/arm/arm.c:22220 config/arm/arm.c:22241 -#: config/arm/arm.c:22248 config/arm/arm.c:22381 config/arm/arm.c:22388 -#: config/arm/arm.c:22415 config/arm/arm.c:22422 config/bfin/bfin.c:1436 +#: config/arm/arm.c:22069 config/arm/arm.c:22091 config/arm/arm.c:22101 +#: config/arm/arm.c:22111 config/arm/arm.c:22121 config/arm/arm.c:22160 +#: config/arm/arm.c:22178 config/arm/arm.c:22203 config/arm/arm.c:22218 +#: config/arm/arm.c:22245 config/arm/arm.c:22252 config/arm/arm.c:22270 +#: config/arm/arm.c:22277 config/arm/arm.c:22285 config/arm/arm.c:22306 +#: config/arm/arm.c:22313 config/arm/arm.c:22446 config/arm/arm.c:22453 +#: config/arm/arm.c:22480 config/arm/arm.c:22487 config/bfin/bfin.c:1436 #: config/bfin/bfin.c:1443 config/bfin/bfin.c:1450 config/bfin/bfin.c:1457 #: config/bfin/bfin.c:1466 config/bfin/bfin.c:1473 config/bfin/bfin.c:1480 #: config/bfin/bfin.c:1487 @@ -3130,89 +3142,89 @@ msgstr "" msgid "invalid operand for code '%c'" msgstr "" -#: config/arm/arm.c:22108 +#: config/arm/arm.c:22173 #, c-format msgid "instruction never executed" msgstr "" #. Former Maverick support, removed after GCC-4.7. -#: config/arm/arm.c:22129 +#: config/arm/arm.c:22194 #, c-format msgid "obsolete Maverick format code '%c'" msgstr "" -#: config/arm/arm.c:23548 +#: config/arm/arm.c:23613 msgid "function parameters cannot have __fp16 type" msgstr "" -#: config/arm/arm.c:23558 +#: config/arm/arm.c:23623 msgid "functions cannot return __fp16 type" msgstr "" -#: config/avr/avr.c:2117 +#: config/avr/avr.c:2127 #, c-format msgid "address operand requires constraint for X, Y, or Z register" msgstr "" -#: config/avr/avr.c:2275 +#: config/avr/avr.c:2285 msgid "operands to %T/%t must be reg + const_int:" msgstr "" -#: config/avr/avr.c:2325 config/avr/avr.c:2392 +#: config/avr/avr.c:2335 config/avr/avr.c:2402 msgid "bad address, not an I/O address:" msgstr "" -#: config/avr/avr.c:2334 +#: config/avr/avr.c:2344 msgid "bad address, not a constant:" msgstr "" -#: config/avr/avr.c:2352 config/avr/avr.c:2359 +#: config/avr/avr.c:2362 config/avr/avr.c:2369 msgid "bad address, not (reg+disp):" msgstr "" -#: config/avr/avr.c:2366 +#: config/avr/avr.c:2376 msgid "bad address, not post_inc or pre_dec:" msgstr "" -#: config/avr/avr.c:2378 +#: config/avr/avr.c:2388 msgid "internal compiler error. Bad address:" msgstr "" -#: config/avr/avr.c:2411 +#: config/avr/avr.c:2421 #, c-format msgid "Unsupported code '%c' for fixed-point:" msgstr "" -#: config/avr/avr.c:2419 +#: config/avr/avr.c:2429 msgid "internal compiler error. Unknown mode:" msgstr "" -#: config/avr/avr.c:3412 config/avr/avr.c:4342 config/avr/avr.c:4791 +#: config/avr/avr.c:3422 config/avr/avr.c:4352 config/avr/avr.c:4801 msgid "invalid insn:" msgstr "" -#: config/avr/avr.c:3466 config/avr/avr.c:3571 config/avr/avr.c:3629 -#: config/avr/avr.c:3675 config/avr/avr.c:3694 config/avr/avr.c:3886 -#: config/avr/avr.c:4194 config/avr/avr.c:4478 config/avr/avr.c:4684 -#: config/avr/avr.c:4848 config/avr/avr.c:4942 config/avr/avr.c:5138 +#: config/avr/avr.c:3476 config/avr/avr.c:3581 config/avr/avr.c:3639 +#: config/avr/avr.c:3685 config/avr/avr.c:3704 config/avr/avr.c:3896 +#: config/avr/avr.c:4204 config/avr/avr.c:4488 config/avr/avr.c:4694 +#: config/avr/avr.c:4858 config/avr/avr.c:4952 config/avr/avr.c:5148 msgid "incorrect insn:" msgstr "" -#: config/avr/avr.c:3710 config/avr/avr.c:3985 config/avr/avr.c:4265 -#: config/avr/avr.c:4550 config/avr/avr.c:4730 config/avr/avr.c:4998 -#: config/avr/avr.c:5196 +#: config/avr/avr.c:3720 config/avr/avr.c:3995 config/avr/avr.c:4275 +#: config/avr/avr.c:4560 config/avr/avr.c:4740 config/avr/avr.c:5008 +#: config/avr/avr.c:5206 msgid "unknown move insn:" msgstr "" -#: config/avr/avr.c:5627 +#: config/avr/avr.c:5637 msgid "bad shift insn:" msgstr "" -#: config/avr/avr.c:5735 config/avr/avr.c:6216 config/avr/avr.c:6631 +#: config/avr/avr.c:5745 config/avr/avr.c:6226 config/avr/avr.c:6641 msgid "internal compiler error. Incorrect shift:" msgstr "" -#: config/avr/avr.c:7968 +#: config/avr/avr.c:7978 msgid "unsupported fixed-point conversion" msgstr "" @@ -3242,9 +3254,9 @@ msgid "invalid const_double operand" msgstr "" #: config/cris/cris.c:612 config/ft32/ft32.c:104 config/moxie/moxie.c:103 -#: diagnostic.c:1325 final.c:3407 final.c:3409 fold-const.c:276 gcc.c:5211 -#: gcc.c:5225 loop-iv.c:3043 loop-iv.c:3052 rtl-error.c:101 toplev.c:335 -#: tree-ssa-loop-niter.c:2328 tree-vrp.c:7476 cp/typeck.c:6081 java/expr.c:382 +#: final.c:3407 final.c:3409 fold-const.c:277 gcc.c:5211 gcc.c:5225 +#: loop-iv.c:3043 loop-iv.c:3052 rtl-error.c:101 toplev.c:335 +#: tree-ssa-loop-niter.c:2328 tree-vrp.c:7480 cp/typeck.c:6065 java/expr.c:382 #: lto/lto-object.c:184 lto/lto-object.c:281 lto/lto-object.c:338 #: lto/lto-object.c:362 #, gcc-internal-format, gfc-internal-format @@ -3465,63 +3477,63 @@ msgstr "" msgid "bad output_condmove_single operand" msgstr "" -#: config/i386/i386.c:16024 +#: config/i386/i386.c:16060 #, c-format msgid "invalid UNSPEC as operand" msgstr "" -#: config/i386/i386.c:16728 +#: config/i386/i386.c:16764 #, c-format msgid "invalid operand size for operand code 'O'" msgstr "" -#: config/i386/i386.c:16763 +#: config/i386/i386.c:16799 #, c-format msgid "invalid operand size for operand code 'z'" msgstr "" -#: config/i386/i386.c:16833 +#: config/i386/i386.c:16869 #, c-format msgid "invalid operand type used with operand code 'Z'" msgstr "" -#: config/i386/i386.c:16838 +#: config/i386/i386.c:16874 #, c-format msgid "invalid operand size for operand code 'Z'" msgstr "" -#: config/i386/i386.c:16914 +#: config/i386/i386.c:16950 #, c-format msgid "operand is not a condition code, invalid operand code 'Y'" msgstr "" -#: config/i386/i386.c:16987 +#: config/i386/i386.c:17023 #, c-format msgid "operand is not a condition code, invalid operand code 'D'" msgstr "" -#: config/i386/i386.c:17004 +#: config/i386/i386.c:17040 #, c-format msgid "operand is not a condition code, invalid operand code '%c'" msgstr "" -#: config/i386/i386.c:17017 +#: config/i386/i386.c:17053 #, c-format msgid "" "operand is not an offsettable memory reference, invalid operand code 'H'" msgstr "" -#: config/i386/i386.c:17182 +#: config/i386/i386.c:17218 #, c-format msgid "invalid operand code '%c'" msgstr "" -#: config/i386/i386.c:17240 +#: config/i386/i386.c:17276 #, c-format msgid "invalid constraints for operand" msgstr "" -#: config/i386/i386.c:27663 +#: config/i386/i386.c:27726 msgid "unknown insn mode" msgstr "" @@ -3566,7 +3578,7 @@ msgstr "" msgid "invalid %%P operand" msgstr "" -#: config/iq2000/iq2000.c:3143 config/rs6000/rs6000.c:19885 +#: config/iq2000/iq2000.c:3143 config/rs6000/rs6000.c:19883 #, c-format msgid "invalid %%p value" msgstr "" @@ -3630,7 +3642,7 @@ msgid "post-increment address is not a register" msgstr "" #: config/m32r/m32r.c:2328 config/m32r/m32r.c:2343 -#: config/rs6000/rs6000.c:31239 +#: config/rs6000/rs6000.c:31258 msgid "bad address" msgstr "" @@ -3730,12 +3742,12 @@ msgstr "" msgid "MMIX Internal: This is not a constant:" msgstr "" -#: config/msp430/msp430.c:3594 +#: config/msp430/msp430.c:3609 #, c-format msgid "invalid operand prefix" msgstr "" -#: config/msp430/msp430.c:3628 +#: config/msp430/msp430.c:3643 #, c-format msgid "invalid zero extract" msgstr "" @@ -3799,233 +3811,233 @@ msgstr "" msgid "-mtoc-fusion requires medium/large code model" msgstr "" -#: config/rs6000/rs6000.c:9490 +#: config/rs6000/rs6000.c:9485 msgid "bad move" msgstr "" -#: config/rs6000/rs6000.c:19528 +#: config/rs6000/rs6000.c:19526 msgid "Bad 128-bit move" msgstr "" -#: config/rs6000/rs6000.c:19719 +#: config/rs6000/rs6000.c:19717 #, c-format msgid "invalid %%e value" msgstr "" -#: config/rs6000/rs6000.c:19740 +#: config/rs6000/rs6000.c:19738 #, c-format msgid "invalid %%f value" msgstr "" -#: config/rs6000/rs6000.c:19749 +#: config/rs6000/rs6000.c:19747 #, c-format msgid "invalid %%F value" msgstr "" -#: config/rs6000/rs6000.c:19758 +#: config/rs6000/rs6000.c:19756 #, c-format msgid "invalid %%G value" msgstr "" -#: config/rs6000/rs6000.c:19793 +#: config/rs6000/rs6000.c:19791 #, c-format msgid "invalid %%j code" msgstr "" -#: config/rs6000/rs6000.c:19803 +#: config/rs6000/rs6000.c:19801 #, c-format msgid "invalid %%J code" msgstr "" -#: config/rs6000/rs6000.c:19813 +#: config/rs6000/rs6000.c:19811 #, c-format msgid "invalid %%k value" msgstr "" -#: config/rs6000/rs6000.c:19828 config/xtensa/xtensa.c:2343 +#: config/rs6000/rs6000.c:19826 config/xtensa/xtensa.c:2343 #, c-format msgid "invalid %%K value" msgstr "" -#: config/rs6000/rs6000.c:19875 +#: config/rs6000/rs6000.c:19873 #, c-format msgid "invalid %%O value" msgstr "" -#: config/rs6000/rs6000.c:19922 +#: config/rs6000/rs6000.c:19920 #, c-format msgid "invalid %%q value" msgstr "" -#: config/rs6000/rs6000.c:19975 +#: config/rs6000/rs6000.c:19973 #, c-format msgid "invalid %%T value" msgstr "" -#: config/rs6000/rs6000.c:19987 +#: config/rs6000/rs6000.c:19985 #, c-format msgid "invalid %%u value" msgstr "" -#: config/rs6000/rs6000.c:20001 config/xtensa/xtensa.c:2313 +#: config/rs6000/rs6000.c:19999 config/xtensa/xtensa.c:2313 #, c-format msgid "invalid %%v value" msgstr "" -#: config/rs6000/rs6000.c:20068 config/xtensa/xtensa.c:2364 +#: config/rs6000/rs6000.c:20066 config/xtensa/xtensa.c:2364 #, c-format msgid "invalid %%x value" msgstr "" -#: config/rs6000/rs6000.c:20216 +#: config/rs6000/rs6000.c:20214 #, c-format msgid "invalid %%y value, try using the 'Z' constraint" msgstr "" -#: config/rs6000/rs6000.c:20893 +#: config/rs6000/rs6000.c:20892 msgid "__float128 and __ibm128 cannot be used in the same expression" msgstr "" -#: config/rs6000/rs6000.c:20899 +#: config/rs6000/rs6000.c:20898 msgid "__ibm128 and long double cannot be used in the same expression" msgstr "" -#: config/rs6000/rs6000.c:20905 +#: config/rs6000/rs6000.c:20904 msgid "__float128 and long double cannot be used in the same expression" msgstr "" -#: config/rs6000/rs6000.c:34288 +#: config/rs6000/rs6000.c:34309 msgid "AltiVec argument passed to unprototyped function" msgstr "" -#: config/rs6000/rs6000.c:35986 +#: config/rs6000/rs6000.c:36007 msgid "Could not generate addis value for fusion" msgstr "" -#: config/rs6000/rs6000.c:36058 +#: config/rs6000/rs6000.c:36079 msgid "Unable to generate load/store offset for fusion" msgstr "" -#: config/rs6000/rs6000.c:36162 +#: config/rs6000/rs6000.c:36183 msgid "Bad GPR fusion" msgstr "" -#: config/rs6000/rs6000.c:36380 +#: config/rs6000/rs6000.c:36401 msgid "emit_fusion_p9_load, bad reg #1" msgstr "" -#: config/rs6000/rs6000.c:36417 +#: config/rs6000/rs6000.c:36438 msgid "emit_fusion_p9_load, bad reg #2" msgstr "" -#: config/rs6000/rs6000.c:36420 +#: config/rs6000/rs6000.c:36441 msgid "emit_fusion_p9_load not MEM" msgstr "" -#: config/rs6000/rs6000.c:36458 +#: config/rs6000/rs6000.c:36479 msgid "emit_fusion_p9_store, bad reg #1" msgstr "" -#: config/rs6000/rs6000.c:36495 +#: config/rs6000/rs6000.c:36516 msgid "emit_fusion_p9_store, bad reg #2" msgstr "" -#: config/rs6000/rs6000.c:36498 +#: config/rs6000/rs6000.c:36519 msgid "emit_fusion_p9_store not MEM" msgstr "" -#: config/s390/s390.c:6997 +#: config/s390/s390.c:7147 #, c-format msgid "symbolic memory references are only supported on z10 or later" msgstr "" -#: config/s390/s390.c:7008 +#: config/s390/s390.c:7158 #, c-format msgid "cannot decompose address" msgstr "" -#: config/s390/s390.c:7076 +#: config/s390/s390.c:7227 #, c-format msgid "invalid comparison operator for 'E' output modifier" msgstr "" -#: config/s390/s390.c:7099 +#: config/s390/s390.c:7250 #, c-format msgid "invalid reference for 'J' output modifier" msgstr "" -#: config/s390/s390.c:7117 +#: config/s390/s390.c:7268 #, c-format msgid "invalid address for 'O' output modifier" msgstr "" -#: config/s390/s390.c:7139 +#: config/s390/s390.c:7290 #, c-format msgid "invalid address for 'R' output modifier" msgstr "" -#: config/s390/s390.c:7157 +#: config/s390/s390.c:7308 #, c-format msgid "memory reference expected for 'S' output modifier" msgstr "" -#: config/s390/s390.c:7167 +#: config/s390/s390.c:7318 #, c-format msgid "invalid address for 'S' output modifier" msgstr "" -#: config/s390/s390.c:7188 +#: config/s390/s390.c:7339 #, c-format msgid "register or memory expression expected for 'N' output modifier" msgstr "" -#: config/s390/s390.c:7199 +#: config/s390/s390.c:7350 #, c-format msgid "register or memory expression expected for 'M' output modifier" msgstr "" -#: config/s390/s390.c:7284 config/s390/s390.c:7305 +#: config/s390/s390.c:7435 config/s390/s390.c:7456 #, c-format msgid "invalid constant for output modifier '%c'" msgstr "" -#: config/s390/s390.c:7302 +#: config/s390/s390.c:7453 #, c-format msgid "invalid constant - try using an output modifier" msgstr "" -#: config/s390/s390.c:7343 +#: config/s390/s390.c:7494 #, c-format msgid "invalid constant vector for output modifier '%c'" msgstr "" -#: config/s390/s390.c:7350 +#: config/s390/s390.c:7501 #, c-format msgid "invalid expression - try using an output modifier" msgstr "" -#: config/s390/s390.c:7353 +#: config/s390/s390.c:7504 #, c-format msgid "invalid expression for output modifier '%c'" msgstr "" -#: config/s390/s390.c:11001 +#: config/s390/s390.c:11350 msgid "Vector argument passed to unprototyped function" msgstr "" -#: config/s390/s390.c:14505 +#: config/s390/s390.c:15008 msgid "types differ in signess" msgstr "" -#: config/s390/s390.c:14515 +#: config/s390/s390.c:15018 msgid "binary operator does not support two vector bool operands" msgstr "" -#: config/s390/s390.c:14518 +#: config/s390/s390.c:15021 msgid "binary operator does not support vector bool operand" msgstr "" -#: config/s390/s390.c:14526 +#: config/s390/s390.c:15029 msgid "" "binary operator does not support mixing vector bool with floating point " "vector operands" @@ -4041,55 +4053,55 @@ msgstr "" msgid "invalid operand to %%S" msgstr "" -#: config/sh/sh.c:10038 +#: config/sh/sh.c:10040 msgid "created and used with different architectures / ABIs" msgstr "" -#: config/sh/sh.c:10040 +#: config/sh/sh.c:10042 msgid "created and used with different ABIs" msgstr "" -#: config/sh/sh.c:10042 +#: config/sh/sh.c:10044 msgid "created and used with different endianness" msgstr "" -#: config/sparc/sparc.c:8729 config/sparc/sparc.c:8735 +#: config/sparc/sparc.c:8653 config/sparc/sparc.c:8659 #, c-format msgid "invalid %%Y operand" msgstr "" -#: config/sparc/sparc.c:8805 +#: config/sparc/sparc.c:8729 #, c-format msgid "invalid %%A operand" msgstr "" -#: config/sparc/sparc.c:8815 +#: config/sparc/sparc.c:8739 #, c-format msgid "invalid %%B operand" msgstr "" -#: config/sparc/sparc.c:8844 config/tilegx/tilegx.c:5095 +#: config/sparc/sparc.c:8768 config/tilegx/tilegx.c:5095 #: config/tilepro/tilepro.c:4510 #, c-format msgid "invalid %%C operand" msgstr "" -#: config/sparc/sparc.c:8861 config/tilegx/tilegx.c:5128 +#: config/sparc/sparc.c:8785 config/tilegx/tilegx.c:5128 #, c-format msgid "invalid %%D operand" msgstr "" -#: config/sparc/sparc.c:8877 +#: config/sparc/sparc.c:8801 #, c-format msgid "invalid %%f operand" msgstr "" -#: config/sparc/sparc.c:8889 +#: config/sparc/sparc.c:8813 #, c-format msgid "invalid %%s operand" msgstr "" -#: config/sparc/sparc.c:8934 +#: config/sparc/sparc.c:8858 #, c-format msgid "floating-point constant not a valid immediate operand" msgstr "" @@ -4226,23 +4238,23 @@ msgstr "" msgid "illegal operand detected" msgstr "" -#: config/visium/visium.c:3140 +#: config/visium/visium.c:3195 msgid "illegal operand " msgstr "" -#: config/visium/visium.c:3191 +#: config/visium/visium.c:3246 msgid "illegal operand address (1)" msgstr "" -#: config/visium/visium.c:3198 +#: config/visium/visium.c:3253 msgid "illegal operand address (2)" msgstr "" -#: config/visium/visium.c:3213 +#: config/visium/visium.c:3268 msgid "illegal operand address (3)" msgstr "" -#: config/visium/visium.c:3221 +#: config/visium/visium.c:3276 msgid "illegal operand address (4)" msgstr "" @@ -4286,177 +4298,177 @@ msgstr "" msgid "({anonymous})" msgstr "" -#: c/c-parser.c:2146 c/c-parser.c:2160 c/c-parser.c:4743 c/c-parser.c:5149 -#: c/c-parser.c:5271 c/c-parser.c:5630 c/c-parser.c:5796 c/c-parser.c:5827 -#: c/c-parser.c:6025 c/c-parser.c:8763 c/c-parser.c:8798 c/c-parser.c:8829 -#: c/c-parser.c:8876 c/c-parser.c:9057 c/c-parser.c:9837 c/c-parser.c:9907 -#: c/c-parser.c:9950 c/c-parser.c:14445 c/c-parser.c:14469 c/c-parser.c:14487 -#: c/c-parser.c:14700 c/c-parser.c:14743 c/c-parser.c:2951 c/c-parser.c:9050 -#: cp/parser.c:26217 cp/parser.c:26790 +#: c/c-parser.c:2144 c/c-parser.c:2158 c/c-parser.c:4746 c/c-parser.c:5152 +#: c/c-parser.c:5274 c/c-parser.c:5633 c/c-parser.c:5799 c/c-parser.c:5830 +#: c/c-parser.c:6045 c/c-parser.c:8785 c/c-parser.c:8820 c/c-parser.c:8851 +#: c/c-parser.c:8898 c/c-parser.c:9079 c/c-parser.c:9859 c/c-parser.c:9929 +#: c/c-parser.c:9972 c/c-parser.c:14467 c/c-parser.c:14491 c/c-parser.c:14509 +#: c/c-parser.c:14722 c/c-parser.c:14765 c/c-parser.c:2949 c/c-parser.c:9072 +#: cp/parser.c:26281 cp/parser.c:26854 #, gcc-internal-format msgid "expected %<;%>" msgstr "" #. Look for the two `(' tokens. -#: c/c-parser.c:2187 c/c-parser.c:2889 c/c-parser.c:3186 c/c-parser.c:3253 -#: c/c-parser.c:3902 c/c-parser.c:4091 c/c-parser.c:4096 c/c-parser.c:5314 -#: c/c-parser.c:5508 c/c-parser.c:5712 c/c-parser.c:5961 c/c-parser.c:6084 -#: c/c-parser.c:7143 c/c-parser.c:7568 c/c-parser.c:7609 c/c-parser.c:7742 -#: c/c-parser.c:7934 c/c-parser.c:7951 c/c-parser.c:7977 c/c-parser.c:9348 -#: c/c-parser.c:9420 c/c-parser.c:10453 c/c-parser.c:10654 c/c-parser.c:10793 -#: c/c-parser.c:10848 c/c-parser.c:10945 c/c-parser.c:11125 c/c-parser.c:11169 -#: c/c-parser.c:11213 c/c-parser.c:11257 c/c-parser.c:11301 c/c-parser.c:11346 -#: c/c-parser.c:11381 c/c-parser.c:11449 c/c-parser.c:11698 c/c-parser.c:11844 -#: c/c-parser.c:11970 c/c-parser.c:12121 c/c-parser.c:12224 c/c-parser.c:12267 -#: c/c-parser.c:12314 c/c-parser.c:12358 c/c-parser.c:12424 c/c-parser.c:12460 -#: c/c-parser.c:12587 c/c-parser.c:12669 c/c-parser.c:12777 c/c-parser.c:12812 -#: c/c-parser.c:12860 c/c-parser.c:12918 c/c-parser.c:14647 c/c-parser.c:16570 -#: c/c-parser.c:16780 c/c-parser.c:17218 c/c-parser.c:17276 c/c-parser.c:17701 -#: c/c-parser.c:10924 cp/parser.c:24034 cp/parser.c:26793 +#: c/c-parser.c:2185 c/c-parser.c:2887 c/c-parser.c:3184 c/c-parser.c:3251 +#: c/c-parser.c:3900 c/c-parser.c:4089 c/c-parser.c:4094 c/c-parser.c:5317 +#: c/c-parser.c:5511 c/c-parser.c:5715 c/c-parser.c:5981 c/c-parser.c:6104 +#: c/c-parser.c:7163 c/c-parser.c:7588 c/c-parser.c:7629 c/c-parser.c:7762 +#: c/c-parser.c:7956 c/c-parser.c:7973 c/c-parser.c:7999 c/c-parser.c:9370 +#: c/c-parser.c:9442 c/c-parser.c:10475 c/c-parser.c:10676 c/c-parser.c:10815 +#: c/c-parser.c:10870 c/c-parser.c:10967 c/c-parser.c:11147 c/c-parser.c:11191 +#: c/c-parser.c:11235 c/c-parser.c:11279 c/c-parser.c:11323 c/c-parser.c:11368 +#: c/c-parser.c:11403 c/c-parser.c:11471 c/c-parser.c:11720 c/c-parser.c:11866 +#: c/c-parser.c:11992 c/c-parser.c:12143 c/c-parser.c:12246 c/c-parser.c:12289 +#: c/c-parser.c:12336 c/c-parser.c:12380 c/c-parser.c:12446 c/c-parser.c:12482 +#: c/c-parser.c:12609 c/c-parser.c:12691 c/c-parser.c:12799 c/c-parser.c:12834 +#: c/c-parser.c:12882 c/c-parser.c:12940 c/c-parser.c:14669 c/c-parser.c:16592 +#: c/c-parser.c:16802 c/c-parser.c:17240 c/c-parser.c:17298 c/c-parser.c:17723 +#: c/c-parser.c:10946 cp/parser.c:24066 cp/parser.c:26857 #, gcc-internal-format msgid "expected %<(%>" msgstr "" -#: c/c-parser.c:2193 c/c-parser.c:7170 c/c-parser.c:7576 c/c-parser.c:7617 -#: c/c-parser.c:7753 cp/parser.c:26215 cp/parser.c:26808 +#: c/c-parser.c:2191 c/c-parser.c:7190 c/c-parser.c:7596 c/c-parser.c:7637 +#: c/c-parser.c:7773 cp/parser.c:26279 cp/parser.c:26872 #, gcc-internal-format msgid "expected %<,%>" msgstr "" -#: c/c-parser.c:2214 c/c-parser.c:2581 c/c-parser.c:2904 c/c-parser.c:3227 -#: c/c-parser.c:3264 c/c-parser.c:3479 c/c-parser.c:3665 c/c-parser.c:3727 -#: c/c-parser.c:3779 c/c-parser.c:3909 c/c-parser.c:4191 c/c-parser.c:4207 -#: c/c-parser.c:4216 c/c-parser.c:5317 c/c-parser.c:5523 c/c-parser.c:5859 -#: c/c-parser.c:6019 c/c-parser.c:6092 c/c-parser.c:6671 c/c-parser.c:6901 -#: c/c-parser.c:6984 c/c-parser.c:7083 c/c-parser.c:7286 c/c-parser.c:7488 -#: c/c-parser.c:7507 c/c-parser.c:7531 c/c-parser.c:7586 c/c-parser.c:7693 -#: c/c-parser.c:7766 c/c-parser.c:7943 c/c-parser.c:7968 c/c-parser.c:7992 -#: c/c-parser.c:8215 c/c-parser.c:8606 c/c-parser.c:9142 c/c-parser.c:9163 -#: c/c-parser.c:9371 c/c-parser.c:9426 c/c-parser.c:9809 c/c-parser.c:10490 -#: c/c-parser.c:10657 c/c-parser.c:10796 c/c-parser.c:10882 c/c-parser.c:11026 -#: c/c-parser.c:11132 c/c-parser.c:11176 c/c-parser.c:11220 c/c-parser.c:11264 -#: c/c-parser.c:11308 c/c-parser.c:11352 c/c-parser.c:11409 c/c-parser.c:11416 -#: c/c-parser.c:11456 c/c-parser.c:11611 c/c-parser.c:11669 c/c-parser.c:11718 -#: c/c-parser.c:11790 c/c-parser.c:11942 c/c-parser.c:12067 c/c-parser.c:12128 -#: c/c-parser.c:12231 c/c-parser.c:12274 c/c-parser.c:12339 c/c-parser.c:12381 -#: c/c-parser.c:12411 c/c-parser.c:12439 c/c-parser.c:12475 c/c-parser.c:12617 -#: c/c-parser.c:12635 c/c-parser.c:12641 c/c-parser.c:12725 c/c-parser.c:12736 -#: c/c-parser.c:12756 c/c-parser.c:12766 c/c-parser.c:12783 c/c-parser.c:12819 -#: c/c-parser.c:12831 c/c-parser.c:12879 c/c-parser.c:12887 c/c-parser.c:12922 -#: c/c-parser.c:14529 c/c-parser.c:14708 c/c-parser.c:14754 c/c-parser.c:16759 -#: c/c-parser.c:16836 c/c-parser.c:17254 c/c-parser.c:17338 c/c-parser.c:17710 -#: cp/parser.c:24066 cp/parser.c:26838 +#: c/c-parser.c:2212 c/c-parser.c:2579 c/c-parser.c:2902 c/c-parser.c:3225 +#: c/c-parser.c:3262 c/c-parser.c:3477 c/c-parser.c:3663 c/c-parser.c:3725 +#: c/c-parser.c:3777 c/c-parser.c:3907 c/c-parser.c:4189 c/c-parser.c:4205 +#: c/c-parser.c:4214 c/c-parser.c:5320 c/c-parser.c:5526 c/c-parser.c:5862 +#: c/c-parser.c:6039 c/c-parser.c:6112 c/c-parser.c:6691 c/c-parser.c:6921 +#: c/c-parser.c:7004 c/c-parser.c:7103 c/c-parser.c:7306 c/c-parser.c:7508 +#: c/c-parser.c:7527 c/c-parser.c:7551 c/c-parser.c:7606 c/c-parser.c:7713 +#: c/c-parser.c:7788 c/c-parser.c:7965 c/c-parser.c:7990 c/c-parser.c:8014 +#: c/c-parser.c:8237 c/c-parser.c:8628 c/c-parser.c:9164 c/c-parser.c:9185 +#: c/c-parser.c:9393 c/c-parser.c:9448 c/c-parser.c:9831 c/c-parser.c:10512 +#: c/c-parser.c:10679 c/c-parser.c:10818 c/c-parser.c:10904 c/c-parser.c:11048 +#: c/c-parser.c:11154 c/c-parser.c:11198 c/c-parser.c:11242 c/c-parser.c:11286 +#: c/c-parser.c:11330 c/c-parser.c:11374 c/c-parser.c:11431 c/c-parser.c:11438 +#: c/c-parser.c:11478 c/c-parser.c:11633 c/c-parser.c:11691 c/c-parser.c:11740 +#: c/c-parser.c:11812 c/c-parser.c:11964 c/c-parser.c:12089 c/c-parser.c:12150 +#: c/c-parser.c:12253 c/c-parser.c:12296 c/c-parser.c:12361 c/c-parser.c:12403 +#: c/c-parser.c:12433 c/c-parser.c:12461 c/c-parser.c:12497 c/c-parser.c:12639 +#: c/c-parser.c:12657 c/c-parser.c:12663 c/c-parser.c:12747 c/c-parser.c:12758 +#: c/c-parser.c:12778 c/c-parser.c:12788 c/c-parser.c:12805 c/c-parser.c:12841 +#: c/c-parser.c:12853 c/c-parser.c:12901 c/c-parser.c:12909 c/c-parser.c:12944 +#: c/c-parser.c:14551 c/c-parser.c:14730 c/c-parser.c:14776 c/c-parser.c:16781 +#: c/c-parser.c:16858 c/c-parser.c:17276 c/c-parser.c:17360 c/c-parser.c:17732 +#: cp/parser.c:24098 cp/parser.c:26902 #, gcc-internal-format msgid "expected %<)%>" msgstr "" -#: c/c-parser.c:3584 c/c-parser.c:4511 c/c-parser.c:4547 c/c-parser.c:6076 -#: c/c-parser.c:7684 c/c-parser.c:8040 c/c-parser.c:8189 c/c-parser.c:10592 -#: c/c-parser.c:17613 c/c-parser.c:17615 c/c-parser.c:17954 cp/parser.c:7022 -#: cp/parser.c:26802 +#: c/c-parser.c:3582 c/c-parser.c:4513 c/c-parser.c:4549 c/c-parser.c:6096 +#: c/c-parser.c:7704 c/c-parser.c:8062 c/c-parser.c:8211 c/c-parser.c:10614 +#: c/c-parser.c:17635 c/c-parser.c:17637 c/c-parser.c:17976 cp/parser.c:7024 +#: cp/parser.c:26866 #, gcc-internal-format msgid "expected %<]%>" msgstr "" -#: c/c-parser.c:3760 +#: c/c-parser.c:3758 msgid "expected %<;%>, %<,%> or %<)%>" msgstr "" -#: c/c-parser.c:4369 c/c-parser.c:14470 cp/parser.c:26796 cp/parser.c:28719 +#: c/c-parser.c:4371 c/c-parser.c:14492 cp/parser.c:26860 cp/parser.c:28783 #, gcc-internal-format msgid "expected %<}%>" msgstr "" -#: c/c-parser.c:4680 c/c-parser.c:9391 c/c-parser.c:15180 c/c-parser.c:2769 -#: c/c-parser.c:2972 c/c-parser.c:8945 cp/parser.c:17108 cp/parser.c:26799 +#: c/c-parser.c:4683 c/c-parser.c:9413 c/c-parser.c:15202 c/c-parser.c:2767 +#: c/c-parser.c:2970 c/c-parser.c:8967 cp/parser.c:17138 cp/parser.c:26863 #, gcc-internal-format msgid "expected %<{%>" msgstr "" -#: c/c-parser.c:4912 c/c-parser.c:4921 c/c-parser.c:5983 c/c-parser.c:6325 -#: c/c-parser.c:7218 c/c-parser.c:9156 c/c-parser.c:9539 c/c-parser.c:9600 -#: c/c-parser.c:10579 c/c-parser.c:11395 c/c-parser.c:11529 c/c-parser.c:11901 -#: c/c-parser.c:11993 c/c-parser.c:12621 c/c-parser.c:16627 c/c-parser.c:16683 -#: c/c-parser.c:11018 cp/parser.c:26832 cp/parser.c:27930 cp/parser.c:30618 +#: c/c-parser.c:4915 c/c-parser.c:4924 c/c-parser.c:6003 c/c-parser.c:6345 +#: c/c-parser.c:7238 c/c-parser.c:9178 c/c-parser.c:9561 c/c-parser.c:9622 +#: c/c-parser.c:10601 c/c-parser.c:11417 c/c-parser.c:11551 c/c-parser.c:11923 +#: c/c-parser.c:12015 c/c-parser.c:12643 c/c-parser.c:16649 c/c-parser.c:16705 +#: c/c-parser.c:11040 cp/parser.c:26896 cp/parser.c:27994 cp/parser.c:30668 #, gcc-internal-format msgid "expected %<:%>" msgstr "" -#: c/c-parser.c:5170 cp/semantics.c:613 +#: c/c-parser.c:5173 cp/semantics.c:613 msgid "Cilk array notation cannot be used as a computed goto expression" msgstr "" -#: c/c-parser.c:5229 +#: c/c-parser.c:5232 msgid "Cilk array notation cannot be used for a throw expression" msgstr "" -#: c/c-parser.c:5519 cp/semantics.c:1133 +#: c/c-parser.c:5522 cp/semantics.c:1136 msgid "Cilk array notation cannot be used as a condition for switch statement" msgstr "" -#: c/c-parser.c:5565 cp/semantics.c:788 +#: c/c-parser.c:5568 cp/semantics.c:791 msgid "Cilk array notation cannot be used as a condition for while statement" msgstr "" -#: c/c-parser.c:5616 cp/parser.c:26726 +#: c/c-parser.c:5619 cp/parser.c:26790 #, gcc-internal-format msgid "expected %<while%>" msgstr "" -#: c/c-parser.c:5623 cp/semantics.c:847 +#: c/c-parser.c:5626 cp/semantics.c:850 msgid "" "Cilk array notation cannot be used as a condition for a do-while statement" msgstr "" -#: c/c-parser.c:5823 cp/semantics.c:966 +#: c/c-parser.c:5826 cp/semantics.c:969 msgid "Cilk array notation cannot be used in a condition for a for-loop" msgstr "" -#: c/c-parser.c:7437 +#: c/c-parser.c:7457 msgid "expected %<.%>" msgstr "" -#: c/c-parser.c:8616 c/c-parser.c:8648 c/c-parser.c:8888 cp/parser.c:28504 -#: cp/parser.c:28578 +#: c/c-parser.c:8638 c/c-parser.c:8670 c/c-parser.c:8910 cp/parser.c:28568 +#: cp/parser.c:28642 #, gcc-internal-format msgid "expected %<@end%>" msgstr "" -#: c/c-parser.c:9305 cp/parser.c:26817 +#: c/c-parser.c:9327 cp/parser.c:26881 #, gcc-internal-format msgid "expected %<>%>" msgstr "" -#: c/c-parser.c:12071 c/c-parser.c:12835 cp/parser.c:26841 +#: c/c-parser.c:12093 c/c-parser.c:12857 cp/parser.c:26905 #, gcc-internal-format msgid "expected %<,%> or %<)%>" msgstr "" -#: c/c-parser.c:14182 c/c-parser.c:14226 c/c-parser.c:14454 c/c-parser.c:14689 -#: c/c-parser.c:16821 c/c-parser.c:17440 c/c-parser.c:4570 cp/parser.c:26820 +#: c/c-parser.c:14204 c/c-parser.c:14248 c/c-parser.c:14476 c/c-parser.c:14711 +#: c/c-parser.c:16843 c/c-parser.c:17462 c/c-parser.c:4572 cp/parser.c:26884 #, gcc-internal-format msgid "expected %<=%>" msgstr "" -#: c/c-parser.c:15223 c/c-parser.c:15213 cp/parser.c:33985 +#: c/c-parser.c:15245 c/c-parser.c:15235 cp/parser.c:34035 #, gcc-internal-format msgid "expected %<#pragma omp section%> or %<}%>" msgstr "" -#: c/c-parser.c:17601 c/c-parser.c:10538 cp/parser.c:26805 cp/parser.c:29859 +#: c/c-parser.c:17623 c/c-parser.c:10560 cp/parser.c:26869 cp/parser.c:29923 #, gcc-internal-format msgid "expected %<[%>" msgstr "" -#: c/c-typeck.c:7385 +#: c/c-typeck.c:7399 msgid "(anonymous)" msgstr "" -#: cp/call.c:9442 +#: cp/call.c:9453 msgid "candidate 1:" msgstr "" -#: cp/call.c:9443 +#: cp/call.c:9454 msgid "candidate 2:" msgstr "" @@ -4674,98 +4686,98 @@ msgstr "" msgid "%r%s:%d:%R in constexpr expansion of %qs" msgstr "" -#: cp/pt.c:1941 cp/semantics.c:5165 +#: cp/pt.c:1947 cp/semantics.c:5214 msgid "candidates are:" msgstr "" -#: cp/pt.c:20936 +#: cp/pt.c:21039 msgid "candidate is:" msgid_plural "candidates are:" msgstr[0] "" msgstr[1] "" -#: cp/rtti.c:544 +#: cp/rtti.c:545 msgid "target is not pointer or reference to class" msgstr "" -#: cp/rtti.c:549 +#: cp/rtti.c:550 msgid "target is not pointer or reference to complete type" msgstr "" -#: cp/rtti.c:555 +#: cp/rtti.c:556 msgid "target is not pointer or reference" msgstr "" -#: cp/rtti.c:571 +#: cp/rtti.c:572 msgid "source is not a pointer" msgstr "" -#: cp/rtti.c:576 +#: cp/rtti.c:577 msgid "source is not a pointer to class" msgstr "" -#: cp/rtti.c:581 +#: cp/rtti.c:582 msgid "source is a pointer to incomplete type" msgstr "" -#: cp/rtti.c:596 +#: cp/rtti.c:597 msgid "source is not of class type" msgstr "" -#: cp/rtti.c:601 +#: cp/rtti.c:602 msgid "source is of incomplete class type" msgstr "" -#: cp/rtti.c:610 +#: cp/rtti.c:611 msgid "conversion casts away constness" msgstr "" -#: cp/rtti.c:766 +#: cp/rtti.c:767 msgid "source type is not polymorphic" msgstr "" -#: cp/typeck.c:5836 c/c-typeck.c:4079 +#: cp/typeck.c:5820 c/c-typeck.c:4093 #, gcc-internal-format msgid "wrong type argument to unary minus" msgstr "" -#: cp/typeck.c:5837 c/c-typeck.c:4066 +#: cp/typeck.c:5821 c/c-typeck.c:4080 #, gcc-internal-format msgid "wrong type argument to unary plus" msgstr "" -#: cp/typeck.c:5864 c/c-typeck.c:4105 +#: cp/typeck.c:5848 c/c-typeck.c:4119 #, gcc-internal-format msgid "wrong type argument to bit-complement" msgstr "" -#: cp/typeck.c:5871 c/c-typeck.c:4113 +#: cp/typeck.c:5855 c/c-typeck.c:4127 #, gcc-internal-format msgid "wrong type argument to abs" msgstr "" -#: cp/typeck.c:5883 c/c-typeck.c:4125 +#: cp/typeck.c:5867 c/c-typeck.c:4139 #, gcc-internal-format msgid "wrong type argument to conjugation" msgstr "" -#: cp/typeck.c:5901 +#: cp/typeck.c:5885 msgid "in argument to unary !" msgstr "" -#: cp/typeck.c:5947 +#: cp/typeck.c:5931 msgid "no pre-increment operator for type" msgstr "" -#: cp/typeck.c:5949 +#: cp/typeck.c:5933 msgid "no post-increment operator for type" msgstr "" -#: cp/typeck.c:5951 +#: cp/typeck.c:5935 msgid "no pre-decrement operator for type" msgstr "" -#: cp/typeck.c:5953 +#: cp/typeck.c:5937 msgid "no post-decrement operator for type" msgstr "" @@ -4926,13 +4938,13 @@ msgstr "" msgid "%s tag" msgstr "" -#: fortran/io.c:2963 +#: fortran/io.c:2966 msgid "internal unit in WRITE" msgstr "" #. For INQUIRE, all tags except FILE, ID and UNIT are variable definition #. contexts. Thus, use an extended RESOLVE_TAG macro for that. -#: fortran/io.c:4182 +#: fortran/io.c:4185 #, c-format msgid "%s tag with INQUIRE" msgstr "" @@ -5038,11 +5050,11 @@ msgstr "" msgid "implied END DO" msgstr "" -#: fortran/parse.c:1852 fortran/resolve.c:10520 +#: fortran/parse.c:1852 fortran/resolve.c:10531 msgid "assignment" msgstr "" -#: fortran/parse.c:1855 fortran/resolve.c:10571 fortran/resolve.c:10574 +#: fortran/parse.c:1855 fortran/resolve.c:10582 fortran/resolve.c:10585 msgid "pointer assignment" msgstr "" @@ -5228,19 +5240,19 @@ msgstr "" msgid "ALLOCATE object" msgstr "" -#: fortran/resolve.c:7337 fortran/resolve.c:8781 +#: fortran/resolve.c:7345 fortran/resolve.c:8792 msgid "STAT variable" msgstr "" -#: fortran/resolve.c:7381 fortran/resolve.c:8793 +#: fortran/resolve.c:7389 fortran/resolve.c:8804 msgid "ERRMSG variable" msgstr "" -#: fortran/resolve.c:8623 +#: fortran/resolve.c:8634 msgid "item in READ" msgstr "" -#: fortran/resolve.c:8805 +#: fortran/resolve.c:8816 msgid "ACQUIRED_LOCK variable" msgstr "" @@ -5249,30 +5261,30 @@ msgstr "" msgid "Different CHARACTER lengths (%ld/%ld) in array constructor" msgstr "" -#: fortran/trans-array.c:5473 +#: fortran/trans-array.c:5484 msgid "Integer overflow when calculating the amount of memory to allocate" msgstr "" -#: fortran/trans-decl.c:5443 +#: fortran/trans-decl.c:5490 #, c-format msgid "" "Actual string length does not match the declared one for dummy argument " "'%s' (%ld/%ld)" msgstr "" -#: fortran/trans-decl.c:5451 +#: fortran/trans-decl.c:5498 #, c-format msgid "" "Actual string length is shorter than the declared one for dummy argument " "'%s' (%ld/%ld)" msgstr "" -#: fortran/trans-expr.c:8109 +#: fortran/trans-expr.c:8140 #, c-format msgid "Target of rank remapping is too small (%ld < %ld)" msgstr "" -#: fortran/trans-expr.c:9314 +#: fortran/trans-expr.c:9345 msgid "Assignment of scalar to unallocated array" msgstr "" @@ -5302,16 +5314,16 @@ msgstr "" msgid "Assigned label is not a target label" msgstr "" -#: fortran/trans-stmt.c:1095 +#: fortran/trans-stmt.c:1101 #, c-format msgid "Invalid image number %d in SYNC IMAGES" msgstr "" -#: fortran/trans-stmt.c:1890 fortran/trans-stmt.c:2175 +#: fortran/trans-stmt.c:1898 fortran/trans-stmt.c:2183 msgid "Loop variable has been modified" msgstr "" -#: fortran/trans-stmt.c:2030 +#: fortran/trans-stmt.c:2038 msgid "DO step value is zero" msgstr "" @@ -5650,24 +5662,24 @@ msgstr "" msgid "-Xbind-now and -Xbind-lazy are incompatible" msgstr "" -#: config/s390/tpf.h:110 -msgid "static is not supported on TPF-OS" +#: config/sparc/linux64.h:149 config/sparc/linux64.h:156 +#: config/sparc/netbsd-elf.h:108 config/sparc/netbsd-elf.h:117 +#: config/sparc/sol2.h:219 config/sparc/sol2.h:225 +msgid "may not use both -m32 and -m64" msgstr "" -#: config/sparc/sol2.h:219 config/sparc/sol2.h:225 config/sparc/linux64.h:149 -#: config/sparc/linux64.h:156 config/sparc/netbsd-elf.h:108 -#: config/sparc/netbsd-elf.h:117 -msgid "may not use both -m32 and -m64" +#: config/s390/tpf.h:110 +msgid "static is not supported on TPF-OS" msgstr "" #: config/i386/mingw-w64.h:87 config/i386/mingw32.h:117 -#: config/i386/cygwin-w64.h:64 config/i386/cygwin.h:130 +#: config/i386/cygwin.h:130 config/i386/cygwin-w64.h:64 msgid "shared and mdll are not compatible" msgstr "" -#: config/i386/freebsd.h:82 config/i386/freebsd64.h:35 #: config/alpha/freebsd.h:33 config/rs6000/sysv4.h:731 config/dragonfly.h:76 -#: config/ia64/freebsd.h:26 config/sparc/freebsd.h:45 +#: config/ia64/freebsd.h:26 config/i386/freebsd.h:82 +#: config/i386/freebsd64.h:35 config/sparc/freebsd.h:45 msgid "consider using '-pg' instead of '-p' with gprof(1)" msgstr "" @@ -5680,6 +5692,14 @@ msgid "" "objc-cpp-output is deprecated; please use objective-c-cpp-output instead" msgstr "" +#: config/tilegx/tilegx.h:546 config/tilegx/tilegx.h:551 config/arm/arm.h:102 +msgid "-mbig-endian and -mlittle-endian may not be used together" +msgstr "" + +#: config/moxie/moxiebox.h:43 +msgid "this target is little-endian" +msgstr "" + #: config/pa/pa-hpux10.h:102 config/pa/pa-hpux10.h:105 #: config/pa/pa-hpux10.h:113 config/pa/pa-hpux10.h:116 #: config/pa/pa-hpux11.h:134 config/pa/pa-hpux11.h:137 @@ -5696,14 +5716,6 @@ msgstr "" msgid " profiling support are only provided in archive format" msgstr "" -#: config/rs6000/darwin.h:95 -msgid " conflicting code gen style switches are used" -msgstr "" - -#: fortran/lang-specs.h:54 fortran/lang-specs.h:68 -msgid "gfortran does not support -E without -cpp" -msgstr "" - #: config/cris/cris.h:184 msgid "do not specify both -march=... and -mcpu=..." msgstr "" @@ -5712,21 +5724,17 @@ msgstr "" msgid "may not use both -EB and -EL" msgstr "" -#: config/mips/r3900.h:37 -msgid "-mhard-float not supported" -msgstr "" - -#: config/mips/r3900.h:39 -msgid "-msingle-float and -msoft-float cannot both be specified" -msgstr "" - #: objcp/lang-specs.h:58 msgid "" "objc++-cpp-output is deprecated; please use objective-c++-cpp-output instead" msgstr "" -#: config/rs6000/freebsd64.h:171 -msgid "consider using `-pg' instead of `-p' with gprof(1)" +#: config/rs6000/darwin.h:95 +msgid " conflicting code gen style switches are used" +msgstr "" + +#: fortran/lang-specs.h:54 fortran/lang-specs.h:68 +msgid "gfortran does not support -E without -cpp" msgstr "" #: config/sh/sh.h:375 config/sh/sh.h:378 @@ -5753,14 +5761,18 @@ msgstr "" msgid "-mfloat-abi=soft and -mfloat-abi=hard may not be used together" msgstr "" -#: config/arm/arm.h:102 config/tilegx/tilegx.h:546 config/tilegx/tilegx.h:551 -msgid "-mbig-endian and -mlittle-endian may not be used together" -msgstr "" - #: config/vax/netbsd-elf.h:51 msgid "the -shared option is not currently supported for VAX ELF" msgstr "" +#: config/mips/r3900.h:37 +msgid "-mhard-float not supported" +msgstr "" + +#: config/mips/r3900.h:39 +msgid "-msingle-float and -msoft-float cannot both be specified" +msgstr "" + #: config/vax/vax.h:46 config/vax/vax.h:47 msgid "profiling not supported with -mg" msgstr "" @@ -5773,6 +5785,10 @@ msgstr "" msgid "the m210 does not have little endian support" msgstr "" +#: config/rs6000/freebsd64.h:171 +msgid "consider using `-pg' instead of `-p' with gprof(1)" +msgstr "" + #: config/lynx.h:69 msgid "cannot use mthreads and mlegacy-threads together" msgstr "" @@ -5991,10 +6007,10 @@ msgstr "" msgid "Allow dollar signs in entity names." msgstr "" -#: fortran/lang.opt:437 config/alpha/alpha.opt:31 common.opt:728 -#: common.opt:916 common.opt:920 common.opt:924 common.opt:928 common.opt:1417 -#: common.opt:1566 common.opt:1570 common.opt:1796 common.opt:1942 -#: common.opt:2586 +#: fortran/lang.opt:437 config/alpha/alpha.opt:31 common.opt:732 +#: common.opt:920 common.opt:924 common.opt:928 common.opt:932 common.opt:1421 +#: common.opt:1570 common.opt:1574 common.opt:1800 common.opt:1946 +#: common.opt:2598 msgid "Does nothing. Preserved for backward compatibility." msgstr "" @@ -6130,123 +6146,123 @@ msgstr "" msgid "Set default accessibility of module entities to PRIVATE." msgstr "" -#: fortran/lang.opt:591 +#: fortran/lang.opt:595 msgid "Try to lay out derived types as compactly as possible." msgstr "" -#: fortran/lang.opt:599 +#: fortran/lang.opt:603 msgid "Protect parentheses in expressions." msgstr "" -#: fortran/lang.opt:603 +#: fortran/lang.opt:607 msgid "Enable range checking during compilation." msgstr "" -#: fortran/lang.opt:607 +#: fortran/lang.opt:611 msgid "Interpret any REAL(4) as a REAL(8)." msgstr "" -#: fortran/lang.opt:611 +#: fortran/lang.opt:615 msgid "Interpret any REAL(4) as a REAL(10)." msgstr "" -#: fortran/lang.opt:615 +#: fortran/lang.opt:619 msgid "Interpret any REAL(4) as a REAL(16)." msgstr "" -#: fortran/lang.opt:619 +#: fortran/lang.opt:623 msgid "Interpret any REAL(8) as a REAL(4)." msgstr "" -#: fortran/lang.opt:623 +#: fortran/lang.opt:627 msgid "Interpret any REAL(8) as a REAL(10)." msgstr "" -#: fortran/lang.opt:627 +#: fortran/lang.opt:631 msgid "Interpret any REAL(8) as a REAL(16)." msgstr "" -#: fortran/lang.opt:631 +#: fortran/lang.opt:635 msgid "Reallocate the LHS in assignments." msgstr "" -#: fortran/lang.opt:635 +#: fortran/lang.opt:639 msgid "Use a 4-byte record marker for unformatted files." msgstr "" -#: fortran/lang.opt:639 +#: fortran/lang.opt:643 msgid "Use an 8-byte record marker for unformatted files." msgstr "" -#: fortran/lang.opt:643 +#: fortran/lang.opt:647 msgid "Allocate local variables on the stack to allow indirect recursion." msgstr "" -#: fortran/lang.opt:647 +#: fortran/lang.opt:651 msgid "Copy array sections into a contiguous block on procedure entry." msgstr "" -#: fortran/lang.opt:651 +#: fortran/lang.opt:655 msgid "" "-fcoarray=<none|single|lib>\tSpecify which coarray parallelization should be " "used." msgstr "" -#: fortran/lang.opt:654 +#: fortran/lang.opt:658 #, c-format msgid "Unrecognized option: %qs" msgstr "" -#: fortran/lang.opt:667 +#: fortran/lang.opt:671 msgid "-fcheck=[...]\tSpecify which runtime checks are to be performed." msgstr "" -#: fortran/lang.opt:671 +#: fortran/lang.opt:675 msgid "Append a second underscore if the name already contains an underscore." msgstr "" -#: fortran/lang.opt:679 +#: fortran/lang.opt:683 msgid "Apply negative sign to zero values." msgstr "" -#: fortran/lang.opt:683 +#: fortran/lang.opt:687 msgid "Append underscores to externally visible names." msgstr "" -#: fortran/lang.opt:687 c-family/c.opt:1139 c-family/c.opt:1163 -#: c-family/c.opt:1389 config/pa/pa.opt:42 config/pa/pa.opt:66 -#: config/sh/sh.opt:213 common.opt:1070 common.opt:1297 common.opt:1649 -#: common.opt:1992 common.opt:2028 common.opt:2117 common.opt:2121 -#: common.opt:2217 common.opt:2299 common.opt:2307 common.opt:2315 -#: common.opt:2323 common.opt:2424 common.opt:2546 +#: fortran/lang.opt:691 c-family/c.opt:1155 c-family/c.opt:1179 +#: c-family/c.opt:1409 config/pa/pa.opt:42 config/pa/pa.opt:66 +#: config/sh/sh.opt:213 common.opt:1074 common.opt:1301 common.opt:1653 +#: common.opt:1999 common.opt:2035 common.opt:2124 common.opt:2128 +#: common.opt:2224 common.opt:2306 common.opt:2314 common.opt:2322 +#: common.opt:2330 common.opt:2431 common.opt:2558 msgid "Does nothing. Preserved for backward compatibility." msgstr "" -#: fortran/lang.opt:727 +#: fortran/lang.opt:731 msgid "Statically link the GNU Fortran helper library (libgfortran)." msgstr "" -#: fortran/lang.opt:731 +#: fortran/lang.opt:735 msgid "Conform to the ISO Fortran 2003 standard." msgstr "" -#: fortran/lang.opt:735 +#: fortran/lang.opt:739 msgid "Conform to the ISO Fortran 2008 standard." msgstr "" -#: fortran/lang.opt:739 +#: fortran/lang.opt:743 msgid "Conform to the ISO Fortran 2008 standard including TS 29113." msgstr "" -#: fortran/lang.opt:743 +#: fortran/lang.opt:747 msgid "Conform to the ISO Fortran 95 standard." msgstr "" -#: fortran/lang.opt:747 +#: fortran/lang.opt:751 msgid "Conform to nothing in particular." msgstr "" -#: fortran/lang.opt:751 +#: fortran/lang.opt:755 msgid "Accept extensions to support legacy code." msgstr "" @@ -6263,15 +6279,15 @@ msgstr "" #: c-family/c.opt:70 c-family/c.opt:73 c-family/c.opt:76 c-family/c.opt:79 #: c-family/c.opt:175 c-family/c.opt:178 c-family/c.opt:216 c-family/c.opt:220 -#: c-family/c.opt:232 c-family/c.opt:1585 c-family/c.opt:1593 -#: config/darwin.opt:53 common.opt:336 common.opt:339 common.opt:2801 +#: c-family/c.opt:232 c-family/c.opt:1601 c-family/c.opt:1609 +#: config/darwin.opt:53 common.opt:336 common.opt:339 common.opt:2813 #, c-format msgid "missing filename after %qs" msgstr "" #: c-family/c.opt:85 c-family/c.opt:88 c-family/c.opt:91 c-family/c.opt:94 -#: c-family/c.opt:200 c-family/c.opt:208 c-family/c.opt:1581 -#: c-family/c.opt:1601 c-family/c.opt:1605 c-family/c.opt:1609 +#: c-family/c.opt:200 c-family/c.opt:208 c-family/c.opt:1597 +#: c-family/c.opt:1617 c-family/c.opt:1621 c-family/c.opt:1625 #, c-format msgid "missing path after %qs" msgstr "" @@ -6585,1178 +6601,1182 @@ msgid "Warn whenever type qualifiers are ignored." msgstr "" #: c-family/c.opt:487 +msgid "Warn whenever attributes are ignored." +msgstr "" + +#: c-family/c.opt:491 msgid "" "Warn when there is a conversion between pointers that have incompatible " "types." msgstr "" -#: c-family/c.opt:491 +#: c-family/c.opt:495 msgid "Warn about variables which are initialized to themselves." msgstr "" -#: c-family/c.opt:495 +#: c-family/c.opt:499 msgid "Warn about implicit declarations." msgstr "" -#: c-family/c.opt:499 +#: c-family/c.opt:503 msgid "Warn about implicit conversions from \"float\" to \"double\"." msgstr "" -#: c-family/c.opt:503 +#: c-family/c.opt:507 msgid "Warn about implicit function declarations." msgstr "" -#: c-family/c.opt:507 +#: c-family/c.opt:511 msgid "Warn when a declaration does not specify a type." msgstr "" -#: c-family/c.opt:514 +#: c-family/c.opt:518 msgid "" "Warn about C++11 inheriting constructors when the base has a variadic " "constructor." msgstr "" -#: c-family/c.opt:518 +#: c-family/c.opt:522 msgid "" "Warn about incompatible integer to pointer and pointer to integer " "conversions." msgstr "" -#: c-family/c.opt:522 +#: c-family/c.opt:526 msgid "" "Warn when there is a cast to a pointer from an integer of a different size." msgstr "" -#: c-family/c.opt:526 +#: c-family/c.opt:530 msgid "Warn about invalid uses of the \"offsetof\" macro." msgstr "" -#: c-family/c.opt:530 +#: c-family/c.opt:534 msgid "Warn about PCH files that are found but not used." msgstr "" -#: c-family/c.opt:534 +#: c-family/c.opt:538 msgid "Warn when a jump misses a variable initialization." msgstr "" -#: c-family/c.opt:538 +#: c-family/c.opt:542 msgid "" "Warn when a string or character literal is followed by a ud-suffix which " "does not begin with an underscore." msgstr "" -#: c-family/c.opt:542 +#: c-family/c.opt:546 msgid "" "Warn when a logical operator is suspiciously always evaluating to true or " "false." msgstr "" -#: c-family/c.opt:546 +#: c-family/c.opt:550 msgid "" "Warn when logical not is used on the left hand side operand of a comparison." msgstr "" -#: c-family/c.opt:550 +#: c-family/c.opt:554 msgid "Do not warn about using \"long long\" when -pedantic." msgstr "" -#: c-family/c.opt:554 +#: c-family/c.opt:558 msgid "Warn about suspicious declarations of \"main\"." msgstr "" -#: c-family/c.opt:562 +#: c-family/c.opt:566 msgid "" "Warn about suspicious calls to memset where the third argument is constant " "literal zero and the second is not." msgstr "" -#: c-family/c.opt:566 +#: c-family/c.opt:570 msgid "" "Warn when the indentation of the code does not reflect the block structure." msgstr "" -#: c-family/c.opt:570 +#: c-family/c.opt:574 msgid "Warn about possibly missing braces around initializers." msgstr "" -#: c-family/c.opt:574 +#: c-family/c.opt:578 msgid "Warn about global functions without previous declarations." msgstr "" -#: c-family/c.opt:578 +#: c-family/c.opt:582 msgid "Warn about missing fields in struct initializers." msgstr "" -#: c-family/c.opt:582 +#: c-family/c.opt:586 msgid "Warn on direct multiple inheritance." msgstr "" -#: c-family/c.opt:586 +#: c-family/c.opt:590 msgid "Warn on namespace definition." msgstr "" -#: c-family/c.opt:590 +#: c-family/c.opt:594 msgid "Warn about missing sized deallocation functions." msgstr "" -#: c-family/c.opt:594 +#: c-family/c.opt:598 msgid "" "Warn about suspicious length parameters to certain string functions if the " "argument uses sizeof." msgstr "" -#: c-family/c.opt:598 +#: c-family/c.opt:602 msgid "Warn when sizeof is applied on a parameter declared as an array." msgstr "" -#: c-family/c.opt:602 +#: c-family/c.opt:606 msgid "Warn about functions which might be candidates for format attributes." msgstr "" -#: c-family/c.opt:606 +#: c-family/c.opt:610 msgid "" "Suggest that the override keyword be used when the declaration of a virtual" msgstr "" -#: c-family/c.opt:611 +#: c-family/c.opt:615 msgid "Warn about enumerated switches, with no default, missing a case." msgstr "" -#: c-family/c.opt:615 +#: c-family/c.opt:619 msgid "Warn about enumerated switches missing a \"default:\" statement." msgstr "" -#: c-family/c.opt:619 +#: c-family/c.opt:623 msgid "Warn about all enumerated switches missing a specific case." msgstr "" -#: c-family/c.opt:623 +#: c-family/c.opt:627 msgid "Warn about switches with boolean controlling expression." msgstr "" -#: c-family/c.opt:627 +#: c-family/c.opt:631 msgid "Warn on primary template declaration." msgstr "" -#: c-family/c.opt:635 +#: c-family/c.opt:639 msgid "Warn about user-specified include directories that do not exist." msgstr "" -#: c-family/c.opt:639 +#: c-family/c.opt:643 msgid "" "Warn about function parameters declared without a type specifier in K&R-" "style functions." msgstr "" -#: c-family/c.opt:643 +#: c-family/c.opt:647 msgid "Warn about global functions without prototypes." msgstr "" -#: c-family/c.opt:646 c-family/c.opt:1008 c-family/c.opt:1015 -#: c-family/c.opt:1189 c-family/c.opt:1208 c-family/c.opt:1231 -#: c-family/c.opt:1237 c-family/c.opt:1244 c-family/c.opt:1268 -#: c-family/c.opt:1279 c-family/c.opt:1282 c-family/c.opt:1285 -#: c-family/c.opt:1288 c-family/c.opt:1291 c-family/c.opt:1328 -#: c-family/c.opt:1459 c-family/c.opt:1483 c-family/c.opt:1501 -#: c-family/c.opt:1532 c-family/c.opt:1536 c-family/c.opt:1552 -#: config/ia64/ia64.opt:167 config/ia64/ia64.opt:170 c-family/c-opts.c:415 +#: c-family/c.opt:650 c-family/c.opt:1024 c-family/c.opt:1031 +#: c-family/c.opt:1205 c-family/c.opt:1224 c-family/c.opt:1247 +#: c-family/c.opt:1253 c-family/c.opt:1260 c-family/c.opt:1284 +#: c-family/c.opt:1295 c-family/c.opt:1298 c-family/c.opt:1301 +#: c-family/c.opt:1304 c-family/c.opt:1307 c-family/c.opt:1344 +#: c-family/c.opt:1475 c-family/c.opt:1499 c-family/c.opt:1517 +#: c-family/c.opt:1548 c-family/c.opt:1552 c-family/c.opt:1568 +#: config/ia64/ia64.opt:167 config/ia64/ia64.opt:170 c-family/c-opts.c:419 #, gcc-internal-format msgid "switch %qs is no longer supported" msgstr "" -#: c-family/c.opt:650 +#: c-family/c.opt:654 msgid "Warn about use of multi-character character constants." msgstr "" -#: c-family/c.opt:654 +#: c-family/c.opt:658 msgid "" "Warn about narrowing conversions within { } that are ill-formed in C++11." msgstr "" -#: c-family/c.opt:658 +#: c-family/c.opt:662 msgid "Warn about \"extern\" declarations not at file scope." msgstr "" -#: c-family/c.opt:662 +#: c-family/c.opt:666 msgid "" "Warn when a noexcept expression evaluates to false even though the " "expression can't actually throw." msgstr "" -#: c-family/c.opt:666 +#: c-family/c.opt:670 msgid "" "Warn when non-templatized friend functions are declared within a template." msgstr "" -#: c-family/c.opt:670 +#: c-family/c.opt:674 msgid "Warn about non-virtual destructors." msgstr "" -#: c-family/c.opt:674 +#: c-family/c.opt:678 msgid "" "Warn about NULL being passed to argument slots marked as requiring non-NULL." msgstr "" -#: c-family/c.opt:686 +#: c-family/c.opt:694 msgid "" "-Wnormalized=<none|id|nfc|nfkc>\tWarn about non-normalised Unicode strings." msgstr "" -#: c-family/c.opt:693 +#: c-family/c.opt:701 msgid "argument %qs to %<-Wnormalized%> not recognized" msgstr "" -#: c-family/c.opt:709 +#: c-family/c.opt:717 msgid "Warn if a C-style cast is used in a program." msgstr "" -#: c-family/c.opt:713 +#: c-family/c.opt:721 msgid "Warn for obsolescent usage in a declaration." msgstr "" -#: c-family/c.opt:717 +#: c-family/c.opt:725 msgid "Warn if an old-style parameter definition is used." msgstr "" -#: c-family/c.opt:721 +#: c-family/c.opt:729 msgid "Warn if a simd directive is overridden by the vectorizer cost model." msgstr "" -#: c-family/c.opt:725 +#: c-family/c.opt:733 msgid "" "Warn if a string is longer than the maximum portable length specified by the " "standard." msgstr "" -#: c-family/c.opt:729 +#: c-family/c.opt:737 msgid "Warn about overloaded virtual function names." msgstr "" -#: c-family/c.opt:733 +#: c-family/c.opt:741 msgid "Warn about overriding initializers without side effects." msgstr "" -#: c-family/c.opt:737 +#: c-family/c.opt:745 msgid "Warn about overriding initializers with side effects." msgstr "" -#: c-family/c.opt:741 +#: c-family/c.opt:749 msgid "Warn about packed bit-fields whose offset changed in GCC 4.4." msgstr "" -#: c-family/c.opt:745 +#: c-family/c.opt:753 msgid "Warn about possibly missing parentheses." msgstr "" -#: c-family/c.opt:753 +#: c-family/c.opt:761 msgid "Warn when converting the type of pointers to member functions." msgstr "" -#: c-family/c.opt:757 +#: c-family/c.opt:765 msgid "Warn about function pointer arithmetic." msgstr "" -#: c-family/c.opt:761 +#: c-family/c.opt:769 msgid "Warn when a pointer differs in signedness in an assignment." msgstr "" -#: c-family/c.opt:765 +#: c-family/c.opt:773 msgid "Warn when a pointer is cast to an integer of a different size." msgstr "" -#: c-family/c.opt:769 +#: c-family/c.opt:777 msgid "Warn about misuses of pragmas." msgstr "" -#: c-family/c.opt:773 +#: c-family/c.opt:781 msgid "" "Warn if a property for an Objective-C object has no assign semantics " "specified." msgstr "" -#: c-family/c.opt:777 +#: c-family/c.opt:785 msgid "Warn if inherited methods are unimplemented." msgstr "" -#: c-family/c.opt:781 +#: c-family/c.opt:789 c-family/c.opt:793 msgid "Warn for placement new expressions with undefined behavior." msgstr "" -#: c-family/c.opt:785 +#: c-family/c.opt:797 msgid "Warn about multiple declarations of the same object." msgstr "" -#: c-family/c.opt:789 +#: c-family/c.opt:801 msgid "Warn when the compiler reorders code." msgstr "" -#: c-family/c.opt:793 +#: c-family/c.opt:805 msgid "" "Warn whenever a function's return type defaults to \"int\" (C), or about " "inconsistent return types (C++)." msgstr "" -#: c-family/c.opt:797 +#: c-family/c.opt:809 msgid "Warn on suspicious constructs involving reverse scalar storage order." msgstr "" -#: c-family/c.opt:801 +#: c-family/c.opt:813 msgid "Warn if a selector has multiple methods." msgstr "" -#: c-family/c.opt:805 +#: c-family/c.opt:817 msgid "Warn about possible violations of sequence point rules." msgstr "" -#: c-family/c.opt:809 +#: c-family/c.opt:821 msgid "Warn if a local declaration hides an instance variable." msgstr "" -#: c-family/c.opt:813 c-family/c.opt:817 +#: c-family/c.opt:825 c-family/c.opt:829 msgid "Warn if left shift of a signed value overflows." msgstr "" -#: c-family/c.opt:821 +#: c-family/c.opt:833 msgid "Warn if shift count is negative." msgstr "" -#: c-family/c.opt:825 +#: c-family/c.opt:837 msgid "Warn if shift count >= width of type." msgstr "" -#: c-family/c.opt:829 +#: c-family/c.opt:841 msgid "Warn if left shifting a negative value." msgstr "" -#: c-family/c.opt:833 +#: c-family/c.opt:845 msgid "Warn about signed-unsigned comparisons." msgstr "" -#: c-family/c.opt:841 +#: c-family/c.opt:853 msgid "" "Warn for implicit type conversions between signed and unsigned integers." msgstr "" -#: c-family/c.opt:845 +#: c-family/c.opt:857 msgid "Warn when overload promotes from unsigned to signed." msgstr "" -#: c-family/c.opt:849 +#: c-family/c.opt:861 msgid "Warn about uncasted NULL used as sentinel." msgstr "" -#: c-family/c.opt:853 +#: c-family/c.opt:865 msgid "Warn about unprototyped function declarations." msgstr "" -#: c-family/c.opt:865 +#: c-family/c.opt:877 msgid "Warn if type signatures of candidate methods do not match exactly." msgstr "" -#: c-family/c.opt:869 +#: c-family/c.opt:881 msgid "" "Warn when __sync_fetch_and_nand and __sync_nand_and_fetch built-in functions " "are used." msgstr "" -#: c-family/c.opt:873 +#: c-family/c.opt:885 msgid "Deprecated. This switch has no effect." msgstr "" -#: c-family/c.opt:881 +#: c-family/c.opt:893 msgid "Warn if a comparison always evaluates to true or false." msgstr "" -#: c-family/c.opt:885 +#: c-family/c.opt:897 msgid "Warn if a throw expression will always result in a call to terminate()." msgstr "" -#: c-family/c.opt:889 +#: c-family/c.opt:901 msgid "Warn about features not present in traditional C." msgstr "" -#: c-family/c.opt:893 +#: c-family/c.opt:905 msgid "" "Warn of prototypes causing type conversions different from what would happen " "in the absence of prototype." msgstr "" -#: c-family/c.opt:897 +#: c-family/c.opt:909 msgid "" "Warn if trigraphs are encountered that might affect the meaning of the " "program." msgstr "" -#: c-family/c.opt:901 +#: c-family/c.opt:913 msgid "Warn about @selector()s without previously declared methods." msgstr "" -#: c-family/c.opt:905 +#: c-family/c.opt:917 msgid "Warn if an undefined macro is used in an #if directive." msgstr "" -#: c-family/c.opt:917 +#: c-family/c.opt:929 msgid "Warn about unrecognized pragmas." msgstr "" -#: c-family/c.opt:921 +#: c-family/c.opt:933 msgid "Warn about unsuffixed float constants." msgstr "" -#: c-family/c.opt:929 +#: c-family/c.opt:941 msgid "Warn when typedefs locally defined in a function are not used." msgstr "" -#: c-family/c.opt:933 +#: c-family/c.opt:945 msgid "Warn about macros defined in the main file that are not used." msgstr "" -#: c-family/c.opt:937 +#: c-family/c.opt:949 msgid "" "Warn if a caller of a function, marked with attribute warn_unused_result, " "does not use its return value." msgstr "" -#: c-family/c.opt:945 +#: c-family/c.opt:957 c-family/c.opt:961 msgid "Warn when a const variable is unused." msgstr "" -#: c-family/c.opt:949 +#: c-family/c.opt:965 msgid "Warn about using variadic macros." msgstr "" -#: c-family/c.opt:953 +#: c-family/c.opt:969 msgid "" "Warn about questionable usage of the macros used to retrieve variable " "arguments." msgstr "" -#: c-family/c.opt:957 +#: c-family/c.opt:973 msgid "Warn if a variable length array is used." msgstr "" -#: c-family/c.opt:961 +#: c-family/c.opt:977 msgid "Warn when a register variable is declared volatile." msgstr "" -#: c-family/c.opt:965 +#: c-family/c.opt:981 msgid "Warn on direct virtual inheritance." msgstr "" -#: c-family/c.opt:969 +#: c-family/c.opt:985 msgid "Warn if a virtual base has a non-trivial move assignment operator." msgstr "" -#: c-family/c.opt:973 +#: c-family/c.opt:989 msgid "" "In C++, nonzero means warn about deprecated conversion from string literals " "to 'char *'. In C, similar warning, except that the conversion is of course " "not deprecated by the ISO C standard." msgstr "" -#: c-family/c.opt:977 +#: c-family/c.opt:993 msgid "Warn when a literal '0' is used as null pointer." msgstr "" -#: c-family/c.opt:981 +#: c-family/c.opt:997 msgid "Warn about useless casts." msgstr "" -#: c-family/c.opt:985 +#: c-family/c.opt:1001 msgid "" "Warn if a class type has a base or a field whose type uses the anonymous " "namespace or depends on a type with no linkage." msgstr "" -#: c-family/c.opt:989 +#: c-family/c.opt:1005 msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)." msgstr "" -#: c-family/c.opt:997 +#: c-family/c.opt:1013 msgid "" "The version of the C++ ABI used for -Wabi warnings and link compatibility " "aliases." msgstr "" -#: c-family/c.opt:1001 +#: c-family/c.opt:1017 msgid "Enforce class member access control semantics." msgstr "" -#: c-family/c.opt:1005 +#: c-family/c.opt:1021 msgid "-fada-spec-parent=unit Dump Ada specs as child units of given parent." msgstr "" -#: c-family/c.opt:1012 +#: c-family/c.opt:1028 msgid "Allow variadic functions without named parameter." msgstr "" -#: c-family/c.opt:1016 c-family/c.opt:1245 c-family/c.opt:1533 -#: c-family/c.opt:1537 c-family/c.opt:1553 +#: c-family/c.opt:1032 c-family/c.opt:1261 c-family/c.opt:1549 +#: c-family/c.opt:1553 c-family/c.opt:1569 msgid "No longer supported." msgstr "" -#: c-family/c.opt:1020 +#: c-family/c.opt:1036 msgid "Recognize the \"asm\" keyword." msgstr "" -#: c-family/c.opt:1028 +#: c-family/c.opt:1044 msgid "Recognize built-in functions." msgstr "" -#: c-family/c.opt:1035 +#: c-family/c.opt:1051 msgid "Where shorter, use canonicalized paths to systems headers." msgstr "" -#: c-family/c.opt:1039 +#: c-family/c.opt:1055 msgid "Add Pointer Bounds Checker instrumentation. fchkp-* flags are used to" msgstr "" -#: c-family/c.opt:1044 +#: c-family/c.opt:1060 msgid "Generate pointer bounds checks for variables with incomplete type." msgstr "" -#: c-family/c.opt:1048 +#: c-family/c.opt:1064 msgid "" "Use zero bounds for all incoming arguments in 'main' function. It helps when" msgstr "" -#: c-family/c.opt:1053 +#: c-family/c.opt:1069 msgid "" "Forces Pointer Bounds Checker to use narrowed bounds for address of the first" msgstr "" -#: c-family/c.opt:1059 +#: c-family/c.opt:1075 msgid "" "Control how Pointer Bounds Checker handle pointers to object fields. When" msgstr "" -#: c-family/c.opt:1064 +#: c-family/c.opt:1080 msgid "" "Forces Pointer Bounds Checker to use bounds of the innermost arrays in case " "of" msgstr "" -#: c-family/c.opt:1069 +#: c-family/c.opt:1085 msgid "Allow Pointer Bounds Checker optimizations. By default allowed" msgstr "" -#: c-family/c.opt:1074 +#: c-family/c.opt:1090 msgid "" "Allow to use *_nobnd versions of string functions by Pointer Bounds Checker." msgstr "" -#: c-family/c.opt:1078 +#: c-family/c.opt:1094 msgid "" "Allow to use *_nochk versions of string functions by Pointer Bounds Checker." msgstr "" -#: c-family/c.opt:1082 +#: c-family/c.opt:1098 msgid "Use statically initialized variable for vars bounds instead of" msgstr "" -#: c-family/c.opt:1087 +#: c-family/c.opt:1103 msgid "Use statically initialized variable for constant bounds instead of" msgstr "" -#: c-family/c.opt:1092 +#: c-family/c.opt:1108 msgid "With this option zero size obtained dynamically for objects with" msgstr "" -#: c-family/c.opt:1097 +#: c-family/c.opt:1113 msgid "Generate checks for all read accesses to memory." msgstr "" -#: c-family/c.opt:1101 +#: c-family/c.opt:1117 msgid "Generate checks for all write accesses to memory." msgstr "" -#: c-family/c.opt:1105 +#: c-family/c.opt:1121 msgid "Generate bounds stores for pointer writes." msgstr "" -#: c-family/c.opt:1109 +#: c-family/c.opt:1125 msgid "Generate bounds passing for calls." msgstr "" -#: c-family/c.opt:1113 +#: c-family/c.opt:1129 msgid "Instrument only functions marked with bnd_instrument attribute." msgstr "" -#: c-family/c.opt:1117 +#: c-family/c.opt:1133 msgid "Transform instrumented builtin calls into calls to wrappers." msgstr "" -#: c-family/c.opt:1127 +#: c-family/c.opt:1143 msgid "Enable Cilk Plus." msgstr "" -#: c-family/c.opt:1131 +#: c-family/c.opt:1147 msgid "Enable support for C++ concepts." msgstr "" -#: c-family/c.opt:1135 +#: c-family/c.opt:1151 msgid "Allow the arguments of the '?' operator to have different types." msgstr "" -#: c-family/c.opt:1142 +#: c-family/c.opt:1158 #, c-format msgid "no class name specified with %qs" msgstr "" -#: c-family/c.opt:1143 +#: c-family/c.opt:1159 msgid "-fconst-string-class=<name>\tUse class <name> for constant strings." msgstr "" -#: c-family/c.opt:1147 +#: c-family/c.opt:1163 msgid "-fconstexpr-depth=<number>\tSpecify maximum constexpr recursion depth." msgstr "" -#: c-family/c.opt:1151 +#: c-family/c.opt:1167 msgid "Emit debug annotations during preprocessing." msgstr "" -#: c-family/c.opt:1155 +#: c-family/c.opt:1171 msgid "" "-fdeduce-init-list\tenable deduction of std::initializer_list for a template " "type parameter from a brace-enclosed initializer-list." msgstr "" -#: c-family/c.opt:1159 +#: c-family/c.opt:1175 msgid "Factor complex constructors and destructors to favor space over speed." msgstr "" -#: c-family/c.opt:1167 +#: c-family/c.opt:1183 msgid "Preprocess directives only." msgstr "" -#: c-family/c.opt:1171 +#: c-family/c.opt:1187 msgid "Permit '$' as an identifier character." msgstr "" -#: c-family/c.opt:1175 +#: c-family/c.opt:1191 msgid "Write all declarations as Ada code transitively." msgstr "" -#: c-family/c.opt:1179 +#: c-family/c.opt:1195 msgid "Write all declarations as Ada code for the given file only." msgstr "" -#: c-family/c.opt:1186 +#: c-family/c.opt:1202 msgid "Generate code to check exception specifications." msgstr "" -#: c-family/c.opt:1193 +#: c-family/c.opt:1209 msgid "" "-fexec-charset=<cset>\tConvert all strings and character constants to " "character set <cset>." msgstr "" -#: c-family/c.opt:1197 +#: c-family/c.opt:1213 msgid "Permit universal character names (\\u and \\U) in identifiers." msgstr "" -#: c-family/c.opt:1201 +#: c-family/c.opt:1217 msgid "" "-finput-charset=<cset>\tSpecify the default character set for source files." msgstr "" -#: c-family/c.opt:1205 +#: c-family/c.opt:1221 msgid "" "Support dynamic initialization of thread-local variables in a different " "translation unit." msgstr "" -#: c-family/c.opt:1212 +#: c-family/c.opt:1228 msgid "Scope of for-init-statement variables is local to the loop." msgstr "" -#: c-family/c.opt:1216 +#: c-family/c.opt:1232 msgid "Do not assume that standard C libraries and \"main\" exist." msgstr "" -#: c-family/c.opt:1220 +#: c-family/c.opt:1236 msgid "Recognize GNU-defined keywords." msgstr "" -#: c-family/c.opt:1224 +#: c-family/c.opt:1240 msgid "Generate code for GNU runtime environment." msgstr "" -#: c-family/c.opt:1228 +#: c-family/c.opt:1244 msgid "Use traditional GNU semantics for inline functions." msgstr "" -#: c-family/c.opt:1234 +#: c-family/c.opt:1250 msgid "" "-fhandle-exceptions has been renamed -fexceptions (and is now on by default)" msgstr "" -#: c-family/c.opt:1241 +#: c-family/c.opt:1257 msgid "Assume normal C execution environment." msgstr "" -#: c-family/c.opt:1249 +#: c-family/c.opt:1265 msgid "Export functions even if they can be inlined." msgstr "" -#: c-family/c.opt:1253 +#: c-family/c.opt:1269 msgid "Emit implicit instantiations of inline templates." msgstr "" -#: c-family/c.opt:1257 +#: c-family/c.opt:1273 msgid "Emit implicit instantiations of templates." msgstr "" -#: c-family/c.opt:1261 +#: c-family/c.opt:1277 msgid "Inject friend functions into enclosing namespace." msgstr "" -#: c-family/c.opt:1265 +#: c-family/c.opt:1281 msgid "Don't emit dllexported inline functions unless needed." msgstr "" -#: c-family/c.opt:1272 +#: c-family/c.opt:1288 msgid "" "Allow implicit conversions between vectors with differing numbers of " "subparts and/or differing element types." msgstr "" -#: c-family/c.opt:1276 +#: c-family/c.opt:1292 msgid "Don't warn about uses of Microsoft extensions." msgstr "" -#: c-family/c.opt:1295 +#: c-family/c.opt:1311 msgid "Generate code for NeXT (Apple Mac OS X) runtime environment." msgstr "" -#: c-family/c.opt:1299 +#: c-family/c.opt:1315 msgid "Assume that receivers of Objective-C messages may be nil." msgstr "" -#: c-family/c.opt:1303 +#: c-family/c.opt:1319 msgid "" "Allow access to instance variables as if they were local declarations within " "instance method implementations." msgstr "" -#: c-family/c.opt:1307 +#: c-family/c.opt:1323 msgid "" "-fvisibility=[private|protected|public|package]\tSet the default symbol " "visibility." msgstr "" -#: c-family/c.opt:1310 +#: c-family/c.opt:1326 #, c-format msgid "unrecognized ivar visibility value %qs" msgstr "" -#: c-family/c.opt:1332 +#: c-family/c.opt:1348 msgid "" "Treat a throw() exception specification as noexcept to improve code size." msgstr "" -#: c-family/c.opt:1336 +#: c-family/c.opt:1352 msgid "" "Specify which ABI to use for Objective-C family code and meta-data " "generation." msgstr "" -#: c-family/c.opt:1342 +#: c-family/c.opt:1358 msgid "" "Generate special Objective-C methods to initialize/destroy non-POD C++ " "ivars, if needed." msgstr "" -#: c-family/c.opt:1346 +#: c-family/c.opt:1362 msgid "Allow fast jumps to the message dispatcher." msgstr "" -#: c-family/c.opt:1352 +#: c-family/c.opt:1368 msgid "Enable Objective-C exception and synchronization syntax." msgstr "" -#: c-family/c.opt:1356 +#: c-family/c.opt:1372 msgid "Enable garbage collection (GC) in Objective-C/Objective-C++ programs." msgstr "" -#: c-family/c.opt:1360 +#: c-family/c.opt:1376 msgid "" "Enable inline checks for nil receivers with the NeXT runtime and ABI version " "2." msgstr "" -#: c-family/c.opt:1365 +#: c-family/c.opt:1381 msgid "Enable Objective-C setjmp exception handling runtime." msgstr "" -#: c-family/c.opt:1369 +#: c-family/c.opt:1385 msgid "Conform to the Objective-C 1.0 language as implemented in GCC 4.0." msgstr "" -#: c-family/c.opt:1373 +#: c-family/c.opt:1389 msgid "Enable OpenACC." msgstr "" -#: c-family/c.opt:1377 +#: c-family/c.opt:1393 +msgid "Specify default OpenACC compute dimensions." +msgstr "" + +#: c-family/c.opt:1397 msgid "Enable OpenMP (implies -frecursive in Fortran)." msgstr "" -#: c-family/c.opt:1381 +#: c-family/c.opt:1401 msgid "Enable OpenMP's SIMD directives." msgstr "" -#: c-family/c.opt:1385 +#: c-family/c.opt:1405 msgid "Recognize C++ keywords like \"compl\" and \"xor\"." msgstr "" -#: c-family/c.opt:1396 +#: c-family/c.opt:1416 msgid "Look for and use PCH files even when preprocessing." msgstr "" -#: c-family/c.opt:1400 +#: c-family/c.opt:1420 msgid "Downgrade conformance errors to warnings." msgstr "" -#: c-family/c.opt:1404 +#: c-family/c.opt:1424 msgid "Enable Plan 9 language extensions." msgstr "" -#: c-family/c.opt:1408 +#: c-family/c.opt:1428 msgid "Treat the input file as already preprocessed." msgstr "" -#: c-family/c.opt:1416 +#: c-family/c.opt:1436 msgid "" "-ftrack-macro-expansion=<0|1|2> Track locations of tokens coming from macro " "expansion and display them in error messages." msgstr "" -#: c-family/c.opt:1420 +#: c-family/c.opt:1440 msgid "" "-fno-pretty-templates Do not pretty-print template specializations as the " "template signature followed by the arguments." msgstr "" -#: c-family/c.opt:1424 +#: c-family/c.opt:1444 msgid "" "Used in Fix-and-Continue mode to indicate that object files may be swapped " "in at runtime." msgstr "" -#: c-family/c.opt:1428 +#: c-family/c.opt:1448 msgid "Enable automatic template instantiation." msgstr "" -#: c-family/c.opt:1432 +#: c-family/c.opt:1452 msgid "Generate run time type descriptor information." msgstr "" -#: c-family/c.opt:1436 -msgid "Use the same size for double as for float." -msgstr "" - -#: c-family/c.opt:1440 ada/gcc-interface/lang.opt:77 +#: c-family/c.opt:1456 ada/gcc-interface/lang.opt:77 msgid "Use the narrowest integer type possible for enumeration types." msgstr "" -#: c-family/c.opt:1444 +#: c-family/c.opt:1460 msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\"." msgstr "" -#: c-family/c.opt:1448 +#: c-family/c.opt:1464 msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed." msgstr "" -#: c-family/c.opt:1452 ada/gcc-interface/lang.opt:81 +#: c-family/c.opt:1468 ada/gcc-interface/lang.opt:81 msgid "Make \"char\" signed by default." msgstr "" -#: c-family/c.opt:1456 +#: c-family/c.opt:1472 msgid "Enable C++14 sized deallocation support." msgstr "" -#: c-family/c.opt:1463 +#: c-family/c.opt:1479 msgid "" "-fsso-struct=[big-endian|little-endian]\tSet the default scalar storage " "order." msgstr "" -#: c-family/c.opt:1466 +#: c-family/c.opt:1482 #, c-format msgid "unrecognized scalar storage order value %qs" msgstr "" -#: c-family/c.opt:1476 +#: c-family/c.opt:1492 msgid "Display statistics accumulated during compilation." msgstr "" -#: c-family/c.opt:1480 +#: c-family/c.opt:1496 msgid "" "Assume that values of enumeration type are always within the minimum range " "of that type." msgstr "" -#: c-family/c.opt:1487 +#: c-family/c.opt:1503 msgid "-ftabstop=<number>\tDistance between tab stops for column reporting." msgstr "" -#: c-family/c.opt:1491 +#: c-family/c.opt:1507 msgid "" "Set the maximum number of template instantiation notes for a single warning " "or error." msgstr "" -#: c-family/c.opt:1498 +#: c-family/c.opt:1514 msgid "" "-ftemplate-depth=<number>\tSpecify maximum template instantiation depth." msgstr "" -#: c-family/c.opt:1505 +#: c-family/c.opt:1521 msgid "" "-fno-threadsafe-statics\tDo not generate thread-safe code for initializing " "local statics." msgstr "" -#: c-family/c.opt:1509 +#: c-family/c.opt:1525 msgid "" "When \"signed\" or \"unsigned\" is not given make the bitfield unsigned." msgstr "" -#: c-family/c.opt:1513 +#: c-family/c.opt:1529 msgid "Make \"char\" unsigned by default." msgstr "" -#: c-family/c.opt:1517 +#: c-family/c.opt:1533 msgid "Use __cxa_atexit to register destructors." msgstr "" -#: c-family/c.opt:1521 +#: c-family/c.opt:1537 msgid "Use __cxa_get_exception_ptr in exception handling." msgstr "" -#: c-family/c.opt:1525 +#: c-family/c.opt:1541 msgid "Marks all inlined functions and methods as having hidden visibility." msgstr "" -#: c-family/c.opt:1529 +#: c-family/c.opt:1545 msgid "Changes visibility to match Microsoft Visual Studio by default." msgstr "" -#: c-family/c.opt:1541 +#: c-family/c.opt:1557 msgid "Emit common-like symbols as weak symbols." msgstr "" -#: c-family/c.opt:1545 +#: c-family/c.opt:1561 msgid "" "-fwide-exec-charset=<cset>\tConvert all wide strings and character constants " "to character set <cset>." msgstr "" -#: c-family/c.opt:1549 +#: c-family/c.opt:1565 msgid "Generate a #line directive pointing at the current working directory." msgstr "" -#: c-family/c.opt:1557 +#: c-family/c.opt:1573 msgid "" "Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode." msgstr "" -#: c-family/c.opt:1561 +#: c-family/c.opt:1577 msgid "Dump declarations to a .decl file." msgstr "" -#: c-family/c.opt:1565 +#: c-family/c.opt:1581 msgid "" "-femit-struct-debug-baseonly\tAggressive reduced debug info for structs." msgstr "" -#: c-family/c.opt:1569 +#: c-family/c.opt:1585 msgid "" "-femit-struct-debug-reduced\tConservative reduced debug info for structs." msgstr "" -#: c-family/c.opt:1573 +#: c-family/c.opt:1589 msgid "" "-femit-struct-debug-detailed=<spec-list>\tDetailed reduced debug info for " "structs." msgstr "" -#: c-family/c.opt:1577 +#: c-family/c.opt:1593 msgid "" "Interpret imaginary, fixed-point, or other gnu number suffix as the " "corresponding" msgstr "" -#: c-family/c.opt:1582 +#: c-family/c.opt:1598 msgid "-idirafter <dir>\tAdd <dir> to the end of the system include path." msgstr "" -#: c-family/c.opt:1586 +#: c-family/c.opt:1602 msgid "-imacros <file>\tAccept definition of macros in <file>." msgstr "" -#: c-family/c.opt:1590 +#: c-family/c.opt:1606 msgid "-imultilib <dir>\tSet <dir> to be the multilib include subdirectory." msgstr "" -#: c-family/c.opt:1594 +#: c-family/c.opt:1610 msgid "-include <file>\tInclude the contents of <file> before other files." msgstr "" -#: c-family/c.opt:1598 +#: c-family/c.opt:1614 msgid "-iprefix <path>\tSpecify <path> as a prefix for next two options." msgstr "" -#: c-family/c.opt:1602 +#: c-family/c.opt:1618 msgid "-isysroot <dir>\tSet <dir> to be the system root directory." msgstr "" -#: c-family/c.opt:1606 +#: c-family/c.opt:1622 msgid "-isystem <dir>\tAdd <dir> to the start of the system include path." msgstr "" -#: c-family/c.opt:1610 +#: c-family/c.opt:1626 msgid "-iquote <dir>\tAdd <dir> to the end of the quote include path." msgstr "" -#: c-family/c.opt:1614 +#: c-family/c.opt:1630 msgid "-iwithprefix <dir>\tAdd <dir> to the end of the system include path." msgstr "" -#: c-family/c.opt:1618 +#: c-family/c.opt:1634 msgid "" "-iwithprefixbefore <dir>\tAdd <dir> to the end of the main include path." msgstr "" -#: c-family/c.opt:1628 +#: c-family/c.opt:1644 msgid "" "Do not search standard system include directories (those specified with -" "isystem will still be used)." msgstr "" -#: c-family/c.opt:1632 +#: c-family/c.opt:1648 msgid "Do not search standard system include directories for C++." msgstr "" -#: c-family/c.opt:1644 +#: c-family/c.opt:1660 msgid "Generate C header of platform-specific features." msgstr "" -#: c-family/c.opt:1648 +#: c-family/c.opt:1664 msgid "Remap file names when including files." msgstr "" -#: c-family/c.opt:1652 c-family/c.opt:1656 +#: c-family/c.opt:1668 c-family/c.opt:1672 msgid "" "Conform to the ISO 1998 C++ standard revised by the 2003 technical " "corrigendum." msgstr "" -#: c-family/c.opt:1660 +#: c-family/c.opt:1676 msgid "Conform to the ISO 2011 C++ standard." msgstr "" -#: c-family/c.opt:1664 +#: c-family/c.opt:1680 msgid "Deprecated in favor of -std=c++11." msgstr "" -#: c-family/c.opt:1668 +#: c-family/c.opt:1684 msgid "Deprecated in favor of -std=c++14." msgstr "" -#: c-family/c.opt:1672 +#: c-family/c.opt:1688 msgid "Conform to the ISO 2014 C++ standard." msgstr "" -#: c-family/c.opt:1676 +#: c-family/c.opt:1692 msgid "" "Conform to the ISO 2017(?) C++ draft standard (experimental and incomplete " "support)." msgstr "" -#: c-family/c.opt:1683 c-family/c.opt:1780 +#: c-family/c.opt:1699 c-family/c.opt:1796 msgid "Conform to the ISO 2011 C standard." msgstr "" -#: c-family/c.opt:1687 +#: c-family/c.opt:1703 msgid "Deprecated in favor of -std=c11." msgstr "" -#: c-family/c.opt:1691 c-family/c.opt:1695 c-family/c.opt:1764 +#: c-family/c.opt:1707 c-family/c.opt:1711 c-family/c.opt:1780 msgid "Conform to the ISO 1990 C standard." msgstr "" -#: c-family/c.opt:1699 c-family/c.opt:1772 +#: c-family/c.opt:1715 c-family/c.opt:1788 msgid "Conform to the ISO 1999 C standard." msgstr "" -#: c-family/c.opt:1703 +#: c-family/c.opt:1719 msgid "Deprecated in favor of -std=c99." msgstr "" -#: c-family/c.opt:1707 c-family/c.opt:1712 +#: c-family/c.opt:1723 c-family/c.opt:1728 msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical" msgstr "" -#: c-family/c.opt:1717 +#: c-family/c.opt:1733 msgid "Conform to the ISO 2011 C++ standard with GNU extensions." msgstr "" -#: c-family/c.opt:1721 +#: c-family/c.opt:1737 msgid "Deprecated in favor of -std=gnu++11." msgstr "" -#: c-family/c.opt:1725 +#: c-family/c.opt:1741 msgid "Deprecated in favor of -std=gnu++14." msgstr "" -#: c-family/c.opt:1729 +#: c-family/c.opt:1745 msgid "Conform to the ISO 2014 C++ standard with GNU extensions." msgstr "" -#: c-family/c.opt:1733 +#: c-family/c.opt:1749 msgid "" "Conform to the ISO 201z(7?) C++ draft standard with GNU extensions " "(experimental and incomplete support)." msgstr "" -#: c-family/c.opt:1740 +#: c-family/c.opt:1756 msgid "Conform to the ISO 2011 C standard with GNU extensions." msgstr "" -#: c-family/c.opt:1744 +#: c-family/c.opt:1760 msgid "Deprecated in favor of -std=gnu11." msgstr "" -#: c-family/c.opt:1748 c-family/c.opt:1752 +#: c-family/c.opt:1764 c-family/c.opt:1768 msgid "Conform to the ISO 1990 C standard with GNU extensions." msgstr "" -#: c-family/c.opt:1756 +#: c-family/c.opt:1772 msgid "Conform to the ISO 1999 C standard with GNU extensions." msgstr "" -#: c-family/c.opt:1760 +#: c-family/c.opt:1776 msgid "Deprecated in favor of -std=gnu99." msgstr "" -#: c-family/c.opt:1768 +#: c-family/c.opt:1784 msgid "Conform to the ISO 1990 C standard as amended in 1994." msgstr "" -#: c-family/c.opt:1776 +#: c-family/c.opt:1792 msgid "Deprecated in favor of -std=iso9899:1999." msgstr "" -#: c-family/c.opt:1787 +#: c-family/c.opt:1803 msgid "Enable traditional preprocessing." msgstr "" -#: c-family/c.opt:1791 +#: c-family/c.opt:1807 msgid "-trigraphs\tSupport ISO C trigraphs." msgstr "" -#: c-family/c.opt:1795 +#: c-family/c.opt:1811 msgid "Do not predefine system-specific and GCC-specific macros." msgstr "" @@ -8428,7 +8448,7 @@ msgid "PC relative literal loads." msgstr "" #: config/aarch64/aarch64.opt:154 -msgid "When calculating a sqrt approximation, run fewer steps." +msgid "When calculating the reciprocal square root approximation," msgstr "" #: config/linux.opt:24 @@ -8793,6 +8813,10 @@ msgstr "" msgid "Use LRA instead of reload." msgstr "" +#: config/ft32/ft32.opt:31 +msgid "Avoid use of the DIV and MOD instructions" +msgstr "" + #: config/h8300/h8300.opt:23 msgid "Generate H8S code." msgstr "" @@ -10205,11 +10229,11 @@ msgstr "" msgid "Known ARM CPUs (for use with the -mcpu= and -mtune= options):" msgstr "" -#: config/arm/arm-tables.opt:335 +#: config/arm/arm-tables.opt:341 msgid "Known ARM architectures (for use with the -march= option):" msgstr "" -#: config/arm/arm-tables.opt:432 +#: config/arm/arm-tables.opt:438 msgid "Known ARM FPUs (for use with the -mfpu= option):" msgstr "" @@ -13460,6 +13484,10 @@ msgstr "" msgid "Enable double load/store instructions for ARC HS." msgstr "" +#: config/arc/arc.opt:419 +msgid "Specify the name of the target floating point configuration." +msgstr "" + #: java/lang.opt:122 msgid "Warn if deprecated empty statements are found." msgstr "" @@ -13725,1831 +13753,1839 @@ msgid "" msgstr "" #: common.opt:621 +msgid "Warn if comparing pointer parameter with nonnull attribute with NULL." +msgstr "" + +#: common.opt:625 msgid "" "Warn if dereferencing a NULL pointer may lead to erroneous or undefined " "behavior." msgstr "" -#: common.opt:625 +#: common.opt:629 msgid "Warn if the loop cannot be optimized due to nontrivial assumptions." msgstr "" -#: common.opt:632 +#: common.opt:636 msgid "" "Warn about some C++ One Definition Rule violations during link time " "optimization." msgstr "" -#: common.opt:636 +#: common.opt:640 msgid "Warn about overflow in arithmetic expressions." msgstr "" -#: common.opt:640 +#: common.opt:644 msgid "" "During link time optimization warn about mismatched types of global " "declarations." msgstr "" -#: common.opt:644 +#: common.opt:648 msgid "Warn when the packed attribute has no effect on struct layout." msgstr "" -#: common.opt:648 +#: common.opt:652 msgid "Warn when padding is required to align structure members." msgstr "" -#: common.opt:652 +#: common.opt:656 msgid "Issue warnings needed for strict compliance to the standard." msgstr "" -#: common.opt:656 +#: common.opt:660 msgid "" "Warn about returning a pointer/reference to a local or temporary variable." msgstr "" -#: common.opt:660 +#: common.opt:664 msgid "Warn when one local variable shadows another." msgstr "" -#: common.opt:664 +#: common.opt:668 msgid "Warn when not issuing stack smashing protection for some reason." msgstr "" -#: common.opt:668 +#: common.opt:672 msgid "Warn if stack usage might be larger than specified amount." msgstr "" -#: common.opt:672 common.opt:676 +#: common.opt:676 common.opt:680 msgid "Warn about code which might break strict aliasing rules." msgstr "" -#: common.opt:680 common.opt:684 +#: common.opt:684 common.opt:688 msgid "Warn about optimizations that assume that signed overflow is undefined." msgstr "" -#: common.opt:688 +#: common.opt:692 msgid "" "Warn about functions which might be candidates for __attribute__((const))." msgstr "" -#: common.opt:692 +#: common.opt:696 msgid "" "Warn about functions which might be candidates for __attribute__((pure))." msgstr "" -#: common.opt:696 +#: common.opt:700 msgid "" "Warn about functions which might be candidates for __attribute__((noreturn))." msgstr "" -#: common.opt:700 +#: common.opt:704 msgid "" "Warn about C++ polymorphic types where adding final keyword would improve " "code quality." msgstr "" -#: common.opt:704 +#: common.opt:708 msgid "" "Warn about C++ virtual methods where adding final keyword would improve code " "quality." msgstr "" -#: common.opt:708 +#: common.opt:712 msgid "Do not suppress warnings from system headers." msgstr "" -#: common.opt:712 +#: common.opt:716 msgid "Warn whenever a trampoline is generated." msgstr "" -#: common.opt:716 +#: common.opt:720 msgid "" "Warn if a comparison is always true or always false due to the limited range " "of the data type." msgstr "" -#: common.opt:720 +#: common.opt:724 msgid "Warn about uninitialized automatic variables." msgstr "" -#: common.opt:724 +#: common.opt:728 msgid "Warn about maybe uninitialized automatic variables." msgstr "" -#: common.opt:732 +#: common.opt:736 msgid "Enable all -Wunused- warnings." msgstr "" -#: common.opt:736 +#: common.opt:740 msgid "Warn when a function parameter is only set, otherwise unused." msgstr "" -#: common.opt:740 +#: common.opt:744 msgid "Warn when a variable is only set, otherwise unused." msgstr "" -#: common.opt:744 +#: common.opt:748 msgid "Warn when a function is unused." msgstr "" -#: common.opt:748 +#: common.opt:752 msgid "Warn when a label is unused." msgstr "" -#: common.opt:752 +#: common.opt:756 msgid "Warn when a function parameter is unused." msgstr "" -#: common.opt:756 +#: common.opt:760 msgid "Warn when an expression value is unused." msgstr "" -#: common.opt:760 +#: common.opt:764 msgid "Warn when a variable is unused." msgstr "" -#: common.opt:764 +#: common.opt:768 msgid "Warn in case profiles in -fprofile-use do not match." msgstr "" -#: common.opt:768 +#: common.opt:772 msgid "Warn when a vector operation is compiled outside the SIMD." msgstr "" -#: common.opt:784 +#: common.opt:788 msgid "-aux-info <file>\tEmit declaration information into <file>." msgstr "" -#: common.opt:803 +#: common.opt:807 msgid "-d<letters>\tEnable dumps from specific passes of the compiler." msgstr "" -#: common.opt:807 +#: common.opt:811 msgid "-dumpbase <file>\tSet the file basename to be used for dumps." msgstr "" -#: common.opt:811 +#: common.opt:815 msgid "-dumpdir <dir>\tSet the directory name to be used for dumps." msgstr "" -#: common.opt:880 +#: common.opt:884 msgid "The version of the C++ ABI in use." msgstr "" -#: common.opt:884 +#: common.opt:888 msgid "Aggressively optimize loops using language constraints." msgstr "" -#: common.opt:888 +#: common.opt:892 msgid "Align the start of functions." msgstr "" -#: common.opt:895 +#: common.opt:899 msgid "Align labels which are only reached by jumping." msgstr "" -#: common.opt:902 +#: common.opt:906 msgid "Align all labels." msgstr "" -#: common.opt:909 +#: common.opt:913 msgid "Align the start of loops." msgstr "" -#: common.opt:932 +#: common.opt:936 msgid "Select what to sanitize." msgstr "" -#: common.opt:936 +#: common.opt:940 msgid "-fasan-shadow-offset=<number>\tUse custom shadow memory offset." msgstr "" -#: common.opt:940 +#: common.opt:944 msgid "-fsanitize-sections=<sec1,sec2,...>\tSanitize global variables" msgstr "" -#: common.opt:945 +#: common.opt:949 msgid "After diagnosing undefined behavior attempt to continue execution." msgstr "" -#: common.opt:949 +#: common.opt:953 msgid "This switch is deprecated; use -fsanitize-recover= instead." msgstr "" -#: common.opt:953 +#: common.opt:957 msgid "" "Use trap instead of a library function for undefined behavior sanitization." msgstr "" -#: common.opt:957 +#: common.opt:961 msgid "Generate unwind tables that are exact at each instruction boundary." msgstr "" -#: common.opt:961 +#: common.opt:965 msgid "Generate auto-inc/dec instructions." msgstr "" -#: common.opt:965 +#: common.opt:969 msgid "Use sample profile information for call graph node weights. The default" msgstr "" -#: common.opt:970 +#: common.opt:974 msgid "Use sample profile information for call graph node weights. The profile" msgstr "" -#: common.opt:979 +#: common.opt:983 msgid "Generate code to check bounds before indexing arrays." msgstr "" -#: common.opt:983 +#: common.opt:987 msgid "Replace add, compare, branch with branch on count register." msgstr "" -#: common.opt:987 +#: common.opt:991 msgid "Use profiling information for branch probabilities." msgstr "" -#: common.opt:991 +#: common.opt:995 msgid "" "Perform branch target load optimization before prologue / epilogue threading." msgstr "" -#: common.opt:995 +#: common.opt:999 msgid "" "Perform branch target load optimization after prologue / epilogue threading." msgstr "" -#: common.opt:999 +#: common.opt:1003 msgid "" "Restrict target load migration not to re-use registers in any basic block." msgstr "" -#: common.opt:1003 +#: common.opt:1007 msgid "" "-fcall-saved-<register>\tMark <register> as being preserved across functions." msgstr "" -#: common.opt:1007 +#: common.opt:1011 msgid "" "-fcall-used-<register>\tMark <register> as being corrupted by function calls." msgstr "" -#: common.opt:1014 +#: common.opt:1018 msgid "Save registers around function calls." msgstr "" -#: common.opt:1018 +#: common.opt:1022 msgid "This switch is deprecated; do not use." msgstr "" -#: common.opt:1022 +#: common.opt:1026 msgid "Check the return value of new in C++." msgstr "" -#: common.opt:1026 +#: common.opt:1030 msgid "Perform internal consistency checkings." msgstr "" -#: common.opt:1030 +#: common.opt:1034 msgid "" "Looks for opportunities to reduce stack adjustments and stack references." msgstr "" -#: common.opt:1034 +#: common.opt:1038 msgid "Do not put uninitialized globals in the common section." msgstr "" -#: common.opt:1042 +#: common.opt:1046 msgid "" "-fcompare-debug[=<opts>]\tCompile with and without e.g. -gtoggle, and " "compare the final-insns dump." msgstr "" -#: common.opt:1046 +#: common.opt:1050 msgid "Run only the second compilation of -fcompare-debug." msgstr "" -#: common.opt:1050 +#: common.opt:1054 msgid "Perform comparison elimination after register allocation has finished." msgstr "" -#: common.opt:1054 +#: common.opt:1058 msgid "Do not perform optimizations increasing noticeably stack usage." msgstr "" -#: common.opt:1058 +#: common.opt:1062 msgid "Perform a register copy-propagation optimization pass." msgstr "" -#: common.opt:1062 +#: common.opt:1066 msgid "Perform cross-jumping optimization." msgstr "" -#: common.opt:1066 +#: common.opt:1070 msgid "When running CSE, follow jumps to their targets." msgstr "" -#: common.opt:1074 +#: common.opt:1078 msgid "Omit range reduction step when performing complex division." msgstr "" -#: common.opt:1078 +#: common.opt:1082 msgid "Complex multiplication and division follow Fortran rules." msgstr "" -#: common.opt:1082 +#: common.opt:1086 msgid "Place data items into their own section." msgstr "" -#: common.opt:1086 +#: common.opt:1090 msgid "List all available debugging counters with their limits and counts." msgstr "" -#: common.opt:1090 +#: common.opt:1094 msgid "" "-fdbg-cnt=<counter>:<limit>[,<counter>:<limit>,...]\tSet the debug counter " "limit." msgstr "" -#: common.opt:1094 +#: common.opt:1098 msgid "Map one directory name to another in debug information." msgstr "" -#: common.opt:1098 +#: common.opt:1102 msgid "Output .debug_types section when using DWARF v4 debuginfo." msgstr "" -#: common.opt:1104 +#: common.opt:1108 msgid "Defer popping functions args from stack until later." msgstr "" -#: common.opt:1108 +#: common.opt:1112 msgid "Attempt to fill delay slots of branch instructions." msgstr "" -#: common.opt:1112 +#: common.opt:1116 msgid "Delete dead instructions that may throw exceptions." msgstr "" -#: common.opt:1116 +#: common.opt:1120 msgid "Delete useless null pointer checks." msgstr "" -#: common.opt:1120 +#: common.opt:1124 msgid "" "Stream extra data to support more aggressive devirtualization in LTO local " "transformation mode." msgstr "" -#: common.opt:1124 +#: common.opt:1128 msgid "Perform speculative devirtualization." msgstr "" -#: common.opt:1128 +#: common.opt:1132 msgid "Try to convert virtual calls to direct ones." msgstr "" -#: common.opt:1132 +#: common.opt:1136 msgid "" "-fdiagnostics-show-location=[once|every-line]\tHow often to emit source " "location at the beginning of line-wrapped diagnostics." msgstr "" -#: common.opt:1149 +#: common.opt:1153 msgid "Show the source line with a caret indicating the column." msgstr "" -#: common.opt:1157 +#: common.opt:1161 msgid "-fdiagnostics-color=[never|always|auto]\tColorize diagnostics." msgstr "" -#: common.opt:1177 +#: common.opt:1181 msgid "" "Amend appropriate diagnostic messages with the command line option that " "controls them." msgstr "" -#: common.opt:1181 +#: common.opt:1185 msgid "" "-fdisable-[tree|rtl|ipa]-<pass>=range1+range2 disables an optimization pass." msgstr "" -#: common.opt:1185 +#: common.opt:1189 msgid "" "-fenable-[tree|rtl|ipa]-<pass>=range1+range2 enables an optimization pass." msgstr "" -#: common.opt:1189 +#: common.opt:1193 msgid "-fdump-<type>\tDump various compiler internals to a file." msgstr "" -#: common.opt:1196 +#: common.opt:1200 msgid "" "-fdump-final-insns=filename\tDump to filename the insns at the end of " "translation." msgstr "" -#: common.opt:1200 +#: common.opt:1204 msgid "-fdump-go-spec=filename\tWrite all declarations to file as Go code." msgstr "" -#: common.opt:1204 +#: common.opt:1208 msgid "Suppress output of addresses in debugging dumps." msgstr "" -#: common.opt:1208 +#: common.opt:1212 msgid "Collect and dump debug information into temporary file if ICE in C/C++" msgstr "" -#: common.opt:1213 +#: common.opt:1217 msgid "" "Dump detailed information on GCC's internal representation of source code " "locations." msgstr "" -#: common.opt:1217 +#: common.opt:1221 msgid "Dump optimization passes." msgstr "" -#: common.opt:1221 +#: common.opt:1225 msgid "" "Suppress output of instruction numbers, line number notes and addresses in " "debugging dumps." msgstr "" -#: common.opt:1225 +#: common.opt:1229 msgid "Suppress output of previous and next insn numbers in debugging dumps." msgstr "" -#: common.opt:1229 +#: common.opt:1233 msgid "Enable CFI tables via GAS assembler directives." msgstr "" -#: common.opt:1233 +#: common.opt:1237 msgid "Perform early inlining." msgstr "" -#: common.opt:1237 +#: common.opt:1241 msgid "Perform DWARF duplicate elimination." msgstr "" -#: common.opt:1241 +#: common.opt:1245 msgid "Perform interprocedural reduction of aggregates." msgstr "" -#: common.opt:1245 +#: common.opt:1249 msgid "Perform unused symbol elimination in debug info." msgstr "" -#: common.opt:1249 +#: common.opt:1253 msgid "Perform unused type elimination in debug info." msgstr "" -#: common.opt:1253 +#: common.opt:1257 msgid "Do not suppress C++ class debug information." msgstr "" -#: common.opt:1257 +#: common.opt:1261 msgid "Enable exception handling." msgstr "" -#: common.opt:1261 +#: common.opt:1265 msgid "Perform a number of minor, expensive optimizations." msgstr "" -#: common.opt:1265 +#: common.opt:1269 msgid "" "-fexcess-precision=[fast|standard]\tSpecify handling of excess floating-" "point precision." msgstr "" -#: common.opt:1268 +#: common.opt:1272 #, c-format msgid "unknown excess precision style %qs" msgstr "" -#: common.opt:1281 +#: common.opt:1285 msgid "" "Output lto objects containing both the intermediate language and binary " "output." msgstr "" -#: common.opt:1285 +#: common.opt:1289 msgid "Assume no NaNs or infinities are generated." msgstr "" -#: common.opt:1289 +#: common.opt:1293 msgid "" "-ffixed-<register>\tMark <register> as being unavailable to the compiler." msgstr "" -#: common.opt:1293 +#: common.opt:1297 msgid "Don't allocate floats and doubles in extended-precision registers." msgstr "" -#: common.opt:1301 +#: common.opt:1305 msgid "Perform a forward propagation pass on RTL." msgstr "" -#: common.opt:1305 +#: common.opt:1309 msgid "" "-ffp-contract=[off|on|fast] Perform floating-point expression contraction." msgstr "" -#: common.opt:1308 +#: common.opt:1312 #, c-format msgid "unknown floating point contraction style %qs" msgstr "" -#: common.opt:1325 +#: common.opt:1329 msgid "Allow function addresses to be held in registers." msgstr "" -#: common.opt:1329 +#: common.opt:1333 msgid "Place each function into its own section." msgstr "" -#: common.opt:1333 +#: common.opt:1337 msgid "Perform global common subexpression elimination." msgstr "" -#: common.opt:1337 +#: common.opt:1341 msgid "" "Perform enhanced load motion during global common subexpression elimination." msgstr "" -#: common.opt:1341 +#: common.opt:1345 msgid "Perform store motion after global common subexpression elimination." msgstr "" -#: common.opt:1345 +#: common.opt:1349 msgid "" "Perform redundant load after store elimination in global common subexpression" msgstr "" -#: common.opt:1350 +#: common.opt:1354 msgid "" "Perform global common subexpression elimination after register allocation has" msgstr "" -#: common.opt:1367 +#: common.opt:1371 msgid "" "-fgnat-encodings=[all|gdb|minimal]\tSelect the balance between GNAT " "encodings and standard DWARF emitted in the debug information" msgstr "" -#: common.opt:1372 +#: common.opt:1376 msgid "Enable in and out of Graphite representation." msgstr "" -#: common.opt:1376 +#: common.opt:1380 msgid "Enable Graphite Identity transformation." msgstr "" -#: common.opt:1380 +#: common.opt:1384 msgid "Enable hoisting adjacent loads to encourage generating conditional move" msgstr "" -#: common.opt:1389 +#: common.opt:1393 msgid "Mark all loops as parallel." msgstr "" -#: common.opt:1393 common.opt:1397 common.opt:1401 common.opt:1405 -#: common.opt:2388 +#: common.opt:1397 common.opt:1401 common.opt:1405 common.opt:1409 +#: common.opt:2395 msgid "Enable loop nest transforms. Same as -floop-nest-optimize." msgstr "" -#: common.opt:1409 +#: common.opt:1413 msgid "Enable support for GNU transactional memory." msgstr "" -#: common.opt:1413 +#: common.opt:1417 msgid "Use STB_GNU_UNIQUE if supported by the assembler." msgstr "" -#: common.opt:1421 +#: common.opt:1425 msgid "Enable the loop nest optimizer." msgstr "" -#: common.opt:1425 +#: common.opt:1429 msgid "Force bitfield accesses to match their type width." msgstr "" -#: common.opt:1429 +#: common.opt:1433 msgid "Enable guessing of branch probabilities." msgstr "" -#: common.opt:1437 +#: common.opt:1441 msgid "Process #ident directives." msgstr "" -#: common.opt:1441 +#: common.opt:1445 msgid "Perform conversion of conditional jumps to branchless equivalents." msgstr "" -#: common.opt:1445 +#: common.opt:1449 msgid "Perform conversion of conditional jumps to conditional execution." msgstr "" -#: common.opt:1449 +#: common.opt:1453 msgid "" "-fstack-reuse=[all|named_vars|none] Set stack reuse level for local " "variables." msgstr "" -#: common.opt:1452 +#: common.opt:1456 #, c-format msgid "unknown Stack Reuse Level %qs" msgstr "" -#: common.opt:1465 +#: common.opt:1469 msgid "Convert conditional jumps in innermost loops to branchless equivalents." msgstr "" -#: common.opt:1469 +#: common.opt:1473 msgid "Also if-convert conditional jumps containing memory writes." msgstr "" -#: common.opt:1477 +#: common.opt:1481 msgid "Do not generate .size directives." msgstr "" -#: common.opt:1481 +#: common.opt:1485 msgid "Perform indirect inlining." msgstr "" -#: common.opt:1487 +#: common.opt:1491 msgid "" "Enable inlining of function declared \"inline\", disabling disables all " "inlining." msgstr "" -#: common.opt:1491 +#: common.opt:1495 msgid "" "Integrate functions into their callers when code size is known not to grow." msgstr "" -#: common.opt:1495 +#: common.opt:1499 msgid "" "Integrate functions not declared \"inline\" into their callers when " "profitable." msgstr "" -#: common.opt:1499 +#: common.opt:1503 msgid "Integrate functions only required by their single caller." msgstr "" -#: common.opt:1506 +#: common.opt:1510 msgid "" "-finline-limit=<number>\tLimit the size of inlined functions to <number>." msgstr "" -#: common.opt:1510 +#: common.opt:1514 msgid "" "Inline __atomic operations when a lock free instruction sequence is " "available." msgstr "" -#: common.opt:1514 +#: common.opt:1518 msgid "Instrument function entry and exit with profiling calls." msgstr "" -#: common.opt:1518 +#: common.opt:1522 msgid "" "-finstrument-functions-exclude-function-list=name,... Do not instrument " "listed functions." msgstr "" -#: common.opt:1522 +#: common.opt:1526 msgid "" "-finstrument-functions-exclude-file-list=filename,... Do not instrument " "functions listed in files." msgstr "" -#: common.opt:1526 +#: common.opt:1530 msgid "Perform interprocedural constant propagation." msgstr "" -#: common.opt:1530 +#: common.opt:1534 msgid "Perform cloning to make Interprocedural constant propagation stronger." msgstr "" -#: common.opt:1534 +#: common.opt:1538 msgid "" "Perform alignment discovery and propagation to make Interprocedural constant " "propagation stronger." msgstr "" -#: common.opt:1538 +#: common.opt:1542 msgid "Perform interprocedural profile propagation." msgstr "" -#: common.opt:1542 +#: common.opt:1546 msgid "Perform interprocedural points-to analysis." msgstr "" -#: common.opt:1546 +#: common.opt:1550 msgid "Discover pure and const functions." msgstr "" -#: common.opt:1550 +#: common.opt:1554 msgid "Perform Identical Code Folding for functions and read-only variables." msgstr "" -#: common.opt:1554 +#: common.opt:1558 msgid "Perform Identical Code Folding for functions." msgstr "" -#: common.opt:1558 +#: common.opt:1562 msgid "Perform Identical Code Folding for variables." msgstr "" -#: common.opt:1562 +#: common.opt:1566 msgid "Discover readonly and non addressable static variables." msgstr "" -#: common.opt:1574 +#: common.opt:1578 msgid "-fira-algorithm=[CB|priority] Set the used IRA algorithm." msgstr "" -#: common.opt:1577 +#: common.opt:1581 #, c-format msgid "unknown IRA algorithm %qs" msgstr "" -#: common.opt:1587 +#: common.opt:1591 msgid "-fira-region=[one|all|mixed] Set regions for IRA." msgstr "" -#: common.opt:1590 +#: common.opt:1594 #, c-format msgid "unknown IRA region %qs" msgstr "" -#: common.opt:1603 common.opt:1608 +#: common.opt:1607 common.opt:1612 msgid "Use IRA based register pressure calculation" msgstr "" -#: common.opt:1613 +#: common.opt:1617 msgid "Share slots for saving different hard registers." msgstr "" -#: common.opt:1617 +#: common.opt:1621 msgid "Share stack slots for spilled pseudo-registers." msgstr "" -#: common.opt:1621 +#: common.opt:1625 msgid "-fira-verbose=<number>\tControl IRA's level of diagnostic messages." msgstr "" -#: common.opt:1625 +#: common.opt:1629 msgid "Optimize induction variables on trees." msgstr "" -#: common.opt:1629 +#: common.opt:1633 msgid "Use jump tables for sufficiently large switch statements." msgstr "" -#: common.opt:1633 +#: common.opt:1637 msgid "Generate code for functions even if they are fully inlined." msgstr "" -#: common.opt:1637 +#: common.opt:1641 msgid "Generate code for static functions even if they are never called." msgstr "" -#: common.opt:1641 +#: common.opt:1645 msgid "Emit static const variables even if they are not used." msgstr "" -#: common.opt:1645 +#: common.opt:1649 msgid "Give external symbols a leading underscore." msgstr "" -#: common.opt:1653 +#: common.opt:1657 msgid "Do CFG-sensitive rematerialization in LRA." msgstr "" -#: common.opt:1657 +#: common.opt:1661 msgid "Enable link-time optimization." msgstr "" -#: common.opt:1661 +#: common.opt:1665 msgid "Link-time optimization with number of parallel jobs or jobserver." msgstr "" -#: common.opt:1664 +#: common.opt:1668 #, c-format msgid "unknown LTO partitioning model %qs" msgstr "" -#: common.opt:1683 +#: common.opt:1687 msgid "Specify the algorithm to partition symbols and vars at linktime." msgstr "" -#: common.opt:1688 +#: common.opt:1692 msgid "" "-flto-compression-level=<number>\tUse zlib compression level <number> for IL." msgstr "" -#: common.opt:1692 +#: common.opt:1696 msgid "Merge C++ types using One Definition Rule." msgstr "" -#: common.opt:1696 +#: common.opt:1700 msgid "Report various link-time optimization statistics." msgstr "" -#: common.opt:1700 +#: common.opt:1704 msgid "Report various link-time optimization statistics for WPA only." msgstr "" -#: common.opt:1704 +#: common.opt:1708 msgid "Set errno after built-in math functions." msgstr "" -#: common.opt:1708 +#: common.opt:1712 msgid "-fmax-errors=<number>\tMaximum number of errors to report." msgstr "" -#: common.opt:1712 +#: common.opt:1716 msgid "Report on permanent memory allocation." msgstr "" -#: common.opt:1716 +#: common.opt:1720 msgid "Report on permanent memory allocation in WPA only." msgstr "" -#: common.opt:1723 +#: common.opt:1727 msgid "Attempt to merge identical constants and constant variables." msgstr "" -#: common.opt:1727 +#: common.opt:1731 msgid "Attempt to merge identical constants across compilation units." msgstr "" -#: common.opt:1731 +#: common.opt:1735 msgid "Attempt to merge identical debug strings across compilation units." msgstr "" -#: common.opt:1735 +#: common.opt:1739 msgid "" "-fmessage-length=<number>\tLimit diagnostics to <number> characters per " "line. 0 suppresses line-wrapping." msgstr "" -#: common.opt:1739 +#: common.opt:1743 msgid "Perform SMS based modulo scheduling before the first scheduling pass." msgstr "" -#: common.opt:1743 +#: common.opt:1747 msgid "Perform SMS based modulo scheduling with register moves allowed." msgstr "" -#: common.opt:1747 +#: common.opt:1751 msgid "Move loop invariant computations out of loops." msgstr "" -#: common.opt:1751 +#: common.opt:1755 msgid "Use the RTL dead code elimination pass." msgstr "" -#: common.opt:1755 +#: common.opt:1759 msgid "Use the RTL dead store elimination pass." msgstr "" -#: common.opt:1759 +#: common.opt:1763 msgid "" "Enable/Disable the traditional scheduling in loops that already passed " "modulo scheduling." msgstr "" -#: common.opt:1763 +#: common.opt:1767 msgid "Support synchronous non-call exceptions." msgstr "" -#: common.opt:1766 +#: common.opt:1770 #, c-format msgid "options or targets missing after %qs" msgstr "" -#: common.opt:1767 +#: common.opt:1771 msgid "" "-foffload=<targets>=<options> Specify offloading targets and options for " "them." msgstr "" -#: common.opt:1771 +#: common.opt:1775 msgid "" "-foffload-abi=[lp64|ilp32] Set the ABI to use in an offload compiler." msgstr "" -#: common.opt:1774 +#: common.opt:1778 #, c-format msgid "unknown offload ABI %qs" msgstr "" -#: common.opt:1784 +#: common.opt:1788 msgid "When possible do not generate stack frames." msgstr "" -#: common.opt:1788 +#: common.opt:1792 msgid "Enable all optimization info dumps on stderr." msgstr "" -#: common.opt:1792 +#: common.opt:1796 msgid "-fopt-info[-<type>=filename]\tDump compiler optimization details." msgstr "" -#: common.opt:1800 +#: common.opt:1804 msgid "Optimize sibling and tail recursive calls." msgstr "" -#: common.opt:1804 +#: common.opt:1808 msgid "Perform partial inlining." msgstr "" -#: common.opt:1808 common.opt:1812 +#: common.opt:1812 common.opt:1816 msgid "Report on memory allocation before interprocedural optimization." msgstr "" -#: common.opt:1816 +#: common.opt:1820 msgid "Pack structure members together without holes." msgstr "" -#: common.opt:1820 +#: common.opt:1824 msgid "-fpack-struct=<number>\tSet initial maximum structure member alignment." msgstr "" -#: common.opt:1824 +#: common.opt:1828 msgid "Return small aggregates in memory, not registers." msgstr "" -#: common.opt:1828 +#: common.opt:1832 msgid "Perform loop peeling." msgstr "" -#: common.opt:1832 +#: common.opt:1836 msgid "Enable machine specific peephole optimizations." msgstr "" -#: common.opt:1836 +#: common.opt:1840 msgid "Enable an RTL peephole pass before sched2." msgstr "" -#: common.opt:1840 +#: common.opt:1844 msgid "Generate position-independent code if possible (large mode)." msgstr "" -#: common.opt:1844 +#: common.opt:1848 msgid "" "Generate position-independent code for executables if possible (large mode)." msgstr "" -#: common.opt:1848 +#: common.opt:1852 msgid "Generate position-independent code if possible (small mode)." msgstr "" -#: common.opt:1852 +#: common.opt:1856 msgid "" "Generate position-independent code for executables if possible (small mode)." msgstr "" -#: common.opt:1856 +#: common.opt:1860 msgid "" "Use PLT for PIC calls (-fno-plt: load the address from GOT at call site)." msgstr "" -#: common.opt:1860 +#: common.opt:1864 msgid "Specify a plugin to load." msgstr "" -#: common.opt:1864 +#: common.opt:1868 msgid "" "-fplugin-arg-<name>-<key>[=<value>]\tSpecify argument <key>=<value> for " "plugin <name>." msgstr "" -#: common.opt:1868 +#: common.opt:1872 msgid "Run predictive commoning optimization." msgstr "" -#: common.opt:1872 +#: common.opt:1876 msgid "Generate prefetch instructions, if available, for arrays in loops." msgstr "" -#: common.opt:1876 +#: common.opt:1880 msgid "Enable basic program profiling code." msgstr "" -#: common.opt:1880 +#: common.opt:1884 msgid "Insert arc-based program profiling code." msgstr "" -#: common.opt:1884 +#: common.opt:1888 msgid "Set the top-level directory for storing the profile data." msgstr "" -#: common.opt:1889 +#: common.opt:1893 msgid "Enable correction of flow inconsistent profile data input." msgstr "" -#: common.opt:1893 +#: common.opt:1897 msgid "" "Enable common options for generating profile info for profile feedback " "directed optimizations." msgstr "" -#: common.opt:1897 +#: common.opt:1901 msgid "" "Enable common options for generating profile info for profile feedback " "directed optimizations, and set -fprofile-dir=." msgstr "" -#: common.opt:1901 +#: common.opt:1905 msgid "" "Enable common options for performing profile feedback directed optimizations." msgstr "" -#: common.opt:1905 +#: common.opt:1909 msgid "" "Enable common options for performing profile feedback directed " "optimizations, and set -fprofile-dir=." msgstr "" -#: common.opt:1909 +#: common.opt:1913 msgid "Insert code to profile values of expressions." msgstr "" -#: common.opt:1913 +#: common.opt:1917 msgid "Report on consistency of profile." msgstr "" -#: common.opt:1917 +#: common.opt:1921 msgid "Enable function reordering that improves code placement." msgstr "" -#: common.opt:1924 +#: common.opt:1928 msgid "-frandom-seed=<string>\tMake compile reproducible using <string>." msgstr "" -#: common.opt:1934 +#: common.opt:1938 msgid "Record gcc command line switches in the object file." msgstr "" -#: common.opt:1938 +#: common.opt:1942 msgid "Return small aggregates in registers." msgstr "" -#: common.opt:1946 +#: common.opt:1950 msgid "Tell DSE that the storage for a C++ object is dead when the constructor" msgstr "" -#: common.opt:1951 +#: common.opt:1958 msgid "Relief of register pressure through live range shrinkage." msgstr "" -#: common.opt:1955 +#: common.opt:1962 msgid "Perform a register renaming optimization pass." msgstr "" -#: common.opt:1959 +#: common.opt:1966 msgid "Perform a target dependent instruction fusion optimization pass." msgstr "" -#: common.opt:1963 +#: common.opt:1970 msgid "Reorder basic blocks to improve code placement." msgstr "" -#: common.opt:1967 +#: common.opt:1974 msgid "" "-freorder-blocks-algorithm=[simple|stc] Set the used basic block reordering " "algorithm." msgstr "" -#: common.opt:1970 +#: common.opt:1977 #, c-format msgid "unknown basic block reordering algorithm %qs" msgstr "" -#: common.opt:1980 +#: common.opt:1987 msgid "Reorder basic blocks and partition into hot and cold sections." msgstr "" -#: common.opt:1984 +#: common.opt:1991 msgid "Reorder functions to improve code placement." msgstr "" -#: common.opt:1988 +#: common.opt:1995 msgid "Add a common subexpression elimination pass after loop optimizations." msgstr "" -#: common.opt:1996 +#: common.opt:2003 msgid "Disable optimizations that assume default FP rounding behavior." msgstr "" -#: common.opt:2000 +#: common.opt:2007 msgid "Enable scheduling across basic blocks." msgstr "" -#: common.opt:2004 +#: common.opt:2011 msgid "Enable register pressure sensitive insn scheduling." msgstr "" -#: common.opt:2008 +#: common.opt:2015 msgid "Allow speculative motion of non-loads." msgstr "" -#: common.opt:2012 +#: common.opt:2019 msgid "Allow speculative motion of some loads." msgstr "" -#: common.opt:2016 +#: common.opt:2023 msgid "Allow speculative motion of more loads." msgstr "" -#: common.opt:2020 +#: common.opt:2027 msgid "-fsched-verbose=<number>\tSet the verbosity level of the scheduler." msgstr "" -#: common.opt:2024 +#: common.opt:2031 msgid "If scheduling post reload, do superblock scheduling." msgstr "" -#: common.opt:2032 +#: common.opt:2039 msgid "Reschedule instructions before register allocation." msgstr "" -#: common.opt:2036 +#: common.opt:2043 msgid "Reschedule instructions after register allocation." msgstr "" -#: common.opt:2043 +#: common.opt:2050 msgid "Schedule instructions using selective scheduling algorithm." msgstr "" -#: common.opt:2047 +#: common.opt:2054 msgid "Run selective scheduling after reload." msgstr "" -#: common.opt:2051 +#: common.opt:2058 msgid "Perform software pipelining of inner loops during selective scheduling." msgstr "" -#: common.opt:2055 +#: common.opt:2062 msgid "Perform software pipelining of outer loops during selective scheduling." msgstr "" -#: common.opt:2059 +#: common.opt:2066 msgid "Reschedule pipelined regions without pipelining." msgstr "" -#: common.opt:2063 +#: common.opt:2070 msgid "" "Allow interposing function (or variables) by ones with different semantics " "(or initializer) respectively by dynamic linker." msgstr "" -#: common.opt:2069 +#: common.opt:2076 msgid "Allow premature scheduling of queued insns." msgstr "" -#: common.opt:2073 +#: common.opt:2080 msgid "" "-fsched-stalled-insns=<number>\tSet number of queued insns that can be " "prematurely scheduled." msgstr "" -#: common.opt:2081 +#: common.opt:2088 msgid "" "Set dependence distance checking in premature scheduling of queued insns." msgstr "" -#: common.opt:2085 +#: common.opt:2092 msgid "" "-fsched-stalled-insns-dep=<number>\tSet dependence distance checking in " "premature scheduling of queued insns." msgstr "" -#: common.opt:2089 +#: common.opt:2096 msgid "Enable the group heuristic in the scheduler." msgstr "" -#: common.opt:2093 +#: common.opt:2100 msgid "Enable the critical path heuristic in the scheduler." msgstr "" -#: common.opt:2097 +#: common.opt:2104 msgid "Enable the speculative instruction heuristic in the scheduler." msgstr "" -#: common.opt:2101 +#: common.opt:2108 msgid "Enable the rank heuristic in the scheduler." msgstr "" -#: common.opt:2105 +#: common.opt:2112 msgid "Enable the last instruction heuristic in the scheduler." msgstr "" -#: common.opt:2109 +#: common.opt:2116 msgid "Enable the dependent count heuristic in the scheduler." msgstr "" -#: common.opt:2113 +#: common.opt:2120 msgid "Access data in the same section from shared anchor points." msgstr "" -#: common.opt:2125 +#: common.opt:2132 msgid "Turn on Redundant Extensions Elimination pass." msgstr "" -#: common.opt:2129 +#: common.opt:2136 msgid "Show column numbers in diagnostics, when available. Default on." msgstr "" -#: common.opt:2133 +#: common.opt:2140 msgid "Emit function prologues only before parts of the function that need it," msgstr "" -#: common.opt:2138 +#: common.opt:2145 msgid "Disable optimizations observable by IEEE signaling NaNs." msgstr "" -#: common.opt:2142 +#: common.opt:2149 msgid "" "Disable floating point optimizations that ignore the IEEE signedness of zero." msgstr "" -#: common.opt:2146 +#: common.opt:2153 msgid "Convert floating point constants to single precision constants." msgstr "" -#: common.opt:2150 +#: common.opt:2157 msgid "Split lifetimes of induction variables when loops are unrolled." msgstr "" -#: common.opt:2154 +#: common.opt:2161 msgid "Generate discontiguous stack frames." msgstr "" -#: common.opt:2158 +#: common.opt:2165 msgid "Split wide types into independent registers." msgstr "" -#: common.opt:2162 +#: common.opt:2169 msgid "Enable backward propagation of use properties at the SSA level." msgstr "" -#: common.opt:2166 +#: common.opt:2173 msgid "Optimize conditional patterns using SSA PHI nodes." msgstr "" -#: common.opt:2170 +#: common.opt:2177 msgid "" "Optimize amount of stdarg registers saved to stack at start of function." msgstr "" -#: common.opt:2174 +#: common.opt:2181 msgid "Apply variable expansion when loops are unrolled." msgstr "" -#: common.opt:2178 +#: common.opt:2185 msgid "" "-fstack-check=[no|generic|specific]\tInsert stack checking code into the " "program." msgstr "" -#: common.opt:2182 +#: common.opt:2189 msgid "" "Insert stack checking code into the program. Same as -fstack-check=specific." msgstr "" -#: common.opt:2189 +#: common.opt:2196 msgid "" "-fstack-limit-register=<register>\tTrap if the stack goes past <register>." msgstr "" -#: common.opt:2193 +#: common.opt:2200 msgid "-fstack-limit-symbol=<name>\tTrap if the stack goes past symbol <name>." msgstr "" -#: common.opt:2197 +#: common.opt:2204 msgid "Use propolice as a stack protection method." msgstr "" -#: common.opt:2201 +#: common.opt:2208 msgid "Use a stack protection method for every function." msgstr "" -#: common.opt:2205 +#: common.opt:2212 msgid "Use a smart stack protection method for certain functions." msgstr "" -#: common.opt:2209 +#: common.opt:2216 msgid "" "Use stack protection method only for functions with the stack_protect " "attribute." msgstr "" -#: common.opt:2213 +#: common.opt:2220 msgid "Output stack usage information on a per-function basis." msgstr "" -#: common.opt:2225 +#: common.opt:2232 msgid "Assume strict aliasing rules apply." msgstr "" -#: common.opt:2229 +#: common.opt:2236 msgid "Treat signed overflow as undefined." msgstr "" -#: common.opt:2233 +#: common.opt:2240 msgid "Implement __atomic operations via libcalls to legacy __sync functions." msgstr "" -#: common.opt:2237 +#: common.opt:2244 msgid "Check for syntax errors, then stop." msgstr "" -#: common.opt:2241 +#: common.opt:2248 msgid "Create data files needed by \"gcov\"." msgstr "" -#: common.opt:2245 +#: common.opt:2252 msgid "Perform jump threading optimizations." msgstr "" -#: common.opt:2249 +#: common.opt:2256 msgid "Report the time taken by each compiler pass." msgstr "" -#: common.opt:2253 +#: common.opt:2260 msgid "" "-ftls-model=[global-dynamic|local-dynamic|initial-exec|local-exec]\tSet the " "default thread-local storage code generation model." msgstr "" -#: common.opt:2256 +#: common.opt:2263 #, c-format msgid "unknown TLS model %qs" msgstr "" -#: common.opt:2272 +#: common.opt:2279 msgid "Reorder top level functions, variables, and asms." msgstr "" -#: common.opt:2276 +#: common.opt:2283 msgid "Perform superblock formation via tail duplication." msgstr "" -#: common.opt:2283 +#: common.opt:2290 msgid "Assume floating-point operations can trap." msgstr "" -#: common.opt:2287 +#: common.opt:2294 msgid "Trap for signed overflow in addition, subtraction and multiplication." msgstr "" -#: common.opt:2291 +#: common.opt:2298 msgid "Enable SSA-CCP optimization on trees." msgstr "" -#: common.opt:2295 +#: common.opt:2302 msgid "Enable SSA-BIT-CCP optimization on trees." msgstr "" -#: common.opt:2303 +#: common.opt:2310 msgid "Enable loop header copying on trees." msgstr "" -#: common.opt:2311 +#: common.opt:2318 msgid "Enable SSA coalescing of user variables." msgstr "" -#: common.opt:2319 +#: common.opt:2326 msgid "Enable copy propagation on trees." msgstr "" -#: common.opt:2327 +#: common.opt:2334 msgid "Transform condition stores into unconditional ones." msgstr "" -#: common.opt:2331 +#: common.opt:2338 msgid "Perform conversions of switch initializations." msgstr "" -#: common.opt:2335 +#: common.opt:2342 msgid "Enable SSA dead code elimination optimization on trees." msgstr "" -#: common.opt:2339 +#: common.opt:2346 msgid "Enable dominator optimizations." msgstr "" -#: common.opt:2343 +#: common.opt:2350 msgid "Enable tail merging on trees." msgstr "" -#: common.opt:2347 +#: common.opt:2354 msgid "Enable dead store elimination." msgstr "" -#: common.opt:2351 +#: common.opt:2358 msgid "Enable forward propagation on trees." msgstr "" -#: common.opt:2355 +#: common.opt:2362 msgid "Enable Full Redundancy Elimination (FRE) on trees." msgstr "" -#: common.opt:2359 +#: common.opt:2366 msgid "Enable string length optimizations on trees." msgstr "" -#: common.opt:2363 +#: common.opt:2370 msgid "Detect paths that trigger erroneous or undefined behavior due to" msgstr "" -#: common.opt:2369 +#: common.opt:2376 msgid "" "Detect paths that trigger erroneous or undefined behavior due a null value" msgstr "" -#: common.opt:2376 +#: common.opt:2383 msgid "Enable loop distribution on trees." msgstr "" -#: common.opt:2380 +#: common.opt:2387 msgid "Enable loop distribution for patterns transformed into a library call." msgstr "" -#: common.opt:2384 +#: common.opt:2391 msgid "Enable loop invariant motion on trees." msgstr "" -#: common.opt:2392 +#: common.opt:2399 msgid "Create canonical induction variables in loops." msgstr "" -#: common.opt:2396 +#: common.opt:2403 msgid "Enable loop optimizations on tree level." msgstr "" -#: common.opt:2400 +#: common.opt:2407 msgid "Enable automatic parallelization of loops." msgstr "" -#: common.opt:2404 +#: common.opt:2411 msgid "Enable hoisting loads from conditional pointers." msgstr "" -#: common.opt:2408 +#: common.opt:2415 msgid "Enable SSA-PRE optimization on trees." msgstr "" -#: common.opt:2412 +#: common.opt:2419 msgid "" "In SSA-PRE optimization on trees, enable partial-partial redundancy " "elimination." msgstr "" -#: common.opt:2416 +#: common.opt:2423 msgid "Perform function-local points-to analysis on trees." msgstr "" -#: common.opt:2420 +#: common.opt:2427 msgid "Enable reassociation on tree level." msgstr "" -#: common.opt:2428 +#: common.opt:2435 msgid "Enable SSA code sinking on trees." msgstr "" -#: common.opt:2432 +#: common.opt:2439 msgid "Perform straight-line strength reduction." msgstr "" -#: common.opt:2436 +#: common.opt:2443 msgid "Perform scalar replacement of aggregates." msgstr "" -#: common.opt:2440 +#: common.opt:2447 msgid "Replace temporary expressions in the SSA->normal pass." msgstr "" -#: common.opt:2444 +#: common.opt:2451 msgid "Perform live range splitting during the SSA->normal pass." msgstr "" -#: common.opt:2448 +#: common.opt:2455 msgid "Perform Value Range Propagation on trees." msgstr "" -#: common.opt:2452 +#: common.opt:2459 msgid "Split paths leading to loop backedges." msgstr "" -#: common.opt:2456 +#: common.opt:2463 +msgid "Assume common declarations may be overridden with ones with a larger" +msgstr "" + +#: common.opt:2468 msgid "Compile whole compilation unit at a time." msgstr "" -#: common.opt:2460 +#: common.opt:2472 msgid "Perform loop unrolling when iteration count is known." msgstr "" -#: common.opt:2464 +#: common.opt:2476 msgid "Perform loop unrolling for all loops." msgstr "" -#: common.opt:2471 +#: common.opt:2483 msgid "Allow loop optimizations to assume that the loops behave in normal way." msgstr "" -#: common.opt:2475 +#: common.opt:2487 msgid "Allow optimization for floating-point arithmetic which may change the" msgstr "" -#: common.opt:2480 +#: common.opt:2492 msgid "Same as -fassociative-math for expressions which include division." msgstr "" -#: common.opt:2488 +#: common.opt:2500 msgid "Allow math optimizations that may violate IEEE or ISO standards." msgstr "" -#: common.opt:2492 +#: common.opt:2504 msgid "Perform loop unswitching." msgstr "" -#: common.opt:2496 +#: common.opt:2508 msgid "Just generate unwind tables for exception handling." msgstr "" -#: common.opt:2500 +#: common.opt:2512 msgid "Use the bfd linker instead of the default linker." msgstr "" -#: common.opt:2504 +#: common.opt:2516 msgid "Use the gold linker instead of the default linker." msgstr "" -#: common.opt:2516 +#: common.opt:2528 msgid "Perform variable tracking." msgstr "" -#: common.opt:2524 +#: common.opt:2536 msgid "Perform variable tracking by annotating assignments." msgstr "" -#: common.opt:2530 +#: common.opt:2542 msgid "Toggle -fvar-tracking-assignments." msgstr "" -#: common.opt:2538 +#: common.opt:2550 msgid "" "Perform variable tracking and also tag variables that are uninitialized." msgstr "" -#: common.opt:2542 +#: common.opt:2554 msgid "Enable vectorization on trees." msgstr "" -#: common.opt:2550 +#: common.opt:2562 msgid "Enable loop vectorization on trees." msgstr "" -#: common.opt:2554 +#: common.opt:2566 msgid "Enable basic block vectorization (SLP) on trees." msgstr "" -#: common.opt:2558 +#: common.opt:2570 msgid "Specifies the cost model for vectorization." msgstr "" -#: common.opt:2562 +#: common.opt:2574 msgid "" "Specifies the vectorization cost model for code marked with a simd directive." msgstr "" -#: common.opt:2565 +#: common.opt:2577 #, c-format msgid "unknown vectorizer cost model %qs" msgstr "" -#: common.opt:2578 +#: common.opt:2590 msgid "" "Enables the dynamic vectorizer cost model. Preserved for backward " "compatibility." msgstr "" -#: common.opt:2582 +#: common.opt:2594 msgid "" "Enables the unlimited vectorizer cost model. Preserved for backward " "compatibility." msgstr "" -#: common.opt:2590 +#: common.opt:2602 msgid "Enable copy propagation of scalar-evolution information." msgstr "" -#: common.opt:2600 +#: common.opt:2612 msgid "Add extra commentary to assembler output." msgstr "" -#: common.opt:2604 +#: common.opt:2616 msgid "" "-fvisibility=[default|internal|hidden|protected]\tSet the default symbol " "visibility." msgstr "" -#: common.opt:2607 +#: common.opt:2619 #, c-format msgid "unrecognized visibility value %qs" msgstr "" -#: common.opt:2623 +#: common.opt:2635 msgid "Validate vtable pointers before using them." msgstr "" -#: common.opt:2626 +#: common.opt:2638 #, c-format msgid "unknown vtable verify initialization priority %qs" msgstr "" -#: common.opt:2639 +#: common.opt:2651 msgid "Output vtable verification counters." msgstr "" -#: common.opt:2643 +#: common.opt:2655 msgid "Output vtable verification pointer sets information." msgstr "" -#: common.opt:2647 +#: common.opt:2659 msgid "Use expression value profiles in optimizations." msgstr "" -#: common.opt:2651 +#: common.opt:2663 msgid "Construct webs and split unrelated uses of single variable." msgstr "" -#: common.opt:2655 +#: common.opt:2667 msgid "Enable conditional dead code elimination for builtin calls." msgstr "" -#: common.opt:2659 +#: common.opt:2671 msgid "Perform whole program optimizations." msgstr "" -#: common.opt:2663 +#: common.opt:2675 msgid "Assume signed arithmetic overflow wraps around." msgstr "" -#: common.opt:2667 +#: common.opt:2679 msgid "Put zero initialized data in the bss section." msgstr "" -#: common.opt:2671 +#: common.opt:2683 msgid "Generate debug information in default format." msgstr "" -#: common.opt:2675 +#: common.opt:2687 msgid "Generate debug information in COFF format." msgstr "" -#: common.opt:2679 +#: common.opt:2691 msgid "Generate debug information in default version of DWARF format." msgstr "" -#: common.opt:2683 +#: common.opt:2695 msgid "Generate debug information in DWARF v2 (or later) format." msgstr "" -#: common.opt:2687 +#: common.opt:2699 msgid "Generate debug information in default extended format." msgstr "" -#: common.opt:2691 +#: common.opt:2703 msgid "Don't generate DWARF pubnames and pubtypes sections." msgstr "" -#: common.opt:2695 +#: common.opt:2707 msgid "Generate DWARF pubnames and pubtypes sections." msgstr "" -#: common.opt:2699 +#: common.opt:2711 msgid "Generate DWARF pubnames and pubtypes sections with GNU extensions." msgstr "" -#: common.opt:2703 +#: common.opt:2715 msgid "Don't record gcc command line switches in DWARF DW_AT_producer." msgstr "" -#: common.opt:2707 +#: common.opt:2719 msgid "Record gcc command line switches in DWARF DW_AT_producer." msgstr "" -#: common.opt:2711 +#: common.opt:2723 msgid "Don't generate debug information in separate .dwo files." msgstr "" -#: common.opt:2715 +#: common.opt:2727 msgid "Generate debug information in separate .dwo files." msgstr "" -#: common.opt:2719 +#: common.opt:2731 msgid "Generate debug information in STABS format." msgstr "" -#: common.opt:2723 +#: common.opt:2735 msgid "Generate debug information in extended STABS format." msgstr "" -#: common.opt:2727 +#: common.opt:2739 msgid "Emit DWARF additions beyond selected version." msgstr "" -#: common.opt:2731 +#: common.opt:2743 msgid "Don't emit DWARF additions beyond selected version." msgstr "" -#: common.opt:2735 +#: common.opt:2747 msgid "Toggle debug information generation." msgstr "" -#: common.opt:2739 +#: common.opt:2751 msgid "Generate debug information in VMS format." msgstr "" -#: common.opt:2743 +#: common.opt:2755 msgid "Generate debug information in XCOFF format." msgstr "" -#: common.opt:2747 +#: common.opt:2759 msgid "Generate debug information in extended XCOFF format." msgstr "" -#: common.opt:2765 +#: common.opt:2777 msgid "Generate compressed debug sections." msgstr "" -#: common.opt:2769 +#: common.opt:2781 msgid "-gz=<format>\tGenerate compressed debug sections in format <format>." msgstr "" -#: common.opt:2776 +#: common.opt:2788 msgid "-iplugindir=<dir>\tSet <dir> to be the default plugin directory." msgstr "" -#: common.opt:2780 +#: common.opt:2792 msgid "-imultiarch <dir>\tSet <dir> to be the multiarch include subdirectory." msgstr "" -#: common.opt:2802 +#: common.opt:2814 msgid "-o <file>\tPlace output into <file>." msgstr "" -#: common.opt:2806 +#: common.opt:2818 msgid "Enable function profiling." msgstr "" -#: common.opt:2816 +#: common.opt:2828 msgid "Like -pedantic but issue them as errors." msgstr "" -#: common.opt:2856 +#: common.opt:2868 msgid "Do not display functions compiled or elapsed time." msgstr "" -#: common.opt:2888 +#: common.opt:2900 msgid "Enable verbose output." msgstr "" -#: common.opt:2892 +#: common.opt:2904 msgid "Display the compiler's version." msgstr "" -#: common.opt:2896 +#: common.opt:2908 msgid "Suppress warnings." msgstr "" -#: common.opt:2906 +#: common.opt:2918 msgid "Create a shared library." msgstr "" -#: common.opt:2951 +#: common.opt:2963 msgid "Don't create a position independent executable." msgstr "" -#: common.opt:2955 +#: common.opt:2967 msgid "Create a position independent executable." msgstr "" -#: common.opt:2962 +#: common.opt:2974 msgid "Use caller save register across calls if possible." msgstr "" -#: go/gofrontend/expressions.cc:93 c-family/c-common.c:1524 cp/cvt.c:1174 -#: cp/cvt.c:1423 +#: go/gofrontend/expressions.cc:93 c-family/c-common.c:1524 cp/cvt.c:1175 +#: cp/cvt.c:1424 #, gcc-internal-format msgid "value computed is not used" msgstr "" @@ -15575,8 +15611,8 @@ msgstr "" msgid "expected boolean type" msgstr "" -#: go/gofrontend/expressions.cc:4015 c/c-parser.c:12533 c/c-parser.c:12540 -#: cp/parser.c:31595 cp/parser.c:31602 +#: go/gofrontend/expressions.cc:4015 c/c-parser.c:12555 c/c-parser.c:12562 +#: cp/parser.c:31645 cp/parser.c:31652 #, gcc-internal-format msgid "expected integer" msgstr "" @@ -15908,77 +15944,77 @@ msgstr "" msgid "cannot use type %s as type %s" msgstr "" -#: go/gofrontend/types.cc:3500 +#: go/gofrontend/types.cc:3503 msgid "different receiver types" msgstr "" -#: go/gofrontend/types.cc:3520 go/gofrontend/types.cc:3533 -#: go/gofrontend/types.cc:3548 +#: go/gofrontend/types.cc:3523 go/gofrontend/types.cc:3536 +#: go/gofrontend/types.cc:3551 msgid "different number of parameters" msgstr "" -#: go/gofrontend/types.cc:3541 +#: go/gofrontend/types.cc:3544 msgid "different parameter types" msgstr "" -#: go/gofrontend/types.cc:3556 +#: go/gofrontend/types.cc:3559 msgid "different varargs" msgstr "" -#: go/gofrontend/types.cc:3565 go/gofrontend/types.cc:3578 -#: go/gofrontend/types.cc:3593 +#: go/gofrontend/types.cc:3568 go/gofrontend/types.cc:3581 +#: go/gofrontend/types.cc:3596 msgid "different number of results" msgstr "" -#: go/gofrontend/types.cc:3586 +#: go/gofrontend/types.cc:3589 msgid "different result types" msgstr "" -#: go/gofrontend/types.cc:7393 +#: go/gofrontend/types.cc:7396 #, c-format msgid "need explicit conversion; missing method %s%s%s" msgstr "" -#: go/gofrontend/types.cc:7410 go/gofrontend/types.cc:7552 +#: go/gofrontend/types.cc:7413 go/gofrontend/types.cc:7555 #, c-format msgid "incompatible type for method %s%s%s" msgstr "" -#: go/gofrontend/types.cc:7414 go/gofrontend/types.cc:7556 +#: go/gofrontend/types.cc:7417 go/gofrontend/types.cc:7559 #, c-format msgid "incompatible type for method %s%s%s (%s)" msgstr "" -#: go/gofrontend/types.cc:7493 go/gofrontend/types.cc:7506 +#: go/gofrontend/types.cc:7496 go/gofrontend/types.cc:7509 msgid "pointer to interface type has no methods" msgstr "" -#: go/gofrontend/types.cc:7495 go/gofrontend/types.cc:7508 +#: go/gofrontend/types.cc:7498 go/gofrontend/types.cc:7511 msgid "type has no methods" msgstr "" -#: go/gofrontend/types.cc:7529 +#: go/gofrontend/types.cc:7532 #, c-format msgid "ambiguous method %s%s%s" msgstr "" -#: go/gofrontend/types.cc:7532 +#: go/gofrontend/types.cc:7535 #, c-format msgid "missing method %s%s%s" msgstr "" -#: go/gofrontend/types.cc:7573 +#: go/gofrontend/types.cc:7576 #, c-format msgid "method %s%s%s requires a pointer receiver" msgstr "" -#: go/gofrontend/types.cc:7591 +#: go/gofrontend/types.cc:7594 #, c-format msgid "method %s%s%s is marked go:nointerface" msgstr "" #. Warn about and ignore all others for now, but store them. -#: attribs.c:436 c-family/c-common.c:8641 objc/objc-act.c:4956 +#: attribs.c:436 c-family/c-common.c:8643 objc/objc-act.c:4956 #: objc/objc-act.c:6925 objc/objc-act.c:8114 objc/objc-act.c:8165 #, gcc-internal-format msgid "%qE attribute directive ignored" @@ -16093,7 +16129,7 @@ msgstr "" msgid "invalid third argument to %<__builtin_prefetch%>; using zero" msgstr "" -#: builtins.c:4176 gimplify.c:2403 +#: builtins.c:4176 gimplify.c:2414 #, gcc-internal-format msgid "too few arguments to function %<va_start%>" msgstr "" @@ -16184,7 +16220,7 @@ msgstr "" #. All valid uses of __builtin_va_arg_pack () are removed during #. inlining. -#: builtins.c:5831 expr.c:10546 +#: builtins.c:5831 expr.c:10565 #, gcc-internal-format msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>" msgstr "" @@ -16213,64 +16249,64 @@ msgstr "" msgid "target format does not support infinity" msgstr "" -#: builtins.c:8838 +#: builtins.c:8916 #, gcc-internal-format msgid "%<va_start%> used in function with fixed args" msgstr "" -#: builtins.c:8846 +#: builtins.c:8924 #, gcc-internal-format msgid "wrong number of arguments to function %<va_start%>" msgstr "" -#: builtins.c:8861 +#: builtins.c:8939 #, gcc-internal-format msgid "%<__builtin_next_arg%> called without an argument" msgstr "" -#: builtins.c:8866 +#: builtins.c:8944 #, gcc-internal-format msgid "wrong number of arguments to function %<__builtin_next_arg%>" msgstr "" -#: builtins.c:8898 +#: builtins.c:8976 #, gcc-internal-format msgid "second parameter of %<va_start%> not last named argument" msgstr "" -#: builtins.c:8911 +#: builtins.c:8989 #, gcc-internal-format msgid "" -"undefined behaviour when second parameter of %<va_start%> is declared with " +"undefined behavior when second parameter of %<va_start%> is declared with " "%<register%> storage" msgstr "" -#: builtins.c:8940 +#: builtins.c:9018 #, gcc-internal-format msgid "%Kfirst argument of %D must be a pointer, second integer constant" msgstr "" -#: builtins.c:8953 +#: builtins.c:9031 #, gcc-internal-format msgid "%Klast argument of %D is not integer constant between 0 and 3" msgstr "" -#: builtins.c:8998 builtins.c:9149 builtins.c:9206 +#: builtins.c:9076 builtins.c:9227 builtins.c:9284 #, gcc-internal-format msgid "%Kcall to %D will always overflow destination buffer" msgstr "" -#: builtins.c:9139 +#: builtins.c:9217 #, gcc-internal-format msgid "%Kcall to %D might overflow destination buffer" msgstr "" -#: builtins.c:9227 +#: builtins.c:9305 #, gcc-internal-format msgid "%Kattempt to free a non-heap object %qD" msgstr "" -#: builtins.c:9230 +#: builtins.c:9308 #, gcc-internal-format msgid "%Kattempt to free a non-heap object" msgstr "" @@ -16285,74 +16321,74 @@ msgstr "" msgid "passing too large argument on stack" msgstr "" -#: cfgexpand.c:1631 function.c:986 varasm.c:2158 +#: cfgexpand.c:1643 function.c:986 varasm.c:2158 #, gcc-internal-format msgid "size of variable %q+D is too large" msgstr "" -#: cfgexpand.c:1643 +#: cfgexpand.c:1655 #, gcc-internal-format msgid "cannot allocate stack for variable %q+D, naked function." msgstr "" -#: cfgexpand.c:2699 +#: cfgexpand.c:2711 #, gcc-internal-format msgid "too many alternatives in %<asm%>" msgstr "" -#: cfgexpand.c:2706 +#: cfgexpand.c:2718 #, gcc-internal-format msgid "operand constraints for %<asm%> differ in number of alternatives" msgstr "" -#: cfgexpand.c:2727 +#: cfgexpand.c:2739 #, gcc-internal-format msgid "asm-specifier for variable %qE conflicts with asm clobber list" msgstr "" -#: cfgexpand.c:2801 +#: cfgexpand.c:2813 #, gcc-internal-format msgid "more than %d operands in %<asm%>" msgstr "" #. ??? Diagnose during gimplification? -#: cfgexpand.c:2854 +#: cfgexpand.c:2866 #, gcc-internal-format msgid "unknown register name %qs in %<asm%>" msgstr "" #. ??? Diagnose during gimplification? -#: cfgexpand.c:2875 +#: cfgexpand.c:2887 #, gcc-internal-format msgid "PIC register clobbered by %qs in %<asm%>" msgstr "" -#: cfgexpand.c:2980 +#: cfgexpand.c:2992 #, gcc-internal-format, gfc-internal-format msgid "output number %d not directly addressable" msgstr "" -#: cfgexpand.c:3061 +#: cfgexpand.c:3073 #, gcc-internal-format msgid "asm operand %d probably doesn%'t match constraints" msgstr "" -#: cfgexpand.c:3244 +#: cfgexpand.c:3256 #, gcc-internal-format msgid "asm clobber conflict with output operand" msgstr "" -#: cfgexpand.c:3248 +#: cfgexpand.c:3260 #, gcc-internal-format msgid "asm clobber conflict with input operand" msgstr "" -#: cfgexpand.c:6203 +#: cfgexpand.c:6215 #, gcc-internal-format msgid "stack protector not protecting local variables: variable length buffer" msgstr "" -#: cfgexpand.c:6207 +#: cfgexpand.c:6219 #, gcc-internal-format, gfc-internal-format msgid "" "stack protector not protecting function: all local arrays are less than %d " @@ -16449,87 +16485,87 @@ msgstr "" msgid "%s does not support can_remove_branch_p" msgstr "" -#: cfghooks.c:457 +#: cfghooks.c:470 #, gcc-internal-format, gfc-internal-format msgid "%s does not support redirect_edge_and_branch_force" msgstr "" -#: cfghooks.c:495 +#: cfghooks.c:508 #, gcc-internal-format, gfc-internal-format msgid "%s does not support split_block" msgstr "" -#: cfghooks.c:562 +#: cfghooks.c:575 #, gcc-internal-format, gfc-internal-format msgid "%s does not support move_block_after" msgstr "" -#: cfghooks.c:575 +#: cfghooks.c:588 #, gcc-internal-format, gfc-internal-format msgid "%s does not support delete_basic_block" msgstr "" -#: cfghooks.c:622 +#: cfghooks.c:635 #, gcc-internal-format, gfc-internal-format msgid "%s does not support split_edge" msgstr "" -#: cfghooks.c:697 +#: cfghooks.c:710 #, gcc-internal-format, gfc-internal-format msgid "%s does not support create_basic_block" msgstr "" -#: cfghooks.c:738 +#: cfghooks.c:751 #, gcc-internal-format, gfc-internal-format msgid "%s does not support can_merge_blocks_p" msgstr "" -#: cfghooks.c:749 +#: cfghooks.c:762 #, gcc-internal-format, gfc-internal-format msgid "%s does not support predict_edge" msgstr "" -#: cfghooks.c:758 +#: cfghooks.c:771 #, gcc-internal-format, gfc-internal-format msgid "%s does not support predicted_by_p" msgstr "" -#: cfghooks.c:772 +#: cfghooks.c:785 #, gcc-internal-format, gfc-internal-format msgid "%s does not support merge_blocks" msgstr "" -#: cfghooks.c:853 +#: cfghooks.c:866 #, gcc-internal-format, gfc-internal-format msgid "%s does not support make_forwarder_block" msgstr "" -#: cfghooks.c:1009 +#: cfghooks.c:1022 #, gcc-internal-format, gfc-internal-format msgid "%s does not support force_nonfallthru" msgstr "" -#: cfghooks.c:1037 +#: cfghooks.c:1050 #, gcc-internal-format, gfc-internal-format msgid "%s does not support can_duplicate_block_p" msgstr "" -#: cfghooks.c:1059 +#: cfghooks.c:1072 #, gcc-internal-format, gfc-internal-format msgid "%s does not support duplicate_block" msgstr "" -#: cfghooks.c:1153 +#: cfghooks.c:1166 #, gcc-internal-format, gfc-internal-format msgid "%s does not support block_ends_with_call_p" msgstr "" -#: cfghooks.c:1164 +#: cfghooks.c:1177 #, gcc-internal-format, gfc-internal-format msgid "%s does not support block_ends_with_condjump_p" msgstr "" -#: cfghooks.c:1182 +#: cfghooks.c:1195 #, gcc-internal-format, gfc-internal-format msgid "%s does not support flow_call_edges_add" msgstr "" @@ -16854,342 +16890,342 @@ msgstr "" msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)" msgstr "" -#: cgraph.c:2724 +#: cgraph.c:2728 #, gcc-internal-format msgid "caller edge count is negative" msgstr "" -#: cgraph.c:2729 +#: cgraph.c:2733 #, gcc-internal-format msgid "caller edge frequency is negative" msgstr "" -#: cgraph.c:2734 +#: cgraph.c:2738 #, gcc-internal-format msgid "caller edge frequency is too large" msgstr "" -#: cgraph.c:2818 +#: cgraph.c:2822 #, gcc-internal-format, gfc-internal-format msgid "aux field set for edge %s->%s" msgstr "" -#: cgraph.c:2825 +#: cgraph.c:2829 #, gcc-internal-format msgid "execution count is negative" msgstr "" -#: cgraph.c:2830 +#: cgraph.c:2834 #, gcc-internal-format msgid "inline clone in same comdat group list" msgstr "" -#: cgraph.c:2835 +#: cgraph.c:2839 #, gcc-internal-format msgid "local symbols must be defined" msgstr "" -#: cgraph.c:2840 +#: cgraph.c:2844 #, gcc-internal-format msgid "externally visible inline clone" msgstr "" -#: cgraph.c:2845 +#: cgraph.c:2849 #, gcc-internal-format msgid "inline clone with address taken" msgstr "" -#: cgraph.c:2850 +#: cgraph.c:2854 #, gcc-internal-format msgid "inline clone is forced to output" msgstr "" -#: cgraph.c:2857 +#: cgraph.c:2861 #, gcc-internal-format, gfc-internal-format msgid "aux field set for indirect edge from %s" msgstr "" -#: cgraph.c:2864 +#: cgraph.c:2868 #, gcc-internal-format, gfc-internal-format msgid "" "An indirect edge from %s is not marked as indirect or has associated " "indirect_info, the corresponding statement is: " msgstr "" -#: cgraph.c:2879 +#: cgraph.c:2883 #, gcc-internal-format, gfc-internal-format msgid "comdat-local function called by %s outside its comdat" msgstr "" -#: cgraph.c:2889 +#: cgraph.c:2893 #, gcc-internal-format msgid "inlined_to pointer is wrong" msgstr "" -#: cgraph.c:2894 +#: cgraph.c:2898 #, gcc-internal-format msgid "multiple inline callers" msgstr "" -#: cgraph.c:2901 +#: cgraph.c:2905 #, gcc-internal-format msgid "inlined_to pointer set for noninline callers" msgstr "" -#: cgraph.c:2920 +#: cgraph.c:2924 #, gcc-internal-format, gfc-internal-format msgid "caller edge frequency %i does not match BB frequency %i" msgstr "" -#: cgraph.c:2938 +#: cgraph.c:2942 #, gcc-internal-format, gfc-internal-format msgid "indirect call frequency %i does not match BB frequency %i" msgstr "" -#: cgraph.c:2947 +#: cgraph.c:2951 #, gcc-internal-format msgid "inlined_to pointer is set but no predecessors found" msgstr "" -#: cgraph.c:2952 +#: cgraph.c:2956 #, gcc-internal-format msgid "inlined_to pointer refers to itself" msgstr "" -#: cgraph.c:2964 +#: cgraph.c:2968 #, gcc-internal-format msgid "cgraph_node has wrong clone_of" msgstr "" -#: cgraph.c:2976 +#: cgraph.c:2980 #, gcc-internal-format msgid "cgraph_node has wrong clone list" msgstr "" -#: cgraph.c:2982 +#: cgraph.c:2986 #, gcc-internal-format msgid "cgraph_node is in clone list but it is not clone" msgstr "" -#: cgraph.c:2987 +#: cgraph.c:2991 #, gcc-internal-format msgid "cgraph_node has wrong prev_clone pointer" msgstr "" -#: cgraph.c:2992 +#: cgraph.c:2996 #, gcc-internal-format msgid "double linked list of clones corrupted" msgstr "" -#: cgraph.c:3004 +#: cgraph.c:3008 #, gcc-internal-format msgid "Alias has call edges" msgstr "" -#: cgraph.c:3012 +#: cgraph.c:3016 #, gcc-internal-format msgid "Alias has non-alias reference" msgstr "" -#: cgraph.c:3017 +#: cgraph.c:3021 #, gcc-internal-format msgid "Alias has more than one alias reference" msgstr "" -#: cgraph.c:3024 +#: cgraph.c:3028 #, gcc-internal-format msgid "Analyzed alias has no reference" msgstr "" -#: cgraph.c:3033 +#: cgraph.c:3037 #, gcc-internal-format msgid "Instrumentation clone does not reference original node" msgstr "" -#: cgraph.c:3040 +#: cgraph.c:3044 #, gcc-internal-format msgid "Not instrumented node has non-NULL original declaration" msgstr "" -#: cgraph.c:3050 +#: cgraph.c:3054 #, gcc-internal-format msgid "Instrumented node has wrong original declaration" msgstr "" -#: cgraph.c:3068 +#: cgraph.c:3072 #, gcc-internal-format msgid "Node has more than one chkp reference" msgstr "" -#: cgraph.c:3073 +#: cgraph.c:3077 #, gcc-internal-format msgid "Wrong node is referenced with chkp reference" msgstr "" -#: cgraph.c:3081 +#: cgraph.c:3085 #, gcc-internal-format msgid "Analyzed node has no reference to instrumented version" msgstr "" -#: cgraph.c:3095 +#: cgraph.c:3099 #, gcc-internal-format msgid "Alias chain for instrumented node is broken" msgstr "" -#: cgraph.c:3104 +#: cgraph.c:3108 #, gcc-internal-format msgid "No edge out of thunk node" msgstr "" -#: cgraph.c:3109 +#: cgraph.c:3113 #, gcc-internal-format msgid "More than one edge out of thunk node" msgstr "" -#: cgraph.c:3114 +#: cgraph.c:3118 #, gcc-internal-format msgid "Thunk is not supposed to have body" msgstr "" -#: cgraph.c:3120 +#: cgraph.c:3124 #, gcc-internal-format msgid "Instrumentation thunk has wrong edge callee" msgstr "" -#: cgraph.c:3156 +#: cgraph.c:3160 #, gcc-internal-format msgid "shared call_stmt:" msgstr "" -#: cgraph.c:3164 +#: cgraph.c:3168 #, gcc-internal-format msgid "edge points to wrong declaration:" msgstr "" -#: cgraph.c:3173 +#: cgraph.c:3177 #, gcc-internal-format msgid "" "an indirect edge with unknown callee corresponding to a call_stmt with a " "known declaration:" msgstr "" -#: cgraph.c:3183 +#: cgraph.c:3187 #, gcc-internal-format msgid "missing callgraph edge for call stmt:" msgstr "" -#: cgraph.c:3193 +#: cgraph.c:3197 #, gcc-internal-format msgid "reference to dead statement" msgstr "" -#: cgraph.c:3206 +#: cgraph.c:3210 #, gcc-internal-format, gfc-internal-format msgid "edge %s->%s has no corresponding call_stmt" msgstr "" -#: cgraph.c:3218 +#: cgraph.c:3222 #, gcc-internal-format, gfc-internal-format msgid "an indirect edge from %s has no corresponding call_stmt" msgstr "" -#: cgraph.c:3229 +#: cgraph.c:3233 #, gcc-internal-format msgid "verify_cgraph_node failed" msgstr "" -#: cgraph.c:3328 varpool.c:304 +#: cgraph.c:3332 varpool.c:304 #, gcc-internal-format, gfc-internal-format msgid "%s: section %s is missing" msgstr "" -#: cgraphunit.c:682 +#: cgraphunit.c:680 #, gcc-internal-format msgid "%<weakref%> attribute should be accompanied with an %<alias%> attribute" msgstr "" -#: cgraphunit.c:734 cgraphunit.c:770 +#: cgraphunit.c:732 cgraphunit.c:768 #, gcc-internal-format msgid "%<externally_visible%> attribute have effect only on public objects" msgstr "" -#: cgraphunit.c:741 +#: cgraphunit.c:739 #, gcc-internal-format msgid "%<weakref%> attribute ignored because function is defined" msgstr "" -#: cgraphunit.c:753 +#: cgraphunit.c:751 #, gcc-internal-format msgid "always_inline function might not be inlinable" msgstr "" -#: cgraphunit.c:778 +#: cgraphunit.c:776 #, gcc-internal-format msgid "%<weakref%> attribute ignored because variable is initialized" msgstr "" #. include_self= -#: cgraphunit.c:937 c/c-decl.c:10747 +#: cgraphunit.c:936 c/c-decl.c:10760 #, gcc-internal-format msgid "%q+F used but never defined" msgstr "" -#: cgraphunit.c:939 c/c-decl.c:10756 cp/decl.c:895 +#: cgraphunit.c:938 c/c-decl.c:10769 cp/decl.c:890 #, gcc-internal-format msgid "%q+F declared %<static%> but never defined" msgstr "" -#: cgraphunit.c:978 +#: cgraphunit.c:982 #, gcc-internal-format msgid "%qD defined but not used" msgstr "" -#: cgraphunit.c:1267 c-family/c-pragma.c:335 +#: cgraphunit.c:1271 c-family/c-pragma.c:335 #, gcc-internal-format msgid "%q+D aliased to undefined symbol %qE" msgstr "" -#: cgraphunit.c:1283 +#: cgraphunit.c:1287 #, gcc-internal-format msgid "%q+D aliased to external symbol %qE" msgstr "" -#: cgraphunit.c:1304 +#: cgraphunit.c:1308 #, gcc-internal-format msgid "%q+D alias in between function and variable is not supported" msgstr "" -#: cgraphunit.c:1306 +#: cgraphunit.c:1310 #, gcc-internal-format msgid "%q+D aliased declaration" msgstr "" -#: cgraphunit.c:1377 +#: cgraphunit.c:1381 #, gcc-internal-format msgid "failed to reclaim unneeded function" msgstr "" -#: cgraphunit.c:1405 +#: cgraphunit.c:1409 #, gcc-internal-format msgid "failed to reclaim unneeded function in same comdat group" msgstr "" -#: cgraphunit.c:1647 +#: cgraphunit.c:1651 #, gcc-internal-format msgid "generic thunk code fails for method %qD which uses %<...%>" msgstr "" -#: cgraphunit.c:2001 +#: cgraphunit.c:2008 #, gcc-internal-format msgid "size of return value of %q+D is %u bytes" msgstr "" -#: cgraphunit.c:2004 +#: cgraphunit.c:2011 #, gcc-internal-format msgid "size of return value of %q+D is larger than %wd bytes" msgstr "" -#: cgraphunit.c:2498 +#: cgraphunit.c:2505 #, gcc-internal-format msgid "nodes with unreleased memory found" msgstr "" @@ -17234,7 +17270,7 @@ msgstr "" msgid "pex_init failed: %m" msgstr "" -#: collect-utils.c:192 collect2.c:2370 collect2.c:2568 gcc.c:8289 +#: collect-utils.c:192 collect2.c:2370 collect2.c:2568 gcc.c:8345 #, gcc-internal-format msgid "%s: %m" msgstr "" @@ -17244,7 +17280,7 @@ msgstr "" msgid "COLLECT_LTO_WRAPPER must be set" msgstr "" -#: collect2.c:966 gcc.c:7246 lto-wrapper.c:1393 +#: collect2.c:966 gcc.c:7255 lto-wrapper.c:1479 #: config/i386/intelmic-mkoffload.c:554 config/nvptx/mkoffload.c:403 #, gcc-internal-format msgid "atexit failed" @@ -17255,7 +17291,7 @@ msgstr "" msgid "no arguments" msgstr "" -#: collect2.c:1303 opts.c:885 +#: collect2.c:1303 opts.c:890 #, gcc-internal-format msgid "LTO support has not been enabled in this configuration" msgstr "" @@ -17355,40 +17391,40 @@ msgstr "" msgid "conversion to incomplete type" msgstr "" -#: convert.c:944 +#: convert.c:942 #, gcc-internal-format msgid "" "can%'t convert a vector of type %qT to type %qT which has different size" msgstr "" -#: convert.c:952 +#: convert.c:950 #, gcc-internal-format msgid "aggregate value used where an integer was expected" msgstr "" -#: convert.c:1043 +#: convert.c:1035 #, gcc-internal-format msgid "pointer value used where a complex was expected" msgstr "" -#: convert.c:1047 +#: convert.c:1039 #, gcc-internal-format msgid "aggregate value used where a complex was expected" msgstr "" -#: convert.c:1081 +#: convert.c:1073 #, gcc-internal-format msgid "" "can%'t convert a value of type %qT to vector type %qT which has different " "size" msgstr "" -#: convert.c:1089 +#: convert.c:1081 #, gcc-internal-format msgid "can%'t convert value to a vector" msgstr "" -#: convert.c:1128 +#: convert.c:1120 #, gcc-internal-format msgid "aggregate value used where a fixed-point was expected" msgstr "" @@ -17457,7 +17493,7 @@ msgstr "" msgid "error writing %qs" msgstr "" -#: coverage.c:1215 +#: coverage.c:1211 #, gcc-internal-format, gfc-internal-format msgid "cannot open %s" msgstr "" @@ -17502,7 +17538,7 @@ msgstr "" msgid "global constructors not supported on this target" msgstr "" -#: diagnostic.c:1301 +#: diagnostic.c:1329 #, gcc-internal-format, gfc-internal-format msgid "in %s, at %s:%d" msgstr "" @@ -17549,27 +17585,27 @@ msgstr "" msgid "non-delegitimized UNSPEC %s (%d) found in variable location" msgstr "" -#: dwarf2out.c:25294 +#: dwarf2out.c:25296 #, gcc-internal-format msgid "-feliminate-dwarf2-dups is broken for C++, ignoring" msgstr "" -#: emit-rtl.c:2731 +#: emit-rtl.c:2732 #, gcc-internal-format msgid "invalid rtl sharing found in the insn" msgstr "" -#: emit-rtl.c:2733 +#: emit-rtl.c:2734 #, gcc-internal-format msgid "shared rtx" msgstr "" -#: emit-rtl.c:2735 +#: emit-rtl.c:2736 #, gcc-internal-format msgid "internal consistency failure" msgstr "" -#: emit-rtl.c:3858 +#: emit-rtl.c:3859 #, gcc-internal-format msgid "ICE: emit_insn used where emit_jump_insn needed:\n" msgstr "" @@ -17661,12 +17697,12 @@ msgid "" "truncated into %wu-bit" msgstr "" -#: expr.c:10553 +#: expr.c:10572 #, gcc-internal-format msgid "%Kcall to %qs declared with attribute error: %s" msgstr "" -#: expr.c:10560 +#: expr.c:10579 #, gcc-internal-format msgid "%Kcall to %qs declared with attribute warning: %s" msgstr "" @@ -17696,52 +17732,52 @@ msgstr "" msgid "large fixed-point constant implicitly truncated to fixed-point type" msgstr "" -#: fold-const.c:3901 fold-const.c:3911 +#: fold-const.c:3943 fold-const.c:3953 #, gcc-internal-format, gfc-internal-format msgid "comparison is always %d due to width of bit-field" msgstr "" -#: fold-const.c:5274 tree-ssa-reassoc.c:2064 +#: fold-const.c:5316 tree-ssa-reassoc.c:2144 #, gcc-internal-format msgid "assuming signed overflow does not occur when simplifying range test" msgstr "" -#: fold-const.c:5723 fold-const.c:5737 +#: fold-const.c:5765 fold-const.c:5779 #, gcc-internal-format, gfc-internal-format msgid "comparison is always %d" msgstr "" -#: fold-const.c:5872 +#: fold-const.c:5914 #, gcc-internal-format msgid "%<or%> of unmatched not-equal tests is always 1" msgstr "" -#: fold-const.c:5877 +#: fold-const.c:5919 #, gcc-internal-format msgid "%<and%> of mutually exclusive equal-tests is always 0" msgstr "" -#: fold-const.c:8226 +#: fold-const.c:8267 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when reducing constant in comparison" msgstr "" -#: fold-const.c:8382 +#: fold-const.c:8437 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when changing X +- C1 cmp C2 to X " "cmp C2 -+ C1" msgstr "" -#: fold-const.c:8620 +#: fold-const.c:8708 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when combining constants around a " "comparison" msgstr "" -#: fold-const.c:12185 +#: fold-const.c:12274 #, gcc-internal-format msgid "fold check: original tree changed by fold" msgstr "" @@ -17751,7 +17787,7 @@ msgstr "" msgid "total size of local objects too large" msgstr "" -#: function.c:1758 gimplify.c:5289 +#: function.c:1758 gimplify.c:5331 #, gcc-internal-format msgid "impossible constraint in %<asm%>" msgstr "" @@ -17831,7 +17867,7 @@ msgstr "" msgid "%s (program %s)" msgstr "" -#: gcc.c:3585 opts-common.c:1117 opts-common.c:1141 opts-global.c:136 +#: gcc.c:3585 opts-common.c:1158 opts-common.c:1182 opts-global.c:136 #, gcc-internal-format msgid "unrecognized command line option %qs" msgstr "" @@ -17980,152 +18016,152 @@ msgstr "" msgid "%s: -fcompare-debug failure" msgstr "" -#: gcc.c:7416 +#: gcc.c:7425 #, gcc-internal-format msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC" msgstr "" -#: gcc.c:7440 +#: gcc.c:7449 #, gcc-internal-format msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC" msgstr "" -#: gcc.c:7684 +#: gcc.c:7740 #, gcc-internal-format msgid "unrecognized command line option %<-%s%>; did you mean %<-%s%>?" msgstr "" -#: gcc.c:7688 +#: gcc.c:7744 #, gcc-internal-format msgid "unrecognized command line option %<-%s%>" msgstr "" -#: gcc.c:7814 +#: gcc.c:7870 #, gcc-internal-format msgid "not configured with sysroot headers suffix" msgstr "" -#: gcc.c:7875 +#: gcc.c:7931 #, gcc-internal-format msgid "no input files" msgstr "" -#: gcc.c:7926 +#: gcc.c:7982 #, gcc-internal-format msgid "cannot specify -o with -c, -S or -E with multiple files" msgstr "" -#: gcc.c:7967 +#: gcc.c:8023 #, gcc-internal-format, gfc-internal-format msgid "%s: %s compiler not installed on this system" msgstr "" -#: gcc.c:7991 +#: gcc.c:8047 #, gcc-internal-format msgid "recompiling with -fcompare-debug" msgstr "" -#: gcc.c:8007 +#: gcc.c:8063 #, gcc-internal-format msgid "during -fcompare-debug recompilation" msgstr "" -#: gcc.c:8016 +#: gcc.c:8072 #, gcc-internal-format msgid "comparing final insns dumps" msgstr "" -#: gcc.c:8133 +#: gcc.c:8189 #, gcc-internal-format, gfc-internal-format msgid "-fuse-linker-plugin, but %s not found" msgstr "" -#: gcc.c:8166 +#: gcc.c:8222 #, gcc-internal-format, gfc-internal-format msgid "%s: linker input file unused because linking not done" msgstr "" -#: gcc.c:8218 +#: gcc.c:8274 #, gcc-internal-format, gfc-internal-format msgid "language %s not recognized" msgstr "" -#: gcc.c:8457 +#: gcc.c:8513 #, gcc-internal-format msgid "multilib spec %qs is invalid" msgstr "" -#: gcc.c:8659 +#: gcc.c:8715 #, gcc-internal-format msgid "multilib exclusions %qs is invalid" msgstr "" -#: gcc.c:8723 +#: gcc.c:8779 #, gcc-internal-format msgid "multilib select %qs %qs is invalid" msgstr "" -#: gcc.c:8885 +#: gcc.c:8941 #, gcc-internal-format msgid "multilib select %qs is invalid" msgstr "" -#: gcc.c:8925 +#: gcc.c:8981 #, gcc-internal-format msgid "multilib exclusion %qs is invalid" msgstr "" -#: gcc.c:9140 +#: gcc.c:9196 #, gcc-internal-format msgid "environment variable %qs not defined" msgstr "" -#: gcc.c:9279 gcc.c:9284 +#: gcc.c:9335 gcc.c:9340 #, gcc-internal-format msgid "invalid version number %qs" msgstr "" -#: gcc.c:9327 +#: gcc.c:9383 #, gcc-internal-format, gfc-internal-format msgid "too few arguments to %%:version-compare" msgstr "" -#: gcc.c:9333 +#: gcc.c:9389 #, gcc-internal-format, gfc-internal-format msgid "too many arguments to %%:version-compare" msgstr "" -#: gcc.c:9375 +#: gcc.c:9431 #, gcc-internal-format msgid "unknown operator %qs in %%:version-compare" msgstr "" -#: gcc.c:9499 +#: gcc.c:9555 #, gcc-internal-format, gfc-internal-format msgid "too many arguments to %%:compare-debug-dump-opt" msgstr "" -#: gcc.c:9572 +#: gcc.c:9628 #, gcc-internal-format, gfc-internal-format msgid "too many arguments to %%:compare-debug-self-opt" msgstr "" -#: gcc.c:9608 +#: gcc.c:9664 #, gcc-internal-format, gfc-internal-format msgid "too few arguments to %%:compare-debug-auxbase-opt" msgstr "" -#: gcc.c:9612 +#: gcc.c:9668 #, gcc-internal-format, gfc-internal-format msgid "too many arguments to %%:compare-debug-auxbase-opt" msgstr "" -#: gcc.c:9619 +#: gcc.c:9675 #, gcc-internal-format, gfc-internal-format msgid "argument to %%:compare-debug-auxbase-opt does not end in .gk" msgstr "" -#: gcc.c:9693 +#: gcc.c:9749 #, gcc-internal-format, gfc-internal-format msgid "too few arguments to %%:replace-extension" msgstr "" @@ -18160,12 +18196,12 @@ msgstr "" msgid "scale needs to be non-negative\n" msgstr "" -#: gcse.c:3978 +#: gcse.c:3986 #, gcc-internal-format, gfc-internal-format msgid "%s: %d basic blocks and %d edges/basic block" msgstr "" -#: gcse.c:3990 +#: gcse.c:3998 #, gcc-internal-format, gfc-internal-format msgid "" "%s: %d basic blocks and %d registers; increase --param max-gcse-memory above " @@ -18254,11 +18290,11 @@ msgstr "" msgid "can%'t write PCH file" msgstr "" -#: gimple-ssa-isolate-paths.c:290 gimple-ssa-isolate-paths.c:447 tree.c:12571 -#: tree.c:12608 c/c-typeck.c:2845 c/c-typeck.c:2929 c/c-typeck.c:9659 -#: c/c-typeck.c:9676 cp/call.c:6149 cp/constexpr.c:746 cp/decl2.c:5100 -#: cp/pt.c:7573 cp/semantics.c:1728 cp/typeck.c:1640 cp/typeck.c:1833 -#: cp/typeck.c:3652 +#: gimple-ssa-isolate-paths.c:290 gimple-ssa-isolate-paths.c:447 tree.c:12589 +#: tree.c:12626 c/c-typeck.c:2847 c/c-typeck.c:2931 c/c-typeck.c:9672 +#: c/c-typeck.c:9689 cp/call.c:6152 cp/constexpr.c:757 cp/constexpr.c:1958 +#: cp/decl2.c:5112 cp/pt.c:7580 cp/semantics.c:1763 cp/typeck.c:1640 +#: cp/typeck.c:1833 cp/typeck.c:3660 #, gcc-internal-format msgid "declared here" msgstr "" @@ -18273,6 +18309,11 @@ msgstr "" msgid "null pointer dereference" msgstr "" +#: gimple-ssa-nonnull-compare.c:102 +#, gcc-internal-format +msgid "nonnull argument %qD compared to NULL" +msgstr "" + #: gimple-streamer-in.c:210 #, gcc-internal-format, gfc-internal-format msgid "bytecode stream: unknown GIMPLE statement tag %s" @@ -18283,208 +18324,218 @@ msgstr "" msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d" msgstr "" -#: gimplify.c:2555 +#: gimplify.c:2566 #, gcc-internal-format msgid "using result of function returning %<void%>" msgstr "" -#: gimplify.c:5174 +#: gimplify.c:5190 #, gcc-internal-format, gfc-internal-format msgid "invalid lvalue in asm output %d" msgstr "" -#: gimplify.c:5290 +#: gimplify.c:5332 #, gcc-internal-format, gfc-internal-format msgid "non-memory input %d must stay in memory" msgstr "" -#: gimplify.c:5330 gimplify.c:5339 +#: gimplify.c:5372 gimplify.c:5381 #, gcc-internal-format, gfc-internal-format msgid "memory input %d is not directly addressable" msgstr "" -#: gimplify.c:5871 +#: gimplify.c:5913 #, gcc-internal-format msgid "threadprivate variable %qE used in target region" msgstr "" -#: gimplify.c:5873 +#: gimplify.c:5915 #, gcc-internal-format msgid "enclosing target region" msgstr "" -#: gimplify.c:5885 +#: gimplify.c:5927 #, gcc-internal-format msgid "threadprivate variable %qE used in untied task" msgstr "" -#: gimplify.c:5887 +#: gimplify.c:5929 #, gcc-internal-format msgid "enclosing task" msgstr "" -#: gimplify.c:5949 +#: gimplify.c:5991 #, gcc-internal-format msgid "%qE not specified in enclosing %s" msgstr "" -#: gimplify.c:5951 +#: gimplify.c:5993 #, gcc-internal-format, gfc-internal-format msgid "enclosing %s" msgstr "" -#: gimplify.c:6061 +#: gimplify.c:6103 #, gcc-internal-format msgid "%qE not specified in enclosing OpenACC %qs construct" msgstr "" -#: gimplify.c:6063 +#: gimplify.c:6105 #, gcc-internal-format msgid "enclosing OpenACC %qs construct" msgstr "" -#: gimplify.c:6174 gimplify.c:6764 +#: gimplify.c:6156 +#, gcc-internal-format +msgid "%qE with %<link%> clause used in %<routine%> function" +msgstr "" + +#: gimplify.c:6164 +#, gcc-internal-format +msgid "%qE requires a %<declare%> directive for use in a %<routine%> function" +msgstr "" + +#: gimplify.c:6240 gimplify.c:6844 #, gcc-internal-format msgid "variable %qE declared in enclosing %<host_data%> region" msgstr "" -#: gimplify.c:6192 +#: gimplify.c:6258 #, gcc-internal-format msgid "%qD referenced in target region does not have a mappable type" msgstr "" -#: gimplify.c:6296 gimplify.c:6328 +#: gimplify.c:6376 gimplify.c:6408 #, gcc-internal-format msgid "iteration variable %qE is predetermined linear" msgstr "" -#: gimplify.c:6299 +#: gimplify.c:6379 #, gcc-internal-format msgid "iteration variable %qE should be private" msgstr "" -#: gimplify.c:6313 +#: gimplify.c:6393 #, gcc-internal-format msgid "iteration variable %qE should not be firstprivate" msgstr "" -#: gimplify.c:6316 +#: gimplify.c:6396 #, gcc-internal-format msgid "iteration variable %qE should not be reduction" msgstr "" -#: gimplify.c:6319 +#: gimplify.c:6399 #, gcc-internal-format msgid "iteration variable %qE should not be linear" msgstr "" -#: gimplify.c:6322 +#: gimplify.c:6402 #, gcc-internal-format msgid "iteration variable %qE should not be lastprivate" msgstr "" -#: gimplify.c:6325 +#: gimplify.c:6405 #, gcc-internal-format msgid "iteration variable %qE should not be private" msgstr "" -#: gimplify.c:6638 +#: gimplify.c:6718 #, gcc-internal-format msgid "" "%<linear%> clause for variable other than loop iterator specified on " "construct combined with %<distribute%>" msgstr "" -#: gimplify.c:6833 +#: gimplify.c:6913 #, gcc-internal-format msgid "mapping field %qE of variable length structure" msgstr "" -#: gimplify.c:7009 +#: gimplify.c:7089 #, gcc-internal-format msgid "%qE appears more than once in map clauses" msgstr "" -#: gimplify.c:7301 +#: gimplify.c:7381 #, gcc-internal-format msgid "" "copyprivate variable %qE is not threadprivate or private in outer context" msgstr "" -#: gimplify.c:7321 +#: gimplify.c:7401 #, gcc-internal-format msgid "%s variable %qE is private in outer context" msgstr "" -#: gimplify.c:7347 +#: gimplify.c:7427 #, gcc-internal-format msgid "expected %qs %<if%> clause modifier rather than %qs" msgstr "" -#: gimplify.c:7847 +#: gimplify.c:7929 #, gcc-internal-format msgid "" "same variable used in %<firstprivate%> and %<lastprivate%> clauses on " "%<distribute%> construct" msgstr "" -#: gimplify.c:9806 omp-low.c:3611 +#: gimplify.c:9889 omp-low.c:3621 #, gcc-internal-format msgid "" "%<ordered%> construct with %<depend%> clause must be closely nested inside a " "loop with %<ordered%> clause with a parameter" msgstr "" -#: gimplify.c:9824 +#: gimplify.c:9907 #, gcc-internal-format msgid "variable %qE is not an iteration of outermost loop %d, expected %qE" msgstr "" -#: gimplify.c:9837 +#: gimplify.c:9920 #, gcc-internal-format msgid "" "number of variables in %<depend(sink)%> clause does not match number of " "iteration variables" msgstr "" -#: gimplify.c:9850 +#: gimplify.c:9933 #, gcc-internal-format msgid "more than one %<depend(source)%> clause on an %<ordered%> construct" msgstr "" -#: gimplify.c:9860 +#: gimplify.c:9944 #, gcc-internal-format msgid "" "%<depend(source)%> clause specified together with %<depend(sink:)%> clauses " "on the same construct" msgstr "" -#: gimplify.c:10773 +#: gimplify.c:10872 #, gcc-internal-format msgid "expected %<_Cilk_spawn%> before %<_Cilk_sync%>" msgstr "" -#: gimplify.c:11069 +#: gimplify.c:11168 #, gcc-internal-format msgid "gimplification failed" msgstr "" -#: gimplify.c:11539 +#: gimplify.c:11638 #, gcc-internal-format msgid "first argument to %<va_arg%> not of type %<va_list%>" msgstr "" -#: gimplify.c:11555 +#: gimplify.c:11658 #, gcc-internal-format msgid "%qT is promoted to %qT when passed through %<...%>" msgstr "" -#: gimplify.c:11560 +#: gimplify.c:11663 #, gcc-internal-format msgid "(so you should pass %qT not %qT to %<va_arg%>)" msgstr "" -#: gimplify.c:11567 +#: gimplify.c:11670 #, gcc-internal-format msgid "if this code is reached, the program will abort" msgstr "" @@ -18499,7 +18550,7 @@ msgstr "" msgid "could not open Go dump file %qs: %m" msgstr "" -#: graph.c:54 toplev.c:1491 java/jcf-parse.c:1751 java/jcf-parse.c:1890 +#: graph.c:55 toplev.c:1491 java/jcf-parse.c:1751 java/jcf-parse.c:1890 #: objc/objc-act.c:461 #, gcc-internal-format msgid "can%'t open %s: %m" @@ -18510,38 +18561,38 @@ msgstr "" msgid "Graphite loop optimizations cannot be used (isl is not available)." msgstr "" -#: hsa-brig.c:900 +#: hsa-brig.c:899 #, gcc-internal-format msgid "Support for HSA does not implement immediate 16 bit FPU operands" msgstr "" -#: hsa-gen.c:1191 +#: hsa-gen.c:1195 #, gcc-internal-format msgid "HSA SSA name defined by instruction that is supposed to be using it" msgstr "" -#: hsa-gen.c:1195 hsa-gen.c:1208 +#: hsa-gen.c:1199 hsa-gen.c:1212 #, gcc-internal-format msgid "HSA SSA verification failed" msgstr "" -#: hsa-gen.c:1204 +#: hsa-gen.c:1208 #, gcc-internal-format msgid "" "HSA SSA name not among operands of instruction that is supposed to use it" msgstr "" -#: hsa-gen.c:1464 +#: hsa-gen.c:1468 #, gcc-internal-format msgid "HSA instruction uses a register but is not among recorded register uses" msgstr "" -#: hsa-gen.c:1468 +#: hsa-gen.c:1472 #, gcc-internal-format msgid "HSA instruction verification failed" msgstr "" -#: hsa.c:239 +#: hsa.c:240 #, gcc-internal-format msgid "HSA image ops not handled" msgstr "" @@ -18571,326 +18622,326 @@ msgstr "" msgid "function cannot be instrumented" msgstr "" -#: ipa-devirt.c:728 ipa-devirt.c:881 +#: ipa-devirt.c:751 ipa-devirt.c:902 #, gcc-internal-format msgid "virtual table of type %qD violates one definition rule" msgstr "" -#: ipa-devirt.c:731 +#: ipa-devirt.c:754 #, gcc-internal-format msgid "" "variable of same assembler name as the virtual table is defined in another " "translation unit" msgstr "" -#: ipa-devirt.c:770 +#: ipa-devirt.c:793 #, gcc-internal-format msgid "virtual table of type %qD contains RTTI information" msgstr "" -#: ipa-devirt.c:776 +#: ipa-devirt.c:799 #, gcc-internal-format msgid "but is prevailed by one without from other translation unit" msgstr "" -#: ipa-devirt.c:780 +#: ipa-devirt.c:803 #, gcc-internal-format msgid "RTTI will not work on this type" msgstr "" -#: ipa-devirt.c:811 ipa-devirt.c:840 ipa-devirt.c:911 +#: ipa-devirt.c:833 ipa-devirt.c:861 ipa-devirt.c:932 #, gcc-internal-format msgid "virtual table of type %qD violates one definition rule " msgstr "" -#: ipa-devirt.c:817 +#: ipa-devirt.c:839 #, gcc-internal-format msgid "" "the conflicting type defined in another translation unit has virtual table " "of different size" msgstr "" -#: ipa-devirt.c:846 +#: ipa-devirt.c:867 #, gcc-internal-format msgid "" "the conflicting type defined in another translation unit with different RTTI " "information" msgstr "" -#: ipa-devirt.c:889 ipa-devirt.c:919 +#: ipa-devirt.c:910 ipa-devirt.c:940 #, gcc-internal-format msgid "the conflicting type defined in another translation unit" msgstr "" -#: ipa-devirt.c:893 +#: ipa-devirt.c:914 #, gcc-internal-format msgid "contains additional virtual method %qD" msgstr "" -#: ipa-devirt.c:900 +#: ipa-devirt.c:921 #, gcc-internal-format msgid "" "the conflicting type defined in another translation unit has virtual table " "with more entries" msgstr "" -#: ipa-devirt.c:924 +#: ipa-devirt.c:946 #, gcc-internal-format msgid "virtual method %qD" msgstr "" -#: ipa-devirt.c:926 +#: ipa-devirt.c:950 #, gcc-internal-format msgid "ought to match virtual method %qD but does not" msgstr "" -#: ipa-devirt.c:932 +#: ipa-devirt.c:956 #, gcc-internal-format msgid "" "the conflicting type defined in another translation unit has virtual table " "with different contents" msgstr "" -#: ipa-devirt.c:962 +#: ipa-devirt.c:986 #, gcc-internal-format msgid "type %qT violates the C++ One Definition Rule" msgstr "" -#: ipa-devirt.c:973 ipa-devirt.c:988 ipa-devirt.c:1238 ipa-devirt.c:1330 -#: ipa-devirt.c:1369 ipa-devirt.c:1387 +#: ipa-devirt.c:997 ipa-devirt.c:1012 ipa-devirt.c:1262 ipa-devirt.c:1354 +#: ipa-devirt.c:1393 ipa-devirt.c:1411 #, gcc-internal-format msgid "a different type is defined in another translation unit" msgstr "" -#: ipa-devirt.c:980 +#: ipa-devirt.c:1004 #, gcc-internal-format msgid "the first difference of corresponding definitions is field %qD" msgstr "" -#: ipa-devirt.c:990 +#: ipa-devirt.c:1014 #, gcc-internal-format msgid "the first difference of corresponding definitions is method %qD" msgstr "" -#: ipa-devirt.c:1084 +#: ipa-devirt.c:1108 #, gcc-internal-format msgid "" "type %qT defined in anonymous namespace can not match type %qT across the " "translation unit boundary" msgstr "" -#: ipa-devirt.c:1089 +#: ipa-devirt.c:1113 #, gcc-internal-format msgid "" "type %qT defined in anonymous namespace can not match across the translation " "unit boundary" msgstr "" -#: ipa-devirt.c:1094 +#: ipa-devirt.c:1118 #, gcc-internal-format msgid "the incompatible type defined in another translation unit" msgstr "" -#: ipa-devirt.c:1117 +#: ipa-devirt.c:1141 #, gcc-internal-format msgid "type name %<%s%> should match type name %<%s%>" msgstr "" -#: ipa-devirt.c:1121 ipa-devirt.c:1213 +#: ipa-devirt.c:1145 ipa-devirt.c:1237 #, gcc-internal-format msgid "the incompatible type is defined here" msgstr "" -#: ipa-devirt.c:1149 +#: ipa-devirt.c:1173 #, gcc-internal-format msgid "array types have different bounds" msgstr "" -#: ipa-devirt.c:1164 +#: ipa-devirt.c:1188 #, gcc-internal-format msgid "return value type mismatch" msgstr "" -#: ipa-devirt.c:1179 +#: ipa-devirt.c:1203 #, gcc-internal-format msgid "implicit this pointer type mismatch" msgstr "" -#: ipa-devirt.c:1182 +#: ipa-devirt.c:1206 #, gcc-internal-format, gfc-internal-format msgid "type mismatch in parameter %i" msgstr "" -#: ipa-devirt.c:1193 +#: ipa-devirt.c:1217 #, gcc-internal-format msgid "types have different parameter counts" msgstr "" -#: ipa-devirt.c:1204 +#: ipa-devirt.c:1228 #, gcc-internal-format msgid "type %qT itself violate the C++ One Definition Rule" msgstr "" -#: ipa-devirt.c:1210 +#: ipa-devirt.c:1234 #, gcc-internal-format msgid "type %qT should match type %qT" msgstr "" -#: ipa-devirt.c:1245 +#: ipa-devirt.c:1269 #, gcc-internal-format msgid "a type with different qualifiers is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1263 +#: ipa-devirt.c:1287 #, gcc-internal-format msgid "a type with different attributes is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1278 +#: ipa-devirt.c:1302 #, gcc-internal-format msgid "" "an enum with different value name is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1287 +#: ipa-devirt.c:1311 #, gcc-internal-format msgid "an enum with different values is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1295 +#: ipa-devirt.c:1319 #, gcc-internal-format msgid "" "an enum with mismatching number of values is defined in another translation " "unit" msgstr "" -#: ipa-devirt.c:1313 +#: ipa-devirt.c:1337 #, gcc-internal-format msgid "a type with different precision is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1320 +#: ipa-devirt.c:1344 #, gcc-internal-format msgid "a type with different signedness is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1345 +#: ipa-devirt.c:1369 #, gcc-internal-format msgid "" "it is defined as a pointer in different address space in another translation " "unit" msgstr "" -#: ipa-devirt.c:1354 +#: ipa-devirt.c:1378 #, gcc-internal-format msgid "" "it is defined as a pointer to different type in another translation unit" msgstr "" -#: ipa-devirt.c:1414 +#: ipa-devirt.c:1438 #, gcc-internal-format msgid "an array of different size is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1429 +#: ipa-devirt.c:1453 #, gcc-internal-format msgid "has different return value in another translation unit" msgstr "" -#: ipa-devirt.c:1452 ipa-devirt.c:1464 +#: ipa-devirt.c:1476 ipa-devirt.c:1488 #, gcc-internal-format msgid "has different parameters in another translation unit" msgstr "" -#: ipa-devirt.c:1487 +#: ipa-devirt.c:1511 #, gcc-internal-format msgid "a type defined in another translation unit is not polymorphic" msgstr "" -#: ipa-devirt.c:1491 +#: ipa-devirt.c:1515 #, gcc-internal-format msgid "a type defined in another translation unit is polymorphic" msgstr "" -#: ipa-devirt.c:1509 ipa-devirt.c:1565 +#: ipa-devirt.c:1533 ipa-devirt.c:1589 #, gcc-internal-format msgid "" "a type with different virtual table pointers is defined in another " "translation unit" msgstr "" -#: ipa-devirt.c:1516 ipa-devirt.c:1570 +#: ipa-devirt.c:1540 ipa-devirt.c:1594 #, gcc-internal-format msgid "a type with different bases is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1524 +#: ipa-devirt.c:1548 #, gcc-internal-format msgid "a field with different name is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1538 +#: ipa-devirt.c:1562 #, gcc-internal-format msgid "" "a field of same name but different type is defined in another translation " "unit" msgstr "" -#: ipa-devirt.c:1551 +#: ipa-devirt.c:1575 #, gcc-internal-format msgid "fields has different layout in another translation unit" msgstr "" -#: ipa-devirt.c:1574 +#: ipa-devirt.c:1598 #, gcc-internal-format msgid "" "a type with different number of fields is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1598 +#: ipa-devirt.c:1622 #, gcc-internal-format msgid "a different method of same type is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1606 +#: ipa-devirt.c:1630 #, gcc-internal-format msgid "" "s definition that differs by virtual keyword in another translation unit" msgstr "" -#: ipa-devirt.c:1613 +#: ipa-devirt.c:1637 #, gcc-internal-format msgid "virtual table layout differs in another translation unit" msgstr "" -#: ipa-devirt.c:1622 +#: ipa-devirt.c:1646 #, gcc-internal-format msgid "method with incompatible type is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1630 +#: ipa-devirt.c:1654 #, gcc-internal-format msgid "" "a type with different number of methods is defined in another translation " "unit" msgstr "" -#: ipa-devirt.c:1652 +#: ipa-devirt.c:1676 #, gcc-internal-format msgid "a type with different size is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1660 +#: ipa-devirt.c:1684 #, gcc-internal-format msgid "a type with different alignment is defined in another translation unit" msgstr "" -#: ipa-devirt.c:1783 +#: ipa-devirt.c:1807 #, gcc-internal-format msgid "the extra base is defined here" msgstr "" -#: ipa-devirt.c:3750 +#: ipa-devirt.c:3777 #, gcc-internal-format msgid "Declaring type %qD final would enable devirtualization of %i call" msgid_plural "" @@ -18898,7 +18949,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.c:3759 +#: ipa-devirt.c:3786 #, gcc-internal-format msgid "" "Declaring type %qD final would enable devirtualization of %i call executed " @@ -18909,7 +18960,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.c:3788 +#: ipa-devirt.c:3815 #, gcc-internal-format msgid "" "Declaring virtual destructor of %qD final would enable devirtualization of " @@ -18920,7 +18971,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.c:3796 +#: ipa-devirt.c:3823 #, gcc-internal-format msgid "Declaring method %qD final would enable devirtualization of %i call" msgid_plural "" @@ -18928,7 +18979,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.c:3804 +#: ipa-devirt.c:3831 #, gcc-internal-format msgid "" "Declaring virtual destructor of %qD final would enable devirtualization of " @@ -18939,7 +18990,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ipa-devirt.c:3814 +#: ipa-devirt.c:3841 #, gcc-internal-format msgid "" "Declaring method %qD final would enable devirtualization of %i call executed " @@ -18965,21 +19016,26 @@ msgstr "" msgid "ipa reference summary is missing in ltrans unit" msgstr "" -#: ira.c:2308 ira.c:2322 ira.c:2336 +#: ira.c:2309 ira.c:2323 ira.c:2337 #, gcc-internal-format, gfc-internal-format msgid "%s cannot be used in asm here" msgstr "" -#: ira.c:5481 +#: ira.c:5511 #, gcc-internal-format msgid "frame pointer required, but reserved" msgstr "" -#: ira.c:5482 +#: ira.c:5512 #, gcc-internal-format msgid "for %qD" msgstr "" +#: ira.c:5526 +#, gcc-internal-format +msgid "frame size too large for reliable stack checking" +msgstr "" + #: lra-assigns.c:1395 reload1.c:1254 #, gcc-internal-format msgid "%<asm%> operand has impossible constraints" @@ -18990,17 +19046,17 @@ msgstr "" msgid "unable to find a register to spill" msgstr "" -#: lra-assigns.c:1625 +#: lra-assigns.c:1630 #, gcc-internal-format, gfc-internal-format msgid "Maximum number of LRA assignment passes is achieved (%d)\n" msgstr "" -#: lra-constraints.c:3495 reload.c:3831 reload.c:4086 +#: lra-constraints.c:3566 reload.c:3831 reload.c:4086 #, gcc-internal-format msgid "inconsistent operand constraints in an %<asm%>" msgstr "" -#: lra-constraints.c:4344 +#: lra-constraints.c:4429 #, gcc-internal-format, gfc-internal-format msgid "Max. number of generated reload insns per insn is achieved (%d)\n" msgstr "" @@ -19045,7 +19101,7 @@ msgstr "" msgid "cannot find LTO section refs in %s" msgstr "" -#: lto-cgraph.c:1933 +#: lto-cgraph.c:1935 #, gcc-internal-format, gfc-internal-format msgid "invalid offload table in %s" msgstr "" @@ -19092,12 +19148,12 @@ msgstr "" msgid "Reference statement index not found" msgstr "" -#: lto-streamer-in.c:1512 +#: lto-streamer-in.c:1513 #, gcc-internal-format, gfc-internal-format msgid "cannot read LTO mode table from %s" msgstr "" -#: lto-streamer-in.c:1610 +#: lto-streamer-in.c:1611 #, gcc-internal-format, gfc-internal-format msgid "unsupported mode %s\n" msgstr "" @@ -19119,57 +19175,72 @@ msgid "" "%d" msgstr "" -#: lto-wrapper.c:112 +#: lto-wrapper.c:114 #, gcc-internal-format msgid "deleting LTRANS file %s: %m" msgstr "" -#: lto-wrapper.c:149 +#: lto-wrapper.c:151 #, gcc-internal-format msgid "malformed COLLECT_GCC_OPTIONS" msgstr "" -#: lto-wrapper.c:304 lto-wrapper.c:316 +#: lto-wrapper.c:307 +#, gcc-internal-format, gfc-internal-format +msgid "Option %s with different values" +msgstr "" + +#: lto-wrapper.c:318 lto-wrapper.c:330 #, gcc-internal-format, gfc-internal-format msgid "Option %s not used consistently in all LTO input files" msgstr "" -#: lto-wrapper.c:771 +#: lto-wrapper.c:815 #, gcc-internal-format, gfc-internal-format msgid "problem with building target image for %s\n" msgstr "" -#: lto-wrapper.c:791 +#: lto-wrapper.c:835 #, gcc-internal-format msgid "reading input file" msgstr "" -#: lto-wrapper.c:796 +#: lto-wrapper.c:840 #, gcc-internal-format msgid "writing output file" msgstr "" -#: lto-wrapper.c:822 +#: lto-wrapper.c:870 #, gcc-internal-format -msgid "installation error, can't find crtoffloadend.o" +msgid "installation error, can't find crtoffloadtable.o" msgstr "" -#: lto-wrapper.c:834 +#: lto-wrapper.c:974 #, gcc-internal-format -msgid "installation error, can't find crtoffloadbegin.o" +msgid "environment variable COLLECT_GCC must be set" msgstr "" -#: lto-wrapper.c:938 +#: lto-wrapper.c:978 config/nvptx/mkoffload.c:361 #, gcc-internal-format -msgid "environment variable COLLECT_GCC must be set" +msgid "environment variable COLLECT_GCC_OPTIONS must be set" msgstr "" -#: lto-wrapper.c:942 config/nvptx/mkoffload.c:361 +#: lto-wrapper.c:1135 lto-wrapper.c:1191 #, gcc-internal-format -msgid "environment variable COLLECT_GCC_OPTIONS must be set" +msgid "cannot open %s: %m" msgstr "" -#: lto-wrapper.c:1211 +#: lto-wrapper.c:1138 lto-wrapper.c:1197 +#, gcc-internal-format +msgid "cannot read %s: %m" +msgstr "" + +#: lto-wrapper.c:1165 +#, gcc-internal-format, gfc-internal-format +msgid "invalid format of %s" +msgstr "" + +#: lto-wrapper.c:1301 #, gcc-internal-format msgid "fopen: %s: %m" msgstr "" @@ -19204,112 +19275,117 @@ msgstr "" msgid "attribute(target_clones(\"default\")) is not valid for current target" msgstr "" -#: omp-low.c:2202 omp-low.c:2370 +#: omp-low.c:2203 omp-low.c:2371 #, gcc-internal-format msgid "Clause not supported yet" msgstr "" -#: omp-low.c:2967 omp-low.c:20751 +#: omp-low.c:2970 omp-low.c:21009 #, gcc-internal-format msgid "%<seq%> overrides other OpenACC loop specifiers" msgstr "" -#: omp-low.c:2970 +#: omp-low.c:2973 #, gcc-internal-format msgid "%<auto%> conflicts with other OpenACC loop specifiers" msgstr "" -#: omp-low.c:2974 +#: omp-low.c:2977 #, gcc-internal-format msgid "inner loop uses same OpenACC parallelism as containing loop" msgstr "" -#: omp-low.c:3021 +#: omp-low.c:3024 #, gcc-internal-format msgid "argument not permitted on %qs clause in OpenACC %<parallel%>" msgstr "" -#: omp-low.c:3249 +#: omp-low.c:3250 +#, gcc-internal-format +msgid "non-OpenACC construct inside of OpenACC routine" +msgstr "" + +#: omp-low.c:3259 #, gcc-internal-format msgid "non-OpenACC construct inside of OpenACC region" msgstr "" -#: omp-low.c:3274 +#: omp-low.c:3284 #, gcc-internal-format msgid "" "%<ordered simd threads%> must be closely nested inside of %<for simd%> region" msgstr "" -#: omp-low.c:3282 +#: omp-low.c:3292 #, gcc-internal-format msgid "" "OpenMP constructs other than %<#pragma omp ordered simd%> may not be nested " "inside %<simd%> region" msgstr "" -#: omp-low.c:3294 +#: omp-low.c:3304 #, gcc-internal-format msgid "" "only %<distribute%> or %<parallel%> regions are allowed to be strictly " "nested inside %<teams%> region" msgstr "" -#: omp-low.c:3311 +#: omp-low.c:3321 #, gcc-internal-format msgid "" "%<distribute%> region must be strictly nested inside %<teams%> construct" msgstr "" -#: omp-low.c:3352 +#: omp-low.c:3362 #, gcc-internal-format msgid "" "OpenACC loop directive must be associated with an OpenACC compute region" msgstr "" -#: omp-low.c:3374 +#: omp-low.c:3384 #, gcc-internal-format msgid "orphaned %qs construct" msgstr "" -#: omp-low.c:3403 +#: omp-low.c:3413 #, gcc-internal-format msgid "%<#pragma omp cancel for%> inside %<nowait%> for construct" msgstr "" -#: omp-low.c:3408 +#: omp-low.c:3418 #, gcc-internal-format msgid "%<#pragma omp cancel for%> inside %<ordered%> for construct" msgstr "" -#: omp-low.c:3428 omp-low.c:3441 +#: omp-low.c:3438 omp-low.c:3451 #, gcc-internal-format msgid "%<#pragma omp cancel sections%> inside %<nowait%> sections construct" msgstr "" -#: omp-low.c:3467 +#: omp-low.c:3477 #, gcc-internal-format msgid "" "%<%s taskgroup%> construct not closely nested inside of %<taskgroup%> region" msgstr "" -#: omp-low.c:3481 +#: omp-low.c:3491 #, gcc-internal-format msgid "invalid arguments" msgstr "" -#: omp-low.c:3487 +#: omp-low.c:3497 #, gcc-internal-format msgid "%<%s %s%> construct not closely nested inside of %qs" msgstr "" -#: omp-low.c:3515 +#: omp-low.c:3525 #, gcc-internal-format msgid "" "barrier region may not be closely nested inside of work-sharing, %<critical" "%>, %<ordered%>, %<master%>, explicit %<task%> or %<taskloop%> region" msgstr "" -#: omp-low.c:3522 +#: omp-low.c:3532 #, gcc-internal-format msgid "" "work-sharing region may not be closely nested inside of work-sharing, " @@ -19317,189 +19393,201 @@ msgid "" "region" msgstr "" -#: omp-low.c:3551 +#: omp-low.c:3561 #, gcc-internal-format msgid "" "%<master%> region may not be closely nested inside of work-sharing, explicit " "%<task%> or %<taskloop%> region" msgstr "" -#: omp-low.c:3575 omp-low.c:3714 +#: omp-low.c:3585 omp-low.c:3724 #, gcc-internal-format msgid "%<depend(%s)%> is only allowed in %<omp ordered%>" msgstr "" -#: omp-low.c:3603 +#: omp-low.c:3613 #, gcc-internal-format msgid "" "%<ordered%> construct with %<depend%> clause must be closely nested inside " "an %<ordered%> loop" msgstr "" -#: omp-low.c:3620 +#: omp-low.c:3630 #, gcc-internal-format msgid "invalid depend kind in omp %<ordered%> %<depend%>" msgstr "" -#: omp-low.c:3635 +#: omp-low.c:3645 #, gcc-internal-format msgid "%<ordered%> %<simd%> must be closely nested inside %<simd%> region" msgstr "" -#: omp-low.c:3648 +#: omp-low.c:3658 #, gcc-internal-format msgid "" "%<ordered%> region may not be closely nested inside of %<critical%>, " "%<ordered%>, explicit %<task%> or %<taskloop%> region" msgstr "" -#: omp-low.c:3659 omp-low.c:3672 +#: omp-low.c:3669 omp-low.c:3682 #, gcc-internal-format msgid "" "%<ordered%> region must be closely nested inside a loop region with an " "%<ordered%> clause" msgstr "" -#: omp-low.c:3689 +#: omp-low.c:3699 #, gcc-internal-format msgid "" "%<critical%> region may not be nested inside a %<critical%> region with the " "same name" msgstr "" -#: omp-low.c:3701 +#: omp-low.c:3711 #, gcc-internal-format msgid "%<teams%> construct not closely nested inside of %<target%> construct" msgstr "" -#: omp-low.c:3727 +#: omp-low.c:3732 +#, gcc-internal-format +msgid "" +"OpenACC region inside of OpenACC routine, nested parallelism not supported " +"yet" +msgstr "" + +#: omp-low.c:3745 #, gcc-internal-format msgid "OpenACC construct inside of non-OpenACC region" msgstr "" -#: omp-low.c:3772 +#: omp-low.c:3790 #, gcc-internal-format msgid "%s %qs construct inside of %s %qs region" msgstr "" -#: omp-low.c:3785 omp-low.c:3792 +#: omp-low.c:3803 omp-low.c:3810 #, gcc-internal-format msgid "%qs construct inside of %qs region" msgstr "" -#: omp-low.c:3904 +#: omp-low.c:3922 #, gcc-internal-format msgid "setjmp/longjmp inside simd construct" msgstr "" -#: omp-low.c:7936 +#: omp-low.c:7961 #, gcc-internal-format msgid "%<depend(sink)%> clause waiting for lexically later iteration" msgstr "" -#: omp-low.c:8023 +#: omp-low.c:8048 #, gcc-internal-format msgid "%<depend(sink)%> refers to iteration never in the iteration space" msgstr "" -#: omp-low.c:12563 +#: omp-low.c:12588 #, gcc-internal-format msgid "multiple loop axes specified for routine" msgstr "" -#: omp-low.c:14578 +#: omp-low.c:14600 #, gcc-internal-format msgid "" "ignoring sink clause with offset that is not a multiple of the loop step" msgstr "" -#: omp-low.c:14601 +#: omp-low.c:14623 #, gcc-internal-format msgid "first offset must be in opposite direction of loop iterations" msgstr "" -#: omp-low.c:17957 +#: omp-low.c:18031 #, gcc-internal-format, gfc-internal-format msgid "invalid exit from %s structured block" msgstr "" -#: omp-low.c:17959 omp-low.c:17964 +#: omp-low.c:18033 omp-low.c:18038 #, gcc-internal-format, gfc-internal-format msgid "invalid entry to %s structured block" msgstr "" #. Otherwise, be vague and lazy, but efficient. -#: omp-low.c:17968 +#: omp-low.c:18042 #, gcc-internal-format, gfc-internal-format msgid "invalid branch to/from %s structured block" msgstr "" -#: omp-low.c:18501 +#: omp-low.c:18575 #, gcc-internal-format msgid "ignoring large linear step" msgstr "" -#: omp-low.c:18508 +#: omp-low.c:18582 #, gcc-internal-format msgid "ignoring zero linear step" msgstr "" -#: omp-low.c:20778 +#: omp-low.c:20449 +#, gcc-internal-format, gfc-internal-format +msgid "-fopenacc-dim operand is malformed at '%s'" +msgstr "" + +#: omp-low.c:21036 #, gcc-internal-format, gfc-internal-format msgid "%s uses same OpenACC parallelism as containing loop" msgstr "" -#: omp-low.c:20780 omp-low.c:20809 +#: omp-low.c:21038 omp-low.c:21067 #, gcc-internal-format msgid "containing loop here" msgstr "" -#: omp-low.c:20784 +#: omp-low.c:21042 #, gcc-internal-format, gfc-internal-format msgid "%s uses OpenACC parallelism disallowed by containing routine" msgstr "" -#: omp-low.c:20789 +#: omp-low.c:21047 #, gcc-internal-format msgid "routine %qD declared here" msgstr "" -#: omp-low.c:20802 +#: omp-low.c:21060 #, gcc-internal-format msgid "incorrectly nested OpenACC loop parallelism" msgstr "" -#: omp-low.c:20866 +#: omp-low.c:21124 #, gcc-internal-format msgid "insufficient partitioning available to parallelize loop" msgstr "" -#: optabs.c:4177 +#: optabs.c:4194 #, gcc-internal-format msgid "indirect jumps are not available on this target" msgstr "" -#: opts-common.c:1038 +#: opts-common.c:1079 #, gcc-internal-format msgid "command line option %qs is not supported by this configuration" msgstr "" -#: opts-common.c:1048 +#: opts-common.c:1089 #, gcc-internal-format msgid "missing argument to %qs" msgstr "" -#: opts-common.c:1054 +#: opts-common.c:1095 #, gcc-internal-format msgid "argument to %qs should be a non-negative integer" msgstr "" -#: opts-common.c:1069 +#: opts-common.c:1110 #, gcc-internal-format msgid "unrecognized argument in option %qs" msgstr "" -#: opts-common.c:1087 +#: opts-common.c:1128 #, gcc-internal-format msgid "valid arguments to %qs are: %s" msgstr "" @@ -19515,32 +19603,32 @@ msgstr "" msgid "command line option %qs is valid for %s but not for %s" msgstr "" -#: opts-global.c:360 +#: opts-global.c:364 #, gcc-internal-format msgid "unrecognized command line option %<-fdump-%s%>" msgstr "" -#: opts-global.c:365 +#: opts-global.c:369 #, gcc-internal-format msgid "unrecognized command line option %<-fopt-info-%s%>" msgstr "" -#: opts-global.c:386 opts-global.c:394 +#: opts-global.c:390 opts-global.c:398 #, gcc-internal-format msgid "plugin support is disabled; configure with --enable-plugin" msgstr "" -#: opts-global.c:418 +#: opts-global.c:422 #, gcc-internal-format msgid "unrecognized register name %qs" msgstr "" -#: opts-global.c:430 +#: opts-global.c:440 #, gcc-internal-format msgid "-fasan-shadow-offset should only be used with -fsanitize=kernel-address" msgstr "" -#: opts-global.c:433 +#: opts-global.c:443 #, gcc-internal-format msgid "unrecognized shadow offset %qs" msgstr "" @@ -19588,58 +19676,58 @@ msgstr "" msgid "section anchors must be disabled when toplevel reorder is disabled" msgstr "" -#: opts.c:808 config/darwin.c:3113 +#: opts.c:813 config/darwin.c:3113 #, gcc-internal-format msgid "" "-freorder-blocks-and-partition does not work with exceptions on this " "architecture" msgstr "" -#: opts.c:824 +#: opts.c:829 #, gcc-internal-format msgid "" "-freorder-blocks-and-partition does not support unwind info on this " "architecture" msgstr "" -#: opts.c:842 config/pa/pa.c:526 +#: opts.c:847 config/pa/pa.c:526 #, gcc-internal-format msgid "-freorder-blocks-and-partition does not work on this architecture" msgstr "" -#: opts.c:893 +#: opts.c:898 #, gcc-internal-format msgid "-fno-fat-lto-objects are supported only with linker plugin" msgstr "" -#: opts.c:906 +#: opts.c:911 #, gcc-internal-format msgid "%<-fsplit-stack%> is not supported by this compiler configuration" msgstr "" -#: opts.c:939 +#: opts.c:944 #, gcc-internal-format msgid "-fsanitize=address is incompatible with -fsanitize=kernel-address" msgstr "" -#: opts.c:947 +#: opts.c:952 #, gcc-internal-format msgid "" "-fsanitize=address and -fsanitize=kernel-address are incompatible with -" "fsanitize=thread" msgstr "" -#: opts.c:953 +#: opts.c:958 #, gcc-internal-format msgid "-fsanitize-recover=thread is not supported" msgstr "" -#: opts.c:956 +#: opts.c:961 #, gcc-internal-format msgid "-fsanitize-recover=leak is not supported" msgstr "" -#: opts.c:1370 +#: opts.c:1375 #, gcc-internal-format msgid "unrecognized include_flags 0x%x passed to print_specific_help" msgstr "" @@ -19977,22 +20065,22 @@ msgstr "" msgid "output operand %d must use %<&%> constraint" msgstr "" -#: regcprop.c:1152 +#: regcprop.c:1171 #, gcc-internal-format, gfc-internal-format msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)" msgstr "" -#: regcprop.c:1164 +#: regcprop.c:1183 #, gcc-internal-format, gfc-internal-format msgid "validate_value_data: Loop in regno chain (%u)" msgstr "" -#: regcprop.c:1167 +#: regcprop.c:1186 #, gcc-internal-format, gfc-internal-format msgid "validate_value_data: [%u] Bad oldest_regno (%u)" msgstr "" -#: regcprop.c:1179 +#: regcprop.c:1198 #, gcc-internal-format, gfc-internal-format msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)" msgstr "" @@ -20013,8 +20101,8 @@ msgid "can%'t use %qs as a fixed register" msgstr "" #: reginfo.c:750 config/ia64/ia64.c:5940 config/ia64/ia64.c:5947 -#: config/pa/pa.c:437 config/pa/pa.c:444 config/sh/sh.c:9625 -#: config/sh/sh.c:9632 config/spu/spu.c:4903 config/spu/spu.c:4910 +#: config/pa/pa.c:437 config/pa/pa.c:444 config/sh/sh.c:9627 +#: config/sh/sh.c:9634 config/spu/spu.c:4903 config/spu/spu.c:4910 #, gcc-internal-format, gfc-internal-format msgid "unknown register name: %s" msgstr "" @@ -20034,7 +20122,7 @@ msgstr "" msgid "register of %qD used for multiple global register variables" msgstr "" -#: reginfo.c:777 config/rs6000/rs6000.c:27626 +#: reginfo.c:777 config/rs6000/rs6000.c:27645 #, gcc-internal-format msgid "conflicts with %qD" msgstr "" @@ -20059,37 +20147,27 @@ msgstr "" msgid "%<&%> constraint used with no register class" msgstr "" -#: reload1.c:1274 -#, gcc-internal-format -msgid "frame size too large for reliable stack checking" -msgstr "" - -#: reload1.c:1277 -#, gcc-internal-format -msgid "try reducing the number of local variables" -msgstr "" - -#: reload1.c:2098 +#: reload1.c:2076 #, gcc-internal-format msgid "can%'t find a register in class %qs while reloading %<asm%>" msgstr "" -#: reload1.c:2103 +#: reload1.c:2081 #, gcc-internal-format msgid "unable to find a register to spill in class %qs" msgstr "" -#: reload1.c:4719 +#: reload1.c:4697 #, gcc-internal-format msgid "%<asm%> operand requires impossible reload" msgstr "" -#: reload1.c:6140 +#: reload1.c:6118 #, gcc-internal-format msgid "%<asm%> operand constraint incompatible with operand size" msgstr "" -#: reload1.c:8030 +#: reload1.c:8010 #, gcc-internal-format msgid "output operand is constant in %<asm%>" msgstr "" @@ -20412,17 +20490,17 @@ msgid "" "list." msgstr "" -#: symtab.c:1567 +#: symtab.c:1622 #, gcc-internal-format msgid "function %q+D part of alias cycle" msgstr "" -#: symtab.c:1569 +#: symtab.c:1624 #, gcc-internal-format msgid "variable %q+D part of alias cycle" msgstr "" -#: symtab.c:1597 +#: symtab.c:1652 #, gcc-internal-format msgid "section of alias %q+D must match section of its target" msgstr "" @@ -20442,12 +20520,12 @@ msgstr "" msgid "nested function trampolines not supported on this target" msgstr "" -#: targhooks.c:1326 +#: targhooks.c:1330 #, gcc-internal-format msgid "target attribute is not supported on this machine" msgstr "" -#: targhooks.c:1340 +#: targhooks.c:1344 #, gcc-internal-format msgid "#pragma GCC target is not supported for this machine" msgstr "" @@ -20812,8 +20890,7 @@ msgstr "" #: tree-cfg.c:2965 #, gcc-internal-format msgid "" -"mode precision of non-integral result does not match field size of " -"BIT_FIELD_REF" +"mode size of non-integral result does not match field size of BIT_FIELD_REF" msgstr "" #: tree-cfg.c:2973 @@ -21120,7 +21197,7 @@ msgid "" "the same number of elements as the result" msgstr "" -#: tree-cfg.c:4007 c/c-typeck.c:4955 +#: tree-cfg.c:4007 c/c-typeck.c:4969 #, gcc-internal-format msgid "type mismatch in conditional expression" msgstr "" @@ -21563,89 +21640,89 @@ msgstr "" msgid "BB %i has incorrect fallthru edge" msgstr "" -#: tree-inline.c:3542 +#: tree-inline.c:3528 #, gcc-internal-format msgid "function %q+F can never be copied because it receives a non-local goto" msgstr "" -#: tree-inline.c:3556 +#: tree-inline.c:3535 #, gcc-internal-format msgid "" "function %q+F can never be copied because it saves address of local label in " "a static variable" msgstr "" -#: tree-inline.c:3596 +#: tree-inline.c:3575 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses alloca (override using " "the always_inline attribute)" msgstr "" -#: tree-inline.c:3610 +#: tree-inline.c:3589 #, gcc-internal-format msgid "function %q+F can never be inlined because it uses setjmp" msgstr "" -#: tree-inline.c:3624 +#: tree-inline.c:3603 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses variable argument lists" msgstr "" -#: tree-inline.c:3636 +#: tree-inline.c:3615 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses setjmp-longjmp exception " "handling" msgstr "" -#: tree-inline.c:3644 +#: tree-inline.c:3623 #, gcc-internal-format msgid "function %q+F can never be inlined because it uses non-local goto" msgstr "" -#: tree-inline.c:3656 +#: tree-inline.c:3635 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses __builtin_return or " "__builtin_apply_args" msgstr "" -#: tree-inline.c:3676 +#: tree-inline.c:3655 #, gcc-internal-format msgid "function %q+F can never be inlined because it contains a computed goto" msgstr "" -#: tree-inline.c:3777 +#: tree-inline.c:3756 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it is suppressed using -fno-inline" msgstr "" -#: tree-inline.c:3785 +#: tree-inline.c:3764 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses attributes conflicting " "with inlining" msgstr "" -#: tree-inline.c:4446 +#: tree-inline.c:4425 #, gcc-internal-format msgid "inlining failed in call to always_inline %q+F: %s" msgstr "" -#: tree-inline.c:4449 tree-inline.c:4469 +#: tree-inline.c:4428 tree-inline.c:4448 #, gcc-internal-format msgid "called from here" msgstr "" -#: tree-inline.c:4452 tree-inline.c:4472 +#: tree-inline.c:4431 tree-inline.c:4451 #, gcc-internal-format msgid "called from this function" msgstr "" -#: tree-inline.c:4465 +#: tree-inline.c:4444 #, gcc-internal-format msgid "inlining failed in call to %q+F: %s" msgstr "" @@ -21660,8 +21737,8 @@ msgstr "" msgid "cannot update SSA form" msgstr "" -#: tree-into-ssa.c:3282 tree-outof-ssa.c:847 tree-outof-ssa.c:906 -#: tree-ssa-coalesce.c:936 tree-ssa-live.c:1290 +#: tree-into-ssa.c:3282 tree-outof-ssa.c:851 tree-outof-ssa.c:910 +#: tree-ssa-coalesce.c:1010 tree-ssa-live.c:1290 #, gcc-internal-format msgid "SSA corruption" msgstr "" @@ -21873,88 +21950,88 @@ msgid "" "this target" msgstr "" -#: tree-vect-generic.c:263 +#: tree-vect-generic.c:265 #, gcc-internal-format msgid "vector operation will be expanded piecewise" msgstr "" -#: tree-vect-generic.c:266 +#: tree-vect-generic.c:268 #, gcc-internal-format msgid "vector operation will be expanded in parallel" msgstr "" -#: tree-vect-generic.c:317 +#: tree-vect-generic.c:319 #, gcc-internal-format msgid "vector operation will be expanded with a single scalar operation" msgstr "" -#: tree-vect-generic.c:885 +#: tree-vect-generic.c:887 #, gcc-internal-format msgid "vector condition will be expanded piecewise" msgstr "" -#: tree-vect-generic.c:1302 +#: tree-vect-generic.c:1304 #, gcc-internal-format msgid "vector shuffling operation will be expanded piecewise" msgstr "" -#: tree-vect-loop.c:3378 +#: tree-vect-loop.c:3381 #, gcc-internal-format msgid "vectorization did not happen for a simd loop" msgstr "" -#: tree-vrp.c:6498 tree-vrp.c:6538 tree-vrp.c:6619 +#: tree-vrp.c:6500 tree-vrp.c:6540 tree-vrp.c:6621 #, gcc-internal-format msgid "array subscript is above array bounds" msgstr "" -#: tree-vrp.c:6522 +#: tree-vrp.c:6524 #, gcc-internal-format msgid "array subscript is outside array bounds" msgstr "" -#: tree-vrp.c:6551 tree-vrp.c:6606 +#: tree-vrp.c:6553 tree-vrp.c:6608 #, gcc-internal-format msgid "array subscript is below array bounds" msgstr "" -#: tree-vrp.c:7458 +#: tree-vrp.c:7462 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when simplifying conditional to " "constant" msgstr "" -#: tree-vrp.c:7464 tree-vrp.c:9428 tree-vrp.c:9472 tree-vrp.c:9535 +#: tree-vrp.c:7468 tree-vrp.c:9432 tree-vrp.c:9476 tree-vrp.c:9539 #, gcc-internal-format msgid "assuming signed overflow does not occur when simplifying conditional" msgstr "" -#: tree-vrp.c:7508 +#: tree-vrp.c:7512 #, gcc-internal-format msgid "comparison always false due to limited range of data type" msgstr "" -#: tree-vrp.c:7510 +#: tree-vrp.c:7514 #, gcc-internal-format msgid "comparison always true due to limited range of data type" msgstr "" -#: tree-vrp.c:9027 +#: tree-vrp.c:9031 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when simplifying %</%> or %<%%%> to " "%<>>%> or %<&%>" msgstr "" -#: tree-vrp.c:9092 +#: tree-vrp.c:9096 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when simplifying %<min/max (X,Y)%> " "to %<X%> or %<Y%>" msgstr "" -#: tree-vrp.c:9145 +#: tree-vrp.c:9149 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when simplifying %<abs (X)%> to %<X" @@ -21976,169 +22053,169 @@ msgstr "" msgid "ignoring attributes applied to %qT after definition" msgstr "" -#: tree.c:6322 +#: tree.c:6328 #, gcc-internal-format msgid "%q+D already declared with dllexport attribute: dllimport ignored" msgstr "" -#: tree.c:6334 +#: tree.c:6340 #, gcc-internal-format msgid "" "%q+D redeclared without dllimport attribute after being referenced with dll " "linkage" msgstr "" -#: tree.c:6349 +#: tree.c:6355 #, gcc-internal-format msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored" msgstr "" -#: tree.c:6392 tree.c:6404 tree.c:6414 c-family/c-common.c:6586 -#: c-family/c-common.c:6605 c-family/c-common.c:6623 c-family/c-common.c:6653 -#: c-family/c-common.c:6681 c-family/c-common.c:6709 c-family/c-common.c:6725 -#: c-family/c-common.c:6740 c-family/c-common.c:6758 c-family/c-common.c:6773 -#: c-family/c-common.c:6805 c-family/c-common.c:6822 c-family/c-common.c:6839 -#: c-family/c-common.c:6877 c-family/c-common.c:6900 c-family/c-common.c:6917 -#: c-family/c-common.c:6945 c-family/c-common.c:6966 c-family/c-common.c:6987 -#: c-family/c-common.c:7014 c-family/c-common.c:7043 c-family/c-common.c:7080 -#: c-family/c-common.c:7133 c-family/c-common.c:7191 c-family/c-common.c:7249 -#: c-family/c-common.c:7338 c-family/c-common.c:7368 c-family/c-common.c:7422 -#: c-family/c-common.c:7893 c-family/c-common.c:7930 c-family/c-common.c:7986 -#: c-family/c-common.c:8042 c-family/c-common.c:8120 c-family/c-common.c:8247 -#: c-family/c-common.c:8309 c-family/c-common.c:8416 c-family/c-common.c:8432 -#: c-family/c-common.c:8448 c-family/c-common.c:8469 c-family/c-common.c:8539 -#: c-family/c-common.c:8566 c-family/c-common.c:8614 c-family/c-common.c:8794 -#: c-family/c-common.c:8815 c-family/c-common.c:8928 c-family/c-common.c:8955 -#: c-family/c-common.c:9268 c-family/c-common.c:9291 c-family/c-common.c:9330 -#: c-family/c-common.c:9412 c-family/c-common.c:9455 c-family/c-common.c:9592 -#: config/darwin.c:2021 config/arm/arm.c:6479 config/arm/arm.c:6507 -#: config/arm/arm.c:6524 config/avr/avr.c:8961 config/h8300/h8300.c:5477 -#: config/h8300/h8300.c:5501 config/i386/i386.c:6833 config/i386/i386.c:44470 -#: config/ia64/ia64.c:756 config/rs6000/rs6000.c:31016 config/spu/spu.c:3738 -#: ada/gcc-interface/utils.c:5965 ada/gcc-interface/utils.c:5991 +#: tree.c:6398 tree.c:6410 tree.c:6420 c-family/c-common.c:6588 +#: c-family/c-common.c:6607 c-family/c-common.c:6625 c-family/c-common.c:6655 +#: c-family/c-common.c:6683 c-family/c-common.c:6711 c-family/c-common.c:6727 +#: c-family/c-common.c:6742 c-family/c-common.c:6760 c-family/c-common.c:6775 +#: c-family/c-common.c:6807 c-family/c-common.c:6824 c-family/c-common.c:6841 +#: c-family/c-common.c:6879 c-family/c-common.c:6902 c-family/c-common.c:6919 +#: c-family/c-common.c:6947 c-family/c-common.c:6968 c-family/c-common.c:6989 +#: c-family/c-common.c:7016 c-family/c-common.c:7045 c-family/c-common.c:7082 +#: c-family/c-common.c:7135 c-family/c-common.c:7193 c-family/c-common.c:7251 +#: c-family/c-common.c:7340 c-family/c-common.c:7370 c-family/c-common.c:7424 +#: c-family/c-common.c:7895 c-family/c-common.c:7932 c-family/c-common.c:7988 +#: c-family/c-common.c:8044 c-family/c-common.c:8122 c-family/c-common.c:8249 +#: c-family/c-common.c:8311 c-family/c-common.c:8418 c-family/c-common.c:8434 +#: c-family/c-common.c:8450 c-family/c-common.c:8471 c-family/c-common.c:8541 +#: c-family/c-common.c:8568 c-family/c-common.c:8616 c-family/c-common.c:8796 +#: c-family/c-common.c:8817 c-family/c-common.c:8930 c-family/c-common.c:8957 +#: c-family/c-common.c:9270 c-family/c-common.c:9293 c-family/c-common.c:9332 +#: c-family/c-common.c:9414 c-family/c-common.c:9457 c-family/c-common.c:9594 +#: config/darwin.c:2021 config/arm/arm.c:6488 config/arm/arm.c:6516 +#: config/arm/arm.c:6533 config/avr/avr.c:8971 config/h8300/h8300.c:5477 +#: config/h8300/h8300.c:5501 config/i386/i386.c:6862 config/i386/i386.c:44531 +#: config/ia64/ia64.c:756 config/rs6000/rs6000.c:31035 config/spu/spu.c:3738 +#: ada/gcc-interface/utils.c:5986 ada/gcc-interface/utils.c:6012 #: lto/lto-lang.c:243 #, gcc-internal-format msgid "%qE attribute ignored" msgstr "" -#: tree.c:6432 +#: tree.c:6438 #, gcc-internal-format msgid "inline function %q+D declared as dllimport: attribute ignored" msgstr "" -#: tree.c:6440 +#: tree.c:6446 #, gcc-internal-format msgid "function %q+D definition is marked dllimport" msgstr "" -#: tree.c:6448 +#: tree.c:6454 #, gcc-internal-format msgid "variable %q+D definition is marked dllimport" msgstr "" -#: tree.c:6476 +#: tree.c:6482 #, gcc-internal-format msgid "external linkage required for symbol %q+D because of %qE attribute" msgstr "" -#: tree.c:6490 +#: tree.c:6496 #, gcc-internal-format msgid "" "%qE implies default visibility, but %qD has already been declared with a " "different visibility" msgstr "" -#: tree.c:8239 +#: tree.c:8245 #, gcc-internal-format msgid "arrays of functions are not meaningful" msgstr "" -#: tree.c:8408 +#: tree.c:8414 #, gcc-internal-format msgid "function return type cannot be function" msgstr "" -#: tree.c:9635 tree.c:9720 tree.c:9781 +#: tree.c:9641 tree.c:9726 tree.c:9787 #, gcc-internal-format, gfc-internal-format msgid "tree check: %s, have %s in %s, at %s:%d" msgstr "" -#: tree.c:9672 +#: tree.c:9678 #, gcc-internal-format, gfc-internal-format msgid "tree check: expected none of %s, have %s in %s, at %s:%d" msgstr "" -#: tree.c:9685 +#: tree.c:9691 #, gcc-internal-format msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d" msgstr "" -#: tree.c:9734 +#: tree.c:9740 #, gcc-internal-format msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d" msgstr "" -#: tree.c:9747 +#: tree.c:9753 #, gcc-internal-format, gfc-internal-format msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d" msgstr "" -#: tree.c:9807 +#: tree.c:9813 #, gcc-internal-format msgid "" "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:" "%d" msgstr "" -#: tree.c:9821 +#: tree.c:9827 #, gcc-internal-format, gfc-internal-format msgid "" "tree check: accessed elt %d of tree_int_cst with %d elts in %s, at %s:%d" msgstr "" -#: tree.c:9833 +#: tree.c:9839 #, gcc-internal-format, gfc-internal-format msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d" msgstr "" -#: tree.c:9846 +#: tree.c:9852 #, gcc-internal-format, gfc-internal-format msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d" msgstr "" -#: tree.c:9859 +#: tree.c:9865 #, gcc-internal-format, gfc-internal-format msgid "" "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at " "%s:%d" msgstr "" -#: tree.c:12566 +#: tree.c:12584 #, gcc-internal-format msgid "%qD is deprecated: %s" msgstr "" -#: tree.c:12569 +#: tree.c:12587 #, gcc-internal-format msgid "%qD is deprecated" msgstr "" -#: tree.c:12593 tree.c:12615 +#: tree.c:12611 tree.c:12633 #, gcc-internal-format msgid "%qE is deprecated: %s" msgstr "" -#: tree.c:12596 tree.c:12618 +#: tree.c:12614 tree.c:12636 #, gcc-internal-format msgid "%qE is deprecated" msgstr "" -#: tree.c:12602 tree.c:12623 +#: tree.c:12620 tree.c:12641 #, gcc-internal-format, gfc-internal-format msgid "type is deprecated: %s" msgstr "" -#: tree.c:12605 tree.c:12626 +#: tree.c:12623 tree.c:12644 #, gcc-internal-format msgid "type is deprecated" msgstr "" @@ -22165,264 +22242,264 @@ msgstr "" #. main variant only. #. #. Convenience macro for matching individual fields. -#: tree.c:13028 +#: tree.c:13048 #, gcc-internal-format msgid "type variant differs by " msgstr "" -#: tree.c:13068 +#: tree.c:13088 #, gcc-internal-format msgid "type variant has different TYPE_SIZE_UNIT" msgstr "" -#: tree.c:13070 +#: tree.c:13090 #, gcc-internal-format msgid "type variant's TYPE_SIZE_UNIT" msgstr "" -#: tree.c:13072 +#: tree.c:13092 #, gcc-internal-format msgid "type's TYPE_SIZE_UNIT" msgstr "" -#: tree.c:13092 +#: tree.c:13112 #, gcc-internal-format msgid "type variant with TYPE_ALIAS_SET_KNOWN_P" msgstr "" -#: tree.c:13105 +#: tree.c:13125 #, gcc-internal-format msgid "type variant has different TYPE_VFIELD" msgstr "" -#: tree.c:13122 +#: tree.c:13142 #, gcc-internal-format msgid "type variant has TYPE_METHODS" msgstr "" -#: tree.c:13147 +#: tree.c:13167 #, gcc-internal-format msgid "type variant has different TYPE_BINFO" msgstr "" -#: tree.c:13149 +#: tree.c:13169 #, gcc-internal-format msgid "type variant's TYPE_BINFO" msgstr "" -#: tree.c:13151 +#: tree.c:13171 #, gcc-internal-format msgid "type's TYPE_BINFO" msgstr "" -#: tree.c:13189 +#: tree.c:13209 #, gcc-internal-format msgid "type variant has different TYPE_FIELDS" msgstr "" -#: tree.c:13191 +#: tree.c:13211 #, gcc-internal-format msgid "first mismatch is field" msgstr "" -#: tree.c:13193 +#: tree.c:13213 #, gcc-internal-format msgid "and field" msgstr "" -#: tree.c:13210 +#: tree.c:13230 #, gcc-internal-format msgid "type variant has different TREE_TYPE" msgstr "" -#: tree.c:13212 tree.c:13223 +#: tree.c:13232 tree.c:13243 #, gcc-internal-format msgid "type variant's TREE_TYPE" msgstr "" -#: tree.c:13214 tree.c:13225 +#: tree.c:13234 tree.c:13245 #, gcc-internal-format msgid "type's TREE_TYPE" msgstr "" -#: tree.c:13221 +#: tree.c:13241 #, gcc-internal-format msgid "type is not compatible with its vairant" msgstr "" -#: tree.c:13520 +#: tree.c:13540 #, gcc-internal-format msgid "Main variant is not defined" msgstr "" -#: tree.c:13525 +#: tree.c:13545 #, gcc-internal-format msgid "TYPE_MAIN_VARIANT has different TYPE_MAIN_VARIANT" msgstr "" -#: tree.c:13537 +#: tree.c:13557 #, gcc-internal-format msgid "TYPE_CANONICAL has different TYPE_CANONICAL" msgstr "" -#: tree.c:13555 +#: tree.c:13575 #, gcc-internal-format msgid "TYPE_CANONICAL is not compatible" msgstr "" -#: tree.c:13563 +#: tree.c:13583 #, gcc-internal-format msgid "TYPE_MODE of TYPE_CANONICAL is not compatible" msgstr "" -#: tree.c:13569 +#: tree.c:13589 #, gcc-internal-format msgid "TYPE_CANONICAL of main variant is not main variant" msgstr "" -#: tree.c:13585 +#: tree.c:13605 #, gcc-internal-format msgid "TYPE_VFIELD is not FIELD_DECL nor TREE_LIST" msgstr "" -#: tree.c:13595 +#: tree.c:13615 #, gcc-internal-format msgid "TYPE_NEXT_PTR_TO is not POINTER_TYPE" msgstr "" -#: tree.c:13605 +#: tree.c:13625 #, gcc-internal-format msgid "TYPE_NEXT_REF_TO is not REFERENCE_TYPE" msgstr "" -#: tree.c:13623 +#: tree.c:13643 #, gcc-internal-format msgid "TYPE_MINVAL non-NULL" msgstr "" -#: tree.c:13635 +#: tree.c:13655 #, gcc-internal-format msgid "TYPE_METHODS is not FUNCTION_DECL, TEMPLATE_DECL nor error_mark_node" msgstr "" -#: tree.c:13646 +#: tree.c:13666 #, gcc-internal-format msgid "TYPE_METHOD_BASETYPE is not record nor union" msgstr "" -#: tree.c:13657 +#: tree.c:13677 #, gcc-internal-format msgid "TYPE_OFFSET_BASETYPE is not record nor union" msgstr "" -#: tree.c:13675 +#: tree.c:13695 #, gcc-internal-format msgid "TYPE_ARRAY_MAX_SIZE not INTEGER_CST" msgstr "" -#: tree.c:13682 +#: tree.c:13702 #, gcc-internal-format msgid "TYPE_MAXVAL non-NULL" msgstr "" -#: tree.c:13694 +#: tree.c:13714 #, gcc-internal-format msgid "TYPE_BINFO is not TREE_BINFO" msgstr "" -#: tree.c:13702 +#: tree.c:13722 #, gcc-internal-format msgid "TYPE_BINFO type is not TYPE_MAIN_VARIANT" msgstr "" -#: tree.c:13709 +#: tree.c:13729 #, gcc-internal-format msgid "TYPE_LANG_SLOT_1 (binfo) field is non-NULL" msgstr "" -#: tree.c:13725 +#: tree.c:13745 #, gcc-internal-format msgid "Enum value is not CONST_DECL or INTEGER_CST" msgstr "" -#: tree.c:13733 +#: tree.c:13753 #, gcc-internal-format msgid "Enum value type is not INTEGER_TYPE nor convertible to the enum" msgstr "" -#: tree.c:13740 +#: tree.c:13760 #, gcc-internal-format msgid "Enum value name is not IDENTIFIER_NODE" msgstr "" -#: tree.c:13750 +#: tree.c:13770 #, gcc-internal-format msgid "Array TYPE_DOMAIN is not integer type" msgstr "" -#: tree.c:13759 +#: tree.c:13779 #, gcc-internal-format msgid "TYPE_FIELDS defined in incomplete type" msgstr "" -#: tree.c:13779 +#: tree.c:13799 #, gcc-internal-format msgid "Wrong tree in TYPE_FIELDS list" msgstr "" -#: tree.c:13794 +#: tree.c:13814 #, gcc-internal-format msgid "TYPE_CACHED_VALUES_P is %i while TYPE_CACHED_VALUES is %p" msgstr "" -#: tree.c:13800 +#: tree.c:13820 #, gcc-internal-format msgid "TYPE_CACHED_VALUES is not TREE_VEC" msgstr "" -#: tree.c:13813 +#: tree.c:13833 #, gcc-internal-format msgid "wrong TYPE_CACHED_VALUES entry" msgstr "" -#: tree.c:13826 +#: tree.c:13846 #, gcc-internal-format msgid "TREE_PURPOSE is non-NULL in TYPE_ARG_TYPES list" msgstr "" -#: tree.c:13832 +#: tree.c:13852 #, gcc-internal-format msgid "Wrong entry in TYPE_ARG_TYPES list" msgstr "" -#: tree.c:13839 +#: tree.c:13859 #, gcc-internal-format msgid "TYPE_VALUES_RAW field is non-NULL" msgstr "" -#: tree.c:13851 +#: tree.c:13871 #, gcc-internal-format msgid "TYPE_CACHED_VALUES_P is set while it should not" msgstr "" -#: tree.c:13857 +#: tree.c:13877 #, gcc-internal-format msgid "TYPE_STRING_FLAG is set on wrong type code" msgstr "" -#: tree.c:13869 +#: tree.c:13889 #, gcc-internal-format msgid "" "TYPE_STRING_FLAG is set on type that does not look like char nor array of " "chars" msgstr "" -#: tree.c:13881 +#: tree.c:13901 #, gcc-internal-format msgid "TYPE_METHOD_BASETYPE is not main variant" msgstr "" -#: tree.c:13888 +#: tree.c:13908 #, gcc-internal-format msgid "verify_type failed" msgstr "" @@ -22547,7 +22624,7 @@ msgid "" "requested alignment for %q+D is greater than implemented alignment of %wu" msgstr "" -#: varasm.c:2132 c/c-decl.c:4790 c/c-parser.c:1439 +#: varasm.c:2132 c/c-decl.c:4819 c/c-parser.c:1439 #, gcc-internal-format msgid "storage size of %q+D isn%'t known" msgstr "" @@ -22562,62 +22639,62 @@ msgstr "" msgid "initializer for floating value is not a floating constant" msgstr "" -#: varasm.c:5059 +#: varasm.c:5064 #, gcc-internal-format msgid "invalid initial value for member %qE" msgstr "" -#: varasm.c:5319 +#: varasm.c:5324 #, gcc-internal-format msgid "%+D declared weak after being used" msgstr "" -#: varasm.c:5402 +#: varasm.c:5407 #, gcc-internal-format msgid "weak declaration of %q+D must be public" msgstr "" -#: varasm.c:5406 +#: varasm.c:5411 #, gcc-internal-format msgid "weak declaration of %q+D not supported" msgstr "" -#: varasm.c:5435 varasm.c:5739 +#: varasm.c:5440 varasm.c:5744 #, gcc-internal-format msgid "only weak aliases are supported in this configuration" msgstr "" -#: varasm.c:5629 +#: varasm.c:5634 #, gcc-internal-format msgid "weakref is not supported in this configuration" msgstr "" -#: varasm.c:5661 +#: varasm.c:5666 #, gcc-internal-format msgid "ifunc is not supported on this target" msgstr "" -#: varasm.c:5719 +#: varasm.c:5724 #, gcc-internal-format msgid "weakref %q+D ultimately targets itself" msgstr "" -#: varasm.c:5721 +#: varasm.c:5726 #, gcc-internal-format msgid "weakref %q+D must have static linkage" msgstr "" -#: varasm.c:5728 +#: varasm.c:5733 #, gcc-internal-format msgid "alias definitions not supported in this configuration" msgstr "" -#: varasm.c:5736 +#: varasm.c:5741 #, gcc-internal-format msgid "ifunc is not supported in this configuration" msgstr "" -#: varasm.c:5954 config/sol2.c:154 config/i386/winnt.c:260 +#: varasm.c:5959 config/sol2.c:157 config/i386/winnt.c:260 #, gcc-internal-format msgid "visibility attribute not supported in this configuration; ignored" msgstr "" @@ -22697,7 +22774,8 @@ msgid "" "required to support" msgstr "" -#: c-family/c-common.c:1126 c-family/c-common.c:1138 cp/constexpr.c:1473 +#: c-family/c-common.c:1126 c-family/c-common.c:1138 cp/constexpr.c:1612 +#: cp/constexpr.c:3494 #, gcc-internal-format msgid "overflow in constant expression" msgstr "" @@ -22782,1442 +22860,1449 @@ msgstr "" msgid "type-punning to incomplete type might break strict-aliasing rules" msgstr "" -#: c-family/c-common.c:1573 +#: c-family/c-common.c:1575 #, gcc-internal-format msgid "dereferencing type-punned pointer will break strict-aliasing rules" msgstr "" -#: c-family/c-common.c:1580 c-family/c-common.c:1598 +#: c-family/c-common.c:1582 c-family/c-common.c:1600 #, gcc-internal-format msgid "dereferencing type-punned pointer might break strict-aliasing rules" msgstr "" -#: c-family/c-common.c:1732 +#: c-family/c-common.c:1734 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same expression as the " "destination; did you mean to remove the addressof?" msgstr "" -#: c-family/c-common.c:1739 +#: c-family/c-common.c:1741 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same expression as the " "destination; did you mean to provide an explicit length?" msgstr "" -#: c-family/c-common.c:1744 +#: c-family/c-common.c:1746 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same expression as the " "destination; did you mean to dereference it?" msgstr "" -#: c-family/c-common.c:1756 +#: c-family/c-common.c:1758 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same pointer type %qT as the " "destination; expected %qT or an explicit length" msgstr "" -#: c-family/c-common.c:1772 +#: c-family/c-common.c:1774 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same expression as the source; did " "you mean to remove the addressof?" msgstr "" -#: c-family/c-common.c:1779 +#: c-family/c-common.c:1781 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same expression as the source; did " "you mean to provide an explicit length?" msgstr "" -#: c-family/c-common.c:1784 +#: c-family/c-common.c:1786 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same expression as the source; did " "you mean to dereference it?" msgstr "" -#: c-family/c-common.c:1796 +#: c-family/c-common.c:1798 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same pointer type %qT as the " "source; expected %qT or an explicit length" msgstr "" -#: c-family/c-common.c:1812 +#: c-family/c-common.c:1814 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same expression as the first " "source; did you mean to remove the addressof?" msgstr "" -#: c-family/c-common.c:1819 +#: c-family/c-common.c:1821 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same expression as the first " "source; did you mean to provide an explicit length?" msgstr "" -#: c-family/c-common.c:1824 +#: c-family/c-common.c:1826 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same expression as the first " "source; did you mean to dereference it?" msgstr "" -#: c-family/c-common.c:1836 +#: c-family/c-common.c:1838 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same pointer type %qT as the first " "source; expected %qT or an explicit length" msgstr "" -#: c-family/c-common.c:1852 +#: c-family/c-common.c:1854 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same expression as the second " "source; did you mean to remove the addressof?" msgstr "" -#: c-family/c-common.c:1859 +#: c-family/c-common.c:1861 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same expression as the second " "source; did you mean to provide an explicit length?" msgstr "" -#: c-family/c-common.c:1864 +#: c-family/c-common.c:1866 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same expression as the second " "source; did you mean to dereference it?" msgstr "" -#: c-family/c-common.c:1876 +#: c-family/c-common.c:1878 #, gcc-internal-format msgid "" "argument to %<sizeof%> in %qD call is the same pointer type %qT as the " "second source; expected %qT or an explicit length" msgstr "" -#: c-family/c-common.c:1905 c-family/c-common.c:1912 +#: c-family/c-common.c:1907 c-family/c-common.c:1914 #, gcc-internal-format msgid "%<_Atomic%>-qualified parameter type %qT of %q+D" msgstr "" -#: c-family/c-common.c:1922 +#: c-family/c-common.c:1924 #, gcc-internal-format msgid "first argument of %q+D should be %<int%>" msgstr "" -#: c-family/c-common.c:1931 +#: c-family/c-common.c:1933 #, gcc-internal-format msgid "second argument of %q+D should be %<char **%>" msgstr "" -#: c-family/c-common.c:1940 +#: c-family/c-common.c:1942 #, gcc-internal-format msgid "third argument of %q+D should probably be %<char **%>" msgstr "" -#: c-family/c-common.c:1951 +#: c-family/c-common.c:1953 #, gcc-internal-format msgid "%q+D takes only zero or two arguments" msgstr "" -#: c-family/c-common.c:1955 +#: c-family/c-common.c:1957 #, gcc-internal-format msgid "%q+D declared as variadic function" msgstr "" -#: c-family/c-common.c:2023 +#: c-family/c-common.c:2025 #, gcc-internal-format msgid "" "use -flax-vector-conversions to permit conversions between vectors with " "differing element types or numbers of subparts" msgstr "" -#: c-family/c-common.c:2063 +#: c-family/c-common.c:2065 #, gcc-internal-format msgid "__builtin_shuffle last argument must be an integer vector" msgstr "" -#: c-family/c-common.c:2072 +#: c-family/c-common.c:2074 #, gcc-internal-format msgid "__builtin_shuffle arguments must be vectors" msgstr "" -#: c-family/c-common.c:2079 +#: c-family/c-common.c:2081 #, gcc-internal-format msgid "__builtin_shuffle argument vectors must be of the same type" msgstr "" -#: c-family/c-common.c:2090 +#: c-family/c-common.c:2092 #, gcc-internal-format msgid "" "__builtin_shuffle number of elements of the argument vector(s) and the mask " "vector should be the same" msgstr "" -#: c-family/c-common.c:2100 +#: c-family/c-common.c:2102 #, gcc-internal-format msgid "" "__builtin_shuffle argument vector(s) inner type must have the same size as " "inner type of the mask" msgstr "" -#: c-family/c-common.c:2327 +#: c-family/c-common.c:2329 #, gcc-internal-format msgid "negative integer implicitly converted to unsigned type" msgstr "" -#: c-family/c-common.c:2333 +#: c-family/c-common.c:2335 #, gcc-internal-format msgid "conversion of unsigned constant value to negative integer" msgstr "" -#: c-family/c-common.c:2484 c-family/c-common.c:2546 +#: c-family/c-common.c:2486 c-family/c-common.c:2548 #, gcc-internal-format msgid "conversion to %qT from %qT may change the sign of the result" msgstr "" -#: c-family/c-common.c:2604 +#: c-family/c-common.c:2606 #, gcc-internal-format msgid "conversion to %qT from boolean expression" msgstr "" -#: c-family/c-common.c:2613 c-family/c-common.c:2617 +#: c-family/c-common.c:2615 c-family/c-common.c:2619 #, gcc-internal-format msgid "conversion to %qT alters %qT constant value" msgstr "" -#: c-family/c-common.c:2637 c-family/c-common.c:2645 +#: c-family/c-common.c:2639 c-family/c-common.c:2647 #, gcc-internal-format msgid "conversion to %qT from %qT may alter its value" msgstr "" -#: c-family/c-common.c:2641 +#: c-family/c-common.c:2643 #, gcc-internal-format msgid "conversion to %qT from %qT discards imaginary component" msgstr "" -#: c-family/c-common.c:2676 +#: c-family/c-common.c:2678 #, gcc-internal-format msgid "large integer implicitly truncated to unsigned type" msgstr "" -#: c-family/c-common.c:2682 c-family/c-common.c:2689 c-family/c-common.c:2697 +#: c-family/c-common.c:2684 c-family/c-common.c:2691 c-family/c-common.c:2699 #, gcc-internal-format msgid "overflow in implicit constant conversion" msgstr "" -#: c-family/c-common.c:2869 +#: c-family/c-common.c:2871 #, gcc-internal-format msgid "operation on %qE may be undefined" msgstr "" -#: c-family/c-common.c:3176 +#: c-family/c-common.c:3178 #, gcc-internal-format msgid "case label does not reduce to an integer constant" msgstr "" -#: c-family/c-common.c:3222 +#: c-family/c-common.c:3224 #, gcc-internal-format msgid "case label value is less than minimum value for type" msgstr "" -#: c-family/c-common.c:3232 +#: c-family/c-common.c:3234 #, gcc-internal-format msgid "case label value exceeds maximum value for type" msgstr "" -#: c-family/c-common.c:3241 +#: c-family/c-common.c:3243 #, gcc-internal-format msgid "lower value in case label range less than minimum value for type" msgstr "" -#: c-family/c-common.c:3251 +#: c-family/c-common.c:3253 #, gcc-internal-format msgid "upper value in case label range exceeds maximum value for type" msgstr "" -#: c-family/c-common.c:3334 +#: c-family/c-common.c:3336 #, gcc-internal-format msgid "" "GCC cannot support operators with integer types and fixed-point types that " "have too many integral and fractional bits together" msgstr "" -#: c-family/c-common.c:3864 +#: c-family/c-common.c:3866 #, gcc-internal-format msgid "invalid operands to binary %s (have %qT and %qT)" msgstr "" -#: c-family/c-common.c:4114 +#: c-family/c-common.c:4116 #, gcc-internal-format msgid "comparison is always false due to limited range of data type" msgstr "" -#: c-family/c-common.c:4117 +#: c-family/c-common.c:4119 #, gcc-internal-format msgid "comparison is always true due to limited range of data type" msgstr "" -#: c-family/c-common.c:4207 +#: c-family/c-common.c:4209 #, gcc-internal-format msgid "comparison of unsigned expression >= 0 is always true" msgstr "" -#: c-family/c-common.c:4214 +#: c-family/c-common.c:4216 #, gcc-internal-format msgid "comparison of unsigned expression < 0 is always false" msgstr "" -#: c-family/c-common.c:4257 +#: c-family/c-common.c:4259 #, gcc-internal-format msgid "pointer of type %<void *%> used in arithmetic" msgstr "" -#: c-family/c-common.c:4266 +#: c-family/c-common.c:4268 #, gcc-internal-format msgid "pointer to a function used in arithmetic" msgstr "" -#: c-family/c-common.c:4478 +#: c-family/c-common.c:4480 #, gcc-internal-format msgid "the address of %qD will always evaluate as %<true%>" msgstr "" -#: c-family/c-common.c:4560 +#: c-family/c-common.c:4562 #, gcc-internal-format msgid "" "the compiler can assume that the address of %qD will always evaluate to " "%<true%>" msgstr "" -#: c-family/c-common.c:4587 cp/semantics.c:660 cp/typeck.c:8470 +#: c-family/c-common.c:4589 cp/semantics.c:660 cp/typeck.c:8450 #, gcc-internal-format msgid "suggest parentheses around assignment used as truth value" msgstr "" -#: c-family/c-common.c:4666 c/c-decl.c:4097 c/c-typeck.c:13557 +#: c-family/c-common.c:4668 c/c-decl.c:4126 c/c-typeck.c:13560 #, gcc-internal-format msgid "invalid use of %<restrict%>" msgstr "" -#: c-family/c-common.c:4866 +#: c-family/c-common.c:4868 #, gcc-internal-format msgid "invalid application of %<sizeof%> to a function type" msgstr "" -#: c-family/c-common.c:4876 +#: c-family/c-common.c:4878 #, gcc-internal-format msgid "ISO C++ does not permit %<alignof%> applied to a function type" msgstr "" -#: c-family/c-common.c:4879 +#: c-family/c-common.c:4881 #, gcc-internal-format msgid "ISO C does not permit %<_Alignof%> applied to a function type" msgstr "" -#: c-family/c-common.c:4890 +#: c-family/c-common.c:4892 #, gcc-internal-format msgid "invalid application of %qs to a void type" msgstr "" -#: c-family/c-common.c:4899 +#: c-family/c-common.c:4901 #, gcc-internal-format msgid "invalid application of %qs to incomplete type %qT" msgstr "" -#: c-family/c-common.c:4907 +#: c-family/c-common.c:4909 #, gcc-internal-format msgid "invalid application of %qs to array type %qT of incomplete element type" msgstr "" -#: c-family/c-common.c:4949 +#: c-family/c-common.c:4951 #, gcc-internal-format msgid "%<__alignof%> applied to a bit-field" msgstr "" -#: c-family/c-common.c:5828 +#: c-family/c-common.c:5830 #, gcc-internal-format msgid "cannot disable built-in function %qs" msgstr "" -#: c-family/c-common.c:6020 +#: c-family/c-common.c:6022 #, gcc-internal-format msgid "pointers are not permitted as case values" msgstr "" -#: c-family/c-common.c:6027 +#: c-family/c-common.c:6029 #, gcc-internal-format msgid "range expressions in switch statements are non-standard" msgstr "" -#: c-family/c-common.c:6053 +#: c-family/c-common.c:6055 #, gcc-internal-format msgid "empty range specified" msgstr "" -#: c-family/c-common.c:6114 +#: c-family/c-common.c:6116 #, gcc-internal-format msgid "duplicate (or overlapping) case value" msgstr "" -#: c-family/c-common.c:6116 +#: c-family/c-common.c:6118 #, gcc-internal-format msgid "this is the first entry overlapping that value" msgstr "" -#: c-family/c-common.c:6120 +#: c-family/c-common.c:6122 #, gcc-internal-format msgid "duplicate case value" msgstr "" -#: c-family/c-common.c:6121 c-family/c-common.c:12667 +#: c-family/c-common.c:6123 c-family/c-common.c:12700 #, gcc-internal-format msgid "previously used here" msgstr "" -#: c-family/c-common.c:6125 +#: c-family/c-common.c:6127 #, gcc-internal-format msgid "multiple default labels in one switch" msgstr "" -#: c-family/c-common.c:6127 +#: c-family/c-common.c:6129 #, gcc-internal-format msgid "this is the first default label" msgstr "" -#: c-family/c-common.c:6171 +#: c-family/c-common.c:6173 #, gcc-internal-format msgid "case value %qs not in enumerated type" msgstr "" -#: c-family/c-common.c:6176 +#: c-family/c-common.c:6178 #, gcc-internal-format msgid "case value %qs not in enumerated type %qT" msgstr "" -#: c-family/c-common.c:6237 +#: c-family/c-common.c:6239 #, gcc-internal-format msgid "switch missing default case" msgstr "" -#: c-family/c-common.c:6282 +#: c-family/c-common.c:6284 #, gcc-internal-format msgid "switch condition has boolean value" msgstr "" -#: c-family/c-common.c:6355 +#: c-family/c-common.c:6357 #, gcc-internal-format msgid "enumeration value %qE not handled in switch" msgstr "" -#: c-family/c-common.c:6381 +#: c-family/c-common.c:6383 #, gcc-internal-format msgid "taking the address of a label is non-standard" msgstr "" -#: c-family/c-common.c:6575 +#: c-family/c-common.c:6577 #, gcc-internal-format msgid "%qE attribute ignored for field of type %qT" msgstr "" -#: c-family/c-common.c:6672 c-family/c-common.c:6700 c-family/c-common.c:6796 +#: c-family/c-common.c:6674 c-family/c-common.c:6702 c-family/c-common.c:6798 #, gcc-internal-format msgid "%qE attribute ignored due to conflict with attribute %qs" msgstr "" -#: c-family/c-common.c:6860 c-family/c-common.c:6866 c-family/c-common.c:9417 -#: c-family/c-common.c:9439 c-family/c-common.c:9445 +#: c-family/c-common.c:6862 c-family/c-common.c:6868 c-family/c-common.c:9419 +#: c-family/c-common.c:9441 c-family/c-common.c:9447 #, gcc-internal-format msgid "%qE attribute ignored due to conflict with %qs attribute" msgstr "" -#: c-family/c-common.c:6922 lto/lto-lang.c:248 +#: c-family/c-common.c:6924 lto/lto-lang.c:248 #, gcc-internal-format msgid "%qE attribute has no effect on unit local functions" msgstr "" -#: c-family/c-common.c:7074 +#: c-family/c-common.c:7076 #, gcc-internal-format msgid "%qE attribute have effect only on public objects" msgstr "" -#: c-family/c-common.c:7103 +#: c-family/c-common.c:7105 #, gcc-internal-format msgid "%qE attribute only affects top level objects" msgstr "" -#: c-family/c-common.c:7157 +#: c-family/c-common.c:7159 #, gcc-internal-format msgid "scalar_storage_order is not supported because endianness is not uniform" msgstr "" -#: c-family/c-common.c:7174 +#: c-family/c-common.c:7176 #, gcc-internal-format msgid "" "scalar_storage_order argument must be one of \"big-endian\" or \"little-" "endian\"" msgstr "" -#: c-family/c-common.c:7270 +#: c-family/c-common.c:7272 #, gcc-internal-format msgid "destructor priorities are not supported" msgstr "" -#: c-family/c-common.c:7272 +#: c-family/c-common.c:7274 #, gcc-internal-format msgid "constructor priorities are not supported" msgstr "" -#: c-family/c-common.c:7294 +#: c-family/c-common.c:7296 #, gcc-internal-format, gfc-internal-format msgid "destructor priorities from 0 to %d are reserved for the implementation" msgstr "" -#: c-family/c-common.c:7299 +#: c-family/c-common.c:7301 #, gcc-internal-format, gfc-internal-format msgid "constructor priorities from 0 to %d are reserved for the implementation" msgstr "" -#: c-family/c-common.c:7307 +#: c-family/c-common.c:7309 #, gcc-internal-format, gfc-internal-format msgid "destructor priorities must be integers from 0 to %d inclusive" msgstr "" -#: c-family/c-common.c:7310 +#: c-family/c-common.c:7312 #, gcc-internal-format, gfc-internal-format msgid "constructor priorities must be integers from 0 to %d inclusive" msgstr "" -#: c-family/c-common.c:7466 +#: c-family/c-common.c:7468 #, gcc-internal-format msgid "unknown machine mode %qE" msgstr "" -#: c-family/c-common.c:7495 +#: c-family/c-common.c:7497 #, gcc-internal-format msgid "specifying vector types with __attribute__ ((mode)) is deprecated" msgstr "" -#: c-family/c-common.c:7498 +#: c-family/c-common.c:7500 #, gcc-internal-format msgid "use __attribute__ ((vector_size)) instead" msgstr "" -#: c-family/c-common.c:7507 +#: c-family/c-common.c:7509 #, gcc-internal-format msgid "unable to emulate %qs" msgstr "" -#: c-family/c-common.c:7518 +#: c-family/c-common.c:7520 #, gcc-internal-format msgid "invalid pointer mode %qs" msgstr "" -#: c-family/c-common.c:7535 +#: c-family/c-common.c:7537 #, gcc-internal-format msgid "signedness of type and machine mode %qs don%'t match" msgstr "" -#: c-family/c-common.c:7546 +#: c-family/c-common.c:7548 #, gcc-internal-format msgid "no data type for mode %qs" msgstr "" -#: c-family/c-common.c:7556 +#: c-family/c-common.c:7558 #, gcc-internal-format msgid "cannot use mode %qs for enumeral types" msgstr "" -#: c-family/c-common.c:7583 +#: c-family/c-common.c:7585 #, gcc-internal-format msgid "mode %qs applied to inappropriate type" msgstr "" -#: c-family/c-common.c:7605 +#: c-family/c-common.c:7607 #, gcc-internal-format msgid "section attributes are not supported for this target" msgstr "" -#: c-family/c-common.c:7613 +#: c-family/c-common.c:7615 #, gcc-internal-format msgid "section attribute not allowed for %q+D" msgstr "" -#: c-family/c-common.c:7619 +#: c-family/c-common.c:7621 #, gcc-internal-format msgid "section attribute argument not a string constant" msgstr "" -#: c-family/c-common.c:7628 +#: c-family/c-common.c:7630 #, gcc-internal-format msgid "section attribute cannot be specified for local variables" msgstr "" -#: c-family/c-common.c:7638 config/bfin/bfin.c:4773 config/bfin/bfin.c:4824 +#: c-family/c-common.c:7640 config/bfin/bfin.c:4773 config/bfin/bfin.c:4824 #: config/bfin/bfin.c:4850 config/bfin/bfin.c:4863 #, gcc-internal-format msgid "section of %q+D conflicts with previous declaration" msgstr "" -#: c-family/c-common.c:7646 +#: c-family/c-common.c:7648 #, gcc-internal-format msgid "section of %q+D cannot be overridden" msgstr "" -#: c-family/c-common.c:7672 +#: c-family/c-common.c:7674 #, gcc-internal-format msgid "requested alignment is not an integer constant" msgstr "" -#: c-family/c-common.c:7680 +#: c-family/c-common.c:7682 #, gcc-internal-format msgid "requested alignment is not a positive power of 2" msgstr "" -#: c-family/c-common.c:7685 +#: c-family/c-common.c:7687 #, gcc-internal-format msgid "requested alignment is too large" msgstr "" -#: c-family/c-common.c:7768 +#: c-family/c-common.c:7770 #, gcc-internal-format, gfc-internal-format msgid "requested alignment %d is larger than %d" msgstr "" -#: c-family/c-common.c:7834 +#: c-family/c-common.c:7836 #, gcc-internal-format msgid "alignment may not be specified for %q+D" msgstr "" -#: c-family/c-common.c:7852 +#: c-family/c-common.c:7854 #, gcc-internal-format msgid "" "alignment for %q+D was previously specified as %d and may not be decreased" msgstr "" -#: c-family/c-common.c:7856 +#: c-family/c-common.c:7858 #, gcc-internal-format msgid "alignment for %q+D must be at least %d" msgstr "" -#: c-family/c-common.c:7881 +#: c-family/c-common.c:7883 #, gcc-internal-format msgid "inline function %q+D declared weak" msgstr "" -#: c-family/c-common.c:7886 +#: c-family/c-common.c:7888 #, gcc-internal-format msgid "indirect function %q+D cannot be declared weak" msgstr "" -#: c-family/c-common.c:7910 +#: c-family/c-common.c:7912 #, gcc-internal-format msgid "%qE attribute is only applicable on functions" msgstr "" -#: c-family/c-common.c:7941 +#: c-family/c-common.c:7943 #, gcc-internal-format msgid "%q+D defined both normally and as %qE attribute" msgstr "" -#: c-family/c-common.c:7949 +#: c-family/c-common.c:7951 #, gcc-internal-format msgid "weak %q+D cannot be defined %qE" msgstr "" -#: c-family/c-common.c:7966 c-family/c-common.c:8510 +#: c-family/c-common.c:7968 c-family/c-common.c:8512 #, gcc-internal-format msgid "attribute %qE argument not a string" msgstr "" -#: c-family/c-common.c:7996 +#: c-family/c-common.c:7998 #, gcc-internal-format msgid "%+D declared alias after being used" msgstr "" -#: c-family/c-common.c:7998 +#: c-family/c-common.c:8000 #, gcc-internal-format msgid "%+D declared ifunc after being used" msgstr "" -#: c-family/c-common.c:8049 +#: c-family/c-common.c:8051 #, gcc-internal-format msgid "indirect function %q+D cannot be declared weakref" msgstr "" -#: c-family/c-common.c:8071 +#: c-family/c-common.c:8073 #, gcc-internal-format msgid "weakref attribute must appear before alias attribute" msgstr "" -#: c-family/c-common.c:8083 +#: c-family/c-common.c:8085 #, gcc-internal-format msgid "%+D declared weakref after being used" msgstr "" -#: c-family/c-common.c:8107 +#: c-family/c-common.c:8109 #, gcc-internal-format msgid "%qE attribute ignored on non-class types" msgstr "" -#: c-family/c-common.c:8113 +#: c-family/c-common.c:8115 #, gcc-internal-format msgid "%qE attribute ignored because %qT is already defined" msgstr "" -#: c-family/c-common.c:8126 +#: c-family/c-common.c:8128 #, gcc-internal-format msgid "visibility argument not a string" msgstr "" -#: c-family/c-common.c:8138 +#: c-family/c-common.c:8140 #, gcc-internal-format msgid "%qE attribute ignored on types" msgstr "" -#: c-family/c-common.c:8154 +#: c-family/c-common.c:8156 #, gcc-internal-format msgid "" "visibility argument must be one of \"default\", \"hidden\", \"protected\" or " "\"internal\"" msgstr "" -#: c-family/c-common.c:8165 +#: c-family/c-common.c:8167 #, gcc-internal-format msgid "%qD redeclared with different visibility" msgstr "" -#: c-family/c-common.c:8168 c-family/c-common.c:8172 +#: c-family/c-common.c:8170 c-family/c-common.c:8174 #, gcc-internal-format msgid "%qD was declared %qs which implies default visibility" msgstr "" -#: c-family/c-common.c:8255 +#: c-family/c-common.c:8257 #, gcc-internal-format msgid "tls_model argument not a string" msgstr "" -#: c-family/c-common.c:8268 +#: c-family/c-common.c:8270 #, gcc-internal-format msgid "" "tls_model argument must be one of \"local-exec\", \"initial-exec\", \"local-" "dynamic\" or \"global-dynamic\"" msgstr "" -#: c-family/c-common.c:8288 c-family/c-common.c:8587 c-family/c-common.c:9634 +#: c-family/c-common.c:8290 c-family/c-common.c:8589 c-family/c-common.c:9636 #: config/m32c/m32c.c:2932 #, gcc-internal-format msgid "%qE attribute applies only to functions" msgstr "" -#: c-family/c-common.c:8336 +#: c-family/c-common.c:8338 #, gcc-internal-format msgid "alloc_size parameter outside range" msgstr "" -#: c-family/c-common.c:8361 +#: c-family/c-common.c:8363 #, gcc-internal-format msgid "alloc_align parameter outside range" msgstr "" -#: c-family/c-common.c:8385 +#: c-family/c-common.c:8387 #, gcc-internal-format msgid "assume_aligned parameter not integer constant" msgstr "" -#: c-family/c-common.c:8496 c/c-parser.c:16374 +#: c-family/c-common.c:8498 c/c-parser.c:16396 #, gcc-internal-format msgid "" "%<__simd__%> attribute cannot be used in the same function marked as a Cilk " "Plus SIMD-enabled function" msgstr "" -#: c-family/c-common.c:8524 +#: c-family/c-common.c:8526 #, gcc-internal-format msgid "" "only %<inbranch%> and %<notinbranch%> flags are allowed for %<__simd__%> " "attribute" msgstr "" -#: c-family/c-common.c:8593 c-family/c-common.c:9640 +#: c-family/c-common.c:8595 c-family/c-common.c:9642 #, gcc-internal-format msgid "can%'t set %qE attribute after definition" msgstr "" -#: c-family/c-common.c:8651 +#: c-family/c-common.c:8653 #, gcc-internal-format msgid "%qE attribute duplicated" msgstr "" -#: c-family/c-common.c:8653 +#: c-family/c-common.c:8655 #, gcc-internal-format msgid "%qE attribute follows %qE" msgstr "" -#: c-family/c-common.c:8752 +#: c-family/c-common.c:8754 #, gcc-internal-format msgid "type was previously declared %qE" msgstr "" -#: c-family/c-common.c:8765 cp/class.c:4575 +#: c-family/c-common.c:8767 cp/class.c:4621 #, gcc-internal-format msgid "" "%<transaction_safe_dynamic%> may only be specified for a virtual function" msgstr "" -#: c-family/c-common.c:8823 +#: c-family/c-common.c:8825 #, gcc-internal-format msgid "%qE argument not an identifier" msgstr "" -#: c-family/c-common.c:8834 +#: c-family/c-common.c:8836 #, gcc-internal-format msgid "%qD is not compatible with %qD" msgstr "" -#: c-family/c-common.c:8837 +#: c-family/c-common.c:8839 #, gcc-internal-format msgid "%qE argument is not a function" msgstr "" -#: c-family/c-common.c:8885 +#: c-family/c-common.c:8887 #, gcc-internal-format msgid "deprecated message is not a string" msgstr "" -#: c-family/c-common.c:8926 +#: c-family/c-common.c:8928 #, gcc-internal-format msgid "%qE attribute ignored for %qE" msgstr "" -#: c-family/c-common.c:8989 +#: c-family/c-common.c:8991 #, gcc-internal-format msgid "invalid vector type for attribute %qE" msgstr "" -#: c-family/c-common.c:8995 ada/gcc-interface/utils.c:3745 +#: c-family/c-common.c:8997 ada/gcc-interface/utils.c:3766 #, gcc-internal-format msgid "vector size not an integral multiple of component size" msgstr "" -#: c-family/c-common.c:9001 ada/gcc-interface/utils.c:3752 +#: c-family/c-common.c:9003 ada/gcc-interface/utils.c:3773 #, gcc-internal-format msgid "zero vector size" msgstr "" -#: c-family/c-common.c:9009 +#: c-family/c-common.c:9011 #, gcc-internal-format msgid "number of components of the vector not a power of two" msgstr "" -#: c-family/c-common.c:9037 ada/gcc-interface/utils.c:5825 +#: c-family/c-common.c:9039 ada/gcc-interface/utils.c:5846 #, gcc-internal-format msgid "nonnull attribute without arguments on a non-prototype" msgstr "" -#: c-family/c-common.c:9056 ada/gcc-interface/utils.c:5839 +#: c-family/c-common.c:9058 ada/gcc-interface/utils.c:5860 #, gcc-internal-format, gfc-internal-format msgid "nonnull argument has invalid operand number (argument %lu)" msgstr "" -#: c-family/c-common.c:9078 ada/gcc-interface/utils.c:5861 +#: c-family/c-common.c:9080 ada/gcc-interface/utils.c:5882 #, gcc-internal-format, gfc-internal-format msgid "" "nonnull argument with out-of-range operand number (argument %lu, operand %lu)" msgstr "" -#: c-family/c-common.c:9086 ada/gcc-interface/utils.c:5870 +#: c-family/c-common.c:9088 ada/gcc-interface/utils.c:5891 #, gcc-internal-format, gfc-internal-format msgid "" "nonnull argument references non-pointer operand (argument %lu, operand %lu)" msgstr "" -#: c-family/c-common.c:9180 +#: c-family/c-common.c:9182 #, gcc-internal-format msgid "not enough variable arguments to fit a sentinel" msgstr "" -#: c-family/c-common.c:9194 +#: c-family/c-common.c:9196 #, gcc-internal-format msgid "missing sentinel in function call" msgstr "" -#: c-family/c-common.c:9236 +#: c-family/c-common.c:9238 #, gcc-internal-format, gfc-internal-format msgid "null argument where non-null required (argument %lu)" msgstr "" -#: c-family/c-common.c:9302 +#: c-family/c-common.c:9304 #, gcc-internal-format msgid "cleanup argument not an identifier" msgstr "" -#: c-family/c-common.c:9309 +#: c-family/c-common.c:9311 #, gcc-internal-format msgid "cleanup argument not a function" msgstr "" -#: c-family/c-common.c:9346 +#: c-family/c-common.c:9348 #, gcc-internal-format msgid "%qE attribute requires prototypes with named arguments" msgstr "" -#: c-family/c-common.c:9354 +#: c-family/c-common.c:9356 #, gcc-internal-format msgid "%qE attribute only applies to variadic functions" msgstr "" -#: c-family/c-common.c:9370 ada/gcc-interface/utils.c:5912 +#: c-family/c-common.c:9372 ada/gcc-interface/utils.c:5933 #, gcc-internal-format msgid "requested position is not an integer constant" msgstr "" -#: c-family/c-common.c:9378 ada/gcc-interface/utils.c:5919 +#: c-family/c-common.c:9380 ada/gcc-interface/utils.c:5940 #, gcc-internal-format msgid "requested position is less than zero" msgstr "" -#: c-family/c-common.c:9534 +#: c-family/c-common.c:9536 #, gcc-internal-format, gfc-internal-format msgid "bad option %s to optimize attribute" msgstr "" -#: c-family/c-common.c:9537 +#: c-family/c-common.c:9539 #, gcc-internal-format, gfc-internal-format msgid "bad option %s to pragma attribute" msgstr "" -#: c-family/c-common.c:9657 +#: c-family/c-common.c:9659 #, gcc-internal-format msgid "returns_nonnull attribute on a function not returning a pointer" msgstr "" -#: c-family/c-common.c:9672 +#: c-family/c-common.c:9674 #, gcc-internal-format msgid "%qE attribute is only valid on %<struct%> type" msgstr "" -#: c-family/c-common.c:9797 +#: c-family/c-common.c:9799 #, gcc-internal-format msgid "not enough arguments to function %qE" msgstr "" -#: c-family/c-common.c:9803 c-family/c-common.c:10777 c/c-typeck.c:3201 +#: c-family/c-common.c:9805 c-family/c-common.c:10806 c/c-typeck.c:3213 #, gcc-internal-format msgid "too many arguments to function %qE" msgstr "" -#: c-family/c-common.c:9834 c-family/c-common.c:9880 +#: c-family/c-common.c:9842 +#, gcc-internal-format +msgid "" +"second argument to function %qE must be a constant integer power of 2 " +"between %qi and %qu bits" +msgstr "" + +#: c-family/c-common.c:9863 c-family/c-common.c:9909 #, gcc-internal-format msgid "non-floating-point argument in call to function %qE" msgstr "" -#: c-family/c-common.c:9857 +#: c-family/c-common.c:9886 #, gcc-internal-format msgid "non-floating-point arguments in call to function %qE" msgstr "" -#: c-family/c-common.c:9873 +#: c-family/c-common.c:9902 #, gcc-internal-format msgid "non-const integer argument %u in call to function %qE" msgstr "" -#: c-family/c-common.c:9893 +#: c-family/c-common.c:9922 #, gcc-internal-format msgid "non-integer argument 3 in call to function %qE" msgstr "" -#: c-family/c-common.c:9909 +#: c-family/c-common.c:9938 #, gcc-internal-format msgid "argument %u in call to function %qE does not have integral type" msgstr "" -#: c-family/c-common.c:9916 +#: c-family/c-common.c:9945 #, gcc-internal-format msgid "" "argument 3 in call to function %qE does not have pointer to integer type" msgstr "" -#: c-family/c-common.c:10229 +#: c-family/c-common.c:10258 #, gcc-internal-format msgid "cannot apply %<offsetof%> to static data member %qD" msgstr "" -#: c-family/c-common.c:10234 +#: c-family/c-common.c:10263 #, gcc-internal-format msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded" msgstr "" -#: c-family/c-common.c:10241 +#: c-family/c-common.c:10270 #, gcc-internal-format msgid "cannot apply %<offsetof%> to a non constant address" msgstr "" -#: c-family/c-common.c:10254 cp/typeck.c:5749 +#: c-family/c-common.c:10283 cp/typeck.c:5733 #, gcc-internal-format msgid "attempt to take address of bit-field structure member %qD" msgstr "" -#: c-family/c-common.c:10306 +#: c-family/c-common.c:10335 #, gcc-internal-format msgid "index %E denotes an offset greater than size of %qT" msgstr "" -#: c-family/c-common.c:10346 +#: c-family/c-common.c:10375 #, gcc-internal-format msgid "" "the omitted middle operand in ?: will always be %<true%>, suggest explicit " "middle operand" msgstr "" -#: c-family/c-common.c:10367 +#: c-family/c-common.c:10396 #, gcc-internal-format msgid "assignment of member %qD in read-only object" msgstr "" -#: c-family/c-common.c:10369 +#: c-family/c-common.c:10398 #, gcc-internal-format msgid "increment of member %qD in read-only object" msgstr "" -#: c-family/c-common.c:10371 +#: c-family/c-common.c:10400 #, gcc-internal-format msgid "decrement of member %qD in read-only object" msgstr "" -#: c-family/c-common.c:10373 +#: c-family/c-common.c:10402 #, gcc-internal-format msgid "member %qD in read-only object used as %<asm%> output" msgstr "" -#: c-family/c-common.c:10377 +#: c-family/c-common.c:10406 #, gcc-internal-format msgid "assignment of read-only member %qD" msgstr "" -#: c-family/c-common.c:10378 +#: c-family/c-common.c:10407 #, gcc-internal-format msgid "increment of read-only member %qD" msgstr "" -#: c-family/c-common.c:10379 +#: c-family/c-common.c:10408 #, gcc-internal-format msgid "decrement of read-only member %qD" msgstr "" -#: c-family/c-common.c:10380 +#: c-family/c-common.c:10409 #, gcc-internal-format msgid "read-only member %qD used as %<asm%> output" msgstr "" -#: c-family/c-common.c:10384 +#: c-family/c-common.c:10413 #, gcc-internal-format msgid "assignment of read-only variable %qD" msgstr "" -#: c-family/c-common.c:10385 +#: c-family/c-common.c:10414 #, gcc-internal-format msgid "increment of read-only variable %qD" msgstr "" -#: c-family/c-common.c:10386 +#: c-family/c-common.c:10415 #, gcc-internal-format msgid "decrement of read-only variable %qD" msgstr "" -#: c-family/c-common.c:10387 +#: c-family/c-common.c:10416 #, gcc-internal-format msgid "read-only variable %qD used as %<asm%> output" msgstr "" -#: c-family/c-common.c:10390 +#: c-family/c-common.c:10419 #, gcc-internal-format msgid "assignment of read-only parameter %qD" msgstr "" -#: c-family/c-common.c:10391 +#: c-family/c-common.c:10420 #, gcc-internal-format msgid "increment of read-only parameter %qD" msgstr "" -#: c-family/c-common.c:10392 +#: c-family/c-common.c:10421 #, gcc-internal-format msgid "decrement of read-only parameter %qD" msgstr "" -#: c-family/c-common.c:10393 +#: c-family/c-common.c:10422 #, gcc-internal-format msgid "read-only parameter %qD use as %<asm%> output" msgstr "" -#: c-family/c-common.c:10398 +#: c-family/c-common.c:10427 #, gcc-internal-format msgid "assignment of read-only named return value %qD" msgstr "" -#: c-family/c-common.c:10400 +#: c-family/c-common.c:10429 #, gcc-internal-format msgid "increment of read-only named return value %qD" msgstr "" -#: c-family/c-common.c:10402 +#: c-family/c-common.c:10431 #, gcc-internal-format msgid "decrement of read-only named return value %qD" msgstr "" -#: c-family/c-common.c:10404 +#: c-family/c-common.c:10433 #, gcc-internal-format msgid "read-only named return value %qD used as %<asm%>output" msgstr "" -#: c-family/c-common.c:10409 +#: c-family/c-common.c:10438 #, gcc-internal-format msgid "assignment of function %qD" msgstr "" -#: c-family/c-common.c:10410 +#: c-family/c-common.c:10439 #, gcc-internal-format msgid "increment of function %qD" msgstr "" -#: c-family/c-common.c:10411 +#: c-family/c-common.c:10440 #, gcc-internal-format msgid "decrement of function %qD" msgstr "" -#: c-family/c-common.c:10412 +#: c-family/c-common.c:10441 #, gcc-internal-format msgid "function %qD used as %<asm%> output" msgstr "" -#: c-family/c-common.c:10415 c/c-typeck.c:4551 +#: c-family/c-common.c:10444 c/c-typeck.c:4565 #, gcc-internal-format msgid "assignment of read-only location %qE" msgstr "" -#: c-family/c-common.c:10416 c/c-typeck.c:4554 +#: c-family/c-common.c:10445 c/c-typeck.c:4568 #, gcc-internal-format msgid "increment of read-only location %qE" msgstr "" -#: c-family/c-common.c:10417 c/c-typeck.c:4557 +#: c-family/c-common.c:10446 c/c-typeck.c:4571 #, gcc-internal-format msgid "decrement of read-only location %qE" msgstr "" -#: c-family/c-common.c:10418 +#: c-family/c-common.c:10447 #, gcc-internal-format msgid "read-only location %qE used as %<asm%> output" msgstr "" -#: c-family/c-common.c:10432 +#: c-family/c-common.c:10461 #, gcc-internal-format msgid "lvalue required as left operand of assignment" msgstr "" -#: c-family/c-common.c:10435 +#: c-family/c-common.c:10464 #, gcc-internal-format msgid "lvalue required as increment operand" msgstr "" -#: c-family/c-common.c:10438 +#: c-family/c-common.c:10467 #, gcc-internal-format msgid "lvalue required as decrement operand" msgstr "" -#: c-family/c-common.c:10441 +#: c-family/c-common.c:10470 #, gcc-internal-format msgid "lvalue required as unary %<&%> operand" msgstr "" -#: c-family/c-common.c:10444 +#: c-family/c-common.c:10473 #, gcc-internal-format msgid "lvalue required in asm statement" msgstr "" -#: c-family/c-common.c:10461 +#: c-family/c-common.c:10490 #, gcc-internal-format msgid "invalid type argument (have %qT)" msgstr "" -#: c-family/c-common.c:10465 +#: c-family/c-common.c:10494 #, gcc-internal-format msgid "invalid type argument of array indexing (have %qT)" msgstr "" -#: c-family/c-common.c:10470 +#: c-family/c-common.c:10499 #, gcc-internal-format msgid "invalid type argument of unary %<*%> (have %qT)" msgstr "" -#: c-family/c-common.c:10475 +#: c-family/c-common.c:10504 #, gcc-internal-format msgid "invalid type argument of %<->%> (have %qT)" msgstr "" -#: c-family/c-common.c:10480 +#: c-family/c-common.c:10509 #, gcc-internal-format msgid "invalid type argument of %<->*%> (have %qT)" msgstr "" -#: c-family/c-common.c:10485 +#: c-family/c-common.c:10514 #, gcc-internal-format msgid "invalid type argument of implicit conversion (have %qT)" msgstr "" -#: c-family/c-common.c:10627 cp/init.c:2721 cp/init.c:2740 +#: c-family/c-common.c:10656 cp/init.c:2782 cp/init.c:2801 #, gcc-internal-format msgid "size of array is too large" msgstr "" -#: c-family/c-common.c:10680 c-family/c-common.c:10751 c/c-typeck.c:3447 +#: c-family/c-common.c:10709 c-family/c-common.c:10780 c/c-typeck.c:3459 #, gcc-internal-format msgid "too few arguments to function %qE" msgstr "" -#: c-family/c-common.c:10710 +#: c-family/c-common.c:10739 #, gcc-internal-format msgid "operand type %qT is incompatible with argument %d of %qE" msgstr "" -#: c-family/c-common.c:10844 +#: c-family/c-common.c:10873 #, gcc-internal-format msgid "incorrect number of arguments to function %qE" msgstr "" -#: c-family/c-common.c:10859 +#: c-family/c-common.c:10888 #, gcc-internal-format msgid "argument 1 of %qE must be a non-void pointer type" msgstr "" -#: c-family/c-common.c:10868 +#: c-family/c-common.c:10897 #, gcc-internal-format msgid "argument 1 of %qE must be a pointer to a constant size type" msgstr "" -#: c-family/c-common.c:10879 +#: c-family/c-common.c:10908 #, gcc-internal-format msgid "argument 1 of %qE must be a pointer to a nonzero size object" msgstr "" -#: c-family/c-common.c:10894 +#: c-family/c-common.c:10923 #, gcc-internal-format msgid "argument %d of %qE must be a pointer type" msgstr "" -#: c-family/c-common.c:10902 +#: c-family/c-common.c:10931 #, gcc-internal-format msgid "size mismatch in argument %d of %qE" msgstr "" -#: c-family/c-common.c:10918 +#: c-family/c-common.c:10947 #, gcc-internal-format msgid "invalid memory model argument %d of %qE" msgstr "" -#: c-family/c-common.c:10925 +#: c-family/c-common.c:10954 #, gcc-internal-format msgid "non-integer memory model argument %d of %qE" msgstr "" -#: c-family/c-common.c:11519 +#: c-family/c-common.c:11552 #, gcc-internal-format msgid "array subscript has type %<char%>" msgstr "" -#: c-family/c-common.c:11554 c-family/c-common.c:11557 +#: c-family/c-common.c:11587 c-family/c-common.c:11590 #, gcc-internal-format msgid "suggest parentheses around %<+%> inside %<<<%>" msgstr "" -#: c-family/c-common.c:11560 c-family/c-common.c:11563 +#: c-family/c-common.c:11593 c-family/c-common.c:11596 #, gcc-internal-format msgid "suggest parentheses around %<-%> inside %<<<%>" msgstr "" -#: c-family/c-common.c:11569 c-family/c-common.c:11572 +#: c-family/c-common.c:11602 c-family/c-common.c:11605 #, gcc-internal-format msgid "suggest parentheses around %<+%> inside %<>>%>" msgstr "" -#: c-family/c-common.c:11575 c-family/c-common.c:11578 +#: c-family/c-common.c:11608 c-family/c-common.c:11611 #, gcc-internal-format msgid "suggest parentheses around %<-%> inside %<>>%>" msgstr "" -#: c-family/c-common.c:11584 c-family/c-common.c:11587 +#: c-family/c-common.c:11617 c-family/c-common.c:11620 #, gcc-internal-format msgid "suggest parentheses around %<&&%> within %<||%>" msgstr "" -#: c-family/c-common.c:11594 c-family/c-common.c:11598 +#: c-family/c-common.c:11627 c-family/c-common.c:11631 #, gcc-internal-format msgid "suggest parentheses around arithmetic in operand of %<|%>" msgstr "" -#: c-family/c-common.c:11602 c-family/c-common.c:11605 +#: c-family/c-common.c:11635 c-family/c-common.c:11638 #, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<|%>" msgstr "" -#: c-family/c-common.c:11610 +#: c-family/c-common.c:11643 #, gcc-internal-format msgid "" "suggest parentheses around operand of %<!%> or change %<|%> to %<||%> or %<!" "%> to %<~%>" msgstr "" -#: c-family/c-common.c:11618 c-family/c-common.c:11622 +#: c-family/c-common.c:11651 c-family/c-common.c:11655 #, gcc-internal-format msgid "suggest parentheses around arithmetic in operand of %<^%>" msgstr "" -#: c-family/c-common.c:11626 c-family/c-common.c:11629 +#: c-family/c-common.c:11659 c-family/c-common.c:11662 #, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<^%>" msgstr "" -#: c-family/c-common.c:11635 c-family/c-common.c:11638 +#: c-family/c-common.c:11668 c-family/c-common.c:11671 #, gcc-internal-format msgid "suggest parentheses around %<+%> in operand of %<&%>" msgstr "" -#: c-family/c-common.c:11641 c-family/c-common.c:11644 +#: c-family/c-common.c:11674 c-family/c-common.c:11677 #, gcc-internal-format msgid "suggest parentheses around %<-%> in operand of %<&%>" msgstr "" -#: c-family/c-common.c:11648 c-family/c-common.c:11651 +#: c-family/c-common.c:11681 c-family/c-common.c:11684 #, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<&%>" msgstr "" -#: c-family/c-common.c:11656 +#: c-family/c-common.c:11689 #, gcc-internal-format msgid "" "suggest parentheses around operand of %<!%> or change %<&%> to %<&&%> or %<!" "%> to %<~%>" msgstr "" -#: c-family/c-common.c:11663 c-family/c-common.c:11666 +#: c-family/c-common.c:11696 c-family/c-common.c:11699 #, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<==%>" msgstr "" -#: c-family/c-common.c:11671 c-family/c-common.c:11674 +#: c-family/c-common.c:11704 c-family/c-common.c:11707 #, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<!=%>" msgstr "" -#: c-family/c-common.c:11684 c-family/c-common.c:11690 +#: c-family/c-common.c:11717 c-family/c-common.c:11723 #, gcc-internal-format msgid "comparisons like %<X<=Y<=Z%> do not have their mathematical meaning" msgstr "" -#: c-family/c-common.c:11706 +#: c-family/c-common.c:11739 #, gcc-internal-format msgid "label %q+D defined but not used" msgstr "" -#: c-family/c-common.c:11708 +#: c-family/c-common.c:11741 #, gcc-internal-format msgid "label %q+D declared but not defined" msgstr "" -#: c-family/c-common.c:11724 +#: c-family/c-common.c:11757 #, gcc-internal-format msgid "division by zero" msgstr "" -#: c-family/c-common.c:11756 c/c-typeck.c:11061 c/c-typeck.c:11228 -#: cp/typeck.c:4836 +#: c-family/c-common.c:11789 c/c-typeck.c:11074 c/c-typeck.c:11231 +#: cp/typeck.c:4820 #, gcc-internal-format msgid "comparison between types %qT and %qT" msgstr "" -#: c-family/c-common.c:11807 +#: c-family/c-common.c:11840 #, gcc-internal-format msgid "comparison between signed and unsigned integer expressions" msgstr "" -#: c-family/c-common.c:11858 +#: c-family/c-common.c:11891 #, gcc-internal-format msgid "promoted ~unsigned is always non-zero" msgstr "" -#: c-family/c-common.c:11861 +#: c-family/c-common.c:11894 #, gcc-internal-format msgid "comparison of promoted ~unsigned with constant" msgstr "" -#: c-family/c-common.c:11871 +#: c-family/c-common.c:11904 #, gcc-internal-format msgid "comparison of promoted ~unsigned with unsigned" msgstr "" -#: c-family/c-common.c:11922 +#: c-family/c-common.c:11955 #, gcc-internal-format msgid "unused parameter %qD" msgstr "" -#: c-family/c-common.c:12066 +#: c-family/c-common.c:12099 #, gcc-internal-format msgid "typedef %qD locally defined but not used" msgstr "" -#: c-family/c-common.c:12103 c-family/c-common.c:12129 +#: c-family/c-common.c:12136 c-family/c-common.c:12162 #, gcc-internal-format msgid "comparison of constant %qE with boolean expression is always false" msgstr "" -#: c-family/c-common.c:12106 c-family/c-common.c:12126 +#: c-family/c-common.c:12139 c-family/c-common.c:12159 #, gcc-internal-format msgid "comparison of constant %qE with boolean expression is always true" msgstr "" -#: c-family/c-common.c:12175 +#: c-family/c-common.c:12208 #, gcc-internal-format msgid "result of %qE requires %u bits to represent, but %qT only has %u bits" msgstr "" -#: c-family/c-common.c:12424 +#: c-family/c-common.c:12457 #, gcc-internal-format msgid "index value is out of bound" msgstr "" -#: c-family/c-common.c:12496 c-family/c-common.c:12544 -#: c-family/c-common.c:12559 cp/call.c:4689 cp/call.c:4696 +#: c-family/c-common.c:12529 c-family/c-common.c:12577 +#: c-family/c-common.c:12592 cp/call.c:4692 cp/call.c:4699 #, gcc-internal-format msgid "conversion of scalar %qT to vector %qT involves truncation" msgstr "" #. Reject arguments that are built-in functions with #. no library fallback. -#: c-family/c-common.c:12630 +#: c-family/c-common.c:12663 #, gcc-internal-format msgid "built-in function %qE must be directly called" msgstr "" -#: c-family/c-common.c:12666 +#: c-family/c-common.c:12699 #, gcc-internal-format msgid "duplicated %<if%> condition" msgstr "" -#: c-family/c-common.c:12693 c/c-decl.c:5884 +#: c-family/c-common.c:12726 c/c-decl.c:5913 #, gcc-internal-format msgid "size of array %qE is too large" msgstr "" -#: c-family/c-common.c:12695 c/c-decl.c:5887 +#: c-family/c-common.c:12728 c/c-decl.c:5916 #, gcc-internal-format msgid "size of unnamed array is too large" msgstr "" @@ -24571,21 +24656,16 @@ msgstr "" msgid "strftime formats cannot format arguments" msgstr "" -#: c-family/c-indentation.c:56 +#: c-family/c-indentation.c:66 #, gcc-internal-format msgid "" "-Wmisleading-indentation is disabled from this point onwards, since column-" "tracking was disabled due to the size of the code/headers" msgstr "" -#: c-family/c-indentation.c:583 -#, gcc-internal-format -msgid "statement is indented as if it were guarded by..." -msgstr "" - -#: c-family/c-indentation.c:585 +#: c-family/c-indentation.c:606 #, gcc-internal-format -msgid "...this %qs clause, but it is not" +msgid "this %qs clause does not guard..." msgstr "" #: c-family/c-lex.c:222 @@ -24669,7 +24749,7 @@ msgstr "" msgid "repeated %<@%> before Objective-C string" msgstr "" -#: c-family/c-lex.c:1138 cp/parser.c:3932 +#: c-family/c-lex.c:1138 cp/parser.c:3934 #, gcc-internal-format msgid "unsupported non-standard concatenation of string literals" msgstr "" @@ -24694,7 +24774,7 @@ msgstr "" msgid "%<#pragma omp atomic capture%> uses two different variables for memory" msgstr "" -#: c-family/c-omp.c:480 cp/semantics.c:8014 +#: c-family/c-omp.c:480 cp/semantics.c:8071 #, gcc-internal-format msgid "invalid type for iteration variable %qE" msgstr "" @@ -24704,22 +24784,22 @@ msgstr "" msgid "%qE is not initialized" msgstr "" -#: c-family/c-omp.c:514 cp/semantics.c:7902 +#: c-family/c-omp.c:514 cp/semantics.c:7959 #, gcc-internal-format msgid "missing controlling predicate" msgstr "" -#: c-family/c-omp.c:599 cp/semantics.c:7566 +#: c-family/c-omp.c:599 cp/semantics.c:7623 #, gcc-internal-format msgid "invalid controlling predicate" msgstr "" -#: c-family/c-omp.c:606 cp/semantics.c:7908 +#: c-family/c-omp.c:606 cp/semantics.c:7965 #, gcc-internal-format msgid "missing increment expression" msgstr "" -#: c-family/c-omp.c:670 cp/semantics.c:7681 +#: c-family/c-omp.c:670 cp/semantics.c:7738 #, gcc-internal-format msgid "invalid increment expression" msgstr "" @@ -24749,32 +24829,32 @@ msgstr "" msgid "%qD is not an function argument" msgstr "" -#: c-family/c-opts.c:316 +#: c-family/c-opts.c:320 #, gcc-internal-format msgid "-I- specified twice" msgstr "" -#: c-family/c-opts.c:319 +#: c-family/c-opts.c:323 #, gcc-internal-format msgid "obsolete option -I- used, please use -iquote instead" msgstr "" -#: c-family/c-opts.c:397 +#: c-family/c-opts.c:401 #, gcc-internal-format msgid "%<-Wabi=1%> is not supported, using =2" msgstr "" -#: c-family/c-opts.c:589 fortran/cpp.c:350 +#: c-family/c-opts.c:593 fortran/cpp.c:350 #, gcc-internal-format msgid "output filename specified twice" msgstr "" -#: c-family/c-opts.c:768 +#: c-family/c-opts.c:772 #, gcc-internal-format msgid "-fexcess-precision=standard for C++" msgstr "" -#: c-family/c-opts.c:791 +#: c-family/c-opts.c:795 #, gcc-internal-format msgid "-fno-gnu89-inline is only supported in GNU99 or C99 mode" msgstr "" @@ -25112,116 +25192,116 @@ msgstr "" msgid "option %qs is valid for %s but not for %s" msgstr "" -#: c-family/c-pragma.c:837 +#: c-family/c-pragma.c:840 #, gcc-internal-format msgid "#pragma GCC option is not allowed inside functions" msgstr "" -#: c-family/c-pragma.c:850 +#: c-family/c-pragma.c:853 #, gcc-internal-format msgid "%<#pragma GCC option%> is not a string" msgstr "" -#: c-family/c-pragma.c:877 +#: c-family/c-pragma.c:880 #, gcc-internal-format msgid "" "%<#pragma GCC target (string [,string]...)%> does not have a final %<)%>" msgstr "" -#: c-family/c-pragma.c:883 +#: c-family/c-pragma.c:886 #, gcc-internal-format msgid "#pragma GCC target string... is badly formed" msgstr "" -#: c-family/c-pragma.c:906 +#: c-family/c-pragma.c:909 #, gcc-internal-format msgid "#pragma GCC optimize is not allowed inside functions" msgstr "" -#: c-family/c-pragma.c:919 +#: c-family/c-pragma.c:922 #, gcc-internal-format msgid "%<#pragma GCC optimize%> is not a string or number" msgstr "" -#: c-family/c-pragma.c:945 +#: c-family/c-pragma.c:948 #, gcc-internal-format msgid "" "%<#pragma GCC optimize (string [,string]...)%> does not have a final %<)%>" msgstr "" -#: c-family/c-pragma.c:951 +#: c-family/c-pragma.c:954 #, gcc-internal-format msgid "#pragma GCC optimize string... is badly formed" msgstr "" -#: c-family/c-pragma.c:992 +#: c-family/c-pragma.c:995 #, gcc-internal-format msgid "junk at end of %<#pragma push_options%>" msgstr "" -#: c-family/c-pragma.c:1022 +#: c-family/c-pragma.c:1025 #, gcc-internal-format msgid "junk at end of %<#pragma pop_options%>" msgstr "" -#: c-family/c-pragma.c:1029 +#: c-family/c-pragma.c:1032 #, gcc-internal-format msgid "" "%<#pragma GCC pop_options%> without a corresponding %<#pragma GCC " "push_options%>" msgstr "" -#: c-family/c-pragma.c:1071 +#: c-family/c-pragma.c:1074 #, gcc-internal-format msgid "junk at end of %<#pragma reset_options%>" msgstr "" -#: c-family/c-pragma.c:1109 c-family/c-pragma.c:1116 +#: c-family/c-pragma.c:1112 c-family/c-pragma.c:1119 #, gcc-internal-format msgid "expected a string after %<#pragma message%>" msgstr "" -#: c-family/c-pragma.c:1111 +#: c-family/c-pragma.c:1114 #, gcc-internal-format msgid "malformed %<#pragma message%>, ignored" msgstr "" -#: c-family/c-pragma.c:1121 +#: c-family/c-pragma.c:1124 #, gcc-internal-format msgid "junk at end of %<#pragma message%>" msgstr "" -#: c-family/c-pragma.c:1124 +#: c-family/c-pragma.c:1127 #, gcc-internal-format, gfc-internal-format msgid "#pragma message: %s" msgstr "" -#: c-family/c-pragma.c:1161 +#: c-family/c-pragma.c:1164 #, gcc-internal-format msgid "invalid location for %<pragma %s%>, ignored" msgstr "" -#: c-family/c-pragma.c:1168 c-family/c-pragma.c:1182 +#: c-family/c-pragma.c:1171 c-family/c-pragma.c:1185 #, gcc-internal-format msgid "malformed %<#pragma %s%>, ignored" msgstr "" -#: c-family/c-pragma.c:1188 +#: c-family/c-pragma.c:1191 #, gcc-internal-format msgid "junk at end of %<#pragma %s%>" msgstr "" -#: c-family/c-pragma.c:1206 +#: c-family/c-pragma.c:1209 #, gcc-internal-format msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported for C++" msgstr "" -#: c-family/c-pragma.c:1215 +#: c-family/c-pragma.c:1218 #, gcc-internal-format msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported on this target" msgstr "" -#: c-family/c-pragma.c:1221 +#: c-family/c-pragma.c:1224 #, gcc-internal-format msgid "ISO C does not support %<#pragma STDC FLOAT_CONST_DECIMAL64%>" msgstr "" @@ -25271,7 +25351,7 @@ msgstr "" msgid "wrong type argument to %s" msgstr "" -#: c-family/cilk.c:93 cp/parser.c:6516 +#: c-family/cilk.c:93 cp/parser.c:6518 #, gcc-internal-format msgid "%<_Cilk_spawn%> may only be used inside a function" msgstr "" @@ -25316,7 +25396,7 @@ msgstr "" msgid "too many input files" msgstr "" -#: common/config/aarch64/aarch64-common.c:228 config/aarch64/aarch64.c:8192 +#: common/config/aarch64/aarch64-common.c:228 config/aarch64/aarch64.c:8241 #, gcc-internal-format msgid "unknown value %qs for -mcpu" msgstr "" @@ -25418,7 +25498,7 @@ msgid "" "128, 256, or 512" msgstr "" -#: common/config/rs6000/rs6000-common.c:172 config/sparc/sparc.c:1321 +#: common/config/rs6000/rs6000-common.c:172 config/sparc/sparc.c:1320 #, gcc-internal-format, gfc-internal-format msgid "unknown -mdebug-%s switch" msgstr "" @@ -25762,172 +25842,172 @@ msgstr "" msgid "%Ktotal size and element size must be a non-zero constant immediate" msgstr "" -#: config/aarch64/aarch64.c:722 +#: config/aarch64/aarch64.c:721 #, gcc-internal-format msgid "%qs is incompatible with %s %s" msgstr "" -#: config/aarch64/aarch64.c:724 +#: config/aarch64/aarch64.c:723 #, gcc-internal-format msgid "%qs feature modifier is incompatible with %s %s" msgstr "" -#: config/aarch64/aarch64.c:7882 +#: config/aarch64/aarch64.c:7907 #, gcc-internal-format, gfc-internal-format msgid "unknown flag passed in -moverride=%s (%s)" msgstr "" -#: config/aarch64/aarch64.c:7926 +#: config/aarch64/aarch64.c:7951 #, gcc-internal-format, gfc-internal-format msgid "%s string ill-formed\n" msgstr "" -#: config/aarch64/aarch64.c:7983 +#: config/aarch64/aarch64.c:8008 #, gcc-internal-format, gfc-internal-format msgid "tuning string missing in option (%s)" msgstr "" -#: config/aarch64/aarch64.c:8001 +#: config/aarch64/aarch64.c:8026 #, gcc-internal-format, gfc-internal-format msgid "unknown tuning option (%s)" msgstr "" -#: config/aarch64/aarch64.c:8189 +#: config/aarch64/aarch64.c:8238 #, gcc-internal-format msgid "missing cpu name in -mcpu=%qs" msgstr "" -#: config/aarch64/aarch64.c:8195 +#: config/aarch64/aarch64.c:8244 #, gcc-internal-format msgid "invalid feature modifier in -mcpu=%qs" msgstr "" -#: config/aarch64/aarch64.c:8222 +#: config/aarch64/aarch64.c:8271 #, gcc-internal-format msgid "missing arch name in -march=%qs" msgstr "" -#: config/aarch64/aarch64.c:8225 +#: config/aarch64/aarch64.c:8274 #, gcc-internal-format msgid "unknown value %qs for -march" msgstr "" -#: config/aarch64/aarch64.c:8228 +#: config/aarch64/aarch64.c:8277 #, gcc-internal-format msgid "invalid feature modifier in -march=%qs" msgstr "" -#: config/aarch64/aarch64.c:8254 +#: config/aarch64/aarch64.c:8303 #, gcc-internal-format msgid "missing cpu name in -mtune=%qs" msgstr "" -#: config/aarch64/aarch64.c:8257 +#: config/aarch64/aarch64.c:8306 #, gcc-internal-format msgid "unknown value %qs for -mtune" msgstr "" -#: config/aarch64/aarch64.c:8359 config/arm/arm.c:2999 +#: config/aarch64/aarch64.c:8408 config/arm/arm.c:3007 #, gcc-internal-format, gfc-internal-format msgid "switch -mcpu=%s conflicts with -march=%s switch" msgstr "" -#: config/aarch64/aarch64.c:8394 +#: config/aarch64/aarch64.c:8443 #, gcc-internal-format msgid "Assembler does not support -mabi=ilp32" msgstr "" -#: config/aarch64/aarch64.c:8460 +#: config/aarch64/aarch64.c:8509 #, gcc-internal-format msgid "code model %qs with -f%s" msgstr "" -#: config/aarch64/aarch64.c:8641 +#: config/aarch64/aarch64.c:8674 #, gcc-internal-format, gfc-internal-format msgid "missing architecture name in 'arch' target %s" msgstr "" -#: config/aarch64/aarch64.c:8644 +#: config/aarch64/aarch64.c:8677 #, gcc-internal-format msgid "unknown value %qs for 'arch' target %s" msgstr "" -#: config/aarch64/aarch64.c:8647 +#: config/aarch64/aarch64.c:8680 #, gcc-internal-format msgid "invalid feature modifier %qs for 'arch' target %s" msgstr "" -#: config/aarch64/aarch64.c:8681 +#: config/aarch64/aarch64.c:8714 #, gcc-internal-format, gfc-internal-format msgid "missing cpu name in 'cpu' target %s" msgstr "" -#: config/aarch64/aarch64.c:8684 +#: config/aarch64/aarch64.c:8717 #, gcc-internal-format msgid "unknown value %qs for 'cpu' target %s" msgstr "" -#: config/aarch64/aarch64.c:8687 +#: config/aarch64/aarch64.c:8720 #, gcc-internal-format msgid "invalid feature modifier %qs for 'cpu' target %s" msgstr "" -#: config/aarch64/aarch64.c:8718 +#: config/aarch64/aarch64.c:8751 #, gcc-internal-format msgid "unknown value %qs for 'tune' target %s" msgstr "" -#: config/aarch64/aarch64.c:8758 +#: config/aarch64/aarch64.c:8791 #, gcc-internal-format msgid "missing feature modifier in target %s %qs" msgstr "" -#: config/aarch64/aarch64.c:8763 +#: config/aarch64/aarch64.c:8796 #, gcc-internal-format msgid "invalid feature modifier in target %s %qs" msgstr "" -#: config/aarch64/aarch64.c:8811 +#: config/aarch64/aarch64.c:8846 #, gcc-internal-format, gfc-internal-format msgid "malformed target %s" msgstr "" -#: config/aarch64/aarch64.c:8859 +#: config/aarch64/aarch64.c:8894 #, gcc-internal-format msgid "target %s %qs does not accept an argument" msgstr "" -#: config/aarch64/aarch64.c:8868 +#: config/aarch64/aarch64.c:8903 #, gcc-internal-format msgid "target %s %qs does not allow a negated form" msgstr "" -#: config/aarch64/aarch64.c:8923 +#: config/aarch64/aarch64.c:8958 #, gcc-internal-format, gfc-internal-format msgid "target %s %s=%s is not valid" msgstr "" -#: config/aarch64/aarch64.c:8989 +#: config/aarch64/aarch64.c:9024 #, gcc-internal-format, gfc-internal-format msgid "malformed target %s value" msgstr "" -#: config/aarch64/aarch64.c:9006 +#: config/aarch64/aarch64.c:9041 #, gcc-internal-format msgid "target %s %qs is invalid" msgstr "" -#: config/aarch64/aarch64.c:9015 +#: config/aarch64/aarch64.c:9050 #, gcc-internal-format msgid "malformed target %s list %qs" msgstr "" -#: config/aarch64/aarch64.c:10852 +#: config/aarch64/aarch64.c:10893 #, gcc-internal-format msgid "%Klane %wd out of range %wd - %wd" msgstr "" -#: config/aarch64/aarch64.c:10854 +#: config/aarch64/aarch64.c:10895 #, gcc-internal-format msgid "lane %wd out of range %wd - %wd" msgstr "" @@ -25987,8 +26067,8 @@ msgstr "" msgid "bad value %qs for -mmemory-latency" msgstr "" -#: config/alpha/alpha.c:6652 config/alpha/alpha.c:6655 config/arc/arc.c:5375 -#: config/arc/arc.c:5654 config/s390/s390.c:830 config/tilegx/tilegx.c:3540 +#: config/alpha/alpha.c:6652 config/alpha/alpha.c:6655 config/arc/arc.c:5480 +#: config/arc/arc.c:5759 config/s390/s390.c:852 config/tilegx/tilegx.c:3540 #: config/tilepro/tilepro.c:3107 #, gcc-internal-format msgid "bad builtin fcode" @@ -26029,151 +26109,171 @@ msgstr "" msgid "FPX extensions not available on pre-ARC600 cores" msgstr "" -#: config/arc/arc.c:728 +#: config/arc/arc.c:730 +#, gcc-internal-format +msgid "No FPX/FPU mixing allowed" +msgstr "" + +#: config/arc/arc.c:735 #, gcc-internal-format msgid "This multiplier configuration is not available for HS cores" msgstr "" -#: config/arc/arc.c:734 +#: config/arc/arc.c:741 #, gcc-internal-format, gfc-internal-format msgid "PIC is not supported for %s. Generating non-PIC code only.." msgstr "" -#: config/arc/arc.c:740 +#: config/arc/arc.c:747 #, gcc-internal-format msgid "-matomic is only supported for ARC700 or ARC HS cores" msgstr "" -#: config/arc/arc.c:744 +#: config/arc/arc.c:751 #, gcc-internal-format msgid "-mll64 is only supported for ARC HS cores" msgstr "" -#: config/arc/arc.c:1218 +#: config/arc/arc.c:758 +#, gcc-internal-format +msgid "FPU double precision options are available for ARC HS only" +msgstr "" + +#: config/arc/arc.c:760 +#, gcc-internal-format +msgid "FPU double precision assist options are not available for ARC HS" +msgstr "" + +#: config/arc/arc.c:763 +#, gcc-internal-format +msgid "FPU options are available for ARCv2 architecture only" +msgstr "" + +#: config/arc/arc.c:1293 #, gcc-internal-format, gfc-internal-format msgid "multiply option implies r%d is fixed" msgstr "" -#: config/arc/arc.c:1395 config/epiphany/epiphany.c:489 +#: config/arc/arc.c:1493 config/epiphany/epiphany.c:489 #: config/epiphany/epiphany.c:529 #, gcc-internal-format msgid "argument of %qE attribute is not a string constant" msgstr "" -#: config/arc/arc.c:1404 +#: config/arc/arc.c:1502 #, gcc-internal-format msgid "argument of %qE attribute is not \"ilink1\" or \"ilink2\"" msgstr "" -#: config/arc/arc.c:1412 +#: config/arc/arc.c:1510 #, gcc-internal-format msgid "argument of %qE attribute is not \"ilink\"" msgstr "" -#: config/arc/arc.c:5274 +#: config/arc/arc.c:5379 #, gcc-internal-format msgid "__builtin_arc_aligned with non-constant alignment" msgstr "" -#: config/arc/arc.c:5282 +#: config/arc/arc.c:5387 #, gcc-internal-format msgid "invalid alignment value for __builtin_arc_aligned" msgstr "" -#: config/arc/arc.c:5409 +#: config/arc/arc.c:5514 #, gcc-internal-format msgid "builtin operand should be an unsigned 6-bit value" msgstr "" -#: config/arc/arc.c:5450 +#: config/arc/arc.c:5555 #, gcc-internal-format msgid "operand 1 should be an unsigned 3-bit immediate" msgstr "" -#: config/arc/arc.c:5491 config/arc/arc.c:5588 +#: config/arc/arc.c:5596 config/arc/arc.c:5693 #, gcc-internal-format msgid "operand 2 should be an unsigned 3-bit value (I0-I7)" msgstr "" -#: config/arc/arc.c:5524 config/arc/arc.c:5556 +#: config/arc/arc.c:5629 config/arc/arc.c:5661 #, gcc-internal-format msgid "operand 1 should be an unsigned 3-bit value (I0-I7)" msgstr "" -#: config/arc/arc.c:5528 config/arc/arc.c:5560 +#: config/arc/arc.c:5633 config/arc/arc.c:5665 #, gcc-internal-format msgid "operand 2 should be an unsigned 8-bit value" msgstr "" -#: config/arc/arc.c:5592 +#: config/arc/arc.c:5697 #, gcc-internal-format msgid "operand 3 should be an unsigned 8-bit value" msgstr "" -#: config/arc/arc.c:5625 +#: config/arc/arc.c:5730 #, gcc-internal-format msgid "operand 4 should be an unsigned 8-bit value (0-255)" msgstr "" -#: config/arc/arc.c:5629 +#: config/arc/arc.c:5734 #, gcc-internal-format msgid "operand 3 should be an unsigned 3-bit value (I0-I7)" msgstr "" -#: config/arc/arc.c:5636 +#: config/arc/arc.c:5741 #, gcc-internal-format msgid "operand 2 should be an unsigned 3-bit value (subreg 0-7)" msgstr "" -#: config/arc/arc.c:5639 +#: config/arc/arc.c:5744 #, gcc-internal-format msgid "operand 2 should be an even 3-bit value (subreg 0,2,4,6)" msgstr "" -#: config/arc/arc.c:5686 +#: config/arc/arc.c:5791 #, gcc-internal-format, gfc-internal-format msgid "builtin requires an immediate for operand %d" msgstr "" -#: config/arc/arc.c:5691 +#: config/arc/arc.c:5796 #, gcc-internal-format, gfc-internal-format msgid "operand %d should be a 6 bit unsigned immediate" msgstr "" -#: config/arc/arc.c:5695 +#: config/arc/arc.c:5800 #, gcc-internal-format, gfc-internal-format msgid "operand %d should be a 8 bit unsigned immediate" msgstr "" -#: config/arc/arc.c:5699 +#: config/arc/arc.c:5804 #, gcc-internal-format, gfc-internal-format msgid "operand %d should be a 3 bit unsigned immediate" msgstr "" -#: config/arc/arc.c:5702 +#: config/arc/arc.c:5807 #, gcc-internal-format, gfc-internal-format msgid "unknown builtin immediate operand type for operand %d" msgstr "" -#: config/arc/arc.c:5753 +#: config/arc/arc.c:5858 #, gcc-internal-format msgid "" "register number must be a compile-time constant. Try giving higher " "optimization levels" msgstr "" -#: config/arc/arc.c:5773 +#: config/arc/arc.c:5878 #, gcc-internal-format msgid "" "operand for sleep instruction must be an unsigned 6 bit compile-time constant" msgstr "" -#: config/arc/arc.c:6346 +#: config/arc/arc.c:6451 #, gcc-internal-format msgid "Insn addresses not set after shorten_branches" msgstr "" -#: config/arc/arc.c:6550 +#: config/arc/arc.c:6660 #, gcc-internal-format msgid "insn addresses not freed" msgstr "" @@ -26440,184 +26540,184 @@ msgstr "" msgid "-mslow-flash-data only supports non-pic code on armv7-m targets" msgstr "" -#: config/arm/arm.c:2880 +#: config/arm/arm.c:2888 #, gcc-internal-format msgid "target CPU does not support THUMB instructions" msgstr "" -#: config/arm/arm.c:2923 +#: config/arm/arm.c:2931 #, gcc-internal-format msgid "target CPU does not support unaligned accesses" msgstr "" -#: config/arm/arm.c:3128 +#: config/arm/arm.c:3136 #, gcc-internal-format msgid "target CPU does not support interworking" msgstr "" -#: config/arm/arm.c:3134 +#: config/arm/arm.c:3142 #, gcc-internal-format msgid "-mapcs-stack-check incompatible with -mno-apcs-frame" msgstr "" -#: config/arm/arm.c:3142 +#: config/arm/arm.c:3150 #, gcc-internal-format msgid "-fpic and -mapcs-reent are incompatible" msgstr "" -#: config/arm/arm.c:3145 +#: config/arm/arm.c:3153 #, gcc-internal-format msgid "APCS reentrant code not supported. Ignored" msgstr "" -#: config/arm/arm.c:3148 +#: config/arm/arm.c:3156 #, gcc-internal-format msgid "passing floating point arguments in fp regs not yet supported" msgstr "" -#: config/arm/arm.c:3193 +#: config/arm/arm.c:3201 #, gcc-internal-format msgid "iwmmxt requires an AAPCS compatible ABI for proper operation" msgstr "" -#: config/arm/arm.c:3196 +#: config/arm/arm.c:3204 #, gcc-internal-format msgid "iwmmxt abi requires an iwmmxt capable cpu" msgstr "" -#: config/arm/arm.c:3225 +#: config/arm/arm.c:3233 #, gcc-internal-format msgid "AAPCS does not support -mcaller-super-interworking" msgstr "" -#: config/arm/arm.c:3228 +#: config/arm/arm.c:3236 #, gcc-internal-format msgid "AAPCS does not support -mcallee-super-interworking" msgstr "" -#: config/arm/arm.c:3233 +#: config/arm/arm.c:3241 #, gcc-internal-format msgid "__fp16 and no ldrh" msgstr "" -#: config/arm/arm.c:3249 +#: config/arm/arm.c:3257 #, gcc-internal-format msgid "-mfloat-abi=hard and VFP" msgstr "" -#: config/arm/arm.c:3285 +#: config/arm/arm.c:3293 #, gcc-internal-format msgid "structure size boundary can only be set to 8, 32 or 64" msgstr "" -#: config/arm/arm.c:3287 +#: config/arm/arm.c:3295 #, gcc-internal-format msgid "structure size boundary can only be set to 8 or 32" msgstr "" -#: config/arm/arm.c:3298 +#: config/arm/arm.c:3306 #, gcc-internal-format msgid "RTP PIC is incompatible with -msingle-pic-base" msgstr "" -#: config/arm/arm.c:3310 +#: config/arm/arm.c:3318 #, gcc-internal-format msgid "-mpic-register= is useless without -fpic" msgstr "" -#: config/arm/arm.c:3319 +#: config/arm/arm.c:3327 #, gcc-internal-format, gfc-internal-format msgid "unable to use '%s' for PIC register" msgstr "" -#: config/arm/arm.c:3342 +#: config/arm/arm.c:3350 #, gcc-internal-format msgid "-freorder-blocks-and-partition not supported on this architecture" msgstr "" -#: config/arm/arm.c:5489 +#: config/arm/arm.c:5498 #, gcc-internal-format msgid "non-AAPCS derived PCS variant" msgstr "" -#: config/arm/arm.c:5491 +#: config/arm/arm.c:5500 #, gcc-internal-format msgid "variadic functions must use the base AAPCS variant" msgstr "" -#: config/arm/arm.c:5510 +#: config/arm/arm.c:5519 #, gcc-internal-format msgid "PCS variant" msgstr "" -#: config/arm/arm.c:5705 +#: config/arm/arm.c:5714 #, gcc-internal-format msgid "Thumb-1 hard-float VFP ABI" msgstr "" -#: config/arm/arm.c:6447 config/arm/arm.c:6465 config/avr/avr.c:8981 -#: config/avr/avr.c:8997 config/bfin/bfin.c:4672 config/bfin/bfin.c:4733 +#: config/arm/arm.c:6456 config/arm/arm.c:6474 config/avr/avr.c:8991 +#: config/avr/avr.c:9007 config/bfin/bfin.c:4672 config/bfin/bfin.c:4733 #: config/bfin/bfin.c:4762 config/epiphany/epiphany.c:472 -#: config/h8300/h8300.c:5453 config/i386/i386.c:6788 config/i386/i386.c:11968 -#: config/i386/i386.c:44374 config/i386/i386.c:44424 config/i386/i386.c:44494 +#: config/h8300/h8300.c:5453 config/i386/i386.c:6817 config/i386/i386.c:12002 +#: config/i386/i386.c:44435 config/i386/i386.c:44485 config/i386/i386.c:44555 #: config/m68k/m68k.c:748 config/mcore/mcore.c:3052 config/mep/mep.c:3884 -#: config/mep/mep.c:3898 config/mep/mep.c:3972 config/nvptx/nvptx.c:3796 -#: config/rl78/rl78.c:756 config/rs6000/rs6000.c:30942 config/rx/rx.c:2695 -#: config/rx/rx.c:2721 config/s390/s390.c:1024 config/sh/sh.c:9778 -#: config/sh/sh.c:9796 config/sh/sh.c:9825 config/sh/sh.c:9907 -#: config/sh/sh.c:9930 config/spu/spu.c:3680 config/stormy16/stormy16.c:2211 -#: config/v850/v850.c:2082 config/visium/visium.c:642 +#: config/mep/mep.c:3898 config/mep/mep.c:3972 config/nvptx/nvptx.c:3793 +#: config/rl78/rl78.c:756 config/rs6000/rs6000.c:30961 config/rx/rx.c:2695 +#: config/rx/rx.c:2721 config/s390/s390.c:1046 config/sh/sh.c:9780 +#: config/sh/sh.c:9798 config/sh/sh.c:9827 config/sh/sh.c:9909 +#: config/sh/sh.c:9932 config/spu/spu.c:3680 config/stormy16/stormy16.c:2211 +#: config/v850/v850.c:2082 config/visium/visium.c:699 #, gcc-internal-format msgid "%qE attribute only applies to functions" msgstr "" -#: config/arm/arm.c:12901 +#: config/arm/arm.c:12912 #, gcc-internal-format msgid "%K%s %wd out of range %wd - %wd" msgstr "" -#: config/arm/arm.c:12904 +#: config/arm/arm.c:12915 #, gcc-internal-format msgid "%s %wd out of range %wd - %wd" msgstr "" -#: config/arm/arm.c:23535 +#: config/arm/arm.c:23600 #, gcc-internal-format msgid "unable to compute real location of stacked parameter" msgstr "" -#: config/arm/arm.c:24153 +#: config/arm/arm.c:24211 #, gcc-internal-format msgid "Unexpected thumb1 far jump" msgstr "" -#: config/arm/arm.c:24420 +#: config/arm/arm.c:24478 #, gcc-internal-format msgid "no low registers available for popping high registers" msgstr "" -#: config/arm/arm.c:24664 +#: config/arm/arm.c:24722 #, gcc-internal-format msgid "interrupt Service Routines cannot be coded in Thumb mode" msgstr "" -#: config/arm/arm.c:24889 +#: config/arm/arm.c:24947 #, gcc-internal-format msgid "-fstack-check=specific for Thumb-1" msgstr "" -#: config/arm/arm.c:29901 config/i386/i386.c:6012 config/s390/s390.c:14004 +#: config/arm/arm.c:30008 config/i386/i386.c:6041 config/s390/s390.c:14504 #, gcc-internal-format msgid "attribute %<target%> argument not a string" msgstr "" -#: config/arm/arm.c:29924 +#: config/arm/arm.c:30031 #, gcc-internal-format, gfc-internal-format msgid "invalid fpu for attribute(target(\"%s\"))" msgstr "" -#: config/arm/arm.c:29930 config/i386/i386.c:6078 config/i386/i386.c:6125 -#: config/s390/s390.c:14070 config/s390/s390.c:14120 config/s390/s390.c:14137 +#: config/arm/arm.c:30037 config/i386/i386.c:6107 config/i386/i386.c:6154 +#: config/s390/s390.c:14570 config/s390/s390.c:14620 config/s390/s390.c:14637 #, gcc-internal-format, gfc-internal-format msgid "attribute(target(\"%s\")) is unknown" msgstr "" @@ -26676,199 +26776,199 @@ msgstr "" #. happen as options are provided by device-specs. It could be a #. typo in a device-specs or calling the compiler proper directly #. with -mmcu=<device>. -#: config/avr/avr.c:368 +#: config/avr/avr.c:369 #, gcc-internal-format msgid "unknown core architecture %qs specified with %qs" msgstr "" -#: config/avr/avr.c:425 config/mep/mep.c:354 config/visium/visium.c:343 +#: config/avr/avr.c:435 config/mep/mep.c:354 config/visium/visium.c:383 #, gcc-internal-format msgid "-fpic is not supported" msgstr "" -#: config/avr/avr.c:427 config/mep/mep.c:356 config/visium/visium.c:345 +#: config/avr/avr.c:437 config/mep/mep.c:356 config/visium/visium.c:385 #, gcc-internal-format msgid "-fPIC is not supported" msgstr "" -#: config/avr/avr.c:429 +#: config/avr/avr.c:439 #, gcc-internal-format msgid "-fpie is not supported" msgstr "" -#: config/avr/avr.c:431 +#: config/avr/avr.c:441 #, gcc-internal-format msgid "-fPIE is not supported" msgstr "" -#: config/avr/avr.c:703 +#: config/avr/avr.c:713 #, gcc-internal-format msgid "function attributes %qs, %qs and %qs are mutually exclusive" msgstr "" -#: config/avr/avr.c:710 +#: config/avr/avr.c:720 #, gcc-internal-format msgid "function attributes %qs and %qs have no effect on %qs function" msgstr "" -#: config/avr/avr.c:737 +#: config/avr/avr.c:747 #, gcc-internal-format msgid "%qs function cannot have arguments" msgstr "" -#: config/avr/avr.c:740 +#: config/avr/avr.c:750 #, gcc-internal-format msgid "%qs function cannot return a value" msgstr "" -#: config/avr/avr.c:747 +#: config/avr/avr.c:757 #, gcc-internal-format msgid "%qs appears to be a misspelled %s handler" msgstr "" -#: config/avr/avr.c:974 +#: config/avr/avr.c:984 #, gcc-internal-format msgid "%<builtin_return_address%> contains only 2 bytes of address" msgstr "" -#: config/avr/avr.c:2198 +#: config/avr/avr.c:2208 #, gcc-internal-format msgid "pointer offset from symbol maybe incorrect" msgstr "" -#: config/avr/avr.c:2337 +#: config/avr/avr.c:2347 #, gcc-internal-format msgid "accessing data memory with program memory address" msgstr "" -#: config/avr/avr.c:2398 +#: config/avr/avr.c:2408 #, gcc-internal-format msgid "accessing program memory with data memory address" msgstr "" -#: config/avr/avr.c:2843 +#: config/avr/avr.c:2853 #, gcc-internal-format, gfc-internal-format msgid "fixed register %s used to pass parameter to function" msgstr "" -#: config/avr/avr.c:3114 +#: config/avr/avr.c:3124 #, gcc-internal-format msgid "writing to address space %qs not supported" msgstr "" -#: config/avr/avr.c:9014 config/bfin/bfin.c:4794 config/i386/winnt.c:58 +#: config/avr/avr.c:9024 config/bfin/bfin.c:4794 config/i386/winnt.c:58 #: config/mep/mep.c:3788 config/mep/mep.c:3926 #, gcc-internal-format msgid "%qE attribute only applies to variables" msgstr "" -#: config/avr/avr.c:9025 config/mep/mep.c:3936 +#: config/avr/avr.c:9035 config/mep/mep.c:3936 #, gcc-internal-format msgid "%qE attribute allows only an integer constant argument" msgstr "" -#: config/avr/avr.c:9035 +#: config/avr/avr.c:9045 #, gcc-internal-format msgid "%qE attribute address out of range" msgstr "" -#: config/avr/avr.c:9048 +#: config/avr/avr.c:9058 #, gcc-internal-format msgid "both %s and %qE attribute provide address" msgstr "" -#: config/avr/avr.c:9058 +#: config/avr/avr.c:9068 #, gcc-internal-format msgid "%qE attribute on non-volatile variable" msgstr "" -#: config/avr/avr.c:9262 +#: config/avr/avr.c:9272 #, gcc-internal-format msgid "%qT uses address space %qs beyond flash of %d KiB" msgstr "" -#: config/avr/avr.c:9265 +#: config/avr/avr.c:9275 #, gcc-internal-format msgid "%s %q+D uses address space %qs beyond flash of %d KiB" msgstr "" -#: config/avr/avr.c:9271 +#: config/avr/avr.c:9281 #, gcc-internal-format msgid "pointer targeting address space %qs must be const in %qT" msgstr "" -#: config/avr/avr.c:9274 +#: config/avr/avr.c:9284 #, gcc-internal-format msgid "pointer targeting address space %qs must be const in %s %q+D" msgstr "" -#: config/avr/avr.c:9312 +#: config/avr/avr.c:9322 #, gcc-internal-format msgid "variable %q+D located in address space %qs beyond flash of %d KiB" msgstr "" -#: config/avr/avr.c:9317 +#: config/avr/avr.c:9327 #, gcc-internal-format msgid "" "variable %q+D located in address space %qs which is not supported for " "architecture %qs" msgstr "" -#: config/avr/avr.c:9333 +#: config/avr/avr.c:9343 #, gcc-internal-format msgid "" "variable %q+D must be const in order to be put into read-only section by " "means of %qs" msgstr "" -#: config/avr/avr.c:9373 +#: config/avr/avr.c:9383 #, gcc-internal-format msgid "static IO declaration for %q+D needs an address" msgstr "" -#: config/avr/avr.c:9405 +#: config/avr/avr.c:9415 #, gcc-internal-format msgid "IO definition for %q+D needs an address" msgstr "" -#: config/avr/avr.c:9589 +#: config/avr/avr.c:9599 #, gcc-internal-format msgid "only uninitialized variables can be placed in the .noinit section" msgstr "" -#: config/avr/avr.c:9630 +#: config/avr/avr.c:9640 #, gcc-internal-format msgid "uninitialized variable %q+D put into program memory area" msgstr "" -#: config/avr/avr.c:9740 +#: config/avr/avr.c:9750 #, gcc-internal-format msgid "architecture %qs supported for assembler only" msgstr "" -#: config/avr/avr.c:12259 +#: config/avr/avr.c:12269 #, gcc-internal-format msgid "conversion from address space %qs to address space %qs" msgstr "" -#: config/avr/avr.c:13315 +#: config/avr/avr.c:13325 #, gcc-internal-format, gfc-internal-format msgid "%s expects a compile time integer constant" msgstr "" -#: config/avr/avr.c:13329 +#: config/avr/avr.c:13339 #, gcc-internal-format, gfc-internal-format msgid "%s expects a compile time long integer constant as first argument" msgstr "" -#: config/avr/avr.c:13357 +#: config/avr/avr.c:13367 #, gcc-internal-format, gfc-internal-format msgid "" "rounding to %d bits has no effect for fixed-point value with %d fractional " "bits" msgstr "" -#: config/avr/avr.c:13366 +#: config/avr/avr.c:13376 #, gcc-internal-format msgid "rounding result will always be 0" msgstr "" @@ -27271,55 +27371,55 @@ msgstr "" msgid "can%'t set position in PCH file: %m" msgstr "" -#: config/i386/i386.c:4066 +#: config/i386/i386.c:4088 #, gcc-internal-format, gfc-internal-format msgid "wrong arg %s to option %s" msgstr "" -#: config/i386/i386.c:4073 +#: config/i386/i386.c:4095 #, gcc-internal-format, gfc-internal-format msgid "size ranges of option %s should be increasing" msgstr "" -#: config/i386/i386.c:4084 +#: config/i386/i386.c:4106 #, gcc-internal-format, gfc-internal-format msgid "wrong stringop strategy name %s specified for option %s" msgstr "" #. rep; movq isn't available in 32-bit code. -#: config/i386/i386.c:4094 +#: config/i386/i386.c:4116 #, gcc-internal-format, gfc-internal-format msgid "" "stringop strategy name %s specified for option %s not supported for 32-bit " "code" msgstr "" -#: config/i386/i386.c:4109 +#: config/i386/i386.c:4131 #, gcc-internal-format, gfc-internal-format msgid "unknown alignment %s specified for option %s" msgstr "" -#: config/i386/i386.c:4120 +#: config/i386/i386.c:4142 #, gcc-internal-format, gfc-internal-format msgid "the max value for the last size range should be -1 for option %s" msgstr "" -#: config/i386/i386.c:4128 +#: config/i386/i386.c:4150 #, gcc-internal-format, gfc-internal-format msgid "too many size ranges specified in option %s" msgstr "" -#: config/i386/i386.c:4182 +#: config/i386/i386.c:4204 #, gcc-internal-format, gfc-internal-format msgid "Unknown parameter to option -mtune-ctrl: %s" msgstr "" -#: config/i386/i386.c:4570 +#: config/i386/i386.c:4592 #, gcc-internal-format msgid "Intel MCU psABI isn%'t supported in %s mode" msgstr "" -#: config/i386/i386.c:4617 +#: config/i386/i386.c:4639 #, gcc-internal-format, gfc-internal-format msgid "" "%stune=x86-64%s is deprecated; use %stune=k8%s or %stune=generic%s instead " @@ -27327,348 +27427,348 @@ msgid "" msgstr "" #. rep; movq isn't available in 32-bit code. -#: config/i386/i386.c:4644 +#: config/i386/i386.c:4666 #, gcc-internal-format msgid "-mstringop-strategy=rep_8byte not supported for 32-bit code" msgstr "" -#: config/i386/i386.c:4661 +#: config/i386/i386.c:4683 #, gcc-internal-format msgid "address mode %qs not supported in the %s bit mode" msgstr "" -#: config/i386/i386.c:4687 config/i386/i386.c:4696 config/i386/i386.c:4708 -#: config/i386/i386.c:4719 config/i386/i386.c:4730 +#: config/i386/i386.c:4709 config/i386/i386.c:4718 config/i386/i386.c:4730 +#: config/i386/i386.c:4741 config/i386/i386.c:4752 #, gcc-internal-format msgid "code model %qs not supported in the %s bit mode" msgstr "" -#: config/i386/i386.c:4699 config/i386/i386.c:4711 +#: config/i386/i386.c:4721 config/i386/i386.c:4733 #, gcc-internal-format msgid "code model %qs not supported in x32 mode" msgstr "" -#: config/i386/i386.c:4717 config/i386/i386.c:4726 config/i386/i386.c:5808 +#: config/i386/i386.c:4739 config/i386/i386.c:4748 config/i386/i386.c:5837 #, gcc-internal-format, gfc-internal-format msgid "code model %s does not support PIC mode" msgstr "" -#: config/i386/i386.c:4754 +#: config/i386/i386.c:4776 #, gcc-internal-format msgid "-masm=intel not supported in this configuration" msgstr "" -#: config/i386/i386.c:4759 +#: config/i386/i386.c:4781 #, gcc-internal-format, gfc-internal-format msgid "%i-bit mode not compiled in" msgstr "" -#: config/i386/i386.c:4772 config/i386/i386.c:5003 +#: config/i386/i386.c:4794 config/i386/i386.c:5025 #, gcc-internal-format msgid "CPU you selected does not support x86-64 instruction set" msgstr "" -#: config/i386/i386.c:4964 config/i386/i386.c:4967 +#: config/i386/i386.c:4986 config/i386/i386.c:4989 #, gcc-internal-format msgid "Intel MPX does not support x32" msgstr "" -#: config/i386/i386.c:4970 +#: config/i386/i386.c:4992 #, gcc-internal-format, gfc-internal-format msgid "generic CPU can be used only for %stune=%s %s" msgstr "" -#: config/i386/i386.c:4973 +#: config/i386/i386.c:4995 #, gcc-internal-format, gfc-internal-format msgid "intel CPU can be used only for %stune=%s %s" msgstr "" -#: config/i386/i386.c:4976 +#: config/i386/i386.c:4998 #, gcc-internal-format, gfc-internal-format msgid "bad value (%s) for %sarch=%s %s" msgstr "" -#: config/i386/i386.c:5019 +#: config/i386/i386.c:5041 #, gcc-internal-format, gfc-internal-format msgid "bad value (%s) for %stune=%s %s" msgstr "" -#: config/i386/i386.c:5083 +#: config/i386/i386.c:5105 #, gcc-internal-format msgid "-mregparm is ignored in 64-bit mode" msgstr "" -#: config/i386/i386.c:5085 +#: config/i386/i386.c:5107 #, gcc-internal-format msgid "-mregparm is ignored for Intel MCU psABI" msgstr "" -#: config/i386/i386.c:5088 +#: config/i386/i386.c:5110 #, gcc-internal-format, gfc-internal-format msgid "-mregparm=%d is not between 0 and %d" msgstr "" -#: config/i386/i386.c:5119 +#: config/i386/i386.c:5141 #, gcc-internal-format, gfc-internal-format msgid "%srtd%s is ignored in 64bit mode" msgstr "" -#: config/i386/i386.c:5197 +#: config/i386/i386.c:5219 #, gcc-internal-format msgid "-mpreferred-stack-boundary is not supported for this target" msgstr "" -#: config/i386/i386.c:5200 +#: config/i386/i386.c:5222 #, gcc-internal-format, gfc-internal-format msgid "-mpreferred-stack-boundary=%d is not between %d and %d" msgstr "" -#: config/i386/i386.c:5223 +#: config/i386/i386.c:5245 #, gcc-internal-format, gfc-internal-format msgid "-mincoming-stack-boundary=%d is not between %d and 12" msgstr "" -#: config/i386/i386.c:5236 +#: config/i386/i386.c:5258 #, gcc-internal-format msgid "-mnop-mcount is not compatible with this target" msgstr "" -#: config/i386/i386.c:5239 +#: config/i386/i386.c:5261 #, gcc-internal-format msgid "-mnop-mcount is not implemented for -fPIC" msgstr "" -#: config/i386/i386.c:5244 +#: config/i386/i386.c:5266 #, gcc-internal-format, gfc-internal-format msgid "%ssseregparm%s used without SSE enabled" msgstr "" -#: config/i386/i386.c:5254 +#: config/i386/i386.c:5276 #, gcc-internal-format msgid "SSE instruction set disabled, using 387 arithmetics" msgstr "" -#: config/i386/i386.c:5261 +#: config/i386/i386.c:5283 #, gcc-internal-format msgid "387 instruction set disabled, using SSE arithmetics" msgstr "" -#: config/i386/i386.c:5309 +#: config/i386/i386.c:5331 #, gcc-internal-format, gfc-internal-format msgid "stack probing requires %saccumulate-outgoing-args%s for correctness" msgstr "" -#: config/i386/i386.c:5320 +#: config/i386/i386.c:5342 #, gcc-internal-format, gfc-internal-format msgid "fixed ebp register requires %saccumulate-outgoing-args%s" msgstr "" -#: config/i386/i386.c:5433 +#: config/i386/i386.c:5455 #, gcc-internal-format msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic" msgstr "" -#: config/i386/i386.c:5440 +#: config/i386/i386.c:5462 #, gcc-internal-format msgid "-mno-fentry isn%'t compatible with SEH" msgstr "" -#: config/i386/i386.c:5499 config/rs6000/rs6000.c:4824 +#: config/i386/i386.c:5528 config/rs6000/rs6000.c:4825 #, gcc-internal-format, gfc-internal-format msgid "unknown option for -mrecip=%s" msgstr "" -#: config/i386/i386.c:6106 +#: config/i386/i386.c:6135 #, gcc-internal-format, gfc-internal-format msgid "option(\"%s\") was already specified" msgstr "" -#: config/i386/i386.c:6801 config/i386/i386.c:6852 +#: config/i386/i386.c:6830 config/i386/i386.c:6881 #, gcc-internal-format msgid "fastcall and regparm attributes are not compatible" msgstr "" -#: config/i386/i386.c:6806 +#: config/i386/i386.c:6835 #, gcc-internal-format msgid "regparam and thiscall attributes are not compatible" msgstr "" -#: config/i386/i386.c:6813 config/i386/i386.c:44394 +#: config/i386/i386.c:6842 config/i386/i386.c:44455 #, gcc-internal-format msgid "%qE attribute requires an integer constant argument" msgstr "" -#: config/i386/i386.c:6819 +#: config/i386/i386.c:6848 #, gcc-internal-format msgid "argument to %qE attribute larger than %d" msgstr "" -#: config/i386/i386.c:6844 config/i386/i386.c:6887 +#: config/i386/i386.c:6873 config/i386/i386.c:6916 #, gcc-internal-format msgid "fastcall and cdecl attributes are not compatible" msgstr "" -#: config/i386/i386.c:6848 +#: config/i386/i386.c:6877 #, gcc-internal-format msgid "fastcall and stdcall attributes are not compatible" msgstr "" -#: config/i386/i386.c:6856 config/i386/i386.c:6905 +#: config/i386/i386.c:6885 config/i386/i386.c:6934 #, gcc-internal-format msgid "fastcall and thiscall attributes are not compatible" msgstr "" -#: config/i386/i386.c:6866 config/i386/i386.c:6883 +#: config/i386/i386.c:6895 config/i386/i386.c:6912 #, gcc-internal-format msgid "stdcall and cdecl attributes are not compatible" msgstr "" -#: config/i386/i386.c:6870 +#: config/i386/i386.c:6899 #, gcc-internal-format msgid "stdcall and fastcall attributes are not compatible" msgstr "" -#: config/i386/i386.c:6874 config/i386/i386.c:6901 +#: config/i386/i386.c:6903 config/i386/i386.c:6930 #, gcc-internal-format msgid "stdcall and thiscall attributes are not compatible" msgstr "" -#: config/i386/i386.c:6891 config/i386/i386.c:6909 +#: config/i386/i386.c:6920 config/i386/i386.c:6938 #, gcc-internal-format msgid "cdecl and thiscall attributes are not compatible" msgstr "" -#: config/i386/i386.c:6897 +#: config/i386/i386.c:6926 #, gcc-internal-format msgid "%qE attribute is used for non-class method" msgstr "" -#: config/i386/i386.c:7135 +#: config/i386/i386.c:7164 #, gcc-internal-format msgid "calling %qD with attribute sseregparm without SSE/SSE2 enabled" msgstr "" -#: config/i386/i386.c:7138 +#: config/i386/i386.c:7167 #, gcc-internal-format msgid "calling %qT with attribute sseregparm without SSE/SSE2 enabled" msgstr "" -#: config/i386/i386.c:7466 +#: config/i386/i386.c:7495 #, gcc-internal-format msgid "X32 does not support ms_abi attribute" msgstr "" -#: config/i386/i386.c:7498 +#: config/i386/i386.c:7527 #, gcc-internal-format msgid "ms_hook_prologue is not compatible with nested function" msgstr "" -#: config/i386/i386.c:7807 +#: config/i386/i386.c:7840 #, gcc-internal-format msgid "AVX512F vector argument without AVX512F enabled changes the ABI" msgstr "" -#: config/i386/i386.c:7813 +#: config/i386/i386.c:7846 #, gcc-internal-format msgid "AVX512F vector return without AVX512F enabled changes the ABI" msgstr "" -#: config/i386/i386.c:7827 +#: config/i386/i386.c:7860 #, gcc-internal-format msgid "AVX vector argument without AVX enabled changes the ABI" msgstr "" -#: config/i386/i386.c:7833 +#: config/i386/i386.c:7866 #, gcc-internal-format msgid "AVX vector return without AVX enabled changes the ABI" msgstr "" -#: config/i386/i386.c:7849 +#: config/i386/i386.c:7882 #, gcc-internal-format msgid "SSE vector argument without SSE enabled changes the ABI" msgstr "" -#: config/i386/i386.c:7855 +#: config/i386/i386.c:7888 #, gcc-internal-format msgid "SSE vector return without SSE enabled changes the ABI" msgstr "" -#: config/i386/i386.c:7869 +#: config/i386/i386.c:7902 #, gcc-internal-format msgid "MMX vector argument without MMX enabled changes the ABI" msgstr "" -#: config/i386/i386.c:7875 +#: config/i386/i386.c:7908 #, gcc-internal-format msgid "MMX vector return without MMX enabled changes the ABI" msgstr "" -#: config/i386/i386.c:8057 +#: config/i386/i386.c:8090 #, gcc-internal-format msgid "" "the ABI of passing struct with a flexible array member has changed in GCC 4.4" msgstr "" -#: config/i386/i386.c:8174 +#: config/i386/i386.c:8207 #, gcc-internal-format msgid "the ABI of passing union with long double has changed in GCC 4.4" msgstr "" -#: config/i386/i386.c:8292 +#: config/i386/i386.c:8325 #, gcc-internal-format msgid "" "the ABI of passing structure with complex float member has changed in GCC 4.4" msgstr "" -#: config/i386/i386.c:8455 +#: config/i386/i386.c:8488 #, gcc-internal-format msgid "SSE register return with SSE disabled" msgstr "" -#: config/i386/i386.c:8461 +#: config/i386/i386.c:8494 #, gcc-internal-format msgid "SSE register argument with SSE disabled" msgstr "" -#: config/i386/i386.c:8477 +#: config/i386/i386.c:8510 #, gcc-internal-format msgid "x87 register return with x87 disabled" msgstr "" -#: config/i386/i386.c:8772 config/i386/i386.c:9037 +#: config/i386/i386.c:8805 config/i386/i386.c:9070 #, gcc-internal-format msgid "calling %qD with SSE calling convention without SSE/SSE2 enabled" msgstr "" -#: config/i386/i386.c:8774 config/i386/i386.c:9039 config/i386/i386.c:9532 +#: config/i386/i386.c:8807 config/i386/i386.c:9072 config/i386/i386.c:9565 #, gcc-internal-format msgid "" "this is a GCC bug that can be worked around by adding attribute used to " "function called" msgstr "" -#: config/i386/i386.c:9432 +#: config/i386/i386.c:9465 #, gcc-internal-format, gfc-internal-format msgid "" "The ABI for passing parameters with %d-byte alignment has changed in GCC 4.6" msgstr "" -#: config/i386/i386.c:9530 +#: config/i386/i386.c:9563 #, gcc-internal-format msgid "calling %qD with SSE caling convention without SSE/SSE2 enabled" msgstr "" -#: config/i386/i386.c:12657 +#: config/i386/i386.c:12691 #, gcc-internal-format msgid "ms_hook_prologue attribute isn%'t compatible with -mfentry for 32-bit" msgstr "" -#: config/i386/i386.c:13721 +#: config/i386/i386.c:13757 #, gcc-internal-format msgid "-fsplit-stack does not support fastcall with nested function" msgstr "" -#: config/i386/i386.c:13741 +#: config/i386/i386.c:13777 #, gcc-internal-format msgid "" "-fsplit-stack does not support 2 register parameters for a nested function" @@ -27676,268 +27776,268 @@ msgstr "" #. FIXME: We could make this work by pushing a register #. around the addition and comparison. -#: config/i386/i386.c:13752 +#: config/i386/i386.c:13788 #, gcc-internal-format msgid "-fsplit-stack does not support 3 register parameters" msgstr "" -#: config/i386/i386.c:16563 +#: config/i386/i386.c:16599 #, gcc-internal-format msgid "extended registers have no high halves" msgstr "" -#: config/i386/i386.c:16578 +#: config/i386/i386.c:16614 #, gcc-internal-format msgid "unsupported operand size for extended register" msgstr "" -#: config/i386/i386.c:16770 +#: config/i386/i386.c:16806 #, gcc-internal-format msgid "non-integer operand used with operand code 'z'" msgstr "" -#: config/i386/i386.c:36322 +#: config/i386/i386.c:36396 #, gcc-internal-format msgid "No dispatcher found for the versioning attributes" msgstr "" -#: config/i386/i386.c:36372 +#: config/i386/i386.c:36446 #, gcc-internal-format, gfc-internal-format msgid "No dispatcher found for %s" msgstr "" -#: config/i386/i386.c:36382 +#: config/i386/i386.c:36456 #, gcc-internal-format, gfc-internal-format msgid "No dispatcher found for the versioning attributes : %s" msgstr "" -#: config/i386/i386.c:36630 +#: config/i386/i386.c:36704 #, gcc-internal-format msgid "" "Function versions cannot be marked as gnu_inline, bodies have to be generated" msgstr "" -#: config/i386/i386.c:36635 config/i386/i386.c:37063 +#: config/i386/i386.c:36709 config/i386/i386.c:37137 #, gcc-internal-format msgid "Virtual function multiversioning not supported" msgstr "" -#: config/i386/i386.c:36698 +#: config/i386/i386.c:36772 #, gcc-internal-format msgid "missing %<target%> attribute for multi-versioned %D" msgstr "" -#: config/i386/i386.c:36701 +#: config/i386/i386.c:36775 #, gcc-internal-format msgid "previous declaration of %D" msgstr "" -#: config/i386/i386.c:36920 +#: config/i386/i386.c:36994 #, gcc-internal-format msgid "multiversioning needs ifunc which is not supported on this target" msgstr "" -#: config/i386/i386.c:37306 +#: config/i386/i386.c:37380 #, gcc-internal-format msgid "Parameter to builtin must be a string constant or literal" msgstr "" -#: config/i386/i386.c:37331 config/i386/i386.c:37381 +#: config/i386/i386.c:37405 config/i386/i386.c:37455 #, gcc-internal-format, gfc-internal-format msgid "Parameter to builtin not valid: %s" msgstr "" -#: config/i386/i386.c:37792 config/i386/i386.c:39143 +#: config/i386/i386.c:37866 config/i386/i386.c:39217 #, gcc-internal-format msgid "the last argument must be a 2-bit immediate" msgstr "" -#: config/i386/i386.c:38187 +#: config/i386/i386.c:38261 #, gcc-internal-format msgid "the fifth argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386.c:38282 +#: config/i386/i386.c:38356 #, gcc-internal-format msgid "the third argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386.c:39074 +#: config/i386/i386.c:39148 #, gcc-internal-format msgid "the last argument must be an 1-bit immediate" msgstr "" -#: config/i386/i386.c:39089 +#: config/i386/i386.c:39163 #, gcc-internal-format msgid "the last argument must be a 3-bit immediate" msgstr "" -#: config/i386/i386.c:39122 +#: config/i386/i386.c:39196 #, gcc-internal-format msgid "the last argument must be a 4-bit immediate" msgstr "" -#: config/i386/i386.c:39162 +#: config/i386/i386.c:39236 #, gcc-internal-format msgid "the last argument must be a 1-bit immediate" msgstr "" -#: config/i386/i386.c:39175 +#: config/i386/i386.c:39249 #, gcc-internal-format msgid "the last argument must be a 5-bit immediate" msgstr "" -#: config/i386/i386.c:39185 +#: config/i386/i386.c:39259 #, gcc-internal-format msgid "the next to last argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386.c:39189 config/i386/i386.c:39953 +#: config/i386/i386.c:39263 config/i386/i386.c:40027 #, gcc-internal-format msgid "the last argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386.c:39356 +#: config/i386/i386.c:39430 #, gcc-internal-format msgid "the third argument must be comparison constant" msgstr "" -#: config/i386/i386.c:39361 +#: config/i386/i386.c:39435 #, gcc-internal-format msgid "incorrect comparison mode" msgstr "" -#: config/i386/i386.c:39367 config/i386/i386.c:39568 +#: config/i386/i386.c:39441 config/i386/i386.c:39642 #, gcc-internal-format msgid "incorrect rounding operand" msgstr "" -#: config/i386/i386.c:39550 +#: config/i386/i386.c:39624 #, gcc-internal-format msgid "the immediate argument must be a 4-bit immediate" msgstr "" -#: config/i386/i386.c:39556 +#: config/i386/i386.c:39630 #, gcc-internal-format msgid "the immediate argument must be a 5-bit immediate" msgstr "" -#: config/i386/i386.c:39559 +#: config/i386/i386.c:39633 #, gcc-internal-format msgid "the immediate argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386.c:39951 +#: config/i386/i386.c:40025 #, gcc-internal-format msgid "the last argument must be a 32-bit immediate" msgstr "" -#: config/i386/i386.c:40033 config/rs6000/rs6000.c:13952 +#: config/i386/i386.c:40107 config/rs6000/rs6000.c:13947 #, gcc-internal-format msgid "selector must be an integer constant in the range 0..%wi" msgstr "" -#: config/i386/i386.c:40227 +#: config/i386/i386.c:40301 #, gcc-internal-format msgid "%qE needs unknown isa option" msgstr "" -#: config/i386/i386.c:40231 +#: config/i386/i386.c:40305 #, gcc-internal-format msgid "%qE needs isa option %s" msgstr "" -#: config/i386/i386.c:40993 +#: config/i386/i386.c:41067 #, gcc-internal-format msgid "last argument must be an immediate" msgstr "" -#: config/i386/i386.c:41602 config/i386/i386.c:41784 +#: config/i386/i386.c:41676 config/i386/i386.c:41858 #, gcc-internal-format msgid "the last argument must be scale 1, 2, 4, 8" msgstr "" -#: config/i386/i386.c:41837 +#: config/i386/i386.c:41911 #, gcc-internal-format msgid "the forth argument must be scale 1, 2, 4, 8" msgstr "" -#: config/i386/i386.c:41843 +#: config/i386/i386.c:41917 #, gcc-internal-format msgid "incorrect hint operand" msgstr "" -#: config/i386/i386.c:41862 +#: config/i386/i386.c:41936 #, gcc-internal-format msgid "the xabort's argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386.c:44381 +#: config/i386/i386.c:44442 #, gcc-internal-format msgid "%qE attribute only available for 32-bit" msgstr "" -#: config/i386/i386.c:44402 +#: config/i386/i386.c:44463 #, gcc-internal-format msgid "argument to %qE attribute is neither zero, nor one" msgstr "" -#: config/i386/i386.c:44435 config/i386/i386.c:44444 +#: config/i386/i386.c:44496 config/i386/i386.c:44505 #, gcc-internal-format msgid "ms_abi and sysv_abi attributes are not compatible" msgstr "" -#: config/i386/i386.c:44480 config/rs6000/rs6000.c:31025 +#: config/i386/i386.c:44541 config/rs6000/rs6000.c:31044 #, gcc-internal-format msgid "%qE incompatible attribute ignored" msgstr "" -#: config/i386/i386.c:47412 +#: config/i386/i386.c:47478 #, gcc-internal-format msgid "alternatives not allowed in asm flag output" msgstr "" -#: config/i386/i386.c:47476 +#: config/i386/i386.c:47542 #, gcc-internal-format msgid "unknown asm flag output %qs" msgstr "" -#: config/i386/i386.c:47505 +#: config/i386/i386.c:47571 #, gcc-internal-format msgid "invalid type for asm flag output" msgstr "" -#: config/i386/i386.c:53657 +#: config/i386/i386.c:53731 #, gcc-internal-format msgid "Unknown architecture specific memory model" msgstr "" -#: config/i386/i386.c:53664 +#: config/i386/i386.c:53738 #, gcc-internal-format msgid "HLE_ACQUIRE not used with ACQUIRE or stronger memory model" msgstr "" -#: config/i386/i386.c:53670 +#: config/i386/i386.c:53744 #, gcc-internal-format msgid "HLE_RELEASE not used with RELEASE or stronger memory model" msgstr "" -#: config/i386/i386.c:53694 +#: config/i386/i386.c:53768 config/i386/i386.c:53883 #, gcc-internal-format, gfc-internal-format msgid "unsupported simdlen %d" msgstr "" -#: config/i386/i386.c:53713 +#: config/i386/i386.c:53787 #, gcc-internal-format msgid "unsupported return type %qT for simd\n" msgstr "" -#: config/i386/i386.c:53735 +#: config/i386/i386.c:53809 #, gcc-internal-format msgid "unsupported argument type %qT for simd\n" msgstr "" -#: config/i386/i386.c:54021 +#: config/i386/i386.c:54129 #, gcc-internal-format msgid "" "Pointer Checker requires MPX support on this target. Use -mmpx options to " @@ -28033,13 +28133,13 @@ msgstr "" msgid "%qE attribute requires a string constant argument" msgstr "" -#: config/ia64/ia64.c:5928 config/pa/pa.c:425 config/sh/sh.c:9614 +#: config/ia64/ia64.c:5928 config/pa/pa.c:425 config/sh/sh.c:9616 #: config/spu/spu.c:4892 #, gcc-internal-format msgid "value of -mfixed-range must have form REG1-REG2" msgstr "" -#: config/ia64/ia64.c:5955 config/pa/pa.c:452 config/sh/sh.c:9640 +#: config/ia64/ia64.c:5955 config/pa/pa.c:452 config/sh/sh.c:9642 #: config/spu/spu.c:4918 #, gcc-internal-format, gfc-internal-format msgid "%s-%s is an empty range" @@ -28111,7 +28211,7 @@ msgid "%qE attribute is not supported for R8C target" msgstr "" #. The argument must be a constant integer. -#: config/m32c/m32c.c:2940 config/sh/sh.c:9833 config/sh/sh.c:9939 +#: config/m32c/m32c.c:2940 config/sh/sh.c:9835 config/sh/sh.c:9941 #, gcc-internal-format msgid "%qE attribute argument not an integer constant" msgstr "" @@ -28171,7 +28271,7 @@ msgstr "" msgid "interrupt_thread is available only on fido" msgstr "" -#: config/m68k/m68k.c:1096 config/rs6000/rs6000.c:24271 +#: config/m68k/m68k.c:1096 config/rs6000/rs6000.c:24279 #, gcc-internal-format msgid "stack limit expression is not supported" msgstr "" @@ -28410,7 +28510,7 @@ msgstr "" msgid "argument %d of %qE must be a multiple of %d" msgstr "" -#: config/mep/mep.c:6144 c/c-typeck.c:6610 +#: config/mep/mep.c:6144 c/c-typeck.c:6624 #, gcc-internal-format msgid "incompatible type for argument %d of %qE" msgstr "" @@ -28813,33 +28913,33 @@ msgstr "" msgid "msp430_select_hwmult_lib needs one or more arguments" msgstr "" -#: config/msp430/msp430.c:762 +#: config/msp430/msp430.c:776 #, gcc-internal-format, gfc-internal-format msgid "MCU '%s' supports %s ISA but -mcpu option is set to %s" msgstr "" -#: config/msp430/msp430.c:768 +#: config/msp430/msp430.c:782 #, gcc-internal-format, gfc-internal-format msgid "" "MCU '%s' does not have hardware multiply support, but -mhwmult is set to %s" msgstr "" -#: config/msp430/msp430.c:774 +#: config/msp430/msp430.c:788 #, gcc-internal-format, gfc-internal-format msgid "MCU '%s' supports %s hardware multiply, but -mhwmult is set to 16-bit" msgstr "" -#: config/msp430/msp430.c:777 +#: config/msp430/msp430.c:791 #, gcc-internal-format, gfc-internal-format msgid "MCU '%s' supports %s hardware multiply, but -mhwmult is set to 32-bit" msgstr "" -#: config/msp430/msp430.c:780 +#: config/msp430/msp430.c:794 #, gcc-internal-format, gfc-internal-format msgid "MCU '%s' supports %s hardware multiply, but -mhwmult is set to f5series" msgstr "" -#: config/msp430/msp430.c:796 +#: config/msp430/msp430.c:810 #, gcc-internal-format, gfc-internal-format msgid "" "Unrecognised MCU name '%s', assuming that it is just a MSP430 with no " @@ -28847,76 +28947,76 @@ msgid "" "Use the -mcpu and -mhwmult options to set these explicitly." msgstr "" -#: config/msp430/msp430.c:800 +#: config/msp430/msp430.c:814 #, gcc-internal-format, gfc-internal-format msgid "" "Unrecognised MCU name '%s', assuming that it has no hardware multiply.\n" "Use the -mhwmult option to set this explicitly." msgstr "" -#: config/msp430/msp430.c:810 +#: config/msp430/msp430.c:824 #, gcc-internal-format, gfc-internal-format msgid "" "Unrecognised MCU name '%s', assuming that it just supports the MSP430 ISA.\n" "Use the -mcpu option to set the ISA explicitly." msgstr "" -#: config/msp430/msp430.c:817 +#: config/msp430/msp430.c:831 #, gcc-internal-format, gfc-internal-format msgid "Unrecognised MCU name '%s'." msgstr "" -#: config/msp430/msp430.c:826 +#: config/msp430/msp430.c:840 #, gcc-internal-format msgid "-mlarge requires a 430X-compatible -mmcu=" msgstr "" -#: config/msp430/msp430.c:829 +#: config/msp430/msp430.c:843 #, gcc-internal-format msgid "-mcode-region=upper requires 430X-compatible cpu" msgstr "" -#: config/msp430/msp430.c:831 +#: config/msp430/msp430.c:845 #, gcc-internal-format msgid "-mdata-region=upper requires 430X-compatible cpu" msgstr "" -#: config/msp430/msp430.c:1834 +#: config/msp430/msp430.c:1848 #, gcc-internal-format msgid "unrecognised interrupt vector argument of %qE attribute" msgstr "" -#: config/msp430/msp430.c:1843 +#: config/msp430/msp430.c:1857 #, gcc-internal-format msgid "numeric argument of %qE attribute must be in range 0..63" msgstr "" -#: config/msp430/msp430.c:1849 +#: config/msp430/msp430.c:1863 #, gcc-internal-format msgid "argument of %qE attribute is not a string constant or number" msgstr "" -#: config/msp430/msp430.c:2458 +#: config/msp430/msp430.c:2473 #, gcc-internal-format msgid "__delay_cycles() only takes constant arguments" msgstr "" -#: config/msp430/msp430.c:2468 +#: config/msp430/msp430.c:2483 #, gcc-internal-format msgid "__delay_cycles only takes non-negative cycle counts." msgstr "" -#: config/msp430/msp430.c:2488 +#: config/msp430/msp430.c:2503 #, gcc-internal-format msgid "__delay_cycles is limited to 32-bit loop counts." msgstr "" -#: config/msp430/msp430.c:2558 +#: config/msp430/msp430.c:2573 #, gcc-internal-format msgid "MSP430 builtin functions only work inside interrupt handlers" msgstr "" -#: config/msp430/msp430.c:2570 config/rx/rx.c:2634 config/xtensa/xtensa.c:3346 +#: config/msp430/msp430.c:2585 config/rx/rx.c:2634 config/xtensa/xtensa.c:3346 #: config/xtensa/xtensa.c:3372 #, gcc-internal-format msgid "bad builtin code" @@ -29152,18 +29252,12 @@ msgstr "" msgid "cannot open intermediate ptx file" msgstr "" -#. The stabs testcases want to know stabs isn't supported. -#: config/nvptx/nvptx.c:165 -#, gcc-internal-format -msgid "stabs debug format not supported" -msgstr "" - -#: config/nvptx/nvptx.c:1540 +#: config/nvptx/nvptx.c:1545 #, gcc-internal-format msgid "cannot emit unaligned pointers in ptx assembly" msgstr "" -#: config/nvptx/nvptx.c:3801 +#: config/nvptx/nvptx.c:3798 #, gcc-internal-format msgid "%qE attribute requires a void return type" msgstr "" @@ -29310,51 +29404,51 @@ msgstr "" msgid "junk at end of #pragma longcall" msgstr "" -#: config/rs6000/rs6000-c.c:4498 +#: config/rs6000/rs6000-c.c:4512 #, gcc-internal-format msgid "" "vec_lvsl is deprecated for little endian; use assignment for unaligned loads " "and stores" msgstr "" -#: config/rs6000/rs6000-c.c:4501 +#: config/rs6000/rs6000-c.c:4515 #, gcc-internal-format msgid "" "vec_lvsr is deprecated for little endian; use assignment for unaligned loads " "and stores" msgstr "" -#: config/rs6000/rs6000-c.c:4517 +#: config/rs6000/rs6000-c.c:4531 #, gcc-internal-format, gfc-internal-format msgid "%s only accepts %d arguments" msgstr "" -#: config/rs6000/rs6000-c.c:4522 +#: config/rs6000/rs6000-c.c:4536 #, gcc-internal-format, gfc-internal-format msgid "%s only accepts 1 argument" msgstr "" -#: config/rs6000/rs6000-c.c:4527 +#: config/rs6000/rs6000-c.c:4541 #, gcc-internal-format, gfc-internal-format msgid "%s only accepts 2 arguments" msgstr "" -#: config/rs6000/rs6000-c.c:4593 +#: config/rs6000/rs6000-c.c:4607 #, gcc-internal-format msgid "vec_extract only accepts 2 arguments" msgstr "" -#: config/rs6000/rs6000-c.c:4695 +#: config/rs6000/rs6000-c.c:4709 #, gcc-internal-format msgid "vec_insert only accepts 3 arguments" msgstr "" -#: config/rs6000/rs6000-c.c:4827 +#: config/rs6000/rs6000-c.c:4841 #, gcc-internal-format msgid "passing arg %d of %qE discards qualifiers frompointer target type" msgstr "" -#: config/rs6000/rs6000-c.c:4871 +#: config/rs6000/rs6000-c.c:4885 #, gcc-internal-format msgid "invalid parameter combination for AltiVec intrinsic" msgstr "" @@ -29496,411 +29590,411 @@ msgstr "" msgid "-mpower9-vector requires -mpower8-vector" msgstr "" -#: config/rs6000/rs6000.c:4211 +#: config/rs6000/rs6000.c:4212 #, gcc-internal-format msgid "-mallow-movmisalign requires -mvsx" msgstr "" -#: config/rs6000/rs6000.c:4226 +#: config/rs6000/rs6000.c:4227 #, gcc-internal-format msgid "-mefficient-unaligned-vsx requires -mvsx" msgstr "" -#: config/rs6000/rs6000.c:4234 +#: config/rs6000/rs6000.c:4235 #, gcc-internal-format msgid "-mefficient-unaligned-vsx requires -mallow-movmisalign" msgstr "" -#: config/rs6000/rs6000.c:4244 +#: config/rs6000/rs6000.c:4245 #, gcc-internal-format msgid "-mfloat128 requires VSX support" msgstr "" -#: config/rs6000/rs6000.c:4258 +#: config/rs6000/rs6000.c:4259 #, gcc-internal-format msgid "-mfloat128-hardware requires full ISA 3.0 support" msgstr "" -#: config/rs6000/rs6000.c:4325 +#: config/rs6000/rs6000.c:4326 #, gcc-internal-format, gfc-internal-format msgid "unknown vectorization library ABI type (%s) for -mveclibabi= switch" msgstr "" -#: config/rs6000/rs6000.c:4337 +#: config/rs6000/rs6000.c:4338 #, gcc-internal-format msgid "target attribute or pragma changes long double size" msgstr "" -#: config/rs6000/rs6000.c:4360 config/rs6000/rs6000.c:4375 +#: config/rs6000/rs6000.c:4361 config/rs6000/rs6000.c:4376 #, gcc-internal-format msgid "target attribute or pragma changes AltiVec ABI" msgstr "" -#: config/rs6000/rs6000.c:4388 +#: config/rs6000/rs6000.c:4389 #, gcc-internal-format msgid "target attribute or pragma changes darwin64 ABI" msgstr "" -#: config/rs6000/rs6000.c:4454 +#: config/rs6000/rs6000.c:4455 #, gcc-internal-format msgid "target attribute or pragma changes single precision floating point" msgstr "" -#: config/rs6000/rs6000.c:4457 +#: config/rs6000/rs6000.c:4458 #, gcc-internal-format msgid "target attribute or pragma changes double precision floating point" msgstr "" -#: config/rs6000/rs6000.c:6724 +#: config/rs6000/rs6000.c:6718 #, gcc-internal-format, gfc-internal-format msgid "" "the layout of aggregates containing vectors with %d-byte alignment has " "changed in GCC 5" msgstr "" -#: config/rs6000/rs6000.c:9829 +#: config/rs6000/rs6000.c:9824 #, gcc-internal-format msgid "" "GCC vector returned by reference: non-standard ABI extension with no " "compatibility guarantee" msgstr "" -#: config/rs6000/rs6000.c:9982 +#: config/rs6000/rs6000.c:9977 #, gcc-internal-format msgid "" "cannot return value in vector register because altivec instructions are " "disabled, use -maltivec to enable them" msgstr "" -#: config/rs6000/rs6000.c:10152 +#: config/rs6000/rs6000.c:10147 #, gcc-internal-format, gfc-internal-format msgid "" "the ABI of passing aggregates with %d-byte alignment has changed in GCC 5" msgstr "" -#: config/rs6000/rs6000.c:10414 +#: config/rs6000/rs6000.c:10409 #, gcc-internal-format msgid "" "cannot pass argument in vector register because altivec instructions are " "disabled, use -maltivec to enable them" msgstr "" -#: config/rs6000/rs6000.c:11274 +#: config/rs6000/rs6000.c:11269 #, gcc-internal-format msgid "the ABI of passing homogeneous float aggregates has changed in GCC 5" msgstr "" -#: config/rs6000/rs6000.c:11449 +#: config/rs6000/rs6000.c:11444 #, gcc-internal-format msgid "" "GCC vector passed by reference: non-standard ABI extension with no " "compatibility guarantee" msgstr "" -#: config/rs6000/rs6000.c:12237 +#: config/rs6000/rs6000.c:12232 #, gcc-internal-format, gfc-internal-format msgid "internal error: builtin function %s already processed" msgstr "" -#: config/rs6000/rs6000.c:12679 +#: config/rs6000/rs6000.c:12674 #, gcc-internal-format msgid "argument 1 must be an 8-bit field value" msgstr "" -#: config/rs6000/rs6000.c:12726 +#: config/rs6000/rs6000.c:12721 #, gcc-internal-format msgid "argument 1 must be a 5-bit signed literal" msgstr "" -#: config/rs6000/rs6000.c:12829 config/rs6000/rs6000.c:14415 +#: config/rs6000/rs6000.c:12824 config/rs6000/rs6000.c:14410 #, gcc-internal-format msgid "argument 2 must be a 5-bit unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:12868 +#: config/rs6000/rs6000.c:12863 #, gcc-internal-format msgid "argument 1 of __builtin_altivec_predicate must be a constant" msgstr "" -#: config/rs6000/rs6000.c:12920 +#: config/rs6000/rs6000.c:12915 #, gcc-internal-format msgid "argument 1 of __builtin_altivec_predicate is out of range" msgstr "" -#: config/rs6000/rs6000.c:13294 +#: config/rs6000/rs6000.c:13289 #, gcc-internal-format, gfc-internal-format msgid "builtin %s is only valid in 64-bit mode" msgstr "" -#: config/rs6000/rs6000.c:13343 +#: config/rs6000/rs6000.c:13338 #, gcc-internal-format, gfc-internal-format msgid "argument %d must be an unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:13345 +#: config/rs6000/rs6000.c:13340 #, gcc-internal-format, gfc-internal-format msgid "argument %d is an unsigned literal that is out of range" msgstr "" -#: config/rs6000/rs6000.c:13483 +#: config/rs6000/rs6000.c:13478 #, gcc-internal-format, gfc-internal-format msgid "builtin %s only accepts a string argument" msgstr "" #. Invalid CPU argument. -#: config/rs6000/rs6000.c:13502 +#: config/rs6000/rs6000.c:13497 #, gcc-internal-format, gfc-internal-format msgid "cpu %s is an invalid argument to builtin %s" msgstr "" #. Invalid HWCAP argument. -#: config/rs6000/rs6000.c:13530 +#: config/rs6000/rs6000.c:13525 #, gcc-internal-format, gfc-internal-format msgid "hwcap %s is an invalid argument to builtin %s" msgstr "" -#: config/rs6000/rs6000.c:13603 +#: config/rs6000/rs6000.c:13598 #, gcc-internal-format msgid "argument 3 must be a 4-bit unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:13621 +#: config/rs6000/rs6000.c:13616 #, gcc-internal-format msgid "argument 3 must be a 2-bit unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:13641 +#: config/rs6000/rs6000.c:13636 #, gcc-internal-format msgid "argument 3 must be a 1-bit unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:13653 +#: config/rs6000/rs6000.c:13648 #, gcc-internal-format msgid "argument 1 must be 0 or 2" msgstr "" -#: config/rs6000/rs6000.c:13665 +#: config/rs6000/rs6000.c:13660 #, gcc-internal-format msgid "argument 1 must be a 1-bit unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:13679 +#: config/rs6000/rs6000.c:13674 #, gcc-internal-format msgid "argument 2 must be a 6-bit unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:13691 +#: config/rs6000/rs6000.c:13686 #, gcc-internal-format msgid "argument 2 must be 0 or 1" msgstr "" -#: config/rs6000/rs6000.c:13698 +#: config/rs6000/rs6000.c:13693 #, gcc-internal-format msgid "argument 3 must be in the range 0..15" msgstr "" -#: config/rs6000/rs6000.c:13885 +#: config/rs6000/rs6000.c:13880 #, gcc-internal-format msgid "argument to %qs must be a 2-bit unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:14038 +#: config/rs6000/rs6000.c:14033 #, gcc-internal-format msgid "unresolved overload for Altivec builtin %qF" msgstr "" -#: config/rs6000/rs6000.c:14168 +#: config/rs6000/rs6000.c:14163 #, gcc-internal-format msgid "argument to dss must be a 2-bit unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:14535 +#: config/rs6000/rs6000.c:14530 #, gcc-internal-format msgid "argument 1 of __builtin_paired_predicate must be a constant" msgstr "" -#: config/rs6000/rs6000.c:14582 +#: config/rs6000/rs6000.c:14577 #, gcc-internal-format msgid "argument 1 of __builtin_paired_predicate is out of range" msgstr "" -#: config/rs6000/rs6000.c:14607 +#: config/rs6000/rs6000.c:14602 #, gcc-internal-format msgid "argument 1 of __builtin_spe_predicate must be a constant" msgstr "" -#: config/rs6000/rs6000.c:14679 +#: config/rs6000/rs6000.c:14674 #, gcc-internal-format msgid "argument 1 of __builtin_spe_predicate is out of range" msgstr "" -#: config/rs6000/rs6000.c:14761 +#: config/rs6000/rs6000.c:14756 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s is only valid for the cell processor" msgstr "" -#: config/rs6000/rs6000.c:14763 +#: config/rs6000/rs6000.c:14758 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mvsx option" msgstr "" -#: config/rs6000/rs6000.c:14765 +#: config/rs6000/rs6000.c:14760 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mhtm option" msgstr "" -#: config/rs6000/rs6000.c:14767 +#: config/rs6000/rs6000.c:14762 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -maltivec option" msgstr "" -#: config/rs6000/rs6000.c:14769 +#: config/rs6000/rs6000.c:14764 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mpaired option" msgstr "" -#: config/rs6000/rs6000.c:14771 +#: config/rs6000/rs6000.c:14766 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mspe option" msgstr "" -#: config/rs6000/rs6000.c:14774 +#: config/rs6000/rs6000.c:14769 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mhard-dfp and -mpower8-vector options" msgstr "" -#: config/rs6000/rs6000.c:14777 +#: config/rs6000/rs6000.c:14772 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mhard-dfp option" msgstr "" -#: config/rs6000/rs6000.c:14779 +#: config/rs6000/rs6000.c:14774 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mpower8-vector option" msgstr "" -#: config/rs6000/rs6000.c:14782 +#: config/rs6000/rs6000.c:14777 #, gcc-internal-format, gfc-internal-format msgid "" "Builtin function %s requires the -mhard-float and -mlong-double-128 options" msgstr "" -#: config/rs6000/rs6000.c:14785 +#: config/rs6000/rs6000.c:14780 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s requires the -mhard-float option" msgstr "" -#: config/rs6000/rs6000.c:14787 +#: config/rs6000/rs6000.c:14782 #, gcc-internal-format, gfc-internal-format msgid "Builtin function %s is not supported with the current options" msgstr "" -#: config/rs6000/rs6000.c:16341 +#: config/rs6000/rs6000.c:16336 #, gcc-internal-format, gfc-internal-format msgid "internal error: builtin function %s had no type" msgstr "" -#: config/rs6000/rs6000.c:16349 +#: config/rs6000/rs6000.c:16344 #, gcc-internal-format, gfc-internal-format msgid "internal error: builtin function %s had an unexpected return type %s" msgstr "" -#: config/rs6000/rs6000.c:16366 +#: config/rs6000/rs6000.c:16361 #, gcc-internal-format, gfc-internal-format msgid "" "internal error: builtin function %s, argument %d had unexpected argument " "type %s" msgstr "" -#: config/rs6000/rs6000.c:24241 +#: config/rs6000/rs6000.c:24249 #, gcc-internal-format msgid "stack frame too large" msgstr "" -#: config/rs6000/rs6000.c:27624 +#: config/rs6000/rs6000.c:27643 #, gcc-internal-format msgid "-fsplit-stack uses register r29" msgstr "" -#: config/rs6000/rs6000.c:27632 +#: config/rs6000/rs6000.c:27651 #, gcc-internal-format msgid "Stack frame larger than 2G is not supported for -fsplit-stack" msgstr "" -#: config/rs6000/rs6000.c:28630 +#: config/rs6000/rs6000.c:28649 #, gcc-internal-format msgid "no profiling of 64-bit code for this ABI" msgstr "" -#: config/rs6000/rs6000.c:30712 +#: config/rs6000/rs6000.c:30731 #, gcc-internal-format msgid "" "You cannot take the address of a nested function if you use the -mno-" "pointers-to-nested-functions option." msgstr "" -#: config/rs6000/rs6000.c:30794 +#: config/rs6000/rs6000.c:30813 #, gcc-internal-format msgid "use of %<long double%> in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.c:30796 +#: config/rs6000/rs6000.c:30815 #, gcc-internal-format msgid "use of boolean types in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.c:30798 +#: config/rs6000/rs6000.c:30817 #, gcc-internal-format msgid "use of %<complex%> in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.c:30800 +#: config/rs6000/rs6000.c:30819 #, gcc-internal-format msgid "use of decimal floating point types in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.c:30806 +#: config/rs6000/rs6000.c:30825 #, gcc-internal-format msgid "" "use of %<long%> in AltiVec types is invalid for 64-bit code without -mvsx" msgstr "" -#: config/rs6000/rs6000.c:30809 +#: config/rs6000/rs6000.c:30828 #, gcc-internal-format msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>" msgstr "" -#: config/rs6000/rs6000.c:30814 +#: config/rs6000/rs6000.c:30833 #, gcc-internal-format msgid "use of %<long long%> in AltiVec types is invalid without -mvsx" msgstr "" -#: config/rs6000/rs6000.c:30817 +#: config/rs6000/rs6000.c:30836 #, gcc-internal-format msgid "use of %<double%> in AltiVec types is invalid without -mvsx" msgstr "" -#: config/rs6000/rs6000.c:34323 +#: config/rs6000/rs6000.c:34344 #, gcc-internal-format, gfc-internal-format msgid "emitting microcode insn %s\t[%s] #%d" msgstr "" -#: config/rs6000/rs6000.c:34327 +#: config/rs6000/rs6000.c:34348 #, gcc-internal-format, gfc-internal-format msgid "emitting conditional microcode insn %s\t[%s] #%d" msgstr "" -#: config/rs6000/rs6000.c:34627 +#: config/rs6000/rs6000.c:34648 #, gcc-internal-format, gfc-internal-format msgid "invalid cpu \"%s\" for %s\"%s\"%s" msgstr "" -#: config/rs6000/rs6000.c:34630 +#: config/rs6000/rs6000.c:34651 #, gcc-internal-format, gfc-internal-format msgid "%s\"%s\"%s is not allowed" msgstr "" -#: config/rs6000/rs6000.c:34632 +#: config/rs6000/rs6000.c:34653 #, gcc-internal-format, gfc-internal-format msgid "%s\"%s\"%s is invalid" msgstr "" @@ -30211,71 +30305,71 @@ msgstr "" msgid "constant argument %d for builtin %qF is out of range for target type" msgstr "" -#: config/s390/s390.c:732 +#: config/s390/s390.c:754 #, gcc-internal-format msgid "constant argument %d for builtin %qF is out of range (0.." msgstr "" -#: config/s390/s390.c:749 +#: config/s390/s390.c:771 #, gcc-internal-format msgid "constant argument %d for builtin %qF is out of range (" msgstr "" -#: config/s390/s390.c:800 +#: config/s390/s390.c:822 #, gcc-internal-format msgid "" "Builtin %qF is not supported without -mhtm (default with -march=zEC12 and " "higher)." msgstr "" -#: config/s390/s390.c:806 +#: config/s390/s390.c:828 #, gcc-internal-format msgid "" "Builtin %qF is not supported without -mvx (default with -march=z13 and " "higher)." msgstr "" -#: config/s390/s390.c:826 +#: config/s390/s390.c:848 #, gcc-internal-format msgid "Unresolved overloaded builtin" msgstr "" -#: config/s390/s390.c:833 config/tilegx/tilegx.c:3543 +#: config/s390/s390.c:855 config/tilegx/tilegx.c:3543 #: config/tilepro/tilepro.c:3110 #, gcc-internal-format msgid "bad builtin icode" msgstr "" -#: config/s390/s390.c:869 +#: config/s390/s390.c:891 #, gcc-internal-format msgid "constant value required for builtin %qF argument %d" msgstr "" -#: config/s390/s390.c:946 +#: config/s390/s390.c:968 #, gcc-internal-format msgid "Invalid argument %d for builtin %qF" msgstr "" -#: config/s390/s390.c:1047 +#: config/s390/s390.c:1069 #, gcc-internal-format msgid "" "requested %qE attribute is not a comma separated pair of non-negative " "integer constants or too large (max. %d)" msgstr "" -#: config/s390/s390.c:9455 +#: config/s390/s390.c:9641 #, gcc-internal-format msgid "total size of local variables exceeds architecture limit" msgstr "" -#: config/s390/s390.c:10552 +#: config/s390/s390.c:10741 #, 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 "" -#: config/s390/s390.c:10568 +#: config/s390/s390.c:10757 #, gcc-internal-format msgid "" "frame size of function %qs is %wd bytes which is more than half the stack " @@ -30283,100 +30377,105 @@ msgid "" "function." msgstr "" -#: config/s390/s390.c:10596 +#: config/s390/s390.c:10785 #, gcc-internal-format msgid "frame size of %qs is %wd bytes" msgstr "" -#: config/s390/s390.c:10600 +#: config/s390/s390.c:10789 #, gcc-internal-format msgid "%qs uses dynamic stack allocation" msgstr "" -#: config/s390/s390.c:13657 +#: config/s390/s390.c:11167 +#, gcc-internal-format +msgid "CPUs older than z900 are not supported for -fsplit-stack" +msgstr "" + +#: config/s390/s390.c:14157 #, gcc-internal-format, gfc-internal-format msgid "" "%sarch=%s%s is deprecated and will be removed in future releases; use at " "least %sarch=z900%s" msgstr "" -#: config/s390/s390.c:13669 +#: config/s390/s390.c:14169 #, gcc-internal-format, gfc-internal-format msgid "" "%stune=%s%s is deprecated and will be removed in future releases; use at " "least %stune=z900%s" msgstr "" -#: config/s390/s390.c:13681 +#: config/s390/s390.c:14181 #, gcc-internal-format, gfc-internal-format msgid "z/Architecture mode not supported on %s" msgstr "" -#: config/s390/s390.c:13684 +#: config/s390/s390.c:14184 #, gcc-internal-format msgid "64-bit ABI not supported in ESA/390 mode" msgstr "" -#: config/s390/s390.c:13701 +#: config/s390/s390.c:14201 #, gcc-internal-format, gfc-internal-format msgid "hardware vector support not available on %s" msgstr "" -#: config/s390/s390.c:13704 +#: config/s390/s390.c:14204 #, gcc-internal-format msgid "hardware vector support not available with -msoft-float" msgstr "" -#: config/s390/s390.c:13732 +#: config/s390/s390.c:14232 #, gcc-internal-format, gfc-internal-format msgid "hardware decimal floating point instructions not available on %s" msgstr "" -#: config/s390/s390.c:13736 +#: config/s390/s390.c:14236 #, gcc-internal-format msgid "" "hardware decimal floating point instructions not available in ESA/390 mode" msgstr "" -#: config/s390/s390.c:13748 +#: config/s390/s390.c:14248 #, gcc-internal-format msgid "-mhard-dfp can%'t be used in conjunction with -msoft-float" msgstr "" -#: config/s390/s390.c:13756 +#: config/s390/s390.c:14256 #, gcc-internal-format msgid "" "-mbackchain -mpacked-stack -mhard-float are not supported in combination" msgstr "" -#: config/s390/s390.c:13762 +#: config/s390/s390.c:14262 #, gcc-internal-format msgid "stack size must be greater than the stack guard value" msgstr "" -#: config/s390/s390.c:13764 +#: config/s390/s390.c:14264 #, gcc-internal-format msgid "stack size must not be greater than 64k" msgstr "" -#: config/s390/s390.c:13767 +#: config/s390/s390.c:14267 #, gcc-internal-format msgid "-mstack-guard implies use of -mstack-size" msgstr "" #. argument is not a plain number -#: config/s390/s390.c:13861 +#: config/s390/s390.c:14361 #, gcc-internal-format msgid "arguments to %qs should be non-negative integers" msgstr "" -#: config/s390/s390.c:13868 +#: config/s390/s390.c:14368 #, gcc-internal-format msgid "argument to %qs is too large (max. %d)" msgstr "" #. Value is not allowed for the target attribute. -#: config/s390/s390.c:14076 +#: config/s390/s390.c:14576 #, gcc-internal-format msgid "Value %qs is not supported by attribute %<target%>" msgstr "" @@ -30393,53 +30492,53 @@ msgid "" "outgoing-args for correctness" msgstr "" -#: config/sh/sh.c:8499 +#: config/sh/sh.c:8501 #, gcc-internal-format msgid "__builtin_saveregs not supported by this subtarget" msgstr "" -#: config/sh/sh.c:9702 +#: config/sh/sh.c:9704 #, gcc-internal-format msgid "%qE attribute only applies to interrupt functions" msgstr "" -#: config/sh/sh.c:9772 +#: config/sh/sh.c:9774 #, gcc-internal-format msgid "%qE attribute is supported only for SH2A" msgstr "" -#: config/sh/sh.c:9802 +#: config/sh/sh.c:9804 #, gcc-internal-format msgid "attribute interrupt_handler is not compatible with -m5-compact" msgstr "" -#: config/sh/sh.c:9819 +#: config/sh/sh.c:9821 #, gcc-internal-format msgid "%qE attribute only applies to SH2A" msgstr "" -#: config/sh/sh.c:9841 +#: config/sh/sh.c:9843 #, gcc-internal-format msgid "%qE attribute argument should be between 0 to 255" msgstr "" #. The argument must be a constant string. -#: config/sh/sh.c:9914 +#: config/sh/sh.c:9916 #, gcc-internal-format msgid "%qE attribute argument not a string constant" msgstr "" -#: config/sh/sh.c:12762 +#: config/sh/sh.c:12764 #, gcc-internal-format msgid "r0 needs to be available as a call-clobbered register" msgstr "" -#: config/sh/sh.c:12783 +#: config/sh/sh.c:12785 #, gcc-internal-format msgid "need a second call-clobbered general purpose register" msgstr "" -#: config/sh/sh.c:12791 +#: config/sh/sh.c:12793 #, gcc-internal-format msgid "need a call-clobbered target register" msgstr "" @@ -30456,27 +30555,27 @@ msgstr "" msgid "-mrelax is only supported for RTP PIC" msgstr "" -#: config/sparc/sparc.c:1343 +#: config/sparc/sparc.c:1342 #, gcc-internal-format, gfc-internal-format msgid "%s is not supported by this configuration" msgstr "" -#: config/sparc/sparc.c:1350 +#: config/sparc/sparc.c:1349 #, gcc-internal-format msgid "-mlong-double-64 not allowed with -m64" msgstr "" -#: config/sparc/sparc.c:1370 +#: config/sparc/sparc.c:1369 #, gcc-internal-format, gfc-internal-format msgid "bad value (%s) for -mcmodel= switch" msgstr "" -#: config/sparc/sparc.c:1375 +#: config/sparc/sparc.c:1374 #, gcc-internal-format msgid "-mcmodel= is not supported on 32 bit systems" msgstr "" -#: config/sparc/sparc.c:1382 +#: config/sparc/sparc.c:1381 #, gcc-internal-format msgid "-fcall-saved-REG is not supported for out registers" msgstr "" @@ -30681,7 +30780,7 @@ msgstr "" msgid "too much stack space to prepare: %d" msgstr "" -#: config/visium/visium.c:648 +#: config/visium/visium.c:705 #, gcc-internal-format msgid "an interrupt handler cannot be compiled with -muser-mode" msgstr "" @@ -30812,53 +30911,53 @@ msgstr "" msgid "subprogram %q+F not marked Inline" msgstr "" -#: ada/gcc-interface/trans.c:6222 +#: ada/gcc-interface/trans.c:6241 #, gcc-internal-format msgid "out-of-bounds access may be optimized away" msgstr "" -#: ada/gcc-interface/trans.c:6224 +#: ada/gcc-interface/trans.c:6243 #, gcc-internal-format msgid "containing loop" msgstr "" -#: ada/gcc-interface/utils.c:3736 +#: ada/gcc-interface/utils.c:3757 #, gcc-internal-format msgid "invalid element type for attribute %qs" msgstr "" -#: ada/gcc-interface/utils.c:3760 +#: ada/gcc-interface/utils.c:3781 #, gcc-internal-format msgid "number of components of vector not a power of two" msgstr "" -#: ada/gcc-interface/utils.c:5774 ada/gcc-interface/utils.c:5948 -#: ada/gcc-interface/utils.c:6010 +#: ada/gcc-interface/utils.c:5795 ada/gcc-interface/utils.c:5969 +#: ada/gcc-interface/utils.c:6031 #, gcc-internal-format msgid "%qs attribute ignored" msgstr "" -#: ada/gcc-interface/utils.c:5891 +#: ada/gcc-interface/utils.c:5912 #, gcc-internal-format msgid "%qs attribute requires prototypes with named arguments" msgstr "" -#: ada/gcc-interface/utils.c:5900 +#: ada/gcc-interface/utils.c:5921 #, gcc-internal-format msgid "%qs attribute only applies to variadic functions" msgstr "" -#: ada/gcc-interface/utils.c:5970 +#: ada/gcc-interface/utils.c:5991 #, gcc-internal-format msgid "%qE attribute has no effect" msgstr "" -#: ada/gcc-interface/utils.c:6094 +#: ada/gcc-interface/utils.c:6115 #, gcc-internal-format msgid "attribute %qs applies to array types only" msgstr "" -#: c/c-array-notation.c:217 c/c-array-notation.c:246 cp/call.c:7780 +#: c/c-array-notation.c:217 c/c-array-notation.c:246 cp/call.c:7795 #: cp/cp-array-notation.c:250 #, gcc-internal-format msgid "Invalid builtin arguments" @@ -30917,8 +31016,8 @@ msgstr "" #. an unprototyped function, it is compile-time undefined; #. making it a constraint in that case was rejected in #. DR#252. -#: c/c-convert.c:98 c/c-typeck.c:2114 c/c-typeck.c:6117 c/c-typeck.c:11678 -#: cp/typeck.c:1956 cp/typeck.c:7580 cp/typeck.c:8307 +#: c/c-convert.c:98 c/c-typeck.c:2116 c/c-typeck.c:6131 c/c-typeck.c:11681 +#: cp/typeck.c:1956 cp/typeck.c:7560 cp/typeck.c:8287 #, gcc-internal-format msgid "void value not ignored as it ought to be" msgstr "" @@ -30948,7 +31047,7 @@ msgstr "" msgid "GCC supports only %u nested scopes" msgstr "" -#: c/c-decl.c:1195 cp/decl.c:363 +#: c/c-decl.c:1195 cp/decl.c:358 #, gcc-internal-format msgid "label %q+D used but not defined" msgstr "" @@ -30968,7 +31067,7 @@ msgstr "" msgid "unused variable %q+D" msgstr "" -#: c/c-decl.c:1275 cp/decl.c:642 +#: c/c-decl.c:1275 cp/decl.c:637 #, gcc-internal-format msgid "variable %qD set but not used" msgstr "" @@ -30978,7 +31077,7 @@ msgstr "" msgid "type of array %q+D completed incompatibly with implicit initialization" msgstr "" -#: c/c-decl.c:1559 c/c-decl.c:6362 c/c-decl.c:7231 c/c-decl.c:7970 +#: c/c-decl.c:1559 c/c-decl.c:6391 c/c-decl.c:7263 c/c-decl.c:8002 #, gcc-internal-format msgid "originally defined here" msgstr "" @@ -31047,7 +31146,7 @@ msgstr "" msgid "built-in function %q+D declared as non-function" msgstr "" -#: c/c-decl.c:1838 c/c-decl.c:2008 c/c-decl.c:2787 +#: c/c-decl.c:1838 c/c-decl.c:2008 c/c-decl.c:2816 #, gcc-internal-format msgid "declaration of %q+D shadows a built-in function" msgstr "" @@ -31187,220 +31286,220 @@ msgstr "" msgid "redundant redeclaration of %q+D" msgstr "" -#: c/c-decl.c:2762 +#: c/c-decl.c:2791 #, gcc-internal-format msgid "declaration of %q+D shadows previous non-variable" msgstr "" -#: c/c-decl.c:2768 +#: c/c-decl.c:2797 #, gcc-internal-format msgid "declaration of %q+D shadows a parameter" msgstr "" -#: c/c-decl.c:2780 cp/name-lookup.c:1270 +#: c/c-decl.c:2809 cp/name-lookup.c:1270 #, gcc-internal-format msgid "declaration of %qD shadows a global declaration" msgstr "" -#: c/c-decl.c:2792 +#: c/c-decl.c:2821 #, gcc-internal-format msgid "declaration of %q+D shadows a previous local" msgstr "" -#: c/c-decl.c:2797 cp/name-lookup.c:1213 cp/name-lookup.c:1255 +#: c/c-decl.c:2826 cp/name-lookup.c:1213 cp/name-lookup.c:1255 #: cp/name-lookup.c:1273 #, gcc-internal-format msgid "shadowed declaration is here" msgstr "" -#: c/c-decl.c:2923 +#: c/c-decl.c:2952 #, gcc-internal-format msgid "nested extern declaration of %qD" msgstr "" -#: c/c-decl.c:3098 c/c-decl.c:3101 +#: c/c-decl.c:3127 c/c-decl.c:3130 #, gcc-internal-format msgid "implicit declaration of function %qE" msgstr "" -#: c/c-decl.c:3347 +#: c/c-decl.c:3376 #, gcc-internal-format msgid "incompatible implicit declaration of built-in function %qD" msgstr "" -#: c/c-decl.c:3354 +#: c/c-decl.c:3383 #, gcc-internal-format msgid "include %qs or provide a declaration of %qD" msgstr "" -#: c/c-decl.c:3363 +#: c/c-decl.c:3392 #, gcc-internal-format msgid "incompatible implicit declaration of function %qD" msgstr "" -#: c/c-decl.c:3417 +#: c/c-decl.c:3446 #, gcc-internal-format msgid "%qE undeclared here (not in a function)" msgstr "" -#: c/c-decl.c:3423 +#: c/c-decl.c:3452 #, gcc-internal-format msgid "%qE undeclared (first use in this function)" msgstr "" -#: c/c-decl.c:3426 +#: c/c-decl.c:3455 #, gcc-internal-format msgid "" "each undeclared identifier is reported only once for each function it " "appears in" msgstr "" -#: c/c-decl.c:3474 cp/decl.c:2916 +#: c/c-decl.c:3503 cp/decl.c:2923 #, gcc-internal-format msgid "label %qE referenced outside of any function" msgstr "" -#: c/c-decl.c:3510 +#: c/c-decl.c:3539 #, gcc-internal-format msgid "jump into scope of identifier with variably modified type" msgstr "" -#: c/c-decl.c:3513 +#: c/c-decl.c:3542 #, gcc-internal-format msgid "jump skips variable initialization" msgstr "" -#: c/c-decl.c:3514 c/c-decl.c:3569 c/c-decl.c:3658 +#: c/c-decl.c:3543 c/c-decl.c:3598 c/c-decl.c:3687 #, gcc-internal-format msgid "label %qD defined here" msgstr "" -#: c/c-decl.c:3515 c/c-decl.c:3786 c/c-typeck.c:7867 cp/class.c:1419 -#: cp/class.c:3254 cp/decl.c:3752 cp/friend.c:328 cp/friend.c:337 -#: cp/parser.c:3146 cp/parser.c:3225 cp/parser.c:3253 cp/parser.c:5992 +#: c/c-decl.c:3544 c/c-decl.c:3815 c/c-typeck.c:7878 cp/class.c:1437 +#: cp/class.c:3302 cp/decl.c:3759 cp/friend.c:340 cp/friend.c:349 +#: cp/parser.c:3146 cp/parser.c:3227 cp/parser.c:3255 cp/parser.c:5994 #, gcc-internal-format msgid "%qD declared here" msgstr "" -#: c/c-decl.c:3568 c/c-decl.c:3657 +#: c/c-decl.c:3597 c/c-decl.c:3686 #, gcc-internal-format msgid "jump into statement expression" msgstr "" -#: c/c-decl.c:3590 +#: c/c-decl.c:3619 #, gcc-internal-format msgid "duplicate label declaration %qE" msgstr "" -#: c/c-decl.c:3688 cp/decl.c:3294 +#: c/c-decl.c:3717 cp/decl.c:3301 #, gcc-internal-format msgid "duplicate label %qD" msgstr "" -#: c/c-decl.c:3719 +#: c/c-decl.c:3748 #, gcc-internal-format msgid "" "traditional C lacks a separate namespace for labels, identifier %qE conflicts" msgstr "" -#: c/c-decl.c:3784 +#: c/c-decl.c:3813 #, gcc-internal-format msgid "switch jumps over variable initialization" msgstr "" -#: c/c-decl.c:3785 c/c-decl.c:3796 +#: c/c-decl.c:3814 c/c-decl.c:3825 #, gcc-internal-format msgid "switch starts here" msgstr "" -#: c/c-decl.c:3795 +#: c/c-decl.c:3824 #, gcc-internal-format msgid "switch jumps into statement expression" msgstr "" -#: c/c-decl.c:3878 +#: c/c-decl.c:3907 #, gcc-internal-format msgid "%qE defined as wrong kind of tag" msgstr "" -#: c/c-decl.c:4107 +#: c/c-decl.c:4136 #, gcc-internal-format msgid "unnamed struct/union that defines no instances" msgstr "" -#: c/c-decl.c:4117 +#: c/c-decl.c:4146 #, gcc-internal-format msgid "empty declaration with storage class specifier does not redeclare tag" msgstr "" -#: c/c-decl.c:4132 +#: c/c-decl.c:4161 #, gcc-internal-format msgid "empty declaration with type qualifier does not redeclare tag" msgstr "" -#: c/c-decl.c:4143 +#: c/c-decl.c:4172 #, gcc-internal-format msgid "empty declaration with %<_Alignas%> does not redeclare tag" msgstr "" -#: c/c-decl.c:4165 c/c-decl.c:4173 +#: c/c-decl.c:4194 c/c-decl.c:4202 #, gcc-internal-format msgid "useless type name in empty declaration" msgstr "" -#: c/c-decl.c:4181 +#: c/c-decl.c:4210 #, gcc-internal-format msgid "%<inline%> in empty declaration" msgstr "" -#: c/c-decl.c:4187 +#: c/c-decl.c:4216 #, gcc-internal-format msgid "%<_Noreturn%> in empty declaration" msgstr "" -#: c/c-decl.c:4193 +#: c/c-decl.c:4222 #, gcc-internal-format msgid "%<auto%> in file-scope empty declaration" msgstr "" -#: c/c-decl.c:4199 +#: c/c-decl.c:4228 #, gcc-internal-format msgid "%<register%> in file-scope empty declaration" msgstr "" -#: c/c-decl.c:4206 +#: c/c-decl.c:4235 #, gcc-internal-format msgid "useless storage class specifier in empty declaration" msgstr "" -#: c/c-decl.c:4212 +#: c/c-decl.c:4241 #, gcc-internal-format msgid "useless %qs in empty declaration" msgstr "" -#: c/c-decl.c:4225 +#: c/c-decl.c:4254 #, gcc-internal-format msgid "useless type qualifier in empty declaration" msgstr "" -#: c/c-decl.c:4232 +#: c/c-decl.c:4261 #, gcc-internal-format msgid "useless %<_Alignas%> in empty declaration" msgstr "" -#: c/c-decl.c:4239 c/c-parser.c:1702 +#: c/c-decl.c:4268 c/c-parser.c:1700 #, gcc-internal-format msgid "empty declaration" msgstr "" -#: c/c-decl.c:4310 +#: c/c-decl.c:4339 #, gcc-internal-format msgid "" "ISO C90 does not support %<static%> or type qualifiers in parameter array " "declarators" msgstr "" -#: c/c-decl.c:4314 +#: c/c-decl.c:4343 #, gcc-internal-format msgid "ISO C90 does not support %<[*]%> array declarators" msgstr "" @@ -31408,33 +31507,33 @@ msgstr "" #. C99 6.7.5.2p4 #. A function definition isn't function prototype scope C99 6.2.1p4. #. C99 6.7.5.2p4 -#: c/c-decl.c:4320 c/c-decl.c:6802 +#: c/c-decl.c:4349 c/c-decl.c:6831 #, gcc-internal-format msgid "%<[*]%> not allowed in other than function prototype scope" msgstr "" -#: c/c-decl.c:4407 cp/decl2.c:1463 +#: c/c-decl.c:4436 cp/decl2.c:1463 #, gcc-internal-format msgid "%q+D in declare target directive does not have mappable type" msgstr "" -#: c/c-decl.c:4456 +#: c/c-decl.c:4485 #, gcc-internal-format msgid "%q+D is usually a function" msgstr "" -#: c/c-decl.c:4465 +#: c/c-decl.c:4494 #, gcc-internal-format msgid "typedef %qD is initialized (use __typeof__ instead)" msgstr "" -#: c/c-decl.c:4470 +#: c/c-decl.c:4499 #, gcc-internal-format msgid "function %qD is initialized like a variable" msgstr "" #. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE. -#: c/c-decl.c:4476 +#: c/c-decl.c:4505 #, gcc-internal-format msgid "parameter %qD is initialized" msgstr "" @@ -31443,257 +31542,257 @@ msgstr "" #. of VLAs themselves count as VLAs, it does not make #. sense to permit them to be initialized given that #. ordinary VLAs may not be initialized. -#: c/c-decl.c:4495 c/c-decl.c:4510 c/c-typeck.c:7171 +#: c/c-decl.c:4524 c/c-decl.c:4539 c/c-typeck.c:7185 #, gcc-internal-format msgid "variable-sized object may not be initialized" msgstr "" -#: c/c-decl.c:4501 +#: c/c-decl.c:4530 #, gcc-internal-format msgid "variable %qD has initializer but incomplete type" msgstr "" -#: c/c-decl.c:4590 +#: c/c-decl.c:4619 #, gcc-internal-format msgid "inline function %q+D given attribute noinline" msgstr "" -#: c/c-decl.c:4640 +#: c/c-decl.c:4669 #, gcc-internal-format msgid "uninitialized const member in %qT is invalid in C++" msgstr "" -#: c/c-decl.c:4642 +#: c/c-decl.c:4671 #, gcc-internal-format msgid "%qD should be initialized" msgstr "" -#: c/c-decl.c:4718 +#: c/c-decl.c:4747 #, gcc-internal-format msgid "initializer fails to determine size of %q+D" msgstr "" -#: c/c-decl.c:4723 +#: c/c-decl.c:4752 #, gcc-internal-format msgid "array size missing in %q+D" msgstr "" -#: c/c-decl.c:4735 +#: c/c-decl.c:4764 #, gcc-internal-format msgid "zero or negative size array %q+D" msgstr "" -#: c/c-decl.c:4806 +#: c/c-decl.c:4835 #, gcc-internal-format msgid "storage size of %q+D isn%'t constant" msgstr "" -#: c/c-decl.c:4856 +#: c/c-decl.c:4885 #, gcc-internal-format msgid "ignoring asm-specifier for non-static local variable %q+D" msgstr "" -#: c/c-decl.c:4886 +#: c/c-decl.c:4915 #, gcc-internal-format msgid "cannot put object with volatile field into register" msgstr "" -#: c/c-decl.c:4972 +#: c/c-decl.c:5001 #, gcc-internal-format msgid "uninitialized const %qD is invalid in C++" msgstr "" -#: c/c-decl.c:5029 +#: c/c-decl.c:5058 #, gcc-internal-format msgid "ISO C forbids forward parameter declarations" msgstr "" -#: c/c-decl.c:5126 +#: c/c-decl.c:5155 #, gcc-internal-format msgid "defining a type in a compound literal is invalid in C++" msgstr "" -#: c/c-decl.c:5180 c/c-decl.c:5195 +#: c/c-decl.c:5209 c/c-decl.c:5224 #, gcc-internal-format msgid "bit-field %qs width not an integer constant" msgstr "" -#: c/c-decl.c:5190 +#: c/c-decl.c:5219 #, gcc-internal-format msgid "bit-field %qs width not an integer constant expression" msgstr "" -#: c/c-decl.c:5201 +#: c/c-decl.c:5230 #, gcc-internal-format msgid "negative width in bit-field %qs" msgstr "" -#: c/c-decl.c:5206 +#: c/c-decl.c:5235 #, gcc-internal-format msgid "zero width for bit-field %qs" msgstr "" -#: c/c-decl.c:5216 +#: c/c-decl.c:5245 #, gcc-internal-format msgid "bit-field %qs has invalid type" msgstr "" -#: c/c-decl.c:5226 +#: c/c-decl.c:5255 #, gcc-internal-format msgid "type of bit-field %qs is a GCC extension" msgstr "" -#: c/c-decl.c:5232 +#: c/c-decl.c:5261 #, gcc-internal-format msgid "width of %qs exceeds its type" msgstr "" -#: c/c-decl.c:5245 +#: c/c-decl.c:5274 #, gcc-internal-format msgid "%qs is narrower than values of its type" msgstr "" -#: c/c-decl.c:5260 +#: c/c-decl.c:5289 #, gcc-internal-format msgid "ISO C90 forbids array %qE whose size can%'t be evaluated" msgstr "" -#: c/c-decl.c:5263 +#: c/c-decl.c:5292 #, gcc-internal-format msgid "ISO C90 forbids array whose size can%'t be evaluated" msgstr "" -#: c/c-decl.c:5270 +#: c/c-decl.c:5299 #, gcc-internal-format msgid "ISO C90 forbids variable length array %qE" msgstr "" -#: c/c-decl.c:5272 +#: c/c-decl.c:5301 #, gcc-internal-format msgid "ISO C90 forbids variable length array" msgstr "" -#: c/c-decl.c:5451 c/c-decl.c:5814 c/c-decl.c:5824 +#: c/c-decl.c:5480 c/c-decl.c:5843 c/c-decl.c:5853 #, gcc-internal-format msgid "variably modified %qE at file scope" msgstr "" -#: c/c-decl.c:5453 +#: c/c-decl.c:5482 #, gcc-internal-format msgid "variably modified field at file scope" msgstr "" -#: c/c-decl.c:5473 +#: c/c-decl.c:5502 #, gcc-internal-format msgid "type defaults to %<int%> in declaration of %qE" msgstr "" -#: c/c-decl.c:5477 +#: c/c-decl.c:5506 #, gcc-internal-format msgid "type defaults to %<int%> in type name" msgstr "" -#: c/c-decl.c:5509 +#: c/c-decl.c:5538 #, gcc-internal-format msgid "duplicate %<const%>" msgstr "" -#: c/c-decl.c:5511 +#: c/c-decl.c:5540 #, gcc-internal-format msgid "duplicate %<restrict%>" msgstr "" -#: c/c-decl.c:5513 +#: c/c-decl.c:5542 #, gcc-internal-format msgid "duplicate %<volatile%>" msgstr "" -#: c/c-decl.c:5515 +#: c/c-decl.c:5544 #, gcc-internal-format msgid "duplicate %<_Atomic%>" msgstr "" -#: c/c-decl.c:5518 +#: c/c-decl.c:5547 #, gcc-internal-format, gfc-internal-format msgid "conflicting named address spaces (%s vs %s)" msgstr "" -#: c/c-decl.c:5541 c/c-parser.c:2585 +#: c/c-decl.c:5570 c/c-parser.c:2583 #, gcc-internal-format msgid "%<_Atomic%>-qualified array type" msgstr "" -#: c/c-decl.c:5555 +#: c/c-decl.c:5584 #, gcc-internal-format msgid "function definition declared %<auto%>" msgstr "" -#: c/c-decl.c:5557 +#: c/c-decl.c:5586 #, gcc-internal-format msgid "function definition declared %<register%>" msgstr "" -#: c/c-decl.c:5559 +#: c/c-decl.c:5588 #, gcc-internal-format msgid "function definition declared %<typedef%>" msgstr "" -#: c/c-decl.c:5561 +#: c/c-decl.c:5590 #, gcc-internal-format msgid "function definition declared %qs" msgstr "" -#: c/c-decl.c:5579 +#: c/c-decl.c:5608 #, gcc-internal-format msgid "storage class specified for structure field %qE" msgstr "" -#: c/c-decl.c:5582 +#: c/c-decl.c:5611 #, gcc-internal-format msgid "storage class specified for structure field" msgstr "" -#: c/c-decl.c:5586 +#: c/c-decl.c:5615 #, gcc-internal-format msgid "storage class specified for parameter %qE" msgstr "" -#: c/c-decl.c:5589 +#: c/c-decl.c:5618 #, gcc-internal-format msgid "storage class specified for unnamed parameter" msgstr "" -#: c/c-decl.c:5592 cp/decl.c:9888 +#: c/c-decl.c:5621 cp/decl.c:9911 #, gcc-internal-format msgid "storage class specified for typename" msgstr "" -#: c/c-decl.c:5609 +#: c/c-decl.c:5638 #, gcc-internal-format msgid "%qE initialized and declared %<extern%>" msgstr "" -#: c/c-decl.c:5613 +#: c/c-decl.c:5642 #, gcc-internal-format msgid "%qE has both %<extern%> and initializer" msgstr "" -#: c/c-decl.c:5618 +#: c/c-decl.c:5647 #, gcc-internal-format msgid "file-scope declaration of %qE specifies %<auto%>" msgstr "" -#: c/c-decl.c:5622 +#: c/c-decl.c:5651 #, gcc-internal-format msgid "file-scope declaration of %qE specifies %<register%>" msgstr "" -#: c/c-decl.c:5627 +#: c/c-decl.c:5656 #, gcc-internal-format msgid "nested function %qE declared %<extern%>" msgstr "" -#: c/c-decl.c:5630 +#: c/c-decl.c:5659 #, gcc-internal-format msgid "function-scope %qE implicitly auto and declared %qs" msgstr "" @@ -31701,699 +31800,699 @@ msgstr "" #. Only the innermost declarator (making a parameter be of #. array type which is converted to pointer type) #. may have static or type qualifiers. -#: c/c-decl.c:5677 c/c-decl.c:6035 +#: c/c-decl.c:5706 c/c-decl.c:6064 #, gcc-internal-format msgid "static or type qualifiers in non-parameter array declarator" msgstr "" -#: c/c-decl.c:5725 +#: c/c-decl.c:5754 #, gcc-internal-format msgid "declaration of %qE as array of voids" msgstr "" -#: c/c-decl.c:5727 +#: c/c-decl.c:5756 #, gcc-internal-format msgid "declaration of type name as array of voids" msgstr "" -#: c/c-decl.c:5734 +#: c/c-decl.c:5763 #, gcc-internal-format msgid "declaration of %qE as array of functions" msgstr "" -#: c/c-decl.c:5737 +#: c/c-decl.c:5766 #, gcc-internal-format msgid "declaration of type name as array of functions" msgstr "" -#: c/c-decl.c:5745 c/c-decl.c:7725 +#: c/c-decl.c:5774 c/c-decl.c:7757 #, gcc-internal-format msgid "invalid use of structure with flexible array member" msgstr "" -#: c/c-decl.c:5771 +#: c/c-decl.c:5800 #, gcc-internal-format msgid "size of array %qE has non-integer type" msgstr "" -#: c/c-decl.c:5775 +#: c/c-decl.c:5804 #, gcc-internal-format msgid "size of unnamed array has non-integer type" msgstr "" -#: c/c-decl.c:5785 +#: c/c-decl.c:5814 #, gcc-internal-format msgid "ISO C forbids zero-size array %qE" msgstr "" -#: c/c-decl.c:5788 +#: c/c-decl.c:5817 #, gcc-internal-format msgid "ISO C forbids zero-size array" msgstr "" -#: c/c-decl.c:5797 +#: c/c-decl.c:5826 #, gcc-internal-format msgid "size of array %qE is negative" msgstr "" -#: c/c-decl.c:5799 +#: c/c-decl.c:5828 #, gcc-internal-format msgid "size of unnamed array is negative" msgstr "" -#: c/c-decl.c:5923 c/c-decl.c:6532 +#: c/c-decl.c:5952 c/c-decl.c:6561 #, gcc-internal-format msgid "ISO C90 does not support flexible array members" msgstr "" #. C99 6.7.5.2p4 -#: c/c-decl.c:5945 +#: c/c-decl.c:5974 #, gcc-internal-format msgid "%<[*]%> not in a declaration" msgstr "" -#: c/c-decl.c:5958 +#: c/c-decl.c:5987 #, gcc-internal-format msgid "array type has incomplete element type %qT" msgstr "" -#: c/c-decl.c:5964 +#: c/c-decl.c:5993 #, gcc-internal-format msgid "" "declaration of %qE as multidimensional array must have bounds for all " "dimensions except the first" msgstr "" -#: c/c-decl.c:5968 +#: c/c-decl.c:5997 #, gcc-internal-format msgid "" "declaration of multidimensional array must have bounds for all dimensions " "except the first" msgstr "" -#: c/c-decl.c:6071 +#: c/c-decl.c:6100 #, gcc-internal-format msgid "%qE declared as function returning a function" msgstr "" -#: c/c-decl.c:6074 +#: c/c-decl.c:6103 #, gcc-internal-format msgid "type name declared as function returning a function" msgstr "" -#: c/c-decl.c:6081 +#: c/c-decl.c:6110 #, gcc-internal-format msgid "%qE declared as function returning an array" msgstr "" -#: c/c-decl.c:6084 +#: c/c-decl.c:6113 #, gcc-internal-format msgid "type name declared as function returning an array" msgstr "" -#: c/c-decl.c:6112 +#: c/c-decl.c:6141 #, gcc-internal-format msgid "function definition has qualified void return type" msgstr "" -#: c/c-decl.c:6115 cp/decl.c:10018 +#: c/c-decl.c:6144 cp/decl.c:10041 #, gcc-internal-format msgid "type qualifiers ignored on function return type" msgstr "" -#: c/c-decl.c:6144 c/c-decl.c:6328 c/c-decl.c:6382 c/c-decl.c:6466 -#: c/c-decl.c:6582 c/c-parser.c:2587 +#: c/c-decl.c:6173 c/c-decl.c:6357 c/c-decl.c:6411 c/c-decl.c:6495 +#: c/c-decl.c:6611 c/c-parser.c:2585 #, gcc-internal-format msgid "%<_Atomic%>-qualified function type" msgstr "" -#: c/c-decl.c:6150 c/c-decl.c:6334 c/c-decl.c:6471 c/c-decl.c:6587 +#: c/c-decl.c:6179 c/c-decl.c:6363 c/c-decl.c:6500 c/c-decl.c:6616 #, gcc-internal-format msgid "ISO C forbids qualified function types" msgstr "" -#: c/c-decl.c:6219 +#: c/c-decl.c:6248 #, gcc-internal-format msgid "%qs combined with %<auto%> qualifier for %qE" msgstr "" -#: c/c-decl.c:6223 +#: c/c-decl.c:6252 #, gcc-internal-format msgid "%qs combined with %<register%> qualifier for %qE" msgstr "" -#: c/c-decl.c:6229 +#: c/c-decl.c:6258 #, gcc-internal-format msgid "%qs specified for auto variable %qE" msgstr "" -#: c/c-decl.c:6245 +#: c/c-decl.c:6274 #, gcc-internal-format msgid "%qs specified for parameter %qE" msgstr "" -#: c/c-decl.c:6248 +#: c/c-decl.c:6277 #, gcc-internal-format msgid "%qs specified for unnamed parameter" msgstr "" -#: c/c-decl.c:6254 +#: c/c-decl.c:6283 #, gcc-internal-format msgid "%qs specified for structure field %qE" msgstr "" -#: c/c-decl.c:6257 +#: c/c-decl.c:6286 #, gcc-internal-format msgid "%qs specified for structure field" msgstr "" -#: c/c-decl.c:6272 +#: c/c-decl.c:6301 #, gcc-internal-format msgid "bit-field %qE has atomic type" msgstr "" -#: c/c-decl.c:6274 +#: c/c-decl.c:6303 #, gcc-internal-format msgid "bit-field has atomic type" msgstr "" -#: c/c-decl.c:6283 +#: c/c-decl.c:6312 #, gcc-internal-format msgid "alignment specified for typedef %qE" msgstr "" -#: c/c-decl.c:6285 +#: c/c-decl.c:6314 #, gcc-internal-format msgid "alignment specified for %<register%> object %qE" msgstr "" -#: c/c-decl.c:6290 +#: c/c-decl.c:6319 #, gcc-internal-format msgid "alignment specified for parameter %qE" msgstr "" -#: c/c-decl.c:6292 +#: c/c-decl.c:6321 #, gcc-internal-format msgid "alignment specified for unnamed parameter" msgstr "" -#: c/c-decl.c:6297 +#: c/c-decl.c:6326 #, gcc-internal-format msgid "alignment specified for bit-field %qE" msgstr "" -#: c/c-decl.c:6299 +#: c/c-decl.c:6328 #, gcc-internal-format msgid "alignment specified for unnamed bit-field" msgstr "" -#: c/c-decl.c:6302 +#: c/c-decl.c:6331 #, gcc-internal-format msgid "alignment specified for function %qE" msgstr "" -#: c/c-decl.c:6309 +#: c/c-decl.c:6338 #, gcc-internal-format msgid "%<_Alignas%> specifiers cannot reduce alignment of %qE" msgstr "" -#: c/c-decl.c:6312 +#: c/c-decl.c:6341 #, gcc-internal-format msgid "%<_Alignas%> specifiers cannot reduce alignment of unnamed field" msgstr "" -#: c/c-decl.c:6343 +#: c/c-decl.c:6372 #, gcc-internal-format msgid "typedef %q+D declared %<inline%>" msgstr "" -#: c/c-decl.c:6345 +#: c/c-decl.c:6374 #, gcc-internal-format msgid "typedef %q+D declared %<_Noreturn%>" msgstr "" -#: c/c-decl.c:6388 +#: c/c-decl.c:6417 #, gcc-internal-format msgid "ISO C forbids const or volatile function types" msgstr "" #. C99 6.7.2.1p8 -#: c/c-decl.c:6399 +#: c/c-decl.c:6428 #, gcc-internal-format msgid "a member of a structure or union cannot have a variably modified type" msgstr "" -#: c/c-decl.c:6416 cp/decl.c:9093 +#: c/c-decl.c:6445 cp/decl.c:9116 #, gcc-internal-format msgid "variable or field %qE declared void" msgstr "" -#: c/c-decl.c:6456 +#: c/c-decl.c:6485 #, gcc-internal-format msgid "attributes in parameter array declarator ignored" msgstr "" -#: c/c-decl.c:6498 +#: c/c-decl.c:6527 #, gcc-internal-format msgid "parameter %q+D declared %<inline%>" msgstr "" -#: c/c-decl.c:6500 +#: c/c-decl.c:6529 #, gcc-internal-format msgid "parameter %q+D declared %<_Noreturn%>" msgstr "" -#: c/c-decl.c:6513 +#: c/c-decl.c:6542 #, gcc-internal-format msgid "field %qE declared as a function" msgstr "" -#: c/c-decl.c:6520 +#: c/c-decl.c:6549 #, gcc-internal-format msgid "field %qE has incomplete type" msgstr "" -#: c/c-decl.c:6522 +#: c/c-decl.c:6551 #, gcc-internal-format msgid "unnamed field has incomplete type" msgstr "" -#: c/c-decl.c:6553 c/c-decl.c:6564 c/c-decl.c:6567 +#: c/c-decl.c:6582 c/c-decl.c:6593 c/c-decl.c:6596 #, gcc-internal-format msgid "invalid storage class for function %qE" msgstr "" -#: c/c-decl.c:6624 +#: c/c-decl.c:6653 #, gcc-internal-format msgid "cannot inline function %<main%>" msgstr "" -#: c/c-decl.c:6626 +#: c/c-decl.c:6655 #, gcc-internal-format msgid "%<main%> declared %<_Noreturn%>" msgstr "" -#: c/c-decl.c:6637 +#: c/c-decl.c:6666 #, gcc-internal-format msgid "ISO C99 does not support %<_Noreturn%>" msgstr "" -#: c/c-decl.c:6640 +#: c/c-decl.c:6669 #, gcc-internal-format msgid "ISO C90 does not support %<_Noreturn%>" msgstr "" -#: c/c-decl.c:6669 +#: c/c-decl.c:6698 #, gcc-internal-format msgid "variable previously declared %<static%> redeclared %<extern%>" msgstr "" -#: c/c-decl.c:6679 +#: c/c-decl.c:6708 #, gcc-internal-format msgid "variable %q+D declared %<inline%>" msgstr "" -#: c/c-decl.c:6681 +#: c/c-decl.c:6710 #, gcc-internal-format msgid "variable %q+D declared %<_Noreturn%>" msgstr "" -#: c/c-decl.c:6716 +#: c/c-decl.c:6745 #, gcc-internal-format msgid "non-nested function with variably modified type" msgstr "" -#: c/c-decl.c:6718 +#: c/c-decl.c:6747 #, gcc-internal-format msgid "object with variably modified type must have no linkage" msgstr "" -#: c/c-decl.c:6808 c/c-decl.c:8403 +#: c/c-decl.c:6837 c/c-decl.c:8442 #, gcc-internal-format msgid "function declaration isn%'t a prototype" msgstr "" -#: c/c-decl.c:6817 +#: c/c-decl.c:6846 #, gcc-internal-format msgid "parameter names (without types) in function declaration" msgstr "" -#: c/c-decl.c:6855 +#: c/c-decl.c:6884 #, gcc-internal-format msgid "parameter %u (%q+D) has incomplete type" msgstr "" -#: c/c-decl.c:6859 +#: c/c-decl.c:6888 #, gcc-internal-format, gfc-internal-format msgid "parameter %u has incomplete type" msgstr "" -#: c/c-decl.c:6870 +#: c/c-decl.c:6899 #, gcc-internal-format msgid "parameter %u (%q+D) has void type" msgstr "" -#: c/c-decl.c:6874 +#: c/c-decl.c:6903 #, gcc-internal-format, gfc-internal-format msgid "parameter %u has void type" msgstr "" -#: c/c-decl.c:6957 +#: c/c-decl.c:6986 #, gcc-internal-format msgid "%<void%> as only parameter may not be qualified" msgstr "" -#: c/c-decl.c:6961 c/c-decl.c:6997 +#: c/c-decl.c:6990 c/c-decl.c:7026 #, gcc-internal-format msgid "%<void%> must be the only parameter" msgstr "" -#: c/c-decl.c:6991 +#: c/c-decl.c:7020 #, gcc-internal-format msgid "parameter %q+D has just a forward declaration" msgstr "" -#: c/c-decl.c:7037 +#: c/c-decl.c:7066 #, gcc-internal-format msgid "" "%<%s %E%> declared inside parameter list will not be visible outside of this " "definition or declaration" msgstr "" -#: c/c-decl.c:7043 +#: c/c-decl.c:7072 #, gcc-internal-format, gfc-internal-format msgid "" "anonymous %s declared inside parameter list will not be visible outside of " "this definition or declaration" msgstr "" -#: c/c-decl.c:7142 +#: c/c-decl.c:7174 #, gcc-internal-format msgid "enum type defined here" msgstr "" -#: c/c-decl.c:7148 +#: c/c-decl.c:7180 #, gcc-internal-format msgid "struct defined here" msgstr "" -#: c/c-decl.c:7154 +#: c/c-decl.c:7186 #, gcc-internal-format msgid "union defined here" msgstr "" -#: c/c-decl.c:7227 +#: c/c-decl.c:7259 #, gcc-internal-format msgid "redefinition of %<union %E%>" msgstr "" -#: c/c-decl.c:7229 +#: c/c-decl.c:7261 #, gcc-internal-format msgid "redefinition of %<struct %E%>" msgstr "" -#: c/c-decl.c:7238 +#: c/c-decl.c:7270 #, gcc-internal-format msgid "nested redefinition of %<union %E%>" msgstr "" -#: c/c-decl.c:7240 +#: c/c-decl.c:7272 #, gcc-internal-format msgid "nested redefinition of %<struct %E%>" msgstr "" -#: c/c-decl.c:7273 c/c-decl.c:7989 +#: c/c-decl.c:7305 c/c-decl.c:8021 #, gcc-internal-format msgid "defining type in %qs expression is invalid in C++" msgstr "" -#: c/c-decl.c:7341 cp/decl.c:4573 +#: c/c-decl.c:7373 cp/decl.c:4580 #, gcc-internal-format msgid "declaration does not declare anything" msgstr "" -#: c/c-decl.c:7346 +#: c/c-decl.c:7378 #, gcc-internal-format msgid "ISO C99 doesn%'t support unnamed structs/unions" msgstr "" -#: c/c-decl.c:7349 +#: c/c-decl.c:7381 #, gcc-internal-format msgid "ISO C90 doesn%'t support unnamed structs/unions" msgstr "" -#: c/c-decl.c:7440 c/c-decl.c:7458 c/c-decl.c:7519 +#: c/c-decl.c:7472 c/c-decl.c:7490 c/c-decl.c:7551 #, gcc-internal-format msgid "duplicate member %q+D" msgstr "" -#: c/c-decl.c:7545 +#: c/c-decl.c:7577 #, gcc-internal-format msgid "empty struct has size 0 in C, size 1 in C++" msgstr "" -#: c/c-decl.c:7548 +#: c/c-decl.c:7580 #, gcc-internal-format msgid "empty union has size 0 in C, size 1 in C++" msgstr "" -#: c/c-decl.c:7634 +#: c/c-decl.c:7666 #, gcc-internal-format msgid "union has no named members" msgstr "" -#: c/c-decl.c:7636 +#: c/c-decl.c:7668 #, gcc-internal-format msgid "union has no members" msgstr "" -#: c/c-decl.c:7641 +#: c/c-decl.c:7673 #, gcc-internal-format msgid "struct has no named members" msgstr "" -#: c/c-decl.c:7643 +#: c/c-decl.c:7675 #, gcc-internal-format msgid "struct has no members" msgstr "" -#: c/c-decl.c:7705 cp/decl.c:10967 +#: c/c-decl.c:7737 cp/decl.c:10990 #, gcc-internal-format msgid "flexible array member in union" msgstr "" -#: c/c-decl.c:7711 +#: c/c-decl.c:7743 #, gcc-internal-format msgid "flexible array member not at end of struct" msgstr "" -#: c/c-decl.c:7717 +#: c/c-decl.c:7749 #, gcc-internal-format msgid "flexible array member in otherwise empty struct" msgstr "" -#: c/c-decl.c:7747 +#: c/c-decl.c:7779 #, gcc-internal-format msgid "type %qT is too large" msgstr "" -#: c/c-decl.c:7870 +#: c/c-decl.c:7902 #, gcc-internal-format msgid "union cannot be made transparent" msgstr "" -#: c/c-decl.c:7961 +#: c/c-decl.c:7993 #, gcc-internal-format msgid "nested redefinition of %<enum %E%>" msgstr "" #. This enum is a named one that has been declared already. -#: c/c-decl.c:7968 +#: c/c-decl.c:8000 #, gcc-internal-format msgid "redeclaration of %<enum %E%>" msgstr "" -#: c/c-decl.c:8045 +#: c/c-decl.c:8079 #, gcc-internal-format -msgid "enumeration values exceed range of largest integer" +msgid "specified mode too small for enumeral values" msgstr "" -#: c/c-decl.c:8064 +#: c/c-decl.c:8094 #, gcc-internal-format -msgid "specified mode too small for enumeral values" +msgid "enumeration values exceed range of largest integer" msgstr "" -#: c/c-decl.c:8169 c/c-decl.c:8185 +#: c/c-decl.c:8208 c/c-decl.c:8224 #, gcc-internal-format msgid "enumerator value for %qE is not an integer constant" msgstr "" -#: c/c-decl.c:8180 +#: c/c-decl.c:8219 #, gcc-internal-format msgid "enumerator value for %qE is not an integer constant expression" msgstr "" -#: c/c-decl.c:8204 +#: c/c-decl.c:8243 #, gcc-internal-format msgid "overflow in enumeration values" msgstr "" -#: c/c-decl.c:8212 +#: c/c-decl.c:8251 #, gcc-internal-format msgid "ISO C restricts enumerator values to range of %<int%>" msgstr "" -#: c/c-decl.c:8298 cp/decl.c:4875 cp/decl.c:13770 +#: c/c-decl.c:8337 cp/decl.c:4882 cp/decl.c:13842 #, gcc-internal-format msgid "inline function %qD given attribute noinline" msgstr "" -#: c/c-decl.c:8316 +#: c/c-decl.c:8355 #, gcc-internal-format msgid "return type is an incomplete type" msgstr "" -#: c/c-decl.c:8327 +#: c/c-decl.c:8366 #, gcc-internal-format msgid "return type defaults to %<int%>" msgstr "" -#: c/c-decl.c:8353 +#: c/c-decl.c:8392 #, gcc-internal-format msgid "%q+D defined as variadic function without prototype" msgstr "" -#: c/c-decl.c:8412 +#: c/c-decl.c:8451 #, gcc-internal-format msgid "no previous prototype for %qD" msgstr "" -#: c/c-decl.c:8421 +#: c/c-decl.c:8460 #, gcc-internal-format msgid "%qD was used with no prototype before its definition" msgstr "" -#: c/c-decl.c:8429 cp/decl.c:13913 +#: c/c-decl.c:8468 cp/decl.c:13985 #, gcc-internal-format msgid "no previous declaration for %qD" msgstr "" -#: c/c-decl.c:8439 +#: c/c-decl.c:8478 #, gcc-internal-format msgid "%qD was used with no declaration before its definition" msgstr "" -#: c/c-decl.c:8458 +#: c/c-decl.c:8497 #, gcc-internal-format msgid "return type of %qD is not %<int%>" msgstr "" -#: c/c-decl.c:8460 +#: c/c-decl.c:8499 #, gcc-internal-format msgid "%<_Atomic%>-qualified return type of %qD" msgstr "" -#: c/c-decl.c:8467 +#: c/c-decl.c:8506 #, gcc-internal-format msgid "%qD is normally a non-static function" msgstr "" -#: c/c-decl.c:8504 +#: c/c-decl.c:8543 #, gcc-internal-format msgid "old-style parameter declarations in prototyped function definition" msgstr "" -#: c/c-decl.c:8519 +#: c/c-decl.c:8558 #, gcc-internal-format msgid "traditional C rejects ISO C style function definitions" msgstr "" -#: c/c-decl.c:8535 +#: c/c-decl.c:8574 #, gcc-internal-format msgid "parameter name omitted" msgstr "" -#: c/c-decl.c:8572 +#: c/c-decl.c:8611 #, gcc-internal-format msgid "old-style function definition" msgstr "" -#: c/c-decl.c:8581 +#: c/c-decl.c:8620 #, gcc-internal-format msgid "parameter name missing from parameter list" msgstr "" -#: c/c-decl.c:8596 +#: c/c-decl.c:8635 #, gcc-internal-format msgid "%qD declared as a non-parameter" msgstr "" -#: c/c-decl.c:8602 +#: c/c-decl.c:8641 #, gcc-internal-format msgid "multiple parameters named %qD" msgstr "" -#: c/c-decl.c:8611 +#: c/c-decl.c:8650 #, gcc-internal-format msgid "parameter %qD declared with void type" msgstr "" -#: c/c-decl.c:8640 c/c-decl.c:8645 +#: c/c-decl.c:8679 c/c-decl.c:8684 #, gcc-internal-format msgid "type of %qD defaults to %<int%>" msgstr "" -#: c/c-decl.c:8665 +#: c/c-decl.c:8704 #, gcc-internal-format msgid "parameter %qD has incomplete type" msgstr "" -#: c/c-decl.c:8672 +#: c/c-decl.c:8711 #, gcc-internal-format msgid "declaration for parameter %qD but no such parameter" msgstr "" -#: c/c-decl.c:8722 +#: c/c-decl.c:8761 #, gcc-internal-format msgid "number of arguments doesn%'t match built-in prototype" msgstr "" -#: c/c-decl.c:8733 +#: c/c-decl.c:8772 #, gcc-internal-format msgid "number of arguments doesn%'t match prototype" msgstr "" -#: c/c-decl.c:8736 c/c-decl.c:8783 c/c-decl.c:8797 +#: c/c-decl.c:8775 c/c-decl.c:8822 c/c-decl.c:8836 #, gcc-internal-format msgid "prototype declaration" msgstr "" -#: c/c-decl.c:8775 +#: c/c-decl.c:8814 #, gcc-internal-format msgid "promoted argument %qD doesn%'t match built-in prototype" msgstr "" -#: c/c-decl.c:8780 +#: c/c-decl.c:8819 #, gcc-internal-format msgid "promoted argument %qD doesn%'t match prototype" msgstr "" -#: c/c-decl.c:8790 +#: c/c-decl.c:8829 #, gcc-internal-format msgid "argument %qD doesn%'t match built-in prototype" msgstr "" -#: c/c-decl.c:8795 +#: c/c-decl.c:8834 #, gcc-internal-format msgid "argument %qD doesn%'t match prototype" msgstr "" -#: c/c-decl.c:9052 cp/decl.c:14709 +#: c/c-decl.c:9091 cp/decl.c:14739 #, gcc-internal-format msgid "no return statement in function returning non-void" msgstr "" -#: c/c-decl.c:9072 cp/decl.c:14741 +#: c/c-decl.c:9111 cp/decl.c:14771 #, gcc-internal-format msgid "parameter %qD set but not used" msgstr "" @@ -32401,228 +32500,228 @@ msgstr "" #. If we get here, declarations have been used in a for loop without #. the C99 for loop scope. This doesn't make much sense, so don't #. allow it. -#: c/c-decl.c:9166 +#: c/c-decl.c:9205 #, gcc-internal-format msgid "%<for%> loop initial declarations are only allowed in C99 or C11 mode" msgstr "" -#: c/c-decl.c:9171 +#: c/c-decl.c:9210 #, gcc-internal-format msgid "" "use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code" msgstr "" -#: c/c-decl.c:9206 +#: c/c-decl.c:9245 #, gcc-internal-format msgid "declaration of static variable %qD in %<for%> loop initial declaration" msgstr "" -#: c/c-decl.c:9210 +#: c/c-decl.c:9249 #, gcc-internal-format msgid "" "declaration of %<extern%> variable %qD in %<for%> loop initial declaration" msgstr "" -#: c/c-decl.c:9217 +#: c/c-decl.c:9256 #, gcc-internal-format msgid "%<struct %E%> declared in %<for%> loop initial declaration" msgstr "" -#: c/c-decl.c:9222 +#: c/c-decl.c:9261 #, gcc-internal-format msgid "%<union %E%> declared in %<for%> loop initial declaration" msgstr "" -#: c/c-decl.c:9226 +#: c/c-decl.c:9265 #, gcc-internal-format msgid "%<enum %E%> declared in %<for%> loop initial declaration" msgstr "" -#: c/c-decl.c:9230 +#: c/c-decl.c:9269 #, gcc-internal-format msgid "declaration of non-variable %qD in %<for%> loop initial declaration" msgstr "" -#: c/c-decl.c:9504 +#: c/c-decl.c:9517 #, gcc-internal-format msgid "incompatible address space qualifiers %qs and %qs" msgstr "" -#: c/c-decl.c:9554 c/c-decl.c:9911 c/c-decl.c:10401 +#: c/c-decl.c:9567 c/c-decl.c:9924 c/c-decl.c:10414 #, gcc-internal-format msgid "duplicate %qE" msgstr "" -#: c/c-decl.c:9580 c/c-decl.c:9923 c/c-decl.c:10244 +#: c/c-decl.c:9593 c/c-decl.c:9936 c/c-decl.c:10257 #, gcc-internal-format msgid "two or more data types in declaration specifiers" msgstr "" -#: c/c-decl.c:9592 cp/parser.c:26637 +#: c/c-decl.c:9605 cp/parser.c:26701 #, gcc-internal-format msgid "%<long long long%> is too long for GCC" msgstr "" -#: c/c-decl.c:9605 +#: c/c-decl.c:9618 #, gcc-internal-format msgid "ISO C90 does not support %<long long%>" msgstr "" -#: c/c-decl.c:9802 c/c-parser.c:7881 +#: c/c-decl.c:9815 c/c-parser.c:7903 #, gcc-internal-format msgid "ISO C90 does not support complex types" msgstr "" -#: c/c-decl.c:9848 +#: c/c-decl.c:9861 #, gcc-internal-format msgid "ISO C does not support saturating types" msgstr "" -#: c/c-decl.c:9966 +#: c/c-decl.c:9979 #, gcc-internal-format msgid "ISO C does not support %<__int%d%> types" msgstr "" -#: c/c-decl.c:9986 +#: c/c-decl.c:9999 #, gcc-internal-format msgid "%<__int%d%> is not supported on this target" msgstr "" -#: c/c-decl.c:10028 +#: c/c-decl.c:10041 #, gcc-internal-format msgid "ISO C90 does not support boolean types" msgstr "" -#: c/c-decl.c:10202 +#: c/c-decl.c:10215 #, gcc-internal-format msgid "ISO C does not support decimal floating point" msgstr "" -#: c/c-decl.c:10225 c/c-decl.c:10491 c/c-parser.c:7386 +#: c/c-decl.c:10238 c/c-decl.c:10504 c/c-parser.c:7406 #, gcc-internal-format msgid "fixed-point types not supported for this target" msgstr "" -#: c/c-decl.c:10227 +#: c/c-decl.c:10240 #, gcc-internal-format msgid "ISO C does not support fixed-point types" msgstr "" -#: c/c-decl.c:10262 +#: c/c-decl.c:10275 #, gcc-internal-format msgid "C++ lookup of %qD would return a field, not a type" msgstr "" -#: c/c-decl.c:10275 +#: c/c-decl.c:10288 #, gcc-internal-format msgid "%qE fails to be a typedef or built in type" msgstr "" -#: c/c-decl.c:10323 +#: c/c-decl.c:10336 #, gcc-internal-format msgid "%qE is not at beginning of declaration" msgstr "" -#: c/c-decl.c:10344 +#: c/c-decl.c:10357 #, gcc-internal-format msgid "%qE used with %<auto%>" msgstr "" -#: c/c-decl.c:10346 +#: c/c-decl.c:10359 #, gcc-internal-format msgid "%qE used with %<register%>" msgstr "" -#: c/c-decl.c:10348 +#: c/c-decl.c:10361 #, gcc-internal-format msgid "%qE used with %<typedef%>" msgstr "" -#: c/c-decl.c:10362 c/c-parser.c:6963 +#: c/c-decl.c:10375 c/c-parser.c:6983 #, gcc-internal-format msgid "ISO C99 does not support %qE" msgstr "" -#: c/c-decl.c:10365 c/c-parser.c:6966 +#: c/c-decl.c:10378 c/c-parser.c:6986 #, gcc-internal-format msgid "ISO C90 does not support %qE" msgstr "" -#: c/c-decl.c:10377 +#: c/c-decl.c:10390 #, gcc-internal-format msgid "%<__thread%> before %<extern%>" msgstr "" -#: c/c-decl.c:10386 +#: c/c-decl.c:10399 #, gcc-internal-format msgid "%<__thread%> before %<static%>" msgstr "" -#: c/c-decl.c:10399 +#: c/c-decl.c:10412 #, gcc-internal-format msgid "duplicate %<_Thread_local%> or %<__thread%>" msgstr "" -#: c/c-decl.c:10407 +#: c/c-decl.c:10420 #, gcc-internal-format msgid "multiple storage classes in declaration specifiers" msgstr "" -#: c/c-decl.c:10415 +#: c/c-decl.c:10428 #, gcc-internal-format msgid "%qs used with %qE" msgstr "" -#: c/c-decl.c:10488 +#: c/c-decl.c:10501 #, gcc-internal-format msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>" msgstr "" -#: c/c-decl.c:10503 +#: c/c-decl.c:10516 #, gcc-internal-format msgid "ISO C does not support plain %<complex%> meaning %<double complex%>" msgstr "" -#: c/c-decl.c:10554 c/c-decl.c:10567 c/c-decl.c:10593 +#: c/c-decl.c:10567 c/c-decl.c:10580 c/c-decl.c:10606 #, gcc-internal-format msgid "ISO C does not support complex integer types" msgstr "" -#: c/c-decl.c:10991 cp/semantics.c:5245 +#: c/c-decl.c:11004 cp/semantics.c:5294 #, gcc-internal-format msgid "" "%<#pragma omp declare reduction%> combiner refers to variable %qD which is " "not %<omp_out%> nor %<omp_in%>" msgstr "" -#: c/c-decl.c:10995 cp/semantics.c:5249 +#: c/c-decl.c:11008 cp/semantics.c:5298 #, gcc-internal-format msgid "" "%<#pragma omp declare reduction%> initializer refers to variable %qD which " "is not %<omp_priv%> nor %<omp_orig%>" msgstr "" -#: c/c-fold.c:319 c/c-typeck.c:11001 cp/typeck.c:4425 +#: c/c-fold.c:319 c/c-typeck.c:11014 cp/typeck.c:4465 #, gcc-internal-format msgid "left shift of negative value" msgstr "" -#: c/c-fold.c:331 c/c-typeck.c:11010 cp/typeck.c:4433 +#: c/c-fold.c:331 c/c-typeck.c:11023 cp/typeck.c:4473 #, gcc-internal-format msgid "left shift count is negative" msgstr "" -#: c/c-fold.c:332 c/c-typeck.c:10949 cp/typeck.c:4379 +#: c/c-fold.c:332 c/c-typeck.c:10962 cp/typeck.c:4419 #, gcc-internal-format msgid "right shift count is negative" msgstr "" -#: c/c-fold.c:338 c/c-typeck.c:11017 cp/typeck.c:4441 +#: c/c-fold.c:338 c/c-typeck.c:11030 cp/typeck.c:4481 #, gcc-internal-format msgid "left shift count >= width of type" msgstr "" -#: c/c-fold.c:339 c/c-typeck.c:10961 cp/typeck.c:4387 +#: c/c-fold.c:339 c/c-typeck.c:10974 cp/typeck.c:4427 #, gcc-internal-format msgid "right shift count >= width of type" msgstr "" @@ -32637,78 +32736,78 @@ msgstr "" msgid "version control conflict marker in file" msgstr "" -#: c/c-parser.c:1086 cp/parser.c:26844 +#: c/c-parser.c:1086 cp/parser.c:26908 #, gcc-internal-format msgid "expected end of line" msgstr "" -#: c/c-parser.c:1419 +#: c/c-parser.c:1420 #, gcc-internal-format msgid "ISO C forbids an empty translation unit" msgstr "" -#: c/c-parser.c:1526 c/c-parser.c:8992 +#: c/c-parser.c:1524 c/c-parser.c:9014 #, gcc-internal-format msgid "ISO C does not allow extra %<;%> outside of a function" msgstr "" -#: c/c-parser.c:1659 c/c-parser.c:2411 c/c-parser.c:3810 +#: c/c-parser.c:1657 c/c-parser.c:2409 c/c-parser.c:3808 #, gcc-internal-format msgid "unknown type name %qE" msgstr "" -#: c/c-parser.c:1663 +#: c/c-parser.c:1661 #, gcc-internal-format msgid "use %<struct%> keyword to refer to the type" msgstr "" -#: c/c-parser.c:1665 +#: c/c-parser.c:1663 #, gcc-internal-format msgid "use %<union%> keyword to refer to the type" msgstr "" -#: c/c-parser.c:1667 +#: c/c-parser.c:1665 #, gcc-internal-format msgid "use %<enum%> keyword to refer to the type" msgstr "" -#: c/c-parser.c:1687 c/c-parser.c:10141 c/c-parser.c:15125 c/c-parser.c:16010 -#: cp/parser.c:33903 cp/parser.c:34795 cp/parser.c:37305 +#: c/c-parser.c:1685 c/c-parser.c:10163 c/c-parser.c:15147 c/c-parser.c:16032 +#: cp/parser.c:33953 cp/parser.c:34845 cp/parser.c:37356 #, gcc-internal-format msgid "expected declaration specifiers" msgstr "" -#: c/c-parser.c:1696 +#: c/c-parser.c:1694 #, gcc-internal-format msgid "%<__auto_type%> in empty declaration" msgstr "" -#: c/c-parser.c:1718 c/c-parser.c:3089 +#: c/c-parser.c:1716 c/c-parser.c:3087 #, gcc-internal-format msgid "expected %<;%>, identifier or %<(%>" msgstr "" -#: c/c-parser.c:1736 cp/parser.c:28493 cp/parser.c:28567 +#: c/c-parser.c:1734 cp/parser.c:28557 cp/parser.c:28631 #, gcc-internal-format msgid "prefix attributes are ignored for methods" msgstr "" -#: c/c-parser.c:1771 +#: c/c-parser.c:1769 #, gcc-internal-format msgid "prefix attributes are ignored for implementations" msgstr "" -#: c/c-parser.c:1792 +#: c/c-parser.c:1790 #, gcc-internal-format msgid "unexpected attribute" msgstr "" -#: c/c-parser.c:1834 +#: c/c-parser.c:1832 #, gcc-internal-format msgid "%<__auto_type%> requires a plain identifier as declarator" msgstr "" -#: c/c-parser.c:1851 +#: c/c-parser.c:1849 #, gcc-internal-format msgid "data definition has no type or storage class" msgstr "" @@ -32716,28 +32815,28 @@ msgstr "" #. This means there is an attribute specifier after #. the declarator in a function definition. Provide #. some more information for the user. -#: c/c-parser.c:1866 +#: c/c-parser.c:1864 #, gcc-internal-format msgid "" "attributes should be specified before the declarator in a function definition" msgstr "" -#: c/c-parser.c:1886 +#: c/c-parser.c:1884 #, gcc-internal-format msgid "%<__auto_type%> used with a bit-field initializer" msgstr "" -#: c/c-parser.c:1957 c/c-parser.c:2045 +#: c/c-parser.c:1955 c/c-parser.c:2043 #, gcc-internal-format msgid "%<__auto_type%> requires an initialized data declaration" msgstr "" -#: c/c-parser.c:2008 +#: c/c-parser.c:2006 #, gcc-internal-format msgid "%<__auto_type%> may only be used with a single declarator" msgstr "" -#: c/c-parser.c:2037 cp/parser.c:12425 +#: c/c-parser.c:2035 cp/parser.c:12445 #, gcc-internal-format msgid "expected %<,%> or %<;%>" msgstr "" @@ -32745,263 +32844,263 @@ msgstr "" #. This can appear in many cases looking nothing like a #. function definition, so we don't give a more specific #. error suggesting there was one. -#: c/c-parser.c:2051 c/c-parser.c:2067 +#: c/c-parser.c:2049 c/c-parser.c:2065 #, gcc-internal-format msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>" msgstr "" -#: c/c-parser.c:2059 +#: c/c-parser.c:2057 #, gcc-internal-format msgid "ISO C forbids nested functions" msgstr "" -#: c/c-parser.c:2182 +#: c/c-parser.c:2180 #, gcc-internal-format msgid "ISO C99 does not support %<_Static_assert%>" msgstr "" -#: c/c-parser.c:2185 +#: c/c-parser.c:2183 #, gcc-internal-format msgid "ISO C90 does not support %<_Static_assert%>" msgstr "" -#: c/c-parser.c:2210 c/c-parser.c:3878 c/c-parser.c:10199 cp/parser.c:37010 +#: c/c-parser.c:2208 c/c-parser.c:3876 c/c-parser.c:10221 cp/parser.c:37061 #, gcc-internal-format msgid "expected string literal" msgstr "" -#: c/c-parser.c:2218 +#: c/c-parser.c:2216 #, gcc-internal-format msgid "expression in static assertion is not an integer" msgstr "" -#: c/c-parser.c:2227 +#: c/c-parser.c:2225 #, gcc-internal-format msgid "expression in static assertion is not an integer constant expression" msgstr "" -#: c/c-parser.c:2232 +#: c/c-parser.c:2230 #, gcc-internal-format msgid "expression in static assertion is not constant" msgstr "" -#: c/c-parser.c:2237 +#: c/c-parser.c:2235 #, gcc-internal-format msgid "static assertion failed: %E" msgstr "" -#: c/c-parser.c:2552 +#: c/c-parser.c:2550 #, gcc-internal-format msgid "%<_Atomic%> in Objective-C" msgstr "" -#: c/c-parser.c:2556 +#: c/c-parser.c:2554 #, gcc-internal-format msgid "%<_Atomic%> with OpenMP" msgstr "" -#: c/c-parser.c:2559 +#: c/c-parser.c:2557 #, gcc-internal-format msgid "ISO C99 does not support the %<_Atomic%> qualifier" msgstr "" -#: c/c-parser.c:2562 +#: c/c-parser.c:2560 #, gcc-internal-format msgid "ISO C90 does not support the %<_Atomic%> qualifier" msgstr "" -#: c/c-parser.c:2589 +#: c/c-parser.c:2587 #, gcc-internal-format msgid "%<_Atomic%> applied to a qualified type" msgstr "" -#: c/c-parser.c:2704 +#: c/c-parser.c:2702 #, gcc-internal-format msgid "empty enum is invalid" msgstr "" -#: c/c-parser.c:2708 c/c-parser.c:3650 c/c-parser.c:4434 c/c-parser.c:4730 -#: c/c-parser.c:6071 c/c-parser.c:6158 c/c-parser.c:6833 c/c-parser.c:7444 -#: c/c-parser.c:7665 c/c-parser.c:7690 c/c-parser.c:7958 c/c-parser.c:8265 -#: c/c-parser.c:8297 c/c-parser.c:8576 c/c-parser.c:8625 c/c-parser.c:8785 -#: c/c-parser.c:8815 c/c-parser.c:8823 c/c-parser.c:8852 c/c-parser.c:8865 -#: c/c-parser.c:9170 c/c-parser.c:9294 c/c-parser.c:9734 c/c-parser.c:9769 -#: c/c-parser.c:9822 c/c-parser.c:9875 c/c-parser.c:9891 c/c-parser.c:9937 -#: c/c-parser.c:10513 c/c-parser.c:10552 c/c-parser.c:12501 c/c-parser.c:12735 -#: c/c-parser.c:14532 c/c-parser.c:17283 c/c-parser.c:17611 cp/parser.c:26847 -#: cp/parser.c:29336 cp/parser.c:29366 cp/parser.c:29436 cp/parser.c:31561 -#: cp/parser.c:36724 cp/parser.c:37449 +#: c/c-parser.c:2706 c/c-parser.c:3648 c/c-parser.c:4436 c/c-parser.c:4733 +#: c/c-parser.c:6091 c/c-parser.c:6178 c/c-parser.c:6853 c/c-parser.c:7464 +#: c/c-parser.c:7685 c/c-parser.c:7710 c/c-parser.c:7980 c/c-parser.c:8287 +#: c/c-parser.c:8319 c/c-parser.c:8598 c/c-parser.c:8647 c/c-parser.c:8807 +#: c/c-parser.c:8837 c/c-parser.c:8845 c/c-parser.c:8874 c/c-parser.c:8887 +#: c/c-parser.c:9192 c/c-parser.c:9316 c/c-parser.c:9756 c/c-parser.c:9791 +#: c/c-parser.c:9844 c/c-parser.c:9897 c/c-parser.c:9913 c/c-parser.c:9959 +#: c/c-parser.c:10535 c/c-parser.c:10574 c/c-parser.c:12523 c/c-parser.c:12757 +#: c/c-parser.c:14554 c/c-parser.c:17305 c/c-parser.c:17633 cp/parser.c:26911 +#: cp/parser.c:29400 cp/parser.c:29430 cp/parser.c:29500 cp/parser.c:31611 +#: cp/parser.c:36775 cp/parser.c:37500 #, gcc-internal-format msgid "expected identifier" msgstr "" -#: c/c-parser.c:2746 cp/parser.c:17326 +#: c/c-parser.c:2744 cp/parser.c:17356 #, gcc-internal-format msgid "comma at end of enumerator list" msgstr "" -#: c/c-parser.c:2752 +#: c/c-parser.c:2750 #, gcc-internal-format msgid "expected %<,%> or %<}%>" msgstr "" -#: c/c-parser.c:2783 +#: c/c-parser.c:2781 #, gcc-internal-format msgid "ISO C forbids forward references to %<enum%> types" msgstr "" -#: c/c-parser.c:2899 +#: c/c-parser.c:2897 #, gcc-internal-format msgid "expected class name" msgstr "" -#: c/c-parser.c:2918 +#: c/c-parser.c:2916 #, gcc-internal-format msgid "extra semicolon in struct or union specified" msgstr "" -#: c/c-parser.c:2947 +#: c/c-parser.c:2945 #, gcc-internal-format msgid "no semicolon at end of struct or union" msgstr "" -#: c/c-parser.c:3051 c/c-parser.c:4244 +#: c/c-parser.c:3049 c/c-parser.c:4242 #, gcc-internal-format msgid "expected specifier-qualifier-list" msgstr "" -#: c/c-parser.c:3062 +#: c/c-parser.c:3060 #, gcc-internal-format msgid "ISO C forbids member declarations with no members" msgstr "" -#: c/c-parser.c:3152 +#: c/c-parser.c:3150 #, gcc-internal-format msgid "expected %<,%>, %<;%> or %<}%>" msgstr "" -#: c/c-parser.c:3159 +#: c/c-parser.c:3157 #, gcc-internal-format msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>" msgstr "" -#: c/c-parser.c:3212 +#: c/c-parser.c:3210 #, gcc-internal-format msgid "%<typeof%> applied to a bit-field" msgstr "" -#: c/c-parser.c:3249 +#: c/c-parser.c:3247 #, gcc-internal-format msgid "ISO C99 does not support %<_Alignas%>" msgstr "" -#: c/c-parser.c:3252 +#: c/c-parser.c:3250 #, gcc-internal-format msgid "ISO C90 does not support %<_Alignas%>" msgstr "" -#: c/c-parser.c:3487 +#: c/c-parser.c:3485 #, gcc-internal-format msgid "expected identifier or %<(%>" msgstr "" -#: c/c-parser.c:3548 c/c-parser.c:3577 +#: c/c-parser.c:3546 c/c-parser.c:3575 #, gcc-internal-format msgid "array notations cannot be used in declaration" msgstr "" -#: c/c-parser.c:3716 +#: c/c-parser.c:3714 #, gcc-internal-format msgid "ISO C requires a named argument before %<...%>" msgstr "" -#: c/c-parser.c:3817 +#: c/c-parser.c:3815 #, gcc-internal-format msgid "expected declaration specifiers or %<...%>" msgstr "" -#: c/c-parser.c:3872 +#: c/c-parser.c:3870 #, gcc-internal-format msgid "wide string literal in %<asm%>" msgstr "" -#: c/c-parser.c:4344 +#: c/c-parser.c:4346 #, gcc-internal-format msgid "ISO C forbids empty initializer braces" msgstr "" -#: c/c-parser.c:4399 +#: c/c-parser.c:4401 #, gcc-internal-format msgid "obsolete use of designated initializer with %<:%>" msgstr "" -#: c/c-parser.c:4543 +#: c/c-parser.c:4545 #, gcc-internal-format msgid "ISO C forbids specifying range of elements to initialize" msgstr "" -#: c/c-parser.c:4555 +#: c/c-parser.c:4557 #, gcc-internal-format msgid "ISO C90 forbids specifying subobject to initialize" msgstr "" -#: c/c-parser.c:4563 +#: c/c-parser.c:4565 #, gcc-internal-format msgid "obsolete use of designated initializer without %<=%>" msgstr "" -#: c/c-parser.c:4745 +#: c/c-parser.c:4748 #, gcc-internal-format msgid "ISO C forbids label declarations" msgstr "" -#: c/c-parser.c:4751 c/c-parser.c:4829 +#: c/c-parser.c:4754 c/c-parser.c:4832 #, gcc-internal-format msgid "expected declaration or statement" msgstr "" -#: c/c-parser.c:4781 c/c-parser.c:4809 +#: c/c-parser.c:4784 c/c-parser.c:4812 #, gcc-internal-format msgid "ISO C90 forbids mixed declarations and code" msgstr "" -#: c/c-parser.c:4837 +#: c/c-parser.c:4840 #, gcc-internal-format msgid "expected %<}%> before %<else%>" msgstr "" -#: c/c-parser.c:4842 cp/parser.c:10795 +#: c/c-parser.c:4845 cp/parser.c:10801 #, gcc-internal-format msgid "%<else%> without a previous %<if%>" msgstr "" -#: c/c-parser.c:4859 +#: c/c-parser.c:4862 #, gcc-internal-format msgid "label at end of compound statement" msgstr "" -#: c/c-parser.c:4916 +#: c/c-parser.c:4919 #, gcc-internal-format msgid "expected %<:%> or %<...%>" msgstr "" -#: c/c-parser.c:4947 +#: c/c-parser.c:4950 #, gcc-internal-format msgid "" "a label can only be part of a statement and a declaration is not a statement" msgstr "" -#: c/c-parser.c:5141 cp/parser.c:10396 +#: c/c-parser.c:5144 cp/parser.c:10402 #, gcc-internal-format msgid "-fcilkplus must be enabled to use %<_Cilk_for%>" msgstr "" -#: c/c-parser.c:5151 cp/parser.c:10422 +#: c/c-parser.c:5154 cp/parser.c:10428 #, gcc-internal-format msgid "-fcilkplus must be enabled to use %<_Cilk_sync%>" msgstr "" -#: c/c-parser.c:5178 +#: c/c-parser.c:5181 #, gcc-internal-format msgid "expected identifier or %<*%>" msgstr "" @@ -33010,1124 +33109,1124 @@ msgstr "" #. c_parser_skip_until_found stops at a closing nesting #. delimiter without consuming it, but here we need to consume #. it to proceed further. -#: c/c-parser.c:5261 cp/parser.c:10500 +#: c/c-parser.c:5264 cp/parser.c:10506 #, gcc-internal-format msgid "expected statement" msgstr "" -#: c/c-parser.c:5358 cp/parser.c:11887 +#: c/c-parser.c:5361 cp/parser.c:11907 #, gcc-internal-format msgid "suggest braces around empty body in an %<if%> statement" msgstr "" -#: c/c-parser.c:5392 cp/parser.c:11890 +#: c/c-parser.c:5395 cp/parser.c:11910 #, gcc-internal-format msgid "suggest braces around empty body in an %<else%> statement" msgstr "" -#: c/c-parser.c:5434 +#: c/c-parser.c:5437 #, gcc-internal-format msgid "if statement cannot contain %<Cilk_spawn%>" msgstr "" -#: c/c-parser.c:5608 +#: c/c-parser.c:5611 #, gcc-internal-format msgid "suggest braces around empty body in %<do%> statement" msgstr "" -#: c/c-parser.c:5734 c/c-parser.c:5764 +#: c/c-parser.c:5737 c/c-parser.c:5767 #, gcc-internal-format msgid "multiple iterating variables in fast enumeration" msgstr "" -#: c/c-parser.c:5788 +#: c/c-parser.c:5791 #, gcc-internal-format msgid "invalid iterating variable in fast enumeration" msgstr "" -#: c/c-parser.c:5809 cp/parser.c:11150 +#: c/c-parser.c:5812 cp/parser.c:11156 #, gcc-internal-format msgid "missing loop condition in loop with %<GCC ivdep%> pragma" msgstr "" -#: c/c-parser.c:5841 +#: c/c-parser.c:5844 #, gcc-internal-format msgid "missing collection in fast enumeration" msgstr "" -#: c/c-parser.c:5941 +#: c/c-parser.c:5961 #, gcc-internal-format msgid "%E qualifier ignored on asm" msgstr "" -#: c/c-parser.c:6296 +#: c/c-parser.c:6316 #, gcc-internal-format msgid "ISO C forbids omitting the middle term of a ?: expression" msgstr "" -#: c/c-parser.c:6796 +#: c/c-parser.c:6816 #, gcc-internal-format msgid "traditional C rejects the unary plus operator" msgstr "" -#: c/c-parser.c:6937 +#: c/c-parser.c:6957 #, gcc-internal-format msgid "%<sizeof%> applied to a bit-field" msgstr "" -#: c/c-parser.c:7023 +#: c/c-parser.c:7043 #, gcc-internal-format msgid "ISO C does not allow %<%E (expression)%>" msgstr "" -#: c/c-parser.c:7054 +#: c/c-parser.c:7074 #, gcc-internal-format msgid "cannot take address of %qs" msgstr "" -#: c/c-parser.c:7138 +#: c/c-parser.c:7158 #, gcc-internal-format msgid "ISO C99 does not support %<_Generic%>" msgstr "" -#: c/c-parser.c:7141 +#: c/c-parser.c:7161 #, gcc-internal-format msgid "ISO C90 does not support %<_Generic%>" msgstr "" -#: c/c-parser.c:7207 +#: c/c-parser.c:7227 #, gcc-internal-format msgid "%<_Generic%> association has function type" msgstr "" -#: c/c-parser.c:7210 +#: c/c-parser.c:7230 #, gcc-internal-format msgid "%<_Generic%> association has incomplete type" msgstr "" -#: c/c-parser.c:7214 +#: c/c-parser.c:7234 #, gcc-internal-format msgid "%<_Generic%> association has variable length type" msgstr "" -#: c/c-parser.c:7238 +#: c/c-parser.c:7258 #, gcc-internal-format msgid "duplicate %<default%> case in %<_Generic%>" msgstr "" -#: c/c-parser.c:7239 +#: c/c-parser.c:7259 #, gcc-internal-format msgid "original %<default%> is here" msgstr "" -#: c/c-parser.c:7247 +#: c/c-parser.c:7267 #, gcc-internal-format msgid "%<_Generic%> specifies two compatible types" msgstr "" -#: c/c-parser.c:7248 +#: c/c-parser.c:7268 #, gcc-internal-format msgid "compatible type is here" msgstr "" -#: c/c-parser.c:7271 +#: c/c-parser.c:7291 #, gcc-internal-format msgid "%<_Generic> selector matches multiple associations" msgstr "" -#: c/c-parser.c:7273 +#: c/c-parser.c:7293 #, gcc-internal-format msgid "other match is here" msgstr "" -#: c/c-parser.c:7294 +#: c/c-parser.c:7314 #, gcc-internal-format msgid "" "%<_Generic%> selector of type %qT is not compatible with any association" msgstr "" -#: c/c-parser.c:7458 c/c-parser.c:8026 c/c-parser.c:8047 +#: c/c-parser.c:7478 c/c-parser.c:8048 c/c-parser.c:8069 #, gcc-internal-format msgid "expected expression" msgstr "" -#: c/c-parser.c:7476 +#: c/c-parser.c:7496 #, gcc-internal-format msgid "braced-group within expression allowed only inside a function" msgstr "" -#: c/c-parser.c:7490 +#: c/c-parser.c:7510 #, gcc-internal-format msgid "ISO C forbids braced-groups within expressions" msgstr "" -#: c/c-parser.c:7538 +#: c/c-parser.c:7558 #, gcc-internal-format msgid "ISO C does not support %<__FUNCTION__%> predefined identifier" msgstr "" -#: c/c-parser.c:7547 +#: c/c-parser.c:7567 #, gcc-internal-format msgid "ISO C does not support %<__PRETTY_FUNCTION__%> predefined identifier" msgstr "" -#: c/c-parser.c:7556 +#: c/c-parser.c:7576 #, gcc-internal-format msgid "ISO C90 does not support %<__func__%> predefined identifier" msgstr "" -#: c/c-parser.c:7717 +#: c/c-parser.c:7737 #, gcc-internal-format msgid "wrong number of arguments to %<__builtin_choose_expr%>" msgstr "" -#: c/c-parser.c:7733 +#: c/c-parser.c:7753 #, gcc-internal-format msgid "first argument to %<__builtin_choose_expr%> not a constant" msgstr "" -#: c/c-parser.c:7802 +#: c/c-parser.c:7824 #, gcc-internal-format msgid "wrong number of arguments to %<__builtin_call_with_static_chain%>" msgstr "" -#: c/c-parser.c:7815 +#: c/c-parser.c:7837 #, gcc-internal-format msgid "" "first argument to %<__builtin_call_with_static_chain%> must be a call " "expression" msgstr "" -#: c/c-parser.c:7819 +#: c/c-parser.c:7841 #, gcc-internal-format msgid "" "second argument to %<__builtin_call_with_static_chain%> must be a pointer " "type" msgstr "" -#: c/c-parser.c:7845 +#: c/c-parser.c:7867 #, gcc-internal-format msgid "wrong number of arguments to %<__builtin_complex%>" msgstr "" -#: c/c-parser.c:7867 +#: c/c-parser.c:7889 #, gcc-internal-format msgid "%<__builtin_complex%> operand not of real binary floating-point type" msgstr "" -#: c/c-parser.c:7876 +#: c/c-parser.c:7898 #, gcc-internal-format msgid "%<__builtin_complex%> operands of different types" msgstr "" -#: c/c-parser.c:7924 cp/parser.c:6588 +#: c/c-parser.c:7946 cp/parser.c:6590 #, gcc-internal-format msgid "wrong number of arguments to %<__builtin_shuffle%>" msgstr "" -#: c/c-parser.c:8005 cp/parser.c:6533 +#: c/c-parser.c:8027 cp/parser.c:6535 #, gcc-internal-format msgid "-fcilkplus must be enabled to use %<_Cilk_spawn%>" msgstr "" -#: c/c-parser.c:8012 cp/parser.c:6539 +#: c/c-parser.c:8034 cp/parser.c:6541 #, gcc-internal-format msgid "consecutive %<_Cilk_spawn%> keywords are not permitted" msgstr "" -#: c/c-parser.c:8083 +#: c/c-parser.c:8105 #, gcc-internal-format msgid "compound literal has variable size" msgstr "" -#: c/c-parser.c:8094 +#: c/c-parser.c:8116 #, gcc-internal-format msgid "compound literal qualified by address-space qualifier" msgstr "" -#: c/c-parser.c:8098 +#: c/c-parser.c:8120 #, gcc-internal-format msgid "ISO C90 forbids compound literals" msgstr "" -#: c/c-parser.c:8233 cp/parser.c:6841 +#: c/c-parser.c:8255 cp/parser.c:6843 #, gcc-internal-format msgid "" "%<memset%> used with constant zero length parameter; this could be due to " "transposed parameters" msgstr "" -#: c/c-parser.c:8596 +#: c/c-parser.c:8618 #, gcc-internal-format msgid "expected identifier or %<)%>" msgstr "" -#: c/c-parser.c:8692 +#: c/c-parser.c:8714 #, gcc-internal-format msgid "extra semicolon" msgstr "" -#: c/c-parser.c:8940 +#: c/c-parser.c:8962 #, gcc-internal-format msgid "extra semicolon in method definition specified" msgstr "" -#: c/c-parser.c:9072 +#: c/c-parser.c:9094 #, gcc-internal-format msgid "method attributes must be specified at the end only" msgstr "" -#: c/c-parser.c:9092 +#: c/c-parser.c:9114 #, gcc-internal-format msgid "expected %<;%> or %<{%> after method attribute definition" msgstr "" -#: c/c-parser.c:9213 +#: c/c-parser.c:9235 #, gcc-internal-format msgid "objective-c method declaration is expected" msgstr "" -#: c/c-parser.c:9648 +#: c/c-parser.c:9670 #, gcc-internal-format msgid "no type or storage class may be specified here," msgstr "" -#: c/c-parser.c:9738 c/c-parser.c:9795 cp/parser.c:29396 +#: c/c-parser.c:9760 c/c-parser.c:9817 cp/parser.c:29460 #, gcc-internal-format msgid "unknown property attribute" msgstr "" -#: c/c-parser.c:9759 cp/parser.c:29356 +#: c/c-parser.c:9781 cp/parser.c:29420 #, gcc-internal-format msgid "missing %<=%> (after %<getter%> attribute)" msgstr "" -#: c/c-parser.c:9762 cp/parser.c:29359 +#: c/c-parser.c:9784 cp/parser.c:29423 #, gcc-internal-format msgid "missing %<=%> (after %<setter%> attribute)" msgstr "" -#: c/c-parser.c:9776 cp/parser.c:29374 +#: c/c-parser.c:9798 cp/parser.c:29438 #, gcc-internal-format msgid "the %<setter%> attribute may only be specified once" msgstr "" -#: c/c-parser.c:9781 cp/parser.c:29380 +#: c/c-parser.c:9803 cp/parser.c:29444 #, gcc-internal-format msgid "setter name must terminate with %<:%>" msgstr "" -#: c/c-parser.c:9788 cp/parser.c:29388 +#: c/c-parser.c:9810 cp/parser.c:29452 #, gcc-internal-format msgid "the %<getter%> attribute may only be specified once" msgstr "" -#: c/c-parser.c:9990 +#: c/c-parser.c:10012 #, gcc-internal-format msgid "%<#pragma acc update%> may only be used in compound statements" msgstr "" -#: c/c-parser.c:10001 cp/parser.c:37088 +#: c/c-parser.c:10023 cp/parser.c:37139 #, gcc-internal-format msgid "%<#pragma omp barrier%> may only be used in compound statements" msgstr "" -#: c/c-parser.c:10012 cp/parser.c:37103 +#: c/c-parser.c:10034 cp/parser.c:37154 #, gcc-internal-format msgid "%<#pragma omp flush%> may only be used in compound statements" msgstr "" -#: c/c-parser.c:10023 cp/parser.c:37119 +#: c/c-parser.c:10045 cp/parser.c:37170 #, gcc-internal-format msgid "%<#pragma omp taskwait%> may only be used in compound statements" msgstr "" -#: c/c-parser.c:10034 cp/parser.c:37135 +#: c/c-parser.c:10056 cp/parser.c:37186 #, gcc-internal-format msgid "%<#pragma omp taskyield%> may only be used in compound statements" msgstr "" -#: c/c-parser.c:10045 cp/parser.c:37151 +#: c/c-parser.c:10067 cp/parser.c:37202 #, gcc-internal-format msgid "%<#pragma omp cancel%> may only be used in compound statements" msgstr "" -#: c/c-parser.c:10056 cp/parser.c:37167 +#: c/c-parser.c:10078 cp/parser.c:37218 #, gcc-internal-format msgid "" "%<#pragma omp cancellation point%> may only be used in compound statements" msgstr "" -#: c/c-parser.c:10076 cp/parser.c:37240 +#: c/c-parser.c:10098 cp/parser.c:37291 #, gcc-internal-format msgid "" "%<#pragma omp section%> may only be used in %<#pragma omp sections%> " "construct" msgstr "" -#: c/c-parser.c:10095 cp/parser.c:37259 +#: c/c-parser.c:10117 cp/parser.c:37310 #, gcc-internal-format msgid "for, while or do statement expected" msgstr "" -#: c/c-parser.c:10107 cp/parser.c:37078 +#: c/c-parser.c:10129 cp/parser.c:37129 #, gcc-internal-format msgid "%<#pragma GCC pch_preprocess%> must be first" msgstr "" -#: c/c-parser.c:10120 +#: c/c-parser.c:10142 #, gcc-internal-format msgid "%<#pragma grainsize%> ignored because -fcilkplus is not enabled" msgstr "" -#: c/c-parser.c:10128 +#: c/c-parser.c:10150 #, gcc-internal-format msgid "%<#pragma grainsize%> must be inside a function" msgstr "" -#: c/c-parser.c:10439 cp/parser.c:29786 +#: c/c-parser.c:10461 cp/parser.c:29850 #, gcc-internal-format msgid "too many %qs clauses" msgstr "" -#: c/c-parser.c:10460 cp/parser.c:30345 +#: c/c-parser.c:10482 cp/parser.c:30395 #, gcc-internal-format msgid "expected integer expression before ')'" msgstr "" -#: c/c-parser.c:10475 +#: c/c-parser.c:10497 #, gcc-internal-format msgid "expression must be integral" msgstr "" -#: c/c-parser.c:10604 c/c-parser.c:10612 cp/parser.c:29914 cp/parser.c:29922 +#: c/c-parser.c:10626 c/c-parser.c:10634 cp/parser.c:29978 cp/parser.c:29986 #, gcc-internal-format msgid "%qD is not a constant" msgstr "" -#: c/c-parser.c:10764 c/c-parser.c:17144 cp/parser.c:30091 +#: c/c-parser.c:10786 c/c-parser.c:17166 #, gcc-internal-format msgid "%qD is not a variable" msgstr "" -#: c/c-parser.c:10768 cp/parser.c:30095 +#: c/c-parser.c:10790 cp/semantics.c:6709 #, gcc-internal-format msgid "%qD is not a pointer variable" msgstr "" -#: c/c-parser.c:10808 cp/parser.c:30423 +#: c/c-parser.c:10830 cp/parser.c:30473 #, gcc-internal-format msgid "collapse argument needs positive constant integer expression" msgstr "" -#: c/c-parser.c:10878 cp/parser.c:30479 +#: c/c-parser.c:10900 cp/parser.c:30529 #, gcc-internal-format msgid "expected %<none%>" msgstr "" -#: c/c-parser.c:10880 cp/parser.c:30481 +#: c/c-parser.c:10902 cp/parser.c:30531 #, gcc-internal-format msgid "expected %<none%> or %<shared%>" msgstr "" -#: c/c-parser.c:10980 cp/parser.c:30581 +#: c/c-parser.c:11002 cp/parser.c:30631 #, gcc-internal-format msgid "expected %<data%>, %<update%>, %<enter%> or %<exit%>" msgstr "" -#: c/c-parser.c:11000 c/c-parser.c:15839 c/c-parser.c:15924 cp/parser.c:30599 -#: cp/parser.c:34579 cp/parser.c:34667 +#: c/c-parser.c:11022 c/c-parser.c:15861 c/c-parser.c:15946 cp/parser.c:30649 +#: cp/parser.c:34629 cp/parser.c:34717 #, gcc-internal-format msgid "expected %<data%>" msgstr "" -#: c/c-parser.c:11047 cp/parser.c:30652 +#: c/c-parser.c:11069 cp/parser.c:30702 #, gcc-internal-format msgid "too many %<if%> clauses with %qs modifier" msgstr "" -#: c/c-parser.c:11054 cp/parser.c:30659 +#: c/c-parser.c:11076 cp/parser.c:30709 #, gcc-internal-format msgid "too many %<if%> clauses" msgstr "" -#: c/c-parser.c:11056 cp/parser.c:30661 +#: c/c-parser.c:11078 cp/parser.c:30711 #, gcc-internal-format msgid "too many %<if%> clauses without modifier" msgstr "" -#: c/c-parser.c:11062 cp/parser.c:30667 +#: c/c-parser.c:11084 cp/parser.c:30717 #, gcc-internal-format msgid "" "if any %<if%> clause has modifier, then all %<if%> clauses have to use " "modifier" msgstr "" -#: c/c-parser.c:11136 c/c-parser.c:11180 c/c-parser.c:11224 c/c-parser.c:11268 -#: c/c-parser.c:11312 c/c-parser.c:11356 c/c-parser.c:11460 c/c-parser.c:11586 -#: c/c-parser.c:11667 c/c-parser.c:12065 c/c-parser.c:12132 c/c-parser.c:12235 -#: c/c-parser.c:12278 c/c-parser.c:12787 +#: c/c-parser.c:11158 c/c-parser.c:11202 c/c-parser.c:11246 c/c-parser.c:11290 +#: c/c-parser.c:11334 c/c-parser.c:11378 c/c-parser.c:11482 c/c-parser.c:11608 +#: c/c-parser.c:11689 c/c-parser.c:12087 c/c-parser.c:12154 c/c-parser.c:12257 +#: c/c-parser.c:12300 c/c-parser.c:12809 #, gcc-internal-format msgid "expected integer expression" msgstr "" -#: c/c-parser.c:11147 +#: c/c-parser.c:11169 #, gcc-internal-format msgid "%<num_gangs%> value must be positive" msgstr "" -#: c/c-parser.c:11191 +#: c/c-parser.c:11213 #, gcc-internal-format msgid "%<num_threads%> value must be positive" msgstr "" -#: c/c-parser.c:11235 +#: c/c-parser.c:11257 #, gcc-internal-format msgid "%<num_tasks%> value must be positive" msgstr "" -#: c/c-parser.c:11279 cp/semantics.c:6828 +#: c/c-parser.c:11301 cp/semantics.c:6885 #, gcc-internal-format msgid "%<grainsize%> value must be positive" msgstr "" -#: c/c-parser.c:11324 cp/semantics.c:6857 +#: c/c-parser.c:11346 cp/semantics.c:6914 #, gcc-internal-format msgid "%<priority%> value must be non-negative" msgstr "" -#: c/c-parser.c:11385 c/c-parser.c:11391 cp/parser.c:30878 cp/parser.c:30885 +#: c/c-parser.c:11407 c/c-parser.c:11413 cp/parser.c:30928 cp/parser.c:30935 #, gcc-internal-format msgid "expected %<tofrom%>" msgstr "" -#: c/c-parser.c:11399 c/c-parser.c:11405 cp/parser.c:30894 cp/parser.c:30901 +#: c/c-parser.c:11421 c/c-parser.c:11427 cp/parser.c:30944 cp/parser.c:30951 #, gcc-internal-format msgid "expected %<scalar%>" msgstr "" -#: c/c-parser.c:11471 +#: c/c-parser.c:11493 #, gcc-internal-format msgid "%<num_workers%> value must be positive" msgstr "" -#: c/c-parser.c:11535 cp/parser.c:30207 +#: c/c-parser.c:11557 cp/parser.c:30257 #, gcc-internal-format msgid "too many %<static%> arguments" msgstr "" -#: c/c-parser.c:11569 cp/parser.c:30240 +#: c/c-parser.c:11591 cp/parser.c:30290 #, gcc-internal-format msgid "unexpected argument" msgstr "" -#: c/c-parser.c:11595 +#: c/c-parser.c:11617 #, gcc-internal-format msgid "%<%s%> value must be positive" msgstr "" -#: c/c-parser.c:11724 cp/semantics.c:6941 +#: c/c-parser.c:11746 cp/semantics.c:6998 #, gcc-internal-format msgid "%<tile%> value must be integral" msgstr "" -#: c/c-parser.c:11737 cp/semantics.c:6955 +#: c/c-parser.c:11759 cp/semantics.c:7012 #, gcc-internal-format msgid "%<tile%> value must be positive" msgstr "" -#: c/c-parser.c:11803 cp/parser.c:30958 +#: c/c-parser.c:11825 cp/parser.c:31008 #, gcc-internal-format msgid "ordered argument needs positive constant integer expression" msgstr "" -#: c/c-parser.c:11894 +#: c/c-parser.c:11916 #, gcc-internal-format msgid "" "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> " "or %<max%>" msgstr "" -#: c/c-parser.c:12003 cp/parser.c:31171 +#: c/c-parser.c:12025 cp/parser.c:31221 #, gcc-internal-format msgid "both %<monotonic%> and %<nonmonotonic%> modifiers specified" msgstr "" -#: c/c-parser.c:12056 cp/parser.c:31187 +#: c/c-parser.c:12078 cp/parser.c:31237 #, gcc-internal-format msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter" msgstr "" -#: c/c-parser.c:12060 cp/parser.c:31190 +#: c/c-parser.c:12082 cp/parser.c:31240 #, gcc-internal-format msgid "schedule %<auto%> does not take a %<chunk_size%> parameter" msgstr "" -#: c/c-parser.c:12082 cp/parser.c:31210 +#: c/c-parser.c:12104 cp/parser.c:31260 #, gcc-internal-format msgid "invalid schedule kind" msgstr "" -#: c/c-parser.c:12143 +#: c/c-parser.c:12165 #, gcc-internal-format msgid "%<vector_length%> value must be positive" msgstr "" -#: c/c-parser.c:12245 +#: c/c-parser.c:12267 #, gcc-internal-format msgid "%<num_teams%> value must be positive" msgstr "" -#: c/c-parser.c:12288 cp/semantics.c:6340 +#: c/c-parser.c:12310 cp/semantics.c:6389 #, gcc-internal-format msgid "%<thread_limit%> value must be positive" msgstr "" -#: c/c-parser.c:12330 cp/semantics.c:6450 +#: c/c-parser.c:12352 cp/semantics.c:6499 #, gcc-internal-format msgid "" "%<aligned%> clause alignment expression must be positive constant integer " "expression" msgstr "" -#: c/c-parser.c:12391 cp/parser.c:31468 +#: c/c-parser.c:12413 cp/parser.c:31518 #, gcc-internal-format msgid "using parameters for %<linear%> step is not supported yet" msgstr "" -#: c/c-parser.c:12396 +#: c/c-parser.c:12418 #, gcc-internal-format msgid "%<linear%> clause step expression must be integral" msgstr "" -#: c/c-parser.c:12434 +#: c/c-parser.c:12456 #, gcc-internal-format msgid "" "%<safelen%> clause expression must be positive constant integer expression" msgstr "" -#: c/c-parser.c:12470 +#: c/c-parser.c:12492 #, gcc-internal-format msgid "" "%<simdlen%> clause expression must be positive constant integer expression" msgstr "" -#: c/c-parser.c:12639 cp/parser.c:31704 cp/parser.c:31927 +#: c/c-parser.c:12661 cp/parser.c:31754 cp/parser.c:31977 #, gcc-internal-format msgid "invalid depend kind" msgstr "" -#: c/c-parser.c:12723 cp/parser.c:31777 +#: c/c-parser.c:12745 cp/parser.c:31827 #, gcc-internal-format msgid "invalid map kind" msgstr "" -#: c/c-parser.c:12817 cp/parser.c:31874 +#: c/c-parser.c:12839 cp/parser.c:31924 #, gcc-internal-format msgid "invalid dist_schedule kind" msgstr "" -#: c/c-parser.c:12886 +#: c/c-parser.c:12908 #, gcc-internal-format msgid "invalid proc_bind kind" msgstr "" -#: c/c-parser.c:13099 cp/parser.c:32152 +#: c/c-parser.c:13121 cp/parser.c:32202 #, gcc-internal-format msgid "expected %<#pragma acc%> clause" msgstr "" -#: c/c-parser.c:13110 c/c-parser.c:13393 cp/parser.c:32163 cp/parser.c:32479 +#: c/c-parser.c:13132 c/c-parser.c:13415 cp/parser.c:32213 cp/parser.c:32529 #, gcc-internal-format msgid "%qs is not valid for %qs" msgstr "" -#: c/c-parser.c:13256 cp/parser.c:32339 +#: c/c-parser.c:13278 cp/parser.c:32389 #, gcc-internal-format msgid "%qs must be the first clause of %qs" msgstr "" -#: c/c-parser.c:13382 cp/parser.c:32468 +#: c/c-parser.c:13404 cp/parser.c:32518 #, gcc-internal-format msgid "expected %<#pragma omp%> clause" msgstr "" -#: c/c-parser.c:13520 cp/parser.c:35090 +#: c/c-parser.c:13542 cp/parser.c:35140 #, gcc-internal-format msgid "no valid clauses specified in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.c:13530 cp/parser.c:35100 +#: c/c-parser.c:13552 cp/parser.c:35150 #, gcc-internal-format msgid "array section in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.c:13554 cp/parser.c:35124 +#: c/c-parser.c:13576 cp/parser.c:35174 #, gcc-internal-format msgid "%qD must be a global variable in%<#pragma acc declare link%>" msgstr "" -#: c/c-parser.c:13565 cp/parser.c:35135 +#: c/c-parser.c:13587 cp/parser.c:35185 #, gcc-internal-format msgid "invalid OpenACC clause at file scope" msgstr "" -#: c/c-parser.c:13572 cp/parser.c:35142 +#: c/c-parser.c:13594 cp/parser.c:35192 #, gcc-internal-format msgid "invalid use of %<extern%> variable %qD in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.c:13580 cp/parser.c:35150 +#: c/c-parser.c:13602 cp/parser.c:35200 #, gcc-internal-format msgid "invalid use of %<global%> variable %qD in %<#pragma acc declare%>" msgstr "" -#: c/c-parser.c:13592 cp/parser.c:35162 +#: c/c-parser.c:13614 cp/parser.c:35212 #, gcc-internal-format msgid "variable %qD used more than once with %<#pragma acc declare%>" msgstr "" -#: c/c-parser.c:13678 cp/parser.c:35245 +#: c/c-parser.c:13700 cp/parser.c:35295 #, gcc-internal-format msgid "expected %<data%> in %<#pragma acc enter data%>" msgstr "" -#: c/c-parser.c:13687 cp/parser.c:35255 +#: c/c-parser.c:13709 cp/parser.c:35305 #, gcc-internal-format msgid "invalid pragma" msgstr "" -#: c/c-parser.c:13704 cp/parser.c:35272 +#: c/c-parser.c:13726 cp/parser.c:35322 #, gcc-internal-format msgid "%<#pragma acc enter data%> has no data movement clause" msgstr "" -#: c/c-parser.c:13906 cp/parser.c:36352 +#: c/c-parser.c:13928 cp/parser.c:36403 #, gcc-internal-format msgid "%<#pragma acc routine%> not at file scope" msgstr "" -#: c/c-parser.c:13923 cp/parser.c:2829 +#: c/c-parser.c:13945 cp/parser.c:2829 #, gcc-internal-format msgid "%qE has not been declared" msgstr "" -#: c/c-parser.c:13929 +#: c/c-parser.c:13951 #, gcc-internal-format msgid "expected function name" msgstr "" -#: c/c-parser.c:13968 +#: c/c-parser.c:13990 #, gcc-internal-format msgid "%<#pragma acc routine%> %s" msgstr "" -#: c/c-parser.c:13975 cp/parser.c:36565 +#: c/c-parser.c:13997 cp/parser.c:36616 #, gcc-internal-format msgid "%<#pragma acc routine%> already applied to %D" msgstr "" -#: c/c-parser.c:13978 cp/parser.c:36572 +#: c/c-parser.c:14000 cp/parser.c:36623 #, gcc-internal-format msgid "%<#pragma acc routine%> must be applied before %s" msgstr "" -#: c/c-parser.c:14015 cp/parser.c:35445 +#: c/c-parser.c:14037 cp/parser.c:35495 #, gcc-internal-format msgid "" "%<#pragma acc update%> must contain at least one %<device%> or %<host%> or " "%<self%> clause" msgstr "" -#: c/c-parser.c:14423 cp/parser.c:32850 cp/parser.c:32876 +#: c/c-parser.c:14445 cp/parser.c:32900 cp/parser.c:32926 #, gcc-internal-format msgid "invalid form of %<#pragma omp atomic%>" msgstr "" -#: c/c-parser.c:14427 cp/parser.c:32907 cp/parser.c:32923 +#: c/c-parser.c:14449 cp/parser.c:32957 cp/parser.c:32973 #, gcc-internal-format msgid "invalid operator for %<#pragma omp atomic%>" msgstr "" -#: c/c-parser.c:14476 cp/semantics.c:8342 cp/semantics.c:8352 +#: c/c-parser.c:14498 cp/semantics.c:8399 cp/semantics.c:8409 #, gcc-internal-format msgid "" "%<#pragma omp atomic capture%> uses two different expressions for memory" msgstr "" -#: c/c-parser.c:14541 c/c-parser.c:14563 +#: c/c-parser.c:14563 c/c-parser.c:14585 #, gcc-internal-format msgid "expected %<(%> or end of line" msgstr "" -#: c/c-parser.c:14601 cp/parser.c:33421 +#: c/c-parser.c:14623 cp/parser.c:33471 #, gcc-internal-format msgid "%<ordered%> clause parameter is less than %<collapse%>" msgstr "" -#: c/c-parser.c:14612 cp/parser.c:33432 +#: c/c-parser.c:14634 cp/parser.c:33482 #, gcc-internal-format msgid "" "%<linear%> clause may not be specified together with %<ordered%> clause with " "a parameter" msgstr "" -#: c/c-parser.c:14631 cp/parser.c:33459 cp/parser.c:37626 +#: c/c-parser.c:14653 cp/parser.c:33509 cp/parser.c:37677 #, gcc-internal-format msgid "for statement expected" msgstr "" -#: c/c-parser.c:14637 cp/parser.c:33465 +#: c/c-parser.c:14659 cp/parser.c:33515 #, gcc-internal-format msgid "_Cilk_for statement expected" msgstr "" -#: c/c-parser.c:14706 cp/semantics.c:7892 cp/semantics.c:7979 +#: c/c-parser.c:14728 cp/semantics.c:7949 cp/semantics.c:8036 #, gcc-internal-format msgid "expected iteration declaration or initialization" msgstr "" -#: c/c-parser.c:14791 +#: c/c-parser.c:14813 #, gcc-internal-format msgid "not enough perfectly nested loops" msgstr "" -#: c/c-parser.c:14847 cp/parser.c:33689 +#: c/c-parser.c:14869 cp/parser.c:33739 #, gcc-internal-format msgid "collapsed loops not perfectly nested" msgstr "" -#: c/c-parser.c:14894 cp/parser.c:33508 cp/parser.c:33550 cp/pt.c:14869 +#: c/c-parser.c:14916 cp/parser.c:33558 cp/parser.c:33600 cp/pt.c:14952 #, gcc-internal-format msgid "iteration variable %qD should not be firstprivate" msgstr "" -#: c/c-parser.c:14984 cp/parser.c:33755 +#: c/c-parser.c:15006 cp/parser.c:33805 #, gcc-internal-format msgid "%<ordered%> clause with parameter may not be specified on %qs construct" msgstr "" -#: c/c-parser.c:15139 +#: c/c-parser.c:15161 #, gcc-internal-format msgid "" "%<#pragma omp ordered%> with %<depend> clause may only be used in compound " "statements" msgstr "" -#: c/c-parser.c:15341 cp/parser.c:34107 +#: c/c-parser.c:15363 cp/parser.c:34157 #, gcc-internal-format msgid "expected %<for%> after %qs" msgstr "" -#: c/c-parser.c:15539 cp/parser.c:34300 +#: c/c-parser.c:15561 cp/parser.c:34350 #, gcc-internal-format msgid "expected %<point%>" msgstr "" -#: c/c-parser.c:15739 cp/parser.c:34521 +#: c/c-parser.c:15761 cp/parser.c:34571 #, gcc-internal-format msgid "" "%<#pragma omp target data%> with map-type other than %<to%>, %<from%>, " "%<tofrom%> or %<alloc%> on %<map%> clause" msgstr "" -#: c/c-parser.c:15752 cp/parser.c:34534 +#: c/c-parser.c:15774 cp/parser.c:34584 #, gcc-internal-format msgid "%<#pragma omp target data%> must contain at least one %<map%> clause" msgstr "" -#: c/c-parser.c:15787 cp/parser.c:34746 +#: c/c-parser.c:15809 cp/parser.c:34796 #, gcc-internal-format msgid "%<#pragma omp target update%> may only be used in compound statements" msgstr "" -#: c/c-parser.c:15800 cp/parser.c:34759 +#: c/c-parser.c:15822 cp/parser.c:34809 #, gcc-internal-format msgid "" "%<#pragma omp target update%> must contain at least one %<from%> or %<to%> " "clauses" msgstr "" -#: c/c-parser.c:15847 cp/parser.c:34587 +#: c/c-parser.c:15869 cp/parser.c:34637 #, gcc-internal-format msgid "" "%<#pragma omp target enter data%> may only be used in compound statements" msgstr "" -#: c/c-parser.c:15873 cp/parser.c:34614 +#: c/c-parser.c:15895 cp/parser.c:34664 #, gcc-internal-format msgid "" "%<#pragma omp target enter data%> with map-type other than %<to%> or %<alloc" "%> on %<map%> clause" msgstr "" -#: c/c-parser.c:15885 cp/parser.c:34626 +#: c/c-parser.c:15907 cp/parser.c:34676 #, gcc-internal-format msgid "" "%<#pragma omp target enter data%> must contain at least one %<map%> clause" msgstr "" -#: c/c-parser.c:15932 cp/parser.c:34675 +#: c/c-parser.c:15954 cp/parser.c:34725 #, gcc-internal-format msgid "" "%<#pragma omp target exit data%> may only be used in compound statements" msgstr "" -#: c/c-parser.c:15960 +#: c/c-parser.c:15982 #, gcc-internal-format msgid "" "%<#pragma omp target exit data%> with map-type other than %<from%>, " "%<release> or %<delete%> on %<map%> clause" msgstr "" -#: c/c-parser.c:15973 cp/parser.c:34716 +#: c/c-parser.c:15995 cp/parser.c:34766 #, gcc-internal-format msgid "" "%<#pragma omp target exit data%> must contain at least one %<map%> clause" msgstr "" -#: c/c-parser.c:16179 cp/parser.c:34967 +#: c/c-parser.c:16201 cp/parser.c:35017 #, gcc-internal-format msgid "" "%<#pragma omp target%> with map-type other than %<to%>, %<from%>, %<tofrom%> " "or %<alloc%> on %<map%> clause" msgstr "" -#: c/c-parser.c:16230 +#: c/c-parser.c:16252 #, gcc-internal-format msgid "" "%<#pragma omp declare simd%> must be followed by function declaration or " "definition or another %<#pragma omp declare simd%>" msgstr "" -#: c/c-parser.c:16281 c/c-parser.c:16309 +#: c/c-parser.c:16303 c/c-parser.c:16331 #, gcc-internal-format msgid "" "%<#pragma omp declare simd%> must be followed by function declaration or " "definition" msgstr "" -#: c/c-parser.c:16330 +#: c/c-parser.c:16352 #, gcc-internal-format msgid "" "%<#pragma omp declare simd%> or %<simd%> attribute cannot be used in the " "same function marked as a Cilk Plus SIMD-enabled function" msgstr "" -#: c/c-parser.c:16344 +#: c/c-parser.c:16366 #, gcc-internal-format msgid "" "%<#pragma omp declare simd%> not immediately followed by a function " "declaration or definition" msgstr "" -#: c/c-parser.c:16352 cp/parser.c:35621 +#: c/c-parser.c:16374 cp/parser.c:35671 #, gcc-internal-format msgid "" "%<#pragma omp declare simd%> not immediately followed by a single function " "declaration or definition" msgstr "" -#: c/c-parser.c:16468 cp/parser.c:35692 +#: c/c-parser.c:16490 cp/parser.c:35742 #, gcc-internal-format msgid "" "%<#pragma omp declare target%> with clauses in between %<#pragma omp declare " "target%> without clauses and %<#pragma omp end declare target%>" msgstr "" -#: c/c-parser.c:16487 cp/parser.c:35711 +#: c/c-parser.c:16509 cp/parser.c:35761 #, gcc-internal-format msgid "%qD specified both in declare target %<link%> and %<to%> clauses" msgstr "" -#: c/c-parser.c:16525 cp/parser.c:35755 +#: c/c-parser.c:16547 cp/parser.c:35805 #, gcc-internal-format msgid "expected %<target%>" msgstr "" -#: c/c-parser.c:16532 cp/parser.c:35762 +#: c/c-parser.c:16554 cp/parser.c:35812 #, gcc-internal-format msgid "expected %<declare%>" msgstr "" -#: c/c-parser.c:16538 cp/parser.c:35769 +#: c/c-parser.c:16560 cp/parser.c:35819 #, gcc-internal-format msgid "" "%<#pragma omp end declare target%> without corresponding %<#pragma omp " "declare target%>" msgstr "" -#: c/c-parser.c:16566 +#: c/c-parser.c:16588 #, gcc-internal-format msgid "%<#pragma omp declare reduction%> not at file or block scope" msgstr "" -#: c/c-parser.c:16616 +#: c/c-parser.c:16638 #, gcc-internal-format msgid "" "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> " "or identifier" msgstr "" -#: c/c-parser.c:16643 +#: c/c-parser.c:16665 #, gcc-internal-format msgid "predeclared arithmetic type in %<#pragma omp declare reduction%>" msgstr "" -#: c/c-parser.c:16647 +#: c/c-parser.c:16669 #, gcc-internal-format msgid "function or array type in %<#pragma omp declare reduction%>" msgstr "" -#: c/c-parser.c:16650 +#: c/c-parser.c:16672 #, gcc-internal-format msgid "" "const, volatile or restrict qualified type in %<#pragma omp declare reduction" "%>" msgstr "" -#: c/c-parser.c:16658 +#: c/c-parser.c:16680 #, gcc-internal-format msgid "redeclaration of %qs %<#pragma omp declare reduction%> for type %qT" msgstr "" -#: c/c-parser.c:16667 +#: c/c-parser.c:16689 #, gcc-internal-format msgid "previous %<#pragma omp declare reduction%>" msgstr "" -#: c/c-parser.c:16784 +#: c/c-parser.c:16806 #, gcc-internal-format msgid "expected %<omp_priv%> or function-name" msgstr "" -#: c/c-parser.c:16795 +#: c/c-parser.c:16817 #, gcc-internal-format msgid "expected function-name %<(%>" msgstr "" -#: c/c-parser.c:16814 +#: c/c-parser.c:16836 #, gcc-internal-format msgid "one of the initializer call arguments should be %<&omp_priv%>" msgstr "" -#: c/c-parser.c:16934 cp/parser.c:36213 +#: c/c-parser.c:16956 cp/parser.c:36264 #, gcc-internal-format msgid "expected %<simd%> or %<reduction%> or %<target%>" msgstr "" -#: c/c-parser.c:17146 cp/semantics.c:7365 +#: c/c-parser.c:17168 cp/semantics.c:7422 #, gcc-internal-format msgid "%qE declared %<threadprivate%> after first use" msgstr "" -#: c/c-parser.c:17148 cp/semantics.c:7367 +#: c/c-parser.c:17170 cp/semantics.c:7424 #, gcc-internal-format msgid "automatic variable %qE cannot be %<threadprivate%>" msgstr "" -#: c/c-parser.c:17152 cp/semantics.c:7369 +#: c/c-parser.c:17174 cp/semantics.c:7426 #, gcc-internal-format msgid "%<threadprivate%> %qE has incomplete type" msgstr "" -#: c/c-parser.c:17183 +#: c/c-parser.c:17205 #, gcc-internal-format msgid "pragma simd ignored because -fcilkplus is not enabled" msgstr "" -#: c/c-parser.c:17189 +#: c/c-parser.c:17211 #, gcc-internal-format msgid "pragma simd must be inside a function" msgstr "" -#: c/c-parser.c:17233 cp/parser.c:37397 +#: c/c-parser.c:17255 cp/parser.c:37448 #, gcc-internal-format msgid "vectorlength must be an integer constant" msgstr "" -#: c/c-parser.c:17235 cp/parser.c:37400 +#: c/c-parser.c:17257 cp/parser.c:37451 #, gcc-internal-format msgid "vectorlength must be a power of 2" msgstr "" -#: c/c-parser.c:17318 cp/parser.c:37507 +#: c/c-parser.c:17340 cp/parser.c:37558 #, gcc-internal-format msgid "step size must be an integer constant expression or an integer variable" msgstr "" -#: c/c-parser.c:17417 cp/parser.c:37600 +#: c/c-parser.c:17439 cp/parser.c:37651 #, gcc-internal-format msgid "expected %<#pragma simd%> clause" msgstr "" -#: c/c-parser.c:17461 cp/parser.c:37049 +#: c/c-parser.c:17483 cp/parser.c:37100 #, gcc-internal-format msgid "%<#pragma cilk grainsize%> is not followed by %<_Cilk_for%>" msgstr "" -#: c/c-parser.c:17760 cp/parser.c:36941 +#: c/c-parser.c:17782 cp/parser.c:36992 #, gcc-internal-format msgid "%<__transaction_cancel%> without transactional memory support enabled" msgstr "" -#: c/c-parser.c:17766 cp/parser.c:36947 +#: c/c-parser.c:17788 cp/parser.c:36998 #, gcc-internal-format msgid "%<__transaction_cancel%> within a %<__transaction_relaxed%>" msgstr "" -#: c/c-parser.c:17775 cp/parser.c:36956 +#: c/c-parser.c:17797 cp/parser.c:37007 #, gcc-internal-format msgid "" "outer %<__transaction_cancel%> not within outer %<__transaction_atomic%>" msgstr "" -#: c/c-parser.c:17777 cp/parser.c:36959 +#: c/c-parser.c:17799 cp/parser.c:37010 #, gcc-internal-format msgid " or a %<transaction_may_cancel_outer%> function" msgstr "" -#: c/c-parser.c:17783 cp/parser.c:36965 +#: c/c-parser.c:17805 cp/parser.c:37016 #, gcc-internal-format msgid "%<__transaction_cancel%> not within %<__transaction_atomic%>" msgstr "" -#: c/c-parser.c:17851 cp/cp-array-notation.c:1407 +#: c/c-parser.c:17873 cp/cp-array-notation.c:1407 #, gcc-internal-format msgid "base of array section must be pointer or array type" msgstr "" -#: c/c-parser.c:17860 cp/parser.c:7011 +#: c/c-parser.c:17882 cp/parser.c:7013 #, gcc-internal-format msgid "expected %<:%> or numeral" msgstr "" -#: c/c-parser.c:17871 +#: c/c-parser.c:17893 #, gcc-internal-format msgid "" "start-index and length fields necessary for using array notations in pointers" msgstr "" -#: c/c-parser.c:17878 c/c-parser.c:17921 +#: c/c-parser.c:17900 c/c-parser.c:17943 #, gcc-internal-format msgid "array notations cannot be used with function type" msgstr "" -#: c/c-parser.c:17887 +#: c/c-parser.c:17909 #, gcc-internal-format msgid "" "start-index and length fields necessary for using array notations in " "dimensionless arrays" msgstr "" -#: c/c-parser.c:17899 +#: c/c-parser.c:17921 #, gcc-internal-format msgid "" "start-index and length fields necessary for using array notations in " "variable-length arrays" msgstr "" -#: c/c-parser.c:17949 c/c-parser.c:17952 +#: c/c-parser.c:17971 c/c-parser.c:17974 #, gcc-internal-format msgid "expected array notation expression" msgstr "" @@ -34137,7 +34236,7 @@ msgstr "" msgid "%qD has an incomplete type %qT" msgstr "" -#: c/c-typeck.c:231 c/c-typeck.c:9487 c/c-typeck.c:9529 cp/call.c:3968 +#: c/c-typeck.c:231 c/c-typeck.c:9500 c/c-typeck.c:9542 cp/call.c:3970 #, gcc-internal-format msgid "invalid use of void expression" msgstr "" @@ -34168,142 +34267,142 @@ msgstr "" msgid "%qT and %qT are in disjoint named address spaces" msgstr "" -#: c/c-typeck.c:568 c/c-typeck.c:593 +#: c/c-typeck.c:570 c/c-typeck.c:595 #, gcc-internal-format msgid "function types not truly compatible in ISO C" msgstr "" -#: c/c-typeck.c:737 +#: c/c-typeck.c:739 #, gcc-internal-format msgid "can%'t mix operands of decimal float and vector types" msgstr "" -#: c/c-typeck.c:742 +#: c/c-typeck.c:744 #, gcc-internal-format msgid "can%'t mix operands of decimal float and complex types" msgstr "" -#: c/c-typeck.c:747 +#: c/c-typeck.c:749 #, gcc-internal-format msgid "can%'t mix operands of decimal float and other float types" msgstr "" -#: c/c-typeck.c:1244 +#: c/c-typeck.c:1246 #, gcc-internal-format msgid "pointers to arrays with different qualifiers are incompatible in ISO C" msgstr "" -#: c/c-typeck.c:1248 +#: c/c-typeck.c:1250 #, gcc-internal-format msgid "types are not quite compatible" msgstr "" -#: c/c-typeck.c:1252 +#: c/c-typeck.c:1254 #, gcc-internal-format msgid "pointer target types incompatible in C++" msgstr "" -#: c/c-typeck.c:1584 +#: c/c-typeck.c:1586 #, gcc-internal-format msgid "function return types not compatible due to %<volatile%>" msgstr "" -#: c/c-typeck.c:1834 +#: c/c-typeck.c:1836 #, gcc-internal-format msgid "converting an array compound literal to a pointer is ill-formed in C++" msgstr "" -#: c/c-typeck.c:2345 +#: c/c-typeck.c:2347 #, gcc-internal-format msgid "%qT has no member named %qE; did you mean %qE?" msgstr "" -#: c/c-typeck.c:2348 +#: c/c-typeck.c:2350 #, gcc-internal-format msgid "%qT has no member named %qE" msgstr "" -#: c/c-typeck.c:2357 +#: c/c-typeck.c:2359 #, gcc-internal-format msgid "accessing a member %qE of an atomic structure %qE" msgstr "" -#: c/c-typeck.c:2360 +#: c/c-typeck.c:2362 #, gcc-internal-format msgid "accessing a member %qE of an atomic union %qE" msgstr "" -#: c/c-typeck.c:2420 +#: c/c-typeck.c:2422 #, gcc-internal-format msgid "%qE is a pointer; did you mean to use %<->%>?" msgstr "" -#: c/c-typeck.c:2426 +#: c/c-typeck.c:2428 #, gcc-internal-format msgid "request for member %qE in something not a structure or union" msgstr "" -#: c/c-typeck.c:2477 +#: c/c-typeck.c:2479 #, gcc-internal-format msgid "dereferencing pointer to incomplete type %qT" msgstr "" -#: c/c-typeck.c:2484 +#: c/c-typeck.c:2486 #, gcc-internal-format msgid "dereferencing %<void *%> pointer" msgstr "" -#: c/c-typeck.c:2537 +#: c/c-typeck.c:2539 #, gcc-internal-format msgid "rank of the array's index is greater than 1" msgstr "" -#: c/c-typeck.c:2550 +#: c/c-typeck.c:2552 #, gcc-internal-format msgid "subscripted value is neither array nor pointer nor vector" msgstr "" -#: c/c-typeck.c:2560 cp/typeck.c:3142 cp/typeck.c:3229 +#: c/c-typeck.c:2562 cp/typeck.c:3150 cp/typeck.c:3237 #, gcc-internal-format msgid "array subscript is not an integer" msgstr "" -#: c/c-typeck.c:2566 +#: c/c-typeck.c:2568 #, gcc-internal-format msgid "subscripted value is pointer to function" msgstr "" -#: c/c-typeck.c:2619 +#: c/c-typeck.c:2621 #, gcc-internal-format msgid "ISO C forbids subscripting %<register%> array" msgstr "" -#: c/c-typeck.c:2622 +#: c/c-typeck.c:2624 #, gcc-internal-format msgid "ISO C90 forbids subscripting non-lvalue array" msgstr "" -#: c/c-typeck.c:2736 +#: c/c-typeck.c:2738 #, gcc-internal-format msgid "enum constant defined here" msgstr "" -#: c/c-typeck.c:2842 cp/typeck.c:1638 +#: c/c-typeck.c:2844 cp/typeck.c:1638 #, gcc-internal-format msgid "%<sizeof%> on array function parameter %qE will return size of %qT" msgstr "" -#: c/c-typeck.c:2992 +#: c/c-typeck.c:2994 #, gcc-internal-format msgid "called object %qE is not a function or function pointer" msgstr "" -#: c/c-typeck.c:2997 +#: c/c-typeck.c:2999 #, gcc-internal-format msgid "called object %qD is not a function or function pointer" msgstr "" -#: c/c-typeck.c:3003 +#: c/c-typeck.c:3005 #, gcc-internal-format msgid "called object is not a function or function pointer" msgstr "" @@ -34311,373 +34410,373 @@ msgstr "" #. This situation leads to run-time undefined behavior. We can't, #. therefore, simply error unless we can prove that all possible #. executions of the program must execute the code. -#: c/c-typeck.c:3033 +#: c/c-typeck.c:3035 #, gcc-internal-format msgid "function called through a non-compatible type" msgstr "" -#: c/c-typeck.c:3038 c/c-typeck.c:3075 +#: c/c-typeck.c:3040 c/c-typeck.c:3087 #, gcc-internal-format msgid "function with qualified void return type called" msgstr "" -#: c/c-typeck.c:3199 +#: c/c-typeck.c:3211 #, gcc-internal-format msgid "too many arguments to method %qE" msgstr "" -#: c/c-typeck.c:3237 +#: c/c-typeck.c:3249 #, gcc-internal-format, gfc-internal-format msgid "type of formal parameter %d is incomplete" msgstr "" -#: c/c-typeck.c:3254 +#: c/c-typeck.c:3266 #, gcc-internal-format msgid "" "passing argument %d of %qE as integer rather than floating due to prototype" msgstr "" -#: c/c-typeck.c:3260 +#: c/c-typeck.c:3272 #, gcc-internal-format msgid "" "passing argument %d of %qE as integer rather than complex due to prototype" msgstr "" -#: c/c-typeck.c:3266 +#: c/c-typeck.c:3278 #, gcc-internal-format msgid "" "passing argument %d of %qE as complex rather than floating due to prototype" msgstr "" -#: c/c-typeck.c:3272 +#: c/c-typeck.c:3284 #, gcc-internal-format msgid "" "passing argument %d of %qE as floating rather than integer due to prototype" msgstr "" -#: c/c-typeck.c:3278 +#: c/c-typeck.c:3290 #, gcc-internal-format msgid "" "passing argument %d of %qE as complex rather than integer due to prototype" msgstr "" -#: c/c-typeck.c:3284 +#: c/c-typeck.c:3296 #, gcc-internal-format msgid "" "passing argument %d of %qE as floating rather than complex due to prototype" msgstr "" -#: c/c-typeck.c:3298 +#: c/c-typeck.c:3310 #, gcc-internal-format msgid "" "passing argument %d of %qE as %<float%> rather than %<double%> due to " "prototype" msgstr "" -#: c/c-typeck.c:3324 +#: c/c-typeck.c:3336 #, gcc-internal-format msgid "passing argument %d of %qE as %qT rather than %qT due to prototype" msgstr "" -#: c/c-typeck.c:3346 +#: c/c-typeck.c:3358 #, gcc-internal-format msgid "passing argument %d of %qE with different width due to prototype" msgstr "" -#: c/c-typeck.c:3370 +#: c/c-typeck.c:3382 #, gcc-internal-format msgid "passing argument %d of %qE as unsigned due to prototype" msgstr "" -#: c/c-typeck.c:3375 +#: c/c-typeck.c:3387 #, gcc-internal-format msgid "passing argument %d of %qE as signed due to prototype" msgstr "" -#: c/c-typeck.c:3411 cp/call.c:6766 +#: c/c-typeck.c:3423 cp/call.c:6769 #, gcc-internal-format msgid "implicit conversion from %qT to %qT when passing argument to function" msgstr "" -#: c/c-typeck.c:3603 c/c-typeck.c:3608 +#: c/c-typeck.c:3617 c/c-typeck.c:3622 cp/typeck.c:4534 cp/typeck.c:4776 #, gcc-internal-format msgid "comparison with string literal results in unspecified behavior" msgstr "" -#: c/c-typeck.c:3622 +#: c/c-typeck.c:3636 #, gcc-internal-format msgid "comparison between %qT and %qT" msgstr "" -#: c/c-typeck.c:3671 +#: c/c-typeck.c:3685 #, gcc-internal-format msgid "pointer of type %<void *%> used in subtraction" msgstr "" -#: c/c-typeck.c:3674 +#: c/c-typeck.c:3688 #, gcc-internal-format msgid "pointer to a function used in subtraction" msgstr "" -#: c/c-typeck.c:3686 +#: c/c-typeck.c:3700 #, gcc-internal-format msgid "arithmetic on pointer to an incomplete type" msgstr "" -#: c/c-typeck.c:3691 cp/typeck.c:5309 +#: c/c-typeck.c:3705 cp/typeck.c:5293 #, gcc-internal-format msgid "arithmetic on pointer to an empty aggregate" msgstr "" -#: c/c-typeck.c:4099 +#: c/c-typeck.c:4113 #, gcc-internal-format msgid "ISO C does not support %<~%> for complex conjugation" msgstr "" -#: c/c-typeck.c:4138 +#: c/c-typeck.c:4152 #, gcc-internal-format msgid "wrong type argument to unary exclamation mark" msgstr "" -#: c/c-typeck.c:4195 +#: c/c-typeck.c:4209 #, gcc-internal-format msgid "increment of enumeration value is invalid in C++" msgstr "" -#: c/c-typeck.c:4198 +#: c/c-typeck.c:4212 #, gcc-internal-format msgid "decrement of enumeration value is invalid in C++" msgstr "" -#: c/c-typeck.c:4214 +#: c/c-typeck.c:4228 #, gcc-internal-format msgid "ISO C does not support %<++%> and %<--%> on complex types" msgstr "" -#: c/c-typeck.c:4237 c/c-typeck.c:4271 +#: c/c-typeck.c:4251 c/c-typeck.c:4285 #, gcc-internal-format msgid "wrong type argument to increment" msgstr "" -#: c/c-typeck.c:4239 c/c-typeck.c:4274 +#: c/c-typeck.c:4253 c/c-typeck.c:4288 #, gcc-internal-format msgid "wrong type argument to decrement" msgstr "" -#: c/c-typeck.c:4259 +#: c/c-typeck.c:4273 #, gcc-internal-format msgid "increment of pointer to an incomplete type %qT" msgstr "" -#: c/c-typeck.c:4263 +#: c/c-typeck.c:4277 #, gcc-internal-format msgid "decrement of pointer to an incomplete type %qT" msgstr "" -#: c/c-typeck.c:4367 +#: c/c-typeck.c:4381 #, gcc-internal-format msgid "taking address of expression of type %<void%>" msgstr "" -#: c/c-typeck.c:4425 +#: c/c-typeck.c:4439 #, gcc-internal-format msgid "cannot take address of bit-field %qD" msgstr "" -#: c/c-typeck.c:4438 +#: c/c-typeck.c:4452 #, gcc-internal-format msgid "cannot take address of scalar with reverse storage order" msgstr "" -#: c/c-typeck.c:4445 +#: c/c-typeck.c:4459 #, gcc-internal-format msgid "address of array with reverse scalar storage order requested" msgstr "" -#: c/c-typeck.c:4617 +#: c/c-typeck.c:4631 #, gcc-internal-format msgid "global register variable %qD used in nested function" msgstr "" -#: c/c-typeck.c:4620 +#: c/c-typeck.c:4634 #, gcc-internal-format msgid "register variable %qD used in nested function" msgstr "" -#: c/c-typeck.c:4625 +#: c/c-typeck.c:4639 #, gcc-internal-format msgid "address of global register variable %qD requested" msgstr "" -#: c/c-typeck.c:4627 +#: c/c-typeck.c:4641 #, gcc-internal-format msgid "address of register variable %qD requested" msgstr "" -#: c/c-typeck.c:4728 +#: c/c-typeck.c:4742 #, gcc-internal-format msgid "non-lvalue array in conditional expression" msgstr "" -#: c/c-typeck.c:4784 cp/call.c:5086 +#: c/c-typeck.c:4798 cp/call.c:5089 #, gcc-internal-format msgid "" "implicit conversion from %qT to %qT to match other result of conditional" msgstr "" -#: c/c-typeck.c:4858 +#: c/c-typeck.c:4872 #, gcc-internal-format msgid "ISO C forbids conditional expr with only one void side" msgstr "" -#: c/c-typeck.c:4875 +#: c/c-typeck.c:4889 #, gcc-internal-format msgid "pointers to disjoint address spaces used in conditional expression" msgstr "" -#: c/c-typeck.c:4886 c/c-typeck.c:4903 +#: c/c-typeck.c:4900 c/c-typeck.c:4917 #, gcc-internal-format msgid "pointer to array loses qualifier in conditional expression" msgstr "" -#: c/c-typeck.c:4891 c/c-typeck.c:4908 +#: c/c-typeck.c:4905 c/c-typeck.c:4922 #, gcc-internal-format msgid "ISO C forbids conditional expr between %<void *%> and function pointer" msgstr "" -#: c/c-typeck.c:4921 +#: c/c-typeck.c:4935 #, gcc-internal-format msgid "pointer type mismatch in conditional expression" msgstr "" -#: c/c-typeck.c:4930 c/c-typeck.c:4941 +#: c/c-typeck.c:4944 c/c-typeck.c:4955 #, gcc-internal-format msgid "pointer/integer type mismatch in conditional expression" msgstr "" -#: c/c-typeck.c:5044 cp/typeck.c:6454 +#: c/c-typeck.c:5058 cp/typeck.c:6438 #, gcc-internal-format msgid "spawned function call cannot be part of a comma expression" msgstr "" -#: c/c-typeck.c:5078 +#: c/c-typeck.c:5092 #, gcc-internal-format msgid "left-hand operand of comma expression has no effect" msgstr "" -#: c/c-typeck.c:5096 c/c-typeck.c:10212 +#: c/c-typeck.c:5110 c/c-typeck.c:10225 #, gcc-internal-format msgid "right-hand operand of comma expression has no effect" msgstr "" -#: c/c-typeck.c:5165 +#: c/c-typeck.c:5179 msgid "cast adds %q#v qualifier to function type" msgstr "" -#: c/c-typeck.c:5171 +#: c/c-typeck.c:5185 msgid "cast discards %qv qualifier from pointer target type" msgstr "" -#: c/c-typeck.c:5206 +#: c/c-typeck.c:5220 #, gcc-internal-format msgid "" "to be safe all intermediate pointers in cast from %qT to %qT must be %<const" "%> qualified" msgstr "" -#: c/c-typeck.c:5243 +#: c/c-typeck.c:5257 #, gcc-internal-format msgid "cast specifies array type" msgstr "" -#: c/c-typeck.c:5249 +#: c/c-typeck.c:5263 #, gcc-internal-format msgid "cast specifies function type" msgstr "" -#: c/c-typeck.c:5264 +#: c/c-typeck.c:5278 #, gcc-internal-format msgid "ISO C forbids casting nonscalar to the same type" msgstr "" -#: c/c-typeck.c:5284 +#: c/c-typeck.c:5298 #, gcc-internal-format msgid "ISO C forbids casts to union type" msgstr "" -#: c/c-typeck.c:5294 +#: c/c-typeck.c:5308 #, gcc-internal-format msgid "cast to union type from type not present in union" msgstr "" -#: c/c-typeck.c:5329 +#: c/c-typeck.c:5343 #, gcc-internal-format, gfc-internal-format msgid "" "cast to %s address space pointer from disjoint generic address space pointer" msgstr "" -#: c/c-typeck.c:5334 +#: c/c-typeck.c:5348 #, gcc-internal-format, gfc-internal-format msgid "" "cast to generic address space pointer from disjoint %s address space pointer" msgstr "" -#: c/c-typeck.c:5339 +#: c/c-typeck.c:5353 #, gcc-internal-format, gfc-internal-format msgid "cast to %s address space pointer from disjoint %s address space pointer" msgstr "" -#: c/c-typeck.c:5358 +#: c/c-typeck.c:5372 #, gcc-internal-format msgid "cast increases required alignment of target type" msgstr "" -#: c/c-typeck.c:5369 +#: c/c-typeck.c:5383 #, gcc-internal-format msgid "cast from pointer to integer of different size" msgstr "" -#: c/c-typeck.c:5374 +#: c/c-typeck.c:5388 #, gcc-internal-format msgid "cast from function call of type %qT to non-matching type %qT" msgstr "" -#: c/c-typeck.c:5383 cp/typeck.c:7429 +#: c/c-typeck.c:5397 cp/typeck.c:7409 #, gcc-internal-format msgid "cast to pointer from integer of different size" msgstr "" -#: c/c-typeck.c:5397 +#: c/c-typeck.c:5411 #, gcc-internal-format msgid "ISO C forbids conversion of function pointer to object pointer type" msgstr "" -#: c/c-typeck.c:5406 +#: c/c-typeck.c:5420 #, gcc-internal-format msgid "ISO C forbids conversion of object pointer to function pointer type" msgstr "" -#: c/c-typeck.c:5493 +#: c/c-typeck.c:5507 #, gcc-internal-format msgid "defining a type in a cast is invalid in C++" msgstr "" -#: c/c-typeck.c:5535 +#: c/c-typeck.c:5549 #, gcc-internal-format msgid "assignment to expression with array type" msgstr "" -#: c/c-typeck.c:5658 c/c-typeck.c:6098 +#: c/c-typeck.c:5672 c/c-typeck.c:6112 #, gcc-internal-format msgid "enum conversion in assignment is invalid in C++" msgstr "" -#: c/c-typeck.c:5850 c/c-typeck.c:5868 c/c-typeck.c:5887 +#: c/c-typeck.c:5864 c/c-typeck.c:5882 c/c-typeck.c:5901 #, gcc-internal-format msgid "(near initialization for %qs)" msgstr "" -#: c/c-typeck.c:5902 +#: c/c-typeck.c:5916 #, gcc-internal-format msgid "array initialized from parenthesized string constant" msgstr "" @@ -34693,2102 +34792,2097 @@ msgstr "" #. strings are complete sentences, visible to gettext and checked at #. compile time. It is the same as PEDWARN_FOR_QUALIFIERS but uses #. warning_at instead of pedwarn. -#: c/c-typeck.c:5978 c/c-typeck.c:6007 c/c-typeck.c:6036 c/c-typeck.c:6614 +#: c/c-typeck.c:5992 c/c-typeck.c:6021 c/c-typeck.c:6050 c/c-typeck.c:6628 #, gcc-internal-format msgid "expected %qT but argument is of type %qT" msgstr "" -#: c/c-typeck.c:6096 +#: c/c-typeck.c:6110 #, gcc-internal-format msgid "enum conversion when passing argument %d of %qE is invalid in C++" msgstr "" -#: c/c-typeck.c:6100 c/c-typeck.c:8698 +#: c/c-typeck.c:6114 c/c-typeck.c:8710 #, gcc-internal-format msgid "enum conversion in initialization is invalid in C++" msgstr "" -#: c/c-typeck.c:6102 +#: c/c-typeck.c:6116 #, gcc-internal-format msgid "enum conversion in return is invalid in C++" msgstr "" -#: c/c-typeck.c:6133 +#: c/c-typeck.c:6147 #, gcc-internal-format msgid "cannot pass rvalue to reference parameter" msgstr "" -#: c/c-typeck.c:6266 c/c-typeck.c:6531 +#: c/c-typeck.c:6280 c/c-typeck.c:6545 msgid "" "passing argument %d of %qE makes %q#v qualified function pointer from " "unqualified" msgstr "" -#: c/c-typeck.c:6269 c/c-typeck.c:6534 +#: c/c-typeck.c:6283 c/c-typeck.c:6548 msgid "assignment makes %q#v qualified function pointer from unqualified" msgstr "" -#: c/c-typeck.c:6272 c/c-typeck.c:6536 +#: c/c-typeck.c:6286 c/c-typeck.c:6550 msgid "initialization makes %q#v qualified function pointer from unqualified" msgstr "" -#: c/c-typeck.c:6275 c/c-typeck.c:6538 +#: c/c-typeck.c:6289 c/c-typeck.c:6552 msgid "return makes %q#v qualified function pointer from unqualified" msgstr "" -#: c/c-typeck.c:6283 c/c-typeck.c:6450 c/c-typeck.c:6493 +#: c/c-typeck.c:6297 c/c-typeck.c:6464 c/c-typeck.c:6507 msgid "" "passing argument %d of %qE discards %qv qualifier from pointer target type" msgstr "" -#: c/c-typeck.c:6285 c/c-typeck.c:6452 c/c-typeck.c:6495 +#: c/c-typeck.c:6299 c/c-typeck.c:6466 c/c-typeck.c:6509 msgid "assignment discards %qv qualifier from pointer target type" msgstr "" -#: c/c-typeck.c:6287 c/c-typeck.c:6454 c/c-typeck.c:6497 +#: c/c-typeck.c:6301 c/c-typeck.c:6468 c/c-typeck.c:6511 msgid "initialization discards %qv qualifier from pointer target type" msgstr "" -#: c/c-typeck.c:6289 c/c-typeck.c:6456 c/c-typeck.c:6499 +#: c/c-typeck.c:6303 c/c-typeck.c:6470 c/c-typeck.c:6513 msgid "return discards %qv qualifier from pointer target type" msgstr "" -#: c/c-typeck.c:6298 +#: c/c-typeck.c:6312 #, gcc-internal-format msgid "ISO C prohibits argument conversion to union type" msgstr "" -#: c/c-typeck.c:6360 +#: c/c-typeck.c:6374 #, gcc-internal-format msgid "request for implicit conversion from %qT to %qT not permitted in C++" msgstr "" -#: c/c-typeck.c:6372 +#: c/c-typeck.c:6386 #, gcc-internal-format msgid "passing argument %d of %qE from pointer to non-enclosed address space" msgstr "" -#: c/c-typeck.c:6376 +#: c/c-typeck.c:6390 #, gcc-internal-format msgid "assignment from pointer to non-enclosed address space" msgstr "" -#: c/c-typeck.c:6380 +#: c/c-typeck.c:6394 #, gcc-internal-format msgid "initialization from pointer to non-enclosed address space" msgstr "" -#: c/c-typeck.c:6384 +#: c/c-typeck.c:6398 #, gcc-internal-format msgid "return from pointer to non-enclosed address space" msgstr "" -#: c/c-typeck.c:6402 +#: c/c-typeck.c:6416 #, gcc-internal-format msgid "argument %d of %qE might be a candidate for a format attribute" msgstr "" -#: c/c-typeck.c:6408 +#: c/c-typeck.c:6422 #, gcc-internal-format msgid "assignment left-hand side might be a candidate for a format attribute" msgstr "" -#: c/c-typeck.c:6413 +#: c/c-typeck.c:6427 #, gcc-internal-format msgid "" "initialization left-hand side might be a candidate for a format attribute" msgstr "" -#: c/c-typeck.c:6418 cp/typeck.c:8445 +#: c/c-typeck.c:6432 cp/typeck.c:8425 #, gcc-internal-format msgid "return type might be a candidate for a format attribute" msgstr "" -#: c/c-typeck.c:6467 +#: c/c-typeck.c:6481 #, gcc-internal-format msgid "" "ISO C forbids passing argument %d of %qE between function pointer and %<void " "*%>" msgstr "" -#: c/c-typeck.c:6470 +#: c/c-typeck.c:6484 #, gcc-internal-format msgid "ISO C forbids assignment between function pointer and %<void *%>" msgstr "" -#: c/c-typeck.c:6472 +#: c/c-typeck.c:6486 #, gcc-internal-format msgid "ISO C forbids initialization between function pointer and %<void *%>" msgstr "" -#: c/c-typeck.c:6474 +#: c/c-typeck.c:6488 #, gcc-internal-format msgid "ISO C forbids return between function pointer and %<void *%>" msgstr "" -#: c/c-typeck.c:6511 +#: c/c-typeck.c:6525 #, gcc-internal-format msgid "pointer targets in passing argument %d of %qE differ in signedness" msgstr "" -#: c/c-typeck.c:6513 +#: c/c-typeck.c:6527 #, gcc-internal-format msgid "pointer targets in assignment differ in signedness" msgstr "" -#: c/c-typeck.c:6515 +#: c/c-typeck.c:6529 #, gcc-internal-format msgid "pointer targets in initialization differ in signedness" msgstr "" -#: c/c-typeck.c:6517 +#: c/c-typeck.c:6531 #, gcc-internal-format msgid "pointer targets in return differ in signedness" msgstr "" -#: c/c-typeck.c:6548 +#: c/c-typeck.c:6562 #, gcc-internal-format msgid "passing argument %d of %qE from incompatible pointer type" msgstr "" -#: c/c-typeck.c:6550 +#: c/c-typeck.c:6564 #, gcc-internal-format msgid "assignment from incompatible pointer type" msgstr "" -#: c/c-typeck.c:6551 +#: c/c-typeck.c:6565 #, gcc-internal-format msgid "initialization from incompatible pointer type" msgstr "" -#: c/c-typeck.c:6553 +#: c/c-typeck.c:6567 #, gcc-internal-format msgid "return from incompatible pointer type" msgstr "" #. ??? This should not be an error when inlining calls to #. unprototyped functions. -#: c/c-typeck.c:6561 c/c-typeck.c:7055 cp/typeck.c:1992 +#: c/c-typeck.c:6575 c/c-typeck.c:7069 cp/typeck.c:1992 #, gcc-internal-format msgid "invalid use of non-lvalue array" msgstr "" -#: c/c-typeck.c:6572 +#: c/c-typeck.c:6586 #, gcc-internal-format msgid "passing argument %d of %qE makes pointer from integer without a cast" msgstr "" -#: c/c-typeck.c:6574 +#: c/c-typeck.c:6588 #, gcc-internal-format msgid "assignment makes pointer from integer without a cast" msgstr "" -#: c/c-typeck.c:6576 +#: c/c-typeck.c:6590 #, gcc-internal-format msgid "initialization makes pointer from integer without a cast" msgstr "" -#: c/c-typeck.c:6578 +#: c/c-typeck.c:6592 #, gcc-internal-format msgid "return makes pointer from integer without a cast" msgstr "" -#: c/c-typeck.c:6587 +#: c/c-typeck.c:6601 #, gcc-internal-format msgid "passing argument %d of %qE makes integer from pointer without a cast" msgstr "" -#: c/c-typeck.c:6589 +#: c/c-typeck.c:6603 #, gcc-internal-format msgid "assignment makes integer from pointer without a cast" msgstr "" -#: c/c-typeck.c:6591 +#: c/c-typeck.c:6605 #, gcc-internal-format msgid "initialization makes integer from pointer without a cast" msgstr "" -#: c/c-typeck.c:6593 +#: c/c-typeck.c:6607 #, gcc-internal-format msgid "return makes integer from pointer without a cast" msgstr "" -#: c/c-typeck.c:6617 +#: c/c-typeck.c:6631 #, gcc-internal-format msgid "incompatible types when assigning to type %qT from type %qT" msgstr "" -#: c/c-typeck.c:6622 +#: c/c-typeck.c:6636 #, gcc-internal-format msgid "incompatible types when initializing type %qT using type %qT" msgstr "" -#: c/c-typeck.c:6627 +#: c/c-typeck.c:6641 #, gcc-internal-format msgid "incompatible types when returning type %qT but %qT was expected" msgstr "" -#: c/c-typeck.c:6691 +#: c/c-typeck.c:6705 #, gcc-internal-format msgid "traditional C rejects automatic aggregate initialization" msgstr "" -#: c/c-typeck.c:6928 c/c-typeck.c:7810 cp/typeck2.c:1023 +#: c/c-typeck.c:6942 c/c-typeck.c:7821 cp/typeck2.c:1025 #, gcc-internal-format msgid "initialization of a flexible array member" msgstr "" -#: c/c-typeck.c:6938 cp/typeck2.c:1038 +#: c/c-typeck.c:6952 cp/typeck2.c:1040 #, gcc-internal-format msgid "char-array initialized from wide string" msgstr "" -#: c/c-typeck.c:6947 +#: c/c-typeck.c:6961 #, gcc-internal-format msgid "wide character array initialized from non-wide string" msgstr "" -#: c/c-typeck.c:6953 +#: c/c-typeck.c:6967 #, gcc-internal-format msgid "wide character array initialized from incompatible wide string" msgstr "" -#: c/c-typeck.c:6987 +#: c/c-typeck.c:7001 #, gcc-internal-format msgid "array of inappropriate type initialized from string constant" msgstr "" -#: c/c-typeck.c:7074 c/c-typeck.c:7098 c/c-typeck.c:7101 c/c-typeck.c:7109 -#: c/c-typeck.c:7149 c/c-typeck.c:8637 c/c-typeck.c:8671 +#: c/c-typeck.c:7088 c/c-typeck.c:7112 c/c-typeck.c:7115 c/c-typeck.c:7123 +#: c/c-typeck.c:7163 c/c-typeck.c:8649 c/c-typeck.c:8683 #, gcc-internal-format msgid "initializer element is not constant" msgstr "" -#: c/c-typeck.c:7083 +#: c/c-typeck.c:7097 #, gcc-internal-format msgid "array initialized from non-constant array expression" msgstr "" -#: c/c-typeck.c:7114 c/c-typeck.c:7162 c/c-typeck.c:8681 +#: c/c-typeck.c:7128 c/c-typeck.c:7176 c/c-typeck.c:8693 #, gcc-internal-format msgid "initializer element is not a constant expression" msgstr "" -#: c/c-typeck.c:7156 c/c-typeck.c:8676 +#: c/c-typeck.c:7170 c/c-typeck.c:8688 #, gcc-internal-format msgid "initializer element is not computable at load time" msgstr "" -#: c/c-typeck.c:7175 +#: c/c-typeck.c:7189 #, gcc-internal-format msgid "invalid initializer" msgstr "" -#: c/c-typeck.c:7450 cp/decl.c:6073 +#: c/c-typeck.c:7464 cp/decl.c:6080 #, gcc-internal-format msgid "opaque vector types cannot be initialized" msgstr "" -#: c/c-typeck.c:7669 +#: c/c-typeck.c:7680 #, gcc-internal-format msgid "extra brace group at end of initializer" msgstr "" -#: c/c-typeck.c:7747 +#: c/c-typeck.c:7758 #, gcc-internal-format msgid "braces around scalar initializer" msgstr "" -#: c/c-typeck.c:7807 c/c-typeck.c:9110 +#: c/c-typeck.c:7818 c/c-typeck.c:9122 #, gcc-internal-format msgid "initialization of flexible array member in a nested context" msgstr "" -#: c/c-typeck.c:7841 +#: c/c-typeck.c:7852 #, gcc-internal-format msgid "missing braces around initializer" msgstr "" -#: c/c-typeck.c:7863 +#: c/c-typeck.c:7874 #, gcc-internal-format msgid "missing initializer for field %qD of %qT" msgstr "" -#: c/c-typeck.c:7887 +#: c/c-typeck.c:7898 #, gcc-internal-format msgid "empty scalar initializer" msgstr "" -#: c/c-typeck.c:7892 +#: c/c-typeck.c:7903 #, gcc-internal-format msgid "extra elements in scalar initializer" msgstr "" -#: c/c-typeck.c:8004 c/c-typeck.c:8085 +#: c/c-typeck.c:8015 c/c-typeck.c:8097 #, gcc-internal-format msgid "array index in non-array initializer" msgstr "" -#: c/c-typeck.c:8009 c/c-typeck.c:8147 +#: c/c-typeck.c:8020 c/c-typeck.c:8159 #, gcc-internal-format msgid "field name not in record or union initializer" msgstr "" -#: c/c-typeck.c:8058 +#: c/c-typeck.c:8070 #, gcc-internal-format msgid "array index in initializer not of integer type" msgstr "" -#: c/c-typeck.c:8067 c/c-typeck.c:8076 +#: c/c-typeck.c:8079 c/c-typeck.c:8088 #, gcc-internal-format msgid "array index in initializer is not an integer constant expression" msgstr "" -#: c/c-typeck.c:8081 c/c-typeck.c:8083 +#: c/c-typeck.c:8093 c/c-typeck.c:8095 #, gcc-internal-format msgid "nonconstant array index in initializer" msgstr "" -#: c/c-typeck.c:8087 c/c-typeck.c:8090 +#: c/c-typeck.c:8099 c/c-typeck.c:8102 #, gcc-internal-format msgid "array index in initializer exceeds array bounds" msgstr "" -#: c/c-typeck.c:8109 +#: c/c-typeck.c:8121 #, gcc-internal-format msgid "empty index range in initializer" msgstr "" -#: c/c-typeck.c:8118 +#: c/c-typeck.c:8130 #, gcc-internal-format msgid "array index range in initializer exceeds array bounds" msgstr "" -#: c/c-typeck.c:8154 +#: c/c-typeck.c:8166 #, gcc-internal-format msgid "unknown field %qE specified in initializer" msgstr "" -#: c/c-typeck.c:8207 c/c-typeck.c:8237 c/c-typeck.c:8771 +#: c/c-typeck.c:8219 c/c-typeck.c:8249 c/c-typeck.c:8783 #, gcc-internal-format msgid "initialized field with side-effects overwritten" msgstr "" -#: c/c-typeck.c:8211 c/c-typeck.c:8241 c/c-typeck.c:8774 +#: c/c-typeck.c:8223 c/c-typeck.c:8253 c/c-typeck.c:8786 #, gcc-internal-format msgid "initialized field overwritten" msgstr "" -#: c/c-typeck.c:8993 +#: c/c-typeck.c:9005 #, gcc-internal-format msgid "excess elements in char array initializer" msgstr "" -#: c/c-typeck.c:9000 c/c-typeck.c:9069 +#: c/c-typeck.c:9012 c/c-typeck.c:9081 #, gcc-internal-format msgid "excess elements in struct initializer" msgstr "" -#: c/c-typeck.c:9015 +#: c/c-typeck.c:9027 #, gcc-internal-format msgid "" "positional initialization of field in %<struct%> declared with " "%<designated_init%> attribute" msgstr "" -#: c/c-typeck.c:9084 +#: c/c-typeck.c:9096 #, gcc-internal-format msgid "non-static initialization of a flexible array member" msgstr "" -#: c/c-typeck.c:9183 +#: c/c-typeck.c:9195 #, gcc-internal-format msgid "excess elements in union initializer" msgstr "" -#: c/c-typeck.c:9205 +#: c/c-typeck.c:9217 #, gcc-internal-format msgid "traditional C rejects initialization of unions" msgstr "" -#: c/c-typeck.c:9273 +#: c/c-typeck.c:9285 #, gcc-internal-format msgid "excess elements in array initializer" msgstr "" -#: c/c-typeck.c:9307 +#: c/c-typeck.c:9319 #, gcc-internal-format msgid "excess elements in vector initializer" msgstr "" -#: c/c-typeck.c:9339 +#: c/c-typeck.c:9351 #, gcc-internal-format msgid "excess elements in scalar initializer" msgstr "" -#: c/c-typeck.c:9578 +#: c/c-typeck.c:9591 #, gcc-internal-format msgid "ISO C forbids %<goto *expr;%>" msgstr "" -#: c/c-typeck.c:9606 cp/typeck.c:8674 +#: c/c-typeck.c:9619 cp/typeck.c:8654 #, gcc-internal-format msgid "function declared %<noreturn%> has a %<return%> statement" msgstr "" -#: c/c-typeck.c:9616 cp/cp-array-notation.c:1087 +#: c/c-typeck.c:9629 cp/cp-array-notation.c:1087 #, gcc-internal-format msgid "array notation expression cannot be used as a return value" msgstr "" -#: c/c-typeck.c:9623 cp/typeck.c:8665 +#: c/c-typeck.c:9636 cp/typeck.c:8645 #, gcc-internal-format msgid "use of %<_Cilk_spawn%> in a return statement is not allowed" msgstr "" -#: c/c-typeck.c:9651 c/c-typeck.c:9655 +#: c/c-typeck.c:9664 c/c-typeck.c:9668 #, gcc-internal-format msgid "%<return%> with no value, in function returning non-void" msgstr "" -#: c/c-typeck.c:9669 +#: c/c-typeck.c:9682 #, gcc-internal-format msgid "%<return%> with a value, in function returning void" msgstr "" -#: c/c-typeck.c:9672 +#: c/c-typeck.c:9685 #, gcc-internal-format msgid "ISO C forbids %<return%> with expression, in function returning void" msgstr "" -#: c/c-typeck.c:9748 +#: c/c-typeck.c:9761 #, gcc-internal-format msgid "function returns address of label" msgstr "" -#: c/c-typeck.c:9839 cp/semantics.c:1143 +#: c/c-typeck.c:9852 cp/semantics.c:1146 #, gcc-internal-format msgid "switch quantity not an integer" msgstr "" -#: c/c-typeck.c:9864 +#: c/c-typeck.c:9877 #, gcc-internal-format msgid "%<long%> switch expression not converted to %<int%> in ISO C" msgstr "" -#: c/c-typeck.c:9902 c/c-typeck.c:9910 +#: c/c-typeck.c:9915 c/c-typeck.c:9923 #, gcc-internal-format msgid "case label is not an integer constant expression" msgstr "" -#: c/c-typeck.c:9916 cp/parser.c:10618 +#: c/c-typeck.c:9929 cp/parser.c:10624 #, gcc-internal-format msgid "case label not within a switch statement" msgstr "" -#: c/c-typeck.c:9918 +#: c/c-typeck.c:9931 #, gcc-internal-format msgid "%<default%> label not within a switch statement" msgstr "" -#: c/c-typeck.c:9990 +#: c/c-typeck.c:10003 #, gcc-internal-format msgid "rank-mismatch between if-statement%'s condition and the then-block" msgstr "" -#: c/c-typeck.c:9996 +#: c/c-typeck.c:10009 #, gcc-internal-format msgid "rank-mismatch between if-statement%'s condition and the else-block" msgstr "" -#: c/c-typeck.c:10032 cp/parser.c:10949 +#: c/c-typeck.c:10045 cp/parser.c:10955 #, gcc-internal-format msgid "suggest explicit braces to avoid ambiguous %<else%>" msgstr "" -#: c/c-typeck.c:10154 cp/parser.c:11725 +#: c/c-typeck.c:10167 cp/parser.c:11745 #, gcc-internal-format msgid "break statement not within loop or switch" msgstr "" -#: c/c-typeck.c:10156 cp/parser.c:11751 +#: c/c-typeck.c:10169 cp/parser.c:11771 #, gcc-internal-format msgid "continue statement not within a loop" msgstr "" -#: c/c-typeck.c:10161 cp/parser.c:11738 +#: c/c-typeck.c:10174 cp/parser.c:11758 #, gcc-internal-format msgid "break statement used with OpenMP for loop" msgstr "" -#: c/c-typeck.c:10166 +#: c/c-typeck.c:10179 #, gcc-internal-format msgid "break statement within %<#pragma simd%> loop body" msgstr "" -#: c/c-typeck.c:10168 cp/parser.c:11755 +#: c/c-typeck.c:10181 cp/parser.c:11775 #, gcc-internal-format msgid "continue statement within %<#pragma simd%> loop body" msgstr "" -#: c/c-typeck.c:10194 cp/cp-gimplify.c:443 +#: c/c-typeck.c:10207 cp/cp-gimplify.c:444 #, gcc-internal-format msgid "statement with no effect" msgstr "" -#: c/c-typeck.c:10238 +#: c/c-typeck.c:10251 #, gcc-internal-format msgid "expression statement has incomplete type" msgstr "" -#: c/c-typeck.c:11039 c/c-typeck.c:11206 cp/typeck.c:4806 +#: c/c-typeck.c:11052 c/c-typeck.c:11209 cp/typeck.c:4790 #, gcc-internal-format msgid "comparing vectors with different element types" msgstr "" -#: c/c-typeck.c:11046 c/c-typeck.c:11213 cp/typeck.c:4818 +#: c/c-typeck.c:11059 c/c-typeck.c:11216 cp/typeck.c:4802 #, gcc-internal-format msgid "comparing vectors with different number of elements" msgstr "" -#: c/c-typeck.c:11077 cp/typeck.c:4488 +#: c/c-typeck.c:11090 cp/typeck.c:4528 #, gcc-internal-format msgid "comparing floating point with == or != is unsafe" msgstr "" -#: c/c-typeck.c:11091 c/c-typeck.c:11116 cp/typeck.c:4509 cp/typeck.c:4553 -#, gcc-internal-format -msgid "nonnull argument %qD compared to NULL" -msgstr "" - -#: c/c-typeck.c:11099 c/c-typeck.c:11124 +#: c/c-typeck.c:11107 c/c-typeck.c:11127 #, gcc-internal-format msgid "" "the comparison will always evaluate as %<false%> for the address of %qD will " "never be NULL" msgstr "" -#: c/c-typeck.c:11105 c/c-typeck.c:11130 +#: c/c-typeck.c:11113 c/c-typeck.c:11133 #, gcc-internal-format msgid "" "the comparison will always evaluate as %<true%> for the address of %qD will " "never be NULL" msgstr "" -#: c/c-typeck.c:11151 c/c-typeck.c:11271 +#: c/c-typeck.c:11154 c/c-typeck.c:11274 #, gcc-internal-format msgid "comparison of pointers to disjoint address spaces" msgstr "" -#: c/c-typeck.c:11158 c/c-typeck.c:11164 +#: c/c-typeck.c:11161 c/c-typeck.c:11167 #, gcc-internal-format msgid "ISO C forbids comparison of %<void *%> with function pointer" msgstr "" -#: c/c-typeck.c:11171 c/c-typeck.c:11281 +#: c/c-typeck.c:11174 c/c-typeck.c:11284 #, gcc-internal-format msgid "comparison of distinct pointer types lacks a cast" msgstr "" -#: c/c-typeck.c:11183 c/c-typeck.c:11188 c/c-typeck.c:11307 c/c-typeck.c:11312 +#: c/c-typeck.c:11186 c/c-typeck.c:11191 c/c-typeck.c:11310 c/c-typeck.c:11315 #, gcc-internal-format msgid "comparison between pointer and integer" msgstr "" -#: c/c-typeck.c:11259 +#: c/c-typeck.c:11262 #, gcc-internal-format msgid "comparison of complete and incomplete pointers" msgstr "" -#: c/c-typeck.c:11261 +#: c/c-typeck.c:11264 #, gcc-internal-format msgid "ISO C forbids ordered comparisons of pointers to functions" msgstr "" -#: c/c-typeck.c:11266 +#: c/c-typeck.c:11269 #, gcc-internal-format msgid "ordered comparison of pointer with null pointer" msgstr "" -#: c/c-typeck.c:11289 c/c-typeck.c:11292 c/c-typeck.c:11299 c/c-typeck.c:11302 -#: cp/typeck.c:4869 cp/typeck.c:4876 +#: c/c-typeck.c:11292 c/c-typeck.c:11295 c/c-typeck.c:11302 c/c-typeck.c:11305 +#: cp/typeck.c:4853 cp/typeck.c:4860 #, gcc-internal-format msgid "ordered comparison of pointer with integer zero" msgstr "" -#: c/c-typeck.c:11353 cp/typeck.c:4955 +#: c/c-typeck.c:11356 cp/typeck.c:4939 #, gcc-internal-format msgid "" "implicit conversion from %qT to %qT to match other operand of binary " "expression" msgstr "" -#: c/c-typeck.c:11666 +#: c/c-typeck.c:11669 #, gcc-internal-format msgid "used array that cannot be converted to pointer where scalar is required" msgstr "" -#: c/c-typeck.c:11670 +#: c/c-typeck.c:11673 #, gcc-internal-format msgid "used struct type value where scalar is required" msgstr "" -#: c/c-typeck.c:11674 +#: c/c-typeck.c:11677 #, gcc-internal-format msgid "used union type value where scalar is required" msgstr "" -#: c/c-typeck.c:11690 +#: c/c-typeck.c:11693 #, gcc-internal-format msgid "used vector type where scalar is required" msgstr "" -#: c/c-typeck.c:11880 cp/semantics.c:8449 +#: c/c-typeck.c:11883 cp/semantics.c:8506 #, gcc-internal-format msgid "" "%<#pragma omp cancel must specify one of %<parallel%>, %<for%>, %<sections%> " "or %<taskgroup%> clauses" msgstr "" -#: c/c-typeck.c:11919 cp/semantics.c:8486 +#: c/c-typeck.c:11922 cp/semantics.c:8543 #, gcc-internal-format msgid "" "%<#pragma omp cancellation point must specify one of %<parallel%>, %<for%>, " "%<sections%> or %<taskgroup%> clauses" msgstr "" -#: c/c-typeck.c:11969 c/c-typeck.c:13075 cp/semantics.c:4458 -#: cp/semantics.c:6572 +#: c/c-typeck.c:11972 c/c-typeck.c:13078 cp/semantics.c:4507 +#: cp/semantics.c:6621 #, gcc-internal-format msgid "bit-field %qE in %qs clause" msgstr "" -#: c/c-typeck.c:11978 c/c-typeck.c:13092 cp/semantics.c:4467 -#: cp/semantics.c:6589 +#: c/c-typeck.c:11981 c/c-typeck.c:13095 cp/semantics.c:4516 +#: cp/semantics.c:6638 #, gcc-internal-format msgid "%qE is a member of a union" msgstr "" -#: c/c-typeck.c:11988 cp/semantics.c:4479 cp/semantics.c:6612 +#: c/c-typeck.c:11991 cp/semantics.c:4528 cp/semantics.c:6661 #, gcc-internal-format msgid "%qD is not a variable in %qs clause" msgstr "" -#: c/c-typeck.c:11992 c/c-typeck.c:13109 cp/semantics.c:4483 -#: cp/semantics.c:6615 +#: c/c-typeck.c:11995 c/c-typeck.c:13112 cp/semantics.c:4532 +#: cp/semantics.c:6664 #, gcc-internal-format msgid "%qE is not a variable in %qs clause" msgstr "" -#: c/c-typeck.c:12000 c/c-typeck.c:13116 c/c-typeck.c:13201 -#: cp/semantics.c:4500 cp/semantics.c:6621 cp/semantics.c:6767 +#: c/c-typeck.c:12003 c/c-typeck.c:13119 c/c-typeck.c:13204 +#: cp/semantics.c:4549 cp/semantics.c:6670 cp/semantics.c:6824 #, gcc-internal-format msgid "%qD is threadprivate variable in %qs clause" msgstr "" -#: c/c-typeck.c:12022 cp/semantics.c:4531 +#: c/c-typeck.c:12025 cp/semantics.c:4580 #, gcc-internal-format msgid "low bound %qE of array section does not have integral type" msgstr "" -#: c/c-typeck.c:12029 cp/semantics.c:4538 +#: c/c-typeck.c:12032 cp/semantics.c:4587 #, gcc-internal-format msgid "length %qE of array section does not have integral type" msgstr "" -#: c/c-typeck.c:12056 c/c-typeck.c:12120 c/c-typeck.c:12378 -#: cp/semantics.c:4574 cp/semantics.c:4638 +#: c/c-typeck.c:12059 c/c-typeck.c:12123 c/c-typeck.c:12381 +#: cp/semantics.c:4623 cp/semantics.c:4687 #, gcc-internal-format msgid "zero length array section in %qs clause" msgstr "" -#: c/c-typeck.c:12075 cp/semantics.c:4593 +#: c/c-typeck.c:12078 cp/semantics.c:4642 #, gcc-internal-format msgid "for unknown bound array type length expression must be specified" msgstr "" -#: c/c-typeck.c:12083 cp/semantics.c:4601 +#: c/c-typeck.c:12086 cp/semantics.c:4650 #, gcc-internal-format msgid "negative low bound in array section in %qs clause" msgstr "" -#: c/c-typeck.c:12092 c/c-typeck.c:12202 cp/semantics.c:4610 -#: cp/semantics.c:4720 +#: c/c-typeck.c:12095 c/c-typeck.c:12205 cp/semantics.c:4659 +#: cp/semantics.c:4769 #, gcc-internal-format msgid "negative length in array section in %qs clause" msgstr "" -#: c/c-typeck.c:12109 cp/semantics.c:4627 +#: c/c-typeck.c:12112 cp/semantics.c:4676 #, gcc-internal-format msgid "low bound %qE above array section size in %qs clause" msgstr "" -#: c/c-typeck.c:12146 cp/semantics.c:4664 +#: c/c-typeck.c:12149 cp/semantics.c:4713 #, gcc-internal-format msgid "length %qE above array section size in %qs clause" msgstr "" -#: c/c-typeck.c:12161 cp/semantics.c:4679 +#: c/c-typeck.c:12164 cp/semantics.c:4728 #, gcc-internal-format msgid "high bound %qE above array section size in %qs clause" msgstr "" -#: c/c-typeck.c:12194 cp/semantics.c:4712 +#: c/c-typeck.c:12197 cp/semantics.c:4761 #, gcc-internal-format msgid "for pointer type length expression must be specified" msgstr "" -#: c/c-typeck.c:12212 c/c-typeck.c:12321 cp/semantics.c:4730 -#: cp/semantics.c:4842 +#: c/c-typeck.c:12215 c/c-typeck.c:12324 cp/semantics.c:4779 +#: cp/semantics.c:4891 #, gcc-internal-format msgid "array section is not contiguous in %qs clause" msgstr "" -#: c/c-typeck.c:12220 cp/semantics.c:4738 +#: c/c-typeck.c:12223 cp/semantics.c:4787 #, gcc-internal-format msgid "%qE does not have pointer or array type" msgstr "" -#: c/c-typeck.c:12598 c/c-typeck.c:12608 +#: c/c-typeck.c:12601 c/c-typeck.c:12611 #, gcc-internal-format msgid "%qD in %<reduction%> clause is a zero size array" msgstr "" -#: c/c-typeck.c:12666 +#: c/c-typeck.c:12669 #, gcc-internal-format msgid "%qE has invalid type for %<reduction(%s)%>" msgstr "" -#: c/c-typeck.c:12675 cp/semantics.c:5649 +#: c/c-typeck.c:12678 cp/semantics.c:5698 #, gcc-internal-format msgid "user defined reduction not found for %qE" msgstr "" -#: c/c-typeck.c:12763 +#: c/c-typeck.c:12766 #, gcc-internal-format msgid "variable length element type in array %<reduction%> clause" msgstr "" -#: c/c-typeck.c:12781 c/c-typeck.c:13259 cp/semantics.c:7083 +#: c/c-typeck.c:12784 c/c-typeck.c:13262 cp/semantics.c:7140 #, gcc-internal-format msgid "%<nowait%> clause must not be used together with %<copyprivate%>" msgstr "" -#: c/c-typeck.c:12793 cp/semantics.c:7123 +#: c/c-typeck.c:12796 cp/semantics.c:7180 #, gcc-internal-format msgid "%qE must be %<threadprivate%> for %<copyin%>" msgstr "" -#: c/c-typeck.c:12807 cp/semantics.c:5811 +#: c/c-typeck.c:12810 cp/semantics.c:5860 #, gcc-internal-format msgid "" "modifier should not be specified in %<linear%> clause on %<simd%> or %<for%> " "constructs" msgstr "" -#: c/c-typeck.c:12815 +#: c/c-typeck.c:12818 #, gcc-internal-format msgid "" "linear clause applied to non-integral non-pointer variable with type %qT" msgstr "" -#: c/c-typeck.c:12835 cp/semantics.c:5878 +#: c/c-typeck.c:12838 cp/semantics.c:5927 #, gcc-internal-format msgid "%<linear%> clause step %qE is neither constant nor a parameter" msgstr "" -#: c/c-typeck.c:12865 c/c-typeck.c:13194 cp/semantics.c:5962 -#: cp/semantics.c:6760 +#: c/c-typeck.c:12868 c/c-typeck.c:13197 cp/semantics.c:6011 +#: cp/semantics.c:6817 #, gcc-internal-format msgid "%qE is not a variable in clause %qs" msgstr "" -#: c/c-typeck.c:12874 c/c-typeck.c:12901 c/c-typeck.c:12927 +#: c/c-typeck.c:12877 c/c-typeck.c:12904 c/c-typeck.c:12930 #, gcc-internal-format msgid "%qE appears more than once in data clauses" msgstr "" -#: c/c-typeck.c:12880 c/c-typeck.c:12906 c/c-typeck.c:13150 c/c-typeck.c:13167 -#: cp/semantics.c:5976 cp/semantics.c:6028 cp/semantics.c:6666 -#: cp/semantics.c:6683 +#: c/c-typeck.c:12883 c/c-typeck.c:12909 c/c-typeck.c:13153 c/c-typeck.c:13170 +#: cp/semantics.c:6025 cp/semantics.c:6077 cp/semantics.c:6723 +#: cp/semantics.c:6740 #, gcc-internal-format msgid "%qD appears both in data and map clauses" msgstr "" -#: c/c-typeck.c:12894 cp/semantics.c:6017 +#: c/c-typeck.c:12897 cp/semantics.c:6066 #, gcc-internal-format msgid "%qE is not a variable in clause %<firstprivate%>" msgstr "" -#: c/c-typeck.c:12920 cp/semantics.c:6056 +#: c/c-typeck.c:12923 cp/semantics.c:6105 #, gcc-internal-format msgid "%qE is not a variable in clause %<lastprivate%>" msgstr "" -#: c/c-typeck.c:12939 cp/semantics.c:6406 +#: c/c-typeck.c:12942 cp/semantics.c:6455 #, gcc-internal-format msgid "%qE is not a variable in %<aligned%> clause" msgstr "" -#: c/c-typeck.c:12946 +#: c/c-typeck.c:12949 #, gcc-internal-format msgid "%qE in %<aligned%> clause is neither a pointer nor an array" msgstr "" -#: c/c-typeck.c:12953 +#: c/c-typeck.c:12956 #, gcc-internal-format msgid "%qE appears more than once in %<aligned%> clauses" msgstr "" -#: c/c-typeck.c:13008 cp/semantics.c:6488 +#: c/c-typeck.c:13011 cp/semantics.c:6537 #, gcc-internal-format msgid "%qE is not a variable in %<depend%> clause" msgstr "" -#: c/c-typeck.c:13030 cp/semantics.c:6519 +#: c/c-typeck.c:13033 cp/semantics.c:6568 #, gcc-internal-format msgid "array section does not have mappable type in %qs clause" msgstr "" -#: c/c-typeck.c:13047 c/c-typeck.c:13159 cp/semantics.c:6536 -#: cp/semantics.c:6675 +#: c/c-typeck.c:13050 c/c-typeck.c:13162 cp/semantics.c:6585 +#: cp/semantics.c:6732 #, gcc-internal-format msgid "%qD appears more than once in motion clauses" msgstr "" -#: c/c-typeck.c:13050 c/c-typeck.c:13161 cp/semantics.c:6539 -#: cp/semantics.c:6677 +#: c/c-typeck.c:13053 c/c-typeck.c:13164 cp/semantics.c:6588 +#: cp/semantics.c:6734 #, gcc-internal-format msgid "%qD appears more than once in map clauses" msgstr "" -#: c/c-typeck.c:13082 cp/semantics.c:6579 +#: c/c-typeck.c:13085 cp/semantics.c:6628 #, gcc-internal-format msgid "%qE does not have a mappable type in %qs clause" msgstr "" -#: c/c-typeck.c:13135 c/c-typeck.c:13208 cp/semantics.c:6651 -#: cp/semantics.c:6774 +#: c/c-typeck.c:13138 c/c-typeck.c:13211 cp/semantics.c:6700 +#: cp/semantics.c:6831 #, gcc-internal-format msgid "%qD does not have a mappable type in %qs clause" msgstr "" -#: c/c-typeck.c:13145 cp/semantics.c:5970 cp/semantics.c:6023 -#: cp/semantics.c:6062 cp/semantics.c:6661 +#: c/c-typeck.c:13148 cp/semantics.c:6019 cp/semantics.c:6072 +#: cp/semantics.c:6111 cp/semantics.c:6718 #, gcc-internal-format msgid "%qD appears more than once in data clauses" msgstr "" -#: c/c-typeck.c:13189 cp/semantics.c:6754 +#: c/c-typeck.c:13192 cp/semantics.c:6811 #, gcc-internal-format msgid "%qE is neither a variable nor a function name in clause %qs" msgstr "" -#: c/c-typeck.c:13217 cp/semantics.c:6783 +#: c/c-typeck.c:13220 cp/semantics.c:6840 #, gcc-internal-format msgid "%qE appears more than once on the same %<declare target%> directive" msgstr "" -#: c/c-typeck.c:13231 cp/semantics.c:6798 +#: c/c-typeck.c:13234 cp/semantics.c:6855 #, gcc-internal-format msgid "%qD is not an argument in %<uniform%> clause" msgstr "" -#: c/c-typeck.c:13234 cp/semantics.c:6800 +#: c/c-typeck.c:13237 cp/semantics.c:6857 #, gcc-internal-format msgid "%qE is not an argument in %<uniform%> clause" msgstr "" -#: c/c-typeck.c:13249 +#: c/c-typeck.c:13252 #, gcc-internal-format msgid "%qs variable is neither a pointer nor an array" msgstr "" -#: c/c-typeck.c:13324 cp/semantics.c:6216 +#: c/c-typeck.c:13327 cp/semantics.c:6265 #, gcc-internal-format msgid "%<nonmonotonic%> modifier specified for %qs schedule kind" msgstr "" -#: c/c-typeck.c:13355 cp/semantics.c:6975 +#: c/c-typeck.c:13358 cp/semantics.c:7032 #, gcc-internal-format msgid "%<inbranch%> clause is incompatible with %<notinbranch%>" msgstr "" -#: c/c-typeck.c:13405 cp/semantics.c:7166 +#: c/c-typeck.c:13408 cp/semantics.c:7223 #, gcc-internal-format msgid "%qE is predetermined %qs for %qs" msgstr "" -#: c/c-typeck.c:13425 cp/semantics.c:7057 +#: c/c-typeck.c:13428 cp/semantics.c:7114 #, gcc-internal-format msgid "%<simdlen%> clause value is bigger than %<safelen%> clause value" msgstr "" -#: c/c-typeck.c:13437 cp/semantics.c:7070 +#: c/c-typeck.c:13440 cp/semantics.c:7127 #, gcc-internal-format msgid "" "%<nonmonotonic%> schedule modifier specified together with %<ordered%> clause" msgstr "" -#: c/c-typeck.c:13455 cp/semantics.c:7037 +#: c/c-typeck.c:13458 cp/semantics.c:7094 #, gcc-internal-format msgid "" "%<linear%> clause step is a parameter %qD not specified in %<uniform%> clause" msgstr "" -#: c/c-typeck.c:13583 +#: c/c-typeck.c:13586 #, gcc-internal-format msgid "cannot use %<va_arg%> with reverse storage order" msgstr "" -#: c/c-typeck.c:13588 +#: c/c-typeck.c:13591 #, gcc-internal-format msgid "second argument to %<va_arg%> is of incomplete type %qT" msgstr "" -#: c/c-typeck.c:13594 +#: c/c-typeck.c:13597 #, gcc-internal-format msgid "C++ requires promoted type, not enum type, in %<va_arg%>" msgstr "" #. A bad conversion for 'this' must be discarding cv-quals. -#: cp/call.c:3311 +#: cp/call.c:3313 #, gcc-internal-format msgid " passing %qT as %<this%> argument discards qualifiers" msgstr "" -#: cp/call.c:3315 +#: cp/call.c:3317 #, gcc-internal-format msgid " no known conversion for implicit %<this%> parameter from %qT to %qT" msgstr "" -#: cp/call.c:3322 +#: cp/call.c:3324 #, gcc-internal-format, gfc-internal-format msgid " conversion of argument %d would be ill-formed:" msgstr "" #. Conversion of conversion function return value failed. -#: cp/call.c:3329 +#: cp/call.c:3331 #, gcc-internal-format msgid " no known conversion from %qT to %qT" msgstr "" -#: cp/call.c:3332 +#: cp/call.c:3334 #, gcc-internal-format msgid " no known conversion for argument %d from %qT to %qT" msgstr "" -#: cp/call.c:3343 cp/pt.c:6088 +#: cp/call.c:3345 cp/pt.c:6094 #, gcc-internal-format, gfc-internal-format msgid " candidate expects %d argument, %d provided" msgid_plural " candidate expects %d arguments, %d provided" msgstr[0] "" msgstr[1] "" -#: cp/call.c:3368 +#: cp/call.c:3370 #, gcc-internal-format msgid "%s%D(%T, %T, %T) <built-in>" msgstr "" -#: cp/call.c:3373 +#: cp/call.c:3375 #, gcc-internal-format msgid "%s%D(%T, %T) <built-in>" msgstr "" -#: cp/call.c:3377 +#: cp/call.c:3379 #, gcc-internal-format msgid "%s%D(%T) <built-in>" msgstr "" -#: cp/call.c:3381 +#: cp/call.c:3383 #, gcc-internal-format msgid "%s%T <conversion>" msgstr "" -#: cp/call.c:3383 +#: cp/call.c:3385 #, gcc-internal-format msgid "%s%#D <near match>" msgstr "" -#: cp/call.c:3385 +#: cp/call.c:3387 #, gcc-internal-format msgid "%s%#D <deleted>" msgstr "" -#: cp/call.c:3387 +#: cp/call.c:3389 #, gcc-internal-format msgid "%s%#D" msgstr "" -#: cp/call.c:3406 +#: cp/call.c:3408 #, gcc-internal-format msgid "" " return type %qT of explicit conversion function cannot be converted to %qT " "with a qualification conversion" msgstr "" -#: cp/call.c:3412 +#: cp/call.c:3414 #, gcc-internal-format msgid "" " conversion from return type %qT of template conversion function " "specialization to %qT is not an exact match" msgstr "" -#: cp/call.c:3423 +#: cp/call.c:3425 #, gcc-internal-format msgid "" " substitution of deduced template arguments resulted in errors seen above" msgstr "" #. Re-run template unification with diagnostics. -#: cp/call.c:3428 +#: cp/call.c:3430 #, gcc-internal-format msgid " template argument deduction/substitution failed:" msgstr "" -#: cp/call.c:3442 +#: cp/call.c:3444 #, gcc-internal-format msgid "" " a constructor taking a single argument of its own class type is invalid" msgstr "" -#: cp/call.c:3806 +#: cp/call.c:3808 #, gcc-internal-format msgid "conversion from %qT to %qT is ambiguous" msgstr "" -#: cp/call.c:3933 +#: cp/call.c:3935 #, gcc-internal-format msgid "" "conversion from %qT to %qT not considered for non-type template argument" msgstr "" -#: cp/call.c:4051 +#: cp/call.c:4053 #, gcc-internal-format msgid "no matching function for call to %<%D(%A)%>" msgstr "" -#: cp/call.c:4054 +#: cp/call.c:4056 #, gcc-internal-format msgid "call of overloaded %<%D(%A)%> is ambiguous" msgstr "" #. It's no good looking for an overloaded operator() on a #. pointer-to-member-function. -#: cp/call.c:4289 +#: cp/call.c:4291 #, gcc-internal-format msgid "" "pointer-to-member function %E cannot be called without an object; consider " "using .* or ->*" msgstr "" -#: cp/call.c:4360 +#: cp/call.c:4362 #, gcc-internal-format msgid "no match for call to %<(%T) (%A)%>" msgstr "" -#: cp/call.c:4373 +#: cp/call.c:4375 #, gcc-internal-format msgid "call of %<(%T) (%A)%> is ambiguous" msgstr "" -#: cp/call.c:4421 +#: cp/call.c:4423 #, gcc-internal-format msgid "ambiguous overload for " msgstr "" -#: cp/call.c:4422 +#: cp/call.c:4424 #, gcc-internal-format msgid "no match for " msgstr "" -#: cp/call.c:4425 +#: cp/call.c:4427 #, gcc-internal-format msgid " (operand types are %qT, %qT, and %qT)" msgstr "" -#: cp/call.c:4427 +#: cp/call.c:4429 #, gcc-internal-format msgid " (operand types are %qT and %qT)" msgstr "" -#: cp/call.c:4429 +#: cp/call.c:4431 #, gcc-internal-format msgid " (operand type is %qT)" msgstr "" -#: cp/call.c:4449 +#: cp/call.c:4451 #, gcc-internal-format msgid "ternary %<operator?:%>" msgstr "" -#: cp/call.c:4453 +#: cp/call.c:4455 #, gcc-internal-format msgid "ternary %<operator?:%> in %<%E ? %E : %E%>" msgstr "" -#: cp/call.c:4462 cp/call.c:4493 cp/call.c:4502 +#: cp/call.c:4464 cp/call.c:4495 cp/call.c:4504 #, gcc-internal-format msgid "%<operator%s%>" msgstr "" -#: cp/call.c:4465 +#: cp/call.c:4467 #, gcc-internal-format msgid "%<operator%s%> in %<%E%s%>" msgstr "" -#: cp/call.c:4472 +#: cp/call.c:4474 #, gcc-internal-format msgid "%<operator[]%>" msgstr "" -#: cp/call.c:4475 +#: cp/call.c:4477 #, gcc-internal-format msgid "%<operator[]%> in %<%E[%E]%>" msgstr "" -#: cp/call.c:4483 +#: cp/call.c:4485 #, gcc-internal-format msgid "%qs" msgstr "" -#: cp/call.c:4486 +#: cp/call.c:4488 #, gcc-internal-format msgid "%qs in %<%s %E%>" msgstr "" -#: cp/call.c:4496 +#: cp/call.c:4498 #, gcc-internal-format msgid "%<operator%s%> in %<%E %s %E%>" msgstr "" -#: cp/call.c:4505 +#: cp/call.c:4507 #, gcc-internal-format msgid "%<operator%s%> in %<%s%E%>" msgstr "" -#: cp/call.c:4614 +#: cp/call.c:4616 #, gcc-internal-format msgid "ISO C++ forbids omitting the middle term of a ?: expression" msgstr "" -#: cp/call.c:4672 +#: cp/call.c:4675 #, gcc-internal-format msgid "" "inferred scalar type %qT is not an integer or floating point type of the " "same size as %qT" msgstr "" -#: cp/call.c:4749 +#: cp/call.c:4752 #, gcc-internal-format msgid "incompatible vector types in conditional expression: %qT, %qT and %qT" msgstr "" -#: cp/call.c:4839 +#: cp/call.c:4842 #, gcc-internal-format msgid "" "second operand to the conditional operator is of type %<void%>, but the " "third operand is neither a throw-expression nor of type %<void%>" msgstr "" -#: cp/call.c:4844 +#: cp/call.c:4847 #, gcc-internal-format msgid "" "third operand to the conditional operator is of type %<void%>, but the " "second operand is neither a throw-expression nor of type %<void%>" msgstr "" -#: cp/call.c:4895 cp/call.c:5011 cp/call.c:5154 +#: cp/call.c:4898 cp/call.c:5014 cp/call.c:5157 #, gcc-internal-format msgid "operands to ?: have different types %qT and %qT" msgstr "" -#: cp/call.c:4898 +#: cp/call.c:4901 #, gcc-internal-format msgid " and each type can be converted to the other" msgstr "" -#: cp/call.c:5099 +#: cp/call.c:5102 #, gcc-internal-format msgid "enumeral mismatch in conditional expression: %qT vs %qT" msgstr "" -#: cp/call.c:5111 +#: cp/call.c:5114 #, gcc-internal-format msgid "enumeral and non-enumeral type in conditional expression" msgstr "" -#: cp/call.c:5574 +#: cp/call.c:5577 #, gcc-internal-format msgid "no %<%D(int)%> declared for postfix %qs, trying prefix operator instead" msgstr "" -#: cp/call.c:5576 +#: cp/call.c:5579 #, gcc-internal-format msgid "no %<%D(int)%> declared for postfix %qs" msgstr "" -#: cp/call.c:5682 +#: cp/call.c:5685 #, gcc-internal-format msgid "comparison between %q#T and %q#T" msgstr "" -#: cp/call.c:5953 +#: cp/call.c:5956 #, gcc-internal-format msgid "" "exception cleanup for this placement new selects non-placement operator " "delete" msgstr "" -#: cp/call.c:5956 +#: cp/call.c:5959 #, gcc-internal-format msgid "" "%qD is a usual (non-placement) deallocation function in C++14 (or with -" "fsized-deallocation)" msgstr "" -#: cp/call.c:5991 +#: cp/call.c:5994 #, gcc-internal-format msgid "%qD is a usual (non-placement) deallocation function" msgstr "" -#: cp/call.c:6108 +#: cp/call.c:6111 #, gcc-internal-format msgid "no corresponding deallocation function for %qD" msgstr "" -#: cp/call.c:6114 +#: cp/call.c:6117 #, gcc-internal-format msgid "no suitable %<operator %s%> for %qT" msgstr "" -#: cp/call.c:6136 +#: cp/call.c:6139 #, gcc-internal-format msgid "%q#D is private within this context" msgstr "" -#: cp/call.c:6138 +#: cp/call.c:6141 #, gcc-internal-format msgid "declared private here" msgstr "" -#: cp/call.c:6142 +#: cp/call.c:6145 #, gcc-internal-format msgid "%q#D is protected within this context" msgstr "" -#: cp/call.c:6144 +#: cp/call.c:6147 #, gcc-internal-format msgid "declared protected here" msgstr "" -#: cp/call.c:6148 +#: cp/call.c:6151 #, gcc-internal-format msgid "%q#D is inaccessible within this context" msgstr "" -#: cp/call.c:6201 +#: cp/call.c:6204 #, gcc-internal-format msgid "passing NULL to non-pointer argument %P of %qD" msgstr "" -#: cp/call.c:6205 +#: cp/call.c:6208 #, gcc-internal-format msgid "converting to non-pointer type %qT from NULL" msgstr "" -#: cp/call.c:6214 +#: cp/call.c:6217 #, gcc-internal-format msgid "converting %<false%> to pointer type for argument %P of %qD" msgstr "" -#: cp/call.c:6218 +#: cp/call.c:6221 #, gcc-internal-format msgid "converting %<false%> to pointer type %qT" msgstr "" -#: cp/call.c:6281 +#: cp/call.c:6284 #, gcc-internal-format msgid "too many braces around initializer for %qT" msgstr "" -#: cp/call.c:6292 +#: cp/call.c:6295 #, gcc-internal-format msgid "converting to %qT from %qT requires direct-initialization" msgstr "" -#: cp/call.c:6300 +#: cp/call.c:6303 #, gcc-internal-format msgid "invalid user-defined conversion from %qT to %qT" msgstr "" -#: cp/call.c:6317 cp/call.c:6341 cp/call.c:6459 cp/call.c:6551 cp/call.c:6593 -#: cp/call.c:6621 +#: cp/call.c:6320 cp/call.c:6344 cp/call.c:6462 cp/call.c:6554 cp/call.c:6596 +#: cp/call.c:6624 #, gcc-internal-format msgid " initializing argument %P of %qD" msgstr "" -#: cp/call.c:6337 cp/cvt.c:224 +#: cp/call.c:6340 cp/cvt.c:224 #, gcc-internal-format msgid "invalid conversion from %qT to %qT" msgstr "" -#: cp/call.c:6371 cp/call.c:6378 +#: cp/call.c:6374 cp/call.c:6381 #, gcc-internal-format msgid "" "converting to %qT from initializer list would use explicit constructor %qD" msgstr "" -#: cp/call.c:6374 +#: cp/call.c:6377 #, gcc-internal-format msgid "in C++11 and above a default constructor can be explicit" msgstr "" -#: cp/call.c:6607 +#: cp/call.c:6610 #, gcc-internal-format msgid "cannot bind %qT lvalue to %qT" msgstr "" -#: cp/call.c:6611 cp/call.c:9934 +#: cp/call.c:6614 cp/call.c:9945 #, gcc-internal-format msgid "" "invalid initialization of non-const reference of type %qT from an rvalue of " "type %qT" msgstr "" -#: cp/call.c:6614 +#: cp/call.c:6617 #, gcc-internal-format msgid "binding %qT to reference of type %qT discards qualifiers" msgstr "" -#: cp/call.c:6650 +#: cp/call.c:6653 #, gcc-internal-format msgid "cannot bind bitfield %qE to %qT" msgstr "" -#: cp/call.c:6653 cp/call.c:6670 +#: cp/call.c:6656 cp/call.c:6673 #, gcc-internal-format msgid "cannot bind packed field %qE to %qT" msgstr "" -#: cp/call.c:6656 +#: cp/call.c:6659 #, gcc-internal-format msgid "cannot bind rvalue %qE to %qT" msgstr "" -#: cp/call.c:6783 cp/cvt.c:1737 +#: cp/call.c:6786 cp/cvt.c:1738 #, gcc-internal-format msgid "" "scoped enum %qT passed through ... as %qT before -fabi-version=6, %qT after" msgstr "" -#: cp/call.c:6824 +#: cp/call.c:6827 #, gcc-internal-format msgid "" "passing objects of non-trivially-copyable type %q#T through %<...%> is " "conditionally supported" msgstr "" -#: cp/call.c:6855 +#: cp/call.c:6858 #, gcc-internal-format msgid "cannot receive reference type %qT through %<...%>" msgstr "" -#: cp/call.c:6865 +#: cp/call.c:6868 #, gcc-internal-format msgid "" "receiving objects of non-trivially-copyable type %q#T through %<...%> is " "conditionally-supported" msgstr "" -#: cp/call.c:6925 +#: cp/call.c:6928 #, gcc-internal-format msgid "recursive evaluation of default argument for %q#D" msgstr "" -#: cp/call.c:6934 +#: cp/call.c:6937 #, gcc-internal-format msgid "" "call to %qD uses the default argument for parameter %P, which is not yet " "defined" msgstr "" -#: cp/call.c:7036 +#: cp/call.c:7039 #, gcc-internal-format msgid "argument of function call might be a candidate for a format attribute" msgstr "" -#: cp/call.c:7083 +#: cp/call.c:7088 #, gcc-internal-format msgid "use of multiversioned function without a default" msgstr "" -#: cp/call.c:7364 +#: cp/call.c:7369 #, gcc-internal-format msgid "passing %qT as %<this%> argument discards qualifiers" msgstr "" -#: cp/call.c:7367 cp/call.c:7483 cp/call.c:9164 cp/name-lookup.c:5710 +#: cp/call.c:7372 cp/call.c:7488 cp/call.c:9175 cp/name-lookup.c:5728 #, gcc-internal-format msgid " in call to %qD" msgstr "" -#: cp/call.c:7397 +#: cp/call.c:7402 #, gcc-internal-format msgid "%qT is not an accessible base of %qT" msgstr "" -#: cp/call.c:7479 +#: cp/call.c:7484 #, gcc-internal-format msgid "deducing %qT as %qT" msgstr "" -#: cp/call.c:7485 +#: cp/call.c:7490 #, gcc-internal-format msgid " (you can disable this with -fno-deduce-init-list)" msgstr "" -#: cp/call.c:7851 +#: cp/call.c:7866 #, gcc-internal-format msgid "could not find class$ field in java interface type %qT" msgstr "" -#: cp/call.c:8026 +#: cp/call.c:8037 #, gcc-internal-format msgid "constructor delegates to itself" msgstr "" -#: cp/call.c:8116 +#: cp/call.c:8127 #, gcc-internal-format msgid "call to non-function %qD" msgstr "" -#: cp/call.c:8162 cp/typeck.c:2775 +#: cp/call.c:8173 cp/pt.c:13654 cp/typeck.c:2783 #, gcc-internal-format msgid "cannot call constructor %<%T::%D%> directly" msgstr "" -#: cp/call.c:8164 +#: cp/call.c:8175 #, gcc-internal-format msgid "for a function-style cast, remove the redundant %<::%D%>" msgstr "" -#: cp/call.c:8294 +#: cp/call.c:8305 #, gcc-internal-format msgid "no matching function for call to %<%T::operator %T(%A)%#V%>" msgstr "" -#: cp/call.c:8307 +#: cp/call.c:8318 #, gcc-internal-format msgid "no matching function for call to %<%T::%s(%A)%#V%>" msgstr "" -#: cp/call.c:8333 +#: cp/call.c:8344 #, gcc-internal-format msgid "no matching function for call to %<%s(%A)%>" msgstr "" -#: cp/call.c:8336 +#: cp/call.c:8347 #, gcc-internal-format msgid "call of overloaded %<%s(%A)%> is ambiguous" msgstr "" -#: cp/call.c:8357 +#: cp/call.c:8368 #, gcc-internal-format msgid "pure virtual %q#D called from non-static data member initializer" msgstr "" -#: cp/call.c:8383 +#: cp/call.c:8394 #, gcc-internal-format msgid "cannot call member function %qD without object" msgstr "" -#: cp/call.c:9162 +#: cp/call.c:9173 #, gcc-internal-format msgid "passing %qT chooses %qT over %qT" msgstr "" -#: cp/call.c:9222 +#: cp/call.c:9233 #, gcc-internal-format msgid "choosing %qD over %qD" msgstr "" -#: cp/call.c:9223 +#: cp/call.c:9234 #, gcc-internal-format msgid " for conversion from %qT to %qT" msgstr "" -#: cp/call.c:9226 +#: cp/call.c:9237 #, gcc-internal-format msgid " because conversion sequence for the argument is better" msgstr "" -#: cp/call.c:9388 +#: cp/call.c:9399 #, gcc-internal-format msgid "default argument mismatch in overload resolution" msgstr "" -#: cp/call.c:9392 +#: cp/call.c:9403 #, gcc-internal-format msgid " candidate 1: %q+#F" msgstr "" -#: cp/call.c:9394 +#: cp/call.c:9405 #, gcc-internal-format msgid " candidate 2: %q+#F" msgstr "" -#: cp/call.c:9439 +#: cp/call.c:9450 #, gcc-internal-format msgid "" "ISO C++ says that these are ambiguous, even though the worst conversion for " "the first is better than the worst conversion for the second:" msgstr "" -#: cp/call.c:9617 +#: cp/call.c:9628 #, gcc-internal-format msgid "could not convert %qE from %qT to %qT" msgstr "" -#: cp/call.c:9811 +#: cp/call.c:9822 #, gcc-internal-format msgid "a temporary bound to %qD only persists until the constructor exits" msgstr "" -#: cp/call.c:9938 +#: cp/call.c:9949 #, gcc-internal-format msgid "" "invalid initialization of reference of type %qT from expression of type %qT" msgstr "" -#: cp/class.c:305 +#: cp/class.c:323 #, gcc-internal-format msgid "" "cannot convert from pointer to base class %qT to pointer to derived class " "%qT because the base is virtual" msgstr "" -#: cp/class.c:309 +#: cp/class.c:327 #, gcc-internal-format msgid "" "cannot convert from base class %qT to derived class %qT because the base is " "virtual" msgstr "" -#: cp/class.c:316 +#: cp/class.c:334 #, gcc-internal-format msgid "" "cannot convert from pointer to base class %qT to pointer to derived class " "%qT via virtual base %qT" msgstr "" -#: cp/class.c:321 +#: cp/class.c:339 #, gcc-internal-format msgid "" "cannot convert from base class %qT to derived class %qT via virtual base %qT" msgstr "" -#: cp/class.c:1036 +#: cp/class.c:1054 #, gcc-internal-format msgid "Java class %qT cannot have a destructor" msgstr "" -#: cp/class.c:1038 +#: cp/class.c:1056 #, gcc-internal-format msgid "Java class %qT cannot have an implicit non-trivial destructor" msgstr "" -#: cp/class.c:1174 +#: cp/class.c:1192 #, gcc-internal-format msgid "%q#D inherited from %qT" msgstr "" -#: cp/class.c:1177 +#: cp/class.c:1195 #, gcc-internal-format msgid "conflicts with version inherited from %qT" msgstr "" -#: cp/class.c:1191 +#: cp/class.c:1209 #, gcc-internal-format msgid "%q+#D cannot be overloaded" msgstr "" -#: cp/class.c:1192 +#: cp/class.c:1210 #, gcc-internal-format msgid "with %q+#D" msgstr "" -#: cp/class.c:1265 +#: cp/class.c:1283 #, gcc-internal-format msgid "conflicting access specifications for method %q+D, ignored" msgstr "" -#: cp/class.c:1268 +#: cp/class.c:1286 #, gcc-internal-format msgid "conflicting access specifications for field %qE, ignored" msgstr "" -#: cp/class.c:1331 cp/class.c:1339 +#: cp/class.c:1349 cp/class.c:1357 #, gcc-internal-format msgid "%q+D invalid in %q#T" msgstr "" -#: cp/class.c:1332 +#: cp/class.c:1350 #, gcc-internal-format msgid " because of local method %q+#D with same name" msgstr "" -#: cp/class.c:1340 +#: cp/class.c:1358 #, gcc-internal-format msgid " because of local member %q+#D with same name" msgstr "" -#: cp/class.c:1395 +#: cp/class.c:1413 #, gcc-internal-format msgid "%qD inherits the %E ABI tag that %qT (used in its return type) has" msgstr "" -#: cp/class.c:1398 cp/class.c:1404 cp/class.c:1410 cp/class.c:1421 +#: cp/class.c:1416 cp/class.c:1422 cp/class.c:1428 cp/class.c:1439 #, gcc-internal-format msgid "%qT declared here" msgstr "" -#: cp/class.c:1402 +#: cp/class.c:1420 #, gcc-internal-format msgid "%qD inherits the %E ABI tag that %qT (used in its type) has" msgstr "" -#: cp/class.c:1408 +#: cp/class.c:1426 #, gcc-internal-format msgid "%qT does not have the %E ABI tag that base %qT has" msgstr "" -#: cp/class.c:1415 +#: cp/class.c:1433 #, gcc-internal-format msgid "%qT does not have the %E ABI tag that %qT (used in the type of %qD) has" msgstr "" -#: cp/class.c:1690 +#: cp/class.c:1717 #, gcc-internal-format msgid "cannot derive from %<final%> base %qT in derived type %qT" msgstr "" -#: cp/class.c:2115 +#: cp/class.c:2163 #, gcc-internal-format msgid "all member functions in class %qT are private" msgstr "" -#: cp/class.c:2127 +#: cp/class.c:2175 #, gcc-internal-format msgid "%q#T only defines a private destructor and has no friends" msgstr "" -#: cp/class.c:2172 +#: cp/class.c:2220 #, gcc-internal-format msgid "%q#T only defines private constructors and has no friends" msgstr "" -#: cp/class.c:2565 +#: cp/class.c:2613 #, gcc-internal-format msgid "no unique final overrider for %qD in %qT" msgstr "" -#: cp/class.c:2926 +#: cp/class.c:2974 #, gcc-internal-format msgid "%qD can be marked override" msgstr "" -#: cp/class.c:2938 +#: cp/class.c:2986 #, gcc-internal-format msgid "%q+#D marked %<final%>, but is not virtual" msgstr "" -#: cp/class.c:2940 +#: cp/class.c:2988 #, gcc-internal-format msgid "%q+#D marked %<override%>, but does not override" msgstr "" -#: cp/class.c:3010 +#: cp/class.c:3058 #, gcc-internal-format msgid "%qD was hidden" msgstr "" -#: cp/class.c:3012 +#: cp/class.c:3060 #, gcc-internal-format msgid " by %qD" msgstr "" -#: cp/class.c:3046 cp/decl2.c:1538 +#: cp/class.c:3094 cp/decl2.c:1538 #, gcc-internal-format msgid "%q#D invalid; an anonymous union can only have non-static data members" msgstr "" -#: cp/class.c:3050 +#: cp/class.c:3098 #, gcc-internal-format msgid "%q#D invalid; an anonymous struct can only have non-static data members" msgstr "" -#: cp/class.c:3062 cp/decl2.c:1545 +#: cp/class.c:3110 cp/decl2.c:1545 #, gcc-internal-format msgid "private member %q#D in anonymous union" msgstr "" -#: cp/class.c:3065 +#: cp/class.c:3113 #, gcc-internal-format msgid "private member %q#D in anonymous struct" msgstr "" -#: cp/class.c:3071 cp/decl2.c:1548 +#: cp/class.c:3119 cp/decl2.c:1548 #, gcc-internal-format msgid "protected member %q#D in anonymous union" msgstr "" -#: cp/class.c:3074 +#: cp/class.c:3122 #, gcc-internal-format msgid "protected member %q#D in anonymous struct" msgstr "" -#: cp/class.c:3253 +#: cp/class.c:3301 #, gcc-internal-format msgid "the ellipsis in %qD is not inherited" msgstr "" -#: cp/class.c:3428 +#: cp/class.c:3476 #, gcc-internal-format msgid "bit-field %q+#D with non-integral type" msgstr "" -#: cp/class.c:3444 +#: cp/class.c:3492 #, gcc-internal-format msgid "bit-field %q+D width not an integer constant" msgstr "" -#: cp/class.c:3449 +#: cp/class.c:3497 #, gcc-internal-format msgid "negative width in bit-field %q+D" msgstr "" -#: cp/class.c:3454 +#: cp/class.c:3502 #, gcc-internal-format msgid "zero width for bit-field %q+D" msgstr "" -#: cp/class.c:3464 +#: cp/class.c:3512 #, gcc-internal-format msgid "width of %qD exceeds its type" msgstr "" -#: cp/class.c:3469 +#: cp/class.c:3517 #, gcc-internal-format msgid "%qD is too small to hold all values of %q#T" msgstr "" -#: cp/class.c:3529 +#: cp/class.c:3577 #, gcc-internal-format msgid "member %q+#D with constructor not allowed in union" msgstr "" -#: cp/class.c:3532 +#: cp/class.c:3580 #, gcc-internal-format msgid "member %q+#D with destructor not allowed in union" msgstr "" -#: cp/class.c:3534 +#: cp/class.c:3582 #, gcc-internal-format msgid "member %q+#D with copy assignment operator not allowed in union" msgstr "" -#: cp/class.c:3538 +#: cp/class.c:3586 #, gcc-internal-format msgid "unrestricted unions only available with -std=c++11 or -std=gnu++11" msgstr "" -#: cp/class.c:3575 +#: cp/class.c:3623 #, gcc-internal-format msgid "multiple fields in union %qT initialized" msgstr "" -#: cp/class.c:3663 +#: cp/class.c:3711 #, gcc-internal-format msgid "in C++98 %q+D may not be static because it is a member of a union" msgstr "" -#: cp/class.c:3669 +#: cp/class.c:3717 #, gcc-internal-format msgid "" "in C++98 %q+D may not have reference type %qT because it is a member of a " "union" msgstr "" -#: cp/class.c:3679 +#: cp/class.c:3727 #, gcc-internal-format msgid "field %q+D invalidly declared function type" msgstr "" -#: cp/class.c:3685 +#: cp/class.c:3733 #, gcc-internal-format msgid "field %q+D invalidly declared method type" msgstr "" -#: cp/class.c:3745 +#: cp/class.c:3793 #, gcc-internal-format msgid "ignoring packed attribute because of unpacked non-POD field %q#D" msgstr "" -#: cp/class.c:3793 +#: cp/class.c:3841 #, gcc-internal-format msgid "member %q+D cannot be declared both %<const%> and %<mutable%>" msgstr "" -#: cp/class.c:3799 +#: cp/class.c:3847 #, gcc-internal-format msgid "member %q+D cannot be declared as a %<mutable%> reference" msgstr "" -#: cp/class.c:3861 +#: cp/class.c:3909 #, gcc-internal-format msgid "field %q#D with same name as class" msgstr "" -#: cp/class.c:3884 +#: cp/class.c:3932 #, gcc-internal-format msgid "%q#T has pointer data members" msgstr "" -#: cp/class.c:3889 +#: cp/class.c:3937 #, gcc-internal-format msgid " but does not override %<%T(const %T&)%>" msgstr "" -#: cp/class.c:3891 +#: cp/class.c:3939 #, gcc-internal-format msgid " or %<operator=(const %T&)%>" msgstr "" -#: cp/class.c:3895 +#: cp/class.c:3943 #, gcc-internal-format msgid " but does not override %<operator=(const %T&)%>" msgstr "" -#: cp/class.c:4301 +#: cp/class.c:4347 #, gcc-internal-format msgid "alignment of %qD increased in -fabi-version=9 (GCC 5.2)" msgstr "" -#: cp/class.c:4304 +#: cp/class.c:4350 #, gcc-internal-format msgid "alignment of %qD will increase in -fabi-version=9" msgstr "" -#: cp/class.c:4558 +#: cp/class.c:4604 #, gcc-internal-format msgid "initializer specified for non-virtual method %q+D" msgstr "" -#: cp/class.c:4995 +#: cp/class.c:5041 #, gcc-internal-format msgid "method overrides both %<transaction_pure%> and %qE methods" msgstr "" -#: cp/class.c:5016 +#: cp/class.c:5062 #, gcc-internal-format msgid "method declared %qE overriding %qE method" msgstr "" -#: cp/class.c:5595 cp/constexpr.c:217 +#: cp/class.c:5641 cp/constexpr.c:217 #, gcc-internal-format msgid "" "enclosing class of constexpr non-static member function %q+#D is not a " "literal type" msgstr "" -#: cp/class.c:5620 +#: cp/class.c:5666 #, gcc-internal-format msgid "%q+T is not literal because:" msgstr "" -#: cp/class.c:5622 +#: cp/class.c:5668 #, gcc-internal-format msgid " %q+T has a non-trivial destructor" msgstr "" -#: cp/class.c:5627 +#: cp/class.c:5673 #, gcc-internal-format msgid "" " %q+T is not an aggregate, does not have a trivial default constructor, and " "has no constexpr constructor that is not a copy or move constructor" msgstr "" -#: cp/class.c:5662 +#: cp/class.c:5708 #, gcc-internal-format msgid " base class %qT of %q+T is non-literal" msgstr "" -#: cp/class.c:5677 +#: cp/class.c:5723 #, gcc-internal-format msgid " non-static data member %qD has non-literal type" msgstr "" -#: cp/class.c:5684 +#: cp/class.c:5730 #, gcc-internal-format msgid " non-static data member %qD has volatile type" msgstr "" -#: cp/class.c:5802 +#: cp/class.c:5848 #, gcc-internal-format msgid "base class %q#T has accessible non-virtual destructor" msgstr "" -#: cp/class.c:5831 +#: cp/class.c:5877 #, gcc-internal-format msgid "non-static reference %q#D in class without a constructor" msgstr "" -#: cp/class.c:5837 +#: cp/class.c:5883 #, gcc-internal-format msgid "non-static const member %q#D in class without a constructor" msgstr "" #. If the function is defaulted outside the class, we just #. give the synthesis error. -#: cp/class.c:5863 +#: cp/class.c:5909 #, gcc-internal-format msgid "" "%q+D declared to take const reference, but implicit declaration would take " "non-const" msgstr "" -#: cp/class.c:6140 +#: cp/class.c:6186 #, gcc-internal-format msgid "direct base %qT inaccessible in %qT due to ambiguity" msgstr "" -#: cp/class.c:6152 +#: cp/class.c:6198 #, gcc-internal-format msgid "virtual base %qT inaccessible in %qT due to ambiguity" msgstr "" -#: cp/class.c:6380 +#: cp/class.c:6426 #, gcc-internal-format msgid "" "offset of %qD is not ABI-compliant and may change in a future version of GCC" msgstr "" -#: cp/class.c:6535 +#: cp/class.c:6581 #, gcc-internal-format msgid "size of type %qT is too large (%qE bytes)" msgstr "" -#: cp/class.c:6744 +#: cp/class.c:6786 #, gcc-internal-format msgid "zero-size array member %qD not at end of %q#T" msgstr "" -#: cp/class.c:6746 +#: cp/class.c:6788 #, gcc-internal-format msgid "zero-size array member %qD in an otherwise empty %q#T" msgstr "" -#: cp/class.c:6751 cp/class.c:6774 +#: cp/class.c:6793 cp/class.c:6816 #, gcc-internal-format msgid "in the definition of %q#T" msgstr "" -#: cp/class.c:6756 +#: cp/class.c:6798 #, gcc-internal-format msgid "flexible array member %qD not at end of %q#T" msgstr "" -#: cp/class.c:6758 +#: cp/class.c:6800 #, gcc-internal-format msgid "flexible array member %qD in an otherwise empty %q#T" msgstr "" -#: cp/class.c:6771 +#: cp/class.c:6813 #, gcc-internal-format msgid "next member %q#D declared here" msgstr "" -#: cp/class.c:6868 cp/decl.c:12877 cp/parser.c:21917 +#: cp/class.c:6910 cp/decl.c:12913 cp/parser.c:21949 #, gcc-internal-format msgid "redefinition of %q#T" msgstr "" -#: cp/class.c:7014 +#: cp/class.c:7056 #, gcc-internal-format msgid "%q#T has virtual functions and accessible non-virtual destructor" msgstr "" -#: cp/class.c:7042 +#: cp/class.c:7084 #, gcc-internal-format msgid "type transparent %q#T does not have any fields" msgstr "" -#: cp/class.c:7048 +#: cp/class.c:7090 #, gcc-internal-format msgid "type transparent class %qT has base classes" msgstr "" -#: cp/class.c:7052 +#: cp/class.c:7094 #, gcc-internal-format msgid "type transparent class %qT has virtual functions" msgstr "" -#: cp/class.c:7058 +#: cp/class.c:7100 #, gcc-internal-format msgid "" "type transparent %q#T cannot be made transparent because the type of the " "first field has a different ABI from the class overall" msgstr "" -#: cp/class.c:7222 +#: cp/class.c:7264 #, gcc-internal-format msgid "" "definition of std::initializer_list does not match #include " "<initializer_list>" msgstr "" -#: cp/class.c:7233 +#: cp/class.c:7275 #, gcc-internal-format msgid "trying to finish struct, but kicked out due to previous parse errors" msgstr "" -#: cp/class.c:7769 +#: cp/class.c:7811 #, gcc-internal-format msgid "language string %<\"%E\"%> not recognized" msgstr "" -#: cp/class.c:7859 +#: cp/class.c:7901 #, gcc-internal-format msgid "cannot resolve overloaded function %qD based on conversion to type %qT" msgstr "" -#: cp/class.c:8006 +#: cp/class.c:8048 #, gcc-internal-format msgid "no matches converting function %qD to type %q#T" msgstr "" -#: cp/class.c:8034 +#: cp/class.c:8076 #, gcc-internal-format msgid "converting overloaded function %qD to type %q#T is ambiguous" msgstr "" -#: cp/class.c:8061 +#: cp/class.c:8103 #, gcc-internal-format msgid "assuming pointer to member %qD" msgstr "" -#: cp/class.c:8064 +#: cp/class.c:8106 #, gcc-internal-format msgid "(a pointer to member can only be formed with %<&%E%>)" msgstr "" -#: cp/class.c:8139 cp/class.c:8174 +#: cp/class.c:8181 cp/class.c:8216 #, gcc-internal-format msgid "not enough type information" msgstr "" -#: cp/class.c:8157 cp/cvt.c:171 cp/cvt.c:198 cp/cvt.c:247 +#: cp/class.c:8199 cp/cvt.c:171 cp/cvt.c:198 cp/cvt.c:247 #, gcc-internal-format msgid "cannot convert %qE from type %qT to type %qT" msgstr "" @@ -36798,12 +36892,12 @@ msgstr "" #. A name N used in a class S shall refer to the same declaration #. in its context and when re-evaluated in the completed scope of #. S. -#: cp/class.c:8435 +#: cp/class.c:8477 #, gcc-internal-format msgid "declaration of %q#D" msgstr "" -#: cp/class.c:8437 +#: cp/class.c:8479 #, gcc-internal-format msgid "changes meaning of %qD from %q#D" msgstr "" @@ -36843,270 +36937,281 @@ msgstr "" msgid "constexpr constructor does not have empty body" msgstr "" -#: cp/constexpr.c:573 +#: cp/constexpr.c:584 #, gcc-internal-format msgid "body of %<constexpr%> constructor cannot be a function-try-block" msgstr "" -#: cp/constexpr.c:704 +#: cp/constexpr.c:715 #, gcc-internal-format msgid "" "%<constexpr%> constructor for union %qT must initialize exactly one non-" "static data member" msgstr "" -#: cp/constexpr.c:744 +#: cp/constexpr.c:755 #, gcc-internal-format msgid "" "member %qD must be initialized by mem-initializer in %<constexpr%> " "constructor" msgstr "" -#: cp/constexpr.c:776 +#: cp/constexpr.c:787 #, gcc-internal-format msgid "body of constexpr function %qD not a return-statement" msgstr "" -#: cp/constexpr.c:830 +#: cp/constexpr.c:841 #, gcc-internal-format msgid "%qD is not usable as a constexpr function because:" msgstr "" -#: cp/constexpr.c:1185 cp/constexpr.c:4304 +#: cp/constexpr.c:1295 cp/constexpr.c:4591 #, gcc-internal-format msgid "call to internal function" msgstr "" -#: cp/constexpr.c:1203 +#: cp/constexpr.c:1313 #, gcc-internal-format msgid "expression %qE does not designate a constexpr function" msgstr "" -#: cp/constexpr.c:1221 cp/constexpr.c:4321 +#: cp/constexpr.c:1331 cp/constexpr.c:4608 #, gcc-internal-format msgid "call to non-constexpr function %qD" msgstr "" +#: cp/constexpr.c:1393 +#, gcc-internal-format +msgid "%qD called in a constant expression before its definition is complete" +msgstr "" + #. The definition of fun was somehow unsuitable. -#: cp/constexpr.c:1265 +#: cp/constexpr.c:1398 #, gcc-internal-format msgid "%qD called in a constant expression" msgstr "" -#: cp/constexpr.c:1269 +#: cp/constexpr.c:1402 #, gcc-internal-format msgid "%qD used before its definition" msgstr "" -#: cp/constexpr.c:1322 +#: cp/constexpr.c:1442 #, gcc-internal-format msgid "call has circular dependency" msgstr "" -#: cp/constexpr.c:1333 +#: cp/constexpr.c:1453 #, gcc-internal-format, gfc-internal-format msgid "" "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to " "increase the maximum)" msgstr "" -#: cp/constexpr.c:1394 +#: cp/constexpr.c:1525 #, gcc-internal-format msgid "constexpr call flows off the end of the function" msgstr "" -#: cp/constexpr.c:1466 +#: cp/constexpr.c:1605 #, gcc-internal-format msgid "%q+E is not a constant expression" msgstr "" -#: cp/constexpr.c:1506 +#: cp/constexpr.c:1645 #, gcc-internal-format msgid "right operand of shift expression %q+E is negative" msgstr "" -#: cp/constexpr.c:1513 +#: cp/constexpr.c:1652 #, gcc-internal-format msgid "" "right operand of shift expression %q+E is >= than the precision of the left " "operand" msgstr "" -#: cp/constexpr.c:1531 +#: cp/constexpr.c:1670 #, gcc-internal-format msgid "left operand of shift expression %q+E is negative" msgstr "" -#: cp/constexpr.c:1550 +#: cp/constexpr.c:1689 #, gcc-internal-format msgid "shift expression %q+E overflows" msgstr "" -#: cp/constexpr.c:1831 +#: cp/constexpr.c:1956 #, gcc-internal-format -msgid "negative array subscript" +msgid "" +"array subscript value %qE is outside the bounds of array %qD of type %qT" msgstr "" -#: cp/constexpr.c:1844 +#: cp/constexpr.c:1961 #, gcc-internal-format -msgid "array subscript out of bound" +msgid "array subscript value %qE is outside the bounds of array type %qT" msgstr "" -#: cp/constexpr.c:1869 +#: cp/constexpr.c:2050 #, gcc-internal-format msgid "accessing uninitialized array element" msgstr "" -#: cp/constexpr.c:1924 cp/constexpr.c:2003 cp/constexpr.c:3305 +#: cp/constexpr.c:2105 cp/constexpr.c:2189 cp/constexpr.c:3561 #, gcc-internal-format msgid "%qE is not a constant expression" msgstr "" -#: cp/constexpr.c:1930 +#: cp/constexpr.c:2111 #, gcc-internal-format msgid "mutable %qD is not usable in a constant expression" msgstr "" -#: cp/constexpr.c:1951 +#: cp/constexpr.c:2132 #, gcc-internal-format msgid "" "accessing %qD member instead of initialized %qD member in constant expression" msgstr "" -#: cp/constexpr.c:1963 +#: cp/constexpr.c:2149 #, gcc-internal-format msgid "accessing uninitialized member %qD" msgstr "" -#: cp/constexpr.c:2648 +#: cp/constexpr.c:2867 #, gcc-internal-format msgid "accessing value of %qE through a %qT glvalue in a constant expression" msgstr "" -#: cp/constexpr.c:2689 +#: cp/constexpr.c:2908 #, gcc-internal-format msgid "the value of %qD is not usable in a constant expression" msgstr "" -#: cp/constexpr.c:2696 +#: cp/constexpr.c:2915 #, gcc-internal-format msgid "%qD used in its own initializer" msgstr "" -#: cp/constexpr.c:2701 +#: cp/constexpr.c:2920 #, gcc-internal-format msgid "%q#D is not const" msgstr "" -#: cp/constexpr.c:2704 +#: cp/constexpr.c:2923 #, gcc-internal-format msgid "%q#D is volatile" msgstr "" -#: cp/constexpr.c:2708 +#: cp/constexpr.c:2928 #, gcc-internal-format msgid "%qD was not initialized with a constant expression" msgstr "" -#: cp/constexpr.c:2717 +#: cp/constexpr.c:2937 #, gcc-internal-format msgid "%qD was not declared %<constexpr%>" msgstr "" -#: cp/constexpr.c:2720 +#: cp/constexpr.c:2940 #, gcc-internal-format msgid "%qD does not have integral or enumeration type" msgstr "" -#: cp/constexpr.c:2828 +#: cp/constexpr.c:3048 #, gcc-internal-format msgid "modification of %qE is not a constant-expression" msgstr "" -#: cp/constexpr.c:3349 cp/constexpr.c:4673 +#: cp/constexpr.c:3607 cp/constexpr.c:4960 #, gcc-internal-format msgid "temporary of non-literal type %qT in a constant expression" msgstr "" -#: cp/constexpr.c:3670 +#: cp/constexpr.c:3931 #, gcc-internal-format msgid "a reinterpret_cast is not a constant-expression" msgstr "" -#: cp/constexpr.c:3681 cp/constexpr.c:4411 +#: cp/constexpr.c:3942 cp/constexpr.c:4698 #, gcc-internal-format msgid "reinterpret_cast from integer to pointer" msgstr "" -#: cp/constexpr.c:3741 cp/constexpr.c:4562 cp/constexpr.c:4841 +#: cp/constexpr.c:4002 cp/constexpr.c:4849 cp/constexpr.c:5136 #, gcc-internal-format msgid "expression %qE is not a constant-expression" msgstr "" -#: cp/constexpr.c:3811 +#: cp/constexpr.c:4072 #, gcc-internal-format msgid "statement is not a constant-expression" msgstr "" -#: cp/constexpr.c:3814 +#: cp/constexpr.c:4075 #, gcc-internal-format msgid "unexpected expression %qE of kind %s" msgstr "" -#: cp/constexpr.c:3881 +#: cp/constexpr.c:4145 #, gcc-internal-format msgid "" "%qE is not a constant expression because it refers to mutable subobjects of " "%qT" msgstr "" -#: cp/constexpr.c:3894 +#: cp/constexpr.c:4158 #, gcc-internal-format msgid "" "conversion from pointer type %qT to arithmetic type %qT in a constant-" "expression" msgstr "" -#: cp/constexpr.c:4240 +#: cp/constexpr.c:4527 #, gcc-internal-format msgid "expression %qE has side-effects" msgstr "" -#: cp/constexpr.c:4437 +#: cp/constexpr.c:4724 #, gcc-internal-format msgid "" "address-of an object %qE with thread local or automatic storage is not a " "constant expression" msgstr "" -#: cp/constexpr.c:4469 +#: cp/constexpr.c:4756 #, gcc-internal-format msgid "use of %<this%> in a constant expression" msgstr "" -#: cp/constexpr.c:4574 +#: cp/constexpr.c:4861 #, gcc-internal-format msgid "" "typeid-expression is not a constant expression because %qE is of polymorphic " "type" msgstr "" -#: cp/constexpr.c:4636 +#: cp/constexpr.c:4923 #, gcc-internal-format msgid "cast to non-integral type %qT in a constant expression" msgstr "" -#: cp/constexpr.c:4721 +#: cp/constexpr.c:5008 #, gcc-internal-format msgid "division by zero is not a constant-expression" msgstr "" -#: cp/constexpr.c:4849 +#: cp/constexpr.c:5113 +#, gcc-internal-format +msgid "%<delete[]%> is not a constant-expression" +msgstr "" + +#: cp/constexpr.c:5144 #, gcc-internal-format msgid "non-constant array initialization" msgstr "" -#: cp/constexpr.c:4866 +#: cp/constexpr.c:5161 #, gcc-internal-format, gfc-internal-format msgid "unexpected AST of kind %s" msgstr "" @@ -37181,17 +37286,17 @@ msgstr "" msgid "try statements are not allowed inside loops marked with #pragma simd" msgstr "" -#: cp/cp-gimplify.c:1343 +#: cp/cp-gimplify.c:1355 #, gcc-internal-format msgid "throw will always call terminate()" msgstr "" -#: cp/cp-gimplify.c:1346 +#: cp/cp-gimplify.c:1358 #, gcc-internal-format msgid "in C++11 destructors default to noexcept" msgstr "" -#: cp/cp-gimplify.c:1357 +#: cp/cp-gimplify.c:1369 #, gcc-internal-format msgid "" "in C++11 this throw will terminate because destructors default to noexcept" @@ -37232,7 +37337,7 @@ msgstr "" msgid "conversion from %qT to %qT discards qualifiers" msgstr "" -#: cp/cvt.c:489 cp/typeck.c:7008 +#: cp/cvt.c:489 cp/typeck.c:6988 #, gcc-internal-format msgid "casting %qT to %qT does not dereference pointer" msgstr "" @@ -37242,349 +37347,349 @@ msgstr "" msgid "cannot convert type %qT to type %qT" msgstr "" -#: cp/cvt.c:753 +#: cp/cvt.c:754 #, gcc-internal-format msgid "conversion from %q#T to %q#T" msgstr "" -#: cp/cvt.c:770 +#: cp/cvt.c:771 #, gcc-internal-format msgid "" "the result of the conversion is unspecified because %qE is outside the range " "of type %qT" msgstr "" -#: cp/cvt.c:781 cp/cvt.c:825 +#: cp/cvt.c:782 cp/cvt.c:826 #, gcc-internal-format msgid "%q#T used where a %qT was expected" msgstr "" -#: cp/cvt.c:790 +#: cp/cvt.c:791 #, gcc-internal-format msgid "could not convert %qE from %<void%> to %<bool%>" msgstr "" -#: cp/cvt.c:841 +#: cp/cvt.c:842 #, gcc-internal-format msgid "%q#T used where a floating point value was expected" msgstr "" -#: cp/cvt.c:900 +#: cp/cvt.c:901 #, gcc-internal-format msgid "conversion from %qT to non-scalar type %qT requested" msgstr "" -#: cp/cvt.c:960 +#: cp/cvt.c:961 #, gcc-internal-format msgid "pseudo-destructor is not called" msgstr "" -#: cp/cvt.c:1037 +#: cp/cvt.c:1038 #, gcc-internal-format msgid "conversion to void will not access object of incomplete type %qT" msgstr "" -#: cp/cvt.c:1041 +#: cp/cvt.c:1042 #, gcc-internal-format msgid "" "indirection will not access object of incomplete type %qT in second operand " "of conditional expression" msgstr "" -#: cp/cvt.c:1046 +#: cp/cvt.c:1047 #, gcc-internal-format msgid "" "indirection will not access object of incomplete type %qT in third operand " "of conditional expression" msgstr "" -#: cp/cvt.c:1051 +#: cp/cvt.c:1052 #, gcc-internal-format msgid "" "indirection will not access object of incomplete type %qT in right operand " "of comma operator" msgstr "" -#: cp/cvt.c:1056 +#: cp/cvt.c:1057 #, gcc-internal-format msgid "" "indirection will not access object of incomplete type %qT in left operand of " "comma operator" msgstr "" -#: cp/cvt.c:1061 +#: cp/cvt.c:1062 #, gcc-internal-format msgid "indirection will not access object of incomplete type %qT in statement" msgstr "" -#: cp/cvt.c:1065 +#: cp/cvt.c:1066 #, gcc-internal-format msgid "" "indirection will not access object of incomplete type %qT in for increment " "expression" msgstr "" -#: cp/cvt.c:1081 +#: cp/cvt.c:1082 #, gcc-internal-format msgid "conversion to void will not access object of type %qT" msgstr "" -#: cp/cvt.c:1085 +#: cp/cvt.c:1086 #, gcc-internal-format msgid "" "implicit dereference will not access object of type %qT in second operand of " "conditional expression" msgstr "" -#: cp/cvt.c:1090 +#: cp/cvt.c:1091 #, gcc-internal-format msgid "" "implicit dereference will not access object of type %qT in third operand of " "conditional expression" msgstr "" -#: cp/cvt.c:1095 +#: cp/cvt.c:1096 #, gcc-internal-format msgid "" "implicit dereference will not access object of type %qT in right operand of " "comma operator" msgstr "" -#: cp/cvt.c:1100 +#: cp/cvt.c:1101 #, gcc-internal-format msgid "" "implicit dereference will not access object of type %qT in left operand of " "comma operator" msgstr "" -#: cp/cvt.c:1105 +#: cp/cvt.c:1106 #, gcc-internal-format msgid "implicit dereference will not access object of type %qT in statement" msgstr "" -#: cp/cvt.c:1109 +#: cp/cvt.c:1110 #, gcc-internal-format msgid "" "implicit dereference will not access object of type %qT in for increment " "expression" msgstr "" -#: cp/cvt.c:1123 +#: cp/cvt.c:1124 #, gcc-internal-format msgid "" "conversion to void will not access object of non-trivially-copyable type %qT" msgstr "" -#: cp/cvt.c:1128 +#: cp/cvt.c:1129 #, gcc-internal-format msgid "" "indirection will not access object of non-trivially-copyable type %qT in " "second operand of conditional expression" msgstr "" -#: cp/cvt.c:1133 +#: cp/cvt.c:1134 #, gcc-internal-format msgid "" "indirection will not access object of non-trivially-copyable type %qT in " "third operand of conditional expression" msgstr "" -#: cp/cvt.c:1138 +#: cp/cvt.c:1139 #, gcc-internal-format msgid "" "indirection will not access object of non-trivially-copyable type %qT in " "right operand of comma operator" msgstr "" -#: cp/cvt.c:1143 +#: cp/cvt.c:1144 #, gcc-internal-format msgid "" "indirection will not access object of non-trivially-copyable type %qT in " "left operand of comma operator" msgstr "" -#: cp/cvt.c:1148 +#: cp/cvt.c:1149 #, gcc-internal-format msgid "" "indirection will not access object of non-trivially-copyable type %qT in " "statement" msgstr "" -#: cp/cvt.c:1153 +#: cp/cvt.c:1154 #, gcc-internal-format msgid "" "indirection will not access object of non-trivially-copyable type %qT in for " "increment expression" msgstr "" -#: cp/cvt.c:1191 +#: cp/cvt.c:1192 #, gcc-internal-format msgid "conversion to void will not access object %qE of incomplete type %qT" msgstr "" -#: cp/cvt.c:1195 +#: cp/cvt.c:1196 #, gcc-internal-format msgid "" "variable %qE of incomplete type %qT will not be accessed in second operand " "of conditional expression" msgstr "" -#: cp/cvt.c:1200 +#: cp/cvt.c:1201 #, gcc-internal-format msgid "" "variable %qE of incomplete type %qT will not be accessed in third operand of " "conditional expression" msgstr "" -#: cp/cvt.c:1205 +#: cp/cvt.c:1206 #, gcc-internal-format msgid "" "variable %qE of incomplete type %qT will not be accessed in right operand of " "comma operator" msgstr "" -#: cp/cvt.c:1210 +#: cp/cvt.c:1211 #, gcc-internal-format msgid "" "variable %qE of incomplete type %qT will not be accessed in left operand of " "comma operator" msgstr "" -#: cp/cvt.c:1215 +#: cp/cvt.c:1216 #, gcc-internal-format msgid "variable %qE of incomplete type %qT will not be accessed in statement" msgstr "" -#: cp/cvt.c:1219 +#: cp/cvt.c:1220 #, gcc-internal-format msgid "" "variable %qE of incomplete type %qT will not be accessed in for increment " "expression" msgstr "" -#: cp/cvt.c:1269 +#: cp/cvt.c:1270 #, gcc-internal-format msgid "conversion to void cannot resolve address of overloaded function" msgstr "" -#: cp/cvt.c:1273 +#: cp/cvt.c:1274 #, gcc-internal-format msgid "" "second operand of conditional expression cannot resolve address of " "overloaded function" msgstr "" -#: cp/cvt.c:1277 +#: cp/cvt.c:1278 #, gcc-internal-format msgid "" "third operand of conditional expression cannot resolve address of overloaded " "function" msgstr "" -#: cp/cvt.c:1281 +#: cp/cvt.c:1282 #, gcc-internal-format msgid "" "right operand of comma operator cannot resolve address of overloaded function" msgstr "" -#: cp/cvt.c:1285 +#: cp/cvt.c:1286 #, gcc-internal-format msgid "" "left operand of comma operator cannot resolve address of overloaded function" msgstr "" -#: cp/cvt.c:1289 +#: cp/cvt.c:1290 #, gcc-internal-format msgid "statement cannot resolve address of overloaded function" msgstr "" -#: cp/cvt.c:1293 +#: cp/cvt.c:1294 #, gcc-internal-format msgid "for increment expression cannot resolve address of overloaded function" msgstr "" -#: cp/cvt.c:1309 +#: cp/cvt.c:1310 #, gcc-internal-format msgid "" "second operand of conditional expression is a reference, not call, to " "function %qE" msgstr "" -#: cp/cvt.c:1314 +#: cp/cvt.c:1315 #, gcc-internal-format msgid "" "third operand of conditional expression is a reference, not call, to " "function %qE" msgstr "" -#: cp/cvt.c:1319 +#: cp/cvt.c:1320 #, gcc-internal-format msgid "" "right operand of comma operator is a reference, not call, to function %qE" msgstr "" -#: cp/cvt.c:1324 +#: cp/cvt.c:1325 #, gcc-internal-format msgid "" "left operand of comma operator is a reference, not call, to function %qE" msgstr "" -#: cp/cvt.c:1329 +#: cp/cvt.c:1330 #, gcc-internal-format msgid "statement is a reference, not call, to function %qE" msgstr "" -#: cp/cvt.c:1334 +#: cp/cvt.c:1335 #, gcc-internal-format msgid "for increment expression is a reference, not call, to function %qE" msgstr "" -#: cp/cvt.c:1361 +#: cp/cvt.c:1362 #, gcc-internal-format msgid "second operand of conditional expression has no effect" msgstr "" -#: cp/cvt.c:1366 +#: cp/cvt.c:1367 #, gcc-internal-format msgid "third operand of conditional expression has no effect" msgstr "" -#: cp/cvt.c:1371 +#: cp/cvt.c:1372 #, gcc-internal-format msgid "right operand of comma operator has no effect" msgstr "" -#: cp/cvt.c:1375 +#: cp/cvt.c:1376 #, gcc-internal-format msgid "left operand of comma operator has no effect" msgstr "" -#: cp/cvt.c:1379 +#: cp/cvt.c:1380 #, gcc-internal-format msgid "statement has no effect" msgstr "" -#: cp/cvt.c:1383 +#: cp/cvt.c:1384 #, gcc-internal-format msgid "for increment expression has no effect" msgstr "" -#: cp/cvt.c:1538 +#: cp/cvt.c:1539 #, gcc-internal-format msgid "converting NULL to non-pointer type" msgstr "" -#: cp/cvt.c:1653 +#: cp/cvt.c:1654 #, gcc-internal-format msgid "default type conversion can't deduce template argument for %qD" msgstr "" -#: cp/cvt.c:1668 +#: cp/cvt.c:1669 #, gcc-internal-format msgid "ambiguous default type conversion from %qT" msgstr "" -#: cp/cvt.c:1671 +#: cp/cvt.c:1672 #, gcc-internal-format msgid " candidate conversions include %qD and %qD" msgstr "" @@ -37594,152 +37699,152 @@ msgstr "" msgid "template-parameter-" msgstr "" -#: cp/decl.c:634 +#: cp/decl.c:629 #, gcc-internal-format msgid "unused variable %qD" msgstr "" -#: cp/decl.c:1177 +#: cp/decl.c:1172 #, gcc-internal-format msgid "%qD was declared %<extern%> and later %<static%>" msgstr "" -#: cp/decl.c:1179 cp/decl.c:1900 cp/decl.c:1910 cp/decl.c:2440 +#: cp/decl.c:1174 cp/decl.c:1898 cp/decl.c:1908 cp/decl.c:2447 #, gcc-internal-format msgid "previous declaration of %qD" msgstr "" -#: cp/decl.c:1221 +#: cp/decl.c:1219 #, gcc-internal-format msgid "from previous declaration %q+F" msgstr "" -#: cp/decl.c:1255 +#: cp/decl.c:1253 #, gcc-internal-format msgid "redeclaration %q+D differs in %<constexpr%>" msgstr "" -#: cp/decl.c:1256 +#: cp/decl.c:1254 #, gcc-internal-format msgid "from previous declaration %q+D" msgstr "" -#: cp/decl.c:1285 +#: cp/decl.c:1283 #, gcc-internal-format msgid "cannot specialize concept %q#D" msgstr "" -#: cp/decl.c:1307 +#: cp/decl.c:1305 #, gcc-internal-format msgid "redeclaration of %q#D may not have default arguments" msgstr "" -#: cp/decl.c:1354 +#: cp/decl.c:1352 #, gcc-internal-format msgid "literal operator template %q+D conflicts with raw literal operator %qD" msgstr "" -#: cp/decl.c:1359 +#: cp/decl.c:1357 #, gcc-internal-format msgid "raw literal operator %q+D conflicts with literal operator template %qD" msgstr "" -#: cp/decl.c:1381 +#: cp/decl.c:1379 #, gcc-internal-format msgid "function %qD redeclared as inline" msgstr "" -#: cp/decl.c:1384 +#: cp/decl.c:1382 #, gcc-internal-format msgid "previous declaration of %qD with attribute noinline" msgstr "" -#: cp/decl.c:1392 +#: cp/decl.c:1390 #, gcc-internal-format msgid "function %qD redeclared with attribute noinline" msgstr "" -#: cp/decl.c:1395 +#: cp/decl.c:1393 #, gcc-internal-format msgid "previous declaration of %qD was inline" msgstr "" -#: cp/decl.c:1419 cp/decl.c:1497 +#: cp/decl.c:1417 cp/decl.c:1495 #, gcc-internal-format msgid "shadowing built-in function %q#D" msgstr "" -#: cp/decl.c:1420 cp/decl.c:1498 +#: cp/decl.c:1418 cp/decl.c:1496 #, gcc-internal-format msgid "shadowing library function %q#D" msgstr "" -#: cp/decl.c:1428 +#: cp/decl.c:1426 #, gcc-internal-format msgid "library function %q#D redeclared as non-function %q#D" msgstr "" -#: cp/decl.c:1431 +#: cp/decl.c:1429 #, gcc-internal-format msgid "declaration of %q+#D conflicts with built-in declaration %q#D" msgstr "" -#: cp/decl.c:1439 +#: cp/decl.c:1437 #, gcc-internal-format msgid "redeclaration of %<pragma omp declare reduction%>" msgstr "" -#: cp/decl.c:1441 +#: cp/decl.c:1439 #, gcc-internal-format msgid "previous %<pragma omp declare reduction%> declaration" msgstr "" -#: cp/decl.c:1492 +#: cp/decl.c:1490 #, gcc-internal-format msgid "new declaration %q#D ambiguates built-in declaration %q#D" msgstr "" -#: cp/decl.c:1583 +#: cp/decl.c:1581 #, gcc-internal-format msgid "%q#D redeclared as different kind of symbol" msgstr "" -#: cp/decl.c:1587 cp/decl.c:1608 cp/decl.c:1640 cp/name-lookup.c:586 +#: cp/decl.c:1585 cp/decl.c:1606 cp/decl.c:1638 cp/name-lookup.c:586 #, gcc-internal-format msgid "previous declaration %q#D" msgstr "" -#: cp/decl.c:1606 +#: cp/decl.c:1604 #, gcc-internal-format msgid "conflicting declaration of template %q+#D" msgstr "" -#: cp/decl.c:1625 +#: cp/decl.c:1623 #, gcc-internal-format msgid "ambiguating new declaration %q+#D" msgstr "" -#: cp/decl.c:1627 cp/decl.c:1655 +#: cp/decl.c:1625 cp/decl.c:1653 #, gcc-internal-format msgid "old declaration %q#D" msgstr "" -#: cp/decl.c:1637 +#: cp/decl.c:1635 #, gcc-internal-format msgid "conflicting declaration of C function %q+#D" msgstr "" -#: cp/decl.c:1653 +#: cp/decl.c:1651 #, gcc-internal-format msgid "ambiguating new declaration of %q+#D" msgstr "" -#: cp/decl.c:1663 +#: cp/decl.c:1661 #, gcc-internal-format msgid "conflicting declaration %q+#D" msgstr "" -#: cp/decl.c:1665 +#: cp/decl.c:1663 #, gcc-internal-format msgid "previous declaration as %q#D" msgstr "" @@ -37751,62 +37856,62 @@ msgstr "" #. A namespace-name defined at global scope shall not be #. declared as the name of any other entity in any global scope #. of the program. -#: cp/decl.c:1717 +#: cp/decl.c:1715 #, gcc-internal-format msgid "conflicting declaration of namespace %q+D" msgstr "" -#: cp/decl.c:1719 +#: cp/decl.c:1717 #, gcc-internal-format msgid "previous declaration of namespace %qD here" msgstr "" -#: cp/decl.c:1731 +#: cp/decl.c:1729 #, gcc-internal-format msgid "%q#D previously defined here" msgstr "" -#: cp/decl.c:1732 cp/name-lookup.c:1168 cp/name-lookup.c:1191 +#: cp/decl.c:1730 cp/name-lookup.c:1168 cp/name-lookup.c:1191 #, gcc-internal-format msgid "%q#D previously declared here" msgstr "" -#: cp/decl.c:1742 +#: cp/decl.c:1740 #, gcc-internal-format msgid "prototype specified for %q#D" msgstr "" -#: cp/decl.c:1744 +#: cp/decl.c:1742 #, gcc-internal-format msgid "previous non-prototype definition here" msgstr "" -#: cp/decl.c:1783 +#: cp/decl.c:1781 #, gcc-internal-format msgid "conflicting declaration of %q+#D with %qL linkage" msgstr "" -#: cp/decl.c:1786 +#: cp/decl.c:1784 #, gcc-internal-format msgid "previous declaration with %qL linkage" msgstr "" -#: cp/decl.c:1820 cp/decl.c:1828 +#: cp/decl.c:1818 cp/decl.c:1826 #, gcc-internal-format msgid "default argument given for parameter %d of %q#D" msgstr "" -#: cp/decl.c:1823 cp/decl.c:1831 +#: cp/decl.c:1821 cp/decl.c:1829 #, gcc-internal-format msgid "previous specification in %q#D here" msgstr "" -#: cp/decl.c:1897 +#: cp/decl.c:1895 #, gcc-internal-format msgid "redundant redeclaration of %qD in same scope" msgstr "" -#: cp/decl.c:1908 +#: cp/decl.c:1906 #, gcc-internal-format msgid "deleted definition of %q+D" msgstr "" @@ -37819,12 +37924,12 @@ msgstr "" #. that specialization that would cause an implicit #. instantiation to take place, in every translation unit in #. which such a use occurs. -#: cp/decl.c:2306 +#: cp/decl.c:2313 #, gcc-internal-format msgid "explicit specialization of %qD after first use" msgstr "" -#: cp/decl.c:2437 +#: cp/decl.c:2444 #, gcc-internal-format msgid "" "%qD: visibility attribute ignored because it conflicts with previous " @@ -37832,27 +37937,27 @@ msgid "" msgstr "" #. Reject two definitions. -#: cp/decl.c:2687 cp/decl.c:2716 cp/decl.c:2749 cp/decl.c:2766 cp/decl.c:2839 +#: cp/decl.c:2694 cp/decl.c:2723 cp/decl.c:2756 cp/decl.c:2773 cp/decl.c:2846 #, gcc-internal-format msgid "redefinition of %q#D" msgstr "" -#: cp/decl.c:2703 +#: cp/decl.c:2710 #, gcc-internal-format msgid "%qD conflicts with used function" msgstr "" -#: cp/decl.c:2713 +#: cp/decl.c:2720 #, gcc-internal-format msgid "%q#D not declared in class" msgstr "" -#: cp/decl.c:2727 cp/decl.c:2776 +#: cp/decl.c:2734 cp/decl.c:2783 #, gcc-internal-format msgid "%q+D redeclared inline with %<gnu_inline%> attribute" msgstr "" -#: cp/decl.c:2730 cp/decl.c:2779 +#: cp/decl.c:2737 cp/decl.c:2786 #, gcc-internal-format msgid "%q+D redeclared inline without %<gnu_inline%> attribute" msgstr "" @@ -37860,392 +37965,392 @@ msgstr "" #. is_primary= #. is_partial= #. is_friend_decl= -#: cp/decl.c:2796 +#: cp/decl.c:2803 #, gcc-internal-format msgid "redeclaration of friend %q#D may not have default template arguments" msgstr "" -#: cp/decl.c:2810 +#: cp/decl.c:2817 #, gcc-internal-format msgid "thread-local declaration of %q#D follows non-thread-local declaration" msgstr "" -#: cp/decl.c:2813 +#: cp/decl.c:2820 #, gcc-internal-format msgid "non-thread-local declaration of %q#D follows thread-local declaration" msgstr "" -#: cp/decl.c:2828 cp/decl.c:2847 cp/name-lookup.c:582 cp/name-lookup.c:1166 +#: cp/decl.c:2835 cp/decl.c:2854 cp/name-lookup.c:582 cp/name-lookup.c:1166 #: cp/name-lookup.c:1189 #, gcc-internal-format msgid "redeclaration of %q#D" msgstr "" -#: cp/decl.c:2996 +#: cp/decl.c:3003 #, gcc-internal-format msgid "jump to label %qD" msgstr "" -#: cp/decl.c:2997 +#: cp/decl.c:3004 #, gcc-internal-format msgid "jump to case label" msgstr "" -#: cp/decl.c:2999 +#: cp/decl.c:3006 #, gcc-internal-format msgid " from here" msgstr "" -#: cp/decl.c:3022 cp/decl.c:3241 +#: cp/decl.c:3029 cp/decl.c:3248 #, gcc-internal-format msgid " exits OpenMP structured block" msgstr "" -#: cp/decl.c:3049 +#: cp/decl.c:3056 #, gcc-internal-format msgid " crosses initialization of %q#D" msgstr "" -#: cp/decl.c:3052 cp/decl.c:3204 +#: cp/decl.c:3059 cp/decl.c:3211 #, gcc-internal-format msgid " enters scope of %q#D which has non-trivial destructor" msgstr "" -#: cp/decl.c:3070 cp/decl.c:3212 +#: cp/decl.c:3077 cp/decl.c:3219 #, gcc-internal-format msgid " enters try block" msgstr "" -#: cp/decl.c:3072 cp/decl.c:3194 cp/decl.c:3214 +#: cp/decl.c:3079 cp/decl.c:3201 cp/decl.c:3221 #, gcc-internal-format msgid " enters catch block" msgstr "" -#: cp/decl.c:3085 cp/decl.c:3222 +#: cp/decl.c:3092 cp/decl.c:3229 #, gcc-internal-format msgid " enters OpenMP structured block" msgstr "" -#: cp/decl.c:3098 cp/decl.c:3216 +#: cp/decl.c:3105 cp/decl.c:3223 #, gcc-internal-format msgid " enters synchronized or atomic statement" msgstr "" -#: cp/decl.c:3201 +#: cp/decl.c:3208 #, gcc-internal-format msgid " skips initialization of %q#D" msgstr "" -#: cp/decl.c:3258 cp/parser.c:11735 cp/parser.c:11762 +#: cp/decl.c:3265 cp/parser.c:11755 cp/parser.c:11782 #, gcc-internal-format msgid "invalid exit from OpenMP structured block" msgstr "" -#: cp/decl.c:3290 +#: cp/decl.c:3297 #, gcc-internal-format msgid "label named wchar_t" msgstr "" -#: cp/decl.c:3609 +#: cp/decl.c:3616 #, gcc-internal-format msgid "%qD is not a type" msgstr "" -#: cp/decl.c:3616 cp/parser.c:6031 +#: cp/decl.c:3623 cp/parser.c:6033 #, gcc-internal-format msgid "%qD used without template parameters" msgstr "" -#: cp/decl.c:3625 +#: cp/decl.c:3632 #, gcc-internal-format msgid "%q#T is not a class" msgstr "" -#: cp/decl.c:3649 cp/decl.c:3741 +#: cp/decl.c:3656 cp/decl.c:3748 #, gcc-internal-format msgid "no class template named %q#T in %q#T" msgstr "" -#: cp/decl.c:3650 +#: cp/decl.c:3657 #, gcc-internal-format msgid "no type named %q#T in %q#T" msgstr "" -#: cp/decl.c:3662 +#: cp/decl.c:3669 #, gcc-internal-format msgid "lookup of %qT in %qT is ambiguous" msgstr "" -#: cp/decl.c:3671 +#: cp/decl.c:3678 #, gcc-internal-format msgid "%<typename %T::%D%> names %q#T, which is not a class template" msgstr "" -#: cp/decl.c:3678 +#: cp/decl.c:3685 #, gcc-internal-format msgid "%<typename %T::%D%> names %q#T, which is not a type" msgstr "" -#: cp/decl.c:3750 +#: cp/decl.c:3757 #, gcc-internal-format msgid "template parameters do not match template %qD" msgstr "" -#: cp/decl.c:4483 +#: cp/decl.c:4490 #, gcc-internal-format msgid "an anonymous struct cannot have function members" msgstr "" -#: cp/decl.c:4486 +#: cp/decl.c:4493 #, gcc-internal-format msgid "an anonymous union cannot have function members" msgstr "" -#: cp/decl.c:4504 +#: cp/decl.c:4511 #, gcc-internal-format msgid "member %q+#D with constructor not allowed in anonymous aggregate" msgstr "" -#: cp/decl.c:4507 +#: cp/decl.c:4514 #, gcc-internal-format msgid "member %q+#D with destructor not allowed in anonymous aggregate" msgstr "" -#: cp/decl.c:4510 +#: cp/decl.c:4517 #, gcc-internal-format msgid "" "member %q+#D with copy assignment operator not allowed in anonymous aggregate" msgstr "" -#: cp/decl.c:4528 +#: cp/decl.c:4535 #, gcc-internal-format msgid "attribute ignored in declaration of %q#T" msgstr "" -#: cp/decl.c:4531 +#: cp/decl.c:4538 #, gcc-internal-format msgid "attribute for %q#T must follow the %qs keyword" msgstr "" -#: cp/decl.c:4554 +#: cp/decl.c:4561 #, gcc-internal-format msgid "multiple types in one declaration" msgstr "" -#: cp/decl.c:4559 +#: cp/decl.c:4566 #, gcc-internal-format msgid "redeclaration of C++ built-in type %qT" msgstr "" -#: cp/decl.c:4577 +#: cp/decl.c:4584 #, gcc-internal-format msgid "%<auto%> can only be specified for variables or function declarations" msgstr "" -#: cp/decl.c:4603 +#: cp/decl.c:4610 #, gcc-internal-format msgid "missing type-name in typedef-declaration" msgstr "" -#: cp/decl.c:4611 +#: cp/decl.c:4618 #, gcc-internal-format msgid "ISO C++ prohibits anonymous structs" msgstr "" -#: cp/decl.c:4618 +#: cp/decl.c:4625 #, gcc-internal-format msgid "%<inline%> can only be specified for functions" msgstr "" -#: cp/decl.c:4621 +#: cp/decl.c:4628 #, gcc-internal-format msgid "%<virtual%> can only be specified for functions" msgstr "" -#: cp/decl.c:4626 +#: cp/decl.c:4633 #, gcc-internal-format msgid "%<friend%> can only be specified inside a class" msgstr "" -#: cp/decl.c:4629 +#: cp/decl.c:4636 #, gcc-internal-format msgid "%<explicit%> can only be specified for constructors" msgstr "" -#: cp/decl.c:4632 +#: cp/decl.c:4639 #, gcc-internal-format msgid "a storage class can only be specified for objects and functions" msgstr "" -#: cp/decl.c:4636 +#: cp/decl.c:4643 #, gcc-internal-format msgid "%<const%> can only be specified for objects and functions" msgstr "" -#: cp/decl.c:4640 +#: cp/decl.c:4647 #, gcc-internal-format msgid "%<volatile%> can only be specified for objects and functions" msgstr "" -#: cp/decl.c:4644 +#: cp/decl.c:4651 #, gcc-internal-format msgid "%<__restrict%> can only be specified for objects and functions" msgstr "" -#: cp/decl.c:4648 +#: cp/decl.c:4655 #, gcc-internal-format msgid "%<__thread%> can only be specified for objects and functions" msgstr "" -#: cp/decl.c:4652 +#: cp/decl.c:4659 #, gcc-internal-format msgid "%<typedef%> was ignored in this declaration" msgstr "" -#: cp/decl.c:4655 +#: cp/decl.c:4662 #, gcc-internal-format msgid "%<constexpr%> cannot be used for type declarations" msgstr "" -#: cp/decl.c:4677 +#: cp/decl.c:4684 #, gcc-internal-format msgid "attribute ignored in explicit instantiation %q#T" msgstr "" -#: cp/decl.c:4680 +#: cp/decl.c:4687 #, gcc-internal-format msgid "no attribute can be applied to an explicit instantiation" msgstr "" -#: cp/decl.c:4752 +#: cp/decl.c:4759 #, gcc-internal-format msgid "ignoring attributes applied to class type %qT outside of definition" msgstr "" #. A template type parameter or other dependent type. -#: cp/decl.c:4756 +#: cp/decl.c:4763 #, gcc-internal-format msgid "" "ignoring attributes applied to dependent type %qT without an associated " "declaration" msgstr "" -#: cp/decl.c:4825 cp/decl2.c:889 +#: cp/decl.c:4832 cp/decl2.c:889 #, gcc-internal-format msgid "typedef %qD is initialized (use decltype instead)" msgstr "" -#: cp/decl.c:4833 +#: cp/decl.c:4840 #, gcc-internal-format msgid "declaration of %q#D has %<extern%> and is initialized" msgstr "" -#: cp/decl.c:4862 +#: cp/decl.c:4869 #, gcc-internal-format msgid "definition of %q#D is marked %<dllimport%>" msgstr "" -#: cp/decl.c:4886 +#: cp/decl.c:4893 #, gcc-internal-format msgid "%q+#D is not a static data member of %q#T" msgstr "" -#: cp/decl.c:4895 +#: cp/decl.c:4902 #, gcc-internal-format msgid "non-member-template declaration of %qD" msgstr "" -#: cp/decl.c:4896 +#: cp/decl.c:4903 #, gcc-internal-format msgid "does not match member template declaration here" msgstr "" -#: cp/decl.c:4909 +#: cp/decl.c:4916 #, gcc-internal-format msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>" msgstr "" -#: cp/decl.c:4921 +#: cp/decl.c:4928 #, gcc-internal-format msgid "duplicate initialization of %qD" msgstr "" -#: cp/decl.c:4926 +#: cp/decl.c:4933 #, gcc-internal-format msgid "%qD declared %<constexpr%> outside its class" msgstr "" -#: cp/decl.c:4969 +#: cp/decl.c:4976 #, gcc-internal-format msgid "declaration of %q#D outside of class is not definition" msgstr "" -#: cp/decl.c:5002 +#: cp/decl.c:5009 #, gcc-internal-format msgid "%qD declared %<thread_local%> in %<constexpr%> function" msgstr "" -#: cp/decl.c:5005 +#: cp/decl.c:5012 #, gcc-internal-format msgid "%qD declared %<static%> in %<constexpr%> function" msgstr "" -#: cp/decl.c:5070 +#: cp/decl.c:5077 #, gcc-internal-format msgid "variable %q#D has initializer but incomplete type" msgstr "" -#: cp/decl.c:5076 cp/decl.c:5940 +#: cp/decl.c:5083 cp/decl.c:5947 #, gcc-internal-format msgid "elements of array %q#D have incomplete type" msgstr "" -#: cp/decl.c:5083 cp/decl.c:6570 +#: cp/decl.c:5090 cp/decl.c:6593 #, gcc-internal-format msgid "declaration of %q#D has no initializer" msgstr "" -#: cp/decl.c:5085 +#: cp/decl.c:5092 #, gcc-internal-format msgid "aggregate %q#D has incomplete type and cannot be defined" msgstr "" -#: cp/decl.c:5119 +#: cp/decl.c:5126 #, gcc-internal-format msgid "%qD declared as reference but not initialized" msgstr "" -#: cp/decl.c:5176 +#: cp/decl.c:5183 #, gcc-internal-format msgid "name used in a GNU-style designated initializer for an array" msgstr "" -#: cp/decl.c:5182 +#: cp/decl.c:5189 #, gcc-internal-format msgid "name %qD used in a GNU-style designated initializer for an array" msgstr "" -#: cp/decl.c:5198 cp/typeck2.c:1287 cp/typeck2.c:1397 +#: cp/decl.c:5205 cp/typeck2.c:1286 cp/typeck2.c:1396 #, gcc-internal-format msgid "non-trivial designated initializers not supported" msgstr "" -#: cp/decl.c:5201 +#: cp/decl.c:5208 #, gcc-internal-format msgid "C99 designator %qE is not an integral constant-expression" msgstr "" -#: cp/decl.c:5249 +#: cp/decl.c:5256 #, gcc-internal-format msgid "initializer fails to determine size of %qD" msgstr "" -#: cp/decl.c:5255 +#: cp/decl.c:5262 #, gcc-internal-format msgid "array size missing in %qD" msgstr "" -#: cp/decl.c:5266 +#: cp/decl.c:5273 #, gcc-internal-format msgid "zero-size array %qD" msgstr "" @@ -38253,916 +38358,916 @@ msgstr "" #. An automatic variable with an incomplete type: that is an error. #. Don't talk about array types here, since we took care of that #. message in grokdeclarator. -#: cp/decl.c:5308 +#: cp/decl.c:5315 #, gcc-internal-format msgid "storage size of %qD isn%'t known" msgstr "" -#: cp/decl.c:5331 +#: cp/decl.c:5338 #, gcc-internal-format msgid "storage size of %qD isn%'t constant" msgstr "" -#: cp/decl.c:5377 +#: cp/decl.c:5384 #, gcc-internal-format msgid "" "sorry: semantics of inline function static data %q#D are wrong (you%'ll wind " "up with multiple copies)" msgstr "" -#: cp/decl.c:5381 +#: cp/decl.c:5388 #, gcc-internal-format msgid "you can work around this by removing the initializer" msgstr "" -#: cp/decl.c:5408 +#: cp/decl.c:5415 #, gcc-internal-format msgid "uninitialized const %qD" msgstr "" -#: cp/decl.c:5412 +#: cp/decl.c:5419 #, gcc-internal-format msgid "uninitialized variable %qD in %<constexpr%> function" msgstr "" -#: cp/decl.c:5422 +#: cp/decl.c:5429 #, gcc-internal-format msgid "%q#T has no user-provided default constructor" msgstr "" -#: cp/decl.c:5426 +#: cp/decl.c:5433 #, gcc-internal-format msgid "" "constructor is not user-provided because it is explicitly defaulted in the " "class body" msgstr "" -#: cp/decl.c:5429 +#: cp/decl.c:5436 #, gcc-internal-format msgid "and the implicitly-defined constructor does not initialize %q#D" msgstr "" -#: cp/decl.c:5552 +#: cp/decl.c:5559 #, gcc-internal-format msgid "invalid type %qT as initializer for a vector of type %qT" msgstr "" -#: cp/decl.c:5593 +#: cp/decl.c:5600 #, gcc-internal-format msgid "initializer for %qT must be brace-enclosed" msgstr "" -#: cp/decl.c:5619 +#: cp/decl.c:5626 #, gcc-internal-format msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT" msgstr "" -#: cp/decl.c:5627 +#: cp/decl.c:5634 #, gcc-internal-format msgid "%qT has no non-static data member named %qD" msgstr "" -#: cp/decl.c:5647 +#: cp/decl.c:5654 #, gcc-internal-format msgid "invalid initializer for %q#D" msgstr "" -#: cp/decl.c:5677 +#: cp/decl.c:5684 #, gcc-internal-format msgid "C99 designator %qE outside aggregate initializer" msgstr "" -#: cp/decl.c:5714 cp/decl.c:5919 cp/typeck2.c:1274 cp/typeck2.c:1485 -#: cp/typeck2.c:1514 cp/typeck2.c:1561 +#: cp/decl.c:5721 cp/decl.c:5926 cp/typeck2.c:1273 cp/typeck2.c:1482 +#: cp/typeck2.c:1526 cp/typeck2.c:1573 #, gcc-internal-format msgid "too many initializers for %qT" msgstr "" -#: cp/decl.c:5753 +#: cp/decl.c:5760 #, gcc-internal-format msgid "braces around scalar initializer for type %qT" msgstr "" -#: cp/decl.c:5860 +#: cp/decl.c:5867 #, gcc-internal-format msgid "missing braces around initializer for %qT" msgstr "" -#: cp/decl.c:5942 +#: cp/decl.c:5949 #, gcc-internal-format msgid "elements of array %q#T have incomplete type" msgstr "" -#: cp/decl.c:5950 +#: cp/decl.c:5957 #, gcc-internal-format msgid "variable-sized compound literal" msgstr "" -#: cp/decl.c:6004 +#: cp/decl.c:6011 #, gcc-internal-format msgid "%q#D has incomplete type" msgstr "" -#: cp/decl.c:6024 +#: cp/decl.c:6031 #, gcc-internal-format msgid "scalar object %qD requires one element in initializer" msgstr "" -#: cp/decl.c:6067 +#: cp/decl.c:6074 #, gcc-internal-format msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>" msgstr "" -#: cp/decl.c:6161 +#: cp/decl.c:6168 #, gcc-internal-format msgid "array %qD initialized by parenthesized string literal %qE" msgstr "" -#: cp/decl.c:6192 +#: cp/decl.c:6199 #, gcc-internal-format msgid "initializer invalid for static member with constructor" msgstr "" -#: cp/decl.c:6194 +#: cp/decl.c:6201 #, gcc-internal-format msgid "non-constant in-class initialization invalid for static member %qD" msgstr "" -#: cp/decl.c:6199 +#: cp/decl.c:6206 #, gcc-internal-format msgid "(an out of class initialization is required)" msgstr "" -#: cp/decl.c:6373 +#: cp/decl.c:6383 #, gcc-internal-format msgid "reference %qD is initialized with itself" msgstr "" -#: cp/decl.c:6529 +#: cp/decl.c:6552 #, gcc-internal-format msgid "assignment (not initialization) in declaration" msgstr "" -#: cp/decl.c:6681 +#: cp/decl.c:6704 #, gcc-internal-format msgid "variable concept has no initializer" msgstr "" -#: cp/decl.c:6709 +#: cp/decl.c:6732 #, gcc-internal-format msgid "shadowing previous type declaration of %q#D" msgstr "" -#: cp/decl.c:6779 +#: cp/decl.c:6806 #, gcc-internal-format msgid "Java object %qD not allocated with %<new%>" msgstr "" -#: cp/decl.c:6827 +#: cp/decl.c:6854 #, gcc-internal-format msgid "non-static data member %qD has Java class type" msgstr "" -#: cp/decl.c:6908 +#: cp/decl.c:6935 #, gcc-internal-format msgid "function %q#D is initialized like a variable" msgstr "" -#: cp/decl.c:7342 +#: cp/decl.c:7369 #, gcc-internal-format msgid "" "non-local variable %qD declared %<__thread%> needs dynamic initialization" msgstr "" -#: cp/decl.c:7345 +#: cp/decl.c:7372 #, gcc-internal-format msgid "" "non-local variable %qD declared %<__thread%> has a non-trivial destructor" msgstr "" -#: cp/decl.c:7351 +#: cp/decl.c:7378 #, gcc-internal-format msgid "C++11 %<thread_local%> allows dynamic initialization and destruction" msgstr "" -#: cp/decl.c:7578 +#: cp/decl.c:7605 #, gcc-internal-format msgid "initializer fails to determine size of %qT" msgstr "" -#: cp/decl.c:7582 +#: cp/decl.c:7609 #, gcc-internal-format msgid "array size missing in %qT" msgstr "" -#: cp/decl.c:7585 +#: cp/decl.c:7612 #, gcc-internal-format msgid "zero-size array %qT" msgstr "" -#: cp/decl.c:7601 +#: cp/decl.c:7628 #, gcc-internal-format msgid "destructor for alien class %qT cannot be a member" msgstr "" -#: cp/decl.c:7603 +#: cp/decl.c:7630 #, gcc-internal-format msgid "constructor for alien class %qT cannot be a member" msgstr "" -#: cp/decl.c:7627 +#: cp/decl.c:7654 #, gcc-internal-format msgid "%qD declared as a %<virtual%> variable" msgstr "" -#: cp/decl.c:7629 +#: cp/decl.c:7656 #, gcc-internal-format msgid "%qD declared as an %<inline%> variable" msgstr "" -#: cp/decl.c:7631 +#: cp/decl.c:7658 #, gcc-internal-format msgid "" "%<const%> and %<volatile%> function specifiers on %qD invalid in variable " "declaration" msgstr "" -#: cp/decl.c:7636 +#: cp/decl.c:7663 #, gcc-internal-format msgid "%qD declared as a %<virtual%> parameter" msgstr "" -#: cp/decl.c:7638 +#: cp/decl.c:7665 #, gcc-internal-format msgid "%qD declared as an %<inline%> parameter" msgstr "" -#: cp/decl.c:7640 +#: cp/decl.c:7667 #, gcc-internal-format msgid "" "%<const%> and %<volatile%> function specifiers on %qD invalid in parameter " "declaration" msgstr "" -#: cp/decl.c:7645 +#: cp/decl.c:7672 #, gcc-internal-format msgid "%qD declared as a %<virtual%> type" msgstr "" -#: cp/decl.c:7647 +#: cp/decl.c:7674 #, gcc-internal-format msgid "%qD declared as an %<inline%> type" msgstr "" -#: cp/decl.c:7649 +#: cp/decl.c:7676 #, gcc-internal-format msgid "" "%<const%> and %<volatile%> function specifiers on %qD invalid in type " "declaration" msgstr "" -#: cp/decl.c:7654 +#: cp/decl.c:7681 #, gcc-internal-format msgid "%qD declared as a %<virtual%> field" msgstr "" -#: cp/decl.c:7656 +#: cp/decl.c:7683 #, gcc-internal-format msgid "%qD declared as an %<inline%> field" msgstr "" -#: cp/decl.c:7658 +#: cp/decl.c:7685 #, gcc-internal-format msgid "" "%<const%> and %<volatile%> function specifiers on %qD invalid in field " "declaration" msgstr "" -#: cp/decl.c:7665 +#: cp/decl.c:7692 #, gcc-internal-format msgid "%q+D declared as a friend" msgstr "" -#: cp/decl.c:7671 +#: cp/decl.c:7698 #, gcc-internal-format msgid "%q+D declared with an exception specification" msgstr "" -#: cp/decl.c:7704 +#: cp/decl.c:7731 #, gcc-internal-format msgid "definition of %qD is not in namespace enclosing %qT" msgstr "" -#: cp/decl.c:7744 +#: cp/decl.c:7771 #, gcc-internal-format msgid "static member function %q#D declared with type qualifiers" msgstr "" -#: cp/decl.c:7754 +#: cp/decl.c:7781 #, gcc-internal-format msgid "concept %q#D declared with function parameters" msgstr "" -#: cp/decl.c:7760 +#: cp/decl.c:7787 #, gcc-internal-format msgid "concept %q#D declared with a deduced return type" msgstr "" -#: cp/decl.c:7762 +#: cp/decl.c:7789 #, gcc-internal-format msgid "concept %q#D with non-%<bool%> return type %qT" msgstr "" -#: cp/decl.c:7833 +#: cp/decl.c:7860 #, gcc-internal-format msgid "concept %qD has no definition" msgstr "" -#: cp/decl.c:7901 +#: cp/decl.c:7928 #, gcc-internal-format msgid "defining explicit specialization %qD in friend declaration" msgstr "" #. Something like `template <class T> friend void f<T>()'. -#: cp/decl.c:7911 +#: cp/decl.c:7938 #, gcc-internal-format msgid "invalid use of template-id %qD in declaration of primary template" msgstr "" -#: cp/decl.c:7929 +#: cp/decl.c:7956 #, gcc-internal-format msgid "" "default arguments are not allowed in declaration of friend template " "specialization %qD" msgstr "" -#: cp/decl.c:7937 +#: cp/decl.c:7964 #, gcc-internal-format msgid "" "%<inline%> is not allowed in declaration of friend template specialization " "%qD" msgstr "" -#: cp/decl.c:7984 +#: cp/decl.c:8011 #, gcc-internal-format msgid "cannot declare %<::main%> to be a template" msgstr "" -#: cp/decl.c:7986 +#: cp/decl.c:8013 #, gcc-internal-format msgid "cannot declare %<::main%> to be inline" msgstr "" -#: cp/decl.c:7988 +#: cp/decl.c:8015 #, gcc-internal-format msgid "cannot declare %<::main%> to be constexpr" msgstr "" -#: cp/decl.c:7990 +#: cp/decl.c:8017 #, gcc-internal-format msgid "cannot declare %<::main%> to be static" msgstr "" -#: cp/decl.c:8047 +#: cp/decl.c:8074 #, gcc-internal-format msgid "static member function %qD cannot have cv-qualifier" msgstr "" -#: cp/decl.c:8048 +#: cp/decl.c:8075 #, gcc-internal-format msgid "non-member function %qD cannot have cv-qualifier" msgstr "" -#: cp/decl.c:8056 +#: cp/decl.c:8083 #, gcc-internal-format msgid "static member function %qD cannot have ref-qualifier" msgstr "" -#: cp/decl.c:8057 +#: cp/decl.c:8084 #, gcc-internal-format msgid "non-member function %qD cannot have ref-qualifier" msgstr "" -#: cp/decl.c:8074 +#: cp/decl.c:8101 #, gcc-internal-format msgid "literal operator with C linkage" msgstr "" -#: cp/decl.c:8083 +#: cp/decl.c:8110 #, gcc-internal-format msgid "%qD has invalid argument list" msgstr "" -#: cp/decl.c:8091 +#: cp/decl.c:8118 #, gcc-internal-format msgid "integer suffix %<%s%> shadowed by implementation" msgstr "" -#: cp/decl.c:8097 +#: cp/decl.c:8124 #, gcc-internal-format msgid "floating point suffix %<%s%> shadowed by implementation" msgstr "" -#: cp/decl.c:8103 +#: cp/decl.c:8130 #, gcc-internal-format msgid "%qD must be a non-member function" msgstr "" -#: cp/decl.c:8182 +#: cp/decl.c:8209 #, gcc-internal-format msgid "%<::main%> must return %<int%>" msgstr "" -#: cp/decl.c:8224 +#: cp/decl.c:8251 #, gcc-internal-format msgid "definition of implicitly-declared %qD" msgstr "" -#: cp/decl.c:8229 +#: cp/decl.c:8256 #, gcc-internal-format msgid "definition of explicitly-defaulted %q+D" msgstr "" -#: cp/decl.c:8230 +#: cp/decl.c:8257 #, gcc-internal-format msgid "%q+#D explicitly defaulted here" msgstr "" -#: cp/decl.c:8247 cp/decl2.c:787 +#: cp/decl.c:8274 cp/decl2.c:787 #, gcc-internal-format msgid "no %q#D member function declared in class %qT" msgstr "" -#: cp/decl.c:8431 +#: cp/decl.c:8458 #, gcc-internal-format msgid "cannot declare %<::main%> to be a global variable" msgstr "" -#: cp/decl.c:8439 +#: cp/decl.c:8466 #, gcc-internal-format msgid "a non-template variable cannot be %<concept%>" msgstr "" -#: cp/decl.c:8446 +#: cp/decl.c:8473 #, gcc-internal-format msgid "concept must have type %<bool%>" msgstr "" -#: cp/decl.c:8559 +#: cp/decl.c:8586 #, gcc-internal-format msgid "in-class initialization of static data member %q#D of incomplete type" msgstr "" -#: cp/decl.c:8563 +#: cp/decl.c:8590 #, gcc-internal-format msgid "" "%<constexpr%> needed for in-class initialization of static data member %q#D " "of non-integral type" msgstr "" -#: cp/decl.c:8566 +#: cp/decl.c:8593 #, gcc-internal-format msgid "in-class initialization of static data member %q#D of non-literal type" msgstr "" -#: cp/decl.c:8579 +#: cp/decl.c:8606 #, gcc-internal-format msgid "" "invalid in-class initialization of static data member of non-integral type " "%qT" msgstr "" -#: cp/decl.c:8585 +#: cp/decl.c:8612 #, gcc-internal-format msgid "ISO C++ forbids in-class initialization of non-const static member %qD" msgstr "" -#: cp/decl.c:8589 +#: cp/decl.c:8616 #, gcc-internal-format msgid "" "ISO C++ forbids initialization of member constant %qD of non-integral type " "%qT" msgstr "" -#: cp/decl.c:8688 cp/decl.c:8715 +#: cp/decl.c:8711 cp/decl.c:8738 #, gcc-internal-format msgid "size of array %qD has non-integral type %qT" msgstr "" -#: cp/decl.c:8691 cp/decl.c:8717 +#: cp/decl.c:8714 cp/decl.c:8740 #, gcc-internal-format msgid "size of array has non-integral type %qT" msgstr "" -#: cp/decl.c:8748 cp/decl.c:8801 +#: cp/decl.c:8771 cp/decl.c:8824 #, gcc-internal-format msgid "size of array is not an integral constant-expression" msgstr "" -#: cp/decl.c:8767 +#: cp/decl.c:8790 #, gcc-internal-format msgid "size of array %qD is negative" msgstr "" -#: cp/decl.c:8769 cp/init.c:3349 +#: cp/decl.c:8792 cp/init.c:3418 #, gcc-internal-format msgid "size of array is negative" msgstr "" -#: cp/decl.c:8783 +#: cp/decl.c:8806 #, gcc-internal-format msgid "ISO C++ forbids zero-size array %qD" msgstr "" -#: cp/decl.c:8785 +#: cp/decl.c:8808 #, gcc-internal-format msgid "ISO C++ forbids zero-size array" msgstr "" -#: cp/decl.c:8798 +#: cp/decl.c:8821 #, gcc-internal-format msgid "size of array %qD is not an integral constant-expression" msgstr "" -#: cp/decl.c:8807 +#: cp/decl.c:8830 #, gcc-internal-format msgid "ISO C++ forbids variable length array %qD" msgstr "" -#: cp/decl.c:8809 +#: cp/decl.c:8832 #, gcc-internal-format msgid "ISO C++ forbids variable length array" msgstr "" -#: cp/decl.c:8815 +#: cp/decl.c:8838 #, gcc-internal-format msgid "variable length array %qD is used" msgstr "" -#: cp/decl.c:8818 +#: cp/decl.c:8841 #, gcc-internal-format msgid "variable length array is used" msgstr "" -#: cp/decl.c:8869 +#: cp/decl.c:8892 #, gcc-internal-format msgid "overflow in array dimension" msgstr "" -#: cp/decl.c:8922 +#: cp/decl.c:8945 #, gcc-internal-format msgid "%qD declared as array of %qT" msgstr "" -#: cp/decl.c:8932 +#: cp/decl.c:8955 #, gcc-internal-format msgid "declaration of %qD as array of void" msgstr "" -#: cp/decl.c:8934 +#: cp/decl.c:8957 #, gcc-internal-format msgid "creating array of void" msgstr "" -#: cp/decl.c:8939 +#: cp/decl.c:8962 #, gcc-internal-format msgid "declaration of %qD as array of functions" msgstr "" -#: cp/decl.c:8941 +#: cp/decl.c:8964 #, gcc-internal-format msgid "creating array of functions" msgstr "" -#: cp/decl.c:8946 +#: cp/decl.c:8969 #, gcc-internal-format msgid "declaration of %qD as array of references" msgstr "" -#: cp/decl.c:8948 +#: cp/decl.c:8971 #, gcc-internal-format msgid "creating array of references" msgstr "" -#: cp/decl.c:8953 +#: cp/decl.c:8976 #, gcc-internal-format msgid "declaration of %qD as array of function members" msgstr "" -#: cp/decl.c:8955 +#: cp/decl.c:8978 #, gcc-internal-format msgid "creating array of function members" msgstr "" -#: cp/decl.c:8969 +#: cp/decl.c:8992 #, gcc-internal-format msgid "" "declaration of %qD as multidimensional array must have bounds for all " "dimensions except the first" msgstr "" -#: cp/decl.c:8973 +#: cp/decl.c:8996 #, gcc-internal-format msgid "" "multidimensional array must have bounds for all dimensions except the first" msgstr "" -#: cp/decl.c:9032 +#: cp/decl.c:9055 #, gcc-internal-format msgid "return type specification for constructor invalid" msgstr "" -#: cp/decl.c:9035 +#: cp/decl.c:9058 #, gcc-internal-format msgid "qualifiers are not allowed on constructor declaration" msgstr "" -#: cp/decl.c:9045 +#: cp/decl.c:9068 #, gcc-internal-format msgid "return type specification for destructor invalid" msgstr "" -#: cp/decl.c:9048 +#: cp/decl.c:9071 #, gcc-internal-format msgid "qualifiers are not allowed on destructor declaration" msgstr "" -#: cp/decl.c:9062 +#: cp/decl.c:9085 #, gcc-internal-format msgid "return type specified for %<operator %T%>" msgstr "" -#: cp/decl.c:9065 +#: cp/decl.c:9088 #, gcc-internal-format msgid "qualifiers are not allowed on declaration of %<operator %T%>" msgstr "" -#: cp/decl.c:9089 +#: cp/decl.c:9112 #, gcc-internal-format msgid "unnamed variable or field declared void" msgstr "" -#: cp/decl.c:9096 +#: cp/decl.c:9119 #, gcc-internal-format msgid "variable or field declared void" msgstr "" -#: cp/decl.c:9300 +#: cp/decl.c:9323 #, gcc-internal-format msgid "invalid use of qualified-name %<::%D%>" msgstr "" -#: cp/decl.c:9303 cp/decl.c:9323 +#: cp/decl.c:9326 cp/decl.c:9346 #, gcc-internal-format msgid "invalid use of qualified-name %<%T::%D%>" msgstr "" -#: cp/decl.c:9306 +#: cp/decl.c:9329 #, gcc-internal-format msgid "invalid use of qualified-name %<%D::%D%>" msgstr "" -#: cp/decl.c:9315 +#: cp/decl.c:9338 #, gcc-internal-format msgid "%q#T is not a class or a namespace" msgstr "" -#: cp/decl.c:9339 cp/decl.c:9436 cp/decl.c:9445 cp/decl.c:10876 +#: cp/decl.c:9362 cp/decl.c:9459 cp/decl.c:9468 cp/decl.c:10899 #, gcc-internal-format msgid "declaration of %qD as non-function" msgstr "" -#: cp/decl.c:9345 +#: cp/decl.c:9368 #, gcc-internal-format msgid "declaration of %qD as non-member" msgstr "" -#: cp/decl.c:9381 +#: cp/decl.c:9404 #, gcc-internal-format msgid "declarator-id missing; using reserved word %qD" msgstr "" -#: cp/decl.c:9428 +#: cp/decl.c:9451 #, gcc-internal-format msgid "function definition does not declare parameters" msgstr "" -#: cp/decl.c:9453 +#: cp/decl.c:9476 #, gcc-internal-format msgid "declaration of %qD as %<typedef%>" msgstr "" -#: cp/decl.c:9458 +#: cp/decl.c:9481 #, gcc-internal-format msgid "declaration of %qD as parameter" msgstr "" -#: cp/decl.c:9491 +#: cp/decl.c:9514 #, gcc-internal-format msgid "%<concept%> cannot appear in a typedef declaration" msgstr "" -#: cp/decl.c:9497 +#: cp/decl.c:9520 #, gcc-internal-format msgid "%<constexpr%> cannot appear in a typedef declaration" msgstr "" -#: cp/decl.c:9505 +#: cp/decl.c:9528 #, gcc-internal-format msgid "two or more data types in declaration of %qs" msgstr "" -#: cp/decl.c:9511 +#: cp/decl.c:9534 #, gcc-internal-format msgid "conflicting specifiers in declaration of %qs" msgstr "" -#: cp/decl.c:9552 +#: cp/decl.c:9575 #, gcc-internal-format msgid "ISO C++ does not support plain %<complex%> meaning %<double complex%>" msgstr "" -#: cp/decl.c:9600 cp/decl.c:9603 cp/decl.c:9606 +#: cp/decl.c:9623 cp/decl.c:9626 cp/decl.c:9629 #, gcc-internal-format msgid "ISO C++ forbids declaration of %qs with no type" msgstr "" -#: cp/decl.c:9622 +#: cp/decl.c:9645 #, gcc-internal-format msgid "%<__int%d%> is not supported by this target" msgstr "" -#: cp/decl.c:9628 +#: cp/decl.c:9651 #, gcc-internal-format msgid "ISO C++ does not support %<__int%d%> for %qs" msgstr "" -#: cp/decl.c:9650 cp/decl.c:9670 +#: cp/decl.c:9673 cp/decl.c:9693 #, gcc-internal-format msgid "%<signed%> or %<unsigned%> invalid for %qs" msgstr "" -#: cp/decl.c:9652 +#: cp/decl.c:9675 #, gcc-internal-format msgid "%<signed%> and %<unsigned%> specified together for %qs" msgstr "" -#: cp/decl.c:9654 +#: cp/decl.c:9677 #, gcc-internal-format msgid "%<long long%> invalid for %qs" msgstr "" -#: cp/decl.c:9656 +#: cp/decl.c:9679 #, gcc-internal-format msgid "%<long%> invalid for %qs" msgstr "" -#: cp/decl.c:9658 +#: cp/decl.c:9681 #, gcc-internal-format msgid "%<short%> invalid for %qs" msgstr "" -#: cp/decl.c:9660 +#: cp/decl.c:9683 #, gcc-internal-format msgid "%<long%> or %<short%> invalid for %qs" msgstr "" -#: cp/decl.c:9662 +#: cp/decl.c:9685 #, gcc-internal-format msgid "%<long%>, %<int%>, %<short%>, or %<char%> invalid for %qs" msgstr "" -#: cp/decl.c:9664 +#: cp/decl.c:9687 #, gcc-internal-format msgid "%<long%> or %<short%> specified with char for %qs" msgstr "" -#: cp/decl.c:9666 +#: cp/decl.c:9689 #, gcc-internal-format msgid "%<long%> and %<short%> specified together for %qs" msgstr "" -#: cp/decl.c:9672 +#: cp/decl.c:9695 #, gcc-internal-format msgid "%<short%> or %<long%> invalid for %qs" msgstr "" -#: cp/decl.c:9680 +#: cp/decl.c:9703 #, gcc-internal-format msgid "long, short, signed or unsigned used invalidly for %qs" msgstr "" -#: cp/decl.c:9748 +#: cp/decl.c:9771 #, gcc-internal-format msgid "complex invalid for %qs" msgstr "" -#: cp/decl.c:9795 +#: cp/decl.c:9818 #, gcc-internal-format msgid "member %qD cannot be declared both %<virtual%> and %<static%>" msgstr "" -#: cp/decl.c:9801 +#: cp/decl.c:9824 #, gcc-internal-format msgid "member %qD cannot be declared both %<virtual%> and %<constexpr%>" msgstr "" -#: cp/decl.c:9811 +#: cp/decl.c:9834 #, gcc-internal-format msgid "typedef declaration invalid in parameter declaration" msgstr "" -#: cp/decl.c:9816 +#: cp/decl.c:9839 #, gcc-internal-format msgid "storage class specified for template parameter %qs" msgstr "" -#: cp/decl.c:9822 +#: cp/decl.c:9845 #, gcc-internal-format msgid "storage class specifiers invalid in parameter declarations" msgstr "" -#: cp/decl.c:9826 +#: cp/decl.c:9849 #, gcc-internal-format msgid "a parameter cannot be declared %<concept%>" msgstr "" -#: cp/decl.c:9831 +#: cp/decl.c:9854 #, gcc-internal-format msgid "a parameter cannot be declared %<constexpr%>" msgstr "" -#: cp/decl.c:9841 +#: cp/decl.c:9864 #, gcc-internal-format msgid "%<virtual%> outside class declaration" msgstr "" -#: cp/decl.c:9859 +#: cp/decl.c:9882 #, gcc-internal-format msgid "multiple storage classes in declaration of %qs" msgstr "" -#: cp/decl.c:9882 +#: cp/decl.c:9905 #, gcc-internal-format msgid "storage class specified for %qs" msgstr "" -#: cp/decl.c:9886 +#: cp/decl.c:9909 #, gcc-internal-format msgid "storage class specified for parameter %qs" msgstr "" -#: cp/decl.c:9899 +#: cp/decl.c:9922 #, gcc-internal-format msgid "nested function %qs declared %<extern%>" msgstr "" -#: cp/decl.c:9903 +#: cp/decl.c:9926 #, gcc-internal-format msgid "top-level declaration of %qs specifies %<auto%>" msgstr "" -#: cp/decl.c:9910 +#: cp/decl.c:9933 #, gcc-internal-format msgid "function-scope %qs implicitly auto and declared %<__thread%>" msgstr "" -#: cp/decl.c:9922 +#: cp/decl.c:9945 #, gcc-internal-format msgid "storage class specifiers invalid in friend function declarations" msgstr "" -#: cp/decl.c:10034 +#: cp/decl.c:10057 #, gcc-internal-format msgid "%qs declared as function returning a function" msgstr "" -#: cp/decl.c:10039 +#: cp/decl.c:10062 #, gcc-internal-format msgid "%qs declared as function returning an array" msgstr "" -#: cp/decl.c:10063 +#: cp/decl.c:10086 #, gcc-internal-format msgid "requires-clause on return type" msgstr "" -#: cp/decl.c:10082 +#: cp/decl.c:10105 #, gcc-internal-format msgid "%qs function uses %<auto%> type specifier without trailing return type" msgstr "" -#: cp/decl.c:10085 +#: cp/decl.c:10108 #, gcc-internal-format msgid "deduced return type only available with -std=c++14 or -std=gnu++14" msgstr "" -#: cp/decl.c:10091 +#: cp/decl.c:10114 #, gcc-internal-format msgid "virtual function cannot have deduced return type" msgstr "" -#: cp/decl.c:10098 +#: cp/decl.c:10121 #, gcc-internal-format msgid "" "%qs function with trailing return type has %qT as its type rather than plain " @@ -39171,515 +39276,515 @@ msgstr "" #. Not using maybe_warn_cpp0x because this should #. always be an error. -#: cp/decl.c:10110 +#: cp/decl.c:10133 #, gcc-internal-format msgid "trailing return type only available with -std=c++11 or -std=gnu++11" msgstr "" -#: cp/decl.c:10113 +#: cp/decl.c:10136 #, gcc-internal-format msgid "" "%qs function with trailing return type not declared with %<auto%> type " "specifier" msgstr "" -#: cp/decl.c:10150 +#: cp/decl.c:10173 #, gcc-internal-format msgid "destructor cannot be static member function" msgstr "" -#: cp/decl.c:10151 +#: cp/decl.c:10174 #, gcc-internal-format msgid "constructor cannot be static member function" msgstr "" -#: cp/decl.c:10155 +#: cp/decl.c:10178 #, gcc-internal-format msgid "destructors may not be cv-qualified" msgstr "" -#: cp/decl.c:10156 +#: cp/decl.c:10179 #, gcc-internal-format msgid "constructors may not be cv-qualified" msgstr "" -#: cp/decl.c:10164 +#: cp/decl.c:10187 #, gcc-internal-format msgid "destructors may not be ref-qualified" msgstr "" -#: cp/decl.c:10183 +#: cp/decl.c:10206 #, gcc-internal-format msgid "constructors cannot be declared %<virtual%>" msgstr "" #. Cannot be both friend and virtual. -#: cp/decl.c:10198 +#: cp/decl.c:10221 #, gcc-internal-format msgid "virtual functions cannot be friends" msgstr "" -#: cp/decl.c:10202 +#: cp/decl.c:10225 #, gcc-internal-format msgid "friend declaration not in class definition" msgstr "" -#: cp/decl.c:10204 +#: cp/decl.c:10227 #, gcc-internal-format msgid "can%'t define friend function %qs in a local class definition" msgstr "" -#: cp/decl.c:10216 +#: cp/decl.c:10239 #, gcc-internal-format msgid "a conversion function cannot have a trailing return type" msgstr "" -#: cp/decl.c:10227 +#: cp/decl.c:10250 #, gcc-internal-format msgid "destructors may not have parameters" msgstr "" -#: cp/decl.c:10264 +#: cp/decl.c:10287 #, gcc-internal-format msgid "cannot declare pointer to %q#T" msgstr "" -#: cp/decl.c:10277 cp/decl.c:10284 +#: cp/decl.c:10300 cp/decl.c:10307 #, gcc-internal-format msgid "cannot declare reference to %q#T" msgstr "" -#: cp/decl.c:10286 +#: cp/decl.c:10309 #, gcc-internal-format msgid "cannot declare pointer to %q#T member" msgstr "" -#: cp/decl.c:10315 +#: cp/decl.c:10338 #, gcc-internal-format msgid "cannot declare reference to qualified function type %qT" msgstr "" -#: cp/decl.c:10316 +#: cp/decl.c:10339 #, gcc-internal-format msgid "cannot declare pointer to qualified function type %qT" msgstr "" -#: cp/decl.c:10386 +#: cp/decl.c:10409 #, gcc-internal-format msgid "" "cannot declare reference to %q#T, which is not a typedef or a template type " "argument" msgstr "" -#: cp/decl.c:10456 +#: cp/decl.c:10479 #, gcc-internal-format msgid "template-id %qD used as a declarator" msgstr "" -#: cp/decl.c:10480 +#: cp/decl.c:10503 #, gcc-internal-format msgid "member functions are implicitly friends of their class" msgstr "" -#: cp/decl.c:10485 +#: cp/decl.c:10508 #, gcc-internal-format msgid "extra qualification %<%T::%> on member %qs" msgstr "" -#: cp/decl.c:10515 +#: cp/decl.c:10538 #, gcc-internal-format msgid "cannot define member function %<%T::%s%> within %<%T%>" msgstr "" -#: cp/decl.c:10517 +#: cp/decl.c:10540 #, gcc-internal-format msgid "cannot declare member function %<%T::%s%> within %<%T%>" msgstr "" -#: cp/decl.c:10525 +#: cp/decl.c:10548 #, gcc-internal-format msgid "cannot declare member %<%T::%s%> within %qT" msgstr "" -#: cp/decl.c:10558 +#: cp/decl.c:10581 #, gcc-internal-format msgid "non-parameter %qs cannot be a parameter pack" msgstr "" -#: cp/decl.c:10566 +#: cp/decl.c:10589 #, gcc-internal-format msgid "data member may not have variably modified type %qT" msgstr "" -#: cp/decl.c:10568 +#: cp/decl.c:10591 #, gcc-internal-format msgid "parameter may not have variably modified type %qT" msgstr "" -#: cp/decl.c:10579 +#: cp/decl.c:10602 #, gcc-internal-format msgid "%<explicit%> outside class declaration" msgstr "" -#: cp/decl.c:10582 +#: cp/decl.c:10605 #, gcc-internal-format msgid "%<explicit%> in friend declaration" msgstr "" -#: cp/decl.c:10585 +#: cp/decl.c:10608 #, gcc-internal-format msgid "" "only declarations of constructors and conversion operators can be %<explicit" "%>" msgstr "" -#: cp/decl.c:10594 +#: cp/decl.c:10617 #, gcc-internal-format msgid "non-member %qs cannot be declared %<mutable%>" msgstr "" -#: cp/decl.c:10599 +#: cp/decl.c:10622 #, gcc-internal-format msgid "non-object member %qs cannot be declared %<mutable%>" msgstr "" -#: cp/decl.c:10605 +#: cp/decl.c:10628 #, gcc-internal-format msgid "function %qs cannot be declared %<mutable%>" msgstr "" -#: cp/decl.c:10610 +#: cp/decl.c:10633 #, gcc-internal-format msgid "static %qs cannot be declared %<mutable%>" msgstr "" -#: cp/decl.c:10615 +#: cp/decl.c:10638 #, gcc-internal-format msgid "const %qs cannot be declared %<mutable%>" msgstr "" -#: cp/decl.c:10620 +#: cp/decl.c:10643 #, gcc-internal-format msgid "reference %qs cannot be declared %<mutable%>" msgstr "" -#: cp/decl.c:10656 +#: cp/decl.c:10679 #, gcc-internal-format msgid "typedef declared %<auto%>" msgstr "" -#: cp/decl.c:10661 +#: cp/decl.c:10684 #, gcc-internal-format msgid "requires-clause on typedef" msgstr "" -#: cp/decl.c:10669 +#: cp/decl.c:10692 #, gcc-internal-format msgid "typedef name may not be a nested-name-specifier" msgstr "" -#: cp/decl.c:10690 +#: cp/decl.c:10713 #, gcc-internal-format msgid "ISO C++ forbids nested type %qD with same name as enclosing class" msgstr "" -#: cp/decl.c:10806 +#: cp/decl.c:10829 #, gcc-internal-format msgid "%<inline%> specified for friend class declaration" msgstr "" -#: cp/decl.c:10814 +#: cp/decl.c:10837 #, gcc-internal-format msgid "template parameters cannot be friends" msgstr "" -#: cp/decl.c:10816 +#: cp/decl.c:10839 #, gcc-internal-format msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>" msgstr "" -#: cp/decl.c:10820 +#: cp/decl.c:10843 #, gcc-internal-format msgid "friend declaration requires class-key, i.e. %<friend %#T%>" msgstr "" -#: cp/decl.c:10833 +#: cp/decl.c:10856 #, gcc-internal-format msgid "trying to make class %qT a friend of global scope" msgstr "" -#: cp/decl.c:10853 +#: cp/decl.c:10876 #, gcc-internal-format msgid "invalid qualifiers on non-member function type" msgstr "" -#: cp/decl.c:10857 +#: cp/decl.c:10880 #, gcc-internal-format msgid "requires-clause on type-id" msgstr "" -#: cp/decl.c:10866 +#: cp/decl.c:10889 #, gcc-internal-format msgid "abstract declarator %qT used as declaration" msgstr "" -#: cp/decl.c:10884 +#: cp/decl.c:10907 #, gcc-internal-format msgid "requires-clause on declaration of non-function type %qT" msgstr "" -#: cp/decl.c:10902 +#: cp/decl.c:10925 #, gcc-internal-format msgid "cannot use %<::%> in parameter declaration" msgstr "" -#: cp/decl.c:10907 +#: cp/decl.c:10930 #, gcc-internal-format msgid "%<auto%> parameter not permitted in this context" msgstr "" -#: cp/decl.c:10909 +#: cp/decl.c:10932 #, gcc-internal-format msgid "parameter declared %<auto%>" msgstr "" -#: cp/decl.c:10955 +#: cp/decl.c:10978 #, gcc-internal-format msgid "non-static data member declared %<auto%>" msgstr "" #. Something like struct S { int N::j; }; -#: cp/decl.c:10987 +#: cp/decl.c:11009 #, gcc-internal-format msgid "invalid use of %<::%>" msgstr "" -#: cp/decl.c:11009 +#: cp/decl.c:11031 #, gcc-internal-format msgid "declaration of function %qD in invalid context" msgstr "" -#: cp/decl.c:11018 +#: cp/decl.c:11040 #, gcc-internal-format msgid "function %qD declared %<virtual%> inside a union" msgstr "" -#: cp/decl.c:11027 +#: cp/decl.c:11049 #, gcc-internal-format msgid "%qD cannot be declared %<virtual%>, since it is always static" msgstr "" -#: cp/decl.c:11043 +#: cp/decl.c:11065 #, gcc-internal-format msgid "expected qualified name in friend declaration for destructor %qD" msgstr "" -#: cp/decl.c:11050 +#: cp/decl.c:11072 #, gcc-internal-format msgid "declaration of %qD as member of %qT" msgstr "" -#: cp/decl.c:11056 +#: cp/decl.c:11078 #, gcc-internal-format msgid "a destructor cannot be %<concept%>" msgstr "" -#: cp/decl.c:11061 +#: cp/decl.c:11083 #, gcc-internal-format msgid "a destructor cannot be %<constexpr%>" msgstr "" -#: cp/decl.c:11067 +#: cp/decl.c:11089 #, gcc-internal-format msgid "expected qualified name in friend declaration for constructor %qD" msgstr "" -#: cp/decl.c:11075 +#: cp/decl.c:11097 #, gcc-internal-format msgid "a constructor cannot be %<concept%>" msgstr "" -#: cp/decl.c:11080 +#: cp/decl.c:11102 #, gcc-internal-format msgid "a concept cannot be a member function" msgstr "" -#: cp/decl.c:11089 +#: cp/decl.c:11111 #, gcc-internal-format msgid "specialization of variable template %qD declared as function" msgstr "" -#: cp/decl.c:11092 +#: cp/decl.c:11114 #, gcc-internal-format msgid "variable template declared here" msgstr "" -#: cp/decl.c:11148 +#: cp/decl.c:11170 #, gcc-internal-format msgid "field %qD has incomplete type %qT" msgstr "" -#: cp/decl.c:11153 +#: cp/decl.c:11175 #, gcc-internal-format msgid "name %qT has incomplete type" msgstr "" -#: cp/decl.c:11163 +#: cp/decl.c:11185 #, gcc-internal-format msgid "%qE is neither function nor member function; cannot be declared friend" msgstr "" -#: cp/decl.c:11222 +#: cp/decl.c:11244 #, gcc-internal-format msgid "static data member %qE declared %<concept%>" msgstr "" -#: cp/decl.c:11226 +#: cp/decl.c:11248 #, gcc-internal-format msgid "constexpr static data member %qD must have an initializer" msgstr "" -#: cp/decl.c:11234 +#: cp/decl.c:11256 #, gcc-internal-format msgid "non-static data member %qE declared %<concept%>" msgstr "" -#: cp/decl.c:11238 +#: cp/decl.c:11260 #, gcc-internal-format msgid "non-static data member %qE declared %<constexpr%>" msgstr "" -#: cp/decl.c:11288 +#: cp/decl.c:11310 #, gcc-internal-format msgid "storage class %<auto%> invalid for function %qs" msgstr "" -#: cp/decl.c:11290 +#: cp/decl.c:11312 #, gcc-internal-format msgid "storage class %<register%> invalid for function %qs" msgstr "" -#: cp/decl.c:11294 +#: cp/decl.c:11316 #, gcc-internal-format msgid "storage class %<__thread%> invalid for function %qs" msgstr "" -#: cp/decl.c:11297 +#: cp/decl.c:11319 #, gcc-internal-format msgid "storage class %<thread_local%> invalid for function %qs" msgstr "" -#: cp/decl.c:11302 +#: cp/decl.c:11324 #, gcc-internal-format msgid "virt-specifiers in %qs not allowed outside a class definition" msgstr "" -#: cp/decl.c:11313 +#: cp/decl.c:11335 #, gcc-internal-format msgid "" "%<static%> specified invalid for function %qs declared out of global scope" msgstr "" -#: cp/decl.c:11317 +#: cp/decl.c:11339 #, gcc-internal-format msgid "" "%<inline%> specifier invalid for function %qs declared out of global scope" msgstr "" -#: cp/decl.c:11325 +#: cp/decl.c:11347 #, gcc-internal-format msgid "virtual non-class function %qs" msgstr "" -#: cp/decl.c:11332 +#: cp/decl.c:11354 #, gcc-internal-format msgid "%qs defined in a non-class scope" msgstr "" -#: cp/decl.c:11333 +#: cp/decl.c:11355 #, gcc-internal-format msgid "%qs declared in a non-class scope" msgstr "" -#: cp/decl.c:11366 +#: cp/decl.c:11388 #, gcc-internal-format msgid "cannot declare member function %qD to have static linkage" msgstr "" #. FIXME need arm citation -#: cp/decl.c:11373 +#: cp/decl.c:11395 #, gcc-internal-format msgid "cannot declare static function inside another function" msgstr "" -#: cp/decl.c:11407 +#: cp/decl.c:11429 #, gcc-internal-format msgid "" "%<static%> may not be used when defining (as opposed to declaring) a static " "data member" msgstr "" -#: cp/decl.c:11414 +#: cp/decl.c:11436 #, gcc-internal-format msgid "static member %qD declared %<register%>" msgstr "" -#: cp/decl.c:11420 +#: cp/decl.c:11442 #, gcc-internal-format msgid "cannot explicitly declare member %q#D to have extern linkage" msgstr "" -#: cp/decl.c:11427 +#: cp/decl.c:11449 #, gcc-internal-format msgid "declaration of constexpr variable %qD is not a definition" msgstr "" -#: cp/decl.c:11440 +#: cp/decl.c:11462 #, gcc-internal-format msgid "%qs initialized and declared %<extern%>" msgstr "" -#: cp/decl.c:11444 +#: cp/decl.c:11466 #, gcc-internal-format msgid "%qs has both %<extern%> and initializer" msgstr "" -#: cp/decl.c:11591 +#: cp/decl.c:11613 #, gcc-internal-format msgid "default argument %qE uses %qD" msgstr "" -#: cp/decl.c:11594 +#: cp/decl.c:11616 #, gcc-internal-format msgid "default argument %qE uses local variable %qD" msgstr "" -#: cp/decl.c:11679 +#: cp/decl.c:11701 #, gcc-internal-format msgid "invalid use of cv-qualified type %qT in parameter declaration" msgstr "" -#: cp/decl.c:11683 +#: cp/decl.c:11705 #, gcc-internal-format msgid "invalid use of type %<void%> in parameter declaration" msgstr "" -#: cp/decl.c:11696 +#: cp/decl.c:11718 #, gcc-internal-format msgid "parameter %qD has Java class type" msgstr "" -#: cp/decl.c:11724 +#: cp/decl.c:11746 #, gcc-internal-format msgid "parameter %qD invalidly declared method type" msgstr "" -#: cp/decl.c:11749 +#: cp/decl.c:11771 #, gcc-internal-format msgid "parameter %qD includes pointer to array of unknown bound %qT" msgstr "" -#: cp/decl.c:11751 +#: cp/decl.c:11773 #, gcc-internal-format msgid "parameter %qD includes reference to array of unknown bound %qT" msgstr "" @@ -39699,174 +39804,174 @@ msgstr "" #. or implicitly defined), there's no need to worry about their #. existence. Theoretically, they should never even be #. instantiated, but that's hard to forestall. -#: cp/decl.c:12001 +#: cp/decl.c:12023 #, gcc-internal-format msgid "invalid constructor; you probably meant %<%T (const %T&)%>" msgstr "" -#: cp/decl.c:12123 +#: cp/decl.c:12145 #, gcc-internal-format msgid "%qD may not be declared within a namespace" msgstr "" -#: cp/decl.c:12128 +#: cp/decl.c:12150 #, gcc-internal-format msgid "%qD may not be declared as static" msgstr "" -#: cp/decl.c:12154 +#: cp/decl.c:12176 #, gcc-internal-format msgid "%qD must be a nonstatic member function" msgstr "" -#: cp/decl.c:12163 +#: cp/decl.c:12185 #, gcc-internal-format msgid "" "%qD must be either a non-static member function or a non-member function" msgstr "" -#: cp/decl.c:12185 +#: cp/decl.c:12207 #, gcc-internal-format msgid "%qD must have an argument of class or enumerated type" msgstr "" -#: cp/decl.c:12214 +#: cp/decl.c:12236 #, gcc-internal-format msgid "" "conversion to a reference to void will never use a type conversion operator" msgstr "" -#: cp/decl.c:12216 +#: cp/decl.c:12238 #, gcc-internal-format msgid "conversion to void will never use a type conversion operator" msgstr "" -#: cp/decl.c:12223 +#: cp/decl.c:12245 #, gcc-internal-format msgid "" "conversion to a reference to the same type will never use a type conversion " "operator" msgstr "" -#: cp/decl.c:12225 +#: cp/decl.c:12247 #, gcc-internal-format msgid "conversion to the same type will never use a type conversion operator" msgstr "" -#: cp/decl.c:12233 +#: cp/decl.c:12255 #, gcc-internal-format msgid "" "conversion to a reference to a base class will never use a type conversion " "operator" msgstr "" -#: cp/decl.c:12235 +#: cp/decl.c:12257 #, gcc-internal-format msgid "conversion to a base class will never use a type conversion operator" msgstr "" #. 13.4.0.3 -#: cp/decl.c:12244 +#: cp/decl.c:12266 #, gcc-internal-format msgid "ISO C++ prohibits overloading operator ?:" msgstr "" -#: cp/decl.c:12249 +#: cp/decl.c:12271 #, gcc-internal-format msgid "%qD must not have variable number of arguments" msgstr "" -#: cp/decl.c:12300 +#: cp/decl.c:12322 #, gcc-internal-format msgid "postfix %qD must take %<int%> as its argument" msgstr "" -#: cp/decl.c:12303 +#: cp/decl.c:12325 #, gcc-internal-format msgid "postfix %qD must take %<int%> as its second argument" msgstr "" -#: cp/decl.c:12311 +#: cp/decl.c:12333 #, gcc-internal-format msgid "%qD must take either zero or one argument" msgstr "" -#: cp/decl.c:12313 +#: cp/decl.c:12335 #, gcc-internal-format msgid "%qD must take either one or two arguments" msgstr "" -#: cp/decl.c:12335 +#: cp/decl.c:12357 #, gcc-internal-format msgid "prefix %qD should return %qT" msgstr "" -#: cp/decl.c:12341 +#: cp/decl.c:12363 #, gcc-internal-format msgid "postfix %qD should return %qT" msgstr "" -#: cp/decl.c:12350 +#: cp/decl.c:12372 #, gcc-internal-format msgid "%qD must take %<void%>" msgstr "" -#: cp/decl.c:12352 cp/decl.c:12361 +#: cp/decl.c:12374 cp/decl.c:12383 #, gcc-internal-format msgid "%qD must take exactly one argument" msgstr "" -#: cp/decl.c:12363 +#: cp/decl.c:12385 #, gcc-internal-format msgid "%qD must take exactly two arguments" msgstr "" -#: cp/decl.c:12372 +#: cp/decl.c:12394 #, gcc-internal-format msgid "user-defined %qD always evaluates both arguments" msgstr "" -#: cp/decl.c:12386 +#: cp/decl.c:12408 #, gcc-internal-format msgid "%qD should return by value" msgstr "" -#: cp/decl.c:12397 cp/decl.c:12402 +#: cp/decl.c:12419 cp/decl.c:12424 #, gcc-internal-format msgid "%qD cannot have default arguments" msgstr "" -#: cp/decl.c:12460 +#: cp/decl.c:12482 #, gcc-internal-format msgid "using template type parameter %qT after %qs" msgstr "" -#: cp/decl.c:12483 +#: cp/decl.c:12505 #, gcc-internal-format msgid "using alias template specialization %qT after %qs" msgstr "" -#: cp/decl.c:12486 +#: cp/decl.c:12508 #, gcc-internal-format msgid "using typedef-name %qD after %qs" msgstr "" -#: cp/decl.c:12488 +#: cp/decl.c:12510 #, gcc-internal-format msgid "%qD has a previous declaration here" msgstr "" -#: cp/decl.c:12496 +#: cp/decl.c:12518 #, gcc-internal-format msgid "%qT referred to as %qs" msgstr "" -#: cp/decl.c:12497 cp/decl.c:12504 +#: cp/decl.c:12519 cp/decl.c:12526 #, gcc-internal-format msgid "%q+T has a previous declaration here" msgstr "" -#: cp/decl.c:12503 +#: cp/decl.c:12525 #, gcc-internal-format msgid "%qT referred to as enum" msgstr "" @@ -39878,98 +39983,114 @@ msgstr "" #. void f(class C); // No template header here #. #. then the required template argument is missing. -#: cp/decl.c:12518 +#: cp/decl.c:12540 #, gcc-internal-format msgid "template argument required for %<%s %T%>" msgstr "" -#: cp/decl.c:12572 cp/name-lookup.c:3192 +#: cp/decl.c:12594 cp/name-lookup.c:3195 #, gcc-internal-format msgid "%qD has the same name as the class in which it is declared" msgstr "" -#: cp/decl.c:12602 cp/name-lookup.c:2682 cp/name-lookup.c:3520 -#: cp/name-lookup.c:3565 cp/parser.c:6041 cp/parser.c:24743 +#: cp/decl.c:12624 cp/friend.c:261 cp/parser.c:2971 cp/parser.c:6092 +#: cp/pt.c:8156 +#, gcc-internal-format +msgid "%qT is not a template" +msgstr "" + +#: cp/decl.c:12625 cp/friend.c:262 cp/tree.c:3719 +#, gcc-internal-format +msgid "previous declaration here" +msgstr "" + +#: cp/decl.c:12629 +#, gcc-internal-format +msgid "perhaps you want to explicitly add %<%T::%>" +msgstr "" + +#: cp/decl.c:12638 cp/name-lookup.c:2685 cp/name-lookup.c:3524 +#: cp/name-lookup.c:3569 cp/parser.c:6043 cp/parser.c:24810 #, gcc-internal-format msgid "reference to %qD is ambiguous" msgstr "" -#: cp/decl.c:12723 +#: cp/decl.c:12759 #, gcc-internal-format msgid "use of enum %q#D without previous declaration" msgstr "" -#: cp/decl.c:12756 +#: cp/decl.c:12792 #, gcc-internal-format msgid "redeclaration of %qT as a non-template" msgstr "" -#: cp/decl.c:12757 +#: cp/decl.c:12793 #, gcc-internal-format msgid "previous declaration %q+D" msgstr "" -#: cp/decl.c:12900 +#: cp/decl.c:12936 #, gcc-internal-format msgid "derived union %qT invalid" msgstr "" -#: cp/decl.c:12909 +#: cp/decl.c:12945 #, gcc-internal-format msgid "Java class %qT cannot have multiple bases" msgstr "" -#: cp/decl.c:12914 +#: cp/decl.c:12950 #, gcc-internal-format msgid "%qT defined with multiple direct bases" msgstr "" -#: cp/decl.c:12923 +#: cp/decl.c:12959 #, gcc-internal-format msgid "Java class %qT cannot have virtual bases" msgstr "" -#: cp/decl.c:12928 +#: cp/decl.c:12964 #, gcc-internal-format msgid "%qT defined with direct virtual base" msgstr "" -#: cp/decl.c:12946 +#: cp/decl.c:12982 #, gcc-internal-format msgid "base type %qT fails to be a struct or class type" msgstr "" -#: cp/decl.c:12979 +#: cp/decl.c:13015 #, gcc-internal-format msgid "recursive type %qT undefined" msgstr "" -#: cp/decl.c:12981 +#: cp/decl.c:13017 #, gcc-internal-format msgid "duplicate base type %qT invalid" msgstr "" -#: cp/decl.c:13111 +#: cp/decl.c:13147 #, gcc-internal-format msgid "scoped/unscoped mismatch in enum %q#T" msgstr "" -#: cp/decl.c:13114 cp/decl.c:13122 cp/decl.c:13134 cp/parser.c:17226 +#: cp/decl.c:13150 cp/decl.c:13158 cp/decl.c:13170 cp/parser.c:17256 #, gcc-internal-format msgid "previous definition here" msgstr "" -#: cp/decl.c:13119 +#: cp/decl.c:13155 #, gcc-internal-format msgid "underlying type mismatch in enum %q#T" msgstr "" -#: cp/decl.c:13131 +#: cp/decl.c:13167 #, gcc-internal-format msgid "different underlying type in enum %q#T" msgstr "" -#: cp/decl.c:13200 +#: cp/decl.c:13236 #, gcc-internal-format msgid "underlying type %<%T%> of %<%T%> must be an integral type" msgstr "" @@ -39978,77 +40099,77 @@ msgstr "" #. #. IF no integral type can represent all the enumerator values, the #. enumeration is ill-formed. -#: cp/decl.c:13334 +#: cp/decl.c:13370 #, gcc-internal-format msgid "no integral type can represent all of the enumerator values for %qT" msgstr "" -#: cp/decl.c:13503 +#: cp/decl.c:13538 #, gcc-internal-format msgid "enumerator value for %qD is not an integer constant" msgstr "" -#: cp/decl.c:13550 +#: cp/decl.c:13585 #, gcc-internal-format msgid "incremented enumerator value is too large for %<unsigned long%>" msgstr "" -#: cp/decl.c:13562 +#: cp/decl.c:13597 #, gcc-internal-format msgid "overflow in enumeration values at %qD" msgstr "" -#: cp/decl.c:13582 +#: cp/decl.c:13617 #, gcc-internal-format msgid "enumerator value %E is outside the range of underlying type %<%T%>" msgstr "" -#: cp/decl.c:13675 +#: cp/decl.c:13710 #, gcc-internal-format msgid "return type %q#T is incomplete" msgstr "" -#: cp/decl.c:13677 +#: cp/decl.c:13712 #, gcc-internal-format msgid "return type has Java class type %q#T" msgstr "" -#: cp/decl.c:13812 cp/typeck.c:8842 +#: cp/decl.c:13884 cp/typeck.c:8822 #, gcc-internal-format msgid "%<operator=%> should return a reference to %<*this%>" msgstr "" -#: cp/decl.c:14156 +#: cp/decl.c:14227 #, gcc-internal-format msgid "invalid function declaration" msgstr "" -#: cp/decl.c:14238 +#: cp/decl.c:14309 #, gcc-internal-format msgid "parameter %qD declared void" msgstr "" -#: cp/decl.c:14628 +#: cp/decl.c:14658 #, gcc-internal-format msgid "no return statements in function returning %qT" msgstr "" -#: cp/decl.c:14630 cp/typeck.c:8723 +#: cp/decl.c:14660 cp/typeck.c:8703 #, gcc-internal-format msgid "only plain %<auto%> return type can be deduced to %<void%>" msgstr "" -#: cp/decl.c:14843 +#: cp/decl.c:14862 #, gcc-internal-format msgid "invalid member function declaration" msgstr "" -#: cp/decl.c:14857 +#: cp/decl.c:14876 #, gcc-internal-format msgid "%qD is already defined in class %qT" msgstr "" -#: cp/decl.c:15223 cp/decl2.c:5119 cp/decl2.c:5177 +#: cp/decl.c:15242 cp/decl2.c:5131 cp/decl2.c:5181 #, gcc-internal-format msgid "use of %qD before deduction of %<auto%>" msgstr "" @@ -40090,7 +40211,7 @@ msgstr "" msgid "deleting %qT is undefined" msgstr "" -#: cp/decl2.c:540 cp/pt.c:5166 +#: cp/decl2.c:540 cp/pt.c:5172 #, gcc-internal-format msgid "template declaration of %q#D" msgstr "" @@ -40114,7 +40235,7 @@ msgstr "" #. [temp.mem] #. #. A destructor shall not be a member template. -#: cp/decl2.c:673 cp/pt.c:5136 +#: cp/decl2.c:673 cp/pt.c:5142 #, gcc-internal-format msgid "destructor %qD declared as member template" msgstr "" @@ -40295,7 +40416,7 @@ msgstr "" msgid "%qT declared with greater visibility than its base %qT" msgstr "" -#: cp/decl2.c:4255 +#: cp/decl2.c:4263 #, gcc-internal-format msgid "%q#D, declared using anonymous type, is used but never defined" msgstr "" @@ -40304,62 +40425,62 @@ msgstr "" #. no linkage can only be used to declare extern "C" #. entities. Since it's not always an error in the #. ISO C++ 90 Standard, we only issue a warning. -#: cp/decl2.c:4264 +#: cp/decl2.c:4272 #, gcc-internal-format msgid "" "anonymous type with no linkage used to declare variable %q#D with linkage" msgstr "" -#: cp/decl2.c:4268 +#: cp/decl2.c:4276 #, gcc-internal-format msgid "" "anonymous type with no linkage used to declare function %q#D with linkage" msgstr "" -#: cp/decl2.c:4272 +#: cp/decl2.c:4280 #, gcc-internal-format msgid "" "%q#D does not refer to the unqualified type, so it is not used for linkage" msgstr "" -#: cp/decl2.c:4280 +#: cp/decl2.c:4288 #, gcc-internal-format msgid "%q#D, declared using local type %qT, is used but never defined" msgstr "" -#: cp/decl2.c:4284 +#: cp/decl2.c:4292 #, gcc-internal-format msgid "type %qT with no linkage used to declare variable %q#D with linkage" msgstr "" -#: cp/decl2.c:4287 +#: cp/decl2.c:4295 #, gcc-internal-format msgid "type %qT with no linkage used to declare function %q#D with linkage" msgstr "" -#: cp/decl2.c:4474 cp/decl2.c:4477 +#: cp/decl2.c:4482 cp/decl2.c:4485 #, gcc-internal-format msgid "the program should also define %qD" msgstr "" -#: cp/decl2.c:4838 +#: cp/decl2.c:4846 #, gcc-internal-format msgid "inline function %qD used but never defined" msgstr "" -#: cp/decl2.c:5027 +#: cp/decl2.c:5035 #, gcc-internal-format msgid "default argument missing for parameter %P of %q+#D" msgstr "" #. We mark a lambda conversion op as deleted if we can't #. generate it properly; see maybe_add_lambda_conv_op. -#: cp/decl2.c:5091 +#: cp/decl2.c:5103 #, gcc-internal-format msgid "converting lambda which uses %<...%> to function pointer" msgstr "" -#: cp/decl2.c:5098 +#: cp/decl2.c:5110 #, gcc-internal-format msgid "use of deleted function %qD" msgstr "" @@ -40467,7 +40588,7 @@ msgstr "" msgid "%qD is not a member of %qT" msgstr "" -#: cp/error.c:3712 cp/typeck.c:2759 +#: cp/error.c:3712 cp/typeck.c:2767 #, gcc-internal-format msgid "%qD is not a member of %qD" msgstr "" @@ -40509,7 +40630,7 @@ msgstr "" msgid "throwing NULL, which has integral, not pointer type" msgstr "" -#: cp/except.c:754 cp/init.c:2803 +#: cp/except.c:754 cp/init.c:2864 #, gcc-internal-format msgid "%qD should never be overloaded" msgstr "" @@ -40536,27 +40657,27 @@ msgstr "" msgid "cannot catch type %qT because it involves types of variable size" msgstr "" -#: cp/except.c:1093 +#: cp/except.c:1094 #, gcc-internal-format msgid "exception of type %qT will be caught" msgstr "" -#: cp/except.c:1096 +#: cp/except.c:1097 #, gcc-internal-format msgid " by earlier handler for %qT" msgstr "" -#: cp/except.c:1125 +#: cp/except.c:1126 #, gcc-internal-format msgid "%<...%> handler must be the last handler for its try block" msgstr "" -#: cp/except.c:1207 +#: cp/except.c:1208 #, gcc-internal-format msgid "noexcept-expression evaluates to %<false%> because of a call to %qD" msgstr "" -#: cp/except.c:1210 +#: cp/except.c:1211 #, gcc-internal-format msgid "but %qD does not throw; perhaps it should be declared %<noexcept%>" msgstr "" @@ -40578,74 +40699,80 @@ msgstr "" #. [temp.friend] #. Friend declarations shall not declare partial #. specializations. -#: cp/friend.c:254 cp/friend.c:284 +#: cp/friend.c:254 cp/friend.c:296 #, gcc-internal-format msgid "partial specialization %qT declared %<friend%>" msgstr "" -#: cp/friend.c:262 +#: cp/friend.c:266 +#, gcc-internal-format +msgid "" +"perhaps you need explicit template arguments in your nested-name-specifier" +msgstr "" + +#: cp/friend.c:274 #, gcc-internal-format msgid "class %qT is implicitly friends with itself" msgstr "" -#: cp/friend.c:320 +#: cp/friend.c:332 #, gcc-internal-format msgid "%qT is not a member of %qT" msgstr "" -#: cp/friend.c:325 +#: cp/friend.c:337 #, gcc-internal-format msgid "%qT is not a member class template of %qT" msgstr "" -#: cp/friend.c:334 +#: cp/friend.c:346 #, gcc-internal-format msgid "%qT is not a nested class of %qT" msgstr "" #. template <class T> friend class T; -#: cp/friend.c:348 +#: cp/friend.c:360 #, gcc-internal-format msgid "template parameter type %qT declared %<friend%>" msgstr "" #. template <class T> friend class A; where A is not a template -#: cp/friend.c:356 +#: cp/friend.c:368 #, gcc-internal-format msgid "%q#T is not a template" msgstr "" -#: cp/friend.c:379 +#: cp/friend.c:391 #, gcc-internal-format msgid "%qD is already a friend of %qT" msgstr "" -#: cp/friend.c:389 +#: cp/friend.c:401 #, gcc-internal-format msgid "%qT is already a friend of %qT" msgstr "" -#: cp/friend.c:429 +#: cp/friend.c:441 #, gcc-internal-format msgid "friend declaration %qD may not have virt-specifiers" msgstr "" -#: cp/friend.c:522 +#: cp/friend.c:534 #, gcc-internal-format msgid "member %qD declared as friend before type %qT defined" msgstr "" -#: cp/friend.c:571 +#: cp/friend.c:583 #, gcc-internal-format msgid "friend declaration %qD in local class without prior declaration" msgstr "" -#: cp/friend.c:594 +#: cp/friend.c:606 #, gcc-internal-format msgid "friend declaration %q#D declares a non-template function" msgstr "" -#: cp/friend.c:598 +#: cp/friend.c:610 #, gcc-internal-format msgid "" "(if this is not what you intended, make sure the function template has " @@ -40698,18 +40825,18 @@ msgstr "" msgid "invalid initializer for array member %q#D" msgstr "" -#: cp/init.c:756 cp/init.c:780 cp/init.c:2242 cp/method.c:1217 +#: cp/init.c:756 cp/init.c:780 cp/init.c:2234 cp/method.c:1230 #, gcc-internal-format msgid "uninitialized const member in %q#T" msgstr "" -#: cp/init.c:758 cp/init.c:775 cp/init.c:782 cp/init.c:2227 cp/init.c:2255 -#: cp/method.c:1220 cp/method.c:1231 +#: cp/init.c:758 cp/init.c:775 cp/init.c:782 cp/init.c:2219 cp/init.c:2247 +#: cp/method.c:1233 cp/method.c:1244 #, gcc-internal-format msgid "%q#D should be initialized" msgstr "" -#: cp/init.c:773 cp/init.c:2214 cp/method.c:1228 +#: cp/init.c:773 cp/init.c:2206 cp/method.c:1241 #, gcc-internal-format msgid "uninitialized reference member in %q#T" msgstr "" @@ -40760,304 +40887,309 @@ msgid "" "base class %q#T should be explicitly initialized in the copy constructor" msgstr "" -#: cp/init.c:1370 cp/init.c:1389 +#: cp/init.c:1365 cp/init.c:1384 #, gcc-internal-format msgid "class %qT does not have any field named %qD" msgstr "" -#: cp/init.c:1376 +#: cp/init.c:1371 #, gcc-internal-format msgid "" "%q#D is a static data member; it can only be initialized at its definition" msgstr "" -#: cp/init.c:1383 +#: cp/init.c:1378 #, gcc-internal-format msgid "%q#D is not a non-static data member of %qT" msgstr "" -#: cp/init.c:1422 +#: cp/init.c:1417 #, gcc-internal-format msgid "unnamed initializer for %qT, which has no base classes" msgstr "" -#: cp/init.c:1430 +#: cp/init.c:1425 #, gcc-internal-format msgid "unnamed initializer for %qT, which uses multiple inheritance" msgstr "" -#: cp/init.c:1477 +#: cp/init.c:1472 #, gcc-internal-format msgid "%qD is both a direct base and an indirect virtual base" msgstr "" -#: cp/init.c:1485 +#: cp/init.c:1480 #, gcc-internal-format msgid "type %qT is not a direct or virtual base of %qT" msgstr "" -#: cp/init.c:1488 +#: cp/init.c:1483 #, gcc-internal-format msgid "type %qT is not a direct base of %qT" msgstr "" -#: cp/init.c:1573 +#: cp/init.c:1568 #, gcc-internal-format msgid "bad array initializer" msgstr "" -#: cp/init.c:1872 cp/semantics.c:3146 +#: cp/init.c:1864 cp/semantics.c:3194 #, gcc-internal-format msgid "%qT is not a class type" msgstr "" -#: cp/init.c:1928 +#: cp/init.c:1920 #, gcc-internal-format msgid "incomplete type %qT does not have member %qD" msgstr "" -#: cp/init.c:1942 +#: cp/init.c:1934 #, gcc-internal-format msgid "invalid pointer to bit-field %qD" msgstr "" -#: cp/init.c:2023 cp/typeck.c:1831 +#: cp/init.c:2015 cp/typeck.c:1831 #, gcc-internal-format msgid "invalid use of non-static member function %qD" msgstr "" -#: cp/init.c:2030 cp/semantics.c:1727 +#: cp/init.c:2022 cp/semantics.c:1762 #, gcc-internal-format msgid "invalid use of non-static data member %qD" msgstr "" -#: cp/init.c:2211 +#: cp/init.c:2203 #, gcc-internal-format msgid "" "uninitialized reference member in %q#T using %<new%> without new-initializer" msgstr "" -#: cp/init.c:2219 +#: cp/init.c:2211 #, gcc-internal-format msgid "" "uninitialized reference member in base %q#T of %q#T using %<new%> without " "new-initializer" msgstr "" -#: cp/init.c:2223 +#: cp/init.c:2215 #, gcc-internal-format msgid "uninitialized reference member in base %q#T of %q#T" msgstr "" -#: cp/init.c:2239 +#: cp/init.c:2231 #, gcc-internal-format msgid "" "uninitialized const member in %q#T using %<new%> without new-initializer" msgstr "" -#: cp/init.c:2247 +#: cp/init.c:2239 #, gcc-internal-format msgid "" "uninitialized const member in base %q#T of %q#T using %<new%> without new-" "initializer" msgstr "" -#: cp/init.c:2251 +#: cp/init.c:2243 #, gcc-internal-format msgid "uninitialized const member in base %q#T of %q#T" msgstr "" -#: cp/init.c:2457 +#: cp/init.c:2518 #, gcc-internal-format msgid "" "placement new constructing an object of type %<%T [%wu]%> and size %qwu in a " "region of type %qT and size %qwi" msgstr "" -#: cp/init.c:2469 +#: cp/init.c:2530 #, gcc-internal-format msgid "" "placement new constructing an array of objects of type %qT and size %qwu in " "a region of type %qT and size %qwi" msgstr "" -#: cp/init.c:2480 +#: cp/init.c:2541 #, gcc-internal-format msgid "" "placement new constructing an object of type %qT and size %qwu in a region " "of type %qT and size %qwi" msgstr "" -#: cp/init.c:2594 +#: cp/init.c:2655 #, gcc-internal-format msgid "integer overflow in array size" msgstr "" -#: cp/init.c:2604 +#: cp/init.c:2665 #, gcc-internal-format msgid "array size in new-expression must be constant" msgstr "" -#: cp/init.c:2618 +#: cp/init.c:2679 #, gcc-internal-format msgid "variably modified type not allowed in new-expression" msgstr "" -#: cp/init.c:2649 +#: cp/init.c:2710 #, gcc-internal-format msgid "invalid type %<void%> for new" msgstr "" -#: cp/init.c:2692 +#: cp/init.c:2753 #, gcc-internal-format msgid "uninitialized const in %<new%> of %q#T" msgstr "" -#: cp/init.c:2784 +#: cp/init.c:2845 #, gcc-internal-format msgid "%qT isn%'t a valid Java class type" msgstr "" -#: cp/init.c:2797 +#: cp/init.c:2858 #, gcc-internal-format msgid "call to Java constructor with %qs undefined" msgstr "" -#: cp/init.c:2813 +#: cp/init.c:2873 +#, gcc-internal-format +msgid "%qD is not a function returning a pointer" +msgstr "" + +#: cp/init.c:2882 #, gcc-internal-format msgid "Java class %q#T object allocated using placement new" msgstr "" -#: cp/init.c:2857 +#: cp/init.c:2926 #, gcc-internal-format msgid "no suitable %qD found in class %qT" msgstr "" -#: cp/init.c:2864 cp/search.c:1171 +#: cp/init.c:2933 cp/search.c:1171 #, gcc-internal-format msgid "request for member %qD is ambiguous" msgstr "" -#: cp/init.c:3093 +#: cp/init.c:3162 #, gcc-internal-format msgid "parenthesized initializer in array new" msgstr "" -#: cp/init.c:3331 +#: cp/init.c:3400 #, gcc-internal-format msgid "size in array new must have integral type" msgstr "" -#: cp/init.c:3363 +#: cp/init.c:3432 #, gcc-internal-format msgid "new cannot be applied to a reference type" msgstr "" -#: cp/init.c:3372 +#: cp/init.c:3441 #, gcc-internal-format msgid "new cannot be applied to a function type" msgstr "" -#: cp/init.c:3416 +#: cp/init.c:3485 #, gcc-internal-format msgid "call to Java constructor, while %<jclass%> undefined" msgstr "" -#: cp/init.c:3434 +#: cp/init.c:3503 #, gcc-internal-format msgid "can%'t find %<class$%> in %qT" msgstr "" -#: cp/init.c:3494 +#: cp/init.c:3563 #, gcc-internal-format msgid "possible problem detected in invocation of delete [] operator:" msgstr "" -#: cp/init.c:3498 +#: cp/init.c:3567 #, gcc-internal-format msgid "" "neither the destructor nor the class-specific operator delete [] will be " "called, even if they are declared when the class is defined" msgstr "" -#: cp/init.c:3988 +#: cp/init.c:4059 #, gcc-internal-format msgid "initializer ends prematurely" msgstr "" -#: cp/init.c:4073 +#: cp/init.c:4144 #, gcc-internal-format msgid "cannot initialize multi-dimensional array with initializer" msgstr "" -#: cp/init.c:4280 +#: cp/init.c:4351 #, gcc-internal-format msgid "unknown array size in delete" msgstr "" -#: cp/init.c:4304 +#: cp/init.c:4375 #, gcc-internal-format msgid "possible problem detected in invocation of delete operator:" msgstr "" -#: cp/init.c:4309 +#: cp/init.c:4380 #, gcc-internal-format msgid "" "neither the destructor nor the class-specific operator delete will be " "called, even if they are declared when the class is defined" msgstr "" -#: cp/init.c:4324 +#: cp/init.c:4395 #, gcc-internal-format msgid "" "deleting object of abstract class type %qT which has non-virtual destructor " -"will cause undefined behaviour" +"will cause undefined behavior" msgstr "" -#: cp/init.c:4329 +#: cp/init.c:4400 #, gcc-internal-format msgid "" "deleting object of polymorphic class type %qT which has non-virtual " -"destructor might cause undefined behaviour" +"destructor might cause undefined behavior" msgstr "" -#: cp/init.c:4627 +#: cp/init.c:4701 #, gcc-internal-format msgid "type to vector delete is neither pointer or array type" msgstr "" -#: cp/lambda.c:461 +#: cp/lambda.c:462 #, gcc-internal-format msgid "array of runtime bound cannot be captured by copy, only by reference" msgstr "" -#: cp/lambda.c:476 +#: cp/lambda.c:477 #, gcc-internal-format msgid "" "capture of variable-size type %qT that is not an N3639 array of runtime bound" msgstr "" -#: cp/lambda.c:480 +#: cp/lambda.c:481 #, gcc-internal-format msgid "because the array element type %qT has variable size" msgstr "" -#: cp/lambda.c:491 +#: cp/lambda.c:492 #, gcc-internal-format msgid "cannot capture %qE by reference" msgstr "" -#: cp/lambda.c:499 +#: cp/lambda.c:500 #, gcc-internal-format msgid "capture by copy of incomplete type %qT" msgstr "" -#: cp/lambda.c:523 +#: cp/lambda.c:524 #, gcc-internal-format msgid "already captured %qD in lambda expression" msgstr "" -#: cp/lambda.c:722 +#: cp/lambda.c:723 #, gcc-internal-format msgid "%<this%> was not captured for this lambda function" msgstr "" @@ -41121,188 +41253,194 @@ msgid "" "use of an undeclared name is deprecated)" msgstr "" -#: cp/mangle.c:2145 +#: cp/mangle.c:2146 #, gcc-internal-format msgid "mangling typeof, use decltype instead" msgstr "" -#: cp/mangle.c:2149 +#: cp/mangle.c:2150 #, gcc-internal-format msgid "mangling __underlying_type" msgstr "" -#: cp/mangle.c:2436 +#: cp/mangle.c:2437 #, gcc-internal-format msgid "mangling unknown fixed point type" msgstr "" -#: cp/mangle.c:3009 +#: cp/mangle.c:3010 #, gcc-internal-format msgid "" "use of built-in trait %qE in function signature; use library traits instead" msgstr "" -#: cp/mangle.c:3014 +#: cp/mangle.c:3015 #, gcc-internal-format, gfc-internal-format msgid "mangling %C" msgstr "" -#: cp/mangle.c:3091 +#: cp/mangle.c:3092 #, gcc-internal-format msgid "omitted middle operand to %<?:%> operand cannot be mangled" msgstr "" -#: cp/mangle.c:3155 +#: cp/mangle.c:3156 #, gcc-internal-format msgid "string literal in function template signature" msgstr "" -#: cp/mangle.c:3631 +#: cp/mangle.c:3639 #, gcc-internal-format msgid "" "a later -fabi-version= (or =0) avoids this error with a change in mangling" msgstr "" -#: cp/mangle.c:3658 +#: cp/mangle.c:3666 #, gcc-internal-format msgid "" "the mangled name of %qD changed between -fabi-version=%d (%D) and -fabi-" "version=%d (%D)" msgstr "" -#: cp/mangle.c:3664 +#: cp/mangle.c:3672 #, gcc-internal-format msgid "" "the mangled name of %qD changes between -fabi-version=%d (%D) and -fabi-" "version=%d (%D)" msgstr "" -#: cp/mangle.c:3953 +#: cp/mangle.c:3968 +#, gcc-internal-format +msgid "" +"the mangled name of %qD changes between -fabi-version=%d and -fabi-version=%d" +msgstr "" + +#: cp/mangle.c:3973 #, gcc-internal-format msgid "" "the mangled name of the initialization guard variable for%qD changes between " "-fabi-version=%d and -fabi-version=%d" msgstr "" -#: cp/method.c:692 cp/method.c:1173 +#: cp/method.c:705 cp/method.c:1186 #, gcc-internal-format msgid "non-static const member %q#D, can%'t use default assignment operator" msgstr "" -#: cp/method.c:698 cp/method.c:1179 +#: cp/method.c:711 cp/method.c:1192 #, gcc-internal-format msgid "" "non-static reference member %q#D, can%'t use default assignment operator" msgstr "" -#: cp/method.c:816 +#: cp/method.c:829 #, gcc-internal-format msgid "synthesized method %qD first required here " msgstr "" -#: cp/method.c:1122 +#: cp/method.c:1135 #, gcc-internal-format msgid "union member %q+D with non-trivial %qD" msgstr "" -#: cp/method.c:1132 +#: cp/method.c:1145 #, gcc-internal-format msgid "defaulted constructor calls non-constexpr %qD" msgstr "" -#: cp/method.c:1196 +#: cp/method.c:1209 #, gcc-internal-format msgid "initializer for %q#D is invalid" msgstr "" -#: cp/method.c:1248 +#: cp/method.c:1261 #, gcc-internal-format msgid "defaulted default constructor does not initialize %q#D" msgstr "" -#: cp/method.c:1259 +#: cp/method.c:1272 #, gcc-internal-format msgid "copying non-static data member %q#D of rvalue reference type" msgstr "" #. A trivial constructor doesn't have any NSDMI. -#: cp/method.c:1417 +#: cp/method.c:1439 #, gcc-internal-format msgid "" "defaulted default constructor does not initialize any non-static data member" msgstr "" -#: cp/method.c:1494 +#: cp/method.c:1516 #, gcc-internal-format msgid "" "defaulted move assignment for %qT calls a non-trivial move assignment " "operator for virtual base %qT" msgstr "" -#: cp/method.c:1600 +#: cp/method.c:1622 #, gcc-internal-format msgid "a lambda closure type has a deleted default constructor" msgstr "" -#: cp/method.c:1603 +#: cp/method.c:1625 #, gcc-internal-format msgid "a lambda closure type has a deleted copy assignment operator" msgstr "" -#: cp/method.c:1614 +#: cp/method.c:1636 #, gcc-internal-format msgid "" "%q#D is implicitly declared as deleted because %qT declares a move " "constructor or move assignment operator" msgstr "" -#: cp/method.c:1634 +#: cp/method.c:1656 #, gcc-internal-format msgid "" "%q#D is implicitly deleted because the default definition would be ill-" "formed:" msgstr "" -#: cp/method.c:1643 +#: cp/method.c:1665 msgid "" "%q#F is implicitly deleted because its exception-specification does not " "match the implicit exception-specification %qX" msgstr "" -#: cp/method.c:1961 +#: cp/method.c:1983 #, gcc-internal-format msgid "defaulted declaration %q+D" msgstr "" -#: cp/method.c:1963 +#: cp/method.c:1985 #, gcc-internal-format msgid "does not match expected signature %qD" msgstr "" -#: cp/method.c:1995 +#: cp/method.c:2017 msgid "" "function %q+D defaulted on its redeclaration with an exception-specification " "that differs from the implicit exception-specification %qX" msgstr "" -#: cp/method.c:2017 +#: cp/method.c:2039 #, gcc-internal-format msgid "" "explicitly defaulted function %q+D cannot be declared as constexpr because " "the implicit declaration is not constexpr:" msgstr "" -#: cp/method.c:2063 +#: cp/method.c:2085 #, gcc-internal-format msgid "a template cannot be defaulted" msgstr "" -#: cp/method.c:2091 +#: cp/method.c:2113 #, gcc-internal-format msgid "%qD cannot be defaulted" msgstr "" -#: cp/method.c:2100 +#: cp/method.c:2122 #, gcc-internal-format msgid "defaulted function %q+D with default argument" msgstr "" @@ -41473,8 +41611,8 @@ msgid "%qT is not a namespace" msgstr "" #. C++11 7.3.3/10. -#: cp/name-lookup.c:2548 cp/name-lookup.c:2604 cp/name-lookup.c:2674 -#: cp/name-lookup.c:2689 +#: cp/name-lookup.c:2548 cp/name-lookup.c:2595 cp/name-lookup.c:2677 +#: cp/name-lookup.c:2692 #, gcc-internal-format msgid "%qD is already declared in this scope" msgstr "" @@ -41484,111 +41622,121 @@ msgstr "" msgid "%qD not declared" msgstr "" -#: cp/name-lookup.c:3341 +#: cp/name-lookup.c:3344 #, gcc-internal-format msgid "using-declaration for non-member at class scope" msgstr "" -#: cp/name-lookup.c:3348 +#: cp/name-lookup.c:3351 #, gcc-internal-format msgid "%<%T::%D%> names destructor" msgstr "" -#: cp/name-lookup.c:3361 +#: cp/name-lookup.c:3364 #, gcc-internal-format msgid "%<%T::%D%> names constructor in %qT" msgstr "" -#: cp/name-lookup.c:3412 +#: cp/name-lookup.c:3415 #, gcc-internal-format msgid "no members matching %<%T::%D%> in %q#T" msgstr "" -#: cp/name-lookup.c:3499 +#: cp/name-lookup.c:3502 #, gcc-internal-format msgid "declaration of %qD not in a namespace surrounding %qD" msgstr "" -#: cp/name-lookup.c:3507 +#: cp/name-lookup.c:3510 #, gcc-internal-format msgid "explicit qualification in declaration of %qD" msgstr "" -#: cp/name-lookup.c:3590 +#: cp/name-lookup.c:3583 +#, gcc-internal-format +msgid "%qD has not been declared within %D" +msgstr "" + +#: cp/name-lookup.c:3584 +#, gcc-internal-format +msgid "only here as a friend" +msgstr "" + +#: cp/name-lookup.c:3600 #, gcc-internal-format msgid "%qD should have been declared inside %qD" msgstr "" -#: cp/name-lookup.c:3635 +#: cp/name-lookup.c:3645 #, gcc-internal-format msgid "%qD attribute requires a single NTBS argument" msgstr "" -#: cp/name-lookup.c:3642 +#: cp/name-lookup.c:3652 #, gcc-internal-format msgid "" "%qD attribute is meaningless since members of the anonymous namespace get " "local symbols" msgstr "" -#: cp/name-lookup.c:3652 +#: cp/name-lookup.c:3662 #, gcc-internal-format msgid "ignoring %qD attribute on non-inline namespace" msgstr "" -#: cp/name-lookup.c:3658 +#: cp/name-lookup.c:3668 #, gcc-internal-format msgid "ignoring %qD attribute on anonymous namespace" msgstr "" -#: cp/name-lookup.c:3677 cp/name-lookup.c:4090 +#: cp/name-lookup.c:3687 cp/name-lookup.c:4100 #, gcc-internal-format msgid "%qD attribute directive ignored" msgstr "" -#: cp/name-lookup.c:3741 +#: cp/name-lookup.c:3751 #, gcc-internal-format msgid "namespace alias %qD not allowed here, assuming %qD" msgstr "" -#: cp/name-lookup.c:4078 +#: cp/name-lookup.c:4088 #, gcc-internal-format msgid "strong using only meaningful at namespace scope" msgstr "" -#: cp/name-lookup.c:4082 +#: cp/name-lookup.c:4092 #, gcc-internal-format msgid "current namespace %qD does not enclose strongly used namespace %qD" msgstr "" -#: cp/name-lookup.c:4428 +#: cp/name-lookup.c:4438 #, gcc-internal-format msgid "maximum limit of %d namespaces searched for %qE" msgstr "" -#: cp/name-lookup.c:4438 +#: cp/name-lookup.c:4448 #, gcc-internal-format msgid "suggested alternative:" msgid_plural "suggested alternatives:" msgstr[0] "" msgstr[1] "" -#: cp/name-lookup.c:4442 +#: cp/name-lookup.c:4452 #, gcc-internal-format msgid " %qE" msgstr "" -#: cp/name-lookup.c:5709 +#: cp/name-lookup.c:5727 #, gcc-internal-format msgid "argument dependent lookup finds %q+D" msgstr "" -#: cp/name-lookup.c:6243 +#: cp/name-lookup.c:6261 #, gcc-internal-format msgid "XXX entering pop_everything ()\n" msgstr "" -#: cp/name-lookup.c:6252 +#: cp/name-lookup.c:6270 #, gcc-internal-format msgid "XXX leaving pop_everything ()\n" msgstr "" @@ -41608,15 +41756,15 @@ msgstr "" msgid "LEXER_DEBUGGING_ENABLED_P is not set to true" msgstr "" -#: cp/parser.c:1349 cp/parser.c:35541 +#: cp/parser.c:1349 cp/parser.c:35591 #, gcc-internal-format msgid "" "%<#pragma omp declare simd%> not immediately followed by function " "declaration or definition" msgstr "" -#: cp/parser.c:1387 cp/parser.c:36371 cp/parser.c:36476 cp/parser.c:36501 -#: cp/parser.c:36558 +#: cp/parser.c:1387 cp/parser.c:36422 cp/parser.c:36527 cp/parser.c:36552 +#: cp/parser.c:36609 #, gcc-internal-format msgid "" "%<#pragma acc routine%> not followed by a function declaration or definition" @@ -41642,7 +41790,7 @@ msgstr "" msgid "request for member %qE in non-class type %qT" msgstr "" -#: cp/parser.c:2826 cp/parser.c:17174 +#: cp/parser.c:2826 cp/parser.c:17204 #, gcc-internal-format msgid "%<%T::%E%> has not been declared" msgstr "" @@ -41702,11 +41850,6 @@ msgstr "" msgid "(perhaps a semicolon is missing after the definition of %qT)" msgstr "" -#: cp/parser.c:2971 cp/parser.c:6090 cp/pt.c:8149 -#, gcc-internal-format -msgid "%qT is not a template" -msgstr "" - #: cp/parser.c:2975 #, gcc-internal-format msgid "%qE is not a class template" @@ -41727,7 +41870,7 @@ msgstr "" msgid "floating-point literal cannot appear in a constant-expression" msgstr "" -#: cp/parser.c:3017 cp/pt.c:15993 +#: cp/parser.c:3017 cp/pt.c:16072 #, gcc-internal-format msgid "" "a cast to a type other than an integral or enumeration type cannot appear in " @@ -41836,1034 +41979,1039 @@ msgstr "" msgid "C++11 %<thread_local%> only available with -std=c++11 or -std=gnu++11" msgstr "" -#: cp/parser.c:3200 +#: cp/parser.c:3176 +#, gcc-internal-format +msgid "%<concept%> only available with -fconcepts" +msgstr "" + +#: cp/parser.c:3202 #, gcc-internal-format msgid "(perhaps %<typename %T::%E%> was intended)" msgstr "" -#: cp/parser.c:3218 +#: cp/parser.c:3220 #, gcc-internal-format msgid "%qE in namespace %qE does not name a template type" msgstr "" -#: cp/parser.c:3222 +#: cp/parser.c:3224 #, gcc-internal-format msgid "%qE in namespace %qE does not name a type" msgstr "" #. A<T>::A<T>() -#: cp/parser.c:3231 +#: cp/parser.c:3233 #, gcc-internal-format msgid "%<%T::%E%> names the constructor, not the type" msgstr "" -#: cp/parser.c:3234 +#: cp/parser.c:3236 #, gcc-internal-format msgid "and %qT has no template constructors" msgstr "" -#: cp/parser.c:3239 +#: cp/parser.c:3241 #, gcc-internal-format msgid "need %<typename%> before %<%T::%E%> because %qT is a dependent scope" msgstr "" -#: cp/parser.c:3246 +#: cp/parser.c:3248 #, gcc-internal-format msgid "%qE in %q#T does not name a template type" msgstr "" -#: cp/parser.c:3250 +#: cp/parser.c:3252 #, gcc-internal-format msgid "%qE in %q#T does not name a type" msgstr "" -#: cp/parser.c:3850 +#: cp/parser.c:3852 #, gcc-internal-format msgid "expected string-literal" msgstr "" -#: cp/parser.c:3916 +#: cp/parser.c:3918 #, gcc-internal-format msgid "" "inconsistent user-defined literal suffixes %qD and %qD in string literal" msgstr "" -#: cp/parser.c:3964 +#: cp/parser.c:3966 #, gcc-internal-format msgid "a wide string is invalid in this context" msgstr "" -#: cp/parser.c:4079 +#: cp/parser.c:4081 #, gcc-internal-format msgid "unable to find character literal operator %qD with %qT argument" msgstr "" -#: cp/parser.c:4180 +#: cp/parser.c:4182 #, gcc-internal-format msgid "integer literal exceeds range of %qT type" msgstr "" -#: cp/parser.c:4187 +#: cp/parser.c:4189 #, gcc-internal-format msgid "floating literal exceeds range of %qT type" msgstr "" -#: cp/parser.c:4191 +#: cp/parser.c:4193 #, gcc-internal-format msgid "floating literal truncated to zero" msgstr "" -#: cp/parser.c:4231 +#: cp/parser.c:4233 #, gcc-internal-format msgid "unable to find numeric literal operator %qD" msgstr "" -#: cp/parser.c:4233 +#: cp/parser.c:4235 #, gcc-internal-format msgid "" "use -std=gnu++11 or -fext-numeric-literals to enable more built-in suffixes" msgstr "" -#: cp/parser.c:4285 +#: cp/parser.c:4287 #, gcc-internal-format msgid "unable to find string literal operator %qD with %qT, %qT arguments" msgstr "" -#: cp/parser.c:4345 cp/parser.c:12291 +#: cp/parser.c:4347 cp/parser.c:12311 #, gcc-internal-format msgid "expected declaration" msgstr "" -#: cp/parser.c:4607 cp/parser.c:4622 +#: cp/parser.c:4609 cp/parser.c:4624 #, gcc-internal-format msgid "expected binary operator" msgstr "" -#: cp/parser.c:4628 +#: cp/parser.c:4630 #, gcc-internal-format msgid "expected ..." msgstr "" -#: cp/parser.c:4638 +#: cp/parser.c:4640 #, gcc-internal-format msgid "binary expression in operand of fold-expression" msgstr "" -#: cp/parser.c:4641 +#: cp/parser.c:4643 #, gcc-internal-format msgid "conditional expression in operand of fold-expression" msgstr "" -#: cp/parser.c:4649 +#: cp/parser.c:4651 #, gcc-internal-format msgid "mismatched operator in fold-expression" msgstr "" -#: cp/parser.c:4753 +#: cp/parser.c:4755 #, gcc-internal-format msgid "fixed-point types not supported in C++" msgstr "" -#: cp/parser.c:4834 +#: cp/parser.c:4836 #, gcc-internal-format msgid "ISO C++ forbids braced-groups within expressions" msgstr "" -#: cp/parser.c:4846 +#: cp/parser.c:4848 #, gcc-internal-format msgid "" "statement-expressions are not allowed outside functions nor in template-" "argument lists" msgstr "" -#: cp/parser.c:4885 +#: cp/parser.c:4887 #, gcc-internal-format msgid "fold-expressions only available with -std=c++1z or -std=gnu++1z" msgstr "" -#: cp/parser.c:4943 cp/parser.c:5114 cp/parser.c:5292 +#: cp/parser.c:4945 cp/parser.c:5116 cp/parser.c:5294 #, gcc-internal-format msgid "expected primary-expression" msgstr "" -#: cp/parser.c:4973 +#: cp/parser.c:4975 #, gcc-internal-format msgid "%<this%> may not be used in this context" msgstr "" -#: cp/parser.c:5109 +#: cp/parser.c:5111 #, gcc-internal-format msgid "a template declaration cannot appear at block scope" msgstr "" -#: cp/parser.c:5267 +#: cp/parser.c:5269 #, gcc-internal-format msgid "local variable %qD may not appear in this context" msgstr "" -#: cp/parser.c:5444 +#: cp/parser.c:5446 #, gcc-internal-format msgid "expected id-expression" msgstr "" -#: cp/parser.c:5576 +#: cp/parser.c:5578 #, gcc-internal-format msgid "scope %qT before %<~%> is not a class-name" msgstr "" -#: cp/parser.c:5605 cp/parser.c:7554 +#: cp/parser.c:5607 cp/parser.c:7560 #, gcc-internal-format msgid "%<~auto%> only available with -std=c++14 or -std=gnu++14" msgstr "" -#: cp/parser.c:5716 +#: cp/parser.c:5718 #, gcc-internal-format msgid "declaration of %<~%T%> as member of %qT" msgstr "" -#: cp/parser.c:5731 +#: cp/parser.c:5733 #, gcc-internal-format msgid "typedef-name %qD used as destructor declarator" msgstr "" -#: cp/parser.c:5766 +#: cp/parser.c:5768 #, gcc-internal-format msgid "" "literal operator suffixes not preceded by %<_%> are reserved for future " "standardization" msgstr "" -#: cp/parser.c:5777 cp/parser.c:19120 +#: cp/parser.c:5779 cp/parser.c:19150 #, gcc-internal-format msgid "expected unqualified-id" msgstr "" -#: cp/parser.c:5884 +#: cp/parser.c:5886 #, gcc-internal-format msgid "found %<:%> in nested-name-specifier, expected %<::%>" msgstr "" -#: cp/parser.c:5953 +#: cp/parser.c:5955 #, gcc-internal-format msgid "decltype evaluates to %qT, which is not a class or enumeration type" msgstr "" -#: cp/parser.c:5979 +#: cp/parser.c:5981 #, gcc-internal-format msgid "function template-id %qD in nested-name-specifier" msgstr "" -#: cp/parser.c:5987 +#: cp/parser.c:5989 #, gcc-internal-format msgid "variable template-id %qD in nested-name-specifier" msgstr "" -#: cp/parser.c:6091 cp/typeck.c:2605 cp/typeck.c:2625 +#: cp/parser.c:6093 cp/typeck.c:2610 cp/typeck.c:2613 cp/typeck.c:2633 #, gcc-internal-format msgid "%qD is not a template" msgstr "" -#: cp/parser.c:6169 +#: cp/parser.c:6171 #, gcc-internal-format msgid "expected nested-name-specifier" msgstr "" -#: cp/parser.c:6370 cp/parser.c:8534 +#: cp/parser.c:6372 cp/parser.c:8540 #, gcc-internal-format msgid "types may not be defined in casts" msgstr "" -#: cp/parser.c:6451 +#: cp/parser.c:6453 #, gcc-internal-format msgid "types may not be defined in a %<typeid%> expression" msgstr "" -#: cp/parser.c:6509 +#: cp/parser.c:6511 #, gcc-internal-format msgid "%<_Cilk_spawn%> must be followed by an expression" msgstr "" -#: cp/parser.c:6658 +#: cp/parser.c:6660 #, gcc-internal-format msgid "ISO C++ forbids compound-literals" msgstr "" -#: cp/parser.c:6717 +#: cp/parser.c:6719 #, gcc-internal-format msgid "two consecutive %<[%> shall only introduce an attribute" msgstr "" -#: cp/parser.c:7117 +#: cp/parser.c:7119 #, gcc-internal-format msgid "braced list index is not allowed with array notation" msgstr "" -#: cp/parser.c:7210 +#: cp/parser.c:7212 #, gcc-internal-format msgid "%qE does not have class type" msgstr "" -#: cp/parser.c:7299 cp/typeck.c:2498 +#: cp/parser.c:7305 cp/typeck.c:2498 #, gcc-internal-format msgid "invalid use of %qD" msgstr "" -#: cp/parser.c:7308 +#: cp/parser.c:7314 #, gcc-internal-format msgid "%<%D::%D%> is not a class member" msgstr "" -#: cp/parser.c:7606 +#: cp/parser.c:7612 #, gcc-internal-format msgid "non-scalar type" msgstr "" -#: cp/parser.c:7705 +#: cp/parser.c:7711 #, gcc-internal-format msgid "ISO C++ does not allow %<alignof%> with a non-type" msgstr "" -#: cp/parser.c:7790 +#: cp/parser.c:7796 #, gcc-internal-format msgid "types may not be defined in %<noexcept%> expressions" msgstr "" -#: cp/parser.c:8068 +#: cp/parser.c:8074 #, gcc-internal-format msgid "types may not be defined in a new-expression" msgstr "" -#: cp/parser.c:8084 +#: cp/parser.c:8090 #, gcc-internal-format msgid "array bound forbidden after parenthesized type-id" msgstr "" -#: cp/parser.c:8086 +#: cp/parser.c:8092 #, gcc-internal-format msgid "try removing the parentheses around the type-id" msgstr "" -#: cp/parser.c:8117 +#: cp/parser.c:8123 #, gcc-internal-format msgid "" "initialization of new-expression for type %<auto%> requires exactly one " "element" msgstr "" -#: cp/parser.c:8165 +#: cp/parser.c:8171 #, gcc-internal-format msgid "expected expression-list or type-id" msgstr "" -#: cp/parser.c:8194 +#: cp/parser.c:8200 #, gcc-internal-format msgid "types may not be defined in a new-type-id" msgstr "" -#: cp/parser.c:8322 +#: cp/parser.c:8328 #, gcc-internal-format msgid "expression in new-declarator must have integral or enumeration type" msgstr "" -#: cp/parser.c:8630 +#: cp/parser.c:8636 #, gcc-internal-format msgid "use of old-style cast" msgstr "" -#: cp/parser.c:8777 +#: cp/parser.c:8783 #, gcc-internal-format msgid "%<>>%> operator is treated as two right angle brackets in C++11" msgstr "" -#: cp/parser.c:8780 +#: cp/parser.c:8786 #, gcc-internal-format msgid "suggest parentheses around %<>>%> expression" msgstr "" -#: cp/parser.c:8976 +#: cp/parser.c:8982 #, gcc-internal-format msgid "ISO C++ does not allow ?: with omitted middle operand" msgstr "" -#: cp/parser.c:9684 +#: cp/parser.c:9690 #, gcc-internal-format msgid "lambda-expression in unevaluated context" msgstr "" -#: cp/parser.c:9693 +#: cp/parser.c:9699 #, gcc-internal-format msgid "lambda-expression in template-argument" msgstr "" -#: cp/parser.c:9844 +#: cp/parser.c:9850 #, gcc-internal-format msgid "expected end of capture-list" msgstr "" -#: cp/parser.c:9858 +#: cp/parser.c:9864 #, gcc-internal-format msgid "" "explicit by-copy capture of %<this%> redundant with by-copy capture default" msgstr "" -#: cp/parser.c:9902 +#: cp/parser.c:9908 #, gcc-internal-format msgid "" "lambda capture initializers only available with -std=c++14 or -std=gnu++14" msgstr "" -#: cp/parser.c:9909 +#: cp/parser.c:9915 #, gcc-internal-format msgid "empty initializer for lambda init-capture" msgstr "" -#: cp/parser.c:9932 +#: cp/parser.c:9938 #, gcc-internal-format msgid "capture of non-variable %qD " msgstr "" -#: cp/parser.c:9935 cp/parser.c:9945 cp/semantics.c:3323 cp/semantics.c:3333 +#: cp/parser.c:9941 cp/parser.c:9951 cp/semantics.c:3371 cp/semantics.c:3381 #, gcc-internal-format msgid "%q#D declared here" msgstr "" -#: cp/parser.c:9941 +#: cp/parser.c:9947 #, gcc-internal-format msgid "capture of variable %qD with non-automatic storage duration" msgstr "" -#: cp/parser.c:9979 +#: cp/parser.c:9985 #, gcc-internal-format msgid "explicit by-copy capture of %qD redundant with by-copy capture default" msgstr "" -#: cp/parser.c:9984 +#: cp/parser.c:9990 #, gcc-internal-format msgid "" "explicit by-reference capture of %qD redundant with by-reference capture " "default" msgstr "" -#: cp/parser.c:10031 +#: cp/parser.c:10037 #, gcc-internal-format msgid "lambda templates are only available with -std=c++14 or -std=gnu++14" msgstr "" -#: cp/parser.c:10061 +#: cp/parser.c:10067 #, gcc-internal-format msgid "default argument specified for lambda parameter" msgstr "" -#: cp/parser.c:10540 +#: cp/parser.c:10546 #, gcc-internal-format msgid "attributes at the beginning of statement are ignored" msgstr "" -#: cp/parser.c:10568 +#: cp/parser.c:10574 #, gcc-internal-format msgid "expected labeled-statement" msgstr "" -#: cp/parser.c:10606 +#: cp/parser.c:10612 #, gcc-internal-format msgid "case label %qE not within a switch statement" msgstr "" -#: cp/parser.c:10691 +#: cp/parser.c:10697 #, gcc-internal-format msgid "need %<typename%> before %qE because %qT is a dependent scope" msgstr "" -#: cp/parser.c:10700 +#: cp/parser.c:10706 #, gcc-internal-format msgid "%<%T::%D%> names the constructor, not the type" msgstr "" -#: cp/parser.c:10747 +#: cp/parser.c:10753 #, gcc-internal-format msgid "compound-statement in constexpr function" msgstr "" -#: cp/parser.c:10989 cp/parser.c:26850 +#: cp/parser.c:10995 cp/parser.c:26914 #, gcc-internal-format msgid "expected selection-statement" msgstr "" -#: cp/parser.c:11022 +#: cp/parser.c:11028 #, gcc-internal-format msgid "types may not be defined in conditions" msgstr "" -#: cp/parser.c:11400 +#: cp/parser.c:11408 #, gcc-internal-format msgid "range-based %<for%> expression of type %qT has incomplete type" msgstr "" -#: cp/parser.c:11438 +#: cp/parser.c:11446 #, gcc-internal-format msgid "" "range-based %<for%> expression of type %qT has an %<end%> member but not a " "%<begin%>" msgstr "" -#: cp/parser.c:11444 +#: cp/parser.c:11452 #, gcc-internal-format msgid "" "range-based %<for%> expression of type %qT has a %<begin%> member but not an " "%<end%>" msgstr "" -#: cp/parser.c:11485 +#: cp/parser.c:11504 #, gcc-internal-format msgid "" "inconsistent begin/end types in range-based %<for%> statement: %qT and %qT" msgstr "" -#: cp/parser.c:11619 cp/parser.c:26853 +#: cp/parser.c:11639 cp/parser.c:26917 #, gcc-internal-format msgid "expected iteration-statement" msgstr "" -#: cp/parser.c:11667 +#: cp/parser.c:11687 #, gcc-internal-format msgid "" "range-based %<for%> loops only available with -std=c++11 or -std=gnu++11" msgstr "" -#: cp/parser.c:11741 +#: cp/parser.c:11761 #, gcc-internal-format msgid "break statement used with Cilk Plus for loop" msgstr "" -#: cp/parser.c:11798 +#: cp/parser.c:11818 #, gcc-internal-format msgid "%<goto%> in %<constexpr%> function" msgstr "" #. Issue a warning about this use of a GNU extension. -#: cp/parser.c:11806 +#: cp/parser.c:11826 #, gcc-internal-format msgid "ISO C++ forbids computed gotos" msgstr "" -#: cp/parser.c:11819 cp/parser.c:26856 +#: cp/parser.c:11839 cp/parser.c:26920 #, gcc-internal-format msgid "expected jump-statement" msgstr "" -#: cp/parser.c:11976 cp/parser.c:22260 +#: cp/parser.c:11996 cp/parser.c:22292 #, gcc-internal-format msgid "extra %<;%>" msgstr "" -#: cp/parser.c:12216 +#: cp/parser.c:12236 #, gcc-internal-format msgid "%<__label__%> not at the beginning of a block" msgstr "" -#: cp/parser.c:12377 +#: cp/parser.c:12397 #, gcc-internal-format msgid "inconsistent deduction for %qT: %qT and then %qT" msgstr "" -#: cp/parser.c:12397 +#: cp/parser.c:12417 #, gcc-internal-format msgid "mixing declarations and function-definitions is forbidden" msgstr "" -#: cp/parser.c:12468 +#: cp/parser.c:12488 #, gcc-internal-format msgid "initializer in range-based %<for%> loop" msgstr "" -#: cp/parser.c:12471 +#: cp/parser.c:12491 #, gcc-internal-format msgid "multiple declarations in range-based %<for%> loop" msgstr "" -#: cp/parser.c:12612 +#: cp/parser.c:12632 #, gcc-internal-format msgid "%<friend%> used outside of class" msgstr "" #. Complain about `auto' as a storage specifier, if #. we're complaining about C++0x compatibility. -#: cp/parser.c:12676 +#: cp/parser.c:12696 #, gcc-internal-format msgid "%<auto%> changes meaning in C++11; please remove it" msgstr "" -#: cp/parser.c:12712 +#: cp/parser.c:12732 #, gcc-internal-format msgid "decl-specifier invalid in condition" msgstr "" -#: cp/parser.c:12804 +#: cp/parser.c:12824 #, gcc-internal-format msgid "class definition may not be declared a friend" msgstr "" -#: cp/parser.c:12872 cp/parser.c:22667 +#: cp/parser.c:12892 cp/parser.c:22699 #, gcc-internal-format msgid "templates may not be %<virtual%>" msgstr "" -#: cp/parser.c:12912 +#: cp/parser.c:12932 #, gcc-internal-format msgid "invalid linkage-specification" msgstr "" -#: cp/parser.c:12999 +#: cp/parser.c:13019 #, gcc-internal-format msgid "" "static_assert without a message only available with -std=c++1z or -std=gnu+" "+1z" msgstr "" -#: cp/parser.c:13193 +#: cp/parser.c:13213 #, gcc-internal-format msgid "types may not be defined in %<decltype%> expressions" msgstr "" -#: cp/parser.c:13336 +#: cp/parser.c:13356 #, gcc-internal-format msgid "types may not be defined in a conversion-type-id" msgstr "" -#: cp/parser.c:13363 +#: cp/parser.c:13383 #, gcc-internal-format msgid "invalid use of %<auto%> in conversion operator" msgstr "" -#: cp/parser.c:13367 +#: cp/parser.c:13387 #, gcc-internal-format msgid "" "use of %<auto%> in member template conversion operator can never be deduced" msgstr "" -#: cp/parser.c:13456 +#: cp/parser.c:13476 #, gcc-internal-format msgid "only constructors take member initializers" msgstr "" -#: cp/parser.c:13478 +#: cp/parser.c:13498 #, gcc-internal-format msgid "cannot expand initializer for member %<%D%>" msgstr "" -#: cp/parser.c:13490 +#: cp/parser.c:13510 #, gcc-internal-format msgid "mem-initializer for %qD follows constructor delegation" msgstr "" -#: cp/parser.c:13502 +#: cp/parser.c:13522 #, gcc-internal-format msgid "constructor delegation follows mem-initializer for %qD" msgstr "" -#: cp/parser.c:13554 +#: cp/parser.c:13574 #, gcc-internal-format msgid "anachronistic old-style base class initializer" msgstr "" -#: cp/parser.c:13624 +#: cp/parser.c:13644 #, gcc-internal-format msgid "" "keyword %<typename%> not allowed in this context (a qualified member " "initializer is implicitly a type)" msgstr "" -#: cp/parser.c:13983 +#: cp/parser.c:14003 #, gcc-internal-format msgid "unexpected keyword; remove space between quotes and suffix identifier" msgstr "" -#: cp/parser.c:13989 +#: cp/parser.c:14009 #, gcc-internal-format msgid "expected suffix identifier" msgstr "" -#: cp/parser.c:13998 +#: cp/parser.c:14018 #, gcc-internal-format msgid "expected empty string after %<operator%> keyword" msgstr "" -#: cp/parser.c:14004 +#: cp/parser.c:14024 #, gcc-internal-format msgid "invalid encoding prefix in literal operator" msgstr "" -#: cp/parser.c:14027 +#: cp/parser.c:14047 #, gcc-internal-format msgid "expected operator" msgstr "" #. Warn that we do not support `export'. -#: cp/parser.c:14072 +#: cp/parser.c:14092 #, gcc-internal-format msgid "keyword %<export%> not implemented, and will be ignored" msgstr "" -#: cp/parser.c:14242 +#: cp/parser.c:14262 #, gcc-internal-format msgid "invalid constrained type parameter" msgstr "" -#: cp/parser.c:14250 +#: cp/parser.c:14270 #, gcc-internal-format msgid "cv-qualified type parameter" msgstr "" -#: cp/parser.c:14335 +#: cp/parser.c:14355 #, gcc-internal-format msgid "variadic constraint introduced without %<...%>" msgstr "" -#: cp/parser.c:14399 +#: cp/parser.c:14419 #, gcc-internal-format msgid "invalid use of %<auto%> in default template argument" msgstr "" -#: cp/parser.c:14634 cp/parser.c:14720 cp/parser.c:20535 +#: cp/parser.c:14654 cp/parser.c:14737 cp/parser.c:20567 #, gcc-internal-format msgid "template parameter pack %qD cannot have a default argument" msgstr "" -#: cp/parser.c:14638 cp/parser.c:14724 +#: cp/parser.c:14658 cp/parser.c:14741 #, gcc-internal-format msgid "template parameter packs cannot have default arguments" msgstr "" -#: cp/parser.c:14790 +#: cp/parser.c:14807 #, gcc-internal-format msgid "expected template-id" msgstr "" -#: cp/parser.c:14843 cp/parser.c:26814 +#: cp/parser.c:14860 cp/parser.c:26878 #, gcc-internal-format msgid "expected %<<%>" msgstr "" -#: cp/parser.c:14850 +#: cp/parser.c:14867 #, gcc-internal-format msgid "%<<::%> cannot begin a template-argument list" msgstr "" -#: cp/parser.c:14854 +#: cp/parser.c:14871 #, gcc-internal-format msgid "" "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> " "and %<::%>" msgstr "" -#: cp/parser.c:14858 +#: cp/parser.c:14875 #, gcc-internal-format msgid "" "(if you use %<-fpermissive%> or %<-std=c++11%>, or %<-std=gnu++11%> G++ will " "accept your code)" msgstr "" -#: cp/parser.c:14965 +#: cp/parser.c:14982 #, gcc-internal-format msgid "parse error in template argument list" msgstr "" #. The name does not name a template. -#: cp/parser.c:15034 cp/parser.c:15155 cp/parser.c:15370 +#: cp/parser.c:15051 cp/parser.c:15172 cp/parser.c:15387 #, gcc-internal-format msgid "expected template-name" msgstr "" #. Explain what went wrong. -#: cp/parser.c:15080 +#: cp/parser.c:15097 #, gcc-internal-format msgid "non-template %qD used as template" msgstr "" -#: cp/parser.c:15082 +#: cp/parser.c:15099 #, gcc-internal-format msgid "use %<%T::template %D%> to indicate that it is a template" msgstr "" -#: cp/parser.c:15222 +#: cp/parser.c:15239 #, gcc-internal-format msgid "expected parameter pack before %<...%>" msgstr "" -#: cp/parser.c:15331 cp/parser.c:15349 cp/parser.c:15516 +#: cp/parser.c:15348 cp/parser.c:15366 cp/parser.c:15533 #, gcc-internal-format msgid "expected template-argument" msgstr "" -#: cp/parser.c:15491 +#: cp/parser.c:15508 #, gcc-internal-format msgid "invalid non-type template argument" msgstr "" -#: cp/parser.c:15618 +#: cp/parser.c:15635 #, gcc-internal-format msgid "explicit instantiation shall not use %<inline%> specifier" msgstr "" -#: cp/parser.c:15622 +#: cp/parser.c:15639 #, gcc-internal-format msgid "explicit instantiation shall not use %<constexpr%> specifier" msgstr "" -#: cp/parser.c:15681 +#: cp/parser.c:15698 #, gcc-internal-format msgid "template specialization with C linkage" msgstr "" -#: cp/parser.c:15901 +#: cp/parser.c:15918 #, gcc-internal-format msgid "expected type specifier" msgstr "" -#: cp/parser.c:16068 +#: cp/parser.c:16098 #, gcc-internal-format msgid "" "use of %<auto%> in lambda parameter declaration only available with -std=c+" "+14 or -std=gnu++14" msgstr "" -#: cp/parser.c:16074 +#: cp/parser.c:16104 #, gcc-internal-format msgid "" "use of %<auto%> in parameter declaration only available with -std=c++14 or -" "std=gnu++14" msgstr "" -#: cp/parser.c:16079 +#: cp/parser.c:16109 #, gcc-internal-format msgid "ISO C++ forbids use of %<auto%> in parameter declaration" msgstr "" -#: cp/parser.c:16223 +#: cp/parser.c:16253 #, gcc-internal-format msgid "expected template-id for type" msgstr "" -#: cp/parser.c:16250 +#: cp/parser.c:16280 #, gcc-internal-format msgid "expected type-name" msgstr "" -#: cp/parser.c:16599 +#: cp/parser.c:16629 #, gcc-internal-format msgid "" "elaborated-type-specifier for a scoped enum must not use the %<%D%> keyword" msgstr "" -#: cp/parser.c:16808 +#: cp/parser.c:16838 #, gcc-internal-format msgid "declaration %qD does not declare anything" msgstr "" -#: cp/parser.c:16895 +#: cp/parser.c:16925 #, gcc-internal-format msgid "attributes ignored on uninstantiated type" msgstr "" -#: cp/parser.c:16899 +#: cp/parser.c:16929 #, gcc-internal-format msgid "attributes ignored on template instantiation" msgstr "" -#: cp/parser.c:16904 +#: cp/parser.c:16934 #, gcc-internal-format msgid "" "attributes ignored on elaborated-type-specifier that is not a forward " "declaration" msgstr "" -#: cp/parser.c:17038 +#: cp/parser.c:17068 #, gcc-internal-format msgid "%qD is an enumeration template" msgstr "" -#: cp/parser.c:17049 +#: cp/parser.c:17079 #, gcc-internal-format msgid "%qD does not name an enumeration in %qT" msgstr "" -#: cp/parser.c:17064 +#: cp/parser.c:17094 #, gcc-internal-format msgid "anonymous scoped enum is not allowed" msgstr "" -#: cp/parser.c:17119 +#: cp/parser.c:17149 #, gcc-internal-format msgid "expected %<;%> or %<{%>" msgstr "" -#: cp/parser.c:17168 +#: cp/parser.c:17198 #, gcc-internal-format msgid "cannot add an enumerator list to a template instantiation" msgstr "" -#: cp/parser.c:17182 +#: cp/parser.c:17212 #, gcc-internal-format msgid "" "nested name specifier %qT for enum declaration does not name a class or " "namespace" msgstr "" -#: cp/parser.c:17194 cp/parser.c:21771 +#: cp/parser.c:17224 cp/parser.c:21803 #, gcc-internal-format msgid "declaration of %qD in namespace %qD which does not enclose %qD" msgstr "" -#: cp/parser.c:17199 cp/parser.c:21776 +#: cp/parser.c:17229 cp/parser.c:21808 #, gcc-internal-format msgid "declaration of %qD in %qD which does not enclose %qD" msgstr "" -#: cp/parser.c:17224 +#: cp/parser.c:17254 #, gcc-internal-format msgid "multiple definition of %q#T" msgstr "" -#: cp/parser.c:17237 +#: cp/parser.c:17267 #, gcc-internal-format msgid "ISO C++ forbids empty anonymous enum" msgstr "" -#: cp/parser.c:17257 +#: cp/parser.c:17287 #, gcc-internal-format msgid "opaque-enum-specifier without name" msgstr "" -#: cp/parser.c:17260 +#: cp/parser.c:17290 #, gcc-internal-format msgid "opaque-enum-specifier must use a simple identifier" msgstr "" -#: cp/parser.c:17438 +#: cp/parser.c:17468 #, gcc-internal-format msgid "%qD is not a namespace-name" msgstr "" -#: cp/parser.c:17439 +#: cp/parser.c:17469 #, gcc-internal-format msgid "expected namespace-name" msgstr "" -#: cp/parser.c:17517 +#: cp/parser.c:17547 #, gcc-internal-format msgid "a nested namespace definition cannot have attributes" msgstr "" -#: cp/parser.c:17520 +#: cp/parser.c:17550 #, gcc-internal-format msgid "" "nested namespace definitions only available with -std=c++1z or -std=gnu++1z" msgstr "" -#: cp/parser.c:17523 +#: cp/parser.c:17553 #, gcc-internal-format msgid "a nested namespace definition cannot be inline" msgstr "" -#: cp/parser.c:17531 +#: cp/parser.c:17561 #, gcc-internal-format msgid "nested identifier required" msgstr "" -#: cp/parser.c:17559 +#: cp/parser.c:17589 #, gcc-internal-format msgid "namespace %qD entered" msgstr "" -#: cp/parser.c:17611 +#: cp/parser.c:17641 #, gcc-internal-format msgid "%<namespace%> definition is not allowed here" msgstr "" -#: cp/parser.c:17766 +#: cp/parser.c:17796 #, gcc-internal-format msgid "a template-id may not appear in a using-declaration" msgstr "" -#: cp/parser.c:17812 +#: cp/parser.c:17842 #, gcc-internal-format msgid "" "access declarations are deprecated in favour of using-declarations; " "suggestion: add the %<using%> keyword" msgstr "" -#: cp/parser.c:17877 +#: cp/parser.c:17907 #, gcc-internal-format msgid "types may not be defined in alias template declarations" msgstr "" -#: cp/parser.c:18030 +#: cp/parser.c:18060 #, gcc-internal-format msgid "%<asm%> in %<constexpr%> function" msgstr "" -#: cp/parser.c:18370 +#: cp/parser.c:18400 #, gcc-internal-format msgid "a function-definition is not allowed here" msgstr "" -#: cp/parser.c:18381 +#: cp/parser.c:18411 #, gcc-internal-format msgid "an asm-specification is not allowed on a function-definition" msgstr "" -#: cp/parser.c:18385 +#: cp/parser.c:18415 #, gcc-internal-format msgid "attributes are not allowed on a function-definition" msgstr "" -#: cp/parser.c:18436 +#: cp/parser.c:18466 #, gcc-internal-format msgid "expected constructor, destructor, or type conversion" msgstr "" #. Anything else is an error. -#: cp/parser.c:18475 cp/parser.c:20726 +#: cp/parser.c:18505 cp/parser.c:20758 #, gcc-internal-format msgid "expected initializer" msgstr "" -#: cp/parser.c:18556 +#: cp/parser.c:18586 #, gcc-internal-format msgid "initializer provided for function" msgstr "" -#: cp/parser.c:18590 +#: cp/parser.c:18620 #, gcc-internal-format msgid "attributes after parenthesized initializer ignored" msgstr "" -#: cp/parser.c:18595 +#: cp/parser.c:18625 #, gcc-internal-format msgid "non-function %qD declared as implicit template" msgstr "" -#: cp/parser.c:19040 +#: cp/parser.c:19070 #, gcc-internal-format msgid "array bound is not an integer constant" msgstr "" -#: cp/parser.c:19166 +#: cp/parser.c:19196 #, gcc-internal-format msgid "cannot define member of dependent typedef %qT" msgstr "" -#: cp/parser.c:19170 +#: cp/parser.c:19200 #, gcc-internal-format msgid "%<%T::%E%> is not a type" msgstr "" -#: cp/parser.c:19198 +#: cp/parser.c:19228 #, gcc-internal-format msgid "invalid use of constructor as a template" msgstr "" -#: cp/parser.c:19200 +#: cp/parser.c:19230 #, gcc-internal-format msgid "" "use %<%T::%D%> instead of %<%T::%D%> to name the constructor in a qualified " @@ -42874,330 +43022,335 @@ msgstr "" #. here because we do not have enough #. information about its original syntactic #. form. -#: cp/parser.c:19217 +#: cp/parser.c:19247 #, gcc-internal-format msgid "invalid declarator" msgstr "" #. But declarations with qualified-ids can't appear in a #. function. -#: cp/parser.c:19287 +#: cp/parser.c:19317 #, gcc-internal-format msgid "qualified-id in declaration" msgstr "" -#: cp/parser.c:19312 +#: cp/parser.c:19342 #, gcc-internal-format msgid "expected declarator" msgstr "" -#: cp/parser.c:19415 +#: cp/parser.c:19445 #, gcc-internal-format msgid "%qD is a namespace" msgstr "" -#: cp/parser.c:19417 +#: cp/parser.c:19447 #, gcc-internal-format msgid "cannot form pointer to member of non-class %q#T" msgstr "" -#: cp/parser.c:19438 +#: cp/parser.c:19468 #, gcc-internal-format msgid "expected ptr-operator" msgstr "" -#: cp/parser.c:19497 +#: cp/parser.c:19527 #, gcc-internal-format msgid "duplicate cv-qualifier" msgstr "" -#: cp/parser.c:19551 +#: cp/parser.c:19581 #, gcc-internal-format msgid "multiple ref-qualifiers" msgstr "" -#: cp/parser.c:19588 +#: cp/parser.c:19618 #, gcc-internal-format msgid "%E requires %<-fgnu-tm%>" msgstr "" -#: cp/parser.c:19644 +#: cp/parser.c:19674 #, gcc-internal-format msgid "duplicate virt-specifier" msgstr "" -#: cp/parser.c:19872 cp/typeck2.c:529 cp/typeck2.c:1943 +#: cp/parser.c:19904 cp/typeck2.c:529 cp/typeck2.c:1955 #, gcc-internal-format msgid "invalid use of %<auto%>" msgstr "" -#: cp/parser.c:19893 +#: cp/parser.c:19925 #, gcc-internal-format msgid "types may not be defined in template arguments" msgstr "" -#: cp/parser.c:19898 +#: cp/parser.c:19930 #, gcc-internal-format msgid "invalid use of %<auto%> in template argument" msgstr "" -#: cp/parser.c:19986 +#: cp/parser.c:20018 #, gcc-internal-format msgid "expected type-specifier" msgstr "" -#: cp/parser.c:20292 +#: cp/parser.c:20324 #, gcc-internal-format msgid "expected %<,%> or %<...%>" msgstr "" -#: cp/parser.c:20367 +#: cp/parser.c:20399 #, gcc-internal-format msgid "types may not be defined in parameter types" msgstr "" -#: cp/parser.c:20519 +#: cp/parser.c:20551 #, gcc-internal-format msgid "default arguments are only permitted for function parameters" msgstr "" -#: cp/parser.c:20537 +#: cp/parser.c:20569 #, gcc-internal-format msgid "parameter pack %qD cannot have a default argument" msgstr "" -#: cp/parser.c:20543 +#: cp/parser.c:20575 #, gcc-internal-format msgid "template parameter pack cannot have a default argument" msgstr "" -#: cp/parser.c:20545 +#: cp/parser.c:20577 #, gcc-internal-format msgid "parameter pack cannot have a default argument" msgstr "" -#: cp/parser.c:20929 +#: cp/parser.c:20961 #, gcc-internal-format msgid "ISO C++ does not allow designated initializers" msgstr "" -#: cp/parser.c:20943 +#: cp/parser.c:20975 #, gcc-internal-format msgid "ISO C++ does not allow C99 designated initializers" msgstr "" -#: cp/parser.c:21063 cp/parser.c:21189 +#: cp/parser.c:21095 cp/parser.c:21221 #, gcc-internal-format msgid "expected class-name" msgstr "" -#: cp/parser.c:21376 +#: cp/parser.c:21408 #, gcc-internal-format msgid "expected %<;%> after class definition" msgstr "" -#: cp/parser.c:21378 +#: cp/parser.c:21410 #, gcc-internal-format msgid "expected %<;%> after struct definition" msgstr "" -#: cp/parser.c:21380 +#: cp/parser.c:21412 #, gcc-internal-format msgid "expected %<;%> after union definition" msgstr "" -#: cp/parser.c:21719 +#: cp/parser.c:21751 #, gcc-internal-format msgid "expected %<{%> or %<:%>" msgstr "" -#: cp/parser.c:21730 +#: cp/parser.c:21762 #, gcc-internal-format msgid "cannot specify %<override%> for a class" msgstr "" -#: cp/parser.c:21738 +#: cp/parser.c:21770 #, gcc-internal-format msgid "global qualification of class name is invalid" msgstr "" -#: cp/parser.c:21745 +#: cp/parser.c:21777 #, gcc-internal-format msgid "qualified name does not name a class" msgstr "" -#: cp/parser.c:21757 +#: cp/parser.c:21789 #, gcc-internal-format msgid "invalid class name in declaration of %qD" msgstr "" -#: cp/parser.c:21790 +#: cp/parser.c:21822 #, gcc-internal-format msgid "extra qualification not allowed" msgstr "" -#: cp/parser.c:21802 +#: cp/parser.c:21834 #, gcc-internal-format msgid "an explicit specialization must be preceded by %<template <>%>" msgstr "" -#: cp/parser.c:21832 +#: cp/parser.c:21864 #, gcc-internal-format msgid "function template %qD redeclared as a class template" msgstr "" -#: cp/parser.c:21863 +#: cp/parser.c:21895 #, gcc-internal-format msgid "could not resolve typename type" msgstr "" -#: cp/parser.c:21919 +#: cp/parser.c:21951 #, gcc-internal-format msgid "previous definition of %q+#T" msgstr "" -#: cp/parser.c:22010 cp/parser.c:26859 +#: cp/parser.c:22042 cp/parser.c:26923 #, gcc-internal-format msgid "expected class-key" msgstr "" -#: cp/parser.c:22034 +#: cp/parser.c:22066 #, gcc-internal-format msgid "" "ISO C++ forbids typename key in template template parameter; use -std=c++1z " "or -std=gnu++1z" msgstr "" -#: cp/parser.c:22038 +#: cp/parser.c:22070 #, gcc-internal-format msgid "expected %<class%> or %<typename%>" msgstr "" -#: cp/parser.c:22280 +#: cp/parser.c:22312 #, gcc-internal-format msgid "in C++03 a class-key must be used when declaring a friend" msgstr "" -#: cp/parser.c:22298 +#: cp/parser.c:22330 #, gcc-internal-format msgid "friend declaration does not name a class or function" msgstr "" -#: cp/parser.c:22316 +#: cp/parser.c:22348 #, gcc-internal-format msgid "a storage class on an anonymous aggregate in class scope is not allowed" msgstr "" -#: cp/parser.c:22520 +#: cp/parser.c:22552 #, gcc-internal-format msgid "pure-specifier on function-definition" msgstr "" -#: cp/parser.c:22575 +#: cp/parser.c:22607 #, gcc-internal-format msgid "stray %<,%> at end of member declaration" msgstr "" -#: cp/parser.c:22587 +#: cp/parser.c:22619 #, gcc-internal-format msgid "expected %<;%> at end of member declaration" msgstr "" -#: cp/parser.c:22661 +#: cp/parser.c:22693 #, gcc-internal-format msgid "invalid pure specifier (only %<= 0%> is allowed)" msgstr "" -#: cp/parser.c:22696 +#: cp/parser.c:22728 #, gcc-internal-format msgid "a brace-enclosed initializer is not allowed here" msgstr "" -#: cp/parser.c:22825 +#: cp/parser.c:22857 #, gcc-internal-format msgid "%<virtual%> specified more than once in base-specified" msgstr "" -#: cp/parser.c:22845 +#: cp/parser.c:22877 #, gcc-internal-format msgid "more than one access specifier in base-specified" msgstr "" -#: cp/parser.c:22869 +#: cp/parser.c:22901 #, gcc-internal-format msgid "keyword %<typename%> not allowed outside of templates" msgstr "" -#: cp/parser.c:22872 +#: cp/parser.c:22904 #, gcc-internal-format msgid "" "keyword %<typename%> not allowed in this context (the base class is " "implicitly a type)" msgstr "" -#: cp/parser.c:22965 cp/parser.c:23047 +#: cp/parser.c:22997 cp/parser.c:23079 #, gcc-internal-format msgid "types may not be defined in an exception-specification" msgstr "" -#: cp/parser.c:23029 +#: cp/parser.c:23061 #, gcc-internal-format msgid "" "dynamic exception specifications are deprecated in C++0x; use %<noexcept%> " "instead" msgstr "" -#: cp/parser.c:23089 +#: cp/parser.c:23121 #, gcc-internal-format msgid "invalid use of %<auto%> in exception-specification" msgstr "" -#: cp/parser.c:23128 +#: cp/parser.c:23160 #, gcc-internal-format msgid "%<try%> in %<constexpr%> function" msgstr "" -#: cp/parser.c:23241 +#: cp/parser.c:23273 #, gcc-internal-format msgid "types may not be defined in exception-declarations" msgstr "" -#: cp/parser.c:23853 +#: cp/parser.c:23885 #, gcc-internal-format msgid "expected an identifier for the attribute name" msgstr "" -#: cp/parser.c:23872 +#: cp/parser.c:23904 #, gcc-internal-format msgid "%<deprecated%> is a C++14 feature; use %<gnu::deprecated%>" msgstr "" -#: cp/parser.c:23934 +#: cp/parser.c:23966 #, gcc-internal-format msgid "attribute noreturn can appear at most once in an attribute-list" msgstr "" -#: cp/parser.c:23938 +#: cp/parser.c:23970 #, gcc-internal-format msgid "attribute deprecated can appear at most once in an attribute-list" msgstr "" -#: cp/parser.c:24224 +#: cp/parser.c:24241 +#, gcc-internal-format +msgid "%<requires%> only available with -fconcepts" +msgstr "" + +#: cp/parser.c:24273 #, gcc-internal-format msgid "a requires expression cannot appear outside a template" msgstr "" -#: cp/parser.c:24902 +#: cp/parser.c:24969 #, gcc-internal-format msgid "specializing member %<%T::%E%> requires %<template<>%> syntax" msgstr "" -#: cp/parser.c:24907 +#: cp/parser.c:24974 #, gcc-internal-format msgid "invalid declaration of %<%T::%E%>" msgstr "" -#: cp/parser.c:24911 +#: cp/parser.c:24978 #, gcc-internal-format msgid "too few template-parameter-lists" msgstr "" @@ -43206,668 +43359,668 @@ msgstr "" #. something like: #. #. template <class T> template <class U> void S::f(); -#: cp/parser.c:24918 +#: cp/parser.c:24985 #, gcc-internal-format msgid "too many template-parameter-lists" msgstr "" -#: cp/parser.c:25244 +#: cp/parser.c:25311 #, gcc-internal-format msgid "named return values are no longer supported" msgstr "" -#: cp/parser.c:25409 +#: cp/parser.c:25476 #, gcc-internal-format msgid "" "literal operator template %qD has invalid parameter list. Expected non-type " "template argument pack <char...> or <typename CharT, CharT...>" msgstr "" -#: cp/parser.c:25414 +#: cp/parser.c:25481 #, gcc-internal-format msgid "" "literal operator template %qD has invalid parameter list. Expected non-type " "template argument pack <char...>" msgstr "" -#: cp/parser.c:25483 +#: cp/parser.c:25550 #, gcc-internal-format msgid "empty introduction-list" msgstr "" -#: cp/parser.c:25507 +#: cp/parser.c:25574 #, gcc-internal-format msgid "no matching concept for template-introduction" msgstr "" -#: cp/parser.c:25529 +#: cp/parser.c:25596 #, gcc-internal-format msgid "invalid declaration of member template in local class" msgstr "" -#: cp/parser.c:25538 +#: cp/parser.c:25605 #, gcc-internal-format msgid "template with C linkage" msgstr "" -#: cp/parser.c:25557 +#: cp/parser.c:25624 #, gcc-internal-format msgid "invalid explicit specialization" msgstr "" -#: cp/parser.c:25661 +#: cp/parser.c:25725 #, gcc-internal-format msgid "template declaration of %<typedef%>" msgstr "" -#: cp/parser.c:25712 +#: cp/parser.c:25776 #, gcc-internal-format msgid "a class template declaration must not declare anything else" msgstr "" -#: cp/parser.c:25758 +#: cp/parser.c:25822 #, gcc-internal-format msgid "explicit template specialization cannot have a storage class" msgstr "" -#: cp/parser.c:26028 +#: cp/parser.c:26092 #, gcc-internal-format msgid "%<>>%> should be %<> >%> within a nested template argument list" msgstr "" -#: cp/parser.c:26041 +#: cp/parser.c:26105 #, gcc-internal-format msgid "spurious %<>>%>, use %<>%> to terminate a template argument list" msgstr "" -#: cp/parser.c:26338 +#: cp/parser.c:26402 #, gcc-internal-format msgid "%<sizeof...%> argument must be surrounded by parentheses" msgstr "" -#: cp/parser.c:26494 +#: cp/parser.c:26558 #, gcc-internal-format msgid "invalid use of %qD in linkage specification" msgstr "" -#: cp/parser.c:26509 +#: cp/parser.c:26573 #, gcc-internal-format msgid "%<__thread%> before %qD" msgstr "" -#: cp/parser.c:26643 +#: cp/parser.c:26707 #, gcc-internal-format msgid "ISO C++ 1998 does not support %<long long%>" msgstr "" -#: cp/parser.c:26651 +#: cp/parser.c:26715 #, gcc-internal-format msgid "both %<__thread%> and %<thread_local%> specified" msgstr "" -#: cp/parser.c:26653 +#: cp/parser.c:26717 #, gcc-internal-format msgid "duplicate %qD" msgstr "" -#: cp/parser.c:26675 +#: cp/parser.c:26739 #, gcc-internal-format msgid "duplicate %qs" msgstr "" -#: cp/parser.c:26717 +#: cp/parser.c:26781 #, gcc-internal-format msgid "expected %<new%>" msgstr "" -#: cp/parser.c:26720 +#: cp/parser.c:26784 #, gcc-internal-format msgid "expected %<delete%>" msgstr "" -#: cp/parser.c:26723 +#: cp/parser.c:26787 #, gcc-internal-format msgid "expected %<return%>" msgstr "" -#: cp/parser.c:26729 +#: cp/parser.c:26793 #, gcc-internal-format msgid "expected %<extern%>" msgstr "" -#: cp/parser.c:26732 +#: cp/parser.c:26796 #, gcc-internal-format msgid "expected %<static_assert%>" msgstr "" -#: cp/parser.c:26735 +#: cp/parser.c:26799 #, gcc-internal-format msgid "expected %<decltype%>" msgstr "" -#: cp/parser.c:26738 +#: cp/parser.c:26802 #, gcc-internal-format msgid "expected %<operator%>" msgstr "" -#: cp/parser.c:26741 +#: cp/parser.c:26805 #, gcc-internal-format msgid "expected %<class%>" msgstr "" -#: cp/parser.c:26744 +#: cp/parser.c:26808 #, gcc-internal-format msgid "expected %<template%>" msgstr "" -#: cp/parser.c:26747 +#: cp/parser.c:26811 #, gcc-internal-format msgid "expected %<namespace%>" msgstr "" -#: cp/parser.c:26750 +#: cp/parser.c:26814 #, gcc-internal-format msgid "expected %<using%>" msgstr "" -#: cp/parser.c:26753 +#: cp/parser.c:26817 #, gcc-internal-format msgid "expected %<asm%>" msgstr "" -#: cp/parser.c:26756 +#: cp/parser.c:26820 #, gcc-internal-format msgid "expected %<try%>" msgstr "" -#: cp/parser.c:26759 +#: cp/parser.c:26823 #, gcc-internal-format msgid "expected %<catch%>" msgstr "" -#: cp/parser.c:26762 +#: cp/parser.c:26826 #, gcc-internal-format msgid "expected %<throw%>" msgstr "" -#: cp/parser.c:26765 +#: cp/parser.c:26829 #, gcc-internal-format msgid "expected %<__label__%>" msgstr "" -#: cp/parser.c:26768 +#: cp/parser.c:26832 #, gcc-internal-format msgid "expected %<@try%>" msgstr "" -#: cp/parser.c:26771 +#: cp/parser.c:26835 #, gcc-internal-format msgid "expected %<@synchronized%>" msgstr "" -#: cp/parser.c:26774 +#: cp/parser.c:26838 #, gcc-internal-format msgid "expected %<@throw%>" msgstr "" -#: cp/parser.c:26777 +#: cp/parser.c:26841 #, gcc-internal-format msgid "expected %<__transaction_atomic%>" msgstr "" -#: cp/parser.c:26780 +#: cp/parser.c:26844 #, gcc-internal-format msgid "expected %<__transaction_relaxed%>" msgstr "" -#: cp/parser.c:26811 +#: cp/parser.c:26875 #, gcc-internal-format msgid "expected %<::%>" msgstr "" -#: cp/parser.c:26823 +#: cp/parser.c:26887 #, gcc-internal-format msgid "expected %<...%>" msgstr "" -#: cp/parser.c:26826 +#: cp/parser.c:26890 #, gcc-internal-format msgid "expected %<*%>" msgstr "" -#: cp/parser.c:26829 +#: cp/parser.c:26893 #, gcc-internal-format msgid "expected %<~%>" msgstr "" -#: cp/parser.c:26835 +#: cp/parser.c:26899 #, gcc-internal-format msgid "expected %<:%> or %<::%>" msgstr "" -#: cp/parser.c:26863 +#: cp/parser.c:26927 #, gcc-internal-format msgid "expected %<class%>, %<typename%>, or %<template%>" msgstr "" -#: cp/parser.c:27124 +#: cp/parser.c:27188 #, gcc-internal-format msgid "%qs tag used in naming %q#T" msgstr "" -#: cp/parser.c:27129 +#: cp/parser.c:27193 #, gcc-internal-format msgid "%q#T was previously declared here" msgstr "" -#: cp/parser.c:27148 +#: cp/parser.c:27212 #, gcc-internal-format msgid "%qD redeclared with different access" msgstr "" -#: cp/parser.c:27169 +#: cp/parser.c:27233 #, gcc-internal-format msgid "" "in C++98 %<template%> (as a disambiguator) is only allowed within templates" msgstr "" -#: cp/parser.c:27410 +#: cp/parser.c:27474 #, gcc-internal-format msgid "file ends in default argument" msgstr "" -#: cp/parser.c:27640 cp/parser.c:28949 cp/parser.c:29135 +#: cp/parser.c:27704 cp/parser.c:29013 cp/parser.c:29199 #, gcc-internal-format msgid "misplaced %<@%D%> Objective-C++ construct" msgstr "" -#: cp/parser.c:27709 +#: cp/parser.c:27773 #, gcc-internal-format msgid "objective-c++ message receiver expected" msgstr "" -#: cp/parser.c:27779 +#: cp/parser.c:27843 #, gcc-internal-format msgid "objective-c++ message argument(s) are expected" msgstr "" -#: cp/parser.c:27809 +#: cp/parser.c:27873 #, gcc-internal-format msgid "%<@encode%> must specify a type as an argument" msgstr "" -#: cp/parser.c:28215 +#: cp/parser.c:28279 #, gcc-internal-format msgid "invalid Objective-C++ selector name" msgstr "" -#: cp/parser.c:28290 cp/parser.c:28308 +#: cp/parser.c:28354 cp/parser.c:28372 #, gcc-internal-format msgid "objective-c++ method declaration is expected" msgstr "" -#: cp/parser.c:28302 cp/parser.c:28367 +#: cp/parser.c:28366 cp/parser.c:28431 #, gcc-internal-format msgid "method attributes must be specified at the end" msgstr "" -#: cp/parser.c:28410 +#: cp/parser.c:28474 #, gcc-internal-format msgid "stray %qs between Objective-C++ methods" msgstr "" -#: cp/parser.c:28616 cp/parser.c:28623 cp/parser.c:28630 +#: cp/parser.c:28680 cp/parser.c:28687 cp/parser.c:28694 #, gcc-internal-format msgid "invalid type for instance variable" msgstr "" -#: cp/parser.c:28743 +#: cp/parser.c:28807 #, gcc-internal-format msgid "identifier expected after %<@protocol%>" msgstr "" -#: cp/parser.c:28914 +#: cp/parser.c:28978 #, gcc-internal-format msgid "" "attributes may not be specified before the %<@%D%> Objective-C++ keyword" msgstr "" -#: cp/parser.c:28921 +#: cp/parser.c:28985 #, gcc-internal-format msgid "prefix attributes are ignored before %<@%D%>" msgstr "" -#: cp/parser.c:29194 cp/parser.c:29201 cp/parser.c:29208 +#: cp/parser.c:29258 cp/parser.c:29265 cp/parser.c:29272 #, gcc-internal-format msgid "invalid type for property" msgstr "" -#: cp/parser.c:30362 +#: cp/parser.c:30412 #, gcc-internal-format msgid "%<wait%> expression must be integral" msgstr "" -#: cp/parser.c:31056 +#: cp/parser.c:31106 #, gcc-internal-format msgid "invalid reduction-identifier" msgstr "" -#: cp/parser.c:33254 +#: cp/parser.c:33304 #, gcc-internal-format msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop" msgstr "" -#: cp/parser.c:33257 +#: cp/parser.c:33307 #, gcc-internal-format msgid "parenthesized initialization is not allowed in for-loop" msgstr "" -#: cp/parser.c:33327 +#: cp/parser.c:33377 #, gcc-internal-format msgid "" "%<_Cilk_for%> allows expression instead of declaration only in C, not in C++" msgstr "" -#: cp/parser.c:33555 cp/pt.c:14876 +#: cp/parser.c:33605 cp/pt.c:14959 #, gcc-internal-format msgid "iteration variable %qD should not be reduction" msgstr "" -#: cp/parser.c:33640 +#: cp/parser.c:33690 #, gcc-internal-format msgid "not enough collapsed for loops" msgstr "" -#: cp/parser.c:33917 +#: cp/parser.c:33967 #, gcc-internal-format msgid "" "%<#pragma omp ordered%> with %<depend%> clause may only be used in compound " "statements" msgstr "" -#: cp/parser.c:34703 +#: cp/parser.c:34753 #, gcc-internal-format msgid "" "%<#pragma omp target exit data%> with map-type other than %<from%>, %<release" "%> or %<delete%> on %<map%> clause" msgstr "" -#: cp/parser.c:35562 +#: cp/parser.c:35612 #, gcc-internal-format msgid "" "%<#pragma omp declare simd%> of %<simd%> attribute cannot be used in the " "same function marked as a Cilk Plus SIMD-enabled function" msgstr "" -#: cp/parser.c:35572 +#: cp/parser.c:35622 #, gcc-internal-format msgid "" "vector attribute not immediately followed by a single function declaration " "or definition" msgstr "" -#: cp/parser.c:35866 +#: cp/parser.c:35916 #, gcc-internal-format msgid "invalid initializer clause" msgstr "" -#: cp/parser.c:35894 +#: cp/parser.c:35944 #, gcc-internal-format msgid "expected id-expression (arguments)" msgstr "" -#: cp/parser.c:35906 +#: cp/parser.c:35956 #, gcc-internal-format msgid "" "one of the initializer call arguments should be %<omp_priv%> or %<&omp_priv%>" msgstr "" -#: cp/parser.c:35987 +#: cp/parser.c:36037 #, gcc-internal-format msgid "" "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or " "identifier" msgstr "" -#: cp/parser.c:36006 +#: cp/parser.c:36056 #, gcc-internal-format msgid "types may not be defined in declare reduction type list" msgstr "" -#: cp/parser.c:36028 cp/semantics.c:5302 +#: cp/parser.c:36078 cp/semantics.c:5351 #, gcc-internal-format msgid "predeclared arithmetic type %qT in %<#pragma omp declare reduction%>" msgstr "" -#: cp/parser.c:36033 cp/semantics.c:5311 +#: cp/parser.c:36083 cp/semantics.c:5360 #, gcc-internal-format msgid "function or array type %qT in %<#pragma omp declare reduction%>" msgstr "" -#: cp/parser.c:36036 cp/pt.c:11778 cp/semantics.c:5317 +#: cp/parser.c:36086 cp/pt.c:11840 cp/semantics.c:5366 #, gcc-internal-format msgid "reference type %qT in %<#pragma omp declare reduction%>" msgstr "" -#: cp/parser.c:36039 cp/semantics.c:5323 +#: cp/parser.c:36089 cp/semantics.c:5372 #, gcc-internal-format msgid "" "const, volatile or __restrict qualified type %qT in %<#pragma omp declare " "reduction%>" msgstr "" -#: cp/parser.c:36418 +#: cp/parser.c:36469 #, gcc-internal-format msgid "%<#pragma acc routine%> names a set of overloads" msgstr "" -#: cp/parser.c:36427 +#: cp/parser.c:36478 #, gcc-internal-format msgid "%<#pragma acc routine%> does not refer to a namespace scope function" msgstr "" -#: cp/parser.c:36436 +#: cp/parser.c:36487 #, gcc-internal-format msgid "%<#pragma acc routine%> does not refer to a function" msgstr "" #. cancel-and-throw is unimplemented. -#: cp/parser.c:36766 +#: cp/parser.c:36817 #, gcc-internal-format msgid "atomic_cancel" msgstr "" -#: cp/parser.c:36809 cp/semantics.c:8516 +#: cp/parser.c:36860 cp/semantics.c:8573 #, gcc-internal-format msgid "%<__transaction_relaxed%> without transactional memory support enabled" msgstr "" -#: cp/parser.c:36811 cp/semantics.c:8518 +#: cp/parser.c:36862 cp/semantics.c:8575 #, gcc-internal-format msgid "%<__transaction_atomic%> without transactional memory support enabled" msgstr "" -#: cp/parser.c:37007 +#: cp/parser.c:37058 #, gcc-internal-format msgid "junk at end of %<#pragma GCC pch_preprocess%>" msgstr "" -#: cp/parser.c:37040 +#: cp/parser.c:37091 #, gcc-internal-format msgid "invalid grainsize for _Cilk_for" msgstr "" -#: cp/parser.c:37249 +#: cp/parser.c:37300 #, gcc-internal-format msgid "%<#pragma GCC ivdep%> must be inside a function" msgstr "" -#: cp/parser.c:37270 +#: cp/parser.c:37321 #, gcc-internal-format msgid "%<#pragma simd%> must be inside a function" msgstr "" -#: cp/parser.c:37282 +#: cp/parser.c:37333 #, gcc-internal-format msgid "%<#pragma cilk grainsize%> must be inside a function" msgstr "" -#: cp/parser.c:37294 +#: cp/parser.c:37345 #, gcc-internal-format msgid "-fcilkplus must be enabled to use %<#pragma cilk grainsize%>" msgstr "" -#: cp/parser.c:37351 +#: cp/parser.c:37402 #, gcc-internal-format msgid "inter-module optimizations not implemented for C++" msgstr "" -#: cp/parser.c:37461 +#: cp/parser.c:37512 #, gcc-internal-format msgid "expected variable-name" msgstr "" -#: cp/parser.c:37525 +#: cp/parser.c:37576 #, gcc-internal-format msgid "expected %<,%> or %<)%> after %qE" msgstr "" -#: cp/parser.c:37918 +#: cp/parser.c:37969 #, gcc-internal-format msgid "implicit templates may not be %<virtual%>" msgstr "" -#: cp/pt.c:294 +#: cp/pt.c:295 #, gcc-internal-format msgid "data member %qD cannot be a member template" msgstr "" -#: cp/pt.c:306 +#: cp/pt.c:307 #, gcc-internal-format msgid "invalid member template declaration %qD" msgstr "" -#: cp/pt.c:680 +#: cp/pt.c:686 #, gcc-internal-format msgid "explicit specialization in non-namespace scope %qD" msgstr "" -#: cp/pt.c:694 +#: cp/pt.c:700 #, gcc-internal-format msgid "enclosing class templates are not explicitly specialized" msgstr "" -#: cp/pt.c:780 +#: cp/pt.c:786 #, gcc-internal-format msgid "specialization of %qD must appear at namespace scope" msgstr "" -#: cp/pt.c:789 +#: cp/pt.c:795 #, gcc-internal-format msgid "specialization of %qD in different namespace" msgstr "" -#: cp/pt.c:791 cp/pt.c:1018 +#: cp/pt.c:797 cp/pt.c:1024 #, gcc-internal-format msgid " from definition of %q#D" msgstr "" -#: cp/pt.c:808 +#: cp/pt.c:814 #, gcc-internal-format msgid "" "explicit instantiation of %qD in namespace %qD (which does not enclose " "namespace %qD)" msgstr "" -#: cp/pt.c:929 +#: cp/pt.c:935 #, gcc-internal-format msgid "name of class shadows template template parameter %qD" msgstr "" -#: cp/pt.c:940 +#: cp/pt.c:946 #, gcc-internal-format msgid "specialization of alias template %qD" msgstr "" -#: cp/pt.c:943 cp/pt.c:1080 +#: cp/pt.c:949 cp/pt.c:1086 #, gcc-internal-format msgid "explicit specialization of non-template %qT" msgstr "" -#: cp/pt.c:975 +#: cp/pt.c:981 #, gcc-internal-format msgid "specialization of %qT after instantiation" msgstr "" -#: cp/pt.c:1016 +#: cp/pt.c:1022 #, gcc-internal-format msgid "specializing %q#T in different namespace" msgstr "" #. But if we've had an implicit instantiation, that's a #. problem ([temp.expl.spec]/6). -#: cp/pt.c:1058 +#: cp/pt.c:1064 #, gcc-internal-format msgid "specialization %qT after instantiation %qT" msgstr "" -#: cp/pt.c:1076 +#: cp/pt.c:1082 #, gcc-internal-format msgid "template specialization of %qD not allowed by ISO C++" msgstr "" -#: cp/pt.c:1538 +#: cp/pt.c:1544 #, gcc-internal-format msgid "specialization of %qD after instantiation" msgstr "" -#: cp/pt.c:1937 +#: cp/pt.c:1943 #, gcc-internal-format msgid "candidate is: %#D" msgstr "" -#: cp/pt.c:1944 cp/semantics.c:5171 +#: cp/pt.c:1950 cp/semantics.c:5220 #, gcc-internal-format msgid "%s %#D" msgstr "" -#: cp/pt.c:2085 +#: cp/pt.c:2091 #, gcc-internal-format msgid "%qD is not a function template" msgstr "" -#: cp/pt.c:2090 +#: cp/pt.c:2096 #, gcc-internal-format msgid "%qD is not a variable template" msgstr "" -#: cp/pt.c:2344 +#: cp/pt.c:2350 #, gcc-internal-format msgid "template-id %qD for %q+D does not match any template declaration" msgstr "" -#: cp/pt.c:2347 +#: cp/pt.c:2353 #, gcc-internal-format msgid "" "saw %d %<template<>%>, need %d for specializing a member function template" msgstr "" -#: cp/pt.c:2358 +#: cp/pt.c:2364 #, gcc-internal-format msgid "ambiguous template specialization %qD for %q+D" msgstr "" -#: cp/pt.c:2568 +#: cp/pt.c:2574 #, gcc-internal-format msgid "variable templates only available with -std=c++14 or -std=gnu++14" msgstr "" -#: cp/pt.c:2577 +#: cp/pt.c:2583 #, gcc-internal-format msgid "too many template headers for %D (should be %d)" msgstr "" -#: cp/pt.c:2582 +#: cp/pt.c:2588 #, gcc-internal-format msgid "" "members of an explicitly specialized class are defined without a template " @@ -43876,57 +44029,57 @@ msgstr "" #. This case handles bogus declarations like template <> #. template <class T> void f<int>(); -#: cp/pt.c:2671 cp/pt.c:2730 +#: cp/pt.c:2677 cp/pt.c:2736 #, gcc-internal-format msgid "template-id %qD in declaration of primary template" msgstr "" -#: cp/pt.c:2684 +#: cp/pt.c:2690 #, gcc-internal-format msgid "template parameter list used in explicit instantiation" msgstr "" -#: cp/pt.c:2690 +#: cp/pt.c:2696 #, gcc-internal-format msgid "definition provided for explicit instantiation" msgstr "" -#: cp/pt.c:2698 +#: cp/pt.c:2704 #, gcc-internal-format msgid "too many template parameter lists in declaration of %qD" msgstr "" -#: cp/pt.c:2701 +#: cp/pt.c:2707 #, gcc-internal-format msgid "too few template parameter lists in declaration of %qD" msgstr "" -#: cp/pt.c:2703 +#: cp/pt.c:2709 #, gcc-internal-format msgid "explicit specialization of %qD must be introduced by %<template <>%>" msgstr "" -#: cp/pt.c:2709 +#: cp/pt.c:2715 #, gcc-internal-format msgid "explicit specialization declared %<concept%>" msgstr "" -#: cp/pt.c:2740 +#: cp/pt.c:2746 #, gcc-internal-format msgid "non-type partial specialization %qD is not allowed" msgstr "" -#: cp/pt.c:2743 +#: cp/pt.c:2749 #, gcc-internal-format msgid "non-class, non-variable partial specialization %qD is not allowed" msgstr "" -#: cp/pt.c:2776 +#: cp/pt.c:2782 #, gcc-internal-format msgid "default argument specified in explicit specialization" msgstr "" -#: cp/pt.c:2807 +#: cp/pt.c:2813 #, gcc-internal-format msgid "%qD is not a template function" msgstr "" @@ -43939,140 +44092,140 @@ msgstr "" #. program is ill-formed. #. #. Similar language is found in [temp.explicit]. -#: cp/pt.c:2872 +#: cp/pt.c:2878 #, gcc-internal-format msgid "specialization of implicitly-declared special member function" msgstr "" -#: cp/pt.c:2916 +#: cp/pt.c:2922 #, gcc-internal-format msgid "no member function %qD declared in %qT" msgstr "" -#: cp/pt.c:2948 +#: cp/pt.c:2954 #, gcc-internal-format msgid "%qD is not declared in %qD" msgstr "" -#: cp/pt.c:3053 +#: cp/pt.c:3059 #, gcc-internal-format msgid "explicit specialization of function concept %qD" msgstr "" -#: cp/pt.c:3648 +#: cp/pt.c:3654 #, gcc-internal-format msgid "base initializer expansion %<%T%> contains no parameter packs" msgstr "" -#: cp/pt.c:3710 +#: cp/pt.c:3716 #, gcc-internal-format msgid "expansion pattern %<%T%> contains no argument packs" msgstr "" -#: cp/pt.c:3712 +#: cp/pt.c:3718 #, gcc-internal-format msgid "expansion pattern %<%E%> contains no argument packs" msgstr "" -#: cp/pt.c:3756 +#: cp/pt.c:3762 #, gcc-internal-format msgid "parameter packs not expanded with %<...%>:" msgstr "" -#: cp/pt.c:3771 cp/pt.c:4505 +#: cp/pt.c:3777 cp/pt.c:4511 #, gcc-internal-format msgid " %qD" msgstr "" -#: cp/pt.c:3773 +#: cp/pt.c:3779 #, gcc-internal-format msgid " <anonymous>" msgstr "" -#: cp/pt.c:3897 +#: cp/pt.c:3903 #, gcc-internal-format msgid "declaration of template parameter %q+D shadows template parameter" msgstr "" -#: cp/pt.c:3900 +#: cp/pt.c:3906 #, gcc-internal-format msgid "declaration of %q+#D shadows template parameter" msgstr "" -#: cp/pt.c:3902 +#: cp/pt.c:3908 #, gcc-internal-format msgid "template parameter %qD declared here" msgstr "" -#: cp/pt.c:4441 +#: cp/pt.c:4447 #, gcc-internal-format msgid "specialization of variable concept %q#D" msgstr "" -#: cp/pt.c:4500 +#: cp/pt.c:4506 #, gcc-internal-format msgid "template parameters not deducible in partial specialization:" msgstr "" -#: cp/pt.c:4524 +#: cp/pt.c:4530 #, gcc-internal-format msgid "partial specialization %q+D does not specialize any template arguments" msgstr "" -#: cp/pt.c:4527 +#: cp/pt.c:4533 #, gcc-internal-format msgid "" "partial specialization %q+D does not specialize any template arguments and " "is not more constrained than" msgstr "" -#: cp/pt.c:4529 cp/pt.c:4540 +#: cp/pt.c:4535 cp/pt.c:4546 #, gcc-internal-format msgid "primary template here" msgstr "" -#: cp/pt.c:4537 +#: cp/pt.c:4543 #, gcc-internal-format msgid "" "partial specialization is not more specialized than the primary template " "because it replaces multiple parameters with a pack expansion" msgstr "" -#: cp/pt.c:4587 +#: cp/pt.c:4593 #, gcc-internal-format msgid "" "parameter pack argument %qE must be at the end of the template argument list" msgstr "" -#: cp/pt.c:4590 +#: cp/pt.c:4596 #, gcc-internal-format msgid "" "parameter pack argument %qT must be at the end of the template argument list" msgstr "" -#: cp/pt.c:4611 +#: cp/pt.c:4617 #, gcc-internal-format msgid "template argument %qE involves template parameter(s)" msgstr "" -#: cp/pt.c:4657 +#: cp/pt.c:4663 #, gcc-internal-format msgid "type %qT of template argument %qE depends on a template parameter" msgid_plural "type %qT of template argument %qE depends on template parameters" msgstr[0] "" msgstr[1] "" -#: cp/pt.c:4710 +#: cp/pt.c:4716 #, gcc-internal-format msgid "declaration of %qD ambiguates earlier template instantiation for %qD" msgstr "" -#: cp/pt.c:4714 +#: cp/pt.c:4720 #, gcc-internal-format msgid "partial specialization of %qD after instantiation of %qD" msgstr "" -#: cp/pt.c:4890 +#: cp/pt.c:4896 #, gcc-internal-format msgid "no default argument for %qD" msgstr "" @@ -44080,53 +44233,53 @@ msgstr "" #. A primary class template can only have one #. parameter pack, at the end of the template #. parameter list. -#: cp/pt.c:4912 +#: cp/pt.c:4918 #, gcc-internal-format msgid "parameter pack %q+D must be at the end of the template parameter list" msgstr "" -#: cp/pt.c:4948 +#: cp/pt.c:4954 #, gcc-internal-format msgid "" "default template arguments may not be used in function template friend re-" "declaration" msgstr "" -#: cp/pt.c:4951 +#: cp/pt.c:4957 #, gcc-internal-format msgid "" "default template arguments may not be used in function template friend " "declarations" msgstr "" -#: cp/pt.c:4954 +#: cp/pt.c:4960 #, gcc-internal-format msgid "" "default template arguments may not be used in function templates without -" "std=c++11 or -std=gnu++11" msgstr "" -#: cp/pt.c:4957 +#: cp/pt.c:4963 #, gcc-internal-format msgid "default template arguments may not be used in partial specializations" msgstr "" -#: cp/pt.c:4960 cp/pt.c:5018 +#: cp/pt.c:4966 cp/pt.c:5024 #, gcc-internal-format msgid "default argument for template parameter for class enclosing %qD" msgstr "" -#: cp/pt.c:5114 +#: cp/pt.c:5120 #, gcc-internal-format msgid "template %qD declared" msgstr "" -#: cp/pt.c:5121 +#: cp/pt.c:5127 #, gcc-internal-format msgid "template class without a name" msgstr "" -#: cp/pt.c:5129 +#: cp/pt.c:5135 #, gcc-internal-format msgid "member template %qD may not have virt-specifiers" msgstr "" @@ -44136,76 +44289,76 @@ msgstr "" #. An allocation function can be a function #. template. ... Template allocation functions shall #. have two or more parameters. -#: cp/pt.c:5151 +#: cp/pt.c:5157 #, gcc-internal-format msgid "invalid template declaration of %qD" msgstr "" -#: cp/pt.c:5280 +#: cp/pt.c:5286 #, gcc-internal-format msgid "template definition of non-template %q#D" msgstr "" -#: cp/pt.c:5323 +#: cp/pt.c:5329 #, gcc-internal-format msgid "expected %d levels of template parms for %q#D, got %d" msgstr "" -#: cp/pt.c:5337 +#: cp/pt.c:5343 #, gcc-internal-format msgid "got %d template parameters for %q#D" msgstr "" -#: cp/pt.c:5340 +#: cp/pt.c:5346 #, gcc-internal-format msgid "got %d template parameters for %q#T" msgstr "" -#: cp/pt.c:5342 +#: cp/pt.c:5348 #, gcc-internal-format, gfc-internal-format msgid " but %d required" msgstr "" -#: cp/pt.c:5363 +#: cp/pt.c:5369 #, gcc-internal-format msgid "template arguments to %qD do not match original template %qD" msgstr "" -#: cp/pt.c:5367 +#: cp/pt.c:5373 #, gcc-internal-format msgid "use template<> for an explicit specialization" msgstr "" -#: cp/pt.c:5505 +#: cp/pt.c:5511 #, gcc-internal-format msgid "%qT is not a template type" msgstr "" -#: cp/pt.c:5518 +#: cp/pt.c:5524 #, gcc-internal-format msgid "template specifiers not specified in declaration of %qD" msgstr "" -#: cp/pt.c:5529 +#: cp/pt.c:5535 #, gcc-internal-format, gfc-internal-format msgid "redeclared with %d template parameter" msgid_plural "redeclared with %d template parameters" msgstr[0] "" msgstr[1] "" -#: cp/pt.c:5533 +#: cp/pt.c:5539 #, gcc-internal-format msgid "previous declaration %qD used %d template parameter" msgid_plural "previous declaration %qD used %d template parameters" msgstr[0] "" msgstr[1] "" -#: cp/pt.c:5570 +#: cp/pt.c:5576 #, gcc-internal-format msgid "template parameter %q+#D" msgstr "" -#: cp/pt.c:5571 +#: cp/pt.c:5577 #, gcc-internal-format msgid "redeclared here as %q#D" msgstr "" @@ -44214,427 +44367,427 @@ msgstr "" #. #. A template-parameter may not be given default arguments #. by two different declarations in the same scope. -#: cp/pt.c:5581 +#: cp/pt.c:5587 #, gcc-internal-format msgid "redefinition of default argument for %q#D" msgstr "" -#: cp/pt.c:5583 +#: cp/pt.c:5589 #, gcc-internal-format msgid "original definition appeared here" msgstr "" -#: cp/pt.c:5608 +#: cp/pt.c:5614 #, gcc-internal-format msgid "redeclaration %q#D with different constraints" msgstr "" -#: cp/pt.c:5611 +#: cp/pt.c:5617 #, gcc-internal-format msgid "original declaration appeared here" msgstr "" -#: cp/pt.c:5866 cp/pt.c:5917 +#: cp/pt.c:5872 cp/pt.c:5923 #, gcc-internal-format msgid "%qE is not a valid template argument for type %qT" msgstr "" -#: cp/pt.c:5869 +#: cp/pt.c:5875 #, gcc-internal-format msgid "it must be the address of a function with external linkage" msgstr "" -#: cp/pt.c:5872 +#: cp/pt.c:5878 #, gcc-internal-format msgid "it must be the name of a function with external linkage" msgstr "" -#: cp/pt.c:5884 +#: cp/pt.c:5890 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because %qD has no linkage" msgstr "" -#: cp/pt.c:5888 +#: cp/pt.c:5894 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because %qD does not have " "external linkage" msgstr "" -#: cp/pt.c:5919 +#: cp/pt.c:5925 #, gcc-internal-format msgid "it must be a pointer-to-member of the form %<&X::Y%>" msgstr "" -#: cp/pt.c:5970 +#: cp/pt.c:5976 #, gcc-internal-format msgid " couldn't deduce template parameter %qD" msgstr "" -#: cp/pt.c:5985 +#: cp/pt.c:5991 #, gcc-internal-format msgid " types %qT and %qT have incompatible cv-qualifiers" msgstr "" -#: cp/pt.c:5994 +#: cp/pt.c:6000 #, gcc-internal-format msgid " mismatched types %qT and %qT" msgstr "" -#: cp/pt.c:6003 +#: cp/pt.c:6009 #, gcc-internal-format msgid " template parameter %qD is not a parameter pack, but argument %qD is" msgstr "" -#: cp/pt.c:6014 +#: cp/pt.c:6020 #, gcc-internal-format msgid " template argument %qE does not match pointer-to-member constant %qE" msgstr "" -#: cp/pt.c:6024 +#: cp/pt.c:6030 #, gcc-internal-format msgid " %qE is not equivalent to %qE" msgstr "" -#: cp/pt.c:6033 +#: cp/pt.c:6039 #, gcc-internal-format msgid " inconsistent parameter pack deduction with %qT and %qT" msgstr "" -#: cp/pt.c:6045 +#: cp/pt.c:6051 #, gcc-internal-format msgid " deduced conflicting types for parameter %qT (%qT and %qT)" msgstr "" -#: cp/pt.c:6049 +#: cp/pt.c:6055 #, gcc-internal-format msgid " deduced conflicting values for non-type parameter %qE (%qE and %qE)" msgstr "" -#: cp/pt.c:6060 +#: cp/pt.c:6066 #, gcc-internal-format msgid " variable-sized array type %qT is not a valid template argument" msgstr "" -#: cp/pt.c:6071 +#: cp/pt.c:6077 #, gcc-internal-format msgid " member function type %qT is not a valid template argument" msgstr "" -#: cp/pt.c:6083 +#: cp/pt.c:6089 #, gcc-internal-format, gfc-internal-format msgid " candidate expects at least %d argument, %d provided" msgid_plural " candidate expects at least %d arguments, %d provided" msgstr[0] "" msgstr[1] "" -#: cp/pt.c:6114 +#: cp/pt.c:6120 #, gcc-internal-format msgid " cannot convert %qE (type %qT) to type %qT" msgstr "" -#: cp/pt.c:6127 +#: cp/pt.c:6133 #, gcc-internal-format msgid " %qT is an ambiguous base class of %qT" msgstr "" -#: cp/pt.c:6131 +#: cp/pt.c:6137 #, gcc-internal-format msgid " %qT is not derived from %qT" msgstr "" -#: cp/pt.c:6142 +#: cp/pt.c:6148 #, gcc-internal-format msgid "" " template parameters of a template template argument are inconsistent with " "other deduced template arguments" msgstr "" -#: cp/pt.c:6152 +#: cp/pt.c:6158 #, gcc-internal-format msgid " can't deduce a template for %qT from non-template type %qT" msgstr "" -#: cp/pt.c:6162 +#: cp/pt.c:6168 #, gcc-internal-format msgid " template argument %qE does not match %qD" msgstr "" -#: cp/pt.c:6171 +#: cp/pt.c:6177 #, gcc-internal-format msgid " could not resolve address from overloaded function %qE" msgstr "" -#: cp/pt.c:6210 +#: cp/pt.c:6216 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because string literals " "can never be used in this context" msgstr "" -#: cp/pt.c:6375 +#: cp/pt.c:6381 #, gcc-internal-format msgid "in template argument for type %qT " msgstr "" -#: cp/pt.c:6422 +#: cp/pt.c:6428 #, gcc-internal-format msgid "" "%qD is not a valid template argument because %qD is a variable, not the " "address of a variable" msgstr "" -#: cp/pt.c:6430 +#: cp/pt.c:6436 #, gcc-internal-format msgid "" "%qE is not a valid template argument for %qT because it is not the address " "of a variable" msgstr "" -#: cp/pt.c:6448 +#: cp/pt.c:6454 #, gcc-internal-format msgid "" "%qE is not a valid template argument of type %qT because %qE is not a " "variable" msgstr "" -#: cp/pt.c:6455 +#: cp/pt.c:6461 #, gcc-internal-format msgid "" "%qE is not a valid template argument of type %qT because %qD does not have " "external linkage" msgstr "" -#: cp/pt.c:6463 +#: cp/pt.c:6469 #, gcc-internal-format msgid "" "%qE is not a valid template argument of type %qT because %qD has no linkage" msgstr "" -#: cp/pt.c:6493 +#: cp/pt.c:6499 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because of conflicts in cv-" "qualification" msgstr "" -#: cp/pt.c:6501 +#: cp/pt.c:6507 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because it is not an lvalue" msgstr "" -#: cp/pt.c:6519 +#: cp/pt.c:6525 #, gcc-internal-format msgid "" "%q#D is not a valid template argument for type %qT because a reference " "variable does not have a constant address" msgstr "" -#: cp/pt.c:6529 +#: cp/pt.c:6535 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because it is not an " "object with linkage" msgstr "" -#: cp/pt.c:6540 +#: cp/pt.c:6546 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because object %qD does " "not have linkage" msgstr "" -#: cp/pt.c:6586 +#: cp/pt.c:6592 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because it is a pointer" msgstr "" -#: cp/pt.c:6588 +#: cp/pt.c:6594 #, gcc-internal-format msgid "try using %qE instead" msgstr "" -#: cp/pt.c:6630 cp/pt.c:6661 +#: cp/pt.c:6636 cp/pt.c:6667 #, gcc-internal-format msgid "" "%qE is not a valid template argument for type %qT because it is of type %qT" msgstr "" -#: cp/pt.c:6636 +#: cp/pt.c:6642 #, gcc-internal-format msgid "standard conversions are not allowed in this context" msgstr "" -#: cp/pt.c:6947 +#: cp/pt.c:6954 #, gcc-internal-format msgid "ignoring attributes on template argument %qT" msgstr "" -#: cp/pt.c:7054 +#: cp/pt.c:7061 #, gcc-internal-format msgid "injected-class-name %qD used as template template argument" msgstr "" -#: cp/pt.c:7083 +#: cp/pt.c:7090 #, gcc-internal-format msgid "invalid use of destructor %qE as a type" msgstr "" -#: cp/pt.c:7088 +#: cp/pt.c:7095 #, gcc-internal-format msgid "to refer to a type member of a template parameter, use %<typename %E%>" msgstr "" -#: cp/pt.c:7104 cp/pt.c:7126 cp/pt.c:7179 +#: cp/pt.c:7111 cp/pt.c:7133 cp/pt.c:7186 #, gcc-internal-format msgid "type/value mismatch at argument %d in template parameter list for %qD" msgstr "" -#: cp/pt.c:7109 +#: cp/pt.c:7116 #, gcc-internal-format msgid " expected a constant of type %qT, got %qT" msgstr "" -#: cp/pt.c:7114 +#: cp/pt.c:7121 #, gcc-internal-format msgid " expected a class template, got %qE" msgstr "" -#: cp/pt.c:7117 +#: cp/pt.c:7124 #, gcc-internal-format msgid " expected a type, got %qE" msgstr "" -#: cp/pt.c:7131 +#: cp/pt.c:7138 #, gcc-internal-format msgid " expected a type, got %qT" msgstr "" -#: cp/pt.c:7134 +#: cp/pt.c:7141 #, gcc-internal-format msgid " expected a class template, got %qT" msgstr "" -#: cp/pt.c:7183 +#: cp/pt.c:7190 #, gcc-internal-format msgid " expected a template of type %qD, got %qT" msgstr "" -#: cp/pt.c:7197 +#: cp/pt.c:7204 #, gcc-internal-format msgid "constraint mismatch at argument %d in template parameter list for %qD" msgstr "" -#: cp/pt.c:7200 +#: cp/pt.c:7207 #, gcc-internal-format msgid " expected %qD but got %qD" msgstr "" #. Not sure if this is reachable, but it doesn't hurt #. to be robust. -#: cp/pt.c:7232 +#: cp/pt.c:7239 #, gcc-internal-format msgid "type mismatch in nontype parameter pack" msgstr "" -#: cp/pt.c:7258 +#: cp/pt.c:7265 #, gcc-internal-format msgid "could not convert template argument %qE to %qT" msgstr "" -#: cp/pt.c:7392 cp/pt.c:7697 +#: cp/pt.c:7399 cp/pt.c:7704 #, gcc-internal-format, gfc-internal-format msgid "template argument %d is invalid" msgstr "" -#: cp/pt.c:7407 cp/pt.c:7537 cp/pt.c:7722 +#: cp/pt.c:7414 cp/pt.c:7544 cp/pt.c:7729 #, gcc-internal-format, gfc-internal-format msgid "wrong number of template arguments (%d, should be %d)" msgstr "" -#: cp/pt.c:7533 +#: cp/pt.c:7540 #, gcc-internal-format, gfc-internal-format msgid "wrong number of template arguments (%d, should be at least %d)" msgstr "" -#: cp/pt.c:7542 +#: cp/pt.c:7549 #, gcc-internal-format msgid "provided for %qD" msgstr "" -#: cp/pt.c:7567 +#: cp/pt.c:7574 #, gcc-internal-format msgid "" "pack expansion argument for non-pack parameter %qD of alias template %qD" msgstr "" -#: cp/pt.c:7571 +#: cp/pt.c:7578 #, gcc-internal-format msgid "pack expansion argument for non-pack parameter %qD of concept %qD" msgstr "" -#: cp/pt.c:7663 +#: cp/pt.c:7670 #, gcc-internal-format msgid "" "so any instantiation with a non-empty parameter pack would be ill-formed" msgstr "" -#: cp/pt.c:7725 +#: cp/pt.c:7732 #, gcc-internal-format msgid "provided for %q+D" msgstr "" -#: cp/pt.c:7994 +#: cp/pt.c:8001 #, gcc-internal-format msgid "%q#D is not a function template" msgstr "" -#: cp/pt.c:8161 +#: cp/pt.c:8168 #, gcc-internal-format msgid "non-template type %qT used as a template" msgstr "" -#: cp/pt.c:8163 +#: cp/pt.c:8170 #, gcc-internal-format msgid "for template declaration %q+D" msgstr "" -#: cp/pt.c:8334 +#: cp/pt.c:8341 #, gcc-internal-format msgid "template constraint failure" msgstr "" -#: cp/pt.c:8676 +#: cp/pt.c:8685 #, gcc-internal-format msgid "constraints for %qD not satisfied" msgstr "" -#: cp/pt.c:9049 +#: cp/pt.c:9077 #, gcc-internal-format, gfc-internal-format msgid "" "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to " "increase the maximum)" msgstr "" -#: cp/pt.c:10641 +#: cp/pt.c:10657 #, gcc-internal-format msgid "fold of empty expansion over %O" msgstr "" -#: cp/pt.c:10932 +#: cp/pt.c:10948 #, gcc-internal-format msgid "mismatched argument pack lengths while expanding %<%T%>" msgstr "" -#: cp/pt.c:10936 +#: cp/pt.c:10952 #, gcc-internal-format msgid "mismatched argument pack lengths while expanding %<%E%>" msgstr "" -#: cp/pt.c:11441 +#: cp/pt.c:11503 #, gcc-internal-format msgid " when instantiating default argument for call to %D" msgstr "" @@ -44652,270 +44805,270 @@ msgstr "" #. #. is an attempt to declare a variable with function #. type. -#: cp/pt.c:12276 +#: cp/pt.c:12338 #, gcc-internal-format msgid "variable %qD has function type" msgstr "" -#: cp/pt.c:12446 +#: cp/pt.c:12510 #, gcc-internal-format msgid "invalid parameter type %qT" msgstr "" -#: cp/pt.c:12448 +#: cp/pt.c:12512 #, gcc-internal-format msgid "in declaration %q+D" msgstr "" -#: cp/pt.c:12559 +#: cp/pt.c:12623 #, gcc-internal-format msgid "function returning an array" msgstr "" -#: cp/pt.c:12561 +#: cp/pt.c:12625 #, gcc-internal-format msgid "function returning a function" msgstr "" -#: cp/pt.c:12601 +#: cp/pt.c:12665 #, gcc-internal-format msgid "creating pointer to member function of non-class type %qT" msgstr "" -#: cp/pt.c:13194 +#: cp/pt.c:13253 #, gcc-internal-format msgid "forming reference to void" msgstr "" -#: cp/pt.c:13196 +#: cp/pt.c:13255 #, gcc-internal-format msgid "forming pointer to reference type %qT" msgstr "" -#: cp/pt.c:13198 +#: cp/pt.c:13257 #, gcc-internal-format msgid "forming reference to reference type %qT" msgstr "" -#: cp/pt.c:13211 +#: cp/pt.c:13270 #, gcc-internal-format msgid "forming pointer to qualified function type %qT" msgstr "" -#: cp/pt.c:13214 +#: cp/pt.c:13273 #, gcc-internal-format msgid "forming reference to qualified function type %qT" msgstr "" -#: cp/pt.c:13262 +#: cp/pt.c:13321 #, gcc-internal-format msgid "creating pointer to member of non-class type %qT" msgstr "" -#: cp/pt.c:13268 +#: cp/pt.c:13327 #, gcc-internal-format msgid "creating pointer to member reference type %qT" msgstr "" -#: cp/pt.c:13274 +#: cp/pt.c:13333 #, gcc-internal-format msgid "creating pointer to member of type void" msgstr "" -#: cp/pt.c:13340 +#: cp/pt.c:13399 #, gcc-internal-format msgid "creating array of %qT" msgstr "" -#: cp/pt.c:13371 +#: cp/pt.c:13430 #, gcc-internal-format msgid "%qT is not a class, struct, or union type" msgstr "" -#: cp/pt.c:13408 +#: cp/pt.c:13467 #, gcc-internal-format msgid "%qT resolves to %qT, which is not an enumeration type" msgstr "" -#: cp/pt.c:13416 +#: cp/pt.c:13475 #, gcc-internal-format msgid "%qT resolves to %qT, which is is not a class type" msgstr "" -#: cp/pt.c:13545 +#: cp/pt.c:13604 #, gcc-internal-format msgid "use of %qs in template" msgstr "" -#: cp/pt.c:13688 +#: cp/pt.c:13755 #, gcc-internal-format msgid "qualifying type %qT does not match destructor name ~%qT" msgstr "" -#: cp/pt.c:13703 +#: cp/pt.c:13770 #, gcc-internal-format msgid "" "dependent-name %qE is parsed as a non-type, but instantiation yields a type" msgstr "" -#: cp/pt.c:13705 +#: cp/pt.c:13772 #, gcc-internal-format msgid "say %<typename %E%> if a type is meant" msgstr "" -#: cp/pt.c:13911 +#: cp/pt.c:13987 #, gcc-internal-format msgid "using invalid field %qD" msgstr "" -#: cp/pt.c:14362 cp/pt.c:15688 +#: cp/pt.c:14445 cp/pt.c:15771 #, gcc-internal-format msgid "invalid use of pack expansion expression" msgstr "" -#: cp/pt.c:14366 cp/pt.c:15692 +#: cp/pt.c:14449 cp/pt.c:15775 #, gcc-internal-format msgid "use %<...%> to expand argument pack" msgstr "" -#: cp/pt.c:16470 +#: cp/pt.c:16550 #, gcc-internal-format msgid "" "%qD was not declared in this scope, and no declarations were found by " "argument-dependent lookup at the point of instantiation" msgstr "" -#: cp/pt.c:16482 +#: cp/pt.c:16562 #, gcc-internal-format msgid "declarations in dependent base %qT are not found by unqualified lookup" msgstr "" -#: cp/pt.c:16487 +#: cp/pt.c:16567 #, gcc-internal-format msgid "use %<this->%D%> instead" msgstr "" -#: cp/pt.c:16490 +#: cp/pt.c:16570 #, gcc-internal-format msgid "use %<%T::%D%> instead" msgstr "" -#: cp/pt.c:16495 +#: cp/pt.c:16575 #, gcc-internal-format msgid "%qD declared here, later in the translation unit" msgstr "" -#: cp/pt.c:16768 +#: cp/pt.c:16848 #, gcc-internal-format msgid "%qT is not a class or namespace" msgstr "" -#: cp/pt.c:16771 +#: cp/pt.c:16851 #, gcc-internal-format msgid "%qD is not a class or namespace" msgstr "" -#: cp/pt.c:17133 +#: cp/pt.c:17214 #, gcc-internal-format msgid "%qT is/uses anonymous type" msgstr "" -#: cp/pt.c:17135 +#: cp/pt.c:17216 #, gcc-internal-format msgid "template argument for %qD uses local type %qT" msgstr "" -#: cp/pt.c:17145 +#: cp/pt.c:17226 #, gcc-internal-format msgid "%qT is a variably modified type" msgstr "" -#: cp/pt.c:17160 +#: cp/pt.c:17241 #, gcc-internal-format msgid "integral expression %qE is not constant" msgstr "" -#: cp/pt.c:17178 +#: cp/pt.c:17259 #, gcc-internal-format msgid " trying to instantiate %qD" msgstr "" -#: cp/pt.c:20933 +#: cp/pt.c:21036 #, gcc-internal-format msgid "ambiguous template instantiation for %q#T" msgstr "" -#: cp/pt.c:20935 +#: cp/pt.c:21038 #, gcc-internal-format msgid "ambiguous template instantiation for %q#D" msgstr "" -#: cp/pt.c:20941 +#: cp/pt.c:21044 msgid "%s %#S" msgstr "" -#: cp/pt.c:20965 cp/pt.c:21052 +#: cp/pt.c:21068 cp/pt.c:21155 #, gcc-internal-format msgid "explicit instantiation of non-template %q#D" msgstr "" -#: cp/pt.c:20984 +#: cp/pt.c:21087 #, gcc-internal-format msgid "%qD is not a static data member of a class template" msgstr "" -#: cp/pt.c:20990 cp/pt.c:21047 +#: cp/pt.c:21093 cp/pt.c:21150 #, gcc-internal-format msgid "no matching template for %qD found" msgstr "" -#: cp/pt.c:20995 +#: cp/pt.c:21098 #, gcc-internal-format msgid "" "type %qT for explicit instantiation %qD does not match declared type %qT" msgstr "" -#: cp/pt.c:21003 +#: cp/pt.c:21106 #, gcc-internal-format msgid "explicit instantiation of %q#D" msgstr "" -#: cp/pt.c:21039 +#: cp/pt.c:21142 #, gcc-internal-format msgid "duplicate explicit instantiation of %q#D" msgstr "" -#: cp/pt.c:21062 cp/pt.c:21159 +#: cp/pt.c:21165 cp/pt.c:21262 #, gcc-internal-format msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations" msgstr "" -#: cp/pt.c:21067 cp/pt.c:21176 +#: cp/pt.c:21170 cp/pt.c:21279 #, gcc-internal-format msgid "storage class %qD applied to template instantiation" msgstr "" -#: cp/pt.c:21135 +#: cp/pt.c:21238 #, gcc-internal-format msgid "explicit instantiation of non-class template %qD" msgstr "" -#: cp/pt.c:21137 +#: cp/pt.c:21240 #, gcc-internal-format msgid "explicit instantiation of non-template type %qT" msgstr "" -#: cp/pt.c:21146 +#: cp/pt.c:21249 #, gcc-internal-format msgid "explicit instantiation of %q#T before definition of template" msgstr "" -#: cp/pt.c:21164 +#: cp/pt.c:21267 #, gcc-internal-format msgid "ISO C++ forbids the use of %qE on explicit instantiations" msgstr "" -#: cp/pt.c:21210 +#: cp/pt.c:21313 #, gcc-internal-format msgid "duplicate explicit instantiation of %q#T" msgstr "" @@ -44927,12 +45080,12 @@ msgstr "" #. member function or static data member of a class template #. shall be present in every translation unit in which it is #. explicitly instantiated. -#: cp/pt.c:21748 +#: cp/pt.c:21852 #, gcc-internal-format msgid "explicit instantiation of %qD but no definition available" msgstr "" -#: cp/pt.c:21980 +#: cp/pt.c:22084 #, gcc-internal-format msgid "" "template instantiation depth exceeds maximum of %d instantiating %q+D, " @@ -44940,66 +45093,66 @@ msgid "" "the maximum)" msgstr "" -#: cp/pt.c:22322 +#: cp/pt.c:22426 #, gcc-internal-format msgid "invalid template non-type parameter" msgstr "" -#: cp/pt.c:22324 +#: cp/pt.c:22428 #, gcc-internal-format msgid "%q#T is not a valid type for a template non-type parameter" msgstr "" -#: cp/pt.c:23684 +#: cp/pt.c:23788 #, gcc-internal-format msgid "" "deducing from brace-enclosed initializer list requires #include " "<initializer_list>" msgstr "" -#: cp/pt.c:23845 +#: cp/pt.c:23949 #, gcc-internal-format msgid "direct-list-initialization of %<auto%> requires exactly one element" msgstr "" -#: cp/pt.c:23848 +#: cp/pt.c:23952 #, gcc-internal-format msgid "" "for deduction to %<std::initializer_list%>, use copy-list-initialization (i." "e. add %<=%> before the %<{%>)" msgstr "" -#: cp/pt.c:23870 +#: cp/pt.c:23974 #, gcc-internal-format msgid "%qT as type rather than plain %<decltype(auto)%>" msgstr "" -#: cp/pt.c:23905 +#: cp/pt.c:24009 #, gcc-internal-format msgid "unable to deduce lambda return type from %qE" msgstr "" -#: cp/pt.c:23907 +#: cp/pt.c:24011 #, gcc-internal-format msgid "unable to deduce %qT from %qE" msgstr "" -#: cp/pt.c:23928 +#: cp/pt.c:24032 #, gcc-internal-format msgid "placeholder constraints not satisfied" msgstr "" -#: cp/pt.c:23931 +#: cp/pt.c:24035 #, gcc-internal-format msgid "deduced initializer does not satisfy placeholder constraints" msgstr "" -#: cp/pt.c:23935 +#: cp/pt.c:24039 #, gcc-internal-format msgid "deduced return type does not satisfy placeholder constraints" msgstr "" -#: cp/pt.c:23939 +#: cp/pt.c:24043 #, gcc-internal-format msgid "deduced expression type does not saatisy placeholder constraints" msgstr "" @@ -45041,17 +45194,17 @@ msgstr "" msgid "typeid of qualified function type %qT" msgstr "" -#: cp/rtti.c:665 cp/rtti.c:680 +#: cp/rtti.c:666 cp/rtti.c:681 #, gcc-internal-format msgid "dynamic_cast of %q#D to %q#T can never succeed" msgstr "" -#: cp/rtti.c:691 +#: cp/rtti.c:692 #, gcc-internal-format msgid "%<dynamic_cast%> not permitted with -fno-rtti" msgstr "" -#: cp/rtti.c:770 +#: cp/rtti.c:771 #, gcc-internal-format msgid "cannot dynamic_cast %qE (of type %q#T) to type %q#T (%s)" msgstr "" @@ -45066,678 +45219,673 @@ msgstr "" msgid "%qT is an inaccessible base of %qT" msgstr "" -#: cp/search.c:2050 +#: cp/search.c:2052 #, gcc-internal-format msgid "invalid covariant return type for %q#D" msgstr "" -#: cp/search.c:2052 +#: cp/search.c:2054 #, gcc-internal-format msgid " overriding %q#D" msgstr "" -#: cp/search.c:2065 +#: cp/search.c:2067 #, gcc-internal-format msgid "invalid covariant return type for %q+#D" msgstr "" -#: cp/search.c:2066 cp/search.c:2071 cp/search.c:2098 +#: cp/search.c:2068 cp/search.c:2073 cp/search.c:2100 #, gcc-internal-format msgid " overriding %q+#D" msgstr "" -#: cp/search.c:2070 +#: cp/search.c:2072 #, gcc-internal-format msgid "conflicting return type specified for %q+#D" msgstr "" -#: cp/search.c:2085 +#: cp/search.c:2087 #, gcc-internal-format msgid "looser throw specifier for %q+#F" msgstr "" -#: cp/search.c:2086 +#: cp/search.c:2088 #, gcc-internal-format msgid " overriding %q+#F" msgstr "" -#: cp/search.c:2097 +#: cp/search.c:2099 #, gcc-internal-format msgid "conflicting type attributes specified for %q+#D" msgstr "" -#: cp/search.c:2113 +#: cp/search.c:2115 #, gcc-internal-format msgid "%qD declared %<transaction_safe_dynamic%>" msgstr "" -#: cp/search.c:2115 +#: cp/search.c:2117 #, gcc-internal-format msgid "overriding %qD declared %<transaction_safe%>" msgstr "" -#: cp/search.c:2122 +#: cp/search.c:2124 #, gcc-internal-format msgid "deleted function %q+D" msgstr "" -#: cp/search.c:2123 +#: cp/search.c:2125 #, gcc-internal-format msgid "overriding non-deleted function %q+D" msgstr "" -#: cp/search.c:2128 +#: cp/search.c:2130 #, gcc-internal-format msgid "non-deleted function %q+D" msgstr "" -#: cp/search.c:2129 +#: cp/search.c:2131 #, gcc-internal-format msgid "overriding deleted function %q+D" msgstr "" -#: cp/search.c:2135 +#: cp/search.c:2137 #, gcc-internal-format msgid "virtual function %q+D" msgstr "" -#: cp/search.c:2136 +#: cp/search.c:2138 #, gcc-internal-format msgid "overriding final function %q+D" msgstr "" #. A static member function cannot match an inherited #. virtual member function. -#: cp/search.c:2232 +#: cp/search.c:2234 #, gcc-internal-format msgid "%q+#D cannot be declared" msgstr "" -#: cp/search.c:2233 +#: cp/search.c:2235 #, gcc-internal-format msgid " since %q+#D declared in base class" msgstr "" -#: cp/semantics.c:837 +#: cp/semantics.c:840 #, gcc-internal-format msgid "suggest explicit braces around empty body in %<do%> statement" msgstr "" -#: cp/semantics.c:1505 +#: cp/semantics.c:1508 #, gcc-internal-format msgid "type of asm operand %qE could not be determined" msgstr "" -#: cp/semantics.c:1570 +#: cp/semantics.c:1573 #, gcc-internal-format msgid "__label__ declarations are only allowed in function scopes" msgstr "" -#: cp/semantics.c:1725 +#: cp/semantics.c:1760 #, gcc-internal-format msgid "invalid use of member %qD in static member function" msgstr "" -#: cp/semantics.c:2419 +#: cp/semantics.c:2467 #, gcc-internal-format msgid "arguments to destructor are not allowed" msgstr "" -#: cp/semantics.c:2516 +#: cp/semantics.c:2564 #, gcc-internal-format msgid "%<this%> is unavailable for static member functions" msgstr "" -#: cp/semantics.c:2518 +#: cp/semantics.c:2566 #, gcc-internal-format msgid "invalid use of %<this%> in non-member function" msgstr "" -#: cp/semantics.c:2520 +#: cp/semantics.c:2568 #, gcc-internal-format msgid "invalid use of %<this%> at top level" msgstr "" -#: cp/semantics.c:2542 +#: cp/semantics.c:2590 #, gcc-internal-format msgid "invalid qualifying scope in pseudo-destructor name" msgstr "" -#: cp/semantics.c:2550 cp/typeck.c:2530 +#: cp/semantics.c:2598 cp/typeck.c:2530 #, gcc-internal-format msgid "qualified type %qT does not match destructor name ~%qT" msgstr "" -#: cp/semantics.c:2572 +#: cp/semantics.c:2620 #, gcc-internal-format msgid "%qE is not of type %qT" msgstr "" -#: cp/semantics.c:2643 +#: cp/semantics.c:2691 #, gcc-internal-format msgid "compound literal of non-object type %qT" msgstr "" -#: cp/semantics.c:2760 +#: cp/semantics.c:2808 #, gcc-internal-format msgid "template type parameters must use the keyword %<class%> or %<typename%>" msgstr "" -#: cp/semantics.c:2810 +#: cp/semantics.c:2858 #, gcc-internal-format msgid "" "invalid use of type %qT as a default value for a template template-parameter" msgstr "" -#: cp/semantics.c:2813 +#: cp/semantics.c:2861 #, gcc-internal-format msgid "invalid default argument for a template template parameter" msgstr "" -#: cp/semantics.c:2830 +#: cp/semantics.c:2878 #, gcc-internal-format msgid "definition of %q#T inside template parameter list" msgstr "" -#: cp/semantics.c:2861 +#: cp/semantics.c:2909 #, gcc-internal-format msgid "invalid definition of qualified type %qT" msgstr "" -#: cp/semantics.c:3141 +#: cp/semantics.c:3189 #, gcc-internal-format msgid "invalid base-class specification" msgstr "" -#: cp/semantics.c:3300 +#: cp/semantics.c:3348 #, gcc-internal-format msgid "cannot capture member %qD of anonymous union" msgstr "" -#: cp/semantics.c:3313 cp/semantics.c:9197 +#: cp/semantics.c:3361 cp/semantics.c:9254 #, gcc-internal-format msgid "%qD is not captured" msgstr "" -#: cp/semantics.c:3318 +#: cp/semantics.c:3366 #, gcc-internal-format msgid "the lambda has no capture-default" msgstr "" -#: cp/semantics.c:3320 +#: cp/semantics.c:3368 #, gcc-internal-format msgid "" "lambda in local class %q+T cannot capture variables from the enclosing " "context" msgstr "" -#: cp/semantics.c:3331 +#: cp/semantics.c:3379 #, gcc-internal-format msgid "use of local variable with automatic storage from containing function" msgstr "" -#: cp/semantics.c:3332 +#: cp/semantics.c:3380 #, gcc-internal-format msgid "use of parameter from containing function" msgstr "" -#: cp/semantics.c:3494 +#: cp/semantics.c:3542 #, gcc-internal-format msgid "" "template parameter %qD of type %qT is not allowed in an integral constant " "expression because it is not of integral or enumeration type" msgstr "" -#: cp/semantics.c:3581 +#: cp/semantics.c:3629 #, gcc-internal-format msgid "use of namespace %qD as expression" msgstr "" -#: cp/semantics.c:3586 +#: cp/semantics.c:3634 #, gcc-internal-format msgid "use of class template %qT as expression" msgstr "" #. Ambiguous reference to base members. -#: cp/semantics.c:3592 +#: cp/semantics.c:3640 #, gcc-internal-format msgid "request for member %qD is ambiguous in multiple inheritance lattice" msgstr "" -#: cp/semantics.c:3618 +#: cp/semantics.c:3666 #, gcc-internal-format msgid "%qD cannot appear in a constant-expression" msgstr "" -#: cp/semantics.c:3743 +#: cp/semantics.c:3791 #, gcc-internal-format msgid "type of %qE is unknown" msgstr "" -#: cp/semantics.c:3771 +#: cp/semantics.c:3819 #, gcc-internal-format msgid "%qT is not an enumeration type" msgstr "" #. Parameter packs can only be used in templates -#: cp/semantics.c:3926 +#: cp/semantics.c:3974 #, gcc-internal-format msgid "Parameter pack __bases only valid in template declaration" msgstr "" -#: cp/semantics.c:3955 +#: cp/semantics.c:4003 #, gcc-internal-format msgid "cannot apply %<offsetof%> to destructor %<~%T%>" msgstr "" -#: cp/semantics.c:3964 +#: cp/semantics.c:4012 #, gcc-internal-format msgid "" "second operand of %<offsetof%> is neither a single identifier nor a sequence " "of member accesses and array references" msgstr "" -#: cp/semantics.c:3972 +#: cp/semantics.c:4020 #, gcc-internal-format msgid "cannot apply %<offsetof%> to member function %qD" msgstr "" -#: cp/semantics.c:3988 +#: cp/semantics.c:4036 #, gcc-internal-format msgid "offsetof within non-standard-layout type %qT is undefined" msgstr "" -#: cp/semantics.c:4492 cp/semantics.c:5948 cp/semantics.c:6004 -#: cp/semantics.c:6043 cp/semantics.c:6394 cp/semantics.c:6493 -#: cp/semantics.c:6627 +#: cp/semantics.c:4541 cp/semantics.c:5997 cp/semantics.c:6053 +#: cp/semantics.c:6092 cp/semantics.c:6443 cp/semantics.c:6542 +#: cp/semantics.c:6676 #, gcc-internal-format msgid "%<this%> allowed in OpenMP only in %<declare simd%> clauses" msgstr "" -#: cp/semantics.c:5168 +#: cp/semantics.c:5217 #, gcc-internal-format msgid "user defined reduction lookup is ambiguous" msgstr "" -#: cp/semantics.c:5441 +#: cp/semantics.c:5490 #, gcc-internal-format msgid "%qE in %<reduction%> clause is a zero size array" msgstr "" -#: cp/semantics.c:5489 +#: cp/semantics.c:5538 #, gcc-internal-format msgid "%qE has const type for %<reduction%>" msgstr "" -#: cp/semantics.c:5601 +#: cp/semantics.c:5650 #, gcc-internal-format msgid "user defined reduction with constructor initializer for base class %qT" msgstr "" -#: cp/semantics.c:5823 +#: cp/semantics.c:5872 #, gcc-internal-format msgid "" "linear clause with %qs modifier applied to non-reference variable with %qT " "type" msgstr "" -#: cp/semantics.c:5835 +#: cp/semantics.c:5884 #, gcc-internal-format msgid "" "linear clause applied to non-integral non-pointer variable with %qT type" msgstr "" -#: cp/semantics.c:5856 +#: cp/semantics.c:5905 #, gcc-internal-format msgid "linear step expression must be integral" msgstr "" -#: cp/semantics.c:5959 +#: cp/semantics.c:6008 #, gcc-internal-format msgid "%qD is not a variable in clause %qs" msgstr "" -#: cp/semantics.c:6015 +#: cp/semantics.c:6064 #, gcc-internal-format msgid "%qD is not a variable in clause %<firstprivate%>" msgstr "" -#: cp/semantics.c:6054 +#: cp/semantics.c:6103 #, gcc-internal-format msgid "%qD is not a variable in clause %<lastprivate%>" msgstr "" -#: cp/semantics.c:6099 +#: cp/semantics.c:6148 #, gcc-internal-format msgid "%<gang%> static expression must be integral" msgstr "" -#: cp/semantics.c:6113 +#: cp/semantics.c:6162 #, gcc-internal-format msgid "%<gang%> static value must bepositive" msgstr "" -#: cp/semantics.c:6145 +#: cp/semantics.c:6194 #, gcc-internal-format msgid "%<gang%> num expression must be integral" msgstr "" -#: cp/semantics.c:6148 +#: cp/semantics.c:6197 #, gcc-internal-format msgid "%<vector%> length expression must be integral" msgstr "" -#: cp/semantics.c:6152 +#: cp/semantics.c:6201 #, gcc-internal-format msgid "%<worker%> num expression must be integral" msgstr "" -#: cp/semantics.c:6156 +#: cp/semantics.c:6205 #, gcc-internal-format msgid "%qs expression must be integral" msgstr "" -#: cp/semantics.c:6174 +#: cp/semantics.c:6223 #, gcc-internal-format msgid "%<gang%> num value must be positive" msgstr "" -#: cp/semantics.c:6178 +#: cp/semantics.c:6227 #, gcc-internal-format msgid "%<vector%> length value must bepositive" msgstr "" -#: cp/semantics.c:6183 +#: cp/semantics.c:6232 #, gcc-internal-format msgid "%<worker%> num value must bepositive" msgstr "" -#: cp/semantics.c:6188 +#: cp/semantics.c:6237 #, gcc-internal-format msgid "%qs value must be positive" msgstr "" -#: cp/semantics.c:6235 +#: cp/semantics.c:6284 #, gcc-internal-format msgid "schedule chunk size expression must be integral" msgstr "" -#: cp/semantics.c:6267 +#: cp/semantics.c:6316 #, gcc-internal-format msgid "%qs length expression must be integral" msgstr "" -#: cp/semantics.c:6280 +#: cp/semantics.c:6329 #, gcc-internal-format msgid "%qs length expression must be positive constant integer expression" msgstr "" -#: cp/semantics.c:6299 +#: cp/semantics.c:6348 #, gcc-internal-format msgid "%<async%> expression must be integral" msgstr "" -#: cp/semantics.c:6327 +#: cp/semantics.c:6376 #, gcc-internal-format msgid "%<thread_limit%> expression must be integral" msgstr "" -#: cp/semantics.c:6356 +#: cp/semantics.c:6405 #, gcc-internal-format msgid "%<device%> id must be integral" msgstr "" -#: cp/semantics.c:6377 +#: cp/semantics.c:6426 #, gcc-internal-format msgid "%<dist_schedule%> chunk size expression must be integral" msgstr "" -#: cp/semantics.c:6404 +#: cp/semantics.c:6453 #, gcc-internal-format msgid "%qD is not a variable in %<aligned%> clause" msgstr "" -#: cp/semantics.c:6418 +#: cp/semantics.c:6467 #, gcc-internal-format msgid "" "%qE in %<aligned%> clause is neither a pointer nor an array nor a reference " "to pointer or array" msgstr "" -#: cp/semantics.c:6424 +#: cp/semantics.c:6473 #, gcc-internal-format msgid "%qD appears more than once in %<aligned%> clauses" msgstr "" -#: cp/semantics.c:6437 +#: cp/semantics.c:6486 #, gcc-internal-format msgid "%<aligned%> clause alignment expression must be integral" msgstr "" -#: cp/semantics.c:6486 +#: cp/semantics.c:6535 #, gcc-internal-format msgid "%qD is not a variable in %<depend%> clause" msgstr "" -#: cp/semantics.c:6746 +#: cp/semantics.c:6803 #, gcc-internal-format msgid "overloaded function name %qE in clause %qs" msgstr "" -#: cp/semantics.c:6750 +#: cp/semantics.c:6807 #, gcc-internal-format msgid "template %qE in clause %qs" msgstr "" -#: cp/semantics.c:6815 +#: cp/semantics.c:6872 #, gcc-internal-format msgid "%<grainsize%> expression must be integral" msgstr "" -#: cp/semantics.c:6844 +#: cp/semantics.c:6901 #, gcc-internal-format msgid "%<priority%> expression must be integral" msgstr "" -#: cp/semantics.c:6873 +#: cp/semantics.c:6930 #, gcc-internal-format msgid "%<num_tasks%> expression must be integral" msgstr "" -#: cp/semantics.c:6902 +#: cp/semantics.c:6959 #, gcc-internal-format msgid "" "%qs variable is neither a pointer, nor an arraynor reference to pointer or " "array" msgstr "" -#: cp/semantics.c:7358 +#: cp/semantics.c:7415 #, gcc-internal-format msgid "%<threadprivate%> %qD is not file, namespace or block scope variable" msgstr "" -#: cp/semantics.c:7372 +#: cp/semantics.c:7429 #, gcc-internal-format msgid "%<threadprivate%> %qE directive not in %qT definition" msgstr "" -#: cp/semantics.c:7577 +#: cp/semantics.c:7634 #, gcc-internal-format msgid "difference between %qE and %qD does not have integer type" msgstr "" -#: cp/semantics.c:7997 +#: cp/semantics.c:8054 #, gcc-internal-format msgid "%<#pragma omp simd%> used with class iteration variable %qE" msgstr "" -#: cp/semantics.c:8339 cp/semantics.c:8349 +#: cp/semantics.c:8396 cp/semantics.c:8406 #, gcc-internal-format msgid "%<#pragma omp atomic update%> uses two different expressions for memory" msgstr "" -#: cp/semantics.c:8642 +#: cp/semantics.c:8699 #, gcc-internal-format msgid "static assertion failed" msgstr "" -#: cp/semantics.c:8644 +#: cp/semantics.c:8701 #, gcc-internal-format, gfc-internal-format msgid "static assertion failed: %s" msgstr "" -#: cp/semantics.c:8649 +#: cp/semantics.c:8706 #, gcc-internal-format msgid "non-constant condition for static assertion" msgstr "" -#: cp/semantics.c:8679 +#: cp/semantics.c:8736 #, gcc-internal-format msgid "argument to decltype must be an expression" msgstr "" -#: cp/semantics.c:8707 +#: cp/semantics.c:8764 #, gcc-internal-format msgid "decltype cannot resolve address of overloaded function" msgstr "" -#: cp/semantics.c:9236 +#: cp/semantics.c:9293 #, gcc-internal-format msgid "operand of fold expression has no unexpanded parameter packs" msgstr "" -#: cp/semantics.c:9289 +#: cp/semantics.c:9346 #, gcc-internal-format msgid "both arguments in binary fold have unexpanded parameter packs" msgstr "" -#: cp/semantics.c:9291 +#: cp/semantics.c:9348 #, gcc-internal-format msgid "no unexpanded parameter packs in binary fold" msgstr "" -#: cp/tree.c:1139 +#: cp/tree.c:1146 #, gcc-internal-format msgid "%qV qualifiers cannot be applied to %qT" msgstr "" -#: cp/tree.c:1616 +#: cp/tree.c:1637 #, gcc-internal-format msgid "lambda-expression in a constant expression" msgstr "" -#: cp/tree.c:3539 +#: cp/tree.c:3573 #, gcc-internal-format msgid "%qE attribute can only be applied to Java class definitions" msgstr "" -#: cp/tree.c:3568 +#: cp/tree.c:3602 #, gcc-internal-format msgid "%qE attribute can only be applied to class definitions" msgstr "" -#: cp/tree.c:3574 +#: cp/tree.c:3608 #, gcc-internal-format msgid "%qE is obsolete; g++ vtables are now COM-compatible by default" msgstr "" -#: cp/tree.c:3601 +#: cp/tree.c:3635 #, gcc-internal-format msgid "requested init_priority is not an integer constant" msgstr "" -#: cp/tree.c:3623 +#: cp/tree.c:3657 #, gcc-internal-format msgid "" "can only use %qE attribute on file-scope definitions of objects of class type" msgstr "" -#: cp/tree.c:3631 +#: cp/tree.c:3665 #, gcc-internal-format msgid "requested init_priority is out of range" msgstr "" -#: cp/tree.c:3641 +#: cp/tree.c:3675 #, gcc-internal-format msgid "requested init_priority is reserved for internal use" msgstr "" -#: cp/tree.c:3652 +#: cp/tree.c:3686 #, gcc-internal-format msgid "%qE attribute is not supported on this platform" msgstr "" -#: cp/tree.c:3679 +#: cp/tree.c:3713 #, gcc-internal-format msgid "redeclaration of %qD adds abi tag %E" msgstr "" -#: cp/tree.c:3685 -#, gcc-internal-format -msgid "previous declaration here" -msgstr "" - -#: cp/tree.c:3699 +#: cp/tree.c:3733 #, gcc-internal-format msgid "the %qE attribute requires arguments" msgstr "" -#: cp/tree.c:3710 +#: cp/tree.c:3744 #, gcc-internal-format msgid "arguments to the %qE attribute must be narrow string literals" msgstr "" -#: cp/tree.c:3723 cp/tree.c:3736 +#: cp/tree.c:3757 cp/tree.c:3770 #, gcc-internal-format msgid "arguments to the %qE attribute must contain valid identifiers" msgstr "" -#: cp/tree.c:3725 +#: cp/tree.c:3759 #, gcc-internal-format msgid "%<%c%> is not a valid first character for an identifier" msgstr "" -#: cp/tree.c:3738 +#: cp/tree.c:3772 #, gcc-internal-format msgid "%<%c%> is not a valid character in an identifier" msgstr "" -#: cp/tree.c:3762 +#: cp/tree.c:3796 #, gcc-internal-format msgid "%qE attribute applied to non-class, non-enum type %qT" msgstr "" -#: cp/tree.c:3768 +#: cp/tree.c:3802 #, gcc-internal-format msgid "%qE attribute applied to %qT after its definition" msgstr "" -#: cp/tree.c:3775 +#: cp/tree.c:3809 #, gcc-internal-format msgid "ignoring %qE attribute applied to template instantiation %qT" msgstr "" -#: cp/tree.c:3782 +#: cp/tree.c:3816 #, gcc-internal-format msgid "ignoring %qE attribute applied to template specialization %qT" msgstr "" -#: cp/tree.c:3804 +#: cp/tree.c:3838 #, gcc-internal-format msgid "%qE attribute applied to non-function, non-variable %qD" msgstr "" -#: cp/tree.c:3810 +#: cp/tree.c:3844 #, gcc-internal-format msgid "%qE attribute applied to extern \"C\" declaration %qD" msgstr "" -#: cp/tree.c:4511 +#: cp/tree.c:4545 #, gcc-internal-format msgid "zero as null pointer constant" msgstr "" -#: cp/tree.c:4524 +#: cp/tree.c:4558 #, gcc-internal-format, gfc-internal-format msgid "lang_* check: failed in %s, at %s:%d" msgstr "" @@ -45855,14 +46003,14 @@ msgstr "" msgid "deprecated conversion from string constant to %qT" msgstr "" -#: cp/typeck.c:2302 cp/typeck.c:2695 +#: cp/typeck.c:2302 cp/typeck.c:2703 #, gcc-internal-format msgid "" "request for member %qD in %qE, which is of pointer type %qT (maybe you meant " "to use %<->%> ?)" msgstr "" -#: cp/typeck.c:2306 cp/typeck.c:2699 +#: cp/typeck.c:2306 cp/typeck.c:2707 #, gcc-internal-format msgid "request for member %qD in %qE, which is of non-class type %qT" msgstr "" @@ -45888,300 +46036,295 @@ msgstr "" msgid "the type being destroyed is %qT, but the destructor refers to %qT" msgstr "" -#: cp/typeck.c:2739 cp/typeck.c:2751 +#: cp/typeck.c:2747 cp/typeck.c:2759 #, gcc-internal-format msgid "%<%D::%D%> is not a member of %qT" msgstr "" -#: cp/typeck.c:2788 +#: cp/typeck.c:2796 #, gcc-internal-format msgid "%qT is not a base of %qT" msgstr "" -#: cp/typeck.c:2812 +#: cp/typeck.c:2820 #, gcc-internal-format msgid "%q#T has no member named %qE; did you mean %qE?" msgstr "" -#: cp/typeck.c:2816 +#: cp/typeck.c:2824 #, gcc-internal-format msgid "%q#T has no member named %qE" msgstr "" -#: cp/typeck.c:2835 +#: cp/typeck.c:2843 #, gcc-internal-format msgid "%qD is not a member template function" msgstr "" -#: cp/typeck.c:3001 +#: cp/typeck.c:3009 #, gcc-internal-format msgid "%qT is not a pointer-to-object type" msgstr "" -#: cp/typeck.c:3032 +#: cp/typeck.c:3040 #, gcc-internal-format msgid "invalid use of array indexing on pointer to member" msgstr "" -#: cp/typeck.c:3035 +#: cp/typeck.c:3043 #, gcc-internal-format msgid "invalid use of unary %<*%> on pointer to member" msgstr "" -#: cp/typeck.c:3038 +#: cp/typeck.c:3046 #, gcc-internal-format msgid "invalid use of implicit conversion on pointer to member" msgstr "" -#: cp/typeck.c:3041 +#: cp/typeck.c:3049 #, gcc-internal-format msgid "" "left hand operand of %<->*%> must be a pointer to class, but is a pointer to " "member of type %qT" msgstr "" -#: cp/typeck.c:3077 +#: cp/typeck.c:3085 #, gcc-internal-format msgid "subscript missing in array reference" msgstr "" -#: cp/typeck.c:3093 +#: cp/typeck.c:3101 #, gcc-internal-format msgid "rank of the array%'s index is greater than 1" msgstr "" -#: cp/typeck.c:3189 +#: cp/typeck.c:3197 #, gcc-internal-format msgid "subscripting array declared %<register%>" msgstr "" -#: cp/typeck.c:3223 +#: cp/typeck.c:3231 #, gcc-internal-format msgid "subscripted value is neither array nor pointer" msgstr "" -#: cp/typeck.c:3296 +#: cp/typeck.c:3304 #, gcc-internal-format msgid "object missing in use of %qE" msgstr "" -#: cp/typeck.c:3527 +#: cp/typeck.c:3535 #, gcc-internal-format msgid "cannot call function %qD" msgstr "" -#: cp/typeck.c:3542 +#: cp/typeck.c:3550 #, gcc-internal-format msgid "ISO C++ forbids calling %<::main%> from within program" msgstr "" -#: cp/typeck.c:3563 +#: cp/typeck.c:3571 #, gcc-internal-format msgid "" "must use %<.*%> or %<->*%> to call pointer-to-member function in %<%E " "(...)%>, e.g. %<(... ->* %E) (...)%>" msgstr "" -#: cp/typeck.c:3580 +#: cp/typeck.c:3588 #, gcc-internal-format msgid "%qE cannot be used as a function" msgstr "" -#: cp/typeck.c:3583 +#: cp/typeck.c:3591 #, gcc-internal-format msgid "%qD cannot be used as a function" msgstr "" -#: cp/typeck.c:3586 +#: cp/typeck.c:3594 #, gcc-internal-format msgid "expression cannot be used as a function" msgstr "" -#: cp/typeck.c:3635 +#: cp/typeck.c:3643 #, gcc-internal-format msgid "too many arguments to constructor %q#D" msgstr "" -#: cp/typeck.c:3636 +#: cp/typeck.c:3644 #, gcc-internal-format msgid "too few arguments to constructor %q#D" msgstr "" -#: cp/typeck.c:3641 +#: cp/typeck.c:3649 #, gcc-internal-format msgid "too many arguments to member function %q#D" msgstr "" -#: cp/typeck.c:3642 +#: cp/typeck.c:3650 #, gcc-internal-format msgid "too few arguments to member function %q#D" msgstr "" -#: cp/typeck.c:3648 +#: cp/typeck.c:3656 #, gcc-internal-format msgid "too many arguments to function %q#D" msgstr "" -#: cp/typeck.c:3649 +#: cp/typeck.c:3657 #, gcc-internal-format msgid "too few arguments to function %q#D" msgstr "" -#: cp/typeck.c:3659 +#: cp/typeck.c:3667 #, gcc-internal-format msgid "too many arguments to method %q#D" msgstr "" -#: cp/typeck.c:3660 +#: cp/typeck.c:3668 #, gcc-internal-format msgid "too few arguments to method %q#D" msgstr "" -#: cp/typeck.c:3663 +#: cp/typeck.c:3671 #, gcc-internal-format msgid "too many arguments to function" msgstr "" -#: cp/typeck.c:3664 +#: cp/typeck.c:3672 #, gcc-internal-format msgid "too few arguments to function" msgstr "" -#: cp/typeck.c:3743 +#: cp/typeck.c:3751 #, gcc-internal-format msgid "parameter %P of %qD has incomplete type %qT" msgstr "" -#: cp/typeck.c:3746 +#: cp/typeck.c:3754 #, gcc-internal-format msgid "parameter %P has incomplete type %qT" msgstr "" -#: cp/typeck.c:4083 cp/typeck.c:4094 +#: cp/typeck.c:3993 #, gcc-internal-format -msgid "assuming cast to type %qT from overloaded function" -msgstr "" - -#: cp/typeck.c:4140 -#, gcc-internal-format -msgid "NULL used in arithmetic" +msgid "the address of %qD will never be NULL" msgstr "" -#: cp/typeck.c:4463 +#: cp/typeck.c:4004 #, gcc-internal-format -msgid "left rotate count is negative" +msgid "the compiler can assume that the address of %qD will never be NULL" msgstr "" -#: cp/typeck.c:4464 +#: cp/typeck.c:4123 cp/typeck.c:4134 #, gcc-internal-format -msgid "right rotate count is negative" +msgid "assuming cast to type %qT from overloaded function" msgstr "" -#: cp/typeck.c:4470 +#: cp/typeck.c:4180 #, gcc-internal-format -msgid "left rotate count >= width of type" +msgid "NULL used in arithmetic" msgstr "" -#: cp/typeck.c:4471 +#: cp/typeck.c:4503 #, gcc-internal-format -msgid "right rotate count >= width of type" +msgid "left rotate count is negative" msgstr "" -#: cp/typeck.c:4492 cp/typeck.c:4793 +#: cp/typeck.c:4504 #, gcc-internal-format -msgid "comparison with string literal results in unspecified behaviour" +msgid "right rotate count is negative" msgstr "" -#: cp/typeck.c:4523 cp/typeck.c:4567 +#: cp/typeck.c:4510 #, gcc-internal-format -msgid "the address of %qD will never be NULL" +msgid "left rotate count >= width of type" msgstr "" -#: cp/typeck.c:4539 cp/typeck.c:4583 +#: cp/typeck.c:4511 #, gcc-internal-format -msgid "the compiler can assume that the address of %qD will never be NULL" +msgid "right rotate count >= width of type" msgstr "" -#: cp/typeck.c:4599 cp/typeck.c:4607 cp/typeck.c:4885 cp/typeck.c:4893 +#: cp/typeck.c:4582 cp/typeck.c:4590 cp/typeck.c:4869 cp/typeck.c:4877 #, gcc-internal-format msgid "ISO C++ forbids comparison between pointer and integer" msgstr "" -#: cp/typeck.c:4808 cp/typeck.c:4820 +#: cp/typeck.c:4792 cp/typeck.c:4804 #, gcc-internal-format msgid "operand types are %qT and %qT" msgstr "" -#: cp/typeck.c:4846 +#: cp/typeck.c:4830 #, gcc-internal-format msgid "could not find an integer type of the same size as %qT" msgstr "" -#: cp/typeck.c:4910 +#: cp/typeck.c:4894 #, gcc-internal-format msgid "unordered comparison on non-floating point argument" msgstr "" -#: cp/typeck.c:4965 +#: cp/typeck.c:4949 #, gcc-internal-format msgid "invalid operands of types %qT and %qT to binary %qO" msgstr "" -#: cp/typeck.c:5265 +#: cp/typeck.c:5249 #, gcc-internal-format msgid "ISO C++ forbids using pointer of type %<void *%> in subtraction" msgstr "" -#: cp/typeck.c:5273 +#: cp/typeck.c:5257 #, gcc-internal-format msgid "ISO C++ forbids using pointer to a function in subtraction" msgstr "" -#: cp/typeck.c:5281 +#: cp/typeck.c:5265 #, gcc-internal-format msgid "ISO C++ forbids using pointer to a method in subtraction" msgstr "" -#: cp/typeck.c:5300 +#: cp/typeck.c:5284 #, gcc-internal-format msgid "invalid use of a pointer to an incomplete type in pointer arithmetic" msgstr "" -#: cp/typeck.c:5375 +#: cp/typeck.c:5359 #, gcc-internal-format msgid "taking address of constructor %qE" msgstr "" -#: cp/typeck.c:5376 +#: cp/typeck.c:5360 #, gcc-internal-format msgid "taking address of destructor %qE" msgstr "" -#: cp/typeck.c:5392 +#: cp/typeck.c:5376 #, gcc-internal-format msgid "invalid use of %qE to form a pointer-to-member-function" msgstr "" -#: cp/typeck.c:5395 +#: cp/typeck.c:5379 #, gcc-internal-format msgid " a qualified-id is required" msgstr "" -#: cp/typeck.c:5402 +#: cp/typeck.c:5386 #, gcc-internal-format msgid "" "parentheses around %qE cannot be used to form a pointer-to-member-function" msgstr "" #. An expression like &memfn. -#: cp/typeck.c:5561 +#: cp/typeck.c:5545 #, gcc-internal-format msgid "" "ISO C++ forbids taking the address of an unqualified or parenthesized non-" "static member function to form a pointer to member function. Say %<&%T::%D%>" msgstr "" -#: cp/typeck.c:5566 +#: cp/typeck.c:5550 #, gcc-internal-format msgid "" "ISO C++ forbids taking the address of a bound member function to form a " @@ -46189,388 +46332,388 @@ msgid "" msgstr "" #. Make this a permerror because we used to accept it. -#: cp/typeck.c:5603 +#: cp/typeck.c:5587 #, gcc-internal-format msgid "taking address of temporary" msgstr "" -#: cp/typeck.c:5605 +#: cp/typeck.c:5589 #, gcc-internal-format msgid "taking address of xvalue (rvalue reference)" msgstr "" -#: cp/typeck.c:5622 +#: cp/typeck.c:5606 #, gcc-internal-format msgid "ISO C++ forbids taking address of function %<::main%>" msgstr "" -#: cp/typeck.c:5677 +#: cp/typeck.c:5661 #, gcc-internal-format msgid "ISO C++ forbids taking the address of a cast to a non-lvalue expression" msgstr "" -#: cp/typeck.c:5705 +#: cp/typeck.c:5689 #, gcc-internal-format msgid "cannot create pointer to reference member %qD" msgstr "" -#: cp/typeck.c:5983 +#: cp/typeck.c:5967 #, gcc-internal-format msgid "ISO C++ forbids incrementing an enum" msgstr "" -#: cp/typeck.c:5984 +#: cp/typeck.c:5968 #, gcc-internal-format msgid "ISO C++ forbids decrementing an enum" msgstr "" -#: cp/typeck.c:6000 +#: cp/typeck.c:5984 #, gcc-internal-format msgid "cannot increment a pointer to incomplete type %qT" msgstr "" -#: cp/typeck.c:6001 +#: cp/typeck.c:5985 #, gcc-internal-format msgid "cannot decrement a pointer to incomplete type %qT" msgstr "" -#: cp/typeck.c:6012 +#: cp/typeck.c:5996 #, gcc-internal-format msgid "ISO C++ forbids incrementing a pointer of type %qT" msgstr "" -#: cp/typeck.c:6013 +#: cp/typeck.c:5997 #, gcc-internal-format msgid "ISO C++ forbids decrementing a pointer of type %qT" msgstr "" -#: cp/typeck.c:6048 +#: cp/typeck.c:6032 #, gcc-internal-format msgid "invalid use of Boolean expression as operand to %<operator--%>" msgstr "" -#: cp/typeck.c:6210 +#: cp/typeck.c:6194 #, gcc-internal-format msgid "cannot take the address of %<this%>, which is an rvalue expression" msgstr "" -#: cp/typeck.c:6232 +#: cp/typeck.c:6216 #, gcc-internal-format msgid "address of explicit register variable %qD requested" msgstr "" -#: cp/typeck.c:6237 +#: cp/typeck.c:6221 #, gcc-internal-format msgid "address requested for %qD, which is declared %<register%>" msgstr "" -#: cp/typeck.c:6320 +#: cp/typeck.c:6304 #, gcc-internal-format msgid "list-initializer for non-class type must not be parenthesized" msgstr "" -#: cp/typeck.c:6332 +#: cp/typeck.c:6316 #, gcc-internal-format msgid "expression list treated as compound expression in initializer" msgstr "" -#: cp/typeck.c:6336 +#: cp/typeck.c:6320 #, gcc-internal-format msgid "expression list treated as compound expression in mem-initializer" msgstr "" -#: cp/typeck.c:6340 +#: cp/typeck.c:6324 #, gcc-internal-format msgid "expression list treated as compound expression in functional cast" msgstr "" -#: cp/typeck.c:6377 +#: cp/typeck.c:6361 #, gcc-internal-format, gfc-internal-format msgid "%s expression list treated as compound expression" msgstr "" -#: cp/typeck.c:6474 +#: cp/typeck.c:6458 #, gcc-internal-format msgid "no context to resolve type of %qE" msgstr "" -#: cp/typeck.c:6507 +#: cp/typeck.c:6491 #, gcc-internal-format msgid "cast from type %qT to type %qT casts away qualifiers" msgstr "" -#: cp/typeck.c:6513 +#: cp/typeck.c:6497 #, gcc-internal-format msgid "static_cast from type %qT to type %qT casts away qualifiers" msgstr "" -#: cp/typeck.c:6519 +#: cp/typeck.c:6503 #, gcc-internal-format msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers" msgstr "" -#: cp/typeck.c:6542 +#: cp/typeck.c:6526 #, gcc-internal-format msgid "useless cast to type %qT" msgstr "" -#: cp/typeck.c:6917 +#: cp/typeck.c:6897 #, gcc-internal-format msgid "invalid static_cast from type %qT to type %qT" msgstr "" -#: cp/typeck.c:6943 +#: cp/typeck.c:6923 #, gcc-internal-format msgid "converting from %qT to %qT" msgstr "" -#: cp/typeck.c:6995 +#: cp/typeck.c:6975 #, gcc-internal-format msgid "invalid cast of an rvalue expression of type %qT to type %qT" msgstr "" -#: cp/typeck.c:7065 +#: cp/typeck.c:7045 #, gcc-internal-format msgid "cast from %qT to %qT loses precision" msgstr "" -#: cp/typeck.c:7105 +#: cp/typeck.c:7085 #, gcc-internal-format msgid "cast from %qT to %qT increases required alignment of target type" msgstr "" -#: cp/typeck.c:7123 +#: cp/typeck.c:7103 #, gcc-internal-format msgid "" "casting between pointer-to-function and pointer-to-object is conditionally-" "supported" msgstr "" -#: cp/typeck.c:7137 +#: cp/typeck.c:7117 #, gcc-internal-format msgid "invalid cast from type %qT to type %qT" msgstr "" -#: cp/typeck.c:7198 +#: cp/typeck.c:7178 #, gcc-internal-format msgid "" "invalid use of const_cast with type %qT, which is not a pointer, reference, " "nor a pointer-to-data-member type" msgstr "" -#: cp/typeck.c:7207 +#: cp/typeck.c:7187 #, gcc-internal-format msgid "" "invalid use of const_cast with type %qT, which is a pointer or reference to " "a function type" msgstr "" -#: cp/typeck.c:7247 +#: cp/typeck.c:7227 #, gcc-internal-format msgid "invalid const_cast of an rvalue of type %qT to type %qT" msgstr "" -#: cp/typeck.c:7308 +#: cp/typeck.c:7288 #, gcc-internal-format msgid "invalid const_cast from type %qT to type %qT" msgstr "" -#: cp/typeck.c:7401 cp/typeck.c:7409 +#: cp/typeck.c:7381 cp/typeck.c:7389 #, gcc-internal-format msgid "ISO C++ forbids casting to an array type %qT" msgstr "" -#: cp/typeck.c:7418 +#: cp/typeck.c:7398 #, gcc-internal-format msgid "invalid cast to function type %qT" msgstr "" -#: cp/typeck.c:7699 +#: cp/typeck.c:7679 #, gcc-internal-format msgid " in evaluation of %<%Q(%#T, %#T)%>" msgstr "" -#: cp/typeck.c:7760 +#: cp/typeck.c:7740 #, gcc-internal-format msgid "assigning to an array from an initializer list" msgstr "" -#: cp/typeck.c:7786 +#: cp/typeck.c:7766 #, gcc-internal-format msgid "incompatible types in assignment of %qT to %qT" msgstr "" -#: cp/typeck.c:7800 +#: cp/typeck.c:7780 #, gcc-internal-format msgid "array used as initializer" msgstr "" -#: cp/typeck.c:7802 +#: cp/typeck.c:7782 #, gcc-internal-format msgid "invalid array assignment" msgstr "" -#: cp/typeck.c:7932 +#: cp/typeck.c:7912 #, gcc-internal-format msgid " in pointer to member function conversion" msgstr "" -#: cp/typeck.c:7946 +#: cp/typeck.c:7926 #, gcc-internal-format msgid "pointer to member conversion via virtual base %qT" msgstr "" -#: cp/typeck.c:7993 cp/typeck.c:8012 +#: cp/typeck.c:7973 cp/typeck.c:7992 #, gcc-internal-format msgid " in pointer to member conversion" msgstr "" -#: cp/typeck.c:8093 +#: cp/typeck.c:8073 #, gcc-internal-format msgid "invalid conversion to type %qT from type %qT" msgstr "" -#: cp/typeck.c:8369 +#: cp/typeck.c:8349 #, gcc-internal-format msgid "cannot convert %qT to %qT for argument %qP to %qD" msgstr "" -#: cp/typeck.c:8375 +#: cp/typeck.c:8355 #, gcc-internal-format msgid "cannot convert %qT to %qT in default argument" msgstr "" -#: cp/typeck.c:8379 +#: cp/typeck.c:8359 #, gcc-internal-format msgid "cannot convert %qT to %qT in argument passing" msgstr "" -#: cp/typeck.c:8383 +#: cp/typeck.c:8363 #, gcc-internal-format msgid "cannot convert %qT to %qT" msgstr "" -#: cp/typeck.c:8387 +#: cp/typeck.c:8367 #, gcc-internal-format msgid "cannot convert %qT to %qT in initialization" msgstr "" -#: cp/typeck.c:8391 +#: cp/typeck.c:8371 #, gcc-internal-format msgid "cannot convert %qT to %qT in return" msgstr "" -#: cp/typeck.c:8395 +#: cp/typeck.c:8375 #, gcc-internal-format msgid "cannot convert %qT to %qT in assignment" msgstr "" -#: cp/typeck.c:8408 +#: cp/typeck.c:8388 #, gcc-internal-format msgid "class type %qT is incomplete" msgstr "" -#: cp/typeck.c:8426 +#: cp/typeck.c:8406 #, gcc-internal-format msgid "parameter %qP of %qD might be a candidate for a format attribute" msgstr "" -#: cp/typeck.c:8430 +#: cp/typeck.c:8410 #, gcc-internal-format msgid "parameter might be a candidate for a format attribute" msgstr "" -#: cp/typeck.c:8435 +#: cp/typeck.c:8415 #, gcc-internal-format msgid "target of conversion might be a candidate for a format attribute" msgstr "" -#: cp/typeck.c:8440 +#: cp/typeck.c:8420 #, gcc-internal-format msgid "target of initialization might be a candidate for a format attribute" msgstr "" -#: cp/typeck.c:8450 +#: cp/typeck.c:8430 #, gcc-internal-format msgid "" "left-hand side of assignment might be a candidate for a format attribute" msgstr "" -#: cp/typeck.c:8545 +#: cp/typeck.c:8525 #, gcc-internal-format msgid "in passing argument %P of %qD" msgstr "" -#: cp/typeck.c:8604 +#: cp/typeck.c:8584 #, gcc-internal-format msgid "returning reference to temporary" msgstr "" -#: cp/typeck.c:8611 +#: cp/typeck.c:8591 #, gcc-internal-format msgid "reference to non-lvalue returned" msgstr "" -#: cp/typeck.c:8626 +#: cp/typeck.c:8606 #, gcc-internal-format msgid "reference to local variable %qD returned" msgstr "" -#: cp/typeck.c:8630 +#: cp/typeck.c:8610 #, gcc-internal-format msgid "address of label %qD returned" msgstr "" -#: cp/typeck.c:8634 +#: cp/typeck.c:8614 #, gcc-internal-format msgid "address of local variable %qD returned" msgstr "" -#: cp/typeck.c:8680 +#: cp/typeck.c:8660 #, gcc-internal-format msgid "returning a value from a destructor" msgstr "" #. If a return statement appears in a handler of the #. function-try-block of a constructor, the program is ill-formed. -#: cp/typeck.c:8688 +#: cp/typeck.c:8668 #, gcc-internal-format msgid "cannot return from a handler of a function-try-block of a constructor" msgstr "" #. You can't return a value from a constructor. -#: cp/typeck.c:8691 +#: cp/typeck.c:8671 #, gcc-internal-format msgid "returning a value from a constructor" msgstr "" #. Give a helpful error message. -#: cp/typeck.c:8721 cp/typeck.c:8767 +#: cp/typeck.c:8701 cp/typeck.c:8747 #, gcc-internal-format msgid "return-statement with no value, in function returning %qT" msgstr "" -#: cp/typeck.c:8729 +#: cp/typeck.c:8709 #, gcc-internal-format msgid "returning initializer list" msgstr "" -#: cp/typeck.c:8748 +#: cp/typeck.c:8728 #, gcc-internal-format msgid "inconsistent types %qT and %qT deduced for lambda return type" msgstr "" -#: cp/typeck.c:8751 +#: cp/typeck.c:8731 #, gcc-internal-format msgid "inconsistent deduction for auto return type: %qT and then %qT" msgstr "" -#: cp/typeck.c:8786 +#: cp/typeck.c:8766 #, gcc-internal-format msgid "return-statement with a value, in function returning 'void'" msgstr "" -#: cp/typeck.c:8816 +#: cp/typeck.c:8796 #, gcc-internal-format msgid "" "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -" @@ -46578,12 +46721,12 @@ msgid "" msgstr "" #. Make this a permerror because we used to accept it. -#: cp/typeck.c:9435 +#: cp/typeck.c:9405 #, gcc-internal-format msgid "using temporary as lvalue" msgstr "" -#: cp/typeck.c:9437 +#: cp/typeck.c:9407 #, gcc-internal-format msgid "using xvalue (rvalue reference) as lvalue" msgstr "" @@ -46805,29 +46948,29 @@ msgstr "" msgid "constructor syntax used, but no constructor declared for type %qT" msgstr "" -#: cp/typeck2.c:947 +#: cp/typeck2.c:950 #, gcc-internal-format msgid "" "narrowing conversion of %qE from %qT to %qT inside { } is ill-formed in C++11" msgstr "" -#: cp/typeck2.c:957 cp/typeck2.c:970 +#: cp/typeck2.c:960 cp/typeck2.c:973 #, gcc-internal-format msgid "narrowing conversion of %qE from %qT to %qT inside { }" msgstr "" -#: cp/typeck2.c:960 +#: cp/typeck2.c:963 #, gcc-internal-format msgid "" " the expression has a constant value but is not a C++ constant-expression" msgstr "" -#: cp/typeck2.c:1047 +#: cp/typeck2.c:1049 #, gcc-internal-format msgid "int-array initialized from non-wide string" msgstr "" -#: cp/typeck2.c:1053 +#: cp/typeck2.c:1055 #, gcc-internal-format msgid "int-array initialized from incompatible wide string" msgstr "" @@ -46847,92 +46990,92 @@ msgstr "" msgid "array must be initialized with a brace-enclosed initializer" msgstr "" -#: cp/typeck2.c:1431 cp/typeck2.c:1460 +#: cp/typeck2.c:1430 cp/typeck2.c:1457 #, gcc-internal-format msgid "missing initializer for member %qD" msgstr "" -#: cp/typeck2.c:1439 +#: cp/typeck2.c:1438 #, gcc-internal-format msgid "member %qD is uninitialized reference" msgstr "" -#: cp/typeck2.c:1446 +#: cp/typeck2.c:1445 #, gcc-internal-format msgid "member %qD with uninitialized reference fields" msgstr "" -#: cp/typeck2.c:1536 +#: cp/typeck2.c:1548 #, gcc-internal-format msgid "no field %qD found in union being initialized" msgstr "" -#: cp/typeck2.c:1547 +#: cp/typeck2.c:1559 #, gcc-internal-format msgid "index value instead of field name in union initializer" msgstr "" -#: cp/typeck2.c:1729 +#: cp/typeck2.c:1741 #, gcc-internal-format msgid "circular pointer delegation detected" msgstr "" -#: cp/typeck2.c:1743 +#: cp/typeck2.c:1755 #, gcc-internal-format msgid "base operand of %<->%> has non-pointer type %qT" msgstr "" -#: cp/typeck2.c:1769 +#: cp/typeck2.c:1781 #, gcc-internal-format msgid "result of %<operator->()%> yields non-pointer result" msgstr "" -#: cp/typeck2.c:1771 +#: cp/typeck2.c:1783 #, gcc-internal-format msgid "base operand of %<->%> is not a pointer" msgstr "" -#: cp/typeck2.c:1798 +#: cp/typeck2.c:1810 #, gcc-internal-format msgid "%qE cannot be used as a member pointer, since it is of type %qT" msgstr "" -#: cp/typeck2.c:1807 +#: cp/typeck2.c:1819 #, gcc-internal-format msgid "cannot apply member pointer %qE to %qE, which is of non-class type %qT" msgstr "" -#: cp/typeck2.c:1829 +#: cp/typeck2.c:1841 #, gcc-internal-format msgid "pointer to member type %qT incompatible with object type %qT" msgstr "" -#: cp/typeck2.c:1888 +#: cp/typeck2.c:1900 #, gcc-internal-format msgid "pointer-to-member-function type %qT requires an rvalue" msgstr "" -#: cp/typeck2.c:1895 +#: cp/typeck2.c:1907 #, gcc-internal-format msgid "pointer-to-member-function type %qT requires an lvalue" msgstr "" -#: cp/typeck2.c:1936 +#: cp/typeck2.c:1948 #, gcc-internal-format msgid "functional cast to array type %qT" msgstr "" -#: cp/typeck2.c:1957 +#: cp/typeck2.c:1969 #, gcc-internal-format msgid "invalid value-initialization of reference type" msgstr "" -#: cp/typeck2.c:2184 +#: cp/typeck2.c:2196 #, gcc-internal-format msgid "call to function %qD which throws incomplete type %q#T" msgstr "" -#: cp/typeck2.c:2187 +#: cp/typeck2.c:2199 #, gcc-internal-format msgid "call to function which throws incomplete type %q#T" msgstr "" @@ -47146,8 +47289,8 @@ msgstr "" #: fortran/array.c:213 fortran/array.c:615 fortran/check.c:2642 #: fortran/check.c:4950 fortran/check.c:4988 fortran/check.c:5030 -#: fortran/check.c:5229 fortran/match.c:1674 fortran/match.c:2781 -#: fortran/match.c:2976 fortran/match.c:3172 fortran/simplify.c:4733 +#: fortran/check.c:5229 fortran/match.c:1680 fortran/match.c:2787 +#: fortran/match.c:2982 fortran/match.c:3178 fortran/simplify.c:4733 #, gcc-internal-format msgid "Coarrays disabled at %C, use %<-fcoarray=%> to enable" msgstr "" @@ -47287,7 +47430,7 @@ msgstr "" msgid "Array constructor including type specification at %C" msgstr "" -#: fortran/array.c:1112 fortran/match.c:3602 +#: fortran/array.c:1112 fortran/match.c:3608 #, gcc-internal-format, gfc-internal-format msgid "Type-spec at %L cannot contain a deferred type parameter" msgstr "" @@ -48427,7 +48570,7 @@ msgstr "" #. Since the extension field is 8 bit wide, we can only have #. up to 255 extension levels. -#: fortran/class.c:725 fortran/decl.c:8136 +#: fortran/class.c:725 fortran/decl.c:8176 #, gcc-internal-format msgid "Maximum extension level reached with type %qs at %L" msgstr "" @@ -48646,1306 +48789,1311 @@ msgid "" "at %L" msgstr "" -#: fortran/decl.c:1275 +#: fortran/decl.c:1244 +#, gcc-internal-format +msgid "Symbol %qs at %C also declared as a type at %L" +msgstr "" + +#: fortran/decl.c:1303 #, gcc-internal-format msgid "" "Variable %qs in common block %qs at %C must be declared with a C " "interoperable kind since common block %qs is BIND(C)" msgstr "" -#: fortran/decl.c:1320 +#: fortran/decl.c:1348 #, gcc-internal-format, gfc-internal-format msgid "CHARACTER expression at %L is being truncated (%d/%d)" msgstr "" -#: fortran/decl.c:1327 +#: fortran/decl.c:1355 #, gcc-internal-format, gfc-internal-format msgid "" "The CHARACTER elements of the array constructor at %L must have the same " "length (%d/%d)" msgstr "" -#: fortran/decl.c:1417 +#: fortran/decl.c:1445 #, gcc-internal-format msgid "Initializer not allowed for PARAMETER %qs at %C" msgstr "" -#: fortran/decl.c:1427 +#: fortran/decl.c:1455 #, gcc-internal-format, gfc-internal-format msgid "PARAMETER at %L is missing an initializer" msgstr "" -#: fortran/decl.c:1437 +#: fortran/decl.c:1465 #, gcc-internal-format msgid "" "Variable %qs at %C with an initializer already appears in a DATA statement" msgstr "" -#: fortran/decl.c:1530 +#: fortran/decl.c:1558 #, gcc-internal-format, gfc-internal-format msgid "Can't initialize implied-shape array at %L with scalar" msgstr "" -#: fortran/decl.c:1565 +#: fortran/decl.c:1593 #, gcc-internal-format, gfc-internal-format msgid "Non-constant lower bound in implied-shape declaration at %L" msgstr "" -#: fortran/decl.c:1650 +#: fortran/decl.c:1678 #, gcc-internal-format, gfc-internal-format msgid "Component at %C must have the POINTER attribute" msgstr "" -#: fortran/decl.c:1658 +#: fortran/decl.c:1686 #, gcc-internal-format, gfc-internal-format msgid "Array component of structure at %C must have explicit or deferred shape" msgstr "" -#: fortran/decl.c:1739 +#: fortran/decl.c:1767 #, gcc-internal-format, gfc-internal-format msgid "Pointer array component of structure at %C must have a deferred shape" msgstr "" -#: fortran/decl.c:1748 +#: fortran/decl.c:1776 #, gcc-internal-format, gfc-internal-format msgid "Allocatable component of structure at %C must have a deferred shape" msgstr "" -#: fortran/decl.c:1757 +#: fortran/decl.c:1785 #, gcc-internal-format, gfc-internal-format msgid "Array component of structure at %C must have an explicit shape" msgstr "" -#: fortran/decl.c:1811 +#: fortran/decl.c:1839 #, gcc-internal-format, gfc-internal-format msgid "NULL() initialization at %C is ambiguous" msgstr "" -#: fortran/decl.c:1828 +#: fortran/decl.c:1856 #, gcc-internal-format, gfc-internal-format msgid "NULL() initialization at %C may not have MOLD" msgstr "" -#: fortran/decl.c:1845 +#: fortran/decl.c:1873 #, gcc-internal-format, gfc-internal-format msgid "Initialization of pointer at %C is not allowed in a PURE procedure" msgstr "" -#: fortran/decl.c:1866 +#: fortran/decl.c:1894 #, gcc-internal-format, gfc-internal-format msgid "Error in pointer initialization at %C" msgstr "" -#: fortran/decl.c:1873 +#: fortran/decl.c:1901 #, gcc-internal-format, gfc-internal-format msgid "non-NULL pointer initialization at %C" msgstr "" -#: fortran/decl.c:1896 +#: fortran/decl.c:1924 #, gcc-internal-format msgid "Function name %qs not allowed at %C" msgstr "" -#: fortran/decl.c:1963 +#: fortran/decl.c:1991 #, gcc-internal-format msgid "Non-PARAMETER symbol %qs at %L can't be implied-shape" msgstr "" -#: fortran/decl.c:1973 +#: fortran/decl.c:2001 #, gcc-internal-format, gfc-internal-format msgid "Implied-shape array at %L" msgstr "" -#: fortran/decl.c:2026 +#: fortran/decl.c:2054 #, gcc-internal-format msgid "" "%qs at %C is a redefinition of the declaration in the corresponding " "interface for MODULE PROCEDURE %qs" msgstr "" -#: fortran/decl.c:2055 fortran/decl.c:6911 +#: fortran/decl.c:2083 fortran/decl.c:6950 #, gcc-internal-format, gfc-internal-format msgid "Duplicate array spec for Cray pointee at %C" msgstr "" -#: fortran/decl.c:2063 +#: fortran/decl.c:2091 #, gcc-internal-format msgid "Couldn't set pointee array spec." msgstr "" -#: fortran/decl.c:2126 +#: fortran/decl.c:2154 #, gcc-internal-format, gfc-internal-format msgid "Old-style initialization at %C" msgstr "" -#: fortran/decl.c:2131 +#: fortran/decl.c:2159 #, gcc-internal-format, gfc-internal-format msgid "Invalid old style initialization for derived type component at %C" msgstr "" -#: fortran/decl.c:2148 fortran/decl.c:5239 +#: fortran/decl.c:2176 fortran/decl.c:5265 #, gcc-internal-format, gfc-internal-format msgid "Initialization at %C isn't for a pointer variable" msgstr "" -#: fortran/decl.c:2161 +#: fortran/decl.c:2189 #, gcc-internal-format msgid "Pointer initialization at %C requires %<=>%>, not %<=%>" msgstr "" -#: fortran/decl.c:2170 fortran/decl.c:8285 +#: fortran/decl.c:2198 fortran/decl.c:8325 #, gcc-internal-format, gfc-internal-format msgid "Expected an initialization expression at %C" msgstr "" -#: fortran/decl.c:2177 +#: fortran/decl.c:2205 #, gcc-internal-format, gfc-internal-format msgid "Initialization of variable at %C is not allowed in a PURE procedure" msgstr "" -#: fortran/decl.c:2194 +#: fortran/decl.c:2222 #, gcc-internal-format, gfc-internal-format msgid "Initialization of allocatable component at %C is not allowed" msgstr "" -#: fortran/decl.c:2248 fortran/decl.c:2284 +#: fortran/decl.c:2276 fortran/decl.c:2312 #, gcc-internal-format, gfc-internal-format msgid "Old-style type declaration %s*%d not supported at %C" msgstr "" -#: fortran/decl.c:2290 +#: fortran/decl.c:2318 #, gcc-internal-format, gfc-internal-format msgid "Nonstandard type declaration %s*%d at %C" msgstr "" -#: fortran/decl.c:2341 fortran/decl.c:2417 +#: fortran/decl.c:2369 fortran/decl.c:2445 #, gcc-internal-format, gfc-internal-format msgid "Missing right parenthesis at %C" msgstr "" -#: fortran/decl.c:2354 fortran/decl.c:2488 +#: fortran/decl.c:2382 fortran/decl.c:2516 #, gcc-internal-format, gfc-internal-format msgid "Expected initialization expression at %C" msgstr "" -#: fortran/decl.c:2362 fortran/decl.c:2494 +#: fortran/decl.c:2390 fortran/decl.c:2522 #, gcc-internal-format, gfc-internal-format msgid "Expected scalar initialization expression at %C" msgstr "" -#: fortran/decl.c:2393 +#: fortran/decl.c:2421 #, gcc-internal-format, gfc-internal-format msgid "Kind %d not supported for type %s at %C" msgstr "" -#: fortran/decl.c:2406 +#: fortran/decl.c:2434 #, gcc-internal-format, gfc-internal-format msgid "C kind type parameter is for type %s but type at %L is %s" msgstr "" -#: fortran/decl.c:2415 +#: fortran/decl.c:2443 #, gcc-internal-format, gfc-internal-format msgid "Missing right parenthesis or comma at %C" msgstr "" -#: fortran/decl.c:2514 +#: fortran/decl.c:2542 #, gcc-internal-format, gfc-internal-format msgid "Kind %d is not supported for CHARACTER at %C" msgstr "" -#: fortran/decl.c:2646 +#: fortran/decl.c:2674 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in CHARACTER declaration at %C" msgstr "" -#: fortran/decl.c:2731 +#: fortran/decl.c:2759 #, gcc-internal-format, gfc-internal-format msgid "BYTE type at %C" msgstr "" -#: fortran/decl.c:2736 +#: fortran/decl.c:2764 #, gcc-internal-format, gfc-internal-format msgid "BYTE type used at %C is not available on the target machine" msgstr "" -#: fortran/decl.c:2758 +#: fortran/decl.c:2786 #, gcc-internal-format, gfc-internal-format msgid "Assumed type at %C is not allowed for components" msgstr "" -#: fortran/decl.c:2761 +#: fortran/decl.c:2789 #, gcc-internal-format, gfc-internal-format msgid "Assumed type at %C" msgstr "" -#: fortran/decl.c:2784 fortran/decl.c:2815 fortran/decl.c:2844 -#: fortran/decl.c:3023 +#: fortran/decl.c:2812 fortran/decl.c:2843 fortran/decl.c:2872 +#: fortran/decl.c:3051 #, gcc-internal-format, gfc-internal-format msgid "TYPE with intrinsic-type-spec at %C" msgstr "" -#: fortran/decl.c:2840 +#: fortran/decl.c:2868 #, gcc-internal-format, gfc-internal-format msgid "DOUBLE COMPLEX at %C" msgstr "" -#: fortran/decl.c:2914 +#: fortran/decl.c:2942 #, gcc-internal-format, gfc-internal-format msgid "CLASS statement at %C" msgstr "" -#: fortran/decl.c:2949 fortran/decl.c:2962 fortran/decl.c:3418 -#: fortran/decl.c:3426 +#: fortran/decl.c:2977 fortran/decl.c:2990 fortran/decl.c:3446 +#: fortran/decl.c:3454 #, gcc-internal-format msgid "Type name %qs at %C is ambiguous" msgstr "" -#: fortran/decl.c:2977 +#: fortran/decl.c:3005 #, gcc-internal-format msgid "" "Type name %qs at %C conflicts with previously declared entity at %L, which " "has the same name" msgstr "" -#: fortran/decl.c:3094 +#: fortran/decl.c:3122 #, gcc-internal-format, gfc-internal-format msgid "Duplicate IMPLICIT NONE statement at %C" msgstr "" -#: fortran/decl.c:3103 +#: fortran/decl.c:3131 #, gcc-internal-format, gfc-internal-format msgid "IMPORT NONE with spec list at %C" msgstr "" -#: fortran/decl.c:3162 +#: fortran/decl.c:3190 #, gcc-internal-format, gfc-internal-format msgid "Missing character range in IMPLICIT at %C" msgstr "" -#: fortran/decl.c:3208 +#: fortran/decl.c:3236 #, gcc-internal-format, gfc-internal-format msgid "Letters must be in alphabetic order in IMPLICIT statement at %C" msgstr "" -#: fortran/decl.c:3261 +#: fortran/decl.c:3289 #, gcc-internal-format, gfc-internal-format msgid "IMPLICIT statement at %C following an IMPLICIT NONE (type) statement" msgstr "" -#: fortran/decl.c:3271 +#: fortran/decl.c:3299 #, gcc-internal-format, gfc-internal-format msgid "Empty IMPLICIT statement at %C" msgstr "" -#: fortran/decl.c:3377 +#: fortran/decl.c:3405 #, gcc-internal-format, gfc-internal-format msgid "IMPORT statement at %C only permitted in an INTERFACE body" msgstr "" -#: fortran/decl.c:3384 +#: fortran/decl.c:3412 #, gcc-internal-format, gfc-internal-format msgid "" "F2008: C1210 IMPORT statement at %C is not permitted in a module procedure " "interface body" msgstr "" -#: fortran/decl.c:3389 +#: fortran/decl.c:3417 #, gcc-internal-format, gfc-internal-format msgid "IMPORT statement at %C" msgstr "" -#: fortran/decl.c:3403 +#: fortran/decl.c:3431 #, gcc-internal-format, gfc-internal-format msgid "Expecting list of named entities at %C" msgstr "" -#: fortran/decl.c:3432 +#: fortran/decl.c:3460 #, gcc-internal-format msgid "Cannot IMPORT %qs from host scoping unit at %C - does not exist." msgstr "" -#: fortran/decl.c:3439 +#: fortran/decl.c:3467 #, gcc-internal-format msgid "%qs is already IMPORTed from host scoping unit at %C" msgstr "" -#: fortran/decl.c:3482 +#: fortran/decl.c:3510 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in IMPORT statement at %C" msgstr "" -#: fortran/decl.c:3781 +#: fortran/decl.c:3809 #, gcc-internal-format, gfc-internal-format msgid "Missing codimension specification at %C" msgstr "" -#: fortran/decl.c:3783 +#: fortran/decl.c:3811 #, gcc-internal-format, gfc-internal-format msgid "Missing dimension specification at %C" msgstr "" -#: fortran/decl.c:3866 +#: fortran/decl.c:3894 #, gcc-internal-format, gfc-internal-format msgid "Duplicate %s attribute at %L" msgstr "" -#: fortran/decl.c:3885 +#: fortran/decl.c:3913 #, gcc-internal-format, gfc-internal-format msgid "ALLOCATABLE attribute at %C in a TYPE definition" msgstr "" -#: fortran/decl.c:3894 +#: fortran/decl.c:3922 #, gcc-internal-format, gfc-internal-format msgid "Attribute at %L is not allowed in a TYPE definition" msgstr "" -#: fortran/decl.c:3912 +#: fortran/decl.c:3940 #, gcc-internal-format, gfc-internal-format msgid "Attribute %s at %L in a TYPE definition" msgstr "" -#: fortran/decl.c:3922 +#: fortran/decl.c:3950 #, gcc-internal-format, gfc-internal-format msgid "" "%s attribute at %L is not allowed outside of the specification part of a " "module" msgstr "" -#: fortran/decl.c:3936 +#: fortran/decl.c:3964 #, gcc-internal-format, gfc-internal-format msgid "ASYNCHRONOUS attribute at %C" msgstr "" -#: fortran/decl.c:3947 +#: fortran/decl.c:3975 #, gcc-internal-format, gfc-internal-format msgid "CONTIGUOUS attribute at %C" msgstr "" -#: fortran/decl.c:3994 fortran/decl.c:7207 +#: fortran/decl.c:4022 fortran/decl.c:7246 #, gcc-internal-format, gfc-internal-format msgid "PROTECTED at %C only allowed in specification part of a module" msgstr "" -#: fortran/decl.c:4000 +#: fortran/decl.c:4028 #, gcc-internal-format, gfc-internal-format msgid "PROTECTED attribute at %C" msgstr "" -#: fortran/decl.c:4029 +#: fortran/decl.c:4057 #, gcc-internal-format, gfc-internal-format msgid "VALUE attribute at %C" msgstr "" -#: fortran/decl.c:4036 +#: fortran/decl.c:4064 #, gcc-internal-format, gfc-internal-format msgid "VOLATILE attribute at %C" msgstr "" -#: fortran/decl.c:4043 +#: fortran/decl.c:4071 #, gcc-internal-format msgid "match_attr_spec(): Bad attribute" msgstr "" -#: fortran/decl.c:4083 +#: fortran/decl.c:4111 #, gcc-internal-format, gfc-internal-format msgid "Multiple identifiers provided with single NAME= specifier at %C" msgstr "" -#: fortran/decl.c:4181 +#: fortran/decl.c:4209 #, gcc-internal-format msgid "" "Implicitly declared BIND(C) function %qs at %L may not be C interoperable" msgstr "" -#: fortran/decl.c:4203 +#: fortran/decl.c:4231 #, gcc-internal-format msgid "" "Variable %qs in common block %qs at %L may not be a C interoperable kind " "though common block %qs is BIND(C)" msgstr "" -#: fortran/decl.c:4212 +#: fortran/decl.c:4240 #, gcc-internal-format msgid "Type declaration %qs at %L is not C interoperable but it is BIND(C)" msgstr "" -#: fortran/decl.c:4216 +#: fortran/decl.c:4244 #, gcc-internal-format msgid "Variable %qs at %L may not be a C interoperable kind but it is BIND(C)" msgstr "" -#: fortran/decl.c:4228 +#: fortran/decl.c:4256 #, gcc-internal-format msgid "" "Variable %qs in common block %qs at %L cannot be declared with BIND(C) since " "it is not a global" msgstr "" -#: fortran/decl.c:4242 +#: fortran/decl.c:4270 #, gcc-internal-format msgid "Variable %qs at %L cannot have both the POINTER and BIND(C) attributes" msgstr "" -#: fortran/decl.c:4250 +#: fortran/decl.c:4278 #, gcc-internal-format msgid "" "Variable %qs at %L cannot have both the ALLOCATABLE and BIND(C) attributes" msgstr "" -#: fortran/decl.c:4262 +#: fortran/decl.c:4290 #, gcc-internal-format msgid "Return type of BIND(C) function %qs at %L cannot be an array" msgstr "" -#: fortran/decl.c:4270 +#: fortran/decl.c:4298 #, gcc-internal-format msgid "Return type of BIND(C) function %qs at %L cannot be a character string" msgstr "" #. Use gfc_warning_now because we won't say that the symbol fails #. just because of this. -#: fortran/decl.c:4281 +#: fortran/decl.c:4309 #, gcc-internal-format msgid "" "Symbol %qs at %L is marked PRIVATE but has been given the binding label %qs" msgstr "" -#: fortran/decl.c:4355 +#: fortran/decl.c:4383 #, gcc-internal-format, gfc-internal-format msgid "" "Need either entity or common block name for attribute specification " "statement at %C" msgstr "" -#: fortran/decl.c:4400 +#: fortran/decl.c:4428 #, gcc-internal-format, gfc-internal-format msgid "" "Missing entity or common block name for attribute specification statement at " "%C" msgstr "" -#: fortran/decl.c:4407 +#: fortran/decl.c:4435 #, gcc-internal-format msgid "Missing symbol" msgstr "" -#: fortran/decl.c:4436 +#: fortran/decl.c:4464 #, gcc-internal-format, gfc-internal-format msgid "BIND(C) statement at %C" msgstr "" -#: fortran/decl.c:4514 +#: fortran/decl.c:4542 #, gcc-internal-format, gfc-internal-format msgid "" "Derived type at %C has not been previously defined and so cannot appear in a " "derived type definition" msgstr "" -#: fortran/decl.c:4546 +#: fortran/decl.c:4574 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in data declaration at %C" msgstr "" -#: fortran/decl.c:4619 +#: fortran/decl.c:4615 #, gcc-internal-format, gfc-internal-format -msgid "IMPURE procedure at %C" +msgid "MODULE prefix at %C" msgstr "" -#: fortran/decl.c:4631 +#: fortran/decl.c:4660 #, gcc-internal-format, gfc-internal-format -msgid "PURE and IMPURE must not appear both at %C" +msgid "IMPURE procedure at %C" msgstr "" -#: fortran/decl.c:4654 +#: fortran/decl.c:4672 #, gcc-internal-format, gfc-internal-format -msgid "MODULE prefix at %C" +msgid "PURE and IMPURE must not appear both at %C" msgstr "" -#: fortran/decl.c:4730 fortran/primary.c:1773 +#: fortran/decl.c:4756 fortran/primary.c:1779 #, gcc-internal-format, gfc-internal-format msgid "Alternate-return argument at %C" msgstr "" -#: fortran/decl.c:4776 +#: fortran/decl.c:4802 #, gcc-internal-format msgid "Name %qs at %C is the name of the procedure" msgstr "" -#: fortran/decl.c:4788 +#: fortran/decl.c:4814 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk in formal argument list at %C" msgstr "" -#: fortran/decl.c:4805 +#: fortran/decl.c:4831 #, gcc-internal-format msgid "Duplicate symbol %qs in formal argument list at %C" msgstr "" -#: fortran/decl.c:4844 +#: fortran/decl.c:4870 #, gcc-internal-format, gfc-internal-format msgid "Mismatch in MODULE PROCEDURE formal argument names (%s/%s) at %C" msgstr "" -#: fortran/decl.c:4850 +#: fortran/decl.c:4876 #, gcc-internal-format, gfc-internal-format msgid "Mismatch in number of MODULE PROCEDURE formal arguments at %C" msgstr "" -#: fortran/decl.c:4889 +#: fortran/decl.c:4915 #, gcc-internal-format, gfc-internal-format msgid "RESULT variable at %C must be different than function name" msgstr "" -#: fortran/decl.c:4966 +#: fortran/decl.c:4992 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after function declaration at %C" msgstr "" -#: fortran/decl.c:4976 fortran/decl.c:6061 +#: fortran/decl.c:5002 fortran/decl.c:6095 #, gcc-internal-format, gfc-internal-format msgid "BIND(C) attribute at %L may not be specified for an internal procedure" msgstr "" -#: fortran/decl.c:5178 +#: fortran/decl.c:5204 #, gcc-internal-format, gfc-internal-format msgid "BIND(C) attribute at %C requires an interface with BIND(C)" msgstr "" -#: fortran/decl.c:5185 +#: fortran/decl.c:5211 #, gcc-internal-format, gfc-internal-format msgid "BIND(C) procedure with NAME may not have POINTER attribute at %C" msgstr "" -#: fortran/decl.c:5191 +#: fortran/decl.c:5217 #, gcc-internal-format, gfc-internal-format msgid "Dummy procedure at %C may not have BIND(C) attribute with NAME" msgstr "" -#: fortran/decl.c:5214 +#: fortran/decl.c:5240 #, gcc-internal-format msgid "Procedure %qs at %L already has basic type of %s" msgstr "" -#: fortran/decl.c:5260 fortran/decl.c:5448 fortran/decl.c:8766 +#: fortran/decl.c:5286 fortran/decl.c:5474 fortran/decl.c:8806 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in PROCEDURE statement at %C" msgstr "" -#: fortran/decl.c:5309 fortran/decl.c:8668 +#: fortran/decl.c:5335 fortran/decl.c:8708 #, gcc-internal-format msgid "Expected %<::%> after binding-attributes at %C" msgstr "" -#: fortran/decl.c:5316 +#: fortran/decl.c:5342 #, gcc-internal-format, gfc-internal-format msgid "NOPASS or explicit interface required at %C" msgstr "" -#: fortran/decl.c:5320 +#: fortran/decl.c:5346 #, gcc-internal-format, gfc-internal-format msgid "Procedure pointer component at %C" msgstr "" -#: fortran/decl.c:5392 +#: fortran/decl.c:5418 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in procedure pointer component at %C" msgstr "" -#: fortran/decl.c:5410 +#: fortran/decl.c:5436 #, gcc-internal-format, gfc-internal-format msgid "PROCEDURE at %C must be in a generic interface" msgstr "" -#: fortran/decl.c:5419 fortran/decl.c:7797 +#: fortran/decl.c:5445 fortran/decl.c:7837 #, gcc-internal-format, gfc-internal-format msgid "double colon in MODULE PROCEDURE statement at %L" msgstr "" -#: fortran/decl.c:5489 +#: fortran/decl.c:5515 #, gcc-internal-format, gfc-internal-format msgid "PROCEDURE statement at %C" msgstr "" -#: fortran/decl.c:5561 +#: fortran/decl.c:5587 #, gcc-internal-format, gfc-internal-format msgid "Expected formal argument list in function definition at %C" msgstr "" -#: fortran/decl.c:5585 fortran/decl.c:5589 fortran/decl.c:5833 -#: fortran/decl.c:5837 fortran/decl.c:6029 fortran/decl.c:6033 +#: fortran/decl.c:5611 fortran/decl.c:5615 fortran/decl.c:5867 +#: fortran/decl.c:5871 fortran/decl.c:6063 fortran/decl.c:6067 #: fortran/symbol.c:1712 #, gcc-internal-format, gfc-internal-format msgid "BIND(C) attribute at %L can only be used for variables or common blocks" msgstr "" -#: fortran/decl.c:5735 +#: fortran/decl.c:5769 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C" msgstr "" -#: fortran/decl.c:5744 +#: fortran/decl.c:5778 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a PROGRAM" msgstr "" -#: fortran/decl.c:5747 +#: fortran/decl.c:5781 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a MODULE" msgstr "" -#: fortran/decl.c:5750 +#: fortran/decl.c:5784 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a SUBMODULE" msgstr "" -#: fortran/decl.c:5753 +#: fortran/decl.c:5787 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a BLOCK DATA" msgstr "" -#: fortran/decl.c:5757 fortran/decl.c:5798 +#: fortran/decl.c:5791 fortran/decl.c:5832 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within an INTERFACE" msgstr "" -#: fortran/decl.c:5761 +#: fortran/decl.c:5795 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a DERIVED TYPE block" msgstr "" -#: fortran/decl.c:5765 +#: fortran/decl.c:5799 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within an IF-THEN block" msgstr "" -#: fortran/decl.c:5770 +#: fortran/decl.c:5804 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a DO block" msgstr "" -#: fortran/decl.c:5774 +#: fortran/decl.c:5808 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a SELECT block" msgstr "" -#: fortran/decl.c:5778 +#: fortran/decl.c:5812 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a FORALL block" msgstr "" -#: fortran/decl.c:5782 +#: fortran/decl.c:5816 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a WHERE block" msgstr "" -#: fortran/decl.c:5786 +#: fortran/decl.c:5820 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear within a contained subprogram" msgstr "" -#: fortran/decl.c:5790 +#: fortran/decl.c:5824 #, gcc-internal-format, gfc-internal-format msgid "Unexpected ENTRY statement at %C" msgstr "" -#: fortran/decl.c:5811 +#: fortran/decl.c:5845 #, gcc-internal-format, gfc-internal-format msgid "ENTRY statement at %C cannot appear in a contained procedure" msgstr "" -#: fortran/decl.c:5862 fortran/decl.c:6068 +#: fortran/decl.c:5896 fortran/decl.c:6102 #, gcc-internal-format, gfc-internal-format msgid "Missing required parentheses before BIND(C) at %C" msgstr "" -#: fortran/decl.c:6125 fortran/decl.c:6132 +#: fortran/decl.c:6164 fortran/decl.c:6171 #, gcc-internal-format, gfc-internal-format msgid "Invalid C identifier in NAME= specifier at %C" msgstr "" -#: fortran/decl.c:6172 +#: fortran/decl.c:6211 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in NAME= specifier for binding label at %C" msgstr "" -#: fortran/decl.c:6188 +#: fortran/decl.c:6227 #, gcc-internal-format, gfc-internal-format msgid "NAME= specifier at %C should be a constant expression" msgstr "" -#: fortran/decl.c:6196 +#: fortran/decl.c:6235 #, gcc-internal-format, gfc-internal-format msgid "NAME= specifier at %C should be a scalar of default character kind" msgstr "" -#: fortran/decl.c:6215 +#: fortran/decl.c:6254 #, gcc-internal-format, gfc-internal-format msgid "Missing closing paren for binding label at %C" msgstr "" -#: fortran/decl.c:6221 +#: fortran/decl.c:6260 #, gcc-internal-format, gfc-internal-format msgid "No binding name is allowed in BIND(C) at %C" msgstr "" -#: fortran/decl.c:6227 +#: fortran/decl.c:6266 #, gcc-internal-format, gfc-internal-format msgid "For dummy procedure %s, no binding name is allowed in BIND(C) at %C" msgstr "" -#: fortran/decl.c:6256 +#: fortran/decl.c:6295 #, gcc-internal-format, gfc-internal-format msgid "NAME not allowed on BIND(C) for ABSTRACT INTERFACE at %C" msgstr "" -#: fortran/decl.c:6481 +#: fortran/decl.c:6520 #, gcc-internal-format, gfc-internal-format msgid "Unexpected END statement at %C" msgstr "" -#: fortran/decl.c:6490 +#: fortran/decl.c:6529 #, gcc-internal-format, gfc-internal-format msgid "END statement instead of %s statement at %L" msgstr "" #. We would have required END [something]. -#: fortran/decl.c:6499 +#: fortran/decl.c:6538 #, gcc-internal-format, gfc-internal-format msgid "%s statement expected at %L" msgstr "" -#: fortran/decl.c:6510 +#: fortran/decl.c:6549 #, gcc-internal-format, gfc-internal-format msgid "Expecting %s statement at %L" msgstr "" -#: fortran/decl.c:6530 +#: fortran/decl.c:6569 #, gcc-internal-format msgid "Expected block name of %qs in %s statement at %L" msgstr "" -#: fortran/decl.c:6547 +#: fortran/decl.c:6586 #, gcc-internal-format, gfc-internal-format msgid "Expected terminating name at %C" msgstr "" -#: fortran/decl.c:6561 fortran/decl.c:6569 +#: fortran/decl.c:6600 fortran/decl.c:6608 #, gcc-internal-format msgid "Expected label %qs for %s statement at %C" msgstr "" -#: fortran/decl.c:6668 +#: fortran/decl.c:6707 #, gcc-internal-format, gfc-internal-format msgid "Missing array specification at %L in DIMENSION statement" msgstr "" -#: fortran/decl.c:6676 +#: fortran/decl.c:6715 #, gcc-internal-format, gfc-internal-format msgid "Dimensions specified for %s at %L after its initialisation" msgstr "" -#: fortran/decl.c:6684 +#: fortran/decl.c:6723 #, gcc-internal-format, gfc-internal-format msgid "Missing array specification at %L in CODIMENSION statement" msgstr "" -#: fortran/decl.c:6693 +#: fortran/decl.c:6732 #, gcc-internal-format, gfc-internal-format msgid "Array specification must be deferred at %L" msgstr "" -#: fortran/decl.c:6791 +#: fortran/decl.c:6830 #, gcc-internal-format, gfc-internal-format msgid "Unexpected character in variable list at %C" msgstr "" -#: fortran/decl.c:6828 +#: fortran/decl.c:6867 #, gcc-internal-format msgid "Expected %<(%> at %C" msgstr "" -#: fortran/decl.c:6842 fortran/decl.c:6882 +#: fortran/decl.c:6881 fortran/decl.c:6921 #, gcc-internal-format, gfc-internal-format msgid "Expected variable name at %C" msgstr "" -#: fortran/decl.c:6858 +#: fortran/decl.c:6897 #, gcc-internal-format, gfc-internal-format msgid "Cray pointer at %C must be an integer" msgstr "" -#: fortran/decl.c:6862 +#: fortran/decl.c:6901 #, gcc-internal-format, gfc-internal-format msgid "" "Cray pointer at %C has %d bytes of precision; memory addresses require %d " "bytes" msgstr "" -#: fortran/decl.c:6868 +#: fortran/decl.c:6907 #, gcc-internal-format, gfc-internal-format msgid "Expected \",\" at %C" msgstr "" -#: fortran/decl.c:6907 +#: fortran/decl.c:6946 #, gcc-internal-format msgid "Couldn't set Cray pointee array spec." msgstr "" -#: fortran/decl.c:6931 +#: fortran/decl.c:6970 #, gcc-internal-format, gfc-internal-format msgid "Expected \")\" at %C" msgstr "" -#: fortran/decl.c:6943 +#: fortran/decl.c:6982 #, gcc-internal-format msgid "Expected %<,%> or end of statement at %C" msgstr "" -#: fortran/decl.c:6969 +#: fortran/decl.c:7008 #, gcc-internal-format, gfc-internal-format msgid "INTENT is not allowed inside of BLOCK at %C" msgstr "" -#: fortran/decl.c:7001 +#: fortran/decl.c:7040 #, gcc-internal-format, gfc-internal-format msgid "OPTIONAL is not allowed inside of BLOCK at %C" msgstr "" -#: fortran/decl.c:7020 +#: fortran/decl.c:7059 #, gcc-internal-format, gfc-internal-format msgid "Cray pointer declaration at %C requires -fcray-pointer flag" msgstr "" -#: fortran/decl.c:7059 +#: fortran/decl.c:7098 #, gcc-internal-format, gfc-internal-format msgid "CONTIGUOUS statement at %C" msgstr "" -#: fortran/decl.c:7157 +#: fortran/decl.c:7196 #, gcc-internal-format, gfc-internal-format msgid "" "Access specification of the %s operator at %C has already been specified" msgstr "" -#: fortran/decl.c:7174 +#: fortran/decl.c:7213 #, gcc-internal-format, gfc-internal-format msgid "" "Access specification of the .%s. operator at %C has already been specified" msgstr "" -#: fortran/decl.c:7213 +#: fortran/decl.c:7252 #, gcc-internal-format, gfc-internal-format msgid "PROTECTED statement at %C" msgstr "" -#: fortran/decl.c:7251 +#: fortran/decl.c:7290 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in PROTECTED statement at %C" msgstr "" -#: fortran/decl.c:7275 +#: fortran/decl.c:7314 #, gcc-internal-format, gfc-internal-format msgid "" "PRIVATE statement at %C is only allowed in the specification part of a module" msgstr "" -#: fortran/decl.c:7312 +#: fortran/decl.c:7351 #, gcc-internal-format, gfc-internal-format msgid "" "PUBLIC statement at %C is only allowed in the specification part of a module" msgstr "" -#: fortran/decl.c:7340 +#: fortran/decl.c:7379 #, gcc-internal-format, gfc-internal-format msgid "Expected variable name at %C in PARAMETER statement" msgstr "" -#: fortran/decl.c:7347 +#: fortran/decl.c:7386 #, gcc-internal-format, gfc-internal-format msgid "Expected = sign in PARAMETER statement at %C" msgstr "" -#: fortran/decl.c:7353 +#: fortran/decl.c:7392 #, gcc-internal-format, gfc-internal-format msgid "Expected expression at %C in PARAMETER statement" msgstr "" -#: fortran/decl.c:7373 +#: fortran/decl.c:7412 #, gcc-internal-format, gfc-internal-format msgid "Initializing already initialized variable at %C" msgstr "" -#: fortran/decl.c:7408 +#: fortran/decl.c:7447 #, gcc-internal-format, gfc-internal-format msgid "Unexpected characters in PARAMETER statement at %C" msgstr "" -#: fortran/decl.c:7432 +#: fortran/decl.c:7471 #, gcc-internal-format, gfc-internal-format msgid "Blanket SAVE statement at %C follows previous SAVE statement" msgstr "" -#: fortran/decl.c:7443 +#: fortran/decl.c:7482 #, gcc-internal-format, gfc-internal-format msgid "SAVE statement at %C follows blanket SAVE statement" msgstr "" -#: fortran/decl.c:7489 +#: fortran/decl.c:7528 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in SAVE statement at %C" msgstr "" -#: fortran/decl.c:7503 +#: fortran/decl.c:7542 #, gcc-internal-format, gfc-internal-format msgid "VALUE is not allowed inside of BLOCK at %C" msgstr "" -#: fortran/decl.c:7507 +#: fortran/decl.c:7546 #, gcc-internal-format, gfc-internal-format msgid "VALUE statement at %C" msgstr "" -#: fortran/decl.c:7545 +#: fortran/decl.c:7584 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in VALUE statement at %C" msgstr "" -#: fortran/decl.c:7556 +#: fortran/decl.c:7595 #, gcc-internal-format, gfc-internal-format msgid "VOLATILE statement at %C" msgstr "" -#: fortran/decl.c:7579 +#: fortran/decl.c:7618 #, gcc-internal-format msgid "" "Specifying VOLATILE for coarray variable %qs at %C, which is use-/host-" "associated" msgstr "" -#: fortran/decl.c:7604 +#: fortran/decl.c:7643 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in VOLATILE statement at %C" msgstr "" -#: fortran/decl.c:7615 +#: fortran/decl.c:7654 #, gcc-internal-format, gfc-internal-format msgid "ASYNCHRONOUS statement at %C" msgstr "" -#: fortran/decl.c:7655 +#: fortran/decl.c:7694 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in ASYNCHRONOUS statement at %C" msgstr "" -#: fortran/decl.c:7679 +#: fortran/decl.c:7719 #, gcc-internal-format, gfc-internal-format msgid "MODULE PROCEDURE declaration at %C" msgstr "" -#: fortran/decl.c:7772 +#: fortran/decl.c:7812 #, gcc-internal-format, gfc-internal-format msgid "MODULE PROCEDURE at %C must be in a generic module interface" msgstr "" -#: fortran/decl.c:7830 +#: fortran/decl.c:7870 #, gcc-internal-format, gfc-internal-format msgid "Intrinsic procedure at %L cannot be a MODULE PROCEDURE" msgstr "" -#: fortran/decl.c:7879 +#: fortran/decl.c:7919 #, gcc-internal-format, gfc-internal-format msgid "Ambiguous symbol in TYPE definition at %C" msgstr "" -#: fortran/decl.c:7888 +#: fortran/decl.c:7928 #, gcc-internal-format msgid "Symbol %qs at %C has not been previously defined" msgstr "" -#: fortran/decl.c:7894 +#: fortran/decl.c:7934 #, gcc-internal-format msgid "%qs in EXTENDS expression at %C is not a derived type" msgstr "" -#: fortran/decl.c:7901 +#: fortran/decl.c:7941 #, gcc-internal-format msgid "%qs cannot be extended at %C because it is BIND(C)" msgstr "" -#: fortran/decl.c:7908 +#: fortran/decl.c:7948 #, gcc-internal-format msgid "%qs cannot be extended at %C because it is a SEQUENCE type" msgstr "" -#: fortran/decl.c:7931 +#: fortran/decl.c:7971 #, gcc-internal-format, gfc-internal-format msgid "" "Derived type at %C can only be PRIVATE in the specification part of a module" msgstr "" -#: fortran/decl.c:7943 +#: fortran/decl.c:7983 #, gcc-internal-format, gfc-internal-format msgid "" "Derived type at %C can only be PUBLIC in the specification part of a module" msgstr "" -#: fortran/decl.c:7964 +#: fortran/decl.c:8004 #, gcc-internal-format, gfc-internal-format msgid "ABSTRACT type at %C" msgstr "" -#: fortran/decl.c:8028 +#: fortran/decl.c:8068 #, gcc-internal-format, gfc-internal-format msgid "Expected :: in TYPE definition at %C" msgstr "" -#: fortran/decl.c:8039 +#: fortran/decl.c:8079 #, gcc-internal-format msgid "Type name %qs at %C cannot be the same as an intrinsic type" msgstr "" -#: fortran/decl.c:8049 +#: fortran/decl.c:8089 #, gcc-internal-format msgid "Derived type name %qs at %C already has a basic type of %s" msgstr "" -#: fortran/decl.c:8066 +#: fortran/decl.c:8106 #, gcc-internal-format msgid "Derived type definition of %qs at %C has already been defined" msgstr "" -#: fortran/decl.c:8171 +#: fortran/decl.c:8211 #, gcc-internal-format, gfc-internal-format msgid "Cray Pointee at %C cannot be assumed shape array" msgstr "" -#: fortran/decl.c:8191 +#: fortran/decl.c:8231 #, gcc-internal-format, gfc-internal-format msgid "ENUM and ENUMERATOR at %C" msgstr "" -#: fortran/decl.c:8223 +#: fortran/decl.c:8263 #, gcc-internal-format, gfc-internal-format msgid "Enumerator exceeds the C integer type at %C" msgstr "" -#: fortran/decl.c:8302 +#: fortran/decl.c:8342 #, gcc-internal-format, gfc-internal-format msgid "ENUMERATOR %L not initialized with integer expression" msgstr "" -#: fortran/decl.c:8350 +#: fortran/decl.c:8390 #, gcc-internal-format, gfc-internal-format msgid "ENUM definition statement expected before %C" msgstr "" -#: fortran/decl.c:8386 +#: fortran/decl.c:8426 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in ENUMERATOR definition at %C" msgstr "" -#: fortran/decl.c:8433 fortran/decl.c:8448 +#: fortran/decl.c:8473 fortran/decl.c:8488 #, gcc-internal-format, gfc-internal-format msgid "Duplicate access-specifier at %C" msgstr "" -#: fortran/decl.c:8468 +#: fortran/decl.c:8508 #, gcc-internal-format, gfc-internal-format msgid "Binding attributes already specify passing, illegal NOPASS at %C" msgstr "" -#: fortran/decl.c:8488 +#: fortran/decl.c:8528 #, gcc-internal-format, gfc-internal-format msgid "Binding attributes already specify passing, illegal PASS at %C" msgstr "" -#: fortran/decl.c:8515 +#: fortran/decl.c:8555 #, gcc-internal-format, gfc-internal-format msgid "Duplicate POINTER attribute at %C" msgstr "" -#: fortran/decl.c:8533 +#: fortran/decl.c:8573 #, gcc-internal-format, gfc-internal-format msgid "Duplicate NON_OVERRIDABLE at %C" msgstr "" -#: fortran/decl.c:8549 +#: fortran/decl.c:8589 #, gcc-internal-format, gfc-internal-format msgid "Duplicate DEFERRED at %C" msgstr "" -#: fortran/decl.c:8562 +#: fortran/decl.c:8602 #, gcc-internal-format, gfc-internal-format msgid "Expected access-specifier at %C" msgstr "" -#: fortran/decl.c:8564 +#: fortran/decl.c:8604 #, gcc-internal-format, gfc-internal-format msgid "Expected binding attribute at %C" msgstr "" -#: fortran/decl.c:8572 +#: fortran/decl.c:8612 #, gcc-internal-format, gfc-internal-format msgid "NON_OVERRIDABLE and DEFERRED can't both appear at %C" msgstr "" -#: fortran/decl.c:8584 +#: fortran/decl.c:8624 #, gcc-internal-format, gfc-internal-format msgid "POINTER attribute is required for procedure pointer component at %C" msgstr "" -#: fortran/decl.c:8626 +#: fortran/decl.c:8666 #, gcc-internal-format msgid "Interface-name expected after %<(%> at %C" msgstr "" -#: fortran/decl.c:8632 +#: fortran/decl.c:8672 #, gcc-internal-format msgid "%<)%> expected at %C" msgstr "" -#: fortran/decl.c:8652 +#: fortran/decl.c:8692 #, gcc-internal-format, gfc-internal-format msgid "Interface must be specified for DEFERRED binding at %C" msgstr "" -#: fortran/decl.c:8657 +#: fortran/decl.c:8697 #, gcc-internal-format, gfc-internal-format msgid "PROCEDURE(interface) at %C should be declared DEFERRED" msgstr "" -#: fortran/decl.c:8680 +#: fortran/decl.c:8720 #, gcc-internal-format, gfc-internal-format msgid "Expected binding name at %C" msgstr "" -#: fortran/decl.c:8684 +#: fortran/decl.c:8724 #, gcc-internal-format, gfc-internal-format msgid "PROCEDURE list at %C" msgstr "" -#: fortran/decl.c:8696 +#: fortran/decl.c:8736 #, gcc-internal-format msgid "%<=> target%> is invalid for DEFERRED binding at %C" msgstr "" -#: fortran/decl.c:8702 +#: fortran/decl.c:8742 #, gcc-internal-format msgid "%<::%> needed in PROCEDURE binding with explicit target at %C" msgstr "" -#: fortran/decl.c:8712 +#: fortran/decl.c:8752 #, gcc-internal-format msgid "Expected binding target after %<=>%> at %C" msgstr "" -#: fortran/decl.c:8729 +#: fortran/decl.c:8769 #, gcc-internal-format msgid "Type %qs containing DEFERRED binding at %C is not ABSTRACT" msgstr "" -#: fortran/decl.c:8740 +#: fortran/decl.c:8780 #, gcc-internal-format msgid "" "There is already a procedure with binding name %qs for the derived type %qs " "at %C" msgstr "" -#: fortran/decl.c:8789 +#: fortran/decl.c:8829 #, gcc-internal-format, gfc-internal-format msgid "GENERIC at %C must be inside a derived-type CONTAINS" msgstr "" -#: fortran/decl.c:8809 +#: fortran/decl.c:8849 #, gcc-internal-format msgid "Expected %<::%> at %C" msgstr "" -#: fortran/decl.c:8821 +#: fortran/decl.c:8861 #, gcc-internal-format, gfc-internal-format msgid "Expected generic name or operator descriptor at %C" msgstr "" -#: fortran/decl.c:8841 +#: fortran/decl.c:8881 #, gcc-internal-format, gfc-internal-format msgid "Malformed GENERIC statement at %C" msgstr "" -#: fortran/decl.c:8852 +#: fortran/decl.c:8892 #, gcc-internal-format msgid "Expected %<=>%> at %C" msgstr "" -#: fortran/decl.c:8894 +#: fortran/decl.c:8934 #, gcc-internal-format msgid "" "There's already a non-generic procedure with binding name %qs for the " "derived type %qs at %C" msgstr "" -#: fortran/decl.c:8902 +#: fortran/decl.c:8942 #, gcc-internal-format msgid "Binding at %C must have the same access as already defined binding %qs" msgstr "" -#: fortran/decl.c:8951 +#: fortran/decl.c:8991 #, gcc-internal-format, gfc-internal-format msgid "Expected specific binding name at %C" msgstr "" -#: fortran/decl.c:8961 +#: fortran/decl.c:9001 #, gcc-internal-format msgid "%qs already defined as specific binding for the generic %qs at %C" msgstr "" -#: fortran/decl.c:8979 +#: fortran/decl.c:9019 #, gcc-internal-format, gfc-internal-format msgid "Junk after GENERIC binding at %C" msgstr "" -#: fortran/decl.c:9014 +#: fortran/decl.c:9054 #, gcc-internal-format, gfc-internal-format msgid "FINAL declaration at %C must be inside a derived type CONTAINS section" msgstr "" -#: fortran/decl.c:9025 +#: fortran/decl.c:9065 #, gcc-internal-format, gfc-internal-format msgid "" "Derived type declaration with FINAL at %C must be in the specification part " "of a MODULE" msgstr "" -#: fortran/decl.c:9047 +#: fortran/decl.c:9087 #, gcc-internal-format, gfc-internal-format msgid "Empty FINAL at %C" msgstr "" -#: fortran/decl.c:9054 +#: fortran/decl.c:9094 #, gcc-internal-format, gfc-internal-format msgid "Expected module procedure name at %C" msgstr "" -#: fortran/decl.c:9064 +#: fortran/decl.c:9104 #, gcc-internal-format msgid "Expected %<,%> at %C" msgstr "" -#: fortran/decl.c:9070 +#: fortran/decl.c:9110 #, gcc-internal-format msgid "Unknown procedure name %qs at %C" msgstr "" -#: fortran/decl.c:9083 +#: fortran/decl.c:9123 #, gcc-internal-format msgid "%qs at %C is already defined as FINAL procedure!" msgstr "" -#: fortran/decl.c:9153 +#: fortran/decl.c:9193 #, gcc-internal-format, gfc-internal-format msgid "Unknown attribute in !GCC$ ATTRIBUTES statement at %C" msgstr "" -#: fortran/decl.c:9199 +#: fortran/decl.c:9239 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !GCC$ ATTRIBUTES statement at %C" msgstr "" @@ -49991,7 +50139,7 @@ msgstr "" msgid "show_expr(): Don't know how to show expr" msgstr "" -#: fortran/dump-parse-tree.c:2520 +#: fortran/dump-parse-tree.c:2532 #, gcc-internal-format msgid "show_code_node(): Bad statement code" msgstr "" @@ -50269,32 +50417,32 @@ msgstr "" msgid "BOZ literal at %L used to initialize non-integer variable %qs" msgstr "" -#: fortran/expr.c:3252 fortran/resolve.c:9531 +#: fortran/expr.c:3252 fortran/resolve.c:9542 #, gcc-internal-format, gfc-internal-format msgid "" "BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX" msgstr "" -#: fortran/expr.c:3263 fortran/resolve.c:9542 +#: fortran/expr.c:3263 fortran/resolve.c:9553 #, gcc-internal-format msgid "BOZ literal at %L is bitwise transferred non-integer symbol %qs" msgstr "" -#: fortran/expr.c:3271 fortran/resolve.c:9551 +#: fortran/expr.c:3271 fortran/resolve.c:9562 #, gcc-internal-format msgid "" "Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be " "disabled with the option %<-fno-range-check%>" msgstr "" -#: fortran/expr.c:3275 fortran/resolve.c:9555 +#: fortran/expr.c:3275 fortran/resolve.c:9566 #, gcc-internal-format msgid "" "Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be " "disabled with the option %<-fno-range-check%>" msgstr "" -#: fortran/expr.c:3279 fortran/resolve.c:9559 +#: fortran/expr.c:3279 fortran/resolve.c:9570 #, gcc-internal-format msgid "" "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled " @@ -50616,62 +50764,62 @@ msgstr "" msgid "can't open input file: %s" msgstr "" -#: fortran/frontend-passes.c:298 +#: fortran/frontend-passes.c:297 #, gcc-internal-format msgid "Illegal id in copy_walk_reduction_arg" msgstr "" -#: fortran/frontend-passes.c:694 fortran/trans-array.c:1044 -#: fortran/trans-array.c:6156 fortran/trans-array.c:7507 +#: fortran/frontend-passes.c:693 fortran/trans-array.c:1044 +#: fortran/trans-array.c:6167 fortran/trans-array.c:7518 #: fortran/trans-intrinsic.c:6278 #, gcc-internal-format, gfc-internal-format msgid "Creating array temporary at %L" msgstr "" -#: fortran/frontend-passes.c:718 fortran/frontend-passes.c:721 +#: fortran/frontend-passes.c:717 fortran/frontend-passes.c:720 #, gcc-internal-format msgid "Removing call to function %qs at %L" msgstr "" -#: fortran/frontend-passes.c:1696 +#: fortran/frontend-passes.c:1695 #, gcc-internal-format msgid "illegal OP in optimize_comparison" msgstr "" -#: fortran/frontend-passes.c:1888 +#: fortran/frontend-passes.c:1887 #, gcc-internal-format msgid "" "Variable %qs at %L set to undefined value inside loop beginning at %L as " "INTENT(OUT) argument to subroutine %qs" msgstr "" -#: fortran/frontend-passes.c:1895 +#: fortran/frontend-passes.c:1894 #, gcc-internal-format msgid "" "Variable %qs at %L not definable inside loop beginning at %L as " "INTENT(INOUT) argument to subroutine %qs" msgstr "" -#: fortran/frontend-passes.c:1960 +#: fortran/frontend-passes.c:1959 #, gcc-internal-format msgid "" "Variable %qs at %L set to undefined value inside loop beginning at %L as " "INTENT(OUT) argument to function %qs" msgstr "" -#: fortran/frontend-passes.c:1966 +#: fortran/frontend-passes.c:1965 #, gcc-internal-format msgid "" "Variable %qs at %L not definable inside loop beginning at %L as " "INTENT(INOUT) argument to function %qs" msgstr "" -#: fortran/frontend-passes.c:2214 fortran/trans-expr.c:1491 +#: fortran/frontend-passes.c:2213 fortran/trans-expr.c:1522 #, gcc-internal-format, gfc-internal-format msgid "Code for reallocating the allocatable array at %L will be added" msgstr "" -#: fortran/frontend-passes.c:2693 +#: fortran/frontend-passes.c:2692 #, gcc-internal-format msgid "Scalarization using DIMEN_RANGE unimplemented" msgstr "" @@ -50790,12 +50938,12 @@ msgstr "" msgid "Second argument of defined assignment at %L must be INTENT(IN)" msgstr "" -#: fortran/interface.c:761 fortran/resolve.c:15347 +#: fortran/interface.c:761 fortran/resolve.c:15373 #, gcc-internal-format, gfc-internal-format msgid "First argument of operator interface at %L must be INTENT(IN)" msgstr "" -#: fortran/interface.c:768 fortran/resolve.c:15365 +#: fortran/interface.c:768 fortran/resolve.c:15391 #, gcc-internal-format, gfc-internal-format msgid "Second argument of operator interface at %L must be INTENT(IN)" msgstr "" @@ -51855,268 +52003,268 @@ msgstr "" msgid "UNIT specifier not allowed with NEWUNIT at %C" msgstr "" -#: fortran/io.c:1897 +#: fortran/io.c:1899 #, gcc-internal-format, gfc-internal-format msgid "NEWUNIT specifier must have FILE= or STATUS='scratch' at %C" msgstr "" -#: fortran/io.c:1904 +#: fortran/io.c:1907 #, gcc-internal-format, gfc-internal-format msgid "OPEN statement at %C must have UNIT or NEWUNIT specified" msgstr "" -#: fortran/io.c:1942 +#: fortran/io.c:1945 #, gcc-internal-format, gfc-internal-format msgid "ASYNCHRONOUS= at %C not allowed in Fortran 95" msgstr "" -#: fortran/io.c:1963 fortran/io.c:3458 +#: fortran/io.c:1966 fortran/io.c:3461 #, gcc-internal-format, gfc-internal-format msgid "BLANK= at %C not allowed in Fortran 95" msgstr "" -#: fortran/io.c:1984 fortran/io.c:3434 +#: fortran/io.c:1987 fortran/io.c:3437 #, gcc-internal-format, gfc-internal-format msgid "DECIMAL= at %C not allowed in Fortran 95" msgstr "" -#: fortran/io.c:2022 +#: fortran/io.c:2025 #, gcc-internal-format, gfc-internal-format msgid "ENCODING= at %C not allowed in Fortran 95" msgstr "" -#: fortran/io.c:2085 fortran/io.c:3507 +#: fortran/io.c:2088 fortran/io.c:3510 #, gcc-internal-format, gfc-internal-format msgid "ROUND= at %C not allowed in Fortran 95" msgstr "" -#: fortran/io.c:2108 +#: fortran/io.c:2111 #, gcc-internal-format, gfc-internal-format msgid "SIGN= at %C not allowed in Fortran 95" msgstr "" -#: fortran/io.c:2329 +#: fortran/io.c:2332 #, gcc-internal-format, gfc-internal-format msgid "CLOSE statement not allowed in PURE procedure at %C" msgstr "" -#: fortran/io.c:2391 +#: fortran/io.c:2394 #, gcc-internal-format, gfc-internal-format msgid "CLOSE statement at %L requires a UNIT number" msgstr "" -#: fortran/io.c:2399 +#: fortran/io.c:2402 #, gcc-internal-format, gfc-internal-format msgid "UNIT number in CLOSE statement at %L must be non-negative" msgstr "" -#: fortran/io.c:2497 fortran/match.c:2633 +#: fortran/io.c:2500 fortran/match.c:2639 #, gcc-internal-format, gfc-internal-format msgid "%s statement not allowed in PURE procedure at %C" msgstr "" -#: fortran/io.c:2531 +#: fortran/io.c:2534 #, gcc-internal-format, gfc-internal-format msgid "UNIT number missing in statement at %L" msgstr "" -#: fortran/io.c:2539 fortran/io.c:2976 +#: fortran/io.c:2542 fortran/io.c:2979 #, gcc-internal-format, gfc-internal-format msgid "UNIT number in statement at %L must be non-negative" msgstr "" -#: fortran/io.c:2572 +#: fortran/io.c:2575 #, gcc-internal-format, gfc-internal-format msgid "FLUSH statement at %C" msgstr "" -#: fortran/io.c:2627 +#: fortran/io.c:2630 #, gcc-internal-format, gfc-internal-format msgid "Duplicate UNIT specification at %C" msgstr "" -#: fortran/io.c:2701 +#: fortran/io.c:2704 #, gcc-internal-format, gfc-internal-format msgid "Duplicate format specification at %C" msgstr "" -#: fortran/io.c:2718 +#: fortran/io.c:2721 #, gcc-internal-format msgid "Symbol %qs in namelist %qs is INTENT(IN) at %C" msgstr "" -#: fortran/io.c:2754 +#: fortran/io.c:2757 #, gcc-internal-format, gfc-internal-format msgid "Duplicate NML specification at %C" msgstr "" -#: fortran/io.c:2763 +#: fortran/io.c:2766 #, gcc-internal-format msgid "Symbol %qs at %C must be a NAMELIST group name" msgstr "" -#: fortran/io.c:2833 +#: fortran/io.c:2836 #, gcc-internal-format, gfc-internal-format msgid "END tag at %C not allowed in output statement" msgstr "" -#: fortran/io.c:2910 +#: fortran/io.c:2913 #, gcc-internal-format, gfc-internal-format msgid "UNIT not specified at %L" msgstr "" -#: fortran/io.c:2922 +#: fortran/io.c:2925 #, gcc-internal-format, gfc-internal-format msgid "" "UNIT specification at %L must be an INTEGER expression or a CHARACTER " "variable" msgstr "" -#: fortran/io.c:2944 +#: fortran/io.c:2947 #, gcc-internal-format, gfc-internal-format msgid "Invalid form of WRITE statement at %L, UNIT required" msgstr "" -#: fortran/io.c:2955 +#: fortran/io.c:2958 #, gcc-internal-format, gfc-internal-format msgid "Internal unit with vector subscript at %L" msgstr "" -#: fortran/io.c:2969 +#: fortran/io.c:2972 #, gcc-internal-format, gfc-internal-format msgid "External IO UNIT cannot be an array at %L" msgstr "" -#: fortran/io.c:2997 +#: fortran/io.c:3000 #, gcc-internal-format msgid "" "NAMELIST %qs in READ statement at %L contains the symbol %qs which may not " "appear in a variable definition context" msgstr "" -#: fortran/io.c:3007 +#: fortran/io.c:3010 #, gcc-internal-format, gfc-internal-format msgid "Comma before i/o item list at %L" msgstr "" -#: fortran/io.c:3017 +#: fortran/io.c:3020 #, gcc-internal-format, gfc-internal-format msgid "ERR tag label %d at %L not defined" msgstr "" -#: fortran/io.c:3029 +#: fortran/io.c:3032 #, gcc-internal-format, gfc-internal-format msgid "END tag label %d at %L not defined" msgstr "" -#: fortran/io.c:3041 +#: fortran/io.c:3044 #, gcc-internal-format, gfc-internal-format msgid "EOR tag label %d at %L not defined" msgstr "" -#: fortran/io.c:3051 +#: fortran/io.c:3054 #, gcc-internal-format, gfc-internal-format msgid "FORMAT label %d at %L not defined" msgstr "" -#: fortran/io.c:3082 +#: fortran/io.c:3085 #, gcc-internal-format msgid "io_kind_name(): bad I/O-kind" msgstr "" -#: fortran/io.c:3171 +#: fortran/io.c:3174 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in I/O iterator at %C" msgstr "" -#: fortran/io.c:3202 +#: fortran/io.c:3205 #, gcc-internal-format, gfc-internal-format msgid "Expected variable in READ statement at %C" msgstr "" -#: fortran/io.c:3208 +#: fortran/io.c:3211 #, gcc-internal-format, gfc-internal-format msgid "Expected expression in %s statement at %C" msgstr "" #. A general purpose syntax error. -#: fortran/io.c:3265 fortran/io.c:3883 fortran/gfortran.h:2715 +#: fortran/io.c:3268 fortran/io.c:3886 fortran/gfortran.h:2718 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in %s statement at %C" msgstr "" -#: fortran/io.c:3349 +#: fortran/io.c:3352 #, gcc-internal-format, gfc-internal-format msgid "Internal file at %L with namelist" msgstr "" -#: fortran/io.c:3405 +#: fortran/io.c:3408 #, gcc-internal-format, gfc-internal-format msgid "ASYNCHRONOUS= specifier at %L must be an initialization expression" msgstr "" -#: fortran/io.c:3483 +#: fortran/io.c:3486 #, gcc-internal-format, gfc-internal-format msgid "PAD= at %C not allowed in Fortran 95" msgstr "" -#: fortran/io.c:3559 +#: fortran/io.c:3562 #, gcc-internal-format, gfc-internal-format msgid "DELIM= at %C not allowed in Fortran 95" msgstr "" -#: fortran/io.c:3711 +#: fortran/io.c:3714 #, gcc-internal-format, gfc-internal-format msgid "PRINT namelist at %C is an extension" msgstr "" -#: fortran/io.c:3854 +#: fortran/io.c:3857 #, gcc-internal-format, gfc-internal-format msgid "Expected comma in I/O list at %C" msgstr "" -#: fortran/io.c:3917 +#: fortran/io.c:3920 #, gcc-internal-format, gfc-internal-format msgid "PRINT statement at %C not allowed within PURE procedure" msgstr "" -#: fortran/io.c:4080 fortran/io.c:4140 +#: fortran/io.c:4083 fortran/io.c:4143 #, gcc-internal-format, gfc-internal-format msgid "INQUIRE statement not allowed in PURE procedure at %C" msgstr "" -#: fortran/io.c:4108 +#: fortran/io.c:4111 #, gcc-internal-format, gfc-internal-format msgid "IOLENGTH tag invalid in INQUIRE statement at %C" msgstr "" -#: fortran/io.c:4118 fortran/trans-io.c:1303 +#: fortran/io.c:4121 fortran/trans-io.c:1303 #, gcc-internal-format, gfc-internal-format msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers" msgstr "" -#: fortran/io.c:4125 +#: fortran/io.c:4128 #, gcc-internal-format, gfc-internal-format msgid "INQUIRE statement at %L requires either FILE or UNIT specifier" msgstr "" -#: fortran/io.c:4134 +#: fortran/io.c:4137 #, gcc-internal-format, gfc-internal-format msgid "UNIT number in INQUIRE statement at %L can not be -1" msgstr "" -#: fortran/io.c:4148 +#: fortran/io.c:4151 #, gcc-internal-format, gfc-internal-format msgid "" "INQUIRE statement at %L requires a PENDING= specifier with the ID= specifier" msgstr "" -#: fortran/io.c:4324 +#: fortran/io.c:4327 #, gcc-internal-format, gfc-internal-format msgid "WAIT at %C not allowed in Fortran 95" msgstr "" -#: fortran/io.c:4330 +#: fortran/io.c:4333 #, gcc-internal-format, gfc-internal-format msgid "WAIT statement not allowed in PURE procedure at %C" msgstr "" @@ -52178,559 +52326,564 @@ msgid "" "extension" msgstr "" -#: fortran/match.c:883 +#: fortran/match.c:882 #, gcc-internal-format, gfc-internal-format -msgid "Loop variable at %C cannot be a coarray" +msgid "Loop variable at %C cannot be an array" msgstr "" #: fortran/match.c:889 #, gcc-internal-format, gfc-internal-format +msgid "Loop variable at %C cannot be a coarray" +msgstr "" + +#: fortran/match.c:895 +#, gcc-internal-format, gfc-internal-format msgid "Loop variable at %C cannot be a sub-component" msgstr "" -#: fortran/match.c:923 +#: fortran/match.c:929 #, gcc-internal-format, gfc-internal-format msgid "Expected a step value in iterator at %C" msgstr "" -#: fortran/match.c:935 +#: fortran/match.c:941 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in iterator at %C" msgstr "" -#: fortran/match.c:1103 +#: fortran/match.c:1109 #, gcc-internal-format, gfc-internal-format msgid "gfc_match(): Bad match code %c" msgstr "" -#: fortran/match.c:1176 +#: fortran/match.c:1182 #, gcc-internal-format, gfc-internal-format msgid "Invalid form of PROGRAM statement at %C" msgstr "" -#: fortran/match.c:1306 fortran/match.c:1386 +#: fortran/match.c:1312 fortran/match.c:1392 #, gcc-internal-format, gfc-internal-format msgid "Arithmetic IF statement at %C" msgstr "" -#: fortran/match.c:1361 +#: fortran/match.c:1367 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in IF-expression at %C" msgstr "" -#: fortran/match.c:1372 +#: fortran/match.c:1378 #, gcc-internal-format, gfc-internal-format msgid "Block label not appropriate for arithmetic IF statement at %C" msgstr "" -#: fortran/match.c:1409 +#: fortran/match.c:1415 #, gcc-internal-format, gfc-internal-format msgid "Block label is not appropriate for IF statement at %C" msgstr "" -#: fortran/match.c:1497 +#: fortran/match.c:1503 #, gcc-internal-format, gfc-internal-format msgid "Cannot assign to a named constant at %C" msgstr "" -#: fortran/match.c:1507 +#: fortran/match.c:1513 #, gcc-internal-format, gfc-internal-format msgid "Unclassifiable statement in IF-clause at %C" msgstr "" -#: fortran/match.c:1514 +#: fortran/match.c:1520 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in IF-clause at %C" msgstr "" -#: fortran/match.c:1557 +#: fortran/match.c:1563 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after ELSE statement at %C" msgstr "" -#: fortran/match.c:1563 fortran/match.c:1598 +#: fortran/match.c:1569 fortran/match.c:1604 #, gcc-internal-format msgid "Label %qs at %C doesn't match IF label %qs" msgstr "" -#: fortran/match.c:1592 +#: fortran/match.c:1598 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after ELSE IF statement at %C" msgstr "" -#: fortran/match.c:1656 +#: fortran/match.c:1662 #, gcc-internal-format, gfc-internal-format msgid "Image control statement CRITICAL at %C in PURE procedure" msgstr "" -#: fortran/match.c:1662 +#: fortran/match.c:1668 #, gcc-internal-format, gfc-internal-format msgid "Image control statement CRITICAL at %C in DO CONCURRENT block" msgstr "" -#: fortran/match.c:1669 +#: fortran/match.c:1675 #, gcc-internal-format, gfc-internal-format msgid "CRITICAL statement at %C" msgstr "" -#: fortran/match.c:1681 +#: fortran/match.c:1687 #, gcc-internal-format, gfc-internal-format msgid "Nested CRITICAL block at %C" msgstr "" -#: fortran/match.c:1733 +#: fortran/match.c:1739 #, gcc-internal-format, gfc-internal-format msgid "Expected association list at %C" msgstr "" -#: fortran/match.c:1746 +#: fortran/match.c:1752 #, gcc-internal-format, gfc-internal-format msgid "Expected association at %C" msgstr "" -#: fortran/match.c:1755 +#: fortran/match.c:1761 #, gcc-internal-format msgid "Duplicate name %qs in association at %C" msgstr "" -#: fortran/match.c:1763 +#: fortran/match.c:1769 #, gcc-internal-format, gfc-internal-format msgid "Association target at %C must not be coindexed" msgstr "" -#: fortran/match.c:1781 +#: fortran/match.c:1787 #, gcc-internal-format msgid "Expected %<)%> or %<,%> at %C" msgstr "" -#: fortran/match.c:1799 +#: fortran/match.c:1805 #, gcc-internal-format, gfc-internal-format msgid "Junk after ASSOCIATE statement at %C" msgstr "" -#: fortran/match.c:1868 +#: fortran/match.c:1874 #, gcc-internal-format msgid "Derived type %qs at %L may not be ABSTRACT" msgstr "" -#: fortran/match.c:1931 +#: fortran/match.c:1937 #, gcc-internal-format, gfc-internal-format msgid "Invalid type-spec at %C" msgstr "" -#: fortran/match.c:2030 +#: fortran/match.c:2036 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in FORALL iterator at %C" msgstr "" -#: fortran/match.c:2295 +#: fortran/match.c:2301 #, gcc-internal-format, gfc-internal-format msgid "DO CONCURRENT construct at %C" msgstr "" -#: fortran/match.c:2420 +#: fortran/match.c:2426 #, gcc-internal-format msgid "Name %qs in %s statement at %C is unknown" msgstr "" -#: fortran/match.c:2428 +#: fortran/match.c:2434 #, gcc-internal-format msgid "Name %qs in %s statement at %C is not a construct name" msgstr "" -#: fortran/match.c:2440 +#: fortran/match.c:2446 #, gcc-internal-format, gfc-internal-format msgid "%s statement at %C leaves CRITICAL construct" msgstr "" #. F2008, C821 & C845. -#: fortran/match.c:2448 +#: fortran/match.c:2454 #, gcc-internal-format, gfc-internal-format msgid "%s statement at %C leaves DO CONCURRENT construct" msgstr "" -#: fortran/match.c:2460 +#: fortran/match.c:2466 #, gcc-internal-format, gfc-internal-format msgid "%s statement at %C is not within a construct" msgstr "" -#: fortran/match.c:2463 +#: fortran/match.c:2469 #, gcc-internal-format msgid "%s statement at %C is not within construct %qs" msgstr "" -#: fortran/match.c:2488 +#: fortran/match.c:2494 #, gcc-internal-format msgid "CYCLE statement at %C is not applicable to non-loop construct %qs" msgstr "" -#: fortran/match.c:2493 +#: fortran/match.c:2499 #, gcc-internal-format, gfc-internal-format msgid "EXIT statement with no do-construct-name at %C" msgstr "" -#: fortran/match.c:2499 +#: fortran/match.c:2505 #, gcc-internal-format msgid "%s statement at %C is not applicable to construct %qs" msgstr "" -#: fortran/match.c:2507 +#: fortran/match.c:2513 #, gcc-internal-format, gfc-internal-format msgid "%s statement at %C leaving OpenACC structured block" msgstr "" -#: fortran/match.c:2532 +#: fortran/match.c:2538 #, gcc-internal-format, gfc-internal-format msgid "EXIT statement at %C terminating !$ACC LOOP loop" msgstr "" -#: fortran/match.c:2537 +#: fortran/match.c:2543 #, gcc-internal-format, gfc-internal-format msgid "CYCLE statement at %C to non-innermost collapsed !$ACC LOOP loop" msgstr "" -#: fortran/match.c:2562 +#: fortran/match.c:2568 #, gcc-internal-format, gfc-internal-format msgid "EXIT statement at %C terminating !$OMP DO loop" msgstr "" -#: fortran/match.c:2567 +#: fortran/match.c:2573 #, gcc-internal-format, gfc-internal-format msgid "CYCLE statement at %C to non-innermost collapsed !$OMP DO loop" msgstr "" -#: fortran/match.c:2627 +#: fortran/match.c:2633 #, gcc-internal-format, gfc-internal-format msgid "%s statement at %C in PURE procedure" msgstr "" -#: fortran/match.c:2643 +#: fortran/match.c:2649 #, gcc-internal-format, gfc-internal-format msgid "Image control statement STOP at %C in CRITICAL block" msgstr "" -#: fortran/match.c:2648 +#: fortran/match.c:2654 #, gcc-internal-format, gfc-internal-format msgid "Image control statement STOP at %C in DO CONCURRENT block" msgstr "" -#: fortran/match.c:2656 +#: fortran/match.c:2662 #, gcc-internal-format, gfc-internal-format msgid "STOP code at %L must be either INTEGER or CHARACTER type" msgstr "" -#: fortran/match.c:2663 +#: fortran/match.c:2669 #, gcc-internal-format, gfc-internal-format msgid "STOP code at %L must be scalar" msgstr "" -#: fortran/match.c:2671 +#: fortran/match.c:2677 #, gcc-internal-format, gfc-internal-format msgid "STOP code at %L must be default character KIND=%d" msgstr "" -#: fortran/match.c:2679 +#: fortran/match.c:2685 #, gcc-internal-format, gfc-internal-format msgid "STOP code at %L must be default integer KIND=%d" msgstr "" -#: fortran/match.c:2725 +#: fortran/match.c:2731 #, gcc-internal-format, gfc-internal-format msgid "PAUSE statement at %C" msgstr "" -#: fortran/match.c:2746 +#: fortran/match.c:2752 #, gcc-internal-format, gfc-internal-format msgid "ERROR STOP statement at %C" msgstr "" -#: fortran/match.c:2772 +#: fortran/match.c:2778 #, gcc-internal-format, gfc-internal-format msgid "Image control statement EVENT %s at %C in PURE procedure" msgstr "" -#: fortran/match.c:2787 +#: fortran/match.c:2793 #, gcc-internal-format, gfc-internal-format msgid "Image control statement EVENT %s at %C in CRITICAL block" msgstr "" -#: fortran/match.c:2794 +#: fortran/match.c:2800 #, gcc-internal-format, gfc-internal-format msgid "Image control statement EVENT %s at %C in DO CONCURRENT block" msgstr "" -#: fortran/match.c:2824 fortran/match.c:3019 fortran/match.c:3231 -#: fortran/match.c:3741 fortran/match.c:4078 +#: fortran/match.c:2830 fortran/match.c:3025 fortran/match.c:3237 +#: fortran/match.c:3747 fortran/match.c:4084 #, gcc-internal-format, gfc-internal-format msgid "Redundant STAT tag found at %L " msgstr "" -#: fortran/match.c:2845 fortran/match.c:3040 fortran/match.c:3251 -#: fortran/match.c:3767 fortran/match.c:4103 +#: fortran/match.c:2851 fortran/match.c:3046 fortran/match.c:3257 +#: fortran/match.c:3773 fortran/match.c:4109 #, gcc-internal-format, gfc-internal-format msgid "Redundant ERRMSG tag found at %L " msgstr "" -#: fortran/match.c:2866 +#: fortran/match.c:2872 #, gcc-internal-format, gfc-internal-format msgid "Redundant UNTIL_COUNT tag found at %L " msgstr "" -#: fortran/match.c:2932 +#: fortran/match.c:2938 #, gcc-internal-format, gfc-internal-format msgid "EVENT POST statement at %C" msgstr "" -#: fortran/match.c:2942 +#: fortran/match.c:2948 #, gcc-internal-format, gfc-internal-format msgid "EVENT WAIT statement at %C" msgstr "" -#: fortran/match.c:2967 +#: fortran/match.c:2973 #, gcc-internal-format, gfc-internal-format msgid "Image control statement %s at %C in PURE procedure" msgstr "" -#: fortran/match.c:2982 +#: fortran/match.c:2988 #, gcc-internal-format, gfc-internal-format msgid "Image control statement %s at %C in CRITICAL block" msgstr "" -#: fortran/match.c:2989 +#: fortran/match.c:2995 #, gcc-internal-format, gfc-internal-format msgid "Image control statement %s at %C in DO CONCURRENT block" msgstr "" -#: fortran/match.c:3061 +#: fortran/match.c:3067 #, gcc-internal-format, gfc-internal-format msgid "Redundant ACQUIRED_LOCK tag found at %L " msgstr "" -#: fortran/match.c:3126 +#: fortran/match.c:3132 #, gcc-internal-format, gfc-internal-format msgid "LOCK statement at %C" msgstr "" -#: fortran/match.c:3136 +#: fortran/match.c:3142 #, gcc-internal-format, gfc-internal-format msgid "UNLOCK statement at %C" msgstr "" -#: fortran/match.c:3161 +#: fortran/match.c:3167 #, gcc-internal-format, gfc-internal-format msgid "Image control statement SYNC at %C in PURE procedure" msgstr "" -#: fortran/match.c:3167 +#: fortran/match.c:3173 #, gcc-internal-format, gfc-internal-format msgid "SYNC statement at %C" msgstr "" -#: fortran/match.c:3179 +#: fortran/match.c:3185 #, gcc-internal-format, gfc-internal-format msgid "Image control statement SYNC at %C in CRITICAL block" msgstr "" -#: fortran/match.c:3185 +#: fortran/match.c:3191 #, gcc-internal-format, gfc-internal-format msgid "Image control statement SYNC at %C in DO CONCURRENT block" msgstr "" -#: fortran/match.c:3365 +#: fortran/match.c:3371 #, gcc-internal-format, gfc-internal-format msgid "ASSIGN statement at %C" msgstr "" -#: fortran/match.c:3409 +#: fortran/match.c:3415 #, gcc-internal-format, gfc-internal-format msgid "Assigned GOTO statement at %C" msgstr "" -#: fortran/match.c:3453 fortran/match.c:3504 +#: fortran/match.c:3459 fortran/match.c:3510 #, gcc-internal-format, gfc-internal-format msgid "Statement label list in GOTO at %C cannot be empty" msgstr "" -#: fortran/match.c:3514 +#: fortran/match.c:3520 #, gcc-internal-format, gfc-internal-format msgid "Computed GOTO at %C" msgstr "" -#: fortran/match.c:3586 +#: fortran/match.c:3592 #, gcc-internal-format, gfc-internal-format msgid "Error in type-spec at %L" msgstr "" -#: fortran/match.c:3596 +#: fortran/match.c:3602 #, gcc-internal-format, gfc-internal-format msgid "typespec in ALLOCATE at %L" msgstr "" -#: fortran/match.c:3639 +#: fortran/match.c:3645 #, gcc-internal-format, gfc-internal-format msgid "Bad allocate-object at %C for a PURE procedure" msgstr "" -#: fortran/match.c:3663 +#: fortran/match.c:3669 #, gcc-internal-format, gfc-internal-format msgid "ALLOCATE of coarray at %C in DO CONCURRENT block" msgstr "" -#: fortran/match.c:3668 +#: fortran/match.c:3674 #, gcc-internal-format, gfc-internal-format msgid "ALLOCATE of coarray at %C in CRITICAL block" msgstr "" -#: fortran/match.c:3690 +#: fortran/match.c:3696 #, gcc-internal-format, gfc-internal-format msgid "" "Allocate-object at %L is neither a data pointer nor an allocatable variable" msgstr "" -#: fortran/match.c:3702 +#: fortran/match.c:3708 #, gcc-internal-format, gfc-internal-format msgid "Type of entity at %L is type incompatible with typespec" msgstr "" -#: fortran/match.c:3710 +#: fortran/match.c:3716 #, gcc-internal-format, gfc-internal-format msgid "" "Kind type parameter for entity at %L differs from the kind type parameter of " "the typespec" msgstr "" -#: fortran/match.c:3724 +#: fortran/match.c:3730 #, gcc-internal-format, gfc-internal-format msgid "Shape specification for allocatable scalar at %C" msgstr "" -#: fortran/match.c:3761 +#: fortran/match.c:3767 #, gcc-internal-format, gfc-internal-format msgid "ERRMSG tag at %L" msgstr "" -#: fortran/match.c:3784 +#: fortran/match.c:3790 #, gcc-internal-format, gfc-internal-format msgid "SOURCE tag at %L" msgstr "" -#: fortran/match.c:3790 +#: fortran/match.c:3796 #, gcc-internal-format, gfc-internal-format msgid "Redundant SOURCE tag found at %L " msgstr "" -#: fortran/match.c:3797 +#: fortran/match.c:3803 #, gcc-internal-format, gfc-internal-format msgid "SOURCE tag at %L conflicts with the typespec at %L" msgstr "" -#: fortran/match.c:3803 +#: fortran/match.c:3809 #, gcc-internal-format, gfc-internal-format msgid "SOURCE tag at %L with more than a single allocate object" msgstr "" -#: fortran/match.c:3821 +#: fortran/match.c:3827 #, gcc-internal-format, gfc-internal-format msgid "MOLD tag at %L" msgstr "" -#: fortran/match.c:3827 +#: fortran/match.c:3833 #, gcc-internal-format, gfc-internal-format msgid "Redundant MOLD tag found at %L " msgstr "" -#: fortran/match.c:3834 +#: fortran/match.c:3840 #, gcc-internal-format, gfc-internal-format msgid "MOLD tag at %L conflicts with the typespec at %L" msgstr "" -#: fortran/match.c:3860 +#: fortran/match.c:3866 #, gcc-internal-format, gfc-internal-format msgid "MOLD tag at %L conflicts with SOURCE tag at %L" msgstr "" -#: fortran/match.c:3868 +#: fortran/match.c:3874 #, gcc-internal-format, gfc-internal-format msgid "" "Allocate-object at %L with a deferred type parameter requires either a type-" "spec or SOURCE tag or a MOLD tag" msgstr "" -#: fortran/match.c:3880 +#: fortran/match.c:3886 #, gcc-internal-format, gfc-internal-format msgid "" "Unlimited polymorphic allocate-object at %L requires either a type-spec or " "SOURCE tag or a MOLD tag" msgstr "" -#: fortran/match.c:3942 +#: fortran/match.c:3948 #, gcc-internal-format, gfc-internal-format msgid "Pointer object at %C shall not be coindexed" msgstr "" -#: fortran/match.c:4028 +#: fortran/match.c:4034 #, gcc-internal-format, gfc-internal-format msgid "Illegal allocate-object at %C for a PURE procedure" msgstr "" -#: fortran/match.c:4038 +#: fortran/match.c:4044 #, gcc-internal-format, gfc-internal-format msgid "DEALLOCATE of coarray at %C in DO CONCURRENT block" msgstr "" -#: fortran/match.c:4045 +#: fortran/match.c:4051 #, gcc-internal-format, gfc-internal-format msgid "DEALLOCATE of coarray at %C in CRITICAL block" msgstr "" -#: fortran/match.c:4061 +#: fortran/match.c:4067 #, gcc-internal-format, gfc-internal-format msgid "" "Allocate-object at %C is not a nonprocedure pointer nor an allocatable " "variable" msgstr "" -#: fortran/match.c:4098 +#: fortran/match.c:4104 #, gcc-internal-format, gfc-internal-format msgid "ERRMSG at %L" msgstr "" -#: fortran/match.c:4155 +#: fortran/match.c:4161 #, gcc-internal-format, gfc-internal-format msgid "Image control statement RETURN at %C in CRITICAL block" msgstr "" -#: fortran/match.c:4161 +#: fortran/match.c:4167 #, gcc-internal-format, gfc-internal-format msgid "Image control statement RETURN at %C in DO CONCURRENT block" msgstr "" -#: fortran/match.c:4170 +#: fortran/match.c:4176 #, gcc-internal-format, gfc-internal-format msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE" msgstr "" -#: fortran/match.c:4201 +#: fortran/match.c:4207 #, gcc-internal-format, gfc-internal-format msgid "RETURN statement in main program at %C" msgstr "" -#: fortran/match.c:4229 +#: fortran/match.c:4235 #, gcc-internal-format, gfc-internal-format msgid "Expected component reference at %C" msgstr "" -#: fortran/match.c:4238 +#: fortran/match.c:4244 #, gcc-internal-format, gfc-internal-format msgid "Junk after CALL at %C" msgstr "" -#: fortran/match.c:4249 +#: fortran/match.c:4255 #, gcc-internal-format, gfc-internal-format msgid "Expected type-bound procedure or procedure pointer component at %C" msgstr "" -#: fortran/match.c:4470 +#: fortran/match.c:4476 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in common block name at %C" msgstr "" @@ -52738,169 +52891,169 @@ msgstr "" #. If we find an error, just print it and continue, #. cause it's just semantic, and we can see if there #. are more errors. -#: fortran/match.c:4537 +#: fortran/match.c:4543 #, gcc-internal-format msgid "" "Variable %qs at %L in common block %qs at %C must be declared with a C " "interoperable kind since common block %qs is bind(c)" msgstr "" -#: fortran/match.c:4546 +#: fortran/match.c:4552 #, gcc-internal-format msgid "" "Variable %qs in common block %qs at %C can not be bind(c) since it is not " "global" msgstr "" -#: fortran/match.c:4553 +#: fortran/match.c:4559 #, gcc-internal-format msgid "Symbol %qs at %C is already in a COMMON block" msgstr "" -#: fortran/match.c:4561 +#: fortran/match.c:4567 #, gcc-internal-format msgid "Initialized symbol %qs at %C can only be COMMON in BLOCK DATA" msgstr "" -#: fortran/match.c:4577 +#: fortran/match.c:4583 #, gcc-internal-format msgid "Array specification for symbol %qs in COMMON at %C must be explicit" msgstr "" -#: fortran/match.c:4587 +#: fortran/match.c:4593 #, gcc-internal-format msgid "Symbol %qs in COMMON at %C cannot be a POINTER array" msgstr "" -#: fortran/match.c:4633 +#: fortran/match.c:4639 #, gcc-internal-format msgid "" "Symbol %qs, in COMMON block %qs at %C is being indirectly equivalenced to " "another COMMON block %qs" msgstr "" -#: fortran/match.c:4761 +#: fortran/match.c:4767 #, gcc-internal-format msgid "Namelist group name %qs at %C already has a basic type of %s" msgstr "" -#: fortran/match.c:4769 +#: fortran/match.c:4775 #, gcc-internal-format msgid "" "Namelist group name %qs at %C already is USE associated and cannot be " "respecified." msgstr "" -#: fortran/match.c:4795 +#: fortran/match.c:4801 #, gcc-internal-format msgid "Assumed size array %qs in namelist %qs at %C is not allowed" msgstr "" -#: fortran/match.c:4929 +#: fortran/match.c:4935 #, gcc-internal-format, gfc-internal-format msgid "Derived type component %C is not a permitted EQUIVALENCE member" msgstr "" -#: fortran/match.c:4937 +#: fortran/match.c:4943 #, gcc-internal-format, gfc-internal-format msgid "Array reference in EQUIVALENCE at %C cannot be an array section" msgstr "" -#: fortran/match.c:4965 +#: fortran/match.c:4971 #, gcc-internal-format, gfc-internal-format msgid "EQUIVALENCE at %C requires two or more objects" msgstr "" -#: fortran/match.c:4979 +#: fortran/match.c:4985 #, gcc-internal-format, gfc-internal-format msgid "" "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C" msgstr "" -#: fortran/match.c:4992 +#: fortran/match.c:4998 #, gcc-internal-format, gfc-internal-format msgid "Expecting a comma in EQUIVALENCE at %C" msgstr "" -#: fortran/match.c:5108 +#: fortran/match.c:5114 #, gcc-internal-format, gfc-internal-format msgid "Statement function at %L is recursive" msgstr "" -#: fortran/match.c:5118 +#: fortran/match.c:5124 #, gcc-internal-format, gfc-internal-format msgid "Statement function at %L cannot appear within an INTERFACE" msgstr "" -#: fortran/match.c:5123 +#: fortran/match.c:5129 #, gcc-internal-format, gfc-internal-format msgid "Statement function at %C" msgstr "" -#: fortran/match.c:5248 fortran/match.c:5264 +#: fortran/match.c:5254 fortran/match.c:5270 #, gcc-internal-format, gfc-internal-format msgid "Expression in CASE selector at %L cannot be %s" msgstr "" -#: fortran/match.c:5286 +#: fortran/match.c:5292 #, gcc-internal-format, gfc-internal-format msgid "Expected initialization expression in CASE at %C" msgstr "" -#: fortran/match.c:5318 +#: fortran/match.c:5324 #, gcc-internal-format msgid "Expected block name %qs of SELECT construct at %C" msgstr "" -#: fortran/match.c:5598 +#: fortran/match.c:5604 #, gcc-internal-format, gfc-internal-format msgid "parse error in SELECT TYPE statement at %C" msgstr "" -#: fortran/match.c:5622 +#: fortran/match.c:5628 #, gcc-internal-format, gfc-internal-format msgid "" "Selector in SELECT TYPE at %C is not a named variable; use associate-name=>" msgstr "" -#: fortran/match.c:5656 +#: fortran/match.c:5662 #, gcc-internal-format, gfc-internal-format msgid "Unexpected CASE statement at %C" msgstr "" -#: fortran/match.c:5708 +#: fortran/match.c:5714 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in CASE specification at %C" msgstr "" -#: fortran/match.c:5726 +#: fortran/match.c:5732 #, gcc-internal-format, gfc-internal-format msgid "Unexpected TYPE IS statement at %C" msgstr "" -#: fortran/match.c:5758 +#: fortran/match.c:5764 #, gcc-internal-format, gfc-internal-format msgid "" "The type-spec shall not specify a sequence derived type or a type with the " "BIND attribute in SELECT TYPE at %C [F2003:C815]" msgstr "" -#: fortran/match.c:5770 +#: fortran/match.c:5776 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in TYPE IS specification at %C" msgstr "" -#: fortran/match.c:5846 +#: fortran/match.c:5852 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in CLASS IS specification at %C" msgstr "" -#: fortran/match.c:5964 +#: fortran/match.c:5970 #, gcc-internal-format, gfc-internal-format msgid "ELSEWHERE statement at %C not enclosed in WHERE block" msgstr "" -#: fortran/match.c:6002 +#: fortran/match.c:6008 #, gcc-internal-format msgid "Label %qs at %C doesn't match WHERE label %qs" msgstr "" @@ -53239,899 +53392,899 @@ msgstr "" msgid "Can't USE the same %smodule we're building!" msgstr "" -#: fortran/openmp.c:287 fortran/openmp.c:495 fortran/openmp.c:2397 -#: fortran/openmp.c:2471 +#: fortran/openmp.c:289 fortran/openmp.c:497 fortran/openmp.c:2399 +#: fortran/openmp.c:2473 #, gcc-internal-format, gfc-internal-format msgid "COMMON block /%s/ not found at %C" msgstr "" -#: fortran/openmp.c:326 +#: fortran/openmp.c:328 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in OpenMP variable list at %C" msgstr "" -#: fortran/openmp.c:388 +#: fortran/openmp.c:390 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in OpenACC expression list at %C" msgstr "" -#: fortran/openmp.c:463 +#: fortran/openmp.c:465 #, gcc-internal-format, gfc-internal-format msgid "Variable at %C is an element of a COMMON block" msgstr "" -#: fortran/openmp.c:523 +#: fortran/openmp.c:525 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after !$ACC DECLARE at %C" msgstr "" -#: fortran/openmp.c:533 +#: fortran/openmp.c:535 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !$ACC DECLARE list at %C" msgstr "" -#: fortran/openmp.c:989 +#: fortran/openmp.c:991 #, gcc-internal-format, gfc-internal-format msgid "!$OMP DECLARE REDUCTION %s not found at %L" msgstr "" -#: fortran/openmp.c:1089 +#: fortran/openmp.c:1091 #, gcc-internal-format, gfc-internal-format msgid "COLLAPSE clause argument not constant positive integer at %C" msgstr "" -#: fortran/openmp.c:1474 +#: fortran/openmp.c:1476 #, gcc-internal-format, gfc-internal-format msgid "Invalid clause in module with $!ACC DECLARE at %L" msgstr "" -#: fortran/openmp.c:1484 +#: fortran/openmp.c:1486 #, gcc-internal-format, gfc-internal-format msgid "Variable is USE-associated with $!ACC DECLARE at %L" msgstr "" -#: fortran/openmp.c:1492 +#: fortran/openmp.c:1494 #, gcc-internal-format, gfc-internal-format msgid "Assumed-size dummy array with $!ACC DECLARE at %L" msgstr "" -#: fortran/openmp.c:1539 +#: fortran/openmp.c:1541 #, gcc-internal-format msgid "" "%<acc update%> must contain at least one %<device%> or %<host%> or %<self%> " "clause at %L" msgstr "" -#: fortran/openmp.c:1589 +#: fortran/openmp.c:1591 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk in !$ACC WAIT at %C" msgstr "" -#: fortran/openmp.c:1598 +#: fortran/openmp.c:1600 #, gcc-internal-format, gfc-internal-format msgid "Invalid argument to $!ACC WAIT at %L" msgstr "" -#: fortran/openmp.c:1607 +#: fortran/openmp.c:1609 #, gcc-internal-format, gfc-internal-format msgid "WAIT clause at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.c:1636 +#: fortran/openmp.c:1638 #, gcc-internal-format, gfc-internal-format msgid "ACC CACHE directive must be inside of loop %C" msgstr "" -#: fortran/openmp.c:1667 +#: fortran/openmp.c:1669 #, gcc-internal-format msgid "Multiple loop axes specified for routine" msgstr "" -#: fortran/openmp.c:1693 +#: fortran/openmp.c:1695 #, gcc-internal-format, gfc-internal-format msgid "" "Only the !$ACC ROUTINE form without list is allowed in interface block at %C" msgstr "" -#: fortran/openmp.c:1720 +#: fortran/openmp.c:1722 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !$ACC ROUTINE ( NAME ) at %C, invalid function name %s" msgstr "" -#: fortran/openmp.c:1729 +#: fortran/openmp.c:1731 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !$ACC ROUTINE ( NAME ) at %C" msgstr "" -#: fortran/openmp.c:1736 +#: fortran/openmp.c:1738 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !$ACC ROUTINE ( NAME ) at %C, expecting ')' after NAME" msgstr "" -#: fortran/openmp.c:1842 +#: fortran/openmp.c:1844 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP CRITICAL statement at %C" msgstr "" -#: fortran/openmp.c:1907 +#: fortran/openmp.c:1909 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP FLUSH statement at %C" msgstr "" -#: fortran/openmp.c:2290 fortran/openmp.c:5149 +#: fortran/openmp.c:2292 fortran/openmp.c:5151 #, gcc-internal-format, gfc-internal-format msgid "Redefinition of predefined %s !$OMP DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.c:2294 fortran/openmp.c:5153 +#: fortran/openmp.c:2296 fortran/openmp.c:5155 #, gcc-internal-format, gfc-internal-format msgid "Redefinition of predefined !$OMP DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.c:2299 +#: fortran/openmp.c:2301 #, gcc-internal-format, gfc-internal-format msgid "Redefinition of !$OMP DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.c:2301 +#: fortran/openmp.c:2303 #, gcc-internal-format, gfc-internal-format msgid "Previous !$OMP DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.c:2321 +#: fortran/openmp.c:2323 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after !$OMP DECLARE REDUCTION at %C" msgstr "" -#: fortran/openmp.c:2350 +#: fortran/openmp.c:2352 #, gcc-internal-format, gfc-internal-format msgid "" "Only the !$OMP DECLARE TARGET form without list is allowed in interface " "block at %C" msgstr "" -#: fortran/openmp.c:2376 +#: fortran/openmp.c:2378 #, gcc-internal-format, gfc-internal-format msgid "OMP DECLARE TARGET on a variable at %C is an element of a COMMON block" msgstr "" -#: fortran/openmp.c:2415 +#: fortran/openmp.c:2417 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after !$OMP DECLARE TARGET at %C" msgstr "" -#: fortran/openmp.c:2421 +#: fortran/openmp.c:2423 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !$OMP DECLARE TARGET list at %C" msgstr "" -#: fortran/openmp.c:2451 +#: fortran/openmp.c:2453 #, gcc-internal-format, gfc-internal-format msgid "Threadprivate variable at %C is an element of a COMMON block" msgstr "" -#: fortran/openmp.c:2488 +#: fortran/openmp.c:2490 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after OMP THREADPRIVATE at %C" msgstr "" -#: fortran/openmp.c:2495 +#: fortran/openmp.c:2497 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in !$OMP THREADPRIVATE list at %C" msgstr "" -#: fortran/openmp.c:2576 +#: fortran/openmp.c:2578 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after TASKWAIT clause at %C" msgstr "" -#: fortran/openmp.c:2590 +#: fortran/openmp.c:2592 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after TASKYIELD clause at %C" msgstr "" -#: fortran/openmp.c:2715 +#: fortran/openmp.c:2717 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP WORKSHARE statement at %C" msgstr "" -#: fortran/openmp.c:2729 +#: fortran/openmp.c:2731 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP MASTER statement at %C" msgstr "" -#: fortran/openmp.c:2743 +#: fortran/openmp.c:2745 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP ORDERED statement at %C" msgstr "" -#: fortran/openmp.c:2788 +#: fortran/openmp.c:2790 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP ATOMIC statement at %C" msgstr "" -#: fortran/openmp.c:2815 +#: fortran/openmp.c:2817 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP BARRIER statement at %C" msgstr "" -#: fortran/openmp.c:2829 +#: fortran/openmp.c:2831 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP TASKGROUP statement at %C" msgstr "" -#: fortran/openmp.c:2879 +#: fortran/openmp.c:2881 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after $OMP CANCELLATION POINT statement at %C" msgstr "" -#: fortran/openmp.c:2899 +#: fortran/openmp.c:2901 #, gcc-internal-format, gfc-internal-format msgid "Unexpected junk after NOWAIT clause at %C" msgstr "" -#: fortran/openmp.c:2939 +#: fortran/openmp.c:2941 #, gcc-internal-format, gfc-internal-format msgid "%s clause at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.c:2950 +#: fortran/openmp.c:2952 #, gcc-internal-format, gfc-internal-format msgid "INTEGER expression of %s clause at %L must be positive" msgstr "" -#: fortran/openmp.c:2961 +#: fortran/openmp.c:2963 #, gcc-internal-format msgid "POINTER object %qs of derived type in %s clause at %L" msgstr "" -#: fortran/openmp.c:2964 +#: fortran/openmp.c:2966 #, gcc-internal-format msgid "Cray pointer object of derived type %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:2967 +#: fortran/openmp.c:2969 #, gcc-internal-format msgid "Cray pointee object of derived type %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:2973 +#: fortran/openmp.c:2975 #, gcc-internal-format msgid "POINTER object %qs of polymorphic type in %s clause at %L" msgstr "" -#: fortran/openmp.c:2978 +#: fortran/openmp.c:2980 #, gcc-internal-format msgid "Cray pointer object of polymorphic type %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:2983 +#: fortran/openmp.c:2985 #, gcc-internal-format msgid "Cray pointee object of polymorphic type %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:2993 fortran/openmp.c:3519 +#: fortran/openmp.c:2995 fortran/openmp.c:3521 #, gcc-internal-format msgid "Assumed size array %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:2996 +#: fortran/openmp.c:2998 #, gcc-internal-format msgid "Assumed rank array %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3000 +#: fortran/openmp.c:3002 #, gcc-internal-format msgid "Noncontiguous deferred shape array %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3008 +#: fortran/openmp.c:3010 #, gcc-internal-format msgid "ALLOCATABLE object %qs of derived type in %s clause at %L" msgstr "" -#: fortran/openmp.c:3013 +#: fortran/openmp.c:3015 #, gcc-internal-format msgid "ALLOCATABLE object %qs of polymorphic type in %s clause at %L" msgstr "" -#: fortran/openmp.c:3025 fortran/openmp.c:3509 fortran/openmp.c:3682 +#: fortran/openmp.c:3027 fortran/openmp.c:3511 fortran/openmp.c:3684 #, gcc-internal-format msgid "POINTER object %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3030 fortran/openmp.c:3685 +#: fortran/openmp.c:3032 fortran/openmp.c:3687 #, gcc-internal-format msgid "Cray pointer object %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3035 fortran/openmp.c:3688 +#: fortran/openmp.c:3037 fortran/openmp.c:3690 #, gcc-internal-format msgid "Cray pointee object %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3040 fortran/openmp.c:3677 +#: fortran/openmp.c:3042 fortran/openmp.c:3679 #, gcc-internal-format msgid "ALLOCATABLE object %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3043 +#: fortran/openmp.c:3045 #, gcc-internal-format msgid "VALUE object %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3086 +#: fortran/openmp.c:3088 #, gcc-internal-format, gfc-internal-format msgid "Implicitly declared function %s used in !$OMP DECLARE REDUCTION at %L " msgstr "" -#: fortran/openmp.c:3135 +#: fortran/openmp.c:3137 #, gcc-internal-format, gfc-internal-format msgid "" "Implicitly declared subroutine %s used in !$OMP DECLARE REDUCTION at %L " msgstr "" -#: fortran/openmp.c:3169 fortran/resolve.c:9384 fortran/resolve.c:10606 +#: fortran/openmp.c:3171 fortran/resolve.c:9395 fortran/resolve.c:10617 #, gcc-internal-format, gfc-internal-format msgid "IF clause at %L requires a scalar LOGICAL expression" msgstr "" -#: fortran/openmp.c:3177 +#: fortran/openmp.c:3179 #, gcc-internal-format, gfc-internal-format msgid "FINAL clause at %L requires a scalar LOGICAL expression" msgstr "" -#: fortran/openmp.c:3185 +#: fortran/openmp.c:3187 #, gcc-internal-format, gfc-internal-format msgid "NUM_THREADS clause at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.c:3193 +#: fortran/openmp.c:3195 #, gcc-internal-format, gfc-internal-format msgid "SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.c:3208 +#: fortran/openmp.c:3210 #, gcc-internal-format msgid "Variable %qs is not a dummy argument at %L" msgstr "" -#: fortran/openmp.c:3240 +#: fortran/openmp.c:3242 #, gcc-internal-format msgid "Object %qs is not a variable at %L" msgstr "" -#: fortran/openmp.c:3256 fortran/openmp.c:3267 fortran/openmp.c:3275 -#: fortran/openmp.c:3286 fortran/openmp.c:3298 fortran/openmp.c:3313 -#: fortran/openmp.c:4956 +#: fortran/openmp.c:3258 fortran/openmp.c:3269 fortran/openmp.c:3277 +#: fortran/openmp.c:3288 fortran/openmp.c:3300 fortran/openmp.c:3315 +#: fortran/openmp.c:4958 #, gcc-internal-format msgid "Symbol %qs present on multiple clauses at %L" msgstr "" -#: fortran/openmp.c:3320 +#: fortran/openmp.c:3322 #, gcc-internal-format msgid "Array %qs is not permitted in reduction at %L" msgstr "" -#: fortran/openmp.c:3333 +#: fortran/openmp.c:3335 #, gcc-internal-format msgid "Symbol %qs present on both FROM and TO clauses at %L" msgstr "" -#: fortran/openmp.c:3355 +#: fortran/openmp.c:3357 #, gcc-internal-format msgid "Non-THREADPRIVATE object %qs in COPYIN clause at %L" msgstr "" -#: fortran/openmp.c:3363 +#: fortran/openmp.c:3365 #, gcc-internal-format msgid "Assumed size array %qs in COPYPRIVATE clause at %L" msgstr "" -#: fortran/openmp.c:3366 +#: fortran/openmp.c:3368 #, gcc-internal-format msgid "INTENT(IN) POINTER %qs in COPYPRIVATE clause at %L" msgstr "" -#: fortran/openmp.c:3374 +#: fortran/openmp.c:3376 #, gcc-internal-format msgid "THREADPRIVATE object %qs in SHARED clause at %L" msgstr "" -#: fortran/openmp.c:3377 +#: fortran/openmp.c:3379 #, gcc-internal-format msgid "Cray pointee %qs in SHARED clause at %L" msgstr "" -#: fortran/openmp.c:3380 +#: fortran/openmp.c:3382 #, gcc-internal-format msgid "ASSOCIATE name %qs in SHARED clause at %L" msgstr "" -#: fortran/openmp.c:3395 +#: fortran/openmp.c:3397 #, gcc-internal-format msgid "" "%qs in ALIGNED clause must be POINTER, ALLOCATABLE, Cray pointer or C_PTR at " "%L" msgstr "" -#: fortran/openmp.c:3407 +#: fortran/openmp.c:3409 #, gcc-internal-format msgid "" "%qs in ALIGNED clause at %L requires a scalar positive constant integer " "alignment expression" msgstr "" -#: fortran/openmp.c:3427 fortran/openmp.c:3448 +#: fortran/openmp.c:3429 fortran/openmp.c:3450 #, gcc-internal-format msgid "%qs in %s clause at %L is not a proper array section" msgstr "" -#: fortran/openmp.c:3431 +#: fortran/openmp.c:3433 #, gcc-internal-format, gfc-internal-format msgid "Coarrays not supported in %s clause at %L" msgstr "" -#: fortran/openmp.c:3440 +#: fortran/openmp.c:3442 #, gcc-internal-format, gfc-internal-format msgid "Stride should not be specified for array section in %s clause at %L" msgstr "" -#: fortran/openmp.c:3461 +#: fortran/openmp.c:3463 #, gcc-internal-format msgid "%qs in DEPEND clause at %L is a zero size array section" msgstr "" -#: fortran/openmp.c:3483 fortran/openmp.c:3495 +#: fortran/openmp.c:3485 fortran/openmp.c:3497 #, gcc-internal-format msgid "THREADPRIVATE object %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3486 fortran/openmp.c:3498 +#: fortran/openmp.c:3488 fortran/openmp.c:3500 #, gcc-internal-format msgid "Cray pointee %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3501 +#: fortran/openmp.c:3503 #, gcc-internal-format msgid "ASSOCIATE name %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3506 +#: fortran/openmp.c:3508 #, gcc-internal-format msgid "Procedure pointer %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3512 +#: fortran/openmp.c:3514 #, gcc-internal-format msgid "Cray pointer %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3522 +#: fortran/openmp.c:3524 #, gcc-internal-format msgid "Variable %qs in %s clause is used in NAMELIST statement at %L" msgstr "" #. case OMP_LIST_REDUCTION: -#: fortran/openmp.c:3532 +#: fortran/openmp.c:3534 #, gcc-internal-format msgid "INTENT(IN) POINTER %qs in %s clause at %L" msgstr "" -#: fortran/openmp.c:3625 +#: fortran/openmp.c:3627 #, gcc-internal-format, gfc-internal-format msgid "!$OMP DECLARE REDUCTION %s not found for type %s at %L" msgstr "" -#: fortran/openmp.c:3648 +#: fortran/openmp.c:3650 #, gcc-internal-format msgid "LINEAR variable %qs must be INTEGER at %L" msgstr "" -#: fortran/openmp.c:3651 +#: fortran/openmp.c:3653 #, gcc-internal-format msgid "LINEAR dummy argument %qs must have VALUE attribute at %L" msgstr "" -#: fortran/openmp.c:3659 +#: fortran/openmp.c:3661 #, gcc-internal-format msgid "" "%qs in LINEAR clause at %L requires a scalar integer linear-step expression" msgstr "" -#: fortran/openmp.c:3663 +#: fortran/openmp.c:3665 #, gcc-internal-format msgid "" "%qs in LINEAR clause at %L requires a constant integer linear-step expression" msgstr "" -#: fortran/openmp.c:3707 +#: fortran/openmp.c:3709 #, gcc-internal-format, gfc-internal-format msgid "SAFELEN clause at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.c:3715 +#: fortran/openmp.c:3717 #, gcc-internal-format, gfc-internal-format msgid "SIMDLEN clause at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.c:3723 +#: fortran/openmp.c:3725 #, gcc-internal-format, gfc-internal-format msgid "NUM_TEAMS clause at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.c:3731 +#: fortran/openmp.c:3733 #, gcc-internal-format, gfc-internal-format msgid "DEVICE clause at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.c:3739 +#: fortran/openmp.c:3741 #, gcc-internal-format, gfc-internal-format msgid "" "DIST_SCHEDULE clause's chunk_size at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.c:3747 +#: fortran/openmp.c:3749 #, gcc-internal-format, gfc-internal-format msgid "THREAD_LIMIT clause at %L requires a scalar INTEGER expression" msgstr "" -#: fortran/openmp.c:3875 +#: fortran/openmp.c:3877 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L" msgstr "" -#: fortran/openmp.c:3900 +#: fortran/openmp.c:3902 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC READ statement must read from a scalar variable of intrinsic " "type at %L" msgstr "" -#: fortran/openmp.c:3905 +#: fortran/openmp.c:3907 #, gcc-internal-format, gfc-internal-format msgid "" "expr in !$OMP ATOMIC WRITE assignment var = expr must be scalar and cannot " "reference var at %L" msgstr "" -#: fortran/openmp.c:3927 fortran/openmp.c:4218 +#: fortran/openmp.c:3929 fortran/openmp.c:4220 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC CAPTURE capture statement must read from a scalar variable of " "intrinsic type at %L" msgstr "" -#: fortran/openmp.c:3942 +#: fortran/openmp.c:3944 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC CAPTURE update statement must set a scalar variable of " "intrinsic type at %L" msgstr "" -#: fortran/openmp.c:3949 fortran/openmp.c:4225 +#: fortran/openmp.c:3951 fortran/openmp.c:4227 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC CAPTURE capture statement reads from different variable than " "update statement writes into at %L" msgstr "" -#: fortran/openmp.c:3965 +#: fortran/openmp.c:3967 #, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC with ALLOCATABLE variable at %L" msgstr "" -#: fortran/openmp.c:4007 +#: fortran/openmp.c:4009 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC assignment operator must be binary +, *, -, /, .AND., .OR., ." "EQV. or .NEQV. at %L" msgstr "" -#: fortran/openmp.c:4055 +#: fortran/openmp.c:4057 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC assignment must be var = var op expr or var = expr op var at %L" msgstr "" -#: fortran/openmp.c:4069 +#: fortran/openmp.c:4071 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC var = var op expr not mathematically equivalent to var = var op " "(expr) at %L" msgstr "" -#: fortran/openmp.c:4101 +#: fortran/openmp.c:4103 #, gcc-internal-format, gfc-internal-format msgid "" "expr in !$OMP ATOMIC assignment var = var op expr must be scalar and cannot " "reference var at %L" msgstr "" -#: fortran/openmp.c:4125 +#: fortran/openmp.c:4127 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC assignment intrinsic IAND, IOR or IEOR must have two arguments " "at %L" msgstr "" -#: fortran/openmp.c:4132 +#: fortran/openmp.c:4134 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC assignment intrinsic must be MIN, MAX, IAND, IOR or IEOR at %L" msgstr "" -#: fortran/openmp.c:4149 +#: fortran/openmp.c:4151 #, gcc-internal-format msgid "" "!$OMP ATOMIC intrinsic arguments except one must not reference %qs at %L" msgstr "" -#: fortran/openmp.c:4156 +#: fortran/openmp.c:4158 #, gcc-internal-format, gfc-internal-format msgid "!$OMP ATOMIC intrinsic arguments must be scalar at %L" msgstr "" -#: fortran/openmp.c:4164 +#: fortran/openmp.c:4166 #, gcc-internal-format msgid "First or last !$OMP ATOMIC intrinsic argument must be %qs at %L" msgstr "" -#: fortran/openmp.c:4182 +#: fortran/openmp.c:4184 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC assignment must have an operator or intrinsic on right hand " "side at %L" msgstr "" -#: fortran/openmp.c:4196 +#: fortran/openmp.c:4198 #, gcc-internal-format, gfc-internal-format msgid "" "!$OMP ATOMIC CAPTURE capture statement must set a scalar variable of " "intrinsic type at %L" msgstr "" -#: fortran/openmp.c:4473 +#: fortran/openmp.c:4475 #, gcc-internal-format, gfc-internal-format msgid "%s cannot be a DO WHILE or DO without loop control at %L" msgstr "" -#: fortran/openmp.c:4479 +#: fortran/openmp.c:4481 #, gcc-internal-format, gfc-internal-format msgid "%s cannot be a DO CONCURRENT loop at %L" msgstr "" -#: fortran/openmp.c:4485 +#: fortran/openmp.c:4487 #, gcc-internal-format, gfc-internal-format msgid "%s iteration variable must be of type integer at %L" msgstr "" -#: fortran/openmp.c:4489 +#: fortran/openmp.c:4491 #, gcc-internal-format, gfc-internal-format msgid "%s iteration variable must not be THREADPRIVATE at %L" msgstr "" -#: fortran/openmp.c:4502 +#: fortran/openmp.c:4504 #, gcc-internal-format, gfc-internal-format msgid "" "%s iteration variable present on clause other than PRIVATE or LASTPRIVATE at " "%L" msgstr "" -#: fortran/openmp.c:4506 +#: fortran/openmp.c:4508 #, gcc-internal-format, gfc-internal-format msgid "%s iteration variable present on clause other than LASTPRIVATE at %L" msgstr "" -#: fortran/openmp.c:4510 +#: fortran/openmp.c:4512 #, gcc-internal-format, gfc-internal-format msgid "%s iteration variable present on clause other than LINEAR at %L" msgstr "" -#: fortran/openmp.c:4528 +#: fortran/openmp.c:4530 #, gcc-internal-format, gfc-internal-format msgid "%s collapsed loops don't form rectangular iteration space at %L" msgstr "" -#: fortran/openmp.c:4542 +#: fortran/openmp.c:4544 #, gcc-internal-format, gfc-internal-format msgid "collapsed %s loops not perfectly nested at %L" msgstr "" -#: fortran/openmp.c:4551 fortran/openmp.c:4559 +#: fortran/openmp.c:4553 fortran/openmp.c:4561 #, gcc-internal-format, gfc-internal-format msgid "not enough DO loops for collapsed %s at %L" msgstr "" -#: fortran/openmp.c:4643 fortran/openmp.c:4656 +#: fortran/openmp.c:4645 fortran/openmp.c:4658 #, gcc-internal-format, gfc-internal-format msgid "The %s directive cannot be specified within a %s region at %L" msgstr "" -#: fortran/openmp.c:4675 +#: fortran/openmp.c:4677 #, gcc-internal-format, gfc-internal-format msgid "!$ACC LOOP cannot be a DO WHILE or DO without loop control at %L" msgstr "" -#: fortran/openmp.c:4681 +#: fortran/openmp.c:4683 #, gcc-internal-format, gfc-internal-format msgid "!$ACC LOOP iteration variable must be of type integer at %L" msgstr "" -#: fortran/openmp.c:4697 +#: fortran/openmp.c:4699 #, gcc-internal-format, gfc-internal-format msgid "!$ACC LOOP %s loops don't form rectangular iteration space at %L" msgstr "" -#: fortran/openmp.c:4711 +#: fortran/openmp.c:4713 #, gcc-internal-format, gfc-internal-format msgid "%s !$ACC LOOP loops not perfectly nested at %L" msgstr "" -#: fortran/openmp.c:4721 fortran/openmp.c:4730 +#: fortran/openmp.c:4723 fortran/openmp.c:4732 #, gcc-internal-format, gfc-internal-format msgid "not enough DO loops for %s !$ACC LOOP at %L" msgstr "" -#: fortran/openmp.c:4745 fortran/openmp.c:4752 +#: fortran/openmp.c:4747 fortran/openmp.c:4754 #, gcc-internal-format, gfc-internal-format msgid "!$ACC LOOP %s in PARALLEL region doesn't allow %s arguments at %L" msgstr "" -#: fortran/openmp.c:4774 +#: fortran/openmp.c:4776 #, gcc-internal-format, gfc-internal-format msgid "" "Loop parallelized across gangs is not allowed inside another loop " "parallelized across gangs at %L" msgstr "" -#: fortran/openmp.c:4778 fortran/openmp.c:4782 +#: fortran/openmp.c:4780 fortran/openmp.c:4784 #, gcc-internal-format, gfc-internal-format msgid "" "Loop parallelized across gangs is not allowed inside loop parallelized " "across workers at %L" msgstr "" -#: fortran/openmp.c:4789 +#: fortran/openmp.c:4791 #, gcc-internal-format, gfc-internal-format msgid "" "Loop parallelized across workers is not allowed inside another loop " "parallelized across workers at %L" msgstr "" -#: fortran/openmp.c:4793 +#: fortran/openmp.c:4795 #, gcc-internal-format, gfc-internal-format msgid "" "Loop parallelized across workers is not allowed inside another loop " "parallelized across vectors at %L" msgstr "" -#: fortran/openmp.c:4799 +#: fortran/openmp.c:4801 #, gcc-internal-format, gfc-internal-format msgid "" "Loop parallelized across vectors is not allowed inside another loop " "parallelized across vectors at %L" msgstr "" -#: fortran/openmp.c:4811 +#: fortran/openmp.c:4813 #, gcc-internal-format, gfc-internal-format msgid "Clause SEQ conflicts with INDEPENDENT at %L" msgstr "" -#: fortran/openmp.c:4813 +#: fortran/openmp.c:4815 #, gcc-internal-format, gfc-internal-format msgid "Clause SEQ conflicts with GANG at %L" msgstr "" -#: fortran/openmp.c:4815 +#: fortran/openmp.c:4817 #, gcc-internal-format, gfc-internal-format msgid "Clause SEQ conflicts with WORKER at %L" msgstr "" -#: fortran/openmp.c:4817 +#: fortran/openmp.c:4819 #, gcc-internal-format, gfc-internal-format msgid "Clause SEQ conflicts with VECTOR at %L" msgstr "" -#: fortran/openmp.c:4819 +#: fortran/openmp.c:4821 #, gcc-internal-format, gfc-internal-format msgid "Clause SEQ conflicts with AUTO at %L" msgstr "" -#: fortran/openmp.c:4824 +#: fortran/openmp.c:4826 #, gcc-internal-format, gfc-internal-format msgid "Clause AUTO conflicts with GANG at %L" msgstr "" -#: fortran/openmp.c:4826 +#: fortran/openmp.c:4828 #, gcc-internal-format, gfc-internal-format msgid "Clause AUTO conflicts with WORKER at %L" msgstr "" -#: fortran/openmp.c:4828 +#: fortran/openmp.c:4830 #, gcc-internal-format, gfc-internal-format msgid "Clause AUTO conflicts with VECTOR at %L" msgstr "" -#: fortran/openmp.c:4832 +#: fortran/openmp.c:4834 #, gcc-internal-format, gfc-internal-format msgid "" "Tiled loop cannot be parallelized across gangs, workers and vectors at the " "same time at %L" msgstr "" -#: fortran/openmp.c:4867 +#: fortran/openmp.c:4869 #, gcc-internal-format, gfc-internal-format msgid "TILE requires constant expression at %L" msgstr "" -#: fortran/openmp.c:4932 +#: fortran/openmp.c:4934 #, gcc-internal-format msgid "PARAMETER object %qs is not allowed at %L" msgstr "" -#: fortran/openmp.c:4939 +#: fortran/openmp.c:4941 #, gcc-internal-format msgid "Array sections: %qs not allowed in $!ACC DECLARE at %L" msgstr "" -#: fortran/openmp.c:5058 +#: fortran/openmp.c:5060 #, gcc-internal-format, gfc-internal-format msgid "OMP TARGET UPDATE at %L requires at least one TO or FROM clause" msgstr "" -#: fortran/openmp.c:5079 +#: fortran/openmp.c:5081 #, gcc-internal-format msgid "!$OMP DECLARE SIMD should refer to containing procedure %qs at %L" msgstr "" -#: fortran/openmp.c:5103 +#: fortran/openmp.c:5105 #, gcc-internal-format, gfc-internal-format msgid "" "Variable other than OMP_PRIV or OMP_ORIG used in INITIALIZER clause of !$OMP " "DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.c:5111 +#: fortran/openmp.c:5113 #, gcc-internal-format, gfc-internal-format msgid "" "Variable other than OMP_OUT or OMP_IN used in combiner of !$OMP DECLARE " "REDUCTION at %L" msgstr "" -#: fortran/openmp.c:5140 +#: fortran/openmp.c:5142 #, gcc-internal-format, gfc-internal-format msgid "Invalid operator for !$OMP DECLARE REDUCTION %s at %L" msgstr "" -#: fortran/openmp.c:5162 +#: fortran/openmp.c:5164 #, gcc-internal-format, gfc-internal-format msgid "CHARACTER length in !$OMP DECLARE REDUCTION %s not constant at %L" msgstr "" -#: fortran/openmp.c:5178 +#: fortran/openmp.c:5180 #, gcc-internal-format, gfc-internal-format msgid "" "Subroutine call with alternate returns in combiner of !$OMP DECLARE " "REDUCTION at %L" msgstr "" -#: fortran/openmp.c:5193 +#: fortran/openmp.c:5195 #, gcc-internal-format, gfc-internal-format msgid "" "Subroutine call with alternate returns in INITIALIZER clause of !$OMP " "DECLARE REDUCTION at %L" msgstr "" -#: fortran/openmp.c:5203 +#: fortran/openmp.c:5205 #, gcc-internal-format, gfc-internal-format msgid "" "One of actual subroutine arguments in INITIALIZER clause of !$OMP DECLARE " "REDUCTION must be OMP_PRIV at %L" msgstr "" -#: fortran/openmp.c:5211 +#: fortran/openmp.c:5213 #, gcc-internal-format, gfc-internal-format msgid "" "Missing INITIALIZER clause for !$OMP DECLARE REDUCTION of derived type " @@ -54216,27 +54369,27 @@ msgstr "" msgid "Argument to %<-ffpe-summary%> is not valid: %s" msgstr "" -#: fortran/options.c:520 +#: fortran/options.c:529 #, gcc-internal-format msgid "Argument to %<-fcheck%> is not valid: %s" msgstr "" -#: fortran/options.c:569 +#: fortran/options.c:578 #, gcc-internal-format msgid "%<-static-libgfortran%> is not supported in this configuration" msgstr "" -#: fortran/options.c:592 +#: fortran/options.c:601 #, gcc-internal-format, gfc-internal-format msgid "Maximum supported identifier length is %d" msgstr "" -#: fortran/options.c:612 +#: fortran/options.c:621 #, gcc-internal-format msgid "Unrecognized option to %<-finit-logical%>: %s" msgstr "" -#: fortran/options.c:628 +#: fortran/options.c:637 #, gcc-internal-format msgid "The value of n in %<-finit-character=n%> must be between 0 and 127" msgstr "" @@ -54642,102 +54795,102 @@ msgstr "" msgid "ASSOCIATE construct at %C" msgstr "" -#: fortran/parse.c:4234 +#: fortran/parse.c:4235 #, gcc-internal-format, gfc-internal-format msgid "Statement label in ENDDO at %C doesn't match DO label" msgstr "" -#: fortran/parse.c:4250 +#: fortran/parse.c:4251 #, gcc-internal-format, gfc-internal-format msgid "Named block DO at %L requires matching ENDDO name" msgstr "" -#: fortran/parse.c:4431 +#: fortran/parse.c:4432 #, gcc-internal-format, gfc-internal-format msgid "Missing !$OMP END ATOMIC after !$OMP ATOMIC CAPTURE at %C" msgstr "" -#: fortran/parse.c:4447 fortran/parse.c:4506 +#: fortran/parse.c:4448 fortran/parse.c:4507 #, gcc-internal-format, gfc-internal-format msgid "OpenACC directive inside of CRITICAL block at %C" msgstr "" -#: fortran/parse.c:4481 +#: fortran/parse.c:4482 #, gcc-internal-format, gfc-internal-format msgid "Expecting %s at %C" msgstr "" -#: fortran/parse.c:4525 +#: fortran/parse.c:4526 #, gcc-internal-format, gfc-internal-format msgid "Expected DO loop at %C" msgstr "" -#: fortran/parse.c:4545 +#: fortran/parse.c:4546 #, gcc-internal-format, gfc-internal-format msgid "Redundant !$ACC END LOOP at %C" msgstr "" -#: fortran/parse.c:4758 +#: fortran/parse.c:4759 #, gcc-internal-format, gfc-internal-format msgid "Name after !$omp critical and !$omp end critical does not match at %C" msgstr "" -#: fortran/parse.c:4815 +#: fortran/parse.c:4816 #, gcc-internal-format, gfc-internal-format msgid "%s statement at %C cannot terminate a non-block DO loop" msgstr "" -#: fortran/parse.c:4829 +#: fortran/parse.c:4830 #, gcc-internal-format, gfc-internal-format msgid "DATA statement at %C after the first executable statement" msgstr "" -#: fortran/parse.c:5060 +#: fortran/parse.c:5061 #, gcc-internal-format msgid "Contained procedure %qs at %C is already ambiguous" msgstr "" -#: fortran/parse.c:5117 +#: fortran/parse.c:5118 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s statement in CONTAINS section at %C" msgstr "" -#: fortran/parse.c:5142 +#: fortran/parse.c:5143 #, gcc-internal-format, gfc-internal-format msgid "CONTAINS statement without FUNCTION or SUBROUTINE statement at %C" msgstr "" -#: fortran/parse.c:5254 +#: fortran/parse.c:5255 #, gcc-internal-format, gfc-internal-format msgid "CONTAINS statement at %C is already in a contained program unit" msgstr "" -#: fortran/parse.c:5300 +#: fortran/parse.c:5301 #, gcc-internal-format msgid "gfc_global_used(): Bad type" msgstr "" -#: fortran/parse.c:5305 +#: fortran/parse.c:5306 #, gcc-internal-format msgid "Global binding name %qs at %L is already being used as a %s at %L" msgstr "" -#: fortran/parse.c:5308 +#: fortran/parse.c:5309 #, gcc-internal-format msgid "Global name %qs at %L is already being used as a %s at %L" msgstr "" -#: fortran/parse.c:5329 +#: fortran/parse.c:5330 #, gcc-internal-format, gfc-internal-format msgid "Blank BLOCK DATA at %C conflicts with prior BLOCK DATA at %L" msgstr "" -#: fortran/parse.c:5355 +#: fortran/parse.c:5356 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s statement in BLOCK DATA at %C" msgstr "" -#: fortran/parse.c:5440 +#: fortran/parse.c:5441 #, gcc-internal-format, gfc-internal-format msgid "Unexpected %s statement in MODULE at %C" msgstr "" @@ -54745,7 +54898,7 @@ msgstr "" #. If we see a duplicate main program, shut down. If the second #. instance is an implied main program, i.e. data decls or executable #. statements, we're in for lots of errors. -#: fortran/parse.c:5827 +#: fortran/parse.c:5828 #, gcc-internal-format, gfc-internal-format msgid "Two main PROGRAMs at %L and %C" msgstr "" @@ -54942,186 +55095,191 @@ msgstr "" msgid "Syntax error in COMPLEX constant at %C" msgstr "" -#: fortran/primary.c:1637 +#: fortran/primary.c:1557 +#, gcc-internal-format, gfc-internal-format +msgid "Namelist '%s' can not be an argument at %L" +msgstr "" + +#: fortran/primary.c:1643 #, gcc-internal-format msgid "Keyword %qs at %C has already appeared in the current argument list" msgstr "" -#: fortran/primary.c:1701 +#: fortran/primary.c:1707 #, gcc-internal-format, gfc-internal-format msgid "argument list function at %C" msgstr "" -#: fortran/primary.c:1769 +#: fortran/primary.c:1775 #, gcc-internal-format, gfc-internal-format msgid "Expected alternate return label at %C" msgstr "" -#: fortran/primary.c:1791 +#: fortran/primary.c:1797 #, gcc-internal-format, gfc-internal-format msgid "Missing keyword name in actual argument list at %C" msgstr "" -#: fortran/primary.c:1837 +#: fortran/primary.c:1843 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in argument list at %C" msgstr "" -#: fortran/primary.c:1858 +#: fortran/primary.c:1864 #, gcc-internal-format msgid "extend_ref(): Bad tail" msgstr "" -#: fortran/primary.c:1896 +#: fortran/primary.c:1902 #, gcc-internal-format, gfc-internal-format msgid "" "Array section designator, e.g. '(:)', is required besides the coarray " "designator '[...]' at %C" msgstr "" -#: fortran/primary.c:1904 +#: fortran/primary.c:1910 #, gcc-internal-format msgid "Coarray designator at %C but %qs is not a coarray" msgstr "" -#: fortran/primary.c:1975 +#: fortran/primary.c:1981 #, gcc-internal-format msgid "Symbol %qs at %C has no IMPLICIT type" msgstr "" -#: fortran/primary.c:1981 +#: fortran/primary.c:1987 #, gcc-internal-format msgid "Unexpected %<%%%> for nonderived-type variable %qs at %C" msgstr "" -#: fortran/primary.c:1999 +#: fortran/primary.c:2005 #, gcc-internal-format, gfc-internal-format msgid "Expected structure component name at %C" msgstr "" -#: fortran/primary.c:2050 +#: fortran/primary.c:2056 #, gcc-internal-format, gfc-internal-format msgid "Expected argument list at %C" msgstr "" -#: fortran/primary.c:2081 +#: fortran/primary.c:2087 #, gcc-internal-format msgid "Procedure pointer component %qs requires an argument list at %C" msgstr "" -#: fortran/primary.c:2169 +#: fortran/primary.c:2175 #, gcc-internal-format, gfc-internal-format msgid "Coindexed procedure-pointer component at %C" msgstr "" -#: fortran/primary.c:2204 +#: fortran/primary.c:2210 #, gcc-internal-format msgid "gfc_variable_attr(): Expression isn't a variable" msgstr "" -#: fortran/primary.c:2259 +#: fortran/primary.c:2265 #, gcc-internal-format msgid "gfc_variable_attr(): Bad array reference" msgstr "" -#: fortran/primary.c:2429 +#: fortran/primary.c:2435 #, gcc-internal-format, gfc-internal-format msgid "Structure constructor with missing optional arguments at %C" msgstr "" -#: fortran/primary.c:2438 +#: fortran/primary.c:2444 #, gcc-internal-format msgid "" "No initializer for allocatable component '%qs' given in the structure " "constructor at %C" msgstr "" -#: fortran/primary.c:2445 +#: fortran/primary.c:2451 #, gcc-internal-format msgid "" "No initializer for component %qs given in the structure constructor at %C!" msgstr "" -#: fortran/primary.c:2493 +#: fortran/primary.c:2499 #, gcc-internal-format msgid "Can't construct ABSTRACT type %qs at %L" msgstr "" -#: fortran/primary.c:2513 +#: fortran/primary.c:2519 #, gcc-internal-format, gfc-internal-format msgid "Structure constructor with named arguments at %C" msgstr "" -#: fortran/primary.c:2528 +#: fortran/primary.c:2534 #, gcc-internal-format, gfc-internal-format msgid "Component initializer without name after component named %s at %L!" msgstr "" -#: fortran/primary.c:2533 +#: fortran/primary.c:2539 #, gcc-internal-format, gfc-internal-format msgid "Too many components in structure constructor at %L!" msgstr "" -#: fortran/primary.c:2570 +#: fortran/primary.c:2576 #, gcc-internal-format msgid "Component %qs is initialized twice in the structure constructor at %L!" msgstr "" -#: fortran/primary.c:2582 +#: fortran/primary.c:2588 #, gcc-internal-format msgid "" "Coindexed expression to pointer component %qs in structure constructor at %L!" msgstr "" -#: fortran/primary.c:2636 +#: fortran/primary.c:2642 #, gcc-internal-format msgid "" "component %qs at %L has already been set by a parent derived type constructor" msgstr "" -#: fortran/primary.c:2825 +#: fortran/primary.c:2831 #, gcc-internal-format msgid "" "%qs at %C is the name of a recursive function and so refers to the result " "variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)" msgstr "" -#: fortran/primary.c:2948 +#: fortran/primary.c:2954 #, gcc-internal-format msgid "Unexpected use of subroutine name %qs at %C" msgstr "" -#: fortran/primary.c:2980 +#: fortran/primary.c:2986 #, gcc-internal-format msgid "Statement function %qs requires argument list at %C" msgstr "" -#: fortran/primary.c:2983 +#: fortran/primary.c:2989 #, gcc-internal-format msgid "Function %qs requires an argument list at %C" msgstr "" -#: fortran/primary.c:3033 +#: fortran/primary.c:3039 #, gcc-internal-format msgid "Missing argument to %qs at %C" msgstr "" -#: fortran/primary.c:3189 +#: fortran/primary.c:3195 #, gcc-internal-format msgid "Missing argument list in function %qs at %C" msgstr "" -#: fortran/primary.c:3223 +#: fortran/primary.c:3233 #, gcc-internal-format, gfc-internal-format msgid "Symbol at %C is not appropriate for an expression" msgstr "" -#: fortran/primary.c:3323 +#: fortran/primary.c:3333 #, gcc-internal-format, gfc-internal-format msgid "Named constant at %C in an EQUIVALENCE" msgstr "" -#: fortran/primary.c:3357 +#: fortran/primary.c:3367 #, gcc-internal-format msgid "%qs at %C is not a variable" msgstr "" @@ -55507,7 +55665,7 @@ msgid "" "Declare it RECURSIVE or use %<-frecursive%>" msgstr "" -#: fortran/resolve.c:1776 fortran/resolve.c:8921 fortran/resolve.c:10546 +#: fortran/resolve.c:1776 fortran/resolve.c:8932 fortran/resolve.c:10557 #, gcc-internal-format, gfc-internal-format msgid "Label %d referenced at %L is never defined" msgstr "" @@ -55624,7 +55782,7 @@ msgstr "" msgid "Unable to resolve the specific function %qs at %L" msgstr "" -#: fortran/resolve.c:2740 fortran/resolve.c:15282 +#: fortran/resolve.c:2740 fortran/resolve.c:15308 #, gcc-internal-format msgid "Function %qs at %L has no IMPLICIT type" msgstr "" @@ -56186,69 +56344,76 @@ msgid "" "parameter as in the declaration" msgstr "" -#: fortran/resolve.c:7217 fortran/resolve.c:7224 +#: fortran/resolve.c:7217 fortran/resolve.c:7232 #, gcc-internal-format, gfc-internal-format msgid "Array specification required in ALLOCATE statement at %L" msgstr "" -#: fortran/resolve.c:7239 +#: fortran/resolve.c:7224 +#, gcc-internal-format, gfc-internal-format +msgid "" +"Array specification or array-valued SOURCE= expression required in ALLOCATE " +"statement at %L" +msgstr "" + +#: fortran/resolve.c:7247 #, gcc-internal-format, gfc-internal-format msgid "Coarray specification required in ALLOCATE statement at %L" msgstr "" -#: fortran/resolve.c:7266 +#: fortran/resolve.c:7274 #, gcc-internal-format, gfc-internal-format msgid "Bad array specification in ALLOCATE statement at %L" msgstr "" -#: fortran/resolve.c:7285 +#: fortran/resolve.c:7293 #, gcc-internal-format msgid "" "%qs must not appear in the array specification at %L in the same ALLOCATE " "statement where it is itself allocated" msgstr "" -#: fortran/resolve.c:7300 +#: fortran/resolve.c:7308 #, gcc-internal-format, gfc-internal-format msgid "Expected '*' in coindex specification in ALLOCATE statement at %L" msgstr "" -#: fortran/resolve.c:7311 +#: fortran/resolve.c:7319 #, gcc-internal-format, gfc-internal-format msgid "Bad coarray specification in ALLOCATE statement at %L" msgstr "" -#: fortran/resolve.c:7343 +#: fortran/resolve.c:7351 #, gcc-internal-format, gfc-internal-format msgid "Stat-variable at %L must be a scalar INTEGER variable" msgstr "" -#: fortran/resolve.c:7366 +#: fortran/resolve.c:7374 #, gcc-internal-format, gfc-internal-format msgid "Stat-variable at %L shall not be %sd within the same %s statement" msgstr "" -#: fortran/resolve.c:7377 +#: fortran/resolve.c:7385 #, gcc-internal-format, gfc-internal-format msgid "ERRMSG at %L is useless without a STAT tag" msgstr "" -#: fortran/resolve.c:7388 +#: fortran/resolve.c:7396 #, gcc-internal-format, gfc-internal-format msgid "Errmsg-variable at %L must be a scalar CHARACTER variable" msgstr "" -#: fortran/resolve.c:7411 +#: fortran/resolve.c:7419 #, gcc-internal-format, gfc-internal-format msgid "Errmsg-variable at %L shall not be %sd within the same %s statement" msgstr "" -#: fortran/resolve.c:7441 +#: fortran/resolve.c:7449 #, gcc-internal-format, gfc-internal-format msgid "Allocate-object at %L also appears at %L" msgstr "" -#: fortran/resolve.c:7447 fortran/resolve.c:7453 +#: fortran/resolve.c:7455 fortran/resolve.c:7461 #, gcc-internal-format, gfc-internal-format msgid "Allocate-object at %L is subobject of object at %L" msgstr "" @@ -56257,234 +56422,234 @@ msgstr "" #. element in the list. Either way, we must #. issue an error and get the next case from P. #. FIXME: Sort P and Q by line number. -#: fortran/resolve.c:7665 +#: fortran/resolve.c:7673 #, gcc-internal-format, gfc-internal-format msgid "CASE label at %L overlaps with CASE label at %L" msgstr "" -#: fortran/resolve.c:7716 +#: fortran/resolve.c:7724 #, gcc-internal-format, gfc-internal-format msgid "Expression in CASE statement at %L must be of type %s" msgstr "" -#: fortran/resolve.c:7727 +#: fortran/resolve.c:7735 #, gcc-internal-format, gfc-internal-format msgid "Expression in CASE statement at %L must be of kind %d" msgstr "" -#: fortran/resolve.c:7740 +#: fortran/resolve.c:7748 #, gcc-internal-format, gfc-internal-format msgid "Expression in CASE statement at %L must be scalar" msgstr "" -#: fortran/resolve.c:7786 +#: fortran/resolve.c:7794 #, gcc-internal-format, gfc-internal-format msgid "" "Selection expression in computed GOTO statement at %L must be a scalar " "integer expression" msgstr "" -#: fortran/resolve.c:7805 +#: fortran/resolve.c:7813 #, gcc-internal-format, gfc-internal-format msgid "Argument of SELECT statement at %L cannot be %s" msgstr "" -#: fortran/resolve.c:7815 +#: fortran/resolve.c:7823 #, gcc-internal-format, gfc-internal-format msgid "Argument of SELECT statement at %L must be a scalar expression" msgstr "" -#: fortran/resolve.c:7833 fortran/resolve.c:7841 +#: fortran/resolve.c:7841 fortran/resolve.c:7849 #, gcc-internal-format, gfc-internal-format msgid "Expression in CASE statement at %L is not in the range of %s" msgstr "" -#: fortran/resolve.c:7903 fortran/resolve.c:8339 +#: fortran/resolve.c:7911 fortran/resolve.c:8350 #, gcc-internal-format, gfc-internal-format msgid "" "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L" msgstr "" -#: fortran/resolve.c:7929 +#: fortran/resolve.c:7937 #, gcc-internal-format, gfc-internal-format msgid "Logical range in CASE statement at %L is not allowed" msgstr "" -#: fortran/resolve.c:7941 +#: fortran/resolve.c:7949 #, gcc-internal-format, gfc-internal-format msgid "Constant logical value in CASE statement is repeated at %L" msgstr "" -#: fortran/resolve.c:7956 +#: fortran/resolve.c:7964 #, gcc-internal-format, gfc-internal-format msgid "Range specification at %L can never be matched" msgstr "" -#: fortran/resolve.c:8059 +#: fortran/resolve.c:8067 #, gcc-internal-format, gfc-internal-format msgid "Logical SELECT CASE block at %L has more that two cases" msgstr "" -#: fortran/resolve.c:8134 +#: fortran/resolve.c:8142 #, gcc-internal-format msgid "Associate-name %qs at %L is used as array" msgstr "" -#: fortran/resolve.c:8145 +#: fortran/resolve.c:8153 #, gcc-internal-format, gfc-internal-format msgid "CLASS selector at %L needs a temporary which is not yet implemented" msgstr "" -#: fortran/resolve.c:8258 +#: fortran/resolve.c:8269 #, gcc-internal-format, gfc-internal-format msgid "Selector shall be polymorphic in SELECT TYPE statement at %L" msgstr "" -#: fortran/resolve.c:8275 fortran/resolve.c:8287 +#: fortran/resolve.c:8286 fortran/resolve.c:8298 #, gcc-internal-format, gfc-internal-format msgid "Selector at %L must not be coindexed" msgstr "" -#: fortran/resolve.c:8303 +#: fortran/resolve.c:8314 #, gcc-internal-format msgid "Derived type %qs at %L must be extensible" msgstr "" -#: fortran/resolve.c:8315 +#: fortran/resolve.c:8326 #, gcc-internal-format msgid "Derived type %qs at %L must be an extension of %qs" msgstr "" -#: fortran/resolve.c:8318 +#: fortran/resolve.c:8329 #, gcc-internal-format msgid "Unexpected intrinsic type %qs at %L" msgstr "" -#: fortran/resolve.c:8327 +#: fortran/resolve.c:8338 #, gcc-internal-format, gfc-internal-format msgid "" "The type-spec at %L shall specify that each length type parameter is assumed" msgstr "" -#: fortran/resolve.c:8519 +#: fortran/resolve.c:8530 #, gcc-internal-format, gfc-internal-format msgid "Double CLASS IS block in SELECT TYPE statement at %L" msgstr "" -#: fortran/resolve.c:8608 +#: fortran/resolve.c:8619 #, gcc-internal-format, gfc-internal-format msgid "Invalid context for NULL () intrinsic at %L" msgstr "" #. FIXME: Test for defined input/output. -#: fortran/resolve.c:8636 +#: fortran/resolve.c:8647 #, gcc-internal-format, gfc-internal-format msgid "" "Data transfer element at %L cannot be polymorphic unless it is processed by " "a defined input/output procedure" msgstr "" -#: fortran/resolve.c:8648 +#: fortran/resolve.c:8659 #, gcc-internal-format, gfc-internal-format msgid "" "Data transfer element at %L cannot have POINTER components unless it is " "processed by a defined input/output procedure" msgstr "" -#: fortran/resolve.c:8657 +#: fortran/resolve.c:8668 #, gcc-internal-format, gfc-internal-format msgid "Data transfer element at %L cannot have procedure pointer components" msgstr "" -#: fortran/resolve.c:8664 +#: fortran/resolve.c:8675 #, gcc-internal-format, gfc-internal-format msgid "" "Data transfer element at %L cannot have ALLOCATABLE components unless it is " "processed by a defined input/output procedure" msgstr "" -#: fortran/resolve.c:8675 fortran/resolve.c:8681 +#: fortran/resolve.c:8686 fortran/resolve.c:8692 #, gcc-internal-format, gfc-internal-format msgid "Data transfer element at %L cannot have PRIVATE components" msgstr "" -#: fortran/resolve.c:8695 +#: fortran/resolve.c:8706 #, gcc-internal-format, gfc-internal-format msgid "" "Data transfer element at %L cannot be a full reference to an assumed-size " "array" msgstr "" -#: fortran/resolve.c:8752 +#: fortran/resolve.c:8763 #, gcc-internal-format, gfc-internal-format msgid "Lock variable at %L must be a scalar of type LOCK_TYPE" msgstr "" -#: fortran/resolve.c:8762 +#: fortran/resolve.c:8773 #, gcc-internal-format, gfc-internal-format msgid "Event variable at %L must be a scalar of type EVENT_TYPE" msgstr "" -#: fortran/resolve.c:8766 +#: fortran/resolve.c:8777 #, gcc-internal-format, gfc-internal-format msgid "Event variable argument at %L must be a coarray or coindexed" msgstr "" -#: fortran/resolve.c:8769 +#: fortran/resolve.c:8780 #, gcc-internal-format, gfc-internal-format msgid "Event variable argument at %L must be a coarray but not coindexed" msgstr "" -#: fortran/resolve.c:8776 fortran/resolve.c:8894 +#: fortran/resolve.c:8787 fortran/resolve.c:8905 #, gcc-internal-format, gfc-internal-format msgid "STAT= argument at %L must be a scalar INTEGER variable" msgstr "" -#: fortran/resolve.c:8788 fortran/resolve.c:8901 +#: fortran/resolve.c:8799 fortran/resolve.c:8912 #, gcc-internal-format, gfc-internal-format msgid "ERRMSG= argument at %L must be a scalar CHARACTER variable" msgstr "" -#: fortran/resolve.c:8800 +#: fortran/resolve.c:8811 #, gcc-internal-format, gfc-internal-format msgid "ACQUIRED_LOCK= argument at %L must be a scalar LOGICAL variable" msgstr "" -#: fortran/resolve.c:8811 +#: fortran/resolve.c:8822 #, gcc-internal-format, gfc-internal-format msgid "UNTIL_COUNT= argument at %L must be a scalar INTEGER expression" msgstr "" -#: fortran/resolve.c:8871 +#: fortran/resolve.c:8882 #, gcc-internal-format, gfc-internal-format msgid "Imageset argument at %L must be a scalar or rank-1 INTEGER expression" msgstr "" -#: fortran/resolve.c:8875 fortran/resolve.c:8885 +#: fortran/resolve.c:8886 fortran/resolve.c:8896 #, gcc-internal-format, gfc-internal-format msgid "Imageset argument at %L must between 1 and num_images()" msgstr "" -#: fortran/resolve.c:8928 +#: fortran/resolve.c:8939 #, gcc-internal-format, gfc-internal-format msgid "" "Statement at %L is not a valid branch target statement for the branch " "statement at %L" msgstr "" -#: fortran/resolve.c:8938 +#: fortran/resolve.c:8949 #, gcc-internal-format, gfc-internal-format msgid "Branch at %L may result in an infinite loop" msgstr "" #. Note: A label at END CRITICAL does not leave the CRITICAL #. construct as END CRITICAL is still part of it. -#: fortran/resolve.c:8955 fortran/resolve.c:8978 +#: fortran/resolve.c:8966 fortran/resolve.c:8989 #, gcc-internal-format, gfc-internal-format msgid "GOTO statement at %L leaves CRITICAL construct for label at %L" msgstr "" -#: fortran/resolve.c:8959 fortran/resolve.c:8984 +#: fortran/resolve.c:8970 fortran/resolve.c:8995 #, gcc-internal-format, gfc-internal-format msgid "GOTO statement at %L leaves DO CONCURRENT construct for label at %L" msgstr "" @@ -56492,93 +56657,93 @@ msgstr "" #. The label is not in an enclosing block, so illegal. This was #. allowed in Fortran 66, so we allow it as extension. No #. further checks are necessary in this case. -#: fortran/resolve.c:8999 +#: fortran/resolve.c:9010 #, gcc-internal-format, gfc-internal-format msgid "Label at %L is not in the same block as the GOTO statement at %L" msgstr "" -#: fortran/resolve.c:9071 +#: fortran/resolve.c:9082 #, gcc-internal-format, gfc-internal-format msgid "WHERE mask at %L has inconsistent shape" msgstr "" -#: fortran/resolve.c:9087 +#: fortran/resolve.c:9098 #, gcc-internal-format, gfc-internal-format msgid "WHERE assignment target at %L has inconsistent shape" msgstr "" -#: fortran/resolve.c:9095 fortran/resolve.c:9182 +#: fortran/resolve.c:9106 fortran/resolve.c:9193 #, gcc-internal-format, gfc-internal-format msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L" msgstr "" -#: fortran/resolve.c:9105 fortran/resolve.c:9192 +#: fortran/resolve.c:9116 fortran/resolve.c:9203 #, gcc-internal-format, gfc-internal-format msgid "Unsupported statement inside WHERE at %L" msgstr "" -#: fortran/resolve.c:9136 +#: fortran/resolve.c:9147 #, gcc-internal-format, gfc-internal-format msgid "Assignment to a FORALL index variable at %L" msgstr "" -#: fortran/resolve.c:9145 +#: fortran/resolve.c:9156 #, gcc-internal-format msgid "" "The FORALL with index %qs is not used on the left side of the assignment at " "%L and so might cause multiple assignment to this object" msgstr "" -#: fortran/resolve.c:9314 +#: fortran/resolve.c:9325 #, gcc-internal-format, gfc-internal-format msgid "An outer FORALL construct already has an index with this name %L" msgstr "" -#: fortran/resolve.c:9392 +#: fortran/resolve.c:9403 #, gcc-internal-format, gfc-internal-format msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array" msgstr "" -#: fortran/resolve.c:9470 +#: fortran/resolve.c:9481 #, gcc-internal-format msgid "gfc_resolve_blocks(): Bad block type" msgstr "" -#: fortran/resolve.c:9584 +#: fortran/resolve.c:9595 #, gcc-internal-format, gfc-internal-format msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L" msgstr "" -#: fortran/resolve.c:9616 +#: fortran/resolve.c:9627 #, gcc-internal-format, gfc-internal-format msgid "" "Coindexed expression at %L is assigned to a derived type variable with a " "POINTER component in a PURE procedure" msgstr "" -#: fortran/resolve.c:9621 +#: fortran/resolve.c:9632 #, gcc-internal-format, gfc-internal-format msgid "" "The impure variable at %L is assigned to a derived type variable with a " "POINTER component in a PURE procedure (12.6)" msgstr "" -#: fortran/resolve.c:9631 +#: fortran/resolve.c:9642 #, gcc-internal-format, gfc-internal-format msgid "Assignment to coindexed variable at %L in a PURE procedure" msgstr "" -#: fortran/resolve.c:9663 +#: fortran/resolve.c:9674 #, gcc-internal-format, gfc-internal-format msgid "Assignment to polymorphic coarray at %L is not permitted" msgstr "" -#: fortran/resolve.c:9667 +#: fortran/resolve.c:9678 #, gcc-internal-format, gfc-internal-format msgid "Assignment to an allocatable polymorphic variable at %L" msgstr "" -#: fortran/resolve.c:9672 +#: fortran/resolve.c:9683 #, gcc-internal-format msgid "" "Assignment to an allocatable polymorphic variable at %L requires %<-frealloc-" @@ -56586,27 +56751,27 @@ msgid "" msgstr "" #. See PR 43366. -#: fortran/resolve.c:9677 +#: fortran/resolve.c:9688 #, gcc-internal-format, gfc-internal-format msgid "" "Assignment to an allocatable polymorphic variable at %L is not yet supported" msgstr "" -#: fortran/resolve.c:9683 +#: fortran/resolve.c:9694 #, gcc-internal-format, gfc-internal-format msgid "" "Nonallocatable variable must not be polymorphic in intrinsic assignment at " "%L - check that there is a matching specific subroutine for '=' operator" msgstr "" -#: fortran/resolve.c:9694 +#: fortran/resolve.c:9705 #, gcc-internal-format, gfc-internal-format msgid "" "Coindexed variable must not have an allocatable ultimate component in " "assignment at %L" msgstr "" -#: fortran/resolve.c:9997 +#: fortran/resolve.c:10008 #, gcc-internal-format, gfc-internal-format msgid "" "TODO: type-bound defined assignment(s) at %L not done because multiple part " @@ -56615,72 +56780,72 @@ msgstr "" #. Even if standard does not support this feature, continue to build #. the two statements to avoid upsetting frontend_passes.c. -#: fortran/resolve.c:10239 +#: fortran/resolve.c:10250 #, gcc-internal-format, gfc-internal-format msgid "Pointer procedure assignment at %L" msgstr "" -#: fortran/resolve.c:10251 +#: fortran/resolve.c:10262 #, gcc-internal-format, gfc-internal-format msgid "" "The function result on the lhs of the assignment at %L must have the pointer " "attribute." msgstr "" -#: fortran/resolve.c:10478 +#: fortran/resolve.c:10489 #, gcc-internal-format, gfc-internal-format msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable" msgstr "" -#: fortran/resolve.c:10481 +#: fortran/resolve.c:10492 #, gcc-internal-format msgid "Variable %qs has not been assigned a target label at %L" msgstr "" -#: fortran/resolve.c:10492 +#: fortran/resolve.c:10503 #, gcc-internal-format, gfc-internal-format msgid "" "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier" msgstr "" -#: fortran/resolve.c:10554 +#: fortran/resolve.c:10565 #, gcc-internal-format, gfc-internal-format msgid "ASSIGN statement at %L requires a scalar default INTEGER variable" msgstr "" -#: fortran/resolve.c:10589 +#: fortran/resolve.c:10600 #, gcc-internal-format, gfc-internal-format msgid "Invalid NULL at %L" msgstr "" -#: fortran/resolve.c:10593 +#: fortran/resolve.c:10604 #, gcc-internal-format, gfc-internal-format msgid "" "Arithmetic IF statement at %L requires a scalar REAL or INTEGER expression" msgstr "" -#: fortran/resolve.c:10649 +#: fortran/resolve.c:10660 #, gcc-internal-format msgid "gfc_resolve_code(): No expression on DO WHILE" msgstr "" -#: fortran/resolve.c:10654 +#: fortran/resolve.c:10665 #, gcc-internal-format, gfc-internal-format msgid "" "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression" msgstr "" -#: fortran/resolve.c:10738 +#: fortran/resolve.c:10749 #, gcc-internal-format, gfc-internal-format msgid "FORALL mask clause at %L requires a scalar LOGICAL expression" msgstr "" -#: fortran/resolve.c:10809 +#: fortran/resolve.c:10820 #, gcc-internal-format msgid "gfc_resolve_code(): Bad statement code" msgstr "" -#: fortran/resolve.c:10904 +#: fortran/resolve.c:10915 #, gcc-internal-format, gfc-internal-format msgid "" "Variable %s with binding label %s at %L uses the same global identifier as " @@ -56689,7 +56854,7 @@ msgstr "" #. This can only happen if the variable is defined in a module - if it #. isn't the same module, reject it. -#: fortran/resolve.c:10917 +#: fortran/resolve.c:10928 #, gcc-internal-format, gfc-internal-format msgid "" "Variable %s from module %s with binding label %s at %L uses the same global " @@ -56699,56 +56864,56 @@ msgstr "" #. Print an error if the procedure is defined multiple times; we have to #. exclude references to the same procedure via module association or #. multiple checks for the same procedure. -#: fortran/resolve.c:10934 +#: fortran/resolve.c:10945 #, gcc-internal-format, gfc-internal-format msgid "" "Procedure %s with binding label %s at %L uses the same global identifier as " "entity at %L" msgstr "" -#: fortran/resolve.c:11011 +#: fortran/resolve.c:11022 #, gcc-internal-format, gfc-internal-format msgid "String length at %L is too large" msgstr "" -#: fortran/resolve.c:11347 +#: fortran/resolve.c:11358 #, gcc-internal-format msgid "Allocatable array %qs at %L must have a deferred shape or assumed rank" msgstr "" -#: fortran/resolve.c:11351 +#: fortran/resolve.c:11362 #, gcc-internal-format msgid "Scalar object %qs at %L may not be ALLOCATABLE" msgstr "" -#: fortran/resolve.c:11359 +#: fortran/resolve.c:11370 #, gcc-internal-format msgid "Array pointer %qs at %L must have a deferred shape or assumed rank" msgstr "" -#: fortran/resolve.c:11369 +#: fortran/resolve.c:11380 #, gcc-internal-format msgid "Array %qs at %L cannot have a deferred shape" msgstr "" -#: fortran/resolve.c:11384 +#: fortran/resolve.c:11395 #, gcc-internal-format msgid "Type %qs of CLASS variable %qs at %L is not extensible" msgstr "" -#: fortran/resolve.c:11396 +#: fortran/resolve.c:11407 #, gcc-internal-format msgid "CLASS variable %qs at %L must be dummy, allocatable or pointer" msgstr "" -#: fortran/resolve.c:11427 +#: fortran/resolve.c:11438 #, gcc-internal-format msgid "" "The type %qs cannot be host associated at %L because it is blocked by an " "incompatible object of the same name declared at %L" msgstr "" -#: fortran/resolve.c:11449 +#: fortran/resolve.c:11460 #, gcc-internal-format msgid "" "Implied SAVE for module variable %qs at %L, needed due to the default " @@ -56757,495 +56922,495 @@ msgstr "" #. The shape of a main program or module array needs to be #. constant. -#: fortran/resolve.c:11497 +#: fortran/resolve.c:11508 #, gcc-internal-format msgid "The module or main program array %qs at %L must have constant shape" msgstr "" -#: fortran/resolve.c:11509 +#: fortran/resolve.c:11520 #, gcc-internal-format msgid "" "Entity %qs at %L has a deferred type parameter and requires either the " "pointer or allocatable attribute" msgstr "" -#: fortran/resolve.c:11525 +#: fortran/resolve.c:11536 #, gcc-internal-format, gfc-internal-format msgid "" "Entity with assumed character length at %L must be a dummy argument or a " "PARAMETER" msgstr "" -#: fortran/resolve.c:11546 +#: fortran/resolve.c:11557 #, gcc-internal-format msgid "%qs at %L must have constant character length in this context" msgstr "" -#: fortran/resolve.c:11553 +#: fortran/resolve.c:11564 #, gcc-internal-format msgid "COMMON variable %qs at %L must have constant character length" msgstr "" -#: fortran/resolve.c:11600 +#: fortran/resolve.c:11611 #, gcc-internal-format msgid "Allocatable %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:11603 +#: fortran/resolve.c:11614 #, gcc-internal-format msgid "External %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:11607 +#: fortran/resolve.c:11618 #, gcc-internal-format msgid "Dummy %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:11610 +#: fortran/resolve.c:11621 #, gcc-internal-format msgid "Intrinsic %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:11613 +#: fortran/resolve.c:11624 #, gcc-internal-format msgid "Function result %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:11616 +#: fortran/resolve.c:11627 #, gcc-internal-format msgid "Automatic array %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:11658 +#: fortran/resolve.c:11669 #, gcc-internal-format, gfc-internal-format msgid "%s at %L" msgstr "" -#: fortran/resolve.c:11685 +#: fortran/resolve.c:11696 #, gcc-internal-format msgid "Character-valued statement function %qs at %L must have constant length" msgstr "" -#: fortran/resolve.c:11707 +#: fortran/resolve.c:11718 #, gcc-internal-format msgid "" "%qs is of a PRIVATE type and cannot be a dummy argument of %qs, which is " "PUBLIC at %L" msgstr "" -#: fortran/resolve.c:11729 +#: fortran/resolve.c:11740 #, gcc-internal-format msgid "" "Procedure %qs in PUBLIC interface %qs at %L takes dummy arguments of %qs " "which is PRIVATE" msgstr "" -#: fortran/resolve.c:11747 +#: fortran/resolve.c:11758 #, gcc-internal-format msgid "Function %qs at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:11756 +#: fortran/resolve.c:11767 #, gcc-internal-format msgid "External object %qs at %L may not have an initializer" msgstr "" -#: fortran/resolve.c:11764 +#: fortran/resolve.c:11775 #, gcc-internal-format msgid "ELEMENTAL function %qs at %L must have a scalar result" msgstr "" -#: fortran/resolve.c:11774 +#: fortran/resolve.c:11785 #, gcc-internal-format msgid "" "Statement function %qs at %L may not have pointer or allocatable attribute" msgstr "" -#: fortran/resolve.c:11793 +#: fortran/resolve.c:11804 #, gcc-internal-format msgid "CHARACTER(*) function %qs at %L cannot be array-valued" msgstr "" -#: fortran/resolve.c:11797 +#: fortran/resolve.c:11808 #, gcc-internal-format msgid "CHARACTER(*) function %qs at %L cannot be pointer-valued" msgstr "" -#: fortran/resolve.c:11801 +#: fortran/resolve.c:11812 #, gcc-internal-format msgid "CHARACTER(*) function %qs at %L cannot be pure" msgstr "" -#: fortran/resolve.c:11805 +#: fortran/resolve.c:11816 #, gcc-internal-format msgid "CHARACTER(*) function %qs at %L cannot be recursive" msgstr "" -#: fortran/resolve.c:11818 +#: fortran/resolve.c:11829 #, gcc-internal-format msgid "CHARACTER(*) function %qs at %L" msgstr "" -#: fortran/resolve.c:11827 +#: fortran/resolve.c:11838 #, gcc-internal-format msgid "Procedure pointer %qs at %L shall not be elemental" msgstr "" -#: fortran/resolve.c:11833 +#: fortran/resolve.c:11844 #, gcc-internal-format msgid "Dummy procedure %qs at %L shall not be elemental" msgstr "" -#: fortran/resolve.c:11889 +#: fortran/resolve.c:11900 #, gcc-internal-format msgid "PROCEDURE attribute conflicts with SAVE attribute in %qs at %L" msgstr "" -#: fortran/resolve.c:11895 +#: fortran/resolve.c:11906 #, gcc-internal-format msgid "PROCEDURE attribute conflicts with INTENT attribute in %qs at %L" msgstr "" -#: fortran/resolve.c:11901 +#: fortran/resolve.c:11912 #, gcc-internal-format msgid "PROCEDURE attribute conflicts with RESULT attribute in %qs at %L" msgstr "" -#: fortran/resolve.c:11909 +#: fortran/resolve.c:11920 #, gcc-internal-format msgid "EXTERNAL attribute conflicts with FUNCTION attribute in %qs at %L" msgstr "" -#: fortran/resolve.c:11915 +#: fortran/resolve.c:11926 #, gcc-internal-format msgid "Procedure pointer result %qs at %L is missing the pointer attribute" msgstr "" -#: fortran/resolve.c:11953 +#: fortran/resolve.c:11964 #, gcc-internal-format, gfc-internal-format msgid "" "Mismatch in PURE attribute between MODULE PROCEDURE at %L and its interface " "in %s" msgstr "" -#: fortran/resolve.c:11961 +#: fortran/resolve.c:11972 #, gcc-internal-format, gfc-internal-format msgid "" "Mismatch in ELEMENTAL attribute between MODULE PROCEDURE at %L and its " "interface in %s" msgstr "" -#: fortran/resolve.c:11969 +#: fortran/resolve.c:11980 #, gcc-internal-format, gfc-internal-format msgid "" "Mismatch in RECURSIVE attribute between MODULE PROCEDURE at %L and its " "interface in %s" msgstr "" -#: fortran/resolve.c:11978 +#: fortran/resolve.c:11989 #, gcc-internal-format, gfc-internal-format msgid "" "%s between the MODULE PROCEDURE declaration in module %s and the declaration " "at %L in SUBMODULE %s" msgstr "" -#: fortran/resolve.c:12063 +#: fortran/resolve.c:12074 #, gcc-internal-format msgid "FINAL procedure %qs at %L is not a SUBROUTINE" msgstr "" -#: fortran/resolve.c:12072 +#: fortran/resolve.c:12083 #, gcc-internal-format, gfc-internal-format msgid "FINAL procedure at %L must have exactly one argument" msgstr "" -#: fortran/resolve.c:12081 +#: fortran/resolve.c:12092 #, gcc-internal-format msgid "Argument of FINAL procedure at %L must be of type %qs" msgstr "" -#: fortran/resolve.c:12089 +#: fortran/resolve.c:12100 #, gcc-internal-format, gfc-internal-format msgid "Argument of FINAL procedure at %L must not be a POINTER" msgstr "" -#: fortran/resolve.c:12095 +#: fortran/resolve.c:12106 #, gcc-internal-format, gfc-internal-format msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE" msgstr "" -#: fortran/resolve.c:12101 +#: fortran/resolve.c:12112 #, gcc-internal-format, gfc-internal-format msgid "Argument of FINAL procedure at %L must not be OPTIONAL" msgstr "" -#: fortran/resolve.c:12109 +#: fortran/resolve.c:12120 #, gcc-internal-format, gfc-internal-format msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)" msgstr "" -#: fortran/resolve.c:12118 +#: fortran/resolve.c:12129 #, gcc-internal-format, gfc-internal-format msgid "Non-scalar FINAL procedure at %L should have assumed shape argument" msgstr "" -#: fortran/resolve.c:12140 +#: fortran/resolve.c:12151 #, gcc-internal-format msgid "FINAL procedure %qs declared at %L has the same rank (%d) as %qs" msgstr "" -#: fortran/resolve.c:12177 +#: fortran/resolve.c:12188 #, gcc-internal-format msgid "" "Only array FINAL procedures declared for derived type %qs defined at %L, " "suggest also scalar one" msgstr "" -#: fortran/resolve.c:12217 +#: fortran/resolve.c:12228 #, gcc-internal-format msgid "%qs and %qs can't be mixed FUNCTION/SUBROUTINE for GENERIC %qs at %L" msgstr "" -#: fortran/resolve.c:12253 +#: fortran/resolve.c:12264 #, gcc-internal-format msgid "%qs and %qs for GENERIC %qs at %L are ambiguous" msgstr "" -#: fortran/resolve.c:12312 +#: fortran/resolve.c:12323 #, gcc-internal-format msgid "Undefined specific binding %qs as target of GENERIC %qs at %L" msgstr "" -#: fortran/resolve.c:12324 +#: fortran/resolve.c:12335 #, gcc-internal-format msgid "GENERIC %qs at %L must target a specific binding, %qs is GENERIC, too" msgstr "" -#: fortran/resolve.c:12352 +#: fortran/resolve.c:12363 #, gcc-internal-format msgid "GENERIC %qs at %L can't overwrite specific binding with the same name" msgstr "" -#: fortran/resolve.c:12408 +#: fortran/resolve.c:12419 #, gcc-internal-format, gfc-internal-format msgid "Type-bound operator at %L can't be NOPASS" msgstr "" -#: fortran/resolve.c:12590 +#: fortran/resolve.c:12601 #, gcc-internal-format msgid "" "%qs must be a module procedure or an external procedure with an explicit " "interface at %L" msgstr "" -#: fortran/resolve.c:12632 +#: fortran/resolve.c:12643 #, gcc-internal-format msgid "Procedure %qs with PASS(%s) at %L has no argument %qs" msgstr "" -#: fortran/resolve.c:12646 +#: fortran/resolve.c:12657 #, gcc-internal-format msgid "Procedure %qs with PASS at %L must have at least one argument" msgstr "" -#: fortran/resolve.c:12660 fortran/resolve.c:13155 +#: fortran/resolve.c:12671 fortran/resolve.c:13166 #, gcc-internal-format msgid "Non-polymorphic passed-object dummy argument of %qs at %L" msgstr "" -#: fortran/resolve.c:12668 +#: fortran/resolve.c:12679 #, gcc-internal-format msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived-type %qs" msgstr "" -#: fortran/resolve.c:12677 +#: fortran/resolve.c:12688 #, gcc-internal-format msgid "Passed-object dummy argument of %qs at %L must be scalar" msgstr "" -#: fortran/resolve.c:12683 +#: fortran/resolve.c:12694 #, gcc-internal-format msgid "Passed-object dummy argument of %qs at %L must not be ALLOCATABLE" msgstr "" -#: fortran/resolve.c:12689 +#: fortran/resolve.c:12700 #, gcc-internal-format msgid "Passed-object dummy argument of %qs at %L must not be POINTER" msgstr "" -#: fortran/resolve.c:12718 +#: fortran/resolve.c:12729 #, gcc-internal-format msgid "Procedure %qs at %L has the same name as a component of %qs" msgstr "" -#: fortran/resolve.c:12727 +#: fortran/resolve.c:12738 #, gcc-internal-format msgid "Procedure %qs at %L has the same name as an inherited component of %qs" msgstr "" -#: fortran/resolve.c:12819 +#: fortran/resolve.c:12830 #, gcc-internal-format msgid "" "Derived-type %qs declared at %L must be ABSTRACT because %qs is DEFERRED and " "not overridden" msgstr "" -#: fortran/resolve.c:12917 +#: fortran/resolve.c:12928 #, gcc-internal-format msgid "" "As extending type %qs at %L has a coarray component, parent type %qs shall " "also have one" msgstr "" -#: fortran/resolve.c:12930 +#: fortran/resolve.c:12941 #, gcc-internal-format msgid "Non-extensible derived-type %qs at %L must not be ABSTRACT" msgstr "" -#: fortran/resolve.c:12950 +#: fortran/resolve.c:12961 #, gcc-internal-format msgid "Coarray component %qs at %L must be allocatable with deferred shape" msgstr "" -#: fortran/resolve.c:12960 +#: fortran/resolve.c:12971 #, gcc-internal-format msgid "" "Component %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray" msgstr "" -#: fortran/resolve.c:12971 +#: fortran/resolve.c:12982 #, gcc-internal-format msgid "" "Component %qs at %L with coarray component shall be a nonpointer, " "nonallocatable scalar" msgstr "" -#: fortran/resolve.c:12981 +#: fortran/resolve.c:12992 #, gcc-internal-format msgid "" "Component %qs at %L has the CONTIGUOUS attribute but is not an array pointer" msgstr "" -#: fortran/resolve.c:13082 +#: fortran/resolve.c:13093 #, gcc-internal-format msgid "Procedure pointer component %qs with PASS(%s) at %L has no argument %qs" msgstr "" -#: fortran/resolve.c:13097 +#: fortran/resolve.c:13108 #, gcc-internal-format msgid "" "Procedure pointer component %qs with PASS at %L must have at least one " "argument" msgstr "" -#: fortran/resolve.c:13114 +#: fortran/resolve.c:13125 #, gcc-internal-format msgid "Argument %qs of %qs with PASS(%s) at %L must be of the derived type %qs" msgstr "" -#: fortran/resolve.c:13125 +#: fortran/resolve.c:13136 #, gcc-internal-format msgid "Argument %qs of %qs with PASS(%s) at %L must be scalar" msgstr "" -#: fortran/resolve.c:13135 +#: fortran/resolve.c:13146 #, gcc-internal-format msgid "" "Argument %qs of %qs with PASS(%s) at %L may not have the POINTER attribute" msgstr "" -#: fortran/resolve.c:13145 +#: fortran/resolve.c:13156 #, gcc-internal-format msgid "Argument %qs of %qs with PASS(%s) at %L may not be ALLOCATABLE" msgstr "" -#: fortran/resolve.c:13187 +#: fortran/resolve.c:13198 #, gcc-internal-format msgid "" "Component %qs of %qs at %L has the same name as an inherited type-bound " "procedure" msgstr "" -#: fortran/resolve.c:13200 +#: fortran/resolve.c:13211 #, gcc-internal-format msgid "" "Character length of component %qs needs to be a constant specification " "expression at %L" msgstr "" -#: fortran/resolve.c:13211 +#: fortran/resolve.c:13222 #, gcc-internal-format msgid "" "Character component %qs of %qs at %L with deferred length must be a POINTER " "or ALLOCATABLE" msgstr "" -#: fortran/resolve.c:13242 +#: fortran/resolve.c:13253 #, gcc-internal-format msgid "" "the component %qs is a PRIVATE type and cannot be a component of %qs, which " "is PUBLIC at %L" msgstr "" -#: fortran/resolve.c:13250 +#: fortran/resolve.c:13261 #, gcc-internal-format, gfc-internal-format msgid "Polymorphic component %s at %L in SEQUENCE or BIND(C) type %s" msgstr "" -#: fortran/resolve.c:13259 +#: fortran/resolve.c:13270 #, gcc-internal-format, gfc-internal-format msgid "" "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE " "attribute" msgstr "" -#: fortran/resolve.c:13277 fortran/resolve.c:13289 +#: fortran/resolve.c:13288 fortran/resolve.c:13300 #, gcc-internal-format msgid "" "The pointer component %qs of %qs at %L is a type that has not been declared" msgstr "" -#: fortran/resolve.c:13301 +#: fortran/resolve.c:13312 #, gcc-internal-format msgid "Component %qs with CLASS at %L must be allocatable or pointer" msgstr "" -#: fortran/resolve.c:13369 +#: fortran/resolve.c:13380 #, gcc-internal-format msgid "" "Generic name %qs of function %qs at %L being the same name as derived type " "at %L" msgstr "" -#: fortran/resolve.c:13425 +#: fortran/resolve.c:13436 #, gcc-internal-format msgid "Assumed size array %qs in namelist %qs at %L is not allowed" msgstr "" -#: fortran/resolve.c:13431 +#: fortran/resolve.c:13442 #, gcc-internal-format msgid "NAMELIST array object %qs with assumed shape in namelist %qs at %L" msgstr "" -#: fortran/resolve.c:13437 +#: fortran/resolve.c:13448 #, gcc-internal-format msgid "NAMELIST array object %qs with nonconstant shape in namelist %qs at %L" msgstr "" -#: fortran/resolve.c:13445 +#: fortran/resolve.c:13456 #, gcc-internal-format msgid "" "NAMELIST object %qs with nonconstant character length in namelist %qs at %L" msgstr "" -#: fortran/resolve.c:13455 +#: fortran/resolve.c:13466 #, gcc-internal-format msgid "" "NAMELIST object %qs in namelist %qs at %L is polymorphic and requires a " "defined input/output procedure" msgstr "" -#: fortran/resolve.c:13465 +#: fortran/resolve.c:13476 #, gcc-internal-format msgid "" "NAMELIST object %qs in namelist %qs at %L with ALLOCATABLE or POINTER " @@ -57254,471 +57419,476 @@ msgstr "" #. FIXME: Once UDDTIO is implemented, the following can be #. removed. -#: fortran/resolve.c:13473 +#: fortran/resolve.c:13484 #, gcc-internal-format msgid "" "NAMELIST object %qs in namelist %qs at %L has ALLOCATABLE or POINTER " "components and thus requires a defined input/output procedure" msgstr "" -#: fortran/resolve.c:13490 +#: fortran/resolve.c:13501 #, gcc-internal-format msgid "" "NAMELIST object %qs was declared PRIVATE and cannot be member of PUBLIC " "namelist %qs at %L" msgstr "" -#: fortran/resolve.c:13500 +#: fortran/resolve.c:13511 #, gcc-internal-format msgid "" "NAMELIST object %qs has use-associated PRIVATE components and cannot be " "member of namelist %qs at %L" msgstr "" -#: fortran/resolve.c:13511 +#: fortran/resolve.c:13522 #, gcc-internal-format msgid "" "NAMELIST object %qs has PRIVATE components and cannot be a member of PUBLIC " "namelist %qs at %L" msgstr "" -#: fortran/resolve.c:13538 +#: fortran/resolve.c:13549 #, gcc-internal-format msgid "PROCEDURE attribute conflicts with NAMELIST attribute in %qs at %L" msgstr "" -#: fortran/resolve.c:13557 +#: fortran/resolve.c:13568 #, gcc-internal-format msgid "Parameter array %qs at %L cannot be automatic or of deferred shape" msgstr "" -#: fortran/resolve.c:13569 +#: fortran/resolve.c:13580 #, gcc-internal-format msgid "" "Implicitly typed PARAMETER %qs at %L doesn't match a later IMPLICIT type" msgstr "" -#: fortran/resolve.c:13580 +#: fortran/resolve.c:13591 #, gcc-internal-format, gfc-internal-format msgid "Incompatible derived type in PARAMETER at %L" msgstr "" -#: fortran/resolve.c:13667 +#: fortran/resolve.c:13678 #, gcc-internal-format, gfc-internal-format msgid "PROTECTED attribute conflicts with EXTERNAL attribute at %L" msgstr "" -#: fortran/resolve.c:13670 +#: fortran/resolve.c:13681 #, gcc-internal-format, gfc-internal-format msgid "PROCEDURE attribute conflicts with PROTECTED attribute at %L" msgstr "" -#: fortran/resolve.c:13759 +#: fortran/resolve.c:13770 #, gcc-internal-format msgid "" "%qs at %L has the CONTIGUOUS attribute but is not an array pointer or an " "assumed-shape or assumed-rank array" msgstr "" -#: fortran/resolve.c:13777 +#: fortran/resolve.c:13788 #, gcc-internal-format, gfc-internal-format msgid "Assumed size array at %L must be a dummy argument" msgstr "" -#: fortran/resolve.c:13780 +#: fortran/resolve.c:13791 #, gcc-internal-format, gfc-internal-format msgid "Assumed shape array at %L must be a dummy argument" msgstr "" -#: fortran/resolve.c:13788 +#: fortran/resolve.c:13799 #, gcc-internal-format, gfc-internal-format msgid "Assumed-rank array at %L must be a dummy argument" msgstr "" -#: fortran/resolve.c:13795 +#: fortran/resolve.c:13806 #, gcc-internal-format, gfc-internal-format msgid "" "Assumed-rank array at %L may not have the VALUE or CODIMENSION attribute" msgstr "" -#: fortran/resolve.c:13808 +#: fortran/resolve.c:13819 #, gcc-internal-format, gfc-internal-format msgid "Symbol at %L is not a DUMMY variable" msgstr "" -#: fortran/resolve.c:13814 +#: fortran/resolve.c:13825 #, gcc-internal-format msgid "" "%qs at %L cannot have the VALUE attribute because it is not a dummy argument" msgstr "" -#: fortran/resolve.c:13824 +#: fortran/resolve.c:13835 #, gcc-internal-format msgid "" "Character dummy variable %qs at %L with VALUE attribute must have constant " "length" msgstr "" -#: fortran/resolve.c:13833 +#: fortran/resolve.c:13844 #, gcc-internal-format msgid "" "C interoperable character dummy variable %qs at %L with VALUE attribute must " "have length one" msgstr "" -#: fortran/resolve.c:13846 fortran/resolve.c:14013 +#: fortran/resolve.c:13857 fortran/resolve.c:14024 #, gcc-internal-format msgid "The derived type %qs at %L is of type %qs, which has not been defined" msgstr "" -#: fortran/resolve.c:13860 +#: fortran/resolve.c:13871 #, gcc-internal-format, gfc-internal-format msgid "Variable %s at %L with NO_ARG_CHECK attribute shall be a dummy argument" msgstr "" -#: fortran/resolve.c:13869 +#: fortran/resolve.c:13880 #, gcc-internal-format, gfc-internal-format msgid "" "Variable %s at %L with NO_ARG_CHECK attribute shall be of type TYPE(*) or of " "an numeric intrinsic type" msgstr "" -#: fortran/resolve.c:13878 +#: fortran/resolve.c:13889 #, gcc-internal-format, gfc-internal-format msgid "" "Variable %s at %L with NO_ARG_CHECK attribute may not have the ALLOCATABLE, " "CODIMENSION, POINTER or VALUE attribute" msgstr "" -#: fortran/resolve.c:13886 +#: fortran/resolve.c:13897 #, gcc-internal-format, gfc-internal-format msgid "" "Variable %s at %L with NO_ARG_CHECK attribute may not have the INTENT(OUT) " "attribute" msgstr "" -#: fortran/resolve.c:13893 +#: fortran/resolve.c:13904 #, gcc-internal-format, gfc-internal-format msgid "" "Variable %s at %L with NO_ARG_CHECK attribute shall either be a scalar or an " "assumed-size array" msgstr "" -#: fortran/resolve.c:13913 +#: fortran/resolve.c:13924 #, gcc-internal-format, gfc-internal-format msgid "Assumed type of variable %s at %L is only permitted for dummy variables" msgstr "" -#: fortran/resolve.c:13920 +#: fortran/resolve.c:13931 #, gcc-internal-format, gfc-internal-format msgid "" "Assumed-type variable %s at %L may not have the ALLOCATABLE, CODIMENSION, " "POINTER or VALUE attribute" msgstr "" -#: fortran/resolve.c:13927 +#: fortran/resolve.c:13938 #, gcc-internal-format, gfc-internal-format msgid "Assumed-type variable %s at %L may not have the INTENT(OUT) attribute" msgstr "" -#: fortran/resolve.c:13934 +#: fortran/resolve.c:13945 #, gcc-internal-format, gfc-internal-format msgid "Assumed-type variable %s at %L shall not be an explicit-shape array" msgstr "" -#: fortran/resolve.c:13959 +#: fortran/resolve.c:13970 #, gcc-internal-format msgid "" "Variable %qs at %L cannot be BIND(C) because it is neither a COMMON block " "nor declared at the module level scope" msgstr "" -#: fortran/resolve.c:14039 +#: fortran/resolve.c:14050 #, gcc-internal-format msgid "PUBLIC %s %qs at %L of PRIVATE derived type %qs" msgstr "" -#: fortran/resolve.c:14054 +#: fortran/resolve.c:14065 #, gcc-internal-format, gfc-internal-format msgid "" "Variable %s at %L of type LOCK_TYPE or with subcomponent of type LOCK_TYPE " "must be a coarray" msgstr "" -#: fortran/resolve.c:14067 +#: fortran/resolve.c:14078 #, gcc-internal-format, gfc-internal-format msgid "" "Variable %s at %L of type EVENT_TYPE or with subcomponent of type LOCK_TYPE " "must be a coarray" msgstr "" -#: fortran/resolve.c:14085 +#: fortran/resolve.c:14096 #, gcc-internal-format msgid "" "The INTENT(OUT) dummy argument %qs at %L is ASSUMED SIZE and so cannot have " "a default initializer" msgstr "" -#: fortran/resolve.c:14097 +#: fortran/resolve.c:14108 #, gcc-internal-format msgid "Dummy argument %qs at %L of LOCK_TYPE shall not be INTENT(OUT)" msgstr "" -#: fortran/resolve.c:14106 +#: fortran/resolve.c:14117 #, gcc-internal-format msgid "Dummy argument %qs at %L of EVENT_TYPE shall not be INTENT(OUT)" msgstr "" -#: fortran/resolve.c:14118 +#: fortran/resolve.c:14129 #, gcc-internal-format msgid "" "Function result %qs at %L shall not be a coarray or have a coarray component" msgstr "" -#: fortran/resolve.c:14127 +#: fortran/resolve.c:14138 #, gcc-internal-format msgid "" "Variable %qs at %L of TYPE(C_PTR) or TYPE(C_FUNPTR) shall not be a coarray" msgstr "" -#: fortran/resolve.c:14139 +#: fortran/resolve.c:14150 #, gcc-internal-format msgid "" "Variable %qs at %L with coarray component shall be a nonpointer, " "nonallocatable scalar, which is not a coarray" msgstr "" -#: fortran/resolve.c:14154 +#: fortran/resolve.c:14165 #, gcc-internal-format msgid "" "Variable %qs at %L is a coarray and is not ALLOCATABLE, SAVE nor a dummy " "argument" msgstr "" -#: fortran/resolve.c:14162 +#: fortran/resolve.c:14173 #, gcc-internal-format msgid "" "Coarray variable %qs at %L shall not have codimensions with deferred shape" msgstr "" -#: fortran/resolve.c:14169 +#: fortran/resolve.c:14180 #, gcc-internal-format msgid "Allocatable coarray variable %qs at %L must have deferred shape" msgstr "" -#: fortran/resolve.c:14181 +#: fortran/resolve.c:14192 #, gcc-internal-format msgid "" "Variable %qs at %L is INTENT(OUT) and can thus not be an allocatable coarray " "or have coarray components" msgstr "" -#: fortran/resolve.c:14190 +#: fortran/resolve.c:14201 #, gcc-internal-format msgid "Coarray dummy variable %qs at %L not allowed in BIND(C) procedure %qs" msgstr "" -#: fortran/resolve.c:14206 +#: fortran/resolve.c:14217 #, gcc-internal-format msgid "" "LOGICAL dummy argument %qs at %L with non-C_Bool kind in BIND(C) procedure " "%qs" msgstr "" -#: fortran/resolve.c:14212 +#: fortran/resolve.c:14223 #, gcc-internal-format msgid "" "LOGICAL result variable %qs at %L with non-C_Bool kind in BIND(C) procedure " "%qs" msgstr "" -#: fortran/resolve.c:14291 +#: fortran/resolve.c:14248 +#, gcc-internal-format, gfc-internal-format +msgid "Namelist '%s' can not be an argument to subroutine or function at %L" +msgstr "" + +#: fortran/resolve.c:14317 #, gcc-internal-format, gfc-internal-format msgid "Threadprivate at %L isn't SAVEd" msgstr "" -#: fortran/resolve.c:14302 +#: fortran/resolve.c:14328 #, gcc-internal-format msgid "!$OMP DECLARE TARGET variable %qs at %L isn't SAVEd" msgstr "" -#: fortran/resolve.c:14394 +#: fortran/resolve.c:14420 #, gcc-internal-format msgid "check_data_variable(): Bad expression" msgstr "" -#: fortran/resolve.c:14400 +#: fortran/resolve.c:14426 #, gcc-internal-format msgid "BLOCK DATA element %qs at %L must be in COMMON" msgstr "" -#: fortran/resolve.c:14406 +#: fortran/resolve.c:14432 #, gcc-internal-format msgid "DATA array %qs at %L must be specified in a previous declaration" msgstr "" -#: fortran/resolve.c:14415 +#: fortran/resolve.c:14441 #, gcc-internal-format msgid "DATA element %qs at %L cannot have a coindex" msgstr "" -#: fortran/resolve.c:14429 +#: fortran/resolve.c:14455 #, gcc-internal-format msgid "DATA element %qs at %L is a pointer and so must be a full array" msgstr "" -#: fortran/resolve.c:14475 +#: fortran/resolve.c:14501 #, gcc-internal-format, gfc-internal-format msgid "Nonconstant array section at %L in DATA statement" msgstr "" -#: fortran/resolve.c:14488 +#: fortran/resolve.c:14514 #, gcc-internal-format, gfc-internal-format msgid "DATA statement at %L has more variables than values" msgstr "" -#: fortran/resolve.c:14587 +#: fortran/resolve.c:14613 #, gcc-internal-format, gfc-internal-format msgid "" "start of implied-do loop at %L could not be simplified to a constant value" msgstr "" -#: fortran/resolve.c:14595 +#: fortran/resolve.c:14621 #, gcc-internal-format, gfc-internal-format msgid "" "end of implied-do loop at %L could not be simplified to a constant value" msgstr "" -#: fortran/resolve.c:14603 +#: fortran/resolve.c:14629 #, gcc-internal-format, gfc-internal-format msgid "" "step of implied-do loop at %L could not be simplified to a constant value" msgstr "" -#: fortran/resolve.c:14728 +#: fortran/resolve.c:14754 #, gcc-internal-format, gfc-internal-format msgid "DATA statement at %L has more values than variables" msgstr "" -#: fortran/resolve.c:14893 +#: fortran/resolve.c:14919 #, gcc-internal-format, gfc-internal-format msgid "Label %d at %L defined but not used" msgstr "" -#: fortran/resolve.c:14898 +#: fortran/resolve.c:14924 #, gcc-internal-format, gfc-internal-format msgid "Label %d at %L defined but cannot be used" msgstr "" -#: fortran/resolve.c:14982 +#: fortran/resolve.c:15008 #, gcc-internal-format msgid "" "Derived type variable %qs at %L must have SEQUENCE attribute to be an " "EQUIVALENCE object" msgstr "" -#: fortran/resolve.c:14991 +#: fortran/resolve.c:15017 #, gcc-internal-format msgid "" "Derived type variable %qs at %L cannot have ALLOCATABLE components to be an " "EQUIVALENCE object" msgstr "" -#: fortran/resolve.c:14999 +#: fortran/resolve.c:15025 #, gcc-internal-format msgid "" "Derived type variable %qs at %L with default initialization cannot be in " "EQUIVALENCE with a variable in COMMON" msgstr "" -#: fortran/resolve.c:15015 +#: fortran/resolve.c:15041 #, gcc-internal-format msgid "" "Derived type variable %qs at %L with pointer component(s) cannot be an " "EQUIVALENCE object" msgstr "" -#: fortran/resolve.c:15118 +#: fortran/resolve.c:15144 #, gcc-internal-format, gfc-internal-format msgid "Syntax error in EQUIVALENCE statement at %L" msgstr "" -#: fortran/resolve.c:15133 +#: fortran/resolve.c:15159 #, gcc-internal-format, gfc-internal-format msgid "" "Either all or none of the objects in the EQUIVALENCE set at %L shall have " "the PROTECTED attribute" msgstr "" -#: fortran/resolve.c:15145 +#: fortran/resolve.c:15171 #, gcc-internal-format msgid "" "Common block member %qs at %L cannot be an EQUIVALENCE object in the pure " "procedure %qs" msgstr "" -#: fortran/resolve.c:15154 +#: fortran/resolve.c:15180 #, gcc-internal-format msgid "Named constant %qs at %L cannot be an EQUIVALENCE object" msgstr "" -#: fortran/resolve.c:15227 +#: fortran/resolve.c:15253 #, gcc-internal-format msgid "" "Array %qs at %L with non-constant bounds cannot be an EQUIVALENCE object" msgstr "" -#: fortran/resolve.c:15238 +#: fortran/resolve.c:15264 #, gcc-internal-format msgid "Structure component %qs at %L cannot be an EQUIVALENCE object" msgstr "" -#: fortran/resolve.c:15249 +#: fortran/resolve.c:15275 #, gcc-internal-format, gfc-internal-format msgid "Substring at %L has length zero" msgstr "" -#: fortran/resolve.c:15292 +#: fortran/resolve.c:15318 #, gcc-internal-format msgid "PUBLIC function %qs at %L of PRIVATE type %qs" msgstr "" -#: fortran/resolve.c:15305 +#: fortran/resolve.c:15331 #, gcc-internal-format msgid "ENTRY %qs at %L has no IMPLICIT type" msgstr "" -#: fortran/resolve.c:15322 +#: fortran/resolve.c:15348 #, gcc-internal-format msgid "User operator procedure %qs at %L must be a FUNCTION" msgstr "" -#: fortran/resolve.c:15332 +#: fortran/resolve.c:15358 #, gcc-internal-format msgid "User operator procedure %qs at %L cannot be assumed character length" msgstr "" -#: fortran/resolve.c:15340 +#: fortran/resolve.c:15366 #, gcc-internal-format msgid "User operator procedure %qs at %L must have at least one argument" msgstr "" -#: fortran/resolve.c:15354 +#: fortran/resolve.c:15380 #, gcc-internal-format, gfc-internal-format msgid "First argument of operator interface at %L cannot be optional" msgstr "" -#: fortran/resolve.c:15372 +#: fortran/resolve.c:15398 #, gcc-internal-format, gfc-internal-format msgid "Second argument of operator interface at %L cannot be optional" msgstr "" -#: fortran/resolve.c:15379 +#: fortran/resolve.c:15405 #, gcc-internal-format, gfc-internal-format msgid "Operator interface at %L must have, at most, two arguments" msgstr "" -#: fortran/resolve.c:15457 +#: fortran/resolve.c:15483 #, gcc-internal-format msgid "Contained procedure %qs at %L of a PURE procedure must also be PURE" msgstr "" @@ -57797,7 +57967,7 @@ msgstr "" msgid "Illegal preprocessor directive" msgstr "" -#: fortran/scanner.c:2232 +#: fortran/scanner.c:2235 #, gcc-internal-format msgid "Can't open file %qs" msgstr "" @@ -58586,19 +58756,19 @@ msgstr "" #. Problems occur when we get something like #. integer :: a(lots) = (/(i, i=1, lots)/) -#: fortran/trans-array.c:5648 +#: fortran/trans-array.c:5659 #, gcc-internal-format msgid "" "The number of elements in the array constructor at %L requires an increase " "of the allowed %d upper limit. See %<-fmax-array-constructor%> option" msgstr "" -#: fortran/trans-array.c:7503 +#: fortran/trans-array.c:7514 #, gcc-internal-format msgid "Creating array temporary at %L for argument %qs" msgstr "" -#: fortran/trans-array.c:9582 +#: fortran/trans-array.c:9593 #, gcc-internal-format, gfc-internal-format msgid "bad expression type during walk (%d)" msgstr "" @@ -58702,115 +58872,115 @@ msgstr "" msgid "non-constant initialization expression at %L" msgstr "" -#: fortran/trans-decl.c:1555 +#: fortran/trans-decl.c:1557 #, gcc-internal-format msgid "intrinsic variable which isn't a procedure" msgstr "" -#: fortran/trans-decl.c:3958 fortran/trans-decl.c:6184 +#: fortran/trans-decl.c:4031 fortran/trans-decl.c:6231 #, gcc-internal-format msgid "Return value of function %qs at %L not set" msgstr "" -#: fortran/trans-decl.c:4373 +#: fortran/trans-decl.c:4419 #, gcc-internal-format msgid "Deferred type parameter not yet supported" msgstr "" -#: fortran/trans-decl.c:4601 +#: fortran/trans-decl.c:4648 #, gcc-internal-format msgid "backend decl for module variable %qs already exists" msgstr "" -#: fortran/trans-decl.c:4614 +#: fortran/trans-decl.c:4661 #, gcc-internal-format msgid "Unused PRIVATE module variable %qs declared at %L" msgstr "" -#: fortran/trans-decl.c:5183 +#: fortran/trans-decl.c:5230 #, gcc-internal-format msgid "Dummy argument %qs at %L was declared INTENT(OUT) but was not set" msgstr "" -#: fortran/trans-decl.c:5189 +#: fortran/trans-decl.c:5236 #, gcc-internal-format msgid "" "Derived-type dummy argument %qs at %L was declared INTENT(OUT) but was not " "set and does not have a default initializer" msgstr "" -#: fortran/trans-decl.c:5199 fortran/trans-decl.c:5330 +#: fortran/trans-decl.c:5246 fortran/trans-decl.c:5377 #, gcc-internal-format msgid "Unused dummy argument %qs at %L" msgstr "" -#: fortran/trans-decl.c:5214 +#: fortran/trans-decl.c:5261 #, gcc-internal-format msgid "Unused module variable %qs which has been explicitly imported at %L" msgstr "" -#: fortran/trans-decl.c:5223 +#: fortran/trans-decl.c:5270 #, gcc-internal-format msgid "Unused variable %qs declared at %L" msgstr "" -#: fortran/trans-decl.c:5272 +#: fortran/trans-decl.c:5319 #, gcc-internal-format msgid "Unused parameter %qs declared at %L" msgstr "" -#: fortran/trans-decl.c:5276 +#: fortran/trans-decl.c:5323 #, gcc-internal-format msgid "Unused parameter %qs which has been explicitly imported at %L" msgstr "" -#: fortran/trans-decl.c:5302 +#: fortran/trans-decl.c:5349 #, gcc-internal-format msgid "Return value %qs of function %qs declared at %L not set" msgstr "" -#: fortran/trans-decl.c:5911 +#: fortran/trans-decl.c:5958 #, gcc-internal-format, gfc-internal-format msgid "Sorry, $!ACC DECLARE at %L is not allowed in BLOCK construct" msgstr "" -#: fortran/trans-expr.c:803 +#: fortran/trans-expr.c:827 #, gcc-internal-format, gfc-internal-format msgid "Can't compute the length of the char array at %L." msgstr "" -#: fortran/trans-expr.c:1495 +#: fortran/trans-expr.c:1526 #, gcc-internal-format, gfc-internal-format msgid "Code for reallocating the allocatable variable at %L will be added" msgstr "" -#: fortran/trans-expr.c:1802 +#: fortran/trans-expr.c:1833 #, gcc-internal-format, gfc-internal-format msgid "" "Sorry, coindexed access to a pointer or allocatable component of the " "coindexed coarray at %L is not yet supported" msgstr "" -#: fortran/trans-expr.c:1816 +#: fortran/trans-expr.c:1847 #, gcc-internal-format, gfc-internal-format msgid "" "Sorry, coindexed coarray at %L with allocatable component is not yet " "supported" msgstr "" -#: fortran/trans-expr.c:1839 +#: fortran/trans-expr.c:1870 #, gcc-internal-format, gfc-internal-format msgid "" "Sorry, coindexed access at %L to a scalar component with an array partref is " "not yet supported" msgstr "" -#: fortran/trans-expr.c:3272 +#: fortran/trans-expr.c:3303 #, gcc-internal-format msgid "Unknown intrinsic op" msgstr "" -#: fortran/trans-expr.c:4560 +#: fortran/trans-expr.c:4591 #, gcc-internal-format, gfc-internal-format msgid "Unknown argument list function at %L" msgstr "" @@ -58826,7 +58996,7 @@ msgstr "" msgid "%<dim%> argument of %s intrinsic at %L is not a valid dimension index" msgstr "" -#: fortran/trans-intrinsic.c:9366 fortran/trans-stmt.c:913 +#: fortran/trans-intrinsic.c:9366 fortran/trans-stmt.c:919 #, gcc-internal-format, gfc-internal-format msgid "Sorry, the event component of derived type at %L is not yet supported" msgstr "" @@ -58856,17 +59026,17 @@ msgstr "" msgid "An alternate return at %L without a * dummy argument" msgstr "" -#: fortran/trans-stmt.c:717 +#: fortran/trans-stmt.c:723 #, gcc-internal-format, gfc-internal-format msgid "Sorry, the lock component of derived type at %L is not yet supported" msgstr "" -#: fortran/trans-stmt.c:1172 +#: fortran/trans-stmt.c:1178 #, gcc-internal-format, gfc-internal-format msgid "Sorry, only support for integer kind %d implemented for image-set at %L" msgstr "" -#: fortran/trans-stmt.c:2943 +#: fortran/trans-stmt.c:2951 #, gcc-internal-format msgid "gfc_trans_select(): Bad type for case expr." msgstr "" diff --git a/gcc/ree.c b/gcc/ree.c index 13a7a0586ac..4627b4f99b5 100644 --- a/gcc/ree.c +++ b/gcc/ree.c @@ -1025,11 +1025,11 @@ add_removable_extension (const_rtx expr, rtx_insn *insn, return; } /* For vector mode extensions, ensure that all uses of the - XEXP (src, 0) register are the same extension (both code - and to which mode), as unlike integral extensions lowpart - subreg of the sign/zero extended register are not equal - to the original register, so we have to change all uses or - none. */ + XEXP (src, 0) register are in insn or debug insns, as unlike + integral extensions lowpart subreg of the sign/zero extended + register are not equal to the original register, so we have + to change all uses or none and the current code isn't able + to change them all at once in one transaction. */ else if (VECTOR_MODE_P (GET_MODE (XEXP (src, 0)))) { if (idx == 0) @@ -1046,15 +1046,7 @@ add_removable_extension (const_rtx expr, rtx_insn *insn, break; } rtx_insn *use_insn = DF_REF_INSN (ref_link->ref); - const_rtx use_set; - if (use_insn == insn || DEBUG_INSN_P (use_insn)) - continue; - if (!(use_set = single_set (use_insn)) - || !REG_P (SET_DEST (use_set)) - || GET_MODE (SET_DEST (use_set)) != GET_MODE (dest) - || GET_CODE (SET_SRC (use_set)) != code - || !rtx_equal_p (XEXP (SET_SRC (use_set), 0), - XEXP (src, 0))) + if (use_insn != insn && !DEBUG_INSN_P (use_insn)) { idx = -1U; break; diff --git a/gcc/rtl.h b/gcc/rtl.h index 7f0bfa443a0..8267252b196 100644 --- a/gcc/rtl.h +++ b/gcc/rtl.h @@ -2747,6 +2747,8 @@ extern unsigned int subreg_highpart_offset (machine_mode, machine_mode); extern int byte_lowpart_offset (machine_mode, machine_mode); extern rtx make_safe_from (rtx, rtx); +extern rtx convert_memory_address_addr_space_1 (machine_mode, rtx, + addr_space_t, bool, bool); extern rtx convert_memory_address_addr_space (machine_mode, rtx, addr_space_t); #define convert_memory_address(to_mode,x) \ @@ -3652,6 +3654,8 @@ extern int anti_dependence (const_rtx, const_rtx); extern int canon_anti_dependence (const_rtx, bool, const_rtx, machine_mode, rtx); extern int output_dependence (const_rtx, const_rtx); +extern int canon_output_dependence (const_rtx, bool, + const_rtx, machine_mode, rtx); extern int may_alias_p (const_rtx, const_rtx); extern void init_alias_target (void); extern void init_alias_analysis (void); diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index e1a0319c26f..fdc4b366c74 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -1482,7 +1482,14 @@ simplify_unary_operation_1 (enum rtx_code code, machine_mode mode, rtx op) && REG_POINTER (SUBREG_REG (op)) && GET_MODE (SUBREG_REG (op)) == Pmode)) && !targetm.have_ptr_extend ()) - return convert_memory_address (Pmode, op); + { + temp + = convert_memory_address_addr_space_1 (Pmode, op, + ADDR_SPACE_GENERIC, false, + true); + if (temp) + return temp; + } #endif break; @@ -1604,7 +1611,14 @@ simplify_unary_operation_1 (enum rtx_code code, machine_mode mode, rtx op) && REG_POINTER (SUBREG_REG (op)) && GET_MODE (SUBREG_REG (op)) == Pmode)) && !targetm.have_ptr_extend ()) - return convert_memory_address (Pmode, op); + { + temp + = convert_memory_address_addr_space_1 (Pmode, op, + ADDR_SPACE_GENERIC, false, + true); + if (temp) + return temp; + } #endif break; @@ -3665,7 +3679,7 @@ simplify_binary_operation_1 (enum rtx_code code, machine_mode mode, for (int i = 0; i < XVECLEN (trueop1, 0); i++) { rtx j = XVECEXP (trueop1, 0, i); - if (sel & (1 << UINTVAL (j))) + if (sel & (HOST_WIDE_INT_1U << UINTVAL (j))) all_operand1 = false; else all_operand0 = false; diff --git a/gcc/symtab.c b/gcc/symtab.c index 2d7705e657c..3d3cc4f738c 100644 --- a/gcc/symtab.c +++ b/gcc/symtab.c @@ -1287,6 +1287,61 @@ symtab_node::make_decl_local (void) SYMBOL_REF_WEAK (symbol) = DECL_WEAK (decl); } +/* Copy visibility from N. + This is useful when THIS becomes a transparent alias of N. */ + +void +symtab_node::copy_visibility_from (symtab_node *n) +{ + gcc_checking_assert (n->weakref == weakref); + + ipa_ref *ref; + for (unsigned i = 0; iterate_direct_aliases (i, ref); i++) + { + struct symtab_node *alias = ref->referring; + if (alias->transparent_alias) + alias->copy_visibility_from (n); + } + + if (TREE_CODE (decl) == VAR_DECL) + { + DECL_COMMON (decl) = DECL_COMMON (n->decl); + /* ADDRESSABLE flag is not defined for public symbols. */ + if (TREE_PUBLIC (decl) && !TREE_PUBLIC (n->decl)) + TREE_ADDRESSABLE (decl) = 1; + TREE_STATIC (decl) = TREE_STATIC (n->decl); + } + else gcc_assert (TREE_CODE (decl) == FUNCTION_DECL); + + DECL_COMDAT (decl) = DECL_COMDAT (n->decl); + DECL_WEAK (decl) = DECL_WEAK (n->decl); + DECL_EXTERNAL (decl) = DECL_EXTERNAL (n->decl); + DECL_VISIBILITY_SPECIFIED (decl) = DECL_VISIBILITY_SPECIFIED (n->decl); + DECL_VISIBILITY (decl) = DECL_VISIBILITY (n->decl); + TREE_PUBLIC (decl) = TREE_PUBLIC (n->decl); + DECL_DLLIMPORT_P (decl) = DECL_DLLIMPORT_P (n->decl); + resolution = n->resolution; + set_comdat_group (n->get_comdat_group ()); + call_for_symbol_and_aliases (symtab_node::set_section, + const_cast<char *>(n->get_section ()), true); + externally_visible = n->externally_visible; + if (!DECL_RTL_SET_P (decl)) + return; + + /* Update rtl flags. */ + make_decl_rtl (decl); + + rtx rtl = DECL_RTL (decl); + if (!MEM_P (rtl)) + return; + + rtx symbol = XEXP (rtl, 0); + if (GET_CODE (symbol) != SYMBOL_REF) + return; + + SYMBOL_REF_WEAK (symbol) = DECL_WEAK (decl); +} + /* Walk the alias chain to return the symbol NODE is alias of. If NODE is not an alias, return NODE. Assumes NODE is known to be alias. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ec0b95a8c43..4131b9fcfe4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,530 @@ +2016-04-14 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR target/70669 + * gcc.target/powerpc/pr70669.c: New test. + + PR target/70640 + * gcc.target/powerpc/pr70640.c: Fix test so it correctly works on + a power7 system that does not have an assembler that supports + power8. + +2016-04-14 Martin Sebor <msebor@redhat.com> + + PR c++/69517 + PR c++/70019 + PR c++/70588 + * c-c++-common/ubsan/vla-1.c: Revert. + * g++.dg/cpp1y/vla11.C: Same. + * g++.dg/cpp1y/vla12.C: Same. + * g++.dg/cpp1y/vla13.C: Same. + * g++.dg/cpp1y/vla14.C: Same. + * g++.dg/cpp1y/vla3.C: Same. + * gcc/testsuite/g++.dg/init/array24.C: Same. + * g++.dg/ubsan/vla-1.C: Same. + +2016-04-14 Marek Polacek <polacek@redhat.com> + Jan Hubicka <hubicka@ucw.cz> + + PR c++/70029 + * g++.dg/torture/pr70029.C: New test. + +2016-04-14 Martin Sebor <msebor@redhat.com> + + * g++.dg/cpp1y/vla11.C: Avoid using attribute aligned to increase + type size to prevent failures on targets with very low maximum + alignment. + +2016-04-14 Richard Biener <rguenther@suse.de> + + PR tree-optimization/70623 + * gcc.dg/torture/pr70623.c: New testcase. + * gcc.dg/torture/pr70623-2.c: Likewise. + +2016-04-13 Martin Sebor <msebor@redhat.com> + + PR c++/69517 + PR c++/70019 + PR c++/70588 + * c-c++-common/ubsan/vla-1.c (main): Catch exceptions. + * g++.dg/cpp1y/vla11.C: New test. + * g++.dg/cpp1y/vla12.C: New test. + * g++.dg/cpp1y/vla13.C: New test. + * g++.dg/cpp1y/vla14.C: New test. + * g++.dg/cpp1y/vla3.C: Restore deleted test. + * gcc/testsuite/g++.dg/init/array24.C: Fully brace VLA initializer. + * g++.dg/ubsan/vla-1.C: Disable exceptions. + +2016-04-13 Jakub Jelinek <jakub@redhat.com> + + PR c++/70641 + * g++.dg/opt/pr70641.C: New test. + +2016-04-13 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + PR rtl-optimization/68749 + * gcc.dg/ifcvt-4.c: Use "word_mode" rather than "int" to limit the + effects of argument promotions. + Remove default args to dg-skip-if. + +2016-04-13 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/70635 + * g++.dg/parse/pr70635.C: New. + +2016-04-13 Marek Polacek <polacek@redhat.com> + + PR c++/70639 + * c-c++-common/Wmisleading-indentation-4.c: New test. + +2016-04-13 Marek Polacek <polacek@redhat.com> + + PR c/70436 + * testsuite/gcc.dg/Wparentheses-12.c: New test. + * testsuite/gcc.dg/Wparentheses-13.c: New test. + +2016-04-13 Ilya Enkovich <ilya.enkovich@intel.com> + + * gcc.target/i386/avx512bw-kunpckdq-2.c: New test. + * gcc.target/i386/avx512bw-kunpckwd-2.c: New test. + * gcc.target/i386/avx512f-kunpckbw-2.c: New test. + +2016-04-13 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/70633 + * gcc.c-torture/compile/pr70633.c: New test. + + PR debug/70628 + * gcc.dg/torture/pr70628.c: New test. + +2016-04-12 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70610 + * g++.dg/template/pr70610.C: New test. + * g++.dg/template/pr70610-2.C: New test. + * g++.dg/template/pr70610-3.C: New test. + * g++.dg/template/pr70610-4.C: New test. + +2016-04-12 Jakub Jelinek <jakub@redhat.com> + + * c-c++-common/cilk-plus/SE/ef_error2.c (func2): Use vectorlength + 128 instead of 32. + + PR c++/70571 + * g++.dg/ext/pr70571.C: New test. + +2016-04-12 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR target/70640 + * gcc.target/powerpc/pr70640.c: New test. + +2016-04-12 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/68722 + * g++.dg/parse/pr68722.C: New. + +2016-04-12 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/70596 + * gcc.target/i386/pr70596.c: New test. + +2016-04-12 Nathan Sidwell <nathan@acm.org> + + PR c++/70501 + * g++.dg/init/pr70501.C: New. + +2016-04-12 David Wohlferd <dw@LimeGreenSocks.com> + + * gcc.target/i386/asm-flag-6.c: New test. + +2016-04-12 Tom de Vries <tom@codesourcery.com> + + PR tree-optimization/68756 + * gcc.dg/graphite/pr68756.c: New test. + +2016-04-12 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/70602 + * gcc.c-torture/execute/pr70602.c: New test. + +2016-04-11 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR target/70381 + * gcc.target/powerpc/float128-1.c: New tests to make sure the + __float128 emulator is built and runs. + * gcc.target/powerpc/float128-1.c: Likewise. + + * lib/target-supports.exp (check_ppc_float128_sw_available): + Rework tests for __float128 software and hardware + availability. Fix exit condition to return 0 on success. + +2016-04-11 James Greenhalgh <james.greenhalgh@arm.com> + + PR target/70133 + * gcc.target/aarch64/mgeneral-regs_4.c: Fix expected output. + * gcc.target/aarch64/target_attr_15.c: Likewise. + +2016-04-10 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/69066 + * g++.dg/cpp1y/pr69066.C: New. + +2016-04-09 Jerry DeLisle <jvdelisle@gcc.gnu.org> + + PR fortran/68566 + * gfortran.dg/pr36192.f90: Update test. + * gfortran.dg/pr36192_1.f90: Update test. + * gfortran.dg/real_dimension_1.f: Update test. + * gfortran.dg/parameter_array_init_7.f90: New test. + +2016-04-09 John David Anglin <danglin@gcc.gnu.org> + + PR testsuite/64039 + * gcc.dg/tree-ssa/ssa-dom-cse-2.c: xfail scan-tree-dump on hppa*64*-*-*. + + * gcc.dg/pr70317.c: Add -fno-common on hppa*-*-hpux*. + + PR rtl-optimization/66669 + * gcc.dg/loop-8.c: Skip on hppa*-*-*. + + * gcc.dg/debug/dwarf2/prod-options.c: Adjust scan for hppa*64*-*-*. + + * gcc.dg/pic-1.c: Skip on hppa*-*-*. + * gcc.dg/pie-1.c: Likewise. + * gcc.dg/pic-3.c: Skip on hppa*64*-*-*. + * gcc.dg/pic-4.c: Likewise. + * gcc.dg/pie-3.c: Likewise. + * gcc.dg/pie-4.c: Likewise. + + * gcc.dg/uninit-19.c: Fix warning line for hppa*64*-*-*. + + PR tree-optimization/68644 + * gcc.dg/tree-ssa/ivopts-lt-2.c: Skip on hppa*-*-*. + + PR rtl-optimization/64886 + * gcc.dg/pr64434.c: Skip on hppa*-*-hpux*. + +2016-04-09 Tom de Vries <tom@codesourcery.com> + + PR tree-optimization/68953 + * gcc.dg/graphite/pr68953.c: New test. + +2016-04-09 Dominique d'Humieres <dominiq@lps.ens.fr> + + PR fortran/70592 + * gfortran.dg/deferred_character_16.f90: New test. + +2016-04-09 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/70586 + * gcc.c-torture/execute/pr70586.c: New test. + +2016-04-09 Dominique d'Humieres <dominiq@lps.ens.fr> + + PR sanitizer/70573 + * c-c++-common/asan/halt_on_error-1.c: Replace memset + with __builtin_memset + * c-c++-common/asan/halt_on_error-2.c: Likewise. + +2016-04-08 Cesar Philippidis <cesar@codesourcery.com> + + PR lto/70289 + PR ipa/70348 + PR tree-optimization/70373 + PR middle-end/70533 + PR middle-end/70534 + PR middle-end/70535 + * c-c++-common/goacc/reduction-5.c: New test. + * c-c++-common/goacc/reduction-promotions.c: New test. + * gfortran.dg/goacc/reduction-3.f95: New test. + * gfortran.dg/goacc/reduction-promotions.f90: New test. + +2016-04-08 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70590 + PR c++/70452 + * g++.dg/pr70590.C: New test. + * g++.dg/pr70590-2.C: New test. + +2016-04-08 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/70593 + * gcc.target/i386/pr70593.c: New test. + + PR rtl-optimization/70574 + * gcc.target/i386/avx2-pr70574.c: New test. + +2016-04-08 Maxim Ostapenko <m.ostapenko@samsung.com> + + PR sanitizer/70541 + * c-c++-common/asan/pr70541.c: New test. + +2016-04-08 Tom de Vries <tom@codesourcery.com> + + * c-c++-common/goacc/uninit-firstprivate-clause.c: New test. + * gfortran.dg/goacc/uninit-firstprivate-clause.f95: New test. + +2016-04-08 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + PR target/70566 + * gcc.c-torture/execute/pr70566.c: New test. + +2016-04-08 Tom de Vries <tom@codesourcery.com> + + * c-c++-common/goacc/uninit-copy-clause.c: New test. + * gfortran.dg/goacc/uninit-copy-clause.f95: New test. + +2016-04-08 Alan Modra <amodra@gmail.com> + + * gcc.target/powerpc/pr70117.c: New. + +2016-04-07 Jakub Jelinek <jakub@redhat.com> + + PR testsuite/70581 + * gcc.dg/lto/simd-function_0.c: New test. + + * c-c++-common/attr-simd.c: Add scan-assembler* directives for AVX512F + clones. + * c-c++-common/attr-simd-2.c: Likewise. + * c-c++-common/attr-simd-4.c: Likewise. + * gcc.dg/gomp/simd-clones-2.c: Likewise. + * gcc.dg/gomp/simd-clones-3.c: Likewise. + +2016-04-07 Thomas Preud'homme <thomas.preudhomme@arm.com> + + PR testsuite/70553 + * gcc.target/arm/pr70496.c: Also require arm_arm_ok effective target. + +2016-04-07 Thomas Schwinge <thomas@codesourcery.com> + Tom de Vries <tom@codesourcery.com> + + * gfortran.dg/goacc/kernels-loop-2.f95: Scan for parallelization. + * gfortran.dg/goacc/kernels-loop-data-2.f95: Likewise. + * gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95: Likewise. + * gfortran.dg/goacc/kernels-loop-data-enter-exit.f95: Likewise. + * gfortran.dg/goacc/kernels-loop-data-update.f95: Likewise. + * gfortran.dg/goacc/kernels-loop-data.f95: Likewise. + * gfortran.dg/goacc/kernels-loop.f95: Likewise. + * gfortran.dg/goacc/kernels-loop-n.f95: Likewise, XFAILed. + +2016-04-06 Patrick Palka <ppalka@gcc.gnu.org> + + PR c/70436 + * g++.dg/warn/Wparentheses-29.C: New test. + +2016-04-06 Patrick Palka <ppalka@gcc.gnu.org> + + PR c/70436 + * g++.dg/plugin/pragma_plugin.c (handle_pragma_sayhello): Add + explicit braces to resolve a future -Wparentheses warning. + +2016-04-06 Richard Henderson <rth@redhat.com> + + * gcc.dg/pr61817-1.c: New test. + * gcc.dg/pr61817-2.c: New test. + * gcc.dg/pr69391-1.c: New test. + * gcc.dg/pr69391-2.c: New test. + +2016-04-06 Vladimir Makarov <vmakarov@redhat.com> + + PR rtl-optimization/70398 + * testsuite/gcc.target/aarch64/pr70398.c: New. + +2016-04-06 Eric Botcazou <ebotcazou@adacore.com> + + * gcc.c-torture/execute/20101011-1.c (__VISIUM__): Set DO_TEST to 0. + +2016-04-06 Yvan Roux <yvan.roux@linaro.org> + Pedro Alves <palves@redhat.com> + + * gcc.dg/guality/guality.h (main): Avoid GDB being blocked on signals. + +2016-04-06 Jakub Jelinek <jakub@redhat.com> + + * lib/target-supports.exp (check_effective_target_vect_simd_clones): + Check for avx512f effective targets instead of avx2. + * gcc.dg/gomp/declare-simd-1.c: Add scan-assembler-times directives + for AVX512F clones. + * gcc.dg/gomp/declare-simd-3.c: Likewise. + * g++.dg/gomp/declare-simd-1.C: Likewise. + * g++.dg/gomp/declare-simd-3.C: Likewise. + * g++.dg/gomp/declare-simd-4.C: Likewise. + + PR middle-end/70550 + * c-c++-common/gomp/pr70550-1.c: New test. + * c-c++-common/gomp/pr70550-2.c: New test. + +2016-04-05 Nathan Sidwell <nathan@acm.org> + + PR c++/70512 + * g++.dg/ext/attribute-may-alias-5.C: New. + +2016-04-05 Jakub Jelinek <jakub@redhat.com> + + PR c++/70336 + * c-c++-common/pr70336.c: New test. + * gcc.dg/torture/builtin-isinf_sign-1.c (foo): Guard tests + no longer optimized away at -O0 with #ifndef __OPTIMIZE__. + +2016-04-05 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/66223 + * g++.dg/ipa/devirt-51.C: Use -fsanitize=unreachable. + +2016-04-05 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/70542 + * gcc.dg/torture/pr70542.c: New test. + * gcc.target/i386/avx2-pr70542.c: New test. + +2016-04-05 Zdenek Sojka <zsojka@seznam.cz> + + PR tree-optimization/70509 + * gcc.target/i386/avx512bw-pr70509.c: New test. + +2016-04-05 Patrick Palka <ppalka@gcc.gnu.org> + + PR c++/70452 + * g++.dg/ext/constexpr-vla4.C: New test. + +2016-04-05 Uros Bizjak <ubizjak@gmail.com> + + PR target/70510 + * gcc.target/i386/pr70510.c: New test. + +2016-04-05 Richard Biener <rguenther@suse.de> + + PR tree-optimization/70526 + * g++.dg/torture/pr70526.C: New testcase. + +2016-04-05 Jakub Jelinek <jakub@redhat.com> + + PR target/70525 + * gcc.target/i386/pr70525.c: New test. + +2016-04-05 Richard Biener <rguenther@suse.de> + + PR middle-end/70499 + * g++.dg/torture/pr70499.C: New testcase. + +2016-04-05 Richard Biener <rguenther@suse.de> + + * gcc.dg/tree-ssa/20030814-6.c: Fix testcase, disable FRE, + remove XFAIL. + +2016-04-04 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/70307 + * gcc.dg/torture/pr70307.c: Add -Wno-psabi to dg-options. Prune + rs6000 ABI warnings. + +2016-04-04 Jan Hubicka <hubicka@ucw.cz> + + PR ipa/66223 + * g++.dg/ipa/devirt-51.C: New testcase. + +2016-04-04 Bill Schmidt <wschmidt@linux.vnet.ibm.com> + Jakub Jelinek <jakub@redhat.com> + + PR middle-end/70457 + * gcc.dg/torture/pr70457.c: New. + +2016-04-04 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/67538 + * gfortran.dg/allocate_with_source_19.f08: New test. + +2016-04-04 Andre Vehreschild <vehre@gcc.gnu.org> + + PR fortran/65795 + * gfortran.dg/coarray_allocate_6.f08: New test. + +2016-04-04 Richard Biener <rguenther@suse.de> + + PR rtl-optimization/70484 + * gcc.dg/torture/pr70484.c: New testcase. + +2016-04-04 Marek Polacek <polacek@redhat.com> + + PR c/70307 + * gcc.dg/torture/pr70307.c: New test. + +2016-04-03 Oleg Endo <olegendo@gcc.gnu.org> + + PR target/70416 + PR target/67391 + * gcc.target/sh/torture/pr70416.c: New. + +2016-04-02 Martin Sebor <msebor@redhat.com> + + PR c++/67376 + PR c++/70170 + PR c++/70172 + PR c++/70228 + * g++.dg/cpp0x/constexpr-array-ptr10.C: New test. + * g++.dg/cpp0x/constexpr-array-ptr9.C: New test. + * g++.dg/cpp0x/constexpr-nullptr-1.C: New test. + * g++.dg/cpp0x/constexpr-array5.C: Adjust text of expected diagnostic. + * g++.dg/cpp0x/constexpr-string.C: Same. + * g++.dg/cpp0x/constexpr-wstring2.C: Same. + * g++.dg/cpp0x/pr65398.C: Same. + * g++.dg/ext/constexpr-vla1.C: Same. + * g++.dg/ext/constexpr-vla2.C: Same. + * g++.dg/ext/constexpr-vla3.C: Same. + * g++.dg/ubsan/pr63956.C: Same. + +2016-04-01 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/70467 + * gcc.target/i386/pr70467-2.c: New test. + +2016-04-01 Jakub Jelinek <jakub@redhat.com> + Marek Polacek <polacek@redhat.com> + + PR c++/70488 + * g++.dg/init/new47.C: New test. + +2016-04-01 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> + + PR target/70496 + * gcc.target/arm/pr70496.c: New test. + +2016-04-01 Nathan Sidwell <nathan@acm.org> + + PR c++/68475 + * g++.dg/g++.dg/cpp0x/noexcept29.C: New. + +2016-04-01 Ilya Enkovich <enkovich.gnu@gmail.com> + + PR target/69890 + * gcc.dg/strlenopt.h (memmove): New. + * gcc.target/i386/chkp-strlen-1.c: Include "../../gcc.dg/strlenopt.h" + instead of "string.h". + * gcc.target/i386/chkp-strlen-2.c: Likewise. + * gcc.target/i386/chkp-strlen-3.c: Likewise. + * gcc.target/i386/chkp-strlen-4.c: Likewise. + * gcc.target/i386/chkp-strlen-5.c: Likewise. + * gcc.target/i386/chkp-stropt-1.c: Likewise. + * gcc.target/i386/chkp-stropt-10.c: Likewise. + * gcc.target/i386/chkp-stropt-11.c: Likewise. + * gcc.target/i386/chkp-stropt-12.c: Likewise. + * gcc.target/i386/chkp-stropt-13.c: Likewise. + * gcc.target/i386/chkp-stropt-14.c: Likewise. + * gcc.target/i386/chkp-stropt-15.c: Likewise. + * gcc.target/i386/chkp-stropt-16.c: Likewise. + * gcc.target/i386/chkp-stropt-2.c: Likewise. + * gcc.target/i386/chkp-stropt-3.c: Likewise. + * gcc.target/i386/chkp-stropt-4.c: Likewise. + * gcc.target/i386/chkp-stropt-5.c: Likewise. + * gcc.target/i386/chkp-stropt-6.c: Likewise. + * gcc.target/i386/chkp-stropt-7.c: Likewise. + * gcc.target/i386/chkp-stropt-8.c: Likewise. + * gcc.target/i386/chkp-stropt-9.c: Likewise. + +2016-03-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * g++.dg/template/ptrmem30.C (read): Rename to data_read. + (Holder::foo): Reflect this. + 2016-03-31 Ilya Enkovich <enkovich.gnu@gmail.com> PR target/70442 @@ -61,8 +588,7 @@ Tom de Vries <tom@codesourcery.com> Nathan Sidwell <nathan@codesourcery.com> - * c-c++-common/goacc/combined-directives.c: Clean up dg-* - directives. + * c-c++-common/goacc/combined-directives.c: Clean up dg-* directives. * c-c++-common/goacc/loop-clauses.c: Likewise. * g++.dg/goacc/template.C: Likewise. * gfortran.dg/goacc/combined-directives.f90: Likewise. @@ -113,6 +639,15 @@ * gcc.dg/torture/pr70421.c: New test. * gcc.target/i386/avx512f-pr70421.c: New test. +2016-03-30 H.J. Lu <hongjiu.lu@intel.com> + + PR testsuite/70364 + * gcc.target/i386/cleanup-1.c: Include <stddef.h>. + (check): New function. + (bar): Call check. + (foo): Align stack to 16 bytes when calling bar. + * gcc.target/i386/cleanup-2.c: Likewise. + 2016-03-30 Patrick Palka <ppalka@gcc.gnu.org> PR tree-optimization/59124 @@ -147,12 +682,12 @@ 2016-03-28 Dominique d'Humieres <dominiq@lps.ens.fr> - g++.dg/ext/fnname5.C: Update the test for Darwin. + * g++.dg/ext/fnname5.C: Update the test for Darwin. 2016-03-28 Kirill Yukhin <kirill.yukhin@intel.com> PR target/70406 - * gcc.target/i386/pr70406.c: New test. + * gcc.target/i386/pr70406.c: New test. 2016-03-27 Eric Botcazou <ebotcazou@adacore.com> @@ -233,7 +768,8 @@ 2016-03-24 Jakub Jelinek <jakub@redhat.com> PR target/70290 - * g++.dg/ext/pr70290.C: Add -Wno-psabi -w to dg-options. Formatting. + * g++.dg/ext/pr70290.C: Add -Wno-psabi -w to dg-options. + Fix formatting. 2016-03-24 Richard Biener <rguenther@suse.de> diff --git a/gcc/testsuite/c-c++-common/Wmisleading-indentation-4.c b/gcc/testsuite/c-c++-common/Wmisleading-indentation-4.c new file mode 100644 index 00000000000..d15a4793da4 --- /dev/null +++ b/gcc/testsuite/c-c++-common/Wmisleading-indentation-4.c @@ -0,0 +1,11 @@ +/* PR c++/70639 */ +/* { dg-do compile } */ +/* { dg-options "-Wmisleading-indentation" } */ + +void bar (int); +void +foo (int x) +{ + switch (x); + bar (x); +} diff --git a/gcc/testsuite/c-c++-common/asan/halt_on_error-1.c b/gcc/testsuite/c-c++-common/asan/halt_on_error-1.c index b015e9684bf..52e705d6138 100644 --- a/gcc/testsuite/c-c++-common/asan/halt_on_error-1.c +++ b/gcc/testsuite/c-c++-common/asan/halt_on_error-1.c @@ -9,7 +9,7 @@ volatile int ten = 10; int main() { char x[10]; - memset(x, 0, ten + 1); + __builtin_memset(x, 0, ten + 1); asm volatile ("" : : : "memory"); volatile int res = x[ten]; x[ten] = res + 3; diff --git a/gcc/testsuite/c-c++-common/asan/halt_on_error-2.c b/gcc/testsuite/c-c++-common/asan/halt_on_error-2.c index 4527889af14..35dc0fa2ddc 100644 --- a/gcc/testsuite/c-c++-common/asan/halt_on_error-2.c +++ b/gcc/testsuite/c-c++-common/asan/halt_on_error-2.c @@ -10,7 +10,7 @@ volatile int ten = 10; int main() { char x[10]; - memset(x, 0, ten + 1); + __builtin_memset(x, 0, ten + 1); asm volatile ("" : : : "memory"); volatile int res = x[ten]; x[ten] = res + 3; diff --git a/gcc/testsuite/c-c++-common/asan/pr70541.c b/gcc/testsuite/c-c++-common/asan/pr70541.c new file mode 100644 index 00000000000..b2a4bd5e079 --- /dev/null +++ b/gcc/testsuite/c-c++-common/asan/pr70541.c @@ -0,0 +1,34 @@ +/* { dg-do run } */ +/* { dg-options "-fno-builtin-malloc -fno-builtin-free" } */ +/* { dg-skip-if "" { *-*-* } { "*" } { "-O0" } } */ +/* { dg-shouldfail "asan" } */ + +#include <stdio.h> +#include <stdlib.h> + +struct Simple { + int value; +}; + +int f(struct Simple simple) { + return simple.value; +} + +int main() { + struct Simple *psimple = (struct Simple *) malloc(sizeof(struct Simple)); + psimple->value = 42; + free(psimple); + printf("%d\n", f(*psimple)); + return 0; +} + +/* { dg-output "ERROR: AddressSanitizer:? heap-use-after-free on address\[^\n\r]*" } */ +/* { dg-output "0x\[0-9a-f\]+ at pc 0x\[0-9a-f\]+ bp 0x\[0-9a-f\]+ sp 0x\[0-9a-f\]+\[^\n\r]*(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*READ of size 4 at 0x\[0-9a-f\]+ thread T0\[^\n\r]*(\n|\r\n|\r)" } */ +/* { dg-output " #0 0x\[0-9a-f\]+ +(in _*main (\[^\n\r]*pr70541.c:21|\[^\n\r]*:0)|\[(\]).*(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*freed by thread T0 here:\[^\n\r]*(\n|\r\n|\r)" } */ +/* { dg-output " #0 0x\[0-9a-f\]+ +(in _*(interceptor_|wrap_|)free|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */ +/* { dg-output " #1 0x\[0-9a-f\]+ +(in _*main (\[^\n\r]*pr70541.c:20|\[^\n\r]*:0)|\[(\]).*(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*previously allocated by thread T0 here:\[^\n\r]*(\n|\r\n|\r)" } */ +/* { dg-output " #0 0x\[0-9a-f\]+ +(in _*(interceptor_|wrap_|)malloc|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */ +/* { dg-output " #1 0x\[0-9a-f\]+ +(in _*main (\[^\n\r]*pr70541.c:18|\[^\n\r]*:0)|\[(\])\[^\n\r]*(\n|\r\n|\r)" } */ diff --git a/gcc/testsuite/c-c++-common/attr-simd-2.c b/gcc/testsuite/c-c++-common/attr-simd-2.c index dd08d1865fd..d76eba6a471 100644 --- a/gcc/testsuite/c-c++-common/attr-simd-2.c +++ b/gcc/testsuite/c-c++-common/attr-simd-2.c @@ -19,3 +19,5 @@ int simd_attr (void) /* { dg-final { scan-assembler-times "_ZGVcM4_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN8_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM8_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN16_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM16_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ diff --git a/gcc/testsuite/c-c++-common/attr-simd-4.c b/gcc/testsuite/c-c++-common/attr-simd-4.c index 66cd8f1853d..2a58587ce36 100644 --- a/gcc/testsuite/c-c++-common/attr-simd-4.c +++ b/gcc/testsuite/c-c++-common/attr-simd-4.c @@ -15,9 +15,11 @@ int simd_attr (void) /* { dg-final { scan-assembler-times "_ZGVbN4_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVcN4_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN8_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN16_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-not "_ZGVbM4_simd_attr:" { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-not "_ZGVcM4_simd_attr:" { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-not "_ZGVdM8_simd_attr:" { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-not "_ZGVeM16_simd_attr:" { target { i?86-*-* x86_64-*-* } } } } */ extern #ifdef __cplusplus @@ -33,6 +35,8 @@ int simd_attr2 (void) /* { dg-final { scan-assembler-not "_ZGVbN4_simd_attr2:" { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-not "_ZGVcN4_simd_attr2:" { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-not "_ZGVdN8_simd_attr2:" { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-not "_ZGVeN16_simd_attr2:" { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVbM4_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVcM4_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM8_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM16_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ diff --git a/gcc/testsuite/c-c++-common/attr-simd.c b/gcc/testsuite/c-c++-common/attr-simd.c index 7674588ecd3..dde2475f9b0 100644 --- a/gcc/testsuite/c-c++-common/attr-simd.c +++ b/gcc/testsuite/c-c++-common/attr-simd.c @@ -18,6 +18,8 @@ int simd_attr (void) /* { dg-final { scan-assembler-times "_ZGVcM4_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN8_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM8_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN16_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM16_simd_attr:" 1 { target { i?86-*-* x86_64-*-* } } } } */ extern #ifdef __cplusplus @@ -36,3 +38,5 @@ int simd_attr2 (void) /* { dg-final { scan-assembler-times "_ZGVcM4_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN8_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM8_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN16_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM16_simd_attr2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ diff --git a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c index 518d6407eeb..89e0c39b02c 100644 --- a/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c +++ b/gcc/testsuite/c-c++-common/cilk-plus/SE/ef_error2.c @@ -1,8 +1,8 @@ /* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */ /* { dg-options "-fcilkplus -Wall" } */ -__attribute__((vector (vectorlength(32)))) -//#pragma omp simd simdlen (32) +__attribute__((vector (vectorlength(128)))) +//#pragma omp simd simdlen (128) int func2 (int x, int y) /* { dg-warning "unsupported simdlen" } */ { return (x+y); diff --git a/gcc/testsuite/c-c++-common/goacc/reduction-5.c b/gcc/testsuite/c-c++-common/goacc/reduction-5.c new file mode 100644 index 00000000000..74daad35a5d --- /dev/null +++ b/gcc/testsuite/c-c++-common/goacc/reduction-5.c @@ -0,0 +1,16 @@ +/* Integer reductions. */ + +#define n 1000 + +int +main(void) +{ + int v1; + +#pragma acc parallel reduction(+:v1) private(v1) /* { dg-error "appears more than once in data clauses" } */ + ; +#pragma acc parallel reduction(+:v1) firstprivate(v1) /* { dg-error "appears more than once in data clauses" } */ + ; + + return 0; +} diff --git a/gcc/testsuite/c-c++-common/goacc/reduction-promotions.c b/gcc/testsuite/c-c++-common/goacc/reduction-promotions.c new file mode 100644 index 00000000000..4cc09da9980 --- /dev/null +++ b/gcc/testsuite/c-c++-common/goacc/reduction-promotions.c @@ -0,0 +1,32 @@ +/* Integer reductions. */ + +#define n 1000 + +int +main(void) +{ + int v1, v2; + +#pragma acc parallel reduction(+:v1,v2) + ; +#pragma acc parallel reduction(+:v1,v2) copy(v1,v2) + ; +#pragma acc parallel reduction(+:v1,v2) pcopy(v1,v2) + ; +#pragma acc parallel reduction(+:v1,v2) present(v1,v2) + ; +#pragma acc parallel reduction(+:v1,v2) copyin(v1,v2) /* { dg-warning "incompatible data clause with reduction" } */ + ; +#pragma acc parallel reduction(+:v1,v2) pcopyin(v1,v2) /* { dg-warning "incompatible data clause with reduction" } */ + ; +#pragma acc parallel reduction(+:v1,v2) copyout(v1,v2) /* { dg-warning "incompatible data clause with reduction" } */ + ; +#pragma acc parallel reduction(+:v1,v2) pcopyout(v1,v2) /* { dg-warning "incompatible data clause with reduction" } */ + ; +#pragma acc parallel reduction(+:v1,v2) create(v1,v2) /* { dg-warning "incompatible data clause with reduction" } */ + ; +#pragma acc parallel reduction(+:v1,v2) pcreate(v1,v2) /* { dg-warning "incompatible data clause with reduction" } */ + ; + + return 0; +} diff --git a/gcc/testsuite/c-c++-common/goacc/uninit-copy-clause.c b/gcc/testsuite/c-c++-common/goacc/uninit-copy-clause.c new file mode 100644 index 00000000000..b3cc4459328 --- /dev/null +++ b/gcc/testsuite/c-c++-common/goacc/uninit-copy-clause.c @@ -0,0 +1,38 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-Wuninitialized" } */ + +void +foo (void) +{ + int i; + +#pragma acc kernels + { + i = 1; + } + +} + +void +foo2 (void) +{ + int i; + +#pragma acc kernels copy (i) + { + i = 1; + } + +} + +void +foo3 (void) +{ + int i; + +#pragma acc kernels copyin(i) + { + i = 1; + } + +} diff --git a/gcc/testsuite/c-c++-common/goacc/uninit-firstprivate-clause.c b/gcc/testsuite/c-c++-common/goacc/uninit-firstprivate-clause.c new file mode 100644 index 00000000000..2584033a8c5 --- /dev/null +++ b/gcc/testsuite/c-c++-common/goacc/uninit-firstprivate-clause.c @@ -0,0 +1,25 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-Wuninitialized" } */ + +void +foo (void) +{ + int i; + +#pragma acc parallel + { + i = 1; + } +} + + +void +foo2 (void) +{ + int i; + +#pragma acc parallel firstprivate (i) /* { dg-warning "is used uninitialized in this function" } */ + { + i = 1; + } +} diff --git a/gcc/testsuite/c-c++-common/gomp/pr70550-1.c b/gcc/testsuite/c-c++-common/gomp/pr70550-1.c new file mode 100644 index 00000000000..493d4175993 --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/pr70550-1.c @@ -0,0 +1,81 @@ +/* PR middle-end/70550 */ +/* { dg-do compile } */ +/* { dg-additional-options "-Wuninitialized" } */ + +#ifdef __SIZEOF_INT128__ +typedef __int128 T; +#else +typedef long long T; +#endif + +void bar (T); +#pragma omp declare target (bar) + +void +foo (void) +{ + { + int i; + #pragma omp target defaultmap(tofrom:scalar) /* { dg-bogus "is used uninitialized in this function" } */ + { + i = 26; + bar (i); + } + } + { + T j; + #pragma omp target defaultmap(tofrom:scalar) /* { dg-bogus "is used uninitialized in this function" } */ + { + j = 37; + bar (j); + } + } + { + int i; + #pragma omp target /* { dg-bogus "is used uninitialized in this function" } */ + { + i = 26; + bar (i); + } + } + { + T j; + #pragma omp target /* { dg-bogus "is used uninitialized in this function" } */ + { + j = 37; + bar (j); + } + } + { + int i; + #pragma omp target firstprivate (i) /* { dg-warning "is used uninitialized in this function" } */ + { + i = 26; + bar (i); + } + } + { + T j; + #pragma omp target firstprivate (j) /* { dg-warning "is used uninitialized in this function" } */ + { + j = 37; + bar (j); + } + } + { + int i; + #pragma omp target private (i) /* { dg-bogus "is used uninitialized in this function" } */ + { + i = 26; + bar (i); + } + } + { + T j; + #pragma omp target private (j) /* { dg-bogus "is used uninitialized in this function" } */ + { + j = 37; + bar (j); + } + } +} diff --git a/gcc/testsuite/c-c++-common/gomp/pr70550-2.c b/gcc/testsuite/c-c++-common/gomp/pr70550-2.c new file mode 100644 index 00000000000..31c34da4711 --- /dev/null +++ b/gcc/testsuite/c-c++-common/gomp/pr70550-2.c @@ -0,0 +1,55 @@ +/* PR middle-end/70550 */ +/* { dg-do compile } */ +/* { dg-additional-options "-Wuninitialized" } */ + +void bar (int); + +void +foo (void) +{ + int i, j, k, l, m, n, o, p, q; + #pragma omp task /* { dg-bogus "is used uninitialized in this function" } */ + { + i = 2; + bar (i); + } + #pragma omp taskloop /* { dg-bogus "is used uninitialized in this function" } */ + for (j = 0; j < 10; j++) + { + k = 7; + bar (k); + } + #pragma omp task firstprivate (l) /* { dg-warning "is used uninitialized in this function" } */ + { + l = 2; + bar (l); + } + #pragma omp taskloop firstprivate (m) /* { dg-warning "is used uninitialized in this function" } */ + for (j = 0; j < 10; j++) + { + m = 7; + bar (m); + } + #pragma omp task shared (n) /* { dg-bogus "is used uninitialized in this function" } */ + { + n = 2; + bar (n); + } + #pragma omp taskloop shared (o) /* { dg-bogus "is used uninitialized in this function" } */ + for (j = 0; j < 10; j++) + { + o = 7; + bar (o); + } + #pragma omp task private (p) /* { dg-bogus "is used uninitialized in this function" } */ + { + p = 2; + bar (p); + } + #pragma omp taskloop shared (q) /* { dg-bogus "is used uninitialized in this function" } */ + for (j = 0; j < 10; j++) + { + q = 7; + bar (q); + } +} diff --git a/gcc/testsuite/c-c++-common/pr70336.c b/gcc/testsuite/c-c++-common/pr70336.c new file mode 100644 index 00000000000..095bd569b18 --- /dev/null +++ b/gcc/testsuite/c-c++-common/pr70336.c @@ -0,0 +1,37 @@ +/* PR c++/70336 */ +/* { dg-do compile } */ +/* { dg-options "-Wconversion" } */ + +void +f1 (unsigned char * x, int y, int z) +{ + x[z / 8] |= (unsigned char) (0x80 >> y); /* { dg-bogus "may alter its value" } */ +} + +unsigned char +f2 (unsigned char x, int y) +{ + x = x | (unsigned char) (0x80 >> y); /* { dg-bogus "may alter its value" } */ + return x; +} + +unsigned char +f3 (unsigned char x, int y) +{ + x = x | (unsigned char) (y & 255); /* { dg-bogus "may alter its value" } */ + return x; +} + +unsigned char +f4 (unsigned char x, unsigned char y) +{ + x = x | (unsigned char) (y & 255); /* { dg-bogus "may alter its value" } */ + return x; +} + +unsigned char +f5 (unsigned char x, int y) +{ + x = (unsigned char) (y & 255); /* { dg-bogus "may alter its value" } */ + return x; +} diff --git a/gcc/testsuite/g++.dg/abi/abi-tag19.C b/gcc/testsuite/g++.dg/abi/abi-tag19.C new file mode 100644 index 00000000000..e21d7b1256d --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/abi-tag19.C @@ -0,0 +1,4 @@ +struct __attribute__((abi_tag("a"))) X { }; +template<typename T> struct Y { X f() { return X(); } }; +template struct Y<int>; +// { dg-final { scan-assembler "_ZN1YIiE1fB1aEv" } } diff --git a/gcc/testsuite/g++.dg/abi/abi-tag20.C b/gcc/testsuite/g++.dg/abi/abi-tag20.C new file mode 100644 index 00000000000..229c1709be5 --- /dev/null +++ b/gcc/testsuite/g++.dg/abi/abi-tag20.C @@ -0,0 +1,15 @@ +// { dg-do compile { target c++11 } } +// { dg-final { scan-assembler "_ZN1B1gIcEEN7__cxx111XEv" } } + +inline namespace __cxx11 __attribute__((__abi_tag__ ("ABI_TAG"))) { + class X {}; +} +struct B { + X f(); + template <class U> X g(); +}; +int main() { + B b; + b.g<char>(); + return 0; +} diff --git a/gcc/testsuite/g++.dg/cpp0x/auto47.C b/gcc/testsuite/g++.dg/cpp0x/auto47.C new file mode 100644 index 00000000000..0d80be6d72f --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/auto47.C @@ -0,0 +1,7 @@ +// PR c++/70622 +// { dg-do compile { target c++11 } } + +int main() +{ + auto x = 0, *y = &x; +} diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr10.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr10.C new file mode 100644 index 00000000000..f75b3c3227f --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr10.C @@ -0,0 +1,112 @@ +// PR c++/67376 - [5/6 regression] Comparison with pointer to past-the-end +// of array fails inside constant expression +// This test verifies the aspect of the bug raised in comment #10, +// specifically comparing pointers to null. The basic regression test +// is in g++.dg/cpp0x/constexpr-67376.C. +// Note also that while the description of the bug talks about pointers +// pointing past the end of arrays but the prolem is more general than +// that and involves all constexpr object pointers. + +// { dg-do compile { target c++11 } } +// { dg-additional-options "-Wall -Wextra" } + +namespace A { + +extern int i; + +constexpr int *p0 = &i; + +constexpr bool b0 = p0; // { dg-warning "address of .A::i." } +constexpr bool b1 = p0 == 0; // { dg-warning "address of .A::i." } +constexpr bool b2 = p0 != 0; // { dg-warning "address of .A::i." } +constexpr bool b3 = p0 < 0; // { dg-warning "ordered comparison" } +constexpr bool b4 = p0 <= 0; // { dg-warning "ordered comparison" } +constexpr bool b5 = p0 > 0; // { dg-warning "ordered comparison" } +constexpr bool b6 = p0 >= 0; // { dg-warning "ordered comparison" } + +constexpr bool b7 = !p0; // { dg-warning "address of .A::i." } +constexpr bool b8 = 0 == p0; // { dg-warning "address of .A::i." } +constexpr bool b9 = 0 != p0; // { dg-warning "address of .A::i." } +constexpr bool b10 = 0 < p0; // { dg-warning "ordered comparison" } +constexpr bool b11 = 0 <= p0; // { dg-warning "ordered comparison" } +constexpr bool b12 = 0 > p0; // { dg-warning "ordered comparison" } +constexpr bool b13 = 0 >= p0; // { dg-warning "ordered comparison" } + +} + +namespace B { + +// PR c++/70172 - incorrect reinterpret_cast from integer to pointer +// error on invalid constexpr initialization + +struct S { int a, b[1]; } s; + +constexpr S *p0 = &s; + +constexpr int *q0 = p0->b; // { dg-bogus "reinterpret_cast from integer to pointer" } + +} + +namespace WeakRefTest1 { + +extern __attribute__ ((weak)) int i; + +constexpr int *p0 = &i; + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wextra" +// Suppress warning: ordered comparison of pointer with integer zero + +constexpr bool b0 = p0; // { dg-error "not a constant expression" } +constexpr bool b1 = p0 == 0; // { dg-error "not a constant expression" } +constexpr bool b2 = p0 != 0; // { dg-error "not a constant expression" } +constexpr bool b4 = p0 <= 0; // { dg-error "not a constant expression" } +constexpr bool b5 = p0 > 0; // { dg-error "not a constant expression" } + +constexpr bool b7 = !p0; // { dg-error "not a constant expression" } +constexpr bool b8 = 0 == p0; // { dg-error "not a constant expression" } +constexpr bool b9 = 0 != p0; // { dg-error "not a constant expression" } +constexpr bool b10 = 0 < p0; // { dg-error "not a constant expression" } +constexpr bool b13 = 0 >= p0; // { dg-error "not a constant expression" } + +// The following are accepted as constant expressions due to bug c++/70196. +constexpr bool b3 = p0 < 0; +constexpr bool b6 = p0 >= 0; +constexpr bool b11 = 0 <= p0; +constexpr bool b12 = 0 > p0; + +#pragma GCC diagnostic pop + +} + +namespace WeakRefTest2 { + +extern __attribute__ ((weak)) int i; + +constexpr int *p1 = &i + 1; + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wextra" +// Suppress warning: ordered comparison of pointer with integer zero + +constexpr bool b0 = p1; // { dg-error "not a constant expression" } +constexpr bool b1 = p1 == 0; // { dg-error "not a constant expression" } +constexpr bool b2 = p1 != 0; // { dg-error "not a constant expression" } +constexpr bool b4 = p1 <= 0; // { dg-error "not a constant expression" } +constexpr bool b5 = p1 > 0; // { dg-error "not a constant expression" } + +constexpr bool b7 = !p1; // { dg-error "not a constant expression" } +constexpr bool b8 = 0 == p1; // { dg-error "not a constant expression" } +constexpr bool b9 = 0 != p1; // { dg-error "not a constant expression" } +constexpr bool b10 = 0 < p1; // { dg-error "not a constant expression" } +constexpr bool b13 = 0 >= p1; // { dg-error "not a constant expression" } + +// The following are accepted as constant expressions due to bug c++/70196. +// constexpr bool b3 = p1 < 0; +// constexpr bool b6 = p1 >= 0; +// constexpr bool b11 = 0 <= p1; +// constexpr bool b12 = 0 > p1; + +#pragma GCC diagnostic pop + +} diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr9.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr9.C new file mode 100644 index 00000000000..f0250cbcd22 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array-ptr9.C @@ -0,0 +1,57 @@ +// PR c++/67376 - [5/6 regression] Comparison with pointer to past-the-end +// of array fails inside constant expression +// { dg-do compile { target c++11 } } + +int a [2]; + +constexpr const int* pa[] = { + a, + a + 0, + a + 1, + a + 2, + &a [0], + &a [0] + 0, + &a [0] + 1, + &a [0] + 2, + &a [1], + &a [1] - 1, + &a [1] + 0, + &a [1] + 1, + &a [2] - 2, + &a [2] - 1, + &a [2] + 0 +}; + +#define Assert(e) static_assert ((e), #e) + +Assert (!(a == 0)); +Assert (!(a == (int*)0)); +Assert (!(a == nullptr)); + +Assert (a != 0); +Assert (a != (int*)0); +Assert (a != nullptr); + +Assert (!(0 == a)); +Assert (!((int*)0 == a)); +Assert (!(nullptr == a)); + +Assert (0 != a); +Assert ((int*)0 != a); +Assert (nullptr != a); + +bool constexpr test_eq (unsigned inx) +{ + return inx ? pa [inx - 1] == 0 && 0 == pa [inx - 1] + && test_eq (inx - 1) : pa [inx] == 0 && 0 == pa [inx]; +} + +Assert (!test_eq (sizeof pa / sizeof *pa)); + +bool constexpr test_ne (unsigned inx) +{ + return inx ? pa [inx - 1] != 0 && 0 != pa [inx - 1] + && test_ne (inx - 1) : pa [inx] != 0 && 0 != pa [inx]; +} + +Assert (test_ne (sizeof pa / sizeof *pa)); diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C index 4605b4be902..00dfd6db4df 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array5.C @@ -3,7 +3,7 @@ // Reliable ICE constexpr int n[3] = {}; -constexpr int k = n[-1]; // { dg-error "negative" } +constexpr int k = n[-1]; // { dg-error "array subscript" } // Some random byte -constexpr char c = "foo"[-1000]; // { dg-error "negative" } +constexpr char c = "foo"[-1000]; // { dg-error "array subscript" } diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C index 45e1ed27fae..42ca30a38ce 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ctor12.C @@ -3,6 +3,7 @@ template <typename Tp> struct C { + C() = default; constexpr C(const Tp& r) { } }; diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C index a67505d749b..8d352d0bb99 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C @@ -7,6 +7,6 @@ struct A { struct B: A { }; constexpr int f(B b) { return b.i; } -struct C { C(); }; // { dg-message "calls non-constexpr" } -struct D: C { }; // { dg-message "no constexpr constructor" } +struct C { C(); }; // { dg-message "" } +struct D: C { }; // { dg-message "" } constexpr int g(D d) { return 42; } // { dg-error "invalid type" } diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C index 30e0a643bcb..bf95b2443c7 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C @@ -6,6 +6,6 @@ struct A A(int); }; -struct B : A {}; // { dg-error "no matching" } +struct B : A {}; // { dg-message "" } constexpr int foo(B) { return 0; } // { dg-error "invalid type" } diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-initlist10.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-initlist10.C new file mode 100644 index 00000000000..c12347dcc80 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-initlist10.C @@ -0,0 +1,11 @@ +// PR c++/70648 +// { dg-do compile { target c++11 } } + +struct C +{ + template <class... U> + constexpr C (...) : c { static_cast<U &&>(0)... } {} + int c[1]; +}; + +static constexpr int b = C{}.c[0]; diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C new file mode 100644 index 00000000000..420a04b7768 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C @@ -0,0 +1,125 @@ +// Verify the correctness of folding relational expressions involving +// pointers to array elements and struct data members and null pointers. +// Although the C semantics of relational expressions are only defined +// for pointers to objects, C++ makes them well-defined when +// (nullptr < p) yields true. See the discussion of the patch for +// c++/67376 on gcc-patches for additional background. + +// { dg-do compile { target c++11 } } +// { dg-options "-fdump-tree-optimized" } + +// Runtime assert. Used for potentially invalid expressions. +#define RA(e) ((e) ? (void)0 : __builtin_abort ()) + +// Static assert. Used for valid core constant expressions. +#define SA(e) static_assert ((e), #e) + +void test_first_array_element () +{ + static constexpr int a[] = { 0 }; + constexpr const int *null = 0; + constexpr const int *pi = a; + + // The following are valid constant expressions since in &*pi + // the '&*' "cancel each other out." + SA (!(null == &*pi)); + SA ( (null != &*pi)); + + // The validity of the relational expressions involving null + // pointers in a constexpr context is questionable. Use a run + // time assertion to verify these. + RA ( (null < &*pi)); + RA ( (null <= &*pi)); + RA (!(null > &*pi)); + RA (!(null >= &*pi)); + + SA (!(&*pi == null)); + SA ( (&*pi != null)); + RA (!(&*pi < null)); + RA (!(&*pi <= null)); + RA ( (&*pi > null)); + RA ( (&*pi >= null)); + + // The following are valid constant expressions since &pi [0] is + // equivalent to &*pi. + SA (!(null == &pi [0])); + SA ( (null != &pi [0])); + RA ( (null < &pi [0])); + RA ( (null <= &pi [0])); + RA (!(null > &pi [0])); + RA (!(null >= &pi [0])); + + SA (!(&pi [0] == null)); + SA ( (&pi [0] != null)); + RA (!(&pi [0] < null)); + RA (!(&pi [0] <= null)); + RA ( (&pi [0] > null)); + RA ( (&pi [0] >= null)); +} + +void test_first_null_array_element () +{ + constexpr const int *pi = 0; + constexpr const int *qi = 0; + + // The following are valid constant expressions since in &*qi + // the '&*' "cancel each other out." + SA ( (pi == &*qi)); + SA (!(pi != &*qi)); + + // The validity of the relational expressions involving null + // pointers in a constexpr context is questionable. + RA (!(pi < &*qi)); + RA ( (pi <= &*qi)); + RA (!(pi > &*qi)); + RA ( (pi >= &*qi)); + + SA ( (&*qi == pi)); + SA (!(&*qi != pi)); + RA (!(&*qi < pi)); + RA ( (&*qi <= pi)); + RA (!(&*qi > pi)); + RA ( (&*qi >= pi)); + + // The following are valid constant expressions since &qi [0] is + // equivalent to &*qi. + SA ( (pi == &qi [0])); + SA (!(pi != &qi [0])); + RA (!(pi < &qi [0])); + RA ( (pi <= &qi [0])); + RA (!(pi > &qi [0])); + RA ( (pi >= &qi [0])); + + SA ( (&qi [0] == pi)); + SA (!(&qi [0] != pi)); + RA (!(&qi [0] < pi)); + RA ( (&qi [0] <= pi)); + RA (!(&qi [0] > pi)); + RA ( (&qi [0] >= pi)); +} + +void test_first_struct_member () +{ + static struct S { int a, b; } s = { 0, 0 }; + + constexpr const int *p = 0; + constexpr const S *q = &s; + + SA (!(p == &q->b)); + SA ( (p != &q->b)); + RA ( (p < &q->b)); + RA ( (p <= &q->b)); + RA (!(p > &q->b)); + RA (!(p >= &q->b)); + + SA (!(&q->b == p)); + SA ( (&q->b != p)); + RA (!(&q->b < p)); + RA (!(&q->b <= p)); + RA ( (&q->b > p)); + RA ( (&q->b >= p)); +} + +// Expect all runtime asserts to have been eliminated as a result +// of the tested expressions constant folded into true. +// { dg-final { scan-assembler-not "abort" } } diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-string.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-string.C index 0f561a4360c..41fa4664ed6 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-string.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-string.C @@ -2,4 +2,4 @@ constexpr char c1 = "hi"[1]; constexpr char c2 = "hi"[2]; -constexpr char c3 = "hi"[3]; // { dg-error "out of bound" } +constexpr char c3 = "hi"[3]; // { dg-error "array subscript" } diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-template9.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-template9.C new file mode 100644 index 00000000000..2ca641d77e3 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-template9.C @@ -0,0 +1,17 @@ +// PR c++/70543 +// { dg-do compile { target c++11 } } + +template <typename> +struct X +{ + template <unsigned int = 0> + static constexpr int + calc (void) + { + return 0; + } + + static constexpr unsigned int value = calc (); + + char foo[value]; +}; diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C index db79a9c75e2..4055e0ee8ec 100644 --- a/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-wstring2.C @@ -1,6 +1,6 @@ // PR c++/48570 // { dg-do compile { target c++11 } } -constexpr wchar_t c1 = L"hi"[3]; // { dg-error "out of bound" } -constexpr char16_t c2 = u"hi"[3]; // { dg-error "out of bound" } -constexpr char32_t c3 = U"hi"[3]; // { dg-error "out of bound" } +constexpr wchar_t c1 = L"hi"[3]; // { dg-error "array subscript" } +constexpr char16_t c2 = u"hi"[3]; // { dg-error "array subscript" } +constexpr char32_t c3 = U"hi"[3]; // { dg-error "array subscript" } diff --git a/gcc/testsuite/g++.dg/cpp0x/enum_base3.C b/gcc/testsuite/g++.dg/cpp0x/enum_base3.C new file mode 100644 index 00000000000..3cb2d6d8186 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/enum_base3.C @@ -0,0 +1,29 @@ +// PR c++/70627 +// { dg-do compile { target c++11 } } + +struct D; +struct A +{ + D *operator->(); +}; +struct B +{ + template <typename... T> void foo (T &&...) {} +}; +typedef unsigned char G; +enum class H : G; +struct C +{ +}; +struct D : C +{ + B foo () const { B a; a.foo (d); } + H d; +}; +struct F : C +{ + void foo (); + A f; +}; +enum class H : unsigned char; +void F::foo () { B b = f->foo (); } diff --git a/gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C b/gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C index 7a22f8830ec..7e2d58b422e 100644 --- a/gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C +++ b/gcc/testsuite/g++.dg/cpp0x/inh-ctor19.C @@ -8,7 +8,7 @@ struct A struct B : A { - using A::A; // { dg-error "inherited" } + using A::A; }; constexpr B b; // { dg-error "literal" } diff --git a/gcc/testsuite/g++.dg/cpp0x/noexcept29.C b/gcc/testsuite/g++.dg/cpp0x/noexcept29.C new file mode 100644 index 00000000000..8b920c5b4bc --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/noexcept29.C @@ -0,0 +1,19 @@ +// { dg-do compile { target c++11 } } +// { dg-additional-options "-fno-exceptions" } + +// PR68475 we used to not check eh spec matching with -fno-exceptions, +// but this could lead to ICEs. + +template <typename> struct traits; + +template <typename T> struct X +{ + void Foo () noexcept (traits <T>::foo ()); // { dg-message "previous declaration" } +}; + +template <typename T> +void +X<T>::Foo () noexcept (traits <T>::bar ()) // { dg-error "different exception specifier" } +{ +} + diff --git a/gcc/testsuite/g++.dg/cpp0x/pr65398.C b/gcc/testsuite/g++.dg/cpp0x/pr65398.C index a4aeba580fc..6bd34a4ffca 100644 --- a/gcc/testsuite/g++.dg/cpp0x/pr65398.C +++ b/gcc/testsuite/g++.dg/cpp0x/pr65398.C @@ -12,12 +12,12 @@ constexpr char c5 = *(&s[2] + 0); constexpr char c6 = *(&s[0] + 2); constexpr char c7 = *(&s[2] + 1); -constexpr char d1 = *(&s[4] - 0); // { dg-error "array subscript out of bound" } +constexpr char d1 = *(&s[4] - 0); // { dg-error "array subscript" } constexpr char d2 = *(&s[4] - 1); constexpr char d3 = *(&s[4] - 2); constexpr char d4 = *(&s[4] - 3); constexpr char d5 = *(&s[4] - 4); -constexpr char d6 = *(&s[4] - 5); // { dg-error "negative array subscript" } +constexpr char d6 = *(&s[4] - 5); // { dg-error "array subscript" } /* Don't accept invalid stuff. */ constexpr char e1 = *(&s[5] - 1); // { dg-error "is not a constant expression" } @@ -45,12 +45,12 @@ constexpr int i5 = *(&l[2] + 0); constexpr int i6 = *(&l[0] + 2); constexpr int i7 = *(&l[2] + 1); -constexpr char j1 = *(&l[4] - 0); // { dg-error "array subscript out of bound" } +constexpr char j1 = *(&l[4] - 0); // { dg-error "array subscript" } constexpr char j2 = *(&l[4] - 1); constexpr char j3 = *(&l[4] - 2); constexpr char j4 = *(&l[4] - 3); constexpr char j5 = *(&l[4] - 4); -constexpr char j6 = *(&l[4] - 5); // { dg-error "negative array subscript" } +constexpr char j6 = *(&l[4] - 5); // { dg-error "array subscript" } /* Don't accept invalid stuff. */ constexpr char k1 = *(&l[5] - 1); // { dg-error "is not a constant expression" } diff --git a/gcc/testsuite/g++.dg/cpp0x/pr70528.C b/gcc/testsuite/g++.dg/cpp0x/pr70528.C new file mode 100644 index 00000000000..af1c84e1e94 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/pr70528.C @@ -0,0 +1,16 @@ +// PR c++/70258 +// { dg-do compile { target c++11 } } + +template <class T> +struct H +{ + template <typename A = T, typename = decltype (A())> + H (); +}; + +struct J { + struct K { + int First = 0; + }; + H<K> FunctionMDInfo; +}; diff --git a/gcc/testsuite/g++.dg/cpp1y/constexpr-recursion1.C b/gcc/testsuite/g++.dg/cpp1y/constexpr-recursion1.C new file mode 100644 index 00000000000..79e0b5a8da1 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/constexpr-recursion1.C @@ -0,0 +1,16 @@ +// PR c++/70449 +// { dg-do compile { target c++14 } } +// { dg-options "-Wall" } + +template <int N> +constexpr int f1 () +{ + enum E { a = f1<0> () }; // { dg-error "called in a constant expression before its definition is complete|is not an integer constant" } + return 0; +} + +constexpr int f3 () +{ + enum E { a = f3 () }; // { dg-error "called in a constant expression before its definition is complete|is not an integer constant" } + return 0; +} diff --git a/gcc/testsuite/g++.dg/cpp1y/pr69066.C b/gcc/testsuite/g++.dg/cpp1y/pr69066.C new file mode 100644 index 00000000000..263e1b61e9f --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/pr69066.C @@ -0,0 +1,75 @@ +// PR c++/69066 +// { dg-do compile { target c++14 } } + +template <typename T> T&& declval(); + +template<typename T, T v> +struct integral_constant +{ + static constexpr T value = v; + typedef T value_type; + typedef integral_constant<T, v> type; + constexpr operator value_type() const { return value; } +}; + +typedef integral_constant<bool, true> true_type; +typedef integral_constant<bool, false> false_type; + +template <typename...> +using void_t = void; + +template <typename, typename = void> +class is_zero_callable : public false_type +{ +}; + +template <typename T> +class is_zero_callable<T, void_t<decltype(declval<T>()())>> + : public true_type +{ +}; + +template <typename TF, bool TLastStep> +struct curry_impl +{ + static auto exec(TF f) + { + // Bind `x` to subsequent calls. + return [=](auto x) + { + auto bound_f = [=](auto... xs) -> decltype(f(x, xs...)) + { + return f(x, xs...); + }; + + // Recursive step. + return curry_impl<decltype(bound_f), + is_zero_callable<decltype(bound_f)>{}>::exec(bound_f); + }; + } +}; + +template <typename TF> +struct curry_impl<TF, true> +{ + static auto exec(TF f) + { + return f(); + } +}; + +template <typename TF> +auto curry(TF f) +{ + return curry_impl<TF, is_zero_callable<decltype(f)>{}>::exec(f); +} + +int main() +{ + auto sum = [](int x, int y) + { + return x + y; + }; + + (void)curry(sum)(1)(1); +} diff --git a/gcc/testsuite/g++.dg/cpp1y/vla11.C b/gcc/testsuite/g++.dg/cpp1y/vla11.C new file mode 100644 index 00000000000..36609abe53b --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/vla11.C @@ -0,0 +1,712 @@ +// PR c++/69517 - [5/6 regression] SEGV on a VLA with excess initializer +// elements +// PR c++/70019 - VLA size overflow not detected +// +// Runtime test to verify that attempting to either construct a VLA with +// erroneous bounds, or initialize one with an initializer-list that +// contains more elements than the VLA's non-constant (runtime) bounds +// causes an exception to be thrown. Test also verifies that valid +// VLAs and their initializers don't cause such an exception. + +// { dg-do run { target c++11 } } +// { dg-additional-options "-Wno-vla" } + +#pragma GCC diagnostic ignored "-Wvla" + +#define INT_MAX __INT_MAX__ +#define LONG_MAX __LONG_MAX__ +#define SIZE_MAX __SIZE_MAX__ +#define UINT_MAX (~0U) +#define ULONG_MAX (~0LU) + +#define INT_MIN (-__INT_MAX__ - 1) +#define LONG_MIN (-__LONG_MAX__ - 1) + +// The size of the largest allowed VLA in bytes. Bigger objects +// cause an exception to be thrown. Unless the maximum size is +// obscenely large, smaller objects should be successfully created +// provided there's enough stack space. See TEST_NEAR_VLA_MAX_SIZE +// below. +#define MAX (__SIZE_MAX__ / 2) + +// Define to non-zero to exercise very large VLAs with size just +// below the implementation-defined maximum. +#define TEST_NEAR_VLA_MAX_SIZE 0 + +// Define to zero to enable tests that cause an ICE due to c++/58646. +#define BUG_58646 1 + +// Helper macro to make it possible to pass as one multpile arguments +// to another macro. +#define Init(...) __VA_ARGS__ + +typedef __SIZE_TYPE__ size_t; + +// Incremented for each test failure. +int fail; + +// Used to convert a constant array dimension to a non-constant one. +template <class T> +T d (T n) +{ + return n; +} + +// Verify either that an expected exception has been thrown or that +// one hasn't been thrown if one isn't expected. +int __attribute__ ((noclone, noinline)) +sink (void *p, int line, bool expect, const char *expr) +{ + if (!p != expect) + { + __builtin_printf ("line %i: Assertion failed: '%s': " + "exception unexpectedly %sthrown\n", + line, expr, !p ? "" : "not "); + ++fail; + } + else + { +#if defined DEBUG && DEBUG + __builtin_printf ("line %i: Assertion passed: '%s': " + "exception %sthrown as expected\n", + line, expr, !p ? "" : "not "); +#endif + } + return 0; +} + +#define _CAT(name, line) name ## line +#define CAT(name, line) _CAT (name, line) + +#define STR(...) #__VA_ARGS__ + +// Type to exercise VLA with. TYPESIZE is the size of the type in bytes. +// Using a template serves two purposes. First, it makes it possible to +// parameterize the test on VLAs of different size. Second, it verifies +// that the checking code can deal with templates (i.e., completes +// the element type of the VLA when necessary). +template <unsigned TypeSize> +union TestType +{ + char data; + char padding [TypeSize]; +}; + +// Test function invoked with a pointer to each test case. Must +// return a value though what value doesn't matter. +int __attribute__ ((noclone, noinline)) +tester (int (*testcase)(const char*), + const char *str, int line, bool expect) +{ + try + { + return testcase (str); + } + catch (...) + { + return sink (0, line, expect, str); + } +} + +// Macro to define a unique specialization of a function template to +// exercise a VLA of type T, rank N, with dimensions given by Dims +// and initializer Init. Expect is true when the VLA initialization +// is expected to trigger an exception. +// The macro creates a unique global dummy int object and initializes +// it with the result of the function. The dummy object servers no +// other purpose but to call the function. The function verifies +// the expected postconditions. +#define TEST(TypeSize, Dims, Init, Expect) \ + static int CAT (testcase, __LINE__)(const char *str) \ + { \ + TestType<TypeSize> vla Dims Init; \ + static_assert (sizeof (TestType<TypeSize>) == TypeSize, \ + "wrong test type size"); \ + return sink (vla, __LINE__, Expect, str); \ + } \ + const int CAT (dummy, __LINE__) \ + = tester (CAT (testcase, __LINE__), \ + "T<" #TypeSize "> a" #Dims " " STR (Init) ";", \ + __LINE__, Expect) + + +// Create and run a test function exercising a VLA definition +// of one of the following forms: +// TestType<Size> VLA Dims; // uninitialized (with Init ()) +// or: +// TestType<Size> VLA Dims Init; // initialized (with = Init ({...}) +// +// +-- Element Size (in Bytes) +// | +-- VLA Dimensions (constant as in [3], otherwise d(3)) +// | | +-- VLA Initializer Expression (if any) +// | | | +-- Expect Exception +// | | | | +// V V V V +TEST (1, [d(0)], Init (/* none*/), true); // uninitialized + +#if !BUG_58646 +// The following causes an ICE due to c++/58646. +TEST (1, [d(0)], Init ({}), true); +#endif +TEST (1, [d(0)], Init ({1}), true); // initialized with " {1}" +TEST (1, [d(0)], = Init ({1}), true); // initialized with "= {1}" + +TEST (1, [d(1)], Init (), false); +TEST (1, [d(1)], Init ({}), false); +TEST (1, [d(1)], = Init ({}), false); +TEST (1, [d(1)], Init ({1}), false); +TEST (1, [d(1)], = Init ({1}), false); +TEST (1, [d(1)], Init ({1, 2}), true); +TEST (1, [d(1)], = Init ({1, 2}), true); + +TEST (1, [d(2)], Init (), false); +TEST (1, [d(2)], Init ({}), false); +TEST (1, [d(2)], Init ({1}), false); +TEST (1, [d(2)], Init ({1, 2}), false); +TEST (1, [d(2)], Init ({1, 2, 3}), true); + +#if TEST_NEAR_VLA_MAX_SIZE +// Very large but not erroneous one dimensional VLAs. +TEST (1, [d(MAX)], Init (), false); +TEST (1, [d(MAX)], Init ({}), false); +TEST (1, [d(MAX)], Init ({1}), false); +TEST (1, [d(MAX)], Init ({1, 2}), false); +TEST (1, [d(MAX)], Init ({1, 2, 3}), false); + +TEST ( 2, [d(MAX / 2)], Init (), false); +TEST ( 4, [d(MAX / 4)], Init (), false); +TEST ( 8, [d(MAX / 8)], Init (), false); +TEST (16, [d(MAX / 16)], Init (), false); +TEST (32, [d(MAX / 32)], Init (), false); +TEST (64, [d(MAX / 64)], Init (), false); +#endif // TEST_NEAR_VLA_MAX_SIZE + +// One dimensional VLAs with a negative upper bound. +TEST (1, [d(LONG_MIN)], Init (), true); +TEST (1, [d(INT_MIN)], Init (), true); +TEST (1, [d(-1234)], Init (), true); +TEST (1, [d(-1)], Init (), true); + +// Excessively large one dimensional VLAs. +TEST ( 1, [d(MAX + 1)], Init (), true); +TEST ( 2, [d(MAX)], Init (), true); +TEST ( 4, [d(MAX / 2)], Init (), true); +TEST ( 4, [d(MAX / 3)], Init (), true); +TEST ( 8, [d(MAX / 2)], Init (), true); +TEST ( 8, [d(MAX / 3)], Init (), true); +TEST ( 8, [d(MAX / 4)], Init (), true); +TEST ( 8, [d(MAX / 5)], Init (), true); +TEST ( 8, [d(MAX / 6)], Init (), true); +TEST ( 8, [d(MAX / 7)], Init (), true); +TEST (16, [d(MAX / 15)], Init (), true); +TEST (32, [d(MAX / 31)], Init (), true); +TEST (64, [d(MAX / 63)], Init (), true); +TEST ( 1, [d(SIZE_MAX)], Init (), true); + +TEST (1, [d(LONG_MIN)], Init ({}), true); +TEST (1, [d(INT_MIN)], Init ({}), true); +TEST (1, [d(-1)], Init ({}), true); + +TEST (1, [d(SIZE_MAX)], Init ({}), true); + +TEST (1, [d(LONG_MIN)], Init ({0}), true); +TEST (1, [d(INT_MIN)], Init ({0}), true); +TEST (1, [d(-1)], Init ({0}), true); + +TEST (1, [d(SIZE_MAX)], Init ({0}), true); + +TEST ( 1, [d(SIZE_MAX/2) + 1], Init (), true); +TEST ( 2, [d(SIZE_MAX/4) + 1], Init (), true); +TEST ( 4, [d(SIZE_MAX/8) + 1], Init (), true); +TEST ( 8, [d(SIZE_MAX/16) + 1], Init (), true); +TEST (16, [d(SIZE_MAX/32) + 1], Init (), true); + +TEST ( 1, [d(SIZE_MAX/2) + 1], Init ({1}), true); +TEST ( 2, [d(SIZE_MAX/4) + 1], Init ({1, 2}), true); +TEST ( 4, [d(SIZE_MAX/8) + 1], Init ({1, 2, 3}), true); +TEST ( 8, [d(SIZE_MAX/16) + 1], Init ({1, 2, 3, 4}), true); +TEST (16, [d(SIZE_MAX/32) + 1], Init ({1, 2, 3, 4, 5}), true); + +// Two dimensional VLAs with one constant bound. + +TEST (1, [1][d(0)], Init (), true); + +#if !BUG_58646 +// The following causes an ICE due to c++/58646. +TEST (1, [1][d(0)], Init ({}), true); +#endif +TEST (1, [ ][d(0)], Init ({{1}}), true); // unspecified bound +TEST (1, [1][d(0)], Init ({{1}}), true); + +TEST (1, [1][d(1)], Init (), false); +TEST (1, [1][d(1)], Init ({{1}}), false); +TEST (1, [1][d(1)], Init ({{1, 2}}), true); +TEST (1, [ ][d(1)], Init ({{1, 2}}), true); + +TEST (1, [1][d(2)], Init (), false); +TEST (1, [1][d(2)], Init ({{1}}), false); +TEST (1, [1][d(2)], Init ({{1, 2}}), false); +TEST (1, [ ][d(2)], Init ({{1, 2}}), false); +TEST (1, [1][d(2)], Init ({{1, 2, 3}}), true); +TEST (1, [ ][d(2)], Init ({{1, 2, 3}}), true); + +TEST (1, [2][d(1)], Init (), false); +TEST (1, [2][d(1)], Init ({{1}}), false); +TEST (1, [ ][d(1)], Init ({{1}}), false); +TEST (1, [2][d(1)], Init ({{1}, {2}}), false); +TEST (1, [ ][d(1)], Init ({{1}, {2}}), false); +TEST (1, [2][d(1)], Init ({{1, 2}}), true); +TEST (1, [ ][d(1)], Init ({{1, 2}}), true); +TEST (1, [2][d(1)], Init ({{1}, {2, 3}}), true); +TEST (1, [ ][d(1)], Init ({{1}, {2, 3}}), true); +TEST (1, [2][d(1)], Init ({{1, 2, 3}}), true); +TEST (1, [ ][d(1)], Init ({{1, 2, 3}}), true); +TEST (1, [2][d(1)], Init ({{1, 2, 3}, {4}}), true); +TEST (1, [ ][d(1)], Init ({{1, 2, 3}, {4}}), true); +TEST (1, [2][d(1)], Init ({{1, 2}, {3, 4}}), true); +TEST (1, [ ][d(1)], Init ({{1, 2}, {3, 4}}), true); + +TEST (1, [2][d(2)], Init (), false); +TEST (1, [2][d(2)], Init ({{1}}), false); +TEST (1, [2][d(2)], Init ({{1, 2}}), false); +TEST (1, [2][d(2)], Init ({{1, 2}, {3}}), false); +TEST (1, [2][d(2)], Init ({{1, 2}, {3, 4}}), false); +TEST (1, [2][d(2)], Init ({{1}, {2, 3, 4}}), true); +TEST (1, [2][d(2)], Init ({{1}, {2, 3, 4, 5}}), true); +TEST (1, [2][d(2)], Init ({{1, 2}, {3, 4, 5}}), true); +TEST (1, [2][d(2)], Init ({{1, 2, 3}, {4, 5}}), true); +TEST (1, [2][d(2)], Init ({{1, 2, 3}, {4, 5, 6}}), true); + +TEST (1, [2][d(3)], Init (), false); +TEST (1, [2][d(3)], Init ({{1}}), false); +TEST (1, [2][d(3)], Init ({{1, 2}}), false); +TEST (1, [2][d(3)], Init ({{1, 2}, {3}}), false); +TEST (1, [2][d(3)], Init ({{1, 2}, {3, 4}}), false); +TEST (1, [2][d(3)], Init ({{1}, {2, 3, 4}}), false); +TEST (1, [2][d(3)], Init ({{1}, {2, 3, 4, 5}}), true); +TEST (1, [2][d(3)], Init ({{1, 2}, {3, 4, 5}}), false); +TEST (1, [2][d(3)], Init ({{1, 2, 3}, {4, 5}}), false); +TEST (1, [2][d(3)], Init ({{1, 2, 3}, {4, 5, 6}}), false); +TEST (1, [2][d(3)], Init ({{1, 2, 3}, {4, 5, 6, 7}}), true); +TEST (1, [2][d(3)], Init ({{1, 2, 3, 4}, {5, 6, 7}}), true); +TEST (1, [2][d(3)], Init ({{1, 2, 3, 4, 5}, {6, 7}}), true); +TEST (1, [2][d(3)], Init ({{1, 2, 3, 4, 5, 6}, {7}}), true); +TEST (1, [2][d(3)], Init ({{1, 2, 3, 4, 5, 6, 7}}), true); + +#if TEST_NEAR_VLA_MAX_SIZE +TEST (1, [1][d(MAX)], Init (), false); +# if !BUG_58646 +// The following causes an ICE due to c++/58646. +TEST (1, [1][d(MAX)], Init ({}), false); +# endif +TEST (1, [1][d(MAX)], Init ({{1}}), false); +TEST (1, [1][d(MAX)], Init ({{1, 2}}), false); +TEST (1, [1][d(MAX)], Init ({{1, 2, 3}}), false); +TEST (1, [1][d(MAX)], Init ({{1, 2, 3, 4}}), false); + +TEST (1, [2][d(MAX / 2)], Init (), false); +TEST (1, [2][d(MAX / 2)], Init ({{1}}), false); +TEST (1, [2][d(MAX / 2)], Init ({{1, 2}}), false); +TEST (1, [2][d(MAX / 2)], Init ({{1, 2, 3}}), false); +TEST (1, [2][d(MAX / 2)], Init ({{1, 2, 3, 4}}), false); +TEST (1, [2][d(MAX / 2)], Init ({{1}, {2}}), false); +TEST (1, [2][d(MAX / 2)], Init ({{1}, {2, 3}}), false); +TEST (1, [2][d(MAX / 2)], Init ({{1, 2}, {3}}), false); +TEST (1, [2][d(MAX / 2)], Init ({{1, 2}, {3, 4}}), false); +TEST (1, [2][d(MAX / 2)], Init ({{1, 2, 3}, {4}}), false); +TEST (1, [2][d(MAX / 2)], Init ({{1, 2, 3}, {4, 5}}), false); +TEST (1, [2][d(MAX / 2)], Init ({{1, 2, 3}, {4, 5, 6}}), false); +#endif // TEST_NEAR_VLA_MAX_SIZE + +// Excessively large two dimensional VLAs. +TEST (1, [1][d(LONG_MIN)], Init (), true); +TEST (1, [1][d(INT_MIN)], Init (), true); +TEST (1, [1][d(-1)], Init (), true); + +TEST (1, [1][d(SIZE_MAX)], Init (), true); + +#if !BUG_58646 +// The following cause an ICE due to c++/58646. +TEST (1, [1][d(LONG_MIN)], Init ({}), true); +TEST (1, [1][d(INT_MIN)], Init ({}), true); +TEST (1, [1][d(-1)], Init ({}), true); +TEST (1, [1][d(SIZE_MAX)], Init ({}), true); +#endif + +TEST (1, [1][d(LONG_MIN)], Init ({{0}}), true); +TEST (1, [1][d(INT_MIN)], Init ({{0}}), true); +TEST (1, [1][d(-1)], Init ({{0}}), true); +TEST (1, [1][d(SIZE_MAX)], Init ({{0}}), true); + +TEST (1, [d(LONG_MIN)][1], Init (), true); +TEST (1, [d(INT_MIN)][1], Init (), true); +TEST (1, [d(-1)][1], Init (), true); +TEST (1, [d(SIZE_MAX)][1], Init (), true); + +TEST (1, [d(LONG_MIN)][1], Init ({}), true); +TEST (1, [d(INT_MIN)][1], Init ({}), true); +TEST (1, [d(-1)][1], Init ({}), true); +TEST (1, [d(SIZE_MAX)][1], Init ({}), true); + +TEST (1, [d(LONG_MIN)][1], Init ({{0}}), true); +TEST (1, [d(INT_MIN)][1], Init ({{0}}), true); +TEST (1, [d(-1)][1], Init ({{0}}), true); +TEST (1, [d(SIZE_MAX)][1], Init ({{0}}), true); + +// Two dimensional VLAs with no constant bound. +TEST (1, [d(0)][d(0)], Init (), true); +TEST (1, [d(0)][d(0)], Init ({}), true); +#if !BUG_58646 +// The following cause an ICE due to c++/58646. +TEST (1, [d(0)][d(0)], Init ({{}}), true); +TEST (1, [d(0)][d(0)], Init ({{}, {}}), true); +#endif + +TEST (1, [d(0)][d(0)], Init ({{1}}), true); +TEST (1, [d(0)][d(0)], Init ({{1, 2}}), true); +#if !BUG_58646 +TEST (1, [d(0)][d(0)], Init ({{1}, {}}), true); +TEST (1, [d(0)][d(0)], Init ({{}, {1}}), true); +#endif + +TEST (1, [d(1)][d(0)], Init (), true); +TEST (1, [d(1)][d(0)], Init ({}), true); +TEST (1, [d(1)][d(0)], Init ({{1}}), true); + +TEST (1, [d(1)][d(1)], Init (), false); +TEST (1, [d(1)][d(1)], Init ({{1}}), false); +TEST (1, [d(1)][d(1)], Init ({{1, 2}}), true); + +TEST (1, [d(1)][d(2)], Init (), false); +TEST (1, [d(1)][d(2)], Init ({{1}}), false); +TEST (1, [d(1)][d(2)], Init ({{1, 2}}), false); +TEST (1, [d(1)][d(2)], Init ({{1, 2, 3}}), true); + +TEST (1, [d(2)][d(1)], Init (), false); +TEST (1, [d(2)][d(1)], Init ({{1}}), false); +TEST (1, [d(2)][d(1)], Init ({{1}, {2}}), false); +TEST (1, [d(2)][d(1)], Init ({{1, 2}}), true); +TEST (1, [d(2)][d(1)], Init ({{1}, {2, 3}}), true); +TEST (1, [d(2)][d(1)], Init ({{1, 2, 3}}), true); +TEST (1, [d(2)][d(1)], Init ({{1, 2, 3}, {4}}), true); +TEST (1, [d(2)][d(1)], Init ({{1, 2}, {3, 4}}), true); + +TEST (1, [d(2)][d(2)], Init (), false); +TEST (1, [d(2)][d(2)], Init ({{1}}), false); +TEST (1, [d(2)][d(2)], Init ({{1, 2}}), false); +TEST (1, [d(2)][d(2)], Init ({{1, 2}, {3}}), false); +TEST (1, [d(2)][d(2)], Init ({{1, 2}, {3, 4}}), false); +TEST (1, [d(2)][d(2)], Init ({{1}, {2, 3, 4}}), true); +TEST (1, [d(2)][d(2)], Init ({{1}, {2, 3, 4, 5}}), true); +TEST (1, [d(2)][d(2)], Init ({{1, 2}, {3, 4, 5}}), true); +TEST (1, [d(2)][d(2)], Init ({{1, 2, 3}, {4, 5}}), true); +TEST (1, [d(2)][d(2)], Init ({{1, 2, 3}, {4, 5, 6}}), true); + +TEST (1, [d(2)][d(3)], Init (), false); +TEST (1, [d(2)][d(3)], Init ({{1}}), false); +TEST (1, [d(2)][d(3)], Init ({{1, 2}}), false); +TEST (1, [d(2)][d(3)], Init ({{1, 2}, {3}}), false); +TEST (1, [d(2)][d(3)], Init ({{1, 2}, {3, 4}}), false); +TEST (1, [d(2)][d(3)], Init ({{1}, {2, 3, 4}}), false); +TEST (1, [d(2)][d(3)], Init ({{1}, {2, 3, 4, 5}}), true); +TEST (1, [d(2)][d(3)], Init ({{1, 2}, {3, 4, 5}}), false); +TEST (1, [d(2)][d(3)], Init ({{1, 2, 3}, {4, 5}}), false); +TEST (1, [d(2)][d(3)], Init ({{1, 2, 3}, {4, 5, 6}}), false); +TEST (1, [d(2)][d(3)], Init ({{1, 2, 3}, {4, 5, 6, 7}}), true); +TEST (1, [d(2)][d(3)], Init ({{1, 2, 3, 4}, {5, 6, 7}}), true); +TEST (1, [d(2)][d(3)], Init ({{1, 2, 3, 4, 5}, {6, 7}}), true); +TEST (1, [d(2)][d(3)], Init ({{1, 2, 3, 4, 5, 6}, {7}}), true); +TEST (1, [d(2)][d(3)], Init ({{1, 2, 3, 4, 5, 6, 7}}), true); + +#if TEST_NEAR_VLA_MAX_SIZE +TEST (1, [d(1)][d(MAX)], Init (), false); +TEST (1, [d(1)][d(MAX)], Init ({}), false); +TEST (1, [d(1)][d(MAX)], Init ({{1}}), false); +TEST (1, [d(1)][d(MAX)], Init ({{1, 2}}), false); +TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3}}), false); +TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3, 4}}), false); +TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3, 4, 5}}), false); +TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3, 4, 5, 6}}), false); +TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3, 4, 5, 6, 7}}), false); +TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3, 4, 5, 6, 7, 8}}), false); +TEST (1, [d(1)][d(MAX)], Init ({{1, 2, 3, 4, 5, 6, 7, 8, 9}}), false); + +TEST (1, [d(2)][d(MAX / 2)], Init (), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3, 4}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3, 4, 5}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3, 4, 5, 6}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3, 4, 5, 6, 7}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3, 4, 5, 6, 7, 8}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3, 4, 5, 6, 7, 8, 9}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1}, {2}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1}, {2, 3}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2}, {3}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2}, {3, 4}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3}, {4}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3}, {4, 5}}), false); +TEST (1, [d(2)][d(MAX / 2)], Init ({{1, 2, 3}, {4, 5, 6}}), false); +#endif + +TEST (1, [d(2)][d(MAX)], Init (), true); +TEST (1, [d(2)][d(MAX)], Init ({{1}}), true); +TEST (1, [d(MAX)][d(MAX)], Init ({{1, 2}}), true); +TEST (1, [d(0)][d(MAX)], Init ({{1}, {2}}), true); +TEST (1, [d(INT_MAX)][d(MAX)], Init ({{1}, {2, 3}}), true); +TEST (1, [d(SIZE_MAX)][d(MAX)], Init ({{1, 2}, {3, 4}, {5}}), true); + +// Erroneous two-dimensional VLAs with size exceeding SIZE_MAX / 2 +// (those must be rejected because no object can be bigger than that, +// otherwise pointer arithmetic breaks). +TEST ( 1, [2][d(SIZE_MAX/2)], Init (), true); +TEST ( 2, [2][d(SIZE_MAX/4)], Init (), true); +TEST ( 4, [2][d(SIZE_MAX/8)], Init (), true); +TEST ( 8, [2][d(SIZE_MAX/16)], Init (), true); +TEST (16, [2][d(SIZE_MAX/32)], Init (), true); + +TEST ( 1, [d(SIZE_MAX/2)][2], Init (), true); +TEST ( 2, [d(SIZE_MAX/4)][2], Init (), true); +TEST ( 4, [d(SIZE_MAX/8)][2], Init (), true); +TEST ( 8, [d(SIZE_MAX/16)][2], Init (), true); +TEST (16, [d(SIZE_MAX/32)][2], Init (), true); + +// Verify that the unspecified bound is factored into the computation +// of the total size. +TEST ( 1, [][d(SIZE_MAX/2)], Init ({{1}, {2}}), true); +TEST ( 2, [][d(SIZE_MAX/4)], Init ({{1}, {2}}), true); +TEST ( 4, [][d(SIZE_MAX/8)], Init ({{1}, {2}}), true); +TEST ( 8, [][d(SIZE_MAX/16)], Init ({{1}, {2}}), true); +TEST (16, [][d(SIZE_MAX/32)], Init ({{1}, {2}}), true); +TEST (16, [][d(SIZE_MAX/64)], Init ({{1}, {2}, {3}}), true); + +// Three dimensional VLAs with two constant bounds. + +TEST (1, [1][1][d(-1)], Init (), true); +TEST (1, [1][1][d(0)], Init (), true); + +#if !BUG_58646 +// The following causes an ICE due to c++/58646. +TEST (1, [1][1][d(0)], Init ({}), true); +TEST (1, [1][1][d(-1)], Init ({{}}), true); +TEST (1, [1][d(-1)][1], Init ({{}}), true); +TEST (1, [d(-1)][1][1], Init ({{}}), true); + +TEST (1, [1][1][d(0)], Init ({{}}), true); +TEST (1, [1][d(0)][1], Init ({{}}), true); +TEST (1, [d(0)][1][1], Init ({{}}), true); +#endif + +TEST (1, [1][1][d(1)], Init (), false); + +#if !BUG_58646 +TEST (1, [1][1][d(1)], Init ({{}}), false); +TEST (1, [1][1][d(1)], Init ({{{}}}), false); +TEST (1, [1][1][d(1)], Init ({{{1}}}), false); +#endif + +TEST (1, [1][1][d(1)], Init ({{{1, 2}}}), true); +TEST (1, [1][1][d(1)], Init ({{{1, 2, 3}}}), true); + +TEST (1, [1][d(1)][1], Init (), false); + +#if !BUG_58646 +TEST (1, [1][d(1)][1], Init ({{}}), false); +TEST (1, [1][d(1)][1], Init ({{{}}}), false); +#endif + +TEST (1, [1][d(1)][1], Init ({{{1}}}), false); +TEST (1, [1][d(1)][1], Init ({{{1}, {2}}}), true); +TEST (1, [1][d(1)][1], Init ({{{1}, {2}, {3}}}), true); + +TEST (1, [d(1)][1][1], Init (), false); + +#if !BUG_58646 +TEST (1, [d(1)][1][1], Init ({{}}), false); +TEST (1, [d(1)][1][1], Init ({{{}}}), false); +#endif + +TEST (1, [d(1)][1][1], Init ({{{1}}}), false); +TEST (1, [d(1)][1][1], Init ({{{1}}, {{2}}}), true); +TEST (1, [d(1)][1][1], Init ({{{1}}, {{2}}, {{3}}}), true); + +TEST (1, [1][1][d(2)], Init (), false); + +#if !BUG_58646 +TEST (1, [1][1][d(2)], Init ({{}}), false); +TEST (1, [1][1][d(2)], Init ({{{}}}), false); +#endif + +TEST (1, [1][1][d(2)], Init ({{{1}}}), false); +TEST (1, [1][1][d(2)], Init ({{{1, 2}}}), false); +TEST (1, [1][1][d(2)], Init ({{{1, 2, 3}}}), true); + +TEST (1, [1][d(2)][1], Init (), false); + +#if !BUG_58646 +TEST (1, [1][d(2)][1], Init ({{}}), false); +TEST (1, [1][d(2)][1], Init ({{{}}}), false); +#endif +TEST (1, [1][d(2)][1], Init ({{{1}}}), false); +TEST (1, [1][d(2)][1], Init ({{{1}, {2}}}), false); +TEST (1, [1][d(2)][1], Init ({{{1}, {2}, {3}}}), true); + +TEST (1, [d(2)][1][1], Init (), false); + +#if !BUG_58646 +TEST (1, [d(2)][1][1], Init ({{}}), false); +TEST (1, [d(2)][1][1], Init ({{{}}}), false); +#endif +TEST (1, [d(2)][1][1], Init ({{{1}}}), false); +TEST (1, [d(2)][1][1], Init ({{{1}}, {{2}}}), false); +TEST (1, [d(2)][1][1], Init ({{{1}}, {{2}}, {{3}}}), true); + +TEST (1, [1][2][d(2)], Init (), false); + +#if !BUG_58646 +TEST (1, [1][2][d(2)], Init ({{}}), false); +TEST (1, [1][2][d(2)], Init ({{{}}}), false); +#endif + +TEST (1, [1][2][d(2)], Init ({{{1}}}), false); +TEST (1, [1][2][d(2)], Init ({{{1, 2}}}), false); +TEST (1, [1][2][d(2)], Init ({{{1, 2, 3}}}), true); + +TEST (1, [1][2][d(2)], Init ({{{1}, {2}}}), false); +TEST (1, [1][2][d(2)], Init ({{{1}, {2, 3}}}), false); +TEST (1, [1][2][d(2)], Init ({{{1, 2}, {3}}}), false); +TEST (1, [1][2][d(2)], Init ({{{1, 2}, {3, 4}}}), false); +TEST (1, [1][2][d(2)], Init ({{{1}, {2, 3, 4}}}), true); +TEST (1, [1][2][d(2)], Init ({{{1, 2, 3}, {}}}), true); +TEST (1, [1][2][d(2)], Init ({{{1, 2, 3}, {4}}}), true); +TEST (1, [1][2][d(2)], Init ({{{1, 2, 3, 4}}}), true); +TEST (1, [1][2][d(2)], Init ({{{1, 2, 3, 4}, {}}}), true); +TEST (1, [1][2][d(2)], Init ({{{1, 2, 3, 4}, {5}}}), true); + +TEST (1, [2][2][d(2)], Init ({{{1}, {2}}}), false); +TEST (1, [2][2][d(2)], Init ({{{1}, {2, 3}}}), false); +TEST (1, [2][2][d(2)], Init ({{{1, 2}}}), false); +TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3}}}), false); +TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}}), false); +TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}, {{5}}}), false); +TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}}}), false); +TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}, {7}}}), false); +TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}}), false); + +TEST (1, [2][2][d(2)], Init ({{{1}, {2, 3, 4}}}), true); +TEST (1, [2][2][d(2)], Init ({{{1, 2, 3}, {}}}), true); +TEST (1, [2][2][d(2)], Init ({{{1, 2, 3}, {4}}}), true); +TEST (1, [2][2][d(2)], Init ({{{1, 2, 3, 4}}}), true); +TEST (1, [2][2][d(2)], Init ({{{1, 2, 3, 4}, {}}}), true); +TEST (1, [2][2][d(2)], Init ({{{1, 2, 3, 4}, {5}}}), true); +TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}, {7, 8, 9}}}), true); +TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6, 7}, {8, 9}}}), true); +TEST (1, [2][2][d(2)], Init ({{{1, 2}, {3, 4, 5}}, {{6, 7}, {8, 9}}}), true); +TEST (1, [2][2][d(2)], Init ({{{1, 2, 3}, {4, 5}}, {{6, 7}, {8, 9}}}), true); +TEST (1, [2][2][d(2)], Init ({{{1}, {2}}, {{3}, {4, 5, 6}}}), true); +TEST (1, [2][2][d(2)], Init ({{{1}}, {{2}, {3, 4, 5, 6}}}), true); + +// Three dimensional VLAs with one constant bound. +TEST (1, [2][d(-1)][d(-1)], Init (), true); +TEST (1, [2][d(-1)][d(0)], Init (), true); +TEST (1, [2][d(0)][d(-1)], Init (), true); +TEST (1, [2][d(1)][d(-1)], Init (), true); +TEST (1, [2][d(1)][d(0)], Init (), true); +TEST (1, [2][d(-1)][d(1)], Init (), true); +TEST (1, [2][d(0)][d(1)], Init (), true); + +TEST (1, [2][d(2)][d(2)], Init (), false); +TEST (1, [2][d(2)][d(2)], Init ({{{1}}}), false); +TEST (1, [ ][d(2)][d(2)], Init ({{{1}}}), false); +TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2}}}), false); +TEST (1, [ ][d(2)][d(2)], Init ({{{1}, {2}}}), false); +TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2, 3}}}), false); +TEST (1, [ ][d(2)][d(2)], Init ({{{1}, {2, 3}}}), false); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2}, {3}}}), false); +TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2}, {3}}}), false); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2}, {3, 4}}}), false); +TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2}, {3, 4}}}), false); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}}), false); +TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}}), false); +TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2, 3, 4}}}), true); +TEST (1, [ ][d(2)][d(2)], Init ({{{1}, {2, 3, 4}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3}, {}}}), true); +TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2, 3}, {}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3}, {4}}}), true); +TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2, 3}, {4}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3, 4}}}), true); +TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2, 3, 4}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3, 4}, {}}}), true); +TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2, 3, 4}, {}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3, 4}, {5}}}), true); +TEST (1, [ ][d(2)][d(2)], Init ({{{1, 2, 3, 4}, {5}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2, 3, 4}}}), true); +TEST (1, [ ][d(2)][d(2)], Init ({{{1}, {2, 3, 4}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2, 3}, {4}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3}, {}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3}, {4}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3, 4}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3, 4}, {}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3, 4}, {5}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6}, {7, 8, 9}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2}, {3, 4}}, {{5, 6, 7}, {8, 9}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2}, {3, 4, 5}}, {{6, 7}, {8, 9}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1, 2, 3}, {4, 5}}, {{6, 7}, {8, 9}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2}}, {{3}, {4, 5, 6}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1}}, {{2}, {3, 4, 5, 6}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2}, {3}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2, 3}, {4}}}), true); +TEST (1, [2][d(2)][d(2)], Init ({{{1}, {2, 3, 4}, {5}}}), true); + +#if TEST_NEAR_VLA_MAX_SIZE +// Very large but not erroneous three-dimensional VLAs. +TEST ( 1, [2][d(1)][d(MAX/2)], Init (), false); +TEST ( 2, [2][d(1)][d(MAX/4)], Init (), false); +TEST ( 4, [2][d(1)][d(MAX/8)], Init (), false); +TEST ( 8, [2][d(1)][d(MAX/16)], Init (), false); +TEST (16, [2][d(1)][d(MAX/32)], Init (), false); + +TEST ( 1, [2][d(MAX/2)][d(1)], Init (), false); +TEST ( 2, [2][d(MAX/4)][d(1)], Init (), false); +TEST ( 4, [2][d(MAX/8)][d(1)], Init (), false); +TEST ( 8, [2][d(MAX/16)][d(1)], Init (), false); +TEST (16, [2][d(MAX/32)][d(1)], Init (), false); + +TEST ( 1, [d(MAX/2)][2][d(1)], Init (), false); +TEST ( 2, [d(MAX/4)][2][d(1)], Init (), false); +TEST ( 4, [d(MAX/8)][2][d(1)], Init (), false); +TEST ( 8, [d(MAX/16)][2][d(1)], Init (), false); +TEST (16, [d(MAX/32)][2][d(1)], Init (), false); +#endif // TEST_NEAR_VLA_MAX_SIZE + +// Erroneous three-dimensional VLAs with size exceeding SIZE_MAX / 2 +// (those must be rejected because no object can be bigger than that, +// otherwise pointer arithmetic breaks). +TEST ( 1, [2][d(1)][d(SIZE_MAX/2)], Init (), true); +TEST ( 2, [2][d(1)][d(SIZE_MAX/4)], Init (), true); +TEST ( 4, [2][d(1)][d(SIZE_MAX/8)], Init (), true); +TEST ( 8, [2][d(1)][d(SIZE_MAX/16)], Init (), true); +TEST (16, [2][d(1)][d(SIZE_MAX/32)], Init (), true); + +TEST ( 1, [2][d(SIZE_MAX/2)][d(1)], Init (), true); +TEST ( 2, [2][d(SIZE_MAX/4)][d(1)], Init (), true); +TEST ( 4, [2][d(SIZE_MAX/8)][d(1)], Init (), true); +TEST ( 8, [2][d(SIZE_MAX/16)][d(1)], Init (), true); +TEST (16, [2][d(SIZE_MAX/32)][d(1)], Init (), true); + +TEST ( 1, [d(SIZE_MAX/2)][2][d(1)], Init (), true); +TEST ( 2, [d(SIZE_MAX/4)][2][d(1)], Init (), true); +TEST ( 4, [d(SIZE_MAX/8)][2][d(1)], Init (), true); +TEST ( 8, [d(SIZE_MAX/16)][2][d(1)], Init (), true); +TEST (16, [d(SIZE_MAX/32)][2][d(1)], Init (), true); + +TEST (16, [3][d(SIZE_MAX)][d(SIZE_MAX)], Init (), true); +TEST (32, [d(SIZE_MAX)][5][d(SIZE_MAX)], Init (), true); +TEST (64, [d(SIZE_MAX)][d(SIZE_MAX)][7], Init (), true); + +int main () +{ + if (fail) + __builtin_abort (); +} diff --git a/gcc/testsuite/g++.dg/ext/attribute-may-alias-5.C b/gcc/testsuite/g++.dg/ext/attribute-may-alias-5.C new file mode 100644 index 00000000000..198e2bad5e5 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/attribute-may-alias-5.C @@ -0,0 +1,9 @@ +// PR c++/70512 + +struct S +{ + S& operator= (int) + { + return *this; + } +} __attribute__ ((__may_alias__)); diff --git a/gcc/testsuite/g++.dg/ext/constexpr-vla1.C b/gcc/testsuite/g++.dg/ext/constexpr-vla1.C index a5615bb3620..21eb93dc654 100644 --- a/gcc/testsuite/g++.dg/ext/constexpr-vla1.C +++ b/gcc/testsuite/g++.dg/ext/constexpr-vla1.C @@ -27,4 +27,4 @@ fn_not_ok (int n) } constexpr int n1 = fn_ok (3); -constexpr int n2 = fn_not_ok (3); // { dg-error "array subscript out of bound" } +constexpr int n2 = fn_not_ok (3); // { dg-error "array subscript" } diff --git a/gcc/testsuite/g++.dg/ext/constexpr-vla2.C b/gcc/testsuite/g++.dg/ext/constexpr-vla2.C index 6cb1f708a23..6aab18436d5 100644 --- a/gcc/testsuite/g++.dg/ext/constexpr-vla2.C +++ b/gcc/testsuite/g++.dg/ext/constexpr-vla2.C @@ -18,4 +18,4 @@ fn_ok (int n) } constexpr int i1 = fn_ok (3); -constexpr int i2 = fn_bad (3); // { dg-error "array subscript out of bound" } +constexpr int i2 = fn_bad (3); // { dg-error "array subscript" } diff --git a/gcc/testsuite/g++.dg/ext/constexpr-vla3.C b/gcc/testsuite/g++.dg/ext/constexpr-vla3.C index ba4eb50f5de..33fc968ad5a 100644 --- a/gcc/testsuite/g++.dg/ext/constexpr-vla3.C +++ b/gcc/testsuite/g++.dg/ext/constexpr-vla3.C @@ -11,4 +11,4 @@ foo (int n) return z; } -constexpr int n = foo (3); // { dg-error "array subscript out of bound" } +constexpr int n = foo (3); // { dg-error "array subscript" } diff --git a/gcc/testsuite/g++.dg/ext/constexpr-vla4.C b/gcc/testsuite/g++.dg/ext/constexpr-vla4.C new file mode 100644 index 00000000000..428a8fd5224 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/constexpr-vla4.C @@ -0,0 +1,17 @@ +// PR c++/70452 +// { dg-do compile { target c++14 } } + +constexpr int +foo (int n, bool p) +{ + __extension__ int a [n] = { 0 }; + if (n == 3) + foo (n - 2, false); + if (n == 3) + foo(n - 1, true); + if (p) + return a[1]; + return 0; +} + +constexpr int i2 = foo (3, false); // { dg-bogus "array subscript out of bound" } diff --git a/gcc/testsuite/g++.dg/ext/pr70571.C b/gcc/testsuite/g++.dg/ext/pr70571.C new file mode 100644 index 00000000000..2381bfe589c --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/pr70571.C @@ -0,0 +1,10 @@ +// PR c++/70571 +// { dg-do compile } + +typedef int V __attribute__ ((vector_size (sizeof (int)))); + +void +foo (V *x, V *y, int z) +{ + *x = (z == *y); +} diff --git a/gcc/testsuite/g++.dg/gomp/declare-simd-1.C b/gcc/testsuite/g++.dg/gomp/declare-simd-1.C index 1462efd7a1d..d2659e18339 100644 --- a/gcc/testsuite/g++.dg/gomp/declare-simd-1.C +++ b/gcc/testsuite/g++.dg/gomp/declare-simd-1.C @@ -20,6 +20,8 @@ int f2 (int a, int *b, int c) // { dg-final { scan-assembler-times "_ZGVcN8uva32l4__Z2f2iPii:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdM8uva32l4__Z2f2iPii:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdN8uva32l4__Z2f2iPii:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeM8uva32l4__Z2f2iPii:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeN8uva32l4__Z2f2iPii:" 1 { target { i?86-*-* x86_64-*-* } } } } #pragma omp declare simd uniform (c) aligned (b : 4 * sizeof (int)) linear (a : 4) simdlen (4) template <typename T> @@ -85,6 +87,8 @@ namespace N1 // { dg-final { scan-assembler-times "_ZGVcN2va16__ZN2N12N23f10EPx:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdM2va16__ZN2N12N23f10EPx:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdN2va16__ZN2N12N23f10EPx:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeM2va16__ZN2N12N23f10EPx:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeN2va16__ZN2N12N23f10EPx:" 1 { target { i?86-*-* x86_64-*-* } } } } struct A { @@ -193,6 +197,8 @@ int B<int>::f25<7> (int a, int *b, int c) // { dg-final { scan-assembler-times "_ZGVcN8vuva32u__ZN1BIiE3f25ILi7EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdM8vuva32u__ZN1BIiE3f25ILi7EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdN8vuva32u__ZN1BIiE3f25ILi7EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeM8vuva32u__ZN1BIiE3f25ILi7EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeN8vuva32u__ZN1BIiE3f25ILi7EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } } #pragma omp declare simd simdlen (4) aligned (b : 8 * sizeof (int)) linear (a, c : 2) template <> @@ -208,6 +214,8 @@ int B<int>::f26<-1> (int a, int *b, int c) // { dg-final { scan-assembler-times "_ZGVcN4vl2va32__ZN1BIiE3f26ILin1EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdM4vl2va32__ZN1BIiE3f26ILin1EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdN4vl2va32__ZN1BIiE3f26ILin1EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeM4vl2va32__ZN1BIiE3f26ILin1EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeN4vl2va32__ZN1BIiE3f26ILin1EEEiiPii:" 1 { target { i?86-*-* x86_64-*-* } } } } int f27 (int x) @@ -237,6 +245,8 @@ f30 (int x) // { dg-final { scan-assembler-times "_ZGVcN16v__Z3f30i:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdM16v__Z3f30i:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdN16v__Z3f30i:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeM16v__Z3f30i:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeN16v__Z3f30i:" 1 { target { i?86-*-* x86_64-*-* } } } } template <int N> struct C diff --git a/gcc/testsuite/g++.dg/gomp/declare-simd-3.C b/gcc/testsuite/g++.dg/gomp/declare-simd-3.C index 4ae42514875..32cdc581b6e 100644 --- a/gcc/testsuite/g++.dg/gomp/declare-simd-3.C +++ b/gcc/testsuite/g++.dg/gomp/declare-simd-3.C @@ -19,6 +19,8 @@ int f1 (int a, int b, int c, int &d, int &e, int &f) // { dg-final { scan-assembler-times "_ZGVcN4vulLUR4__Z2f1iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdM8vulLUR4__Z2f1iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdN8vulLUR4__Z2f1iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeM16vulLUR4__Z2f1iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeN16vulLUR4__Z2f1iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } #pragma omp declare simd uniform(b) linear(c, d) linear(uval(e)) linear(ref(f)) int f2 (int a, int b, int c, int &d, int &e, int &f) @@ -44,6 +46,8 @@ int f2 (int a, int b, int c, int &d, int &e, int &f) // { dg-final { scan-assembler-times "_ZGVcN4vulLUR4__Z2f2iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdM8vulLUR4__Z2f2iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdN8vulLUR4__Z2f2iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeM16vulLUR4__Z2f2iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeN16vulLUR4__Z2f2iiiRiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } #pragma omp declare simd uniform(b) linear(c, d) linear(uval(e)) linear(ref(f)) int f3 (const int a, const int b, const int c, const int &d, const int &e, const int &f) @@ -57,6 +61,8 @@ int f3 (const int a, const int b, const int c, const int &d, const int &e, const // { dg-final { scan-assembler-times "_ZGVcN4vulLUR4__Z2f3iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdM8vulLUR4__Z2f3iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdN8vulLUR4__Z2f3iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeM16vulLUR4__Z2f3iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeN16vulLUR4__Z2f3iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } } #pragma omp declare simd uniform(b) linear(c, d) linear(uval(e)) linear(ref(f)) int f4 (const int a, const int b, const int c, const int &d, const int &e, const int &f) @@ -76,3 +82,5 @@ int f4 (const int a, const int b, const int c, const int &d, const int &e, const // { dg-final { scan-assembler-times "_ZGVcN4vulLUR4__Z2f4iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdM8vulLUR4__Z2f4iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdN8vulLUR4__Z2f4iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeM16vulLUR4__Z2f4iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeN16vulLUR4__Z2f4iiiRKiS0_S0_:" 1 { target { i?86-*-* x86_64-*-* } } } } diff --git a/gcc/testsuite/g++.dg/gomp/declare-simd-4.C b/gcc/testsuite/g++.dg/gomp/declare-simd-4.C index 51382bffe27..acf03d99e82 100644 --- a/gcc/testsuite/g++.dg/gomp/declare-simd-4.C +++ b/gcc/testsuite/g++.dg/gomp/declare-simd-4.C @@ -11,6 +11,8 @@ f1 (int *p, int *q, short *s) // { dg-final { scan-assembler-times "_ZGVcN4l4ln4ln6__Z2f1PiS_Ps:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdM8l4ln4ln6__Z2f1PiS_Ps:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdN8l4ln4ln6__Z2f1PiS_Ps:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeM16l4ln4ln6__Z2f1PiS_Ps:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeN16l4ln4ln6__Z2f1PiS_Ps:" 1 { target { i?86-*-* x86_64-*-* } } } } #pragma omp declare simd linear(p:s) linear(q:t) uniform (s) linear(r:s) notinbranch simdlen(8) uniform(t) int @@ -22,6 +24,7 @@ f2 (int *p, short *q, int s, int r, int &t) // { dg-final { scan-assembler-times "_ZGVbN8ls2ls4uls2u__Z2f2PiPsiiRi:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVcN8ls2ls4uls2u__Z2f2PiPsiiRi:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdN8ls2ls4uls2u__Z2f2PiPsiiRi:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeN8ls2ls4uls2u__Z2f2PiPsiiRi:" 1 { target { i?86-*-* x86_64-*-* } } } } #pragma omp declare simd linear(ref(p):s) linear(val(q):t) uniform (s) linear(uval(r):s) notinbranch simdlen(8) uniform(t) int @@ -33,3 +36,4 @@ f3 (int &p, short &q, int s, int &r, int &t) // { dg-final { scan-assembler-times "_ZGVbN8Rs2Ls4uUs2u__Z2f3RiRsiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVcN8Rs2Ls4uUs2u__Z2f3RiRsiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } // { dg-final { scan-assembler-times "_ZGVdN8Rs2Ls4uUs2u__Z2f3RiRsiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } +// { dg-final { scan-assembler-times "_ZGVeN8Rs2Ls4uUs2u__Z2f3RiRsiS_S_:" 1 { target { i?86-*-* x86_64-*-* } } } } diff --git a/gcc/testsuite/g++.dg/init/new47.C b/gcc/testsuite/g++.dg/init/new47.C new file mode 100644 index 00000000000..acd52d7993b --- /dev/null +++ b/gcc/testsuite/g++.dg/init/new47.C @@ -0,0 +1,19 @@ +// PR c++/70448 +// { dg-do compile } +// { dg-options "-Wall" } + +typedef __typeof__ (sizeof 0) size_t; +void *operator new (size_t, void *p) { return p; } +void *operator new[] (size_t, void *p) { return p; } +struct S { size_t s; }; +void bar (S *); + +void +foo (unsigned int s) +{ + char t[sizeof (S) + s]; + S *f = new (t) S; + bar (f); + f = new (t) S[1]; + bar (f); +} diff --git a/gcc/testsuite/g++.dg/init/pr70501.C b/gcc/testsuite/g++.dg/init/pr70501.C new file mode 100644 index 00000000000..901b3c1b5a2 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/pr70501.C @@ -0,0 +1,11 @@ +/* { dg-options "" } Not pedantic */ + +typedef int v4si __attribute__ ((vector_size (16))); + +struct S { v4si v; }; + +void +fn2 (int i, int j) +{ + struct S s = { .v = i <= j + (v4si){(1, 2)} }; +} diff --git a/gcc/testsuite/g++.dg/ipa/devirt-51.C b/gcc/testsuite/g++.dg/ipa/devirt-51.C new file mode 100644 index 00000000000..236635af23e --- /dev/null +++ b/gcc/testsuite/g++.dg/ipa/devirt-51.C @@ -0,0 +1,32 @@ +/* Be sure we do not optimize the virtual call into call of the only non-virtual + variant. Either keeping virtual call or optimizing to cxa_pure_virtual + is fine. */ +/* { dg-do compile } */ +/* { dg-options "-O2 -fsanitize=unreachable -fdump-tree-optimized" } */ +namespace { + struct B { + B* self; + B() : self( this ) { self->f(); } + void E(void); + virtual void f() = 0; + }; + + struct D : B + { + void f() {} + }; +} + +struct D e; + +__attribute__ ((used)) +void B::E(void) + { + this->f(); +} + + int main() + { + D d; + } +/* { dg-final { scan-tree-dump "cxa_pure_virtual" "optimized" } } */ diff --git a/gcc/testsuite/g++.dg/opt/pr70641.C b/gcc/testsuite/g++.dg/opt/pr70641.C new file mode 100644 index 00000000000..99af74248f2 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/pr70641.C @@ -0,0 +1,10 @@ +// PR c++/70641 +// { dg-do compile } +// { dg-options "-O2" } + +void +foo () +{ + try { foo (); } + catch (...) { __builtin_abort (); } +} diff --git a/gcc/testsuite/g++.dg/opt/ptrmem7.C b/gcc/testsuite/g++.dg/opt/ptrmem7.C new file mode 100644 index 00000000000..7d9e9b17d3d --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/ptrmem7.C @@ -0,0 +1,31 @@ +// PR c++/70615 +// { dg-options -O } + +struct C +{ + virtual void f () {} +}; + +struct B +{ + virtual ~B () {} +}; + +class D : public B, public C +{ +public: + D () {} +}; + +typedef void (C::*FP) (); +typedef void (D::*D_f) (); + +int +main () +{ + D *d = new D (); + C *c = d; + const FP fptr = (FP) & D::f; + (d->*(D_f) fptr) (); + return 0; +} diff --git a/gcc/testsuite/g++.dg/parse/pr68722.C b/gcc/testsuite/g++.dg/parse/pr68722.C new file mode 100644 index 00000000000..44a6213a0a6 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/pr68722.C @@ -0,0 +1,9 @@ +// PR c++/68722 + +class A { + &__loc // { dg-error "" } +} class ios_base { // { dg-error "" } + A _M_ios_locale ios_base(ios_base &) template <_Traits> class basic_ios { // { dg-error "" } +basic_ios basic_ios = operator= // { dg-error "" } + +// { dg-prune-output "file ends in default argument" } diff --git a/gcc/testsuite/g++.dg/parse/pr70635.C b/gcc/testsuite/g++.dg/parse/pr70635.C new file mode 100644 index 00000000000..0873840daf5 --- /dev/null +++ b/gcc/testsuite/g++.dg/parse/pr70635.C @@ -0,0 +1,25 @@ +// PR c++/70635 +// { dg-options "-fpermissive -w" } + +template < typename T > +struct A +{ + struct B; + typedef typename B::type type; +}; + +template < typename T > +struct A < T >::B +{ + typedef typename A < type >::type type; // { dg-error "type" } + type Foo (); +}; + +template < typename T > +typename A < T >::B::type +A < T >::B::Foo () +{ + return 0; +} + +template class A<int>; diff --git a/gcc/testsuite/g++.dg/plugin/pragma_plugin.c b/gcc/testsuite/g++.dg/plugin/pragma_plugin.c index 940c302df7d..6f4739868d3 100644 --- a/gcc/testsuite/g++.dg/plugin/pragma_plugin.c +++ b/gcc/testsuite/g++.dg/plugin/pragma_plugin.c @@ -32,14 +32,16 @@ handle_pragma_sayhello (cpp_reader *dummy) return; } if (TREE_STRING_LENGTH (message) > 1) - if (cfun) - warning (OPT_Wpragmas, - "%<pragma GCCPLUGIN sayhello%> from function %qE: %s", - cfun->decl, TREE_STRING_POINTER (message)); + { + if (cfun) + warning (OPT_Wpragmas, + "%<pragma GCCPLUGIN sayhello%> from function %qE: %s", + cfun->decl, TREE_STRING_POINTER (message)); else - warning (OPT_Wpragmas, - "%<pragma GCCPLUGIN sayhello%> outside of function: %s", - TREE_STRING_POINTER (message)); + warning (OPT_Wpragmas, + "%<pragma GCCPLUGIN sayhello%> outside of function: %s", + TREE_STRING_POINTER (message)); + } } /* Plugin callback called during pragma registration */ diff --git a/gcc/testsuite/g++.dg/pr70590-2.C b/gcc/testsuite/g++.dg/pr70590-2.C new file mode 100644 index 00000000000..409c86eccd1 --- /dev/null +++ b/gcc/testsuite/g++.dg/pr70590-2.C @@ -0,0 +1,21 @@ +// PR c++/70590 +// { dg-do compile { target c++11 } } +// { dg-options "-O2" } + +int a; + +constexpr int *foo = &a; + +void blah (int *); + +int +bar () +{ + blah (foo); +} + +int +baz () +{ + blah (foo); +} diff --git a/gcc/testsuite/g++.dg/pr70590.C b/gcc/testsuite/g++.dg/pr70590.C new file mode 100644 index 00000000000..488620065ee --- /dev/null +++ b/gcc/testsuite/g++.dg/pr70590.C @@ -0,0 +1,25 @@ +// PR c++/70590 +// { dg-do compile { target c++11 } } +// { dg-options "-O2" } + +int a; + +constexpr int * +foo () +{ + return &a; +} + +void blah (int *); + +int +bar () +{ + blah (foo ()); +} + +int +baz () +{ + blah (foo ()); +} diff --git a/gcc/testsuite/g++.dg/template/dependent-expr10.C b/gcc/testsuite/g++.dg/template/dependent-expr10.C new file mode 100644 index 00000000000..94d66fc92b8 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/dependent-expr10.C @@ -0,0 +1,8 @@ +// PR c++/70634 + +template < typename T > +bool foo () +{ + const int i = sizeof (i) > 1 ? sizeof (T) : 0; + return i > 0; +} diff --git a/gcc/testsuite/g++.dg/template/pr70610-2.C b/gcc/testsuite/g++.dg/template/pr70610-2.C new file mode 100644 index 00000000000..3368a5e5d89 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/pr70610-2.C @@ -0,0 +1,21 @@ +// PR c++/70610 +// { dg-do link } + +struct A { }; + +void operator+ (const A &, A &); +void operator+ (A &, const A &); +void operator+ (const A &, const A &) { } + +template <typename T> +void +foo () +{ + A () + A (); +} + +int +main () +{ + foo<int> (); +} diff --git a/gcc/testsuite/g++.dg/template/pr70610-3.C b/gcc/testsuite/g++.dg/template/pr70610-3.C new file mode 100644 index 00000000000..4be458cca59 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/pr70610-3.C @@ -0,0 +1,21 @@ +// PR c++/70610 +// { dg-do link } + +void bar (const int &, int &); +void bar (int &, const int &); +void bar (const int &, const int &) { } + +int a, b; + +template <typename T> +void +foo () +{ + bar (a + 1, b + 2); +} + +int +main () +{ + foo<int> (); +} diff --git a/gcc/testsuite/g++.dg/template/pr70610-4.C b/gcc/testsuite/g++.dg/template/pr70610-4.C new file mode 100644 index 00000000000..127abdc44e3 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/pr70610-4.C @@ -0,0 +1,19 @@ +// PR c++/70610 +// { dg-do link } + +struct A { void operator+ (const A &) { }; }; + +void operator+ (const A &, A &); + +template <typename T> +void +foo () +{ + A () + A (); +} + +int +main () +{ + foo<int> (); +} diff --git a/gcc/testsuite/g++.dg/template/pr70610.C b/gcc/testsuite/g++.dg/template/pr70610.C new file mode 100644 index 00000000000..c7dde1c5cec --- /dev/null +++ b/gcc/testsuite/g++.dg/template/pr70610.C @@ -0,0 +1,21 @@ +// PR c++/70610 +// { dg-do link } + +struct A { }; + +void operator+ (A &); +void operator+ (const A &) { } + + +template <typename T> +void +foo () +{ + +A (); +} + +int +main () +{ + foo<int> (); +} diff --git a/gcc/testsuite/g++.dg/template/ptrmem30.C b/gcc/testsuite/g++.dg/template/ptrmem30.C index 923238bec4d..31e9b5d17f6 100644 --- a/gcc/testsuite/g++.dg/template/ptrmem30.C +++ b/gcc/testsuite/g++.dg/template/ptrmem30.C @@ -1,11 +1,11 @@ // PR c++/70096 // { dg-do run } -int read; +int data_read; struct Holder { - void foo () { read = data; } + void foo () { data_read = data; } int data; }; diff --git a/gcc/testsuite/g++.dg/torture/pr70029.C b/gcc/testsuite/g++.dg/torture/pr70029.C new file mode 100644 index 00000000000..9592f0cc987 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr70029.C @@ -0,0 +1,12 @@ +// PR c++/70029 +// { dg-do compile } +// { dg-options "-std=c++11 -g -flto" } +// { dg-require-effective-target lto } + +struct A +{ + A(); + int foo() && __attribute__ ((__warn_unused_result__)) { return 0; } +}; + +A a; diff --git a/gcc/testsuite/g++.dg/torture/pr70499.C b/gcc/testsuite/g++.dg/torture/pr70499.C new file mode 100644 index 00000000000..954fea5de2f --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr70499.C @@ -0,0 +1,39 @@ +// { dg-do compile } +// { dg-additional-options "-w -Wno-psabi" } +// { dg-additional-options "-mavx" { target x86_64-*-* i?86-*-* } } + +typedef double __m256d __attribute__ ((__vector_size__ (32), __may_alias__)); + +struct SIMD { + __m256d data; + SIMD() {}; + SIMD (double val) { } + SIMD(__m256d _data) { data = _data; } + SIMD operator* (SIMD a) { return a; } +}; + +struct Foo { + SIMD val; + SIMD dval[2]; + __attribute__((__always_inline__)) SIMD & Value() throw() { return val; } + __attribute__((__always_inline__)) Foo operator* ( const Foo & y) throw() + { + Foo res; + SIMD hx; + SIMD hy; + res.Value() = hx*hy; + res.dval[0] = hx*hy; + return res; + } +}; + +template<typename Tx> +__attribute__((__always_inline__)) inline void inlineFunc(Tx hx[]) { + Tx x = hx[0], y = hx[1]; + Tx lam[1] = (x*y); +} + +void FooBarFunc () { + Foo adp[2]; + inlineFunc (adp); +} diff --git a/gcc/testsuite/g++.dg/torture/pr70526.C b/gcc/testsuite/g++.dg/torture/pr70526.C new file mode 100644 index 00000000000..37a3e5f5a49 --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr70526.C @@ -0,0 +1,35 @@ +// { dg-do run } + +typedef unsigned uint32_t; + +template<typename T> +struct AlignedStorage2 +{ + char mBytes[sizeof(T)]; + + const T* addr() const { return reinterpret_cast<const T*>(mBytes); } + T* addr() { return reinterpret_cast<T*>(mBytes); } +}; + +struct Register { + uint32_t reg_; +}; + +class TypedOrValueRegister +{ + AlignedStorage2<Register> typed; + __attribute__((noinline)) Register& dataTyped() { return *typed.addr(); } +public: + TypedOrValueRegister(Register reg) + { + dataTyped() = reg; + } + Register typedReg() const { return *typed.addr(); } +}; + +int main() { + Register reg = { 10u }; + if (TypedOrValueRegister(reg).typedReg().reg_ != 10) + __builtin_abort(); + return 0; +} diff --git a/gcc/testsuite/g++.dg/ubsan/pr63956.C b/gcc/testsuite/g++.dg/ubsan/pr63956.C index b2656313b33..90360be112a 100644 --- a/gcc/testsuite/g++.dg/ubsan/pr63956.C +++ b/gcc/testsuite/g++.dg/ubsan/pr63956.C @@ -86,7 +86,7 @@ fn5 (const int *a, int b) constexpr int m1[4] = { 1, 2, 3, 4 }; constexpr int m2 = fn5 (m1, 3); -constexpr int m3 = fn5 (m1, 4); // { dg-error "array subscript out of bound" } +constexpr int m3 = fn5 (m1, 4); // { dg-error "array subscript" } constexpr int fn6 (const int &a, int b) @@ -116,7 +116,7 @@ fn8 (int i) } constexpr int o1 = fn8 (9); -constexpr int o2 = fn8 (10); // { dg-error "array subscript out of bound" } +constexpr int o2 = fn8 (10); // { dg-error "array subscript" } constexpr int fn9 (int a, int b) diff --git a/gcc/testsuite/g++.dg/warn/Wparentheses-29.C b/gcc/testsuite/g++.dg/warn/Wparentheses-29.C new file mode 100644 index 00000000000..7832415f1ed --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wparentheses-29.C @@ -0,0 +1,135 @@ +/* PR c/70436 */ +/* { dg-options "-Wparentheses" } */ + +int a, b, c; +void bar (void); +void baz (void); + +void +foo (void) +{ + int i, j; + + if (a) /* { dg-warning "ambiguous" } */ + for (;;) + if (b) + bar (); + else + baz (); + + if (a) /* { dg-warning "ambiguous" } */ + while (1) + if (b) + bar (); + else + baz (); + + if (a) /* { dg-warning "ambiguous" } */ + while (1) + for (;;) + if (b) + bar (); + else + baz (); + + if (a) /* { dg-warning "ambiguous" } */ + while (1) + while (1) + if (b) + bar (); + else + baz (); + + if (a) /* { dg-warning "ambiguous" } */ + for (i = 0; i < 10; i++) + for (j = 0; j < 10; j++) + if (b) + bar (); + else + baz (); + + if (a) + for (i = 0; i < 10; i++) + if (b) /* { dg-warning "ambiguous" } */ + for (j = 0; j < 10; j++) + if (c) + bar (); + else + baz (); + + if (a) /* { dg-warning "ambiguous" } */ + for (i = 0; i < 10; i++) + if (b) + for (j = 0; j < 10; j++) + if (c) + bar (); + else + baz (); + else + bar (); + + if (a) /* { dg-warning "ambiguous" } */ + for (;;) + if (b) + while (1) + if (a) + bar (); + else + baz (); + else + bar (); + + if (a) /* { dg-warning "ambiguous" } */ + for (;;) + if (b) + while (1) + { + if (a) { bar (); } else { baz (); } + } + else + bar (); + + if (a) + for (;;) + if (b) + bar (); + else + baz (); + else bar (); + + if (a) + while (1) + if (b) + bar (); + else + baz (); + else bar (); + + if (a) + for (;;) + { + if (b) + bar (); + else + baz (); + } + + if (a) + { + for (;;) + if (b) + bar (); + } + else baz (); + + if (a) + do + if (b) bar (); else baz (); + while (b); + + if (a) + do + if (b) bar (); + while (b); + else baz (); +} diff --git a/gcc/testsuite/gcc.c-torture/compile/pr70633.c b/gcc/testsuite/gcc.c-torture/compile/pr70633.c new file mode 100644 index 00000000000..6d783cb3166 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr70633.c @@ -0,0 +1,12 @@ +/* PR middle-end/70633 */ + +typedef long V __attribute__((vector_size (4 * sizeof (long)))); + +void foo (V *); + +void +bar (void) +{ + V b = { (long) bar, 0, 0, 0 }; + foo (&b); +} diff --git a/gcc/testsuite/gcc.c-torture/execute/20101011-1.c b/gcc/testsuite/gcc.c-torture/execute/20101011-1.c index e7157c59168..744763f2662 100644 --- a/gcc/testsuite/gcc.c-torture/execute/20101011-1.c +++ b/gcc/testsuite/gcc.c-torture/execute/20101011-1.c @@ -30,6 +30,9 @@ #elif defined (__TMS320C6X__) /* On TI C6X division by zero does not trap. */ # define DO_TEST 0 +#elif defined (__VISIUM__) + /* On Visium division by zero does not trap. */ +# define DO_TEST 0 #elif defined (__mips__) && !defined(__linux__) /* MIPS divisions do trap by default, but libgloss targets do not intercept the trap and raise a SIGFPE. The same is probably diff --git a/gcc/testsuite/gcc.c-torture/execute/pr70566.c b/gcc/testsuite/gcc.c-torture/execute/pr70566.c new file mode 100644 index 00000000000..f47106e70c7 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr70566.c @@ -0,0 +1,47 @@ +/* PR target/70566. */ + +#define NULL 0 + +struct mystruct +{ + unsigned int f1 : 1; + unsigned int f2 : 1; + unsigned int f3 : 1; +}; + +__attribute__ ((noinline)) void +myfunc (int a, void *b) +{ +} +__attribute__ ((noinline)) int +myfunc2 (void *a) +{ + return 0; +} + +static void +set_f2 (struct mystruct *user, int f2) +{ + if (user->f2 != f2) + myfunc (myfunc2 (NULL), NULL); + else + __builtin_abort (); +} + +__attribute__ ((noinline)) void +foo (void *data) +{ + struct mystruct *user = data; + if (!user->f2) + set_f2 (user, 1); +} + +int +main (void) +{ + struct mystruct a; + a.f1 = 1; + a.f2 = 0; + foo (&a); + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr70586.c b/gcc/testsuite/gcc.c-torture/execute/pr70586.c new file mode 100644 index 00000000000..32e9e502cac --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr70586.c @@ -0,0 +1,30 @@ +/* PR tree-optimization/70586 */ + +int a, e, f; +short b, c, d; + +int +foo (int x, int y) +{ + return (y == 0 || (x && y == 1)) ? x : x % y; +} + +static short +bar (void) +{ + int i = foo (c, f); + f = foo (d, 2); + int g = foo (b, c); + int h = foo (g > 0, c); + c = (3 >= h ^ 7) <= foo (i, c); + if (foo (e, 1)) + return a; + return 0; +} + +int +main () +{ + bar (); + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr70602.c b/gcc/testsuite/gcc.c-torture/execute/pr70602.c new file mode 100644 index 00000000000..c6628b037b2 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr70602.c @@ -0,0 +1,23 @@ +/* PR tree-optimization/70602 */ + +struct __attribute__((packed)) S +{ + int s : 1; + int t : 20; +}; + +int a, b, c; + +int +main () +{ + for (; a < 1; a++) + { + struct S e[] = { {0, 9}, {0, 9}, {0, 9}, {0, 0}, {0, 9}, {0, 9}, {0, 9}, + {0, 0}, {0, 9}, {0, 9}, {0, 9}, {0, 0}, {0, 9}, {0, 9}, + {0, 9}, {0, 0}, {0, 9}, {0, 9}, {0, 9}, {0, 0}, {0, 9} }; + b = b || e[0].s; + c = e[0].t; + } + return 0; +} diff --git a/gcc/testsuite/gcc.dg/Wparentheses-12.c b/gcc/testsuite/gcc.dg/Wparentheses-12.c new file mode 100644 index 00000000000..7832415f1ed --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wparentheses-12.c @@ -0,0 +1,135 @@ +/* PR c/70436 */ +/* { dg-options "-Wparentheses" } */ + +int a, b, c; +void bar (void); +void baz (void); + +void +foo (void) +{ + int i, j; + + if (a) /* { dg-warning "ambiguous" } */ + for (;;) + if (b) + bar (); + else + baz (); + + if (a) /* { dg-warning "ambiguous" } */ + while (1) + if (b) + bar (); + else + baz (); + + if (a) /* { dg-warning "ambiguous" } */ + while (1) + for (;;) + if (b) + bar (); + else + baz (); + + if (a) /* { dg-warning "ambiguous" } */ + while (1) + while (1) + if (b) + bar (); + else + baz (); + + if (a) /* { dg-warning "ambiguous" } */ + for (i = 0; i < 10; i++) + for (j = 0; j < 10; j++) + if (b) + bar (); + else + baz (); + + if (a) + for (i = 0; i < 10; i++) + if (b) /* { dg-warning "ambiguous" } */ + for (j = 0; j < 10; j++) + if (c) + bar (); + else + baz (); + + if (a) /* { dg-warning "ambiguous" } */ + for (i = 0; i < 10; i++) + if (b) + for (j = 0; j < 10; j++) + if (c) + bar (); + else + baz (); + else + bar (); + + if (a) /* { dg-warning "ambiguous" } */ + for (;;) + if (b) + while (1) + if (a) + bar (); + else + baz (); + else + bar (); + + if (a) /* { dg-warning "ambiguous" } */ + for (;;) + if (b) + while (1) + { + if (a) { bar (); } else { baz (); } + } + else + bar (); + + if (a) + for (;;) + if (b) + bar (); + else + baz (); + else bar (); + + if (a) + while (1) + if (b) + bar (); + else + baz (); + else bar (); + + if (a) + for (;;) + { + if (b) + bar (); + else + baz (); + } + + if (a) + { + for (;;) + if (b) + bar (); + } + else baz (); + + if (a) + do + if (b) bar (); else baz (); + while (b); + + if (a) + do + if (b) bar (); + while (b); + else baz (); +} diff --git a/gcc/testsuite/gcc.dg/Wparentheses-13.c b/gcc/testsuite/gcc.dg/Wparentheses-13.c new file mode 100644 index 00000000000..9837ba566d9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wparentheses-13.c @@ -0,0 +1,67 @@ +/* PR c/70436 */ +/* { dg-options "-Wparentheses" } */ + +int a, b, c; +void bar (int); + +void +foo (void) +{ + if (a) /* { dg-warning "ambiguous" } */ + if (b) + { + if (c) + bar (0); + } + else + bar (1); + + if (a > 0) + if (a > 1) + if (a > 2) + if (a > 3) + if (a > 4) + if (a > 5) /* { dg-warning "ambiguous" } */ + if (a > 6) + while (1) + bar (0); + else + bar (1); + + if (a) /* { dg-warning "ambiguous" } */ + if (b) + switch (c); + else + bar (1); + + switch (a) + { + default: + if (b) /* { dg-warning "ambiguous" } */ + if (c) + for (;;) + bar (0); + else + bar (1); + } + + if (a) /* { dg-warning "ambiguous" } */ + if (a) + { + bar (2); + } + else + bar (3); + + if (a) + do if (b) bar (4); while (1); + else bar (5); + + do + { + if (a) + if (b) /* { dg-warning "ambiguous" } */ + if (c) for (;;) bar (6); + else bar (7); + } while (0); +} diff --git a/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c b/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c index 8db8b394d21..e6bc1371f26 100644 --- a/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c +++ b/gcc/testsuite/gcc.dg/debug/dwarf2/prod-options.c @@ -4,8 +4,8 @@ as well. */ /* { dg-do compile } */ /* { dg-options "-O2 -gdwarf -dA -fdebug-prefix-map=a=b" } */ -/* { dg-final { scan-assembler "DW_AT_producer: \"GNU C" { target { { ! *-*-solaris2* } || gas } } } } */ -/* { dg-final { scan-assembler "\"GNU C\[^\\n\\r\]+ DW_AT_producer" { target { *-*-solaris2* && { ! gas } } } } } */ +/* { dg-final { scan-assembler "DW_AT_producer: \"GNU C" { target { { { ! *-*-solaris2* } || gas } && { ! hppa*64*-*-* } } } } } */ +/* { dg-final { scan-assembler "\"GNU C\[^\\n\\r\]+ DW_AT_producer" { target { { *-*-solaris2* && { ! gas } } || { hppa*64*-*-* } } } } } */ /* { dg-final { scan-assembler-not "debug-prefix-map" } } */ void func (void) diff --git a/gcc/testsuite/gcc.dg/gomp/declare-simd-1.c b/gcc/testsuite/gcc.dg/gomp/declare-simd-1.c index 027b24a5b60..5022fbbc057 100644 --- a/gcc/testsuite/gcc.dg/gomp/declare-simd-1.c +++ b/gcc/testsuite/gcc.dg/gomp/declare-simd-1.c @@ -19,6 +19,8 @@ int f2 (int a, int *b, int c) /* { dg-final { scan-assembler-times "_ZGVcN8uva32l4_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM8uva32l4_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN8uva32l4_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM8uva32l4_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN8uva32l4_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ #pragma omp declare simd uniform (a) aligned (b : 8 * sizeof (long long)) linear (c : 4) simdlen (8) __extension__ @@ -53,6 +55,8 @@ f7 (int x) /* { dg-final { scan-assembler-times "_ZGVcN16v_f7:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM16v_f7:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN16v_f7:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM16v_f7:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN16v_f7:" 1 { target { i?86-*-* x86_64-*-* } } } } */ int f9 (int x) @@ -82,6 +86,8 @@ f13 (int c; int *b; int a; int a, int *b, int c) /* { dg-final { scan-assembler-times "_ZGVcN8uva32l4_f13:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM8uva32l4_f13:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN8uva32l4_f13:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM8uva32l4_f13:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN8uva32l4_f13:" 1 { target { i?86-*-* x86_64-*-* } } } } */ #pragma omp declare simd uniform (a) aligned (b : 8 * sizeof (int)) linear (c : 4) simdlen (8) int @@ -98,6 +104,8 @@ f14 (a, b, c) /* { dg-final { scan-assembler-times "_ZGVcN8uva32l4_f14:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM8uva32l4_f14:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN8uva32l4_f14:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM8uva32l4_f14:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN8uva32l4_f14:" 1 { target { i?86-*-* x86_64-*-* } } } } */ #pragma omp declare simd uniform (a) aligned (b : 8 * sizeof (int)) linear (c : 4) simdlen (8) int @@ -112,6 +120,8 @@ f15 (int a, int *b, int c) /* { dg-final { scan-assembler-times "_ZGVcN8uva32l4_f15:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM8uva32l4_f15:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN8uva32l4_f15:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM8uva32l4_f15:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN8uva32l4_f15:" 1 { target { i?86-*-* x86_64-*-* } } } } */ #pragma omp declare simd uniform (d) aligned (e : 8 * sizeof (int)) linear (f : 4) simdlen (8) int f15 (int d, int *e, int f); @@ -131,12 +141,16 @@ int f17 (int g, long *h) /* { dg-final { scan-assembler-times "_ZGVcN4l20va8_f17:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM4l20va8_f17:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN4l20va8_f17:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM4l20va8_f17:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN4l20va8_f17:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */ /* { dg-final { scan-assembler-times "_ZGVbM4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ /* { dg-final { scan-assembler-times "_ZGVbN4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ /* { dg-final { scan-assembler-times "_ZGVcM4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ /* { dg-final { scan-assembler-times "_ZGVcN4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN4l12va4_f17:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ #pragma omp declare simd aligned (i : sizeof (*i)) linear (j : 2 * sizeof (i[0]) + sizeof (j)) simdlen (4) int @@ -153,9 +167,13 @@ f18 (j, i) /* { dg-final { scan-assembler-times "_ZGVcN4l20va8_f18:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM4l20va8_f18:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN4l20va8_f18:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM4l20va8_f18:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN4l20va8_f18:" 1 { target { { i?86-*-* x86_64-*-* } && lp64 } } } } */ /* { dg-final { scan-assembler-times "_ZGVbM4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ /* { dg-final { scan-assembler-times "_ZGVbN4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ /* { dg-final { scan-assembler-times "_ZGVcM4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ /* { dg-final { scan-assembler-times "_ZGVcN4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN4l12va4_f18:" 1 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } } */ diff --git a/gcc/testsuite/gcc.dg/gomp/declare-simd-3.c b/gcc/testsuite/gcc.dg/gomp/declare-simd-3.c index 51f08be4f1b..9b8546dbe76 100644 --- a/gcc/testsuite/gcc.dg/gomp/declare-simd-3.c +++ b/gcc/testsuite/gcc.dg/gomp/declare-simd-3.c @@ -11,6 +11,8 @@ f1 (int *p, int *q, short *s) /* { dg-final { scan-assembler-times "_ZGVcN4l4ln4ln6_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdM8l4ln4ln6_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN8l4ln4ln6_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeM16l4ln4ln6_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN16l4ln4ln6_f1:" 1 { target { i?86-*-* x86_64-*-* } } } } */ #pragma omp declare simd linear(p:s) linear(q:t) uniform (s) linear(r:s) notinbranch simdlen(8) uniform(t) int @@ -22,3 +24,4 @@ f2 (int *p, short *q, int s, int r, int t) /* { dg-final { scan-assembler-times "_ZGVbN8ls2ls4uls2u_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVcN8ls2ls4uls2u_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ /* { dg-final { scan-assembler-times "_ZGVdN8ls2ls4uls2u_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ +/* { dg-final { scan-assembler-times "_ZGVeN8ls2ls4uls2u_f2:" 1 { target { i?86-*-* x86_64-*-* } } } } */ diff --git a/gcc/testsuite/gcc.dg/gomp/simd-clones-2.c b/gcc/testsuite/gcc.dg/gomp/simd-clones-2.c index 4fb9c40d1a6..df7f6314133 100644 --- a/gcc/testsuite/gcc.dg/gomp/simd-clones-2.c +++ b/gcc/testsuite/gcc.dg/gomp/simd-clones-2.c @@ -23,3 +23,6 @@ float setArray(float *a, float x, int k) /* { dg-final { scan-tree-dump "_ZGVdN8ua32vl_setArray" "optimized" { target i?86-*-* x86_64-*-* } } } */ /* { dg-final { scan-tree-dump "_ZGVdN8vvva32_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */ /* { dg-final { scan-tree-dump "_ZGVdM8vl66u_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */ +/* { dg-final { scan-tree-dump "_ZGVeN16ua32vl_setArray" "optimized" { target i?86-*-* x86_64-*-* } } } */ +/* { dg-final { scan-tree-dump "_ZGVeN16vvva32_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */ +/* { dg-final { scan-tree-dump "_ZGVeM16vl66u_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */ diff --git a/gcc/testsuite/gcc.dg/gomp/simd-clones-3.c b/gcc/testsuite/gcc.dg/gomp/simd-clones-3.c index 622b80145bd..28570a244cb 100644 --- a/gcc/testsuite/gcc.dg/gomp/simd-clones-3.c +++ b/gcc/testsuite/gcc.dg/gomp/simd-clones-3.c @@ -15,3 +15,5 @@ int addit(int a, int b, int c) /* { dg-final { scan-tree-dump "_ZGVcM4vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */ /* { dg-final { scan-tree-dump "_ZGVdN8vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */ /* { dg-final { scan-tree-dump "_ZGVdM8vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */ +/* { dg-final { scan-tree-dump "_ZGVeN16vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */ +/* { dg-final { scan-tree-dump "_ZGVeM16vvv_addit" "optimized" { target i?86-*-* x86_64-*-* } } } */ diff --git a/gcc/testsuite/gcc.dg/graphite/pr68756.c b/gcc/testsuite/gcc.dg/graphite/pr68756.c new file mode 100644 index 00000000000..ddb9789f133 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr68756.c @@ -0,0 +1,26 @@ +/* { dg-do compile } */ +/* { dg-options "-O1 -floop-nest-optimize" } */ + +unsigned int z4, pz; +int nn[2]; + +static unsigned int +xq (unsigned int dj) +{ + return dj > 1 ? z4 : z4 + dj; +} + +void +la (void) +{ + int hd, dl; + unsigned int hn = 0; + + for (hd = 0; hd < 2; ++hd) + { + for (dl = 0; dl < 2; ++dl) + nn[dl] = 0; + --hn; + pz = xq (hn); + } +} diff --git a/gcc/testsuite/gcc.dg/graphite/pr68953.c b/gcc/testsuite/gcc.dg/graphite/pr68953.c new file mode 100644 index 00000000000..12c632dbbf0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/graphite/pr68953.c @@ -0,0 +1,30 @@ +/* { dg-do run } */ +/* { dg-options "-O1 -floop-nest-optimize" } */ + +extern void abort (void); + +int yu[4][1] = { { 1 }, { 2 }, { 3 }, { 4 } }; + +static void __attribute__((noinline,noclone)) +foo (void) +{ + int zh, ro; + + for (zh = 0; zh < 2; ++zh) + for (ro = 0; ro < 3; ++ro) + yu[ro][0] = yu[zh + 1][0]; +} + +int +main (void) +{ + foo (); + + if (yu[0][0] != 2 + || yu[1][0] != 2 + || yu[2][0] != 2 + || yu[3][0] != 4) + abort (); + + return 0; +} diff --git a/gcc/testsuite/gcc.dg/guality/guality.h b/gcc/testsuite/gcc.dg/guality/guality.h index 52fa706ffe3..d5867d8ba96 100644 --- a/gcc/testsuite/gcc.dg/guality/guality.h +++ b/gcc/testsuite/gcc.dg/guality/guality.h @@ -252,6 +252,10 @@ main (int argc, char *argv[]) if (!guality_gdb_input || fprintf (guality_gdb_input, "\ set height 0\n\ +handle SIGINT pass nostop\n\ +handle SIGTERM pass nostop\n\ +handle SIGSEGV pass nostop\n\ +handle SIGBUS pass nostop\n\ attach %i\n\ set guality_attached = 1\n\ b %i\n\ diff --git a/gcc/testsuite/gcc.dg/ifcvt-4.c b/gcc/testsuite/gcc.dg/ifcvt-4.c index d0d131b9ad8..319b583e4e2 100644 --- a/gcc/testsuite/gcc.dg/ifcvt-4.c +++ b/gcc/testsuite/gcc.dg/ifcvt-4.c @@ -1,12 +1,14 @@ /* { dg-options "-fdump-rtl-ce1 -O2 --param max-rtl-if-conversion-insns=3" } */ /* { dg-additional-options "-misel" { target { powerpc*-*-* } } } */ -/* { dg-skip-if "Multiple set if-conversion not guaranteed on all subtargets" { "arm*-*-* hppa*64*-*-* visium-*-*" } {"*"} { "" } } */ +/* { dg-skip-if "Multiple set if-conversion not guaranteed on all subtargets" { "arm*-*-* hppa*64*-*-* visium-*-*" } } */ -int -foo (int x, int y, int a) +typedef int word __attribute__((mode(word))); + +word +foo (word x, word y, word a) { - int i = x; - int j = y; + word i = x; + word j = y; /* Try to make taking the branch likely. */ __builtin_expect (x > y, 1); if (x > y) diff --git a/gcc/testsuite/gcc.dg/loop-8.c b/gcc/testsuite/gcc.dg/loop-8.c index 529f5c8f3dd..463c5d0a29a 100644 --- a/gcc/testsuite/gcc.dg/loop-8.c +++ b/gcc/testsuite/gcc.dg/loop-8.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-rtl-loop2_invariant" } */ -/* { dg-skip-if "unexpected IV" { "visium-*-*" } { "*" } { "" } } */ +/* { dg-skip-if "unexpected IV" { "hppa*-*-* visium-*-*" } { "*" } { "" } } */ void f (int *a, int *b) diff --git a/gcc/testsuite/gcc.dg/lto/simd-function_0.c b/gcc/testsuite/gcc.dg/lto/simd-function_0.c index cda31aafb2e..59f419b6714 100644 --- a/gcc/testsuite/gcc.dg/lto/simd-function_0.c +++ b/gcc/testsuite/gcc.dg/lto/simd-function_0.c @@ -1,4 +1,5 @@ /* { dg-lto-do link } */ +/* { dg-require-effective-target vect_simd_clones } */ /* { dg-require-effective-target avx2 } */ /* { dg-lto-options { { -fopenmp-simd -O3 -ffast-math -mavx2 -flto -flto-partition=max } } } */ diff --git a/gcc/testsuite/gcc.dg/pic-1.c b/gcc/testsuite/gcc.dg/pic-1.c index 86360aa3ae4..38414e9708b 100644 --- a/gcc/testsuite/gcc.dg/pic-1.c +++ b/gcc/testsuite/gcc.dg/pic-1.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { ! *-*-darwin* } } } */ +/* { dg-do compile { target { ! { *-*-darwin* hppa*-*-* } } } } */ /* { dg-options "-fpic" } */ #if __PIC__ != 1 diff --git a/gcc/testsuite/gcc.dg/pic-3.c b/gcc/testsuite/gcc.dg/pic-3.c index 7c4bbced218..23ce9995cc4 100644 --- a/gcc/testsuite/gcc.dg/pic-3.c +++ b/gcc/testsuite/gcc.dg/pic-3.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { ! *-*-darwin* } } } */ +/* { dg-do compile { target { ! { *-*-darwin* hppa*64*-*-* } } } } */ /* { dg-options "-fno-pic" } */ #ifdef __PIC__ diff --git a/gcc/testsuite/gcc.dg/pic-4.c b/gcc/testsuite/gcc.dg/pic-4.c index 727fe14bace..8e14714e40d 100644 --- a/gcc/testsuite/gcc.dg/pic-4.c +++ b/gcc/testsuite/gcc.dg/pic-4.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { ! *-*-darwin* } } } */ +/* { dg-do compile { target { ! { *-*-darwin* hppa*64*-*-* } } } } */ /* { dg-options "-fno-PIC" } */ #ifdef __PIC__ diff --git a/gcc/testsuite/gcc.dg/pie-1.c b/gcc/testsuite/gcc.dg/pie-1.c index ca43e8b7adc..e64763bcd77 100644 --- a/gcc/testsuite/gcc.dg/pie-1.c +++ b/gcc/testsuite/gcc.dg/pie-1.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { ! *-*-darwin* } } } */ +/* { dg-do compile { target { ! { *-*-darwin* hppa*-*-* } } } } */ /* { dg-options "-fpie" } */ #if __PIC__ != 1 diff --git a/gcc/testsuite/gcc.dg/pie-3.c b/gcc/testsuite/gcc.dg/pie-3.c index 0ccc56b194d..a7201c08f87 100644 --- a/gcc/testsuite/gcc.dg/pie-3.c +++ b/gcc/testsuite/gcc.dg/pie-3.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { ! *-*-darwin* } } } */ +/* { dg-do compile { target { ! { *-*-darwin* hppa*64*-*-* } } } } */ /* { dg-options "-fno-pie" } */ #ifdef __PIC__ diff --git a/gcc/testsuite/gcc.dg/pie-4.c b/gcc/testsuite/gcc.dg/pie-4.c index f42bad3d297..b24eb8cb3e1 100644 --- a/gcc/testsuite/gcc.dg/pie-4.c +++ b/gcc/testsuite/gcc.dg/pie-4.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { ! *-*-darwin* } } } */ +/* { dg-do compile { target { ! { *-*-darwin* hppa*64*-*-* } } } } */ /* { dg-options "-fno-PIE" } */ #ifdef __PIC__ diff --git a/gcc/testsuite/gcc.dg/pr61817-1.c b/gcc/testsuite/gcc.dg/pr61817-1.c new file mode 100644 index 00000000000..4230485e635 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr61817-1.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-std=c11 -ftrack-macro-expansion=0" } */ + +#define A(x) _Static_assert(x, #x) +#define F(x, y, z) a = __LINE__, b = x ## y, c = z + +enum { +#line 10 + F + ( + __LI, + NE__, + __LINE__ + ) +}; + +A(a == 15); +A(b == 15); +A(c == 15); diff --git a/gcc/testsuite/gcc.dg/pr61817-2.c b/gcc/testsuite/gcc.dg/pr61817-2.c new file mode 100644 index 00000000000..e4326b81f26 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr61817-2.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-std=c11 -ftrack-macro-expansion=1" } */ + +#define A(x) _Static_assert(x, #x) +#define F(x, y, z) a = __LINE__, b = x ## y, c = z + +enum { +#line 10 + F + ( + __LI, + NE__, + __LINE__ + ) +}; + +A(a == 15); +A(b == 15); +A(c == 15); diff --git a/gcc/testsuite/gcc.dg/pr64434.c b/gcc/testsuite/gcc.dg/pr64434.c index 550a63d2b13..699687136fd 100644 --- a/gcc/testsuite/gcc.dg/pr64434.c +++ b/gcc/testsuite/gcc.dg/pr64434.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O1 -fdump-rtl-expand-details" } */ +/* { dg-skip-if "PR64886" { hppa*-*-hpux* } { "*" } { "" } } */ #define N 256 int a1[N], a2[N], a3[N], a4[N]; diff --git a/gcc/testsuite/gcc.dg/pr69391-1.c b/gcc/testsuite/gcc.dg/pr69391-1.c new file mode 100644 index 00000000000..15e49dc657d --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr69391-1.c @@ -0,0 +1,12 @@ +/* { dg-do run } */ +/* { dg-additional-options "-ftrack-macro-expansion=0" } */ +#define STR_I(X) #X +#define STR(X) STR_I(X) +#define LINE STR(__LINE__) STR(__LINE__) +int main() +{ + const char *s = LINE; + if (s[0] != '8' || s[1] != '8') + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/pr69391-2.c b/gcc/testsuite/gcc.dg/pr69391-2.c new file mode 100644 index 00000000000..7d2faae50d8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr69391-2.c @@ -0,0 +1,12 @@ +/* { dg-do run } */ +/* { dg-additional-options "-ftrack-macro-expansion=1" } */ +#define STR_I(X) #X +#define STR(X) STR_I(X) +#define LINE STR(__LINE__) STR(__LINE__) +int main() +{ + const char *s = LINE; + if (s[0] != '8' || s[1] != '8') + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/pr70317.c b/gcc/testsuite/gcc.dg/pr70317.c index 8f0864b76e0..3a9c52e7ac4 100644 --- a/gcc/testsuite/gcc.dg/pr70317.c +++ b/gcc/testsuite/gcc.dg/pr70317.c @@ -2,6 +2,7 @@ /* { dg-do compile } */ /* { dg-skip-if "No NaN support" { spu*-*-* vax*-*-* pdp11*-*-* } } */ /* { dg-options "-O2 -fdump-tree-optimized" } */ +/* { dg-additional-options "-fno-common" { target hppa*-*-hpux* } } */ typedef double V __attribute__((vector_size (256))); typedef __typeof ((V) {} < (V) {}) T; diff --git a/gcc/testsuite/gcc.dg/strlenopt.h b/gcc/testsuite/gcc.dg/strlenopt.h index ef47e5ac9ad..8f69940b027 100644 --- a/gcc/testsuite/gcc.dg/strlenopt.h +++ b/gcc/testsuite/gcc.dg/strlenopt.h @@ -10,6 +10,7 @@ void free (void *); char *strdup (const char *); size_t strlen (const char *); void *memcpy (void *__restrict, const void *__restrict, size_t); +void *memmove (void *, const void *, size_t); char *strcpy (char *__restrict, const char *__restrict); char *strcat (char *__restrict, const char *__restrict); char *strchr (const char *, int); @@ -31,6 +32,12 @@ memcpy (void *__restrict dest, const void *__restrict src, size_t len) return __builtin___memcpy_chk (dest, src, len, bos0 (dest)); } +extern inline __attribute__((gnu_inline, always_inline, artificial)) void * +memmove (void *dest, const void *src, size_t len) +{ + return __builtin___memmove_chk (dest, src, len, bos0 (dest)); +} + extern inline __attribute__((gnu_inline, always_inline, artificial)) char * strcpy (char *__restrict dest, const char *__restrict src) { diff --git a/gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c b/gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c index 6dc2326ede0..adfffcdb824 100644 --- a/gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c +++ b/gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c @@ -24,6 +24,7 @@ foo (float f, double d, long double ld) != (__builtin_isinf(ld) ? (__builtin_signbitl(ld) ? -1 : 1) : 0)) link_error (__LINE__); +#ifdef __OPTIMIZE__ /* In boolean contexts, GCC will fold the inner conditional expression to 1. So isinf_sign folds to plain isinf. */ @@ -33,6 +34,7 @@ foo (float f, double d, long double ld) link_error (__LINE__); if ((_Bool)__builtin_isinf_sign(ld) != (__builtin_isinf(ld) != 0)) link_error (__LINE__); +#endif if ((__builtin_isinf_sign(f) != 0) != (__builtin_isinf(f) != 0)) link_error (__LINE__); diff --git a/gcc/testsuite/gcc.dg/torture/pr70307.c b/gcc/testsuite/gcc.dg/torture/pr70307.c new file mode 100644 index 00000000000..0e0f1460b32 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr70307.c @@ -0,0 +1,67 @@ +/* PR c/70307 */ +/* { dg-do compile } */ +/* { dg-options "-Wno-psabi" } */ + +typedef int v4si __attribute__ ((vector_size (16))); + +v4si foo (v4si); + +v4si +fn1 (int i) +{ + return i <= (v4si){(0, 0)}; +} + +v4si +fn2 (int i) +{ + v4si r; + r = i <= (v4si){(0, 0)}; + return r; +} + +v4si +fn3 (int i) +{ + return foo (i <= (v4si){(0, 0)}); +} + +v4si +fn4 (int i) +{ + struct S { v4si v; }; + struct S s = { .v = i <= (v4si){(0, 0)} }; + return s.v; +} + +v4si +fn5 (int i) +{ + return (v4si){(1, i++)} == (v4si){(0, 0)}; +} + +v4si +fn6 (int i) +{ + v4si r; + r = (v4si){(1, i++)} == (v4si){(0, 0)}; + return r; +} + +v4si +fn7 (int i) +{ + return foo ((v4si){(1, i++)} == (v4si){(0, 0)}); +} + +v4si +fn8 (int i) +{ + struct S { v4si v; }; + struct S s = { .v = (v4si){(1, i++)} == (v4si){(0, 0)} }; + return s.v; +} + +/* Ignore a warning that is irrelevant to the purpose of this test. */ +/* { dg-prune-output "\[^\n\r\]*GCC vector passed by reference\[^\n\r\]*" } */ +/* { dg-prune-output "\[^\n\r\]*GCC vector returned by reference\[^\n\r\]*" } */ diff --git a/gcc/testsuite/gcc.dg/torture/pr70457.c b/gcc/testsuite/gcc.dg/torture/pr70457.c new file mode 100644 index 00000000000..74daed4d36f --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr70457.c @@ -0,0 +1,29 @@ +/* { dg-do compile } */ + +/* This formerly ICEd when trying to expand pow as a built-in with + the wrong number of arguments. */ + +extern double pow (double, double) __attribute__ ((__nothrow__ , __leaf__)); + +typedef struct { + long long data; + int tag; +} Object; + +extern Object Make_Flonum (double); +extern Object P_Pow (Object, Object); + +Object General_Function (Object x, Object y, double (*fun)()) { + double d, ret; + + d = 1.0; + + if (y.tag >> 1) + ret = (*fun) (d); + else + ret = (*fun) (d, 0.0); + + return Make_Flonum (ret); +} + +Object P_Pow (Object x, Object y) { return General_Function (x, y, pow); } diff --git a/gcc/testsuite/gcc.dg/torture/pr70484.c b/gcc/testsuite/gcc.dg/torture/pr70484.c new file mode 100644 index 00000000000..7604c654fbe --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr70484.c @@ -0,0 +1,19 @@ +/* { dg-do run } */ + +extern void abort (void); + +int __attribute__((noinline,noclone)) +f(int *pi, long *pl) +{ + *pi = 1; + *pl = 0; + return *(char *)pi; +} + +int main() +{ + union { long l; int i; } a; + if (f (&a.i, &a.l) != 0) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr70542.c b/gcc/testsuite/gcc.dg/torture/pr70542.c new file mode 100644 index 00000000000..ed7ab9dae73 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr70542.c @@ -0,0 +1,31 @@ +/* PR rtl-optimization/70542 */ +/* { dg-do run } */ + +int a[113], d[113]; +short b[113], c[113], e[113]; + +int +main () +{ + int i; + long j; + for (i = 0; i < 113; ++i) + { + a[i] = -636544305; + b[i] = -31804; + } + for (j = 1; j <= 112; ++j) + { + c[j] = b[j] >> ((a[j] & 1587842570) - 1510214139); + if (a[j]) + d[j] = j; + e[j] = 7 << ((2312631697 - b[j]) - 2312663500); + } + asm volatile ("" : : : "memory"); + if (c[0] || d[0] || e[0]) + __builtin_abort (); + for (i = 1; i <= 112; ++i) + if (c[i] != -1 || d[i] != i || e[i] != 14) + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/torture/pr70623-2.c b/gcc/testsuite/gcc.dg/torture/pr70623-2.c new file mode 100644 index 00000000000..8e8dc96df0e --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr70623-2.c @@ -0,0 +1,41 @@ +/* { dg-do compile } */ + +int b8, il, rc, nm; + +void +h9(void) +{ + int *av = &b8; + +is: + for (;;) { + int vj, wk; + int *m9 = &b8; + + if (*m9 == *av) { + if (il == 0) + goto is; + +di: + continue; + for (vj = 0; vj < 1; ++vj) { + goto di; +kz: + ; + } + } + + for (rc = 0; rc < 2; ++rc) { + int bc = rc ? rc : nm; + int ud = bc ? (*av ? 0 : rc) : 1; + + if (ud != 0) + if (*av != 0) + goto kz; + } + + for (wk = 0; wk < 3; ++wk) + ++(*av); + av = 0; + } +} diff --git a/gcc/testsuite/gcc.dg/torture/pr70623.c b/gcc/testsuite/gcc.dg/torture/pr70623.c new file mode 100644 index 00000000000..37f2712d87d --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr70623.c @@ -0,0 +1,32 @@ +/* { dg-do compile } */ +/* { dg-additional-options "-w" } */ + +int nm; +int *av; + +void +h9(void) +{ + for (;;) { + int wk, rc; + int **ptr_10 = &av; + if (*av != 0) { + } +u4: + wk = 0; + for (rc = 0; rc < 3; ++rc) { + int bc = (rc ? rc : nm); + int ud = bc ? (*av ? 0 : rc) : 1; + if (ud != 0) { + if (*av != 0) + goto u4; + for (;;) { + } + } + } + while (wk < 3) { + av = **ptr_10; + ++wk; + } + } +} diff --git a/gcc/testsuite/gcc.dg/torture/pr70628.c b/gcc/testsuite/gcc.dg/torture/pr70628.c new file mode 100644 index 00000000000..00acae74b4d --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr70628.c @@ -0,0 +1,46 @@ +/* PR debug/70628 */ +/* { dg-do compile } */ +/* { dg-options "-g -w" } */ + +struct S { char s[64]; int *t; } *a; +char b[64]; +int *foo (void); +struct S *bar (int *); +int baz (void); + +void +test (const char *p, long q) +{ + int *c; + c = foo (); + while (a = bar (c)) + { + if (__builtin_strstr (p, "ABCD") + || __builtin_strstr (p, "EFGHI") + || __builtin_strstr (p, "JKL") + || __builtin_strstr (p, "MNOPQR") + || __builtin_strstr (p, "STUV") + || __builtin_strstr (p, "WXYZabcd") + || __builtin_strstr (p, "efghij") + || __builtin_strstr (p, "klmno") + || __builtin_strstr (p, "pqrstuvw") + || __builtin_strstr (b, "MNOPQR") != "EFGHI" + || __builtin_strstr (b, "JKL")) + if (__builtin_strstr (a->s, "xyz12")) + continue; + __builtin_printf ("%p\n", a->t); + } + bar (c); + while (a) + if (__builtin_strstr (p, "ABCD") + || __builtin_strstr (p, "EFGHI") + || __builtin_strstr (p, "JKL") + || __builtin_strstr (p, "MNOPQR") + || __builtin_strstr (p, "STUV") + || __builtin_strstr (p, "WXYZabcd") + || __builtin_strstr (p, "efghij") + || __builtin_strstr (p, "klmno") + || __builtin_strstr (p, "pqrstuvw") + || __builtin_strstr ((const char *) q, "MNOPQR")) + baz (); +} diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c b/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c index e84c958c31a..e4b8d43d299 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/20030814-6.c @@ -1,5 +1,5 @@ /* { dg-do compile } */ -/* { dg-options "-O1 -fdump-tree-dom2" } */ +/* { dg-options "-O1 -fno-tree-fre -fdump-tree-dom2" } */ extern void abort (void); union tree_node; @@ -15,6 +15,7 @@ struct tree_common }; struct tree_type { + struct tree_common common; double alias_set; }; union tree_node @@ -39,6 +40,4 @@ foo (t, set) } /* There should be precisely one load of common.code. If there is more than one, then the dominator optimizations failed. */ -/* ??? Will fail until we properly distinguish member stores. At - present the write to type.alias_set kills the previous load. */ -/* { dg-final { scan-tree-dump-times "common.code" 1 "dom2" { xfail *-*-* } } } */ +/* { dg-final { scan-tree-dump-times "common.code" 1 "dom2" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c index 0f3f301d773..c809c9aa483 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ivopts-lt-2.c @@ -1,5 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-ivopts" } */ +/* { dg-skip-if "PR68644" { hppa*-*-* } { "*" } { "" } } */ void f1 (int *p, unsigned int i) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c index 827cc7a61b4..1a4bfe65d97 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c @@ -25,4 +25,4 @@ foo () but the loop reads only one element at a time, and DOM cannot resolve these. The same happens on powerpc depending on the SIMD support available. */ -/* { dg-final { scan-tree-dump "return 28;" "optimized" { xfail { { alpha*-*-* powerpc64*-*-* } || { sparc*-*-* && lp64 } } } } } */ +/* { dg-final { scan-tree-dump "return 28;" "optimized" { xfail { { alpha*-*-* hppa*64*-*-* powerpc64*-*-* } || { sparc*-*-* && lp64 } } } } } */ diff --git a/gcc/testsuite/gcc.dg/uninit-19.c b/gcc/testsuite/gcc.dg/uninit-19.c index d7b9ed04b7d..b138a2c89dc 100644 --- a/gcc/testsuite/gcc.dg/uninit-19.c +++ b/gcc/testsuite/gcc.dg/uninit-19.c @@ -22,5 +22,5 @@ fn2 () fn1 (l, &d, &e, &g, &i, &h, &k, n); /* 22. */ } -/* { dg-warning "may be used uninitialized" "" { target nonpic } 13 } */ -/* { dg-warning "may be used uninitialized" "" { target { ! nonpic } } 22 } */ +/* { dg-warning "may be used uninitialized" "" { target { { nonpic } || { hppa*64*-*-* } } } 13 } */ +/* { dg-warning "may be used uninitialized" "" { target { ! { { nonpic } || { hppa*64*-*-* } } } } 22 } */ diff --git a/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c b/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c index 8eb50aafa2b..49b74d9e265 100644 --- a/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c +++ b/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c @@ -6,4 +6,4 @@ test (void) return 1; } -/* { dg-final { scan-assembler "\.arch.*fp.*simd" } } */ +/* { dg-final { scan-assembler-times "\\.arch armv8-a\n" 1 } } */ diff --git a/gcc/testsuite/gcc.target/aarch64/pr70398.c b/gcc/testsuite/gcc.target/aarch64/pr70398.c new file mode 100644 index 00000000000..dbe5ad1b24f --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/pr70398.c @@ -0,0 +1,26 @@ +/* { dg-do run } */ +/* { dg-options "-O -fno-tree-loop-optimize -fno-tree-ter -static" } */ +unsigned int in[8 * 8] = + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63 }; + +unsigned char out[8 * 8]; + +int +main (void) +{ + int i; + for (i = 0; i < 8 * 4; i++) + { + out[i * 2] = (unsigned char) in[i * 2] + 1; + out[i * 2 + 1] = (unsigned char) in[i * 2 + 1] + 2; + } + __asm__("":::"memory"); + for (i = 0; i < 8 * 4; i++) + { + if (out[i * 2] != in[i * 2] + 1 + || out[i * 2 + 1] != in[i * 2 + 1] + 2) + __builtin_abort (); + } + return 0; +} diff --git a/gcc/testsuite/gcc.target/aarch64/target_attr_15.c b/gcc/testsuite/gcc.target/aarch64/target_attr_15.c index f72bec878bf..2d8c7b955ce 100644 --- a/gcc/testsuite/gcc.target/aarch64/target_attr_15.c +++ b/gcc/testsuite/gcc.target/aarch64/target_attr_15.c @@ -10,4 +10,4 @@ foo (int a) return a + 1; } -/* { dg-final { scan-assembler-times "\\.arch armv8-a\n" 1 } } */ +/* { dg-final { scan-assembler-times "\\.arch armv8-a\\+nofp\\+nosimd\n" 1 } } */ diff --git a/gcc/testsuite/gcc.target/arm/pr70496.c b/gcc/testsuite/gcc.target/arm/pr70496.c new file mode 100644 index 00000000000..d3ee0b505a8 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/pr70496.c @@ -0,0 +1,13 @@ +/* { dg-do assemble } */ +/* { dg-options "-mthumb -O2" } */ +/* { dg-require-effective-target arm_arm_ok } */ +/* { dg-require-effective-target arm_thumb2_ok } */ + +int i; +void +main (void) +{ + __asm__ volatile (".arm"); + i = 0; + __asm__ volatile ("\n cbz r0, 2f\n2:"); +} diff --git a/gcc/testsuite/gcc.target/i386/asm-flag-6.c b/gcc/testsuite/gcc.target/i386/asm-flag-6.c new file mode 100644 index 00000000000..458587ec9dc --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/asm-flag-6.c @@ -0,0 +1,276 @@ +/* Executable testcase for 'output flags.' */ +/* { dg-do run } */ + +char TestC () +{ + char r; + + __asm__ ("stc" : "=@ccc"(r)); + if (r) + { + __asm__ ("clc" : "=@ccnc"(r)); + if (r) + return 1; + } + return 0; +} + +char TestE () +{ + char r; + + /* 1 equals 1. */ + __asm__ ("cmp $1, %1" : "=@cce"(r) : "r" (1)); + if (r) + { + /* 1 not equals 2. */ + __asm__ ("cmp $2, %1" : "=@ccne"(r) : "r" (1)); + if (r) + return 1; + } + return 0; +} + +char TestZ () +{ + char r; + + /* 1 equals 1. */ + __asm__ ("cmp $1, %1" : "=@ccz"(r) : "r" (1)); + if (r) + { + /* 1 not equals 2. */ + __asm__ ("cmp $2, %1" : "=@ccnz"(r) : "r" (1)); + if (r) + return 1; + } + return 0; +} + +char TestA () +{ + char r; + + /* 1 a 0. */ + __asm__ ("cmp $0, %1" : "=@cca"(r) : "r" (1)); + if (r) + { + /* 1 na 2. */ + __asm__ ("cmp $2, %1" : "=@ccna"(r) : "r" (1)); + if (r) + { + /* 1 na 1. */ + __asm__ ("cmp $1, %1" : "=@ccna"(r) : "r" (1)); + if (r) + return 1; + } + } + return 0; +} + +char TestAE () +{ + char r; + + /* 1 ae 0. */ + __asm__ ("cmp $0, %1" : "=@ccae"(r) : "r" (1)); + if (r) + { + /* 1 nae 2. */ + __asm__ ("cmp $2, %1" : "=@ccnae"(r) : "r" (1)); + if (r) + { + /* 1 ae 1. */ + __asm__ ("cmp $1, %1" : "=@ccae"(r) : "r" (1)); + if (r) + return 1; + } + } + return 0; +} + +char TestB () +{ + char r; + + /* 1 b 2. */ + __asm__ ("cmp $2, %1" : "=@ccb"(r) : "r" (1)); + if (r) + { + /* 1 nb 0. */ + __asm__ ("cmp $0, %1" : "=@ccnb"(r) : "r" (1)); + if (r) + { + /* 1 nb 1. */ + __asm__ ("cmp $1, %1" : "=@ccnb"(r) : "r" (1)); + if (r) + return 1; + } + } + return 0; +} + +char TestBE () +{ + char r; + + /* 1 be 2. */ + __asm__ ("cmp $2, %1" : "=@ccbe"(r) : "r" (1)); + if (r) + { + /* 1 nbe 0. */ + __asm__ ("cmp $0, %1" : "=@ccnbe"(r) : "r" (1)); + if (r) + { + /* 1 be 1. */ + __asm__ ("cmp $1, %1" : "=@ccbe"(r) : "r" (1)); + if (r) + return 1; + } + } + return 0; +} + +char TestG () +{ + char r; + + /* 1 g 0. */ + __asm__ ("cmp $0, %1" : "=@ccg"(r) : "r" (1)); + if (r) + { + /* 1 ng 2. */ + __asm__ ("cmp $2, %1" : "=@ccng"(r) : "r" (1)); + if (r) + { + /* 1 ng 1. */ + __asm__ ("cmp $1, %1" : "=@ccng"(r) : "r" (1)); + if (r) + return 1; + } + } + return 0; +} + +char TestGE () +{ + char r; + + /* 1 ge 0. */ + __asm__ ("cmp $0, %1" : "=@ccge"(r) : "r" (1)); + if (r) + { + /* 1 nge 2. */ + __asm__ ("cmp $2, %1" : "=@ccnge"(r) : "r" (1)); + if (r) + { + /* 1 ge 1. */ + __asm__ ("cmp $1, %1" : "=@ccge"(r) : "r" (1)); + if (r) + return 1; + } + } + return 0; +} + +char TestL () +{ + char r; + + /* 1 l 2. */ + __asm__ ("cmp $2, %1" : "=@ccl"(r) : "r" (1)); + if (r) + { + /* 1 nl 0. */ + __asm__ ("cmp $0, %1" : "=@ccnl"(r) : "r" (1)); + if (r) + { + /* 1 nl 1. */ + __asm__ ("cmp $1, %1" : "=@ccnl"(r) : "r" (1)); + if (r) + return 1; + } + } + return 0; +} + +char TestLE () +{ + char r; + + /* 1 le 2. */ + __asm__ ("cmp $2, %1" : "=@ccle"(r) : "r" (1)); + if (r) + { + /* 1 nle 0. */ + __asm__ ("cmp $0, %1" : "=@ccnle"(r) : "r" (1)); + if (r) + { + /* 1 le 1. */ + __asm__ ("cmp $1, %1" : "=@ccle"(r) : "r" (1)); + if (r) + return 1; + } + } + return 0; +} + +char TestO () +{ + char r; + unsigned char res = 128; + + /* overflow. */ + __asm__ ("addb $128, %1" : "=@cco"(r), "+r"(res)); + if (r) + { + /* not overflow. */ + __asm__ ("addb $1, %1" : "=@ccno"(r), "+r"(res)); + if (r) + return 1; + } + return 0; +} + +char TestP () +{ + char r, res = 1; + + /* even # bits. */ + __asm__ ("addb $2, %1" : "=@ccp"(r), "+r"(res)); + if (r) + { + /* odd # bits. */ + __asm__ ("addb $1, %1" : "=@ccnp"(r), "+r"(res)); + if (r) + return 1; + } + return 0; +} + +char TestS () +{ + char r, res = 1; + + /* sign bit set. */ + __asm__ ("addb $128, %1" : "=@ccs"(r), "+r"(res)); + if (r) + { + /* sign bit not set. */ + __asm__ ("subb $128, %1" : "=@ccns"(r), "+r"(res)); + if (r) + return 1; + } + return 0; +} + +/* dg-do treats exit code of 0 as success. */ +int main () +{ + if (TestC () && TestE () && TestZ () && TestA () + && TestAE () && TestB () && TestBE () && TestG () + && TestGE () && TestL () && TestLE () && TestO () + && TestP () && TestS ()) + return 0; + __builtin_abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx2-pr70542.c b/gcc/testsuite/gcc.target/i386/avx2-pr70542.c new file mode 100644 index 00000000000..2a95c5a027d --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx2-pr70542.c @@ -0,0 +1,16 @@ +/* PR tree-optimization/70542 */ +/* { dg-do run } */ +/* { dg-options "-O3 -mavx2" } */ +/* { dg-require-effective-target avx2 } */ + +#include "avx2-check.h" + +#define main() do_main () + +#include "../../gcc.dg/torture/pr70542.c" + +static void +avx2_test (void) +{ + do_main (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx2-pr70574.c b/gcc/testsuite/gcc.target/i386/avx2-pr70574.c new file mode 100644 index 00000000000..c9867ddf9b0 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx2-pr70574.c @@ -0,0 +1,26 @@ +/* PR rtl-optimization/70574 */ +/* { dg-do run { target lp64 } } */ +/* { dg-require-effective-target avx2 } */ +/* { dg-options "-O -frerun-cse-after-loop -fno-tree-ccp -mcmodel=medium -mavx2" } */ +/* { dg-additional-options "-fPIC" { target fpic } } */ + +#include "avx2-check.h" + +typedef char A __attribute__((vector_size (32))); +typedef short B __attribute__((vector_size (32))); + +int +foo (int x, __int128 y, __int128 z, A w) +{ + y <<= 64; + w *= (A) { 0, -1, z, 0, ~y }; + return w[0] + ((B) { x, 0, y, 0, -1 } | 1)[4]; +} + +static void +avx2_test () +{ + int x = foo (0, 0, 0, (A) {}); + if (x != -1) + __builtin_abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-2.c b/gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-2.c new file mode 100644 index 00000000000..4fe503e42ac --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512bw-kunpckdq-2.c @@ -0,0 +1,24 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512bw" } */ +/* { dg-require-effective-target avx512bw } */ + +#define AVX512BW + +#include "avx512f-helper.h" + +static __mmask64 __attribute__((noinline,noclone)) +unpack (__mmask64 arg1, __mmask64 arg2) +{ + __mmask64 res; + + res = _mm512_kunpackd (arg1, arg2); + + return res; +} + +void +TEST (void) +{ + if (unpack (0x07UL, 0x70UL) != 0x0700000070UL) + __builtin_abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-2.c b/gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-2.c new file mode 100644 index 00000000000..5d7f8955975 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512bw-kunpckwd-2.c @@ -0,0 +1,24 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512bw" } */ +/* { dg-require-effective-target avx512bw } */ + +#define AVX512BW + +#include "avx512f-helper.h" + +static __mmask32 __attribute__((noinline,noclone)) +unpack (__mmask32 arg1, __mmask32 arg2) +{ + __mmask32 res; + + res = _mm512_kunpackw (arg1, arg2); + + return res; +} + +void +TEST (void) +{ + if (unpack (0x07, 0x70) != 0x070070) + __builtin_abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512bw-pr70509.c b/gcc/testsuite/gcc.target/i386/avx512bw-pr70509.c new file mode 100644 index 00000000000..d7bd659f73a --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512bw-pr70509.c @@ -0,0 +1,26 @@ +/* PR tree-optimization/70509 */ +/* { dg-do run } */ +/* { dg-options "-O1 -mavx512bw" } */ +/* { dg-require-effective-target avx512bw } */ + +#define AVX512BW +#include "avx512f-helper.h" + +typedef char V __attribute__ ((vector_size (64))); + +int __attribute__ ((noinline, noclone)) +foo (V u, V v) +{ + u /= v[0x20]; + return u[0]; +} + +void +TEST (void) +{ + int x = foo ((V) { 9 }, (V) { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3 }); + if (x != 3) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/avx512f-kunpckbw-2.c b/gcc/testsuite/gcc.target/i386/avx512f-kunpckbw-2.c new file mode 100644 index 00000000000..86580f289aa --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/avx512f-kunpckbw-2.c @@ -0,0 +1,24 @@ +/* { dg-do run } */ +/* { dg-options "-O2 -mavx512f" } */ +/* { dg-require-effective-target avx512f } */ + +#define AVX512F + +#include "avx512f-helper.h" + +static __mmask16 __attribute__((noinline,noclone)) +unpack (__mmask16 arg1, __mmask16 arg2) +{ + __mmask16 res; + + res = _mm512_kunpackb (arg1, arg2); + + return res; +} + +void +TEST (void) +{ + if (unpack (0x07, 0x70) != 0x0770) + __builtin_abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c index de6279f1dfa..38d53900627 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c +++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-1.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */ /* { dg-final { scan-tree-dump "memcpy.chkp" "strlen" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" char *test (char *str1, char *str2) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c index 470ac4715a9..789ebc1f2d8 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c +++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-2.c @@ -3,8 +3,8 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */ /* { dg-final { scan-tree-dump-not "strlen" "strlen" } } */ -#define _GNU_SOURCE -#include "string.h" +#define USE_GNU +#include "../../gcc.dg/strlenopt.h" char *test (char *str1, char *str2) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c index 311c9a042e0..276f4127975 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c +++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-3.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */ /* { dg-final { scan-tree-dump-times "strlen" 1 "strlen" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" size_t test (char *str1, char *str2) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c index dbf568b8418..51ff96028be 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c +++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-4.c @@ -3,8 +3,8 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-strlen" } */ /* { dg-final { scan-tree-dump-times "strlen" 1 "strlen" } } */ -#define _GNU_SOURCE -#include "string.h" +#define USE_GNU +#include "../../gcc.dg/strlenopt.h" char * test (char *str1, char *str2) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c b/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c index e44096cd429..bbafecc3063 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c +++ b/gcc/testsuite/gcc.target/i386/chkp-strlen-5.c @@ -3,7 +3,7 @@ /* { dg-final { scan-tree-dump-times "strlen" 2 "strlen" } } */ /* { dg-final { scan-tree-dump "memcpy" "strlen" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" size_t test (char *str1, char *str2) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c index 18aa2819cdf..d6148a87fd1 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-1.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */ /* { dg-final { scan-tree-dump "memcpy_nochk" "chkpopt" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" void test (int *buf1, int *buf2, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c index 26e9f13a190..18cff739b01 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-10.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump-not "memset_nobnd" "chkpopt" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" void test (void *buf1, int c, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c index e84963f11f7..c53db6a17e4 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-11.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump-not "memmove_nobnd" "chkpopt" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" void test (void *buf1, void *buf2, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c index 638810b8be5..a076d17cd9a 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-12.c @@ -3,8 +3,8 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump-not "mempcpy_nobnd" "chkpopt" } } */ -#define _GNU_SOURCE -#include "string.h" +#define USE_GNU +#include "../../gcc.dg/strlenopt.h" void test (void *buf1, void *buf2, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c index 3b926b11f83..279cae3e5bf 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-13.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "memcpy_nobnd_nochk" "chkpopt" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" void test (int *buf1, int *buf2, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c index a8d000ba1fa..b810c682569 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-14.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "memset_nobnd_nochk" "chkpopt" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" void test (int *buf1, int c, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c index 7c6065657c0..a9a79c1e330 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-15.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "memmove_nobnd_nochk" "chkpopt" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" void test (int *buf1, int *buf2, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c index b0f43a6880d..6ce170c9d68 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-16.c @@ -3,8 +3,8 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "mempcpy_nobnd_nochk" "chkpopt" } } */ -#define _GNU_SOURCE -#include "string.h" +#define USE_GNU +#include "../../gcc.dg/strlenopt.h" void test (int *buf1, int *buf2, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c index cac0feaecbb..6a0c24ee887 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-2.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */ /* { dg-final { scan-tree-dump "memset_nochk" "chkpopt" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" void test (int *buf1, int c, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c index 72ff3869f7b..310dec77456 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-3.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */ /* { dg-final { scan-tree-dump "memmove_nochk" "chkpopt" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" void test (int *buf1, int *buf2, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c index 216ed521edb..7a30d17b8e6 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-4.c @@ -3,8 +3,8 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-nochk-string-functions" } */ /* { dg-final { scan-tree-dump "mempcpy_nochk" "chkpopt" } } */ -#define _GNU_SOURCE -#include "string.h" +#define USE_GNU +#include "../../gcc.dg/strlenopt.h" void test (int *buf1, int *buf2, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c index 02ad9ccc496..39850d62be8 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-5.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "memcpy_nobnd" "chkpopt" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" void test (int *buf1, int *buf2, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c index 6db5d83a0bc..06dcbfb9a25 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-6.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "memset_nobnd" "chkpopt" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" void test (int *buf1, int c, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c index 761e6263d86..40ded068f8e 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-7.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "memmove_nobnd" "chkpopt" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" void test (int *buf1, int *buf2, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c index afde3c92b9f..7e575bb40bb 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-8.c @@ -3,8 +3,8 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump "mempcpy_nobnd" "chkpopt" } } */ -#define _GNU_SOURCE -#include "string.h" +#define USE_GNU +#include "../../gcc.dg/strlenopt.h" void test (int *buf1, int *buf2, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c b/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c index b79d09633dd..bf26874e5a8 100644 --- a/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c +++ b/gcc/testsuite/gcc.target/i386/chkp-stropt-9.c @@ -2,7 +2,7 @@ /* { dg-options "-fcheck-pointer-bounds -mmpx -O2 -fdump-tree-chkpopt -fchkp-use-fast-string-functions" } */ /* { dg-final { scan-tree-dump-not "memcpy_nobnd" "chkpopt" } } */ -#include "string.h" +#include "../../gcc.dg/strlenopt.h" void test (void *buf1, void *buf2, size_t len) { diff --git a/gcc/testsuite/gcc.target/i386/pr70467-2.c b/gcc/testsuite/gcc.target/i386/pr70467-2.c new file mode 100644 index 00000000000..4c1715c87e5 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr70467-2.c @@ -0,0 +1,20 @@ +/* PR rtl-optimization/70467 */ +/* { dg-do compile { target ia32 } } */ +/* { dg-options "-O2" } */ + +unsigned long long +foo (unsigned long long x) +{ + return x + 0x12345600000000ULL; +} + +unsigned long long +bar (unsigned long long x) +{ + return x - 0x12345600000000ULL; +} + +/* { dg-final { scan-assembler-not "addl\[ \t\]*.0," } } */ +/* { dg-final { scan-assembler-not "subl\[ \t\]*.0," } } */ +/* { dg-final { scan-assembler-not "adcl\[^\n\r\]*%" } } */ +/* { dg-final { scan-assembler-not "sbbl\[^\n\r\]*%" } } */ diff --git a/gcc/testsuite/gcc.target/i386/pr70510.c b/gcc/testsuite/gcc.target/i386/pr70510.c new file mode 100644 index 00000000000..fdad97a16f4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr70510.c @@ -0,0 +1,14 @@ +/* PR target/70510 */ +/* { dg-do assemble { target avx512bw } } */ +/* { dg-require-effective-target masm_intel } */ +/* { dg-options "-Og -mavx512bw -masm=intel" } */ + +typedef int V __attribute__ ((vector_size (64))); + +V +foo (V u, V v) +{ + v[0] |= v[u[0]]; + u /= ((V)v)[0]; + return u; +} diff --git a/gcc/testsuite/gcc.target/i386/pr70525.c b/gcc/testsuite/gcc.target/i386/pr70525.c new file mode 100644 index 00000000000..78ba752f94b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr70525.c @@ -0,0 +1,32 @@ +/* PR target/70525 */ +/* { dg-do assemble { target avx512bw } } */ +/* { dg-options "-O2 -mavx512bw -mno-avx512vl" } */ + +typedef char v64qi __attribute__ ((vector_size (64))); +typedef short v32hi __attribute__ ((vector_size (64))); +typedef int v16si __attribute__ ((vector_size (64))); +typedef long long v8di __attribute__ ((vector_size (64))); + +v64qi +f1 (v64qi x, v64qi y) +{ + return x & ~y; +} + +v32hi +f2 (v32hi x, v32hi y) +{ + return x & ~y; +} + +v16si +f3 (v16si x, v16si y) +{ + return x & ~y; +} + +v8di +f4 (v8di x, v8di y) +{ + return x & ~y; +} diff --git a/gcc/testsuite/gcc.target/i386/pr70593.c b/gcc/testsuite/gcc.target/i386/pr70593.c new file mode 100644 index 00000000000..c013683688b --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr70593.c @@ -0,0 +1,19 @@ +/* PR middle-end/70593 */ +/* { dg-do run } */ +/* { dg-options "-O2" } */ + +__attribute__((noinline, noclone)) unsigned long +foo (unsigned x) +{ + unsigned long a, c = x; + asm volatile ("xorl\t%k1, %k1\n\tmovl\t$7, %k0" : "=c" (c), "=a" (a) : "0" (c), "1" (c) : "memory"); + return c; +} + +int +main () +{ + if (foo (3) != 7) + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.target/i386/pr70596.c b/gcc/testsuite/gcc.target/i386/pr70596.c new file mode 100644 index 00000000000..0c73e838be1 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr70596.c @@ -0,0 +1,13 @@ +/* PR rtl-optimization/70596 */ +/* { dg-do compile { target avx512f } } */ +/* { dg-options "-O2 -fno-dce -fschedule-insns -fno-tree-coalesce-vars -fno-tree-dce -fno-tree-fre -fno-tree-pre -fcompare-debug -mavx512f" } */ + +typedef char V __attribute__((vector_size (64))); + +int +foo (V u, V v) +{ + v /= u | 1; + v[18] = 1 | v[8]; + return v[1] + v[6] + v[0] + v[1] + v[18] + v[2] + v[7]; +} diff --git a/gcc/testsuite/gcc.target/powerpc/float128-1.c b/gcc/testsuite/gcc.target/powerpc/float128-1.c new file mode 100644 index 00000000000..b8e71ceaaae --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/float128-1.c @@ -0,0 +1,147 @@ +/* { dg-do run { target { powerpc*-*-linux* } } } */ +/* { dg-require-effective-target ppc_float128_sw } */ +/* { dg-options "-mcpu=power7 -O2 -mfloat128 -static-libgcc" } */ + +#ifdef DEBUG +#include <stdio.h> +#include <stddef.h> +#include <stdint.h> +#include <inttypes.h> +#endif + +#if !defined(__FLOAT128__) || !defined(_ARCH_PPC) +static __float128 +pass_through (__float128 x) +{ + return x; +} + +__float128 (*no_optimize) (__float128) = pass_through; +#endif + +#ifdef DEBUG +__attribute__((__noinline__)) +static void +print_f128 (__float128 x) +{ + unsigned sign; + unsigned exponent; + uint64_t mantissa1; + uint64_t mantissa2; + uint64_t upper; + uint64_t lower; + +#if defined(_ARCH_PPC) && defined(__BIG_ENDIAN__) + struct ieee128 { + uint64_t upper; + uint64_t lower; + }; + +#elif (defined(_ARCH_PPC) && defined(__LITTLE_ENDIAN__)) || defined(__x86_64__) + struct ieee128 { + uint64_t lower; + uint64_t upper; + }; + +#else +#error "Unknown system" +#endif + + union { + __float128 f128; + struct ieee128 s128; + } u; + + u.f128 = x; + upper = u.s128.upper; + lower = u.s128.lower; + + sign = (unsigned)((upper >> 63) & 1); + exponent = (unsigned)((upper >> 48) & ((((uint64_t)1) << 16) - 1)); + mantissa1 = (upper & ((((uint64_t)1) << 48) - 1)); + mantissa2 = lower; + + printf ("%c 0x%.4x 0x%.12" PRIx64 " 0x%.16" PRIx64, + sign ? '-' : '+', + exponent, + mantissa1, + mantissa2); +} +#endif + +__attribute__((__noinline__)) +static void +do_test (__float128 expected, __float128 got, const char *name) +{ + int equal_p = (expected == got); + +#ifdef DEBUG + printf ("Test %s, expected: ", name); + print_f128 (expected); + printf (" %5g, got: ", (double) expected); + print_f128 (got); + printf (" %5g, result %s\n", + (double) got, + (equal_p) ? "equal" : "not equal"); +#endif + + if (!equal_p) + __builtin_abort (); +} + + +int +main (void) +{ + __float128 one = 1.0q; + __float128 two = 2.0q; + __float128 three = 3.0q; + __float128 four = 4.0q; + __float128 five = 5.0q; + __float128 add_result = (1.0q + 2.0q); + __float128 mul_result = ((1.0q + 2.0q) * 3.0q); + __float128 div_result = (((1.0q + 2.0q) * 3.0q) / 4.0q); + __float128 sub_result = ((((1.0q + 2.0q) * 3.0q) / 4.0q) - 5.0q); + __float128 neg_result = - sub_result; + __float128 add_xresult; + __float128 mul_xresult; + __float128 div_xresult; + __float128 sub_xresult; + __float128 neg_xresult; + +#if defined(__FLOAT128__) && defined(_ARCH_PPC) + __asm__ (" #prevent constant folding, %x0" : "+wa" (one)); + __asm__ (" #prevent constant folding, %x0" : "+wa" (two)); + __asm__ (" #prevent constant folding, %x0" : "+wa" (three)); + __asm__ (" #prevent constant folding, %x0" : "+wa" (four)); + __asm__ (" #prevent constant folding, %x0" : "+wa" (five)); + +#else + one = no_optimize (one); + two = no_optimize (two); + three = no_optimize (three); + four = no_optimize (four); + five = no_optimize (five); +#endif + + add_xresult = (one + two); + do_test (add_result, add_xresult, "add"); + + mul_xresult = add_xresult * three; + do_test (mul_result, mul_xresult, "mul"); + + div_xresult = mul_xresult / four; + do_test (div_result, div_xresult, "div"); + + sub_xresult = div_xresult - five; + do_test (sub_result, sub_xresult, "sub"); + + neg_xresult = - sub_xresult; + do_test (neg_result, neg_xresult, "neg"); + +#ifdef DEBUG + printf ("Passed\n"); +#endif + + return 0; +} diff --git a/gcc/testsuite/gcc.target/powerpc/float128-2.c b/gcc/testsuite/gcc.target/powerpc/float128-2.c new file mode 100644 index 00000000000..f517686bd25 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/float128-2.c @@ -0,0 +1,226 @@ +/* { dg-do run { target { powerpc*-*-linux* } } } */ +/* { dg-require-effective-target ppc_float128_sw } */ +/* { dg-options "-mcpu=power7 -O2 -mfloat128 -static-libgcc" } */ + +/* + * Test program to make sure we are getting more precision than the 53 bits we + * get with IEEE double. + */ + +#include <stdio.h> +#include <math.h> +#include <stdlib.h> +#include <stddef.h> + +#ifndef TYPE +#define TYPE __float128 +#endif + +#ifndef NO_INLINE +#define NO_INLINE __attribute__((__noinline__)) +#endif + +static TYPE power_of_two (ssize_t) NO_INLINE; +static TYPE calc1 (TYPE) NO_INLINE; +static TYPE calc2 (TYPE) NO_INLINE; +static TYPE calc3 (TYPE) NO_INLINE; + +#ifndef POWER2 +#define POWER2 60 +#endif + + +/* + * Print TYPE in hex. + */ + + +#if defined(DEBUG) || defined(DEBUG2) +static void print_hex (const char *prefix, TYPE, const char *suffix) NO_INLINE; + +#if defined (__i386__) || defined (__x86_64__) || defined (__LITTLE_ENDIAN__) +#define ENDIAN_REVERSE(N, MAX) ((MAX) - 1 - (N)) + +#else +#define ENDIAN_REVERSE(N, MAX) (N) +#endif + +static void +print_hex (const char *prefix, TYPE value, const char *suffix) +{ + union { + TYPE f128; + unsigned char uc[sizeof (TYPE)]; + } u; + + size_t i; + + u.f128 = value; + printf ("%s0x", prefix); + for (i = 0; i < sizeof (TYPE); i++) + printf ("%.2x", u.uc[ ENDIAN_REVERSE (i, sizeof (TYPE)) ]); + + printf (", %24.2Lf%s", (long double)value, suffix); +} +#endif + + +/* + * Return a power of two. + */ + +static TYPE +power_of_two (ssize_t num) +{ + TYPE ret = (TYPE) 1.0; + ssize_t i; + + if (num >= 0) + { + for (i = 0; i < num; i++) + ret *= (TYPE) 2.0; + } + else + { + ssize_t num2 = -num; + for (i = 0; i < num2; i++) + ret /= (TYPE) 2.0; + } + +#ifdef DEBUG + printf ("power_of_two (%2ld) = ", (long) num); + print_hex ("", ret, "\n"); +#endif + + return ret; +} + + +#ifdef ADDSUB +static TYPE add (TYPE a, TYPE b) NO_INLINE; +static TYPE sub (TYPE a, TYPE b) NO_INLINE; + +static TYPE +add (TYPE a, TYPE b) +{ + TYPE c; +#ifdef DEBUG + print_hex ("add, arg1 = ", a, "\n"); + print_hex ("add, arg2 = ", b, "\n"); +#endif + c = a + b; +#ifdef DEBUG + print_hex ("add, result = ", c, "\n"); +#endif + return c; +} + +static TYPE +sub (TYPE a, TYPE b) +{ + TYPE c; +#ifdef DEBUG + print_hex ("sub, arg1 = ", a, "\n"); + print_hex ("sub, arg2 = ", b, "\n"); +#endif + c = a - b; +#ifdef DEBUG + print_hex ("sub, result = ", c, "\n"); +#endif + return c; +} + +#else +#define add(x, y) ((x) + (y)) +#define sub(x, y) ((x) - (y)) +#endif + +/* + * Various calculations. Add in 2**POWER2, and subtract 2**(POWER2-1) twice, and we should + * get the original value. + */ + +static TYPE +calc1 (TYPE num) +{ + TYPE num2 = add (power_of_two (POWER2), num); + TYPE ret; + +#ifdef DEBUG + print_hex ("calc1 (before call) = ", num2, "\n"); +#endif + + ret = calc2 (num2); + +#ifdef DEBUG + print_hex ("calc1 (after call) = ", ret, "\n"); +#endif + + return ret; +} + +static TYPE +calc2 (TYPE num) +{ + TYPE num2 = sub (num, power_of_two (POWER2-1)); + TYPE ret; + +#ifdef DEBUG + print_hex ("calc2 (before call) = ", num2, "\n"); +#endif + + ret = calc3 (num2); + +#ifdef DEBUG + print_hex ("calc2 (after call) = ", ret, "\n"); +#endif + + return ret; +} + +static TYPE +calc3 (TYPE num) +{ + TYPE ret = sub (num, (((TYPE) 2.0) * power_of_two (POWER2-2))); + +#ifdef DEBUG + print_hex ("calc3 = ", ret, "\n"); +#endif + + return ret; +} + + +int +main (void) +{ + TYPE input, output; + +#ifdef DEBUG + printf ("Testing, %ld bytes\n", (long) sizeof (TYPE)); +#endif + + input = power_of_two (-1); + if ((double)input != 0.5) + { +#if defined(DEBUG) || defined(DEBUG2) + print_hex ("Input should be 0.5: ", output, "\n"); + return 1; +#else + __builtin_abort (); +#endif + } + + output = calc1 (input); + if ((double)output != 0.5) + { +#if defined(DEBUG) || defined(DEBUG2) + print_hex ("Output should be 0.5: ", output, "\n"); + return 1; +#else + __builtin_abort (); +#endif + } + + return 0; +} diff --git a/gcc/testsuite/gcc.target/powerpc/pr70117.c b/gcc/testsuite/gcc.target/powerpc/pr70117.c new file mode 100644 index 00000000000..f1fdedb6c59 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr70117.c @@ -0,0 +1,92 @@ +/* { dg-do run { target { powerpc*-*-linux* powerpc*-*-darwin* powerpc*-*-aix* rs6000-*-* } } } */ +/* { dg-options "-std=c99 -mlong-double-128 -O2" } */ + +#include <float.h> + +union gl_long_double_union +{ + struct { double hi; double lo; } dd; + long double ld; +}; + +/* This is gnulib's LDBL_MAX which, being 107 bits in precision, is + slightly larger than gcc's 106 bit precision LDBL_MAX. */ +volatile union gl_long_double_union gl_LDBL_MAX = + { { DBL_MAX, DBL_MAX / (double)134217728UL / (double)134217728UL } }; + +volatile double min_denorm = 0x1p-1074; +volatile double ld_low = 0x1p-969; +volatile double dinf = 1.0/0.0; +volatile double dnan = 0.0/0.0; + +int +main (void) +{ + long double ld; + + ld = gl_LDBL_MAX.ld; + if (__builtin_isinfl (ld)) + __builtin_abort (); + ld = -gl_LDBL_MAX.ld; + if (__builtin_isinfl (ld)) + __builtin_abort (); + + ld = gl_LDBL_MAX.ld; + if (!__builtin_isfinite (ld)) + __builtin_abort (); + ld = -gl_LDBL_MAX.ld; + if (!__builtin_isfinite (ld)) + __builtin_abort (); + + ld = ld_low; + if (!__builtin_isnormal (ld)) + __builtin_abort (); + ld = -ld_low; + if (!__builtin_isnormal (ld)) + __builtin_abort (); + + ld = -min_denorm; + ld += ld_low; + if (__builtin_isnormal (ld)) + __builtin_abort (); + ld = min_denorm; + ld -= ld_low; + if (__builtin_isnormal (ld)) + __builtin_abort (); + + ld = 0.0; + if (__builtin_isnormal (ld)) + __builtin_abort (); + ld = -0.0; + if (__builtin_isnormal (ld)) + __builtin_abort (); + + ld = LDBL_MAX; + if (!__builtin_isnormal (ld)) + __builtin_abort (); + ld = -LDBL_MAX; + if (!__builtin_isnormal (ld)) + __builtin_abort (); + + ld = gl_LDBL_MAX.ld; + if (!__builtin_isnormal (ld)) + __builtin_abort (); + ld = -gl_LDBL_MAX.ld; + if (!__builtin_isnormal (ld)) + __builtin_abort (); + + ld = dinf; + if (__builtin_isnormal (ld)) + __builtin_abort (); + ld = -dinf; + if (__builtin_isnormal (ld)) + __builtin_abort (); + + ld = dnan; + if (__builtin_isnormal (ld)) + __builtin_abort (); + ld = -dnan; + if (__builtin_isnormal (ld)) + __builtin_abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.target/powerpc/pr70640.c b/gcc/testsuite/gcc.target/powerpc/pr70640.c new file mode 100644 index 00000000000..5d49c6331f3 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr70640.c @@ -0,0 +1,11 @@ +/* { dg-do compile { target { powerpc*-*-linux* } } } */ +/* { dg-require-effective-target powerpc_float128_sw_ok } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ +/* { dg-options "-O2 -mcpu=power8 -mfloat128" } */ + +__float128 foo (__float128 a) { return -a; } + +/* { dg-final { scan-assembler "xxlorc\|vspltisw" } } */ +/* { dg-final { scan-assembler "xxlxor" } } */ +/* { dg-final { scan-assembler "vslb" } } */ +/* { dg-final { scan-assembler "vsldoi" } } */ diff --git a/gcc/testsuite/gcc.target/powerpc/pr70669.c b/gcc/testsuite/gcc.target/powerpc/pr70669.c new file mode 100644 index 00000000000..8054102ee50 --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr70669.c @@ -0,0 +1,22 @@ +/* { dg-do compile { target { powerpc*-*-linux* && lp64 } } } */ +/* { dg-require-effective-target powerpc_p8vector_ok } */ +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */ +/* { dg-options "-O2 -mcpu=power8 -mfloat128" } */ + +#ifndef TYPE +#define TYPE __float128 +#endif + +void foo (TYPE *p, TYPE *q) +{ + TYPE r = *q; +#ifndef NO_ASM + __asm__ (" # %0" : "+r" (r)); +#endif + *p = r; +} + +/* { dg-final { scan-assembler "mfvsrd" } } */ +/* { dg-final { scan-assembler "mtvsrd" } } */ +/* { dg-final { scan-assembler-times "stxvd2x" 1 } } */ +/* { dg-final { scan-assembler-times "lxvd2x" 1 } } */ diff --git a/gcc/testsuite/gcc.target/sh/torture/pr70416.c b/gcc/testsuite/gcc.target/sh/torture/pr70416.c new file mode 100644 index 00000000000..b1123bee029 --- /dev/null +++ b/gcc/testsuite/gcc.target/sh/torture/pr70416.c @@ -0,0 +1,136 @@ +/* { dg-additional-options "-std=gnu99 -fpic" } */ +/* { dg-do compile } */ + +typedef unsigned long VALUE; +typedef unsigned long ID; + +typedef struct rb_callable_method_entry_struct +{ + ID called_id; + const VALUE owner; +} rb_callable_method_entry_t; + +typedef struct rb_iseq_struct rb_iseq_t; + +struct __jmp_buf_tag { int xx; }; +typedef struct __jmp_buf_tag jmp_buf[1]; + +struct rb_iseq_struct +{ + const struct iseq_catch_table *catch_table; +}; + +typedef struct rb_control_frame_struct +{ + const VALUE *pc; + VALUE *sp; + const rb_iseq_t *iseq; + VALUE flag; + VALUE *ep; +} rb_control_frame_t; + +typedef jmp_buf rb_jmpbuf_t; +struct rb_vm_tag +{ + rb_jmpbuf_t buf; +}rb_ensure_list_t; + +typedef struct rb_thread_struct +{ + rb_control_frame_t *cfp; + struct rb_vm_tag *tag; +} rb_thread_t; + +struct iseq_catch_table_entry +{ + const rb_iseq_t *iseq; +}; + +struct iseq_catch_table +{ + unsigned int size; +}; + +extern unsigned long long __sdt_unsp; +extern unsigned short ruby_cmethod__return_semaphore; + +struct ruby_dtrace_method_hook_args +{ + const char *classname; + const char *methodname; + const char *filename; + int line_no; +}; + +int ruby_th_dtrace_setup(rb_thread_t *th, VALUE klass, ID id, struct ruby_dtrace_method_hook_args *args); +int rb_threadptr_tag_state (rb_thread_t *th); +VALUE vm_exec_core (rb_thread_t *th, VALUE initial); +const rb_callable_method_entry_t *rb_vm_frame_method_entry (const rb_control_frame_t *cfp); + +struct vm_throw_data; +const rb_control_frame_t * THROW_DATA_CATCH_FRAME(const struct vm_throw_data *obj); +rb_control_frame_t * vm_push_frame(rb_thread_t *th, const rb_iseq_t *iseq, VALUE type, VALUE self, VALUE specval, VALUE cref_or_me, const VALUE *pc, VALUE *sp, int local_size, int stack_max); + + +VALUE vm_exec(rb_thread_t *th) +{ + int state; + VALUE result; + VALUE initial = 0; + struct vm_throw_data *err; + rb_thread_t * const _th = (th); + struct rb_vm_tag _tag; + + if ((state = (__builtin_setjmp((_tag.buf)) ? rb_threadptr_tag_state((_th)) : ((void)(_th->tag = &_tag), 0))) == 0) + { + result = vm_exec_core(th, initial); + } + else + { + unsigned int i; + const struct iseq_catch_table_entry *entry; + const struct iseq_catch_table *ct; + unsigned long epc, cont_pc, cont_sp; + const rb_iseq_t *catch_iseq; + rb_control_frame_t *cfp; + const rb_control_frame_t *escape_cfp; + + while (th->cfp->pc == 0 || th->cfp->iseq == 0) + { + if (ruby_cmethod__return_semaphore) + { + struct ruby_dtrace_method_hook_args args; + if (ruby_th_dtrace_setup(th, rb_vm_frame_method_entry(th->cfp)->owner, rb_vm_frame_method_entry(th->cfp)->called_id, &args)) + { + __asm__ __volatile__ ( + ".asciz \"%n[_SDT_S1]@%[_SDT_A1] %n[_SDT_S2]@%[_SDT_A2] %n[_SDT_S3]@%[_SDT_A3] %n[_SDT_S4]@%[_SDT_A4]\"\n" + : + : [_SDT_S1] "n" (((!__extension__ (__builtin_constant_p ((((unsigned long long) (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.classname ) + 3) & -4) == 4, ( args.classname ), 0U))) __sdt_unsp) & ((unsigned long long)1 << (sizeof (unsigned long long) * 8 - 1))) == 0) || (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.classname ) + 3) & -4) == 4, ( args.classname ), 0U))) -1 > (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.classname ) + 3) & -4) == 4, ( args.classname ), 0U))) 0)) ? 1 : -1) * (int) ((__builtin_classify_type ( args.classname ) == 14 || __builtin_classify_type ( args.classname ) == 5) ? sizeof (void *) : sizeof ( args.classname ))), + [_SDT_A1] "nor" (( args.classname )), + [_SDT_S2] "n" (((!__extension__ (__builtin_constant_p ((((unsigned long long) (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.methodname ) + 3) & -4) == 4, ( args.methodname ), 0U))) __sdt_unsp) & ((unsigned long long)1 << (sizeof (unsigned long long) * 8 - 1))) == 0) || (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.methodname ) + 3) & -4) == 4, ( args.methodname ), 0U))) -1 > (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.methodname ) + 3) & -4) == 4, ( args.methodname ), 0U))) 0)) ? 1 : -1) * (int) ((__builtin_classify_type ( args.methodname ) == 14 || __builtin_classify_type ( args.methodname ) == 5) ? sizeof (void *) : sizeof ( args.methodname ))), + [_SDT_A2] "nor" (( args.methodname )), + [_SDT_S3] "n" (((!__extension__ (__builtin_constant_p ((((unsigned long long) (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.filename ) + 3) & -4) == 4, ( args.filename ), 0U))) __sdt_unsp) & ((unsigned long long)1 << (sizeof (unsigned long long) * 8 - 1))) == 0) || (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.filename ) + 3) & -4) == 4, ( args.filename ), 0U))) -1 > (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.filename ) + 3) & -4) == 4, ( args.filename ), 0U))) 0)) ? 1 : -1) * (int) ((__builtin_classify_type ( args.filename ) == 14 || __builtin_classify_type ( args.filename ) == 5) ? sizeof (void *) : sizeof ( args.filename ))), + [_SDT_A3] "nor" (( args.filename )), + [_SDT_S4] "n" (((!__extension__ (__builtin_constant_p ((((unsigned long long) (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.line_no ) + 3) & -4) == 4, ( args.line_no ), 0U))) __sdt_unsp) & ((unsigned long long)1 << (sizeof (unsigned long long) * 8 - 1))) == 0) || (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.line_no ) + 3) & -4) == 4, ( args.line_no ), 0U))) -1 > (__typeof (__builtin_choose_expr (((__builtin_classify_type ( args.line_no ) + 3) & -4) == 4, ( args.line_no ), 0U))) 0)) ? 1 : -1) * (int) ((__builtin_classify_type ( args.line_no ) == 14 || __builtin_classify_type ( args.line_no ) == 5) ? sizeof (void *) : sizeof ( args.line_no ))), + [_SDT_A4] "nor" (( args.line_no )) + ); + } + } + } + + if (cfp == escape_cfp && !(((cfp)->flag & 0x0200) != 0)) + catch_iseq = entry->iseq; + + if (state == 6) + { + escape_cfp = THROW_DATA_CATCH_FRAME(err); + + if (ct) + for (i = 0; i < ct->size; i++) { } + } + else + ct = cfp->iseq->catch_table; + + vm_push_frame(th, catch_iseq, 0xb1, 0, 1, 0, 0, 0, 5, 123); + } +} diff --git a/gcc/testsuite/gfortran.dg/allocate_with_source_19.f08 b/gcc/testsuite/gfortran.dg/allocate_with_source_19.f08 new file mode 100644 index 00000000000..ff8451093a8 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/allocate_with_source_19.f08 @@ -0,0 +1,22 @@ +! { dg-do compile } +! { dg-options -std=f2008 } + +! Contributed by mrestelli@gmail.com +! Check that instead of an ICE the error message is emitted. + +module m + implicit none +contains + + subroutine s() + real, allocatable :: x(:) + real :: y + + y = 5.0 + ! x either needs an array spec, or y needs to be an array. + allocate( x , source=y ) ! { dg-error "Array specification or array-valued SOURCE= expression required in ALLOCATE statement" } + + end subroutine s + +end module m + diff --git a/gcc/testsuite/gfortran.dg/coarray_allocate_6.f08 b/gcc/testsuite/gfortran.dg/coarray_allocate_6.f08 new file mode 100644 index 00000000000..2fdd4c128ef --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray_allocate_6.f08 @@ -0,0 +1,27 @@ +! { dg-do run } +! { dg-options "-fcoarray=single -fdump-tree-original" } + +! Contributed by Tobias Burnus <burnus@gcc.gnu.org> +! Test fix for pr65795. + +implicit none + +type t2 + integer, allocatable :: x +end type t2 + +type t3 + type(t2), allocatable :: caf[:] +end type t3 + +!type(t3), save, target :: c, d +type(t3), target :: c, d +integer :: stat + +allocate(c%caf[*], stat=stat) +end + +! Besides checking that the executable does not crash anymore, check +! that the cause has been remove. +! { dg-final { scan-tree-dump-not "c.caf.x = 0B" "original" } } + diff --git a/gcc/testsuite/gfortran.dg/deferred_character_16.f90 b/gcc/testsuite/gfortran.dg/deferred_character_16.f90 new file mode 100644 index 00000000000..f5931acd3c7 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/deferred_character_16.f90 @@ -0,0 +1,19 @@ +! { dg-do run } +! PR70592 dynamically-allocated character array +! Contributed by Peter Knowles <KnowlesPJ@Cardiff.ac.uk> +! +PROGRAM main + character(len=7) :: res + CHARACTER(len=:), DIMENSION(:), POINTER :: cp + INTEGER :: i + ALLOCATE(CHARACTER(len=1) :: cp(1:6)) + if (SIZE(cp) /= 6 .or. LBOUND(cp,1) /= 1 .or. UBOUND(cp,1) /= 6) call abort() + cp(1)='1' + cp(2)='2' + cp(3)='3' + cp(4)='4' + cp(5)='5' + cp(6)='6' + write (res, *) cp + if (res /= ' 123456') call abort() +END PROGRAM main diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95 index 5cc2e8b2df9..865f7a62e5c 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95 @@ -40,3 +40,5 @@ end program main ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.0 " 1 "optimized" } } ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.1 " 1 "optimized" } } ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.2 " 1 "optimized" } } + +! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 3 "parloops1" } } diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95 index d1bfc70c134..c9f3a6283cf 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95 @@ -47,3 +47,4 @@ end program main ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.1 " 1 "optimized" } } ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.2 " 1 "optimized" } } +! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 3 "parloops1" } } diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95 index feac7b2e529..33616076a59 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95 @@ -46,3 +46,5 @@ end program main ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.0 " 1 "optimized" } } ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.1 " 1 "optimized" } } ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.2 " 1 "optimized" } } + +! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 3 "parloops1" } } diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f95 index 632983febc4..5ba56fb34ab 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f95 @@ -44,3 +44,5 @@ end program main ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.0 " 1 "optimized" } } ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.1 " 1 "optimized" } } ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.2 " 1 "optimized" } } + +! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 3 "parloops1" } } diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f95 index 41b0d965586..a622a965d13 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f95 @@ -43,3 +43,5 @@ end program main ! Check that the loop has been split off into a function. ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.0 " 1 "optimized" } } ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.1 " 1 "optimized" } } + +! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 2 "parloops1" } } diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f95 index 3de20575419..4ec2ac38b8d 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f95 @@ -44,3 +44,5 @@ end program main ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.0 " 1 "optimized" } } ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.1 " 1 "optimized" } } ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.2 " 1 "optimized" } } + +! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 3 "parloops1" } } diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f95 index 21e2e86316a..409fe6f71fa 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f95 @@ -36,3 +36,6 @@ end module test ! Check that the loop has been split off into a function. ! { dg-final { scan-tree-dump-times "(?n);; Function __test_MOD_foo._omp_fn.0 " 1 "optimized" } } + +! TODO, PR70545. +! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" { xfail *-*-* } } } diff --git a/gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95 b/gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95 index f7e14b421b7..ae2cac6adaf 100644 --- a/gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95 +++ b/gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95 @@ -34,3 +34,5 @@ end program main ! Check that the loop has been split off into a function. ! { dg-final { scan-tree-dump-times "(?n);; Function MAIN__._omp_fn.0 " 1 "optimized" } } + +! { dg-final { scan-tree-dump-times "(?n)oacc function \\(0," 1 "parloops1" } } diff --git a/gcc/testsuite/gfortran.dg/goacc/reduction-3.f95 b/gcc/testsuite/gfortran.dg/goacc/reduction-3.f95 new file mode 100644 index 00000000000..72f0eb95a98 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/goacc/reduction-3.f95 @@ -0,0 +1,10 @@ +! { dg-do compile } + +subroutine foo (ia1) +integer :: i1, i2 + +!$acc parallel reduction (+:i1) private(i1) ! { dg-error "invalid private reduction on .i1." } +!$acc end parallel +!$acc parallel reduction (+:i2) firstprivate(i2) ! { dg-error "invalid private reduction on .i2." } +!$acc end parallel +end subroutine foo diff --git a/gcc/testsuite/gfortran.dg/goacc/reduction-promotions.f90 b/gcc/testsuite/gfortran.dg/goacc/reduction-promotions.f90 new file mode 100644 index 00000000000..6ff913ade8d --- /dev/null +++ b/gcc/testsuite/gfortran.dg/goacc/reduction-promotions.f90 @@ -0,0 +1,46 @@ +! Ensure that each parallel reduction variable as a copy or pcopy +! data clause. + +! { dg-additional-options "-fdump-tree-gimple" } + +program test + implicit none + integer :: v1, v2 + + !$acc parallel reduction(+:v1,v2) + !$acc end parallel + + !$acc parallel reduction(+:v1,v2) copy(v1,v2) + !$acc end parallel + + !$acc parallel reduction(+:v1,v2) pcopy(v1,v2) + !$acc end parallel + + !$acc parallel reduction(+:v1,v2) present(v1,v2) + !$acc end parallel + + !$acc parallel reduction(+:v1,v2) copyin(v1,v2) ! { dg-warning "incompatible data clause" } + !$acc end parallel + + !$acc parallel reduction(+:v1,v2) pcopyin(v1,v2) ! { dg-warning "incompatible data clause" } + !$acc end parallel + + !$acc parallel reduction(+:v1,v2) copyout(v1,v2) ! { dg-warning "incompatible data clause" } + !$acc end parallel + + !$acc parallel reduction(+:v1,v2) pcopyout(v1,v2) ! { dg-warning "incompatible data clause" } + !$acc end parallel + + !$acc parallel reduction(+:v1,v2) create(v1,v2) ! { dg-warning "incompatible data clause" } + !$acc end parallel + + !$acc parallel reduction(+:v1,v2) pcreate(v1,v2) ! { dg-warning "incompatible data clause" } + !$acc end parallel +end program test + +! { dg-final { scan-tree-dump-times "map.tofrom:v1" 8 "gimple" } } +! { dg-final { scan-tree-dump-times "map.tofrom:v2" 8 "gimple" } } +! { dg-final { scan-tree-dump-times "map.force_tofrom:v1" 1 "gimple" } } +! { dg-final { scan-tree-dump-times "map.force_tofrom:v2" 1 "gimple" } } +! { dg-final { scan-tree-dump-times "map.force_present:v1" 1 "gimple" } } +! { dg-final { scan-tree-dump-times "map.force_present:v2" 1 "gimple" } } diff --git a/gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f95 b/gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f95 new file mode 100644 index 00000000000..b2aae1df522 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/goacc/uninit-copy-clause.f95 @@ -0,0 +1,29 @@ +! { dg-do compile } +! { dg-additional-options "-Wuninitialized" } + +subroutine foo + integer :: i + + !$acc kernels + i = 1 + !$acc end kernels + +end subroutine foo + +subroutine foo2 + integer :: i + + !$acc kernels copy (i) + i = 1 + !$acc end kernels + +end subroutine foo2 + +subroutine foo3 + integer :: i + + !$acc kernels copyin (i) + i = 1 + !$acc end kernels + +end subroutine foo3 diff --git a/gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f95 b/gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f95 new file mode 100644 index 00000000000..14d960a1f38 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/goacc/uninit-firstprivate-clause.f95 @@ -0,0 +1,18 @@ +! { dg-do compile } +! { dg-additional-options "-Wuninitialized" } + +subroutine test + INTEGER :: i + + !$acc parallel + i = 1 + !$acc end parallel +end subroutine test + +subroutine test2 + INTEGER :: i + + !$acc parallel firstprivate (i) ! { dg-warning "is used uninitialized in this function" } + i = 1 + !$acc end parallel +end subroutine test2 diff --git a/gcc/testsuite/gfortran.dg/parameter_array_init_7.f90 b/gcc/testsuite/gfortran.dg/parameter_array_init_7.f90 new file mode 100644 index 00000000000..890da35da98 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/parameter_array_init_7.f90 @@ -0,0 +1,8 @@ +! { dg-do compile } +! PR68566 ICE on using unusable array in reshape +program p + integer, parameter :: n = 2 + integer, parameter :: a(:) = 0 !{ dg-error "automatic or of deferred shape" } + integer, parameter :: b(n, n) = reshape([a, 1+a], [n, n]) +end + diff --git a/gcc/testsuite/gfortran.dg/pr36192.f90 b/gcc/testsuite/gfortran.dg/pr36192.f90 index df3bfd75f24..ebf95e35bfe 100644 --- a/gcc/testsuite/gfortran.dg/pr36192.f90 +++ b/gcc/testsuite/gfortran.dg/pr36192.f90 @@ -3,7 +3,6 @@ ! program three_body real, parameter :: n = 2, d = 2 - real, dimension(n,d) :: x ! { dg-error "of INTEGER type|of INTEGER type" } - x(1,:) = (/ 1.0, 0.0 /) + real, dimension(n,d) :: x ! { dg-error "Expecting a scalar INTEGER" } + x(1,:) = (/ 1.0, 0.0 /) ! { dg-error "Unclassifiable" } end program three_body -! { dg-prune-output "have constant shape" } diff --git a/gcc/testsuite/gfortran.dg/pr36192_1.f90 b/gcc/testsuite/gfortran.dg/pr36192_1.f90 index 77df31765ac..687a465f8c0 100644 --- a/gcc/testsuite/gfortran.dg/pr36192_1.f90 +++ b/gcc/testsuite/gfortran.dg/pr36192_1.f90 @@ -2,11 +2,11 @@ ! PR fortran/36192 program three_body real, parameter :: n = 2, d = 2 - real, dimension(n,d) :: x_hq ! { dg-error "of INTEGER type|of INTEGER type" } + real, dimension(n,d) :: x_hq ! { dg-error "Expecting a scalar INTEGER" } call step(x_hq) contains subroutine step(x) real, dimension(:,:), intent(in) :: x end subroutine step end program three_body -! { dg-prune-output "must have constant shape" } +! { dg-prune-output "Rank mismatch in argument" } diff --git a/gcc/testsuite/gfortran.dg/real_dimension_1.f b/gcc/testsuite/gfortran.dg/real_dimension_1.f index 73e9131aaee..3dd1a5afc36 100644 --- a/gcc/testsuite/gfortran.dg/real_dimension_1.f +++ b/gcc/testsuite/gfortran.dg/real_dimension_1.f @@ -1,7 +1,7 @@ ! { dg-do compile } -! PR 34305 - make sure there's an error message for specifying a +! PR 34305 - Test for specifying a real as dimension program test - parameter (datasize = 1000) - dimension idata (datasize) ! { dg-error "must be of INTEGER type|must have constant shape" } - idata (1) = -1 + real , parameter :: dsize = 1000 + dimension idata (dsize) ! { dg-error "scalar INTEGER expression" } + idata (1) = -1 ! { dg-error "must have the pointer attribute" } end diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 777bff89a0d..3d44e1721dd 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -1740,7 +1740,7 @@ proc check_ppc_float128_sw_available { } { int main() { __float128 z = x + y; - return (z == 3.0q); + return (z != 3.0q); } } $options } @@ -1759,7 +1759,7 @@ proc check_ppc_float128_hw_available { } { || [istarget *-*-darwin*]} { expr 0 } else { - set options "-mfloat128-hardware" + set options "-mfloat128 -mvsx -mfloat128-hardware -mpower9-vector" check_runtime_nocache ppc_float128_hw_available { volatile __float128 x = 1.0q; volatile __float128 y = 2.0q; @@ -1769,7 +1769,7 @@ proc check_ppc_float128_hw_available { } { __float128 w = -1.0q; __asm__ ("xsaddqp %0,%1,%2" : "+v" (w) : "v" (x), "v" (y)); - return ((z == 3.0q) && (z == w); + return ((z != 3.0q) || (z != w); } } $options } @@ -2603,7 +2603,7 @@ proc check_effective_target_vect_simd_clones { } { # avx2 clone. Only the right clone for the specified arch will be # chosen, but still we need to at least be able to assemble # avx2. - if { [check_effective_target_avx2] } { + if { [check_effective_target_avx512f] } { set et_vect_simd_clones_saved 1 } } diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 5206d202bab..a4e044c611b 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -4065,7 +4065,7 @@ estimate_num_insns (gimple *stmt, eni_weights *weights) return 0; else if (is_inexpensive_builtin (decl)) return weights->target_builtin_call_cost; - else if (DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL) + else if (gimple_call_builtin_p (stmt, BUILT_IN_NORMAL)) { /* We canonicalize x * x to pow (x, 2.0) with -ffast-math, so specialize the cheap expansion we do here. diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c index e498e5b62b7..2e55b7961d8 100644 --- a/gcc/tree-parloops.c +++ b/gcc/tree-parloops.c @@ -767,14 +767,16 @@ eliminate_local_variables (edge entry, edge exit) FOR_EACH_VEC_ELT (body, i, bb) if (bb != entry_bb && bb != exit_bb) - for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) - if (is_gimple_debug (gsi_stmt (gsi))) - { - if (gimple_debug_bind_p (gsi_stmt (gsi))) - has_debug_stmt = true; - } - else - eliminate_local_variables_stmt (entry, &gsi, &decl_address); + { + for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi)) + if (is_gimple_debug (gsi_stmt (gsi))) + { + if (gimple_debug_bind_p (gsi_stmt (gsi))) + has_debug_stmt = true; + } + else + eliminate_local_variables_stmt (entry, &gsi, &decl_address); + } if (has_debug_stmt) FOR_EACH_VEC_ELT (body, i, bb) diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index 39e3691a48f..f8a6b43219d 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -161,6 +161,85 @@ print_generic_expr (FILE *file, tree t, int flags) pp_flush (tree_pp); } +/* Dump NAME, an IDENTIFIER_POINTER, sanitized so that D<num> sequences + in it are replaced with Dxxxx, as long as they are at the start or + preceded by $ and at the end or followed by $. See make_fancy_name + in tree-sra.c. */ + +static void +dump_fancy_name (pretty_printer *pp, tree name) +{ + int cnt = 0; + int length = IDENTIFIER_LENGTH (name); + const char *n = IDENTIFIER_POINTER (name); + do + { + n = strchr (n, 'D'); + if (n == NULL) + break; + if (ISDIGIT (n[1]) + && (n == IDENTIFIER_POINTER (name) || n[-1] == '$')) + { + int l = 2; + while (ISDIGIT (n[l])) + l++; + if (n[l] == '\0' || n[l] == '$') + { + cnt++; + length += 5 - l; + } + n += l; + } + else + n++; + } + while (1); + if (cnt == 0) + { + pp_tree_identifier (pp, name); + return; + } + + char *str = XNEWVEC (char, length + 1); + char *p = str; + const char *q; + q = n = IDENTIFIER_POINTER (name); + do + { + q = strchr (q, 'D'); + if (q == NULL) + break; + if (ISDIGIT (q[1]) + && (q == IDENTIFIER_POINTER (name) || q[-1] == '$')) + { + int l = 2; + while (ISDIGIT (q[l])) + l++; + if (q[l] == '\0' || q[l] == '$') + { + memcpy (p, n, q - n); + memcpy (p + (q - n), "Dxxxx", 5); + p += (q - n) + 5; + n = q + l; + } + q += l; + } + else + q++; + } + while (1); + memcpy (p, n, IDENTIFIER_LENGTH (name) - (n - IDENTIFIER_POINTER (name))); + str[length] = '\0'; + if (pp_translate_identifiers (pp)) + { + const char *text = identifier_to_locale (str); + pp_append_text (pp, text, text + strlen (text)); + } + else + pp_append_text (pp, str, str + length); + XDELETEVEC (str); +} + /* Dump the name of a _DECL node and its DECL_UID if TDF_UID is set in FLAGS. */ @@ -171,6 +250,10 @@ dump_decl_name (pretty_printer *pp, tree node, int flags) { if ((flags & TDF_ASMNAME) && DECL_ASSEMBLER_NAME_SET_P (node)) pp_tree_identifier (pp, DECL_ASSEMBLER_NAME (node)); + /* For DECL_NAMELESS names look for embedded uids in the + names and sanitize them for TDF_NOUID. */ + else if ((flags & TDF_NOUID) && DECL_NAMELESS (node)) + dump_fancy_name (pp, DECL_NAME (node)); else pp_tree_identifier (pp, DECL_NAME (node)); } @@ -2593,8 +2676,15 @@ dump_generic_node (pretty_printer *pp, tree node, int spc, int flags, case SSA_NAME: if (SSA_NAME_IDENTIFIER (node)) - dump_generic_node (pp, SSA_NAME_IDENTIFIER (node), - spc, flags, false); + { + if ((flags & TDF_NOUID) + && SSA_NAME_VAR (node) + && DECL_NAMELESS (SSA_NAME_VAR (node))) + dump_fancy_name (pp, SSA_NAME_IDENTIFIER (node)); + else + dump_generic_node (pp, SSA_NAME_IDENTIFIER (node), + spc, flags, false); + } pp_underscore (pp); pp_decimal_int (pp, SSA_NAME_VERSION (node)); if (SSA_NAME_IS_DEFAULT_DEF (node)) diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c index fdd5da0589a..88a0eaaa82d 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -1510,6 +1510,9 @@ analyze_evolution_in_loop (gphi *loop_phi_node, /* When there are multiple back edges of the loop (which in fact never happens currently, but nevertheless), merge their evolutions. */ evolution_function = chrec_merge (evolution_function, ev_fn); + + if (evolution_function == chrec_dont_know) + break; } if (dump_file && (dump_flags & TDF_SCEV)) @@ -1687,6 +1690,8 @@ interpret_condition_phi (struct loop *loop, gphi *condition_phi) (loop, PHI_ARG_DEF (condition_phi, i)); res = chrec_merge (res, branch_chrec); + if (res == chrec_dont_know) + break; } return res; diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index a3fb59ce5a4..6fafe559cf2 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -1673,7 +1673,7 @@ build_ref_for_offset (location_t loc, tree base, HOST_WIDE_INT offset, } else { - off = build_int_cst (reference_alias_ptr_type (base), + off = build_int_cst (reference_alias_ptr_type (prev_base), base_offset + offset / BITS_PER_UNIT); base = build_fold_addr_expr (unshare_expr (base)); } @@ -2132,6 +2132,7 @@ create_access_replacement (struct access *access) bool fail = false; DECL_NAME (repl) = get_identifier (pretty_name); + DECL_NAMELESS (repl) = 1; obstack_free (&name_obstack, pretty_name); /* Get rid of any SSA_NAMEs embedded in debug_expr, @@ -2743,6 +2744,9 @@ generate_subtree_copies (struct access *access, tree agg, gimple_stmt_iterator *gsi, bool write, bool insert_after, location_t loc) { + /* Never write anything into constant pool decls. See PR70602. */ + if (!write && constant_decl_p (agg)) + return; do { if (chunk_size && access->offset >= start_offset + chunk_size) @@ -4701,6 +4705,7 @@ get_replaced_param_substitute (struct ipa_parm_adjustment *adj) repl = create_tmp_reg (TREE_TYPE (adj->base), "ISR"); DECL_NAME (repl) = get_identifier (pretty_name); + DECL_NAMELESS (repl) = 1; obstack_free (&name_obstack, pretty_name); adj->new_ssa_base = repl; diff --git a/gcc/tree-ssa-coalesce.c b/gcc/tree-ssa-coalesce.c index 93e1e2eafe9..4b0134d082c 100644 --- a/gcc/tree-ssa-coalesce.c +++ b/gcc/tree-ssa-coalesce.c @@ -906,6 +906,23 @@ build_ssa_conflict_graph (tree_live_info_p liveinfo) else if (is_gimple_debug (stmt)) continue; + /* For stmts with more than one SSA_NAME definition pretend all the + SSA_NAME outputs but the first one are live at this point, so + that conflicts are added in between all those even when they are + actually not really live after the asm, because expansion might + copy those into pseudos after the asm and if multiple outputs + share the same partition, it might overwrite those that should + be live. E.g. + asm volatile (".." : "=r" (a) : "=r" (b) : "0" (a), "1" (a)); + return a; + See PR70593. */ + bool first = true; + FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_DEF) + if (first) + first = false; + else + live_track_process_use (live, var); + FOR_EACH_SSA_TREE_OPERAND (var, stmt, iter, SSA_OP_DEF) live_track_process_def (live, var, graph); diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c index f64ee0a8114..c40f9e20d22 100644 --- a/gcc/tree-ssa-forwprop.c +++ b/gcc/tree-ssa-forwprop.c @@ -1773,7 +1773,7 @@ simplify_bitfield_ref (gimple_stmt_iterator *gsi) if (code == VEC_PERM_EXPR) { - tree p, m, index, tem; + tree p, m, tem; unsigned nelts; m = gimple_assign_rhs3 (def_stmt); if (TREE_CODE (m) != VECTOR_CST) @@ -1790,9 +1790,8 @@ simplify_bitfield_ref (gimple_stmt_iterator *gsi) p = gimple_assign_rhs2 (def_stmt); idx -= nelts; } - index = build_int_cst (TREE_TYPE (TREE_TYPE (m)), idx * size); tem = build3 (BIT_FIELD_REF, TREE_TYPE (op), - unshare_expr (p), op1, index); + unshare_expr (p), op1, bitsize_int (idx * size)); gimple_assign_set_rhs1 (stmt, tem); fold_stmt (gsi); update_stmt (gsi_stmt (*gsi)); diff --git a/gcc/tree-ssa-ifcombine.c b/gcc/tree-ssa-ifcombine.c index 22b8b78a83f..79fe3a8b2d0 100644 --- a/gcc/tree-ssa-ifcombine.c +++ b/gcc/tree-ssa-ifcombine.c @@ -125,7 +125,14 @@ bb_no_side_effects_p (basic_block bb) if (gimple_has_side_effects (stmt) || gimple_uses_undefined_value_p (stmt) || gimple_could_trap_p (stmt) - || gimple_vuse (stmt)) + || gimple_vuse (stmt) + /* const calls don't match any of the above, yet they could + still have some side-effects - they could contain + gimple_could_trap_p statements, like floating point + exceptions or integer division by zero. See PR70586. + FIXME: perhaps gimple_has_side_effects or gimple_could_trap_p + should handle this. */ + || is_gimple_call (stmt)) return false; } diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c index c76051ac542..15fc43f8126 100644 --- a/gcc/tree-ssa-live.c +++ b/gcc/tree-ssa-live.c @@ -393,14 +393,16 @@ remove_unused_scope_block_p (tree scope, bool in_ctor_dtor_block) in_ctor_dtor_block = true; unused = false; } - /* 2) inside such blocks, the outermost block with BLOCK_ABSTRACT_ORIGIN + /* 2) inside such blocks, the outermost block with block_ultimate_origin being a FUNCTION_DECL. */ - else if (in_ctor_dtor_block - && BLOCK_ABSTRACT_ORIGIN (scope) - && TREE_CODE (BLOCK_ABSTRACT_ORIGIN (scope)) == FUNCTION_DECL) + else if (in_ctor_dtor_block) { - in_ctor_dtor_block = false; - unused = false; + tree fn = block_ultimate_origin (scope); + if (fn && TREE_CODE (fn) == FUNCTION_DECL) + { + in_ctor_dtor_block = false; + unused = false; + } } for (t = &BLOCK_VARS (scope); *t; t = next) @@ -855,7 +857,9 @@ remove_unused_locals (void) cfun->local_decls->truncate (dstidx); } - remove_unused_scope_block_p (DECL_INITIAL (current_function_decl), false); + remove_unused_scope_block_p (DECL_INITIAL (current_function_decl), + polymorphic_ctor_dtor_p (current_function_decl, + true) != NULL_TREE); clear_unused_block_pointer (); BITMAP_FREE (usedvars); diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 7be4f16fbac..a016e9f64c4 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -121,11 +121,7 @@ avg_loop_niter (struct loop *loop) { HOST_WIDE_INT niter = estimated_stmt_executions_int (loop); if (niter == -1) - { - niter = max_stmt_executions_int (loop); - if (niter == -1 || niter > AVG_LOOP_NITER (loop)) - return AVG_LOOP_NITER (loop); - } + return AVG_LOOP_NITER (loop); return niter; } diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index c93e563e51c..81689fc1aa4 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -3115,6 +3115,7 @@ idx_infer_loop_bounds (tree base, tree *idx, void *dta) tree low, high, type, next; bool sign, upper = true, at_end = false; struct loop *loop = data->loop; + bool reliable = true; if (TREE_CODE (base) != ARRAY_REF) return true; @@ -3186,14 +3187,14 @@ idx_infer_loop_bounds (tree base, tree *idx, void *dta) && tree_int_cst_compare (next, high) <= 0) return true; - /* If access is not executed on every iteration, we must ensure that overlow - may not make the access valid later. */ + /* If access is not executed on every iteration, we must ensure that overlow may + not make the access valid later. */ if (!dominated_by_p (CDI_DOMINATORS, loop->latch, gimple_bb (data->stmt)) && scev_probably_wraps_p (initial_condition_in_loop_num (ev, loop->num), step, data->stmt, loop, true)) - upper = false; + reliable = false; - record_nonwrapping_iv (loop, init, step, data->stmt, low, high, false, upper); + record_nonwrapping_iv (loop, init, step, data->stmt, low, high, reliable, upper); return true; } diff --git a/gcc/tree-ssa-loop-unswitch.c b/gcc/tree-ssa-loop-unswitch.c index 77acd66e997..dd6fd01256a 100644 --- a/gcc/tree-ssa-loop-unswitch.c +++ b/gcc/tree-ssa-loop-unswitch.c @@ -223,8 +223,6 @@ tree_unswitch_single_loop (struct loop *loop, int num) /* If the loop is not expected to iterate, there is no need for unswitching. */ iterations = estimated_loop_iterations_int (loop); - if (iterations < 0) - iterations = max_loop_iterations_int (loop); if (iterations >= 0 && iterations <= 1) { if (dump_file && (dump_flags & TDF_DETAILS)) @@ -441,8 +439,6 @@ tree_unswitch_outer_loop (struct loop *loop) /* If the loop is not expected to iterate, there is no need for unswitching. */ iterations = estimated_loop_iterations_int (loop); - if (iterations < 0) - iterations = max_loop_iterations_int (loop); if (iterations >= 0 && iterations <= 1) { if (dump_file && (dump_flags & TDF_DETAILS)) diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index 4626022b8b8..735b7c67c31 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -3827,7 +3827,7 @@ pass_optimize_widening_mul::execute (function *fun) { tree fndecl = gimple_call_fndecl (stmt); if (fndecl - && DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL) + && gimple_call_builtin_p (stmt, BUILT_IN_NORMAL)) { switch (DECL_FUNCTION_CODE (fndecl)) { diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c index b2d63acf930..f1a3130cb1c 100644 --- a/gcc/tree-ssa-pre.c +++ b/gcc/tree-ssa-pre.c @@ -2062,11 +2062,6 @@ prune_clobbered_mems (bitmap_set_t set, basic_block block) static sbitmap has_abnormal_preds; -/* List of blocks that may have changed during ANTIC computation and - thus need to be iterated over. */ - -static sbitmap changed_blocks; - /* Compute the ANTIC set for BLOCK. If succs(BLOCK) > 1 then @@ -2125,6 +2120,16 @@ compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge) first = e->dest; else if (BB_VISITED (e->dest)) worklist.quick_push (e->dest); + else + { + /* Unvisited successors get their ANTIC_IN replaced by the + maximal set to arrive at a maximum ANTIC_IN solution. + We can ignore them in the intersection operation and thus + need not explicitely represent that maximum solution. */ + if (dump_file && (dump_flags & TDF_DETAILS)) + fprintf (dump_file, "ANTIC_IN is MAX on %d->%d\n", + e->src->index, e->dest->index); + } } /* Of multiple successors we have to have visited one already @@ -2167,14 +2172,7 @@ compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge) clean (ANTIC_IN (block)); if (!bitmap_set_equal (old, ANTIC_IN (block))) - { - changed = true; - bitmap_set_bit (changed_blocks, block->index); - FOR_EACH_EDGE (e, ei, block->preds) - bitmap_set_bit (changed_blocks, e->src->index); - } - else - bitmap_clear_bit (changed_blocks, block->index); + changed = true; maybe_dump_sets: if (dump_file && (dump_flags & TDF_DETAILS)) @@ -2182,6 +2180,8 @@ compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge) if (ANTIC_OUT) print_bitmap_set (dump_file, ANTIC_OUT, "ANTIC_OUT", block->index); + if (changed) + fprintf (dump_file, "[changed] "); print_bitmap_set (dump_file, ANTIC_IN (block), "ANTIC_IN", block->index); @@ -2313,14 +2313,7 @@ compute_partial_antic_aux (basic_block block, dependent_clean (PA_IN (block), ANTIC_IN (block)); if (!bitmap_set_equal (old_PA_IN, PA_IN (block))) - { - changed = true; - bitmap_set_bit (changed_blocks, block->index); - FOR_EACH_EDGE (e, ei, block->preds) - bitmap_set_bit (changed_blocks, e->src->index); - } - else - bitmap_clear_bit (changed_blocks, block->index); + changed = true; maybe_dump_sets: if (dump_file && (dump_flags & TDF_DETAILS)) @@ -2346,6 +2339,8 @@ compute_antic (void) int num_iterations = 0; basic_block block; int i; + edge_iterator ei; + edge e; /* If any predecessor edges are abnormal, we punt, so antic_in is empty. We pre-build the map of blocks with incoming abnormal edges here. */ @@ -2354,18 +2349,12 @@ compute_antic (void) FOR_ALL_BB_FN (block, cfun) { - edge_iterator ei; - edge e; - FOR_EACH_EDGE (e, ei, block->preds) - { - e->flags &= ~EDGE_DFS_BACK; - if (e->flags & EDGE_ABNORMAL) - { - bitmap_set_bit (has_abnormal_preds, block->index); - break; - } - } + if (e->flags & EDGE_ABNORMAL) + { + bitmap_set_bit (has_abnormal_preds, block->index); + break; + } BB_VISITED (block) = 0; @@ -2377,8 +2366,8 @@ compute_antic (void) /* At the exit block we anticipate nothing. */ BB_VISITED (EXIT_BLOCK_PTR_FOR_FN (cfun)) = 1; - changed_blocks = sbitmap_alloc (last_basic_block_for_fn (cfun) + 1); - bitmap_ones (changed_blocks); + sbitmap worklist = sbitmap_alloc (last_basic_block_for_fn (cfun) + 1); + bitmap_ones (worklist); while (changed) { if (dump_file && (dump_flags & TDF_DETAILS)) @@ -2391,12 +2380,18 @@ compute_antic (void) changed = false; for (i = postorder_num - 1; i >= 0; i--) { - if (bitmap_bit_p (changed_blocks, postorder[i])) + if (bitmap_bit_p (worklist, postorder[i])) { basic_block block = BASIC_BLOCK_FOR_FN (cfun, postorder[i]); - changed |= compute_antic_aux (block, - bitmap_bit_p (has_abnormal_preds, - block->index)); + bitmap_clear_bit (worklist, block->index); + if (compute_antic_aux (block, + bitmap_bit_p (has_abnormal_preds, + block->index))) + { + FOR_EACH_EDGE (e, ei, block->preds) + bitmap_set_bit (worklist, e->src->index); + changed = true; + } } } /* Theoretically possible, but *highly* unlikely. */ @@ -2408,8 +2403,7 @@ compute_antic (void) if (do_partial_partial) { - bitmap_ones (changed_blocks); - mark_dfs_back_edges (); + bitmap_ones (worklist); num_iterations = 0; changed = true; while (changed) @@ -2420,13 +2414,18 @@ compute_antic (void) changed = false; for (i = postorder_num - 1 ; i >= 0; i--) { - if (bitmap_bit_p (changed_blocks, postorder[i])) + if (bitmap_bit_p (worklist, postorder[i])) { basic_block block = BASIC_BLOCK_FOR_FN (cfun, postorder[i]); - changed - |= compute_partial_antic_aux (block, - bitmap_bit_p (has_abnormal_preds, - block->index)); + bitmap_clear_bit (worklist, block->index); + if (compute_partial_antic_aux (block, + bitmap_bit_p (has_abnormal_preds, + block->index))) + { + FOR_EACH_EDGE (e, ei, block->preds) + bitmap_set_bit (worklist, e->src->index); + changed = true; + } } } /* Theoretically possible, but *highly* unlikely. */ @@ -2436,7 +2435,7 @@ compute_antic (void) num_iterations); } sbitmap_free (has_abnormal_preds); - sbitmap_free (changed_blocks); + sbitmap_free (worklist); } @@ -4695,12 +4694,14 @@ init_pre (void) connect_infinite_loops_to_exit (); memset (&pre_stats, 0, sizeof (pre_stats)); + /* For ANTIC computation we need a postorder that also guarantees that + a block with a single successor is visited after its successor. + RPO on the inverted CFG has this property. */ postorder = XNEWVEC (int, n_basic_blocks_for_fn (cfun)); postorder_num = inverted_post_order_compute (postorder); alloc_aux_for_blocks (sizeof (struct bb_bitmap_sets)); - calculate_dominance_info (CDI_POST_DOMINATORS); calculate_dominance_info (CDI_DOMINATORS); bitmap_obstack_initialize (&grand_bitmap_obstack); @@ -4734,8 +4735,6 @@ fini_pre () name_to_id.release (); free_aux_for_blocks (); - - free_dominance_info (CDI_POST_DOMINATORS); } namespace { diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c index f977ee9351b..d813b862592 100644 --- a/gcc/tree-vect-loop.c +++ b/gcc/tree-vect-loop.c @@ -2063,8 +2063,6 @@ start_over: estimated_niter = estimated_stmt_executions_int (LOOP_VINFO_LOOP (loop_vinfo)); - if (estimated_niter != -1) - estimated_niter = max_niter; if (estimated_niter != -1 && ((unsigned HOST_WIDE_INT) estimated_niter <= MAX (th, (unsigned)min_profitable_estimate))) diff --git a/gcc/tree.c b/gcc/tree.c index ed28429b1e1..c64d7204acb 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -13584,7 +13584,9 @@ verify_type (const_tree t) debug_tree (ct); error_found = true; } - if (TYPE_MAIN_VARIANT (t) == t && ct && TYPE_MAIN_VARIANT (ct) != ct) + /* FIXME: this is violated by the C++ FE as discussed in PR70029, when + FUNCTION_*_QUALIFIED flags are set. */ + if (0 && TYPE_MAIN_VARIANT (t) == t && ct && TYPE_MAIN_VARIANT (ct) != ct) { error ("TYPE_CANONICAL of main variant is not main variant"); debug_tree (ct); diff --git a/gcc/tree.def b/gcc/tree.def index 2355a7c0fe3..44130d7c77f 100644 --- a/gcc/tree.def +++ b/gcc/tree.def @@ -870,10 +870,10 @@ DEFTREECODE (POSTINCREMENT_EXPR, "postincrement_expr", tcc_expression, 2) /* Used to implement `va_arg'. */ DEFTREECODE (VA_ARG_EXPR, "va_arg_expr", tcc_expression, 1) -/* Evaluate operand 1. If and only if an exception is thrown during - the evaluation of operand 1, evaluate operand 2. +/* Evaluate operand 0. If and only if an exception is thrown during + the evaluation of operand 0, evaluate operand 1. - This differs from TRY_FINALLY_EXPR in that operand 2 is not evaluated + This differs from TRY_FINALLY_EXPR in that operand 1 is not evaluated on a normal or jump exit, only on an exception. */ DEFTREECODE (TRY_CATCH_EXPR, "try_catch_expr", tcc_statement, 2) diff --git a/gcc/tree.h b/gcc/tree.h index 544a6a163df..87e756390f6 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -1430,6 +1430,10 @@ extern void protected_set_expr_location (tree, location_t); #define OMP_CLAUSE_PRIVATE_TASKLOOP_IV(NODE) \ TREE_PROTECTED (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PRIVATE)) +/* True on a FIRSTPRIVATE clause if it has been added implicitly. */ +#define OMP_CLAUSE_FIRSTPRIVATE_IMPLICIT(NODE) \ + (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_FIRSTPRIVATE)->base.public_flag) + /* True on a LASTPRIVATE clause if a FIRSTPRIVATE clause for the same decl is present in the chain. */ #define OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE(NODE) \ @@ -1532,6 +1536,9 @@ extern void protected_set_expr_location (tree, location_t); treatment if OMP_CLAUSE_SIZE is zero. */ #define OMP_CLAUSE_MAP_MAYBE_ZERO_LENGTH_ARRAY_SECTION(NODE) \ TREE_PROTECTED (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MAP)) +/* Nonzero if this map clause is for an ACC parallel reduction variable. */ +#define OMP_CLAUSE_MAP_IN_REDUCTION(NODE) \ + TREE_PRIVATE (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MAP)) #define OMP_CLAUSE_PROC_BIND_KIND(NODE) \ (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PROC_BIND)->omp_clause.subcode.proc_bind_kind) diff --git a/gnattools/ChangeLog b/gnattools/ChangeLog index bdcd968f308..18aa7021d66 100644 --- a/gnattools/ChangeLog +++ b/gnattools/ChangeLog @@ -1,3 +1,8 @@ +2016-04-04 Segher Boessenkool <segher@kernel.crashing.org> + + PR bootstrap/70173 + * Makefile.in (distclean): Also delete config.cache . + 2015-12-06 Eric Botcazou <ebotcazou@adacore.com> PR ada/50048 diff --git a/gnattools/Makefile.in b/gnattools/Makefile.in index 0c889eeec7b..f949ca9b34b 100644 --- a/gnattools/Makefile.in +++ b/gnattools/Makefile.in @@ -309,7 +309,7 @@ mostlyclean: clean: distclean: - $(RM) Makefile config.status config.log + $(RM) Makefile config.status config.log config.cache maintainer-clean: diff --git a/libcc1/ChangeLog b/libcc1/ChangeLog index 1efcb68e04b..a65af09c6e6 100644 --- a/libcc1/ChangeLog +++ b/libcc1/ChangeLog @@ -1,3 +1,10 @@ +2016-04-11 Segher Boessenkool <segher@kernel.crashing.org> + + PR bootstrap/70173 + * Makefile.am (MOSTLYCLEANFILES): New, add compiler-name.h . + (compiler-name.h): Shorten recipe so that it fits the line. + * Makefile.in: Regenerate. + 2016-03-14 Andreas Schwab <schwab@suse.de> * configure.ac (CONFIG_STATUS_DEPENDENCIES): Substitute. diff --git a/libcc1/Makefile.am b/libcc1/Makefile.am index 7a274b3470c..b40820b2189 100644 --- a/libcc1/Makefile.am +++ b/libcc1/Makefile.am @@ -44,11 +44,12 @@ cc1lib_LTLIBRARIES = libcc1.la endif BUILT_SOURCES = compiler-name.h +MOSTLYCLEANFILES = compiler-name.h # Put this in a header so we don't run sed for each compilation. This # is also simpler to debug as one can easily see the constant. compiler-name.h: Makefile - echo "#define COMPILER_NAME \"`echo gcc | sed '$(transform)'`\"" > compiler-name.h + echo "#define COMPILER_NAME \"`echo gcc | sed '$(transform)'`\"" > $@ shared_source = callbacks.cc callbacks.hh connection.cc connection.hh \ diff --git a/libcc1/Makefile.in b/libcc1/Makefile.in index 9e003682363..79d39d3f46a 100644 --- a/libcc1/Makefile.in +++ b/libcc1/Makefile.in @@ -296,6 +296,7 @@ cc1libdir = $(libdir)/$(libsuffix) @ENABLE_PLUGIN_TRUE@plugin_LTLIBRARIES = libcc1plugin.la @ENABLE_PLUGIN_TRUE@cc1lib_LTLIBRARIES = libcc1.la BUILT_SOURCES = compiler-name.h +MOSTLYCLEANFILES = compiler-name.h shared_source = callbacks.cc callbacks.hh connection.cc connection.hh \ marshall.cc marshall.hh rpc.hh status.hh @@ -563,6 +564,7 @@ install-strip: "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) clean-generic: @@ -672,7 +674,7 @@ override LDFLAGS := $(filter-out -fsanitize=address,$(LDFLAGS)) # Put this in a header so we don't run sed for each compilation. This # is also simpler to debug as one can easily see the constant. compiler-name.h: Makefile - echo "#define COMPILER_NAME \"`echo gcc | sed '$(transform)'`\"" > compiler-name.h + echo "#define COMPILER_NAME \"`echo gcc | sed '$(transform)'`\"" > $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index 49b6e71abbb..acb8d75dccf 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,20 @@ +2016-04-13 Bernd Schmidt <bschmidt@redhat.com> + + Patch from Roger Orr <rogero@howzatt.demon.co.uk> + PR preprocessor/69650 + * directives.c (do_linemarker): Reread map after calling + cpp_get_token. + +2016-04-06 Richard Henderson <rth@redhat.com> + + PR preprocessor/61817 + PR preprocessor/69391 + * internal.h (_cpp_builtin_macro_text): Update decl. + * macro.c (_cpp_builtin_macro_text): Accept location for __LINE__. + (builtin_macro): Accept a second location for __LINE__. + (enter_macro_context): Compute both virtual and real expansion + locations for the macro. + 2016-03-25 Bernd Schmidt <bschmidt@redhat.com> PR lto/69650 diff --git a/libcpp/directives.c b/libcpp/directives.c index 6aa6bd1f86a..1617ff61c3c 100644 --- a/libcpp/directives.c +++ b/libcpp/directives.c @@ -1048,6 +1048,9 @@ do_linemarker (cpp_reader *pfile) if (reason == LC_LEAVE) { + /* Reread map since cpp_get_token can invalidate it with a + reallocation. */ + map = LINEMAPS_LAST_ORDINARY_MAP (line_table); const line_map_ordinary *from; if (MAIN_FILE_P (map) || (new_file @@ -1055,7 +1058,8 @@ do_linemarker (cpp_reader *pfile) && filename_cmp (ORDINARY_MAP_FILE_NAME (from), new_file) != 0)) { cpp_warning (pfile, CPP_W_NONE, - "file \"%s\" linemarker ignored due to incorrect nesting", new_file); + "file \"%s\" linemarker ignored due to " + "incorrect nesting", new_file); return; } } diff --git a/libcpp/internal.h b/libcpp/internal.h index bafd4803865..9ce870738cc 100644 --- a/libcpp/internal.h +++ b/libcpp/internal.h @@ -626,7 +626,8 @@ extern bool _cpp_save_parameter (cpp_reader *, cpp_macro *, cpp_hashnode *, extern bool _cpp_arguments_ok (cpp_reader *, cpp_macro *, const cpp_hashnode *, unsigned int); extern const unsigned char *_cpp_builtin_macro_text (cpp_reader *, - cpp_hashnode *); + cpp_hashnode *, + source_location = 0); extern int _cpp_warn_if_unused_macro (cpp_reader *, cpp_hashnode *, void *); extern void _cpp_push_token_context (cpp_reader *, cpp_hashnode *, const cpp_token *, unsigned int); diff --git a/libcpp/macro.c b/libcpp/macro.c index 759fbe7f028..c2515534504 100644 --- a/libcpp/macro.c +++ b/libcpp/macro.c @@ -93,7 +93,8 @@ struct macro_arg_saved_data { static int enter_macro_context (cpp_reader *, cpp_hashnode *, const cpp_token *, source_location); -static int builtin_macro (cpp_reader *, cpp_hashnode *, source_location); +static int builtin_macro (cpp_reader *, cpp_hashnode *, + source_location, source_location); static void push_ptoken_context (cpp_reader *, cpp_hashnode *, _cpp_buff *, const cpp_token **, unsigned int); static void push_extended_tokens_context (cpp_reader *, cpp_hashnode *, @@ -229,7 +230,8 @@ static const char * const monthnames[] = /* Helper function for builtin_macro. Returns the text generated by a builtin macro. */ const uchar * -_cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node) +_cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node, + source_location loc) { const uchar *result = NULL; linenum_type number = 1; @@ -319,11 +321,14 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node) case BT_SPECLINE: /* If __LINE__ is embedded in a macro, it must expand to the line of the macro's invocation, not its definition. - Otherwise things like assert() will not work properly. */ - number = linemap_get_expansion_line (pfile->line_table, - CPP_OPTION (pfile, traditional) - ? pfile->line_table->highest_line - : pfile->cur_token[-1].src_loc); + Otherwise things like assert() will not work properly. + See WG14 N1911, WG21 N4220 sec 6.5, and PR 61861. */ + if (CPP_OPTION (pfile, traditional)) + loc = pfile->line_table->highest_line; + else + loc = linemap_resolve_location (pfile->line_table, loc, + LRK_MACRO_EXPANSION_POINT, NULL); + number = linemap_get_expansion_line (pfile->line_table, loc); break; /* __STDC__ has the value 1 under normal circumstances. @@ -417,7 +422,8 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node) return the token to the caller. LOC is the location of the expansion point of the macro. */ static int -builtin_macro (cpp_reader *pfile, cpp_hashnode *node, source_location loc) +builtin_macro (cpp_reader *pfile, cpp_hashnode *node, + source_location loc, source_location expand_loc) { const uchar *buf; size_t len; @@ -433,7 +439,7 @@ builtin_macro (cpp_reader *pfile, cpp_hashnode *node, source_location loc) return _cpp_do__Pragma (pfile, loc); } - buf = _cpp_builtin_macro_text (pfile, node); + buf = _cpp_builtin_macro_text (pfile, node, expand_loc); len = ustrlen (buf); nbuf = (char *) alloca (len + 1); memcpy (nbuf, buf, len); @@ -456,8 +462,7 @@ builtin_macro (cpp_reader *pfile, cpp_hashnode *node, source_location loc) source_location *virt_locs = NULL; _cpp_buff *token_buf = tokens_buff_new (pfile, 1, &virt_locs); const line_map_macro * map = - linemap_enter_macro (pfile->line_table, node, - token->src_loc, 1); + linemap_enter_macro (pfile->line_table, node, loc, 1); tokens_buff_add_token (token_buf, virt_locs, token, pfile->line_table->builtin_location, pfile->line_table->builtin_location, @@ -1231,22 +1236,29 @@ enter_macro_context (cpp_reader *pfile, cpp_hashnode *node, pfile->about_to_expand_macro_p = false; /* Handle built-in macros and the _Pragma operator. */ { - source_location loc; + source_location loc, expand_loc; + if (/* The top-level macro invocation that triggered the expansion we are looking at is with a standard macro ...*/ !(pfile->top_most_macro_node->flags & NODE_BUILTIN) /* ... and it's a function-like macro invocation. */ && pfile->top_most_macro_node->value.macro->fun_like) - /* Then the location of the end of the macro invocation is the - location of the closing parenthesis. */ - loc = pfile->cur_token[-1].src_loc; + { + /* Then the location of the end of the macro invocation is the + location of the closing parenthesis. */ + loc = pfile->cur_token[-1].src_loc; + expand_loc = loc; + } else - /* Otherwise, the location of the end of the macro invocation is - the location of the expansion point of that top-level macro - invocation. */ - loc = location; + { + /* Otherwise, the location of the end of the macro invocation is + the location of the expansion point of that top-level macro + invocation. */ + loc = location; + expand_loc = pfile->invocation_location; + } - return builtin_macro (pfile, node, loc); + return builtin_macro (pfile, node, loc, expand_loc); } } diff --git a/libcpp/po/ChangeLog b/libcpp/po/ChangeLog index d5996646b54..4343e49a6c4 100644 --- a/libcpp/po/ChangeLog +++ b/libcpp/po/ChangeLog @@ -1,3 +1,7 @@ +2016-04-08 Joseph Myers <joseph@codesourcery.com> + + * cpplib.pot: Regenerate. + 2016-03-30 Joseph Myers <joseph@codesourcery.com> * da.po: Update. diff --git a/libcpp/po/cpplib.pot b/libcpp/po/cpplib.pot index ebf8f5afe78..56b4b3bbf0a 100644 --- a/libcpp/po/cpplib.pot +++ b/libcpp/po/cpplib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n" -"POT-Creation-Date: 2016-01-31 15:50+0000\n" +"POT-Creation-Date: 2016-04-08 20:55+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -89,7 +89,7 @@ msgid "universal character %.*s is not valid at the start of an identifier" msgstr "" #: charset.c:1110 -#: charset.c:1684 +#: charset.c:1691 msgid "converting UCN to source character set" msgstr "" @@ -149,7 +149,7 @@ msgstr "" msgid "empty character constant" msgstr "" -#: charset.c:1731 +#: charset.c:1738 #, c-format msgid "failure to convert %s to %s" msgstr "" @@ -277,143 +277,148 @@ msgstr "" msgid "\"%s\" after # is not a positive integer" msgstr "" -#: directives.c:1103 -#: directives.c:1105 -#: directives.c:1107 -#: directives.c:1693 +#: directives.c:1058 +#, c-format +msgid "file \"%s\" linemarker ignored due to incorrect nesting" +msgstr "" + +#: directives.c:1116 +#: directives.c:1118 +#: directives.c:1120 +#: directives.c:1706 #, c-format msgid "%s" msgstr "" -#: directives.c:1131 +#: directives.c:1144 #, c-format msgid "invalid #%s directive" msgstr "" -#: directives.c:1194 +#: directives.c:1207 #, c-format msgid "registering pragmas in namespace \"%s\" with mismatched name expansion" msgstr "" -#: directives.c:1203 +#: directives.c:1216 #, c-format msgid "registering pragma \"%s\" with name expansion and no namespace" msgstr "" -#: directives.c:1221 +#: directives.c:1234 #, c-format msgid "registering \"%s\" as both a pragma and a pragma namespace" msgstr "" -#: directives.c:1224 +#: directives.c:1237 #, c-format msgid "#pragma %s %s is already registered" msgstr "" -#: directives.c:1227 +#: directives.c:1240 #, c-format msgid "#pragma %s is already registered" msgstr "" -#: directives.c:1257 +#: directives.c:1270 msgid "registering pragma with NULL handler" msgstr "" -#: directives.c:1474 +#: directives.c:1487 msgid "#pragma once in main file" msgstr "" -#: directives.c:1497 +#: directives.c:1510 msgid "invalid #pragma push_macro directive" msgstr "" -#: directives.c:1552 +#: directives.c:1565 msgid "invalid #pragma pop_macro directive" msgstr "" -#: directives.c:1607 +#: directives.c:1620 msgid "invalid #pragma GCC poison directive" msgstr "" -#: directives.c:1616 +#: directives.c:1629 #, c-format msgid "poisoning existing macro \"%s\"" msgstr "" -#: directives.c:1635 +#: directives.c:1648 msgid "#pragma system_header ignored outside include file" msgstr "" -#: directives.c:1660 +#: directives.c:1673 #, c-format msgid "cannot find source file %s" msgstr "" -#: directives.c:1664 +#: directives.c:1677 #, c-format msgid "current file is older than %s" msgstr "" -#: directives.c:1688 +#: directives.c:1701 #, c-format msgid "invalid \"#pragma GCC %s\" directive" msgstr "" -#: directives.c:1889 +#: directives.c:1902 msgid "_Pragma takes a parenthesized string literal" msgstr "" -#: directives.c:2010 +#: directives.c:2023 msgid "#else without #if" msgstr "" -#: directives.c:2015 +#: directives.c:2028 msgid "#else after #else" msgstr "" -#: directives.c:2017 -#: directives.c:2050 +#: directives.c:2030 +#: directives.c:2063 msgid "the conditional began here" msgstr "" -#: directives.c:2043 +#: directives.c:2056 msgid "#elif without #if" msgstr "" -#: directives.c:2048 +#: directives.c:2061 msgid "#elif after #else" msgstr "" -#: directives.c:2079 +#: directives.c:2092 msgid "#endif without #if" msgstr "" -#: directives.c:2159 +#: directives.c:2172 msgid "missing '(' after predicate" msgstr "" -#: directives.c:2174 +#: directives.c:2187 msgid "missing ')' to complete answer" msgstr "" -#: directives.c:2194 +#: directives.c:2207 msgid "predicate's answer is empty" msgstr "" -#: directives.c:2221 +#: directives.c:2234 msgid "assertion without predicate" msgstr "" -#: directives.c:2224 +#: directives.c:2237 msgid "predicate must be an identifier" msgstr "" -#: directives.c:2310 +#: directives.c:2323 #, c-format msgid "\"%s\" re-asserted" msgstr "" -#: directives.c:2602 +#: directives.c:2615 #, c-format msgid "unterminated #%s" msgstr "" @@ -424,13 +429,13 @@ msgstr "" msgid "unterminated comment" msgstr "" -#: errors.c:233 -#: errors.c:246 +#: errors.c:234 +#: errors.c:247 #, c-format msgid "%s: %s" msgstr "" -#: errors.c:244 +#: errors.c:245 msgid "stdout" msgstr "" @@ -444,7 +449,7 @@ msgid "invalid prefix \"0b\" for floating constant" msgstr "" #: expr.c:555 -msgid "use of C++11 hexadecimal floating constant" +msgid "use of C++1z hexadecimal floating constant" msgstr "" #: expr.c:558 @@ -805,163 +810,163 @@ msgstr "" msgid "unspellable token %s" msgstr "" -#: macro.c:202 +#: macro.c:203 #, c-format msgid "macro \"%s\" is not used" msgstr "" -#: macro.c:240 -#: macro.c:472 +#: macro.c:242 +#: macro.c:477 #, c-format msgid "invalid built-in macro \"%s\"" msgstr "" -#: macro.c:247 -#: macro.c:344 +#: macro.c:249 +#: macro.c:349 #, c-format msgid "macro \"%s\" might prevent reproducible builds" msgstr "" -#: macro.c:278 +#: macro.c:280 msgid "could not determine file timestamp" msgstr "" -#: macro.c:379 +#: macro.c:384 msgid "could not determine date and time" msgstr "" -#: macro.c:395 +#: macro.c:400 msgid "__COUNTER__ expanded inside directive with -fdirectives-only" msgstr "" -#: macro.c:583 +#: macro.c:588 msgid "invalid string literal, ignoring final '\\'" msgstr "" -#: macro.c:645 +#: macro.c:650 #, c-format msgid "pasting \"%s\" and \"%s\" does not give a valid preprocessing token" msgstr "" -#: macro.c:769 +#: macro.c:774 msgid "" "ISO C++11 requires at least one argument for the \"...\" in a variadic macro" msgstr "" -#: macro.c:773 +#: macro.c:778 msgid "" "ISO C99 requires at least one argument for the \"...\" in a variadic macro" msgstr "" -#: macro.c:780 +#: macro.c:785 #, c-format msgid "macro \"%s\" requires %u arguments, but only %u given" msgstr "" -#: macro.c:785 +#: macro.c:790 #, c-format msgid "macro \"%s\" passed %u arguments, but takes just %u" msgstr "" -#: macro.c:979 +#: macro.c:984 #: traditional.c:819 #, c-format msgid "unterminated argument list invoking macro \"%s\"" msgstr "" -#: macro.c:1130 +#: macro.c:1135 #, c-format msgid "function-like macro \"%s\" must be used with arguments in traditional C" msgstr "" -#: macro.c:1813 +#: macro.c:1825 #, c-format msgid "" "invoking macro %s argument %d: empty macro arguments are undefined in ISO C+" "+98" msgstr "" -#: macro.c:1821 -#: macro.c:1830 +#: macro.c:1833 +#: macro.c:1842 #, c-format msgid "" "invoking macro %s argument %d: empty macro arguments are undefined in ISO C90" msgstr "" -#: macro.c:2794 +#: macro.c:2806 #, c-format msgid "duplicate macro parameter \"%s\"" msgstr "" -#: macro.c:2843 +#: macro.c:2855 #, c-format msgid "\"%s\" may not appear in macro parameter list" msgstr "" -#: macro.c:2851 +#: macro.c:2863 msgid "macro parameters must be comma-separated" msgstr "" -#: macro.c:2869 +#: macro.c:2881 msgid "parameter name missing" msgstr "" -#: macro.c:2890 +#: macro.c:2902 msgid "anonymous variadic macros were introduced in C++11" msgstr "" -#: macro.c:2894 -#: macro.c:2899 +#: macro.c:2906 +#: macro.c:2911 msgid "anonymous variadic macros were introduced in C99" msgstr "" -#: macro.c:2906 +#: macro.c:2918 msgid "ISO C++ does not permit named variadic macros" msgstr "" -#: macro.c:2909 +#: macro.c:2921 msgid "ISO C does not permit named variadic macros" msgstr "" -#: macro.c:2919 +#: macro.c:2931 msgid "missing ')' in macro parameter list" msgstr "" -#: macro.c:2970 +#: macro.c:2982 msgid "'##' cannot appear at either end of a macro expansion" msgstr "" -#: macro.c:3007 +#: macro.c:3019 msgid "ISO C++11 requires whitespace after the macro name" msgstr "" -#: macro.c:3010 +#: macro.c:3022 msgid "ISO C99 requires whitespace after the macro name" msgstr "" -#: macro.c:3035 +#: macro.c:3047 msgid "missing whitespace after the macro name" msgstr "" -#: macro.c:3069 +#: macro.c:3081 msgid "'#' is not followed by a macro parameter" msgstr "" -#: macro.c:3230 +#: macro.c:3242 #, c-format msgid "\"%s\" redefined" msgstr "" -#: macro.c:3235 +#: macro.c:3247 msgid "this is the location of the previous definition" msgstr "" -#: macro.c:3296 +#: macro.c:3308 #, c-format msgid "macro argument \"%s\" would be stringified in traditional C" msgstr "" -#: macro.c:3323 +#: macro.c:3344 #, c-format msgid "invalid hash type %d in cpp_macro_definition" msgstr "" diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index 7c761b0351d..2a138628326 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,17 @@ +2016-04-11 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR target/70381 + * configure.ac (powerpc*-*-linux*): Rework tests to build + __float128 emulation routines to not depend on using #pragma GCC + target to enable -mfloat128. + * configure: Regnerate. + +2016-04-04 Eric Botcazou <ebotcazou@adacore.com> + + PR target/67172 + * libgcc2.c (L__main): Undefine __LIBGCC_EH_FRAME_SECTION_NAME__ if + __MINGW32__ is defined. + 2016-03-28 James Bowman <james.bowman@ftdichip.com> * libgcc/config/ft32/lib1funcs.S (*divsi3, *modsi3): New. diff --git a/libgcc/configure b/libgcc/configure index f3f360512c4..e7d6c75a6f7 100644 --- a/libgcc/configure +++ b/libgcc/configure @@ -4767,16 +4767,20 @@ esac esac case ${host} in +# At present, we cannot turn -mfloat128 on via #pragma GCC target, +# so just check if we have VSX (ISA 2.06) support to build the +# software libraries, and whether the assembler can handle xsaddqp +# for hardware support. powerpc*-*-linux*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the PowerPC compiler can do __float128" >&5 -$as_echo_n "checking whether the PowerPC compiler can do __float128... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PowerPC ISA 2.06 to build __float128 libraries" >&5 +$as_echo_n "checking for PowerPC ISA 2.06 to build __float128 libraries... " >&6; } if test "${libgcc_cv_powerpc_float128+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#pragma GCC target ("vsx,float128") - __float128 add (__float128 *a) { return *a + *(a+1); } +#pragma GCC target ("vsx") + vector double dadd (vector double a, vector double b) { return a + b; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : libgcc_cv_powerpc_float128=yes @@ -4788,21 +4792,21 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libgcc_cv_powerpc_float128" >&5 $as_echo "$libgcc_cv_powerpc_float128" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the PowerPC compiler can do hardware __float128" >&5 -$as_echo_n "checking whether the PowerPC compiler can do hardware __float128... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PowerPC ISA 3.0 to build hardware __float128 libraries" >&5 +$as_echo_n "checking for PowerPC ISA 3.0 to build hardware __float128 libraries... " >&6; } if test "${libgcc_cv_powerpc_float128_hw+set}" = set; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#pragma GCC target ("cpu=power9,float128,float128-hardware") +#pragma GCC target ("vsx,power9-vector") #include <sys/auxv.h> #ifndef AT_PLATFORM #error "AT_PLATFORM is not defined" #endif - __float128 add (__float128 a, __float128 b) + vector unsigned char (vector unsigned char a, vector unsigned char b) { - __float128 ret; + vector unsigned char ret; __asm__ ("xsaddqp %0,%1,%2" : "=v" (ret) : "v" (a), "v" (b)); return ret; } diff --git a/libgcc/configure.ac b/libgcc/configure.ac index 897259e62bc..269997f23e2 100644 --- a/libgcc/configure.ac +++ b/libgcc/configure.ac @@ -374,26 +374,30 @@ esac esac case ${host} in +# At present, we cannot turn -mfloat128 on via #pragma GCC target, +# so just check if we have VSX (ISA 2.06) support to build the +# software libraries, and whether the assembler can handle xsaddqp +# for hardware support. powerpc*-*-linux*) - AC_CACHE_CHECK([whether the PowerPC compiler can do __float128], + AC_CACHE_CHECK([for PowerPC ISA 2.06 to build __float128 libraries], [libgcc_cv_powerpc_float128], [AC_COMPILE_IFELSE( - [#pragma GCC target ("vsx,float128") - __float128 add (__float128 *a) { return *a + *(a+1); }], + [#pragma GCC target ("vsx") + vector double dadd (vector double a, vector double b) { return a + b; }], [libgcc_cv_powerpc_float128=yes], [libgcc_cv_powerpc_float128=no])]) - AC_CACHE_CHECK([whether the PowerPC compiler can do hardware __float128], + AC_CACHE_CHECK([for PowerPC ISA 3.0 to build hardware __float128 libraries], [libgcc_cv_powerpc_float128_hw], [AC_COMPILE_IFELSE( - [#pragma GCC target ("cpu=power9,float128,float128-hardware") + [#pragma GCC target ("vsx,power9-vector") #include <sys/auxv.h> #ifndef AT_PLATFORM #error "AT_PLATFORM is not defined" #endif - __float128 add (__float128 a, __float128 b) + vector unsigned char (vector unsigned char a, vector unsigned char b) { - __float128 ret; + vector unsigned char ret; __asm__ ("xsaddqp %0,%1,%2" : "=v" (ret) : "v" (a), "v" (b)); return ret; } diff --git a/libgcc/libgcc2.c b/libgcc/libgcc2.c index 340d1f725fd..6bc9a2f6c40 100644 --- a/libgcc/libgcc2.c +++ b/libgcc/libgcc2.c @@ -2209,7 +2209,12 @@ TRANSFER_FROM_TRAMPOLINE #if !defined (HAS_INIT_SECTION) || !defined (OBJECT_FORMAT_ELF) /* Some ELF crosses use crtstuff.c to provide __CTOR_LIST__, but use this - code to run constructors. In that case, we need to handle EH here, too. */ + code to run constructors. In that case, we need to handle EH here, too. + But MINGW32 is special because it handles CRTSTUFF and EH on its own. */ + +#ifdef __MINGW32__ +#undef __LIBGCC_EH_FRAME_SECTION_NAME__ +#endif #ifdef __LIBGCC_EH_FRAME_SECTION_NAME__ #include "unwind-dw2-fde.h" diff --git a/libgo/MERGE b/libgo/MERGE index 3cb26c37c07..a40967cea24 100644 --- a/libgo/MERGE +++ b/libgo/MERGE @@ -1,4 +1,4 @@ -7bc40ffb05d8813bf9b41a331b45d37216f9e747 +f5cf5673590a68c55b2330df9dfcdd6fac75b893 The first line of this file holds the git revision number of the last merge done from the master library sources. diff --git a/libgo/VERSION b/libgo/VERSION index 0be00434da5..e1bf218d1df 100644 --- a/libgo/VERSION +++ b/libgo/VERSION @@ -1 +1 @@ -go1.6
\ No newline at end of file +go1.6.1
\ No newline at end of file diff --git a/libgo/go/crypto/dsa/dsa.go b/libgo/go/crypto/dsa/dsa.go index 28e981b9dde..9f414a470c7 100644 --- a/libgo/go/crypto/dsa/dsa.go +++ b/libgo/go/crypto/dsa/dsa.go @@ -249,6 +249,10 @@ func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err err func Verify(pub *PublicKey, hash []byte, r, s *big.Int) bool { // FIPS 186-3, section 4.7 + if pub.P.Sign() == 0 { + return false + } + if r.Sign() < 1 || r.Cmp(pub.Q) >= 0 { return false } diff --git a/libgo/go/crypto/ecdsa/ecdsa.go b/libgo/go/crypto/ecdsa/ecdsa.go index 0731f2b6703..e54488c9cf6 100644 --- a/libgo/go/crypto/ecdsa/ecdsa.go +++ b/libgo/go/crypto/ecdsa/ecdsa.go @@ -23,6 +23,7 @@ import ( "crypto/elliptic" "crypto/sha512" "encoding/asn1" + "errors" "io" "math/big" ) @@ -140,6 +141,8 @@ func fermatInverse(k, N *big.Int) *big.Int { return new(big.Int).Exp(k, nMinus2, N) } +var errZeroParam = errors.New("zero parameter") + // Sign signs an arbitrary length hash (which should be the result of hashing a // larger message) using the private key, priv. It returns the signature as a // pair of integers. The security of the private key depends on the entropy of @@ -180,7 +183,9 @@ func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err err // See [NSA] 3.4.1 c := priv.PublicKey.Curve N := c.Params().N - + if N.Sign() == 0 { + return nil, nil, errZeroParam + } var k, kInv *big.Int for { for { @@ -193,7 +198,7 @@ func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err err if in, ok := priv.Curve.(invertible); ok { kInv = in.Inverse(k) } else { - kInv = fermatInverse(k, N) + kInv = fermatInverse(k, N) // N != 0 } r, _ = priv.Curve.ScalarBaseMult(k.Bytes()) @@ -207,7 +212,7 @@ func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err err s = new(big.Int).Mul(priv.D, r) s.Add(s, e) s.Mul(s, kInv) - s.Mod(s, N) + s.Mod(s, N) // N != 0 if s.Sign() != 0 { break } diff --git a/libgo/go/crypto/rsa/rsa.go b/libgo/go/crypto/rsa/rsa.go index ee022b803ae..0f487fe1524 100644 --- a/libgo/go/crypto/rsa/rsa.go +++ b/libgo/go/crypto/rsa/rsa.go @@ -465,6 +465,9 @@ func decrypt(random io.Reader, priv *PrivateKey, c *big.Int) (m *big.Int, err er err = ErrDecryption return } + if priv.N.Sign() == 0 { + return nil, ErrDecryption + } var ir *big.Int if random != nil { @@ -490,7 +493,7 @@ func decrypt(random io.Reader, priv *PrivateKey, c *big.Int) (m *big.Int, err er } } bigE := big.NewInt(int64(priv.E)) - rpowe := new(big.Int).Exp(r, bigE, priv.N) + rpowe := new(big.Int).Exp(r, bigE, priv.N) // N != 0 cCopy := new(big.Int).Set(c) cCopy.Mul(cCopy, rpowe) cCopy.Mod(cCopy, priv.N) diff --git a/libgo/go/go/build/deps_test.go b/libgo/go/go/build/deps_test.go index bd8b343adbe..c7cd8804da7 100644 --- a/libgo/go/go/build/deps_test.go +++ b/libgo/go/go/build/deps_test.go @@ -132,10 +132,10 @@ var pkgDeps = map[string][]string{ // End of linear dependency definitions. // Operating system access. - "syscall": {"L0", "internal/race", "unicode/utf16"}, + "syscall": {"L0", "internal/race", "internal/syscall/windows/sysdll", "unicode/utf16"}, "internal/syscall/unix": {"L0", "syscall"}, - "internal/syscall/windows": {"L0", "syscall"}, - "internal/syscall/windows/registry": {"L0", "syscall", "unicode/utf16"}, + "internal/syscall/windows": {"L0", "syscall", "internal/syscall/windows/sysdll"}, + "internal/syscall/windows/registry": {"L0", "syscall", "internal/syscall/windows/sysdll", "unicode/utf16"}, "time": {"L0", "syscall", "internal/syscall/windows/registry"}, "os": {"L1", "os", "syscall", "time", "internal/syscall/windows"}, "path/filepath": {"L2", "os", "syscall"}, diff --git a/libgo/go/internal/syscall/windows/registry/syscall.go b/libgo/go/internal/syscall/windows/registry/syscall.go index 5426cae9096..02d985cec90 100644 --- a/libgo/go/internal/syscall/windows/registry/syscall.go +++ b/libgo/go/internal/syscall/windows/registry/syscall.go @@ -8,7 +8,7 @@ package registry import "syscall" -//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go syscall.go +//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go -systemdll syscall.go const ( _REG_OPTION_NON_VOLATILE = 0 diff --git a/libgo/go/internal/syscall/windows/registry/zsyscall_windows.go b/libgo/go/internal/syscall/windows/registry/zsyscall_windows.go index 9c17675a249..7e473d4e1de 100644 --- a/libgo/go/internal/syscall/windows/registry/zsyscall_windows.go +++ b/libgo/go/internal/syscall/windows/registry/zsyscall_windows.go @@ -4,12 +4,13 @@ package registry import "unsafe" import "syscall" +import "internal/syscall/windows/sysdll" var _ unsafe.Pointer var ( - modadvapi32 = syscall.NewLazyDLL("advapi32.dll") - modkernel32 = syscall.NewLazyDLL("kernel32.dll") + modadvapi32 = syscall.NewLazyDLL(sysdll.Add("advapi32.dll")) + modkernel32 = syscall.NewLazyDLL(sysdll.Add("kernel32.dll")) procRegCreateKeyExW = modadvapi32.NewProc("RegCreateKeyExW") procRegDeleteKeyW = modadvapi32.NewProc("RegDeleteKeyW") diff --git a/libgo/go/internal/syscall/windows/syscall_windows.go b/libgo/go/internal/syscall/windows/syscall_windows.go index 165e8945ec3..e6a3f238d88 100644 --- a/libgo/go/internal/syscall/windows/syscall_windows.go +++ b/libgo/go/internal/syscall/windows/syscall_windows.go @@ -6,7 +6,7 @@ package windows import "syscall" -//go:generate go run ../../../syscall/mksyscall_windows.go -output zsyscall_windows.go syscall_windows.go +//go:generate go run ../../../syscall/mksyscall_windows.go -output zsyscall_windows.go -systemdll syscall_windows.go const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 diff --git a/libgo/go/internal/syscall/windows/sysdll/sysdll.go b/libgo/go/internal/syscall/windows/sysdll/sysdll.go new file mode 100644 index 00000000000..4e0018f3877 --- /dev/null +++ b/libgo/go/internal/syscall/windows/sysdll/sysdll.go @@ -0,0 +1,28 @@ +// Copyright 2016 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package sysdll is an internal leaf package that records and reports +// which Windows DLL names are used by Go itself. These DLLs are then +// only loaded from the System32 directory. See Issue 14959. +package sysdll + +// IsSystemDLL reports whether the named dll key (a base name, like +// "foo.dll") is a system DLL which should only be loaded from the +// Windows SYSTEM32 directory. +// +// Filenames are case sensitive, but that doesn't matter because +// the case registered with Add is also the same case used with +// LoadDLL later. +// +// It has no associated mutex and should only be mutated serially +// (currently: during init), and not concurrent with DLL loading. +var IsSystemDLL = map[string]bool{} + +// Add notes that dll is a system32 DLL which should only be loaded +// from the Windows SYSTEM32 directory. It returns its argument back, +// for ease of use in generated code. +func Add(dll string) string { + IsSystemDLL[dll] = true + return dll +} diff --git a/libgo/go/internal/syscall/windows/zsyscall_windows.go b/libgo/go/internal/syscall/windows/zsyscall_windows.go index de41786c76e..d599258976b 100644 --- a/libgo/go/internal/syscall/windows/zsyscall_windows.go +++ b/libgo/go/internal/syscall/windows/zsyscall_windows.go @@ -4,12 +4,13 @@ package windows import "unsafe" import "syscall" +import "internal/syscall/windows/sysdll" var _ unsafe.Pointer var ( - modiphlpapi = syscall.NewLazyDLL("iphlpapi.dll") - modkernel32 = syscall.NewLazyDLL("kernel32.dll") + modiphlpapi = syscall.NewLazyDLL(sysdll.Add("iphlpapi.dll")) + modkernel32 = syscall.NewLazyDLL(sysdll.Add("kernel32.dll")) procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") procGetComputerNameExW = modkernel32.NewProc("GetComputerNameExW") diff --git a/libgo/go/reflect/all_test.go b/libgo/go/reflect/all_test.go index 595d6908f7d..b8e7cd883cb 100644 --- a/libgo/go/reflect/all_test.go +++ b/libgo/go/reflect/all_test.go @@ -1478,6 +1478,12 @@ func TestFunc(t *testing.T) { if i != 10 || j != 20 || k != 30 || l != (two{40, 50}) || m != 60 || n != 70 || o != 80 { t.Errorf("Call returned %d, %d, %d, %v, %d, %g, %d; want 10, 20, 30, [40, 50], 60, 70, 80", i, j, k, l, m, n, o) } + + for i, v := range ret { + if v.CanAddr() { + t.Errorf("result %d is addressable", i) + } + } } type emptyStruct struct{} diff --git a/libgo/go/reflect/value.go b/libgo/go/reflect/value.go index 0f0eb846fc2..75944a6e532 100644 --- a/libgo/go/reflect/value.go +++ b/libgo/go/reflect/value.go @@ -433,9 +433,11 @@ func (v Value) call(op string, in []Value) []Value { ret := make([]Value, nout) results := make([]unsafe.Pointer, nout) for i := 0; i < nout; i++ { - v := New(t.Out(i)) - results[i] = unsafe.Pointer(v.Pointer()) - ret[i] = Indirect(v) + tv := t.Out(i) + v := New(tv) + results[i] = v.pointer() + fl := flagIndir | flag(tv.Kind()) + ret[i] = Value{tv.common(), v.pointer(), fl} } var pp *unsafe.Pointer diff --git a/libgo/go/runtime/export_windows_test.go b/libgo/go/runtime/export_windows_test.go index f712c6f6535..7b269ecccb4 100644 --- a/libgo/go/runtime/export_windows_test.go +++ b/libgo/go/runtime/export_windows_test.go @@ -15,3 +15,7 @@ func NumberOfProcessors() int32 { stdcall1(_GetSystemInfo, uintptr(unsafe.Pointer(&info))) return int32(info.dwnumberofprocessors) } + +func LoadLibraryExStatus() (useEx, haveEx, haveFlags bool) { + return useLoadLibraryEx, _LoadLibraryExW != nil, _AddDllDirectory != nil +} diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c index 9ba199b8cae..c6ac972bd41 100644 --- a/libgo/runtime/proc.c +++ b/libgo/runtime/proc.c @@ -2042,7 +2042,7 @@ doentersyscall() m->mcache = nil; m->p->m = nil; runtime_atomicstore(&m->p->status, Psyscall); - if(runtime_sched.gcwaiting) { + if(runtime_atomicload(&runtime_sched.gcwaiting)) { runtime_lock(&runtime_sched); if (runtime_sched.stopwait > 0 && runtime_cas(&m->p->status, Psyscall, Pgcstop)) { if(--runtime_sched.stopwait == 0) diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index a1763b68c9e..1c82e5de1ef 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,134 @@ +2016-04-14 Cesar Philippidis <cesar@codesourcery.com> + + * testsuite/libgomp.oacc-fortran/non-scalar-data.f90: Don't + pass parameter variables to subroutines. + +2016-04-14 Cesar Philippidis <cesar@codesourcery.com> + + PR middle-end/70643 + * testsuite/libgomp.oacc-fortran/pr70643.f90: New test. + +2016-04-13 Cesar Philippidis <cesar@codesourcery.com> + + PR testsuite/68242 + * testsuite/libgomp.oacc-c-c++-common/reduction-1.c: Adjust test. + * testsuite/libgomp.oacc-c-c++-common/reduction-2.c: Likewise. + +2016-04-12 Thomas Schwinge <thomas@codesourcery.com> + + * libgomp_g.h: Rename GOACC_parallel_keyd prototype to + GOACC_parallel_keyed, restore GOACC_parallel prototype, new + GOACC_declare prototype. + + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gang-np-1.c: + Merge this file, and... + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gv-np-1.c: + ... this file, and... + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gw-np-1.c: + ... this file, and... + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-1.c: + ... this file, and... + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-2.c: + ... this file, and... + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-3.c: + ... this file, and... + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-4.c: + ... this file, and... + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-vector-p-1.c: + ... this file, and... + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-vector-p-2.c: + ... this file, and... + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-worker-p-1.c: + ... this file, and... + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-wv-p-1.c: + ... this file, and... + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-wv-p-2.c: + ... this file, and... + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-wv-p-3.c: + ... this file into... + * testsuite/libgomp.oacc-c-c++-common/reduction-7.c: ... this + file. + + * testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c: + Make failure observable. + +2016-04-12 Jakub Jelinek <jakub@redhat.com> + + * libgomp.h (struct gomp_target_task): Remove firstprivate_copies + field. + * target.c (gomp_target_fallback_firstprivate, + gomp_target_unshare_firstprivate): Removed. + (GOMP_target_ext): Copy firstprivate vars into gomp_allocaed memory + before waiting for dependencies. + (gomp_target_task_fn): Don't copy firstprivate vars here. + * task.c (GOMP_PLUGIN_target_task_completion): Don't free + firstprivate_copies here. + (gomp_create_target_task): Don't initialize firstprivate_copies field. + * testsuite/libgomp.c/target-25.c (main): Use map (to:) instead of + explicit/implicit firstprivate. + +2016-04-08 Cesar Philippidis <cesar@codesourcery.com> + + PR lto/70289 + PR ipa/70348 + PR tree-optimization/70373 + PR middle-end/70533 + PR middle-end/70534 + PR middle-end/70535 + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gang-np-1.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gw-np-1.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-1.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-2.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-3.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-gwv-np-4.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-vector-p-1.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-vector-p-2.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-worker-p-1.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-wv-p-1.c: New test. + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-wv-p-2.c: New test. + * testsuite/libgomp.oacc-c-c++-common/loop-reduction-wv-p-3.c: New test. + * testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c: New + test. + * testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c: Add test + coverage. + * testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c: Likewise. + * testsuite/libgomp.oacc-c-c++-common/parallel-dims.c: Likewise. + * testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c: New test. + * testsuite/libgomp.oacc-c-c++-common/pr70289.c: New test. + * testsuite/libgomp.oacc-c-c++-common/pr70373.c: New test. + * testsuite/libgomp.oacc-c-c++-common/reduction-1.c: Add test + coverage. + * testsuite/libgomp.oacc-c-c++-common/reduction-2.c: Likewise. + * testsuite/libgomp.oacc-c-c++-common/reduction-3.c: Likewise. + * testsuite/libgomp.oacc-c-c++-common/reduction-4.c: Likewise. + * testsuite/libgomp.oacc-c-c++-common/reduction-5.c: Likewise. + * testsuite/libgomp.oacc-c-c++-common/reduction-6.c: New test. + * testsuite/libgomp.oacc-c-c++-common/reduction.h: New test. + * testsuite/libgomp.oacc-fortran/parallel-reduction.f90: New test. + * testsuite/libgomp.oacc-fortran/pr70289.f90: New test. + * testsuite/libgomp.oacc-fortran/reduction-1.f90: Add test coverage. + * testsuite/libgomp.oacc-fortran/reduction-2.f90: Likewise. + * testsuite/libgomp.oacc-fortran/reduction-3.f90: Likewise. + * testsuite/libgomp.oacc-fortran/reduction-4.f90: Likewise. + * testsuite/libgomp.oacc-fortran/reduction-5.f90: Likewise. + * testsuite/libgomp.oacc-fortran/reduction-6.f90: Likewise. + * testsuite/libgomp.oacc-fortran/reduction-7.f90: New test. + 2016-03-30 Thomas Schwinge <thomas@codesourcery.com> James Norris <jnorris@codesourcery.com> Nathan Sidwell <nathan@codesourcery.com> diff --git a/libgomp/libgomp.h b/libgomp/libgomp.h index 7108a6d0118..664e76b52d1 100644 --- a/libgomp/libgomp.h +++ b/libgomp/libgomp.h @@ -496,8 +496,6 @@ struct gomp_target_task struct target_mem_desc *tgt; struct gomp_task *task; struct gomp_team *team; - /* Copies of firstprivate mapped data for shared memory accelerators. */ - void *firstprivate_copies; /* Device-specific target arguments. */ void **args; void *hostaddrs[]; diff --git a/libgomp/libgomp_g.h b/libgomp/libgomp_g.h index 24eebb68e67..20454e63a17 100644 --- a/libgomp/libgomp_g.h +++ b/libgomp/libgomp_g.h @@ -295,17 +295,20 @@ extern void GOMP_teams (unsigned int, unsigned int); /* oacc-parallel.c */ +extern void GOACC_parallel_keyed (int, void (*) (void *), size_t, + void **, size_t *, unsigned short *, ...); +extern void GOACC_parallel (int, void (*) (void *), size_t, void **, size_t *, + unsigned short *, int, int, int, int, int, ...); extern void GOACC_data_start (int, size_t, void **, size_t *, unsigned short *); extern void GOACC_data_end (void); extern void GOACC_enter_exit_data (int, size_t, void **, size_t *, unsigned short *, int, int, ...); -extern void GOACC_parallel_keyd (int, void (*) (void *), size_t, - void **, size_t *, unsigned short *, ...); extern void GOACC_update (int, size_t, void **, size_t *, unsigned short *, int, int, ...); extern void GOACC_wait (int, int, ...); extern int GOACC_get_num_threads (void); extern int GOACC_get_thread_num (void); +extern void GOACC_declare (int, size_t, void **, size_t *, unsigned short *); #endif /* LIBGOMP_G_H */ diff --git a/libgomp/target.c b/libgomp/target.c index 96fe3d5eb0d..e2dd0e08997 100644 --- a/libgomp/target.c +++ b/libgomp/target.c @@ -1372,47 +1372,6 @@ copy_firstprivate_data (char *tgt, size_t mapnum, void **hostaddrs, } } -/* Host fallback with firstprivate map-type handling. */ - -static void -gomp_target_fallback_firstprivate (void (*fn) (void *), size_t mapnum, - void **hostaddrs, size_t *sizes, - unsigned short *kinds) -{ - size_t tgt_align = 0, tgt_size = 0; - calculate_firstprivate_requirements (mapnum, sizes, kinds, &tgt_align, - &tgt_size); - if (tgt_align) - { - char *tgt = gomp_alloca (tgt_size + tgt_align - 1); - copy_firstprivate_data (tgt, mapnum, hostaddrs, sizes, kinds, tgt_align, - tgt_size); - } - gomp_target_fallback (fn, hostaddrs); -} - -/* Handle firstprivate map-type for shared memory devices and the host - fallback. Return the pointer of firstprivate copies which has to be freed - after use. */ - -static void * -gomp_target_unshare_firstprivate (size_t mapnum, void **hostaddrs, - size_t *sizes, unsigned short *kinds) -{ - size_t tgt_align = 0, tgt_size = 0; - char *tgt = NULL; - - calculate_firstprivate_requirements (mapnum, sizes, kinds, &tgt_align, - &tgt_size); - if (tgt_align) - { - tgt = gomp_malloc (tgt_size + tgt_align - 1); - copy_firstprivate_data (tgt, mapnum, hostaddrs, sizes, kinds, tgt_align, - tgt_size); - } - return tgt; -} - /* Helper function of GOMP_target{,_ext} routines. */ static void * @@ -1504,6 +1463,8 @@ GOMP_target_ext (int device, void (*fn) (void *), size_t mapnum, unsigned int flags, void **depend, void **args) { struct gomp_device_descr *devicep = resolve_device (device); + size_t tgt_align = 0, tgt_size = 0; + bool fpc_done = false; if (flags & GOMP_TARGET_FLAG_NOWAIT) { @@ -1555,7 +1516,19 @@ GOMP_target_ext (int device, void (*fn) (void *), size_t mapnum, { struct gomp_thread *thr = gomp_thread (); if (thr->task && thr->task->depend_hash) - gomp_task_maybe_wait_for_dependencies (depend); + { + /* If we might need to wait, copy firstprivate now. */ + calculate_firstprivate_requirements (mapnum, sizes, kinds, + &tgt_align, &tgt_size); + if (tgt_align) + { + char *tgt = gomp_alloca (tgt_size + tgt_align - 1); + copy_firstprivate_data (tgt, mapnum, hostaddrs, sizes, kinds, + tgt_align, tgt_size); + } + fpc_done = true; + gomp_task_maybe_wait_for_dependencies (depend); + } } void *fn_addr; @@ -1564,15 +1537,35 @@ GOMP_target_ext (int device, void (*fn) (void *), size_t mapnum, || !(fn_addr = gomp_get_target_fn_addr (devicep, fn)) || (devicep->can_run_func && !devicep->can_run_func (fn_addr))) { - gomp_target_fallback_firstprivate (fn, mapnum, hostaddrs, sizes, kinds); + if (!fpc_done) + { + calculate_firstprivate_requirements (mapnum, sizes, kinds, + &tgt_align, &tgt_size); + if (tgt_align) + { + char *tgt = gomp_alloca (tgt_size + tgt_align - 1); + copy_firstprivate_data (tgt, mapnum, hostaddrs, sizes, kinds, + tgt_align, tgt_size); + } + } + gomp_target_fallback (fn, hostaddrs); return; } struct target_mem_desc *tgt_vars; - void *fpc = NULL; if (devicep->capabilities & GOMP_OFFLOAD_CAP_SHARED_MEM) { - fpc = gomp_target_unshare_firstprivate (mapnum, hostaddrs, sizes, kinds); + if (!fpc_done) + { + calculate_firstprivate_requirements (mapnum, sizes, kinds, + &tgt_align, &tgt_size); + if (tgt_align) + { + char *tgt = gomp_alloca (tgt_size + tgt_align - 1); + copy_firstprivate_data (tgt, mapnum, hostaddrs, sizes, kinds, + tgt_align, tgt_size); + } + } tgt_vars = NULL; } else @@ -1583,8 +1576,6 @@ GOMP_target_ext (int device, void (*fn) (void *), size_t mapnum, args); if (tgt_vars) gomp_unmap_vars (tgt_vars, true); - else - free (fpc); } /* Host fallback for GOMP_target_data{,_ext} routines. */ @@ -1891,9 +1882,7 @@ gomp_target_task_fn (void *data) || (devicep->can_run_func && !devicep->can_run_func (fn_addr))) { ttask->state = GOMP_TARGET_TASK_FALLBACK; - gomp_target_fallback_firstprivate (ttask->fn, ttask->mapnum, - ttask->hostaddrs, ttask->sizes, - ttask->kinds); + gomp_target_fallback (ttask->fn, ttask->hostaddrs); return false; } @@ -1908,9 +1897,6 @@ gomp_target_task_fn (void *data) if (devicep->capabilities & GOMP_OFFLOAD_CAP_SHARED_MEM) { ttask->tgt = NULL; - ttask->firstprivate_copies - = gomp_target_unshare_firstprivate (ttask->mapnum, ttask->hostaddrs, - ttask->sizes, ttask->kinds); actual_arguments = ttask->hostaddrs; } else diff --git a/libgomp/task.c b/libgomp/task.c index 38d4e9b413b..023663f43d5 100644 --- a/libgomp/task.c +++ b/libgomp/task.c @@ -582,7 +582,6 @@ GOMP_PLUGIN_target_task_completion (void *data) return; } ttask->state = GOMP_TARGET_TASK_FINISHED; - free (ttask->firstprivate_copies); gomp_target_task_completion (team, task); gomp_mutex_unlock (&team->task_lock); } @@ -683,7 +682,6 @@ gomp_create_target_task (struct gomp_device_descr *devicep, ttask->state = state; ttask->task = task; ttask->team = team; - ttask->firstprivate_copies = NULL; task->fn = NULL; task->fn_data = ttask; task->final_task = 0; diff --git a/libgomp/testsuite/libgomp.c/target-25.c b/libgomp/testsuite/libgomp.c/target-25.c index aeb19aee510..09b8d52184a 100644 --- a/libgomp/testsuite/libgomp.c/target-25.c +++ b/libgomp/testsuite/libgomp.c/target-25.c @@ -23,7 +23,7 @@ main () usleep (7000); z = 3; } - #pragma omp target map(tofrom: x) map(from: err) firstprivate (y) depend(inout: x, z) + #pragma omp target map(tofrom: x) map(from: err) map (to: y, z) depend(inout: x, z) err = (x != 1 || y != 2 || z != 3); if (err) abort (); diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c new file mode 100644 index 00000000000..5e82e1d350c --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c @@ -0,0 +1,38 @@ +#include <assert.h> + +/* Test of reduction on both parallel and loop directives (worker and + vector-partitioned loops individually in gang-partitioned mode, int + type). */ + +int +main (int argc, char *argv[]) +{ + int i, j, arr[32768], res = 0, hres = 0; + + for (i = 0; i < 32768; i++) + arr[i] = i; + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + reduction(+:res) copy(res) + { + #pragma acc loop gang + for (j = 0; j < 32; j++) + { + #pragma acc loop worker reduction(+:res) + for (i = 0; i < 1024; i++) + res += arr[j * 1024 + i]; + + #pragma acc loop vector reduction(+:res) + for (i = 1023; i >= 0; i--) + res += arr[j * 1024 + i]; + } + } + + for (j = 0; j < 32; j++) + for (i = 0; i < 1024; i++) + hres += arr[j * 1024 + i] * 2; + + assert (res == hres); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c new file mode 100644 index 00000000000..a339f327956 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c @@ -0,0 +1,40 @@ +#include <assert.h> + +/* Test of reduction on both parallel and loop directives (workers and vectors + in gang-partitioned mode, int type with XOR). */ + +int +main (int argc, char *argv[]) +{ + int i, j, arr[32768], res = 0, hres = 0; + + for (i = 0; i < 32768; i++) + arr[i] = i; + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + reduction(^:res) + { + #pragma acc loop gang + for (j = 0; j < 32; j++) + { + #pragma acc loop worker vector reduction(^:res) + for (i = 0; i < 1024; i++) + res ^= 3 * arr[j * 1024 + i]; + + #pragma acc loop worker vector reduction(^:res) + for (i = 0; i < 1024; i++) + res ^= arr[j * 1024 + (1023 - i)]; + } + } + + for (j = 0; j < 32; j++) + for (i = 0; i < 1024; i++) + { + hres ^= 3 * arr[j * 1024 + i]; + hres ^= arr[j * 1024 + (1023 - i)]; + } + + assert (res == hres); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c new file mode 100644 index 00000000000..8d85fedc867 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c @@ -0,0 +1,42 @@ +#include <assert.h> + +/* Test of reduction on both parallel and loop directives (workers and vectors + together in gang-partitioned mode, float type). */ + +int +main (int argc, char *argv[]) +{ + int i, j; + float arr[32768]; + float res = 0, hres = 0; + + for (i = 0; i < 32768; i++) + arr[i] = i; + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + reduction(+:res) copy(res) + { + #pragma acc loop gang + for (j = 0; j < 32; j++) + { + #pragma acc loop worker vector reduction(+:res) + for (i = 0; i < 1024; i++) + res += arr[j * 1024 + i]; + + #pragma acc loop worker vector reduction(+:res) + for (i = 0; i < 1024; i++) + res += arr[j * 1024 + (1023 - i)]; + } + } + + for (j = 0; j < 32; j++) + for (i = 0; i < 1024; i++) + { + hres += arr[j * 1024 + i]; + hres += arr[j * 1024 + (1023 - i)]; + } + + assert (res == hres); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c new file mode 100644 index 00000000000..1904b4aa1e4 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c @@ -0,0 +1,55 @@ +#include <assert.h> + +/* Test of reduction on both parallel and loop directives (workers and vectors + together in gang-partitioned mode, float type, multiple reductions). */ + +int +main (int argc, char *argv[]) +{ + int i, j; + float arr[32768]; + float res = 0, mres = 0, hres = 0, hmres = 0; + + for (i = 0; i < 32768; i++) + arr[i] = i; + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + reduction(+:res) reduction(max:mres) copy(res, mres) + { + #pragma acc loop gang + for (j = 0; j < 32; j++) + { + #pragma acc loop worker vector reduction(+:res) reduction(max:mres) + for (i = 0; i < 1024; i++) + { + res += arr[j * 1024 + i]; + if (arr[j * 1024 + i] > mres) + mres = arr[j * 1024 + i]; + } + + #pragma acc loop worker vector reduction(+:res) reduction(max:mres) + for (i = 0; i < 1024; i++) + { + res += arr[j * 1024 + (1023 - i)]; + if (arr[j * 1024 + (1023 - i)] > mres) + mres = arr[j * 1024 + (1023 - i)]; + } + } + } + + for (j = 0; j < 32; j++) + for (i = 0; i < 1024; i++) + { + hres += arr[j * 1024 + i]; + hres += arr[j * 1024 + (1023 - i)]; + if (arr[j * 1024 + i] > hmres) + hmres = arr[j * 1024 + i]; + if (arr[j * 1024 + (1023 - i)] > hmres) + hmres = arr[j * 1024 + (1023 - i)]; + } + + assert (res == hres); + assert (mres == hmres); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c index dceac39cf15..a88b60f39f0 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-1.c @@ -1,40 +1,54 @@ +/* { dg-additional-options "-w" } */ + #include <assert.h> +/* Test of reduction on parallel directive. */ + +#define ACTUAL_GANGS 256 + int main (int argc, char *argv[]) { - int res, res2 = 0; + int res, res1 = 0, res2 = 0; #if defined(ACC_DEVICE_TYPE_host) # define GANGS 1 #else # define GANGS 256 #endif - #pragma acc parallel num_gangs(GANGS) copy(res2) + #pragma acc parallel num_gangs(GANGS) num_workers(32) vector_length(32) \ + reduction(+:res1) copy(res2, res1) { + res1 += 5; + #pragma acc atomic res2 += 5; } res = GANGS * 5; + assert (res == res1); assert (res == res2); #undef GANGS - res = res2 = 1; + res = res1 = res2 = 1; #if defined(ACC_DEVICE_TYPE_host) # define GANGS 1 #else # define GANGS 8 #endif - #pragma acc parallel num_gangs(GANGS) copy(res2) + #pragma acc parallel num_gangs(GANGS) num_workers(32) vector_length(32) \ + reduction(*:res1) copy(res1, res2) { + res1 *= 5; + #pragma acc atomic res2 *= 5; } for (int i = 0; i < GANGS; ++i) res *= 5; + assert (res == res1); assert (res == res2); #undef GANGS diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c index bd5715c675c..911b76cc9be 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/par-reduction-2.c @@ -1,18 +1,25 @@ +/* { dg-additional-options "-w" } */ + #include <assert.h> #include <openacc.h> +/* Test of reduction on parallel directive (with async). */ + int main (int argc, char *argv[]) { - int res, res2 = 0; + int res, res1 = 0, res2 = 0; #if defined(ACC_DEVICE_TYPE_host) # define GANGS 1 #else # define GANGS 256 #endif - #pragma acc parallel num_gangs(GANGS) copy(res2) async(1) + #pragma acc parallel num_gangs(GANGS) num_workers(32) vector_length(32) \ + reduction(+:res1) copy(res1, res2) async(1) { + res1 += 5; + #pragma acc atomic res2 += 5; } @@ -20,18 +27,22 @@ main (int argc, char *argv[]) acc_wait (1); + assert (res == res1); assert (res == res2); #undef GANGS - res = res2 = 1; + res = res1 = res2 = 1; #if defined(ACC_DEVICE_TYPE_host) # define GANGS 1 #else # define GANGS 8 #endif - #pragma acc parallel num_gangs(GANGS) copy(res2) async(1) + #pragma acc parallel num_gangs(GANGS) num_workers(32) vector_length(32) \ + reduction(*:res1) copy(res1, res2) async(1) { + res1 *= 5; + #pragma acc atomic res2 *= 5; } @@ -40,6 +51,7 @@ main (int argc, char *argv[]) acc_wait (1); + assert (res == res1); assert (res == res2); return 0; diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c index 39357ce357b..f5766a404b4 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-dims.c @@ -5,12 +5,20 @@ int main () { + int dummy[10]; + #pragma acc parallel num_workers (2<<20) /* { dg-error "using num_workers" } */ { +#pragma acc loop worker + for (int i = 0; i < 10; i++) + dummy[i] = i; } #pragma acc parallel vector_length (2<<20) /* { dg-error "using vector_length" } */ { +#pragma acc loop vector + for (int i = 0; i < 10; i++) + dummy[i] = i; } return 0; diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c new file mode 100644 index 00000000000..b2c60e52697 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/parallel-reduction.c @@ -0,0 +1,72 @@ +/* { dg-do run } */ +/* { dg-additional-options "-w" } */ + +#include <stdlib.h> +#include <openacc.h> + +#define N 10 + +int +main () +{ + int s1 = 0, s2 = 0; + int i; + int dummy = 0; + +#pragma acc data copy (dummy) + { +#pragma acc parallel num_gangs (N) reduction (+:s1) copy(s1) + { + s1++; + } + } + + if (acc_get_device_type () != acc_device_nvidia) + { + if (s1 != 1) + abort (); + } + else + { + if (s1 != N) + abort (); + } + + s1 = 0; + s2 = 0; + +#pragma acc parallel num_gangs (10) reduction (+:s1, s2) copy(s1, s2) + { + s1++; + s2 += N; + } + + if (acc_get_device_type () != acc_device_nvidia) + { + if (s1 != 1) + abort (); + if (s2 != N) + abort (); + } + else + { + if (s1 != N) + abort (); + if (s2 != N*N) + abort (); + } + + s1 = 0; + +#pragma acc parallel num_gangs (10) reduction (+:s1) copy(s1) + { +#pragma acc loop gang reduction (+:s1) + for (i = 0; i < 10; i++) + s1++; + } + + if (s1 != N) + abort (); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/pr70289.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr70289.c new file mode 100644 index 00000000000..6d5222249b6 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr70289.c @@ -0,0 +1,13 @@ +int +main () +{ + int i; + static int temp; + +#pragma acc parallel reduction(+:temp) + { + temp++; + } + + return 0; +} diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/pr70373.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr70373.c new file mode 100644 index 00000000000..af629c83ef7 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/pr70373.c @@ -0,0 +1,20 @@ +#define N 32 + +int +foo (unsigned int sum) +{ +#pragma acc parallel reduction (+:sum) + { + sum; + } + + return sum; +} + +int +main (void) +{ + unsigned int sum = 0; + foo (sum); + return 0; +} diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-1.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-1.c index e55793136f3..e8a8911faeb 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-1.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-1.c @@ -1,46 +1,59 @@ /* { dg-do run } */ +/* Ignore vector_length warnings for offloaded (nvptx) targets. */ +/* { dg-additional-options "-foffload=-w" } */ + /* Integer reductions. */ #include <stdlib.h> -#include <stdbool.h> - -#define vl 32 - -#define DO_PRAGMA(x) _Pragma (#x) - -#define check_reduction_op(type, op, init, b) \ - { \ - type res, vres; \ - res = (init); \ - DO_PRAGMA (acc parallel vector_length (vl) copy(res)) \ -DO_PRAGMA (acc loop reduction (op:res))\ - for (i = 0; i < n; i++) \ - res = res op (b); \ - \ - vres = (init); \ - for (i = 0; i < n; i++) \ - vres = vres op (b); \ - \ - if (res != vres) \ - abort (); \ - } +#include "reduction.h" + +const int ng = 8; +const int nw = 4; +const int vl = 32; static void -test_reductions_int (void) +test_reductions (void) { - const int n = 1000; + const int n = 10; int i; int array[n]; for (i = 0; i < n; i++) - array[i] = i; - - check_reduction_op (int, +, 0, array[i]); - check_reduction_op (int, *, 1, array[i]); - check_reduction_op (int, &, -1, array[i]); - check_reduction_op (int, |, 0, array[i]); - check_reduction_op (int, ^, 0, array[i]); + array[i] = i+1; + + /* Gang reductions. */ + check_reduction_op (int, +, 0, array[i], num_gangs (ng), gang); + check_reduction_op (int, *, 1, array[i], num_gangs (ng), gang); + check_reduction_op (int, &, -1, array[i], num_gangs (ng), gang); + check_reduction_op (int, |, 0, array[i], num_gangs (ng), gang); + check_reduction_op (int, ^, 0, array[i], num_gangs (ng), gang); + + /* Worker reductions. */ + check_reduction_op (int, +, 0, array[i], num_workers (nw), worker); + check_reduction_op (int, *, 1, array[i], num_workers (nw), worker); + check_reduction_op (int, &, -1, array[i], num_workers (nw), worker); + check_reduction_op (int, |, 0, array[i], num_workers (nw), worker); + check_reduction_op (int, ^, 0, array[i], num_workers (nw), worker); + + /* Vector reductions. */ + check_reduction_op (int, +, 0, array[i], vector_length (vl), vector); + check_reduction_op (int, *, 1, array[i], vector_length (vl), vector); + check_reduction_op (int, &, -1, array[i], vector_length (vl), vector); + check_reduction_op (int, |, 0, array[i], vector_length (vl), vector); + check_reduction_op (int, ^, 0, array[i], vector_length (vl), vector); + + /* Combined reductions. */ + check_reduction_op (int, +, 0, array[i], num_gangs (ng) num_workers (nw) + vector_length (vl), gang worker vector); + check_reduction_op (int, *, 1, array[i], num_gangs (ng) num_workers (nw) + vector_length (vl), gang worker vector); + check_reduction_op (int, &, -1, array[i], num_gangs (ng) num_workers (nw) + vector_length (vl), gang worker vector); + check_reduction_op (int, |, 0, array[i], num_gangs (ng) num_workers (nw) + vector_length (vl), gang worker vector); + check_reduction_op (int, ^, 0, array[i], num_gangs (ng) num_workers (nw) + vector_length (vl), gang worker vector); } static void @@ -55,29 +68,31 @@ test_reductions_bool (void) array[i] = i; cmp_val = 5; - check_reduction_op (bool, &&, true, (cmp_val > array[i])); - check_reduction_op (bool, ||, false, (cmp_val > array[i])); -} -#define check_reduction_macro(type, op, init, b) \ - { \ - type res, vres; \ - res = (init); \ -DO_PRAGMA (acc parallel vector_length (vl) copy(res))\ -DO_PRAGMA (acc loop reduction (op:res))\ - for (i = 0; i < n; i++) \ - res = op (res, (b)); \ - \ - vres = (init); \ - for (i = 0; i < n; i++) \ - vres = op (vres, (b)); \ - \ - if (res != vres) \ - abort (); \ - } - -#define max(a, b) (((a) > (b)) ? (a) : (b)) -#define min(a, b) (((a) < (b)) ? (a) : (b)) + /* Gang reductions. */ + check_reduction_op (int, &&, 1, (cmp_val > array[i]), num_gangs (ng), + gang); + check_reduction_op (int, ||, 0, (cmp_val > array[i]), num_gangs (ng), + gang); + + /* Worker reductions. */ + check_reduction_op (int, &&, 1, (cmp_val > array[i]), num_workers (nw), + worker); + check_reduction_op (int, ||, 0, (cmp_val > array[i]), num_workers (nw), + worker); + + /* Vector reductions. */ + check_reduction_op (int, &&, 1, (cmp_val > array[i]), vector_length (vl), + vector); + check_reduction_op (int, ||, 0, (cmp_val > array[i]), vector_length (vl), + vector); + + /* Combined reductions. */ + check_reduction_op (int, &&, 1, (cmp_val > array[i]), num_gangs (ng) + num_workers (nw) vector_length (vl), gang worker vector); + check_reduction_op (int, ||, 0, (cmp_val > array[i]), num_gangs (ng) + num_workers (nw) vector_length (vl), gang worker vector); +} static void test_reductions_minmax (void) @@ -89,14 +104,32 @@ test_reductions_minmax (void) for (i = 0; i < n; i++) array[i] = i; - check_reduction_macro (int, min, n + 1, array[i]); - check_reduction_macro (int, max, -1, array[i]); + /* Gang reductions. */ + check_reduction_macro (int, min, n + 1, array[i], num_gangs (ng), gang); + check_reduction_macro (int, max, -1, array[i], num_gangs (ng), gang); + + /* Worker reductions. */ + check_reduction_macro (int, min, n + 1, array[i], num_workers (nw), worker); + check_reduction_macro (int, max, -1, array[i], num_workers (nw), worker); + + /* Vector reductions. */ + check_reduction_macro (int, min, n + 1, array[i], vector_length (vl), + vector); + check_reduction_macro (int, max, -1, array[i], vector_length (vl), vector); + + /* Combined reductions. */ + check_reduction_macro (int, min, n + 1, array[i], num_gangs (ng) + num_workers (nw) vector_length (vl), gang worker + vector); + check_reduction_macro (int, max, -1, array[i], num_gangs (ng) + num_workers (nw) vector_length (vl), gang worker + vector); } int main (void) { - test_reductions_int (); + test_reductions (); test_reductions_bool (); test_reductions_minmax (); return 0; diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-2.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-2.c index 8a0b0d6df60..d19b1c825ca 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-2.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-2.c @@ -1,124 +1,83 @@ /* { dg-do run } */ +/* Ignore vector_length warnings for offloaded (nvptx) targets. */ +/* { dg-additional-options "-foffload=-w" } */ + /* float reductions. */ #include <stdlib.h> -#include <stdbool.h> -#include <math.h> +#include "reduction.h" -#define vl 32 +const int ng = 8; +const int nw = 4; +const int vl = 32; -int -main(void) +static void +test_reductions (void) { - const int n = 1000; + const int n = 10; int i; - float vresult, result, array[n]; - bool lvresult, lresult; + float array[n]; for (i = 0; i < n; i++) - array[i] = i; - - result = 0; - vresult = 0; + array[i] = i+1; - /* '+' reductions. */ -#pragma acc parallel vector_length (vl) copy(result) -#pragma acc loop reduction (+:result) - for (i = 0; i < n; i++) - result += array[i]; + /* Gang reductions. */ + check_reduction_op (float, +, 0, array[i], num_gangs (ng), gang); + check_reduction_op (float, *, 1, array[i], num_gangs (ng), gang); - /* Verify the reduction. */ - for (i = 0; i < n; i++) - vresult += array[i]; - - if (result != vresult) - abort (); - - result = 0; - vresult = 0; - - /* '*' reductions. */ -#pragma acc parallel vector_length (vl) copy(result) -#pragma acc loop reduction (*:result) - for (i = 0; i < n; i++) - result *= array[i]; + /* Worker reductions. */ + check_reduction_op (float, +, 0, array[i], num_workers (nw), worker); + check_reduction_op (float, *, 1, array[i], num_workers (nw), worker); - /* Verify the reduction. */ - for (i = 0; i < n; i++) - vresult *= array[i]; - - if (fabs(result - vresult) > .0001) - abort (); - result = 0; - vresult = 0; - - /* 'max' reductions. */ -#pragma acc parallel vector_length (vl) copy(result) -#pragma acc loop reduction (max:result) - for (i = 0; i < n; i++) - result = result > array[i] ? result : array[i]; - - /* Verify the reduction. */ - for (i = 0; i < n; i++) - vresult = vresult > array[i] ? vresult : array[i]; - - if (result != vresult) - abort (); - - result = 0; - vresult = 0; - - /* 'min' reductions. */ -#pragma acc parallel vector_length (vl) copy(result) -#pragma acc loop reduction (min:result) - for (i = 0; i < n; i++) - result = result < array[i] ? result : array[i]; + /* Vector reductions. */ + check_reduction_op (float, +, 0, array[i], vector_length (vl), vector); + check_reduction_op (float, *, 1, array[i], vector_length (vl), vector); - /* Verify the reduction. */ - for (i = 0; i < n; i++) - vresult = vresult < array[i] ? vresult : array[i]; - - if (result != vresult) - abort (); - - result = 5; - vresult = 5; - - lresult = false; - lvresult = false; - - /* '&&' reductions. */ -#pragma acc parallel vector_length (vl) copy(lresult) -#pragma acc loop reduction (&&:lresult) - for (i = 0; i < n; i++) - lresult = lresult && (result > array[i]); - - /* Verify the reduction. */ - for (i = 0; i < n; i++) - lvresult = lresult && (result > array[i]); - - if (lresult != lvresult) - abort (); - - result = 5; - vresult = 5; - - lresult = false; - lvresult = false; + /* Combined reductions. */ + check_reduction_op (float, +, 0, array[i], num_gangs (ng) num_workers (nw) + vector_length (vl), gang worker vector); + check_reduction_op (float, *, 1, array[i], num_gangs (ng) num_workers (nw) + vector_length (vl), gang worker vector); +} - /* '||' reductions. */ -#pragma acc parallel vector_length (vl) copy(lresult) -#pragma acc loop reduction (||:lresult) - for (i = 0; i < n; i++) - lresult = lresult || (result > array[i]); +static void +test_reductions_minmax (void) +{ + const int n = 1000; + int i; + float array[n]; - /* Verify the reduction. */ for (i = 0; i < n; i++) - lvresult = lresult || (result > array[i]); + array[i] = i; - if (lresult != lvresult) - abort (); + /* Gang reductions. */ + check_reduction_macro (float, min, n + 1, array[i], num_gangs (ng), gang); + check_reduction_macro (float, max, -1, array[i], num_gangs (ng), gang); + + /* Worker reductions. */ + check_reduction_macro (float, min, n + 1, array[i], num_workers (nw), + worker); + check_reduction_macro (float, max, -1, array[i], num_workers (nw), worker); + + /* Vector reductions. */ + check_reduction_macro (float, min, n + 1, array[i], vector_length (vl), + vector); + check_reduction_macro (float, max, -1, array[i], vector_length (vl), vector); + + /* Combined reductions. */ + check_reduction_macro (float, min, n + 1, array[i], num_gangs (ng) + num_workers (nw) vector_length (vl), gang worker + vector); + check_reduction_macro (float, max, -1, array[i], num_gangs (ng) + num_workers (nw)vector_length (vl), gang worker + vector); +} +int +main (void) +{ + test_reductions (); + test_reductions_minmax (); return 0; } diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-3.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-3.c index a233e29229c..1b948bef5a0 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-3.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-3.c @@ -1,93 +1,84 @@ /* { dg-do run } */ +/* Ignore vector_length warnings for offloaded (nvptx) targets. */ +/* { dg-additional-options "-foffload=-w" } */ + /* double reductions. */ #include <stdlib.h> -#include <stdbool.h> -#include <math.h> +#include "reduction.h" -#define vl 32 +const int ng = 8; +const int nw = 4; +const int vl = 32; -int -main(void) +static void +test_reductions (void) { - const int n = 1000; + const int n = 10; int i; - double vresult, result, array[n]; - bool lvresult, lresult; - - for (i = 0; i < n; i++) - array[i] = i; - - result = 0; - vresult = 0; - - /* 'max' reductions. */ -#pragma acc parallel vector_length (vl) copy(result) -#pragma acc loop reduction (max:result) - for (i = 0; i < n; i++) - result = result > array[i] ? result : array[i]; - - /* Verify the reduction. */ - for (i = 0; i < n; i++) - vresult = vresult > array[i] ? vresult : array[i]; - - if (result != vresult) - abort (); - - result = 0; - vresult = 0; - - /* 'min' reductions. */ -#pragma acc parallel vector_length (vl) copy(result) -#pragma acc loop reduction (min:result) - for (i = 0; i < n; i++) - result = result < array[i] ? result : array[i]; + double array[n]; - /* Verify the reduction. */ for (i = 0; i < n; i++) - vresult = vresult < array[i] ? vresult : array[i]; + array[i] = i+1; - if (result != vresult) - abort (); + /* Gang reductions. */ + check_reduction_op (double, +, 0, array[i], num_gangs (ng), gang); + check_reduction_op (double, *, 1, array[i], num_gangs (ng), gang); - result = 5; - vresult = 5; + /* Worker reductions. */ + check_reduction_op (double, +, 0, array[i], num_workers (nw), worker); + check_reduction_op (double, *, 1, array[i], num_workers (nw), worker); - lresult = false; - lvresult = false; + /* Vector reductions. */ + check_reduction_op (double, +, 0, array[i], vector_length (vl), vector); + check_reduction_op (double, *, 1, array[i], vector_length (vl), vector); - /* '&&' reductions. */ -#pragma acc parallel vector_length (vl) copy(lresult) -#pragma acc loop reduction (&&:lresult) - for (i = 0; i < n; i++) - lresult = lresult && (result > array[i]); - - /* Verify the reduction. */ - for (i = 0; i < n; i++) - lvresult = lresult && (result > array[i]); - - if (lresult != lvresult) - abort (); - - result = 5; - vresult = 5; - - lresult = false; - lvresult = false; + /* Combined reductions. */ + check_reduction_op (double, +, 0, array[i], num_gangs (ng) num_workers (nw) + vector_length (vl), gang worker vector); + check_reduction_op (double, *, 1, array[i], num_gangs (ng) num_workers (nw) + vector_length (vl), gang worker vector); +} - /* '||' reductions. */ -#pragma acc parallel vector_length (vl) copy(lresult) -#pragma acc loop reduction (||:lresult) - for (i = 0; i < n; i++) - lresult = lresult || (result > array[i]); +static void +test_reductions_minmax (void) +{ + const int n = 1000; + int i; + double array[n]; - /* Verify the reduction. */ for (i = 0; i < n; i++) - lvresult = lresult || (result > array[i]); + array[i] = i; - if (lresult != lvresult) - abort (); + /* Gang reductions. */ + check_reduction_macro (double, min, n + 1, array[i], num_gangs (ng), gang); + check_reduction_macro (double, max, -1, array[i], num_gangs (ng), gang); + + /* Worker reductions. */ + check_reduction_macro (double, min, n + 1, array[i], num_workers (nw), + worker); + check_reduction_macro (double, max, -1, array[i], num_workers (nw), worker); + + /* Vector reductions. */ + check_reduction_macro (double, min, n + 1, array[i], vector_length (vl), + vector); + check_reduction_macro (double, max, -1, array[i], vector_length (vl), + vector); + + /* Combined reductions. */ + check_reduction_macro (double, min, n + 1, array[i], num_gangs (ng) + num_workers (nw) vector_length (vl), gang worker + vector); + check_reduction_macro (double, max, -1, array[i], num_gangs (ng) + num_workers (nw) vector_length (vl), gang worker + vector); +} +int +main (void) +{ + test_reductions (); + test_reductions_minmax (); return 0; } diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c index 59d49c1b7a1..79355eded80 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c @@ -1,59 +1,56 @@ /* { dg-do run { target { ! { hppa*-*-hpux* } } } } */ +/* Ignore vector_length warnings for offloaded (nvptx) targets. */ +/* { dg-additional-options "-foffload=-w" } */ + /* complex reductions. */ #include <stdlib.h> -#include <stdbool.h> -#include <math.h> #include <complex.h> +#include "reduction.h" -#define vl 32 +const int ng = 8; +const int nw = 4; +const int vl = 32; -int -main(void) +static void +test_reductions (void) { - const int n = 1000; + const int n = 10; int i; - double _Complex vresult, result, array[n]; - bool lvresult, lresult; - - for (i = 0; i < n; i++) - array[i] = i; - - result = 0; - vresult = 0; - - /* '&&' reductions. */ -#pragma acc parallel vector_length (vl) copy(lresult) -#pragma acc loop reduction (&&:lresult) - for (i = 0; i < n; i++) - lresult = lresult && (creal(result) > creal(array[i])); - - /* Verify the reduction. */ - for (i = 0; i < n; i++) - lvresult = lresult && (creal(result) > creal(array[i])); + double _Complex array[n]; - if (lresult != lvresult) - abort (); - - result = 5; - vresult = 5; - - lresult = false; - lvresult = false; - - /* '||' reductions. */ -#pragma acc parallel vector_length (vl) copy(lresult) -#pragma acc loop reduction (||:lresult) - for (i = 0; i < n; i++) - lresult = lresult || (creal(result) > creal(array[i])); - - /* Verify the reduction. */ for (i = 0; i < n; i++) - lvresult = lresult || (creal(result) > creal(array[i])); - - if (lresult != lvresult) - abort (); + array[i] = i+1; + + /* Gang reductions. */ + check_reduction_op (double, +, 0, creal (array[i]), num_gangs (ng), gang); + check_reduction_op (double, *, 1, creal (array[i]), num_gangs (ng), gang); + + /* Worker reductions. */ + check_reduction_op (double, +, 0, creal (array[i]), num_workers (nw), + worker); + check_reduction_op (double, *, 1, creal (array[i]), num_workers (nw), + worker); + + /* Vector reductions. */ + check_reduction_op (double, +, 0, creal (array[i]), vector_length (vl), + vector); + check_reduction_op (double, *, 1, creal (array[i]), vector_length (vl), + vector); + + /* Combined reductions. */ + check_reduction_op (double, +, 0, creal (array[i]), num_gangs (ng) + num_workers (nw) vector_length (vl), gang worker + vector); + check_reduction_op (double, *, 1, creal (array[i]), num_gangs (ng) + num_workers (nw) vector_length (vl), gang worker + vector); +} +int +main (void) +{ + test_reductions (); return 0; } diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c index efe87027bbf..46b553a61ff 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c @@ -1,32 +1,57 @@ +/* { dg-do run } */ +/* { dg-additional-options "-w" } */ + +/* Ignore vector_length warnings for offloaded (nvptx) targets. */ +/* { dg-additional-options "-foffload=-w" } */ + +/* Multiple reductions. */ + #include <stdio.h> #include <stdlib.h> +const int ng = 8; +const int nw = 4; +const int vl = 32; + +const int n = 100; + +#define DO_PRAGMA(x) _Pragma (#x) + +#define check_reduction(gwv_par, gwv_loop) \ + { \ + s1 = 2; s2 = 5; \ +DO_PRAGMA (acc parallel gwv_par copy (s1, s2)) \ +DO_PRAGMA (acc loop gwv_loop reduction (+:s1, s2)) \ + for (i = 0; i < n; i++) \ + { \ + s1 = s1 + 3; \ + s2 = s2 + 5; \ + } \ + \ + if (s1 != v1 && s2 != v2) \ + abort (); \ + } + int main (void) { int s1 = 2, s2 = 5, v1 = 2, v2 = 5; - int n = 100; int i; -#pragma acc parallel vector_length (32) copy(s1,s2) -#pragma acc loop reduction (+:s1, s2) - for (i = 0; i < n; i++) - { - s1 = s1 + 3; - s2 = s2 + 2; - } - for (i = 0; i < n; i++) { v1 = v1 + 3; v2 = v2 + 2; } - - if (s1 != v1) - abort (); - - if (s2 != v2) - abort (); - + + check_reduction (num_gangs (ng), gang); + + /* Nvptx targets require a vector_length or 32 in to allow spinlocks with + gangs. */ + check_reduction (num_workers (nw) vector_length (vl), worker); + check_reduction (vector_length (vl), vector); + check_reduction (num_gangs (ng) num_workers (nw) vector_length (vl), gang + worker vector); + return 0; } diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-6.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-6.c new file mode 100644 index 00000000000..af30b31bd34 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-6.c @@ -0,0 +1,36 @@ +/* { dg-do run } */ +/* { dg-additional-options "-w" } */ + +/* Test reductions on explicitly private variables. */ + +#include <assert.h> + +int +main () +{ + int i, j, red[10]; + int v; + + for (i = 0; i < 10; i++) + red[i] = -1; + +#pragma acc parallel copyout(red) + { +#pragma acc loop gang private(v) + for (j = 0; j < 10; j++) + { + v = j; + +#pragma acc loop vector reduction (+:v) + for (i = 0; i < 100; i++) + v++; + + red[j] = v; + } + } + + for (i = 0; i < 10; i++) + assert (red[i] == i + 100); + + return 0; +} diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c index b23c75877f8..76c33e4470d 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c @@ -118,12 +118,363 @@ void gwv_np_1() } +/* Test of reduction on loop directive (gangs, workers and vectors, non-private + reduction variable: separate gang and worker/vector loops). */ + +void gwv_np_2() +{ + int i, j, arr[32768], res = 0, hres = 0; + + for (i = 0; i < 32768; i++) + arr[i] = i; + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + copy(res) + { + #pragma acc loop gang reduction(+:res) + for (j = 0; j < 32; j++) + { + #pragma acc loop worker vector reduction(+:res) + for (i = 0; i < 1024; i++) + res += arr[j * 1024 + i]; + } + /* "res" is non-private, and is not available until after the parallel + region. */ + } + + for (i = 0; i < 32768; i++) + hres += arr[i]; + + assert (res == hres); +} + + +/* Test of reduction on loop directive (gangs, workers and vectors, non-private + reduction variable: separate gang and worker/vector loops). */ + +void gwv_np_3() +{ + int i, j; + double arr[32768], res = 0, hres = 0; + + for (i = 0; i < 32768; i++) + arr[i] = i; + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + copyin(arr) copy(res) + { + #pragma acc loop gang reduction(+:res) + for (j = 0; j < 32; j++) + { + #pragma acc loop worker vector reduction(+:res) + for (i = 0; i < 1024; i++) + res += arr[j * 1024 + i]; + } + } + + for (i = 0; i < 32768; i++) + hres += arr[i]; + + assert (res == hres); +} + + +/* Test of reduction on loop directive (gangs, workers and vectors, multiple + non-private reduction variables, float type). */ + +void gwv_np_4() +{ + int i, j; + float arr[32768]; + float res = 0, mres = 0, hres = 0, hmres = 0; + + for (i = 0; i < 32768; i++) + arr[i] = i; + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + copy(res, mres) + { + #pragma acc loop gang reduction(+:res) reduction(max:mres) + for (j = 0; j < 32; j++) + { + #pragma acc loop worker vector reduction(+:res) reduction(max:mres) + for (i = 0; i < 1024; i++) + { + res += arr[j * 1024 + i]; + if (arr[j * 1024 + i] > mres) + mres = arr[j * 1024 + i]; + } + + #pragma acc loop worker vector reduction(+:res) reduction(max:mres) + for (i = 0; i < 1024; i++) + { + res += arr[j * 1024 + (1023 - i)]; + if (arr[j * 1024 + (1023 - i)] > mres) + mres = arr[j * 1024 + (1023 - i)]; + } + } + } + + for (j = 0; j < 32; j++) + for (i = 0; i < 1024; i++) + { + hres += arr[j * 1024 + i]; + hres += arr[j * 1024 + (1023 - i)]; + if (arr[j * 1024 + i] > hmres) + hmres = arr[j * 1024 + i]; + if (arr[j * 1024 + (1023 - i)] > hmres) + hmres = arr[j * 1024 + (1023 - i)]; + } + + assert (res == hres); + assert (mres == hmres); +} + + +/* Test of reduction on loop directive (vectors, private reduction + variable). */ + +void v_p_1() +{ + int i, j, arr[1024], out[32], res = 0, hres = 0; + + for (i = 0; i < 1024; i++) + arr[i] = i; + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + private(res) copyout(out) + { + #pragma acc loop gang + for (j = 0; j < 32; j++) + { + res = 0; + + #pragma acc loop vector reduction(+:res) + for (i = 0; i < 32; i++) + res += arr[j * 32 + i]; + + out[j] = res; + } + } + + for (j = 0; j < 32; j++) + { + hres = 0; + + for (i = 0; i < 32; i++) + hres += arr[j * 32 + i]; + + assert (out[j] == hres); + } +} + + +/* Test of reduction on loop directive (vector reduction in + gang-partitioned/worker-partitioned mode, private reduction variable). */ + +void v_p_2() +{ + int i, j, k; + double ina[1024], inb[1024], out[1024], acc; + + for (j = 0; j < 32; j++) + for (i = 0; i < 32; i++) + { + ina[j * 32 + i] = (i == j) ? 2.0 : 0.0; + inb[j * 32 + i] = (double) (i + j); + } + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + private(acc) copyin(ina, inb) copyout(out) + { + #pragma acc loop gang worker + for (k = 0; k < 32; k++) + for (j = 0; j < 32; j++) + { + acc = 0; + + #pragma acc loop vector reduction(+:acc) + for (i = 0; i < 32; i++) + acc += ina[k * 32 + i] * inb[i * 32 + j]; + + out[k * 32 + j] = acc; + } + } + + for (j = 0; j < 32; j++) + for (i = 0; i < 32; i++) + assert (out[j * 32 + i] == (i + j) * 2); +} + + +/* Test of reduction on loop directive (workers, private reduction + variable). */ + +void w_p_1() +{ + int i, j, arr[1024], out[32], res = 0, hres = 0; + + for (i = 0; i < 1024; i++) + arr[i] = i; + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + private(res) copyout(out) + { + #pragma acc loop gang + for (j = 0; j < 32; j++) + { + res = 0; + + #pragma acc loop worker reduction(+:res) + for (i = 0; i < 32; i++) + res += arr[j * 32 + i]; + + out[j] = res; + } + } + + for (j = 0; j < 32; j++) + { + hres = 0; + + for (i = 0; i < 32; i++) + hres += arr[j * 32 + i]; + + assert (out[j] == hres); + } +} + + +/* Test of reduction on loop directive (workers and vectors, private reduction + variable). */ + +void wv_p_1() +{ + int i, j, arr[1024], out[32], res = 0, hres = 0; + + for (i = 0; i < 1024; i++) + arr[i] = i; + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + private(res) copyout(out) + { + #pragma acc loop gang + for (j = 0; j < 32; j++) + { + res = 0; + + #pragma acc loop worker vector reduction(+:res) + for (i = 0; i < 32; i++) + res += arr[j * 32 + i]; + + out[j] = res; + } + } + + for (j = 0; j < 32; j++) + { + hres = 0; + + for (i = 0; i < 32; i++) + hres += arr[j * 32 + i]; + + assert (out[j] == hres); + } +} + + +/* Test of reduction on loop directive (workers and vectors, private reduction + variable). */ + +void wv_p_2() +{ + int i, j, arr[32768], out[32], res = 0, hres = 0; + + for (i = 0; i < 32768; i++) + arr[i] = i; + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + private(res) copyout(out) + { + #pragma acc loop gang + for (j = 0; j < 32; j++) + { + res = j; + + #pragma acc loop worker reduction(+:res) + for (i = 0; i < 1024; i++) + res += arr[j * 1024 + i]; + + #pragma acc loop vector reduction(+:res) + for (i = 1023; i >= 0; i--) + res += arr[j * 1024 + i]; + + out[j] = res; + } + } + + for (j = 0; j < 32; j++) + { + hres = j; + + for (i = 0; i < 1024; i++) + hres += arr[j * 1024 + i] * 2; + + assert (out[j] == hres); + } +} + + +/* Test of reduction on loop directive (workers and vectors, private reduction + variable: gang-redundant mode). */ + +void wv_p_3() +{ + int i, arr[1024], out[32], res = 0, hres = 0; + + for (i = 0; i < 1024; i++) + arr[i] = i ^ 33; + + #pragma acc parallel num_gangs(32) num_workers(32) vector_length(32) \ + private(res) copyin(arr) copyout(out) + { + /* Private variables aren't initialized by default in openacc. */ + res = 0; + + /* "res" should be available at the end of the following loop (and should + have the same value redundantly in each gang). */ + #pragma acc loop worker vector reduction(+:res) + for (i = 0; i < 1024; i++) + res += arr[i]; + + #pragma acc loop gang (static: 1) + for (i = 0; i < 32; i++) + out[i] = res; + } + + for (i = 0; i < 1024; i++) + hres += arr[i]; + + for (i = 0; i < 32; i++) + assert (out[i] == hres); +} + + int main() { g_np_1(); gv_np_1(); gw_np_1(); gwv_np_1(); + gwv_np_2(); + gwv_np_3(); + gwv_np_4(); + v_p_1(); + v_p_2(); + w_p_1(); + wv_p_1(); + wv_p_2(); + wv_p_3(); return 0; } diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction.h b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction.h new file mode 100644 index 00000000000..1b3f8d45ace --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/reduction.h @@ -0,0 +1,43 @@ +#ifndef REDUCTION_H +#define REDUCTION_H + +#define DO_PRAGMA(x) _Pragma (#x) + +#define check_reduction_op(type, op, init, b, gwv_par, gwv_loop) \ + { \ + type res, vres; \ + res = (init); \ +DO_PRAGMA (acc parallel gwv_par copy (res)) \ +DO_PRAGMA (acc loop gwv_loop reduction (op:res)) \ + for (i = 0; i < n; i++) \ + res = res op (b); \ + \ + vres = (init); \ + for (i = 0; i < n; i++) \ + vres = vres op (b); \ + \ + if (res != vres) \ + abort (); \ + } + +#define check_reduction_macro(type, op, init, b, gwv_par, gwv_loop) \ + { \ + type res, vres; \ + res = (init); \ + DO_PRAGMA (acc parallel gwv_par copy(res)) \ +DO_PRAGMA (acc loop gwv_loop reduction (op:res)) \ + for (i = 0; i < n; i++) \ + res = op (res, (b)); \ + \ + vres = (init); \ + for (i = 0; i < n; i++) \ + vres = op (vres, (b)); \ + \ + if (res != vres) \ + abort (); \ + } + +#define max(a, b) (((a) > (b)) ? (a) : (b)) +#define min(a, b) (((a) < (b)) ? (a) : (b)) + +#endif diff --git a/libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f90 b/libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f90 index 4afb562e00c..94e4228e7a9 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/non-scalar-data.f90 @@ -6,9 +6,11 @@ program main implicit none - integer, parameter :: n = 100 - integer :: array(n), i - + integer,parameter :: size = 100 + integer :: array(size), i, n + + n = size + !$acc data copy(array) call kernels(array, n) diff --git a/libgomp/testsuite/libgomp.oacc-fortran/parallel-reduction.f90 b/libgomp/testsuite/libgomp.oacc-fortran/parallel-reduction.f90 new file mode 100644 index 00000000000..31db7e12454 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-fortran/parallel-reduction.f90 @@ -0,0 +1,47 @@ +! { dg-do run } +! { dg-additional-options "-w" } + +program reduction + implicit none + integer, parameter :: n = 10 + integer s1, s2 + include "openacc_lib.h" + + s1 = 0 + s2 = 0 + + !$acc parallel reduction(+:s1,s2) num_gangs (n) copy(s1) + s1 = s1 + 1 + s2 = s2 + 1 + !$acc end parallel + + if (acc_get_device_type () .eq. acc_device_nvidia) then + if (s1 .ne. n) call abort + if (s2 .ne. n) call abort + else + if (s1 .ne. 1) call abort + if (s2 .ne. 1) call abort + end if + + ! Test reductions inside subroutines + + s1 = 0 + s2 = 0 + call redsub (s1, s2, n) + + if (acc_get_device_type () .eq. acc_device_nvidia) then + if (s1 .ne. n) call abort + else + if (s2 .ne. 1) call abort + end if +end program reduction + +subroutine redsub(s1, s2, n) + implicit none + integer :: s1, s2, n + + !$acc parallel reduction(+:s1,s2) num_gangs (10) copy(s1) + s1 = s1 + 1 + s2 = s2 + 1 + !$acc end parallel +end subroutine redsub diff --git a/libgomp/testsuite/libgomp.oacc-fortran/pr70289.f90 b/libgomp/testsuite/libgomp.oacc-fortran/pr70289.f90 new file mode 100644 index 00000000000..63bde44100d --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-fortran/pr70289.f90 @@ -0,0 +1,20 @@ +program foo + implicit none + integer :: i + integer :: temp = 0 + integer :: temp2 = 0 + + !$acc parallel + !$acc loop gang private(temp) + do i=1, 10000 + temp = 0 + enddo + !$acc end parallel + + !$acc parallel reduction(+:temp2) + !$acc loop gang reduction(+:temp2) + do i=1, 10000 + temp2 = 0 + enddo + !$acc end parallel +end program foo diff --git a/libgomp/testsuite/libgomp.oacc-fortran/pr70643.f90 b/libgomp/testsuite/libgomp.oacc-fortran/pr70643.f90 new file mode 100644 index 00000000000..7c2e5eef904 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-fortran/pr70643.f90 @@ -0,0 +1,51 @@ +MODULE reduction_test + +CONTAINS + +SUBROUTINE reduction_kernel(x_min,x_max,y_min,y_max,arr,sum) + + IMPLICIT NONE + + INTEGER :: x_min,x_max,y_min,y_max + REAL(KIND=8), DIMENSION(x_min-2:x_max+2,y_min-2:y_max+2) :: arr + REAL(KIND=8) :: sum + + INTEGER :: j,k + +!$ACC DATA PRESENT(arr) COPY(sum) +!$ACC PARALLEL LOOP REDUCTION(+ : sum) + DO k=y_min,y_max + DO j=x_min,x_max + sum=sum+arr(j,k) + ENDDO + ENDDO +!$ACC END PARALLEL LOOP +!$ACC END DATA +END SUBROUTINE reduction_kernel + +END MODULE reduction_test + +program main + use reduction_test + + integer :: x_min,x_max,y_min,y_max + real(kind=8), dimension(1:10,1:10) :: arr + real(kind=8) :: sum + + x_min = 1 + x_max = 2 + y_min = 1 + y_max = 2 + + arr(:,:) = 1.0 + + sum = 0.0 + + !$acc data copy(arr) + + call reduction_kernel(x_min,x_max,y_min,y_max,arr,sum) + + !$acc end data + + if (sum .ne. 4.0) call abort +end program diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90 index db0a52d6a49..e51509f3397 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90 @@ -1,28 +1,55 @@ ! { dg-do run } +! { dg-additional-options "-w" } ! Integer reductions program reduction_1 implicit none - integer, parameter :: n = 10, vl = 32 - integer :: i, vresult, result - logical :: lresult, lvresult + integer, parameter :: n = 10, ng = 8, nw = 4, vl = 32 + integer :: i, vresult, rg, rw, rv, rc + logical :: lrg, lrw, lrv, lrc, lvresult integer, dimension (n) :: array do i = 1, n array(i) = i end do - result = 0 + ! + ! '+' reductions + ! + + rg = 0 + rw = 0 + rv = 0 + rc = 0 vresult = 0 - ! '+' reductions + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(+:rg) gang + do i = 1, n + rg = rg + array(i) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(+:result) + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(+:rw) worker do i = 1, n - result = result + array(i) + rw = rw + array(i) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(+:rv) vector + do i = 1, n + rv = rv + array(i) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(+:rc) gang worker vector + do i = 1, n + rc = rc + array(i) end do !$acc end parallel @@ -31,17 +58,46 @@ program reduction_1 vresult = vresult + array(i) end do - if (result.ne.vresult) call abort - - result = 0 - vresult = 0 + if (rg .ne. vresult) call abort + if (rw .ne. vresult) call abort + if (rv .ne. vresult) call abort + if (rc .ne. vresult) call abort + ! ! '*' reductions + ! - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(*:result) + rg = 1 + rw = 1 + rv = 1 + rc = 1 + vresult = 1 + + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(*:rg) gang do i = 1, n - result = result * array(i) + rg = rg * array(i) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(*:rw) worker + do i = 1, n + rw = rw * array(i) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(*:rv) vector + do i = 1, n + rv = rv * array(i) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(*:rc) gang worker vector + do i = 1, n + rc = rc * array(i) end do !$acc end parallel @@ -50,17 +106,46 @@ program reduction_1 vresult = vresult * array(i) end do - if (result.ne.vresult) call abort + if (rg .ne. vresult) call abort + if (rw .ne. vresult) call abort + if (rv .ne. vresult) call abort + if (rc .ne. vresult) call abort + + ! + ! 'max' reductions + ! - result = 0 + rg = 0 + rw = 0 + rv = 0 + rc = 0 vresult = 0 - ! 'max' reductions + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(max:rg) gang + do i = 1, n + rg = max (rg, array(i)) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(max:rw) worker + do i = 1, n + rw = max (rw, array(i)) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(max:rv) vector + do i = 1, n + rv = max (rv, array(i)) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(max:result) + !$acc parallel num_gangs(ng) Num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(max:rc) gang worker vector do i = 1, n - result = max (result, array(i)) + rc = max (rc, array(i)) end do !$acc end parallel @@ -69,17 +154,46 @@ program reduction_1 vresult = max (vresult, array(i)) end do - if (result.ne.vresult) call abort - - result = 1 - vresult = 1 + if (rg .ne. vresult) call abort + if (rw .ne. vresult) call abort + if (rv .ne. vresult) call abort + if (rc .ne. vresult) call abort + ! ! 'min' reductions + ! + + rg = 0 + rw = 0 + rv = 0 + rc = 0 + vresult = 0 + + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(min:rg) gang + do i = 1, n + rg = min (rg, array(i)) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(min:result) + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(min:rw) worker do i = 1, n - result = min (result, array(i)) + rw = min (rw, array(i)) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(min:rv) vector + do i = 1, n + rv = min (rv, array(i)) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(min:rc) gang worker vector + do i = 1, n + rc = min (rc, array(i)) end do !$acc end parallel @@ -88,17 +202,46 @@ program reduction_1 vresult = min (vresult, array(i)) end do - if (result.ne.vresult) call abort + if (rg .ne. vresult) call abort + if (rw .ne. vresult) call abort + if (rv .ne. vresult) call abort + if (rc .ne. vresult) call abort + + ! + ! 'iand' reductions + ! - result = 1 + rg = 1 + rw = 1 + rv = 1 + rc = 1 vresult = 1 - ! 'iand' reductions + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(iand:rg) gang + do i = 1, n + rg = iand (rg, array(i)) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(iand:rw) worker + do i = 1, n + rw = iand (rw, array(i)) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(iand:rv) vector + do i = 1, n + rv = iand (rv, array(i)) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(iand:result) + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(iand:rc) gang worker vector do i = 1, n - result = iand (result, array(i)) + rc = iand (rc, array(i)) end do !$acc end parallel @@ -107,17 +250,46 @@ program reduction_1 vresult = iand (vresult, array(i)) end do - if (result.ne.vresult) call abort - - result = 1 - vresult = 1 + if (rg .ne. vresult) call abort + if (rw .ne. vresult) call abort + if (rv .ne. vresult) call abort + if (rc .ne. vresult) call abort + ! ! 'ior' reductions + ! + + rg = 0 + rw = 0 + rv = 0 + rc = 0 + vresult = 0 + + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(ior:rg) gang + do i = 1, n + rg = ior (rg, array(i)) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(ior:result) + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(ior:rw) worker do i = 1, n - result = ior (result, array(i)) + rw = ior (rw, array(i)) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(ior:rv) gang + do i = 1, n + rv = ior (rv, array(i)) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(ior:rc) gang worker vector + do i = 1, n + rc = ior (rc, array(i)) end do !$acc end parallel @@ -126,17 +298,46 @@ program reduction_1 vresult = ior (vresult, array(i)) end do - if (result.ne.vresult) call abort + if (rg .ne. vresult) call abort + if (rw .ne. vresult) call abort + if (rv .ne. vresult) call abort + if (rc .ne. vresult) call abort - result = 0 + ! + ! 'ieor' reductions + ! + + rg = 0 + rw = 0 + rv = 0 + rc = 0 vresult = 0 - ! 'ieor' reductions + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(ieor:rg) gang + do i = 1, n + rg = ieor (rg, array(i)) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(ieor:rw) worker + do i = 1, n + rw = ieor (rw, array(i)) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(ieor:result) + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(ieor:rv) vector do i = 1, n - result = ieor (result, array(i)) + rv = ieor (rv, array(i)) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(ieor:rc) gang worker vector + do i = 1, n + rc = ieor (rc, array(i)) end do !$acc end parallel @@ -145,17 +346,46 @@ program reduction_1 vresult = ieor (vresult, array(i)) end do - if (result.ne.vresult) call abort - - lresult = .false. - lvresult = .false. + if (rg .ne. vresult) call abort + if (rw .ne. vresult) call abort + if (rv .ne. vresult) call abort + if (rc .ne. vresult) call abort + ! ! '.and.' reductions + ! + + lrg = .true. + lrw = .true. + lrv = .true. + lrc = .true. + lvresult = .true. + + !$acc parallel num_gangs(ng) copy(lrg) + !$acc loop reduction(.and.:lrg) gang + do i = 1, n + lrg = lrg .and. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(lrw) + !$acc loop reduction(.and.:lrw) worker + do i = 1, n + lrw = lrw .and. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(lrv) + !$acc loop reduction(.and.:lrv) vector + do i = 1, n + lrv = lrv .and. (array(i) .ge. 5) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(lresult) - !$acc loop reduction(.and.:lresult) + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc) + !$acc loop reduction(.and.:lrc) gang worker vector do i = 1, n - lresult = lresult .and. (array(i) .ge. 5) + lrc = lrc .and. (array(i) .ge. 5) end do !$acc end parallel @@ -164,17 +394,46 @@ program reduction_1 lvresult = lvresult .and. (array(i) .ge. 5) end do - if (result.ne.vresult) call abort + if (lrg .neqv. lvresult) call abort + if (lrw .neqv. lvresult) call abort + if (lrv .neqv. lvresult) call abort + if (lrc .neqv. lvresult) call abort + + ! + ! '.or.' reductions + ! - lresult = .false. + lrg = .true. + lrw = .true. + lrv = .true. + lrc = .true. lvresult = .false. - ! '.or.' reductions + !$acc parallel num_gangs(ng) copy(lrg) + !$acc loop reduction(.or.:lrg) gang + do i = 1, n + lrg = lrg .or. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(lrw) + !$acc loop reduction(.or.:lrw) worker + do i = 1, n + lrw = lrw .or. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(lrv) + !$acc loop reduction(.or.:lrv) vector + do i = 1, n + lrv = lrv .or. (array(i) .ge. 5) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(lresult) - !$acc loop reduction(.or.:lresult) + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc) + !$acc loop reduction(.or.:lrc) gang worker vector do i = 1, n - lresult = lresult .or. (array(i) .ge. 5) + lrc = lrc .or. (array(i) .ge. 5) end do !$acc end parallel @@ -183,17 +442,46 @@ program reduction_1 lvresult = lvresult .or. (array(i) .ge. 5) end do - if (result.ne.vresult) call abort - - lresult = .false. - lvresult = .false. + if (lrg .neqv. lvresult) call abort + if (lrw .neqv. lvresult) call abort + if (lrv .neqv. lvresult) call abort + if (lrc .neqv. lvresult) call abort + ! ! '.eqv.' reductions + ! + + lrg = .true. + lrw = .true. + lrv = .true. + lrc = .true. + lvresult = .true. + + !$acc parallel num_gangs(ng) copy(lrg) + !$acc loop reduction(.eqv.:lrg) gang + do i = 1, n + lrg = lrg .eqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(lrw) + !$acc loop reduction(.eqv.:lrw) worker + do i = 1, n + lrw = lrw .eqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(lrv) + !$acc loop reduction(.eqv.:lrv) vector + do i = 1, n + lrv = lrv .eqv. (array(i) .ge. 5) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(lresult) - !$acc loop reduction(.eqv.:lresult) + !$acc parallel num_workers(nw) vector_length(vl) copy(lrc) + !$acc loop reduction(.eqv.:lrc) gang worker vector do i = 1, n - lresult = lresult .eqv. (array(i) .ge. 5) + lrc = lrc .eqv. (array(i) .ge. 5) end do !$acc end parallel @@ -202,17 +490,46 @@ program reduction_1 lvresult = lvresult .eqv. (array(i) .ge. 5) end do - if (result.ne.vresult) call abort - - lresult = .false. - lvresult = .false. + if (lrg .neqv. lvresult) call abort + if (lrw .neqv. lvresult) call abort + if (lrv .neqv. lvresult) call abort + if (lrc .neqv. lvresult) call abort + ! ! '.neqv.' reductions + ! + + lrg = .true. + lrw = .true. + lrv = .true. + lrc = .true. + lvresult = .true. + + !$acc parallel num_gangs(ng) copy(lrg) + !$acc loop reduction(.neqv.:lrg) gang + do i = 1, n + lrg = lrg .neqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(lrw) + !$acc loop reduction(.neqv.:lrw) worker + do i = 1, n + lrw = lrw .neqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(lrv) + !$acc loop reduction(.neqv.:lrv) vector + do i = 1, n + lrv = lrv .neqv. (array(i) .ge. 5) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(lresult) - !$acc loop reduction(.neqv.:lresult) + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc) + !$acc loop reduction(.neqv.:lrc) gang worker vector do i = 1, n - lresult = lresult .neqv. (array(i) .ge. 5) + lrc = lrc .neqv. (array(i) .ge. 5) end do !$acc end parallel @@ -221,5 +538,8 @@ program reduction_1 lvresult = lvresult .neqv. (array(i) .ge. 5) end do - if (result.ne.vresult) call abort + if (lrg .neqv. lvresult) call abort + if (lrw .neqv. lvresult) call abort + if (lrv .neqv. lvresult) call abort + if (lrc .neqv. lvresult) call abort end program reduction_1 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90 index 96955ce71ba..b828feb60de 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90 @@ -5,26 +5,52 @@ program reduction_2 implicit none - integer, parameter :: n = 10, vl = 32 + integer, parameter :: n = 10, ng = 8, nw = 4, vl = 32 integer :: i - real, parameter :: e = .001 - real :: vresult, result - logical :: lresult, lvresult - real, dimension (n) :: array + real :: vresult, rg, rw, rv, rc + real, parameter :: e = 0.001 + logical :: lrg, lrw, lrv, lrc, lvresult + real, dimension (n) :: array do i = 1, n array(i) = i end do - result = 0 + ! + ! '+' reductions + ! + + rg = 0 + rw = 0 + rv = 0 + rc = 0 vresult = 0 - ! '+' reductions + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(+:rg) gang + do i = 1, n + rg = rg + array(i) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(+:result) + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(+:rw) worker do i = 1, n - result = result + array(i) + rw = rw + array(i) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(+:rv) vector + do i = 1, n + rv = rv + array(i) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(+:rc) gang worker vector + do i = 1, n + rc = rc + array(i) end do !$acc end parallel @@ -33,17 +59,46 @@ program reduction_2 vresult = vresult + array(i) end do - if (abs (result - vresult) .ge. e) call abort + if (rg .ne. vresult) call abort + if (rw .ne. vresult) call abort + if (rv .ne. vresult) call abort + if (rc .ne. vresult) call abort + + ! + ! '*' reductions + ! - result = 1 + rg = 1 + rw = 1 + rv = 1 + rc = 1 vresult = 1 - ! '*' reductions + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(*:rg) gang + do i = 1, n + rg = rg * array(i) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(*:result) + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(*:rw) worker do i = 1, n - result = result * array(i) + rw = rw * array(i) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(*:rv) vector + do i = 1, n + rv = rv * array(i) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(*:rc) gang worker vector + do i = 1, n + rc = rc * array(i) end do !$acc end parallel @@ -52,17 +107,46 @@ program reduction_2 vresult = vresult * array(i) end do - if (result.ne.vresult) call abort + if (abs (rg - vresult) .ge. e) call abort + if (abs (rw - vresult) .ge. e) call abort + if (abs (rv - vresult) .ge. e) call abort + if (abs (rc - vresult) .ge. e) call abort + + ! + ! 'max' reductions + ! - result = 0 + rg = 0 + rw = 0 + rg = 0 + rc = 0 vresult = 0 - ! 'max' reductions + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(max:rg) gang + do i = 1, n + rg = max (rg, array(i)) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(max:rw) worker + do i = 1, n + rw = max (rw, array(i)) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(max:result) + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(max:rv) vector do i = 1, n - result = max (result, array(i)) + rv = max (rv, array(i)) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(max:rc) gang worker vector + do i = 1, n + rc = max (rc, array(i)) end do !$acc end parallel @@ -71,17 +155,46 @@ program reduction_2 vresult = max (vresult, array(i)) end do - if (result.ne.vresult) call abort - - result = 1 - vresult = 1 + if (abs (rg - vresult) .ge. e) call abort + if (abs (rw - vresult) .ge. e) call abort + if (abs (rg - vresult) .ge. e) call abort + if (abs (rc - vresult) .ge. e) call abort + ! ! 'min' reductions + ! - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(min:result) + rg = 0 + rw = 0 + rv = 0 + rc = 0 + vresult = 0 + + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(min:rg) gang + do i = 1, n + rg = min (rg, array(i)) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(min:rw) worker + do i = 1, n + rw = min (rw, array(i)) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(min:rv) vector do i = 1, n - result = min (result, array(i)) + rv = min (rv, array(i)) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(min:rc) gang worker vector + do i = 1, n + rc = min (rc, array(i)) end do !$acc end parallel @@ -90,17 +203,46 @@ program reduction_2 vresult = min (vresult, array(i)) end do - if (result.ne.vresult) call abort + if (rg .ne. vresult) call abort + if (rv .ne. vresult) call abort + if (rw .ne. vresult) call abort + if (rc .ne. vresult) call abort + + ! + ! '.and.' reductions + ! - lresult = .true. + lrg = .true. + lrw = .true. + lrv = .true. + lrc = .true. lvresult = .true. - ! '.and.' reductions + !$acc parallel num_gangs(ng) copy(lrg) + !$acc loop reduction(.and.:lrg) gang + do i = 1, n + lrg = lrg .and. (array(i) .ge. 5) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(lresult) - !$acc loop reduction(.and.:lresult) + !$acc parallel num_workers(nw) copy(lrw) + !$acc loop reduction(.and.:lrw) worker do i = 1, n - lresult = lresult .and. (array(i) .ge. 5) + lrw = lrw .and. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(lrv) + !$acc loop reduction(.and.:lrv) vector + do i = 1, n + lrv = lrv .and. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc) + !$acc loop reduction(.and.:lrc) gang worker vector + do i = 1, n + lrc = lrc .and. (array(i) .ge. 5) end do !$acc end parallel @@ -109,17 +251,46 @@ program reduction_2 lvresult = lvresult .and. (array(i) .ge. 5) end do - if (result.ne.vresult) call abort + if (lrg .neqv. lvresult) call abort + if (lrw .neqv. lvresult) call abort + if (lrv .neqv. lvresult) call abort + if (lrc .neqv. lvresult) call abort + + ! + ! '.or.' reductions + ! - lresult = .false. + lrg = .false. + lrw = .false. + lrv = .false. + lrc = .false. lvresult = .false. - ! '.or.' reductions + !$acc parallel num_gangs(ng) copy(lrg) + !$acc loop reduction(.or.:lrg) gang + do i = 1, n + lrg = lrg .or. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(lrw) + !$acc loop reduction(.or.:lrw) worker + do i = 1, n + lrw = lrw .or. (array(i) .ge. 5) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(lresult) - !$acc loop reduction(.or.:lresult) + !$acc parallel vector_length(vl) copy(lrv) + !$acc loop reduction(.or.:lrv) vector do i = 1, n - lresult = lresult .or. (array(i) .ge. 5) + lrv = lrv .or. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc) + !$acc loop reduction(.or.:lrc) gang worker vector + do i = 1, n + lrc = lrc .or. (array(i) .ge. 5) end do !$acc end parallel @@ -128,17 +299,46 @@ program reduction_2 lvresult = lvresult .or. (array(i) .ge. 5) end do - if (result.ne.vresult) call abort - - lresult = .false. - lvresult = .false. + if (lrg .neqv. lvresult) call abort + if (lrw .neqv. lvresult) call abort + if (lrv .neqv. lvresult) call abort + if (lrc .neqv. lvresult) call abort + ! ! '.eqv.' reductions + ! - !$acc parallel vector_length(vl) num_gangs(1) copy(lresult) - !$acc loop reduction(.eqv.:lresult) + lrg = .true. + lrw = .true. + lrv = .true. + lrc = .true. + lvresult = .true. + + !$acc parallel num_gangs(ng) copy(lrg) + !$acc loop reduction(.eqv.:lrg) gang + do i = 1, n + lrg = lrg .eqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(lrw) + !$acc loop reduction(.eqv.:lrw) worker do i = 1, n - lresult = lresult .eqv. (array(i) .ge. 5) + lrw = lrw .eqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(lrv) + !$acc loop reduction(.eqv.:lrv) vector + do i = 1, n + lrv = lrv .eqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc) + !$acc loop reduction(.eqv.:lrc) gang worker vector + do i = 1, n + lrc = lrc .eqv. (array(i) .ge. 5) end do !$acc end parallel @@ -147,17 +347,46 @@ program reduction_2 lvresult = lvresult .eqv. (array(i) .ge. 5) end do - if (result.ne.vresult) call abort - - lresult = .false. - lvresult = .false. + if (lrg .neqv. lvresult) call abort + if (lrw .neqv. lvresult) call abort + if (lrv .neqv. lvresult) call abort + if (lrc .neqv. lvresult) call abort + ! ! '.neqv.' reductions + ! + + lrg = .true. + lrw = .true. + lrv = .true. + lrc = .true. + lvresult = .true. + + !$acc parallel num_gangs(ng) copy(lrg) + !$acc loop reduction(.neqv.:lrg) gang + do i = 1, n + lrg = lrg .neqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(lrw) + !$acc loop reduction(.neqv.:lrw) worker + do i = 1, n + lrw = lrw .neqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(lrv) + !$acc loop reduction(.neqv.:lrv) vector + do i = 1, n + lrv = lrv .neqv. (array(i) .ge. 5) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(lresult) - !$acc loop reduction(.neqv.:lresult) + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc) + !$acc loop reduction(.neqv.:lrc) gang worker vector do i = 1, n - lresult = lresult .neqv. (array(i) .ge. 5) + lrc = lrc .neqv. (array(i) .ge. 5) end do !$acc end parallel @@ -166,5 +395,8 @@ program reduction_2 lvresult = lvresult .neqv. (array(i) .ge. 5) end do - if (result.ne.vresult) call abort + if (lrg .neqv. lvresult) call abort + if (lrw .neqv. lvresult) call abort + if (lrv .neqv. lvresult) call abort + if (lrc .neqv. lvresult) call abort end program reduction_2 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-3.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-3.f90 index ecf7fbea3b8..3d8d753cfed 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-3.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-3.f90 @@ -5,26 +5,52 @@ program reduction_3 implicit none - integer, parameter :: n = 10, vl = 32 + integer, parameter :: n = 10, ng = 8, nw = 4, vl = 32 integer :: i - double precision, parameter :: e = .001 - double precision :: vresult, result - logical :: lresult, lvresult + double precision :: vresult, rg, rw, rv, rc + double precision, parameter :: e = 0.001 + logical :: lrg, lrw, lrv, lrc, lvresult double precision, dimension (n) :: array do i = 1, n array(i) = i end do - result = 0 + ! + ! '+' reductions + ! + + rg = 0 + rw = 0 + rv = 0 + rc = 0 vresult = 0 - ! '+' reductions + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(+:rg) gang + do i = 1, n + rg = rg + array(i) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(+:result) + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(+:rw) worker do i = 1, n - result = result + array(i) + rw = rw + array(i) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(+:rv) vector + do i = 1, n + rv = rv + array(i) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(+:rc) gang worker vector + do i = 1, n + rc = rc + array(i) end do !$acc end parallel @@ -33,17 +59,46 @@ program reduction_3 vresult = vresult + array(i) end do - if (abs (result - vresult) .ge. e) call abort + if (abs (rg - vresult) .ge. e) call abort + if (abs (rw - vresult) .ge. e) call abort + if (abs (rv - vresult) .ge. e) call abort + if (abs (rc - vresult) .ge. e) call abort + + ! + ! '*' reductions + ! - result = 1 + rg = 1 + rw = 1 + rv = 1 + rc = 1 vresult = 1 - ! '*' reductions + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(*:rg) gang + do i = 1, n + rg = rg * array(i) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(*:result) + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(*:rw) worker do i = 1, n - result = result * array(i) + rw = rw * array(i) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(*:rv) vector + do i = 1, n + rv = rv * array(i) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(*:rc) gang worker vector + do i = 1, n + rc = rc * array(i) end do !$acc end parallel @@ -52,17 +107,46 @@ program reduction_3 vresult = vresult * array(i) end do - if (result.ne.vresult) call abort + if (abs (rg - vresult) .ge. e) call abort + if (abs (rw - vresult) .ge. e) call abort + if (abs (rv - vresult) .ge. e) call abort + if (abs (rc - vresult) .ge. e) call abort + + ! + ! 'max' reductions + ! - result = 0 + rg = 0 + rw = 0 + rv = 0 + rc = 0 vresult = 0 - ! 'max' reductions + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(max:rg) gang + do i = 1, n + rg = max (rg, array(i)) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(max:rw) worker + do i = 1, n + rw = max (rw, array(i)) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(max:result) + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(max:rv) vector do i = 1, n - result = max (result, array(i)) + rv = max (rv, array(i)) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(max:rc) gang worker vector + do i = 1, n + rc = max (rc, array(i)) end do !$acc end parallel @@ -71,17 +155,46 @@ program reduction_3 vresult = max (vresult, array(i)) end do - if (result.ne.vresult) call abort - - result = 1 - vresult = 1 + if (abs (rg - vresult) .ge. e) call abort + if (abs (rw - vresult) .ge. e) call abort + if (abs (rv - vresult) .ge. e) call abort + if (abs (rc - vresult) .ge. e) call abort + ! ! 'min' reductions + ! - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(min:result) + rg = 0 + rw = 0 + rv = 0 + rc = 0 + vresult = 0 + + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(min:rg) gang + do i = 1, n + rg = min (rg, array(i)) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(min:rw) worker + do i = 1, n + rw = min (rw, array(i)) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(min:rv) vector do i = 1, n - result = min (result, array(i)) + rv = min (rv, array(i)) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(min:rc) gang worker vector + do i = 1, n + rc = min (rc, array(i)) end do !$acc end parallel @@ -90,17 +203,46 @@ program reduction_3 vresult = min (vresult, array(i)) end do - if (result.ne.vresult) call abort + if (rg .ne. vresult) call abort + if (rw .ne. vresult) call abort + if (rv .ne. vresult) call abort + if (rc .ne. vresult) call abort + + ! + ! '.and.' reductions + ! - lresult = .true. + lrg = .true. + lrw = .true. + lrv = .true. + lrc = .true. lvresult = .true. - ! '.and.' reductions + !$acc parallel num_gangs(ng) copy(lrg) + !$acc loop reduction(.and.:lrg) gang + do i = 1, n + lrg = lrg .and. (array(i) .ge. 5) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(lresult) - !$acc loop reduction(.and.:lresult) + !$acc parallel num_workers(nw) copy(lrw) + !$acc loop reduction(.and.:lrw) worker do i = 1, n - lresult = lresult .and. (array(i) .ge. 5) + lrw = lrw .and. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(lrv) + !$acc loop reduction(.and.:lrv) vector + do i = 1, n + lrv = lrv .and. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc) + !$acc loop reduction(.and.:lrc) gang worker vector + do i = 1, n + lrc = lrc .and. (array(i) .ge. 5) end do !$acc end parallel @@ -109,17 +251,46 @@ program reduction_3 lvresult = lvresult .and. (array(i) .ge. 5) end do - if (result.ne.vresult) call abort + if (lrg .neqv. lvresult) call abort + if (lrw .neqv. lvresult) call abort + if (lrv .neqv. lvresult) call abort + if (lrc .neqv. lvresult) call abort + + ! + ! '.or.' reductions + ! - lresult = .false. + lrg = .false. + lrw = .false. + lrv = .false. + lrc = .false. lvresult = .false. - ! '.or.' reductions + !$acc parallel num_gangs(ng) copy(lrg) + !$acc loop reduction(.or.:lrg) gang + do i = 1, n + lrg = lrg .or. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(lrw) + !$acc loop reduction(.or.:lrw) worker + do i = 1, n + lrw = lrw .or. (array(i) .ge. 5) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(lresult) - !$acc loop reduction(.or.:lresult) + !$acc parallel vector_length(vl) copy(lrv) + !$acc loop reduction(.or.:lrv) vector do i = 1, n - lresult = lresult .or. (array(i) .ge. 5) + lrv = lrv .or. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc) + !$acc loop reduction(.or.:lrc) gang worker vector + do i = 1, n + lrc = lrc .or. (array(i) .ge. 5) end do !$acc end parallel @@ -128,17 +299,46 @@ program reduction_3 lvresult = lvresult .or. (array(i) .ge. 5) end do - if (result.ne.vresult) call abort - - lresult = .false. - lvresult = .false. + if (lrg .neqv. lvresult) call abort + if (lrw .neqv. lvresult) call abort + if (lrv .neqv. lvresult) call abort + if (lrc .neqv. lvresult) call abort + ! ! '.eqv.' reductions + ! - !$acc parallel vector_length(vl) num_gangs(1) copy(lresult) - !$acc loop reduction(.eqv.:lresult) + lrg = .true. + lrw = .true. + lrv = .true. + lrc = .true. + lvresult = .true. + + !$acc parallel num_gangs(ng) copy(lrg) + !$acc loop reduction(.eqv.:lrg) gang + do i = 1, n + lrg = lrg .eqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(lrw) + !$acc loop reduction(.eqv.:lrw) worker do i = 1, n - lresult = lresult .eqv. (array(i) .ge. 5) + lrw = lrw .eqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(lrv) + !$acc loop reduction(.eqv.:lrv) vector + do i = 1, n + lrv = lrv .eqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc) + !$acc loop reduction(.eqv.:lrc) gang worker vector + do i = 1, n + lrc = lrc .eqv. (array(i) .ge. 5) end do !$acc end parallel @@ -147,17 +347,46 @@ program reduction_3 lvresult = lvresult .eqv. (array(i) .ge. 5) end do - if (result.ne.vresult) call abort - - lresult = .false. - lvresult = .false. + if (lrg .neqv. lvresult) call abort + if (lrw .neqv. lvresult) call abort + if (lrv .neqv. lvresult) call abort + if (lrc .neqv. lvresult) call abort + ! ! '.neqv.' reductions + ! + + lrg = .true. + lrw = .true. + lrv = .true. + lrc = .true. + lvresult = .true. + + !$acc parallel num_gangs(ng) copy(lrg) + !$acc loop reduction(.neqv.:lrg) gang + do i = 1, n + lrg = lrg .neqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(lrw) + !$acc loop reduction(.neqv.:lrw) worker + do i = 1, n + lrw = lrw .neqv. (array(i) .ge. 5) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(lrv) + !$acc loop reduction(.neqv.:lrv) vector + do i = 1, n + lrv = lrv .neqv. (array(i) .ge. 5) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(lresult) - !$acc loop reduction(.neqv.:lresult) + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(lrc) + !$acc loop reduction(.neqv.:lrc) gang worker vector do i = 1, n - lresult = lresult .neqv. (array(i) .ge. 5) + lrc = lrc .neqv. (array(i) .ge. 5) end do !$acc end parallel @@ -166,5 +395,8 @@ program reduction_3 lvresult = lvresult .neqv. (array(i) .ge. 5) end do - if (result.ne.vresult) call abort + if (lrg .neqv. lvresult) call abort + if (lrw .neqv. lvresult) call abort + if (lrv .neqv. lvresult) call abort + if (lrc .neqv. lvresult) call abort end program reduction_3 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-4.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-4.f90 index 8c99fdb32bf..c3bdaf610a1 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-4.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-4.f90 @@ -5,50 +5,108 @@ program reduction_4 implicit none - integer, parameter :: n = 10, vl = 32 + integer, parameter :: n = 10, ng = 8, nw = 4, vl = 32 integer :: i - complex :: vresult, result + real :: vresult, rg, rw, rv, rc complex, dimension (n) :: array do i = 1, n array(i) = i end do - result = 0 + ! + ! '+' reductions + ! + + rg = 0 + rw = 0 + rv = 0 + rc = 0 vresult = 0 - ! '+' reductions + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(+:rg) gang + do i = 1, n + rg = rg + REAL(array(i)) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(+:rw) worker + do i = 1, n + rw = rw + REAL(array(i)) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(+:rv) vector + do i = 1, n + rv = rv + REAL(array(i)) + end do + !$acc end parallel - !$acc parallel vector_length(vl) num_gangs(1) copy(result) - !$acc loop reduction(+:result) + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(+:rc) gang worker vector do i = 1, n - result = result + array(i) + rc = rc + REAL(array(i)) end do !$acc end parallel ! Verify the results do i = 1, n - vresult = vresult + array(i) + vresult = vresult + REAL(array(i)) end do - if (result .ne. vresult) call abort + if (rg .ne. vresult) call abort + if (rw .ne. vresult) call abort + if (rv .ne. vresult) call abort + if (rc .ne. vresult) call abort - result = 1 + ! + ! '*' reductions + ! + + rg = 1 + rw = 1 + rv = 1 + rc = 1 vresult = 1 -! ! '*' reductions -! -! !$acc parallel vector_length(vl) -! !$acc loop reduction(*:result) -! do i = 1, n -! result = result * array(i) -! end do -! !$acc end parallel -! -! ! Verify the results -! do i = 1, n -! vresult = vresult * array(i) -! end do -! -! if (result.ne.vresult) call abort + !$acc parallel num_gangs(ng) copy(rg) + !$acc loop reduction(*:rg) gang + do i = 1, n + rg = rg * REAL(array(i)) + end do + !$acc end parallel + + !$acc parallel num_workers(nw) copy(rw) + !$acc loop reduction(*:rw) worker + do i = 1, n + rw = rw * REAL(array(i)) + end do + !$acc end parallel + + !$acc parallel vector_length(vl) copy(rv) + !$acc loop reduction(*:rv) vector + do i = 1, n + rv = rv * REAL(array(i)) + end do + !$acc end parallel + + !$acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(rc) + !$acc loop reduction(*:rc) gang worker vector + do i = 1, n + rc = rc * REAL(array(i)) + end do + !$acc end parallel + + ! Verify the results + do i = 1, n + vresult = vresult * REAL(array(i)) + end do + + if (rg .ne. vresult) call abort + if (rw .ne. vresult) call abort + if (rv .ne. vresult) call abort + if (rc .ne. vresult) call abort end program reduction_4 diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90 index ec13e4e6c07..42106480c81 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-5.f90 @@ -1,12 +1,17 @@ ! { dg-do run } +! { dg-additional-options "-w" } ! subroutine reduction program reduction integer, parameter :: n = 40, c = 10 - integer :: i, vsum, sum + integer :: i, vsum, gs, ws, vs, cs, ns - call redsub (sum, n, c) + call redsub_gang (gs, n, c) + call redsub_worker (ws, n, c) + call redsub_vector (vs, n, c) + call redsub_combined (cs, n, c) + call redsub_nested (ns, n, c) vsum = 0 @@ -15,21 +20,80 @@ program reduction vsum = vsum + c end do - if (sum.ne.vsum) call abort () + if (gs .ne. vsum) call abort () + if (ws .ne. vsum) call abort () + if (vs .ne. vsum) call abort () + if (cs .ne. vsum) call abort () + if (ns .ne. vsum) call abort () end program reduction -subroutine redsub(sum, n, c) +subroutine redsub_gang(sum, n, c) integer :: sum, n, c - integer :: s - s = 0 + sum = 0 - !$acc parallel vector_length(32) copyin (n, c) copy (s) num_gangs(1) - !$acc loop reduction(+:s) + !$acc parallel copyin (n, c) num_gangs(n) copy(sum) + !$acc loop reduction(+:sum) gang do i = 1, n - s = s + c + sum = sum + c end do !$acc end parallel +end subroutine redsub_gang - sum = s -end subroutine redsub +subroutine redsub_worker(sum, n, c) + integer :: sum, n, c + + sum = 0 + + !$acc parallel copyin (n, c) num_workers(4) vector_length (32) copy(sum) + !$acc loop reduction(+:sum) worker + do i = 1, n + sum = sum + c + end do + !$acc end parallel +end subroutine redsub_worker + +subroutine redsub_vector(sum, n, c) + integer :: sum, n, c + + sum = 0 + + !$acc parallel copyin (n, c) vector_length(32) copy(sum) + !$acc loop reduction(+:sum) vector + do i = 1, n + sum = sum + c + end do + !$acc end parallel +end subroutine redsub_vector + +subroutine redsub_combined(sum, n, c) + integer :: sum, n, c + + sum = 0 + + !$acc parallel num_gangs (8) num_workers (4) vector_length(32) copy(sum) + !$acc loop reduction(+:sum) gang worker vector + do i = 1, n + sum = sum + c + end do + !$acc end parallel +end subroutine redsub_combined + +subroutine redsub_nested(sum, n, c) + integer :: sum, n, c + integer :: ii, jj + + ii = n / 10; + jj = 10; + sum = 0 + + !$acc parallel num_gangs (8) copy(sum) + !$acc loop reduction(+:sum) gang + do i = 1, ii + !$acc loop reduction(+:sum) vector + do j = 1, jj + sum = sum + c + end do + end do + !$acc end parallel +end subroutine redsub_nested diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-6.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-6.f90 index 2ff6f5fd17d..f3ed27527f5 100644 --- a/libgomp/testsuite/libgomp.oacc-fortran/reduction-6.f90 +++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-6.f90 @@ -1,30 +1,94 @@ ! { dg-do run } +! { dg-additional-options "-cpp -w" } program reduction implicit none - integer, parameter :: n = 100 - integer :: i, s1, s2, vs1, vs2 + integer, parameter :: n = 100, n2 = 1000, chunksize = 10 + integer :: i, gs1, gs2, ws1, ws2, vs1, vs2, cs1, cs2, hs1, hs2 + integer :: j, red, vred - s1 = 0 - s2 = 0 + gs1 = 0 + gs2 = 0 + ws1 = 0 + ws2 = 0 vs1 = 0 vs2 = 0 + cs1 = 0 + cs2 = 0 + hs1 = 0 + hs2 = 0 - !$acc parallel vector_length (32) copy(s1, s2) - !$acc loop reduction(+:s1, s2) + !$acc parallel num_gangs (1000) copy(gs1, gs2) + !$acc loop reduction(+:gs1, gs2) gang do i = 1, n - s1 = s1 + 1 - s2 = s2 + 2 + gs1 = gs1 + 1 + gs2 = gs2 + 2 end do !$acc end parallel - ! Verify the results + !$acc parallel num_workers (4) vector_length (32) copy(ws1, ws2) + !$acc loop reduction(+:ws1, ws2) worker + do i = 1, n + ws1 = ws1 + 1 + ws2 = ws2 + 2 + end do + !$acc end parallel + + !$acc parallel vector_length (32) copy(vs1, vs2) + !$acc loop reduction(+:vs1, vs2) vector do i = 1, n vs1 = vs1 + 1 vs2 = vs2 + 2 end do + !$acc end parallel + + !$acc parallel num_gangs(8) num_workers(4) vector_length(32) copy(cs1, cs2) + !$acc loop reduction(+:cs1, cs2) gang worker vector + do i = 1, n + cs1 = cs1 + 1 + cs2 = cs2 + 2 + end do + !$acc end parallel + + ! Verify the results on the host + do i = 1, n + hs1 = hs1 + 1 + hs2 = hs2 + 2 + end do + + if (gs1 .ne. hs1) call abort () + if (gs2 .ne. hs2) call abort () + + if (ws1 .ne. hs1) call abort () + if (ws2 .ne. hs2) call abort () + + if (vs1 .ne. hs1) call abort () + if (vs2 .ne. hs2) call abort () + + if (cs1 .ne. hs1) call abort () + if (cs2 .ne. hs2) call abort () + + ! Nested reductions. + + red = 0 + vred = 0 + + !$acc parallel num_gangs(10) vector_length(32) copy(red) + !$acc loop reduction(+:red) gang + do i = 1, n/chunksize + !$acc loop reduction(+:red) vector + do j = 1, chunksize + red = red + chunksize + end do + end do + !$acc end parallel + + do i = 1, n/chunksize + do j = 1, chunksize + vred = vred + chunksize + end do + end do - if (s1.ne.vs1) call abort () - if (s2.ne.vs2) call abort () + if (red .ne. vred) call abort () end program reduction diff --git a/libgomp/testsuite/libgomp.oacc-fortran/reduction-7.f90 b/libgomp/testsuite/libgomp.oacc-fortran/reduction-7.f90 new file mode 100644 index 00000000000..8ec36adf1e3 --- /dev/null +++ b/libgomp/testsuite/libgomp.oacc-fortran/reduction-7.f90 @@ -0,0 +1,88 @@ +! { dg-do run } +! { dg-additional-options "-w" } + +! subroutine reduction with private and firstprivate variables + +program reduction + integer, parameter :: n = 100 + integer :: i, j, vsum, cs, arr(n) + + call redsub_private (cs, n, arr) + call redsub_bogus (cs, n) + call redsub_combined (cs, n, arr) + + vsum = 0 + + ! Verify the results + do i = 1, n + vsum = i + do j = 1, n + vsum = vsum + 1; + end do + if (vsum .ne. arr(i)) call abort () + end do +end program reduction + +! This subroutine tests a reduction with an explicit private variable. + +subroutine redsub_private(sum, n, arr) + integer :: sum, n, arr(n) + integer :: i, j, v + + !$acc parallel copyout (arr) + !$acc loop gang private (v) + do j = 1, n + v = j + + !$acc loop vector reduction (+:v) + do i = 1, 100 + v = v + 1 + end do + + arr(j) = v + end do + !$acc end parallel + + ! verify the results + do i = 1, 10 + if (arr(i) .ne. 100+i) call abort () + end do +end subroutine redsub_private + + +! Bogus reduction on an impliclitly firstprivate variable. The results do +! survive the parallel region. The goal here is to ensure that gfortran +! doesn't ICE. + +subroutine redsub_bogus(sum, n) + integer :: sum, n, arr(n) + integer :: i + + !$acc parallel + !$acc loop gang worker vector reduction (+:sum) + do i = 1, n + sum = sum + 1 + end do + !$acc end parallel +end subroutine redsub_bogus + +! This reduction involving a firstprivate variable yields legitimate results. + +subroutine redsub_combined(sum, n, arr) + integer :: sum, n, arr(n) + integer :: i, j + + !$acc parallel copy (arr) + !$acc loop gang + do i = 1, n + sum = i; + + !$acc loop reduction(+:sum) + do j = 1, n + sum = sum + 1 + end do + + arr(i) = sum + end do + !$acc end parallel +end subroutine redsub_combined diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 1e59c537aeb..fb3f1f74fd6 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,16 @@ +2016-04-08 Marcel Böhme <boehme.marcel@gmail.com> + + PR c++/69687 + * cplus-dem.c: Include <limits.h> if available. + (INT_MAX): Define if necessary. + (remember_type, remember_Ktype, register_Btype, string_need): + Abort if we detect cases where we the size of the allocation would + overflow. + + PR c++/70492 + * cplus-dem.c (gnu_special): Handle case where consume_count returns + -1. + 2016-03-31 Mikhail Maltsev <maltsevm@gmail.com> Marcel Bohme boehme.marcel@gmail.com diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index 7ab46ddac48..7514e57913c 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -56,6 +56,13 @@ void * malloc (); void * realloc (); #endif +#ifdef HAVE_LIMITS_H +#include <limits.h> +#endif +#ifndef INT_MAX +# define INT_MAX (int)(((unsigned int) ~0) >> 1) /* 0x7FFFFFFF */ +#endif + #include <demangle.h> #undef CURRENT_DEMANGLING_STYLE #define CURRENT_DEMANGLING_STYLE work->options @@ -3001,6 +3008,11 @@ gnu_special (struct work_stuff *work, const char **mangled, string *declp) success = 1; break; } + else if (n == -1) + { + success = 0; + break; + } } else { @@ -4256,6 +4268,8 @@ remember_type (struct work_stuff *work, const char *start, int len) } else { + if (work -> typevec_size > INT_MAX / 2) + xmalloc_failed (INT_MAX); work -> typevec_size *= 2; work -> typevec = XRESIZEVEC (char *, work->typevec, work->typevec_size); @@ -4283,6 +4297,8 @@ remember_Ktype (struct work_stuff *work, const char *start, int len) } else { + if (work -> ksize > INT_MAX / 2) + xmalloc_failed (INT_MAX); work -> ksize *= 2; work -> ktypevec = XRESIZEVEC (char *, work->ktypevec, work->ksize); @@ -4312,6 +4328,8 @@ register_Btype (struct work_stuff *work) } else { + if (work -> bsize > INT_MAX / 2) + xmalloc_failed (INT_MAX); work -> bsize *= 2; work -> btypevec = XRESIZEVEC (char *, work->btypevec, work->bsize); @@ -4766,6 +4784,8 @@ string_need (string *s, int n) else if (s->e - s->p < n) { tem = s->p - s->b; + if (n > INT_MAX / 2 - tem) + xmalloc_failed (INT_MAX); n += tem; n *= 2; s->b = XRESIZEVEC (char, s->b, n); diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 4e6db2ab3db..f63e09145ba 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,80 @@ +2016-04-14 Jason Merrill <jason@redhat.com> + + Revert Jonathan's empty ABI change from yesterday. + +2016-04-13 Martin Sebor <msebor@redhat.com> + + PR c++/69517 + * testsuite/25_algorithms/rotate/moveable2.cc: Make sure VLA + upper bound is positive. + +2016-04-13 Jonathan Wakely <jwakely@redhat.com> + + * include/bits/c++config (_GLIBCXX_BEGIN_NAMESPACE_EMPTY_TYPES, + _GLIBCXX_END_NAMESPACE_EMPTY_TYPES, _GLIBCXX_ABI_TAG_EMPTY): Define. + * include/bits/hashtable.h (_Hashtable::_M_emplace): Change signatures + of functions taking empty structs by value. Add a template parameter + to overloads without hints. Rename overloads with hints to + _M_emplace_hint. + (_Hashtable::_M_erase(true_type, const_iterator), + _Hashtable::_M_erase(false_type, const_iterator)): Change signatures + by reordering parameters. + * include/bits/hashtable_policy.h (_Insert::insert): Adjust to call + _M_emplace_hint instead of _M_emplace. + * include/bits/shared_ptr.h (shared_ptr(_Tp1*, _Deleter, _Alloc), + shared_ptr(nullptr_t, _Deleter, _Alloc)): Use _GLIBCXX_ABI_TAG_EMPTY. + * include/bits/shared_ptr_base.h (_Sp_counted_deleter, __shared_count, + __shared_ptr): Likewise. + * include/bits/stl_algo.h (replace_if): Likewise. + * include/bits/stl_pair.h (piecewise_construct_t, + piecewise_construct): Use _GLIBCXX_BEGIN_NAMESPACE_EMPTY_TYPES. + * include/bits/uses_allocator.h (allocator_arg_t, allocator_arg, + __uses_alloc0): Likewise. + * include/ext/pb_ds/assoc_container.hpp (basic_hash_table): Likewise. + * testsuite/20_util/scoped_allocator/69293_neg.cc: Adjust dg-error. + * testsuite/20_util/shared_ptr/cons/43820_neg.cc: Likewise. + * testsuite/20_util/shared_ptr/cons/void_neg.cc: Likewise. + * testsuite/20_util/uses_allocator/69293_neg.cc: Likewise. + * testsuite/20_util/uses_allocator/cons_neg.cc: Likewise. + * testsuite/ext/profile/mutex_extensions_neg.cc: Likewise. + +2016-04-12 Edward Smith-Rowland <3dw4rd@verizon.net> + + Document C++17/TR29124 C++ Special Math Functions. + * include/bits/specfun.h: Add Doxygen markup. + +2016-04-07 Jonathan Wakely <jwakely@redhat.com> + + * testsuite/30_threads/thread/70503.cc: Adjust from xfail to pass. + +2016-04-06 Eric Botcazou <ebotcazou@adacore.com> + + * src/Makefile.am (libstdc++-symbols.ver): Remove useless /dev/null. + * src/Makefile.in: Regenerate. + +2016-04-05 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/70554 + * acinclude.m4 (GLIBCXX_ENABLE_ATOMIC_BUILTINS): Don't test + __atomic_fetch_add for bool. + * configure: Regenerate. + + * testsuite/30_threads/thread/70503.cc: Require -static to work. + + PR libstdc++/70503 + * src/c++11/thread.cc (execute_native_thread_routine, + execute_native_thread_routine_compat): Give internal linkage. + * testsuite/30_threads/thread/70503.cc: New test. + +2016-04-05 Ville Voutilainen <ville.voutilainen@gmail.com> + + PR libstdc++/70437 + * include/bits/stl_pair.h (_ConstructiblePair, + _ImplicitlyConvertiblePair, _MoveConstructiblePair, + _ImplicitlyMoveConvertiblePair): Add shortcut conditions + for same-type cases. + * testsuite/20_util/pair/70437.cc: New. + 2016-03-24 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/69945 diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 95df24a9062..b0f88cbb404 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -3290,7 +3290,7 @@ AC_DEFUN([GLIBCXX_ENABLE_ATOMIC_BUILTINS], [ atomic_type c1; atomic_type c2; atomic_type c3(0); - __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + // N.B. __atomic_fetch_add is not supported for bool. __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); @@ -3375,7 +3375,7 @@ int main() atomic_type c1; atomic_type c2; atomic_type c3(0); - __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + // N.B. __atomic_fetch_add is not supported for bool. __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index acbc6a6bd6e..41797a971b5 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -15229,7 +15229,7 @@ typedef bool atomic_type; atomic_type c1; atomic_type c2; atomic_type c3(0); - __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + // N.B. __atomic_fetch_add is not supported for bool. __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); @@ -15395,7 +15395,7 @@ int main() atomic_type c1; atomic_type c2; atomic_type c3(0); - __atomic_fetch_add(&c1, c2, __ATOMIC_RELAXED); + // N.B. __atomic_fetch_add is not supported for bool. __atomic_compare_exchange_n(&c1, &c2, c3, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED); __atomic_test_and_set(&c1, __ATOMIC_RELAXED); diff --git a/libstdc++-v3/include/bits/specfun.h b/libstdc++-v3/include/bits/specfun.h index 28c9d30e5be..77bbda36fd8 100644 --- a/libstdc++-v3/include/bits/specfun.h +++ b/libstdc++-v3/include/bits/specfun.h @@ -1,6 +1,6 @@ // Mathematical Special Functions for -*- C++ -*- -// Copyright (C) 2006-2015 Free Software Foundation, Inc. +// Copyright (C) 2006-2016 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -34,12 +34,14 @@ #include <bits/c++config.h> +#define __STDCPP_MATH_SPEC_FUNCS__ 201003L + +#define __cpp_lib_math_special_functions 201603L + #if __STDCPP_WANT_MATH_SPEC_FUNCS__ == 0 # error include <cmath> and define __STDCPP_WANT_MATH_SPEC_FUNCS__ #endif -#define __STDCPP_MATH_SPEC_FUNCS__ 201003L - #include <bits/stl_algobase.h> #include <limits> #include <type_traits> @@ -69,16 +71,182 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @{ */ + /** + * @mainpage Mathematical Special Functions + * + * @section intro Introduction and History + * The first significant library upgrade on the road to C++2011, + * <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1836.pdf"> + * TR1</a>, included a set of 23 mathematical functions that significantly + * extended the standard transcendental functions inherited from C and declared + * in @<cmath@>. + * + * Although most components from TR1 were eventually adopted for C++11 these + * math functions were left behind out of concern for implementability. + * The math functions were published as a separate international standard + * <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2010/n3060.pdf"> + * IS 29124 - Extensions to the C++ Library to Support Mathematical Special + * Functions</a>. + * + * For C++17 these functions were incorporated into the main standard. + * + * @section contents Contents + * The following functions are implemented in namespace @c std: + * - @ref assoc_laguerre "assoc_laguerre - Associated Laguerre functions" + * - @ref assoc_legendre "assoc_legendre - Associated Legendre functions" + * - @ref beta "beta - Beta functions" + * - @ref comp_ellint_1 "comp_ellint_1 - Complete elliptic functions of the first kind" + * - @ref comp_ellint_2 "comp_ellint_2 - Complete elliptic functions of the second kind" + * - @ref comp_ellint_3 "comp_ellint_3 - Complete elliptic functions of the third kind" + * - @ref cyl_bessel_i "cyl_bessel_i - Regular modified cylindrical Bessel functions" + * - @ref cyl_bessel_j "cyl_bessel_j - Cylindrical Bessel functions of the first kind" + * - @ref cyl_bessel_k "cyl_bessel_k - Irregular modified cylindrical Bessel functions" + * - @ref cyl_neumann "cyl_neumann - Cylindrical Neumann functions or Cylindrical Bessel functions of the second kind" + * - @ref ellint_1 "ellint_1 - Incomplete elliptic functions of the first kind" + * - @ref ellint_2 "ellint_2 - Incomplete elliptic functions of the second kind" + * - @ref ellint_3 "ellint_3 - Incomplete elliptic functions of the third kind" + * - @ref expint "expint - The exponential integral" + * - @ref hermite "hermite - Hermite polynomials" + * - @ref laguerre "laguerre - Laguerre functions" + * - @ref legendre "legendre - Legendre polynomials" + * - @ref riemann_zeta "riemann_zeta - The Riemann zeta function" + * - @ref sph_bessel "sph_bessel - Spherical Bessel functions" + * - @ref sph_legendre "sph_legendre - Spherical Legendre functions" + * - @ref sph_neumann "sph_neumann - Spherical Neumann functions" + * + * The hypergeometric functions were stricken from the TR29124 and C++17 + * versions of this math library because of implementation concerns. + * However, since they were in the TR1 version and since they are popular + * we kept them as an extension in namespace @c __gnu_cxx: + * - @ref conf_hyperg "conf_hyperg - Confluent hypergeometric functions" + * - @ref hyperg "hyperg - Hypergeometric functions" + * + * @section general General Features + * + * @subsection promotion Argument Promotion + * The arguments suppled to the non-suffixed functions will be promoted + * according to the following rules: + * 1. If any argument intended to be floating opint is given an integral value + * That integral value is promoted to double. + * 2. All floating point arguments are promoted up to the largest floating + * point precision among them. + * + * @subsection NaN NaN Arguments + * If any of the floating point arguments supplied to these functions is + * invalid or NaN (std::numeric_limits<Tp>::quiet_NaN), + * the value NaN is returned. + * + * @section impl Implementation + * + * We strive to implement the underlying math with type generic algorithms + * to the greatest extent possible. In practice, the functions are thin + * wrappers that dispatch to function templates. Type dependence is + * controlled with std::numeric_limits and functions thereof. + * + * We don't promote @c float to @c double or @c double to <tt>long double</tt> + * reflexively. The goal is for @c float functions to operate more quickly, + * at the cost of @c float accuracy and possibly a smaller domain of validity. + * Similaryly, <tt>long double</tt> should give you more dynamic range + * and slightly more pecision than @c double on many systems. + * + * @section testing Testing + * + * These functions have been tested against equivalent implementations + * from the <a href="http://www.gnu.org/software/gsl"> + * Gnu Scientific Library, GSL</a> and + * <a href="http://www.boost.org/doc/libs/1_60_0/libs/math/doc/html/index.html>Boost</a> + * and the ratio + * @f[ + * \frac{|f - f_{test}|}{|f_{test}|} + * @f] + * is generally found to be within 10^-15 for 64-bit double on linux-x86_64 systems + * over most of the ranges of validity. + * + * @todo Provide accuracy comparisons on a per-function basis for a small + * number of targets. + * + * @section bibliography General Bibliography + * + * @see Abramowitz and Stegun: Handbook of Mathematical Functions, + * with Formulas, Graphs, and Mathematical Tables + * Edited by Milton Abramowitz and Irene A. Stegun, + * National Bureau of Standards Applied Mathematics Series - 55 + * Issued June 1964, Tenth Printing, December 1972, with corrections + * Electronic versions of A&S abound including both pdf and navigable html. + * @see for example http://people.math.sfu.ca/~cbm/aands/ + * + * @see The old A&S has been redone as the + * NIST Digital Library of Mathematical Functions: http://dlmf.nist.gov/ + * This version is far more navigable and includes more recent work. + * + * @see An Atlas of Functions: with Equator, the Atlas Function Calculator + * 2nd Edition, by Oldham, Keith B., Myland, Jan, Spanier, Jerome + * + * @see Asymptotics and Special Functions by Frank W. J. Olver, + * Academic Press, 1974 + * + * @see Numerical Recipes in C, The Art of Scientific Computing, + * by William H. Press, Second Ed., Saul A. Teukolsky, + * William T. Vetterling, and Brian P. Flannery, + * Cambridge University Press, 1992 + * + * @see The Special Functions and Their Approximations: Volumes 1 and 2, + * by Yudell L. Luke, Academic Press, 1969 + */ + // Associated Laguerre polynomials + /** + * Return the associated Laguerre polynomial of order @c n, + * degree @c m: @f$ L_n^m(x) @f$ for @c float argument. + * + * @see assoc_laguerre for more details. + */ inline float assoc_laguerref(unsigned int __n, unsigned int __m, float __x) { return __detail::__assoc_laguerre<float>(__n, __m, __x); } + /** + * Return the associated Laguerre polynomial of order @c n, + * degree @c m: @f$ L_n^m(x) @f$. + * + * @see assoc_laguerre for more details. + */ inline long double assoc_laguerrel(unsigned int __n, unsigned int __m, long double __x) { return __detail::__assoc_laguerre<long double>(__n, __m, __x); } + /** + * Return the associated Laguerre polynomial of nonnegative order @c n, + * nonnegative degree @c m and real argument @c x: @f$ L_n^m(x) @f$. + * + * The associated Laguerre function of real degree @f$ \alpha @f$, + * @f$ L_n^\alpha(x) @f$, is defined by + * @f[ + * L_n^\alpha(x) = \frac{(\alpha + 1)_n}{n!} + * {}_1F_1(-n; \alpha + 1; x) + * @f] + * where @f$ (\alpha)_n @f$ is the Pochhammer symbol and + * @f$ {}_1F_1(a; c; x) @f$ is the confluent hypergeometric function. + * + * The associated Laguerre polynomial is defined for integral + * degree @f$ \alpha = m @f$ by: + * @f[ + * L_n^m(x) = (-1)^m \frac{d^m}{dx^m} L_{n + m}(x) + * @f] + * where the Laguerre polynomial is defined by: + * @f[ + * L_n(x) = \frac{e^x}{n!} \frac{d^n}{dx^n} (x^ne^{-x}) + * @f] + * and @f$ x >= 0 @f$. + * @see laguerre for details of the Laguerre function of degree @c n + * + * @tparam _Tp The floating-point type of the argument @c __x. + * @param __n The order of the Laguerre function, <tt>__n >= 0</tt>. + * @param __m The degree of the Laguerre function, <tt>__m >= 0</tt>. + * @param __x The argument of the Laguerre function, <tt>__x >= 0</tt>. + * @throw std::domain_error if <tt>__x < 0</tt>. + */ template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x) @@ -89,14 +257,42 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Associated Legendre functions + /** + * Return the associated Legendre function of degree @c l and order @c m + * for @c float argument. + * + * @see assoc_legendre for more details. + */ inline float assoc_legendref(unsigned int __l, unsigned int __m, float __x) { return __detail::__assoc_legendre_p<float>(__l, __m, __x); } + /** + * Return the associated Legendre function of degree @c l and order @c m. + * + * @see assoc_legendre for more details. + */ inline long double assoc_legendrel(unsigned int __l, unsigned int __m, long double __x) { return __detail::__assoc_legendre_p<long double>(__l, __m, __x); } + + /** + * Return the associated Legendre function of degree @c l and order @c m. + * + * The associated Legendre function is derived from the Legendre function + * @f$ P_l(x) @f$ by the Rodrigues formula: + * @f[ + * P_l^m(x) = (1 - x^2)^{m/2}\frac{d^m}{dx^m}P_l(x) + * @f] + * @see legendre for details of the Legendre function of degree @c l + * + * @tparam _Tp The floating-point type of the argument @c __x. + * @param __l The degree <tt>__l >= 0</tt>. + * @param __m The order <tt>__m <= l</tt>. + * @param __x The argument, <tt>abs(__x) <= 1</tt>. + * @throw std::domain_error if <tt>abs(__x) > 1</tt>. + */ template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type assoc_legendre(unsigned int __l, unsigned int __m, _Tp __x) @@ -107,32 +303,89 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Beta functions + /** + * Return the beta function, @f$ B(a,b) @f$, for @c float parameters @c a, @c b. + * + * @see beta for more details. + */ inline float - betaf(float __x, float __y) - { return __detail::__beta<float>(__x, __y); } + betaf(float __a, float __b) + { return __detail::__beta<float>(__a, __b); } + /** + * Return the beta function, @f$B(a,b)@f$, for long double + * parameters @c a, @c b. + * + * @see beta for more details. + */ inline long double - betal(long double __x, long double __y) - { return __detail::__beta<long double>(__x, __y); } + betal(long double __a, long double __b) + { return __detail::__beta<long double>(__a, __b); } - template<typename _Tpx, typename _Tpy> - inline typename __gnu_cxx::__promote_2<_Tpx, _Tpy>::__type - beta(_Tpx __x, _Tpy __y) + /** + * Return the beta function, @f$B(a,b)@f$, for real parameters @c a, @c b. + * + * The beta function is defined by + * @f[ + * B(a,b) = \int_0^1 t^{a - 1} (1 - t)^{b - 1} dt + * = \frac{\Gamma(a)\Gamma(b)}{\Gamma(a+b)} + * @f] + * where @f$ a > 0 @f$ and @f$ b > 0 @f$ + * + * @tparam _Tpa The floating-point type of the parameter @c __a. + * @tparam _Tpb The floating-point type of the parameter @c __b. + * @param __a The first argument of the beta function, <tt> __a > 0 </tt>. + * @param __b The second argument of the beta function, <tt> __b > 0 </tt>. + * @throw std::domain_error if <tt> __a < 0 </tt> or <tt> __b < 0 </tt>. + */ + template<typename _Tpa, typename _Tpb> + inline typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type + beta(_Tpa __a, _Tpb __b) { - typedef typename __gnu_cxx::__promote_2<_Tpx, _Tpy>::__type __type; - return __detail::__beta<__type>(__x, __y); + typedef typename __gnu_cxx::__promote_2<_Tpa, _Tpb>::__type __type; + return __detail::__beta<__type>(__a, __b); } // Complete elliptic integrals of the first kind + /** + * Return the complete elliptic integral of the first kind @f$ E(k) @f$ + * for @c float modulus @c k. + * + * @see comp_ellint_1 for details. + */ inline float comp_ellint_1f(float __k) { return __detail::__comp_ellint_1<float>(__k); } + /** + * Return the complete elliptic integral of the first kind @f$ E(k) @f$ + * for long double modulus @c k. + * + * @see comp_ellint_1 for details. + */ inline long double comp_ellint_1l(long double __k) { return __detail::__comp_ellint_1<long double>(__k); } + /** + * Return the complete elliptic integral of the first kind + * @f$ K(k) @f$ for real modulus @c k. + * + * The complete elliptic integral of the first kind is defined as + * @f[ + * K(k) = F(k,\pi/2) = \int_0^{\pi/2}\frac{d\theta} + * {\sqrt{1 - k^2 sin^2\theta}} + * @f] + * where @f$ F(k,\phi) @f$ is the incomplete elliptic integral of the + * first kind and the modulus @f$ |k| <= 1 @f$. + * @see ellint_1 for details of the incomplete elliptic function + * of the first kind. + * + * @tparam _Tp The floating-point type of the modulus @c __k. + * @param __k The modulus, <tt> abs(__k) <= 1 </tt> + * @throw std::domain_error if <tt> abs(__k) > 1 </tt>. + */ template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type comp_ellint_1(_Tp __k) @@ -143,14 +396,43 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Complete elliptic integrals of the second kind + /** + * Return the complete elliptic integral of the second kind @f$ E(k) @f$ + * for @c float modulus @c k. + * + * @see comp_ellint_2 for details. + */ inline float comp_ellint_2f(float __k) { return __detail::__comp_ellint_2<float>(__k); } + /** + * Return the complete elliptic integral of the second kind @f$ E(k) @f$ + * for long double modulus @c k. + * + * @see comp_ellint_2 for details. + */ inline long double comp_ellint_2l(long double __k) { return __detail::__comp_ellint_2<long double>(__k); } + /** + * Return the complete elliptic integral of the second kind @f$ E(k) @f$ + * for real modulus @c k. + * + * The complete elliptic integral of the second kind is defined as + * @f[ + * E(k) = E(k,\pi/2) = \int_0^{\pi/2}\sqrt{1 - k^2 sin^2\theta} + * @f] + * where @f$ E(k,\phi) @f$ is the incomplete elliptic integral of the + * second kind and the modulus @f$ |k| <= 1 @f$. + * @see ellint_2 for details of the incomplete elliptic function + * of the second kind. + * + * @tparam _Tp The floating-point type of the modulus @c __k. + * @param __k The modulus, @c abs(__k) <= 1 + * @throw std::domain_error if @c abs(__k) > 1. + */ template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type comp_ellint_2(_Tp __k) @@ -161,14 +443,47 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Complete elliptic integrals of the third kind + /** + * @brief Return the complete elliptic integral of the third kind + * @f$ \Pi(k,\nu) @f$ for @c float modulus @c k. + * + * @see comp_ellint_3 for details. + */ inline float comp_ellint_3f(float __k, float __nu) { return __detail::__comp_ellint_3<float>(__k, __nu); } + /** + * @brief Return the complete elliptic integral of the third kind + * @f$ \Pi(k,\nu) @f$ for <tt>long double</tt> modulus @c k. + * + * @see comp_ellint_3 for details. + */ inline long double comp_ellint_3l(long double __k, long double __nu) { return __detail::__comp_ellint_3<long double>(__k, __nu); } + /** + * Return the complete elliptic integral of the third kind + * @f$ \Pi(k,\nu) = \Pi(k,\nu,\pi/2) @f$ for real modulus @c k. + * + * The complete elliptic integral of the third kind is defined as + * @f[ + * \Pi(k,\nu) = \Pi(k,\nu,\pi/2) = \int_0^{\pi/2} + * \frac{d\theta} + * {(1 - \nu \sin^2\theta)\sqrt{1 - k^2 \sin^2\theta}} + * @f] + * where @f$ \Pi(k,\nu,\phi) @f$ is the incomplete elliptic integral of the + * second kind and the modulus @f$ |k| <= 1 @f$. + * @see ellint_3 for details of the incomplete elliptic function + * of the third kind. + * + * @tparam _Tp The floating-point type of the modulus @c __k. + * @tparam _Tpn The floating-point type of the argument @c __nu. + * @param __k The modulus, @c abs(__k) <= 1 + * @param __nu The argument + * @throw std::domain_error if @c abs(__k) > 1. + */ template<typename _Tp, typename _Tpn> inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type comp_ellint_3(_Tp __k, _Tpn __nu) @@ -179,14 +494,42 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Regular modified cylindrical Bessel functions + /** + * Return the regular modified Bessel function @f$ I_{\nu}(x) @f$ + * for @c float order @f$ \nu @f$ and argument @f$ x >= 0 @f$. + * + * @see cyl_bessel_i for setails. + */ inline float cyl_bessel_if(float __nu, float __x) { return __detail::__cyl_bessel_i<float>(__nu, __x); } + /** + * Return the regular modified Bessel function @f$ I_{\nu}(x) @f$ + * for <tt>long double</tt> order @f$ \nu @f$ and argument @f$ x >= 0 @f$. + * + * @see cyl_bessel_i for setails. + */ inline long double cyl_bessel_il(long double __nu, long double __x) { return __detail::__cyl_bessel_i<long double>(__nu, __x); } + /** + * Return the regular modified Bessel function @f$ I_{\nu}(x) @f$ + * for real order @f$ \nu @f$ and argument @f$ x >= 0 @f$. + * + * The regular modified cylindrical Bessel function is: + * @f[ + * I_{\nu}(x) = i^{-\nu}J_\nu(ix) = \sum_{k=0}^{\infty} + * \frac{(x/2)^{\nu + 2k}}{k!\Gamma(\nu+k+1)} + * @f] + * + * @tparam _Tpnu The floating-point type of the order @c __nu. + * @tparam _Tp The floating-point type of the argument @c __x. + * @param __nu The order + * @param __x The argument, <tt> __x >= 0 </tt> + * @throw std::domain_error if <tt> __x < 0 </tt>. + */ template<typename _Tpnu, typename _Tp> inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type cyl_bessel_i(_Tpnu __nu, _Tp __x) @@ -197,14 +540,42 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Cylindrical Bessel functions (of the first kind) + /** + * Return the Bessel function of the first kind @f$ J_{\nu}(x) @f$ + * for @c float order @f$ \nu @f$ and argument @f$ x >= 0 @f$. + * + * @see cyl_bessel_j for setails. + */ inline float cyl_bessel_jf(float __nu, float __x) { return __detail::__cyl_bessel_j<float>(__nu, __x); } + /** + * Return the Bessel function of the first kind @f$ J_{\nu}(x) @f$ + * for <tt>long double</tt> order @f$ \nu @f$ and argument @f$ x >= 0 @f$. + * + * @see cyl_bessel_j for setails. + */ inline long double cyl_bessel_jl(long double __nu, long double __x) { return __detail::__cyl_bessel_j<long double>(__nu, __x); } + /** + * Return the Bessel function @f$ J_{\nu}(x) @f$ of real order @f$ \nu @f$ + * and argument @f$ x >= 0 @f$. + * + * The cylindrical Bessel function is: + * @f[ + * J_{\nu}(x) = \sum_{k=0}^{\infty} + * \frac{(-1)^k (x/2)^{\nu + 2k}}{k!\Gamma(\nu+k+1)} + * @f] + * + * @tparam _Tpnu The floating-point type of the order @c __nu. + * @tparam _Tp The floating-point type of the argument @c __x. + * @param __nu The order + * @param __x The argument, <tt> __x >= 0 </tt> + * @throw std::domain_error if <tt> __x < 0 </tt>. + */ template<typename _Tpnu, typename _Tp> inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type cyl_bessel_j(_Tpnu __nu, _Tp __x) @@ -215,14 +586,48 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Irregular modified cylindrical Bessel functions + /** + * Return the irregular modified Bessel function @f$ K_{\nu}(x) @f$ + * for @c float order @f$ \nu @f$ and argument @f$ x >= 0 @f$. + * + * @see cyl_bessel_k for setails. + */ inline float cyl_bessel_kf(float __nu, float __x) { return __detail::__cyl_bessel_k<float>(__nu, __x); } + /** + * Return the irregular modified Bessel function @f$ K_{\nu}(x) @f$ + * for <tt>long double</tt> order @f$ \nu @f$ and argument @f$ x >= 0 @f$. + * + * @see cyl_bessel_k for setails. + */ inline long double cyl_bessel_kl(long double __nu, long double __x) { return __detail::__cyl_bessel_k<long double>(__nu, __x); } + /** + * Return the irregular modified Bessel function @f$ K_{\nu}(x) @f$ + * of real order @f$ \nu @f$ and argument @f$ x @f$. + * + * The irregular modified Bessel function is defined by: + * @f[ + * K_{\nu}(x) = \frac{\pi}{2} + * \frac{I_{-\nu}(x) - I_{\nu}(x)}{\sin \nu\pi} + * @f] + * where for integral @f$ \nu = n @f$ a limit is taken: + * @f$ lim_{\nu \to n} @f$. + * For negative argument we have simply: + * @f[ + * K_{-\nu}(x) = K_{\nu}(x) + * @f] + * + * @tparam _Tpnu The floating-point type of the order @c __nu. + * @tparam _Tp The floating-point type of the argument @c __x. + * @param __nu The order + * @param __x The argument, <tt> __x >= 0 </tt> + * @throw std::domain_error if <tt> __x < 0 </tt>. + */ template<typename _Tpnu, typename _Tp> inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type cyl_bessel_k(_Tpnu __nu, _Tp __x) @@ -233,14 +638,44 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Cylindrical Neumann functions + /** + * Return the Neumann function @f$ N_{\nu}(x) @f$ + * of @c float order @f$ \nu @f$ and argument @f$ x @f$. + * + * @see cyl_neumann for setails. + */ inline float cyl_neumannf(float __nu, float __x) { return __detail::__cyl_neumann_n<float>(__nu, __x); } + /** + * Return the Neumann function @f$ N_{\nu}(x) @f$ + * of <tt>long double</tt> order @f$ \nu @f$ and argument @f$ x @f$. + * + * @see cyl_neumann for setails. + */ inline long double cyl_neumannl(long double __nu, long double __x) { return __detail::__cyl_neumann_n<long double>(__nu, __x); } + /** + * Return the Neumann function @f$ N_{\nu}(x) @f$ + * of real order @f$ \nu @f$ and argument @f$ x >= 0 @f$. + * + * The Neumann function is defined by: + * @f[ + * N_{\nu}(x) = \frac{J_{\nu}(x) \cos \nu\pi - J_{-\nu}(x)} + * {\sin \nu\pi} + * @f] + * where @f$ x >= 0 @f$ and for integral order @f$ \nu = n @f$ + * a limit is taken: @f$ lim_{\nu \to n} @f$. + * + * @tparam _Tpnu The floating-point type of the order @c __nu. + * @tparam _Tp The floating-point type of the argument @c __x. + * @param __nu The order + * @param __x The argument, <tt> __x >= 0 </tt> + * @throw std::domain_error if <tt> __x < 0 </tt>. + */ template<typename _Tpnu, typename _Tp> inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type cyl_neumann(_Tpnu __nu, _Tp __x) @@ -251,14 +686,44 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Incomplete elliptic integrals of the first kind + /** + * Return the incomplete elliptic integral of the first kind @f$ E(k,\phi) @f$ + * for @c float modulus @f$ k @f$ and angle @f$ \phi @f$. + * + * @see ellint_1 for details. + */ inline float ellint_1f(float __k, float __phi) { return __detail::__ellint_1<float>(__k, __phi); } + /** + * Return the incomplete elliptic integral of the first kind @f$ E(k,\phi) @f$ + * for <tt>long double</tt> modulus @f$ k @f$ and angle @f$ \phi @f$. + * + * @see ellint_1 for details. + */ inline long double ellint_1l(long double __k, long double __phi) { return __detail::__ellint_1<long double>(__k, __phi); } + /** + * Return the incomplete elliptic integral of the first kind @f$ F(k,\phi) @f$ + * for @c real modulus @f$ k @f$ and angle @f$ \phi @f$. + * + * The incomplete elliptic integral of the first kind is defined as + * @f[ + * F(k,\phi) = \int_0^{\phi}\frac{d\theta} + * {\sqrt{1 - k^2 sin^2\theta}} + * @f] + * For @f$ \phi= \pi/2 @f$ this becomes the complete elliptic integral of + * the first kind, @f$ K(k) @f$. @see comp_ellint_1. + * + * @tparam _Tp The floating-point type of the modulus @c __k. + * @tparam _Tpp The floating-point type of the angle @c __phi. + * @param __k The modulus, <tt> abs(__k) <= 1 </tt> + * @param __phi The integral limit argument in radians + * @throw std::domain_error if <tt> abs(__k) > 1 </tt>. + */ template<typename _Tp, typename _Tpp> inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type ellint_1(_Tp __k, _Tpp __phi) @@ -269,14 +734,44 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Incomplete elliptic integrals of the second kind + /** + * @brief Return the incomplete elliptic integral of the second kind + * @f$ E(k,\phi) @f$ for @c float argument. + * + * @see ellint_2 for details. + */ inline float ellint_2f(float __k, float __phi) { return __detail::__ellint_2<float>(__k, __phi); } + /** + * @brief Return the incomplete elliptic integral of the second kind + * @f$ E(k,\phi) @f$. + * + * @see ellint_2 for details. + */ inline long double ellint_2l(long double __k, long double __phi) { return __detail::__ellint_2<long double>(__k, __phi); } + /** + * Return the incomplete elliptic integral of the second kind + * @f$ E(k,\phi) @f$. + * + * The incomplete elliptic integral of the second kind is defined as + * @f[ + * E(k,\phi) = \int_0^{\phi} \sqrt{1 - k^2 sin^2\theta} + * @f] + * For @f$ \phi= \pi/2 @f$ this becomes the complete elliptic integral of + * the second kind, @f$ E(k) @f$. @see comp_ellint_2. + * + * @tparam _Tp The floating-point type of the modulus @c __k. + * @tparam _Tpp The floating-point type of the angle @c __phi. + * @param __k The modulus, <tt> abs(__k) <= 1 </tt> + * @param __phi The integral limit argument in radians + * @return The elliptic function of the second kind. + * @throw std::domain_error if <tt> abs(__k) > 1 </tt>. + */ template<typename _Tp, typename _Tpp> inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type ellint_2(_Tp __k, _Tpp __phi) @@ -287,14 +782,49 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Incomplete elliptic integrals of the third kind + /** + * @brief Return the incomplete elliptic integral of the third kind + * @f$ \Pi(k,\nu,\phi) @f$ for @c float argument. + * + * @see ellint_3 for details. + */ inline float ellint_3f(float __k, float __nu, float __phi) { return __detail::__ellint_3<float>(__k, __nu, __phi); } + /** + * @brief Return the incomplete elliptic integral of the third kind + * @f$ \Pi(k,\nu,\phi) @f$. + * + * @see ellint_3 for details. + */ inline long double ellint_3l(long double __k, long double __nu, long double __phi) { return __detail::__ellint_3<long double>(__k, __nu, __phi); } + /** + * @brief Return the incomplete elliptic integral of the third kind + * @f$ \Pi(k,\nu,\phi) @f$. + * + * The incomplete elliptic integral of the third kind is defined by: + * @f[ + * \Pi(k,\nu,\phi) = \int_0^{\phi} + * \frac{d\theta} + * {(1 - \nu \sin^2\theta) + * \sqrt{1 - k^2 \sin^2\theta}} + * @f] + * For @f$ \phi= \pi/2 @f$ this becomes the complete elliptic integral of + * the third kind, @f$ \Pi(k,\nu) @f$. @see comp_ellint_3. + * + * @tparam _Tp The floating-point type of the modulus @c __k. + * @tparam _Tpn The floating-point type of the argument @c __nu. + * @tparam _Tpp The floating-point type of the angle @c __phi. + * @param __k The modulus, <tt> abs(__k) <= 1 </tt> + * @param __nu The second argument + * @param __phi The integral limit argument in radians + * @return The elliptic function of the third kind. + * @throw std::domain_error if <tt> abs(__k) > 1 </tt>. + */ template<typename _Tp, typename _Tpn, typename _Tpp> inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type ellint_3(_Tp __k, _Tpn __nu, _Tpp __phi) @@ -305,14 +835,36 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Exponential integrals + /** + * Return the exponential integral @f$ Ei(x) @f$ for @c float argument @c x. + * + * @see expint for details. + */ inline float expintf(float __x) { return __detail::__expint<float>(__x); } + /** + * Return the exponential integral @f$ Ei(x) @f$ + * for <tt>long double</tt> argument @c x. + * + * @see expint for details. + */ inline long double expintl(long double __x) { return __detail::__expint<long double>(__x); } + /** + * Return the exponential integral @f$ Ei(x) @f$ for @c real argument @c x. + * + * The exponential integral is given by + * \f[ + * Ei(x) = -\int_{-x}^\infty \frac{e^t}{t} dt + * \f] + * + * @tparam _Tp The floating-point type of the argument @c __x. + * @param __x The argument of the exponential integral function. + */ template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type expint(_Tp __x) @@ -323,14 +875,44 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Hermite polynomials + /** + * Return the Hermite polynomial @f$ H_n(x) @f$ of nonnegative order n + * and float argument @c x. + * + * @see hermite for details. + */ inline float hermitef(unsigned int __n, float __x) { return __detail::__poly_hermite<float>(__n, __x); } + /** + * Return the Hermite polynomial @f$ H_n(x) @f$ of nonnegative order n + * and <tt>long double</tt> argument @c x. + * + * @see hermite for details. + */ inline long double hermitel(unsigned int __n, long double __x) { return __detail::__poly_hermite<long double>(__n, __x); } + /** + * Return the Hermite polynomial @f$ H_n(x) @f$ of order n + * and @c real argument @c x. + * + * The Hermite polynomial is defined by: + * @f[ + * H_n(x) = (-1)^n e^{x^2} \frac{d^n}{dx^n} e^{-x^2} + * @f] + * + * The Hermite polynomial obeys a reflection formula: + * @f[ + * H_n(-x) = (-1)^n H_n(x) + * @f] + * + * @tparam _Tp The floating-point type of the argument @c __x. + * @param __n The order + * @param __x The argument + */ template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type hermite(unsigned int __n, _Tp __x) @@ -341,14 +923,40 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Laguerre polynomials + /** + * Returns the Laguerre polynomial @f$ L_n(x) @f$ of nonnegative degree @c n + * and @c float argument @f$ x >= 0 @f$. + * + * @see laguerre for more details. + */ inline float laguerref(unsigned int __n, float __x) { return __detail::__laguerre<float>(__n, __x); } + /** + * Returns the Laguerre polynomial @f$ L_n(x) @f$ of nonnegative degree @c n + * and <tt>long double</tt> argument @f$ x >= 0 @f$. + * + * @see laguerre for more details. + */ inline long double laguerrel(unsigned int __n, long double __x) { return __detail::__laguerre<long double>(__n, __x); } + /** + * Returns the Laguerre polynomial @f$ L_n(x) @f$ + * of nonnegative degree @c n and real argument @f$ x >= 0 @f$. + * + * The Laguerre polynomial is defined by: + * @f[ + * L_n(x) = \frac{e^x}{n!} \frac{d^n}{dx^n} (x^ne^{-x}) + * @f] + * + * @tparam _Tp The floating-point type of the argument @c __x. + * @param __n The nonnegative order + * @param __x The argument <tt> __x >= 0 </tt> + * @throw std::domain_error if <tt> __x < 0 </tt>. + */ template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type laguerre(unsigned int __n, _Tp __x) @@ -359,32 +967,92 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Legendre polynomials + /** + * Return the Legendre polynomial @f$ P_l(x) @f$ of nonnegative + * degree @f$ l @f$ and @c float argument @f$ |x| <= 0 @f$. + * + * @see legendre for more details. + */ inline float - legendref(unsigned int __n, float __x) - { return __detail::__poly_legendre_p<float>(__n, __x); } + legendref(unsigned int __l, float __x) + { return __detail::__poly_legendre_p<float>(__l, __x); } + /** + * Return the Legendre polynomial @f$ P_l(x) @f$ of nonnegative + * degree @f$ l @f$ and <tt>long double</tt> argument @f$ |x| <= 0 @f$. + * + * @see legendre for more details. + */ inline long double - legendrel(unsigned int __n, long double __x) - { return __detail::__poly_legendre_p<long double>(__n, __x); } + legendrel(unsigned int __l, long double __x) + { return __detail::__poly_legendre_p<long double>(__l, __x); } + /** + * Return the Legendre polynomial @f$ P_l(x) @f$ of nonnegative + * degree @f$ l @f$ and real argument @f$ |x| <= 0 @f$. + * + * The Legendre function of order @f$ l @f$ and argument @f$ x @f$, + * @f$ P_l(x) @f$, is defined by: + * @f[ + * P_l(x) = \frac{1}{2^l l!}\frac{d^l}{dx^l}(x^2 - 1)^{l} + * @f] + * + * @tparam _Tp The floating-point type of the argument @c __x. + * @param __l The degree @f$ l >= 0 @f$ + * @param __x The argument @c abs(__x) <= 1 + * @throw std::domain_error if @c abs(__x) > 1 + */ template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type - legendre(unsigned int __n, _Tp __x) + legendre(unsigned int __l, _Tp __x) { typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__poly_legendre_p<__type>(__n, __x); + return __detail::__poly_legendre_p<__type>(__l, __x); } // Riemann zeta functions + /** + * Return the Riemann zeta function @f$ \zeta(s) @f$ + * for @c float argument @f$ s @f$. + * + * @see riemann_zeta for more details. + */ inline float riemann_zetaf(float __s) { return __detail::__riemann_zeta<float>(__s); } + /** + * Return the Riemann zeta function @f$ \zeta(s) @f$ + * for <tt>long double</tt> argument @f$ s @f$. + * + * @see riemann_zeta for more details. + */ inline long double riemann_zetal(long double __s) { return __detail::__riemann_zeta<long double>(__s); } + /** + * Return the Riemann zeta function @f$ \zeta(s) @f$ + * for real argument @f$ s @f$. + * + * The Riemann zeta function is defined by: + * @f[ + * \zeta(s) = \sum_{k=1}^{\infty} k^{-s} \hbox{ for } s > 1 + * @f] + * and + * @f[ + * \zeta(s) = \frac{1}{1-2^{1-s}}\sum_{k=1}^{\infty}(-1)^{k-1}k^{-s} + * \hbox{ for } 0 <= s <= 1 + * @f] + * For s < 1 use the reflection formula: + * @f[ + * \zeta(s) = 2^s \pi^{s-1} \sin(\frac{\pi s}{2}) \Gamma(1-s) \zeta(1-s) + * @f] + * + * @tparam _Tp The floating-point type of the argument @c __s. + * @param __s The argument <tt> s != 1 </tt> + */ template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type riemann_zeta(_Tp __s) @@ -395,14 +1063,40 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Spherical Bessel functions + /** + * Return the spherical Bessel function @f$ j_n(x) @f$ of nonnegative order n + * and @c float argument @f$ x >= 0 @f$. + * + * @see sph_bessel for more details. + */ inline float sph_besself(unsigned int __n, float __x) { return __detail::__sph_bessel<float>(__n, __x); } + /** + * Return the spherical Bessel function @f$ j_n(x) @f$ of nonnegative order n + * and <tt>long double</tt> argument @f$ x >= 0 @f$. + * + * @see sph_bessel for more details. + */ inline long double sph_bessell(unsigned int __n, long double __x) { return __detail::__sph_bessel<long double>(__n, __x); } + /** + * Return the spherical Bessel function @f$ j_n(x) @f$ of nonnegative order n + * and real argument @f$ x >= 0 @f$. + * + * The spherical Bessel function is defined by: + * @f[ + * j_n(x) = \left(\frac{\pi}{2x} \right) ^{1/2} J_{n+1/2}(x) + * @f] + * + * @tparam _Tp The floating-point type of the argument @c __x. + * @param __n The integral order <tt> n >= 0 </tt> + * @param __x The real argument <tt> x >= 0 </tt> + * @throw std::domain_error if <tt> __x < 0 </tt>. + */ template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type sph_bessel(unsigned int __n, _Tp __x) @@ -413,14 +1107,43 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Spherical associated Legendre functions + /** + * Return the spherical Legendre function of nonnegative integral + * degree @c l and order @c m and float angle @f$ \theta @f$ in radians. + * + * @see sph_legendre for details. + */ inline float sph_legendref(unsigned int __l, unsigned int __m, float __theta) { return __detail::__sph_legendre<float>(__l, __m, __theta); } + /** + * Return the spherical Legendre function of nonnegative integral + * degree @c l and order @c m and <tt>long double</tt> angle @f$ \theta @f$ + * in radians. + * + * @see sph_legendre for details. + */ inline long double sph_legendrel(unsigned int __l, unsigned int __m, long double __theta) { return __detail::__sph_legendre<long double>(__l, __m, __theta); } + /** + * Return the spherical Legendre function of nonnegative integral + * degree @c l and order @c m and real angle @f$ \theta @f$ in radians. + * + * The spherical Legendre function is defined by + * @f[ + * Y_l^m(\theta,\phi) = (-1)^m[\frac{(2l+1)}{4\pi} + * \frac{(l-m)!}{(l+m)!}] + * P_l^m(\cos\theta) \exp^{im\phi} + * @f] + * + * @tparam _Tp The floating-point type of the angle @c __theta. + * @param __l The order <tt> __l >= 0 </tt> + * @param __m The degree <tt> __m >= 0 </tt> and <tt> __m <= __l </tt> + * @param __theta The radian polar angle argument + */ template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta) @@ -431,14 +1154,40 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Spherical Neumann functions + /** + * Return the spherical Neumann function of integral order @f$ n >= 0 @f$ + * and @c float argument @f$ x >= 0 @f$. + * + * @see sph_neumann for details. + */ inline float sph_neumannf(unsigned int __n, float __x) { return __detail::__sph_neumann<float>(__n, __x); } + /** + * Return the spherical Neumann function of integral order @f$ n >= 0 @f$ + * and <tt>long double</tt> @f$ x >= 0 @f$. + * + * @see sph_neumann for details. + */ inline long double sph_neumannl(unsigned int __n, long double __x) { return __detail::__sph_neumann<long double>(__n, __x); } + /** + * Return the spherical Neumann function of integral order @f$ n >= 0 @f$ + * and real argument @f$ x >= 0 @f$. + * + * The spherical Neumann function is defined by + * @f[ + * n_n(x) = \left(\frac{\pi}{2x} \right) ^{1/2} N_{n+1/2}(x) + * @f] + * + * @tparam _Tp The floating-point type of the argument @c __x. + * @param __n The integral order <tt> n >= 0 </tt> + * @param __x The real argument <tt> __x >= 0 </tt> + * @throw std::domain_error if <tt> __x < 0 </tt>. + */ template<typename _Tp> inline typename __gnu_cxx::__promote<_Tp>::__type sph_neumann(unsigned int __n, _Tp __x) @@ -457,14 +1206,44 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) // Confluent hypergeometric functions + /** + * Return the confluent hypergeometric function @f$ {}_1F_1(a;c;x) @f$ + * of @c float numeratorial parameter @c a, denominatorial parameter @c c, + * and argument @c x. + * + * @see conf_hyperg for details. + */ inline float conf_hypergf(float __a, float __c, float __x) { return std::__detail::__conf_hyperg<float>(__a, __c, __x); } + /** + * Return the confluent hypergeometric function @f$ {}_1F_1(a;c;x) @f$ + * of <tt>long double</tt> numeratorial parameter @c a, + * denominatorial parameter @c c, and argument @c x. + * + * @see conf_hyperg for details. + */ inline long double conf_hypergl(long double __a, long double __c, long double __x) { return std::__detail::__conf_hyperg<long double>(__a, __c, __x); } + /** + * Return the confluent hypergeometric function @f$ {}_1F_1(a;c;x) @f$ + * of real numeratorial parameter @c a, denominatorial parameter @c c, + * and argument @c x. + * + * The confluent hypergeometric function is defined by + * @f[ + * {}_1F_1(a;c;x) = \sum_{n=0}^{\infty} \frac{(a)_n x^n}{(c)_n n!} + * @f] + * where the Pochhammer symbol is @f$ (x)_k = (x)(x+1)...(x+k-1) @f$, + * @f$ (x)_0 = 1 @f$ + * + * @param __a The numeratorial parameter + * @param __c The denominatorial parameter + * @param __x The argument + */ template<typename _Tpa, typename _Tpc, typename _Tp> inline typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type conf_hyperg(_Tpa __a, _Tpc __c, _Tp __x) @@ -475,14 +1254,45 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) // Hypergeometric functions + /** + * Return the hypergeometric function @f$ {}_2F_1(a,b;c;x) @f$ + * of @ float numeratorial parameters @c a and @c b, + * denominatorial parameter @c c, and argument @c x. + * + * @see hyperg for details. + */ inline float hypergf(float __a, float __b, float __c, float __x) { return std::__detail::__hyperg<float>(__a, __b, __c, __x); } + /** + * Return the hypergeometric function @f$ {}_2F_1(a,b;c;x) @f$ + * of <tt>long double</tt> numeratorial parameters @c a and @c b, + * denominatorial parameter @c c, and argument @c x. + * + * @see hyperg for details. + */ inline long double hypergl(long double __a, long double __b, long double __c, long double __x) { return std::__detail::__hyperg<long double>(__a, __b, __c, __x); } + /** + * Return the hypergeometric function @f$ {}_2F_1(a,b;c;x) @f$ + * of real numeratorial parameters @c a and @c b, + * denominatorial parameter @c c, and argument @c x. + * + * The hypergeometric function is defined by + * @f[ + * {}_2F_1(a;c;x) = \sum_{n=0}^{\infty} \frac{(a)_n (b)_n x^n}{(c)_n n!} + * @f] + * where the Pochhammer symbol is @f$ (x)_k = (x)(x+1)...(x+k-1) @f$, + * @f$ (x)_0 = 1 @f$ + * + * @param __a The first numeratorial parameter + * @param __b The second numeratorial parameter + * @param __c The denominatorial parameter + * @param __x The argument + */ template<typename _Tpa, typename _Tpb, typename _Tpc, typename _Tp> inline typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x) diff --git a/libstdc++-v3/include/bits/stl_pair.h b/libstdc++-v3/include/bits/stl_pair.h index 7057030d9d7..37ee5cc4053 100644 --- a/libstdc++-v3/include/bits/stl_pair.h +++ b/libstdc++-v3/include/bits/stl_pair.h @@ -87,32 +87,51 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Concept utility functions, reused in conditionally-explicit // constructors. + // See PR 70437, don't look at is_constructible or + // is_convertible if the decayed types are the same to + // avoid querying those properties for incomplete types. template <typename _T1, typename _T2, typename _U1, typename _U2> constexpr bool _ConstructiblePair() { - return __and_<is_constructible<_T1, const _U1&>, - is_constructible<_T2, const _U2&>>::value; + return __and_<__or_<is_same<typename decay<_T1>::type, + typename decay<_U1>::type>, + is_constructible<_T1, const _U1&>>, + __or_<is_same<typename decay<_T2>::type, + typename decay<_U2>::type>, + is_constructible<_T2, const _U2&>>>::value; } template <typename _T1, typename _T2, typename _U1, typename _U2> constexpr bool _ImplicitlyConvertiblePair() { - return __and_<is_convertible<const _U1&, _T1>, - is_convertible<const _U2&, _T2>>::value; + return __and_<__or_<is_same<typename decay<_T1>::type, + typename decay<_U1>::type>, + is_convertible<const _U1&, _T1>>, + __or_<is_same<typename decay<_T2>::type, + typename decay<_U2>::type>, + is_convertible<const _U2&, _T2>>>::value; } template <typename _T1, typename _T2, typename _U1, typename _U2> constexpr bool _MoveConstructiblePair() { - return __and_<is_constructible<_T1, _U1&&>, - is_constructible<_T2, _U2&&>>::value; + return __and_<__or_<is_same<typename decay<_T1>::type, + typename decay<_U1>::type>, + is_constructible<_T1, _U1&&>>, + __or_<is_same<typename decay<_T2>::type, + typename decay<_U2>::type>, + is_constructible<_T2, _U2&&>>>::value; } template <typename _T1, typename _T2, typename _U1, typename _U2> constexpr bool _ImplicitlyMoveConvertiblePair() { - return __and_<is_convertible<_U1&&, _T1>, - is_convertible<_U2&&, _T2>>::value; + return __and_<__or_<is_same<typename decay<_T1>::type, + typename decay<_U1>::type>, + is_convertible<_U1&&, _T1>>, + __or_<is_same<typename decay<_T2>::type, + typename decay<_U2>::type>, + is_convertible<_U2&&, _T2>>>::value; } diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index 7b510abc404..dce25a6bd8b 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -228,7 +228,7 @@ libstdc++-symbols.ver: ${glibcxx_srcdir}/$(SYMVER_FILE) \ chmod +w $@.tmp if test "x$(port_specific_symbol_files)" != x; then \ if grep '^# Appended to version file.' \ - $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \ + $(port_specific_symbol_files) > /dev/null 2>&1; then \ cat $(port_specific_symbol_files) >> $@.tmp; \ else \ sed -n '1,/DO NOT DELETE/p' $@.tmp > tmp.top; \ diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index 0776dccc212..75a207a5e7d 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -939,7 +939,7 @@ compatibility-condvar.o: compatibility-condvar.cc @ENABLE_SYMVERS_TRUE@ chmod +w $@.tmp @ENABLE_SYMVERS_TRUE@ if test "x$(port_specific_symbol_files)" != x; then \ @ENABLE_SYMVERS_TRUE@ if grep '^# Appended to version file.' \ -@ENABLE_SYMVERS_TRUE@ $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \ +@ENABLE_SYMVERS_TRUE@ $(port_specific_symbol_files) > /dev/null 2>&1; then \ @ENABLE_SYMVERS_TRUE@ cat $(port_specific_symbol_files) >> $@.tmp; \ @ENABLE_SYMVERS_TRUE@ else \ @ENABLE_SYMVERS_TRUE@ sed -n '1,/DO NOT DELETE/p' $@.tmp > tmp.top; \ diff --git a/libstdc++-v3/src/c++11/thread.cc b/libstdc++-v3/src/c++11/thread.cc index d2a7dc3e1ee..a027fcf4bb2 100644 --- a/libstdc++-v3/src/c++11/thread.cc +++ b/libstdc++-v3/src/c++11/thread.cc @@ -71,9 +71,9 @@ static inline int get_nprocs() namespace std _GLIBCXX_VISIBILITY(default) { - namespace + extern "C" { - extern "C" void* + static void* execute_native_thread_routine(void* __p) { thread::_State_ptr __t{ static_cast<thread::_State*>(__p) }; @@ -95,7 +95,7 @@ namespace std _GLIBCXX_VISIBILITY(default) } #if _GLIBCXX_THREAD_ABI_COMPAT - extern "C" void* + static void* execute_native_thread_routine_compat(void* __p) { thread::_Impl_base* __t = static_cast<thread::_Impl_base*>(__p); @@ -121,7 +121,7 @@ namespace std _GLIBCXX_VISIBILITY(default) return nullptr; } #endif - } + } // extern "C" _GLIBCXX_BEGIN_NAMESPACE_VERSION diff --git a/libstdc++-v3/testsuite/20_util/pair/70437.cc b/libstdc++-v3/testsuite/20_util/pair/70437.cc new file mode 100644 index 00000000000..37e6fb7ec1a --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/pair/70437.cc @@ -0,0 +1,37 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2016 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <utility> + +template <class T> struct B; + +template <class T> struct A +{ + A(A&&) = default; + A(const B<T> &); +}; + +template <class T> struct B +{ + std::pair<A<T>,int> a; + B(B&&) = default; +}; + +bool b = std::is_move_constructible<A<int> >::value; diff --git a/libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc b/libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc index d9d1f2a44ca..f944236f061 100644 --- a/libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc +++ b/libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc @@ -44,7 +44,8 @@ template<typename Con> { bool test __attribute__((unused)) = true; - rvalstruct array[length]; + /* Make sure the VLA upper bound is positive. */ + rvalstruct array[length + 1]; for(int i = 0; i < length; ++i) array[i] = i; Con con(array, array + length); diff --git a/libstdc++-v3/testsuite/30_threads/thread/70503.cc b/libstdc++-v3/testsuite/30_threads/thread/70503.cc new file mode 100644 index 00000000000..3b64ef8d2de --- /dev/null +++ b/libstdc++-v3/testsuite/30_threads/thread/70503.cc @@ -0,0 +1,38 @@ +// Copyright (C) 2016 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-do link } +// { dg-options "-std=gnu++11 -static" { target *-*-*gnu* } } +// { dg-require-cstdint "" } +// { dg-require-gthreads "" } +// { dg-require-effective-target static } + +#include <thread> + +extern "C" { + // Should not get multiple definition errors from libstdc++.a(thread.o) + void execute_native_thread_routine(void) { } + void execute_native_thread_routine_compat(void) { } +} + +int main() +{ + execute_native_thread_routine(); + execute_native_thread_routine_compat(); + + std::thread{}.detach(); // ensure libstdc++.a(thread.o) is linked in +} |