diff options
author | Paolo Bonzini <bonzini@gnu.org> | 2009-05-11 07:56:52 +0000 |
---|---|---|
committer | Paolo Bonzini <bonzini@gnu.org> | 2009-05-11 07:56:52 +0000 |
commit | e9341300e5c5e5839d8c2170513a6c08dbb13068 (patch) | |
tree | 249b465b87e69f6eac915fe31be1961a40356b8b | |
parent | 7a0b179b3e9be8831081770a4a766ccf98146522 (diff) | |
parent | a2a80d1d18605c11862e80677ef958970ecdbe95 (diff) |
Merge trunk up to revision 147359.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/cond-optab@147360 138bc75d-0d04-0410-961f-82ee72b054a4
264 files changed, 11576 insertions, 5903 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3e25e4445ec..e1c13f5884b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,7 +1,488 @@ +2009-05-10 Ian Lance Taylor <iant@google.com> + + * basic-block.h (enum profile_status): Break out of struct + control_flow_graph. + * cgraph.h (struct inline_summary): Break out of struct + cgraph_local_info. + * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out + of struct cgraph_order_sort. + * combine.c (enum undo_kind): New enum, broken out of struct + undo. + * cse.c (struct branch_path): Break out of struct + cse_basic_block_data. + * except.h (enum eh_region_type): Break out of struct eh_region. + * gcc.c (enum add_del): Break out of struct modify_target. + * genrecog.c (enum decision_type): Break out of struct + decision_test. + * ggc-page.c (struct ggc_pch_ondisk): Break out of struct + ggc_pch_data. + * matrix-reorg.c (struct free_info): Break out of struct + matrix_info. + * regmove.c (enum match_use): New enum, broken out of struct + match. + * sched-int.h (enum post_call_group): New enum, broken out of + struct deps. + (struct deps_reg): Break out of struct deps. + * target.h (struct asm_int_op): Break out of struct gcc_target. + * tree-eh.c (struct goto_queue_node): Break out of struct + leh_tf_state. + * tree-inline.h (enum copy_body_cge_which): Break out of + copy_body_data. + * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass. + + * c-decl.c (in_struct, struct_types): New static variables. + (pushtag): Add loc parameter. Change all callers. + (lookup_tag): Add ploc parameter. Change all callers. + (check_compound_literal_type): New function. + (parser_xref_tag): Add loc parameter. Change all callers. If + -Wc++-compat, warn about struct/union/enum types defined within a + struct or union. + (start_struct): Add enclosing_in_struct, enclosing_struct_types, + and loc parameters. Change all callers. Change error calls to + error_at, using loc. For a redefinition, if the location of the + original definition is known, report it. Set in_struct and + struct_types. If -Wc++-compat warn if in sizeof, typeof, or + alignof. + (finish_struct): Add new parameters enclosing_in_struct and + enclosing_struct_types. Change all callers. Set + C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined + in the struct. If in a struct, add this struct to struct_types. + (start_enum): Add loc parameter. Change all callers. Use + error_at for errors, using loc. For a redefinition, if the + location of the original definition is known, report it. If in a + struct, add this enum type to struct_types. If -Wc++-compat warn + if in sizeof, typeof, or alignof. + * c-parser.c (disable_extension_diagnostics): Disable + -Wc++-compat. + (enable_extension_diagnostics): Reenable -Wc++-compat if + appropriate. + (c_parser_enum_specifier): Get enum location for start_enum. + (c_parser_struct_or_union_specifier): Get struct location for + start_struct. Save in_struct and struct_types status between + start_struct and finish_struct. + (c_parser_cast_expression): Get location of cast. + (c_parser_alignof_expression): Get location of type. + (c_parser_postfix_expression): Likewise. + (c_parser_postfix_expression_after_paren_type): Add type_loc + parameter. Change all callers. Call + check_compound_literal_type. Use type_loc for error about + variable size type. + * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a + use of an enum constant from an enum type defined in a struct or + union. + (c_cast_expr): Add loc parameter. Change all callers. If + -Wc++-compat, warn about defining a type in a cast. + * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define. + (start_enum, start_struct, finish_struct): Update declarations. + (parser_xref_tag, c_cast_expr): Update declarations. + (check_compound_literal_type): Declare. + +2009-05-11 Ben Elliston <bje@au.ibm.com> + + * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update + for recent libcpp interface change. + (rs6000_macro_to_expand): Likewise. + +2009-05-10 Michael Matz <matz@suse.de> + + PR target/40031 + * config/arm/arm.c (require_pic_register): Emit on entry edge, + not at entry of function. + +2009-05-10 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/40081 + Revert + * tree-sra.c (instantiate_element): Instantiate scalar replacements + using the main variant of the element type. Do not fiddle with + TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS. + + * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose + structs with volatile fields. + +2009-05-10 Jan Hubicka <jh@suse.cz> + + * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare. + (estimate_move_cost): Assert that it does not get called for VOID_TYPE_P. + (estimate_num_insns): Skip VOID types in argument handling. + (optimize_inline_calls): Delete unreachable blocks and verify that + callgraph is valid. + +2009-05-10 Jan Hubicka <jh@suse.cz> + + * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node. + * cgraph.c (cgraph_mark_address_taken_node): New function. + (dump_cgraph_node): Dump new flag. + * cgraph.h (struct cgraph_node): Add address_taken. + (cgraph_mark_address_taken_node): New function. + * ipa.c (cgraph_postorder): Prioritize functions with address taken + since new direct calls can be born. + +2009-05-10 Joseph Myers <joseph@codesourcery.com> + + * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in + tok->val.node.node. + +2009-05-10 Jan Hubicka <jh@suse.cz> + + PR middle-end/40084 + * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call + argument; rewrite. + (cgraph_update_edges_for_call_stmt): Take old_decl argument. + * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype. + * tree-inline.c (copy_bb): Set frequency correctly. + (fold_marked_statements): Update call to + cgraph_update_edges_for_call_stmt. + +2009-05-10 Joseph Myers <joseph@codesourcery.com> + + * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for + identifiers in diagnostics. + * config/arm/arm.c (arm_handle_fndecl_attribute, + arm_handle_isr_attribute): Likewise. + * config/avr/avr.c (avr_handle_progmem_attribute, + avr_handle_fndecl_attribute, avr_handle_fntype_attribute): + Likewise. + * config/bfin/bfin.c (handle_int_attribute, + bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute, + bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute, + bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute): + Likewise. + * config/darwin.c (darwin_handle_kext_attribute, + darwin_handle_weak_import_attribute): Likewise. + * config/h8300/h8300.c (h8300_handle_fndecl_attribute, + h8300_handle_eightbit_data_attribute, + h8300_handle_tiny_data_attribute): Likewise. + * config/i386/i386.c (ix86_handle_cconv_attribute, + ix86_handle_abi_attribute, ix86_handle_struct_attribute): + Likewise. + * config/i386/winnt.c (ix86_handle_shared_attribute, + ix86_handle_selectany_attribute): Likewise. + * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise. + * config/m32c/m32c.c (function_vector_handler): Likewise. + * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute, + m68hc11_handle_fntype_attribute): Likewise. + * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise. + * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise. + * config/mips/mips.c (mips_insert_attributes, + mips_merge_decl_attributes, mips_expand_builtin): Likewise. + * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute, + rs6000_handle_struct_attribute): Likewise. + * config/sh/sh.c (sh_insert_attributes, + sh_handle_resbank_handler_attribute, + sh_handle_interrupt_handler_attribute, + sh2a_handle_function_vector_handler_attribute, + sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute): + Likewise. + * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise. + * config/spu/spu.c (spu_handle_fndecl_attribute, + spu_handle_vector_attribute): Likewise. + * config/stormy16/stormy16.c + (xstormy16_handle_interrupt_attribute): Likewise. + * config/v850/v850-c.c (ghs_pragma_section): Likewise. + * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise. + +2009-05-10 Joseph Myers <joseph@codesourcery.com> + + * pretty-print.h (struct pretty_print_info): Add + translate_identifiers. + (pp_translate_identifiers): New. + (pp_identifier): Only conditionally translate identifier to locale + character set. + * pretty-print.c (pp_construct): Set pp_translate_identifiers. + (pp_base_tree_identifier): Only conditionally translate identifier + to locale character set. + * c-pretty-print.c (M_): Define. + (pp_c_type_specifier, pp_c_primary_expression): Mark English + fragments for conditional translation with M_. + * tree-pretty-print.c (maybe_init_pretty_print): Disable + identifier translation. + +2009-05-10 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/40081 + * tree-sra.c (instantiate_element): Instantiate scalar replacements + using the main variant of the element type. Do not fiddle with + TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS. + +2009-05-09 Jan Hubicka <jh@suse.cz> + + PR middle-end/40080 + * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect + indirect calls; verify cgraph afterwards. + +2009-05-09 Jan Hubicka <jh@suse.cz> + + PR bootstrap/40082 + * ipa.c (update_inlined_to_pointer): New function. + (cgraph_remove_unreachable_nodes): Use it. + +2009-05-09 Jan Hubicka <jh@suse.cz> + + * tree-eh.c (struct leh_state): Remove prev_try. + (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do + not track prev_try. + * except.c (gen_eh_region_cleanup, duplicate_eh_regions, + copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label, + remove_eh_handler_and_replace, foreach_reachable_handler, + verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer. + * except.h (struct eh_region): Remove eh_region_u_cleanup. + (gen_eh_region_cleanup): Update prototype. + +2009-05-09 Jan Hubicka <jh@suse.cz> + + PR middle-end/40043 + * except.c (copy_eh_region): Always set prev_try. + (redirect_eh_edge_to_label): Find outer try. + (foreach_reachable_handler): When looking for prev try + handle case where previous try is not going to be taken. + +2009-05-07 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR tree-optimization/40049 + * tree-vect-stmts.c (vectorizable_operation): If the machine has + only vector/vector shifts, convert the type of the constant to the + appropriate type to avoid building incorrect trees, which + eventually have problems with garbage collection. + +2009-05-08 Joseph Myers <joseph@codesourcery.com> + + * fold-const.c (fold_binary): Do not fold multiplication by 1 or + -1 for complex floating-point types if honoring signed zeros. + +2009-05-08 Jan Hubicka <jh@suse.cz> + + * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function + argument; handle correctly when profile is absent. + (build_cgraph_edges): Update. + (rebuild_cgraph_edges): Update. + * cgraph.c: Do not include varray.h. + (cgraph_set_call_stmt_including_clones): New function. + (cgraph_create_edge_including_clones): Likewise + (cgraph_update_edges_for_call_stmt_node): New static cfunction. + (cgraph_update_edges_for_call_stmt): Handle clones. + (cgraph_remove_node): Handle clone tree. + (cgraph_remove_node_and_inline_clones): New function. + (dump_cgraph_node): Dump clone tree. + (cgraph_clone_node): Handle clone tree. + (clone_function_name): Bring here from tree-inline.c. + (cgraph_create_virtual_clone): New function. + * cgraph.h (ipa_replace_map): Move here from ipa.h. + (cgraph_clone_info): New function. + (strut cgraph_node): Add clone_info and new clone tree pointers. + (cgraph_remove_node_and_inline_clones, + cgraph_set_call_stmt_including_clones, + cgraph_create_edge_including_clones, + cgraph_create_virtual_clone): Declare. + (cgraph_function_versioning): Use VEC argument. + (compute_call_stmt_bb_frequency): Update prototype. + (cgraph_materialize_all_clones): New function. + * ipa-cp.c (ipcp_update_cloned_node): Remove. + (ipcp_create_replace_map): Update to VECtors. + (ipcp_update_callgraph): Use virtual clones. + (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove. + (ipcp_update_profiling): Do not update local profiling. + (ipcp_insert_stage): Use VECtors and virtual clones. + * cgraphunit.c (verify_cgraph_node): Verify clone tree. + (clone_of_p): New function. + (cgraph_preserve_function_body_p): Use clone tree. + (cgraph_optimize): Materialize clones. + (cgraph_function_versioning): Update for VECtors. + (save_inline_function_body): Use clone tree. + (cgraph_materialize_clone): New function. + (cgraph_materialize_all_clones): Likewise. + * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags. + * ipa.c: Include gimple.h. + (cgraph_remove_unreachable_nodes): Use clone tree. + * ipa-prop.c (ipa_note_param_call): Update call to + compute_call_stmt_bb_frequencycall. + * ipa-prop.h (ipa_replace_map): Move to cgraph.h. + * tree-inline.c: Do not include varray.h or gt-tree-inline.h. + (copy_bb): Handle updating of clone tree; add new edge when new call + appears. + (expand_call_inline): Be strict about every call having edge. + (clone_fn_id_num, clone_function_name): Move to cgraph.c. + (delete_unreachable_blocks_update_callgraph): New function. + (tree_function_versioning): Use VECtors; always remove unreachable + blocks and fold conditionals. + * tree-inline.h: Do not include varray.h. + (tree_function_versioning): Remove. + * Makefile.in (GTFILES): Remove tree-inline.c + * passes.c (do_per_function): Do only functions having body. + * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone + tree. + +2009-05-08 H.J. Lu <hongjiu.lu@intel.com> + Andrew Morrow <acm@google.com> + + PR c/36892 + * c-common.c (c_common_attribute_table): Permit deprecated + attribute to take an optional argument. + (handle_deprecated_attribute): If the optional argument to + __attribute__((deprecated)) is not a string ignore the attribute + and emit a warning. + + * c-decl.c (grokdeclarator): Updated warn_deprecated_use call. + * c-typeck.c (build_component_ref): Likewise. + (build_external_ref): Likewise. + + * toplev.c (warn_deprecated_use): Add an attribute argument. + Emit the message associated with __attribute__((deprecated)). + + * toplev.h (warn_deprecated_use): Updated. + + * doc/extend.texi: Document new optional parameter to + __attribute__((deprecated)) + +2009-05-08 Michael Eager <eager@eagercon.com> + + * config/rs6000/rs6000.md (*movdf_softfloat32): replace + !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT. + +2009-05-08 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/40062 + * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi): + Avoid exponential behavior. + +2009-05-08 Paolo Bonzini <bonzini@gnu.org> + + PR rtl-optimization/33928 + PR 26854 + * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween, + process_uses, build_single_def_use_links): New. + (update_df): Update use_def_ref. + (forward_propagate_into): Use get_def_for_use instead of use-def + chains. + (fwprop_init): Call build_single_def_use_links and let it initialize + dataflow. + (fwprop_done): Free use_def_ref. + (fwprop_addr): Eliminate duplicate call to df_set_flags. + * df-problems.c (df_rd_simulate_artificial_defs_at_top, + df_rd_simulate_one_insn): New. + (df_rd_bb_local_compute_process_def): Update head comment. + (df_chain_create_bb): Use the new RD simulation functions. + * df.h (df_rd_simulate_artificial_defs_at_top, + df_rd_simulate_one_insn): New. + * opts.c (decode_options): Enable fwprop at -O1. + * doc/invoke.texi (-fforward-propagate): Document this. + +2009-05-08 Joseph Myers <joseph@codesourcery.com> + + PR c/24581 + * c-typeck.c (build_binary_op): Handle arithmetic between one real + and one complex operand specially. + * tree-complex.c (some_nonzerop): Do not identify a real value as + zero if flag_signed_zeros. + +2009-05-08 Paolo Bonzini <bonzini@gnu.org> + + PR rtl-optimization/33928 + * loop-invariant.c (record_use): Fix && vs. || mishap. + +2009-05-08 Paolo Bonzini <bonzini@gnu.org> + + PR rtl-optimization/33928 + * loop-invariant.c (struct use): Add addr_use_p. + (struct def): Add n_addr_uses. + (struct invariant): Add cheap_address. + (create_new_invariant): Set cheap_address. + (record_use): Accept df_ref. Set addr_use_p and update n_addr_uses. + (record_uses): Pass df_ref to record_use. + (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses + used only as such. + +2009-05-08 Kaz Kojima <kkojima@gcc.gnu.org> + + * config/sh/sh.c: Do not include c-pragma.h. + +2009-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com> + + * config/spu/spu.c: Remove include of c-common.h. + +2009-05-07 Janis Johnson <janis187@us.ibm.com> + + PR c/39037 + * c-common.h (mark_valid_location_for_stdc_pragma, + valid_location_for_stdc_pragma_p, set_float_const_decimal64, + clear_float_const_decimal64, float_const_decimal64_p): New. + * c.opt (Wunsuffixed-float-constants): New. + * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for + unsuffixed float constant, handle new warning. + * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants. + * c-decl.c (c_scope): New flag float_const_decimal64. + (set_float_const_decimal64, clear_float_const_decimal64, + float_const_decimal64_p): New. + (push_scope): Set new flag. + * c-parser.c (c_parser_translation_unit): Mark when it's valid + to use STDC pragmas. + (c_parser_external_declaration): Ditto. + (c_parser_compound_statement_nostart): Ditto. + * c-pragma.c (valid_location_for_stdc_pragma, + mark_valid_location_for_stdc_pragma, + valid_location_for_stdc_pragma_p, handle_stdc_pragma, + handle_pragma_float_const_decimal64): New. + (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64. + * cp/semantics.c (valid_location_for_stdc_pragma_p, + set_float_const_decimal64, clear_float_const_decimal64, + float_const_decimal64_p): New dummy functions. + * doc/extend.texi (Decimal Float): Remove statement that the + pragma, and suffix for double constants, are not supported. + * doc/invoke.texi (Warning Options): List new option. + (-Wunsuffixed-float-constants): New. + +2009-05-08 Steven Bosscher <steven@gcc.gnu.org> + + * config/i386/i386.c: Do not include c-common.h. + +2009-05-07 Mark Heffernan <meheff@google.com> + + * doc/invoke.texi (Debugging Options): Document change of debugging + dump location. + * opts.c (decode_options): Make dump_base_name relative to + aux_base_name directory. + +2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com> + + * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added. + * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton. + +2009-05-07 Rafael Avila de Espindola <espindola@google.com> + + * Makefile.in (install-plugin): Simplify a bit. + +2009-05-07 Paolo Bonzini <bonzini@gnu.org> + + * Makefile.in (OBJS-common): Add regcprop.o. + (regcprop.o): New. + * timevar.def (TV_CPROP_REGISTERS): New. + * regrename.c (regrename_optimize): Return 0. + (rest_of_handle_regrename): Delete. + (pass_rename_registers): Point to regrename_optimize. + (struct value_data_entry, struct value_data, + kill_value_one_regno, kill_value_regno, kill_value, + set_value_regno, init_value_data, kill_clobbered_value, + kill_set_value, kill_autoinc_value, copy_value, + mode_change_ok, maybe_mode_change, find_oldest_value_reg, + replace_oldest_value_reg, replace_oldest_value_addr, + replace_oldest_value_mem, copyprop_hardreg_forward_1, + debug_value_data, validate_value_data): Move... + * regcprop.c: ... here. + (rest_of_handle_cprop): Delete. + (pass_cprop_hardreg): Point to copyprop_hardreg_forward. + +2009-05-07 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/40057 + * dojump.c (prefer_and_bit_test): Use immed_double_const instead of + GEN_INT for 1 << bitnum. + (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of + build_int_cst_type. + 2009-05-07 Uros Bizjak <ubizjak@gmail.com> * doc/md.texi (Standard Pattern Names For Generation) [sync_nand]: - Remove wrong description of "nand" functionality. + Remove wrong description of "nand" operation. 2009-05-06 Richard Guenther <rguenther@suse.de> Adam Nemet <anemet@caviumnetworks.com> @@ -217,7 +698,7 @@ 2009-05-04 Paolo Bonzini <bonzini@gnu.org> - * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation. + * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation. * gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete. * gcc/explow.c (memory_address): Use target hook. * gcc/targhooks.c (default_legitimize_address): New. diff --git a/gcc/ChangeLog.cond-optab b/gcc/ChangeLog.cond-optab index 7bd54387baa..49030f527f4 100644 --- a/gcc/ChangeLog.cond-optab +++ b/gcc/ChangeLog.cond-optab @@ -1,3 +1,7 @@ +2009-05-11 Paolo Bonzini <bonzini@gnu.org> + + * Merge trunk up to revision 147359. + 2009-04-28 Paolo Bonzini <bonzini@gnu.org> * Merge trunk up to revision 147237. diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 10430dd8eb8..88a3462552b 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20090507 +20090511 diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 556bfe37482..9a4d62b007a 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -3342,7 +3342,7 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \ $(srcdir)/tree-ssa-propagate.c \ $(srcdir)/tree-phinodes.c \ $(srcdir)/ipa-reference.c \ - $(srcdir)/tree-ssa-structalias.c $(srcdir)/tree-inline.c \ + $(srcdir)/tree-ssa-structalias.c \ $(srcdir)/tree-ssa-alias.h \ @all_gtfiles@ @@ -4017,6 +4017,7 @@ install-plugin: installdirs # other files are flattened to a single directory. $(mkinstalldirs) $(DESTDIR)$(plugin_includedir) headers=`echo $(PLUGIN_HEADERS) | tr ' ' '\n' | sort -u`; \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \ for file in $$headers; do \ if [ -f $$file ] ; then \ path=$$file; \ @@ -4025,8 +4026,7 @@ install-plugin: installdirs else continue; \ fi; \ case $$path in \ - "$(srcdir)"*/config/* | "$(srcdir)"/*.def ) \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \ + "$(srcdir)"/config/* | "$(srcdir)"/*.def ) \ base=`echo "$$path" | sed -e "s|$$srcdirstrip/||"`;; \ *) base=`basename $$path` ;; \ esac; \ diff --git a/gcc/basic-block.h b/gcc/basic-block.h index 3f7e872374c..41d9f9514cb 100644 --- a/gcc/basic-block.h +++ b/gcc/basic-block.h @@ -1,6 +1,6 @@ /* Define control and data flow tables, and regsets. Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GCC. @@ -356,6 +356,14 @@ enum dom_state DOM_OK /* Everything is ok. */ }; +/* What sort of profiling information we have. */ +enum profile_status +{ + PROFILE_ABSENT, + PROFILE_GUESSED, + PROFILE_READ +}; + /* A structure to group all the per-function control flow graph data. The x_* prefixing is necessary because otherwise references to the fields of this struct are interpreted as the defines for backward @@ -382,11 +390,7 @@ struct GTY(()) control_flow_graph { only used for the gimple CFG. */ VEC(basic_block,gc) *x_label_to_block_map; - enum profile_status { - PROFILE_ABSENT, - PROFILE_GUESSED, - PROFILE_READ - } x_profile_status; + enum profile_status x_profile_status; /* Whether the dominators and the postdominators are available. */ enum dom_state x_dom_computed[2]; diff --git a/gcc/c-common.c b/gcc/c-common.c index 9fa3b96aa61..df6673c000c 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -954,7 +954,7 @@ const struct attribute_spec c_common_attribute_table[] = to prevent its usage in source code. */ { "no vops", 0, 0, true, false, false, handle_novops_attribute }, - { "deprecated", 0, 0, false, false, false, + { "deprecated", 0, 1, false, false, false, handle_deprecated_attribute }, { "vector_size", 1, 1, false, true, false, handle_vector_size_attribute }, @@ -7179,13 +7179,21 @@ handle_novops_attribute (tree *node, tree ARG_UNUSED (name), static tree handle_deprecated_attribute (tree *node, tree name, - tree ARG_UNUSED (args), int flags, + tree args, int flags, bool *no_add_attrs) { tree type = NULL_TREE; int warn = 0; tree what = NULL_TREE; + if (!args) + *no_add_attrs = true; + else if (TREE_CODE (TREE_VALUE (args)) != STRING_CST) + { + error ("deprecated message is not a string"); + *no_add_attrs = true; + } + if (DECL_P (*node)) { tree decl = *node; diff --git a/gcc/c-common.h b/gcc/c-common.h index 14448800ce0..250a7ff74fa 100644 --- a/gcc/c-common.h +++ b/gcc/c-common.h @@ -809,6 +809,11 @@ extern void warn_logical_operator (location_t, enum tree_code, extern void check_main_parameter_types (tree decl); extern bool c_determine_visibility (tree); extern bool same_scalar_type_ignoring_signedness (tree, tree); +extern void mark_valid_location_for_stdc_pragma (bool); +extern bool valid_location_for_stdc_pragma_p (void); +extern void set_float_const_decimal64 (void); +extern void clear_float_const_decimal64 (void); +extern bool float_const_decimal64_p (void); #define c_sizeof(T) c_sizeof_or_alignof_type (T, true, 1) #define c_alignof(T) c_sizeof_or_alignof_type (T, false, 1) diff --git a/gcc/c-cppbuiltin.c b/gcc/c-cppbuiltin.c index 8b776b15dbc..921addbccf0 100644 --- a/gcc/c-cppbuiltin.c +++ b/gcc/c-cppbuiltin.c @@ -619,14 +619,11 @@ c_cpp_builtins (cpp_reader *pfile) TARGET_DEC_EVAL_METHOD); builtin_define_float_constants ("FLT", "F", "%s", float_type_node); - /* Cast the double precision constants when single precision constants are - specified. The correct result is computed by the compiler when using - macros that include a cast. This has the side-effect of making the value - unusable in const expressions. */ - if (flag_single_precision_constant) - builtin_define_float_constants ("DBL", "L", "((double)%s)", double_type_node); - else - builtin_define_float_constants ("DBL", "", "%s", double_type_node); + /* Cast the double precision constants. This is needed when single + precision constants are specified or when pragma FLOAT_CONST_DECIMAL64 + is used. The correct result is computed by the compiler when using + macros that include a cast. */ + builtin_define_float_constants ("DBL", "L", "((double)%s)", double_type_node); builtin_define_float_constants ("LDBL", "L", "%s", long_double_type_node); /* For decfloat.h. */ diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 85c4d6bf02d..a9929c1a85c 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -126,6 +126,15 @@ static GTY(()) struct stmt_tree_s c_stmt_tree; tree c_break_label; tree c_cont_label; +/* True if we are currently parsing the fields of a struct or + union. */ + +static bool in_struct; + +/* A list of types defined in the current struct or union. */ + +static VEC(tree,heap) *struct_types; + /* Linked list of TRANSLATION_UNIT_DECLS for the translation units included in this invocation. Note that the current translation unit is not included in this list. */ @@ -342,6 +351,9 @@ struct GTY((chain_next ("%h.outer"))) c_scope { /* True means make a BLOCK for this scope no matter what. */ BOOL_BITFIELD keep : 1; + + /* True means that an unsuffixed float constant is _Decimal64. */ + BOOL_BITFIELD float_const_decimal64 : 1; }; /* The scope currently in effect. */ @@ -674,6 +686,30 @@ keep_next_level (void) keep_next_level_flag = true; } +/* Set the flag for the FLOAT_CONST_DECIMAL64 pragma being ON. */ + +void +set_float_const_decimal64 (void) +{ + current_scope->float_const_decimal64 = true; +} + +/* Clear the flag for the FLOAT_CONST_DECIMAL64 pragma. */ + +void +clear_float_const_decimal64 (void) +{ + current_scope->float_const_decimal64 = false; +} + +/* Return nonzero if an unsuffixed float constant is _Decimal64. */ + +bool +float_const_decimal64_p (void) +{ + return current_scope->float_const_decimal64; +} + /* Identify this scope as currently being filled with parameters. */ void @@ -705,6 +741,13 @@ push_scope (void) keep_next_level_flag = false; next_is_function_body = false; + + /* The FLOAT_CONST_DECIMAL64 pragma applies to nested scopes. */ + if (current_scope->outer) + current_scope->float_const_decimal64 + = current_scope->outer->float_const_decimal64; + else + current_scope->float_const_decimal64 = false; } else { @@ -717,6 +760,12 @@ push_scope (void) else scope = GGC_CNEW (struct c_scope); + /* The FLOAT_CONST_DECIMAL64 pragma applies to nested scopes. */ + if (current_scope) + scope->float_const_decimal64 = current_scope->float_const_decimal64; + else + scope->float_const_decimal64 = false; + scope->keep = keep_next_level_flag; scope->outer = current_scope; scope->depth = current_scope ? (current_scope->depth + 1) : 0; @@ -1046,13 +1095,12 @@ pop_file_scope (void) In that case, the TYPE_SIZE will be zero. */ static void -pushtag (tree name, tree type) +pushtag (tree name, tree type, location_t loc) { /* Record the identifier as the type's name if it has none. */ if (name && !TYPE_NAME (type)) TYPE_NAME (type) = name; - bind (name, type, current_scope, /*invisible=*/false, /*nested=*/false, - UNKNOWN_LOCATION); + bind (name, type, current_scope, /*invisible=*/false, /*nested=*/false, loc); /* Create a fake NULL-named TYPE_DECL node whose TREE_TYPE will be the tagged type we just added to the current scope. This fake @@ -2685,10 +2733,13 @@ define_label (location_t location, tree name) If THISLEVEL_ONLY is nonzero, searches only the current_scope. CODE says which kind of type the caller wants; it is RECORD_TYPE or UNION_TYPE or ENUMERAL_TYPE. + If PLOC is not NULL and this returns non-null, it sets *PLOC to the + location where the tag was defined. If the wrong kind of type is found, an error is reported. */ static tree -lookup_tag (enum tree_code code, tree name, int thislevel_only) +lookup_tag (enum tree_code code, tree name, int thislevel_only, + location_t *ploc) { struct c_binding *b = I_TAG_BINDING (name); int thislevel = 0; @@ -2725,6 +2776,10 @@ lookup_tag (enum tree_code code, tree name, int thislevel_only) if (thislevel) pending_xref_error (); } + + if (ploc != NULL) + *ploc = b->locus; + return b->decl; } @@ -2997,12 +3052,12 @@ shadow_tag_warned (const struct c_declspecs *declspecs, int warned) else { pending_invalid_xref = 0; - t = lookup_tag (code, name, 1); + t = lookup_tag (code, name, 1, NULL); if (t == 0) { t = make_node (code); - pushtag (name, t); + pushtag (name, t, input_location); } } } @@ -3857,6 +3912,17 @@ build_compound_literal (tree type, tree init, bool non_const) return complit; } + +/* Check the type of a compound literal. Here we just check that it + is valid for C++. */ + +void +check_compound_literal_type (struct c_type_name *type_name, location_t loc) +{ + if (warn_cxx_compat && type_name->specs->tag_defined_p) + warning_at (loc, OPT_Wc___compat, + "defining a type in a compound literal is invalid in C++"); +} /* Determine whether TYPE is a structure with a flexible array member, or a union containing such a structure (possibly recursively). */ @@ -4180,7 +4246,7 @@ grokdeclarator (const struct c_declarator *declarator, decl_context = PARM; if (declspecs->deprecated_p && deprecated_state != DEPRECATED_SUPPRESS) - warn_deprecated_use (declspecs->type); + warn_deprecated_use (declspecs->type, declspecs->decl_attr); if ((decl_context == NORMAL || decl_context == FIELD) && current_scope == file_scope @@ -5515,10 +5581,11 @@ get_parm_info (bool ellipsis) Return a c_typespec structure for the type specifier. */ struct c_typespec -parser_xref_tag (enum tree_code code, tree name) +parser_xref_tag (enum tree_code code, tree name, location_t loc) { struct c_typespec ret; tree ref; + location_t refloc; ret.expr = NULL_TREE; ret.expr_const_operands = true; @@ -5526,7 +5593,7 @@ parser_xref_tag (enum tree_code code, tree name) /* If a cross reference is requested, look up the type already defined for this tag and return it. */ - ref = lookup_tag (code, name, 0); + ref = lookup_tag (code, name, 0, &refloc); /* If this is the right type of tag, return what we found. (This reference will be shadowed by shadow_tag later if appropriate.) If this is the wrong type of tag, do not return it. If it was the @@ -5541,6 +5608,35 @@ parser_xref_tag (enum tree_code code, tree name) ret.kind = (ref ? ctsk_tagref : ctsk_tagfirstref); if (ref && TREE_CODE (ref) == code) { + if (C_TYPE_DEFINED_IN_STRUCT (ref) + && loc != UNKNOWN_LOCATION + && warn_cxx_compat) + { + switch (code) + { + case ENUMERAL_TYPE: + warning_at (loc, OPT_Wc___compat, + ("enum type defined in struct or union " + "is not visible in C++")); + inform (refloc, "enum type defined here"); + break; + case RECORD_TYPE: + warning_at (loc, OPT_Wc___compat, + ("struct defined in struct or union " + "is not visible in C++")); + inform (refloc, "struct defined here"); + break; + case UNION_TYPE: + warning_at (loc, OPT_Wc___compat, + ("union defined in struct or union " + "is not visible in C++")); + inform (refloc, "union defined here"); + break; + default: + gcc_unreachable(); + } + } + ret.spec = ref; return ret; } @@ -5564,7 +5660,7 @@ parser_xref_tag (enum tree_code code, tree name) TYPE_MAX_VALUE (ref) = TYPE_MAX_VALUE (unsigned_type_node); } - pushtag (name, ref); + pushtag (name, ref, loc); ret.spec = ref; return ret; @@ -5577,40 +5673,53 @@ parser_xref_tag (enum tree_code code, tree name) tree xref_tag (enum tree_code code, tree name) { - return parser_xref_tag (code, name).spec; + return parser_xref_tag (code, name, UNKNOWN_LOCATION).spec; } /* Make sure that the tag NAME is defined *in the current scope* at least as a forward reference. - CODE says which kind of tag NAME ought to be. */ + CODE says which kind of tag NAME ought to be. + + This stores the current value of the file static IN_STRUCT in + *ENCLOSING_IN_STRUCT, and sets IN_STRUCT to true. Similarly, this + sets STRUCT_TYPES in *ENCLOSING_STRUCT_TYPES, and sets STRUCT_TYPES + to an empty vector. The old values are restored in + finish_struct. */ tree -start_struct (enum tree_code code, tree name) +start_struct (enum tree_code code, tree name, bool *enclosing_in_struct, + VEC(tree,heap) **enclosing_struct_types, location_t loc) { /* If there is already a tag defined at this scope (as a forward reference), just return it. */ - tree ref = 0; + tree ref = NULL_TREE; + location_t refloc = UNKNOWN_LOCATION; - if (name != 0) - ref = lookup_tag (code, name, 1); + if (name != NULL_TREE) + ref = lookup_tag (code, name, 1, &refloc); if (ref && TREE_CODE (ref) == code) { if (TYPE_SIZE (ref)) { if (code == UNION_TYPE) - error ("redefinition of %<union %E%>", name); + error_at (loc, "redefinition of %<union %E%>", name); else - error ("redefinition of %<struct %E%>", name); + error_at (loc, "redefinition of %<struct %E%>", name); + if (refloc != UNKNOWN_LOCATION) + inform (refloc, "originally defined here"); /* Don't create structures using a name already in use. */ ref = NULL_TREE; } else if (C_TYPE_BEING_DEFINED (ref)) { if (code == UNION_TYPE) - error ("nested redefinition of %<union %E%>", name); + error_at (loc, "nested redefinition of %<union %E%>", name); else - error ("nested redefinition of %<struct %E%>", name); + error_at (loc, "nested redefinition of %<struct %E%>", name); + /* Don't bother to report "originally defined here" for a + nested redefinition; the original definition should be + obvious. */ /* Don't create structures that contain themselves. */ ref = NULL_TREE; } @@ -5621,11 +5730,28 @@ start_struct (enum tree_code code, tree name) if (ref == NULL_TREE || TREE_CODE (ref) != code) { ref = make_node (code); - pushtag (name, ref); + pushtag (name, ref, loc); } C_TYPE_BEING_DEFINED (ref) = 1; TYPE_PACKED (ref) = flag_pack_struct; + + *enclosing_in_struct = in_struct; + *enclosing_struct_types = struct_types; + in_struct = true; + struct_types = VEC_alloc(tree, heap, 0); + + /* FIXME: This will issue a warning for a use of a type defined + within a statement expr used within sizeof, et. al. This is not + terribly serious as C++ doesn't permit statement exprs within + sizeof anyhow. */ + if (warn_cxx_compat && (in_sizeof || in_typeof || in_alignof)) + warning_at (loc, OPT_Wc___compat, + "defining type in %qs expression is invalid in C++", + (in_sizeof + ? "sizeof" + : (in_typeof ? "typeof" : "alignof"))); + return ref; } @@ -5763,14 +5889,22 @@ detect_field_duplicates (tree fieldlist) /* Fill in the fields of a RECORD_TYPE or UNION_TYPE node, T. FIELDLIST is a chain of FIELD_DECL nodes for the fields. - ATTRIBUTES are attributes to be applied to the structure. */ + ATTRIBUTES are attributes to be applied to the structure. + + ENCLOSING_IN_STRUCT is the value of IN_STRUCT, and + ENCLOSING_STRUCT_TYPES is the value of STRUCT_TYPES, when the + struct was started. This sets the C_TYPE_DEFINED_IN_STRUCT flag + for any type defined in the current struct. */ tree -finish_struct (tree t, tree fieldlist, tree attributes) +finish_struct (tree t, tree fieldlist, tree attributes, + bool enclosing_in_struct, + VEC(tree,heap) *enclosing_struct_types) { tree x; bool toplevel = file_scope == current_scope; int saw_named_field; + unsigned int ix; /* If this type was previously laid out as a forward reference, make sure we lay it out again. */ @@ -6023,6 +6157,24 @@ finish_struct (tree t, tree fieldlist, tree attributes) if (cur_stmt_list && variably_modified_type_p (t, NULL_TREE)) add_stmt (build_stmt (DECL_EXPR, build_decl (TYPE_DECL, NULL, t))); + /* Set the C_TYPE_DEFINED_IN_STRUCT flag for each type defined in + the current struct. We do this now at the end of the struct + because the flag is used to issue visibility warnings when using + -Wc++-compat, and we only want to issue those warnings if the + type is referenced outside of the struct declaration. */ + for (ix = 0; VEC_iterate (tree, struct_types, ix, x); ++ix) + C_TYPE_DEFINED_IN_STRUCT (x) = 1; + + VEC_free (tree, heap, struct_types); + + in_struct = enclosing_in_struct; + struct_types = enclosing_struct_types; + + /* If this struct is defined inside a struct, add it to + STRUCT_TYPES. */ + if (in_struct && !in_sizeof && !in_typeof && !in_alignof) + VEC_safe_push (tree, heap, struct_types, t); + return t; } @@ -6043,32 +6195,35 @@ layout_array_type (tree t) may be used to declare the individual values as they are read. */ tree -start_enum (struct c_enum_contents *the_enum, tree name) +start_enum (struct c_enum_contents *the_enum, tree name, location_t loc) { - tree enumtype = 0; + tree enumtype = NULL_TREE; + location_t enumloc = UNKNOWN_LOCATION; /* If this is the real definition for a previous forward reference, fill in the contents in the same object that used to be the forward reference. */ - if (name != 0) - enumtype = lookup_tag (ENUMERAL_TYPE, name, 1); + if (name != NULL_TREE) + enumtype = lookup_tag (ENUMERAL_TYPE, name, 1, &enumloc); if (enumtype == 0 || TREE_CODE (enumtype) != ENUMERAL_TYPE) { enumtype = make_node (ENUMERAL_TYPE); - pushtag (name, enumtype); + pushtag (name, enumtype, loc); } if (C_TYPE_BEING_DEFINED (enumtype)) - error ("nested redefinition of %<enum %E%>", name); + error_at (loc, "nested redefinition of %<enum %E%>", name); C_TYPE_BEING_DEFINED (enumtype) = 1; if (TYPE_VALUES (enumtype) != 0) { /* This enum is a named one that has been declared already. */ - error ("redeclaration of %<enum %E%>", name); + error_at (loc, "redeclaration of %<enum %E%>", name); + if (enumloc != UNKNOWN_LOCATION) + inform (enumloc, "originally defined here"); /* Completely replace its old definition. The old enumerators remain defined, however. */ @@ -6081,6 +6236,16 @@ start_enum (struct c_enum_contents *the_enum, tree name) if (flag_short_enums) TYPE_PACKED (enumtype) = 1; + /* FIXME: This will issue a warning for a use of a type defined + within sizeof in a statement expr. This is not terribly serious + as C++ doesn't permit statement exprs within sizeof anyhow. */ + if (warn_cxx_compat && (in_sizeof || in_typeof || in_alignof)) + warning_at (loc, OPT_Wc___compat, + "defining type in %qs expression is invalid in C++", + (in_sizeof + ? "sizeof" + : (in_typeof ? "typeof" : "alignof"))); + return enumtype; } @@ -6220,6 +6385,11 @@ finish_enum (tree enumtype, tree values, tree attributes) /* Finish debugging output for this type. */ rest_of_type_compilation (enumtype, toplevel); + /* If this enum is defined inside a struct, add it to + STRUCT_TYPES. */ + if (in_struct && !in_sizeof && !in_typeof && !in_alignof) + VEC_safe_push (tree, heap, struct_types, enumtype); + return enumtype; } diff --git a/gcc/c-lex.c b/gcc/c-lex.c index df6354843bf..66df4c40f7b 100644 --- a/gcc/c-lex.c +++ b/gcc/c-lex.c @@ -313,7 +313,7 @@ c_lex_with_flags (tree *value, location_t *loc, unsigned char *cpp_flags, goto retry; case CPP_NAME: - *value = HT_IDENT_TO_GCC_IDENT (HT_NODE (tok->val.node)); + *value = HT_IDENT_TO_GCC_IDENT (HT_NODE (tok->val.node.node)); break; case CPP_NUMBER: @@ -369,7 +369,7 @@ c_lex_with_flags (tree *value, location_t *loc, unsigned char *cpp_flags, break; case CPP_NAME: - *value = HT_IDENT_TO_GCC_IDENT (HT_NODE (tok->val.node)); + *value = HT_IDENT_TO_GCC_IDENT (HT_NODE (tok->val.node.node)); if (objc_is_reserved_word (*value)) { type = CPP_AT_NAME; @@ -617,11 +617,21 @@ interpret_float (const cpp_token *token, unsigned int flags) char *copy; size_t copylen; - /* Default (no suffix) is double. */ + /* Default (no suffix) depends on whether the FLOAT_CONST_DECIMAL64 + pragma has been used and is either double or _Decimal64. Types + that are not allowed with decimal float default to double. */ if (flags & CPP_N_DEFAULT) { flags ^= CPP_N_DEFAULT; flags |= CPP_N_MEDIUM; + + if (((flags & CPP_N_HEX) == 0) && ((flags & CPP_N_IMAGINARY) == 0)) + { + warning (OPT_Wunsuffixed_float_constants, + "unsuffixed float constant"); + if (float_const_decimal64_p ()) + flags |= CPP_N_DFLOAT; + } } /* Decode _Fract and _Accum. */ diff --git a/gcc/c-parser.c b/gcc/c-parser.c index 6c839e9104c..beda817c202 100644 --- a/gcc/c-parser.c +++ b/gcc/c-parser.c @@ -820,12 +820,14 @@ disable_extension_diagnostics (void) | (warn_pointer_arith << 1) | (warn_traditional << 2) | (flag_iso << 3) - | (warn_long_long << 4)); + | (warn_long_long << 4) + | (warn_cxx_compat << 5)); cpp_opts->pedantic = pedantic = 0; warn_pointer_arith = 0; cpp_opts->warn_traditional = warn_traditional = 0; flag_iso = 0; cpp_opts->warn_long_long = warn_long_long = 0; + warn_cxx_compat = 0; return ret; } @@ -840,6 +842,7 @@ restore_extension_diagnostics (int flags) cpp_opts->warn_traditional = warn_traditional = (flags >> 2) & 1; flag_iso = (flags >> 3) & 1; cpp_opts->warn_long_long = warn_long_long = (flags >> 4) & 1; + warn_cxx_compat = (flags >> 5) & 1; } /* Possibly kinds of declarator to parse. */ @@ -910,7 +913,8 @@ static struct c_expr c_parser_sizeof_expression (c_parser *); static struct c_expr c_parser_alignof_expression (c_parser *); static struct c_expr c_parser_postfix_expression (c_parser *); static struct c_expr c_parser_postfix_expression_after_paren_type (c_parser *, - struct c_type_name *); + struct c_type_name *, + location_t); static struct c_expr c_parser_postfix_expression_after_primary (c_parser *, struct c_expr); static struct c_expr c_parser_expression (c_parser *); @@ -976,6 +980,7 @@ c_parser_translation_unit (c_parser *parser) else { void *obstack_position = obstack_alloc (&parser_obstack, 0); + mark_valid_location_for_stdc_pragma (false); do { ggc_collect (); @@ -1060,7 +1065,9 @@ c_parser_external_declaration (c_parser *parser) c_parser_consume_token (parser); break; case CPP_PRAGMA: + mark_valid_location_for_stdc_pragma (true); c_parser_pragma (parser, pragma_external); + mark_valid_location_for_stdc_pragma (false); break; case CPP_PLUS: case CPP_MINUS: @@ -1617,8 +1624,10 @@ c_parser_enum_specifier (c_parser *parser) struct c_typespec ret; tree attrs; tree ident = NULL_TREE; + location_t enum_loc; location_t ident_loc = UNKNOWN_LOCATION; /* Quiet warning. */ gcc_assert (c_parser_next_token_is_keyword (parser, RID_ENUM)); + enum_loc = c_parser_peek_token (parser)->location; c_parser_consume_token (parser); attrs = c_parser_attributes (parser); /* Set the location in case we create a decl now. */ @@ -1627,13 +1636,14 @@ c_parser_enum_specifier (c_parser *parser) { ident = c_parser_peek_token (parser)->value; ident_loc = c_parser_peek_token (parser)->location; + enum_loc = ident_loc; c_parser_consume_token (parser); } if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) { /* Parse an enum definition. */ struct c_enum_contents the_enum; - tree type = start_enum (&the_enum, ident); + tree type = start_enum (&the_enum, ident, enum_loc); tree postfix_attrs; /* We chain the enumerators in reverse order, then put them in forward order at the end. */ @@ -1712,7 +1722,7 @@ c_parser_enum_specifier (c_parser *parser) ret.expr_const_operands = true; return ret; } - ret = parser_xref_tag (ENUMERAL_TYPE, ident); + ret = parser_xref_tag (ENUMERAL_TYPE, ident, ident_loc); /* In ISO C, enumerated types can be referred to only if already defined. */ if (pedantic && !COMPLETE_TYPE_P (ret.spec)) @@ -1769,6 +1779,8 @@ c_parser_struct_or_union_specifier (c_parser *parser) struct c_typespec ret; tree attrs; tree ident = NULL_TREE; + location_t struct_loc; + location_t ident_loc = UNKNOWN_LOCATION; enum tree_code code; switch (c_parser_peek_token (parser)->keyword) { @@ -1781,6 +1793,7 @@ c_parser_struct_or_union_specifier (c_parser *parser) default: gcc_unreachable (); } + struct_loc = c_parser_peek_token (parser)->location; c_parser_consume_token (parser); attrs = c_parser_attributes (parser); /* Set the location in case we create a decl now. */ @@ -1788,13 +1801,18 @@ c_parser_struct_or_union_specifier (c_parser *parser) if (c_parser_next_token_is (parser, CPP_NAME)) { ident = c_parser_peek_token (parser)->value; + ident_loc = c_parser_peek_token (parser)->location; + struct_loc = ident_loc; c_parser_consume_token (parser); } if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) { /* Parse a struct or union definition. Start the scope of the tag before parsing components. */ - tree type = start_struct (code, ident); + bool in_struct; + VEC(tree,heap) *struct_types; + tree type = start_struct (code, ident, &in_struct, &struct_types, + struct_loc); tree postfix_attrs; /* We chain the components in reverse order, then put them in forward order at the end. Each struct-declaration may @@ -1884,7 +1902,8 @@ c_parser_struct_or_union_specifier (c_parser *parser) } postfix_attrs = c_parser_attributes (parser); ret.spec = finish_struct (type, nreverse (contents), - chainon (attrs, postfix_attrs)); + chainon (attrs, postfix_attrs), + in_struct, struct_types); ret.kind = ctsk_tagdef; ret.expr = NULL_TREE; ret.expr_const_operands = true; @@ -1899,7 +1918,7 @@ c_parser_struct_or_union_specifier (c_parser *parser) ret.expr_const_operands = true; return ret; } - ret = parser_xref_tag (code, ident); + ret = parser_xref_tag (code, ident, ident_loc); return ret; } @@ -3350,17 +3369,20 @@ c_parser_compound_statement_nostart (c_parser *parser) { bool last_stmt = false; bool last_label = false; + bool save_valid_for_pragma = valid_location_for_stdc_pragma_p (); location_t label_loc = UNKNOWN_LOCATION; /* Quiet warning. */ if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) { c_parser_consume_token (parser); return; } + mark_valid_location_for_stdc_pragma (true); if (c_parser_next_token_is_keyword (parser, RID_LABEL)) { location_t err_loc = c_parser_peek_token (parser)->location; /* Read zero or more forward-declarations for labels that nested functions can jump to. */ + mark_valid_location_for_stdc_pragma (false); while (c_parser_next_token_is_keyword (parser, RID_LABEL)) { c_parser_consume_token (parser); @@ -3391,6 +3413,7 @@ c_parser_compound_statement_nostart (c_parser *parser) /* We must now have at least one statement, label or declaration. */ if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE)) { + mark_valid_location_for_stdc_pragma (save_valid_for_pragma); c_parser_error (parser, "expected declaration or statement"); c_parser_consume_token (parser); return; @@ -3409,12 +3432,14 @@ c_parser_compound_statement_nostart (c_parser *parser) label_loc = c_parser_peek_token (parser)->location; last_label = true; last_stmt = false; + mark_valid_location_for_stdc_pragma (false); c_parser_label (parser); } else if (!last_label && c_parser_next_token_starts_declspecs (parser)) { last_label = false; + mark_valid_location_for_stdc_pragma (false); c_parser_declaration_or_fndef (parser, true, true, true, true); if (last_stmt) pedwarn_c90 (loc, @@ -3441,6 +3466,7 @@ c_parser_compound_statement_nostart (c_parser *parser) ext = disable_extension_diagnostics (); c_parser_consume_token (parser); last_label = false; + mark_valid_location_for_stdc_pragma (false); c_parser_declaration_or_fndef (parser, true, true, true, true); /* Following the old parser, __extension__ does not disable this diagnostic. */ @@ -3467,6 +3493,7 @@ c_parser_compound_statement_nostart (c_parser *parser) } else if (c_parser_next_token_is (parser, CPP_EOF)) { + mark_valid_location_for_stdc_pragma (save_valid_for_pragma); c_parser_error (parser, "expected declaration or statement"); return; } @@ -3474,6 +3501,7 @@ c_parser_compound_statement_nostart (c_parser *parser) { if (parser->in_if_block) { + mark_valid_location_for_stdc_pragma (save_valid_for_pragma); error_at (loc, """expected %<}%> before %<else%>"); return; } @@ -3489,6 +3517,7 @@ c_parser_compound_statement_nostart (c_parser *parser) statement: last_label = false; last_stmt = true; + mark_valid_location_for_stdc_pragma (false); c_parser_statement_after_labels (parser); } @@ -3497,6 +3526,8 @@ c_parser_compound_statement_nostart (c_parser *parser) if (last_label) error_at (label_loc, "label at end of compound statement"); c_parser_consume_token (parser); + /* Restore the value we started with. */ + mark_valid_location_for_stdc_pragma (save_valid_for_pragma); } /* Parse a label (C90 6.6.1, C99 6.8.1). @@ -4828,10 +4859,12 @@ c_parser_cast_expression (c_parser *parser, struct c_expr *after) if (c_parser_next_token_is (parser, CPP_OPEN_PAREN) && c_token_starts_typename (c_parser_peek_2nd_token (parser))) { + location_t loc; struct c_type_name *type_name; struct c_expr ret; struct c_expr expr; c_parser_consume_token (parser); + loc = c_parser_peek_token (parser)->location; type_name = c_parser_type_name (parser); c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); if (type_name == NULL) @@ -4846,11 +4879,11 @@ c_parser_cast_expression (c_parser *parser, struct c_expr *after) used_types_insert (type_name->specs->type); if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) - return c_parser_postfix_expression_after_paren_type (parser, - type_name); + return c_parser_postfix_expression_after_paren_type (parser, type_name, + loc); expr = c_parser_cast_expression (parser, NULL); expr = default_function_array_conversion (expr); - ret.value = c_cast_expr (type_name, expr.value); + ret.value = c_cast_expr (type_name, expr.value, loc); ret.original_code = ERROR_MARK; ret.original_type = NULL; return ret; @@ -5021,7 +5054,8 @@ c_parser_sizeof_expression (c_parser *parser) if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) { expr = c_parser_postfix_expression_after_paren_type (parser, - type_name); + type_name, + expr_loc); goto sizeof_expr; } /* sizeof ( type-name ). */ @@ -5058,9 +5092,11 @@ c_parser_alignof_expression (c_parser *parser) { /* Either __alignof__ ( type-name ) or __alignof__ unary-expression starting with a compound literal. */ + location_t loc; struct c_type_name *type_name; struct c_expr ret; c_parser_consume_token (parser); + loc = c_parser_peek_token (parser)->location; type_name = c_parser_type_name (parser); c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); if (type_name == NULL) @@ -5076,7 +5112,8 @@ c_parser_alignof_expression (c_parser *parser) if (c_parser_next_token_is (parser, CPP_OPEN_BRACE)) { expr = c_parser_postfix_expression_after_paren_type (parser, - type_name); + type_name, + loc); goto alignof_expr; } /* alignof ( type-name ). */ @@ -5247,8 +5284,10 @@ c_parser_postfix_expression (c_parser *parser) than going directly to c_parser_postfix_expression_after_paren_type from elsewhere? */ + location_t loc; struct c_type_name *type_name; c_parser_consume_token (parser); + loc = c_parser_peek_token (parser)->location; type_name = c_parser_type_name (parser); c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>"); @@ -5258,7 +5297,8 @@ c_parser_postfix_expression (c_parser *parser) } else expr = c_parser_postfix_expression_after_paren_type (parser, - type_name); + type_name, + loc); } else { @@ -5576,11 +5616,14 @@ c_parser_postfix_expression (c_parser *parser) possible to tell until after the type name whether a cast expression has a cast or a compound literal, or whether the operand of sizeof is a parenthesized type name or starts with a compound - literal. */ + literal. TYPE_LOC is the location where TYPE_NAME starts--the + location of the first token after the parentheses around the type + name. */ static struct c_expr c_parser_postfix_expression_after_paren_type (c_parser *parser, - struct c_type_name *type_name) + struct c_type_name *type_name, + location_t type_loc) { tree type; struct c_expr init; @@ -5589,12 +5632,13 @@ c_parser_postfix_expression_after_paren_type (c_parser *parser, location_t start_loc; tree type_expr = NULL_TREE; bool type_expr_const = true; + check_compound_literal_type (type_name, type_loc); start_init (NULL_TREE, NULL, 0); type = groktypename (type_name, &type_expr, &type_expr_const); start_loc = c_parser_peek_token (parser)->location; if (type != error_mark_node && C_TYPE_VARIABLE_SIZE (type)) { - error_at (start_loc, "compound literal has variable size"); + error_at (type_loc, "compound literal has variable size"); type = error_mark_node; } init = c_parser_braced_init (parser, type, false); diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c index 64a224f4a28..bd71d1d79e8 100644 --- a/gcc/c-pragma.c +++ b/gcc/c-pragma.c @@ -1162,6 +1162,116 @@ handle_pragma_message (cpp_reader *ARG_UNUSED(dummy)) inform (input_location, "#pragma message: %s", TREE_STRING_POINTER (message)); } +/* Mark whether the current location is valid for a STDC pragma. */ + +static bool valid_location_for_stdc_pragma; + +void +mark_valid_location_for_stdc_pragma (bool flag) +{ + valid_location_for_stdc_pragma = flag; +} + +/* Return true if the current location is valid for a STDC pragma. */ + +bool +valid_location_for_stdc_pragma_p (void) +{ + return valid_location_for_stdc_pragma; +} + +enum pragma_switch_t { ON, OFF, DEFAULT, BAD }; + +/* A STDC pragma must appear outside of external declarations or + preceding all explicit declarations and statements inside a compound + statement; its behavior is undefined if used in any other context. + It takes a switch of ON, OFF, or DEFAULT. */ + +static enum pragma_switch_t +handle_stdc_pragma (const char *pname) +{ + const char *arg; + tree t; + enum pragma_switch_t ret; + + if (!valid_location_for_stdc_pragma_p ()) + { + warning (OPT_Wpragmas, "invalid location for %<pragma %s%>, ignored", + pname); + return BAD; + } + + if (pragma_lex (&t) != CPP_NAME) + { + warning (OPT_Wpragmas, "malformed %<#pragma %s%>, ignored", pname); + return BAD; + } + + arg = IDENTIFIER_POINTER (t); + + if (!strcmp (arg, "ON")) + ret = ON; + else if (!strcmp (arg, "OFF")) + ret = OFF; + else if (!strcmp (arg, "DEFAULT")) + ret = DEFAULT; + else + { + warning (OPT_Wpragmas, "malformed %<#pragma %s%>, ignored", pname); + return BAD; + } + + if (pragma_lex (&t) != CPP_EOF) + { + warning (OPT_Wpragmas, "junk at end of %<#pragma %s%>", pname); + return BAD; + } + + return ret; +} + +/* #pragma STDC FLOAT_CONST_DECIMAL64 ON + #pragma STDC FLOAT_CONST_DECIMAL64 OFF + #pragma STDC FLOAT_CONST_DECIMAL64 DEFAULT */ + +static void +handle_pragma_float_const_decimal64 (cpp_reader *ARG_UNUSED (dummy)) +{ + if (c_dialect_cxx ()) + { + if (warn_unknown_pragmas > in_system_header) + warning (OPT_Wunknown_pragmas, + "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported" + " for C++"); + return; + } + + if (!targetm.decimal_float_supported_p ()) + { + if (warn_unknown_pragmas > in_system_header) + warning (OPT_Wunknown_pragmas, + "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported" + " on this target"); + return; + } + + pedwarn (input_location, OPT_pedantic, + "ISO C does not support %<#pragma STDC FLOAT_CONST_DECIMAL64%>"); + + switch (handle_stdc_pragma ("STDC FLOAT_CONST_DECIMAL64")) + { + case ON: + set_float_const_decimal64 (); + break; + case OFF: + case DEFAULT: + clear_float_const_decimal64 (); + break; + case BAD: + break; + } +} + /* A vector of registered pragma callbacks. */ DEF_VEC_O (pragma_handler); @@ -1330,6 +1440,9 @@ init_pragma (void) c_register_pragma ("GCC", "pop_options", handle_pragma_pop_options); c_register_pragma ("GCC", "reset_options", handle_pragma_reset_options); + c_register_pragma ("STDC", "FLOAT_CONST_DECIMAL64", + handle_pragma_float_const_decimal64); + c_register_pragma_with_expansion (0, "redefine_extname", handle_pragma_redefine_extname); c_register_pragma (0, "extern_prefix", handle_pragma_extern_prefix); diff --git a/gcc/c-pretty-print.c b/gcc/c-pretty-print.c index efd15ac9b26..f9694bfc080 100644 --- a/gcc/c-pretty-print.c +++ b/gcc/c-pretty-print.c @@ -31,6 +31,10 @@ along with GCC; see the file COPYING3. If not see #include "tree-iterator.h" #include "diagnostic.h" +/* Translate if being used for diagnostics, but not for dump files or + __PRETTY_FUNCTION. */ +#define M_(msgid) (pp_translate_identifiers (pp) ? _(msgid) : (msgid)) + /* The pretty-printer code is primarily designed to closely follow (GNU) C and C++ grammars. That is to be contrasted with spaghetti codes we used to have in the past. Following a structured @@ -307,7 +311,7 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t) switch (code) { case ERROR_MARK: - pp_c_ws_string (pp, _("<type-error>")); + pp_c_ws_string (pp, M_("<type-error>")); break; case IDENTIFIER_NODE: @@ -346,14 +350,14 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t) { case INTEGER_TYPE: pp_string (pp, (TYPE_UNSIGNED (t) - ? _("<unnamed-unsigned:") - : _("<unnamed-signed:"))); + ? M_("<unnamed-unsigned:") + : M_("<unnamed-signed:"))); break; case REAL_TYPE: - pp_string (pp, _("<unnamed-float:")); + pp_string (pp, M_("<unnamed-float:")); break; case FIXED_POINT_TYPE: - pp_string (pp, _("<unnamed-fixed:")); + pp_string (pp, M_("<unnamed-fixed:")); break; default: gcc_unreachable (); @@ -368,7 +372,7 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t) if (DECL_NAME (t)) pp_id_expression (pp, t); else - pp_c_ws_string (pp, _("<typedef-error>")); + pp_c_ws_string (pp, M_("<typedef-error>")); break; case UNION_TYPE: @@ -381,12 +385,12 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t) else if (code == ENUMERAL_TYPE) pp_c_ws_string (pp, "enum"); else - pp_c_ws_string (pp, _("<tag-error>")); + pp_c_ws_string (pp, M_("<tag-error>")); if (TYPE_NAME (t)) pp_id_expression (pp, TYPE_NAME (t)); else - pp_c_ws_string (pp, _("<anonymous>")); + pp_c_ws_string (pp, M_("<anonymous>")); break; default: @@ -1119,11 +1123,11 @@ pp_c_primary_expression (c_pretty_printer *pp, tree e) break; case ERROR_MARK: - pp_c_ws_string (pp, _("<erroneous-expression>")); + pp_c_ws_string (pp, M_("<erroneous-expression>")); break; case RESULT_DECL: - pp_c_ws_string (pp, _("<return-value>")); + pp_c_ws_string (pp, M_("<return-value>")); break; case INTEGER_CST: diff --git a/gcc/c-tree.h b/gcc/c-tree.h index 0bfcdfe387a..6062d59982d 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -73,6 +73,10 @@ struct GTY(()) lang_type { #define C_TYPE_VARIABLE_SIZE(TYPE) TYPE_LANG_FLAG_1 (TYPE) #define C_DECL_VARIABLE_SIZE(TYPE) DECL_LANG_FLAG_0 (TYPE) +/* Record whether a type is defined inside a struct or union type. + This is used for -Wc++-compat. */ +#define C_TYPE_DEFINED_IN_STRUCT(TYPE) TYPE_LANG_FLAG_2 (TYPE) + /* Record whether a typedef for type `int' was actually `signed int'. */ #define C_TYPEDEF_EXPLICITLY_SIGNED(EXP) DECL_LANG_FLAG_1 (EXP) @@ -514,7 +518,7 @@ extern void c_maybe_initialize_eh (void); extern void finish_decl (tree, tree, tree, tree); extern tree finish_enum (tree, tree, tree); extern void finish_function (void); -extern tree finish_struct (tree, tree, tree); +extern tree finish_struct (tree, tree, tree, bool, VEC(tree,heap) *); extern struct c_arg_info *get_parm_info (bool); extern tree grokfield (location_t, struct c_declarator *, struct c_declspecs *, tree, tree *); @@ -532,15 +536,16 @@ extern tree c_builtin_function (tree); extern tree c_builtin_function_ext_scope (tree); extern void shadow_tag (const struct c_declspecs *); extern void shadow_tag_warned (const struct c_declspecs *, int); -extern tree start_enum (struct c_enum_contents *, tree); +extern tree start_enum (struct c_enum_contents *, tree, location_t); extern int start_function (struct c_declspecs *, struct c_declarator *, tree); extern tree start_decl (struct c_declarator *, struct c_declspecs *, bool, tree); -extern tree start_struct (enum tree_code, tree); +extern tree start_struct (enum tree_code, tree, bool *, VEC(tree,heap) **, + location_t); extern void store_parm_decls (void); extern void store_parm_decls_from (struct c_arg_info *); extern tree xref_tag (enum tree_code, tree); -extern struct c_typespec parser_xref_tag (enum tree_code, tree); +extern struct c_typespec parser_xref_tag (enum tree_code, tree, location_t); extern int c_expand_decl (tree); extern struct c_parm *build_c_parm (struct c_declspecs *, tree, struct c_declarator *); @@ -604,7 +609,7 @@ extern struct c_expr parser_build_binary_op (location_t, struct c_expr); extern tree build_conditional_expr (tree, bool, tree, tree); extern tree build_compound_expr (tree, tree); -extern tree c_cast_expr (struct c_type_name *, tree); +extern tree c_cast_expr (struct c_type_name *, tree, location_t); extern tree build_c_cast (tree, tree); extern void store_init_value (tree, tree, tree); extern void error_init (const char *); @@ -619,6 +624,7 @@ extern void set_init_index (tree, tree); extern void set_init_label (tree); extern void process_init_element (struct c_expr, bool); extern tree build_compound_literal (tree, tree, bool); +extern void check_compound_literal_type (struct c_type_name *, location_t); extern tree c_start_case (tree); extern void c_finish_case (tree); extern tree build_asm_expr (tree, tree, tree, tree, bool); diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index bef5e3814f2..f1dc7a34c59 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -1964,7 +1964,7 @@ build_component_ref (tree datum, tree component) TREE_THIS_VOLATILE (ref) = 1; if (TREE_DEPRECATED (subdatum)) - warn_deprecated_use (subdatum); + warn_deprecated_use (subdatum, NULL_TREE); datum = ref; @@ -2225,7 +2225,7 @@ build_external_ref (tree id, int fun, location_t loc, tree *type) return error_mark_node; if (TREE_DEPRECATED (ref)) - warn_deprecated_use (ref); + warn_deprecated_use (ref, NULL_TREE); /* Recursive call does not count as usage. */ if (ref != current_function_decl) @@ -2246,6 +2246,17 @@ build_external_ref (tree id, int fun, location_t loc, tree *type) if (TREE_CODE (ref) == CONST_DECL) { used_types_insert (TREE_TYPE (ref)); + + if (warn_cxx_compat + && TREE_CODE (TREE_TYPE (ref)) == ENUMERAL_TYPE + && C_TYPE_DEFINED_IN_STRUCT (TREE_TYPE (ref))) + { + warning_at (loc, OPT_Wc___compat, + ("enum constant defined in struct or union " + "is not visible in C++")); + inform (DECL_SOURCE_LOCATION (ref), "enum constant defined here"); + } + ref = DECL_INITIAL (ref); TREE_CONSTANT (ref) = 1; } @@ -4262,7 +4273,7 @@ build_c_cast (tree type, tree expr) /* Interpret a cast of expression EXPR to type TYPE. */ tree -c_cast_expr (struct c_type_name *type_name, tree expr) +c_cast_expr (struct c_type_name *type_name, tree expr, location_t loc) { tree type; tree type_expr = NULL_TREE; @@ -4283,6 +4294,15 @@ c_cast_expr (struct c_type_name *type_name, tree expr) ret = build2 (C_MAYBE_CONST_EXPR, TREE_TYPE (ret), type_expr, ret); C_MAYBE_CONST_EXPR_NON_CONST (ret) = !type_expr_const; } + + if (CAN_HAVE_LOCATION_P (ret) && !EXPR_HAS_LOCATION (ret)) + SET_EXPR_LOCATION (ret, loc); + + /* C++ does not permits types to be defined in a cast. */ + if (warn_cxx_compat && type_name->specs->tag_defined_p) + warning_at (loc, OPT_Wc___compat, + "defining a type in a cast is invalid in C++"); + return ret; } @@ -9246,7 +9266,9 @@ build_binary_op (location_t location, enum tree_code code, (code1 == INTEGER_TYPE || code1 == REAL_TYPE || code1 == COMPLEX_TYPE || code1 == FIXED_POINT_TYPE || code1 == VECTOR_TYPE)) { - int none_complex = (code0 != COMPLEX_TYPE && code1 != COMPLEX_TYPE); + bool first_complex = (code0 == COMPLEX_TYPE); + bool second_complex = (code1 == COMPLEX_TYPE); + int none_complex = (!first_complex && !second_complex); if (shorten || common || short_compare) { @@ -9255,6 +9277,89 @@ build_binary_op (location_t location, enum tree_code code, return error_mark_node; } + if (first_complex != second_complex + && (code == PLUS_EXPR + || code == MINUS_EXPR + || code == MULT_EXPR + || (code == TRUNC_DIV_EXPR && first_complex)) + && TREE_CODE (TREE_TYPE (result_type)) == REAL_TYPE + && flag_signed_zeros) + { + /* An operation on mixed real/complex operands must be + handled specially, but the language-independent code can + more easily optimize the plain complex arithmetic if + -fno-signed-zeros. */ + tree real_type = TREE_TYPE (result_type); + tree real, imag; + if (type0 != orig_type0 || type1 != orig_type1) + { + gcc_assert (may_need_excess_precision && common); + real_result_type = c_common_type (orig_type0, orig_type1); + } + if (first_complex) + { + if (TREE_TYPE (op0) != result_type) + op0 = convert_and_check (result_type, op0); + if (TREE_TYPE (op1) != real_type) + op1 = convert_and_check (real_type, op1); + } + else + { + if (TREE_TYPE (op0) != real_type) + op0 = convert_and_check (real_type, op0); + if (TREE_TYPE (op1) != result_type) + op1 = convert_and_check (result_type, op1); + } + if (TREE_CODE (op0) == ERROR_MARK || TREE_CODE (op1) == ERROR_MARK) + return error_mark_node; + if (first_complex) + { + op0 = c_save_expr (op0); + real = build_unary_op (EXPR_LOCATION (orig_op0), REALPART_EXPR, + op0, 1); + imag = build_unary_op (EXPR_LOCATION (orig_op0), IMAGPART_EXPR, + op0, 1); + switch (code) + { + case MULT_EXPR: + case TRUNC_DIV_EXPR: + imag = build2 (resultcode, real_type, imag, op1); + /* Fall through. */ + case PLUS_EXPR: + case MINUS_EXPR: + real = build2 (resultcode, real_type, real, op1); + break; + default: + gcc_unreachable(); + } + } + else + { + op1 = c_save_expr (op1); + real = build_unary_op (EXPR_LOCATION (orig_op1), REALPART_EXPR, + op1, 1); + imag = build_unary_op (EXPR_LOCATION (orig_op1), IMAGPART_EXPR, + op1, 1); + switch (code) + { + case MULT_EXPR: + imag = build2 (resultcode, real_type, op0, imag); + /* Fall through. */ + case PLUS_EXPR: + real = build2 (resultcode, real_type, op0, real); + break; + case MINUS_EXPR: + real = build2 (resultcode, real_type, op0, real); + imag = build1 (NEGATE_EXPR, real_type, imag); + break; + default: + gcc_unreachable(); + } + } + ret = build2 (COMPLEX_EXPR, result_type, real, imag); + goto return_build_binary_op; + } + /* For certain operations (which identify themselves by shorten != 0) if both args were extended from the same smaller type, do the arithmetic in that type and then extend. diff --git a/gcc/c.opt b/gcc/c.opt index 7f71699faa7..fc34ff57f78 100644 --- a/gcc/c.opt +++ b/gcc/c.opt @@ -476,6 +476,10 @@ Wunknown-pragmas C ObjC C++ ObjC++ Warning Warn about unrecognized pragmas +Wunsuffixed-float-constants +C ObjC Var(warn_unsuffixed_float_constants) Warning +Warn about unsuffixed float constants + Wunused-macros C ObjC C++ ObjC++ Warning Warn about macros defined in the main file that are not used diff --git a/gcc/cgraph.c b/gcc/cgraph.c index ce696e211b6..60ff1685dc9 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -78,7 +78,6 @@ The callgraph: #include "target.h" #include "basic-block.h" #include "cgraph.h" -#include "varray.h" #include "output.h" #include "intl.h" #include "gimple.h" @@ -628,7 +627,7 @@ cgraph_edge (struct cgraph_node *node, gimple call_stmt) } -/* Change field call_smt of edge E to NEW_STMT. */ +/* Change field call_stmt of edge E to NEW_STMT. */ void cgraph_set_call_stmt (struct cgraph_edge *e, gimple new_stmt) @@ -655,6 +654,79 @@ cgraph_set_call_stmt (struct cgraph_edge *e, gimple new_stmt) } } +/* Like cgraph_set_call_stmt but walk the clone tree and update all clones sharing + same function body. */ + +void +cgraph_set_call_stmt_including_clones (struct cgraph_node *orig, + gimple old_stmt, gimple new_stmt) +{ + struct cgraph_node *node; + struct cgraph_edge *edge = cgraph_edge (orig, old_stmt); + + if (edge) + cgraph_set_call_stmt (edge, new_stmt); + if (orig->clones) + for (node = orig->clones; node != orig;) + { + struct cgraph_edge *edge = cgraph_edge (node, old_stmt); + if (edge) + cgraph_set_call_stmt (edge, new_stmt); + if (node->clones) + node = node->clones; + else if (node->next_sibling_clone) + node = node->next_sibling_clone; + else + { + while (node != orig && !node->next_sibling_clone) + node = node->clone_of; + if (node != orig) + node = node->next_sibling_clone; + } + } +} + +/* Like cgraph_create_edge walk the clone tree and update all clones sharing + same function body. + + TODO: COUNT and LOOP_DEPTH should be properly distributed based on relative + frequencies of the clones. + */ + +void +cgraph_create_edge_including_clones (struct cgraph_node *orig, struct cgraph_node *callee, + gimple stmt, gcov_type count, int freq, + int loop_depth, + cgraph_inline_failed_t reason) +{ + struct cgraph_node *node; + + cgraph_create_edge (orig, callee, stmt, count, freq, loop_depth)->inline_failed = + reason; + + if (orig->clones) + for (node = orig->clones; node != orig;) + { + /* It is possible that we already constant propagated into the clone + and turned indirect call into dirrect call. */ + if (!cgraph_edge (node, stmt)) + cgraph_create_edge (node, callee, stmt, count, freq, + loop_depth)->inline_failed = reason; + + if (node->clones) + node = node->clones; + else if (node->next_sibling_clone) + node = node->next_sibling_clone; + else + { + while (node != orig && !node->next_sibling_clone) + node = node->clone_of; + if (node != orig) + node = node->next_sibling_clone; + } + } +} + /* Give initial reasons why inlining would fail on EDGE. This gets either nullified or usually overwritten by more precise reasons later. */ @@ -826,48 +898,93 @@ cgraph_redirect_edge_callee (struct cgraph_edge *e, struct cgraph_node *n) /* Update or remove the corresponding cgraph edge if a GIMPLE_CALL - OLD_STMT changed into NEW_STMT. */ + OLD_STMT changed into NEW_STMT. OLD_CALL is gimple_call_fndecl + of OLD_STMT if it was previously call statement. */ -void -cgraph_update_edges_for_call_stmt (gimple old_stmt, gimple new_stmt) +static void +cgraph_update_edges_for_call_stmt_node (struct cgraph_node *node, + gimple old_stmt, tree old_call, gimple new_stmt) { - tree new_call = (is_gimple_call (new_stmt)) ? gimple_call_fn (new_stmt) : 0; - tree old_call = (is_gimple_call (old_stmt)) ? gimple_call_fn (old_stmt) : 0; - struct cgraph_node *node = cgraph_node (cfun->decl); + tree new_call = (is_gimple_call (new_stmt)) ? gimple_call_fndecl (new_stmt) : 0; + /* We are seeing indirect calls, then there is nothing to update. */ + if (!new_call && !old_call) + return; + /* See if we turned indirect call into direct call or folded call to one builtin + into different bultin. */ if (old_call != new_call) { struct cgraph_edge *e = cgraph_edge (node, old_stmt); struct cgraph_edge *ne = NULL; - tree new_decl; + gcov_type count; + int frequency; + int loop_nest; if (e) { - gcov_type count = e->count; - int frequency = e->frequency; - int loop_nest = e->loop_nest; - + /* See if the call is already there. It might be because of indirect + inlining already found it. */ + if (new_call && e->callee->decl == new_call) + return; + + /* Otherwise remove edge and create new one; we can't simply redirect + since function has changed, so inline plan and other information + attached to edge is invalid. */ cgraph_remove_edge (e); - if (new_call) - { - new_decl = gimple_call_fndecl (new_stmt); - if (new_decl) - { - ne = cgraph_create_edge (node, cgraph_node (new_decl), - new_stmt, count, frequency, - loop_nest); - gcc_assert (ne->inline_failed); - } - } + count = e->count; + frequency = e->frequency; + loop_nest = e->loop_nest; + } + else + { + /* We are seeing new direct call; compute profile info based on BB. */ + basic_block bb = gimple_bb (new_stmt); + count = bb->count; + frequency = compute_call_stmt_bb_frequency (current_function_decl, + bb); + loop_nest = bb->loop_depth; + } + + if (new_call) + { + ne = cgraph_create_edge (node, cgraph_node (new_call), + new_stmt, count, frequency, + loop_nest); + gcc_assert (ne->inline_failed); } } + /* We only updated the call stmt; update pointer in cgraph edge.. */ else if (old_stmt != new_stmt) - { - struct cgraph_edge *e = cgraph_edge (node, old_stmt); + cgraph_set_call_stmt (cgraph_edge (node, old_stmt), new_stmt); +} - if (e) - cgraph_set_call_stmt (e, new_stmt); - } +/* Update or remove the corresponding cgraph edge if a GIMPLE_CALL + OLD_STMT changed into NEW_STMT. OLD_DECL is gimple_call_fndecl + of OLD_STMT before it was updated (updating can happen inplace). */ + +void +cgraph_update_edges_for_call_stmt (gimple old_stmt, tree old_decl, gimple new_stmt) +{ + struct cgraph_node *orig = cgraph_node (cfun->decl); + struct cgraph_node *node; + + cgraph_update_edges_for_call_stmt_node (orig, old_stmt, old_decl, new_stmt); + if (orig->clones) + for (node = orig->clones; node != orig;) + { + cgraph_update_edges_for_call_stmt_node (node, old_stmt, old_decl, new_stmt); + if (node->clones) + node = node->clones; + else if (node->next_sibling_clone) + node = node->next_sibling_clone; + else + { + while (node != orig && !node->next_sibling_clone) + node = node->clone_of; + if (node != orig) + node = node->next_sibling_clone; + } + } } @@ -998,24 +1115,100 @@ cgraph_remove_node (struct cgraph_node *node) slot = htab_find_slot (cgraph_hash, node, NO_INSERT); if (*slot == node) { - if (node->next_clone) - { - struct cgraph_node *new_node = node->next_clone; + struct cgraph_node *next_inline_clone; - *slot = new_node; - node->next_clone->prev_clone = NULL; - } + for (next_inline_clone = node->clones; + next_inline_clone && next_inline_clone->decl != node->decl; + next_inline_clone = next_inline_clone->next_sibling_clone) + ; + + /* If there is inline clone of the node being removed, we need + to put it into the position of removed node and reorganize all + other clones to be based on it. */ + if (next_inline_clone) + { + struct cgraph_node *n; + struct cgraph_node *new_clones; + + *slot = next_inline_clone; + + /* Unlink inline clone from the list of clones of removed node. */ + if (next_inline_clone->next_sibling_clone) + next_inline_clone->next_sibling_clone->prev_sibling_clone + = next_inline_clone->prev_sibling_clone; + if (next_inline_clone->prev_sibling_clone) + { + next_inline_clone->prev_sibling_clone->next_sibling_clone + = next_inline_clone->next_sibling_clone; + } + else + node->clones = next_inline_clone->next_sibling_clone; + + new_clones = node->clones; + node->clones = NULL; + + /* Copy clone info. */ + next_inline_clone->clone = node->clone; + + /* Now place it into clone tree at same level at NODE. */ + next_inline_clone->clone_of = node->clone_of; + next_inline_clone->prev_sibling_clone = NULL; + next_inline_clone->next_sibling_clone = NULL; + if (node->clone_of) + { + next_inline_clone->next_sibling_clone = node->clone_of->clones; + node->clone_of->clones = next_inline_clone; + } + + /* Merge the clone list. */ + if (new_clones) + { + if (!next_inline_clone->clones) + next_inline_clone->clones = new_clones; + else + { + n = next_inline_clone->clones; + while (n->next_sibling_clone) + n = n->next_sibling_clone; + n->next_sibling_clone = new_clones; + new_clones->prev_sibling_clone = n; + } + } + + /* Update clone_of pointers. */ + n = new_clones; + while (n) + { + n->clone_of = next_inline_clone; + n = n->next_sibling_clone; + } + } else { htab_clear_slot (cgraph_hash, slot); kill_body = true; } + } else + gcc_assert (node->clone_of); + if (node->prev_sibling_clone) + node->prev_sibling_clone->next_sibling_clone = node->next_sibling_clone; + else if (node->clone_of) + node->clone_of->clones = node->next_sibling_clone; + if (node->next_sibling_clone) + node->next_sibling_clone->prev_sibling_clone = node->prev_sibling_clone; + if (node->clones) { - node->prev_clone->next_clone = node->next_clone; - if (node->next_clone) - node->next_clone->prev_clone = node->prev_clone; + struct cgraph_node *n; + + for (n = node->clones; n->next_sibling_clone; n = n->next_sibling_clone) + n->clone_of = node->clone_of; + n->clone_of = node->clone_of; + n->next_sibling_clone = node->clone_of->clones; + if (node->clone_of->clones) + node->clone_of->clones->prev_sibling_clone = n; + node->clone_of->clones = node->clones; } /* While all the clones are removed after being proceeded, the function @@ -1025,7 +1218,7 @@ cgraph_remove_node (struct cgraph_node *node) if (!kill_body && *slot) { struct cgraph_node *n = (struct cgraph_node *) *slot; - if (!n->next_clone && !n->global.inlined_to + if (!n->clones && !n->clone_of && !n->global.inlined_to && (cgraph_global_info_ready && (TREE_ASM_WRITTEN (n->decl) || DECL_EXTERNAL (n->decl)))) kill_body = true; @@ -1059,6 +1252,21 @@ cgraph_remove_node (struct cgraph_node *node) free_nodes = node; } +/* Remove the node from cgraph. */ + +void +cgraph_remove_node_and_inline_clones (struct cgraph_node *node) +{ + struct cgraph_edge *e, *next; + for (e = node->callees; e; e = next) + { + next = e->next_callee; + if (!e->inline_failed) + cgraph_remove_node_and_inline_clones (e->callee); + } + cgraph_remove_node (node); +} + /* Notify finalize_compilation_unit that given node is reachable. */ void @@ -1085,6 +1293,15 @@ cgraph_mark_needed_node (struct cgraph_node *node) cgraph_mark_reachable_node (node); } +/* Likewise indicate that a node is having address taken. */ + +void +cgraph_mark_address_taken_node (struct cgraph_node *node) +{ + node->address_taken = 1; + cgraph_mark_needed_node (node); +} + /* Return local info for the compiled function. */ struct cgraph_local_info * @@ -1166,6 +1383,10 @@ dump_cgraph_node (FILE *f, struct cgraph_node *node) fprintf (f, " (inline copy in %s/%i)", cgraph_node_name (node->global.inlined_to), node->global.inlined_to->uid); + if (node->clone_of) + fprintf (f, " (clone of %s/%i)", + cgraph_node_name (node->clone_of), + node->clone_of->uid); if (cgraph_function_flags_ready) fprintf (f, " availability:%s", cgraph_availability_names [cgraph_function_body_availability (node)]); @@ -1185,6 +1406,8 @@ dump_cgraph_node (FILE *f, struct cgraph_node *node) fprintf (f, " nested in: %s", cgraph_node_name (node->origin)); if (node->needed) fprintf (f, " needed"); + if (node->address_taken) + fprintf (f, " address_taken"); else if (node->reachable) fprintf (f, " reachable"); if (gimple_has_body_p (node->decl)) @@ -1382,6 +1605,7 @@ cgraph_clone_node (struct cgraph_node *n, gcov_type count, int freq, new_node->global = n->global; new_node->rtl = n->rtl; new_node->count = count; + new_node->clone = n->clone; if (n->count) { if (new_node->count > n->count) @@ -1402,16 +1626,117 @@ cgraph_clone_node (struct cgraph_node *n, gcov_type count, int freq, cgraph_clone_edge (e, new_node, e->call_stmt, count_scale, freq, loop_nest, update_original); - new_node->next_clone = n->next_clone; - new_node->prev_clone = n; - n->next_clone = new_node; - if (new_node->next_clone) - new_node->next_clone->prev_clone = new_node; + new_node->next_sibling_clone = n->clones; + if (n->clones) + n->clones->prev_sibling_clone = new_node; + n->clones = new_node; + new_node->clone_of = n; cgraph_call_node_duplication_hooks (n, new_node); return new_node; } +/* Create a new name for omp child function. Returns an identifier. */ + +static GTY(()) unsigned int clone_fn_id_num; + +static tree +clone_function_name (tree decl) +{ + tree name = DECL_ASSEMBLER_NAME (decl); + size_t len = IDENTIFIER_LENGTH (name); + char *tmp_name, *prefix; + + prefix = XALLOCAVEC (char, len + strlen ("_clone") + 1); + memcpy (prefix, IDENTIFIER_POINTER (name), len); + strcpy (prefix + len, "_clone"); +#ifndef NO_DOT_IN_LABEL + prefix[len] = '.'; +#elif !defined NO_DOLLAR_IN_LABEL + prefix[len] = '$'; +#endif + ASM_FORMAT_PRIVATE_NAME (tmp_name, prefix, clone_fn_id_num++); + return get_identifier (tmp_name); +} + +/* Create callgraph node clone with new declaration. The actual body will + be copied later at compilation stage. + + TODO: after merging in ipa-sra use function call notes instead of args_to_skip + bitmap interface. + */ +struct cgraph_node * +cgraph_create_virtual_clone (struct cgraph_node *old_node, + VEC(cgraph_edge_p,heap) *redirect_callers, + VEC(ipa_replace_map_p,gc) *tree_map, + bitmap args_to_skip) +{ + tree old_decl = old_node->decl; + struct cgraph_node *new_node = NULL; + tree new_decl; + struct cgraph_node key, **slot; + unsigned i; + struct cgraph_edge *e; + + gcc_assert (tree_versionable_function_p (old_decl)); + + /* Make a new FUNCTION_DECL tree node */ + if (!args_to_skip) + new_decl = copy_node (old_decl); + else + new_decl = build_function_decl_skip_args (old_decl, args_to_skip); + DECL_STRUCT_FUNCTION (new_decl) = NULL; + + /* Generate a new name for the new version. */ + DECL_NAME (new_decl) = clone_function_name (old_decl); + SET_DECL_ASSEMBLER_NAME (new_decl, DECL_NAME (new_decl)); + SET_DECL_RTL (new_decl, NULL); + + new_node = cgraph_clone_node (old_node, old_node->count, + CGRAPH_FREQ_BASE, 0, false); + new_node->decl = new_decl; + /* Update the properties. + Make clone visible only within this translation unit. Make sure + that is not weak also. + ??? We cannot use COMDAT linkage because there is no + ABI support for this. */ + DECL_EXTERNAL (new_node->decl) = 0; + DECL_ONE_ONLY (new_node->decl) = 0; + TREE_PUBLIC (new_node->decl) = 0; + DECL_COMDAT (new_node->decl) = 0; + DECL_WEAK (new_node->decl) = 0; + new_node->clone.tree_map = tree_map; + new_node->clone.args_to_skip = args_to_skip; + new_node->local.externally_visible = 0; + new_node->local.local = 1; + new_node->lowered = true; + new_node->reachable = true; + + key.decl = new_decl; + slot = (struct cgraph_node **) htab_find_slot (cgraph_hash, &key, INSERT); + gcc_assert (!*slot); + *slot = new_node; + if (assembler_name_hash) + { + void **aslot; + tree name = DECL_ASSEMBLER_NAME (new_decl); + + aslot = htab_find_slot_with_hash (assembler_name_hash, name, + decl_assembler_name_hash (name), + INSERT); + gcc_assert (!*aslot); + *aslot = new_node; + } + for (i = 0; VEC_iterate (cgraph_edge_p, redirect_callers, i, e); i++) + { + /* Redirect calls to the old version node to point to its new + version. */ + cgraph_redirect_edge_callee (e, new_node); + } + + return new_node; +} + /* NODE is no longer nested function; update cgraph accordingly. */ void cgraph_unnest_node (struct cgraph_node *node) diff --git a/gcc/cgraph.h b/gcc/cgraph.h index b100fa6ddc4..58ae06852cf 100644 --- a/gcc/cgraph.h +++ b/gcc/cgraph.h @@ -1,5 +1,5 @@ /* Callgraph handling code. - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Contributed by Jan Hubicka @@ -48,17 +48,22 @@ enum availability extern const char * const cgraph_availability_names[]; +/* Function inlining information. */ + +struct GTY(()) inline_summary +{ + /* Estimated stack frame consumption by the function. */ + HOST_WIDE_INT estimated_self_stack_size; + + /* Size of the function before inlining. */ + int self_insns; +}; + /* Information about the function collected locally. Available after function is analyzed. */ struct GTY(()) cgraph_local_info { - struct inline_summary { - /* Estimated stack frame consumption by the function. */ - HOST_WIDE_INT estimated_self_stack_size; - - /* Size of the function before inlining. */ - int self_insns; - } inline_summary; + struct inline_summary inline_summary; /* Set when function function is visible in current compilation unit only and its address is never taken. */ @@ -119,6 +124,29 @@ struct GTY(()) cgraph_rtl_info { unsigned int preferred_incoming_stack_boundary; }; +/* Represent which DECL tree (or reference to such tree) + will be replaced by another tree while versioning. */ +struct GTY(()) ipa_replace_map +{ + /* The tree that will be replaced. */ + tree old_tree; + /* The new (replacing) tree. */ + tree new_tree; + /* True when a substitution should be done, false otherwise. */ + bool replace_p; + /* True when we replace a reference to old_tree. */ + bool ref_p; +}; +typedef struct ipa_replace_map *ipa_replace_map_p; +DEF_VEC_P(ipa_replace_map_p); +DEF_VEC_ALLOC_P(ipa_replace_map_p,gc); + +struct GTY(()) cgraph_clone_info +{ + VEC(ipa_replace_map_p,gc)* tree_map; + bitmap args_to_skip; +}; + /* The cgraph data structure. Each function decl has assigned cgraph_node listing callees and callers. */ @@ -137,8 +165,10 @@ struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) cgraph_node { /* Pointer to the next function in cgraph_nodes_queue. */ struct cgraph_node *next_needed; /* Pointer to the next clone. */ - struct cgraph_node *next_clone; - struct cgraph_node *prev_clone; + struct cgraph_node *next_sibling_clone; + struct cgraph_node *prev_sibling_clone; + struct cgraph_node *clones; + struct cgraph_node *clone_of; /* For functions with many calls sites it holds map from call expression to the edge to speed up cgraph_edge function. */ htab_t GTY((param_is (struct cgraph_edge))) call_site_hash; @@ -148,6 +178,7 @@ struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) cgraph_node { struct cgraph_local_info local; struct cgraph_global_info global; struct cgraph_rtl_info rtl; + struct cgraph_clone_info clone; /* Expected number of executions: calculated in profile.c. */ gcov_type count; @@ -163,6 +194,8 @@ struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) cgraph_node { /* Set when function must be output - it is externally visible or its address is taken. */ unsigned needed : 1; + /* Set when function has address taken. */ + unsigned address_taken : 1; /* Set when decl is an abstract function pointed to by the ABSTRACT_DECL_ORIGIN of a reachable function. */ unsigned abstract_and_needed : 1; @@ -344,6 +377,7 @@ void debug_cgraph_node (struct cgraph_node *); void cgraph_insert_node_to_hashtable (struct cgraph_node *node); void cgraph_remove_edge (struct cgraph_edge *); void cgraph_remove_node (struct cgraph_node *); +void cgraph_remove_node_and_inline_clones (struct cgraph_node *); void cgraph_release_function_body (struct cgraph_node *); void cgraph_node_remove_callees (struct cgraph_node *node); struct cgraph_edge *cgraph_create_edge (struct cgraph_node *, @@ -353,7 +387,12 @@ struct cgraph_node *cgraph_node (tree); struct cgraph_node *cgraph_node_for_asm (tree asmname); struct cgraph_edge *cgraph_edge (struct cgraph_node *, gimple); void cgraph_set_call_stmt (struct cgraph_edge *, gimple); -void cgraph_update_edges_for_call_stmt (gimple, gimple); +void cgraph_set_call_stmt_including_clones (struct cgraph_node *, gimple, gimple); +void cgraph_create_edge_including_clones (struct cgraph_node *, + struct cgraph_node *, + gimple, gcov_type, int, int, + cgraph_inline_failed_t); +void cgraph_update_edges_for_call_stmt (gimple, tree, gimple); struct cgraph_local_info *cgraph_local_info (tree); struct cgraph_global_info *cgraph_global_info (tree); struct cgraph_rtl_info *cgraph_rtl_info (tree); @@ -374,6 +413,10 @@ void cgraph_unnest_node (struct cgraph_node *); enum availability cgraph_function_body_availability (struct cgraph_node *); void cgraph_add_new_function (tree, bool); const char* cgraph_inline_failed_string (cgraph_inline_failed_t); +struct cgraph_node * cgraph_create_virtual_clone (struct cgraph_node *old_node, + VEC(cgraph_edge_p,heap)*, + VEC(ipa_replace_map_p,gc)* tree_map, + bitmap args_to_skip); /* In cgraphunit.c */ void cgraph_finalize_function (tree, bool); @@ -381,6 +424,7 @@ void cgraph_mark_if_needed (tree); void cgraph_finalize_compilation_unit (void); void cgraph_optimize (void); void cgraph_mark_needed_node (struct cgraph_node *); +void cgraph_mark_address_taken_node (struct cgraph_node *); void cgraph_mark_reachable_node (struct cgraph_node *); bool cgraph_inline_p (struct cgraph_edge *, cgraph_inline_failed_t *reason); bool cgraph_preserve_function_body_p (tree); @@ -391,8 +435,9 @@ void cgraph_reset_static_var_maps (void); void init_cgraph (void); struct cgraph_node *cgraph_function_versioning (struct cgraph_node *, VEC(cgraph_edge_p,heap)*, - varray_type, + VEC(ipa_replace_map_p,gc)*, bitmap); +void tree_function_versioning (tree, tree, VEC (ipa_replace_map_p,gc)*, bool, bitmap); void cgraph_analyze_function (struct cgraph_node *); struct cgraph_node *save_inline_function_body (struct cgraph_node *); void record_references_in_initializer (tree); @@ -421,10 +466,11 @@ struct cgraph_2edge_hook_list *cgraph_add_edge_duplication_hook (cgraph_2edge_ho void cgraph_remove_edge_duplication_hook (struct cgraph_2edge_hook_list *); struct cgraph_2node_hook_list *cgraph_add_node_duplication_hook (cgraph_2node_hook, void *); void cgraph_remove_node_duplication_hook (struct cgraph_2node_hook_list *); +void cgraph_materialize_all_clones (void); /* In cgraphbuild.c */ unsigned int rebuild_cgraph_edges (void); -int compute_call_stmt_bb_frequency (basic_block bb); +int compute_call_stmt_bb_frequency (tree, basic_block bb); /* In ipa.c */ bool cgraph_remove_unreachable_nodes (bool, FILE *); diff --git a/gcc/cgraphbuild.c b/gcc/cgraphbuild.c index f244a1e315d..a7a8bd2b314 100644 --- a/gcc/cgraphbuild.c +++ b/gcc/cgraphbuild.c @@ -58,7 +58,7 @@ record_reference (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) functions reachable unconditionally. */ decl = TREE_OPERAND (*tp, 0); if (TREE_CODE (decl) == FUNCTION_DECL) - cgraph_mark_needed_node (cgraph_node (decl)); + cgraph_mark_address_taken_node (cgraph_node (decl)); break; default: @@ -81,11 +81,14 @@ record_reference (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED) /* Computes the frequency of the call statement so that it can be stored in cgraph_edge. BB is the basic block of the call statement. */ int -compute_call_stmt_bb_frequency (basic_block bb) +compute_call_stmt_bb_frequency (tree decl, basic_block bb) { int entry_freq = ENTRY_BLOCK_PTR->frequency; int freq = bb->frequency; + if (profile_status_for_function (DECL_STRUCT_FUNCTION (decl)) == PROFILE_ABSENT) + return CGRAPH_FREQ_BASE; + if (!entry_freq) entry_freq = 1, freq++; @@ -121,7 +124,7 @@ build_cgraph_edges (void) size_t i; size_t n = gimple_call_num_args (stmt); cgraph_create_edge (node, cgraph_node (decl), stmt, - bb->count, compute_call_stmt_bb_frequency (bb), + bb->count, compute_call_stmt_bb_frequency (current_function_decl, bb), bb->loop_depth); for (i = 0; i < n; i++) walk_tree (gimple_call_arg_ptr (stmt, i), record_reference, @@ -224,7 +227,9 @@ rebuild_cgraph_edges (void) if (is_gimple_call (stmt) && (decl = gimple_call_fndecl (stmt))) cgraph_create_edge (node, cgraph_node (decl), stmt, - bb->count, compute_call_stmt_bb_frequency (bb), + bb->count, + compute_call_stmt_bb_frequency + (current_function_decl, bb), bb->loop_depth); } diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 9b7ca8c9b84..a73eabc44e3 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -548,12 +548,20 @@ cgraph_mark_if_needed (tree decl) cgraph_mark_needed_node (node); } +/* Return TRUE if NODE2 is equivalent to NODE or its clone. */ +static bool +clone_of_p (struct cgraph_node *node, struct cgraph_node *node2) +{ + while (node != node2 && node2) + node2 = node2->clone_of; + return node2 != NULL; +} + /* Verify cgraph nodes of given cgraph node. */ void verify_cgraph_node (struct cgraph_node *node) { struct cgraph_edge *e; - struct cgraph_node *main_clone; struct function *this_cfun = DECL_STRUCT_FUNCTION (node->decl); struct function *saved_cfun = cfun; basic_block this_block; @@ -629,17 +637,53 @@ verify_cgraph_node (struct cgraph_node *node) error_found = true; } - for (main_clone = cgraph_node (node->decl); main_clone; - main_clone = main_clone->next_clone) - if (main_clone == node) - break; if (!cgraph_node (node->decl)) { error ("node not found in cgraph_hash"); error_found = true; } - if (node->analyzed + if (node->clone_of) + { + struct cgraph_node *n; + for (n = node->clone_of->clones; n; n = n->next_sibling_clone) + if (n == node) + break; + if (!n) + { + error ("node has wrong clone_of"); + error_found = true; + } + } + if (node->clones) + { + struct cgraph_node *n; + for (n = node->clones; n; n = n->next_sibling_clone) + if (n->clone_of != node) + break; + if (n) + { + error ("node has wrong clone list"); + error_found = true; + } + } + if ((node->prev_sibling_clone || node->next_sibling_clone) && !node->clone_of) + { + error ("node is in clone list but it is not clone"); + error_found = true; + } + if (!node->prev_sibling_clone && node->clone_of && node->clone_of->clones != node) + { + error ("node has wrong prev_clone pointer"); + error_found = true; + } + if (node->prev_sibling_clone && node->prev_sibling_clone->next_sibling_clone != node) + { + error ("double linked list of clones corrupted"); + error_found = true; + } + + if (node->analyzed && gimple_has_body_p (node->decl) && !TREE_ASM_WRITTEN (node->decl) && (!DECL_EXTERNAL (node->decl) || node->global.inlined_to)) { @@ -668,8 +712,8 @@ verify_cgraph_node (struct cgraph_node *node) debug_gimple_stmt (stmt); error_found = true; } - if (e->callee->decl != cgraph_node (decl)->decl - && e->inline_failed) + if (!clone_of_p (cgraph_node (decl), e->callee) + && !e->callee->global.inlined_to) { error ("edge points to wrong declaration:"); debug_tree (e->callee->decl); @@ -1118,9 +1162,17 @@ cgraph_expand_all_functions (void) /* This is used to sort the node types by the cgraph order number. */ +enum cgraph_order_sort_kind +{ + ORDER_UNDEFINED = 0, + ORDER_FUNCTION, + ORDER_VAR, + ORDER_ASM +}; + struct cgraph_order_sort { - enum { ORDER_UNDEFINED = 0, ORDER_FUNCTION, ORDER_VAR, ORDER_ASM } kind; + enum cgraph_order_sort_kind kind; union { struct cgraph_node *f; @@ -1227,9 +1279,9 @@ cgraph_preserve_function_body_p (tree decl) gcc_assert (cgraph_global_info_ready); /* Look if there is any clone around. */ - for (node = cgraph_node (decl); node; node = node->next_clone) - if (node->global.inlined_to) - return true; + node = cgraph_node (decl); + if (node->clones) + return true; return false; } @@ -1312,6 +1364,7 @@ cgraph_optimize (void) verify_cgraph (); #endif + cgraph_materialize_all_clones (); cgraph_mark_functions_to_output (); cgraph_state = CGRAPH_STATE_EXPANSION; @@ -1528,7 +1581,7 @@ cgraph_copy_node_for_versioning (struct cgraph_node *old_version, struct cgraph_node * cgraph_function_versioning (struct cgraph_node *old_version_node, VEC(cgraph_edge_p,heap) *redirect_callers, - varray_type tree_map, + VEC (ipa_replace_map_p,gc)* tree_map, bitmap args_to_skip) { tree old_decl = old_version_node->decl; @@ -1581,19 +1634,50 @@ cgraph_function_versioning (struct cgraph_node *old_version_node, struct cgraph_node * save_inline_function_body (struct cgraph_node *node) { - struct cgraph_node *first_clone; + struct cgraph_node *first_clone, *n; gcc_assert (node == cgraph_node (node->decl)); cgraph_lower_function (node); - first_clone = node->next_clone; + first_clone = node->clones; first_clone->decl = copy_node (node->decl); - node->next_clone = NULL; - first_clone->prev_clone = NULL; cgraph_insert_node_to_hashtable (first_clone); gcc_assert (first_clone == cgraph_node (first_clone->decl)); + if (first_clone->next_sibling_clone) + { + for (n = first_clone->next_sibling_clone; n->next_sibling_clone; n = n->next_sibling_clone) + n->clone_of = first_clone; + n->clone_of = first_clone; + n->next_sibling_clone = first_clone->clones; + if (first_clone->clones) + first_clone->clones->prev_sibling_clone = n; + first_clone->clones = first_clone->next_sibling_clone; + first_clone->next_sibling_clone->prev_sibling_clone = NULL; + first_clone->next_sibling_clone = NULL; + gcc_assert (!first_clone->prev_sibling_clone); + } + first_clone->clone_of = NULL; + node->clones = NULL; + + if (first_clone->clones) + for (n = first_clone->clones; n != first_clone;) + { + gcc_assert (n->decl == node->decl); + n->decl = first_clone->decl; + if (n->clones) + n = n->clones; + else if (n->next_sibling_clone) + n = n->next_sibling_clone; + else + { + while (n != first_clone && !n->next_sibling_clone) + n = n->clone_of; + if (n != first_clone) + n = n->next_sibling_clone; + } + } /* Copy the OLD_VERSION_NODE function tree to the new version. */ tree_function_versioning (node->decl, first_clone->decl, NULL, true, NULL); @@ -1603,12 +1687,144 @@ save_inline_function_body (struct cgraph_node *node) TREE_PUBLIC (first_clone->decl) = 0; DECL_COMDAT (first_clone->decl) = 0; - for (node = first_clone->next_clone; node; node = node->next_clone) - node->decl = first_clone->decl; #ifdef ENABLE_CHECKING verify_cgraph_node (first_clone); #endif return first_clone; } +/* Given virtual clone, turn it into actual clone. */ +static void +cgraph_materialize_clone (struct cgraph_node *node) +{ + bitmap_obstack_initialize (NULL); + /* Copy the OLD_VERSION_NODE function tree to the new version. */ + tree_function_versioning (node->clone_of->decl, node->decl, + node->clone.tree_map, true, + node->clone.args_to_skip); + + /* Function is no longer clone. */ + if (node->next_sibling_clone) + node->next_sibling_clone->prev_sibling_clone = node->prev_sibling_clone; + if (node->prev_sibling_clone) + node->prev_sibling_clone->next_sibling_clone = node->next_sibling_clone; + else + node->clone_of->clones = node->next_sibling_clone; + node->next_sibling_clone = NULL; + node->prev_sibling_clone = NULL; + node->clone_of = NULL; + bitmap_obstack_release (NULL); +} + +/* Once all functions from compilation unit are in memory, produce all clones + and update all calls. + We might also do this on demand if we don't want to bring all functions to + memory prior compilation, but current WHOPR implementation does that and it is + is bit easier to keep everything right in this order. */ +void +cgraph_materialize_all_clones (void) +{ + struct cgraph_node *node; + bool stabilized = false; + + if (cgraph_dump_file) + fprintf (cgraph_dump_file, "Materializing clones\n"); +#ifdef ENABLE_CHECKING + verify_cgraph (); +#endif + + /* We can also do topological order, but number of iterations should be + bounded by number of IPA passes since single IPA pass is probably not + going to create clones of clones it created itself. */ + while (!stabilized) + { + stabilized = true; + for (node = cgraph_nodes; node; node = node->next) + { + if (node->clone_of && node->decl != node->clone_of->decl + && !gimple_has_body_p (node->decl)) + { + if (gimple_has_body_p (node->clone_of->decl)) + { + if (cgraph_dump_file) + fprintf (cgraph_dump_file, " clonning %s to %s", + cgraph_node_name (node->clone_of), + cgraph_node_name (node)); + cgraph_materialize_clone (node); + } + else + stabilized = false; + } + } + } + if (cgraph_dump_file) + fprintf (cgraph_dump_file, "Updating call sites\n"); + for (node = cgraph_nodes; node; node = node->next) + if (node->analyzed && gimple_has_body_p (node->decl) + && (!node->clone_of || node->clone_of->decl != node->decl)) + { + struct cgraph_edge *e; + + current_function_decl = node->decl; + push_cfun (DECL_STRUCT_FUNCTION (node->decl)); + for (e = node->callees; e; e = e->next_callee) + { + tree decl = gimple_call_fndecl (e->call_stmt); + /* When function gets inlined, indirect inlining might've invented + new edge for orginally indirect stmt. Since we are not + preserving clones in the original form, we must not update here + since other inline clones don't need to contain call to the same + call. Inliner will do the substitution for us later. */ + if (decl && decl != e->callee->decl) + { + gimple new_stmt; + gimple_stmt_iterator gsi; + + if (cgraph_dump_file) + { + fprintf (cgraph_dump_file, "updating call of %s in %s:", + cgraph_node_name (node), + cgraph_node_name (e->callee)); + print_gimple_stmt (cgraph_dump_file, e->call_stmt, 0, dump_flags); + } + + if (e->callee->clone.args_to_skip) + new_stmt = gimple_call_copy_skip_args (e->call_stmt, + e->callee->clone.args_to_skip); + else + new_stmt = e->call_stmt; + if (gimple_vdef (new_stmt) + && TREE_CODE (gimple_vdef (new_stmt)) == SSA_NAME) + SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt; + gimple_call_set_fndecl (new_stmt, e->callee->decl); + + gsi = gsi_for_stmt (e->call_stmt); + gsi_replace (&gsi, new_stmt, true); + + /* Update EH information too, just in case. */ + if (!stmt_could_throw_p (new_stmt) + && lookup_stmt_eh_region (new_stmt)) + remove_stmt_from_eh_region (new_stmt); + + cgraph_set_call_stmt_including_clones (node, e->call_stmt, new_stmt); + + if (cgraph_dump_file) + { + fprintf (cgraph_dump_file, " updated to:"); + print_gimple_stmt (cgraph_dump_file, e->call_stmt, 0, dump_flags); + } + } + } + pop_cfun (); + current_function_decl = NULL; +#ifdef ENABLE_CHECKING + verify_cgraph_node (node); +#endif + } +#ifdef ENABLE_CHECKING + verify_cgraph (); +#endif + cgraph_remove_unreachable_nodes (false, cgraph_dump_file); +} + #include "gt-cgraphunit.h" diff --git a/gcc/combine.c b/gcc/combine.c index a471940d49c..7cdf396a66c 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -342,10 +342,12 @@ static int nonzero_sign_valid; /* Record one modification to rtl structure to be undone by storing old_contents into *where. */ +enum undo_kind { UNDO_RTX, UNDO_INT, UNDO_MODE }; + struct undo { struct undo *next; - enum { UNDO_RTX, UNDO_INT, UNDO_MODE } kind; + enum undo_kind kind; union { rtx r; int i; enum machine_mode m; } old_contents; union { rtx *r; int *i; } where; }; diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c index 0016cb67993..1f456b63cd7 100644 --- a/gcc/config/arc/arc.c +++ b/gcc/config/arc/arc.c @@ -1,6 +1,6 @@ /* Subroutines used for code generation on the Argonaut ARC cpu. Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GCC. @@ -385,16 +385,16 @@ arc_handle_interrupt_attribute (tree *node ATTRIBUTE_UNUSED, if (TREE_CODE (value) != STRING_CST) { warning (OPT_Wattributes, - "argument of %qs attribute is not a string constant", - IDENTIFIER_POINTER (name)); + "argument of %qE attribute is not a string constant", + name); *no_add_attrs = true; } else if (strcmp (TREE_STRING_POINTER (value), "ilink1") && strcmp (TREE_STRING_POINTER (value), "ilink2")) { warning (OPT_Wattributes, - "argument of %qs attribute is not \"ilink1\" or \"ilink2\"", - IDENTIFIER_POINTER (name)); + "argument of %qE attribute is not \"ilink1\" or \"ilink2\"", + name); *no_add_attrs = true; } diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index bd4ded50dd5..18e009d1368 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -3260,8 +3260,8 @@ arm_handle_fndecl_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED, { if (TREE_CODE (*node) != FUNCTION_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } @@ -3278,8 +3278,8 @@ arm_handle_isr_attribute (tree *node, tree name, tree args, int flags, { if (TREE_CODE (*node) != FUNCTION_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } /* FIXME: the argument if any is checked for type attributes; @@ -3292,8 +3292,8 @@ arm_handle_isr_attribute (tree *node, tree name, tree args, int flags, { if (arm_isr_value (args) == ARM_FT_UNKNOWN) { - warning (OPT_Wattributes, "%qs attribute ignored", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute ignored", + name); *no_add_attrs = true; } } @@ -3320,8 +3320,8 @@ arm_handle_isr_attribute (tree *node, tree name, tree args, int flags, } else { - warning (OPT_Wattributes, "%qs attribute ignored", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute ignored", + name); } } } @@ -3592,7 +3592,11 @@ require_pic_register (void) seq = get_insns (); end_sequence (); - emit_insn_after (seq, entry_of_function ()); + /* We can be called during expansion of PHI nodes, where + we can't yet emit instructions directly in the final + insn stream. Queue the insns on the entry edge, they will + be committed after everything else is expanded. */ + insert_insn_on_edge (seq, single_succ_edge (ENTRY_BLOCK_PTR)); } } } diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 9676711bfa3..4811b92637f 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -4804,8 +4804,8 @@ avr_handle_progmem_attribute (tree *node, tree name, } else { - warning (OPT_Wattributes, "%qs attribute ignored", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute ignored", + name); *no_add_attrs = true; } } @@ -4824,8 +4824,8 @@ avr_handle_fndecl_attribute (tree *node, tree name, { if (TREE_CODE (*node) != FUNCTION_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } @@ -4840,8 +4840,8 @@ avr_handle_fntype_attribute (tree *node, tree name, { if (TREE_CODE (*node) != FUNCTION_TYPE) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c index 1d5a03e72bd..ac237d73bd2 100644 --- a/gcc/config/bfin/bfin.c +++ b/gcc/config/bfin/bfin.c @@ -5263,8 +5263,8 @@ handle_int_attribute (tree *node, tree name, if (TREE_CODE (x) != FUNCTION_TYPE) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } else if (funkind (x) != SUBROUTINE) @@ -5324,8 +5324,8 @@ bfin_handle_longcall_attribute (tree *node, tree name, && TREE_CODE (*node) != FIELD_DECL && TREE_CODE (*node) != TYPE_DECL) { - warning (OPT_Wattributes, "`%s' attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } @@ -5353,8 +5353,8 @@ bfin_handle_l1_text_attribute (tree *node, tree name, tree ARG_UNUSED (args), if (TREE_CODE (decl) != FUNCTION_DECL) { - error ("`%s' attribute only applies to functions", - IDENTIFIER_POINTER (name)); + error ("%qE attribute only applies to functions", + name); *no_add_attrs = true; } @@ -5385,15 +5385,15 @@ bfin_handle_l1_data_attribute (tree *node, tree name, tree ARG_UNUSED (args), if (TREE_CODE (decl) != VAR_DECL) { - error ("`%s' attribute only applies to variables", - IDENTIFIER_POINTER (name)); + error ("%qE attribute only applies to variables", + name); *no_add_attrs = true; } else if (current_function_decl != NULL_TREE && !TREE_STATIC (decl)) { - error ("`%s' attribute cannot be specified for local variables", - IDENTIFIER_POINTER (name)); + error ("%qE attribute cannot be specified for local variables", + name); *no_add_attrs = true; } else diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c index 88d032f2ef6..c8bb508e8aa 100644 --- a/gcc/config/darwin.c +++ b/gcc/config/darwin.c @@ -1,6 +1,6 @@ /* Functions for generic Darwin as target machine for GNU C compiler. Copyright (C) 1989, 1990, 1991, 1992, 1993, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008 + 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Contributed by Apple Computer Inc. @@ -1407,15 +1407,15 @@ darwin_handle_kext_attribute (tree *node, tree name, /* APPLE KEXT stuff -- only applies with pure static C++ code. */ if (! TARGET_KEXTABI) { - warning (0, "%<%s%> 2.95 vtable-compatibility attribute applies " - "only when compiling a kext", IDENTIFIER_POINTER (name)); + warning (0, "%qE 2.95 vtable-compatibility attribute applies " + "only when compiling a kext", name); *no_add_attrs = true; } else if (TREE_CODE (*node) != RECORD_TYPE) { - warning (0, "%<%s%> 2.95 vtable-compatibility attribute applies " - "only to C++ classes", IDENTIFIER_POINTER (name)); + warning (0, "%qE 2.95 vtable-compatibility attribute applies " + "only to C++ classes", name); *no_add_attrs = true; } @@ -1434,8 +1434,8 @@ darwin_handle_weak_import_attribute (tree *node, tree name, { if (TREE_CODE (*node) != FUNCTION_DECL && TREE_CODE (*node) != VAR_DECL) { - warning (OPT_Wattributes, "%qs attribute ignored", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute ignored", + name); *no_add_attrs = true; } else diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c index 57d18057e72..9946d28078f 100644 --- a/gcc/config/h8300/h8300.c +++ b/gcc/config/h8300/h8300.c @@ -1,6 +1,6 @@ /* Subroutines for insn-output.c for Renesas H8/300. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 + 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Contributed by Steve Chamberlain (sac@cygnus.com), Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com). @@ -5287,8 +5287,8 @@ h8300_handle_fndecl_attribute (tree *node, tree name, { if (TREE_CODE (*node) != FUNCTION_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } @@ -5311,8 +5311,8 @@ h8300_handle_eightbit_data_attribute (tree *node, tree name, } else { - warning (OPT_Wattributes, "%qs attribute ignored", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute ignored", + name); *no_add_attrs = true; } @@ -5335,8 +5335,8 @@ h8300_handle_tiny_data_attribute (tree *node, tree name, } else { - warning (OPT_Wattributes, "%qs attribute ignored", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute ignored", + name); *no_add_attrs = true; } diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 90784d2f9b9..bb013a144f6 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -35,7 +35,6 @@ along with GCC; see the file COPYING3. If not see #include "insn-codes.h" #include "insn-attr.h" #include "flags.h" -#include "c-common.h" #include "except.h" #include "function.h" #include "recog.h" @@ -4246,8 +4245,8 @@ ix86_handle_cconv_attribute (tree *node, tree name, && TREE_CODE (*node) != FIELD_DECL && TREE_CODE (*node) != TYPE_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; return NULL_TREE; } @@ -4266,14 +4265,14 @@ ix86_handle_cconv_attribute (tree *node, tree name, if (TREE_CODE (cst) != INTEGER_CST) { warning (OPT_Wattributes, - "%qs attribute requires an integer constant argument", - IDENTIFIER_POINTER (name)); + "%qE attribute requires an integer constant argument", + name); *no_add_attrs = true; } else if (compare_tree_int (cst, REGPARM_MAX) > 0) { - warning (OPT_Wattributes, "argument to %qs attribute larger than %d", - IDENTIFIER_POINTER (name), REGPARM_MAX); + warning (OPT_Wattributes, "argument to %qE attribute larger than %d", + name, REGPARM_MAX); *no_add_attrs = true; } @@ -4284,8 +4283,8 @@ ix86_handle_cconv_attribute (tree *node, tree name, { /* Do not warn when emulating the MS ABI. */ if (TREE_CODE (*node) != FUNCTION_TYPE || ix86_function_type_abi (*node)!=MS_ABI) - warning (OPT_Wattributes, "%qs attribute ignored", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute ignored", + name); *no_add_attrs = true; return NULL_TREE; } @@ -26838,15 +26837,15 @@ ix86_handle_abi_attribute (tree *node, tree name, && TREE_CODE (*node) != FIELD_DECL && TREE_CODE (*node) != TYPE_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; return NULL_TREE; } if (!TARGET_64BIT) { - warning (OPT_Wattributes, "%qs attribute only available for 64-bit", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only available for 64-bit", + name); *no_add_attrs = true; return NULL_TREE; } @@ -26893,8 +26892,8 @@ ix86_handle_struct_attribute (tree *node, tree name, if (!(type && (TREE_CODE (*type) == RECORD_TYPE || TREE_CODE (*type) == UNION_TYPE))) { - warning (OPT_Wattributes, "%qs attribute ignored", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute ignored", + name); *no_add_attrs = true; } @@ -26903,8 +26902,8 @@ ix86_handle_struct_attribute (tree *node, tree name, || ((is_attribute_p ("gcc_struct", name) && lookup_attribute ("ms_struct", TYPE_ATTRIBUTES (*type))))) { - warning (OPT_Wattributes, "%qs incompatible attribute ignored", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE incompatible attribute ignored", + name); *no_add_attrs = true; } diff --git a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c index 62ac279ccd4..3d88517c234 100644 --- a/gcc/config/i386/winnt.c +++ b/gcc/config/i386/winnt.c @@ -1,7 +1,7 @@ /* Subroutines for insn-output.c for Windows NT. Contributed by Douglas Rupp (drupp@cs.washington.edu) Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GCC. @@ -56,8 +56,8 @@ ix86_handle_shared_attribute (tree *node, tree name, { if (TREE_CODE (*node) != VAR_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to variables", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to variables", + name); *no_add_attrs = true; } @@ -78,8 +78,8 @@ ix86_handle_selectany_attribute (tree *node, tree name, initialization later in encode_section_info. */ if (TREE_CODE (*node) != VAR_DECL || !TREE_PUBLIC (*node)) { - error ("%qs attribute applies only to initialized variables" - " with external linkage", IDENTIFIER_POINTER (name)); + error ("%qE attribute applies only to initialized variables" + " with external linkage", name); *no_add_attrs = true; } diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 279672f45aa..1f433a6fb0f 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -581,8 +581,8 @@ ia64_handle_model_attribute (tree *node, tree name, tree args, } else { - warning (OPT_Wattributes, "invalid argument of %qs attribute", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "invalid argument of %qE attribute", + name); *no_add_attrs = true; } @@ -613,8 +613,8 @@ ia64_handle_model_attribute (tree *node, tree name, tree args, break; default: - warning (OPT_Wattributes, "%qs attribute ignored", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute ignored", + name); *no_add_attrs = true; break; } diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c index ad1007c5fee..17d5dd32ebc 100644 --- a/gcc/config/m32c/m32c.c +++ b/gcc/config/m32c/m32c.c @@ -1,5 +1,5 @@ /* Target Code for R8C/M16C/M32C - Copyright (C) 2005, 2006, 2007, 2008 + Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Contributed by Red Hat. @@ -2774,24 +2774,24 @@ function_vector_handler (tree * node ATTRIBUTE_UNUSED, { /* The attribute is not supported for R8C target. */ warning (OPT_Wattributes, - "`%s' attribute is not supported for R8C target", - IDENTIFIER_POINTER (name)); + "%qE attribute is not supported for R8C target", + name); *no_add_attrs = true; } else if (TREE_CODE (*node) != FUNCTION_DECL) { /* The attribute must be applied to functions only. */ warning (OPT_Wattributes, - "`%s' attribute applies only to functions", - IDENTIFIER_POINTER (name)); + "%qE attribute applies only to functions", + name); *no_add_attrs = true; } else if (TREE_CODE (TREE_VALUE (args)) != INTEGER_CST) { /* The argument must be a constant integer. */ warning (OPT_Wattributes, - "`%s' attribute argument not an integer constant", - IDENTIFIER_POINTER (name)); + "%qE attribute argument not an integer constant", + name); *no_add_attrs = true; } else if (TREE_INT_CST_LOW (TREE_VALUE (args)) < 18 @@ -2799,8 +2799,8 @@ function_vector_handler (tree * node ATTRIBUTE_UNUSED, { /* The argument value must be between 18 to 255. */ warning (OPT_Wattributes, - "`%s' attribute argument should be between 18 to 255", - IDENTIFIER_POINTER (name)); + "%qE attribute argument should be between 18 to 255", + name); *no_add_attrs = true; } return NULL_TREE; diff --git a/gcc/config/m68hc11/m68hc11.c b/gcc/config/m68hc11/m68hc11.c index 703b0697af1..024e55de476 100644 --- a/gcc/config/m68hc11/m68hc11.c +++ b/gcc/config/m68hc11/m68hc11.c @@ -1,6 +1,6 @@ /* Subroutines for code generation on Motorola 68HC11 and 68HC12. - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 - Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, + 2009 Free Software Foundation, Inc. Contributed by Stephane Carrez (stcarrez@nerim.fr) This file is part of GCC. @@ -1103,8 +1103,8 @@ m68hc11_handle_page0_attribute (tree *node, tree name, } else { - warning (OPT_Wattributes, "%qs attribute ignored", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute ignored", + name); *no_add_attrs = true; } @@ -1140,8 +1140,8 @@ m68hc11_handle_fntype_attribute (tree *node, tree name, && TREE_CODE (*node) != FIELD_DECL && TREE_CODE (*node) != TYPE_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c index 5cee73f6639..1b5c83bb414 100644 --- a/gcc/config/m68k/m68k.c +++ b/gcc/config/m68k/m68k.c @@ -776,8 +776,8 @@ m68k_handle_fndecl_attribute (tree *node, tree name, { if (TREE_CODE (*node) != FUNCTION_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } diff --git a/gcc/config/mcore/mcore.c b/gcc/config/mcore/mcore.c index 0a5310fcda9..472bb75562a 100644 --- a/gcc/config/mcore/mcore.c +++ b/gcc/config/mcore/mcore.c @@ -1,6 +1,6 @@ /* Output routines for Motorola MCore processor - Copyright (C) 1993, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 - Free Software Foundation, Inc. + Copyright (C) 1993, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, + 2009 Free Software Foundation, Inc. This file is part of GCC. @@ -3027,8 +3027,8 @@ mcore_handle_naked_attribute (tree * node, tree name, tree args ATTRIBUTE_UNUSED } else { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 4472cd16b87..9d712d2f096 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -1289,9 +1289,9 @@ mips_insert_attributes (tree decl, tree *attributes) { /* DECL cannot be simultaneously "mips16" and "nomips16". */ if (mips16_p && nomips16_p) - error ("%qs cannot have both %<mips16%> and " + error ("%qE cannot have both %<mips16%> and " "%<nomips16%> attributes", - IDENTIFIER_POINTER (DECL_NAME (decl))); + DECL_NAME (decl)); } else if (TARGET_FLIP_MIPS16 && !DECL_ARTIFICIAL (decl)) { @@ -1311,11 +1311,11 @@ mips_merge_decl_attributes (tree olddecl, tree newdecl) { /* The decls' "mips16" and "nomips16" attributes must match exactly. */ if (mips_mips16_decl_p (olddecl) != mips_mips16_decl_p (newdecl)) - error ("%qs redeclared with conflicting %qs attributes", - IDENTIFIER_POINTER (DECL_NAME (newdecl)), "mips16"); + error ("%qE redeclared with conflicting %qs attributes", + DECL_NAME (newdecl), "mips16"); if (mips_nomips16_decl_p (olddecl) != mips_nomips16_decl_p (newdecl)) - error ("%qs redeclared with conflicting %qs attributes", - IDENTIFIER_POINTER (DECL_NAME (newdecl)), "nomips16"); + error ("%qE redeclared with conflicting %qs attributes", + DECL_NAME (newdecl), "nomips16"); return merge_attributes (DECL_ATTRIBUTES (olddecl), DECL_ATTRIBUTES (newdecl)); @@ -12372,8 +12372,8 @@ mips_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, gcc_assert (avail != 0); if (TARGET_MIPS16) { - error ("built-in function %qs not supported for MIPS16", - IDENTIFIER_POINTER (DECL_NAME (fndecl))); + error ("built-in function %qE not supported for MIPS16", + DECL_NAME (fndecl)); return ignore ? const0_rtx : CONST0_RTX (mode); } switch (d->builtin_type) diff --git a/gcc/config/picochip/libgccExtras/divmod15.asm b/gcc/config/picochip/libgccExtras/divmod15.asm index 777adf27968..b477e03a011 100644 --- a/gcc/config/picochip/libgccExtras/divmod15.asm +++ b/gcc/config/picochip/libgccExtras/divmod15.asm @@ -33,8 +33,6 @@ _picoMark_FUNCTION_BEGIN= // picoChip Function Prologue : &__divmod15 = 0 bytes -__divmod15: - // The picoChip instruction set has a divstep instruction which // is used to perform one iteration of a binary division algorithm. // The instruction allows 16-bit signed division to be implemented. diff --git a/gcc/config/picochip/picochip.h b/gcc/config/picochip/picochip.h index 7c32ebeec42..a3263d02e02 100644 --- a/gcc/config/picochip/picochip.h +++ b/gcc/config/picochip/picochip.h @@ -729,6 +729,7 @@ enum picochip_builtins PICOCHIP_BUILTIN_HALT }; +#define NO_DOLLAR_IN_LABEL 1 #define NO_DOT_IN_LABEL 1 /* The assembler does support LEB128, despite the auto-configure test diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c index 7ebc14cb1fc..c7adcdb5e04 100644 --- a/gcc/config/rs6000/rs6000-c.c +++ b/gcc/config/rs6000/rs6000-c.c @@ -100,7 +100,7 @@ altivec_categorize_keyword (const cpp_token *tok) { if (tok->type == CPP_NAME) { - cpp_hashnode *ident = tok->val.node; + cpp_hashnode *ident = tok->val.node.node; if (ident == C_CPP_HASHNODE (vector_keyword)) return C_CPP_HASHNODE (__vector_keyword); @@ -150,7 +150,7 @@ init_vector_keywords (void) static cpp_hashnode * rs6000_macro_to_expand (cpp_reader *pfile, const cpp_token *tok) { - cpp_hashnode *expand_this = tok->val.node; + cpp_hashnode *expand_this = tok->val.node.node; cpp_hashnode *ident; ident = altivec_categorize_keyword (tok); diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index a5823a0cc2a..2d34b14f63f 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -20636,8 +20636,8 @@ rs6000_handle_longcall_attribute (tree *node, tree name, && TREE_CODE (*node) != FIELD_DECL && TREE_CODE (*node) != TYPE_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } @@ -20710,7 +20710,7 @@ rs6000_handle_struct_attribute (tree *node, tree name, if (!(type && (TREE_CODE (*type) == RECORD_TYPE || TREE_CODE (*type) == UNION_TYPE))) { - warning (OPT_Wattributes, "%qs attribute ignored", IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute ignored", name); *no_add_attrs = true; } @@ -20719,8 +20719,8 @@ rs6000_handle_struct_attribute (tree *node, tree name, || ((is_attribute_p ("gcc_struct", name) && lookup_attribute ("ms_struct", TYPE_ATTRIBUTES (*type))))) { - warning (OPT_Wattributes, "%qs incompatible attribute ignored", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE incompatible attribute ignored", + name); *no_add_attrs = true; } diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index fe64f3720c5..9d4a96051b7 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -8595,7 +8595,7 @@ [(set (match_operand:DF 0 "nonimmediate_operand" "=r,r,m,r,r,r") (match_operand:DF 1 "input_operand" "r,m,r,G,H,F"))] "! TARGET_POWERPC64 - && ((TARGET_FPRS && !TARGET_DOUBLE_FLOAT) + && ((TARGET_FPRS && TARGET_SINGLE_FLOAT) || TARGET_SOFT_FLOAT || TARGET_E500_SINGLE) && (gpc_reg_operand (operands[0], DFmode) || gpc_reg_operand (operands[1], DFmode))" diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index cad00e4d87f..e25cd42e871 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -37,7 +37,6 @@ along with GCC; see the file COPYING3. If not see #include "insn-attr.h" #include "toplev.h" #include "recog.h" -#include "c-pragma.h" #include "integrate.h" #include "dwarf2.h" #include "tm_p.h" @@ -8196,8 +8195,8 @@ sh_insert_attributes (tree node, tree *attributes) || is_attribute_p ("nosave_low_regs", TREE_PURPOSE (attrs)) || is_attribute_p ("resbank", TREE_PURPOSE (attrs))) warning (OPT_Wattributes, - "%qs attribute only applies to interrupt functions", - IDENTIFIER_POINTER (TREE_PURPOSE (attrs))); + "%qE attribute only applies to interrupt functions", + TREE_PURPOSE (attrs)); else { *tail = tree_cons (TREE_PURPOSE (attrs), NULL_TREE, @@ -8279,14 +8278,14 @@ sh_handle_resbank_handler_attribute (tree * node, tree name, { if (!TARGET_SH2A) { - warning (OPT_Wattributes, "%qs attribute is supported only for SH2A", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute is supported only for SH2A", + name); *no_add_attrs = true; } if (TREE_CODE (*node) != FUNCTION_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } @@ -8303,8 +8302,8 @@ sh_handle_interrupt_handler_attribute (tree *node, tree name, { if (TREE_CODE (*node) != FUNCTION_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } else if (TARGET_SHCOMPACT) @@ -8326,30 +8325,30 @@ sh2a_handle_function_vector_handler_attribute (tree * node, tree name, { if (!TARGET_SH2A) { - warning (OPT_Wattributes, "%qs attribute only applies to SH2A", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to SH2A", + name); *no_add_attrs = true; } else if (TREE_CODE (*node) != FUNCTION_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } else if (TREE_CODE (TREE_VALUE (args)) != INTEGER_CST) { /* The argument must be a constant integer. */ warning (OPT_Wattributes, - "`%s' attribute argument not an integer constant", - IDENTIFIER_POINTER (name)); + "%qE attribute argument not an integer constant", + name); *no_add_attrs = true; } else if (TREE_INT_CST_LOW (TREE_VALUE (args)) > 255) { /* The argument value must be between 0 to 255. */ warning (OPT_Wattributes, - "`%s' attribute argument should be between 0 to 255", - IDENTIFIER_POINTER (name)); + "%qE attribute argument should be between 0 to 255", + name); *no_add_attrs = true; } return NULL_TREE; @@ -8414,15 +8413,15 @@ sh_handle_sp_switch_attribute (tree *node, tree name, tree args, { if (TREE_CODE (*node) != FUNCTION_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } else if (TREE_CODE (TREE_VALUE (args)) != STRING_CST) { /* The argument must be a constant string. */ - warning (OPT_Wattributes, "%qs attribute argument not a string constant", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute argument not a string constant", + name); *no_add_attrs = true; } @@ -8437,8 +8436,8 @@ sh_handle_trap_exit_attribute (tree *node, tree name, tree args, { if (TREE_CODE (*node) != FUNCTION_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } /* The argument specifies a trap number to be used in a trapa instruction @@ -8446,8 +8445,8 @@ sh_handle_trap_exit_attribute (tree *node, tree name, tree args, else if (TREE_CODE (TREE_VALUE (args)) != INTEGER_CST) { /* The argument must be a constant integer. */ - warning (OPT_Wattributes, "%qs attribute argument not an " - "integer constant", IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute argument not an " + "integer constant", name); *no_add_attrs = true; } diff --git a/gcc/config/sh/symbian.c b/gcc/config/sh/symbian.c index 15932dc7a41..f32adf9717f 100644 --- a/gcc/config/sh/symbian.c +++ b/gcc/config/sh/symbian.c @@ -269,8 +269,8 @@ sh_symbian_mark_dllimport (tree decl) if (sh_symbian_dllexport_name_p (oldname)) { - error ("%qs declared as both exported to and imported from a DLL", - IDENTIFIER_POINTER (DECL_NAME (decl))); + error ("%qE declared as both exported to and imported from a DLL", + DECL_NAME (decl)); } else if (sh_symbian_dllimport_name_p (oldname)) { @@ -502,8 +502,8 @@ sh_symbian_handle_dll_attribute (tree *pnode, tree name, tree args, && ( TREE_CODE (node) == VAR_DECL || TREE_CODE (node) == FUNCTION_DECL)) { - error ("external linkage required for symbol %q+D because of %qs attribute", - node, IDENTIFIER_POINTER (name)); + error ("external linkage required for symbol %q+D because of %qE attribute", + node, name); *no_add_attrs = true; } diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c index c089e0369e1..f73bb217605 100644 --- a/gcc/config/spu/spu.c +++ b/gcc/config/spu/spu.c @@ -48,7 +48,6 @@ #include "sched-int.h" #include "params.h" #include "assert.h" -#include "c-common.h" #include "machmode.h" #include "gimple.h" #include "tm-constrs.h" @@ -3725,8 +3724,8 @@ spu_handle_fndecl_attribute (tree * node, { if (TREE_CODE (*node) != FUNCTION_DECL) { - warning (0, "`%s' attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (0, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } @@ -3783,7 +3782,7 @@ spu_handle_vector_attribute (tree * node, tree name, *no_add_attrs = true; /* No need to hang on to the attribute. */ if (!result) - warning (0, "`%s' attribute ignored", IDENTIFIER_POINTER (name)); + warning (0, "%qE attribute ignored", name); else *node = lang_hooks.types.reconstruct_complex_type (*node, result); diff --git a/gcc/config/stormy16/stormy16.c b/gcc/config/stormy16/stormy16.c index f8bb0789708..4d04cae95d9 100644 --- a/gcc/config/stormy16/stormy16.c +++ b/gcc/config/stormy16/stormy16.c @@ -1,6 +1,6 @@ /* Xstormy16 target functions. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Contributed by Red Hat, Inc. This file is part of GCC. @@ -2212,8 +2212,8 @@ xstormy16_handle_interrupt_attribute (tree *node, tree name, { if (TREE_CODE (*node) != FUNCTION_TYPE) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } diff --git a/gcc/config/v850/v850-c.c b/gcc/config/v850/v850-c.c index dc0082cf6ef..718eb82441e 100644 --- a/gcc/config/v850/v850-c.c +++ b/gcc/config/v850/v850-c.c @@ -1,5 +1,5 @@ /* v850 specific, C compiler specific functions. - Copyright (C) 2000, 2007 Free Software Foundation, Inc. + Copyright (C) 2000, 2007, 2009 Free Software Foundation, Inc. Contributed by Jeff Law (law@cygnus.com). This file is part of GCC. @@ -121,6 +121,7 @@ ghs_pragma_section (cpp_reader * pfile ATTRIBUTE_UNUSED) { tree x; enum cpp_ttype type; + tree sect_ident; const char *sect, *alias; enum GHS_section_kind kind; @@ -129,7 +130,10 @@ ghs_pragma_section (cpp_reader * pfile ATTRIBUTE_UNUSED) if (type == CPP_EOF && !repeat) goto reset; else if (type == CPP_NAME) - sect = IDENTIFIER_POINTER (x); + { + sect_ident = x; + sect = IDENTIFIER_POINTER (sect_ident); + } else goto bad; repeat = 0; @@ -162,7 +166,7 @@ ghs_pragma_section (cpp_reader * pfile ATTRIBUTE_UNUSED) else if (streq (sect, "zbss")) kind = GHS_SECTION_KIND_ZDATA; else { - warning (0, "unrecognized section name \"%s\"", sect); + warning (0, "unrecognized section name %qE", sect_ident); return; } diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c index 406dc94ea65..f9e8a7dd8b0 100644 --- a/gcc/config/v850/v850.c +++ b/gcc/config/v850/v850.c @@ -1,6 +1,6 @@ /* Subroutines for insn-output.c for NEC V850 series Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009 Free Software Foundation, Inc. Contributed by Jeff Law (law@cygnus.com). This file is part of GCC. @@ -2050,8 +2050,8 @@ v850_handle_interrupt_attribute (tree * node, { if (TREE_CODE (*node) != FUNCTION_DECL) { - warning (OPT_Wattributes, "%qs attribute only applies to functions", - IDENTIFIER_POINTER (name)); + warning (OPT_Wattributes, "%qE attribute only applies to functions", + name); *no_add_attrs = true; } diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index ca9c05af9f8..602b152f3c6 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,55 @@ +2009-05-10 Jan Hubicka <jh@suse.cz> + + * decl2.c (cxx_callgraph_analyze_expr): Use + cgraph_mark_address_taken. + +2009-05-10 Joseph Myers <joseph@codesourcery.com> + + * call.c (name_as_c_string): Call type_as_string_translate. + Translate identifiers to locale character set. + * cp-tree.h (lang_decl_name): Update prototype. + (type_as_string_translate, decl_as_string_translate, + cxx_printable_name_translate): Declare. + * cxx-pretty-print.c (M_): Define. + (pp_cxx_unqualified_id, pp_cxx_canonical_template_parameter): Mark + English fragments for conditional translation with M_. + * decl.c (grokdeclarator): Translate identifiers to locale + character set for diagnostics. + * error.c (M_): Define. + (dump_template_bindings, dump_type, dump_aggr_type, + dump_type_prefix, dump_global_iord, dump_simple_decl, dump_decl, + dump_function_decl, dump_template_parms, dump_expr, + dump_binary_op, op_to_string, assop_to_string): Mark English + fragments for conditional translation with M_. + (type_as_string): Disable translation of identifiers. + (type_as_string_translate): New. + (expr_as_string): Disable translation of identifiers. + (decl_as_string): Disable translation of identifiers. + (decl_as_string_translate): New. + (lang_decl_name): Add parameter translate. + (args_to_string): Call type_as_string_translate. + (cp_print_error_function): Call cxx_printable_name_translate. + (print_instantiation_full_context, + print_instantiation_partial_context): Call + decl_as_string_translate. + * parser.c (cp_lexer_get_preprocessor_token): Use %qE for + identifier in diagnostic. + * tree.c (cxx_printable_name): Change to + cxx_printable_name_internal. Add parameter translate. + (cxx_printable_name, cxx_printable_name_translate): New wrappers + round cxx_printable_name_internal. + +2009-05-08 H.J. Lu <hongjiu.lu@intel.com> + + PR c/36892 + * call.c (build_call_a): Updated warn_deprecated_use call. + (build_over_call): Likewise. + * decl.c (grokdeclarator): Likewise. + (grokparms): Likewise. + * semantics.c (finish_id_expression): Likewise. + * typeck.c (build_class_member_access_expr): Likewise. + (finish_class_member_access_expr): Likewise. + 2009-05-06 Dodji Seketeli <dodji@redhat.com> PR c++/17395 @@ -7,23 +59,23 @@ 2009-05-05 Shujing Zhao <pearly.zhao@oracle.com> * cp-tree.h: - (opname_tab, assignop_tab, update_member_visibility, yyerror, yyhook, - mangle_compound_literal): Remove unused declarations. - (build_vfield_ref, cxx_print_statistics, clone_function_decl, - adjust_clone_args, maybe_push_cleanup_level, pushtag, make_anon_name, - pushdecl_top_level_maybe_friend, pushdecl_top_level_and_finish, - check_for_out_of_scope_variable, print_other_binding_stack, - maybe_push_decl, cxx_mark_addressable, force_target_expr, - build_target_expr_with_type, finish_case_label, - cxx_maybe_build_cleanup, begin_eh_spec_block, finish_eh_spec_block, - check_template_keyword, cxx_omp_predetermined_sharing, - cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor, - cxx_omp_clause_assign_op, cxx_omp_clause_dtor, cxx_omp_finish_clause, - cxx_omp_privatize_by_reference): Rearrange the declarations line to - match the comment that indicates the .c file which the functions are - defined. - (cxx_print_xnode, cxx_print_decl, cxx_print_type, - cxx_print_identifier, cxx_print_error_function, pushdecl): Add comment. + (opname_tab, assignop_tab, update_member_visibility, yyerror, yyhook, + mangle_compound_literal): Remove unused declarations. + (build_vfield_ref, cxx_print_statistics, clone_function_decl, + adjust_clone_args, maybe_push_cleanup_level, pushtag, make_anon_name, + pushdecl_top_level_maybe_friend, pushdecl_top_level_and_finish, + check_for_out_of_scope_variable, print_other_binding_stack, + maybe_push_decl, cxx_mark_addressable, force_target_expr, + build_target_expr_with_type, finish_case_label, + cxx_maybe_build_cleanup, begin_eh_spec_block, finish_eh_spec_block, + check_template_keyword, cxx_omp_predetermined_sharing, + cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor, + cxx_omp_clause_assign_op, cxx_omp_clause_dtor, cxx_omp_finish_clause, + cxx_omp_privatize_by_reference): Rearrange the declarations line to + match the comment that indicates the .c file which the functions are + defined. + (cxx_print_xnode, cxx_print_decl, cxx_print_type, + cxx_print_identifier, cxx_print_error_function, pushdecl): Add comment. 2009-05-05 Nathan Sidwell <nathan@codesourcery.com> @@ -821,9 +873,9 @@ 2009-02-01 Paolo Carlini <paolo.carlini@oracle.com> - PR c++/39053 - * parser.c (cp_parser_pure_specifier): If there are no tokens left - do not call cp_lexer_consume_token. + PR c++/39053 + * parser.c (cp_parser_pure_specifier): If there are no tokens left + do not call cp_lexer_consume_token. 2009-01-30 Jakub Jelinek <jakub@redhat.com> diff --git a/gcc/cp/call.c b/gcc/cp/call.c index ca45bee5bd8..ee13ba2a414 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -342,7 +342,7 @@ build_call_a (tree function, int n, tree *argarray) current_function_returns_abnormally = 1; if (decl && TREE_DEPRECATED (decl)) - warn_deprecated_use (decl); + warn_deprecated_use (decl, NULL_TREE); require_complete_eh_spec_types (fntype, decl); if (decl && DECL_CONSTRUCTOR_P (decl)) @@ -5457,7 +5457,7 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain) /* Warn about deprecated virtual functions now, since we're about to throw away the decl. */ if (TREE_DEPRECATED (fn)) - warn_deprecated_use (fn); + warn_deprecated_use (fn, NULL_TREE); argarray[0] = build_base_path (PLUS_EXPR, argarray[0], binfo, 1); if (TREE_SIDE_EFFECTS (argarray[0])) @@ -5731,7 +5731,7 @@ name_as_c_string (tree name, tree type, bool *free_p) if (IDENTIFIER_CTOR_OR_DTOR_P (name)) { pretty_name - = CONST_CAST (char *, IDENTIFIER_POINTER (constructor_name (type))); + = CONST_CAST (char *, identifier_to_locale (IDENTIFIER_POINTER (constructor_name (type)))); /* For a destructor, add the '~'. */ if (name == complete_dtor_identifier || name == base_dtor_identifier @@ -5745,14 +5745,14 @@ name_as_c_string (tree name, tree type, bool *free_p) else if (IDENTIFIER_TYPENAME_P (name)) { pretty_name = concat ("operator ", - type_as_string (TREE_TYPE (name), - TFF_PLAIN_IDENTIFIER), + type_as_string_translate (TREE_TYPE (name), + TFF_PLAIN_IDENTIFIER), NULL); /* Remember that we need to free the memory allocated. */ *free_p = true; } else - pretty_name = CONST_CAST (char *, IDENTIFIER_POINTER (name)); + pretty_name = CONST_CAST (char *, identifier_to_locale (IDENTIFIER_POINTER (name))); return pretty_name; } diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index ae93e66366a..0ea2d8623f6 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -4422,9 +4422,11 @@ extern int parm_index (tree); /* in error.c */ extern void init_error (void); extern const char *type_as_string (tree, int); +extern const char *type_as_string_translate (tree, int); extern const char *decl_as_string (tree, int); +extern const char *decl_as_string_translate (tree, int); extern const char *expr_as_string (tree, int); -extern const char *lang_decl_name (tree, int); +extern const char *lang_decl_name (tree, int, bool); extern const char *language_to_string (enum languages); extern const char *class_key_or_enum_as_string (tree); extern void print_instantiation_context (void); @@ -4839,6 +4841,7 @@ extern tree get_first_fn (tree); extern tree ovl_cons (tree, tree); extern tree build_overload (tree, tree); extern const char *cxx_printable_name (tree, int); +extern const char *cxx_printable_name_translate (tree, int); extern tree build_exception_variant (tree, tree); extern tree bind_template_template_parm (tree, tree); extern tree array_type_nelts_total (tree); diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c index 2edffd37548..b8732896aa4 100644 --- a/gcc/cp/cxx-pretty-print.c +++ b/gcc/cp/cxx-pretty-print.c @@ -29,6 +29,10 @@ along with GCC; see the file COPYING3. If not see #include "cp-tree.h" #include "toplev.h" +/* Translate if being used for diagnostics, but not for dump files or + __PRETTY_FUNCTION. */ +#define M_(msgid) (pp_translate_identifiers (pp) ? _(msgid) : (msgid)) + static void pp_cxx_unqualified_id (cxx_pretty_printer *, tree); static void pp_cxx_nested_name_specifier (cxx_pretty_printer *, tree); static void pp_cxx_qualified_id (cxx_pretty_printer *, tree); @@ -147,7 +151,7 @@ pp_cxx_unqualified_id (cxx_pretty_printer *pp, tree t) switch (code) { case RESULT_DECL: - pp_cxx_ws_string (pp, _("<return-value>")); + pp_cxx_ws_string (pp, M_("<return-value>")); break; case OVERLOAD: @@ -166,7 +170,7 @@ pp_cxx_unqualified_id (cxx_pretty_printer *pp, tree t) case IDENTIFIER_NODE: if (t == NULL) - pp_cxx_ws_string (pp, _("<unnamed>")); + pp_cxx_ws_string (pp, M_("<unnamed>")); else if (IDENTIFIER_TYPENAME_P (t)) pp_cxx_conversion_function_id (pp, t); else @@ -2048,7 +2052,7 @@ pp_cxx_canonical_template_parameter (cxx_pretty_printer *pp, tree parm) parm = TEMPLATE_TYPE_PARM_INDEX (parm); pp_cxx_begin_template_argument_list (pp); - pp_cxx_ws_string (pp, _("template-parameter-")); + pp_cxx_ws_string (pp, M_("template-parameter-")); pp_wide_integer (pp, TEMPLATE_PARM_LEVEL (parm)); pp_minus (pp); pp_wide_integer (pp, TEMPLATE_PARM_IDX (parm) + 1); diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index e06dce2719a..fd944f713db 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -7701,7 +7701,7 @@ grokdeclarator (const cp_declarator *declarator, type = TREE_OPERAND (decl, 0); if (TYPE_P (type)) type = constructor_name (type); - name = IDENTIFIER_POINTER (type); + name = identifier_to_locale (IDENTIFIER_POINTER (type)); dname = decl; } break; @@ -7727,10 +7727,10 @@ grokdeclarator (const cp_declarator *declarator, { error ("declarator-id missing; using reserved word %qD", dname); - name = IDENTIFIER_POINTER (dname); + name = identifier_to_locale (IDENTIFIER_POINTER (dname)); } else if (!IDENTIFIER_TYPENAME_P (dname)) - name = IDENTIFIER_POINTER (dname); + name = identifier_to_locale (IDENTIFIER_POINTER (dname)); else { gcc_assert (flags == NO_SPECIAL); @@ -7738,7 +7738,7 @@ grokdeclarator (const cp_declarator *declarator, ctor_return_type = TREE_TYPE (dname); sfk = sfk_conversion; if (is_typename_at_global_scope (dname)) - name = IDENTIFIER_POINTER (dname); + name = identifier_to_locale (IDENTIFIER_POINTER (dname)); else name = "<invalid operator>"; } @@ -7835,7 +7835,7 @@ grokdeclarator (const cp_declarator *declarator, suppress reports of deprecated items. */ if (type && TREE_DEPRECATED (type) && deprecated_state != DEPRECATED_SUPPRESS) - warn_deprecated_use (type); + warn_deprecated_use (type, NULL_TREE); if (type && TREE_CODE (type) == TYPE_DECL) { typedef_decl = type; @@ -7843,7 +7843,7 @@ grokdeclarator (const cp_declarator *declarator, if (TREE_DEPRECATED (type) && DECL_ARTIFICIAL (typedef_decl) && deprecated_state != DEPRECATED_SUPPRESS) - warn_deprecated_use (type); + warn_deprecated_use (type, NULL_TREE); } /* No type at all: default to `int', and set DEFAULTED_INT because it was not a user-defined typedef. */ @@ -9697,7 +9697,7 @@ grokparms (tree parmlist, tree *parms) { tree deptype = type_is_deprecated (type); if (deptype) - warn_deprecated_use (deptype); + warn_deprecated_use (deptype, NULL_TREE); } /* Top-level qualifiers on the parameters are diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 8196b54f4dd..1f8e848bf2e 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -3250,11 +3250,11 @@ cxx_callgraph_analyze_expr (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED) { case PTRMEM_CST: if (TYPE_PTRMEMFUNC_P (TREE_TYPE (t))) - cgraph_mark_needed_node (cgraph_node (PTRMEM_CST_MEMBER (t))); + cgraph_mark_address_taken_node (cgraph_node (PTRMEM_CST_MEMBER (t))); break; case BASELINK: if (TREE_CODE (BASELINK_FUNCTIONS (t)) == FUNCTION_DECL) - cgraph_mark_needed_node (cgraph_node (BASELINK_FUNCTIONS (t))); + cgraph_mark_address_taken_node (cgraph_node (BASELINK_FUNCTIONS (t))); break; case VAR_DECL: if (DECL_VTABLE_OR_VTT_P (t)) diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 13b32ad1850..3c7a8d5c58e 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -41,6 +41,10 @@ along with GCC; see the file COPYING3. If not see static cxx_pretty_printer scratch_pretty_printer; #define cxx_pp (&scratch_pretty_printer) +/* Translate if being used for diagnostics, but not for dump files or + __PRETTY_FUNCTION. */ +#define M_(msgid) (pp_translate_identifiers (cxx_pp) ? _(msgid) : (msgid)) + # define NEXT_CODE(T) (TREE_CODE (TREE_TYPE (T))) static const char *args_to_string (tree, int); @@ -298,7 +302,7 @@ dump_template_bindings (tree parms, tree args, VEC(tree,gc)* typenames) if (arg) dump_template_argument (arg, TFF_PLAIN_IDENTIFIER); else - pp_string (cxx_pp, _("<missing>")); + pp_string (cxx_pp, M_("<missing>")); ++arg_idx; need_comma = 1; @@ -339,9 +343,9 @@ dump_type (tree t, int flags) { case UNKNOWN_TYPE: if (t == init_list_type_node) - pp_string (cxx_pp, _("<brace-enclosed initializer list>")); + pp_string (cxx_pp, M_("<brace-enclosed initializer list>")); else - pp_string (cxx_pp, _("<unresolved overloaded function type>")); + pp_string (cxx_pp, M_("<unresolved overloaded function type>")); break; case TREE_LIST: @@ -481,7 +485,7 @@ dump_type (tree t, int flags) /* Fall through to error. */ case ERROR_MARK: - pp_string (cxx_pp, _("<type error>")); + pp_string (cxx_pp, M_("<type error>")); break; } } @@ -578,9 +582,9 @@ dump_aggr_type (tree t, int flags) if (name == 0 || ANON_AGGRNAME_P (name)) { if (flags & TFF_CLASS_KEY_OR_ENUM) - pp_string (cxx_pp, _("<anonymous>")); + pp_string (cxx_pp, M_("<anonymous>")); else - pp_printf (pp_base (cxx_pp), _("<anonymous %s>"), variety); + pp_printf (pp_base (cxx_pp), M_("<anonymous %s>"), variety); } else pp_cxx_tree_identifier (cxx_pp, name); @@ -702,7 +706,7 @@ dump_type_prefix (tree t, int flags) pp_unsupported_tree (cxx_pp, t); /* fall through. */ case ERROR_MARK: - pp_string (cxx_pp, _("<typeprefixerror>")); + pp_string (cxx_pp, M_("<typeprefixerror>")); break; } } @@ -812,9 +816,9 @@ dump_global_iord (tree t) const char *p = NULL; if (DECL_GLOBAL_CTOR_P (t)) - p = _("(static initializers for %s)"); + p = M_("(static initializers for %s)"); else if (DECL_GLOBAL_DTOR_P (t)) - p = _("(static destructors for %s)"); + p = M_("(static destructors for %s)"); else gcc_unreachable (); @@ -841,7 +845,7 @@ dump_simple_decl (tree t, tree type, int flags) if (DECL_NAME (t)) dump_decl (DECL_NAME (t), flags); else - pp_string (cxx_pp, _("<anonymous>")); + pp_string (cxx_pp, M_("<anonymous>")); if (flags & TFF_DECL_SPECIFIERS) dump_type_suffix (type, flags); } @@ -884,7 +888,7 @@ dump_decl (tree t, int flags) case VAR_DECL: if (DECL_NAME (t) && VTABLE_NAME_P (DECL_NAME (t))) { - pp_string (cxx_pp, _("vtable for ")); + pp_string (cxx_pp, M_("vtable for ")); gcc_assert (TYPE_P (DECL_CONTEXT (t))); dump_type (DECL_CONTEXT (t), flags); break; @@ -896,7 +900,7 @@ dump_decl (tree t, int flags) break; case RESULT_DECL: - pp_string (cxx_pp, _("<return value> ")); + pp_string (cxx_pp, M_("<return value> ")); dump_simple_decl (t, TREE_TYPE (t), flags); break; @@ -909,7 +913,7 @@ dump_decl (tree t, int flags) dump_scope (CP_DECL_CONTEXT (t), flags); flags &= ~TFF_UNQUALIFIED_NAME; if (DECL_NAME (t) == NULL_TREE) - pp_string (cxx_pp, _("<unnamed>")); + pp_string (cxx_pp, M_("<unnamed>")); else pp_cxx_tree_identifier (cxx_pp, DECL_NAME (t)); } @@ -983,7 +987,7 @@ dump_decl (tree t, int flags) case FUNCTION_DECL: if (! DECL_LANG_SPECIFIC (t)) - pp_string (cxx_pp, _("<built-in>")); + pp_string (cxx_pp, M_("<built-in>")); else if (DECL_GLOBAL_CTOR_P (t) || DECL_GLOBAL_DTOR_P (t)) dump_global_iord (t); else @@ -1022,7 +1026,7 @@ dump_decl (tree t, int flags) else if (DECL_INITIAL (t)) dump_expr (DECL_INITIAL (t), flags | TFF_EXPR_IN_PARENS); else - pp_string (cxx_pp, _("<enumerator>")); + pp_string (cxx_pp, M_("<enumerator>")); break; case USING_DECL: @@ -1062,7 +1066,7 @@ dump_decl (tree t, int flags) /* Fall through to error. */ case ERROR_MARK: - pp_string (cxx_pp, _("<declaration error>")); + pp_string (cxx_pp, M_("<declaration error>")); break; } } @@ -1292,7 +1296,7 @@ dump_function_decl (tree t, int flags) { pp_cxx_whitespace (cxx_pp); pp_cxx_left_bracket (cxx_pp); - pp_cxx_ws_string (cxx_pp, _("with")); + pp_cxx_ws_string (cxx_pp, M_("with")); pp_cxx_whitespace (cxx_pp); dump_template_bindings (template_parms, template_args, typenames); pp_cxx_right_bracket (cxx_pp); @@ -1457,7 +1461,7 @@ dump_template_parms (tree info, int primary, int flags) pp_separate_with_comma (cxx_pp); if (!arg) - pp_string (cxx_pp, _("<template parameter error>")); + pp_string (cxx_pp, M_("<template parameter error>")); else dump_template_argument (arg, flags); } @@ -1477,7 +1481,7 @@ dump_template_parms (tree info, int primary, int flags) if (TREE_VEC_ELT (parms, ix) == error_mark_node) { - pp_string (cxx_pp, _("<template parameter error>")); + pp_string (cxx_pp, M_("<template parameter error>")); continue; } @@ -1603,7 +1607,7 @@ dump_expr (tree t, int flags) if (STATEMENT_CLASS_P (t)) { - pp_cxx_ws_string (cxx_pp, _("<statement>")); + pp_cxx_ws_string (cxx_pp, M_("<statement>")); return; } @@ -1632,7 +1636,7 @@ dump_expr (tree t, int flags) case THROW_EXPR: /* While waiting for caret diagnostics, avoid printing __cxa_allocate_exception, __cxa_throw, and the like. */ - pp_cxx_ws_string (cxx_pp, _("<throw-expression>")); + pp_cxx_ws_string (cxx_pp, M_("<throw-expression>")); break; case PTRMEM_CST: @@ -2078,7 +2082,7 @@ dump_expr (tree t, int flags) break; case DEFAULT_ARG: - pp_string (cxx_pp, _("<unparsed>")); + pp_string (cxx_pp, M_("<unparsed>")); break; case TRY_CATCH_EXPR: @@ -2224,7 +2228,7 @@ dump_expr (tree t, int flags) pp_unsupported_tree (cxx_pp, t); /* fall through to ERROR_MARK... */ case ERROR_MARK: - pp_string (cxx_pp, _("<expression error>")); + pp_string (cxx_pp, M_("<expression error>")); break; } } @@ -2238,7 +2242,7 @@ dump_binary_op (const char *opstring, tree t, int flags) if (opstring) pp_cxx_ws_string (cxx_pp, opstring); else - pp_string (cxx_pp, _("<unknown operator>")); + pp_string (cxx_pp, M_("<unknown operator>")); pp_cxx_whitespace (cxx_pp); dump_expr (TREE_OPERAND (t, 1), flags | TFF_EXPR_IN_PARENS); pp_cxx_right_paren (cxx_pp); @@ -2273,6 +2277,15 @@ const char * type_as_string (tree typ, int flags) { reinit_cxx_pp (); + pp_translate_identifiers (cxx_pp) = false; + dump_type (typ, flags); + return pp_formatted_text (cxx_pp); +} + +const char * +type_as_string_translate (tree typ, int flags) +{ + reinit_cxx_pp (); dump_type (typ, flags); return pp_formatted_text (cxx_pp); } @@ -2281,6 +2294,7 @@ const char * expr_as_string (tree decl, int flags) { reinit_cxx_pp (); + pp_translate_identifiers (cxx_pp) = false; dump_expr (decl, flags); return pp_formatted_text (cxx_pp); } @@ -2289,6 +2303,15 @@ const char * decl_as_string (tree decl, int flags) { reinit_cxx_pp (); + pp_translate_identifiers (cxx_pp) = false; + dump_decl (decl, flags); + return pp_formatted_text (cxx_pp); +} + +const char * +decl_as_string_translate (tree decl, int flags) +{ + reinit_cxx_pp (); dump_decl (decl, flags); return pp_formatted_text (cxx_pp); } @@ -2296,12 +2319,15 @@ decl_as_string (tree decl, int flags) /* Generate the three forms of printable names for cxx_printable_name. */ const char * -lang_decl_name (tree decl, int v) +lang_decl_name (tree decl, int v, bool translate) { if (v >= 2) - return decl_as_string (decl, TFF_DECL_SPECIFIERS); + return (translate + ? decl_as_string_translate (decl, TFF_DECL_SPECIFIERS) + : decl_as_string (decl, TFF_DECL_SPECIFIERS)); reinit_cxx_pp (); + pp_translate_identifiers (cxx_pp) = translate; if (v == 1 && DECL_CLASS_SCOPE_P (decl)) { dump_type (CP_DECL_CONTEXT (decl), TFF_PLAIN_IDENTIFIER); @@ -2420,7 +2446,7 @@ static const char * op_to_string (enum tree_code p) { tree id = operator_name_info[(int) p].identifier; - return id ? IDENTIFIER_POINTER (id) : _("<unknown>"); + return id ? IDENTIFIER_POINTER (id) : M_("<unknown>"); } static const char * @@ -2440,7 +2466,7 @@ static const char * assop_to_string (enum tree_code p) { tree id = assignment_operator_name_info[(int) p].identifier; - return id ? IDENTIFIER_POINTER (id) : _("{unknown}"); + return id ? IDENTIFIER_POINTER (id) : M_("{unknown}"); } static const char * @@ -2454,7 +2480,7 @@ args_to_string (tree p, int verbose) return ""; if (TYPE_P (TREE_VALUE (p))) - return type_as_string (p, flags); + return type_as_string_translate (p, flags); reinit_cxx_pp (); for (; p; p = TREE_CHAIN (p)) @@ -2541,7 +2567,7 @@ cp_print_error_function (diagnostic_context *context, fndecl = current_function_decl; pp_printf (context->printer, function_category (fndecl), - cxx_printable_name (fndecl, 2)); + cxx_printable_name_translate (fndecl, 2)); while (abstract_origin) { @@ -2592,18 +2618,18 @@ cp_print_error_function (diagnostic_context *context, if (flag_show_column && s.column != 0) pp_printf (context->printer, _(" inlined from %qs at %s:%d:%d"), - cxx_printable_name (fndecl, 2), + cxx_printable_name_translate (fndecl, 2), s.file, s.line, s.column); else pp_printf (context->printer, _(" inlined from %qs at %s:%d"), - cxx_printable_name (fndecl, 2), + cxx_printable_name_translate (fndecl, 2), s.file, s.line); } else pp_printf (context->printer, _(" inlined from %qs"), - cxx_printable_name (fndecl, 2)); + cxx_printable_name_translate (fndecl, 2)); } } pp_base_character (context->printer, ':'); @@ -2662,8 +2688,8 @@ print_instantiation_full_context (diagnostic_context *context) pp_verbatim (context->printer, _("%s: In instantiation of %qs:\n"), LOCATION_FILE (location), - decl_as_string (p->decl, - TFF_DECL_SPECIFIERS | TFF_RETURN_TYPE)); + decl_as_string_translate (p->decl, + TFF_DECL_SPECIFIERS | TFF_RETURN_TYPE)); location = p->locus; p = p->next; @@ -2686,8 +2712,8 @@ print_instantiation_partial_context (diagnostic_context *context, break; pp_verbatim (context->printer, _("%s:%d: instantiated from %qs\n"), xloc.file, xloc.line, - decl_as_string (t->decl, - TFF_DECL_SPECIFIERS | TFF_RETURN_TYPE)); + decl_as_string_translate (t->decl, + TFF_DECL_SPECIFIERS | TFF_RETURN_TYPE)); loc = t->locus; } pp_verbatim (context->printer, _("%s:%d: instantiated from here"), diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index c691ef24ff6..1fc9469fcdf 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -428,8 +428,8 @@ cp_lexer_get_preprocessor_token (cp_lexer *lexer, cp_token *token) /* Warn about the C++0x keyword (but still treat it as an identifier). */ warning (OPT_Wc__0x_compat, - "identifier %<%s%> will become a keyword in C++0x", - IDENTIFIER_POINTER (token->u.value)); + "identifier %qE will become a keyword in C++0x", + token->u.value); /* Clear out the C_RID_CODE so we don't warn about this particular identifier-turned-keyword again. */ diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index dd84891d73b..8c0a1e510ce 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -3038,7 +3038,7 @@ finish_id_expression (tree id_expression, } if (TREE_DEPRECATED (decl)) - warn_deprecated_use (decl); + warn_deprecated_use (decl, NULL_TREE); return decl; } @@ -5050,4 +5050,23 @@ finish_trait_expr (cp_trait_kind kind, tree type1, tree type2) ? boolean_true_node : boolean_false_node); } +/* Do-nothing variants of functions to handle pragma FLOAT_CONST_DECIMAL64, + which is ignored for C++. */ + +void +set_float_const_decimal64 (void) +{ +} + +void +clear_float_const_decimal64 (void) +{ +} + +bool +float_const_decimal64_p (void) +{ + return 0; +} + #include "gt-cp-semantics.h" diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index c95c11c4dde..9cc767da07c 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -1238,11 +1238,12 @@ build_overload (tree decl, tree chain) #define PRINT_RING_SIZE 4 -const char * -cxx_printable_name (tree decl, int v) +static const char * +cxx_printable_name_internal (tree decl, int v, bool translate) { static unsigned int uid_ring[PRINT_RING_SIZE]; static char *print_ring[PRINT_RING_SIZE]; + static bool trans_ring[PRINT_RING_SIZE]; static int ring_counter; int i; @@ -1250,11 +1251,11 @@ cxx_printable_name (tree decl, int v) if (v < 2 || TREE_CODE (decl) != FUNCTION_DECL || DECL_LANG_SPECIFIC (decl) == 0) - return lang_decl_name (decl, v); + return lang_decl_name (decl, v, translate); /* See if this print name is lying around. */ for (i = 0; i < PRINT_RING_SIZE; i++) - if (uid_ring[i] == DECL_UID (decl)) + if (uid_ring[i] == DECL_UID (decl) && translate == trans_ring[i]) /* yes, so return it. */ return print_ring[i]; @@ -1273,10 +1274,23 @@ cxx_printable_name (tree decl, int v) if (print_ring[ring_counter]) free (print_ring[ring_counter]); - print_ring[ring_counter] = xstrdup (lang_decl_name (decl, v)); + print_ring[ring_counter] = xstrdup (lang_decl_name (decl, v, translate)); uid_ring[ring_counter] = DECL_UID (decl); + trans_ring[ring_counter] = translate; return print_ring[ring_counter]; } + +const char * +cxx_printable_name (tree decl, int v) +{ + return cxx_printable_name_internal (decl, v, false); +} + +const char * +cxx_printable_name_translate (tree decl, int v) +{ + return cxx_printable_name_internal (decl, v, true); +} /* Build the FUNCTION_TYPE or METHOD_TYPE which may throw exceptions listed in RAISES. */ diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index e34d942a06c..4486b9065a1 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -1909,7 +1909,7 @@ build_class_member_access_expr (tree object, tree member, member_scope = DECL_CLASS_CONTEXT (member); mark_used (member); if (TREE_DEPRECATED (member)) - warn_deprecated_use (member); + warn_deprecated_use (member, NULL_TREE); } else member_scope = BINFO_TYPE (BASELINK_ACCESS_BINFO (member)); @@ -2369,7 +2369,7 @@ finish_class_member_access_expr (tree object, tree name, bool template_p, } if (TREE_DEPRECATED (member)) - warn_deprecated_use (member); + warn_deprecated_use (member, NULL_TREE); if (template_p) check_template_keyword (member); diff --git a/gcc/cse.c b/gcc/cse.c index 2b814937535..a697ed428e0 100644 --- a/gcc/cse.c +++ b/gcc/cse.c @@ -517,6 +517,14 @@ static struct table_elt *free_element_chain; static int constant_pool_entries_cost; static int constant_pool_entries_regcost; +/* Trace a patch through the CFG. */ + +struct branch_path +{ + /* The basic block for this path entry. */ + basic_block bb; +}; + /* This data describes a block that will be processed by cse_extended_basic_block. */ @@ -527,11 +535,7 @@ struct cse_basic_block_data /* Size of current branch path, if any. */ int path_size; /* Current path, indicating which basic_blocks will be processed. */ - struct branch_path - { - /* The basic block for this path entry. */ - basic_block bb; - } *path; + struct branch_path *path; }; @@ -7058,4 +7062,3 @@ struct rtl_opt_pass pass_cse_after_global_opts = TODO_verify_flow /* todo_flags_finish */ } }; - diff --git a/gcc/df-problems.c b/gcc/df-problems.c index a4853273214..f48da9bc8dc 100644 --- a/gcc/df-problems.c +++ b/gcc/df-problems.c @@ -316,7 +316,61 @@ df_rd_alloc (bitmap all_blocks) } -/* Process a list of DEFs for df_rd_bb_local_compute. */ +/* Add the effect of the top artificial defs of BB to the reaching definitions + bitmap LOCAL_RD. */ + +void +df_rd_simulate_artificial_defs_at_top (basic_block bb, bitmap local_rd) +{ + int bb_index = bb->index; + df_ref *def_rec; + for (def_rec = df_get_artificial_defs (bb_index); *def_rec; def_rec++) + { + df_ref def = *def_rec; + if (DF_REF_FLAGS (def) & DF_REF_AT_TOP) + { + unsigned int dregno = DF_REF_REGNO (def); + if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL))) + bitmap_clear_range (local_rd, + DF_DEFS_BEGIN (dregno), + DF_DEFS_COUNT (dregno)); + bitmap_set_bit (local_rd, DF_REF_ID (def)); + } + } +} + +/* Add the effect of the defs of INSN to the reaching definitions bitmap + LOCAL_RD. */ + +void +df_rd_simulate_one_insn (basic_block bb ATTRIBUTE_UNUSED, rtx insn, + bitmap local_rd) +{ + unsigned uid = INSN_UID (insn); + df_ref *def_rec; + + for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++) + { + df_ref def = *def_rec; + unsigned int dregno = DF_REF_REGNO (def); + if ((!(df->changeable_flags & DF_NO_HARD_REGS)) + || (dregno >= FIRST_PSEUDO_REGISTER)) + { + if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL))) + bitmap_clear_range (local_rd, + DF_DEFS_BEGIN (dregno), + DF_DEFS_COUNT (dregno)); + if (!(DF_REF_FLAGS (def) + & (DF_REF_MUST_CLOBBER | DF_REF_MAY_CLOBBER))) + bitmap_set_bit (local_rd, DF_REF_ID (def)); + } + } +} + +/* Process a list of DEFs for df_rd_bb_local_compute. This is a bit + more complicated than just simulating, because we must produce the + gen and kill sets and hence deal with the two possible representations + of kill sets. */ static void df_rd_bb_local_compute_process_def (struct df_rd_bb_info *bb_info, @@ -2076,7 +2130,6 @@ df_chain_create_bb (unsigned int bb_index) struct df_rd_bb_info *bb_info = df_rd_get_bb_info (bb_index); rtx insn; bitmap cpy = BITMAP_ALLOC (NULL); - df_ref *def_rec; bitmap_copy (cpy, bb_info->in); bitmap_set_bit (df_chain->out_of_date_transfer_functions, bb_index); @@ -2095,57 +2148,23 @@ df_chain_create_bb (unsigned int bb_index) DF_REF_AT_TOP); #endif - for (def_rec = df_get_artificial_defs (bb_index); *def_rec; def_rec++) - { - df_ref def = *def_rec; - if (DF_REF_FLAGS (def) & DF_REF_AT_TOP) - { - unsigned int dregno = DF_REF_REGNO (def); - if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL))) - bitmap_clear_range (cpy, - DF_DEFS_BEGIN (dregno), - DF_DEFS_COUNT (dregno)); - bitmap_set_bit (cpy, DF_REF_ID (def)); - } - } + df_rd_simulate_artificial_defs_at_top (bb, cpy); /* Process the regular instructions next. */ FOR_BB_INSNS (bb, insn) - { - df_ref *def_rec; - unsigned int uid = INSN_UID (insn); - - if (!INSN_P (insn)) - continue; - - /* Now scan the uses and link them up with the defs that remain - in the cpy vector. */ - - df_chain_create_bb_process_use (cpy, DF_INSN_UID_USES (uid), 0); - - if (df->changeable_flags & DF_EQ_NOTES) - df_chain_create_bb_process_use (cpy, DF_INSN_UID_EQ_USES (uid), 0); + if (INSN_P (insn)) + { + unsigned int uid = INSN_UID (insn); + /* First scan the uses and link them up with the defs that remain + in the cpy vector. */ + df_chain_create_bb_process_use (cpy, DF_INSN_UID_USES (uid), 0); + if (df->changeable_flags & DF_EQ_NOTES) + df_chain_create_bb_process_use (cpy, DF_INSN_UID_EQ_USES (uid), 0); - /* Since we are going forwards, process the defs second. This - pass only changes the bits in cpy. */ - for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++) - { - df_ref def = *def_rec; - unsigned int dregno = DF_REF_REGNO (def); - if ((!(df->changeable_flags & DF_NO_HARD_REGS)) - || (dregno >= FIRST_PSEUDO_REGISTER)) - { - if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL))) - bitmap_clear_range (cpy, - DF_DEFS_BEGIN (dregno), - DF_DEFS_COUNT (dregno)); - if (!(DF_REF_FLAGS (def) - & (DF_REF_MUST_CLOBBER | DF_REF_MAY_CLOBBER))) - bitmap_set_bit (cpy, DF_REF_ID (def)); - } - } - } + /* Since we are going forwards, process the defs second. */ + df_rd_simulate_one_insn (bb, insn, cpy); + } /* Create the chains for the artificial uses of the hard registers at the end of the block. */ @@ -939,6 +939,8 @@ extern void df_grow_bb_info (struct dataflow *); extern void df_chain_dump (struct df_link *, FILE *); extern void df_print_bb_index (basic_block bb, FILE *file); extern void df_rd_add_problem (void); +extern void df_rd_simulate_artificial_defs_at_top (basic_block, bitmap); +extern void df_rd_simulate_one_insn (basic_block, rtx, bitmap); extern void df_lr_add_problem (void); extern void df_lr_verify_transfer_functions (void); extern void df_live_verify_transfer_functions (void); diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 4e06be3daca..6b626e2add7 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -958,10 +958,6 @@ is incomplete: @itemize @bullet @item -Pragma @code{FLOAT_CONST_DECIMAL64} is not supported, nor is the @samp{d} -suffix for literal constants of type @code{double}. - -@item When the value of a decimal floating type cannot be represented in the integer type to which it is being converted, the result is undefined rather than the result value specified by the draft technical report. @@ -2069,6 +2065,7 @@ objects (@pxref{C++ Attributes}). These attributes are not currently implemented for Objective-C@. @item deprecated +@itemx deprecated (@var{msg}) @cindex @code{deprecated} attribute. The @code{deprecated} attribute results in a warning if the function is used anywhere in the source file. This is useful when identifying @@ -2084,7 +2081,9 @@ int old_fn (); int (*fn_ptr)() = old_fn; @end smallexample -results in a warning on line 3 but not line 2. +results in a warning on line 3 but not line 2. The optional msg +argument, which must be a string, will be printed in the warning if +present. The @code{deprecated} attribute can also be used for variables and types (@pxref{Variable Attributes}, @pxref{Type Attributes}.) @@ -3849,6 +3848,7 @@ These attributes override the default chosen by the @option{-fno-common} and @option{-fcommon} flags respectively. @item deprecated +@itemx deprecated (@var{msg}) @cindex @code{deprecated} attribute The @code{deprecated} attribute results in a warning if the variable is used anywhere in the source file. This is useful when identifying @@ -3864,7 +3864,9 @@ extern int old_var; int new_fn () @{ return old_var; @} @end smallexample -results in a warning on line 3 but not line 2. +results in a warning on line 3 but not line 2. The optional msg +argument, which must be a string, will be printed in the warning if +present. The @code{deprecated} attribute can also be used for functions and types (@pxref{Function Attributes}, @pxref{Type Attributes}.) @@ -4494,6 +4496,7 @@ not referenced, but contain constructors and destructors that have nontrivial bookkeeping functions. @item deprecated +@itemx deprecated (@var{msg}) The @code{deprecated} attribute results in a warning if the type is used anywhere in the source file. This is useful when identifying types that are expected to be removed in a future version of a program. @@ -4516,7 +4519,9 @@ T3 z __attribute__ ((deprecated)); results in a warning on line 2 and 3 but not lines 4, 5, or 6. No warning is issued for line 4 because T2 is not explicitly deprecated. Line 5 has no warning because T3 is explicitly -deprecated. Similarly for line 6. +deprecated. Similarly for line 6. The optional msg +argument, which must be a string, will be printed in the warning if +present. The @code{deprecated} attribute can also be used for functions and variables (@pxref{Function Attributes}, @pxref{Variable Attributes}.) diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 0021e800916..763654685bf 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -259,8 +259,8 @@ Objective-C and Objective-C++ Dialects}. -Wswitch -Wswitch-default -Wswitch-enum -Wsync-nand @gol -Wsystem-headers -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized @gol -Wunknown-pragmas -Wno-pragmas -Wunreachable-code @gol --Wunused -Wunused-function -Wunused-label -Wunused-parameter @gol --Wunused-value -Wunused-variable @gol +-Wunsuffixed-float-constants -Wunused -Wunused-function @gol +-Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable @gol -Wvariadic-macros -Wvla @gol -Wvolatile-register-var -Wwrite-strings} @@ -4218,6 +4218,15 @@ minimum maximum, so we do not diagnose overlength strings in C++@. This option is implied by @option{-pedantic}, and can be disabled with @option{-Wno-overlength-strings}. + +@item -Wunsuffixed-float-constants +@opindex Wunsuffixed-float-constants + +GCC will issue a warning for any floating constant that does not have +a suffix. When used together with @option{-Wsystem-headers} it will +warn about such constants in system header files. This can be useful +when preparing code to use with the @code{FLOAT_CONST_DECIMAL64} pragma +from the decimal floating-point extension to C99. @end table @node Debugging Options @@ -4585,13 +4594,14 @@ and dbg_cnt(tail_call) will return false always. @itemx -fdump-rtl-@var{pass} @opindex d Says to make debugging dumps during compilation at times specified by -@var{letters}. This is used for debugging the RTL-based passes of the -compiler. The file names for most of the dumps are made by appending a -pass number and a word to the @var{dumpname}. @var{dumpname} is generated -from the name of the output file, if explicitly specified and it is not -an executable, otherwise it is the basename of the source file. These -switches may have different effects when @option{-E} is used for -preprocessing. +@var{letters}. This is used for debugging the RTL-based passes of the +compiler. The file names for most of the dumps are made by appending +a pass number and a word to the @var{dumpname}, and the files are +created in the directory of the output file. @var{dumpname} is +generated from the name of the output file, if explicitly specified +and it is not an executable, otherwise it is the basename of the +source file. These switches may have different effects when +@option{-E} is used for preprocessing. Debug dumps can be enabled with a @option{-fdump-rtl} switch or some @option{-d} option @var{letters}. Here are the possible @@ -4919,7 +4929,8 @@ invocations with different options, in particular with and without @opindex fdump-translation-unit Dump a representation of the tree structure for the entire translation unit to a file. The file name is made by appending @file{.tu} to the -source file name. If the @samp{-@var{options}} form is used, @var{options} +source file name, and the file is created in the same directory as the +output file. If the @samp{-@var{options}} form is used, @var{options} controls the details of the dump as described for the @option{-fdump-tree} options. @@ -4927,16 +4938,19 @@ controls the details of the dump as described for the @itemx -fdump-class-hierarchy-@var{options} @r{(C++ only)} @opindex fdump-class-hierarchy Dump a representation of each class's hierarchy and virtual function -table layout to a file. The file name is made by appending @file{.class} -to the source file name. If the @samp{-@var{options}} form is used, -@var{options} controls the details of the dump as described for the -@option{-fdump-tree} options. +table layout to a file. The file name is made by appending +@file{.class} to the source file name, and the file is created in the +same directory as the output file. If the @samp{-@var{options}} form +is used, @var{options} controls the details of the dump as described +for the @option{-fdump-tree} options. @item -fdump-ipa-@var{switch} @opindex fdump-ipa Control the dumping at various stages of inter-procedural analysis -language tree to a file. The file name is generated by appending a switch -specific suffix to the source file name. The following dumps are possible: +language tree to a file. The file name is generated by appending a +switch specific suffix to the source file name, and the file is created +in the same directory as the output file. The following dumps are +possible: @table @samp @item all @@ -4954,22 +4968,25 @@ Dump after function inlining. @item -fdump-statistics-@var{option} @opindex -fdump-statistics Enable and control dumping of pass statistics in a separate file. The -file name is generated by appending a suffix ending in @samp{.statistics} -to the source file name. If the @samp{-@var{option}} form is used, -@samp{-stats} will cause counters to be summed over the whole compilation unit -while @samp{-details} will dump every event as the passes generate them. -The default with no option is to sum counters for each function compiled. +file name is generated by appending a suffix ending in +@samp{.statistics} to the source file name, and the file is created in +the same directory as the output file. If the @samp{-@var{option}} +form is used, @samp{-stats} will cause counters to be summed over the +whole compilation unit while @samp{-details} will dump every event as +the passes generate them. The default with no option is to sum +counters for each function compiled. @item -fdump-tree-@var{switch} @itemx -fdump-tree-@var{switch}-@var{options} @opindex fdump-tree Control the dumping at various stages of processing the intermediate -language tree to a file. The file name is generated by appending a switch -specific suffix to the source file name. If the @samp{-@var{options}} -form is used, @var{options} is a list of @samp{-} separated options that -control the details of the dump. Not all options are applicable to all -dumps, those which are not meaningful will be ignored. The following -options are available +language tree to a file. The file name is generated by appending a +switch specific suffix to the source file name, and the file is +created in the same directory as the output file. If the +@samp{-@var{options}} form is used, @var{options} is a list of +@samp{-} separated options that control the details of the dump. Not +all options are applicable to all dumps, those which are not +meaningful will be ignored. The following options are available @table @samp @item address @@ -5537,8 +5554,8 @@ instructions and checks if the result can be simplified. If loop unrolling is active, two passes are performed and the second is scheduled after loop unrolling. -This option is enabled by default at optimization levels @option{-O2}, -@option{-O3}, @option{-Os}. +This option is enabled by default at optimization levels @option{-O}, +@option{-O2}, @option{-O3}, @option{-Os}. @item -fomit-frame-pointer @opindex fomit-frame-pointer diff --git a/gcc/dojump.c b/gcc/dojump.c index eb0649737c6..76f62c62eba 100644 --- a/gcc/dojump.c +++ b/gcc/dojump.c @@ -141,7 +141,8 @@ prefer_and_bit_test (enum machine_mode mode, int bitnum) } /* Fill in the integers. */ - XEXP (and_test, 1) = GEN_INT ((unsigned HOST_WIDE_INT) 1 << bitnum); + XEXP (and_test, 1) + = immed_double_const ((unsigned HOST_WIDE_INT) 1 << bitnum, 0, mode); XEXP (XEXP (shift_test, 0), 1) = GEN_INT (bitnum); return (rtx_cost (and_test, IF_THEN_ELSE, optimize_insn_for_speed_p ()) @@ -474,10 +475,10 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label) && prefer_and_bit_test (TYPE_MODE (argtype), TREE_INT_CST_LOW (shift))) { - HOST_WIDE_INT mask = (HOST_WIDE_INT) 1 - << TREE_INT_CST_LOW (shift); + unsigned HOST_WIDE_INT mask + = (unsigned HOST_WIDE_INT) 1 << TREE_INT_CST_LOW (shift); do_jump (build2 (BIT_AND_EXPR, argtype, arg, - build_int_cst_type (argtype, mask)), + build_int_cst_wide_type (argtype, mask, 0)), clr_label, set_label); break; } diff --git a/gcc/except.c b/gcc/except.c index 3ba3b67a197..a33f3096fbf 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -338,10 +338,9 @@ gen_eh_region (enum eh_region_type type, struct eh_region *outer) } struct eh_region * -gen_eh_region_cleanup (struct eh_region *outer, struct eh_region *prev_try) +gen_eh_region_cleanup (struct eh_region *outer) { struct eh_region *cleanup = gen_eh_region (ERT_CLEANUP, outer); - cleanup->u.cleanup.prev_try = prev_try; return cleanup; } @@ -1183,8 +1182,8 @@ duplicate_eh_regions_1 (eh_region old, eh_region outer, int eh_offset) return ret; } -/* Return prev_try pointers catch subregions of R should - point to. */ +/* Look for first outer region of R (or R itself) that is + TRY region. Return NULL if none. */ static struct eh_region * find_prev_try (struct eh_region * r) @@ -1208,7 +1207,7 @@ int duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map, void *data, int copy_region, int outer_region) { - eh_region cur, prev_try, old_prev_try, outer, *splice; + eh_region cur, outer, *splice; int i, min_region, max_region, eh_offset, cfun_last_region_number; int num_regions; @@ -1228,14 +1227,12 @@ duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map, max_region = 0; cur = VEC_index (eh_region, ifun->eh->region_array, copy_region); - old_prev_try = find_prev_try (cur); duplicate_eh_regions_0 (cur, &min_region, &max_region); } else { min_region = 1; max_region = ifun->eh->last_region_number; - old_prev_try = NULL; } num_regions = max_region - min_region + 1; cfun_last_region_number = cfun->eh->last_region_number; @@ -1302,12 +1299,6 @@ duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map, if (cur && cur->tree_label) cur->tree_label = map (cur->tree_label, data); - /* Search for the containing ERT_TRY region to fix up - the prev_try short-cuts for ERT_CLEANUP regions. */ - prev_try = NULL; - if (outer_region > 0) - prev_try = find_prev_try (VEC_index (eh_region, cfun->eh->region_array, outer_region)); - /* Remap all of the internal catch and cleanup linkages. Since we duplicate entire subtrees, all of the referenced regions will have been copied too. And since we renumbered them as a block, a simple @@ -1354,13 +1345,6 @@ duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map, REMAP (cur->u.eh_catch.prev_catch); break; - case ERT_CLEANUP: - if (cur->u.cleanup.prev_try != old_prev_try) - REMAP (cur->u.cleanup.prev_try); - else - cur->u.cleanup.prev_try = prev_try; - break; - default: break; } @@ -1394,14 +1378,10 @@ copy_eh_region_1 (struct eh_region *old, struct eh_region *new_outer) /* Return new copy of eh region OLD inside region NEW_OUTER. - Copy whole catch-try chain if neccesary and update cleanup region prev_try - pointers. - - PREV_TRY_MAP points to outer TRY region if it was copied in trace already. */ + Copy whole catch-try chain if neccesary. */ static struct eh_region * -copy_eh_region (struct eh_region *old, struct eh_region *new_outer, - struct eh_region *prev_try_map) +copy_eh_region (struct eh_region *old, struct eh_region *new_outer) { struct eh_region *r, *n, *old_try, *new_try, *ret = NULL; VEC(eh_region,heap) *catch_list = NULL; @@ -1410,11 +1390,6 @@ copy_eh_region (struct eh_region *old, struct eh_region *new_outer, { gcc_assert (old->type != ERT_TRY); r = copy_eh_region_1 (old, new_outer); - if (r->type == ERT_CLEANUP && prev_try_map) - { - gcc_assert (r->u.cleanup.prev_try); - r->u.cleanup.prev_try = prev_try_map; - } return r; } @@ -1477,7 +1452,7 @@ struct eh_region * redirect_eh_edge_to_label (edge e, tree new_dest_label, bool is_resx, bool inlinable_call, int region_number) { - struct eh_region *outer, *prev_try_map = NULL; + struct eh_region *outer; struct eh_region *region; VEC (eh_region, heap) * trace = NULL; int i; @@ -1547,7 +1522,7 @@ redirect_eh_edge_to_label (edge e, tree new_dest_label, bool is_resx, gcc_assert (!outer || old->outer != outer->outer); /* Copy region and update label. */ - r = copy_eh_region (old, outer, prev_try_map); + r = copy_eh_region (old, outer); VEC_replace (eh_region, trace, i, r); if (r->tree_label && label_to_block (r->tree_label) == old_bb) { @@ -1587,14 +1562,11 @@ redirect_eh_edge_to_label (edge e, tree new_dest_label, bool is_resx, } } - /* Cleanup regions points to outer TRY blocks. */ - if (r->type == ERT_TRY) - prev_try_map = r; outer = r; } if (is_resx || region->type == ERT_THROW) - r = copy_eh_region (region, outer, prev_try_map); + r = copy_eh_region (region, outer); } VEC_free (eh_region, heap, trace); @@ -2673,32 +2645,6 @@ remove_eh_handler_and_replace (struct eh_region *region, outer = region->outer; - /* When we are moving the region in EH tree, update prev_try pointers. */ - if ((outer != replace || region->type == ERT_TRY) && region->inner) - { - struct eh_region *prev_try = find_prev_try (replace); - p = region->inner; - while (p != region) - { - if (p->type == ERT_CLEANUP) - p->u.cleanup.prev_try = prev_try; - if (p->type != ERT_TRY - && p->type != ERT_MUST_NOT_THROW - && (p->type != ERT_ALLOWED_EXCEPTIONS - || p->u.allowed.type_list) - && p->inner) - p = p->inner; - else if (p->next_peer) - p = p->next_peer; - else - { - while (p != region && !p->next_peer) - p = p->outer; - if (p != region) - p = p->next_peer; - } - } - } /* For the benefit of efficiently handling REG_EH_REGION notes, replace this region in the region array with its containing region. Note that previous region deletions may result in @@ -3120,8 +3066,20 @@ foreach_reachable_handler (int region_number, bool is_resx, bool inlinable_call, to the next outer cleanup region, so the flow graph will be accurate. */ if (region->type == ERT_CLEANUP) - region = region->u.cleanup.prev_try; - else + { + enum reachable_code code = RNL_NOT_CAUGHT; + region = find_prev_try (region->outer); + /* Continue looking for outer TRY region until we find one + that might cath something. */ + while (region + && (code = reachable_next_level (region, type_thrown, &info, + inlinable_call || is_resx)) + == RNL_NOT_CAUGHT) + region = find_prev_try (region->outer); + if (code >= RNL_CAUGHT) + break; + } + if (region) region = region->outer; } } @@ -4418,9 +4376,6 @@ dump_eh_tree (FILE * out, struct function *fun) switch (i->type) { case ERT_CLEANUP: - if (i->u.cleanup.prev_try) - fprintf (out, " prev try:%i", - i->u.cleanup.prev_try->region_number); break; case ERT_TRY: @@ -4500,21 +4455,13 @@ debug_eh_tree (struct function *fn) /* Verify EH region invariants. */ static bool -verify_eh_region (struct eh_region *region, struct eh_region *prev_try) +verify_eh_region (struct eh_region *region) { bool found = false; if (!region) return false; switch (region->type) { - case ERT_CLEANUP: - if (region->u.cleanup.prev_try != prev_try) - { - error ("Wrong prev_try pointer in EH region %i", - region->region_number); - found = true; - } - break; case ERT_TRY: { struct eh_region *c, *prev = NULL; @@ -4561,6 +4508,7 @@ verify_eh_region (struct eh_region *region, struct eh_region *prev_try) found = true; } break; + case ERT_CLEANUP: case ERT_ALLOWED_EXCEPTIONS: case ERT_MUST_NOT_THROW: case ERT_THROW: @@ -4568,14 +4516,8 @@ verify_eh_region (struct eh_region *region, struct eh_region *prev_try) case ERT_UNKNOWN: gcc_unreachable (); } - if (region->type == ERT_TRY) - prev_try = region; - else if (region->type == ERT_MUST_NOT_THROW - || (region->type == ERT_ALLOWED_EXCEPTIONS - && !region->u.allowed.type_list)) - prev_try = NULL; for (region = region->inner; region; region = region->next_peer) - found |= verify_eh_region (region, prev_try); + found |= verify_eh_region (region); return found; } @@ -4659,7 +4601,7 @@ verify_eh_tree (struct function *fun) } if (!err) for (i = fun->eh->region_tree; i; i = i->next_peer) - err |= verify_eh_region (i, NULL); + err |= verify_eh_region (i); if (err) { diff --git a/gcc/except.h b/gcc/except.h index 50d6b314efd..70506d3a8c5 100644 --- a/gcc/except.h +++ b/gcc/except.h @@ -1,6 +1,6 @@ /* Exception Handling interface routines. Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2007, 2008 Free Software Foundation, Inc. + 2007, 2008, 2009 Free Software Foundation, Inc. Contributed by Mike Stump <mrs@cygnus.com>. This file is part of GCC. @@ -24,6 +24,18 @@ along with GCC; see the file COPYING3. If not see struct function; +/* The type of an exception region. */ +enum eh_region_type +{ + ERT_UNKNOWN = 0, + ERT_CLEANUP, + ERT_TRY, + ERT_CATCH, + ERT_ALLOWED_EXCEPTIONS, + ERT_MUST_NOT_THROW, + ERT_THROW +}; + /* Describes one exception region. */ struct GTY(()) eh_region { @@ -45,16 +57,7 @@ struct GTY(()) eh_region bitmap aka; /* Each region does exactly one thing. */ - enum eh_region_type - { - ERT_UNKNOWN = 0, - ERT_CLEANUP, - ERT_TRY, - ERT_CATCH, - ERT_ALLOWED_EXCEPTIONS, - ERT_MUST_NOT_THROW, - ERT_THROW - } type; + enum eh_region_type type; /* Holds the action to perform based on the preceding type. */ union eh_region_u { @@ -85,12 +88,6 @@ struct GTY(()) eh_region struct eh_region_u_throw { tree type; } GTY ((tag ("ERT_THROW"))) eh_throw; - - /* Retain the cleanup expression even after expansion so that - we can match up fixup regions. */ - struct eh_region_u_cleanup { - struct eh_region *prev_try; - } GTY ((tag ("ERT_CLEANUP"))) cleanup; } GTY ((desc ("%0.type"))) u; /* Entry point for this region's handler before landing pads are built. */ @@ -185,8 +182,7 @@ extern int duplicate_eh_regions (struct function *, duplicate_eh_regions_map, extern void sjlj_emit_function_exit_after (rtx); extern void default_init_unwind_resume_libfunc (void); -extern struct eh_region *gen_eh_region_cleanup (struct eh_region *, - struct eh_region *); +extern struct eh_region *gen_eh_region_cleanup (struct eh_region *); extern struct eh_region *gen_eh_region_try (struct eh_region *); extern struct eh_region *gen_eh_region_catch (struct eh_region *, tree); extern struct eh_region *gen_eh_region_allowed (struct eh_region *, tree); diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 14b9f100b51..fb590492fb4 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -10647,13 +10647,18 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1) && !HONOR_SIGNED_ZEROS (TYPE_MODE (TREE_TYPE (arg0))) && real_zerop (arg1)) return omit_one_operand (type, arg1, arg0); - /* In IEEE floating point, x*1 is not equivalent to x for snans. */ + /* In IEEE floating point, x*1 is not equivalent to x for snans. + Likewise for complex arithmetic with signed zeros. */ if (!HONOR_SNANS (TYPE_MODE (TREE_TYPE (arg0))) + && (!HONOR_SIGNED_ZEROS (TYPE_MODE (TREE_TYPE (arg0))) + || !COMPLEX_FLOAT_TYPE_P (TREE_TYPE (arg0))) && real_onep (arg1)) return non_lvalue (fold_convert (type, arg0)); /* Transform x * -1.0 into -x. */ if (!HONOR_SNANS (TYPE_MODE (TREE_TYPE (arg0))) + && (!HONOR_SIGNED_ZEROS (TYPE_MODE (TREE_TYPE (arg0))) + || !COMPLEX_FLOAT_TYPE_P (TREE_TYPE (arg0))) && real_minus_onep (arg1)) return fold_convert (type, negate_expr (arg0)); diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2bb9a540fc4..97f56b20141 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,66 @@ +2009-05-10 Ian Lance Taylor <iant@google.com> + + * gfortran.h (enum gfc_omp_sched_kind): New enum, broken out of + gfc_omp_clauses. + (enum gfc_omp_default_sharing): Likewise. + * module.c (enum gfc_rsym_state): New enum, broken out of + pointer_info. + (enum gfc_wsym_state): Likewise. + * parse.c (enum state_order): New enum, broken out of st_state. + +2009-05-10 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/40018 + * trans-array.c (gfc_trans_array_constructor_value): Fold + convert numeric constants. + (gfc_build_constant_array_constructor): The same. + +2009-05-10 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/38863 + * trans-expr.c (gfc_conv_operator_assign): Remove function. + * trans.h : Remove prototype for gfc_conv_operator_assign. + * trans-stmt.c (gfc_conv_elemental_dependencies): Initialize + derivde types with intent(out). + (gfc_trans_call): Add mask, count1 and invert arguments. Add + code to use mask for WHERE assignments. + (gfc_trans_forall_1): Use new arguments for gfc_trans_call. + (gfc_trans_where_assign): The gfc_symbol argument is replaced + by the corresponding code. If this has a resolved_sym, then + gfc_trans_call is called. The call to gfc_conv_operator_assign + is removed. + (gfc_trans_where_2): Change the last argument in the call to + gfc_trans_where_assign. + * trans-stmt.h : Modify prototype for gfc_trans_call. + * trans.c (gfc_trans_code): Use new args for gfc_trans_call. + +2009-05-08 Janus Weil <janus@gcc.gnu.org> + + PR fortran/39876 + * intrinsic.c (gfc_is_intrinsic): Do not add the EXTERNAL attribute if + the symbol is a module procedure. + +2009-05-08 Tobias Burnus <burnus@net-b.de> + + * invoke.texi: Add do/recursion to the -fcheck= summary. + +2009-05-07 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + + PR fortran/38830 + * gfortran.texi: Document that we don't support variable FORMAT + expressions. + +2009-05-07 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + + PR fortran/39576 + * error.c (error_print): Add missing break statement. + +2009-05-07 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + + PR fortran/36382 + * invoke.texi: Document that -fdollar-ok does not allow $ to be + used in IMPLICIT statement. + 2009-05-06 Janus Weil <janus@gcc.gnu.org> Paul Thomas <pault@gcc.gnu.org> diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c index 29efbd1fee0..7cb23dd70e6 100644 --- a/gcc/fortran/error.c +++ b/gcc/fortran/error.c @@ -533,6 +533,7 @@ error_print (const char *type, const char *format0, va_list argp) case 'u': arg[pos].type = TYPE_UINTEGER; + break; case 'l': c = *format++; diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index afd3edbf292..fad49c4e7cd 100644 --- a/gcc/fortran/gfortran.h +++ b/gcc/fortran/gfortran.h @@ -931,29 +931,34 @@ enum /* Because a symbol can belong to multiple namelists, they must be linked externally to the symbol itself. */ + +enum gfc_omp_sched_kind +{ + OMP_SCHED_NONE, + OMP_SCHED_STATIC, + OMP_SCHED_DYNAMIC, + OMP_SCHED_GUIDED, + OMP_SCHED_RUNTIME, + OMP_SCHED_AUTO +}; + +enum gfc_omp_default_sharing +{ + OMP_DEFAULT_UNKNOWN, + OMP_DEFAULT_NONE, + OMP_DEFAULT_PRIVATE, + OMP_DEFAULT_SHARED, + OMP_DEFAULT_FIRSTPRIVATE +}; + typedef struct gfc_omp_clauses { struct gfc_expr *if_expr; struct gfc_expr *num_threads; gfc_namelist *lists[OMP_LIST_NUM]; - enum - { - OMP_SCHED_NONE, - OMP_SCHED_STATIC, - OMP_SCHED_DYNAMIC, - OMP_SCHED_GUIDED, - OMP_SCHED_RUNTIME, - OMP_SCHED_AUTO - } sched_kind; + enum gfc_omp_sched_kind sched_kind; struct gfc_expr *chunk_size; - enum - { - OMP_DEFAULT_UNKNOWN, - OMP_DEFAULT_NONE, - OMP_DEFAULT_PRIVATE, - OMP_DEFAULT_SHARED, - OMP_DEFAULT_FIRSTPRIVATE - } default_sharing; + enum gfc_omp_default_sharing default_sharing; int collapse; bool nowait, ordered, untied; } diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index af1d2961085..b7c8b82537c 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -1641,7 +1641,7 @@ code that uses them running with the GNU Fortran compiler. * STRUCTURE and RECORD:: @c * UNION and MAP:: * ENCODE and DECODE statements:: -@c * Expressions in FORMAT statements:: +* Variable FORMAT expressions:: @c * Q edit descriptor:: @c * AUTOMATIC statement:: @c * TYPE and ACCEPT I/O Statements:: @@ -1779,6 +1779,51 @@ c ... Code that sets A, B and C @end smallexample +@node Variable FORMAT expressions +@subsection Variable @code{FORMAT} expressions +@cindex @code{FORMAT} + +A variable @code{FORMAT} expression is format statement which includes +angle brackets enclosing a Fortran expression: @code{FORMAT(I<N>)}. GNU +Fortran does not support this legacy extension. The effect of variable +format expressions can be reproduced by using the more powerful (and +standard) combination of internal output and string formats. For example, +replace a code fragment like this: + +@smallexample + WRITE(6,20) INT1 + 20 FORMAT(I<N+1>) +@end smallexample + +@noindent +with the following: + +@smallexample +c Variable declaration + CHARACTER(LEN=20) F +c +c Other code here... +c + WRITE(FMT,'("(I", I0, ")")') N+1 + WRITE(6,FM) INT1 +@end smallexample + +@noindent +or with: + +@smallexample +c Variable declaration + CHARACTER(LEN=20) FMT +c +c Other code here... +c + WRITE(FMT,*) N+1 + WRITE(6,"(I" // ADJUSTL(FMT) // ")") INT1 +@end smallexample + + + + @c --------------------------------------------------------------------- @c Intrinsic Procedures @c --------------------------------------------------------------------- diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c index 7676fa221e5..ca125a36335 100644 --- a/gcc/fortran/intrinsic.c +++ b/gcc/fortran/intrinsic.c @@ -836,13 +836,17 @@ gfc_is_intrinsic (gfc_symbol* sym, int subroutine_flag, locus loc) /* See if this intrinsic is allowed in the current standard. */ if (gfc_check_intrinsic_standard (isym, &symstd, false, loc) == FAILURE) { - if (gfc_option.warn_intrinsics_std) - gfc_warning_now ("The intrinsic '%s' at %L is not included in the" - " selected standard but %s and '%s' will be treated as" - " if declared EXTERNAL. Use an appropriate -std=*" - " option or define -fall-intrinsics to allow this" - " intrinsic.", sym->name, &loc, symstd, sym->name); - sym->attr.external = 1; + if (sym->attr.proc == PROC_UNKNOWN) + { + if (gfc_option.warn_intrinsics_std) + gfc_warning_now ("The intrinsic '%s' at %L is not included in the" + " selected standard but %s and '%s' will be" + " treated as if declared EXTERNAL. Use an" + " appropriate -std=* option or define" + " -fall-intrinsics to allow this intrinsic.", + sym->name, &loc, symstd, sym->name); + gfc_add_external (&sym->attr, &loc); + } return false; } diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 8c9bfced1a5..c471521bd1c 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -166,7 +166,7 @@ and warnings}. @gccoptlist{-fno-automatic -ff2c -fno-underscoring @gol -fwhole-file -fsecond-underscore @gol -fbounds-check -fcheck-array-temporaries -fmax-array-constructor =@var{n} @gol --fcheck=@var{<all|bounds|array-temps>} +-fcheck=@var{<all|array-temps|bounds|do|recursion>} -fmax-stack-var-size=@var{n} @gol -fpack-derived -frepack-arrays -fshort-enums -fexternal-blas @gol -fblas-matmul-limit=@var{n} -frecursive -finit-local-zero @gol @@ -259,6 +259,7 @@ the default width of @code{DOUBLE PRECISION} to 16 bytes if possible, unless Allow @samp{$} as a valid non-first character in a symbol name. Symbols that start with @samp{$} are rejected since it is unclear which rules to apply to implicit typing as different vendors implement different rules. +Using @samp{$} in @code{IMPLICIT} statements is also rejected. @item -fbackslash @opindex @code{backslash} diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index 7f4dba5dcee..4221c04573c 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -119,6 +119,20 @@ fixup_t; /* Structure for holding extra info needed for pointers being read. */ +enum gfc_rsym_state +{ + UNUSED, + NEEDED, + USED +}; + +enum gfc_wsym_state +{ + UNREFERENCED = 0, + NEEDS_WRITE, + WRITTEN +}; + typedef struct pointer_info { BBT_HEADER (pointer_info); @@ -138,9 +152,7 @@ typedef struct pointer_info { gfc_symbol *sym; char true_name[GFC_MAX_SYMBOL_LEN + 1], module[GFC_MAX_SYMBOL_LEN + 1]; - enum - { UNUSED, NEEDED, USED } - state; + enum gfc_rsym_state state; int ns, referenced, renamed; module_locus where; fixup_t *stfixup; @@ -152,9 +164,7 @@ typedef struct pointer_info struct { gfc_symbol *sym; - enum - { UNREFERENCED = 0, NEEDS_WRITE, WRITTEN } - state; + enum gfc_wsym_state state; } wsym; } diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index 59296b104fa..d387f543c94 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -1580,13 +1580,20 @@ unexpected_statement (gfc_statement st) */ +enum state_order +{ + ORDER_START, + ORDER_USE, + ORDER_IMPORT, + ORDER_IMPLICIT_NONE, + ORDER_IMPLICIT, + ORDER_SPEC, + ORDER_EXEC +}; + typedef struct { - enum - { ORDER_START, ORDER_USE, ORDER_IMPORT, ORDER_IMPLICIT_NONE, - ORDER_IMPLICIT, ORDER_SPEC, ORDER_EXEC - } - state; + enum state_order state; gfc_statement last_statement; locus where; } diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 47f4e0ce5b2..71db46d18b2 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -1263,10 +1263,11 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type, gfc_init_se (&se, NULL); gfc_conv_constant (&se, p->expr); + if (c->expr->ts.type != BT_CHARACTER) + se.expr = fold_convert (type, se.expr); /* For constant character array constructors we build an array of pointers. */ - if (p->expr->ts.type == BT_CHARACTER - && POINTER_TYPE_P (type)) + else if (POINTER_TYPE_P (type)) se.expr = gfc_build_addr_expr (gfc_get_pchar_type (p->expr->ts.kind), se.expr); @@ -1620,7 +1621,9 @@ gfc_build_constant_array_constructor (gfc_expr * expr, tree type) { gfc_init_se (&se, NULL); gfc_conv_constant (&se, c->expr); - if (c->expr->ts.type == BT_CHARACTER && POINTER_TYPE_P (type)) + if (c->expr->ts.type != BT_CHARACTER) + se.expr = fold_convert (type, se.expr); + else if (POINTER_TYPE_P (type)) se.expr = gfc_build_addr_expr (gfc_get_pchar_type (c->expr->ts.kind), se.expr); list = tree_cons (build_int_cst (gfc_array_index_type, nelem), diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 280a1922a8b..14f64c96ab8 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -1529,48 +1529,6 @@ conv_function_val (gfc_se * se, gfc_symbol * sym, gfc_expr * expr) } -/* Translate the call for an elemental subroutine call used in an operator - assignment. This is a simplified version of gfc_conv_procedure_call. */ - -tree -gfc_conv_operator_assign (gfc_se *lse, gfc_se *rse, gfc_symbol *sym) -{ - tree args; - tree tmp; - gfc_se se; - stmtblock_t block; - - /* Only elemental subroutines with two arguments. */ - gcc_assert (sym->attr.elemental && sym->attr.subroutine); - gcc_assert (sym->formal->next->next == NULL); - - gfc_init_block (&block); - - gfc_add_block_to_block (&block, &lse->pre); - gfc_add_block_to_block (&block, &rse->pre); - - /* Build the argument list for the call, including hidden string lengths. */ - args = gfc_chainon_list (NULL_TREE, gfc_build_addr_expr (NULL_TREE, lse->expr)); - args = gfc_chainon_list (args, gfc_build_addr_expr (NULL_TREE, rse->expr)); - if (lse->string_length != NULL_TREE) - args = gfc_chainon_list (args, lse->string_length); - if (rse->string_length != NULL_TREE) - args = gfc_chainon_list (args, rse->string_length); - - /* Build the function call. */ - gfc_init_se (&se, NULL); - conv_function_val (&se, sym, NULL); - tmp = TREE_TYPE (TREE_TYPE (TREE_TYPE (se.expr))); - tmp = build_call_list (tmp, se.expr, args); - gfc_add_expr_to_block (&block, tmp); - - gfc_add_block_to_block (&block, &lse->post); - gfc_add_block_to_block (&block, &rse->post); - - return gfc_finish_block (&block); -} - - /* Initialize MAPPING. */ void diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index d695759477a..9bad071cd37 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -270,9 +270,11 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse, gfc_conv_expr_descriptor (&parmse, e, gfc_walk_expr (e)); gfc_add_block_to_block (&se->pre, &parmse.pre); - /* If we've got INTENT(INOUT), initialize the array temporary with - a copy of the values. */ - if (fsym->attr.intent == INTENT_INOUT) + /* If we've got INTENT(INOUT) or a derived type with INTENT(OUT), + initialize the array temporary with a copy of the values. */ + if (fsym->attr.intent == INTENT_INOUT + || (fsym->ts.type ==BT_DERIVED + && fsym->attr.intent == INTENT_OUT)) initial = parmse.expr; else initial = NULL_TREE; @@ -332,12 +334,16 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse, /* Translate the CALL statement. Builds a call to an F95 subroutine. */ tree -gfc_trans_call (gfc_code * code, bool dependency_check) +gfc_trans_call (gfc_code * code, bool dependency_check, + tree mask, tree count1, bool invert) { gfc_se se; gfc_ss * ss; int has_alternate_specifier; gfc_dep_check check_variable; + tree index = NULL_TREE; + tree maskexpr = NULL_TREE; + tree tmp; /* A CALL starts a new block because the actual arguments may have to be evaluated first. */ @@ -429,10 +435,32 @@ gfc_trans_call (gfc_code * code, bool dependency_check) gfc_start_scalarized_body (&loop, &body); gfc_init_block (&block); + if (mask && count1) + { + /* Form the mask expression according to the mask. */ + index = count1; + maskexpr = gfc_build_array_ref (mask, index, NULL); + if (invert) + maskexpr = fold_build1 (TRUTH_NOT_EXPR, TREE_TYPE (maskexpr), + maskexpr); + } + /* Add the subroutine call to the block. */ - gfc_conv_procedure_call (&loopse, code->resolved_sym, code->ext.actual, - code->expr, NULL_TREE); - gfc_add_expr_to_block (&loopse.pre, loopse.expr); + gfc_conv_procedure_call (&loopse, code->resolved_sym, + code->ext.actual, code->expr, + NULL_TREE); + + if (mask && count1) + { + tmp = build3_v (COND_EXPR, maskexpr, loopse.expr, + build_empty_stmt ()); + gfc_add_expr_to_block (&loopse.pre, tmp); + tmp = fold_build2 (PLUS_EXPR, gfc_array_index_type, + count1, gfc_index_one_node); + gfc_add_modify (&loopse.pre, count1, tmp); + } + else + gfc_add_expr_to_block (&loopse.pre, loopse.expr); gfc_add_block_to_block (&block, &loopse.pre); gfc_add_block_to_block (&block, &loopse.post); @@ -3028,7 +3056,7 @@ gfc_trans_forall_1 (gfc_code * code, forall_info * nested_forall_info) /* Explicit subroutine calls are prevented by the frontend but interface assignments can legitimately produce them. */ case EXEC_ASSIGN_CALL: - assign = gfc_trans_call (c, true); + assign = gfc_trans_call (c, true, NULL_TREE, NULL_TREE, false); tmp = gfc_trans_nested_forall_loop (nested_forall_info, assign, 1); gfc_add_expr_to_block (&block, tmp); break; @@ -3223,7 +3251,7 @@ static tree gfc_trans_where_assign (gfc_expr *expr1, gfc_expr *expr2, tree mask, bool invert, tree count1, tree count2, - gfc_symbol *sym) + gfc_code *cnext) { gfc_se lse; gfc_se rse; @@ -3237,6 +3265,10 @@ gfc_trans_where_assign (gfc_expr *expr1, gfc_expr *expr2, stmtblock_t body; tree index, maskexpr; + /* A defined assignment. */ + if (cnext && cnext->resolved_sym) + return gfc_trans_call (cnext, true, mask, count1, invert); + #if 0 /* TODO: handle this special case. Special case a single function returning an array. */ @@ -3338,11 +3370,8 @@ gfc_trans_where_assign (gfc_expr *expr1, gfc_expr *expr2, maskexpr = fold_build1 (TRUTH_NOT_EXPR, TREE_TYPE (maskexpr), maskexpr); /* Use the scalar assignment as is. */ - if (sym == NULL) - tmp = gfc_trans_scalar_assign (&lse, &rse, expr1->ts, - loop.temp_ss != NULL, false); - else - tmp = gfc_conv_operator_assign (&lse, &rse, sym); + tmp = gfc_trans_scalar_assign (&lse, &rse, expr1->ts, + loop.temp_ss != NULL, false); tmp = build3_v (COND_EXPR, maskexpr, tmp, build_empty_stmt ()); @@ -3609,7 +3638,7 @@ gfc_trans_where_2 (gfc_code * code, tree mask, bool invert, tmp = gfc_trans_where_assign (expr1, expr2, cmask, invert, count1, count2, - cnext->resolved_sym); + cnext); tmp = gfc_trans_nested_forall_loop (nested_forall_info, tmp, 1); @@ -3627,7 +3656,7 @@ gfc_trans_where_2 (gfc_code * code, tree mask, bool invert, tmp = gfc_trans_where_assign (expr1, expr2, cmask, invert, count1, count2, - cnext->resolved_sym); + cnext); gfc_add_expr_to_block (block, tmp); } diff --git a/gcc/fortran/trans-stmt.h b/gcc/fortran/trans-stmt.h index ff8a8384a4c..0b167b9f6fe 100644 --- a/gcc/fortran/trans-stmt.h +++ b/gcc/fortran/trans-stmt.h @@ -40,7 +40,7 @@ tree gfc_trans_goto (gfc_code *); tree gfc_trans_entry (gfc_code *); tree gfc_trans_pause (gfc_code *); tree gfc_trans_stop (gfc_code *); -tree gfc_trans_call (gfc_code *, bool); +tree gfc_trans_call (gfc_code *, bool, tree, tree, bool); tree gfc_trans_return (gfc_code *); tree gfc_trans_if (gfc_code *); tree gfc_trans_arithmetic_if (gfc_code *); diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index 54d40d7c3e3..28cb60ab2ef 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -1111,16 +1111,19 @@ gfc_trans_code (gfc_code * code) if (code->resolved_isym && code->resolved_isym->id == GFC_ISYM_MVBITS) is_mvbits = true; - res = gfc_trans_call (code, is_mvbits); + res = gfc_trans_call (code, is_mvbits, NULL_TREE, + NULL_TREE, false); } break; case EXEC_CALL_PPC: - res = gfc_trans_call (code, false); + res = gfc_trans_call (code, false, NULL_TREE, + NULL_TREE, false); break; case EXEC_ASSIGN_CALL: - res = gfc_trans_call (code, true); + res = gfc_trans_call (code, true, NULL_TREE, + NULL_TREE, false); break; case EXEC_RETURN: diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h index c75f40eb6fe..4846af245fd 100644 --- a/gcc/fortran/trans.h +++ b/gcc/fortran/trans.h @@ -310,9 +310,6 @@ void gfc_conv_intrinsic_function (gfc_se *, gfc_expr *); /* Does an intrinsic map directly to an external library call. */ int gfc_is_intrinsic_libcall (gfc_expr *); -/* Used to call the elemental subroutines used in operator assignments. */ -tree gfc_conv_operator_assign (gfc_se *, gfc_se *, gfc_symbol *); - /* Used to call ordinary functions/subroutines and procedure pointer components. */ int gfc_conv_procedure_call (gfc_se *, gfc_symbol *, gfc_actual_arglist *, diff --git a/gcc/fwprop.c b/gcc/fwprop.c index 11c948f2127..669d03cc066 100644 --- a/gcc/fwprop.c +++ b/gcc/fwprop.c @@ -105,6 +105,111 @@ along with GCC; see the file COPYING3. If not see static int num_changes; +DEF_VEC_P(df_ref); +DEF_VEC_ALLOC_P(df_ref,heap); +VEC(df_ref,heap) *use_def_ref; + + +/* Return the only def in USE's use-def chain, or NULL if there is + more than one def in the chain. */ + +static inline df_ref +get_def_for_use (df_ref use) +{ + return VEC_index (df_ref, use_def_ref, DF_REF_ID (use)); +} + + +/* Return the only bit between FIRST and LAST that is set in B, + or -1 if there are zero or more than one such bits. */ + +static inline int +bitmap_only_bit_between (const_bitmap b, unsigned first, unsigned last) +{ + bitmap_iterator bi; + unsigned bit, bit2; + + if (last < first) + return -1; + + bmp_iter_set_init (&bi, b, first, &bit); + if (bmp_iter_set (&bi, &bit) && bit <= last) + { + bit2 = bit; + bmp_iter_next (&bi, &bit2); + if (!bmp_iter_set (&bi, &bit2) || bit2 > last) + return bit; + } + return -1; +} + + +/* Fill the use_def_ref vector with values for the uses in USE_REC, + taking reaching definitions info from LOCAL_RD. TOP_FLAG says + which artificials uses should be used, when USE_REC is an + artificial use vector. */ + +static void +process_uses (bitmap local_rd, df_ref *use_rec, int top_flag) +{ + df_ref use; + while ((use = *use_rec++) != NULL) + if (top_flag == (DF_REF_FLAGS (use) & DF_REF_AT_TOP)) + { + unsigned int uregno = DF_REF_REGNO (use); + unsigned int first = DF_DEFS_BEGIN (uregno); + unsigned int last = first + DF_DEFS_COUNT (uregno) - 1; + int defno = bitmap_only_bit_between (local_rd, first, last); + df_ref def = (defno == -1) ? NULL : DF_DEFS_GET (defno); + + VEC_replace (df_ref, use_def_ref, DF_REF_ID (use), def); + } +} + + +/* Do dataflow analysis and use reaching definitions to build + a vector holding the reaching definitions of uses that have a + single RD. */ + +static void +build_single_def_use_links (void) +{ + basic_block bb; + bitmap local_rd = BITMAP_ALLOC (NULL); + + /* We use reaching definitions to compute our restricted use-def chains. */ + df_set_flags (DF_EQ_NOTES); + df_rd_add_problem (); + df_analyze (); + df_maybe_reorganize_use_refs (DF_REF_ORDER_BY_INSN_WITH_NOTES); + + use_def_ref = VEC_alloc (df_ref, heap, DF_USES_TABLE_SIZE ()); + VEC_safe_grow (df_ref, heap, use_def_ref, DF_USES_TABLE_SIZE ()); + + FOR_EACH_BB (bb) + { + int bb_index = bb->index; + struct df_rd_bb_info *bb_info = df_rd_get_bb_info (bb_index); + rtx insn; + + bitmap_copy (local_rd, bb_info->in); + process_uses (local_rd, df_get_artificial_uses (bb_index), DF_REF_AT_TOP); + + df_rd_simulate_artificial_defs_at_top (bb, local_rd); + FOR_BB_INSNS (bb, insn) + if (INSN_P (insn)) + { + unsigned int uid = INSN_UID (insn); + process_uses (local_rd, DF_INSN_UID_USES (uid), 0); + process_uses (local_rd, DF_INSN_UID_EQ_USES (uid), 0); + df_rd_simulate_one_insn (bb, insn, local_rd); + } + + process_uses (local_rd, df_get_artificial_uses (bb_index), 0); + } + + BITMAP_FREE (local_rd); +} /* Do not try to replace constant addresses or addresses of local and argument slots. These MEM expressions are made only once and inserted @@ -716,7 +821,8 @@ update_df (rtx insn, rtx *loc, df_ref *use_rec, enum df_ref_type type, width, offset, mode); /* Set up the use-def chain. */ - df_chain_copy (new_use, DF_REF_CHAIN (orig_use)); + gcc_assert (DF_REF_ID (new_use) == (int) VEC_length (df_ref, use_def_ref)); + VEC_safe_push (df_ref, heap, use_def_ref, get_def_for_use (orig_use)); changed = true; } if (changed) @@ -1035,7 +1141,6 @@ forward_propagate_and_simplify (df_ref use, rtx def_insn, rtx def_set) static void forward_propagate_into (df_ref use) { - struct df_link *defs; df_ref def; rtx def_insn, def_set, use_insn; rtx parent; @@ -1046,11 +1151,9 @@ forward_propagate_into (df_ref use) return; /* Only consider uses that have a single definition. */ - defs = DF_REF_CHAIN (use); - if (!defs || defs->next) + def = get_def_for_use (use); + if (!def) return; - - def = defs->ref; if (DF_REF_FLAGS (def) & DF_REF_READ_WRITE) return; if (DF_REF_IS_ARTIFICIAL (def)) @@ -1096,12 +1199,7 @@ fwprop_init (void) insns (sadly) if we are not working in cfglayout mode. */ loop_optimizer_init (0); - /* Now set up the dataflow problem (we only want use-def chains) and - put the dataflow solver to work. */ - df_set_flags (DF_EQ_NOTES); - df_chain_add_problem (DF_UD_CHAIN); - df_analyze (); - df_maybe_reorganize_use_refs (DF_REF_ORDER_BY_INSN_WITH_NOTES); + build_single_def_use_links (); df_set_flags (DF_DEFER_INSN_RESCAN); } @@ -1110,6 +1208,7 @@ fwprop_done (void) { loop_optimizer_finalize (); + VEC_free (df_ref, heap, use_def_ref); free_dominance_info (CDI_DOMINATORS); cleanup_cfg (0); delete_trivially_dead_insns (get_insns (), max_reg_num ()); @@ -1187,8 +1286,6 @@ fwprop_addr (void) /* Go through all the uses. update_df will create new ones at the end, and we'll go through them as well. */ - df_set_flags (DF_DEFER_INSN_RESCAN); - for (i = 0; i < DF_USES_TABLE_SIZE (); i++) { df_ref use = DF_USES_GET (i); diff --git a/gcc/gcc.c b/gcc/gcc.c index e89f3994adc..9168a3423d0 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -268,10 +268,12 @@ static const char *cross_compile = "0"; switch. The only case we support now is simply appending or deleting a string to or from the end of the first part of the configuration name. */ +enum add_del {ADD, DELETE}; + static const struct modify_target { const char *const sw; - const enum add_del {ADD, DELETE} add_del; + const enum add_del add_del; const char *const str; } modify_target[] = MODIFY_TARGET_NAME; diff --git a/gcc/genrecog.c b/gcc/genrecog.c index b52baca038e..9abb13fd75c 100644 --- a/gcc/genrecog.c +++ b/gcc/genrecog.c @@ -71,6 +71,17 @@ struct decision_head struct decision *last; }; +/* These types are roughly in the order in which we'd like to test them. */ +enum decision_type +{ + DT_num_insns, + DT_mode, DT_code, DT_veclen, + DT_elt_zero_int, DT_elt_one_int, DT_elt_zero_wide, DT_elt_zero_wide_safe, + DT_const_int, + DT_veclen_ge, DT_dup, DT_pred, DT_c_test, + DT_accept_op, DT_accept_insn +}; + /* A single test. The two accept types aren't tests per-se, but their equality (or lack thereof) does affect tree merging so it is convenient to keep them here. */ @@ -80,16 +91,7 @@ struct decision_test /* A linked list through the tests attached to a node. */ struct decision_test *next; - /* These types are roughly in the order in which we'd like to test them. */ - enum decision_type - { - DT_num_insns, - DT_mode, DT_code, DT_veclen, - DT_elt_zero_int, DT_elt_one_int, DT_elt_zero_wide, DT_elt_zero_wide_safe, - DT_const_int, - DT_veclen_ge, DT_dup, DT_pred, DT_c_test, - DT_accept_op, DT_accept_insn - } type; + enum decision_type type; union { diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c index 0afe0d815dd..41cbd44c585 100644 --- a/gcc/ggc-page.c +++ b/gcc/ggc-page.c @@ -1,5 +1,5 @@ /* "Bag-of-pages" garbage collector for the GNU compiler. - Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008 + Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc. This file is part of GCC. @@ -2063,12 +2063,14 @@ ggc_print_statistics (void) #endif } +struct ggc_pch_ondisk +{ + unsigned totals[NUM_ORDERS]; +}; + struct ggc_pch_data { - struct ggc_pch_ondisk - { - unsigned totals[NUM_ORDERS]; - } d; + struct ggc_pch_ondisk d; size_t base[NUM_ORDERS]; size_t written[NUM_ORDERS]; }; diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index 21dd8871e0a..d6390b089a9 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -186,34 +186,6 @@ ipcp_analyze_node (struct cgraph_node *node) ipa_detect_param_modifications (node); } -/* Recompute all local information since node might've got new - direct calls after cloning. */ -static void -ipcp_update_cloned_node (struct cgraph_node *new_node) -{ - /* We might've introduced new direct calls. */ - push_cfun (DECL_STRUCT_FUNCTION (new_node->decl)); - current_function_decl = new_node->decl; - rebuild_cgraph_edges (); - - /* Indirect inlinng rely on fact that we've already analyzed - the body.. */ - if (flag_indirect_inlining) - { - struct cgraph_edge *cs; - - ipcp_analyze_node (new_node); - - for (cs = new_node->callees; cs; cs = cs->next_callee) - { - ipa_count_arguments (cs); - ipa_compute_jump_functions (cs); - } - } - pop_cfun (); - current_function_decl = NULL; -} - /* Return scale for NODE. */ static inline gcov_type ipcp_get_node_scale (struct cgraph_node *node) @@ -756,98 +728,6 @@ ipcp_print_call_profile_counts (FILE * f) } } -/* Print all counts and probabilities of cfg edges of all functions. */ -static void -ipcp_print_edge_profiles (FILE * f) -{ - struct cgraph_node *node; - basic_block bb; - edge_iterator ei; - edge e; - - for (node = cgraph_nodes; node; node = node->next) - { - fprintf (f, "function %s: \n", cgraph_node_name (node)); - if (node->analyzed) - { - bb = - ENTRY_BLOCK_PTR_FOR_FUNCTION (DECL_STRUCT_FUNCTION (node->decl)); - fprintf (f, "ENTRY: "); - fprintf (f, " " HOST_WIDE_INT_PRINT_DEC - " %d\n", (HOST_WIDE_INT) bb->count, bb->frequency); - - if (bb->succs) - FOR_EACH_EDGE (e, ei, bb->succs) - { - if (e->dest == - EXIT_BLOCK_PTR_FOR_FUNCTION (DECL_STRUCT_FUNCTION - (node->decl))) - fprintf (f, "edge ENTRY -> EXIT, Count"); - else - fprintf (f, "edge ENTRY -> %d, Count", e->dest->index); - fprintf (f, " " HOST_WIDE_INT_PRINT_DEC - " Prob %d\n", (HOST_WIDE_INT) e->count, - e->probability); - } - FOR_EACH_BB_FN (bb, DECL_STRUCT_FUNCTION (node->decl)) - { - fprintf (f, "bb[%d]: ", bb->index); - fprintf (f, " " HOST_WIDE_INT_PRINT_DEC - " %d\n", (HOST_WIDE_INT) bb->count, bb->frequency); - FOR_EACH_EDGE (e, ei, bb->succs) - { - if (e->dest == - EXIT_BLOCK_PTR_FOR_FUNCTION (DECL_STRUCT_FUNCTION - (node->decl))) - fprintf (f, "edge %d -> EXIT, Count", e->src->index); - else - fprintf (f, "edge %d -> %d, Count", e->src->index, - e->dest->index); - fprintf (f, " " HOST_WIDE_INT_PRINT_DEC " Prob %d\n", - (HOST_WIDE_INT) e->count, e->probability); - } - } - } - } -} - -/* Print counts and frequencies for all basic blocks of all functions. */ -static void -ipcp_print_bb_profiles (FILE * f) -{ - basic_block bb; - struct cgraph_node *node; - - for (node = cgraph_nodes; node; node = node->next) - { - fprintf (f, "function %s: \n", cgraph_node_name (node)); - if (node->analyzed) - { - bb = - ENTRY_BLOCK_PTR_FOR_FUNCTION (DECL_STRUCT_FUNCTION (node->decl)); - fprintf (f, "ENTRY: Count"); - fprintf (f, " " HOST_WIDE_INT_PRINT_DEC - " Frequency %d\n", (HOST_WIDE_INT) bb->count, - bb->frequency); - - FOR_EACH_BB_FN (bb, DECL_STRUCT_FUNCTION (node->decl)) - { - fprintf (f, "bb[%d]: Count", bb->index); - fprintf (f, " " HOST_WIDE_INT_PRINT_DEC - " Frequency %d\n", (HOST_WIDE_INT) bb->count, - bb->frequency); - } - bb = - EXIT_BLOCK_PTR_FOR_FUNCTION (DECL_STRUCT_FUNCTION (node->decl)); - fprintf (f, "EXIT: Count"); - fprintf (f, " " HOST_WIDE_INT_PRINT_DEC - " Frequency %d\n", (HOST_WIDE_INT) bb->count, - bb->frequency); - - } - } -} - /* Print profile info for all functions. */ static void ipcp_print_profile_data (FILE * f) @@ -856,10 +736,6 @@ ipcp_print_profile_data (FILE * f) ipcp_print_func_profile_counts (f); fprintf (f, "\nCS COUNTS stage:\n"); ipcp_print_call_profile_counts (f); - fprintf (f, "\nBB COUNTS and FREQUENCIES :\n"); - ipcp_print_bb_profiles (f); - fprintf (f, "\nCFG EDGES COUNTS and PROBABILITIES :\n"); - ipcp_print_edge_profiles (f); } /* Build and initialize ipa_replace_map struct according to LAT. This struct is @@ -872,7 +748,7 @@ ipcp_create_replace_map (tree parm_tree, struct ipcp_lattice *lat) struct ipa_replace_map *replace_map; tree const_val; - replace_map = XCNEW (struct ipa_replace_map); + replace_map = GGC_NEW (struct ipa_replace_map); const_val = build_const_val (lat, TREE_TYPE (parm_tree)); if (dump_file) { @@ -959,25 +835,7 @@ ipcp_update_callgraph (void) for (cs = node->callers; cs; cs = next) { next = cs->next_caller; - if (ipcp_node_is_clone (cs->caller) || !ipcp_need_redirect_p (cs)) - { - gimple new_stmt; - gimple_stmt_iterator gsi; - - current_function_decl = cs->caller->decl; - push_cfun (DECL_STRUCT_FUNCTION (cs->caller->decl)); - - new_stmt = gimple_call_copy_skip_args (cs->call_stmt, - args_to_skip); - if (gimple_vdef (new_stmt)) - SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt; - gsi = gsi_for_stmt (cs->call_stmt); - gsi_replace (&gsi, new_stmt, true); - cgraph_set_call_stmt (cs, new_stmt); - pop_cfun (); - current_function_decl = NULL; - } - else + if (!ipcp_node_is_clone (cs->caller) && ipcp_need_redirect_p (cs)) { cgraph_redirect_edge_callee (cs, orig_node); gimple_call_set_fndecl (cs->call_stmt, orig_node->decl); @@ -986,29 +844,6 @@ ipcp_update_callgraph (void) } } -/* Update all cfg basic blocks in NODE according to SCALE. */ -static void -ipcp_update_bb_counts (struct cgraph_node *node, gcov_type scale) -{ - basic_block bb; - - FOR_ALL_BB_FN (bb, DECL_STRUCT_FUNCTION (node->decl)) - bb->count = bb->count * scale / REG_BR_PROB_BASE; -} - -/* Update all cfg edges in NODE according to SCALE. */ -static void -ipcp_update_edges_counts (struct cgraph_node *node, gcov_type scale) -{ - basic_block bb; - edge_iterator ei; - edge e; - - FOR_ALL_BB_FN (bb, DECL_STRUCT_FUNCTION (node->decl)) - FOR_EACH_EDGE (e, ei, bb->succs) - e->count = e->count * scale / REG_BR_PROB_BASE; -} - /* Update profiling info for versioned functions and the functions they were versioned from. */ static void @@ -1032,10 +867,6 @@ ipcp_update_profiling (void) cs->count = cs->count * scale / REG_BR_PROB_BASE; for (cs = orig_node->callees; cs; cs = cs->next_callee) cs->count = cs->count * scale_complement / REG_BR_PROB_BASE; - ipcp_update_bb_counts (node, scale); - ipcp_update_bb_counts (orig_node, scale_complement); - ipcp_update_edges_counts (node, scale); - ipcp_update_edges_counts (orig_node, scale_complement); } } } @@ -1160,13 +991,13 @@ ipcp_insert_stage (void) struct cgraph_node *node, *node1 = NULL; int i; VEC (cgraph_edge_p, heap) * redirect_callers; - varray_type replace_trees; + VEC (ipa_replace_map_p,gc)* replace_trees; int node_callers, count; tree parm_tree; struct ipa_replace_map *replace_param; fibheap_t heap; - long overall_insns = 0, new_insns = 0; - long max_new_insns; + long overall_size = 0, new_size = 0; + long max_new_size; ipa_check_create_node_params (); ipa_check_create_edge_args (); @@ -1180,13 +1011,13 @@ ipcp_insert_stage (void) { if (node->count > max_count) max_count = node->count; - overall_insns += node->local.inline_summary.self_insns; + overall_size += node->local.inline_summary.self_insns; } - max_new_insns = overall_insns; - if (max_new_insns < PARAM_VALUE (PARAM_LARGE_UNIT_INSNS)) - max_new_insns = PARAM_VALUE (PARAM_LARGE_UNIT_INSNS); - max_new_insns = max_new_insns * PARAM_VALUE (PARAM_IPCP_UNIT_GROWTH) / 100 + 1; + max_new_size = overall_size; + if (max_new_size < PARAM_VALUE (PARAM_LARGE_UNIT_INSNS)) + max_new_size = PARAM_VALUE (PARAM_LARGE_UNIT_INSNS); + max_new_size = max_new_size * PARAM_VALUE (PARAM_IPCP_UNIT_GROWTH) / 100 + 1; /* First collect all functions we proved to have constant arguments to heap. */ heap = fibheap_new (); @@ -1220,7 +1051,7 @@ ipcp_insert_stage (void) growth = ipcp_estimate_growth (node); - if (new_insns + growth > max_new_insns) + if (new_size + growth > max_new_size) break; if (growth && optimize_function_for_size_p (DECL_STRUCT_FUNCTION (node->decl))) @@ -1230,7 +1061,7 @@ ipcp_insert_stage (void) continue; } - new_insns += growth; + new_size += growth; /* Look if original function becomes dead after clonning. */ for (cs = node->callers; cs != NULL; cs = cs->next_caller) @@ -1242,9 +1073,8 @@ ipcp_insert_stage (void) info = IPA_NODE_REF (node); count = ipa_get_param_count (info); - VARRAY_GENERIC_PTR_INIT (replace_trees, ipcp_const_param_count (node), - "replace_trees"); - args_to_skip = BITMAP_ALLOC (NULL); + replace_trees = VEC_alloc (ipa_replace_map_p, gc, 1); + args_to_skip = BITMAP_GGC_ALLOC (); for (i = 0; i < count; i++) { struct ipcp_lattice *lat = ipcp_get_lattice (info, i); @@ -1263,7 +1093,7 @@ ipcp_insert_stage (void) { replace_param = ipcp_create_replace_map (parm_tree, lat); - VARRAY_PUSH_GENERIC_PTR (replace_trees, replace_param); + VEC_safe_push (ipa_replace_map_p, gc, replace_trees, replace_param); bitmap_set_bit (args_to_skip, i); } } @@ -1279,20 +1109,20 @@ ipcp_insert_stage (void) /* Redirecting all the callers of the node to the new versioned node. */ node1 = - cgraph_function_versioning (node, redirect_callers, replace_trees, - args_to_skip); - BITMAP_FREE (args_to_skip); + cgraph_create_virtual_clone (node, redirect_callers, replace_trees, + args_to_skip); + args_to_skip = NULL; VEC_free (cgraph_edge_p, heap, redirect_callers); - VARRAY_CLEAR (replace_trees); + replace_trees = NULL; + if (node1 == NULL) continue; if (dump_file) fprintf (dump_file, "versioned function %s with growth %i, overall %i\n", - cgraph_node_name (node), (int)growth, (int)new_insns); + cgraph_node_name (node), (int)growth, (int)new_size); ipcp_init_cloned_node (node, node1); - /* We've possibly introduced direct calls. */ - ipcp_update_cloned_node (node1); + /* TODO: We can use indirect inlning info to produce new calls. */ if (dump_file) dump_function_to_file (node1->decl, dump_file, dump_flags); diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index 15612193ace..99640bfdb55 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -433,7 +433,7 @@ cgraph_default_inline_p (struct cgraph_node *n, cgraph_inline_failed_t *reason) return false; } - if (!DECL_STRUCT_FUNCTION (decl)->cfg) + if (!n->analyzed) { if (reason) *reason = CIF_BODY_NOT_AVAILABLE; diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c index 88047e476b3..f4fa37d5a05 100644 --- a/gcc/ipa-prop.c +++ b/gcc/ipa-prop.c @@ -653,7 +653,7 @@ ipa_note_param_call (struct ipa_node_params *info, int formal_id, note->formal_id = formal_id; note->stmt = stmt; note->count = bb->count; - note->frequency = compute_call_stmt_bb_frequency (bb); + note->frequency = compute_call_stmt_bb_frequency (current_function_decl, bb); note->next = info->param_calls; info->param_calls = note; diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h index 5943a2af6f4..c4c1ccc162a 100644 --- a/gcc/ipa-prop.h +++ b/gcc/ipa-prop.h @@ -99,20 +99,6 @@ struct ipcp_lattice tree constant; }; -/* Represent which DECL tree (or reference to such tree) - will be replaced by another tree while versioning. */ -struct ipa_replace_map -{ - /* The tree that will be replaced. */ - tree old_tree; - /* The new (replacing) tree. */ - tree new_tree; - /* True when a substitution should be done, false otherwise. */ - bool replace_p; - /* True when we replace a reference to old_tree. */ - bool ref_p; -}; - /* Each instance of the following structure describes a statement that calls a function parameter. Those referring to statements within the same function are linked in a list. */ diff --git a/gcc/ipa-struct-reorg.c b/gcc/ipa-struct-reorg.c index 5b1670e0de1..6468d77f06a 100644 --- a/gcc/ipa-struct-reorg.c +++ b/gcc/ipa-struct-reorg.c @@ -3641,7 +3641,7 @@ do_reorg_1 (void) bitmap_obstack_initialize (NULL); for (node = cgraph_nodes; node; node = node->next) - if (node->analyzed && node->decl && !node->next_clone) + if (node->analyzed && node->decl) { push_cfun (DECL_STRUCT_FUNCTION (node->decl)); current_function_decl = node->decl; @@ -3809,8 +3809,7 @@ collect_data_accesses (void) { struct function *func = DECL_STRUCT_FUNCTION (c_node->decl); - if (!c_node->next_clone) - collect_accesses_in_func (func); + collect_accesses_in_func (func); exclude_alloc_and_field_accs (c_node); } } diff --git a/gcc/ipa.c b/gcc/ipa.c index b486b93d34c..fb3c74992f6 100644 --- a/gcc/ipa.c +++ b/gcc/ipa.c @@ -25,6 +25,7 @@ along with GCC; see the file COPYING3. If not see #include "cgraph.h" #include "tree-pass.h" #include "timevar.h" +#include "gimple.h" #include "ggc.h" /* Fill array order with all nodes with output flag set in the reverse @@ -37,6 +38,7 @@ cgraph_postorder (struct cgraph_node **order) int stack_size = 0; int order_pos = 0; struct cgraph_edge *edge, last; + int pass; struct cgraph_node **stack = XCNEWVEC (struct cgraph_node *, cgraph_n_nodes); @@ -47,50 +49,67 @@ cgraph_postorder (struct cgraph_node **order) right through inline functions. */ for (node = cgraph_nodes; node; node = node->next) node->aux = NULL; - for (node = cgraph_nodes; node; node = node->next) - if (!node->aux) - { - node2 = node; - if (!node->callers) - node->aux = &last; - else - node->aux = node->callers; - while (node2) - { - while (node2->aux != &last) - { - edge = (struct cgraph_edge *) node2->aux; - if (edge->next_caller) - node2->aux = edge->next_caller; - else - node2->aux = &last; - if (!edge->caller->aux) - { - if (!edge->caller->callers) - edge->caller->aux = &last; - else - edge->caller->aux = edge->caller->callers; - stack[stack_size++] = node2; - node2 = edge->caller; - break; - } - } - if (node2->aux == &last) - { - order[order_pos++] = node2; - if (stack_size) - node2 = stack[--stack_size]; - else - node2 = NULL; - } - } - } + for (pass = 0; pass < 2; pass++) + for (node = cgraph_nodes; node; node = node->next) + if (!node->aux + && (pass || (node->needed && !node->address_taken))) + { + node2 = node; + if (!node->callers) + node->aux = &last; + else + node->aux = node->callers; + while (node2) + { + while (node2->aux != &last) + { + edge = (struct cgraph_edge *) node2->aux; + if (edge->next_caller) + node2->aux = edge->next_caller; + else + node2->aux = &last; + if (!edge->caller->aux) + { + if (!edge->caller->callers) + edge->caller->aux = &last; + else + edge->caller->aux = edge->caller->callers; + stack[stack_size++] = node2; + node2 = edge->caller; + break; + } + } + if (node2->aux == &last) + { + order[order_pos++] = node2; + if (stack_size) + node2 = stack[--stack_size]; + else + node2 = NULL; + } + } + } free (stack); for (node = cgraph_nodes; node; node = node->next) node->aux = NULL; return order_pos; } +/* Look for all functions inlined to NODE and update their inlined_to pointers + to INLINED_TO. */ + +static void +update_inlined_to_pointer (struct cgraph_node *node, struct cgraph_node *inlined_to) +{ + struct cgraph_edge *e; + for (e = node->callees; e; e = e->next_callee) + if (e->callee->global.inlined_to) + { + e->callee->global.inlined_to = inlined_to; + update_inlined_to_pointer (e->callee, inlined_to); + } +} + /* Perform reachability analysis and reclaim all unreachable nodes. If BEFORE_INLINING_P is true this function is called before inlining decisions has been made. If BEFORE_INLINING_P is false this function also @@ -143,6 +162,12 @@ cgraph_remove_unreachable_nodes (bool before_inlining_p, FILE *file) e->callee->aux = first; first = e->callee; } + while (node->clone_of && !node->clone_of->aux && !gimple_has_body_p (node->decl)) + { + node = node->clone_of; + node->aux = first; + first = node; + } } /* Remove unreachable nodes. Extern inline functions need special care; @@ -168,25 +193,29 @@ cgraph_remove_unreachable_nodes (bool before_inlining_p, FILE *file) { struct cgraph_edge *e; + /* See if there is reachable caller. */ for (e = node->callers; e; e = e->next_caller) if (e->caller->aux) break; + + /* If so, we need to keep node in the callgraph. */ if (e || node->needed) { struct cgraph_node *clone; - for (clone = node->next_clone; clone; - clone = clone->next_clone) + /* If there are still clones, we must keep body around. + Otherwise we can just remove the body but keep the clone. */ + for (clone = node->clones; clone; + clone = clone->next_sibling_clone) if (clone->aux) break; if (!clone) { cgraph_release_function_body (node); + cgraph_node_remove_callees (node); node->analyzed = false; + node->local.inlinable = false; } - cgraph_node_remove_callees (node); - node->analyzed = false; - node->local.inlinable = false; } else cgraph_remove_node (node); @@ -195,7 +224,19 @@ cgraph_remove_unreachable_nodes (bool before_inlining_p, FILE *file) } } for (node = cgraph_nodes; node; node = node->next) - node->aux = NULL; + { + /* Inline clones might be kept around so their materializing allows further + cloning. If the function the clone is inlined into is removed, we need + to turn it into normal cone. */ + if (node->global.inlined_to + && !node->callers) + { + gcc_assert (node->clones); + node->global.inlined_to = NULL; + update_inlined_to_pointer (node, node); + } + node->aux = NULL; + } #ifdef ENABLE_CHECKING verify_cgraph (); #endif diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c index 82e18297e20..8c1e0e6202d 100644 --- a/gcc/loop-invariant.c +++ b/gcc/loop-invariant.c @@ -71,7 +71,7 @@ struct use { rtx *pos; /* Position of the use. */ rtx insn; /* The insn in that the use occurs. */ - + unsigned addr_use_p; /* Whether the use occurs in an address. */ struct use *next; /* Next use in the list. */ }; @@ -82,6 +82,7 @@ struct def struct use *uses; /* The list of uses that are uniquely reached by it. */ unsigned n_uses; /* Number of such uses. */ + unsigned n_addr_uses; /* Number of uses in addresses. */ unsigned invno; /* The corresponding invariant. */ }; @@ -111,6 +112,9 @@ struct invariant /* Whether to move the invariant. */ bool move; + /* Whether the invariant is cheap when used as an address. */ + bool cheap_address; + /* Cost of the invariant. */ unsigned cost; @@ -679,9 +683,16 @@ create_new_invariant (struct def *def, rtx insn, bitmap depends_on, /* If the set is simple, usually by moving it we move the whole store out of the loop. Otherwise we save only cost of the computation. */ if (def) - inv->cost = rtx_cost (set, SET, speed); + { + inv->cost = rtx_cost (set, SET, speed); + inv->cheap_address = address_cost (SET_SRC (set), word_mode, + speed) < COSTS_N_INSNS (1); + } else - inv->cost = rtx_cost (SET_SRC (set), SET, speed); + { + inv->cost = rtx_cost (SET_SRC (set), SET, speed); + inv->cheap_address = false; + } inv->move = false; inv->reg = NULL_RTX; @@ -708,17 +719,19 @@ create_new_invariant (struct def *def, rtx insn, bitmap depends_on, /* Record USE at DEF. */ static void -record_use (struct def *def, rtx *use, rtx insn) +record_use (struct def *def, df_ref use) { struct use *u = XNEW (struct use); - gcc_assert (REG_P (*use)); - - u->pos = use; - u->insn = insn; + u->pos = DF_REF_REAL_LOC (use); + u->insn = DF_REF_INSN (use); + u->addr_use_p = (DF_REF_TYPE (use) == DF_REF_REG_MEM_LOAD + || DF_REF_TYPE (use) == DF_REF_REG_MEM_STORE); u->next = def->uses; def->uses = u; def->n_uses++; + if (u->addr_use_p) + def->n_addr_uses++; } /* Finds the invariants USE depends on and store them to the DEPENDS_ON @@ -865,14 +878,14 @@ record_uses (rtx insn) df_ref use = *use_rec; inv = invariant_for_use (use); if (inv) - record_use (inv->def, DF_REF_REAL_LOC (use), DF_REF_INSN (use)); + record_use (inv->def, use); } for (use_rec = DF_INSN_INFO_EQ_USES (insn_info); *use_rec; use_rec++) { df_ref use = *use_rec; inv = invariant_for_use (use); if (inv) - record_use (inv->def, DF_REF_REAL_LOC (use), DF_REF_INSN (use)); + record_use (inv->def, use); } } @@ -992,7 +1005,9 @@ get_inv_cost (struct invariant *inv, int *comp_cost, unsigned *regs_needed) inv->stamp = actual_stamp; (*regs_needed)++; - (*comp_cost) += inv->cost; + if (!inv->cheap_address + || inv->def->n_addr_uses < inv->def->n_uses) + (*comp_cost) += inv->cost; #ifdef STACK_REGS { diff --git a/gcc/matrix-reorg.c b/gcc/matrix-reorg.c index 9c5369417f2..7b8de0b8909 100644 --- a/gcc/matrix-reorg.c +++ b/gcc/matrix-reorg.c @@ -243,6 +243,14 @@ typedef struct access_site_info *access_site_info_p; DEF_VEC_P (access_site_info_p); DEF_VEC_ALLOC_P (access_site_info_p, heap); +/* Calls to free when flattening a matrix. */ + +struct free_info +{ + gimple stmt; + tree func; +}; + /* Information about matrix to flatten. */ struct matrix_info { @@ -275,11 +283,7 @@ struct matrix_info tree allocation_function_decl; /* The calls to free for each level of indirection. */ - struct free_info - { - gimple stmt; - tree func; - } *free_stmts; + struct free_info *free_stmts; /* An array which holds for each dimension its size. where dimension 0 is the outer most (one that contains all the others). diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog index 5f5a4787caf..a1f0f242b4c 100644 --- a/gcc/objc/ChangeLog +++ b/gcc/objc/ChangeLog @@ -1,3 +1,45 @@ +2009-05-10 Ian Lance Taylor <iant@google.com> + + * objc-act.c (objc_building_struct): New static variable. + (objc_in_struct, objc_struct_types): New static variables. + (objc_start_struct, objc_finish_struct): New static functions. + (generate_struct_by_value_array): Call objc_start_struct instead + of start_struct, and call objc_finish_struct instead of + finish_struct. + (objc_build_struct, build_objc_symtab_template): Likewise. + (build_module_descriptor): Likewise. + (build_next_objc_exception_stuff): Likewise. + (build_protocol_template): Likewise. + (build_method_prototype_list_template): Likewise. + (build_method_prototype_template): Likewise. + (build_category_template, build_selector_template): Likewise. + (build_class_template, build_super_template): Likewise. + (build_ivar_template, build_ivar_list_template): Likewise. + (build_method_list_template): Likewise. + (build_method_template): Likewise. + +2009-05-10 Joseph Myers <joseph@codesourcery.com> + + * objc-act.c: Include intl.h. + (objc_lookup_protocol): Use complete sentences for diagnostics + with %qE for identifiers and translating results of + gen_type_name_0 to locale character set. + (objc_check_decl, check_protocol_recursively, + lookup_and_install_protocols, objc_build_string_object, + objc_get_class_reference, objc_declare_alias, objc_declare_class, + objc_get_class_ivars, error_with_ivar, check_duplicates, + objc_finish_message_expr, objc_build_protocol_expr, + objc_build_selector_expr, build_ivar_reference, objc_add_method, + add_category, add_instance_variable, objc_is_public, + check_methods, check_methods_accessible, check_protocol, + start_class, finish_class, start_protocol, really_start_method, + get_super_receiver, objc_lookup_ivar): Use %E and %qE for + identifiers in diagnostics. Translate generated text to locale + character set as needed. + (check_protocol, check_protocols): Change name parameter to type + tree. + (lang_report_error_function): Remove. + 2009-04-27 Ian Lance Taylor <iant@google.com> * objc-act.c (objc_gimplify_expr): Add casts to enum type. diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c index 741e344fd74..9bf7d3f0912 100644 --- a/gcc/objc/objc-act.c +++ b/gcc/objc/objc-act.c @@ -69,6 +69,7 @@ along with GCC; see the file COPYING3. If not see #include "debug.h" #include "target.h" #include "diagnostic.h" +#include "intl.h" #include "cgraph.h" #include "tree-iterator.h" #include "libfuncs.h" @@ -415,6 +416,35 @@ FILE *gen_declaration_file; static int generating_instance_variables = 0; +/* For building an objc struct. These may not be used when this file + is compiled as part of obj-c++. */ + +static bool objc_building_struct; +static bool objc_in_struct ATTRIBUTE_UNUSED; +static VEC(tree,heap) *objc_struct_types ATTRIBUTE_UNUSED; + +/* Start building a struct for objc. */ + +static tree +objc_start_struct (tree name) +{ + gcc_assert (!objc_building_struct); + objc_building_struct = true; + return start_struct (RECORD_TYPE, name, &objc_in_struct, &objc_struct_types, + UNKNOWN_LOCATION); +} + +/* Finish building a struct for objc. */ + +static tree +objc_finish_struct (tree type, tree fieldlist) +{ + gcc_assert (objc_building_struct); + objc_building_struct = false; + return finish_struct (type, fieldlist, NULL_TREE, objc_in_struct, + objc_struct_types); +} + /* Some platforms pass small structures through registers versus through an invisible pointer. Determine at what size structure is the transition point between the two possibilities. */ @@ -434,7 +464,7 @@ generate_struct_by_value_array (void) char buffer[5]; /* Create an unnamed struct that has `i' character components */ - type = start_struct (RECORD_TYPE, NULL_TREE); + type = objc_start_struct (NULL_TREE); strcpy (buffer, "c1"); field_decl = create_field_decl (char_type_node, @@ -448,7 +478,7 @@ generate_struct_by_value_array (void) buffer); chainon (field_decl_chain, field_decl); } - finish_struct (type, field_decl_chain, NULL_TREE); + objc_finish_struct (type, field_decl_chain); aggregate_in_mem[i] = aggregate_value_p (type, 0); if (!aggregate_in_mem[i]) @@ -788,7 +818,7 @@ static tree objc_build_struct (tree klass, tree fields, tree super_name) { tree name = CLASS_NAME (klass); - tree s = start_struct (RECORD_TYPE, name); + tree s = objc_start_struct (name); tree super = (super_name ? xref_tag (RECORD_TYPE, super_name) : NULL_TREE); tree t, objc_info = NULL_TREE; @@ -849,7 +879,7 @@ objc_build_struct (tree klass, tree fields, tree super_name) INIT_TYPE_OBJC_INFO (s); TYPE_OBJC_INTERFACE (s) = klass; - s = finish_struct (s, fields, NULL_TREE); + s = objc_finish_struct (s, fields); for (t = TYPE_NEXT_VARIANT (s); t; t = TYPE_NEXT_VARIANT (t), objc_info = TREE_CHAIN (objc_info)) @@ -980,17 +1010,17 @@ objc_lookup_protocol (tree proto, tree cls, tree typ, bool warn) if (warn) { - strcpy (errbuf, class_type ? "class \'" : "type \'"); + *errbuf = 0; gen_type_name_0 (class_type ? typ : TYPE_POINTER_TO (typ)); - strcat (errbuf, "\' does not "); /* NB: Types 'id' and 'Class' cannot reasonably be described as "implementing" a given protocol, since they do not have an implementation. */ - strcat (errbuf, class_type ? "implement" : "conform to"); - strcat (errbuf, " the \'"); - strcat (errbuf, IDENTIFIER_POINTER (PROTOCOL_NAME (proto))); - strcat (errbuf, "\' protocol"); - warning (0, errbuf); + if (class_type) + warning (0, "class %qs does not implement the %qE protocol", + identifier_to_locale (errbuf), PROTOCOL_NAME (proto)); + else + warning (0, "type %qs does not conform to the %qE protocol", + identifier_to_locale (errbuf), PROTOCOL_NAME (proto)); } return false; @@ -1338,8 +1368,8 @@ objc_check_decl (tree decl) if (TREE_CODE (type) != RECORD_TYPE) return; if (OBJC_TYPE_NAME (type) && (type = objc_is_class_name (OBJC_TYPE_NAME (type)))) - error ("statically allocated instance of Objective-C class %qs", - IDENTIFIER_POINTER (type)); + error ("statically allocated instance of Objective-C class %qE", + type); } /* Construct a PROTOCOLS-qualified variant of INTERFACE, where INTERFACE may @@ -1415,8 +1445,8 @@ check_protocol_recursively (tree proto, tree list) pp = lookup_protocol (pp); if (pp == proto) - fatal_error ("protocol %qs has circular dependency", - IDENTIFIER_POINTER (PROTOCOL_NAME (pp))); + fatal_error ("protocol %qE has circular dependency", + PROTOCOL_NAME (pp)); if (pp) check_protocol_recursively (proto, PROTOCOL_LIST (pp)); } @@ -1440,8 +1470,8 @@ lookup_and_install_protocols (tree protocols) return_value = chainon (return_value, build_tree_list (NULL_TREE, p)); else if (ident != error_mark_node) - error ("cannot find protocol declaration for %qs", - IDENTIFIER_POINTER (ident)); + error ("cannot find protocol declaration for %qE", + ident); } return return_value; @@ -1904,17 +1934,17 @@ objc_build_string_object (tree string) if (!constant_string_class || !(constant_string_type = CLASS_STATIC_TEMPLATE (constant_string_class))) - error ("cannot find interface declaration for %qs", - IDENTIFIER_POINTER (constant_string_id)); + error ("cannot find interface declaration for %qE", + constant_string_id); /* The NSConstantString/NXConstantString ivar layout is now known. */ else if (!check_string_class_template ()) - error ("interface %qs does not have valid constant string layout", - IDENTIFIER_POINTER (constant_string_id)); + error ("interface %qE does not have valid constant string layout", + constant_string_id); /* For the NeXT runtime, we can generate a literal reference to the string class, don't need to run a constructor. */ else if (flag_next_runtime && !setup_string_decl ()) - error ("cannot find reference tag for class %qs", - IDENTIFIER_POINTER (constant_string_id)); + error ("cannot find reference tag for class %qE", + constant_string_id); else { string_layout_checked = 1; /* Success! */ @@ -2057,8 +2087,7 @@ build_objc_symtab_template (void) { tree field_decl, field_decl_chain; - objc_symtab_template - = start_struct (RECORD_TYPE, get_identifier (UTAG_SYMTAB)); + objc_symtab_template = objc_start_struct (get_identifier (UTAG_SYMTAB)); /* long sel_ref_cnt; */ field_decl = create_field_decl (long_integer_type_node, "sel_ref_cnt"); @@ -2092,7 +2121,7 @@ build_objc_symtab_template (void) chainon (field_decl_chain, field_decl); } - finish_struct (objc_symtab_template, field_decl_chain, NULL_TREE); + objc_finish_struct (objc_symtab_template, field_decl_chain); } /* Create the initial value for the `defs' field of _objc_symtab. @@ -2292,8 +2321,7 @@ build_module_descriptor (void) push_lang_context (lang_name_c); /* extern "C" */ #endif - objc_module_template - = start_struct (RECORD_TYPE, get_identifier (UTAG_MODULE)); + objc_module_template = objc_start_struct (get_identifier (UTAG_MODULE)); /* long version; */ field_decl = create_field_decl (long_integer_type_node, "version"); @@ -2315,7 +2343,7 @@ build_module_descriptor (void) "symtab"); chainon (field_decl_chain, field_decl); - finish_struct (objc_module_template, field_decl_chain, NULL_TREE); + objc_finish_struct (objc_module_template, field_decl_chain); /* Create an instance of "_objc_module". */ UOBJC_MODULES_decl = start_var_decl (objc_module_template, "_OBJC_MODULES"); @@ -2753,8 +2781,8 @@ objc_get_class_reference (tree ident) if (local_scope || !(ident = objc_is_class_name (ident))) { - error ("%qs is not an Objective-C class name or alias", - IDENTIFIER_POINTER (orig_ident)); + error ("%qE is not an Objective-C class name or alias", + orig_ident); return error_mark_node; } @@ -2886,9 +2914,9 @@ objc_declare_alias (tree alias_ident, tree class_ident) #endif /* OBJCPLUS */ if (!(underlying_class = objc_is_class_name (class_ident))) - warning (0, "cannot find class %qs", IDENTIFIER_POINTER (class_ident)); + warning (0, "cannot find class %qE", class_ident); else if (objc_is_class_name (alias_ident)) - warning (0, "class %qs already exists", IDENTIFIER_POINTER (alias_ident)); + warning (0, "class %qE already exists", alias_ident); else { /* Implement @compatibility_alias as a typedef. */ @@ -2932,8 +2960,8 @@ objc_declare_class (tree ident_list) if (!TYPE_HAS_OBJC_INFO (type) || !TYPE_OBJC_INTERFACE (type)) { - error ("%qs redeclared as different kind of symbol", - IDENTIFIER_POINTER (ident)); + error ("%qE redeclared as different kind of symbol", + ident); error ("previous declaration of %q+D", record); } @@ -3354,8 +3382,8 @@ objc_get_class_ivars (tree class_name) if (interface) return get_class_ivars (interface, true); - error ("cannot find interface declaration for %qs", - IDENTIFIER_POINTER (class_name)); + error ("cannot find interface declaration for %qE", + class_name); return error_mark_node; } @@ -3993,7 +4021,7 @@ build_next_objc_exception_stuff (void) tree field_decl, field_decl_chain, index, temp_type; objc_exception_data_template - = start_struct (RECORD_TYPE, get_identifier (UTAG_EXCDATA)); + = objc_start_struct (get_identifier (UTAG_EXCDATA)); /* int buf[OBJC_JBLEN]; */ @@ -4009,7 +4037,7 @@ build_next_objc_exception_stuff (void) "pointers"); chainon (field_decl_chain, field_decl); - finish_struct (objc_exception_data_template, field_decl_chain, NULL_TREE); + objc_finish_struct (objc_exception_data_template, field_decl_chain); /* int _setjmp(...); */ /* If the user includes <setjmp.h>, this shall be superseded by @@ -4156,8 +4184,7 @@ build_protocol_template (void) { tree field_decl, field_decl_chain; - objc_protocol_template = start_struct (RECORD_TYPE, - get_identifier (UTAG_PROTOCOL)); + objc_protocol_template = objc_start_struct (get_identifier (UTAG_PROTOCOL)); /* struct _objc_class *isa; */ field_decl = create_field_decl (build_pointer_type @@ -4187,7 +4214,7 @@ build_protocol_template (void) "class_methods"); chainon (field_decl_chain, field_decl); - finish_struct (objc_protocol_template, field_decl_chain, NULL_TREE); + objc_finish_struct (objc_protocol_template, field_decl_chain); } static tree @@ -4237,7 +4264,7 @@ build_method_prototype_list_template (tree list_type, int size) /* Generate an unnamed struct definition. */ - objc_ivar_list_record = start_struct (RECORD_TYPE, NULL_TREE); + objc_ivar_list_record = objc_start_struct (NULL_TREE); /* int method_count; */ field_decl = create_field_decl (integer_type_node, "method_count"); @@ -4251,7 +4278,7 @@ build_method_prototype_list_template (tree list_type, int size) "method_list"); chainon (field_decl_chain, field_decl); - finish_struct (objc_ivar_list_record, field_decl_chain, NULL_TREE); + objc_finish_struct (objc_ivar_list_record, field_decl_chain); return objc_ivar_list_record; } @@ -4262,8 +4289,7 @@ build_method_prototype_template (void) tree proto_record; tree field_decl, field_decl_chain; - proto_record - = start_struct (RECORD_TYPE, get_identifier (UTAG_METHOD_PROTOTYPE)); + proto_record = objc_start_struct (get_identifier (UTAG_METHOD_PROTOTYPE)); /* SEL _cmd; */ field_decl = create_field_decl (objc_selector_type, "_cmd"); @@ -4273,7 +4299,7 @@ build_method_prototype_template (void) field_decl = create_field_decl (string_type_node, "method_types"); chainon (field_decl_chain, field_decl); - finish_struct (proto_record, field_decl_chain, NULL_TREE); + objc_finish_struct (proto_record, field_decl_chain); return proto_record; } @@ -4758,8 +4784,7 @@ build_category_template (void) { tree field_decl, field_decl_chain; - objc_category_template = start_struct (RECORD_TYPE, - get_identifier (UTAG_CATEGORY)); + objc_category_template = objc_start_struct (get_identifier (UTAG_CATEGORY)); /* char *category_name; */ field_decl = create_field_decl (string_type_node, "category_name"); @@ -4786,7 +4811,7 @@ build_category_template (void) "protocol_list"); chainon (field_decl_chain, field_decl); - finish_struct (objc_category_template, field_decl_chain, NULL_TREE); + objc_finish_struct (objc_category_template, field_decl_chain); } /* struct _objc_selector { @@ -4797,11 +4822,9 @@ build_category_template (void) static void build_selector_template (void) { - tree field_decl, field_decl_chain; - objc_selector_template - = start_struct (RECORD_TYPE, get_identifier (UTAG_SELECTOR)); + objc_selector_template = objc_start_struct (get_identifier (UTAG_SELECTOR)); /* SEL sel_id; */ field_decl = create_field_decl (objc_selector_type, "sel_id"); @@ -4811,7 +4834,7 @@ build_selector_template (void) field_decl = create_field_decl (string_type_node, "sel_type"); chainon (field_decl_chain, field_decl); - finish_struct (objc_selector_template, field_decl_chain, NULL_TREE); + objc_finish_struct (objc_selector_template, field_decl_chain); } /* struct _objc_class { @@ -4847,8 +4870,7 @@ build_class_template (void) { tree field_decl, field_decl_chain; - objc_class_template - = start_struct (RECORD_TYPE, get_identifier (UTAG_CLASS)); + objc_class_template = objc_start_struct (get_identifier (UTAG_CLASS)); /* struct _objc_class *isa; */ field_decl = create_field_decl (build_pointer_type (objc_class_template), @@ -4941,7 +4963,7 @@ build_class_template (void) "gc_object_type"); chainon (field_decl_chain, field_decl); - finish_struct (objc_class_template, field_decl_chain, NULL_TREE); + objc_finish_struct (objc_class_template, field_decl_chain); } /* Generate appropriate forward declarations for an implementation. */ @@ -4970,7 +4992,7 @@ static void error_with_ivar (const char *message, tree decl) { error ("%J%s %qs", decl, - message, gen_declaration (decl)); + message, identifier_to_locale (gen_declaration (decl))); } @@ -5042,7 +5064,7 @@ build_super_template (void) { tree field_decl, field_decl_chain; - objc_super_template = start_struct (RECORD_TYPE, get_identifier (UTAG_SUPER)); + objc_super_template = objc_start_struct (get_identifier (UTAG_SUPER)); /* struct _objc_object *self; */ field_decl = create_field_decl (objc_object_type, "self"); @@ -5053,7 +5075,7 @@ build_super_template (void) "super_class"); chainon (field_decl_chain, field_decl); - finish_struct (objc_super_template, field_decl_chain, NULL_TREE); + objc_finish_struct (objc_super_template, field_decl_chain); } /* struct _objc_ivar { @@ -5069,7 +5091,7 @@ build_ivar_template (void) tree field_decl, field_decl_chain; objc_ivar_id = get_identifier (UTAG_IVAR); - objc_ivar_record = start_struct (RECORD_TYPE, objc_ivar_id); + objc_ivar_record = objc_start_struct (objc_ivar_id); /* char *ivar_name; */ field_decl = create_field_decl (string_type_node, "ivar_name"); @@ -5083,7 +5105,7 @@ build_ivar_template (void) field_decl = create_field_decl (integer_type_node, "ivar_offset"); chainon (field_decl_chain, field_decl); - finish_struct (objc_ivar_record, field_decl_chain, NULL_TREE); + objc_finish_struct (objc_ivar_record, field_decl_chain); return objc_ivar_record; } @@ -5099,7 +5121,7 @@ build_ivar_list_template (tree list_type, int size) tree objc_ivar_list_record; tree field_decl, field_decl_chain; - objc_ivar_list_record = start_struct (RECORD_TYPE, NULL_TREE); + objc_ivar_list_record = objc_start_struct (NULL_TREE); /* int ivar_count; */ field_decl = create_field_decl (integer_type_node, "ivar_count"); @@ -5113,7 +5135,7 @@ build_ivar_list_template (tree list_type, int size) "ivar_list"); chainon (field_decl_chain, field_decl); - finish_struct (objc_ivar_list_record, field_decl_chain, NULL_TREE); + objc_finish_struct (objc_ivar_list_record, field_decl_chain); return objc_ivar_list_record; } @@ -5130,7 +5152,7 @@ build_method_list_template (tree list_type, int size) tree objc_ivar_list_record; tree field_decl, field_decl_chain; - objc_ivar_list_record = start_struct (RECORD_TYPE, NULL_TREE); + objc_ivar_list_record = objc_start_struct (NULL_TREE); /* struct _objc__method_prototype_list *method_next; */ field_decl = create_field_decl (objc_method_proto_list_ptr, @@ -5149,7 +5171,7 @@ build_method_list_template (tree list_type, int size) "method_list"); chainon (field_decl_chain, field_decl); - finish_struct (objc_ivar_list_record, field_decl_chain, NULL_TREE); + objc_finish_struct (objc_ivar_list_record, field_decl_chain); return objc_ivar_list_record; } @@ -5337,7 +5359,7 @@ build_method_template (void) tree _SLT_record; tree field_decl, field_decl_chain; - _SLT_record = start_struct (RECORD_TYPE, get_identifier (UTAG_METHOD)); + _SLT_record = objc_start_struct (get_identifier (UTAG_METHOD)); /* SEL _cmd; */ field_decl = create_field_decl (objc_selector_type, "_cmd"); @@ -5352,7 +5374,7 @@ build_method_template (void) "_imp"); chainon (field_decl_chain, field_decl); - finish_struct (_SLT_record, field_decl_chain, NULL_TREE); + objc_finish_struct (_SLT_record, field_decl_chain); return _SLT_record; } @@ -6103,23 +6125,23 @@ check_duplicates (hash hsh, int methods, int is_class) { bool type = TREE_CODE (meth) == INSTANCE_METHOD_DECL; - warning (0, "multiple methods named %<%c%s%> found", + warning (0, "multiple methods named %<%c%E%> found", (is_class ? '+' : '-'), - IDENTIFIER_POINTER (METHOD_SEL_NAME (meth))); + METHOD_SEL_NAME (meth)); inform (0, "%Jusing %<%c%s%>", meth, (type ? '-' : '+'), - gen_method_decl (meth)); + identifier_to_locale (gen_method_decl (meth))); } else { bool type = TREE_CODE (meth) == INSTANCE_METHOD_DECL; - warning (0, "multiple selectors named %<%c%s%> found", + warning (0, "multiple selectors named %<%c%E%> found", (is_class ? '+' : '-'), - IDENTIFIER_POINTER (METHOD_SEL_NAME (meth))); + METHOD_SEL_NAME (meth)); inform (0, "%Jfound %<%c%s%>", meth, (type ? '-' : '+'), - gen_method_decl (meth)); + identifier_to_locale (gen_method_decl (meth))); } for (loop = hsh->list; loop; loop = loop->next) @@ -6128,7 +6150,7 @@ check_duplicates (hash hsh, int methods, int is_class) inform (0, "%Jalso found %<%c%s%>", loop->value, (type ? '-' : '+'), - gen_method_decl (loop->value)); + identifier_to_locale (gen_method_decl (loop->value))); } } } @@ -6340,8 +6362,8 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params) { if (!CLASS_SUPER_NAME (implementation_template)) { - error ("no super class declared in @interface for %qs", - IDENTIFIER_POINTER (CLASS_NAME (implementation_template))); + error ("no super class declared in @interface for %qE", + CLASS_NAME (implementation_template)); return error_mark_node; } rtype = lookup_interface (CLASS_SUPER_NAME (implementation_template)); @@ -6378,9 +6400,8 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params) = lookup_method_in_protocol_list (rprotos, sel_name, 0); if (method_prototype) - warning (0, "found %<-%s%> instead of %<+%s%> in protocol(s)", - IDENTIFIER_POINTER (sel_name), - IDENTIFIER_POINTER (sel_name)); + warning (0, "found %<-%E%> instead of %<+%E%> in protocol(s)", + sel_name, sel_name); } } } @@ -6438,7 +6459,7 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params) else { warning (0, "invalid receiver type %qs", - gen_type_name (orig_rtype)); + identifier_to_locale (gen_type_name (orig_rtype))); /* After issuing the "invalid receiver" warning, perform method lookup as if we were messaging 'id'. */ rtype = rprotos = NULL_TREE; @@ -6452,9 +6473,9 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params) if (!method_prototype) { if (rprotos) - warning (0, "%<%c%s%> not found in protocol(s)", + warning (0, "%<%c%E%> not found in protocol(s)", (class_tree ? '+' : '-'), - IDENTIFIER_POINTER (sel_name)); + sel_name); if (!rtype) method_prototype @@ -6466,17 +6487,17 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params) static bool warn_missing_methods = false; if (rtype) - warning (0, "%qs may not respond to %<%c%s%>", - IDENTIFIER_POINTER (OBJC_TYPE_NAME (rtype)), + warning (0, "%qE may not respond to %<%c%E%>", + OBJC_TYPE_NAME (rtype), (class_tree ? '+' : '-'), - IDENTIFIER_POINTER (sel_name)); + sel_name); /* If we are messaging an 'id' or 'Class' object and made it here, then we have failed to find _any_ instance or class method, respectively. */ else - warning (0, "no %<%c%s%> method found", + warning (0, "no %<%c%E%> method found", (class_tree ? '+' : '-'), - IDENTIFIER_POINTER (sel_name)); + sel_name); if (!warn_missing_methods) { @@ -6616,8 +6637,8 @@ objc_build_protocol_expr (tree protoname) if (!p) { - error ("cannot find protocol declaration for %qs", - IDENTIFIER_POINTER (protoname)); + error ("cannot find protocol declaration for %qE", + protoname); return error_mark_node; } @@ -6716,7 +6737,7 @@ objc_build_selector_expr (tree selnamelist) /* If still not found, print out a warning. */ if (!hsh) { - warning (0, "undeclared selector %qs", IDENTIFIER_POINTER (selname)); + warning (0, "undeclared selector %qE", selname); } } @@ -6758,8 +6779,8 @@ build_ivar_reference (tree id) to an instance variable. It's better to catch the cases where this is done unknowingly than to support the above paradigm. */ - warning (0, "instance variable %qs accessed in class method", - IDENTIFIER_POINTER (id)); + warning (0, "instance variable %qE accessed in class method", + id); self_decl = convert (objc_instance_type, self_decl); /* cast */ } @@ -6992,9 +7013,9 @@ objc_add_method (tree klass, tree method, int is_class) if ((TREE_CODE (klass) == CLASS_INTERFACE_TYPE || TREE_CODE (klass) == CATEGORY_INTERFACE_TYPE) && !comp_proto_with_proto (method, mth, 1)) - error ("duplicate declaration of method %<%c%s%>", + error ("duplicate declaration of method %<%c%E%>", is_class ? '+' : '-', - IDENTIFIER_POINTER (METHOD_SEL_NAME (mth))); + METHOD_SEL_NAME (mth)); } if (is_class) @@ -7053,9 +7074,9 @@ add_category (tree klass, tree category) if (cat) { - warning (0, "duplicate interface declaration for category %<%s(%s)%>", - IDENTIFIER_POINTER (CLASS_NAME (klass)), - IDENTIFIER_POINTER (CLASS_SUPER_NAME (category))); + warning (0, "duplicate interface declaration for category %<%E(%E)%>", + CLASS_NAME (klass), + CLASS_SUPER_NAME (category)); } else { @@ -7074,8 +7095,8 @@ add_instance_variable (tree klass, int visibility, tree field_decl) { tree field_type = TREE_TYPE (field_decl); const char *ivar_name = DECL_NAME (field_decl) - ? IDENTIFIER_POINTER (DECL_NAME (field_decl)) - : "<unnamed>"; + ? identifier_to_locale (IDENTIFIER_POINTER (DECL_NAME (field_decl))) + : _("<unnamed>"); #ifdef OBJCPLUS if (TREE_CODE (field_type) == REFERENCE_TYPE) @@ -7106,7 +7127,7 @@ add_instance_variable (tree klass, int visibility, tree field_decl) || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (field_type) || TYPE_POLYMORPHIC_P (field_type))) { - const char *type_name = IDENTIFIER_POINTER (OBJC_TYPE_NAME (field_type)); + tree type_name = OBJC_TYPE_NAME (field_type); if (flag_objc_call_cxx_cdtors) { @@ -7116,13 +7137,13 @@ add_instance_variable (tree klass, int visibility, tree field_decl) if (TYPE_NEEDS_CONSTRUCTING (field_type) && !TYPE_HAS_DEFAULT_CONSTRUCTOR (field_type)) { - warning (0, "type %qs has no default constructor to call", + warning (0, "type %qE has no default constructor to call", type_name); /* If we cannot call a constructor, we should also avoid calling the destructor, for symmetry. */ if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (field_type)) - warning (0, "destructor for %qs shall not be run either", + warning (0, "destructor for %qE shall not be run either", type_name); } } @@ -7134,8 +7155,8 @@ add_instance_variable (tree klass, int visibility, tree field_decl) { /* Vtable pointers are Real Bad(tm), since Obj-C cannot initialize them. */ - error ("type %qs has virtual member functions", type_name); - error ("illegal aggregate type %qs specified " + error ("type %qE has virtual member functions", type_name); + error ("illegal aggregate type %qE specified " "for instance variable %qs", type_name, ivar_name); /* Return class as is without adding this ivar. */ @@ -7145,9 +7166,9 @@ add_instance_variable (tree klass, int visibility, tree field_decl) /* User-defined constructors and destructors are not known to Obj-C and hence will not be called. This may or may not be a problem. */ if (TYPE_NEEDS_CONSTRUCTING (field_type)) - warning (0, "type %qs has a user-defined constructor", type_name); + warning (0, "type %qE has a user-defined constructor", type_name); if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (field_type)) - warning (0, "type %qs has a user-defined destructor", type_name); + warning (0, "type %qE has a user-defined destructor", type_name); if (!warn_cxx_ivars) { @@ -7231,8 +7252,8 @@ objc_is_public (tree expr, tree identifier) if (!klass) { - error ("cannot find interface declaration for %qs", - IDENTIFIER_POINTER (OBJC_TYPE_NAME (basetype))); + error ("cannot find interface declaration for %qE", + OBJC_TYPE_NAME (basetype)); return 0; } @@ -7260,8 +7281,8 @@ objc_is_public (tree expr, tree identifier) int priv = is_private (decl); if (priv) - error ("instance variable %qs is declared private", - IDENTIFIER_POINTER (DECL_NAME (decl))); + error ("instance variable %qE is declared private", + DECL_NAME (decl)); return !priv; } @@ -7271,15 +7292,15 @@ objc_is_public (tree expr, tree identifier) non-@public ivars. We will let this slide for now... */ if (!objc_method_context) { - warning (0, "instance variable %qs is %s; " + warning (0, "instance variable %qE is %s; " "this will be a hard error in the future", - IDENTIFIER_POINTER (identifier), + identifier, TREE_PRIVATE (decl) ? "@private" : "@protected"); return 1; } - error ("instance variable %qs is declared %s", - IDENTIFIER_POINTER (identifier), + error ("instance variable %qE is declared %s", + identifier, TREE_PRIVATE (decl) ? "private" : "protected"); return 0; } @@ -7304,17 +7325,17 @@ check_methods (tree chain, tree list, int mtype) { if (TREE_CODE (objc_implementation_context) == CLASS_IMPLEMENTATION_TYPE) - warning (0, "incomplete implementation of class %qs", - IDENTIFIER_POINTER (CLASS_NAME (objc_implementation_context))); + warning (0, "incomplete implementation of class %qE", + CLASS_NAME (objc_implementation_context)); else if (TREE_CODE (objc_implementation_context) == CATEGORY_IMPLEMENTATION_TYPE) - warning (0, "incomplete implementation of category %qs", - IDENTIFIER_POINTER (CLASS_SUPER_NAME (objc_implementation_context))); + warning (0, "incomplete implementation of category %qE", + CLASS_SUPER_NAME (objc_implementation_context)); first = 0; } - warning (0, "method definition for %<%c%s%> not found", - mtype, IDENTIFIER_POINTER (METHOD_SEL_NAME (chain))); + warning (0, "method definition for %<%c%E%> not found", + mtype, METHOD_SEL_NAME (chain)); } chain = TREE_CHAIN (chain); @@ -7392,18 +7413,16 @@ check_methods_accessible (tree chain, tree context, int mtype) { if (TREE_CODE (objc_implementation_context) == CLASS_IMPLEMENTATION_TYPE) - warning (0, "incomplete implementation of class %qs", - IDENTIFIER_POINTER - (CLASS_NAME (objc_implementation_context))); + warning (0, "incomplete implementation of class %qE", + CLASS_NAME (objc_implementation_context)); else if (TREE_CODE (objc_implementation_context) == CATEGORY_IMPLEMENTATION_TYPE) - warning (0, "incomplete implementation of category %qs", - IDENTIFIER_POINTER - (CLASS_SUPER_NAME (objc_implementation_context))); + warning (0, "incomplete implementation of category %qE", + CLASS_SUPER_NAME (objc_implementation_context)); first = 0; } - warning (0, "method definition for %<%c%s%> not found", - mtype, IDENTIFIER_POINTER (METHOD_SEL_NAME (chain))); + warning (0, "method definition for %<%c%E%> not found", + mtype, METHOD_SEL_NAME (chain)); } chain = TREE_CHAIN (chain); /* next method... */ @@ -7416,7 +7435,7 @@ check_methods_accessible (tree chain, tree context, int mtype) with any protocols that P inherits. */ static void -check_protocol (tree p, const char *type, const char *name) +check_protocol (tree p, const char *type, tree name) { if (TREE_CODE (p) == PROTOCOL_INTERFACE_TYPE) { @@ -7443,8 +7462,8 @@ check_protocol (tree p, const char *type, const char *name) } if (!f1 || !f2) - warning (0, "%s %qs does not fully implement the %qs protocol", - type, name, IDENTIFIER_POINTER (PROTOCOL_NAME (p))); + warning (0, "%s %qE does not fully implement the %qE protocol", + type, name, PROTOCOL_NAME (p)); } /* Check protocols recursively. */ @@ -7472,7 +7491,7 @@ check_protocol (tree p, const char *type, const char *name) in PROTO_LIST. */ static void -check_protocols (tree proto_list, const char *type, const char *name) +check_protocols (tree proto_list, const char *type, tree name) { for ( ; proto_list; proto_list = TREE_CHAIN (proto_list)) { @@ -7520,9 +7539,9 @@ start_class (enum tree_code code, tree class_name, tree super_name, if (!super || !lookup_interface (super)) { - error ("cannot find interface declaration for %qs, superclass of %qs", - IDENTIFIER_POINTER (super ? super : super_name), - IDENTIFIER_POINTER (class_name)); + error ("cannot find interface declaration for %qE, superclass of %qE", + super ? super : super_name, + class_name); super_name = NULL_TREE; } else @@ -7536,8 +7555,8 @@ start_class (enum tree_code code, tree class_name, tree super_name, if (! objc_is_class_name (class_name) && (decl = lookup_name (class_name))) { - error ("%qs redeclared as different kind of symbol", - IDENTIFIER_POINTER (class_name)); + error ("%qE redeclared as different kind of symbol", + class_name); error ("previous declaration of %q+D", decl); } @@ -7550,8 +7569,8 @@ start_class (enum tree_code code, tree class_name, tree super_name, for (chain = implemented_classes; chain; chain = TREE_CHAIN (chain)) if (TREE_VALUE (chain) == class_name) { - error ("reimplementation of class %qs", - IDENTIFIER_POINTER (class_name)); + error ("reimplementation of class %qE", + class_name); return error_mark_node; } implemented_classes = tree_cons (NULL_TREE, class_name, @@ -7567,8 +7586,8 @@ start_class (enum tree_code code, tree class_name, tree super_name, if (!(implementation_template = lookup_interface (class_name))) { - warning (0, "cannot find interface declaration for %qs", - IDENTIFIER_POINTER (class_name)); + warning (0, "cannot find interface declaration for %qE", + class_name); add_class (implementation_template = objc_implementation_context, class_name); } @@ -7580,11 +7599,12 @@ start_class (enum tree_code code, tree class_name, tree super_name, && (super_name != CLASS_SUPER_NAME (implementation_template))) { tree previous_name = CLASS_SUPER_NAME (implementation_template); - const char *const name = - previous_name ? IDENTIFIER_POINTER (previous_name) : ""; - error ("conflicting super class name %qs", - IDENTIFIER_POINTER (super_name)); - error ("previous declaration of %qs", name); + error ("conflicting super class name %qE", + super_name); + if (previous_name) + error ("previous declaration of %qE", previous_name); + else + error ("previous declaration"); } else if (! super_name) @@ -7598,11 +7618,11 @@ start_class (enum tree_code code, tree class_name, tree super_name, { if (lookup_interface (class_name)) #ifdef OBJCPLUS - error ("duplicate interface declaration for class %qs", + error ("duplicate interface declaration for class %qE", #else - warning (0, "duplicate interface declaration for class %qs", + warning (0, "duplicate interface declaration for class %qE", #endif - IDENTIFIER_POINTER (class_name)); + class_name); else add_class (klass, class_name); @@ -7621,8 +7641,8 @@ start_class (enum tree_code code, tree class_name, tree super_name, if (!(class_category_is_assoc_with = lookup_interface (class_name))) { - error ("cannot find interface declaration for %qs", - IDENTIFIER_POINTER (class_name)); + error ("cannot find interface declaration for %qE", + class_name); exit (FATAL_EXIT_CODE); } else @@ -7646,8 +7666,8 @@ start_class (enum tree_code code, tree class_name, tree super_name, if (!(implementation_template = lookup_interface (class_name))) { - error ("cannot find interface declaration for %qs", - IDENTIFIER_POINTER (class_name)); + error ("cannot find interface declaration for %qE", + class_name); exit (FATAL_EXIT_CODE); } } @@ -7741,7 +7761,7 @@ finish_class (tree klass) if (CLASS_PROTOCOL_LIST (implementation_template)) check_protocols (CLASS_PROTOCOL_LIST (implementation_template), "class", - IDENTIFIER_POINTER (CLASS_NAME (objc_implementation_context))); + CLASS_NAME (objc_implementation_context)); } } @@ -7760,7 +7780,7 @@ finish_class (tree klass) if (CLASS_PROTOCOL_LIST (category)) check_protocols (CLASS_PROTOCOL_LIST (category), "category", - IDENTIFIER_POINTER (CLASS_SUPER_NAME (objc_implementation_context))); + CLASS_SUPER_NAME (objc_implementation_context)); } } } @@ -7854,8 +7874,8 @@ start_protocol (enum tree_code code, tree name, tree list) } else { - warning (0, "duplicate declaration for protocol %qs", - IDENTIFIER_POINTER (name)); + warning (0, "duplicate declaration for protocol %qE", + name); } return protocol; } @@ -8684,10 +8704,10 @@ really_start_method (tree method, warning (0, "%Jconflicting types for %<%c%s%>", method, (type ? '-' : '+'), - gen_method_decl (method)); + identifier_to_locale (gen_method_decl (method))); inform (0, "%Jprevious declaration of %<%c%s%>", proto, (type ? '-' : '+'), - gen_method_decl (proto)); + identifier_to_locale (gen_method_decl (proto))); } } else @@ -8771,8 +8791,8 @@ get_super_receiver (void) /* Barf if super used in a category of Object. */ if (!super_name) { - error ("no super class declared in interface for %qs", - IDENTIFIER_POINTER (CLASS_NAME (implementation_template))); + error ("no super class declared in interface for %qE", + CLASS_NAME (implementation_template)); return error_mark_node; } @@ -8866,22 +8886,6 @@ objc_finish_method_definition (tree fndecl) warning (0, "method possibly missing a [super dealloc] call"); } -#if 0 -int -lang_report_error_function (tree decl) -{ - if (objc_method_context) - { - fprintf (stderr, "In method %qs\n", - IDENTIFIER_POINTER (METHOD_SEL_NAME (objc_method_context))); - return 1; - } - - else - return 0; -} -#endif - /* Given a tree DECL node, produce a printable description of it in the given buffer, overwriting the buffer. */ @@ -9493,8 +9497,8 @@ objc_lookup_ivar (tree other, tree id) && !DECL_FILE_SCOPE_P (other)) #endif { - warning (0, "local declaration of %qs hides instance variable", - IDENTIFIER_POINTER (id)); + warning (0, "local declaration of %qE hides instance variable", + id); return other; } diff --git a/gcc/objcp/ChangeLog b/gcc/objcp/ChangeLog index fdf60362df8..4a4067d3bd7 100644 --- a/gcc/objcp/ChangeLog +++ b/gcc/objcp/ChangeLog @@ -1,3 +1,9 @@ +2009-05-10 Ian Lance Taylor <iant@google.com> + + * objcp-decl.h (start_struct): Add three new, ignored, macro + parameters. + (finish_struct): Add two new, ignored, macro parameters. + 2009-04-21 Joseph Myers <joseph@codesourcery.com> * ChangeLog: Add copyright and license notices. diff --git a/gcc/objcp/objcp-decl.h b/gcc/objcp/objcp-decl.h index ece888f5b1f..3f6c4321e7f 100644 --- a/gcc/objcp/objcp-decl.h +++ b/gcc/objcp/objcp-decl.h @@ -1,6 +1,6 @@ /* Process the ObjC-specific declarations and variables for the Objective-C++ compiler. - Copyright (C) 2005, 2007 Free Software Foundation, Inc. + Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc. Contributed by Ziemowit Laski <zlaski@apple.com> This file is part of GCC. @@ -37,9 +37,9 @@ extern tree objcp_end_compound_stmt (tree, int); invoke the original C++ functions if needed). */ #ifdef OBJCP_REMAP_FUNCTIONS -#define start_struct(code, name) \ +#define start_struct(code, name, in_struct, struct_types, loc) \ objcp_start_struct (code, name) -#define finish_struct(t, fieldlist, attributes) \ +#define finish_struct(t, fieldlist, attributes, in_struct, struct_types) \ objcp_finish_struct (t, fieldlist, attributes) #define finish_function() \ objcp_finish_function () diff --git a/gcc/opts.c b/gcc/opts.c index 1170967b949..818acdf8f65 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -848,6 +848,7 @@ decode_options (unsigned int argc, const char **argv) #endif flag_guess_branch_prob = opt1; flag_cprop_registers = opt1; + flag_forward_propagate = opt1; flag_if_conversion = opt1; flag_if_conversion2 = opt1; flag_ipa_pure_const = opt1; @@ -873,7 +874,6 @@ decode_options (unsigned int argc, const char **argv) flag_thread_jumps = opt2; flag_crossjumping = opt2; flag_optimize_sibling_calls = opt2; - flag_forward_propagate = opt2; flag_cse_follow_jumps = opt2; flag_gcse = opt2; flag_expensive_optimizations = opt2; @@ -961,6 +961,27 @@ decode_options (unsigned int argc, const char **argv) handle_options (argc, argv, lang_mask); + /* Make DUMP_BASE_NAME relative to the AUX_BASE_NAME directory, + typically the directory to contain the object file. */ + if (aux_base_name && ! IS_ABSOLUTE_PATH (dump_base_name)) + { + const char *aux_base; + + base_of_path (aux_base_name, &aux_base); + if (aux_base_name != aux_base) + { + int dir_len = aux_base - aux_base_name; + char *new_dump_base_name = + XNEWVEC (char, strlen(dump_base_name) + dir_len + 1); + + /* Copy directory component from AUX_BASE_NAME. */ + memcpy (new_dump_base_name, aux_base_name, dir_len); + /* Append existing DUMP_BASE_NAME. */ + strcpy (new_dump_base_name + dir_len, dump_base_name); + dump_base_name = new_dump_base_name; + } + } + /* Handle related options for unit-at-a-time, toplevel-reorder, and section-anchors. */ if (!flag_unit_at_a_time) diff --git a/gcc/passes.c b/gcc/passes.c index 312dfa9db72..7a39ac70bc1 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -846,7 +846,7 @@ do_per_function (void (*callback) (void *data), void *data) { struct cgraph_node *node; for (node = cgraph_nodes; node; node = node->next) - if (node->analyzed) + if (node->analyzed && gimple_has_body_p (node->decl)) { push_cfun (DECL_STRUCT_FUNCTION (node->decl)); current_function_decl = node->decl; diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog index c0690b8c0af..ac565e50fa4 100644 --- a/gcc/po/ChangeLog +++ b/gcc/po/ChangeLog @@ -1,3 +1,7 @@ +2009-05-10 Joseph Myers <joseph@codesourcery.com> + + * gcc.pot: Regenerate. + 2009-04-22 Joseph Myers <joseph@codesourcery.com> * gcc.pot: Regenerate. diff --git a/gcc/po/gcc.pot b/gcc/po/gcc.pot index a876a6c39de..c3f85328bd8 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: 2009-04-22 16:20+0000\n" +"POT-Creation-Date: 2009-05-10 10:32+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" @@ -16,7 +16,8 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: c-decl.c:3830 +#: c-decl.c:3944 c-pretty-print.c:393 c-typeck.c:5151 toplev.c:1597 +#: cp/error.c:585 cp/error.c:848 msgid "<anonymous>" msgstr "" @@ -277,66 +278,106 @@ msgstr "" msgid "field precision" msgstr "" -#: c-opts.c:1497 fortran/cpp.c:552 +#: c-objc-common.c:164 +msgid "({anonymous})" +msgstr "" + +#: c-opts.c:1490 cp/error.c:990 fortran/cpp.c:552 msgid "<built-in>" msgstr "" #. Handle deferred options from command-line. -#: c-opts.c:1515 fortran/cpp.c:557 +#: c-opts.c:1508 fortran/cpp.c:557 msgid "<command-line>" msgstr "" -#: c-typeck.c:5258 +#: c-pretty-print.c:314 +msgid "<type-error>" +msgstr "" + +#: c-pretty-print.c:353 +msgid "<unnamed-unsigned:" +msgstr "" + +#: c-pretty-print.c:354 +msgid "<unnamed-signed:" +msgstr "" + +#: c-pretty-print.c:357 +msgid "<unnamed-float:" +msgstr "" + +#: c-pretty-print.c:360 +msgid "<unnamed-fixed:" +msgstr "" + +#: c-pretty-print.c:375 +msgid "<typedef-error>" +msgstr "" + +#: c-pretty-print.c:388 +msgid "<tag-error>" +msgstr "" + +#: c-pretty-print.c:1126 +msgid "<erroneous-expression>" +msgstr "" + +#: c-pretty-print.c:1130 cp/cxx-pretty-print.c:154 +msgid "<return-value>" +msgstr "" + +#: c-typeck.c:5268 msgid "array initialized from parenthesized string constant" msgstr "" -#: c-typeck.c:5328 c-typeck.c:6187 +#: c-typeck.c:5338 c-typeck.c:6197 msgid "initialization of a flexible array member" msgstr "" -#: c-typeck.c:5338 cp/typeck2.c:757 +#: c-typeck.c:5348 cp/typeck2.c:756 #, gcc-internal-format msgid "char-array initialized from wide string" msgstr "" -#: c-typeck.c:5346 +#: c-typeck.c:5356 msgid "wide character array initialized from non-wide string" msgstr "" -#: c-typeck.c:5352 +#: c-typeck.c:5362 msgid "wide character array initialized from incompatible wide string" msgstr "" -#: c-typeck.c:5370 cp/typeck2.c:785 +#: c-typeck.c:5380 cp/typeck2.c:784 #, gcc-internal-format msgid "initializer-string for array of chars is too long" msgstr "" -#: c-typeck.c:5376 +#: c-typeck.c:5386 msgid "array of inappropriate type initialized from string constant" msgstr "" #. ??? This should not be an error when inlining calls to #. unprototyped functions. -#: c-typeck.c:5443 c-typeck.c:4917 cp/typeck.c:1645 +#: c-typeck.c:5453 c-typeck.c:4925 cp/typeck.c:1645 #, gcc-internal-format msgid "invalid use of non-lvalue array" msgstr "" -#: c-typeck.c:5469 +#: c-typeck.c:5479 msgid "array initialized from non-constant array expression" msgstr "" -#: c-typeck.c:5483 c-typeck.c:5486 c-typeck.c:5494 c-typeck.c:5532 -#: c-typeck.c:6968 +#: c-typeck.c:5493 c-typeck.c:5496 c-typeck.c:5504 c-typeck.c:5542 +#: c-typeck.c:6996 msgid "initializer element is not constant" msgstr "" -#: c-typeck.c:5499 c-typeck.c:5544 c-typeck.c:6978 +#: c-typeck.c:5509 c-typeck.c:5554 c-typeck.c:7006 msgid "initializer element is not a constant expression" msgstr "" -#: c-typeck.c:5539 c-typeck.c:6973 +#: c-typeck.c:5549 c-typeck.c:7001 #, gcc-internal-format msgid "initializer element is not computable at load time" msgstr "" @@ -345,124 +386,137 @@ 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-typeck.c:5553 c-decl.c:3224 c-decl.c:3239 +#: c-typeck.c:5563 c-decl.c:3337 c-decl.c:3352 #, gcc-internal-format msgid "variable-sized object may not be initialized" msgstr "" -#: c-typeck.c:5557 +#: c-typeck.c:5567 msgid "invalid initializer" msgstr "" -#: c-typeck.c:6044 +#: c-typeck.c:5776 +msgid "(anonymous)" +msgstr "" + +#: c-typeck.c:6054 msgid "extra brace group at end of initializer" msgstr "" -#: c-typeck.c:6065 +#: c-typeck.c:6075 msgid "missing braces around initializer" msgstr "" -#: c-typeck.c:6126 +#: c-typeck.c:6136 msgid "braces around scalar initializer" msgstr "" -#: c-typeck.c:6184 +#: c-typeck.c:6194 msgid "initialization of flexible array member in a nested context" msgstr "" -#: c-typeck.c:6215 +#: c-typeck.c:6225 msgid "missing initializer" msgstr "" -#: c-typeck.c:6237 +#: c-typeck.c:6247 msgid "empty scalar initializer" msgstr "" -#: c-typeck.c:6242 +#: c-typeck.c:6252 msgid "extra elements in scalar initializer" msgstr "" -#: c-typeck.c:6350 c-typeck.c:6410 +#: c-typeck.c:6360 c-typeck.c:6438 msgid "array index in non-array initializer" msgstr "" -#: c-typeck.c:6355 c-typeck.c:6466 +#: c-typeck.c:6365 c-typeck.c:6494 msgid "field name not in record or union initializer" msgstr "" -#: c-typeck.c:6401 +#: c-typeck.c:6411 msgid "array index in initializer not of integer type" msgstr "" -#: c-typeck.c:6406 c-typeck.c:6408 +#: c-typeck.c:6420 c-typeck.c:6429 +msgid "array index in initializer is not an integer constant expression" +msgstr "" + +#: c-typeck.c:6434 c-typeck.c:6436 msgid "nonconstant array index in initializer" msgstr "" -#: c-typeck.c:6412 c-typeck.c:6415 +#: c-typeck.c:6440 c-typeck.c:6443 msgid "array index in initializer exceeds array bounds" msgstr "" -#: c-typeck.c:6429 +#: c-typeck.c:6457 msgid "empty index range in initializer" msgstr "" -#: c-typeck.c:6438 +#: c-typeck.c:6466 msgid "array index range in initializer exceeds array bounds" msgstr "" -#: c-typeck.c:6521 c-typeck.c:6548 c-typeck.c:7049 +#: c-typeck.c:6549 c-typeck.c:6576 c-typeck.c:7095 msgid "initialized field with side-effects overwritten" msgstr "" -#: c-typeck.c:6523 c-typeck.c:6550 c-typeck.c:7051 +#: c-typeck.c:6551 c-typeck.c:6578 c-typeck.c:7097 msgid "initialized field overwritten" msgstr "" -#: c-typeck.c:7266 +#: c-typeck.c:7023 c-typeck.c:4574 +#, gcc-internal-format +msgid "enum conversion in initialization is invalid in C++" +msgstr "" + +#: c-typeck.c:7312 msgid "excess elements in char array initializer" msgstr "" -#: c-typeck.c:7273 c-typeck.c:7331 +#: c-typeck.c:7319 c-typeck.c:7378 msgid "excess elements in struct initializer" msgstr "" -#: c-typeck.c:7346 +#: c-typeck.c:7393 msgid "non-static initialization of a flexible array member" msgstr "" -#: c-typeck.c:7416 +#: c-typeck.c:7463 msgid "excess elements in union initializer" msgstr "" -#: c-typeck.c:7505 +#: c-typeck.c:7552 msgid "excess elements in array initializer" msgstr "" -#: c-typeck.c:7537 +#: c-typeck.c:7584 msgid "excess elements in vector initializer" msgstr "" -#: c-typeck.c:7563 +#: c-typeck.c:7614 msgid "excess elements in scalar initializer" msgstr "" -#: cfgrtl.c:1898 +#: cfgrtl.c:1941 msgid "flow control insn inside a basic block" msgstr "" -#: cfgrtl.c:2027 +#: cfgrtl.c:2070 msgid "wrong insn in the fallthru edge" msgstr "" -#: cfgrtl.c:2083 +#: cfgrtl.c:2126 msgid "insn outside basic block" msgstr "" -#: cfgrtl.c:2090 +#: cfgrtl.c:2133 msgid "return not followed by barrier" msgstr "" -#: collect2.c:396 gcc.c:7139 +#: collect2.c:396 gcc.c:7153 #, c-format msgid "internal gcc abort in %s, at %s:%d" msgstr "" @@ -532,7 +586,7 @@ msgstr "" msgid "cannot find '%s'" msgstr "" -#: collect2.c:1641 collect2.c:2132 collect2.c:2287 gcc.c:3007 +#: collect2.c:1641 collect2.c:2132 collect2.c:2287 gcc.c:3021 #, c-format msgid "pex_init failed" msgstr "" @@ -699,118 +753,118 @@ msgstr "" #. handle them. #. We can't handle floating point constants; #. PRINT_OPERAND must handle them. -#: final.c:3503 vmsdbgout.c:488 config/i386/i386.c:10283 +#: final.c:3503 vmsdbgout.c:488 config/i386/i386.c:10285 #: config/pdp11/pdp11.c:1677 #, c-format msgid "floating constant misused" msgstr "" -#: final.c:3565 vmsdbgout.c:545 config/i386/i386.c:10370 +#: final.c:3565 vmsdbgout.c:545 config/i386/i386.c:10372 #: config/pdp11/pdp11.c:1724 #, c-format msgid "invalid expression as operand" msgstr "" -#: gcc.c:1729 +#: gcc.c:1736 #, c-format msgid "Using built-in specs.\n" msgstr "" -#: gcc.c:1907 +#: gcc.c:1921 #, c-format msgid "" "Setting spec %s to '%s'\n" "\n" msgstr "" -#: gcc.c:2022 +#: gcc.c:2036 #, c-format msgid "Reading specs from %s\n" msgstr "" -#: gcc.c:2118 gcc.c:2137 +#: gcc.c:2132 gcc.c:2151 #, c-format msgid "specs %%include syntax malformed after %ld characters" msgstr "" -#: gcc.c:2145 +#: gcc.c:2159 #, c-format msgid "could not find specs file %s\n" msgstr "" -#: gcc.c:2162 gcc.c:2170 gcc.c:2179 gcc.c:2188 +#: gcc.c:2176 gcc.c:2184 gcc.c:2193 gcc.c:2202 #, c-format msgid "specs %%rename syntax malformed after %ld characters" msgstr "" -#: gcc.c:2197 +#: gcc.c:2211 #, c-format msgid "specs %s spec was not found to be renamed" msgstr "" -#: gcc.c:2204 +#: gcc.c:2218 #, c-format msgid "%s: attempt to rename spec '%s' to already defined spec '%s'" msgstr "" -#: gcc.c:2209 +#: gcc.c:2223 #, c-format msgid "rename spec %s to %s\n" msgstr "" -#: gcc.c:2211 +#: gcc.c:2225 #, c-format msgid "" "spec is '%s'\n" "\n" msgstr "" -#: gcc.c:2224 +#: gcc.c:2238 #, c-format msgid "specs unknown %% command after %ld characters" msgstr "" -#: gcc.c:2235 gcc.c:2248 +#: gcc.c:2249 gcc.c:2262 #, c-format msgid "specs file malformed after %ld characters" msgstr "" -#: gcc.c:2300 +#: gcc.c:2314 #, c-format msgid "spec file has no spec for linking" msgstr "" -#: gcc.c:2628 gcc.c:4940 +#: gcc.c:2642 gcc.c:4954 #, c-format msgid "%s\n" msgstr "" -#: gcc.c:2829 +#: gcc.c:2843 #, c-format msgid "system path '%s' is not absolute" msgstr "" -#: gcc.c:2901 +#: gcc.c:2915 #, c-format msgid "-pipe not supported" msgstr "" -#: gcc.c:2963 +#: gcc.c:2977 #, c-format msgid "" "\n" "Go ahead? (y or n) " msgstr "" -#: gcc.c:3046 +#: gcc.c:3060 msgid "failed to get exit status" msgstr "" -#: gcc.c:3052 +#: gcc.c:3066 msgid "failed to get process times" msgstr "" -#: gcc.c:3078 +#: gcc.c:3092 #, c-format msgid "" "Internal error: %s (program %s)\n" @@ -818,225 +872,225 @@ msgid "" "See %s for instructions." msgstr "" -#: gcc.c:3104 +#: gcc.c:3118 #, c-format msgid "# %s %.2f %.2f\n" msgstr "" -#: gcc.c:3238 +#: gcc.c:3252 #, c-format msgid "Usage: %s [options] file...\n" msgstr "" -#: gcc.c:3239 +#: gcc.c:3253 msgid "Options:\n" msgstr "" -#: gcc.c:3241 +#: gcc.c:3255 msgid " -pass-exit-codes Exit with highest error code from a phase\n" msgstr "" -#: gcc.c:3242 +#: gcc.c:3256 msgid " --help Display this information\n" msgstr "" -#: gcc.c:3243 +#: gcc.c:3257 msgid "" " --target-help Display target specific command line options\n" msgstr "" -#: gcc.c:3244 +#: gcc.c:3258 msgid "" " --help={target|optimizers|warnings|params|[^]{joined|separate|" "undocumented}}[,...]\n" msgstr "" -#: gcc.c:3245 +#: gcc.c:3259 msgid "" " Display specific types of command line options\n" msgstr "" -#: gcc.c:3247 +#: gcc.c:3261 msgid " (Use '-v --help' to display command line options of sub-processes)\n" msgstr "" -#: gcc.c:3248 +#: gcc.c:3262 msgid " --version Display compiler version information\n" msgstr "" -#: gcc.c:3249 +#: gcc.c:3263 msgid " -dumpspecs Display all of the built in spec strings\n" msgstr "" -#: gcc.c:3250 +#: gcc.c:3264 msgid " -dumpversion Display the version of the compiler\n" msgstr "" -#: gcc.c:3251 +#: gcc.c:3265 msgid " -dumpmachine Display the compiler's target processor\n" msgstr "" -#: gcc.c:3252 +#: gcc.c:3266 msgid "" " -print-search-dirs Display the directories in the compiler's search " "path\n" msgstr "" -#: gcc.c:3253 +#: gcc.c:3267 msgid "" " -print-libgcc-file-name Display the name of the compiler's companion " "library\n" msgstr "" -#: gcc.c:3254 +#: gcc.c:3268 msgid " -print-file-name=<lib> Display the full path to library <lib>\n" msgstr "" -#: gcc.c:3255 +#: gcc.c:3269 msgid "" " -print-prog-name=<prog> Display the full path to compiler component " "<prog>\n" msgstr "" -#: gcc.c:3256 +#: gcc.c:3270 msgid "" " -print-multi-directory Display the root directory for versions of " "libgcc\n" msgstr "" -#: gcc.c:3257 +#: gcc.c:3271 msgid "" " -print-multi-lib Display the mapping between command line options " "and\n" " multiple library search directories\n" msgstr "" -#: gcc.c:3260 +#: gcc.c:3274 msgid " -print-multi-os-directory Display the relative path to OS libraries\n" msgstr "" -#: gcc.c:3261 +#: gcc.c:3275 msgid " -print-sysroot Display the target libraries directory\n" msgstr "" -#: gcc.c:3262 +#: gcc.c:3276 msgid "" " -print-sysroot-headers-suffix Display the sysroot suffix used to find " "headers\n" msgstr "" -#: gcc.c:3263 +#: gcc.c:3277 msgid "" " -Wa,<options> Pass comma-separated <options> on to the " "assembler\n" msgstr "" -#: gcc.c:3264 +#: gcc.c:3278 msgid "" " -Wp,<options> Pass comma-separated <options> on to the " "preprocessor\n" msgstr "" -#: gcc.c:3265 +#: gcc.c:3279 msgid "" " -Wl,<options> Pass comma-separated <options> on to the linker\n" msgstr "" -#: gcc.c:3266 +#: gcc.c:3280 msgid " -Xassembler <arg> Pass <arg> on to the assembler\n" msgstr "" -#: gcc.c:3267 +#: gcc.c:3281 msgid " -Xpreprocessor <arg> Pass <arg> on to the preprocessor\n" msgstr "" -#: gcc.c:3268 +#: gcc.c:3282 msgid " -Xlinker <arg> Pass <arg> on to the linker\n" msgstr "" -#: gcc.c:3269 +#: gcc.c:3283 msgid "" " -combine Pass multiple source files to compiler at once\n" msgstr "" -#: gcc.c:3270 +#: gcc.c:3284 msgid " -save-temps Do not delete intermediate files\n" msgstr "" -#: gcc.c:3271 +#: gcc.c:3285 msgid " -save-temps=<arg> Do not delete intermediate files\n" msgstr "" -#: gcc.c:3272 +#: gcc.c:3286 msgid " -pipe Use pipes rather than intermediate files\n" msgstr "" -#: gcc.c:3273 +#: gcc.c:3287 msgid " -time Time the execution of each subprocess\n" msgstr "" -#: gcc.c:3274 +#: gcc.c:3288 msgid "" " -specs=<file> Override built-in specs with the contents of " "<file>\n" msgstr "" -#: gcc.c:3275 +#: gcc.c:3289 msgid "" " -std=<standard> Assume that the input sources are for <standard>\n" msgstr "" -#: gcc.c:3276 +#: gcc.c:3290 msgid "" " --sysroot=<directory> Use <directory> as the root directory for " "headers\n" " and libraries\n" msgstr "" -#: gcc.c:3279 +#: gcc.c:3293 msgid "" " -B <directory> Add <directory> to the compiler's search paths\n" msgstr "" -#: gcc.c:3280 +#: gcc.c:3294 msgid " -b <machine> Run gcc for target <machine>, if installed\n" msgstr "" -#: gcc.c:3281 +#: gcc.c:3295 msgid "" " -V <version> Run gcc version number <version>, if installed\n" msgstr "" -#: gcc.c:3282 +#: gcc.c:3296 msgid "" " -v Display the programs invoked by the compiler\n" msgstr "" -#: gcc.c:3283 +#: gcc.c:3297 msgid "" " -### Like -v but options quoted and commands not " "executed\n" msgstr "" -#: gcc.c:3284 +#: gcc.c:3298 msgid "" " -E Preprocess only; do not compile, assemble or " "link\n" msgstr "" -#: gcc.c:3285 +#: gcc.c:3299 msgid " -S Compile only; do not assemble or link\n" msgstr "" -#: gcc.c:3286 +#: gcc.c:3300 msgid " -c Compile and assemble, but do not link\n" msgstr "" -#: gcc.c:3287 +#: gcc.c:3301 msgid " -o <file> Place the output into <file>\n" msgstr "" -#: gcc.c:3288 +#: gcc.c:3302 msgid "" " -x <language> Specify the language of the following input " "files\n" @@ -1047,7 +1101,7 @@ msgid "" "extension\n" msgstr "" -#: gcc.c:3295 +#: gcc.c:3309 #, c-format msgid "" "\n" @@ -1056,201 +1110,201 @@ msgid "" " other options on to these processes the -W<letter> options must be used.\n" msgstr "" -#: gcc.c:3425 +#: gcc.c:3439 #, c-format msgid "'-%c' option must have argument" msgstr "" -#: gcc.c:3451 +#: gcc.c:3465 #, c-format msgid "couldn't run '%s': %s" msgstr "" -#: gcc.c:3453 +#: gcc.c:3467 #, c-format msgid "couldn't run '%s': %s: %s" msgstr "" -#: gcc.c:3778 +#: gcc.c:3792 #, c-format msgid "argument to '-Xlinker' is missing" msgstr "" -#: gcc.c:3786 +#: gcc.c:3800 #, c-format msgid "argument to '-Xpreprocessor' is missing" msgstr "" -#: gcc.c:3793 +#: gcc.c:3807 #, c-format msgid "argument to '-Xassembler' is missing" msgstr "" -#: gcc.c:3800 +#: gcc.c:3814 #, c-format msgid "argument to '-l' is missing" msgstr "" -#: gcc.c:3821 +#: gcc.c:3835 #, c-format msgid "'%s' is an unknown -save-temps option" msgstr "" -#: gcc.c:3832 +#: gcc.c:3846 #, c-format msgid "argument to '-specs' is missing" msgstr "" -#: gcc.c:3846 +#: gcc.c:3860 #, c-format msgid "argument to '-specs=' is missing" msgstr "" -#: gcc.c:3868 +#: gcc.c:3882 #, c-format msgid "argument to '-wrapper' is missing" msgstr "" -#: gcc.c:3896 +#: gcc.c:3910 #, c-format msgid "'-%c' must come at the start of the command line" msgstr "" -#: gcc.c:3905 +#: gcc.c:3919 #, c-format msgid "argument to '-B' is missing" msgstr "" -#: gcc.c:4280 +#: gcc.c:4294 #, c-format msgid "argument to '-x' is missing" msgstr "" -#: gcc.c:4308 +#: gcc.c:4322 #, c-format msgid "argument to '-%s' is missing" msgstr "" -#: gcc.c:4681 +#: gcc.c:4695 #, c-format msgid "switch '%s' does not start with '-'" msgstr "" -#: gcc.c:4756 +#: gcc.c:4770 #, c-format msgid "could not open temporary response file %s" msgstr "" -#: gcc.c:4762 +#: gcc.c:4776 #, c-format msgid "could not write to temporary response file %s" msgstr "" -#: gcc.c:4768 +#: gcc.c:4782 #, c-format msgid "could not close temporary response file %s" msgstr "" -#: gcc.c:4868 +#: gcc.c:4882 #, c-format msgid "spec '%s' invalid" msgstr "" -#: gcc.c:5013 +#: gcc.c:5027 #, c-format msgid "spec '%s' has invalid '%%0%c'" msgstr "" -#: gcc.c:5312 +#: gcc.c:5326 #, c-format msgid "spec '%s' has invalid '%%W%c" msgstr "" -#: gcc.c:5332 +#: gcc.c:5346 #, c-format msgid "spec '%s' has invalid '%%x%c'" msgstr "" -#: gcc.c:5554 +#: gcc.c:5568 #, c-format msgid "Processing spec %c%s%c, which is '%s'\n" msgstr "" -#: gcc.c:5678 +#: gcc.c:5692 #, c-format msgid "unknown spec function '%s'" msgstr "" -#: gcc.c:5697 +#: gcc.c:5711 #, c-format msgid "error in args to spec function '%s'" msgstr "" -#: gcc.c:5745 +#: gcc.c:5759 #, c-format msgid "malformed spec function name" msgstr "" #. ) -#: gcc.c:5748 +#: gcc.c:5762 #, c-format msgid "no arguments for spec function" msgstr "" -#: gcc.c:5767 +#: gcc.c:5781 #, c-format msgid "malformed spec function arguments" msgstr "" -#: gcc.c:6013 +#: gcc.c:6027 #, c-format msgid "braced spec '%s' is invalid at '%c'" msgstr "" -#: gcc.c:6101 +#: gcc.c:6115 #, c-format msgid "braced spec body '%s' is invalid" msgstr "" -#: gcc.c:6630 +#: gcc.c:6644 #, c-format msgid "install: %s%s\n" msgstr "" -#: gcc.c:6633 +#: gcc.c:6647 #, c-format msgid "programs: %s\n" msgstr "" -#: gcc.c:6635 +#: gcc.c:6649 #, c-format msgid "libraries: %s\n" msgstr "" #. The error status indicates that only one set of fixed #. headers should be built. -#: gcc.c:6701 +#: gcc.c:6715 #, c-format msgid "not configured with sysroot headers suffix" msgstr "" -#: gcc.c:6710 +#: gcc.c:6724 #, c-format msgid "" "\n" "For bug reporting instructions, please see:\n" msgstr "" -#: gcc.c:6726 +#: gcc.c:6740 #, c-format msgid "%s %s%s\n" msgstr "" -#: gcc.c:6729 gcov.c:430 fortran/gfortranspec.c:383 java/jcf-dump.c:1170 +#: gcc.c:6743 gcov.c:430 fortran/gfortranspec.c:383 java/jcf-dump.c:1170 msgid "(C)" msgstr "" -#: gcc.c:6730 java/jcf-dump.c:1171 +#: gcc.c:6744 java/jcf-dump.c:1171 #, c-format msgid "" "This is free software; see the source for copying conditions. There is NO\n" @@ -1258,47 +1312,47 @@ msgid "" "\n" msgstr "" -#: gcc.c:6747 +#: gcc.c:6761 #, c-format msgid "Target: %s\n" msgstr "" -#: gcc.c:6748 +#: gcc.c:6762 #, c-format msgid "Configured with: %s\n" msgstr "" -#: gcc.c:6762 +#: gcc.c:6776 #, c-format msgid "Thread model: %s\n" msgstr "" -#: gcc.c:6773 +#: gcc.c:6787 #, c-format msgid "gcc version %s %s\n" msgstr "" -#: gcc.c:6775 +#: gcc.c:6789 #, c-format msgid "gcc driver version %s %sexecuting gcc version %s\n" msgstr "" -#: gcc.c:6783 +#: gcc.c:6797 #, c-format msgid "no input files" msgstr "" -#: gcc.c:6832 +#: gcc.c:6846 #, c-format msgid "cannot specify -o with -c or -S with multiple files" msgstr "" -#: gcc.c:6866 +#: gcc.c:6880 #, c-format msgid "spec '%s' is invalid" msgstr "" -#: gcc.c:7002 +#: gcc.c:7016 #, c-format msgid "" "\n" @@ -1307,59 +1361,59 @@ msgid "" "\n" msgstr "" -#: gcc.c:7003 +#: gcc.c:7017 #, c-format msgid "" "Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n" "\n" msgstr "" -#: gcc.c:7355 +#: gcc.c:7369 #, c-format msgid "multilib spec '%s' is invalid" msgstr "" -#: gcc.c:7546 +#: gcc.c:7560 #, c-format msgid "multilib exclusions '%s' is invalid" msgstr "" -#: gcc.c:7604 gcc.c:7745 +#: gcc.c:7618 gcc.c:7759 #, c-format msgid "multilib select '%s' is invalid" msgstr "" -#: gcc.c:7783 +#: gcc.c:7797 #, c-format msgid "multilib exclusion '%s' is invalid" msgstr "" -#: gcc.c:7989 +#: gcc.c:8003 #, c-format msgid "environment variable \"%s\" not defined" msgstr "" -#: gcc.c:8080 gcc.c:8085 +#: gcc.c:8094 gcc.c:8099 #, c-format msgid "invalid version number `%s'" msgstr "" -#: gcc.c:8128 +#: gcc.c:8142 #, c-format msgid "too few arguments to %%:version-compare" msgstr "" -#: gcc.c:8134 +#: gcc.c:8148 #, c-format msgid "too many arguments to %%:version-compare" msgstr "" -#: gcc.c:8175 +#: gcc.c:8189 #, c-format msgid "unknown operator '%s' in %%:version-compare" msgstr "" -#: gcc.c:8209 +#: gcc.c:8223 #, c-format msgid "" "Assembler options\n" @@ -1367,7 +1421,7 @@ msgid "" "\n" msgstr "" -#: gcc.c:8210 +#: gcc.c:8224 #, c-format msgid "" "Use \"-Wa,OPTION\" to pass \"OPTION\" to the assembler.\n" @@ -1669,12 +1723,16 @@ msgstr "" msgid "%s:cannot open source file\n" msgstr "" -#: gcse.c:699 +#: gcse.c:3944 +msgid "PRE disabled" +msgstr "" + +#: gcse.c:4425 msgid "GCSE disabled" msgstr "" -#: gcse.c:6506 -msgid "jump bypassing disabled" +#: gcse.c:4942 +msgid "const/copy propagation disabled" msgstr "" #: incpath.c:76 @@ -1708,12 +1766,12 @@ msgid "End of search list.\n" msgstr "" #. Opening quotation mark. -#: intl.c:58 +#: intl.c:64 msgid "`" msgstr "" #. Closing quotation mark. -#: intl.c:61 +#: intl.c:67 msgid "'" msgstr "" @@ -1721,127 +1779,128 @@ msgstr "" msgid "At top level:" msgstr "" -#: langhooks.c:382 +#: langhooks.c:382 cp/error.c:2661 #, c-format msgid "In member function %qs" msgstr "" -#: langhooks.c:386 +#: langhooks.c:386 cp/error.c:2664 #, c-format msgid "In function %qs" msgstr "" -#: langhooks.c:437 +#: langhooks.c:437 cp/error.c:2620 #, c-format msgid " inlined from %qs at %s:%d:%d" msgstr "" -#: langhooks.c:442 +#: langhooks.c:442 cp/error.c:2625 #, c-format msgid " inlined from %qs at %s:%d" msgstr "" -#: langhooks.c:448 +#: langhooks.c:448 cp/error.c:2631 #, c-format msgid " inlined from %qs" msgstr "" -#: loop-iv.c:2942 tree-ssa-loop-niter.c:1871 +#: loop-iv.c:2965 tree-ssa-loop-niter.c:1871 msgid "assuming that the loop is not infinite" msgstr "" -#: loop-iv.c:2943 tree-ssa-loop-niter.c:1872 +#: loop-iv.c:2966 tree-ssa-loop-niter.c:1872 msgid "cannot optimize possibly infinite loops" msgstr "" -#: loop-iv.c:2951 tree-ssa-loop-niter.c:1876 +#: loop-iv.c:2974 tree-ssa-loop-niter.c:1876 msgid "assuming that the loop counter does not overflow" msgstr "" -#: loop-iv.c:2952 tree-ssa-loop-niter.c:1877 +#: loop-iv.c:2975 tree-ssa-loop-niter.c:1877 msgid "cannot optimize loop, the loop counter may overflow" msgstr "" -#: opts.c:343 +#. What to print when a switch has no documentation. +#: opts.c:339 msgid "This switch lacks documentation" msgstr "" -#: opts.c:1252 +#: opts.c:1265 msgid "[enabled]" msgstr "" -#: opts.c:1252 +#: opts.c:1265 msgid "[disabled]" msgstr "" -#: opts.c:1267 +#: opts.c:1280 #, c-format msgid " No options with the desired characteristics were found\n" msgstr "" -#: opts.c:1276 +#: opts.c:1289 #, c-format msgid "" " None found. Use --help=%s to show *all* the options supported by the %s " "front-end\n" msgstr "" -#: opts.c:1282 +#: opts.c:1295 #, c-format msgid "" " All options with the desired characteristics have already been displayed\n" msgstr "" -#: opts.c:1336 +#: opts.c:1349 msgid "The following options are target specific" msgstr "" -#: opts.c:1339 +#: opts.c:1352 msgid "The following options control compiler warning messages" msgstr "" -#: opts.c:1342 +#: opts.c:1355 msgid "The following options control optimizations" msgstr "" -#: opts.c:1345 opts.c:1384 +#: opts.c:1358 opts.c:1397 msgid "The following options are language-independent" msgstr "" -#: opts.c:1348 +#: opts.c:1361 msgid "The --param option recognizes the following as parameters" msgstr "" -#: opts.c:1354 +#: opts.c:1367 msgid "The following options are specific to just the language " msgstr "" -#: opts.c:1356 +#: opts.c:1369 msgid "The following options are supported by the language " msgstr "" -#: opts.c:1367 +#: opts.c:1380 msgid "The following options are not documented" msgstr "" -#: opts.c:1369 +#: opts.c:1382 msgid "The following options take separate arguments" msgstr "" -#: opts.c:1371 +#: opts.c:1384 msgid "The following options take joined arguments" msgstr "" -#: opts.c:1382 +#: opts.c:1395 msgid "The following options are language-related" msgstr "" -#: opts.c:1542 +#: opts.c:1555 #, c-format msgid "warning: --help argument %.*s is ambiguous, please be more specific\n" msgstr "" -#: opts.c:1550 +#: opts.c:1563 #, c-format msgid "warning: unrecognized argument to --help= option: %.*s\n" msgstr "" @@ -1860,11 +1919,11 @@ msgid "could not find a spill register" msgstr "" #. It's the compiler's fault. -#: reload1.c:7576 +#: reload1.c:7597 msgid "VOIDmode on an output" msgstr "" -#: reload1.c:8331 +#: reload1.c:8352 msgid "Failure trying to reload:" msgstr "" @@ -1922,70 +1981,70 @@ msgstr "" msgid "collect: relinking\n" msgstr "" -#: toplev.c:604 +#: toplev.c:606 #, c-format msgid "unrecoverable error" msgstr "" -#: toplev.c:1112 +#: toplev.c:1168 #, c-format msgid "" "%s%s%s %sversion %s (%s)\n" "%s\tcompiled by GNU C version %s, " msgstr "" -#: toplev.c:1114 +#: toplev.c:1170 #, c-format msgid "%s%s%s %sversion %s (%s) compiled by CC, " msgstr "" -#: toplev.c:1118 +#: toplev.c:1174 #, c-format msgid "GMP version %s, MPFR version %s.\n" msgstr "" -#: toplev.c:1120 +#: toplev.c:1176 #, c-format msgid "%s%swarning: %s header version %s differs from library version %s.\n" msgstr "" -#: toplev.c:1122 +#: toplev.c:1178 #, c-format msgid "" "%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n" msgstr "" -#: toplev.c:1276 +#: toplev.c:1336 msgid "options passed: " msgstr "" -#: toplev.c:1310 +#: toplev.c:1370 msgid "options enabled: " msgstr "" -#: toplev.c:1445 +#: toplev.c:1505 #, c-format msgid "created and used with differing settings of '%s'" msgstr "" -#: toplev.c:1447 +#: toplev.c:1507 msgid "out of memory" msgstr "" -#: toplev.c:1462 +#: toplev.c:1522 msgid "created and used with different settings of -fpic" msgstr "" -#: toplev.c:1464 +#: toplev.c:1524 msgid "created and used with different settings of -fpie" msgstr "" -#: tree-vrp.c:6501 +#: tree-vrp.c:6517 msgid "" "assuming signed overflow does not occur when simplifying && or || to & or |" msgstr "" -#: tree-vrp.c:6505 +#: tree-vrp.c:6521 msgid "" "assuming signed overflow does not occur when simplifying ==, != or ! to " "identity or ^" @@ -2635,102 +2694,102 @@ msgstr "" msgid "max basic blocks number in loop for loop invariant motion" msgstr "" -#: config/alpha/alpha.c:5039 +#: config/alpha/alpha.c:5054 #, c-format msgid "invalid %%H value" msgstr "" -#: config/alpha/alpha.c:5060 config/bfin/bfin.c:1646 +#: config/alpha/alpha.c:5075 config/bfin/bfin.c:1631 #, c-format msgid "invalid %%J value" msgstr "" -#: config/alpha/alpha.c:5090 config/ia64/ia64.c:4744 +#: config/alpha/alpha.c:5105 config/ia64/ia64.c:4765 #, c-format msgid "invalid %%r value" msgstr "" -#: config/alpha/alpha.c:5100 config/ia64/ia64.c:4698 -#: config/rs6000/rs6000.c:12243 config/xtensa/xtensa.c:2238 +#: config/alpha/alpha.c:5115 config/ia64/ia64.c:4719 +#: config/rs6000/rs6000.c:12250 config/xtensa/xtensa.c:2242 #, c-format msgid "invalid %%R value" msgstr "" -#: config/alpha/alpha.c:5106 config/rs6000/rs6000.c:12162 -#: config/xtensa/xtensa.c:2205 +#: config/alpha/alpha.c:5121 config/rs6000/rs6000.c:12169 +#: config/xtensa/xtensa.c:2209 #, c-format msgid "invalid %%N value" msgstr "" -#: config/alpha/alpha.c:5114 config/rs6000/rs6000.c:12190 +#: config/alpha/alpha.c:5129 config/rs6000/rs6000.c:12197 #, c-format msgid "invalid %%P value" msgstr "" -#: config/alpha/alpha.c:5122 +#: config/alpha/alpha.c:5137 #, c-format msgid "invalid %%h value" msgstr "" -#: config/alpha/alpha.c:5130 config/xtensa/xtensa.c:2231 +#: config/alpha/alpha.c:5145 config/xtensa/xtensa.c:2235 #, c-format msgid "invalid %%L value" msgstr "" -#: config/alpha/alpha.c:5169 config/rs6000/rs6000.c:12144 +#: config/alpha/alpha.c:5184 config/rs6000/rs6000.c:12151 #, c-format msgid "invalid %%m value" msgstr "" -#: config/alpha/alpha.c:5177 config/rs6000/rs6000.c:12152 +#: config/alpha/alpha.c:5192 config/rs6000/rs6000.c:12159 #, c-format msgid "invalid %%M value" msgstr "" -#: config/alpha/alpha.c:5221 +#: config/alpha/alpha.c:5236 #, c-format msgid "invalid %%U value" msgstr "" -#: config/alpha/alpha.c:5233 config/alpha/alpha.c:5247 -#: config/rs6000/rs6000.c:12251 +#: config/alpha/alpha.c:5248 config/alpha/alpha.c:5262 +#: config/rs6000/rs6000.c:12258 #, c-format msgid "invalid %%s value" msgstr "" -#: config/alpha/alpha.c:5270 +#: config/alpha/alpha.c:5285 #, c-format msgid "invalid %%C value" msgstr "" -#: config/alpha/alpha.c:5307 config/rs6000/rs6000.c:11979 -#: config/rs6000/rs6000.c:11998 +#: config/alpha/alpha.c:5322 config/rs6000/rs6000.c:11986 +#: config/rs6000/rs6000.c:12005 #, c-format msgid "invalid %%E value" msgstr "" -#: config/alpha/alpha.c:5332 config/alpha/alpha.c:5380 +#: config/alpha/alpha.c:5347 config/alpha/alpha.c:5395 #, c-format msgid "unknown relocation unspec" msgstr "" -#: config/alpha/alpha.c:5341 config/crx/crx.c:1081 -#: config/rs6000/rs6000.c:12582 config/spu/spu.c:1540 +#: config/alpha/alpha.c:5356 config/crx/crx.c:1081 +#: config/rs6000/rs6000.c:12589 config/spu/spu.c:1614 #, c-format msgid "invalid %%xn code" msgstr "" -#: config/arc/arc.c:1729 config/m32r/m32r.c:1806 +#: config/arc/arc.c:1729 config/m32r/m32r.c:1820 #, c-format msgid "invalid operand to %%R code" msgstr "" -#: config/arc/arc.c:1761 config/m32r/m32r.c:1829 +#: config/arc/arc.c:1761 config/m32r/m32r.c:1843 #, c-format msgid "invalid operand to %%H/%%L code" msgstr "" -#: config/arc/arc.c:1783 config/m32r/m32r.c:1900 +#: config/arc/arc.c:1783 config/m32r/m32r.c:1914 #, c-format msgid "invalid operand to %%U code" msgstr "" @@ -2742,105 +2801,105 @@ msgstr "" #. Unknown flag. #. Undocumented flag. -#: config/arc/arc.c:1801 config/m32r/m32r.c:1927 config/sparc/sparc.c:7044 +#: config/arc/arc.c:1801 config/m32r/m32r.c:1941 config/sparc/sparc.c:7048 #, c-format msgid "invalid operand output code" msgstr "" -#: config/arm/arm.c:13318 config/arm/arm.c:13336 +#: config/arm/arm.c:13323 config/arm/arm.c:13341 #, c-format msgid "predicated Thumb instruction" msgstr "" -#: config/arm/arm.c:13324 +#: config/arm/arm.c:13329 #, c-format msgid "predicated instruction in conditional sequence" msgstr "" -#: config/arm/arm.c:13494 +#: config/arm/arm.c:13499 #, c-format msgid "invalid shift operand" msgstr "" -#: config/arm/arm.c:13541 config/arm/arm.c:13551 config/arm/arm.c:13561 -#: config/arm/arm.c:13571 config/arm/arm.c:13581 config/arm/arm.c:13620 -#: config/arm/arm.c:13638 config/arm/arm.c:13673 config/arm/arm.c:13692 -#: config/arm/arm.c:13707 config/arm/arm.c:13735 config/arm/arm.c:13742 -#: config/arm/arm.c:13750 config/arm/arm.c:13771 config/arm/arm.c:13778 -#: config/bfin/bfin.c:1659 config/bfin/bfin.c:1666 config/bfin/bfin.c:1673 -#: config/bfin/bfin.c:1680 config/bfin/bfin.c:1689 config/bfin/bfin.c:1696 -#: config/bfin/bfin.c:1703 config/bfin/bfin.c:1710 +#: config/arm/arm.c:13546 config/arm/arm.c:13556 config/arm/arm.c:13566 +#: config/arm/arm.c:13576 config/arm/arm.c:13586 config/arm/arm.c:13625 +#: config/arm/arm.c:13643 config/arm/arm.c:13678 config/arm/arm.c:13697 +#: config/arm/arm.c:13712 config/arm/arm.c:13740 config/arm/arm.c:13747 +#: config/arm/arm.c:13755 config/arm/arm.c:13776 config/arm/arm.c:13783 +#: config/bfin/bfin.c:1644 config/bfin/bfin.c:1651 config/bfin/bfin.c:1658 +#: config/bfin/bfin.c:1665 config/bfin/bfin.c:1674 config/bfin/bfin.c:1681 +#: config/bfin/bfin.c:1688 config/bfin/bfin.c:1695 #, c-format msgid "invalid operand for code '%c'" msgstr "" -#: config/arm/arm.c:13633 +#: config/arm/arm.c:13638 #, c-format msgid "instruction never executed" msgstr "" -#: config/arm/arm.c:13845 +#: config/arm/arm.c:13850 #, c-format msgid "missing operand" msgstr "" -#: config/avr/avr.c:1194 +#: config/avr/avr.c:1212 #, c-format msgid "address operand requires constraint for X, Y, or Z register" msgstr "" -#: config/avr/avr.c:1306 +#: config/avr/avr.c:1324 msgid "bad address, not (reg+disp):" msgstr "" -#: config/avr/avr.c:1313 +#: config/avr/avr.c:1331 msgid "bad address, not post_inc or pre_dec:" msgstr "" -#: config/avr/avr.c:1324 +#: config/avr/avr.c:1342 msgid "internal compiler error. Bad address:" msgstr "" -#: config/avr/avr.c:1337 +#: config/avr/avr.c:1355 msgid "internal compiler error. Unknown mode:" msgstr "" -#: config/avr/avr.c:1932 config/avr/avr.c:2620 +#: config/avr/avr.c:1950 config/avr/avr.c:2638 msgid "invalid insn:" msgstr "" -#: config/avr/avr.c:1971 config/avr/avr.c:2057 config/avr/avr.c:2106 -#: config/avr/avr.c:2134 config/avr/avr.c:2229 config/avr/avr.c:2398 -#: config/avr/avr.c:2659 config/avr/avr.c:2771 +#: config/avr/avr.c:1989 config/avr/avr.c:2075 config/avr/avr.c:2124 +#: config/avr/avr.c:2152 config/avr/avr.c:2247 config/avr/avr.c:2416 +#: config/avr/avr.c:2677 config/avr/avr.c:2789 msgid "incorrect insn:" msgstr "" -#: config/avr/avr.c:2153 config/avr/avr.c:2314 config/avr/avr.c:2469 -#: config/avr/avr.c:2837 +#: config/avr/avr.c:2171 config/avr/avr.c:2332 config/avr/avr.c:2487 +#: config/avr/avr.c:2855 msgid "unknown move insn:" msgstr "" -#: config/avr/avr.c:3067 +#: config/avr/avr.c:3085 msgid "bad shift insn:" msgstr "" -#: config/avr/avr.c:3183 config/avr/avr.c:3603 config/avr/avr.c:3961 +#: config/avr/avr.c:3201 config/avr/avr.c:3621 config/avr/avr.c:3979 msgid "internal compiler error. Incorrect shift:" msgstr "" -#: config/bfin/bfin.c:1608 +#: config/bfin/bfin.c:1593 #, c-format msgid "invalid %%j value" msgstr "" -#: config/bfin/bfin.c:1801 +#: config/bfin/bfin.c:1786 #, c-format msgid "invalid const_double operand" msgstr "" -#: config/cris/cris.c:504 c-typeck.c:5207 c-typeck.c:5223 c-typeck.c:5240 -#: final.c:3010 final.c:3012 gcc.c:4926 loop-iv.c:2944 loop-iv.c:2953 -#: rtl-error.c:105 toplev.c:608 tree-ssa-loop-niter.c:1882 cp/typeck.c:4743 +#: config/cris/cris.c:504 c-typeck.c:5217 c-typeck.c:5233 c-typeck.c:5250 +#: final.c:3010 final.c:3012 gcc.c:4940 loop-iv.c:2967 loop-iv.c:2976 +#: rtl-error.c:105 toplev.c:610 tree-ssa-loop-niter.c:1882 cp/typeck.c:4743 #: java/expr.c:411 #, gcc-internal-format msgid "%s" @@ -2983,81 +3042,81 @@ msgstr "" msgid "fr30_print_operand: unhandled MEM" msgstr "" -#: config/frv/frv.c:2552 +#: config/frv/frv.c:2589 msgid "bad insn to frv_print_operand_address:" msgstr "" -#: config/frv/frv.c:2563 +#: config/frv/frv.c:2600 msgid "bad register to frv_print_operand_memory_reference_reg:" msgstr "" -#: config/frv/frv.c:2602 config/frv/frv.c:2612 config/frv/frv.c:2621 -#: config/frv/frv.c:2642 config/frv/frv.c:2647 +#: config/frv/frv.c:2639 config/frv/frv.c:2649 config/frv/frv.c:2658 +#: config/frv/frv.c:2679 config/frv/frv.c:2684 msgid "bad insn to frv_print_operand_memory_reference:" msgstr "" -#: config/frv/frv.c:2733 +#: config/frv/frv.c:2770 #, c-format msgid "bad condition code" msgstr "" -#: config/frv/frv.c:2808 +#: config/frv/frv.c:2845 msgid "bad insn in frv_print_operand, bad const_double" msgstr "" -#: config/frv/frv.c:2869 +#: config/frv/frv.c:2906 msgid "bad insn to frv_print_operand, 'e' modifier:" msgstr "" -#: config/frv/frv.c:2877 +#: config/frv/frv.c:2914 msgid "bad insn to frv_print_operand, 'F' modifier:" msgstr "" -#: config/frv/frv.c:2893 +#: config/frv/frv.c:2930 msgid "bad insn to frv_print_operand, 'f' modifier:" msgstr "" -#: config/frv/frv.c:2907 +#: config/frv/frv.c:2944 msgid "bad insn to frv_print_operand, 'g' modifier:" msgstr "" -#: config/frv/frv.c:2955 +#: config/frv/frv.c:2992 msgid "bad insn to frv_print_operand, 'L' modifier:" msgstr "" -#: config/frv/frv.c:2968 +#: config/frv/frv.c:3005 msgid "bad insn to frv_print_operand, 'M/N' modifier:" msgstr "" -#: config/frv/frv.c:2989 +#: config/frv/frv.c:3026 msgid "bad insn to frv_print_operand, 'O' modifier:" msgstr "" -#: config/frv/frv.c:3007 +#: config/frv/frv.c:3044 msgid "bad insn to frv_print_operand, P modifier:" msgstr "" -#: config/frv/frv.c:3027 +#: config/frv/frv.c:3064 msgid "bad insn in frv_print_operand, z case" msgstr "" -#: config/frv/frv.c:3058 +#: config/frv/frv.c:3095 msgid "bad insn in frv_print_operand, 0 case" msgstr "" -#: config/frv/frv.c:3063 +#: config/frv/frv.c:3100 msgid "frv_print_operand: unknown code" msgstr "" -#: config/frv/frv.c:4432 +#: config/frv/frv.c:4469 msgid "bad output_move_single operand" msgstr "" -#: config/frv/frv.c:4559 +#: config/frv/frv.c:4596 msgid "bad output_move_double operand" msgstr "" -#: config/frv/frv.c:4701 +#: config/frv/frv.c:4738 msgid "bad output_condmove_single operand" msgstr "" @@ -3075,51 +3134,61 @@ msgstr "" msgid " (frv)" msgstr "" -#: config/i386/i386.c:10364 +#: config/i386/i386.c:10366 #, c-format msgid "invalid UNSPEC as operand" msgstr "" -#: config/i386/i386.c:11089 config/i386/i386.c:11128 config/i386/i386.c:11302 +#: config/i386/i386.c:10980 config/i386/i386.c:11055 +#, c-format +msgid "invalid operand size for operand code '%c'" +msgstr "" + +#: config/i386/i386.c:11050 +#, c-format +msgid "invalid operand type used with operand code '%c'" +msgstr "" + +#: config/i386/i386.c:11130 config/i386/i386.c:11169 config/i386/i386.c:11343 #, c-format msgid "operand is not a condition code, invalid operand code 'D'" msgstr "" -#: config/i386/i386.c:11153 +#: config/i386/i386.c:11194 #, c-format msgid "" "operand is neither a constant nor a condition code, invalid operand code 'C'" msgstr "" -#: config/i386/i386.c:11163 +#: config/i386/i386.c:11204 #, c-format msgid "" "operand is neither a constant nor a condition code, invalid operand code 'F'" msgstr "" -#: config/i386/i386.c:11181 +#: config/i386/i386.c:11222 #, c-format msgid "" "operand is neither a constant nor a condition code, invalid operand code 'c'" msgstr "" -#: config/i386/i386.c:11191 +#: config/i386/i386.c:11232 #, c-format msgid "" "operand is neither a constant nor a condition code, invalid operand code 'f'" msgstr "" -#: config/i386/i386.c:11316 +#: config/i386/i386.c:11357 #, c-format msgid "invalid operand code '%c'" msgstr "" -#: config/i386/i386.c:11365 +#: config/i386/i386.c:11406 #, c-format msgid "invalid constraints for operand" msgstr "" -#: config/i386/i386.c:19347 +#: config/i386/i386.c:19388 msgid "unknown insn mode" msgstr "" @@ -3140,133 +3209,138 @@ msgstr "" msgid "environment variable DJGPP points to corrupt file '%s'" msgstr "" -#: config/ia64/ia64.c:4796 +#: config/ia64/ia64.c:4647 +#, c-format +msgid "invalid %%G mode" +msgstr "" + +#: config/ia64/ia64.c:4817 #, c-format msgid "ia64_print_operand: unknown code" msgstr "" -#: config/ia64/ia64.c:10474 +#: config/ia64/ia64.c:10495 msgid "invalid conversion from %<__fpreg%>" msgstr "" -#: config/ia64/ia64.c:10477 +#: config/ia64/ia64.c:10498 msgid "invalid conversion to %<__fpreg%>" msgstr "" -#: config/ia64/ia64.c:10490 config/ia64/ia64.c:10501 +#: config/ia64/ia64.c:10511 config/ia64/ia64.c:10522 msgid "invalid operation on %<__fpreg%>" msgstr "" -#: config/iq2000/iq2000.c:3122 +#: config/iq2000/iq2000.c:3137 #, c-format msgid "invalid %%P operand" msgstr "" -#: config/iq2000/iq2000.c:3130 config/rs6000/rs6000.c:12180 +#: config/iq2000/iq2000.c:3145 config/rs6000/rs6000.c:12187 #, c-format msgid "invalid %%p value" msgstr "" -#: config/iq2000/iq2000.c:3186 +#: config/iq2000/iq2000.c:3201 #, c-format msgid "invalid use of %%d, %%x, or %%X" msgstr "" -#: config/m32r/m32r.c:1776 +#: config/m32r/m32r.c:1790 #, c-format msgid "invalid operand to %%s code" msgstr "" -#: config/m32r/m32r.c:1783 +#: config/m32r/m32r.c:1797 #, c-format msgid "invalid operand to %%p code" msgstr "" -#: config/m32r/m32r.c:1838 +#: config/m32r/m32r.c:1852 msgid "bad insn for 'A'" msgstr "" -#: config/m32r/m32r.c:1885 +#: config/m32r/m32r.c:1899 #, c-format msgid "invalid operand to %%T/%%B code" msgstr "" -#: config/m32r/m32r.c:1908 +#: config/m32r/m32r.c:1922 #, c-format msgid "invalid operand to %%N code" msgstr "" -#: config/m32r/m32r.c:1941 +#: config/m32r/m32r.c:1955 msgid "pre-increment address is not a register" msgstr "" -#: config/m32r/m32r.c:1948 +#: config/m32r/m32r.c:1962 msgid "pre-decrement address is not a register" msgstr "" -#: config/m32r/m32r.c:1955 +#: config/m32r/m32r.c:1969 msgid "post-increment address is not a register" msgstr "" -#: config/m32r/m32r.c:2031 config/m32r/m32r.c:2045 -#: config/rs6000/rs6000.c:20950 +#: config/m32r/m32r.c:2045 config/m32r/m32r.c:2059 +#: config/rs6000/rs6000.c:20957 msgid "bad address" msgstr "" -#: config/m32r/m32r.c:2050 +#: config/m32r/m32r.c:2064 msgid "lo_sum not of register" msgstr "" #. !!!! SCz wrong here. -#: config/m68hc11/m68hc11.c:3189 config/m68hc11/m68hc11.c:3567 +#: config/m68hc11/m68hc11.c:3181 config/m68hc11/m68hc11.c:3559 msgid "move insn not handled" msgstr "" -#: config/m68hc11/m68hc11.c:3413 config/m68hc11/m68hc11.c:3497 -#: config/m68hc11/m68hc11.c:3770 +#: config/m68hc11/m68hc11.c:3405 config/m68hc11/m68hc11.c:3489 +#: config/m68hc11/m68hc11.c:3762 msgid "invalid register in the move instruction" msgstr "" -#: config/m68hc11/m68hc11.c:3447 +#: config/m68hc11/m68hc11.c:3439 msgid "invalid operand in the instruction" msgstr "" -#: config/m68hc11/m68hc11.c:3744 +#: config/m68hc11/m68hc11.c:3736 msgid "invalid register in the instruction" msgstr "" -#: config/m68hc11/m68hc11.c:3777 +#: config/m68hc11/m68hc11.c:3769 msgid "operand 1 must be a hard register" msgstr "" -#: config/m68hc11/m68hc11.c:3791 +#: config/m68hc11/m68hc11.c:3783 msgid "invalid rotate insn" msgstr "" -#: config/m68hc11/m68hc11.c:4215 +#: config/m68hc11/m68hc11.c:4207 msgid "registers IX, IY and Z used in the same INSN" msgstr "" -#: config/m68hc11/m68hc11.c:4548 config/m68hc11/m68hc11.c:4848 +#: config/m68hc11/m68hc11.c:4540 config/m68hc11/m68hc11.c:4840 msgid "cannot do z-register replacement" msgstr "" -#: config/m68hc11/m68hc11.c:4911 +#: config/m68hc11/m68hc11.c:4903 msgid "invalid Z register replacement for insn" msgstr "" -#: config/mips/mips.c:7134 config/mips/mips.c:7155 config/mips/mips.c:7267 +#: config/mips/mips.c:7131 config/mips/mips.c:7152 config/mips/mips.c:7264 #, c-format msgid "'%%%c' is not a valid operand prefix" msgstr "" -#: config/mips/mips.c:7204 config/mips/mips.c:7211 config/mips/mips.c:7218 -#: config/mips/mips.c:7225 config/mips/mips.c:7285 +#: config/mips/mips.c:7201 config/mips/mips.c:7208 config/mips/mips.c:7215 +#: config/mips/mips.c:7222 config/mips/mips.c:7282 #, c-format msgid "invalid use of '%%%c'" msgstr "" -#: config/mips/mips.c:7537 +#: config/mips/mips.c:7534 msgid "mips_debugger_offset called with non stack/frame/arg pointer" msgstr "" @@ -3337,77 +3411,77 @@ msgstr "" msgid "Try running '%s' in the shell to raise its limit.\n" msgstr "" -#: config/rs6000/rs6000.c:12007 +#: config/rs6000/rs6000.c:12014 #, c-format msgid "invalid %%f value" msgstr "" -#: config/rs6000/rs6000.c:12016 +#: config/rs6000/rs6000.c:12023 #, c-format msgid "invalid %%F value" msgstr "" -#: config/rs6000/rs6000.c:12025 +#: config/rs6000/rs6000.c:12032 #, c-format msgid "invalid %%G value" msgstr "" -#: config/rs6000/rs6000.c:12060 +#: config/rs6000/rs6000.c:12067 #, c-format msgid "invalid %%j code" msgstr "" -#: config/rs6000/rs6000.c:12070 +#: config/rs6000/rs6000.c:12077 #, c-format msgid "invalid %%J code" msgstr "" -#: config/rs6000/rs6000.c:12080 +#: config/rs6000/rs6000.c:12087 #, c-format msgid "invalid %%k value" msgstr "" -#: config/rs6000/rs6000.c:12100 config/xtensa/xtensa.c:2224 +#: config/rs6000/rs6000.c:12107 config/xtensa/xtensa.c:2228 #, c-format msgid "invalid %%K value" msgstr "" -#: config/rs6000/rs6000.c:12170 +#: config/rs6000/rs6000.c:12177 #, c-format msgid "invalid %%O value" msgstr "" -#: config/rs6000/rs6000.c:12217 +#: config/rs6000/rs6000.c:12224 #, c-format msgid "invalid %%q value" msgstr "" -#: config/rs6000/rs6000.c:12261 +#: config/rs6000/rs6000.c:12268 #, c-format msgid "invalid %%S value" msgstr "" -#: config/rs6000/rs6000.c:12301 +#: config/rs6000/rs6000.c:12308 #, c-format msgid "invalid %%T value" msgstr "" -#: config/rs6000/rs6000.c:12311 +#: config/rs6000/rs6000.c:12318 #, c-format msgid "invalid %%u value" msgstr "" -#: config/rs6000/rs6000.c:12320 config/xtensa/xtensa.c:2194 +#: config/rs6000/rs6000.c:12327 config/xtensa/xtensa.c:2198 #, c-format msgid "invalid %%v value" msgstr "" -#: config/rs6000/rs6000.c:12541 +#: config/rs6000/rs6000.c:12548 #, c-format msgid "invalid %%y value, try using the 'Z' constraint" msgstr "" -#: config/rs6000/rs6000.c:22818 +#: config/rs6000/rs6000.c:22826 msgid "AltiVec argument passed to unprototyped function" msgstr "" @@ -3420,75 +3494,75 @@ msgstr "" msgid "UNKNOWN in print_operand !?" msgstr "" -#: config/score/score3.c:1265 config/score/score3.c:1285 -#: config/score/score7.c:1256 +#: config/score/score3.c:1262 config/score/score3.c:1282 +#: config/score/score7.c:1253 #, c-format msgid "invalid operand for code: '%c'" msgstr "" -#: config/sh/sh.c:782 +#: config/sh/sh.c:785 #, c-format msgid "invalid operand to %%R" msgstr "" -#: config/sh/sh.c:809 +#: config/sh/sh.c:812 #, c-format msgid "invalid operand to %%S" msgstr "" -#: config/sh/sh.c:8394 +#: config/sh/sh.c:8384 msgid "created and used with different architectures / ABIs" msgstr "" -#: config/sh/sh.c:8396 +#: config/sh/sh.c:8386 msgid "created and used with different ABIs" msgstr "" -#: config/sh/sh.c:8398 +#: config/sh/sh.c:8388 msgid "created and used with different endianness" msgstr "" -#: config/sparc/sparc.c:6852 config/sparc/sparc.c:6858 +#: config/sparc/sparc.c:6856 config/sparc/sparc.c:6862 #, c-format msgid "invalid %%Y operand" msgstr "" -#: config/sparc/sparc.c:6928 +#: config/sparc/sparc.c:6932 #, c-format msgid "invalid %%A operand" msgstr "" -#: config/sparc/sparc.c:6938 +#: config/sparc/sparc.c:6942 #, c-format msgid "invalid %%B operand" msgstr "" -#: config/sparc/sparc.c:6977 +#: config/sparc/sparc.c:6981 #, c-format msgid "invalid %%c operand" msgstr "" -#: config/sparc/sparc.c:6999 +#: config/sparc/sparc.c:7003 #, c-format msgid "invalid %%d operand" msgstr "" -#: config/sparc/sparc.c:7016 +#: config/sparc/sparc.c:7020 #, c-format msgid "invalid %%f operand" msgstr "" -#: config/sparc/sparc.c:7030 +#: config/sparc/sparc.c:7034 #, c-format msgid "invalid %%s operand" msgstr "" -#: config/sparc/sparc.c:7084 +#: config/sparc/sparc.c:7088 #, c-format msgid "long long constant not a valid immediate operand" msgstr "" -#: config/sparc/sparc.c:7087 +#: config/sparc/sparc.c:7091 #, c-format msgid "floating point constant not a valid immediate operand" msgstr "" @@ -3540,44 +3614,44 @@ msgstr "" msgid "illegal operand detected" msgstr "" -#: config/xtensa/xtensa.c:692 config/xtensa/xtensa.c:724 -#: config/xtensa/xtensa.c:733 +#: config/xtensa/xtensa.c:696 config/xtensa/xtensa.c:728 +#: config/xtensa/xtensa.c:737 msgid "bad test" msgstr "" -#: config/xtensa/xtensa.c:2182 +#: config/xtensa/xtensa.c:2186 #, c-format msgid "invalid %%D value" msgstr "" -#: config/xtensa/xtensa.c:2219 +#: config/xtensa/xtensa.c:2223 msgid "invalid mask" msgstr "" -#: config/xtensa/xtensa.c:2245 +#: config/xtensa/xtensa.c:2249 #, c-format msgid "invalid %%x value" msgstr "" -#: config/xtensa/xtensa.c:2252 +#: config/xtensa/xtensa.c:2256 #, c-format msgid "invalid %%d value" msgstr "" -#: config/xtensa/xtensa.c:2273 config/xtensa/xtensa.c:2283 +#: config/xtensa/xtensa.c:2277 config/xtensa/xtensa.c:2287 #, c-format msgid "invalid %%t/%%b value" msgstr "" -#: config/xtensa/xtensa.c:2325 +#: config/xtensa/xtensa.c:2329 msgid "invalid address" msgstr "" -#: config/xtensa/xtensa.c:2350 +#: config/xtensa/xtensa.c:2354 msgid "no register in address" msgstr "" -#: config/xtensa/xtensa.c:2358 +#: config/xtensa/xtensa.c:2362 msgid "address offset not a constant" msgstr "" @@ -3585,14 +3659,22 @@ msgstr "" msgid "candidates are:" msgstr "" -#: cp/call.c:6892 +#: cp/call.c:6904 msgid "candidate 1:" msgstr "" -#: cp/call.c:6893 +#: cp/call.c:6905 msgid "candidate 2:" msgstr "" +#: cp/cxx-pretty-print.c:173 cp/error.c:916 objc/objc-act.c:7078 +msgid "<unnamed>" +msgstr "" + +#: cp/cxx-pretty-print.c:2055 +msgid "template-parameter-" +msgstr "" + #: cp/decl2.c:676 msgid "candidates are: %+#D" msgstr "" @@ -3601,6 +3683,134 @@ msgstr "" msgid "candidate is: %+#D" msgstr "" +#: cp/error.c:305 +msgid "<missing>" +msgstr "" + +#: cp/error.c:346 +msgid "<brace-enclosed initializer list>" +msgstr "" + +#: cp/error.c:348 +msgid "<unresolved overloaded function type>" +msgstr "" + +#: cp/error.c:488 +msgid "<type error>" +msgstr "" + +#: cp/error.c:587 +#, c-format +msgid "<anonymous %s>" +msgstr "" + +#: cp/error.c:709 +msgid "<typeprefixerror>" +msgstr "" + +#: cp/error.c:819 +#, c-format +msgid "(static initializers for %s)" +msgstr "" + +#: cp/error.c:821 +#, c-format +msgid "(static destructors for %s)" +msgstr "" + +#: cp/error.c:891 +msgid "vtable for " +msgstr "" + +#: cp/error.c:903 +msgid "<return value> " +msgstr "" + +#: cp/error.c:1029 +msgid "<enumerator>" +msgstr "" + +#: cp/error.c:1069 +msgid "<declaration error>" +msgstr "" + +#: cp/error.c:1299 +msgid "with" +msgstr "" + +#: cp/error.c:1464 cp/error.c:1484 +msgid "<template parameter error>" +msgstr "" + +#: cp/error.c:1610 +msgid "<statement>" +msgstr "" + +#. While waiting for caret diagnostics, avoid printing +#. __cxa_allocate_exception, __cxa_throw, and the like. +#: cp/error.c:1639 +msgid "<throw-expression>" +msgstr "" + +#: cp/error.c:2085 +msgid "<unparsed>" +msgstr "" + +#: cp/error.c:2231 +msgid "<expression error>" +msgstr "" + +#: cp/error.c:2245 +msgid "<unknown operator>" +msgstr "" + +#: cp/error.c:2449 +msgid "<unknown>" +msgstr "" + +#: cp/error.c:2469 +msgid "{unknown}" +msgstr "" + +#: cp/error.c:2551 +msgid "At global scope:" +msgstr "" + +#: cp/error.c:2653 +#, c-format +msgid "In static member function %qs" +msgstr "" + +#: cp/error.c:2655 +#, c-format +msgid "In copy constructor %qs" +msgstr "" + +#: cp/error.c:2657 +#, c-format +msgid "In constructor %qs" +msgstr "" + +#: cp/error.c:2659 +#, c-format +msgid "In destructor %qs" +msgstr "" + +#: cp/error.c:2689 +#, c-format +msgid "%s: In instantiation of %qs:\n" +msgstr "" + +#: cp/error.c:2713 +#, c-format +msgid "%s:%d: instantiated from %qs\n" +msgstr "" + +#: cp/error.c:2719 +#, c-format +msgid "%s:%d: instantiated from here" +msgstr "" + #: cp/g++spec.c:254 java/jvspec.c:406 #, c-format msgid "argument to '%s' missing\n" @@ -4180,7 +4390,7 @@ msgstr "" msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or LOGICAL" msgstr "" -#: fortran/cpp.c:381 c-opts.c:906 +#: fortran/cpp.c:381 c-opts.c:902 #, gcc-internal-format msgid "output filename specified twice" msgstr "" @@ -4225,7 +4435,7 @@ msgstr "" msgid "Data element above array upper bound at %L" msgstr "" -#: fortran/data.c:432 +#: fortran/data.c:436 #, no-c-format msgid "Extension: re-initialization of '%s' at %L" msgstr "" @@ -4426,7 +4636,7 @@ msgstr "" msgid "NULL() initialization at %C is ambiguous" msgstr "" -#: fortran/decl.c:1646 fortran/decl.c:5633 +#: fortran/decl.c:1646 fortran/decl.c:5778 #, no-c-format msgid "Duplicate array spec for Cray pointee at %C" msgstr "" @@ -4446,17 +4656,17 @@ msgstr "" msgid "Extension: Old-style initialization at %C" msgstr "" -#: fortran/decl.c:1764 fortran/decl.c:4316 +#: fortran/decl.c:1764 fortran/decl.c:4330 #, no-c-format msgid "Initialization at %C isn't for a pointer variable" msgstr "" -#: fortran/decl.c:1772 fortran/decl.c:4324 +#: fortran/decl.c:1772 fortran/decl.c:4338 fortran/decl.c:4480 #, no-c-format msgid "Pointer initialization requires a NULL() at %C" msgstr "" -#: fortran/decl.c:1778 fortran/decl.c:4330 +#: fortran/decl.c:1778 fortran/decl.c:4344 fortran/decl.c:4485 #, no-c-format msgid "Initialization of pointer at %C is not allowed in a PURE procedure" msgstr "" @@ -4466,7 +4676,7 @@ msgstr "" msgid "Pointer initialization at %C requires '=>', not '='" msgstr "" -#: fortran/decl.c:1800 fortran/decl.c:6719 +#: fortran/decl.c:1800 fortran/decl.c:6864 #, no-c-format msgid "Expected an initialization expression at %C" msgstr "" @@ -4629,7 +4839,7 @@ msgid "" "module" msgstr "" -#: fortran/decl.c:3201 fortran/decl.c:5873 +#: fortran/decl.c:3201 fortran/decl.c:6018 #, no-c-format msgid "PROTECTED at %C only allowed in specification part of a module" msgstr "" @@ -4766,642 +4976,661 @@ msgstr "" msgid "Unexpected junk after function declaration at %C" msgstr "" -#: fortran/decl.c:4068 fortran/decl.c:4957 +#: fortran/decl.c:4068 fortran/decl.c:5102 #, no-c-format msgid "" "Fortran 2008: BIND(C) attribute at %L may not be specified for an internal " "procedure" msgstr "" -#: fortran/decl.c:4202 +#: fortran/decl.c:4196 #, no-c-format msgid "Interface '%s' at %C may not be generic" msgstr "" -#: fortran/decl.c:4207 +#: fortran/decl.c:4202 #, no-c-format msgid "Interface '%s' at %C may not be a statement function" msgstr "" -#: fortran/decl.c:4220 +#: fortran/decl.c:4215 #, no-c-format msgid "Intrinsic procedure '%s' not allowed in PROCEDURE statement at %C" msgstr "" -#: fortran/decl.c:4256 +#: fortran/decl.c:4270 #, no-c-format msgid "BIND(C) attribute at %C requires an interface with BIND(C)" msgstr "" -#: fortran/decl.c:4263 +#: fortran/decl.c:4277 #, no-c-format msgid "BIND(C) procedure with NAME may not have POINTER attribute at %C" msgstr "" -#: fortran/decl.c:4269 +#: fortran/decl.c:4283 #, no-c-format msgid "Dummy procedure at %C may not have BIND(C) attribute with NAME" msgstr "" -#: fortran/decl.c:4292 +#: fortran/decl.c:4306 #, no-c-format msgid "Procedure '%s' at %L already has basic type of %s" msgstr "" -#: fortran/decl.c:4353 fortran/decl.c:4401 +#: fortran/decl.c:4367 fortran/decl.c:4547 #, no-c-format msgid "Syntax error in PROCEDURE statement at %C" msgstr "" -#: fortran/decl.c:4375 +#: fortran/decl.c:4410 #, no-c-format -msgid "PROCEDURE at %C must be in a generic interface" +msgid "Procedure Pointer Component with PASS at %C not yet implemented" msgstr "" -#: fortran/decl.c:4428 +#: fortran/decl.c:4424 fortran/decl.c:7246 #, no-c-format -msgid "" -"Fortran 2003: Procedure components at %C are not yet implemented in gfortran" +msgid "Expected '::' after binding-attributes at %C" +msgstr "" + +#: fortran/decl.c:4431 +#, no-c-format +msgid "NOPASS or explicit interface required at %C" msgstr "" -#: fortran/decl.c:4441 +#: fortran/decl.c:4504 +#, no-c-format +msgid "Syntax error in procedure pointer component at %C" +msgstr "" + +#: fortran/decl.c:4521 +#, no-c-format +msgid "PROCEDURE at %C must be in a generic interface" +msgstr "" + +#: fortran/decl.c:4586 #, no-c-format msgid "Fortran 2003: PROCEDURE statement at %C" msgstr "" -#: fortran/decl.c:4509 +#: fortran/decl.c:4654 #, no-c-format msgid "Expected formal argument list in function definition at %C" msgstr "" -#: fortran/decl.c:4533 fortran/decl.c:4537 fortran/decl.c:4739 -#: fortran/decl.c:4743 fortran/decl.c:4925 fortran/decl.c:4929 -#: fortran/symbol.c:1472 +#: fortran/decl.c:4678 fortran/decl.c:4682 fortran/decl.c:4884 +#: fortran/decl.c:4888 fortran/decl.c:5070 fortran/decl.c:5074 +#: fortran/symbol.c:1484 #, no-c-format msgid "BIND(C) attribute at %L can only be used for variables or common blocks" msgstr "" -#: fortran/decl.c:4569 +#: fortran/decl.c:4714 #, no-c-format msgid "Function '%s' at %C already has a type of %s" msgstr "" -#: fortran/decl.c:4661 +#: fortran/decl.c:4806 #, no-c-format msgid "ENTRY statement at %C cannot appear within a PROGRAM" msgstr "" -#: fortran/decl.c:4664 +#: fortran/decl.c:4809 #, no-c-format msgid "ENTRY statement at %C cannot appear within a MODULE" msgstr "" -#: fortran/decl.c:4667 +#: fortran/decl.c:4812 #, no-c-format msgid "ENTRY statement at %C cannot appear within a BLOCK DATA" msgstr "" -#: fortran/decl.c:4671 +#: fortran/decl.c:4816 #, no-c-format msgid "ENTRY statement at %C cannot appear within an INTERFACE" msgstr "" -#: fortran/decl.c:4675 +#: fortran/decl.c:4820 #, no-c-format msgid "ENTRY statement at %C cannot appear within a DERIVED TYPE block" msgstr "" -#: fortran/decl.c:4679 +#: fortran/decl.c:4824 #, no-c-format msgid "ENTRY statement at %C cannot appear within an IF-THEN block" msgstr "" -#: fortran/decl.c:4683 +#: fortran/decl.c:4828 #, no-c-format msgid "ENTRY statement at %C cannot appear within a DO block" msgstr "" -#: fortran/decl.c:4687 +#: fortran/decl.c:4832 #, no-c-format msgid "ENTRY statement at %C cannot appear within a SELECT block" msgstr "" -#: fortran/decl.c:4691 +#: fortran/decl.c:4836 #, no-c-format msgid "ENTRY statement at %C cannot appear within a FORALL block" msgstr "" -#: fortran/decl.c:4695 +#: fortran/decl.c:4840 #, no-c-format msgid "ENTRY statement at %C cannot appear within a WHERE block" msgstr "" -#: fortran/decl.c:4699 +#: fortran/decl.c:4844 #, no-c-format msgid "ENTRY statement at %C cannot appear within a contained subprogram" msgstr "" -#: fortran/decl.c:4717 +#: fortran/decl.c:4862 #, no-c-format msgid "ENTRY statement at %C cannot appear in a contained procedure" msgstr "" -#: fortran/decl.c:4771 fortran/decl.c:4965 +#: fortran/decl.c:4916 fortran/decl.c:5110 #, no-c-format msgid "Missing required parentheses before BIND(C) at %C" msgstr "" -#: fortran/decl.c:5027 fortran/decl.c:5043 +#: fortran/decl.c:5172 fortran/decl.c:5188 #, no-c-format msgid "Syntax error in NAME= specifier for binding label at %C" msgstr "" -#: fortran/decl.c:5058 +#: fortran/decl.c:5203 #, no-c-format msgid "Missing closing quote '\"' for binding label at %C" msgstr "" -#: fortran/decl.c:5067 +#: fortran/decl.c:5212 #, no-c-format msgid "Missing closing quote ''' for binding label at %C" msgstr "" -#: fortran/decl.c:5077 +#: fortran/decl.c:5222 #, no-c-format msgid "Missing closing paren for binding label at %C" msgstr "" -#: fortran/decl.c:5083 +#: fortran/decl.c:5228 #, no-c-format msgid "No binding name is allowed in BIND(C) at %C" msgstr "" -#: fortran/decl.c:5089 +#: fortran/decl.c:5234 #, no-c-format msgid "For dummy procedure %s, no binding name is allowed in BIND(C) at %C" msgstr "" -#: fortran/decl.c:5120 +#: fortran/decl.c:5265 #, no-c-format msgid "NAME not allowed on BIND(C) for ABSTRACT INTERFACE at %C" msgstr "" -#: fortran/decl.c:5293 +#: fortran/decl.c:5438 #, no-c-format msgid "Unexpected END statement at %C" msgstr "" #. We would have required END [something]. -#: fortran/decl.c:5302 +#: fortran/decl.c:5447 #, no-c-format msgid "%s statement expected at %L" msgstr "" -#: fortran/decl.c:5313 +#: fortran/decl.c:5458 #, no-c-format msgid "Expecting %s statement at %C" msgstr "" -#: fortran/decl.c:5328 +#: fortran/decl.c:5473 #, no-c-format msgid "Expected block name of '%s' in %s statement at %C" msgstr "" -#: fortran/decl.c:5345 +#: fortran/decl.c:5490 #, no-c-format msgid "Expected terminating name at %C" msgstr "" -#: fortran/decl.c:5354 fortran/decl.c:5362 +#: fortran/decl.c:5499 fortran/decl.c:5507 #, no-c-format msgid "Expected label '%s' for %s statement at %C" msgstr "" -#: fortran/decl.c:5417 +#: fortran/decl.c:5562 #, no-c-format msgid "Missing array specification at %L in DIMENSION statement" msgstr "" -#: fortran/decl.c:5425 +#: fortran/decl.c:5570 #, no-c-format msgid "Dimensions specified for %s at %L after its initialisation" msgstr "" -#: fortran/decl.c:5434 +#: fortran/decl.c:5579 #, no-c-format msgid "Array specification must be deferred at %L" msgstr "" -#: fortran/decl.c:5513 +#: fortran/decl.c:5658 #, no-c-format msgid "Unexpected character in variable list at %C" msgstr "" -#: fortran/decl.c:5550 +#: fortran/decl.c:5695 #, no-c-format msgid "Expected '(' at %C" msgstr "" -#: fortran/decl.c:5564 fortran/decl.c:5604 +#: fortran/decl.c:5709 fortran/decl.c:5749 #, no-c-format msgid "Expected variable name at %C" msgstr "" -#: fortran/decl.c:5580 +#: fortran/decl.c:5725 #, no-c-format msgid "Cray pointer at %C must be an integer" msgstr "" -#: fortran/decl.c:5584 +#: fortran/decl.c:5729 #, no-c-format msgid "" "Cray pointer at %C has %d bytes of precision; memory addresses require %d " "bytes" msgstr "" -#: fortran/decl.c:5590 +#: fortran/decl.c:5735 #, no-c-format msgid "Expected \",\" at %C" msgstr "" -#: fortran/decl.c:5653 +#: fortran/decl.c:5798 #, no-c-format msgid "Expected \")\" at %C" msgstr "" -#: fortran/decl.c:5665 +#: fortran/decl.c:5810 #, no-c-format msgid "Expected \",\" or end of statement at %C" msgstr "" -#: fortran/decl.c:5729 +#: fortran/decl.c:5874 #, no-c-format msgid "Cray pointer declaration at %C requires -fcray-pointer flag" msgstr "" -#: fortran/decl.c:5824 +#: fortran/decl.c:5969 #, no-c-format msgid "" "Access specification of the %s operator at %C has already been specified" msgstr "" -#: fortran/decl.c:5841 +#: fortran/decl.c:5986 #, no-c-format msgid "" "Access specification of the .%s. operator at %C has already been specified" msgstr "" -#: fortran/decl.c:5879 +#: fortran/decl.c:6024 #, no-c-format msgid "Fortran 2003: PROTECTED statement at %C" msgstr "" -#: fortran/decl.c:5919 +#: fortran/decl.c:6064 #, no-c-format msgid "Syntax error in PROTECTED statement at %C" msgstr "" -#: fortran/decl.c:5943 +#: fortran/decl.c:6088 #, no-c-format msgid "" "PRIVATE statement at %C is only allowed in the specification part of a module" msgstr "" -#: fortran/decl.c:5980 +#: fortran/decl.c:6125 #, no-c-format msgid "" "PUBLIC statement at %C is only allowed in the specification part of a module" msgstr "" -#: fortran/decl.c:6007 +#: fortran/decl.c:6152 #, no-c-format msgid "Expected variable name at %C in PARAMETER statement" msgstr "" -#: fortran/decl.c:6014 +#: fortran/decl.c:6159 #, no-c-format msgid "Expected = sign in PARAMETER statement at %C" msgstr "" -#: fortran/decl.c:6020 +#: fortran/decl.c:6165 #, no-c-format msgid "Expected expression at %C in PARAMETER statement" msgstr "" -#: fortran/decl.c:6040 +#: fortran/decl.c:6185 #, no-c-format msgid "Initializing already initialized variable at %C" msgstr "" -#: fortran/decl.c:6102 +#: fortran/decl.c:6247 #, no-c-format msgid "Unexpected characters in PARAMETER statement at %C" msgstr "" -#: fortran/decl.c:6126 +#: fortran/decl.c:6271 #, no-c-format msgid "Blanket SAVE statement at %C follows previous SAVE statement" msgstr "" -#: fortran/decl.c:6138 +#: fortran/decl.c:6283 #, no-c-format msgid "SAVE statement at %C follows blanket SAVE statement" msgstr "" -#: fortran/decl.c:6185 +#: fortran/decl.c:6330 #, no-c-format msgid "Syntax error in SAVE statement at %C" msgstr "" -#: fortran/decl.c:6196 +#: fortran/decl.c:6341 #, no-c-format msgid "Fortran 2003: VALUE statement at %C" msgstr "" -#: fortran/decl.c:6236 +#: fortran/decl.c:6381 #, no-c-format msgid "Syntax error in VALUE statement at %C" msgstr "" -#: fortran/decl.c:6247 +#: fortran/decl.c:6392 #, no-c-format msgid "Fortran 2003: VOLATILE statement at %C" msgstr "" -#: fortran/decl.c:6289 +#: fortran/decl.c:6434 #, no-c-format msgid "Syntax error in VOLATILE statement at %C" msgstr "" -#: fortran/decl.c:6312 +#: fortran/decl.c:6457 #, no-c-format msgid "MODULE PROCEDURE at %C must be in a generic module interface" msgstr "" -#: fortran/decl.c:6394 +#: fortran/decl.c:6539 #, no-c-format msgid "Ambiguous symbol in TYPE definition at %C" msgstr "" -#: fortran/decl.c:6400 +#: fortran/decl.c:6545 #, no-c-format msgid "No such symbol in TYPE definition at %C" msgstr "" -#: fortran/decl.c:6406 +#: fortran/decl.c:6551 #, no-c-format msgid "'%s' in EXTENDS expression at %C is not a derived type" msgstr "" -#: fortran/decl.c:6413 +#: fortran/decl.c:6558 #, no-c-format msgid "'%s' cannot be extended at %C because it is BIND(C)" msgstr "" -#: fortran/decl.c:6420 +#: fortran/decl.c:6565 #, no-c-format msgid "'%s' cannot be extended at %C because it is a SEQUENCE type" msgstr "" -#: fortran/decl.c:6443 +#: fortran/decl.c:6588 #, no-c-format msgid "" "Derived type at %C can only be PRIVATE in the specification part of a module" msgstr "" -#: fortran/decl.c:6455 +#: fortran/decl.c:6600 #, no-c-format msgid "" "Derived type at %C can only be PUBLIC in the specification part of a module" msgstr "" -#: fortran/decl.c:6476 +#: fortran/decl.c:6621 #, no-c-format msgid "Fortran 2003: ABSTRACT type at %C" msgstr "" -#: fortran/decl.c:6540 +#: fortran/decl.c:6685 #, no-c-format msgid "Expected :: in TYPE definition at %C" msgstr "" -#: fortran/decl.c:6551 +#: fortran/decl.c:6696 #, no-c-format msgid "Type name '%s' at %C cannot be the same as an intrinsic type" msgstr "" -#: fortran/decl.c:6561 +#: fortran/decl.c:6706 #, no-c-format msgid "Derived type name '%s' at %C already has a basic type of %s" msgstr "" -#: fortran/decl.c:6577 +#: fortran/decl.c:6722 #, no-c-format msgid "Derived type definition of '%s' at %C has already been defined" msgstr "" -#: fortran/decl.c:6644 +#: fortran/decl.c:6789 #, no-c-format msgid "Cray Pointee at %C cannot be assumed shape array" msgstr "" -#: fortran/decl.c:6664 +#: fortran/decl.c:6809 #, no-c-format msgid "Fortran 2003: ENUM and ENUMERATOR at %C" msgstr "" -#: fortran/decl.c:6736 +#: fortran/decl.c:6881 #, no-c-format msgid "ENUMERATOR %L not initialized with integer expression" msgstr "" -#: fortran/decl.c:6785 +#: fortran/decl.c:6930 #, no-c-format msgid "ENUM definition statement expected before %C" msgstr "" -#: fortran/decl.c:6818 +#: fortran/decl.c:6963 #, no-c-format msgid "Syntax error in ENUMERATOR definition at %C" msgstr "" -#: fortran/decl.c:6865 fortran/decl.c:6880 +#: fortran/decl.c:7011 fortran/decl.c:7026 #, no-c-format msgid "Duplicate access-specifier at %C" msgstr "" -#: fortran/decl.c:6900 +#: fortran/decl.c:7046 #, no-c-format msgid "Binding attributes already specify passing, illegal NOPASS at %C" msgstr "" -#: fortran/decl.c:6918 +#: fortran/decl.c:7066 #, no-c-format -msgid "Duplicate NON_OVERRIDABLE at %C" +msgid "Binding attributes already specify passing, illegal PASS at %C" msgstr "" -#: fortran/decl.c:6934 +#: fortran/decl.c:7093 #, no-c-format -msgid "Duplicate DEFERRED at %C" +msgid "Duplicate POINTER attribute at %C" msgstr "" -#: fortran/decl.c:6952 +#: fortran/decl.c:7112 #, no-c-format -msgid "Binding attributes already specify passing, illegal PASS at %C" +msgid "Duplicate NON_OVERRIDABLE at %C" msgstr "" -#: fortran/decl.c:6973 +#: fortran/decl.c:7128 +#, no-c-format +msgid "Duplicate DEFERRED at %C" +msgstr "" + +#: fortran/decl.c:7141 #, no-c-format msgid "Expected access-specifier at %C" msgstr "" -#: fortran/decl.c:6975 +#: fortran/decl.c:7143 #, no-c-format msgid "Expected binding attribute at %C" msgstr "" -#: fortran/decl.c:6983 +#: fortran/decl.c:7151 #, no-c-format msgid "NON_OVERRIDABLE and DEFERRED can't both appear at %C" msgstr "" -#: fortran/decl.c:7027 +#: fortran/decl.c:7160 +#, no-c-format +msgid "POINTER attribute is required for procedure pointer component at %C" +msgstr "" + +#: fortran/decl.c:7202 #, no-c-format msgid "Interface-name expected after '(' at %C" msgstr "" -#: fortran/decl.c:7033 +#: fortran/decl.c:7208 #, no-c-format msgid "')' expected at %C" msgstr "" -#: fortran/decl.c:7055 +#: fortran/decl.c:7230 #, no-c-format msgid "Interface must be specified for DEFERRED binding at %C" msgstr "" -#: fortran/decl.c:7060 +#: fortran/decl.c:7235 #, no-c-format msgid "PROCEDURE(interface) at %C should be declared DEFERRED" msgstr "" -#: fortran/decl.c:7071 -#, no-c-format -msgid "Expected '::' after binding-attributes at %C" -msgstr "" - -#: fortran/decl.c:7081 +#: fortran/decl.c:7256 #, no-c-format msgid "Expected binding name at %C" msgstr "" -#: fortran/decl.c:7093 +#: fortran/decl.c:7268 #, no-c-format msgid "'=> target' is invalid for DEFERRED binding at %C" msgstr "" -#: fortran/decl.c:7099 +#: fortran/decl.c:7274 #, no-c-format msgid "'::' needed in PROCEDURE binding with explicit target at %C" msgstr "" -#: fortran/decl.c:7109 +#: fortran/decl.c:7284 #, no-c-format msgid "Expected binding target after '=>' at %C" msgstr "" -#: fortran/decl.c:7121 +#: fortran/decl.c:7296 #, no-c-format msgid "Junk after PROCEDURE declaration at %C" msgstr "" -#: fortran/decl.c:7136 +#: fortran/decl.c:7311 #, no-c-format msgid "Type '%s' containing DEFERRED binding at %C is not ABSTRACT" msgstr "" -#: fortran/decl.c:7147 +#: fortran/decl.c:7322 #, no-c-format msgid "" "There's already a procedure with binding name '%s' for the derived type '%s' " "at %C" msgstr "" -#: fortran/decl.c:7180 +#: fortran/decl.c:7360 #, no-c-format msgid "GENERIC at %C must be inside a derived-type CONTAINS" msgstr "" -#: fortran/decl.c:7197 +#: fortran/decl.c:7377 #, no-c-format msgid "Expected '::' at %C" msgstr "" -#: fortran/decl.c:7207 +#: fortran/decl.c:7387 #, no-c-format msgid "Expected generic name at %C" msgstr "" -#: fortran/decl.c:7218 +#: fortran/decl.c:7401 #, no-c-format msgid "" "There's already a non-generic procedure with binding name '%s' for the " "derived type '%s' at %C" msgstr "" -#: fortran/decl.c:7227 +#: fortran/decl.c:7409 #, no-c-format msgid "Binding at %C must have the same access as already defined binding '%s'" msgstr "" -#: fortran/decl.c:7255 +#: fortran/decl.c:7437 #, no-c-format msgid "Expected specific binding name at %C" msgstr "" -#: fortran/decl.c:7266 +#: fortran/decl.c:7447 #, no-c-format msgid "'%s' already defined as specific binding for the generic '%s' at %C" msgstr "" -#: fortran/decl.c:7284 +#: fortran/decl.c:7463 #, no-c-format msgid "Junk after GENERIC binding at %C" msgstr "" -#: fortran/decl.c:7309 +#: fortran/decl.c:7488 #, no-c-format msgid "FINAL declaration at %C must be inside a derived type CONTAINS section" msgstr "" -#: fortran/decl.c:7320 +#: fortran/decl.c:7499 #, no-c-format msgid "" "Derived type declaration with FINAL at %C must be in the specification part " "of a MODULE" msgstr "" -#: fortran/decl.c:7342 +#: fortran/decl.c:7521 #, no-c-format msgid "Empty FINAL at %C" msgstr "" -#: fortran/decl.c:7349 +#: fortran/decl.c:7528 #, no-c-format msgid "Expected module procedure name at %C" msgstr "" -#: fortran/decl.c:7359 +#: fortran/decl.c:7538 #, no-c-format msgid "Expected ',' at %C" msgstr "" -#: fortran/decl.c:7365 +#: fortran/decl.c:7544 #, no-c-format msgid "Unknown procedure name \"%s\" at %C" msgstr "" -#: fortran/decl.c:7379 +#: fortran/decl.c:7558 #, no-c-format msgid "'%s' at %C is already defined as FINAL procedure!" msgstr "" @@ -5427,403 +5656,415 @@ msgstr "" msgid "<During initialization>\n" msgstr "" -#: fortran/error.c:715 +#: fortran/error.c:716 #, no-c-format msgid "Error count reached limit of %d." msgstr "" -#: fortran/error.c:734 fortran/error.c:788 fortran/error.c:825 +#: fortran/error.c:735 fortran/error.c:789 fortran/error.c:826 msgid "Warning:" msgstr "" -#: fortran/error.c:790 fortran/error.c:873 fortran/error.c:899 +#: fortran/error.c:791 fortran/error.c:874 fortran/error.c:900 msgid "Error:" msgstr "" -#: fortran/error.c:923 +#: fortran/error.c:924 msgid "Fatal Error:" msgstr "" -#: fortran/error.c:942 +#: fortran/error.c:943 #, no-c-format msgid "Internal Error at (1):" msgstr "" -#: fortran/expr.c:256 +#: fortran/expr.c:257 #, c-format msgid "Constant expression required at %C" msgstr "" -#: fortran/expr.c:259 +#: fortran/expr.c:260 #, c-format msgid "Integer expression required at %C" msgstr "" -#: fortran/expr.c:264 +#: fortran/expr.c:265 #, c-format msgid "Integer value too large in expression at %C" msgstr "" -#: fortran/expr.c:1056 +#: fortran/expr.c:1058 #, no-c-format msgid "Index in dimension %d is out of bounds at %L" msgstr "" -#: fortran/expr.c:1232 fortran/expr.c:1283 +#: fortran/expr.c:1234 fortran/expr.c:1285 #, no-c-format msgid "index in dimension %d is out of bounds at %L" msgstr "" -#: fortran/expr.c:1885 +#: fortran/expr.c:1888 #, no-c-format msgid "elemental function arguments at %C are not compliant" msgstr "" -#: fortran/expr.c:1929 +#: fortran/expr.c:1932 #, no-c-format msgid "Numeric or CHARACTER operands are required in expression at %L" msgstr "" -#: fortran/expr.c:1954 +#: fortran/expr.c:1957 #, no-c-format msgid "" "Concatenation operator in expression at %L must have two CHARACTER operands" msgstr "" -#: fortran/expr.c:1961 +#: fortran/expr.c:1964 #, no-c-format msgid "Concat operator at %L must concatenate strings of the same kind" msgstr "" -#: fortran/expr.c:1971 +#: fortran/expr.c:1974 #, no-c-format msgid ".NOT. operator in expression at %L must have a LOGICAL operand" msgstr "" -#: fortran/expr.c:1987 +#: fortran/expr.c:1990 #, no-c-format msgid "LOGICAL operands are required in expression at %L" msgstr "" -#: fortran/expr.c:1998 +#: fortran/expr.c:2001 #, no-c-format msgid "Only intrinsic operators can be used in expression at %L" msgstr "" -#: fortran/expr.c:2006 +#: fortran/expr.c:2009 #, no-c-format msgid "Numeric operands are required in expression at %L" msgstr "" -#: fortran/expr.c:2099 +#: fortran/expr.c:2102 #, no-c-format msgid "Assumed character length variable '%s' in constant expression at %L" msgstr "" -#: fortran/expr.c:2150 fortran/expr.c:2156 +#: fortran/expr.c:2153 fortran/expr.c:2159 #, no-c-format msgid "" "transformational intrinsic '%s' at %L is not permitted in an initialization " "expression" msgstr "" -#: fortran/expr.c:2188 +#: fortran/expr.c:2191 #, no-c-format msgid "Extension: Evaluation of nonstandard initialization expression at %L" msgstr "" -#: fortran/expr.c:2245 +#: fortran/expr.c:2248 #, no-c-format msgid "" "Function '%s' in initialization expression at %L must be an intrinsic or a " "specification function" msgstr "" -#: fortran/expr.c:2257 +#: fortran/expr.c:2260 #, no-c-format msgid "" "Intrinsic function '%s' at %L is not permitted in an initialization " "expression" msgstr "" -#: fortran/expr.c:2289 +#: fortran/expr.c:2292 #, no-c-format msgid "PARAMETER '%s' is used at %L before its definition is complete" msgstr "" -#: fortran/expr.c:2309 +#: fortran/expr.c:2312 #, no-c-format msgid "" "Assumed size array '%s' at %L is not permitted in an initialization " "expression" msgstr "" -#: fortran/expr.c:2315 +#: fortran/expr.c:2318 #, no-c-format msgid "" "Assumed shape array '%s' at %L is not permitted in an initialization " "expression" msgstr "" -#: fortran/expr.c:2321 +#: fortran/expr.c:2324 #, no-c-format msgid "" "Deferred array '%s' at %L is not permitted in an initialization expression" msgstr "" -#: fortran/expr.c:2327 +#: fortran/expr.c:2330 #, no-c-format msgid "" "Array '%s' at %L is a variable, which does not reduce to a constant " "expression" msgstr "" -#: fortran/expr.c:2337 +#: fortran/expr.c:2340 #, no-c-format msgid "" "Parameter '%s' at %L has not been declared or is a variable, which does not " "reduce to a constant expression" msgstr "" -#: fortran/expr.c:2413 +#: fortran/expr.c:2416 #, no-c-format msgid "Initialization expression didn't reduce %C" msgstr "" -#: fortran/expr.c:2492 +#: fortran/expr.c:2495 #, no-c-format msgid "Specification function '%s' at %L cannot be a statement function" msgstr "" -#: fortran/expr.c:2499 +#: fortran/expr.c:2502 #, no-c-format msgid "Specification function '%s' at %L cannot be an internal function" msgstr "" -#: fortran/expr.c:2506 +#: fortran/expr.c:2509 #, no-c-format msgid "Specification function '%s' at %L must be PURE" msgstr "" -#: fortran/expr.c:2513 +#: fortran/expr.c:2516 #, no-c-format msgid "Specification function '%s' at %L cannot be RECURSIVE" msgstr "" -#: fortran/expr.c:2647 +#: fortran/expr.c:2650 #, no-c-format msgid "Dummy argument '%s' not allowed in expression at %L" msgstr "" -#: fortran/expr.c:2654 +#: fortran/expr.c:2657 #, no-c-format msgid "Dummy argument '%s' at %L cannot be OPTIONAL" msgstr "" -#: fortran/expr.c:2661 +#: fortran/expr.c:2664 #, no-c-format msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)" msgstr "" -#: fortran/expr.c:2692 +#: fortran/expr.c:2695 #, no-c-format msgid "Variable '%s' cannot appear in the expression at %L" msgstr "" -#: fortran/expr.c:2742 +#: fortran/expr.c:2745 #, no-c-format msgid "Expression at %L must be of INTEGER type, found %s" msgstr "" -#: fortran/expr.c:2752 +#: fortran/expr.c:2755 #, no-c-format msgid "Function '%s' at %L must be PURE" msgstr "" -#: fortran/expr.c:2761 +#: fortran/expr.c:2764 #, no-c-format msgid "Expression at %L must be scalar" msgstr "" -#: fortran/expr.c:2788 +#: fortran/expr.c:2791 #, no-c-format msgid "Incompatible ranks in %s (%d and %d) at %L" msgstr "" -#: fortran/expr.c:2802 +#: fortran/expr.c:2805 #, no-c-format msgid "Different shape for %s at %L on dimension %d (%d and %d)" msgstr "" -#: fortran/expr.c:2848 fortran/expr.c:3105 +#: fortran/expr.c:2851 fortran/expr.c:3111 #, no-c-format msgid "Cannot assign to INTENT(IN) variable '%s' at %L" msgstr "" -#: fortran/expr.c:2900 +#: fortran/expr.c:2903 #, no-c-format msgid "'%s' at %L is not a VALUE" msgstr "" -#: fortran/expr.c:2907 +#: fortran/expr.c:2910 #, no-c-format msgid "Incompatible ranks %d and %d in assignment at %L" msgstr "" -#: fortran/expr.c:2914 +#: fortran/expr.c:2917 #, no-c-format msgid "Variable type is UNKNOWN in assignment at %L" msgstr "" -#: fortran/expr.c:2926 +#: fortran/expr.c:2929 #, no-c-format msgid "NULL appears on right-hand side in assignment at %L" msgstr "" -#: fortran/expr.c:2937 +#: fortran/expr.c:2940 #, no-c-format msgid "Vector assignment to assumed-size Cray Pointee at %L is illegal" msgstr "" -#: fortran/expr.c:2946 +#: fortran/expr.c:2949 #, no-c-format msgid "POINTER valued function appears on right-hand side of assignment at %L" msgstr "" -#: fortran/expr.c:2951 +#: fortran/expr.c:2954 msgid "array assignment" msgstr "" -#: fortran/expr.c:2956 +#: fortran/expr.c:2959 #, no-c-format msgid "" "Extension: BOZ literal at %L used to initialize non-integer variable '%s'" msgstr "" -#: fortran/expr.c:2962 fortran/resolve.c:6658 +#: fortran/expr.c:2965 fortran/resolve.c:6726 #, no-c-format msgid "" "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/" "DBLE/CMPLX" msgstr "" -#: fortran/expr.c:2972 fortran/resolve.c:6668 +#: fortran/expr.c:2975 fortran/resolve.c:6736 #, no-c-format msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'" msgstr "" -#: fortran/expr.c:2980 fortran/resolve.c:6677 +#: fortran/expr.c:2983 fortran/resolve.c:6745 #, no-c-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:2984 fortran/resolve.c:6681 +#: fortran/expr.c:2987 fortran/resolve.c:6749 #, no-c-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:2988 fortran/resolve.c:6685 +#: fortran/expr.c:2991 fortran/resolve.c:6753 #, no-c-format msgid "" "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled " "with the option -fno-range-check" msgstr "" -#: fortran/expr.c:3010 +#: fortran/expr.c:3013 #, no-c-format msgid "" "Incompatible types in DATA statement at %L; attempted conversion of %s to %s" msgstr "" -#: fortran/expr.c:3046 +#: fortran/expr.c:3049 #, no-c-format msgid "Pointer assignment target is not a POINTER at %L" msgstr "" -#: fortran/expr.c:3055 +#: fortran/expr.c:3058 #, no-c-format msgid "" "'%s' in the pointer assignment at %L cannot be an l-value since it is a " "procedure" msgstr "" -#: fortran/expr.c:3083 +#: fortran/expr.c:3089 #, no-c-format msgid "Expected bounds specification for '%s' at %L" msgstr "" -#: fortran/expr.c:3088 +#: fortran/expr.c:3094 #, no-c-format msgid "Fortran 2003: Bounds specification for '%s' in pointer assignment at %L" msgstr "" -#: fortran/expr.c:3094 +#: fortran/expr.c:3100 #, no-c-format msgid "Pointer bounds remapping at %L is not yet implemented in gfortran" msgstr "" -#: fortran/expr.c:3112 +#: fortran/expr.c:3118 #, no-c-format msgid "Pointer assignment to non-POINTER at %L" msgstr "" -#: fortran/expr.c:3121 +#: fortran/expr.c:3127 #, no-c-format msgid "Bad pointer object in PURE procedure at %L" msgstr "" -#: fortran/expr.c:3140 +#: fortran/expr.c:3147 #, no-c-format msgid "Invalid procedure pointer assignment at %L" msgstr "" -#: fortran/expr.c:3146 +#: fortran/expr.c:3153 #, no-c-format msgid "" "Abstract interface '%s' is invalid in procedure pointer assignment at %L" msgstr "" -#: fortran/expr.c:3155 +#: fortran/expr.c:3163 +#, no-c-format +msgid "" +"Statement function '%s' is invalid in procedure pointer assignment at %L" +msgstr "" + +#: fortran/expr.c:3169 +#, no-c-format +msgid "" +"Internal procedure '%s' is invalid in procedure pointer assignment at %L" +msgstr "" + +#: fortran/expr.c:3181 #, no-c-format msgid "Interfaces don't match in procedure pointer assignment at %L" msgstr "" -#: fortran/expr.c:3164 +#: fortran/expr.c:3190 #, no-c-format msgid "" "Different types in pointer assignment at %L; attempted assignment of %s to %s" msgstr "" -#: fortran/expr.c:3172 +#: fortran/expr.c:3198 #, no-c-format msgid "Different kind type parameters in pointer assignment at %L" msgstr "" -#: fortran/expr.c:3179 +#: fortran/expr.c:3205 #, no-c-format msgid "Different ranks in pointer assignment at %L" msgstr "" -#: fortran/expr.c:3201 +#: fortran/expr.c:3227 #, no-c-format msgid "Pointer assignment target is neither TARGET nor POINTER at %L" msgstr "" -#: fortran/expr.c:3208 +#: fortran/expr.c:3234 #, no-c-format msgid "Bad target in pointer assignment in PURE procedure at %L" msgstr "" -#: fortran/expr.c:3214 +#: fortran/expr.c:3240 #, no-c-format msgid "Pointer assignment with vector subscript on rhs at %L" msgstr "" -#: fortran/expr.c:3222 +#: fortran/expr.c:3248 #, no-c-format msgid "Pointer assignment target has PROTECTED attribute at %L" msgstr "" @@ -5962,12 +6203,12 @@ msgstr "" msgid "Second argument of defined assignment at %L must be INTENT(IN)" msgstr "" -#: fortran/interface.c:660 fortran/resolve.c:10585 +#: fortran/interface.c:660 fortran/resolve.c:10741 #, no-c-format msgid "First argument of operator interface at %L must be INTENT(IN)" msgstr "" -#: fortran/interface.c:664 fortran/resolve.c:10597 +#: fortran/interface.c:664 fortran/resolve.c:10753 #, no-c-format msgid "Second argument of operator interface at %L must be INTENT(IN)" msgstr "" @@ -6041,7 +6282,7 @@ msgstr "" msgid "More actual than formal arguments in procedure call at %L" msgstr "" -#: fortran/interface.c:1798 fortran/interface.c:2030 +#: fortran/interface.c:1798 fortran/interface.c:2031 #, no-c-format msgid "Missing alternate return spec in subroutine call at %L" msgstr "" @@ -6079,51 +6320,51 @@ msgid "" "at %L" msgstr "" -#: fortran/interface.c:1870 +#: fortran/interface.c:1871 #, no-c-format msgid "Expected a procedure pointer for argument '%s' at %L" msgstr "" -#: fortran/interface.c:1882 +#: fortran/interface.c:1883 #, no-c-format msgid "Expected a procedure for argument '%s' at %L" msgstr "" -#: fortran/interface.c:1892 +#: fortran/interface.c:1893 #, no-c-format msgid "Expected a PURE procedure for argument '%s' at %L" msgstr "" -#: fortran/interface.c:1906 +#: fortran/interface.c:1907 #, no-c-format msgid "Actual argument for '%s' cannot be an assumed-size array at %L" msgstr "" -#: fortran/interface.c:1915 +#: fortran/interface.c:1916 #, no-c-format msgid "Actual argument for '%s' must be a pointer at %L" msgstr "" -#: fortran/interface.c:1924 +#: fortran/interface.c:1925 #, no-c-format msgid "Actual argument for '%s' must be ALLOCATABLE at %L" msgstr "" -#: fortran/interface.c:1937 +#: fortran/interface.c:1938 #, no-c-format msgid "" "Actual argument at %L must be definable as the dummy argument '%s' is INTENT " "= OUT/INOUT" msgstr "" -#: fortran/interface.c:1946 +#: fortran/interface.c:1947 #, no-c-format msgid "" "Actual argument at %L is use-associated with PROTECTED attribute and dummy " "argument '%s' is INTENT = OUT/INOUT" msgstr "" -#: fortran/interface.c:1959 +#: fortran/interface.c:1960 #, no-c-format msgid "" "Array-section actual argument with vector subscripts at %L is incompatible " @@ -6131,80 +6372,80 @@ msgid "" "'%s'" msgstr "" -#: fortran/interface.c:1976 +#: fortran/interface.c:1977 #, no-c-format msgid "" "Assumed-shape actual argument at %L is incompatible with the non-assumed-" "shape dummy argument '%s' due to VOLATILE attribute" msgstr "" -#: fortran/interface.c:1988 +#: fortran/interface.c:1989 #, no-c-format msgid "" "Array-section actual argument at %L is incompatible with the non-assumed-" "shape dummy argument '%s' due to VOLATILE attribute" msgstr "" -#: fortran/interface.c:2007 +#: fortran/interface.c:2008 #, no-c-format msgid "" "Pointer-array actual argument at %L requires an assumed-shape or pointer-" "array dummy argument '%s' due to VOLATILE attribute" msgstr "" -#: fortran/interface.c:2037 +#: fortran/interface.c:2038 #, no-c-format msgid "Missing actual argument for argument '%s' at %L" msgstr "" -#: fortran/interface.c:2223 +#: fortran/interface.c:2224 #, no-c-format msgid "" "Same actual argument associated with INTENT(%s) argument '%s' and INTENT(%s) " "argument '%s' at %L" msgstr "" -#: fortran/interface.c:2279 +#: fortran/interface.c:2280 #, no-c-format msgid "" "Procedure argument at %L is INTENT(IN) while interface specifies INTENT(%s)" msgstr "" -#: fortran/interface.c:2289 +#: fortran/interface.c:2290 #, no-c-format msgid "" "Procedure argument at %L is local to a PURE procedure and is passed to an " "INTENT(%s) argument" msgstr "" -#: fortran/interface.c:2297 +#: fortran/interface.c:2298 #, no-c-format msgid "" "Procedure argument at %L is local to a PURE procedure and has the POINTER " "attribute" msgstr "" -#: fortran/interface.c:2323 +#: fortran/interface.c:2324 #, no-c-format msgid "Procedure '%s' called with an implicit interface at %L" msgstr "" -#: fortran/interface.c:2334 +#: fortran/interface.c:2335 #, no-c-format msgid "Keyword argument requires explicit interface for procedure '%s' at %L" msgstr "" -#: fortran/interface.c:2569 +#: fortran/interface.c:2570 #, no-c-format msgid "Function '%s' called in lieu of an operator at %L must be PURE" msgstr "" -#: fortran/interface.c:2649 +#: fortran/interface.c:2650 #, no-c-format msgid "Entity '%s' at %C is already present in the interface" msgstr "" -#: fortran/intrinsic.c:840 +#: fortran/intrinsic.c:842 #, no-c-format msgid "" "The intrinsic '%s' at %L is not included in the selected standard but %s and " @@ -6212,88 +6453,88 @@ msgid "" "option or define -fall-intrinsics to allow this intrinsic." msgstr "" -#: fortran/intrinsic.c:3079 +#: fortran/intrinsic.c:3083 #, no-c-format msgid "Too many arguments in call to '%s' at %L" msgstr "" -#: fortran/intrinsic.c:3094 +#: fortran/intrinsic.c:3098 #, no-c-format msgid "" "The argument list functions %%VAL, %%LOC or %%REF are not allowed in this " "context at %L" msgstr "" -#: fortran/intrinsic.c:3097 +#: fortran/intrinsic.c:3101 #, no-c-format msgid "Can't find keyword named '%s' in call to '%s' at %L" msgstr "" -#: fortran/intrinsic.c:3104 +#: fortran/intrinsic.c:3108 #, no-c-format msgid "Argument '%s' is appears twice in call to '%s' at %L" msgstr "" -#: fortran/intrinsic.c:3118 +#: fortran/intrinsic.c:3122 #, no-c-format msgid "Missing actual argument '%s' in call to '%s' at %L" msgstr "" -#: fortran/intrinsic.c:3133 +#: fortran/intrinsic.c:3137 #, no-c-format msgid "ALTERNATE RETURN not permitted at %L" msgstr "" -#: fortran/intrinsic.c:3190 +#: fortran/intrinsic.c:3194 #, no-c-format msgid "Type of argument '%s' in call to '%s' at %L should be %s, not %s" msgstr "" -#: fortran/intrinsic.c:3556 +#: fortran/intrinsic.c:3560 #, no-c-format msgid "Intrinsic '%s' (is %s) is used at %L" msgstr "" -#: fortran/intrinsic.c:3620 +#: fortran/intrinsic.c:3624 #, no-c-format msgid "Fortran 2003: Function '%s' as initialization expression at %L" msgstr "" -#: fortran/intrinsic.c:3696 +#: fortran/intrinsic.c:3700 #, no-c-format msgid "" "Fortran 2003: Elemental function as initialization expression with non-" "integer/non-character arguments at %L" msgstr "" -#: fortran/intrinsic.c:3757 +#: fortran/intrinsic.c:3761 #, no-c-format msgid "Subroutine call to intrinsic '%s' at %L is not PURE" msgstr "" -#: fortran/intrinsic.c:3829 +#: fortran/intrinsic.c:3833 #, no-c-format msgid "Extension: Conversion from %s to %s at %L" msgstr "" -#: fortran/intrinsic.c:3832 +#: fortran/intrinsic.c:3836 #, no-c-format msgid "Conversion from %s to %s at %L" msgstr "" -#: fortran/intrinsic.c:3879 +#: fortran/intrinsic.c:3883 #, no-c-format msgid "Can't convert %s to %s at %L" msgstr "" -#: fortran/intrinsic.c:3975 +#: fortran/intrinsic.c:3979 #, no-c-format msgid "" "'%s' declared at %L may shadow the intrinsic of the same name. In order to " "call the intrinsic, explicit INTRINSIC declarations may be required." msgstr "" -#: fortran/intrinsic.c:3980 +#: fortran/intrinsic.c:3984 #, no-c-format msgid "" "'%s' declared at %L is also the name of an intrinsic. It can only be called " @@ -6572,7 +6813,7 @@ msgstr "" msgid "CLOSE statement not allowed in PURE procedure at %C" msgstr "" -#: fortran/io.c:2152 fortran/match.c:1948 +#: fortran/io.c:2152 fortran/match.c:1949 #, no-c-format msgid "%s statement not allowed in PURE procedure at %C" msgstr "" @@ -6690,7 +6931,7 @@ msgid "Cannot write to internal file unit '%s' at %C inside a PURE procedure" msgstr "" #. A general purpose syntax error. -#: fortran/io.c:2874 fortran/io.c:3481 fortran/gfortran.h:2220 +#: fortran/io.c:2874 fortran/io.c:3481 fortran/gfortran.h:2232 #, no-c-format msgid "Syntax error in %s statement at %C" msgstr "" @@ -6744,7 +6985,7 @@ msgstr "" msgid "IOLENGTH tag invalid in INQUIRE statement at %C" msgstr "" -#: fortran/io.c:3708 fortran/trans-io.c:1178 +#: fortran/io.c:3708 fortran/trans-io.c:1176 #, no-c-format msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers" msgstr "" @@ -6856,174 +7097,174 @@ msgstr "" msgid "Invalid form of PROGRAM statement at %C" msgstr "" -#: fortran/match.c:1385 fortran/match.c:1466 +#: fortran/match.c:1386 fortran/match.c:1467 #, no-c-format msgid "Obsolescent: arithmetic IF statement at %C" msgstr "" -#: fortran/match.c:1441 +#: fortran/match.c:1442 #, no-c-format msgid "Syntax error in IF-expression at %C" msgstr "" -#: fortran/match.c:1452 +#: fortran/match.c:1453 #, no-c-format msgid "Block label not appropriate for arithmetic IF statement at %C" msgstr "" -#: fortran/match.c:1490 +#: fortran/match.c:1491 #, no-c-format msgid "Block label is not appropriate for IF statement at %C" msgstr "" -#: fortran/match.c:1570 fortran/primary.c:2916 +#: fortran/match.c:1571 fortran/primary.c:2931 #, no-c-format msgid "Cannot assign to a named constant at %C" msgstr "" -#: fortran/match.c:1580 +#: fortran/match.c:1581 #, no-c-format msgid "Unclassifiable statement in IF-clause at %C" msgstr "" -#: fortran/match.c:1587 +#: fortran/match.c:1588 #, no-c-format msgid "Syntax error in IF-clause at %C" msgstr "" -#: fortran/match.c:1631 +#: fortran/match.c:1632 #, no-c-format msgid "Unexpected junk after ELSE statement at %C" msgstr "" -#: fortran/match.c:1637 fortran/match.c:1672 +#: fortran/match.c:1638 fortran/match.c:1673 #, no-c-format msgid "Label '%s' at %C doesn't match IF label '%s'" msgstr "" -#: fortran/match.c:1666 +#: fortran/match.c:1667 #, no-c-format msgid "Unexpected junk after ELSE IF statement at %C" msgstr "" -#: fortran/match.c:1834 +#: fortran/match.c:1835 #, no-c-format msgid "Name '%s' in %s statement at %C is not a loop name" msgstr "" -#: fortran/match.c:1850 +#: fortran/match.c:1851 #, no-c-format msgid "%s statement at %C is not within a loop" msgstr "" -#: fortran/match.c:1853 +#: fortran/match.c:1854 #, no-c-format msgid "%s statement at %C is not within loop '%s'" msgstr "" -#: fortran/match.c:1861 +#: fortran/match.c:1862 #, no-c-format msgid "%s statement at %C leaving OpenMP structured block" msgstr "" -#: fortran/match.c:1874 +#: fortran/match.c:1875 #, no-c-format msgid "EXIT statement at %C terminating !$OMP DO loop" msgstr "" -#: fortran/match.c:1926 +#: fortran/match.c:1927 #, no-c-format msgid "Too many digits in STOP code at %C" msgstr "" -#: fortran/match.c:1979 +#: fortran/match.c:1980 #, no-c-format msgid "Deleted feature: PAUSE statement at %C" msgstr "" -#: fortran/match.c:2027 +#: fortran/match.c:2028 #, no-c-format msgid "Deleted feature: ASSIGN statement at %C" msgstr "" -#: fortran/match.c:2073 +#: fortran/match.c:2074 #, no-c-format msgid "Deleted feature: Assigned GOTO statement at %C" msgstr "" -#: fortran/match.c:2120 fortran/match.c:2172 +#: fortran/match.c:2121 fortran/match.c:2173 #, no-c-format msgid "Statement label list in GOTO at %C cannot be empty" msgstr "" -#: fortran/match.c:2257 +#: fortran/match.c:2258 #, no-c-format msgid "Bad allocate-object at %C for a PURE procedure" msgstr "" -#: fortran/match.c:2273 fortran/match.c:2475 +#: fortran/match.c:2274 fortran/match.c:2476 #, no-c-format msgid "" "Allocate-object at %C is not a nonprocedure pointer or an allocatable " "variable" msgstr "" -#: fortran/match.c:2290 fortran/match.c:2492 +#: fortran/match.c:2291 fortran/match.c:2493 #, no-c-format msgid "Redundant STAT tag found at %L " msgstr "" -#: fortran/match.c:2310 fortran/match.c:2512 +#: fortran/match.c:2311 fortran/match.c:2513 #, no-c-format msgid "Fortran 2003: ERRMSG at %L" msgstr "" -#: fortran/match.c:2316 fortran/match.c:2518 +#: fortran/match.c:2317 fortran/match.c:2519 #, no-c-format msgid "Redundant ERRMSG tag found at %L " msgstr "" -#: fortran/match.c:2384 +#: fortran/match.c:2385 #, no-c-format msgid "Illegal variable in NULLIFY at %C for a PURE procedure" msgstr "" -#: fortran/match.c:2462 +#: fortran/match.c:2463 #, no-c-format msgid "Illegal allocate-object at %C for a PURE procedure" msgstr "" -#: fortran/match.c:2572 +#: fortran/match.c:2573 #, no-c-format msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE" msgstr "" -#: fortran/match.c:2603 +#: fortran/match.c:2604 #, no-c-format msgid "Extension: RETURN statement in main program at %C" msgstr "" -#: fortran/match.c:2634 +#: fortran/match.c:2635 #, no-c-format msgid "Expected component reference at %C" msgstr "" -#: fortran/match.c:2640 +#: fortran/match.c:2641 #, no-c-format msgid "Junk after CALL at %C" msgstr "" -#: fortran/match.c:2646 +#: fortran/match.c:2651 #, no-c-format -msgid "Expected type-bound procedure reference at %C" +msgid "Expected type-bound procedure or procedure pointer component at %C" msgstr "" -#: fortran/match.c:2864 +#: fortran/match.c:2868 #, no-c-format msgid "Syntax error in common block name at %C" msgstr "" -#: fortran/match.c:2900 +#: fortran/match.c:2904 #, no-c-format msgid "Symbol '%s' at %C is already an external symbol that is not COMMON" msgstr "" @@ -7031,131 +7272,131 @@ 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:2959 +#: fortran/match.c:2963 #, no-c-format msgid "" "Variable '%s' at %L in common block '%s' at %C must be declared with a C " "interoperable kind since common block '%s' is bind(c)" msgstr "" -#: fortran/match.c:2968 +#: fortran/match.c:2972 #, no-c-format msgid "" "Variable '%s' in common block '%s' at %C can not be bind(c) since it is not " "global" msgstr "" -#: fortran/match.c:2975 +#: fortran/match.c:2979 #, no-c-format msgid "Symbol '%s' at %C is already in a COMMON block" msgstr "" -#: fortran/match.c:2983 +#: fortran/match.c:2987 #, no-c-format msgid "Initialized symbol '%s' at %C can only be COMMON in BLOCK DATA" msgstr "" -#: fortran/match.c:3010 +#: fortran/match.c:3014 #, no-c-format msgid "Array specification for symbol '%s' in COMMON at %C must be explicit" msgstr "" -#: fortran/match.c:3020 +#: fortran/match.c:3024 #, no-c-format msgid "Symbol '%s' in COMMON at %C cannot be a POINTER array" msgstr "" -#: fortran/match.c:3052 +#: fortran/match.c:3056 #, no-c-format msgid "" "Symbol '%s', in COMMON block '%s' at %C is being indirectly equivalenced to " "another COMMON block '%s'" msgstr "" -#: fortran/match.c:3160 +#: fortran/match.c:3164 #, no-c-format msgid "Namelist group name '%s' at %C already has a basic type of %s" msgstr "" -#: fortran/match.c:3168 +#: fortran/match.c:3172 #, no-c-format msgid "" "Namelist group name '%s' at %C already is USE associated and cannot be " "respecified." msgstr "" -#: fortran/match.c:3195 +#: fortran/match.c:3199 #, no-c-format msgid "Assumed size array '%s' in namelist '%s' at %C is not allowed" msgstr "" -#: fortran/match.c:3202 +#: fortran/match.c:3206 #, no-c-format msgid "Assumed character length '%s' in namelist '%s' at %C is not allowed" msgstr "" -#: fortran/match.c:3329 +#: fortran/match.c:3333 #, no-c-format msgid "Derived type component %C is not a permitted EQUIVALENCE member" msgstr "" -#: fortran/match.c:3337 +#: fortran/match.c:3341 #, no-c-format msgid "Array reference in EQUIVALENCE at %C cannot be an array section" msgstr "" -#: fortran/match.c:3365 +#: fortran/match.c:3369 #, no-c-format msgid "EQUIVALENCE at %C requires two or more objects" msgstr "" -#: fortran/match.c:3379 +#: fortran/match.c:3383 #, no-c-format msgid "" "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C" msgstr "" -#: fortran/match.c:3505 +#: fortran/match.c:3509 #, no-c-format msgid "Statement function at %L is recursive" msgstr "" -#: fortran/match.c:3593 +#: fortran/match.c:3597 #, no-c-format msgid "Expected initialization expression in CASE at %C" msgstr "" -#: fortran/match.c:3616 +#: fortran/match.c:3620 #, no-c-format msgid "Expected the name of the SELECT CASE construct at %C" msgstr "" -#: fortran/match.c:3628 +#: fortran/match.c:3632 #, no-c-format msgid "Expected case name of '%s' at %C" msgstr "" -#: fortran/match.c:3672 +#: fortran/match.c:3676 #, no-c-format msgid "Unexpected CASE statement at %C" msgstr "" -#: fortran/match.c:3724 +#: fortran/match.c:3728 #, no-c-format msgid "Syntax error in CASE-specification at %C" msgstr "" -#: fortran/match.c:3844 +#: fortran/match.c:3848 #, no-c-format msgid "ELSEWHERE statement at %C not enclosed in WHERE block" msgstr "" -#: fortran/match.c:3882 +#: fortran/match.c:3886 #, no-c-format msgid "Label '%s' at %C doesn't match WHERE label '%s'" msgstr "" -#: fortran/match.c:3982 +#: fortran/match.c:3986 #, no-c-format msgid "Syntax error in FORALL iterator at %C" msgstr "" @@ -7327,150 +7568,150 @@ msgstr "" msgid "Bad type in constant expression" msgstr "" -#: fortran/module.c:3078 +#: fortran/module.c:3079 #, no-c-format msgid "Namelist %s cannot be renamed by USE association to %s" msgstr "" -#: fortran/module.c:4258 +#: fortran/module.c:4261 #, no-c-format msgid "Symbol '%s' referenced at %L not found in module '%s'" msgstr "" -#: fortran/module.c:4265 +#: fortran/module.c:4268 #, no-c-format msgid "User operator '%s' referenced at %L not found in module '%s'" msgstr "" -#: fortran/module.c:4270 +#: fortran/module.c:4273 #, no-c-format msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'" msgstr "" -#: fortran/module.c:4833 +#: fortran/module.c:4836 #, no-c-format msgid "Can't open module file '%s' for writing at %C: %s" msgstr "" -#: fortran/module.c:4871 +#: fortran/module.c:4874 #, no-c-format msgid "Error writing module file '%s' for writing: %s" msgstr "" -#: fortran/module.c:4880 +#: fortran/module.c:4883 #, no-c-format msgid "Can't delete module file '%s': %s" msgstr "" -#: fortran/module.c:4883 +#: fortran/module.c:4886 #, no-c-format msgid "Can't rename module file '%s' to '%s': %s" msgstr "" -#: fortran/module.c:4889 +#: fortran/module.c:4892 #, no-c-format msgid "Can't delete temporary module file '%s': %s" msgstr "" -#: fortran/module.c:4909 fortran/module.c:4991 +#: fortran/module.c:4912 fortran/module.c:4994 #, no-c-format msgid "" "Symbol '%s' referenced at %L does not exist in intrinsic module " "ISO_C_BINDING." msgstr "" -#: fortran/module.c:5026 +#: fortran/module.c:5029 #, no-c-format msgid "" "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING" msgstr "" -#: fortran/module.c:5048 +#: fortran/module.c:5051 #, no-c-format msgid "Symbol '%s' already declared" msgstr "" -#: fortran/module.c:5103 +#: fortran/module.c:5106 #, no-c-format msgid "" "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name " "used previously" msgstr "" -#: fortran/module.c:5116 +#: fortran/module.c:5119 #, no-c-format msgid "" "Symbol '%s' referenced at %L does not exist in intrinsic module " "ISO_FORTRAN_ENV" msgstr "" -#: fortran/module.c:5124 +#: fortran/module.c:5127 #, no-c-format msgid "" "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module " "ISO_FORTRAN_ENV at %L is incompatible with option %s" msgstr "" -#: fortran/module.c:5152 +#: fortran/module.c:5155 #, no-c-format msgid "" "Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module " "ISO_FORTRAN_ENV at %C is incompatible with option %s" msgstr "" -#: fortran/module.c:5168 +#: fortran/module.c:5171 #, no-c-format msgid "" "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV" msgstr "" -#: fortran/module.c:5202 +#: fortran/module.c:5205 #, no-c-format msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C" msgstr "" -#: fortran/module.c:5210 +#: fortran/module.c:5213 #, no-c-format msgid "Fortran 2003: ISO_C_BINDING module at %C" msgstr "" -#: fortran/module.c:5220 +#: fortran/module.c:5223 #, no-c-format msgid "Can't find an intrinsic module named '%s' at %C" msgstr "" -#: fortran/module.c:5225 +#: fortran/module.c:5228 #, no-c-format msgid "Can't open module file '%s' for reading at %C: %s" msgstr "" -#: fortran/module.c:5233 +#: fortran/module.c:5236 #, no-c-format msgid "" "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name " "used previously" msgstr "" -#: fortran/module.c:5248 +#: fortran/module.c:5251 msgid "Unexpected end of module" msgstr "" -#: fortran/module.c:5253 +#: fortran/module.c:5256 #, no-c-format msgid "File '%s' opened at %C is not a GFORTRAN module file" msgstr "" -#: fortran/module.c:5260 +#: fortran/module.c:5263 #, no-c-format msgid "Parse error when checking module version for file '%s' opened at %C" msgstr "" -#: fortran/module.c:5265 +#: fortran/module.c:5268 #, no-c-format msgid "Wrong module version '%s' (expected '" msgstr "" -#: fortran/module.c:5278 +#: fortran/module.c:5281 #, no-c-format msgid "Can't USE the same module we're building!" msgstr "" @@ -7505,7 +7746,7 @@ msgstr "" msgid "Syntax error in !$OMP THREADPRIVATE list at %C" msgstr "" -#: fortran/openmp.c:759 fortran/resolve.c:6567 fortran/resolve.c:6921 +#: fortran/openmp.c:759 fortran/resolve.c:6635 fortran/resolve.c:6989 #, no-c-format msgid "IF clause at %L requires a scalar LOGICAL expression" msgstr "" @@ -7958,7 +8199,7 @@ msgstr "" msgid "Fortran 2008: Derived type definition at %C with empty CONTAINS section" msgstr "" -#: fortran/parse.c:1800 fortran/parse.c:1911 +#: fortran/parse.c:1800 fortran/parse.c:1907 #, no-c-format msgid "PRIVATE statement in TYPE at %C must be inside a MODULE" msgstr "" @@ -7968,7 +8209,7 @@ msgstr "" msgid "PRIVATE statement at %C must precede procedure bindings" msgstr "" -#: fortran/parse.c:1816 fortran/parse.c:1927 +#: fortran/parse.c:1816 fortran/parse.c:1923 #, no-c-format msgid "Duplicate PRIVATE statement at %C" msgstr "" @@ -7983,206 +8224,201 @@ msgstr "" msgid "Already inside a CONTAINS block at %C" msgstr "" -#: fortran/parse.c:1886 -#, no-c-format -msgid "PROCEDURE binding at %C must be inside CONTAINS" -msgstr "" - -#: fortran/parse.c:1891 +#: fortran/parse.c:1887 #, no-c-format msgid "FINAL declaration at %C must be inside CONTAINS" msgstr "" -#: fortran/parse.c:1900 +#: fortran/parse.c:1896 #, no-c-format msgid "Fortran 2003: Derived type definition at %C without components" msgstr "" -#: fortran/parse.c:1919 +#: fortran/parse.c:1915 #, no-c-format msgid "PRIVATE statement at %C must precede structure components" msgstr "" -#: fortran/parse.c:1940 +#: fortran/parse.c:1936 #, no-c-format msgid "SEQUENCE statement at %C must precede structure components" msgstr "" -#: fortran/parse.c:1947 +#: fortran/parse.c:1943 #, no-c-format msgid "SEQUENCE attribute at %C already specified in TYPE statement" msgstr "" -#: fortran/parse.c:1952 +#: fortran/parse.c:1948 #, no-c-format msgid "Duplicate SEQUENCE statement at %C" msgstr "" -#: fortran/parse.c:1963 +#: fortran/parse.c:1959 #, no-c-format msgid "Fortran 2003: CONTAINS block in derived type definition at %C" msgstr "" -#: fortran/parse.c:2045 +#: fortran/parse.c:2047 #, no-c-format msgid "ENUM declaration at %C has no ENUMERATORS" msgstr "" -#: fortran/parse.c:2131 +#: fortran/parse.c:2133 #, no-c-format msgid "Unexpected %s statement in INTERFACE block at %C" msgstr "" -#: fortran/parse.c:2157 +#: fortran/parse.c:2159 #, no-c-format msgid "SUBROUTINE at %C does not belong in a generic function interface" msgstr "" -#: fortran/parse.c:2161 +#: fortran/parse.c:2163 #, no-c-format msgid "FUNCTION at %C does not belong in a generic subroutine interface" msgstr "" -#: fortran/parse.c:2171 +#: fortran/parse.c:2173 #, no-c-format msgid "" "Name '%s' of ABSTRACT INTERFACE at %C cannot be the same as an intrinsic type" msgstr "" -#: fortran/parse.c:2202 +#: fortran/parse.c:2204 #, no-c-format msgid "Unexpected %s statement at %C in INTERFACE body" msgstr "" -#: fortran/parse.c:2220 +#: fortran/parse.c:2222 #, no-c-format msgid "" "INTERFACE procedure '%s' at %L has the same name as the enclosing procedure" msgstr "" -#: fortran/parse.c:2406 +#: fortran/parse.c:2408 #, no-c-format msgid "%s statement must appear in a MODULE" msgstr "" -#: fortran/parse.c:2413 +#: fortran/parse.c:2415 #, no-c-format msgid "%s statement at %C follows another accessibility specification" msgstr "" -#: fortran/parse.c:2463 +#: fortran/parse.c:2465 #, no-c-format msgid "Bad kind expression for function '%s' at %L" msgstr "" -#: fortran/parse.c:2467 +#: fortran/parse.c:2469 #, no-c-format msgid "The type for function '%s' at %L is not accessible" msgstr "" -#: fortran/parse.c:2525 +#: fortran/parse.c:2527 #, no-c-format msgid "ELSEWHERE statement at %C follows previous unmasked ELSEWHERE" msgstr "" -#: fortran/parse.c:2546 +#: fortran/parse.c:2548 #, no-c-format msgid "Unexpected %s statement in WHERE block at %C" msgstr "" -#: fortran/parse.c:2605 +#: fortran/parse.c:2607 #, no-c-format msgid "Unexpected %s statement in FORALL block at %C" msgstr "" -#: fortran/parse.c:2656 +#: fortran/parse.c:2658 #, no-c-format msgid "ELSE IF statement at %C cannot follow ELSE statement at %L" msgstr "" -#: fortran/parse.c:2674 +#: fortran/parse.c:2676 #, no-c-format msgid "Duplicate ELSE statements at %L and %C" msgstr "" -#: fortran/parse.c:2735 +#: fortran/parse.c:2737 #, no-c-format msgid "Expected a CASE or END SELECT statement following SELECT CASE at %C" msgstr "" -#: fortran/parse.c:2793 +#: fortran/parse.c:2795 #, no-c-format msgid "Variable '%s' at %C cannot be redefined inside loop beginning at %L" msgstr "" -#: fortran/parse.c:2826 +#: fortran/parse.c:2828 #, no-c-format msgid "End of nonblock DO statement at %C is within another block" msgstr "" -#: fortran/parse.c:2835 +#: fortran/parse.c:2837 #, no-c-format msgid "End of nonblock DO statement at %C is interwoven with another DO loop" msgstr "" -#: fortran/parse.c:2884 +#: fortran/parse.c:2886 #, no-c-format msgid "Statement label in ENDDO at %C doesn't match DO label" msgstr "" -#: fortran/parse.c:2900 +#: fortran/parse.c:2902 #, no-c-format msgid "Named block DO at %L requires matching ENDDO name" msgstr "" -#: fortran/parse.c:3159 +#: fortran/parse.c:3161 #, no-c-format msgid "Name after !$omp critical and !$omp end critical does not match at %C" msgstr "" -#: fortran/parse.c:3215 +#: fortran/parse.c:3217 #, no-c-format msgid "%s statement at %C cannot terminate a non-block DO loop" msgstr "" -#: fortran/parse.c:3402 +#: fortran/parse.c:3404 #, no-c-format msgid "Contained procedure '%s' at %C is already ambiguous" msgstr "" -#: fortran/parse.c:3452 +#: fortran/parse.c:3454 #, no-c-format msgid "Unexpected %s statement in CONTAINS section at %C" msgstr "" -#: fortran/parse.c:3476 +#: fortran/parse.c:3478 #, no-c-format msgid "" "Fortran 2008: CONTAINS statement without FUNCTION or SUBROUTINE statement at " "%C" msgstr "" -#: fortran/parse.c:3547 +#: fortran/parse.c:3549 #, no-c-format msgid "CONTAINS statement at %C is already in a contained program unit" msgstr "" -#: fortran/parse.c:3596 +#: fortran/parse.c:3598 #, no-c-format msgid "Global name '%s' at %L is already being used as a %s at %L" msgstr "" -#: fortran/parse.c:3617 +#: fortran/parse.c:3619 #, no-c-format msgid "Blank BLOCK DATA at %C conflicts with prior BLOCK DATA at %L" msgstr "" -#: fortran/parse.c:3643 +#: fortran/parse.c:3645 #, no-c-format msgid "Unexpected %s statement in BLOCK DATA at %C" msgstr "" -#: fortran/parse.c:3686 +#: fortran/parse.c:3688 #, no-c-format msgid "Unexpected %s statement in MODULE at %C" msgstr "" @@ -8190,7 +8426,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:3934 +#: fortran/parse.c:3936 #, no-c-format msgid "Two main PROGRAMs at %L and %C" msgstr "" @@ -8368,113 +8604,113 @@ msgstr "" msgid "Syntax error in argument list at %C" msgstr "" -#: fortran/primary.c:1772 +#: fortran/primary.c:1775 #, no-c-format msgid "Expected structure component name at %C" msgstr "" -#: fortran/primary.c:1809 +#: fortran/primary.c:1812 #, no-c-format msgid "Expected argument list at %C" msgstr "" -#: fortran/primary.c:2103 +#: fortran/primary.c:2118 #, no-c-format msgid "" "Fortran 2003: Structure constructor with missing optional arguments at %C" msgstr "" -#: fortran/primary.c:2111 +#: fortran/primary.c:2126 #, no-c-format msgid "" "No initializer for component '%s' given in the structure constructor at %C!" msgstr "" -#: fortran/primary.c:2167 +#: fortran/primary.c:2182 #, no-c-format msgid "Can't construct ABSTRACT type '%s' at %C" msgstr "" -#: fortran/primary.c:2195 +#: fortran/primary.c:2210 #, no-c-format msgid "Fortran 2003: Structure constructor with named arguments at %C" msgstr "" -#: fortran/primary.c:2210 +#: fortran/primary.c:2225 #, no-c-format msgid "Component initializer without name after component named %s at %C!" msgstr "" -#: fortran/primary.c:2213 +#: fortran/primary.c:2228 #, no-c-format msgid "Too many components in structure constructor at %C!" msgstr "" -#: fortran/primary.c:2246 +#: fortran/primary.c:2261 #, no-c-format msgid "Component '%s' is initialized twice in the structure constructor at %C!" msgstr "" -#: fortran/primary.c:2302 +#: fortran/primary.c:2317 #, no-c-format msgid "" "component '%s' at %L has already been set by a parent derived type " "constructor" msgstr "" -#: fortran/primary.c:2325 +#: fortran/primary.c:2340 #, no-c-format msgid "Syntax error in structure constructor at %C" msgstr "" -#: fortran/primary.c:2441 +#: fortran/primary.c:2456 #, no-c-format msgid "" "'%s' 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:2562 +#: fortran/primary.c:2577 #, no-c-format msgid "Unexpected use of subroutine name '%s' at %C" msgstr "" -#: fortran/primary.c:2593 +#: fortran/primary.c:2608 #, no-c-format msgid "Statement function '%s' requires argument list at %C" msgstr "" -#: fortran/primary.c:2596 +#: fortran/primary.c:2611 #, no-c-format msgid "Function '%s' requires an argument list at %C" msgstr "" -#: fortran/primary.c:2643 +#: fortran/primary.c:2658 #, no-c-format msgid "Missing argument to '%s' at %C" msgstr "" -#: fortran/primary.c:2784 +#: fortran/primary.c:2799 #, no-c-format msgid "Missing argument list in function '%s' at %C" msgstr "" -#: fortran/primary.c:2812 +#: fortran/primary.c:2827 #, no-c-format msgid "Symbol at %C is not appropriate for an expression" msgstr "" -#: fortran/primary.c:2880 +#: fortran/primary.c:2895 #, no-c-format msgid "Assigning to PROTECTED variable at %C" msgstr "" -#: fortran/primary.c:2914 +#: fortran/primary.c:2929 #, no-c-format msgid "Named constant at %C in an EQUIVALENCE" msgstr "" -#: fortran/primary.c:2950 +#: fortran/primary.c:2965 #, no-c-format msgid "'%s' at %C is not a variable" msgstr "" @@ -8510,7 +8746,7 @@ msgstr "" msgid "Dummy procedure at %L not allowed in ELEMENTAL procedure" msgstr "" -#: fortran/resolve.c:201 fortran/resolve.c:1325 +#: fortran/resolve.c:201 fortran/resolve.c:1334 #, no-c-format msgid "" "Unable to find a specific INTRINSIC procedure for the reference '%s' at %L" @@ -8686,97 +8922,97 @@ msgid "" "s', is %s but should be %s" msgstr "" -#: fortran/resolve.c:884 +#: fortran/resolve.c:885 #, no-c-format msgid "" "The NULL in the derived type constructor at %L is being applied to component " "'%s', which is neither a POINTER nor ALLOCATABLE" msgstr "" -#: fortran/resolve.c:898 +#: fortran/resolve.c:899 #, no-c-format msgid "" "The element in the derived type constructor at %L, for pointer component '%" "s' should be a POINTER or a TARGET" msgstr "" -#: fortran/resolve.c:1019 +#: fortran/resolve.c:1020 #, no-c-format msgid "" "The upper bound in the last dimension must appear in the reference to the " "assumed size array '%s' at %L" msgstr "" -#: fortran/resolve.c:1081 +#: fortran/resolve.c:1082 #, no-c-format msgid "'%s' at %L is ambiguous" msgstr "" -#: fortran/resolve.c:1085 +#: fortran/resolve.c:1086 #, no-c-format msgid "GENERIC procedure '%s' is not allowed as an actual argument at %L" msgstr "" -#: fortran/resolve.c:1196 +#: fortran/resolve.c:1197 #, no-c-format msgid "" "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. " "Declare it RECURSIVE or use -frecursive" msgstr "" -#: fortran/resolve.c:1229 fortran/resolve.c:6146 fortran/resolve.c:6886 +#: fortran/resolve.c:1231 fortran/resolve.c:6214 fortran/resolve.c:6954 #, no-c-format msgid "Label %d referenced at %L is never defined" msgstr "" -#: fortran/resolve.c:1274 +#: fortran/resolve.c:1283 #, no-c-format msgid "Statement function '%s' at %L is not allowed as an actual argument" msgstr "" -#: fortran/resolve.c:1282 +#: fortran/resolve.c:1291 #, no-c-format msgid "Intrinsic '%s' at %L is not allowed as an actual argument" msgstr "" -#: fortran/resolve.c:1289 +#: fortran/resolve.c:1298 #, no-c-format msgid "Internal procedure '%s' is not allowed as an actual argument at %L" msgstr "" -#: fortran/resolve.c:1295 +#: fortran/resolve.c:1304 #, no-c-format msgid "" "ELEMENTAL non-INTRINSIC procedure '%s' is not allowed as an actual argument " "at %L" msgstr "" -#: fortran/resolve.c:1347 +#: fortran/resolve.c:1356 #, no-c-format msgid "Symbol '%s' at %L is ambiguous" msgstr "" -#: fortran/resolve.c:1398 +#: fortran/resolve.c:1407 #, no-c-format msgid "By-value argument at %L is not of numeric type" msgstr "" -#: fortran/resolve.c:1405 +#: fortran/resolve.c:1414 #, no-c-format msgid "By-value argument at %L cannot be an array or an array section" msgstr "" -#: fortran/resolve.c:1419 +#: fortran/resolve.c:1428 #, no-c-format msgid "By-value argument at %L is not allowed in this context" msgstr "" -#: fortran/resolve.c:1431 +#: fortran/resolve.c:1440 #, no-c-format msgid "Passing internal procedure at %L by location not allowed" msgstr "" -#: fortran/resolve.c:1556 +#: fortran/resolve.c:1565 #, no-c-format msgid "" "'%s' at %L is an array and OPTIONAL; IF IT IS MISSING, it cannot be the " @@ -8784,600 +9020,600 @@ msgid "" "argument with the same rank (12.4.1.5)" msgstr "" -#: fortran/resolve.c:1578 +#: fortran/resolve.c:1587 msgid "elemental procedure" msgstr "" -#: fortran/resolve.c:1595 +#: fortran/resolve.c:1604 #, no-c-format msgid "" "Actual argument at %L for INTENT(%s) dummy '%s' of ELEMENTAL subroutine '%s' " "is a scalar, but another actual argument is an array" msgstr "" -#: fortran/resolve.c:1764 +#: fortran/resolve.c:1773 #, no-c-format msgid "There is no specific function for the generic '%s' at %L" msgstr "" -#: fortran/resolve.c:1773 +#: fortran/resolve.c:1782 #, no-c-format msgid "" "Generic function '%s' at %L is not consistent with a specific intrinsic " "interface" msgstr "" -#: fortran/resolve.c:1811 +#: fortran/resolve.c:1820 #, no-c-format msgid "" "Function '%s' at %L is INTRINSIC but is not compatible with an intrinsic" msgstr "" -#: fortran/resolve.c:1857 +#: fortran/resolve.c:1866 #, no-c-format msgid "Unable to resolve the specific function '%s' at %L" msgstr "" -#: fortran/resolve.c:1913 fortran/resolve.c:10516 +#: fortran/resolve.c:1922 fortran/resolve.c:10672 #, no-c-format msgid "Function '%s' at %L has no IMPLICIT type" msgstr "" -#: fortran/resolve.c:2122 +#: fortran/resolve.c:2131 #, no-c-format msgid "Argument to '%s' at %L is not a variable" msgstr "" -#: fortran/resolve.c:2170 +#: fortran/resolve.c:2179 #, no-c-format msgid "More actual than formal arguments in '%s' call at %L" msgstr "" -#: fortran/resolve.c:2179 +#: fortran/resolve.c:2188 #, no-c-format msgid "" "Parameter '%s' to '%s' at %L must be either a TARGET or an associated pointer" msgstr "" -#: fortran/resolve.c:2202 +#: fortran/resolve.c:2211 #, no-c-format msgid "" "Allocatable variable '%s' used as a parameter to '%s' at %L must not be an " "array of zero size" msgstr "" -#: fortran/resolve.c:2219 +#: fortran/resolve.c:2228 #, no-c-format msgid "" "Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' " "because it is not C interoperable" msgstr "" -#: fortran/resolve.c:2229 +#: fortran/resolve.c:2238 #, no-c-format msgid "" "Deferred-shape array '%s' at %L cannot be an argument to the procedure '%s' " "because it is not C interoperable" msgstr "" -#: fortran/resolve.c:2252 fortran/resolve.c:2289 +#: fortran/resolve.c:2261 fortran/resolve.c:2298 #, no-c-format msgid "CHARACTER argument '%s' to '%s' at %L must have a length of 1" msgstr "" #. Case 1c, section 15.1.2.5, J3/04-007: an associated #. scalar pointer. -#: fortran/resolve.c:2265 +#: fortran/resolve.c:2274 #, no-c-format msgid "Argument '%s' to '%s' at %L must be an associated scalar POINTER" msgstr "" -#: fortran/resolve.c:2281 +#: fortran/resolve.c:2290 #, no-c-format msgid "Parameter '%s' to '%s' at %L must be a scalar" msgstr "" #. TODO: Update this error message to allow for procedure #. pointers once they are implemented. -#: fortran/resolve.c:2303 +#: fortran/resolve.c:2312 #, no-c-format msgid "Parameter '%s' to '%s' at %L must be a procedure" msgstr "" -#: fortran/resolve.c:2311 +#: fortran/resolve.c:2320 #, no-c-format msgid "Parameter '%s' to '%s' at %L must be BIND(C)" msgstr "" -#: fortran/resolve.c:2358 +#: fortran/resolve.c:2367 #, no-c-format msgid "'%s' at %L is not a function" msgstr "" -#: fortran/resolve.c:2364 +#: fortran/resolve.c:2373 #, no-c-format msgid "ABSTRACT INTERFACE '%s' must not be referenced at %L" msgstr "" #. Internal procedures are taken care of in resolve_contained_fntype. -#: fortran/resolve.c:2410 +#: fortran/resolve.c:2419 #, no-c-format msgid "" "Function '%s' is declared CHARACTER(*) and cannot be used at %L since it is " "not a dummy argument" msgstr "" -#: fortran/resolve.c:2463 +#: fortran/resolve.c:2472 #, no-c-format msgid "" "User defined non-ELEMENTAL function '%s' at %L not allowed in WORKSHARE " "construct" msgstr "" -#: fortran/resolve.c:2513 +#: fortran/resolve.c:2522 #, no-c-format msgid "reference to non-PURE function '%s' at %L inside a FORALL %s" msgstr "" -#: fortran/resolve.c:2520 +#: fortran/resolve.c:2529 #, no-c-format msgid "" "Function reference to '%s' at %L is to a non-PURE procedure within a PURE " "procedure" msgstr "" -#: fortran/resolve.c:2536 +#: fortran/resolve.c:2545 #, no-c-format msgid "" "ENTRY '%s' at %L cannot be called recursively, as function '%s' is not " "RECURSIVE" msgstr "" -#: fortran/resolve.c:2540 +#: fortran/resolve.c:2549 #, no-c-format msgid "" "Function '%s' at %L cannot be called recursively, as it is not RECURSIVE" msgstr "" -#: fortran/resolve.c:2588 +#: fortran/resolve.c:2597 #, no-c-format msgid "Subroutine call to '%s' in FORALL block at %L is not PURE" msgstr "" -#: fortran/resolve.c:2591 +#: fortran/resolve.c:2600 #, no-c-format msgid "Subroutine call to '%s' at %L is not PURE" msgstr "" -#: fortran/resolve.c:2654 +#: fortran/resolve.c:2663 #, no-c-format msgid "There is no specific subroutine for the generic '%s' at %L" msgstr "" -#: fortran/resolve.c:2663 +#: fortran/resolve.c:2672 #, no-c-format msgid "" "Generic subroutine '%s' at %L is not consistent with an intrinsic subroutine " "interface" msgstr "" -#: fortran/resolve.c:2771 +#: fortran/resolve.c:2780 #, no-c-format msgid "Missing SHAPE parameter for call to %s at %L" msgstr "" -#: fortran/resolve.c:2779 +#: fortran/resolve.c:2788 #, no-c-format msgid "SHAPE parameter for call to %s at %L must be a rank 1 INTEGER array" msgstr "" -#: fortran/resolve.c:2846 +#: fortran/resolve.c:2855 #, no-c-format msgid "" "Subroutine '%s' at %L is INTRINSIC but is not compatible with an intrinsic" msgstr "" -#: fortran/resolve.c:2890 +#: fortran/resolve.c:2899 #, no-c-format msgid "Unable to resolve the specific subroutine '%s' at %L" msgstr "" -#: fortran/resolve.c:2950 +#: fortran/resolve.c:2959 #, no-c-format msgid "'%s' at %L has a type, which is not consistent with the CALL at %L" msgstr "" -#: fortran/resolve.c:2979 +#: fortran/resolve.c:2988 #, no-c-format msgid "" "ENTRY '%s' at %L cannot be called recursively, as subroutine '%s' is not " "RECURSIVE" msgstr "" -#: fortran/resolve.c:2983 +#: fortran/resolve.c:2992 #, no-c-format msgid "" "SUBROUTINE '%s' at %L cannot be called recursively, as it is not RECURSIVE" msgstr "" -#: fortran/resolve.c:3061 +#: fortran/resolve.c:3070 #, no-c-format msgid "Shapes for operands at %L and %L are not conformable" msgstr "" -#: fortran/resolve.c:3112 +#: fortran/resolve.c:3121 #, c-format msgid "Invalid context for NULL() pointer at %%L" msgstr "" -#: fortran/resolve.c:3128 +#: fortran/resolve.c:3137 #, c-format msgid "Operand of unary numeric operator '%s' at %%L is %s" msgstr "" -#: fortran/resolve.c:3144 +#: fortran/resolve.c:3153 #, c-format msgid "Operands of binary numeric operator '%s' at %%L are %s/%s" msgstr "" -#: fortran/resolve.c:3159 +#: fortran/resolve.c:3168 #, c-format msgid "Operands of string concatenation operator at %%L are %s/%s" msgstr "" -#: fortran/resolve.c:3178 +#: fortran/resolve.c:3187 #, c-format msgid "Operands of logical operator '%s' at %%L are %s/%s" msgstr "" -#: fortran/resolve.c:3192 +#: fortran/resolve.c:3201 #, c-format msgid "Operand of .not. operator at %%L is %s" msgstr "" -#: fortran/resolve.c:3206 +#: fortran/resolve.c:3215 msgid "COMPLEX quantities cannot be compared at %L" msgstr "" -#: fortran/resolve.c:3235 +#: fortran/resolve.c:3244 #, c-format msgid "Logicals at %%L must be compared with %s instead of %s" msgstr "" -#: fortran/resolve.c:3241 +#: fortran/resolve.c:3250 #, c-format msgid "Operands of comparison operator '%s' at %%L are %s/%s" msgstr "" -#: fortran/resolve.c:3249 +#: fortran/resolve.c:3258 #, c-format msgid "Unknown operator '%s' at %%L" msgstr "" -#: fortran/resolve.c:3251 +#: fortran/resolve.c:3260 #, c-format msgid "Operand of user operator '%s' at %%L is %s" msgstr "" -#: fortran/resolve.c:3254 +#: fortran/resolve.c:3263 #, c-format msgid "Operands of user operator '%s' at %%L are %s/%s" msgstr "" -#: fortran/resolve.c:3340 +#: fortran/resolve.c:3349 #, c-format msgid "Inconsistent ranks for operator at %%L and %%L" msgstr "" -#: fortran/resolve.c:3537 +#: fortran/resolve.c:3546 #, no-c-format msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d" msgstr "" -#: fortran/resolve.c:3545 +#: fortran/resolve.c:3554 #, no-c-format msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d" msgstr "" -#: fortran/resolve.c:3564 +#: fortran/resolve.c:3573 #, no-c-format msgid "Illegal stride of zero at %L" msgstr "" -#: fortran/resolve.c:3581 +#: fortran/resolve.c:3590 #, no-c-format msgid "" "Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d" msgstr "" -#: fortran/resolve.c:3589 +#: fortran/resolve.c:3598 #, no-c-format msgid "" "Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d" msgstr "" -#: fortran/resolve.c:3605 +#: fortran/resolve.c:3614 #, no-c-format msgid "" "Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d" msgstr "" -#: fortran/resolve.c:3614 +#: fortran/resolve.c:3623 #, no-c-format msgid "" "Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d" msgstr "" -#: fortran/resolve.c:3653 +#: fortran/resolve.c:3662 #, no-c-format msgid "Rightmost upper bound of assumed size array section not specified at %L" msgstr "" -#: fortran/resolve.c:3663 +#: fortran/resolve.c:3672 #, no-c-format msgid "Rank mismatch in array reference at %L (%d/%d)" msgstr "" -#: fortran/resolve.c:3691 +#: fortran/resolve.c:3700 #, no-c-format msgid "Array index at %L must be scalar" msgstr "" -#: fortran/resolve.c:3697 +#: fortran/resolve.c:3706 #, no-c-format msgid "Array index at %L must be of INTEGER type, found %s" msgstr "" -#: fortran/resolve.c:3703 +#: fortran/resolve.c:3712 #, no-c-format msgid "Extension: REAL array index at %L" msgstr "" -#: fortran/resolve.c:3733 +#: fortran/resolve.c:3742 #, no-c-format msgid "Argument dim at %L must be scalar" msgstr "" -#: fortran/resolve.c:3740 +#: fortran/resolve.c:3749 #, no-c-format msgid "Argument dim at %L must be of INTEGER type" msgstr "" -#: fortran/resolve.c:3861 +#: fortran/resolve.c:3870 #, no-c-format msgid "Array index at %L is an array of rank %d" msgstr "" -#: fortran/resolve.c:3898 +#: fortran/resolve.c:3907 #, no-c-format msgid "Substring start index at %L must be of type INTEGER" msgstr "" -#: fortran/resolve.c:3905 +#: fortran/resolve.c:3914 #, no-c-format msgid "Substring start index at %L must be scalar" msgstr "" -#: fortran/resolve.c:3914 +#: fortran/resolve.c:3923 #, no-c-format msgid "Substring start index at %L is less than one" msgstr "" -#: fortran/resolve.c:3927 +#: fortran/resolve.c:3936 #, no-c-format msgid "Substring end index at %L must be of type INTEGER" msgstr "" -#: fortran/resolve.c:3934 +#: fortran/resolve.c:3943 #, no-c-format msgid "Substring end index at %L must be scalar" msgstr "" -#: fortran/resolve.c:3944 +#: fortran/resolve.c:3953 #, no-c-format msgid "Substring end index at %L exceeds the string length" msgstr "" -#: fortran/resolve.c:4082 +#: fortran/resolve.c:4091 #, no-c-format msgid "" "Component to the right of a part reference with nonzero rank must not have " "the POINTER attribute at %L" msgstr "" -#: fortran/resolve.c:4089 +#: fortran/resolve.c:4098 #, no-c-format msgid "" "Component to the right of a part reference with nonzero rank must not have " "the ALLOCATABLE attribute at %L" msgstr "" -#: fortran/resolve.c:4108 +#: fortran/resolve.c:4117 #, no-c-format msgid "" "Two or more part references with nonzero rank must not be specified at %L" msgstr "" -#: fortran/resolve.c:4291 +#: fortran/resolve.c:4300 #, no-c-format msgid "" "Variable '%s', used in a specification expression, is referenced at %L " "before the ENTRY statement in which it is a parameter" msgstr "" -#: fortran/resolve.c:4296 +#: fortran/resolve.c:4305 #, no-c-format msgid "" "Variable '%s' is used at %L before the ENTRY statement in which it is a " "parameter" msgstr "" -#: fortran/resolve.c:4580 +#: fortran/resolve.c:4589 #, no-c-format msgid "Passed-object at %L must be scalar" msgstr "" -#: fortran/resolve.c:4613 +#: fortran/resolve.c:4622 #, no-c-format msgid "" "Base object for type-bound procedure call at %L is of ABSTRACT type '%s'" msgstr "" #. Nothing matching found! -#: fortran/resolve.c:4714 +#: fortran/resolve.c:4723 #, no-c-format msgid "" "Found no matching specific binding for the call to the GENERIC '%s' at %L" msgstr "" -#: fortran/resolve.c:4734 +#: fortran/resolve.c:4743 #, no-c-format msgid "'%s' at %L should be a SUBROUTINE" msgstr "" -#: fortran/resolve.c:4773 +#: fortran/resolve.c:4782 #, no-c-format msgid "'%s' at %L should be a FUNCTION" msgstr "" -#: fortran/resolve.c:4912 +#: fortran/resolve.c:4980 #, no-c-format msgid "%s at %L must be a scalar" msgstr "" -#: fortran/resolve.c:4922 +#: fortran/resolve.c:4990 #, no-c-format msgid "Deleted feature: %s at %L must be integer" msgstr "" -#: fortran/resolve.c:4926 fortran/resolve.c:4933 +#: fortran/resolve.c:4994 fortran/resolve.c:5001 #, no-c-format msgid "%s at %L must be INTEGER" msgstr "" -#: fortran/resolve.c:4953 +#: fortran/resolve.c:5021 #, no-c-format msgid "Cannot assign to loop variable in PURE procedure at %L" msgstr "" -#: fortran/resolve.c:4977 +#: fortran/resolve.c:5045 #, no-c-format msgid "Step expression in DO loop at %L cannot be zero" msgstr "" -#: fortran/resolve.c:5012 +#: fortran/resolve.c:5080 #, no-c-format msgid "DO loop at %L will be executed zero times" msgstr "" -#: fortran/resolve.c:5073 +#: fortran/resolve.c:5141 #, no-c-format msgid "FORALL index-name at %L must be a scalar INTEGER" msgstr "" -#: fortran/resolve.c:5078 +#: fortran/resolve.c:5146 #, no-c-format msgid "FORALL start expression at %L must be a scalar INTEGER" msgstr "" -#: fortran/resolve.c:5085 +#: fortran/resolve.c:5153 #, no-c-format msgid "FORALL end expression at %L must be a scalar INTEGER" msgstr "" -#: fortran/resolve.c:5093 +#: fortran/resolve.c:5161 #, no-c-format msgid "FORALL stride expression at %L must be a scalar %s" msgstr "" -#: fortran/resolve.c:5098 +#: fortran/resolve.c:5166 #, no-c-format msgid "FORALL stride expression at %L cannot be zero" msgstr "" -#: fortran/resolve.c:5114 +#: fortran/resolve.c:5182 #, no-c-format msgid "FORALL index '%s' may not appear in triplet specification at %L" msgstr "" -#: fortran/resolve.c:5194 fortran/resolve.c:5328 +#: fortran/resolve.c:5262 fortran/resolve.c:5396 #, no-c-format msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER" msgstr "" -#: fortran/resolve.c:5201 +#: fortran/resolve.c:5269 #, no-c-format msgid "Cannot deallocate INTENT(IN) variable '%s' at %L" msgstr "" -#: fortran/resolve.c:5336 +#: fortran/resolve.c:5404 #, no-c-format msgid "Cannot allocate INTENT(IN) variable '%s' at %L" msgstr "" -#: fortran/resolve.c:5360 +#: fortran/resolve.c:5428 #, no-c-format msgid "Array specification required in ALLOCATE statement at %L" msgstr "" -#: fortran/resolve.c:5390 +#: fortran/resolve.c:5458 #, no-c-format msgid "Bad array specification in ALLOCATE statement at %L" msgstr "" -#: fortran/resolve.c:5410 +#: fortran/resolve.c:5478 #, no-c-format msgid "" "'%s' must not appear in the array specification at %L in the same ALLOCATE " "statement where it is itself allocated" msgstr "" -#: fortran/resolve.c:5435 +#: fortran/resolve.c:5503 #, no-c-format msgid "Stat-variable '%s' at %L cannot be INTENT(IN)" msgstr "" -#: fortran/resolve.c:5439 +#: fortran/resolve.c:5507 #, no-c-format msgid "Illegal stat-variable at %L for a PURE procedure" msgstr "" -#: fortran/resolve.c:5445 +#: fortran/resolve.c:5513 #, no-c-format msgid "Stat-variable at %L must be a scalar INTEGER variable" msgstr "" -#: fortran/resolve.c:5450 +#: fortran/resolve.c:5518 #, no-c-format msgid "Stat-variable at %L shall not be %sd within the same %s statement" msgstr "" -#: fortran/resolve.c:5458 +#: fortran/resolve.c:5526 #, no-c-format msgid "ERRMSG at %L is useless without a STAT tag" msgstr "" -#: fortran/resolve.c:5462 +#: fortran/resolve.c:5530 #, no-c-format msgid "Errmsg-variable '%s' at %L cannot be INTENT(IN)" msgstr "" -#: fortran/resolve.c:5466 +#: fortran/resolve.c:5534 #, no-c-format msgid "Illegal errmsg-variable at %L for a PURE procedure" msgstr "" -#: fortran/resolve.c:5473 +#: fortran/resolve.c:5541 #, no-c-format msgid "Errmsg-variable at %L must be a scalar CHARACTER variable" msgstr "" -#: fortran/resolve.c:5478 +#: fortran/resolve.c:5546 #, no-c-format msgid "Errmsg-variable at %L shall not be %sd within the same %s statement" msgstr "" -#: fortran/resolve.c:5496 +#: fortran/resolve.c:5564 #, no-c-format msgid "Allocate-object at %L also appears at %L" msgstr "" @@ -9386,99 +9622,99 @@ 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:5663 +#: fortran/resolve.c:5731 #, no-c-format msgid "CASE label at %L overlaps with CASE label at %L" msgstr "" -#: fortran/resolve.c:5714 +#: fortran/resolve.c:5782 #, no-c-format msgid "Expression in CASE statement at %L must be of type %s" msgstr "" -#: fortran/resolve.c:5725 +#: fortran/resolve.c:5793 #, no-c-format msgid "Expression in CASE statement at %L must be of kind %d" msgstr "" -#: fortran/resolve.c:5737 +#: fortran/resolve.c:5805 #, no-c-format msgid "Expression in CASE statement at %L must be scalar" msgstr "" -#: fortran/resolve.c:5783 +#: fortran/resolve.c:5851 #, no-c-format msgid "" "Selection expression in computed GOTO statement at %L must be a scalar " "integer expression" msgstr "" -#: fortran/resolve.c:5801 +#: fortran/resolve.c:5869 #, no-c-format msgid "Argument of SELECT statement at %L cannot be %s" msgstr "" -#: fortran/resolve.c:5810 +#: fortran/resolve.c:5878 #, no-c-format msgid "Argument of SELECT statement at %L must be a scalar expression" msgstr "" -#: fortran/resolve.c:5875 +#: fortran/resolve.c:5943 #, no-c-format msgid "" "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L" msgstr "" -#: fortran/resolve.c:5901 +#: fortran/resolve.c:5969 #, no-c-format msgid "Logical range in CASE statement at %L is not allowed" msgstr "" -#: fortran/resolve.c:5913 +#: fortran/resolve.c:5981 #, no-c-format msgid "constant logical value in CASE statement is repeated at %L" msgstr "" -#: fortran/resolve.c:5927 +#: fortran/resolve.c:5995 #, no-c-format msgid "Range specification at %L can never be matched" msgstr "" -#: fortran/resolve.c:6030 +#: fortran/resolve.c:6098 #, no-c-format msgid "Logical SELECT CASE block at %L has more that two cases" msgstr "" -#: fortran/resolve.c:6068 +#: fortran/resolve.c:6136 #, no-c-format msgid "Data transfer element at %L cannot have POINTER components" msgstr "" -#: fortran/resolve.c:6075 +#: fortran/resolve.c:6143 #, no-c-format msgid "Data transfer element at %L cannot have ALLOCATABLE components" msgstr "" -#: fortran/resolve.c:6082 +#: fortran/resolve.c:6150 #, no-c-format msgid "Data transfer element at %L cannot have PRIVATE components" msgstr "" -#: fortran/resolve.c:6091 +#: fortran/resolve.c:6159 #, no-c-format msgid "" "Data transfer element at %L cannot be a full reference to an assumed-size " "array" msgstr "" -#: fortran/resolve.c:6153 +#: fortran/resolve.c:6221 #, no-c-format msgid "" "Statement at %L is not a valid branch target statement for the branch " "statement at %L" msgstr "" -#: fortran/resolve.c:6162 +#: fortran/resolve.c:6230 #, no-c-format msgid "Branch at %L may result in an infinite loop" msgstr "" @@ -9486,113 +9722,113 @@ 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:6190 +#: fortran/resolve.c:6258 #, no-c-format msgid "Label at %L is not in the same block as the GOTO statement at %L" msgstr "" -#: fortran/resolve.c:6265 +#: fortran/resolve.c:6333 #, no-c-format msgid "WHERE mask at %L has inconsistent shape" msgstr "" -#: fortran/resolve.c:6281 +#: fortran/resolve.c:6349 #, no-c-format msgid "WHERE assignment target at %L has inconsistent shape" msgstr "" -#: fortran/resolve.c:6289 fortran/resolve.c:6376 +#: fortran/resolve.c:6357 fortran/resolve.c:6444 #, no-c-format msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L" msgstr "" -#: fortran/resolve.c:6299 fortran/resolve.c:6386 +#: fortran/resolve.c:6367 fortran/resolve.c:6454 #, no-c-format msgid "Unsupported statement inside WHERE at %L" msgstr "" -#: fortran/resolve.c:6330 +#: fortran/resolve.c:6398 #, no-c-format msgid "Assignment to a FORALL index variable at %L" msgstr "" -#: fortran/resolve.c:6339 +#: fortran/resolve.c:6407 #, no-c-format msgid "" "The FORALL with index '%s' 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:6508 +#: fortran/resolve.c:6576 #, no-c-format msgid "An outer FORALL construct already has an index with this name %L" msgstr "" -#: fortran/resolve.c:6575 +#: fortran/resolve.c:6643 #, no-c-format msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array" msgstr "" -#: fortran/resolve.c:6637 +#: fortran/resolve.c:6705 #, no-c-format msgid "Subroutine '%s' called instead of assignment at %L must be PURE" msgstr "" -#: fortran/resolve.c:6710 +#: fortran/resolve.c:6778 #, no-c-format msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L" msgstr "" -#: fortran/resolve.c:6735 +#: fortran/resolve.c:6803 #, no-c-format msgid "Cannot assign to variable '%s' in PURE procedure at %L" msgstr "" -#: fortran/resolve.c:6747 +#: fortran/resolve.c:6815 #, no-c-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:6854 +#: fortran/resolve.c:6922 #, no-c-format msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable" msgstr "" -#: fortran/resolve.c:6857 +#: fortran/resolve.c:6925 #, no-c-format msgid "Variable '%s' has not been assigned a target label at %L" msgstr "" -#: fortran/resolve.c:6868 +#: fortran/resolve.c:6936 #, no-c-format msgid "" "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier" msgstr "" -#: fortran/resolve.c:6894 +#: fortran/resolve.c:6962 #, no-c-format msgid "ASSIGN statement at %L requires a scalar default INTEGER variable" msgstr "" -#: fortran/resolve.c:6909 +#: fortran/resolve.c:6977 #, no-c-format msgid "Arithmetic IF statement at %L requires a numeric expression" msgstr "" -#: fortran/resolve.c:6955 +#: fortran/resolve.c:7027 #, no-c-format msgid "" "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression" msgstr "" -#: fortran/resolve.c:7037 +#: fortran/resolve.c:7109 #, no-c-format msgid "FORALL mask clause at %L requires a LOGICAL expression" msgstr "" -#: fortran/resolve.c:7109 fortran/resolve.c:7165 +#: fortran/resolve.c:7181 fortran/resolve.c:7237 #, no-c-format msgid "" "Binding label '%s' for common block '%s' at %L collides with the global " @@ -9600,14 +9836,14 @@ msgid "" msgstr "" #. Common block names match but binding labels do not. -#: fortran/resolve.c:7130 +#: fortran/resolve.c:7202 #, no-c-format msgid "" "Binding label '%s' for common block '%s' at %L does not match the binding " "label '%s' for common block '%s' at %L" msgstr "" -#: fortran/resolve.c:7177 +#: fortran/resolve.c:7249 #, no-c-format msgid "" "Binding label '%s' for common block '%s' at %L collides with global entity '%" @@ -9615,57 +9851,57 @@ msgid "" msgstr "" #. Make sure global procedures don't collide with anything. -#: fortran/resolve.c:7229 +#: fortran/resolve.c:7301 #, no-c-format msgid "Binding label '%s' at %L collides with the global entity '%s' at %L" msgstr "" #. Make sure procedures in interface bodies don't collide. -#: fortran/resolve.c:7242 +#: fortran/resolve.c:7314 #, no-c-format msgid "" "Binding label '%s' in interface body at %L collides with the global entity '%" "s' at %L" msgstr "" -#: fortran/resolve.c:7255 +#: fortran/resolve.c:7327 #, no-c-format msgid "Binding label '%s' at %L collides with global entity '%s' at %L" msgstr "" -#: fortran/resolve.c:7332 +#: fortran/resolve.c:7404 #, no-c-format msgid "CHARACTER variable has zero length at %L" msgstr "" -#: fortran/resolve.c:7625 +#: fortran/resolve.c:7697 #, no-c-format msgid "Allocatable array '%s' at %L must have a deferred shape" msgstr "" -#: fortran/resolve.c:7628 +#: fortran/resolve.c:7700 #, no-c-format msgid "Scalar object '%s' at %L may not be ALLOCATABLE" msgstr "" -#: fortran/resolve.c:7635 +#: fortran/resolve.c:7707 #, no-c-format msgid "Array pointer '%s' at %L must have a deferred shape" msgstr "" -#: fortran/resolve.c:7646 +#: fortran/resolve.c:7718 #, no-c-format msgid "Array '%s' at %L cannot have a deferred shape" msgstr "" -#: fortran/resolve.c:7674 +#: fortran/resolve.c:7746 #, no-c-format msgid "" "The type '%s' 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:7697 +#: fortran/resolve.c:7769 #, no-c-format msgid "" "Object '%s' at %L must have the SAVE attribute for default initialization of " @@ -9674,196 +9910,196 @@ msgstr "" #. The shape of a main program or module array needs to be #. constant. -#: fortran/resolve.c:7744 +#: fortran/resolve.c:7816 #, no-c-format msgid "The module or main program array '%s' at %L must have constant shape" msgstr "" -#: fortran/resolve.c:7757 +#: fortran/resolve.c:7829 #, no-c-format msgid "" "Entity with assumed character length at %L must be a dummy argument or a " "PARAMETER" msgstr "" -#: fortran/resolve.c:7776 +#: fortran/resolve.c:7848 #, no-c-format msgid "'%s' at %L must have constant character length in this context" msgstr "" -#: fortran/resolve.c:7812 +#: fortran/resolve.c:7884 #, no-c-format msgid "Allocatable '%s' at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:7815 +#: fortran/resolve.c:7887 #, no-c-format msgid "External '%s' at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:7819 +#: fortran/resolve.c:7891 #, no-c-format msgid "Dummy '%s' at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:7822 +#: fortran/resolve.c:7894 #, no-c-format msgid "Intrinsic '%s' at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:7825 +#: fortran/resolve.c:7897 #, no-c-format msgid "Function result '%s' at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:7828 +#: fortran/resolve.c:7900 #, no-c-format msgid "Automatic array '%s' at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:7851 +#: fortran/resolve.c:7923 #, no-c-format msgid "Although not referenced, '%s' at %L has ambiguous interfaces" msgstr "" -#: fortran/resolve.c:7870 +#: fortran/resolve.c:7942 #, no-c-format msgid "" "Character-valued statement function '%s' at %L must have constant length" msgstr "" -#: fortran/resolve.c:7878 +#: fortran/resolve.c:7950 #, no-c-format msgid "" "Automatic character length function '%s' at %L must have an explicit " "interface" msgstr "" -#: fortran/resolve.c:7903 +#: fortran/resolve.c:7975 #, no-c-format msgid "" "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%" "s', which is PUBLIC at %L" msgstr "" -#: fortran/resolve.c:7926 fortran/resolve.c:7951 +#: fortran/resolve.c:7998 fortran/resolve.c:8023 #, no-c-format msgid "" "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy " "arguments of '%s' which is PRIVATE" msgstr "" -#: fortran/resolve.c:7969 +#: fortran/resolve.c:8041 #, no-c-format msgid "Function '%s' at %L cannot have an initializer" msgstr "" -#: fortran/resolve.c:7978 +#: fortran/resolve.c:8050 #, no-c-format msgid "External object '%s' at %L may not have an initializer" msgstr "" -#: fortran/resolve.c:7986 +#: fortran/resolve.c:8058 #, no-c-format msgid "ELEMENTAL function '%s' at %L must have a scalar result" msgstr "" -#: fortran/resolve.c:8007 +#: fortran/resolve.c:8079 #, no-c-format msgid "CHARACTER(*) function '%s' at %L cannot be array-valued" msgstr "" -#: fortran/resolve.c:8011 +#: fortran/resolve.c:8083 #, no-c-format msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued" msgstr "" -#: fortran/resolve.c:8015 +#: fortran/resolve.c:8087 #, no-c-format msgid "CHARACTER(*) function '%s' at %L cannot be pure" msgstr "" -#: fortran/resolve.c:8019 +#: fortran/resolve.c:8091 #, no-c-format msgid "CHARACTER(*) function '%s' at %L cannot be recursive" msgstr "" -#: fortran/resolve.c:8028 +#: fortran/resolve.c:8100 #, no-c-format msgid "CHARACTER(*) function '%s' at %L is obsolescent in fortran 95" msgstr "" -#: fortran/resolve.c:8083 +#: fortran/resolve.c:8155 #, no-c-format msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L" msgstr "" -#: fortran/resolve.c:8089 +#: fortran/resolve.c:8161 #, no-c-format msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L" msgstr "" -#: fortran/resolve.c:8095 +#: fortran/resolve.c:8167 #, no-c-format msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L" msgstr "" -#: fortran/resolve.c:8103 +#: fortran/resolve.c:8175 #, no-c-format msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L" msgstr "" -#: fortran/resolve.c:8109 +#: fortran/resolve.c:8181 #, no-c-format msgid "Procedure pointer result '%s' at %L is missing the pointer attribute" msgstr "" -#: fortran/resolve.c:8155 +#: fortran/resolve.c:8227 #, no-c-format msgid "FINAL procedure '%s' at %L is not a SUBROUTINE" msgstr "" -#: fortran/resolve.c:8163 +#: fortran/resolve.c:8235 #, no-c-format msgid "FINAL procedure at %L must have exactly one argument" msgstr "" -#: fortran/resolve.c:8172 +#: fortran/resolve.c:8244 #, no-c-format msgid "Argument of FINAL procedure at %L must be of type '%s'" msgstr "" -#: fortran/resolve.c:8180 +#: fortran/resolve.c:8252 #, no-c-format msgid "Argument of FINAL procedure at %L must not be a POINTER" msgstr "" -#: fortran/resolve.c:8186 +#: fortran/resolve.c:8258 #, no-c-format msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE" msgstr "" -#: fortran/resolve.c:8192 +#: fortran/resolve.c:8264 #, no-c-format msgid "Argument of FINAL procedure at %L must not be OPTIONAL" msgstr "" -#: fortran/resolve.c:8200 +#: fortran/resolve.c:8272 #, no-c-format msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)" msgstr "" -#: fortran/resolve.c:8208 +#: fortran/resolve.c:8280 #, no-c-format msgid "Non-scalar FINAL procedure at %L should have assumed shape argument" msgstr "" -#: fortran/resolve.c:8227 +#: fortran/resolve.c:8299 #, no-c-format msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'" msgstr "" -#: fortran/resolve.c:8260 +#: fortran/resolve.c:8332 #, no-c-format msgid "" "Only array FINAL procedures declared for derived type '%s' defined at %L, " @@ -9871,314 +10107,327 @@ msgid "" msgstr "" #. TODO: Remove this error when finalization is finished. -#: fortran/resolve.c:8265 +#: fortran/resolve.c:8337 #, no-c-format msgid "Finalization at %L is not yet implemented" msgstr "" -#: fortran/resolve.c:8291 +#: fortran/resolve.c:8363 #, no-c-format msgid "Can't overwrite GENERIC '%s' at %L" msgstr "" -#: fortran/resolve.c:8303 +#: fortran/resolve.c:8375 #, no-c-format msgid "'%s' at %L overrides a procedure binding declared NON_OVERRIDABLE" msgstr "" -#: fortran/resolve.c:8311 +#: fortran/resolve.c:8383 #, no-c-format msgid "'%s' at %L must not be DEFERRED as it overrides a non-DEFERRED binding" msgstr "" -#: fortran/resolve.c:8319 +#: fortran/resolve.c:8391 #, no-c-format msgid "'%s' at %L overrides a PURE procedure and must also be PURE" msgstr "" -#: fortran/resolve.c:8328 +#: fortran/resolve.c:8400 #, no-c-format msgid "'%s' at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL" msgstr "" -#: fortran/resolve.c:8334 +#: fortran/resolve.c:8406 #, no-c-format msgid "" "'%s' at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, " "either" msgstr "" -#: fortran/resolve.c:8343 +#: fortran/resolve.c:8415 #, no-c-format msgid "'%s' at %L overrides a SUBROUTINE and must also be a SUBROUTINE" msgstr "" -#: fortran/resolve.c:8354 +#: fortran/resolve.c:8426 #, no-c-format msgid "'%s' at %L overrides a FUNCTION and must also be a FUNCTION" msgstr "" -#: fortran/resolve.c:8365 +#: fortran/resolve.c:8437 #, no-c-format msgid "" "'%s' at %L and the overridden FUNCTION should have matching result types" msgstr "" -#: fortran/resolve.c:8376 +#: fortran/resolve.c:8448 #, no-c-format msgid "'%s' at %L overrides a PUBLIC procedure and must not be PRIVATE" msgstr "" -#: fortran/resolve.c:8405 +#: fortran/resolve.c:8477 #, no-c-format msgid "" "Dummy argument '%s' of '%s' at %L should be named '%s' as to match the " "corresponding argument of the overridden procedure" msgstr "" -#: fortran/resolve.c:8418 +#: fortran/resolve.c:8490 #, no-c-format msgid "" "Types mismatch for dummy argument '%s' of '%s' %L in in respect to the " "overridden procedure" msgstr "" -#: fortran/resolve.c:8428 +#: fortran/resolve.c:8500 #, no-c-format msgid "" "'%s' at %L must have the same number of formal arguments as the overridden " "procedure" msgstr "" -#: fortran/resolve.c:8437 +#: fortran/resolve.c:8509 #, no-c-format msgid "'%s' at %L overrides a NOPASS binding and must also be NOPASS" msgstr "" -#: fortran/resolve.c:8448 +#: fortran/resolve.c:8520 #, no-c-format msgid "'%s' at %L overrides a binding with PASS and must also be PASS" msgstr "" -#: fortran/resolve.c:8455 +#: fortran/resolve.c:8527 #, no-c-format msgid "" "Passed-object dummy argument of '%s' at %L must be at the same position as " "the passed-object dummy argument of the overridden procedure" msgstr "" -#: fortran/resolve.c:8486 +#: fortran/resolve.c:8558 #, no-c-format msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L" msgstr "" -#: fortran/resolve.c:8495 +#: fortran/resolve.c:8567 #, no-c-format msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous" msgstr "" -#: fortran/resolve.c:8564 +#: fortran/resolve.c:8636 #, no-c-format msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L" msgstr "" -#: fortran/resolve.c:8576 +#: fortran/resolve.c:8648 #, no-c-format msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too" msgstr "" -#: fortran/resolve.c:8606 +#: fortran/resolve.c:8678 #, no-c-format msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name" msgstr "" -#: fortran/resolve.c:8664 +#: fortran/resolve.c:8742 #, no-c-format msgid "" "'%s' must be a module procedure or an external procedure with an explicit " "interface at %L" msgstr "" -#: fortran/resolve.c:8701 +#: fortran/resolve.c:8779 #, no-c-format msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'" msgstr "" -#: fortran/resolve.c:8715 +#: fortran/resolve.c:8793 #, no-c-format msgid "Procedure '%s' with PASS at %L must have at least one argument" msgstr "" -#: fortran/resolve.c:8727 +#: fortran/resolve.c:8805 #, no-c-format msgid "" "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'" msgstr "" -#: fortran/resolve.c:8733 +#: fortran/resolve.c:8811 #, no-c-format msgid "" "Polymorphic entities are not yet implemented, non-polymorphic passed-object " "dummy argument of '%s' at %L accepted" msgstr "" -#: fortran/resolve.c:8758 +#: fortran/resolve.c:8836 #, no-c-format msgid "Procedure '%s' at %L has the same name as a component of '%s'" msgstr "" -#: fortran/resolve.c:8767 +#: fortran/resolve.c:8845 #, no-c-format msgid "" "Procedure '%s' at %L has the same name as an inherited component of '%s'" msgstr "" -#: fortran/resolve.c:8838 +#: fortran/resolve.c:8916 #, no-c-format msgid "" "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED " "and not overridden" msgstr "" -#: fortran/resolve.c:8896 +#: fortran/resolve.c:8974 #, no-c-format msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT" msgstr "" -#: fortran/resolve.c:8913 +#: fortran/resolve.c:8984 +#, no-c-format +msgid "" +"Interface '%s', used by procedure pointer component '%s' at %L, is declared " +"in a later PROCEDURE statement" +msgstr "" + +#: fortran/resolve.c:9041 +#, no-c-format +msgid "" +"Interface '%s' of procedure pointer component '%s' at %L must be explicit" +msgstr "" + +#: fortran/resolve.c:9063 #, no-c-format msgid "" "Component '%s' of '%s' at %L has the same name as an inherited type-bound " "procedure" msgstr "" -#: fortran/resolve.c:8925 +#: fortran/resolve.c:9075 #, no-c-format msgid "" "Character length of component '%s' needs to be a constant specification " "expression at %L" msgstr "" -#: fortran/resolve.c:8941 +#: fortran/resolve.c:9091 #, no-c-format msgid "" "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component " "of '%s', which is PUBLIC at %L" msgstr "" -#: fortran/resolve.c:8952 +#: fortran/resolve.c:9102 #, no-c-format msgid "" "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE " "attribute" msgstr "" -#: fortran/resolve.c:8963 +#: fortran/resolve.c:9113 #, no-c-format msgid "" "The pointer component '%s' of '%s' at %L is a type that has not been declared" msgstr "" -#: fortran/resolve.c:8991 +#: fortran/resolve.c:9141 #, no-c-format msgid "Component '%s' of '%s' at %L must have constant array bounds" msgstr "" -#: fortran/resolve.c:9036 +#: fortran/resolve.c:9186 #, no-c-format msgid "" "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC " "namelist '%s' at %L" msgstr "" -#: fortran/resolve.c:9046 +#: fortran/resolve.c:9196 #, no-c-format msgid "" "NAMELIST object '%s' has use-associated PRIVATE components and cannot be " "member of namelist '%s' at %L" msgstr "" -#: fortran/resolve.c:9059 +#: fortran/resolve.c:9209 #, no-c-format msgid "" "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC " "namelist '%s' at %L" msgstr "" -#: fortran/resolve.c:9071 +#: fortran/resolve.c:9221 #, no-c-format msgid "" "NAMELIST array object '%s' must not have assumed shape in namelist '%s' at %L" msgstr "" -#: fortran/resolve.c:9080 +#: fortran/resolve.c:9230 #, no-c-format msgid "" "NAMELIST array object '%s' must have constant shape in namelist '%s' at %L" msgstr "" -#: fortran/resolve.c:9092 +#: fortran/resolve.c:9242 #, no-c-format msgid "" "NAMELIST object '%s' in namelist '%s' at %L cannot have ALLOCATABLE " "components" msgstr "" -#: fortran/resolve.c:9100 +#: fortran/resolve.c:9250 #, no-c-format msgid "" "NAMELIST object '%s' in namelist '%s' at %L cannot have POINTER components" msgstr "" -#: fortran/resolve.c:9126 +#: fortran/resolve.c:9276 #, no-c-format msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L" msgstr "" -#: fortran/resolve.c:9145 +#: fortran/resolve.c:9295 #, no-c-format msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape" msgstr "" -#: fortran/resolve.c:9156 +#: fortran/resolve.c:9307 #, no-c-format msgid "" "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type" msgstr "" -#: fortran/resolve.c:9167 +#: fortran/resolve.c:9318 #, no-c-format msgid "Incompatible derived type in PARAMETER at %L" msgstr "" -#: fortran/resolve.c:9229 +#: fortran/resolve.c:9380 #, no-c-format msgid "" "Interface '%s', used by procedure '%s' at %L, is declared in a later " "PROCEDURE statement" msgstr "" -#: fortran/resolve.c:9282 +#: fortran/resolve.c:9437 #, no-c-format msgid "Interface '%s' of procedure '%s' at %L must be explicit" msgstr "" -#: fortran/resolve.c:9315 +#: fortran/resolve.c:9471 #, no-c-format msgid "Type specified for intrinsic function '%s' at %L is ignored" msgstr "" -#: fortran/resolve.c:9322 +#: fortran/resolve.c:9478 #, no-c-format msgid "Intrinsic subroutine '%s' at %L shall not have a type specifier" msgstr "" -#: fortran/resolve.c:9329 +#: fortran/resolve.c:9485 #, no-c-format msgid "'%s' declared INTRINSIC at %L does not exist" msgstr "" -#: fortran/resolve.c:9338 +#: fortran/resolve.c:9494 #, no-c-format msgid "" "The intrinsic '%s' declared INTRINSIC at %L is not available in the current " @@ -10186,234 +10435,234 @@ msgid "" "intrinsics in order to use it." msgstr "" -#: fortran/resolve.c:9385 +#: fortran/resolve.c:9541 #, no-c-format msgid "Assumed size array at %L must be a dummy argument" msgstr "" -#: fortran/resolve.c:9388 +#: fortran/resolve.c:9544 #, no-c-format msgid "Assumed shape array at %L must be a dummy argument" msgstr "" -#: fortran/resolve.c:9400 +#: fortran/resolve.c:9556 #, no-c-format msgid "Symbol at %L is not a DUMMY variable" msgstr "" -#: fortran/resolve.c:9406 +#: fortran/resolve.c:9562 #, no-c-format msgid "" "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument" msgstr "" -#: fortran/resolve.c:9416 +#: fortran/resolve.c:9572 #, no-c-format msgid "" "Character dummy variable '%s' at %L with VALUE attribute must have constant " "length" msgstr "" -#: fortran/resolve.c:9425 +#: fortran/resolve.c:9581 #, no-c-format msgid "" "C interoperable character dummy variable '%s' at %L with VALUE attribute " "must have length one" msgstr "" -#: fortran/resolve.c:9451 +#: fortran/resolve.c:9607 #, no-c-format msgid "" "Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block " "nor declared at the module level scope" msgstr "" -#: fortran/resolve.c:9504 +#: fortran/resolve.c:9660 #, no-c-format msgid "The derived type '%s' at %L is of type '%s', which has not been defined" msgstr "" -#: fortran/resolve.c:9545 +#: fortran/resolve.c:9701 #, no-c-format msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'" msgstr "" -#: fortran/resolve.c:9564 +#: fortran/resolve.c:9720 #, no-c-format msgid "" "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have " "a default initializer" msgstr "" -#: fortran/resolve.c:9623 +#: fortran/resolve.c:9779 #, no-c-format msgid "Threadprivate at %L isn't SAVEd" msgstr "" -#: fortran/resolve.c:9711 +#: fortran/resolve.c:9867 #, no-c-format msgid "BLOCK DATA element '%s' at %L must be in COMMON" msgstr "" -#: fortran/resolve.c:9717 +#: fortran/resolve.c:9873 #, no-c-format msgid "DATA array '%s' at %L must be specified in a previous declaration" msgstr "" -#: fortran/resolve.c:9733 +#: fortran/resolve.c:9889 #, no-c-format msgid "DATA element '%s' at %L is a pointer and so must be a full array" msgstr "" -#: fortran/resolve.c:9779 +#: fortran/resolve.c:9935 #, no-c-format msgid "Nonconstant array section at %L in DATA statement" msgstr "" -#: fortran/resolve.c:9792 +#: fortran/resolve.c:9948 #, no-c-format msgid "DATA statement at %L has more variables than values" msgstr "" -#: fortran/resolve.c:9886 +#: fortran/resolve.c:10042 #, no-c-format msgid "iterator start at %L does not simplify" msgstr "" -#: fortran/resolve.c:9893 +#: fortran/resolve.c:10049 #, no-c-format msgid "iterator end at %L does not simplify" msgstr "" -#: fortran/resolve.c:9900 +#: fortran/resolve.c:10056 #, no-c-format msgid "iterator step at %L does not simplify" msgstr "" -#: fortran/resolve.c:10026 +#: fortran/resolve.c:10182 #, no-c-format msgid "DATA statement at %L has more values than variables" msgstr "" -#: fortran/resolve.c:10117 +#: fortran/resolve.c:10273 #, no-c-format msgid "Label %d at %L defined but not used" msgstr "" -#: fortran/resolve.c:10122 +#: fortran/resolve.c:10278 #, no-c-format msgid "Label %d at %L defined but cannot be used" msgstr "" -#: fortran/resolve.c:10207 +#: fortran/resolve.c:10363 #, no-c-format msgid "" "Derived type variable '%s' at %L must have SEQUENCE attribute to be an " "EQUIVALENCE object" msgstr "" -#: fortran/resolve.c:10216 +#: fortran/resolve.c:10372 #, no-c-format msgid "" "Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an " "EQUIVALENCE object" msgstr "" -#: fortran/resolve.c:10224 +#: fortran/resolve.c:10380 #, no-c-format msgid "" "Derived type variable '%s' at %L with default initialization cannot be in " "EQUIVALENCE with a variable in COMMON" msgstr "" -#: fortran/resolve.c:10241 +#: fortran/resolve.c:10397 #, no-c-format msgid "" "Derived type variable '%s' at %L with pointer component(s) cannot be an " "EQUIVALENCE object" msgstr "" -#: fortran/resolve.c:10346 +#: fortran/resolve.c:10502 #, no-c-format msgid "Syntax error in EQUIVALENCE statement at %L" msgstr "" -#: fortran/resolve.c:10361 +#: fortran/resolve.c:10517 #, no-c-format msgid "" "Either all or none of the objects in the EQUIVALENCE set at %L shall have " "the PROTECTED attribute" msgstr "" -#: fortran/resolve.c:10373 +#: fortran/resolve.c:10529 #, no-c-format msgid "" "Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure " "procedure '%s'" msgstr "" -#: fortran/resolve.c:10382 +#: fortran/resolve.c:10538 #, no-c-format msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object" msgstr "" -#: fortran/resolve.c:10461 +#: fortran/resolve.c:10617 #, no-c-format msgid "" "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object" msgstr "" -#: fortran/resolve.c:10472 +#: fortran/resolve.c:10628 #, no-c-format msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object" msgstr "" -#: fortran/resolve.c:10483 +#: fortran/resolve.c:10639 #, no-c-format msgid "Substring at %L has length zero" msgstr "" -#: fortran/resolve.c:10527 +#: fortran/resolve.c:10683 #, no-c-format msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'" msgstr "" -#: fortran/resolve.c:10540 +#: fortran/resolve.c:10696 #, no-c-format msgid "ENTRY '%s' at %L has no IMPLICIT type" msgstr "" -#: fortran/resolve.c:10566 +#: fortran/resolve.c:10722 #, no-c-format msgid "User operator procedure '%s' at %L must be a FUNCTION" msgstr "" -#: fortran/resolve.c:10573 +#: fortran/resolve.c:10729 #, no-c-format msgid "User operator procedure '%s' at %L cannot be assumed character length" msgstr "" -#: fortran/resolve.c:10579 +#: fortran/resolve.c:10735 #, no-c-format msgid "User operator procedure '%s' at %L must have at least one argument" msgstr "" -#: fortran/resolve.c:10589 +#: fortran/resolve.c:10745 #, no-c-format msgid "First argument of operator interface at %L cannot be optional" msgstr "" -#: fortran/resolve.c:10601 +#: fortran/resolve.c:10757 #, no-c-format msgid "Second argument of operator interface at %L cannot be optional" msgstr "" -#: fortran/resolve.c:10605 +#: fortran/resolve.c:10761 #, no-c-format msgid "Operator interface at %L must have, at most, two arguments" msgstr "" -#: fortran/resolve.c:10659 +#: fortran/resolve.c:10815 #, no-c-format msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE" msgstr "" @@ -10772,33 +11021,33 @@ msgid "" "Character '%s' in string at %L cannot be converted into character kind %d" msgstr "" -#: fortran/symbol.c:121 +#: fortran/symbol.c:133 #, no-c-format msgid "Duplicate IMPLICIT NONE statement at %C" msgstr "" -#: fortran/symbol.c:161 +#: fortran/symbol.c:173 #, no-c-format msgid "Letter '%c' already set in IMPLICIT statement at %C" msgstr "" -#: fortran/symbol.c:183 +#: fortran/symbol.c:195 #, no-c-format msgid "Cannot specify IMPLICIT at %C after IMPLICIT NONE" msgstr "" -#: fortran/symbol.c:193 +#: fortran/symbol.c:205 #, no-c-format msgid "Letter %c already has an IMPLICIT type at %C" msgstr "" -#: fortran/symbol.c:249 +#: fortran/symbol.c:261 #, no-c-format msgid "Symbol '%s' at %L has no IMPLICIT type" msgstr "" #. BIND(C) variables should not be implicitly declared. -#: fortran/symbol.c:269 +#: fortran/symbol.c:281 #, no-c-format msgid "" "Implicitly declared BIND(C) variable '%s' at %L may not be C interoperable" @@ -10806,270 +11055,270 @@ msgstr "" #. Dummy args to a BIND(C) routine may not be interoperable if #. they are implicitly typed. -#: fortran/symbol.c:283 +#: fortran/symbol.c:295 #, no-c-format msgid "" "Implicitly declared variable '%s' at %L may not be C interoperable but it is " "a dummy argument to the BIND(C) procedure '%s' at %L" msgstr "" -#: fortran/symbol.c:324 +#: fortran/symbol.c:336 #, no-c-format msgid "Function result '%s' at %L has no IMPLICIT type" msgstr "" -#: fortran/symbol.c:403 +#: fortran/symbol.c:415 #, no-c-format msgid "%s attribute not allowed in BLOCK DATA program unit at %L" msgstr "" -#: fortran/symbol.c:458 +#: fortran/symbol.c:470 #, no-c-format msgid "Fortran 2003: Procedure pointer at %C" msgstr "" -#: fortran/symbol.c:608 +#: fortran/symbol.c:620 #, no-c-format msgid "%s attribute applied to %s %s at %L" msgstr "" -#: fortran/symbol.c:615 +#: fortran/symbol.c:627 #, no-c-format msgid "BIND(C) applied to %s %s at %L" msgstr "" -#: fortran/symbol.c:716 fortran/symbol.c:1369 +#: fortran/symbol.c:728 fortran/symbol.c:1381 #, no-c-format msgid "%s attribute conflicts with %s attribute at %L" msgstr "" -#: fortran/symbol.c:719 +#: fortran/symbol.c:731 #, no-c-format msgid "%s attribute conflicts with %s attribute in '%s' at %L" msgstr "" -#: fortran/symbol.c:727 +#: fortran/symbol.c:739 #, no-c-format msgid "Fortran 2003: %s attribute with %s attribute at %L" msgstr "" -#: fortran/symbol.c:733 +#: fortran/symbol.c:745 #, no-c-format msgid "Fortran 2003: %s attribute with %s attribute in '%s' at %L" msgstr "" -#: fortran/symbol.c:777 +#: fortran/symbol.c:789 #, no-c-format msgid "Cannot change attributes of USE-associated symbol at %L" msgstr "" -#: fortran/symbol.c:780 +#: fortran/symbol.c:792 #, no-c-format msgid "Cannot change attributes of USE-associated symbol %s at %L" msgstr "" -#: fortran/symbol.c:796 +#: fortran/symbol.c:808 #, no-c-format msgid "Duplicate %s attribute specified at %L" msgstr "" -#: fortran/symbol.c:829 +#: fortran/symbol.c:841 #, no-c-format msgid "ALLOCATABLE specified outside of INTERFACE body at %L" msgstr "" -#: fortran/symbol.c:855 +#: fortran/symbol.c:867 #, no-c-format msgid "DIMENSION specified for '%s' outside its INTERFACE body at %L" msgstr "" -#: fortran/symbol.c:973 +#: fortran/symbol.c:985 #, no-c-format msgid "Cray Pointee at %L appears in multiple pointer() statements" msgstr "" -#: fortran/symbol.c:992 +#: fortran/symbol.c:1004 #, no-c-format msgid "Duplicate PROTECTED attribute specified at %L" msgstr "" -#: fortran/symbol.c:1025 +#: fortran/symbol.c:1037 #, no-c-format msgid "SAVE attribute at %L cannot be specified in a PURE procedure" msgstr "" -#: fortran/symbol.c:1033 +#: fortran/symbol.c:1045 #, no-c-format msgid "Duplicate SAVE attribute specified at %L" msgstr "" -#: fortran/symbol.c:1054 +#: fortran/symbol.c:1066 #, no-c-format msgid "Duplicate VALUE attribute specified at %L" msgstr "" -#: fortran/symbol.c:1074 +#: fortran/symbol.c:1086 #, no-c-format msgid "Duplicate VOLATILE attribute specified at %L" msgstr "" -#: fortran/symbol.c:1365 +#: fortran/symbol.c:1377 #, no-c-format msgid "%s attribute of '%s' conflicts with %s attribute at %L" msgstr "" -#: fortran/symbol.c:1399 +#: fortran/symbol.c:1411 #, no-c-format msgid "%s procedure at %L is already declared as %s procedure" msgstr "" -#: fortran/symbol.c:1434 +#: fortran/symbol.c:1446 #, no-c-format msgid "INTENT (%s) conflicts with INTENT(%s) at %L" msgstr "" -#: fortran/symbol.c:1458 +#: fortran/symbol.c:1470 #, no-c-format msgid "ACCESS specification at %L was already specified" msgstr "" -#: fortran/symbol.c:1475 +#: fortran/symbol.c:1487 #, no-c-format msgid "Duplicate BIND attribute specified at %L" msgstr "" -#: fortran/symbol.c:1482 +#: fortran/symbol.c:1494 #, no-c-format msgid "Fortran 2003: BIND(C) at %L" msgstr "" -#: fortran/symbol.c:1499 +#: fortran/symbol.c:1511 #, no-c-format msgid "Duplicate EXTENDS attribute specified at %L" msgstr "" -#: fortran/symbol.c:1503 +#: fortran/symbol.c:1515 #, no-c-format msgid "Fortran 2003: EXTENDS at %L" msgstr "" -#: fortran/symbol.c:1525 +#: fortran/symbol.c:1537 #, no-c-format msgid "Symbol '%s' at %L already has an explicit interface" msgstr "" -#: fortran/symbol.c:1532 +#: fortran/symbol.c:1544 #, no-c-format msgid "'%s' at %L has attributes specified outside its INTERFACE body" msgstr "" -#: fortran/symbol.c:1573 +#: fortran/symbol.c:1585 #, no-c-format msgid "Procedure '%s' at %L may not have basic type of %s" msgstr "" -#: fortran/symbol.c:1585 +#: fortran/symbol.c:1597 #, no-c-format msgid "Symbol '%s' at %L cannot have a type" msgstr "" -#: fortran/symbol.c:1744 +#: fortran/symbol.c:1756 #, no-c-format msgid "Component '%s' at %C already declared at %L" msgstr "" -#: fortran/symbol.c:1755 +#: fortran/symbol.c:1767 #, no-c-format msgid "Component '%s' at %C already in the parent type at %L" msgstr "" -#: fortran/symbol.c:1830 +#: fortran/symbol.c:1843 #, no-c-format msgid "Symbol '%s' at %C is ambiguous" msgstr "" -#: fortran/symbol.c:1862 +#: fortran/symbol.c:1875 #, no-c-format msgid "Derived type '%s' at %C is being used before it is defined" msgstr "" -#: fortran/symbol.c:1903 +#: fortran/symbol.c:1916 #, no-c-format msgid "'%s' at %C is not a member of the '%s' structure" msgstr "" -#: fortran/symbol.c:1911 +#: fortran/symbol.c:1924 #, no-c-format msgid "Component '%s' at %C is a PRIVATE component of '%s'" msgstr "" -#: fortran/symbol.c:1921 +#: fortran/symbol.c:1934 #, no-c-format msgid "All components of '%s' are PRIVATE in structure constructor at %C" msgstr "" -#: fortran/symbol.c:2050 +#: fortran/symbol.c:2063 #, no-c-format msgid "Duplicate statement label %d at %L and %L" msgstr "" -#: fortran/symbol.c:2060 +#: fortran/symbol.c:2073 #, no-c-format msgid "Label %d at %C already referenced as branch target" msgstr "" -#: fortran/symbol.c:2069 +#: fortran/symbol.c:2082 #, no-c-format msgid "Label %d at %C already referenced as a format label" msgstr "" -#: fortran/symbol.c:2111 +#: fortran/symbol.c:2124 #, no-c-format msgid "Label %d at %C previously used as a FORMAT label" msgstr "" -#: fortran/symbol.c:2119 +#: fortran/symbol.c:2132 #, no-c-format msgid "Label %d at %C previously used as branch target" msgstr "" -#: fortran/symbol.c:2431 +#: fortran/symbol.c:2444 #, no-c-format msgid "Name '%s' at %C is an ambiguous reference to '%s' from module '%s'" msgstr "" -#: fortran/symbol.c:2434 +#: fortran/symbol.c:2447 #, no-c-format msgid "" "Name '%s' at %C is an ambiguous reference to '%s' from current program unit" msgstr "" #. Symbol is from another namespace. -#: fortran/symbol.c:2578 +#: fortran/symbol.c:2591 #, no-c-format msgid "Symbol '%s' at %C has already been host associated" msgstr "" -#: fortran/symbol.c:3348 +#: fortran/symbol.c:3398 #, no-c-format msgid "" "Derived type '%s' declared at %L must have the BIND attribute to be C " "interoperable" msgstr "" -#: fortran/symbol.c:3359 +#: fortran/symbol.c:3409 #, no-c-format msgid "Derived type '%s' at %L is empty" msgstr "" -#: fortran/symbol.c:3376 +#: fortran/symbol.c:3426 #, no-c-format msgid "" "Component '%s' at %L cannot have the POINTER attribute because it is a " "member of the BIND(C) derived type '%s' at %L" msgstr "" -#: fortran/symbol.c:3388 +#: fortran/symbol.c:3438 #, no-c-format msgid "" "Component '%s' at %L cannot have the ALLOCATABLE attribute because it is a " @@ -11078,7 +11327,7 @@ msgstr "" #. If the derived type is bind(c), all fields must be #. interop. -#: fortran/symbol.c:3426 +#: fortran/symbol.c:3476 #, no-c-format msgid "" "Component '%s' in derived type '%s' at %L may not be C interoperable, even " @@ -11088,36 +11337,36 @@ msgstr "" #. If derived type is param to bind(c) routine, or to one #. of the iso_c_binding procs, it must be interoperable, so #. all fields must interop too. -#: fortran/symbol.c:3435 +#: fortran/symbol.c:3485 #, no-c-format msgid "Component '%s' in derived type '%s' at %L may not be C interoperable" msgstr "" -#: fortran/symbol.c:3449 +#: fortran/symbol.c:3499 #, no-c-format msgid "" "Derived type '%s' at %L cannot be declared with both PRIVATE and BIND(C) " "attributes" msgstr "" -#: fortran/symbol.c:3457 +#: fortran/symbol.c:3507 #, no-c-format msgid "" "Derived type '%s' at %L cannot have the SEQUENCE attribute because it is BIND" "(C)" msgstr "" -#: fortran/symbol.c:4327 +#: fortran/symbol.c:4379 #, no-c-format msgid "Symbol '%s' is used before it is typed at %L" msgstr "" -#: fortran/symbol.c:4333 +#: fortran/symbol.c:4385 #, no-c-format msgid "Extension: Symbol '%s' is used before it is typed at %L" msgstr "" -#: fortran/symbol.c:4384 +#: fortran/symbol.c:4457 #, no-c-format msgid "'%s' of '%s' is PRIVATE at %C" msgstr "" @@ -11132,22 +11381,22 @@ msgstr "" msgid "BOZ constant at %L is too large (%ld vs %ld bits)" msgstr "" -#: fortran/trans-array.c:641 fortran/trans-array.c:4461 -#: fortran/trans-array.c:5450 fortran/trans-intrinsic.c:3719 +#: fortran/trans-array.c:641 fortran/trans-array.c:4464 +#: fortran/trans-array.c:5453 fortran/trans-intrinsic.c:3722 #, no-c-format msgid "Creating array temporary at %L" msgstr "" #. Problems occur when we get something like #. integer :: a(lots) = (/(i, i=1, lots)/) -#: fortran/trans-array.c:4030 +#: fortran/trans-array.c:4033 #, no-c-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:5447 +#: fortran/trans-array.c:5450 #, no-c-format msgid "Creating array temporary at %L for argument '%s'" msgstr "" @@ -11229,66 +11478,66 @@ msgstr "" msgid "Assigning value other than 0 or 1 to LOGICAL has undefined result at %L" msgstr "" -#: fortran/trans-decl.c:2908 fortran/trans-decl.c:4061 +#: fortran/trans-decl.c:2957 fortran/trans-decl.c:4113 #, no-c-format msgid "Return value of function '%s' at %L not set" msgstr "" -#: fortran/trans-decl.c:3567 +#: fortran/trans-decl.c:3616 #, no-c-format msgid "Dummy argument '%s' at %L was declared INTENT(OUT) but was not set" msgstr "" -#: fortran/trans-decl.c:3571 +#: fortran/trans-decl.c:3620 #, no-c-format msgid "Unused dummy argument '%s' at %L" msgstr "" -#: fortran/trans-decl.c:3577 +#: fortran/trans-decl.c:3626 #, no-c-format msgid "Unused variable '%s' declared at %L" msgstr "" -#: fortran/trans-decl.c:3623 +#: fortran/trans-decl.c:3672 #, no-c-format msgid "Unused parameter '%s' declared at %L" msgstr "" -#: fortran/trans-decl.c:3637 +#: fortran/trans-decl.c:3686 #, no-c-format msgid "Return value '%s' of function '%s' declared at %L not set" msgstr "" -#: fortran/trans-decl.c:3741 +#: fortran/trans-decl.c:3790 #, c-format msgid "" "Actual string length does not match the declared one for dummy argument '%" "s' (%ld/%ld)" msgstr "" -#: fortran/trans-decl.c:3747 +#: fortran/trans-decl.c:3796 #, c-format msgid "" "Actual string length is shorter than the declared one for dummy argument '%" "s' (%ld/%ld)" msgstr "" -#: fortran/trans-expr.c:2399 +#: fortran/trans-expr.c:2361 #, no-c-format msgid "Unknown argument list function at %L" msgstr "" -#: fortran/trans-intrinsic.c:882 +#: fortran/trans-intrinsic.c:883 #, no-c-format msgid "'dim' argument of %s intrinsic at %L is not a valid dimension index" msgstr "" -#: fortran/trans-io.c:2004 +#: fortran/trans-io.c:2002 #, no-c-format msgid "Derived type '%s' at %L has PRIVATE components" msgstr "" -#: fortran/trans-stmt.c:471 +#: fortran/trans-stmt.c:499 #, no-c-format msgid "An alternate return at %L without a * dummy argument" msgstr "" @@ -11518,11 +11767,6 @@ msgstr "" msgid "may not use both -m32 and -m64" msgstr "" -#: config/sparc/sol2-bi.h:212 config/sparc/sol2-bi.h:217 -#: config/sparc/sol2-gld-bi.h:40 config/sparc/sol2-gld-bi.h:45 -msgid "does not support multilib" -msgstr "" - #: config/mips/mips.h:1183 config/arc/arc.h:61 msgid "may not use both -EB and -EL" msgstr "" @@ -11535,19 +11779,19 @@ msgstr "" msgid "-msingle-float and -msoft-float cannot both be specified" msgstr "" -#: config/i386/mingw32.h:85 config/i386/cygwin.h:91 +#: config/i386/mingw-w64.h:65 config/i386/mingw32.h:85 config/i386/cygwin.h:91 msgid "shared and mdll are not compatible" msgstr "" -#: gcc.c:813 +#: gcc.c:820 msgid "GCC does not support -C or -CC without -E" msgstr "" -#: gcc.c:841 java/jvspec.c:80 ada/gcc-interface/lang-specs.h:33 +#: gcc.c:848 java/jvspec.c:80 ada/gcc-interface/lang-specs.h:33 msgid "-pg and -fomit-frame-pointer are incompatible" msgstr "" -#: gcc.c:1026 +#: gcc.c:1033 msgid "-E or -x required when input is from standard input" msgstr "" @@ -11587,8 +11831,13 @@ msgstr "" msgid "-c or -S required for Ada" msgstr "" -#: config/rs6000/sysv4.h:908 config/rs6000/sysv4.h:910 -#: config/rs6000/linux64.h:354 config/rs6000/linux64.h:356 config/linux.h:111 +#: config/sparc/sol2-bi.h:212 config/sparc/sol2-bi.h:217 +#: config/sparc/sol2-gld-bi.h:40 config/sparc/sol2-gld-bi.h:45 +msgid "does not support multilib" +msgstr "" + +#: config/rs6000/linux64.h:354 config/rs6000/linux64.h:356 +#: config/rs6000/sysv4.h:908 config/rs6000/sysv4.h:910 config/linux.h:111 #: config/linux.h:113 config/alpha/linux-elf.h:33 config/alpha/linux-elf.h:35 msgid "-mglibc and -muclibc used together" msgstr "" @@ -11601,10 +11850,6 @@ msgstr "" msgid "-Xbind-now and -Xbind-lazy are incompatible" msgstr "" -#: config/vax/netbsd-elf.h:47 -msgid "the -shared option is not currently supported for VAX ELF" -msgstr "" - #: config/i386/cygwin.h:28 msgid "mno-cygwin and mno-win32 are not compatible" msgstr "" @@ -11617,10 +11862,6 @@ msgstr "" msgid "Static linking is not supported.\n" msgstr "" -#: config/mcore/mcore.h:54 -msgid "the m210 does not have little endian support" -msgstr "" - #: java/lang-specs.h:33 msgid "-fjni and -femit-class-files are incompatible" msgstr "" @@ -11649,10 +11890,18 @@ msgstr "" msgid "Do not specify both -march=... and -mcpu=..." msgstr "" +#: config/vax/netbsd-elf.h:47 +msgid "the -shared option is not currently supported for VAX ELF" +msgstr "" + #: config/vax/vax.h:50 config/vax/vax.h:51 msgid "profiling not supported with -mg\n" msgstr "" +#: config/mcore/mcore.h:54 +msgid "the m210 does not have little endian support" +msgstr "" + #: config/lynx.h:70 msgid "cannot use mthreads and mlegacy-threads together" msgstr "" @@ -12052,7 +12301,7 @@ msgstr "" msgid "Append a second underscore if the name already contains an underscore" msgstr "" -#: fortran/lang.opt:353 c.opt:745 +#: fortran/lang.opt:353 c.opt:749 msgid "Use the narrowest integer type possible for enumeration types" msgstr "" @@ -15249,7 +15498,7 @@ msgstr "" msgid "Print the name of header files as they are used" msgstr "" -#: c.opt:69 c.opt:890 +#: c.opt:69 c.opt:894 msgid "Add <dir> to the end of the main include path" msgstr "" @@ -15668,442 +15917,446 @@ msgid "Warn about unrecognized pragmas" msgstr "" #: c.opt:481 -msgid "Warn about macros defined in the main file that are not used" +msgid "Warn about unsuffixed float constants" msgstr "" #: c.opt:485 -msgid "Do not warn about using variadic macros when -pedantic" +msgid "Warn about macros defined in the main file that are not used" msgstr "" #: c.opt:489 -msgid "Warn if a variable length array is used" +msgid "Do not warn about using variadic macros when -pedantic" msgstr "" #: c.opt:493 -msgid "Warn when a register variable is declared volatile" +msgid "Warn if a variable length array is used" msgstr "" #: c.opt:497 +msgid "Warn when a register variable is declared volatile" +msgstr "" + +#: c.opt:501 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.opt:501 +#: c.opt:505 msgid "Warn when a pointer differs in signedness in an assignment" msgstr "" -#: c.opt:505 +#: c.opt:509 msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)" msgstr "" -#: c.opt:513 +#: c.opt:517 msgid "Enforce class member access control semantics" msgstr "" -#: c.opt:520 +#: c.opt:524 msgid "Change when template instances are emitted" msgstr "" -#: c.opt:524 +#: c.opt:528 msgid "Recognize the \"asm\" keyword" msgstr "" -#: c.opt:528 +#: c.opt:532 msgid "Recognize built-in functions" msgstr "" -#: c.opt:535 +#: c.opt:539 msgid "Check the return value of new" msgstr "" -#: c.opt:539 +#: c.opt:543 msgid "Allow the arguments of the '?' operator to have different types" msgstr "" -#: c.opt:543 +#: c.opt:547 msgid "Reduce the size of object files" msgstr "" -#: c.opt:547 +#: c.opt:551 msgid "Use class <name> for constant strings" msgstr "" -#: c.opt:551 +#: c.opt:555 msgid "Inline member functions by default" msgstr "" -#: c.opt:555 +#: c.opt:559 msgid "Preprocess directives only." msgstr "" -#: c.opt:559 +#: c.opt:563 msgid "Permit '$' as an identifier character" msgstr "" -#: c.opt:566 +#: c.opt:570 msgid "Generate code to check exception specifications" msgstr "" -#: c.opt:573 +#: c.opt:577 msgid "Convert all strings and character constants to character set <cset>" msgstr "" -#: c.opt:577 +#: c.opt:581 msgid "Permit universal character names (\\u and \\U) in identifiers" msgstr "" -#: c.opt:581 +#: c.opt:585 msgid "Specify the default character set for source files" msgstr "" -#: c.opt:589 +#: c.opt:593 msgid "Scope of for-init-statement variables is local to the loop" msgstr "" -#: c.opt:593 +#: c.opt:597 msgid "Do not assume that standard C libraries and \"main\" exist" msgstr "" -#: c.opt:597 +#: c.opt:601 msgid "Recognize GNU-defined keywords" msgstr "" -#: c.opt:601 +#: c.opt:605 msgid "Generate code for GNU runtime environment" msgstr "" -#: c.opt:605 +#: c.opt:609 msgid "Use traditional GNU semantics for inline functions" msgstr "" -#: c.opt:618 +#: c.opt:622 msgid "Assume normal C execution environment" msgstr "" -#: c.opt:622 +#: c.opt:626 msgid "Enable support for huge objects" msgstr "" -#: c.opt:626 +#: c.opt:630 msgid "Export functions even if they can be inlined" msgstr "" -#: c.opt:630 +#: c.opt:634 msgid "Emit implicit instantiations of inline templates" msgstr "" -#: c.opt:634 +#: c.opt:638 msgid "Emit implicit instantiations of templates" msgstr "" -#: c.opt:638 +#: c.opt:642 msgid "Inject friend functions into enclosing namespace" msgstr "" -#: c.opt:645 +#: c.opt:649 msgid "" "Allow implicit conversions between vectors with differing numbers of " "subparts and/or differing element types." msgstr "" -#: c.opt:649 +#: c.opt:653 msgid "Don't warn about uses of Microsoft extensions" msgstr "" -#: c.opt:659 +#: c.opt:663 msgid "Generate code for NeXT (Apple Mac OS X) runtime environment" msgstr "" -#: c.opt:663 +#: c.opt:667 msgid "Assume that receivers of Objective-C messages may be nil" msgstr "" -#: c.opt:675 +#: c.opt:679 msgid "" "Generate special Objective-C methods to initialize/destroy non-POD C++ " "ivars, if needed" msgstr "" -#: c.opt:679 +#: c.opt:683 msgid "Allow fast jumps to the message dispatcher" msgstr "" -#: c.opt:685 +#: c.opt:689 msgid "Enable Objective-C exception and synchronization syntax" msgstr "" -#: c.opt:689 +#: c.opt:693 msgid "Enable garbage collection (GC) in Objective-C/Objective-C++ programs" msgstr "" -#: c.opt:694 +#: c.opt:698 msgid "Enable Objective-C setjmp exception handling runtime" msgstr "" -#: c.opt:698 +#: c.opt:702 msgid "Enable OpenMP (implies -frecursive in Fortran)" msgstr "" -#: c.opt:702 +#: c.opt:706 msgid "Recognize C++ keywords like \"compl\" and \"xor\"" msgstr "" -#: c.opt:706 +#: c.opt:710 msgid "Enable optional diagnostics" msgstr "" -#: c.opt:713 +#: c.opt:717 msgid "Look for and use PCH files even when preprocessing" msgstr "" -#: c.opt:717 +#: c.opt:721 msgid "Downgrade conformance errors to warnings" msgstr "" -#: c.opt:721 +#: c.opt:725 msgid "Treat the input file as already preprocessed" msgstr "" -#: c.opt:725 +#: c.opt:729 msgid "" "-fno-pretty-templates Do not pretty-print template specializations as the " "template signature followed by the arguments" msgstr "" -#: c.opt:729 +#: c.opt:733 msgid "" "Used in Fix-and-Continue mode to indicate that object files may be swapped " "in at runtime" msgstr "" -#: c.opt:733 +#: c.opt:737 msgid "Enable automatic template instantiation" msgstr "" -#: c.opt:737 +#: c.opt:741 msgid "Generate run time type descriptor information" msgstr "" -#: c.opt:741 +#: c.opt:745 msgid "Use the same size for double as for float" msgstr "" -#: c.opt:749 +#: c.opt:753 msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\"" msgstr "" -#: c.opt:753 +#: c.opt:757 msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed" msgstr "" -#: c.opt:757 +#: c.opt:761 msgid "Make \"char\" signed by default" msgstr "" -#: c.opt:764 +#: c.opt:768 msgid "Display statistics accumulated during compilation" msgstr "" -#: c.opt:771 +#: c.opt:775 msgid "Distance between tab stops for column reporting" msgstr "" -#: c.opt:775 +#: c.opt:779 msgid "Specify maximum template instantiation depth" msgstr "" -#: c.opt:782 +#: c.opt:786 msgid "Do not generate thread-safe code for initializing local statics" msgstr "" -#: c.opt:786 +#: c.opt:790 msgid "When \"signed\" or \"unsigned\" is not given make the bitfield unsigned" msgstr "" -#: c.opt:790 +#: c.opt:794 msgid "Make \"char\" unsigned by default" msgstr "" -#: c.opt:794 +#: c.opt:798 msgid "Use __cxa_atexit to register destructors" msgstr "" -#: c.opt:798 +#: c.opt:802 msgid "Use __cxa_get_exception_ptr in exception handling" msgstr "" -#: c.opt:802 +#: c.opt:806 msgid "Marks all inlined methods as having hidden visibility" msgstr "" -#: c.opt:806 +#: c.opt:810 msgid "Changes visibility to match Microsoft Visual Studio by default" msgstr "" -#: c.opt:810 +#: c.opt:814 msgid "Discard unused virtual functions" msgstr "" -#: c.opt:814 +#: c.opt:818 msgid "Implement vtables using thunks" msgstr "" -#: c.opt:818 +#: c.opt:822 msgid "Emit common-like symbols as weak symbols" msgstr "" -#: c.opt:822 +#: c.opt:826 msgid "" "Convert all wide strings and character constants to character set <cset>" msgstr "" -#: c.opt:826 +#: c.opt:830 msgid "Generate a #line directive pointing at the current working directory" msgstr "" -#: c.opt:830 +#: c.opt:834 msgid "Emit cross referencing information" msgstr "" -#: c.opt:834 +#: c.opt:838 msgid "" "Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode" msgstr "" -#: c.opt:838 +#: c.opt:842 msgid "Dump declarations to a .decl file" msgstr "" -#: c.opt:842 +#: c.opt:846 msgid "Aggressive reduced debug info for structs" msgstr "" -#: c.opt:846 +#: c.opt:850 msgid "Conservative reduced debug info for structs" msgstr "" -#: c.opt:850 +#: c.opt:854 msgid "Detailed reduced debug info for structs" msgstr "" -#: c.opt:854 c.opt:886 +#: c.opt:858 c.opt:890 msgid "Add <dir> to the end of the system include path" msgstr "" -#: c.opt:858 +#: c.opt:862 msgid "Accept definition of macros in <file>" msgstr "" -#: c.opt:862 +#: c.opt:866 msgid "-imultilib <dir> Set <dir> to be the multilib include subdirectory" msgstr "" -#: c.opt:866 +#: c.opt:870 msgid "Include the contents of <file> before other files" msgstr "" -#: c.opt:870 +#: c.opt:874 msgid "Specify <path> as a prefix for next two options" msgstr "" -#: c.opt:874 +#: c.opt:878 msgid "Set <dir> to be the system root directory" msgstr "" -#: c.opt:878 +#: c.opt:882 msgid "Add <dir> to the start of the system include path" msgstr "" -#: c.opt:882 +#: c.opt:886 msgid "Add <dir> to the end of the quote include path" msgstr "" -#: c.opt:900 +#: c.opt:904 msgid "" "Do not search standard system include directories (those specified with -" "isystem will still be used)" msgstr "" -#: c.opt:904 +#: c.opt:908 msgid "Do not search standard system include directories for C++" msgstr "" -#: c.opt:920 +#: c.opt:924 msgid "Generate C header of platform-specific features" msgstr "" -#: c.opt:924 +#: c.opt:928 msgid "Print a checksum of the executable for PCH validity checking, and stop" msgstr "" -#: c.opt:928 +#: c.opt:932 msgid "Remap file names when including files" msgstr "" -#: c.opt:932 +#: c.opt:936 msgid "Conform to the ISO 1998 C++ standard" msgstr "" -#: c.opt:936 +#: c.opt:940 msgid "" "Conform to the ISO 1998 C++ standard, with extensions that are likely to" msgstr "" -#: c.opt:943 c.opt:978 +#: c.opt:947 c.opt:982 msgid "Conform to the ISO 1990 C standard" msgstr "" -#: c.opt:947 c.opt:986 +#: c.opt:951 c.opt:990 msgid "Conform to the ISO 1999 C standard" msgstr "" -#: c.opt:951 +#: c.opt:955 msgid "Deprecated in favor of -std=c99" msgstr "" -#: c.opt:955 +#: c.opt:959 msgid "Conform to the ISO 1998 C++ standard with GNU extensions" msgstr "" -#: c.opt:959 +#: c.opt:963 msgid "Conform to the ISO 1998 C++ standard, with GNU extensions and" msgstr "" -#: c.opt:966 +#: c.opt:970 msgid "Conform to the ISO 1990 C standard with GNU extensions" msgstr "" -#: c.opt:970 +#: c.opt:974 msgid "Conform to the ISO 1999 C standard with GNU extensions" msgstr "" -#: c.opt:974 +#: c.opt:978 msgid "Deprecated in favor of -std=gnu99" msgstr "" -#: c.opt:982 +#: c.opt:986 msgid "Conform to the ISO 1990 C standard as amended in 1994" msgstr "" -#: c.opt:990 +#: c.opt:994 msgid "Deprecated in favor of -std=iso9899:1999" msgstr "" -#: c.opt:994 +#: c.opt:998 msgid "Enable traditional preprocessing" msgstr "" -#: c.opt:998 +#: c.opt:1002 msgid "Support ISO C trigraphs" msgstr "" -#: c.opt:1002 +#: c.opt:1006 msgid "Do not predefine system-specific and GCC-specific macros" msgstr "" -#: c.opt:1006 +#: c.opt:1010 msgid "Enable verbose output" msgstr "" @@ -16412,8 +16665,9 @@ msgstr "" msgid "When running CSE, follow jumps to their targets" msgstr "" -#: common.opt:401 -msgid "When running CSE, follow conditional jumps" +#: common.opt:401 common.opt:514 common.opt:727 common.opt:956 common.opt:1108 +#: common.opt:1167 common.opt:1183 common.opt:1243 +msgid "Does nothing. Preserved for backward compatibility." msgstr "" #: common.opt:405 @@ -16524,11 +16778,6 @@ msgstr "" msgid "Don't allocate floats and doubles in extended-precision registers" msgstr "" -#: common.opt:514 common.opt:727 common.opt:956 common.opt:1108 -#: common.opt:1167 common.opt:1183 common.opt:1243 -msgid "Does nothing. Preserved for backward compatibility." -msgstr "" - #: common.opt:518 msgid "Perform a forward propagation pass on RTL" msgstr "" @@ -17384,27 +17633,27 @@ msgstr "" msgid "Create a position independent executable" msgstr "" -#: attribs.c:284 +#: attribs.c:283 #, gcc-internal-format -msgid "%qs attribute directive ignored" +msgid "%qE attribute directive ignored" msgstr "" -#: attribs.c:292 +#: attribs.c:291 #, gcc-internal-format -msgid "wrong number of arguments specified for %qs attribute" +msgid "wrong number of arguments specified for %qE attribute" msgstr "" -#: attribs.c:310 +#: attribs.c:309 #, gcc-internal-format -msgid "%qs attribute does not apply to types" +msgid "%qE attribute does not apply to types" msgstr "" -#: attribs.c:361 +#: attribs.c:360 #, gcc-internal-format -msgid "%qs attribute only applies to function types" +msgid "%qE attribute only applies to function types" msgstr "" -#: attribs.c:371 +#: attribs.c:370 #, gcc-internal-format msgid "type attributes ignored after type is already defined" msgstr "" @@ -17420,47 +17669,52 @@ msgid "" "branch target register load optimization is not intended to be run twice" msgstr "" -#: builtins.c:1049 +#: builtins.c:489 +#, gcc-internal-format +msgid "offset outside bounds of constant string" +msgstr "" + +#: builtins.c:1052 #, gcc-internal-format msgid "second argument to %<__builtin_prefetch%> must be a constant" msgstr "" -#: builtins.c:1056 +#: builtins.c:1059 #, gcc-internal-format msgid "invalid second argument to %<__builtin_prefetch%>; using zero" msgstr "" -#: builtins.c:1064 +#: builtins.c:1067 #, gcc-internal-format msgid "third argument to %<__builtin_prefetch%> must be a constant" msgstr "" -#: builtins.c:1071 +#: builtins.c:1074 #, gcc-internal-format msgid "invalid third argument to %<__builtin_prefetch%>; using zero" msgstr "" -#: builtins.c:4675 +#: builtins.c:4678 #, gcc-internal-format msgid "argument of %<__builtin_args_info%> must be constant" msgstr "" -#: builtins.c:4681 +#: builtins.c:4684 #, gcc-internal-format msgid "argument of %<__builtin_args_info%> out of range" msgstr "" -#: builtins.c:4687 +#: builtins.c:4690 #, gcc-internal-format msgid "missing argument in %<__builtin_args_info%>" msgstr "" -#: builtins.c:4823 gimplify.c:2296 +#: builtins.c:4826 gimplify.c:2376 #, gcc-internal-format msgid "too few arguments to function %<va_start%>" msgstr "" -#: builtins.c:4981 +#: builtins.c:4984 #, gcc-internal-format msgid "first argument to %<va_arg%> not of type %<va_list%>" msgstr "" @@ -17468,93 +17722,93 @@ msgstr "" #. Unfortunately, this is merely undefined, rather than a constraint #. violation, so we cannot make this an error. If this call is never #. executed, the program is still strictly conforming. -#: builtins.c:4996 +#: builtins.c:4999 #, gcc-internal-format msgid "%qT is promoted to %qT when passed through %<...%>" msgstr "" -#: builtins.c:5001 +#: builtins.c:5004 #, gcc-internal-format msgid "(so you should pass %qT not %qT to %<va_arg%>)" msgstr "" #. We can, however, treat "undefined" any way we please. #. Call abort to encourage the user to fix the program. -#: builtins.c:5008 c-typeck.c:2518 +#: builtins.c:5011 c-typeck.c:2513 #, gcc-internal-format msgid "if this code is reached, the program will abort" msgstr "" -#: builtins.c:5132 +#: builtins.c:5135 #, gcc-internal-format msgid "invalid argument to %<__builtin_frame_address%>" msgstr "" -#: builtins.c:5134 +#: builtins.c:5137 #, gcc-internal-format msgid "invalid argument to %<__builtin_return_address%>" msgstr "" -#: builtins.c:5147 +#: builtins.c:5150 #, gcc-internal-format msgid "unsupported argument to %<__builtin_frame_address%>" msgstr "" -#: builtins.c:5149 +#: builtins.c:5152 #, gcc-internal-format msgid "unsupported argument to %<__builtin_return_address%>" msgstr "" -#: builtins.c:5695 +#: builtins.c:5698 #, gcc-internal-format msgid "both arguments to %<__builtin___clear_cache%> must be pointers" msgstr "" -#: builtins.c:6057 builtins.c:6072 +#: builtins.c:6060 builtins.c:6075 #, gcc-internal-format msgid "%qD changed semantics in GCC 4.4" msgstr "" #. All valid uses of __builtin_va_arg_pack () are removed during #. inlining. -#: builtins.c:6458 expr.c:8012 +#: builtins.c:6461 expr.c:8053 msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>" msgstr "" #. All valid uses of __builtin_va_arg_pack_len () are removed during #. inlining. -#: builtins.c:6464 +#: builtins.c:6467 msgid "%Kinvalid use of %<__builtin_va_arg_pack_len ()%>" msgstr "" -#: builtins.c:6760 +#: builtins.c:6763 #, gcc-internal-format msgid "%<__builtin_longjmp%> second argument must be 1" msgstr "" -#: builtins.c:7396 +#: builtins.c:7399 #, gcc-internal-format msgid "target format does not support infinity" msgstr "" -#: builtins.c:11772 +#: builtins.c:11812 #, gcc-internal-format msgid "%<va_start%> used in function with fixed args" msgstr "" -#: builtins.c:11780 +#: builtins.c:11820 #, gcc-internal-format msgid "wrong number of arguments to function %<va_start%>" msgstr "" #. Evidently an out of date version of <stdarg.h>; can't validate #. va_start's second argument, but can still work as intended. -#: builtins.c:11793 +#: builtins.c:11833 #, gcc-internal-format msgid "%<__builtin_next_arg%> called without an argument" msgstr "" -#: builtins.c:11798 +#: builtins.c:11838 #, gcc-internal-format msgid "wrong number of arguments to function %<__builtin_next_arg%>" msgstr "" @@ -17564,943 +17818,948 @@ msgstr "" #. argument. We just warn and set the arg to be the last #. argument so that we will get wrong-code because of #. it. -#: builtins.c:11825 +#: builtins.c:11868 #, gcc-internal-format msgid "second parameter of %<va_start%> not last named argument" msgstr "" -#: builtins.c:11835 +#: builtins.c:11878 #, gcc-internal-format msgid "" "undefined behaviour when second parameter of %<va_start%> is declared with %" "<register%> storage" msgstr "" -#: builtins.c:11950 +#: builtins.c:11993 msgid "%Kfirst argument of %D must be a pointer, second integer constant" msgstr "" -#: builtins.c:11963 +#: builtins.c:12006 msgid "%Klast argument of %D is not integer constant between 0 and 3" msgstr "" -#: builtins.c:12008 builtins.c:12173 builtins.c:12232 +#: builtins.c:12051 builtins.c:12216 builtins.c:12275 msgid "%Kcall to %D will always overflow destination buffer" msgstr "" -#: builtins.c:12163 +#: builtins.c:12206 msgid "%Kcall to %D might overflow destination buffer" msgstr "" -#: builtins.c:12253 +#: builtins.c:12296 msgid "%Kattempt to free a non-heap object %qD" msgstr "" -#: builtins.c:12256 +#: builtins.c:12299 msgid "%Kattempt to free a non-heap object" msgstr "" -#: c-common.c:1156 +#: c-common.c:1157 #, gcc-internal-format msgid "%qD is not defined outside of function scope" msgstr "" -#: c-common.c:1206 +#: c-common.c:1207 #, gcc-internal-format msgid "" "string length %qd is greater than the length %qd ISO C%d compilers are " "required to support" msgstr "" -#: c-common.c:1654 c-common.c:1666 +#: c-common.c:1655 c-common.c:1667 #, gcc-internal-format msgid "overflow in constant expression" msgstr "" -#: c-common.c:1688 +#: c-common.c:1689 #, gcc-internal-format msgid "integer overflow in expression" msgstr "" -#: c-common.c:1692 +#: c-common.c:1693 #, gcc-internal-format msgid "floating point overflow in expression" msgstr "" -#: c-common.c:1696 +#: c-common.c:1697 #, gcc-internal-format msgid "fixed-point overflow in expression" msgstr "" -#: c-common.c:1700 +#: c-common.c:1701 #, gcc-internal-format msgid "vector overflow in expression" msgstr "" -#: c-common.c:1705 +#: c-common.c:1706 #, gcc-internal-format msgid "complex integer overflow in expression" msgstr "" -#: c-common.c:1707 +#: c-common.c:1708 #, gcc-internal-format msgid "complex floating point overflow in expression" msgstr "" -#: c-common.c:1746 +#: c-common.c:1747 #, gcc-internal-format msgid "logical %<or%> applied to non-boolean constant" msgstr "" -#: c-common.c:1749 +#: c-common.c:1750 #, gcc-internal-format msgid "logical %<and%> applied to non-boolean constant" msgstr "" -#: c-common.c:1781 +#: c-common.c:1786 #, gcc-internal-format msgid "type-punning to incomplete type might break strict-aliasing rules" msgstr "" -#: c-common.c:1796 +#: c-common.c:1801 #, gcc-internal-format msgid "dereferencing type-punned pointer will break strict-aliasing rules" msgstr "" -#: c-common.c:1803 c-common.c:1821 +#: c-common.c:1808 c-common.c:1826 #, gcc-internal-format msgid "dereferencing type-punned pointer might break strict-aliasing rules" msgstr "" -#: c-common.c:1852 +#: c-common.c:1857 #, gcc-internal-format msgid "first argument of %q+D should be %<int%>" msgstr "" -#: c-common.c:1861 +#: c-common.c:1866 #, gcc-internal-format msgid "second argument of %q+D should be %<char **%>" msgstr "" -#: c-common.c:1870 +#: c-common.c:1875 #, gcc-internal-format msgid "third argument of %q+D should probably be %<char **%>" msgstr "" -#: c-common.c:1880 +#: c-common.c:1885 #, gcc-internal-format msgid "%q+D takes only zero or two arguments" msgstr "" -#: c-common.c:1929 +#: c-common.c:1934 #, gcc-internal-format msgid "" "use -flax-vector-conversions to permit conversions between vectors with " "differing element types or numbers of subparts" msgstr "" -#: c-common.c:2084 +#: c-common.c:2089 #, gcc-internal-format msgid "conversion to %qT from boolean expression" msgstr "" -#: c-common.c:2106 +#: c-common.c:2111 #, gcc-internal-format msgid "negative integer implicitly converted to unsigned type" msgstr "" -#: c-common.c:2108 +#: c-common.c:2113 #, gcc-internal-format msgid "conversion of unsigned constant value to negative integer" msgstr "" -#: c-common.c:2135 +#: c-common.c:2140 #, gcc-internal-format msgid "conversion to %qT alters %qT constant value" msgstr "" -#: c-common.c:2227 +#: c-common.c:2232 #, gcc-internal-format msgid "conversion to %qT from %qT may change the sign of the result" msgstr "" -#: c-common.c:2259 +#: c-common.c:2264 #, gcc-internal-format msgid "conversion to %qT from %qT may alter its value" msgstr "" -#: c-common.c:2287 +#: c-common.c:2292 #, gcc-internal-format msgid "large integer implicitly truncated to unsigned type" msgstr "" -#: c-common.c:2293 c-common.c:2300 c-common.c:2308 +#: c-common.c:2298 c-common.c:2305 c-common.c:2313 #, gcc-internal-format msgid "overflow in implicit constant conversion" msgstr "" -#: c-common.c:2479 +#: c-common.c:2484 #, gcc-internal-format msgid "operation on %qE may be undefined" msgstr "" -#: c-common.c:2787 +#: c-common.c:2792 #, gcc-internal-format msgid "case label does not reduce to an integer constant" msgstr "" -#: c-common.c:2827 +#: c-common.c:2832 #, gcc-internal-format msgid "case label value is less than minimum value for type" msgstr "" -#: c-common.c:2835 +#: c-common.c:2840 #, gcc-internal-format msgid "case label value exceeds maximum value for type" msgstr "" -#: c-common.c:2843 +#: c-common.c:2848 #, gcc-internal-format msgid "lower value in case label range less than minimum value for type" msgstr "" -#: c-common.c:2852 +#: c-common.c:2857 #, gcc-internal-format msgid "upper value in case label range exceeds maximum value for type" msgstr "" -#: c-common.c:2926 +#: c-common.c:2931 #, 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-common.c:3412 +#: c-common.c:3417 #, gcc-internal-format msgid "invalid operands to binary %s (have %qT and %qT)" msgstr "" -#: c-common.c:3648 +#: c-common.c:3653 #, gcc-internal-format msgid "comparison is always false due to limited range of data type" msgstr "" -#: c-common.c:3650 +#: c-common.c:3655 #, gcc-internal-format msgid "comparison is always true due to limited range of data type" msgstr "" -#: c-common.c:3729 +#: c-common.c:3734 #, gcc-internal-format msgid "comparison of unsigned expression >= 0 is always true" msgstr "" -#: c-common.c:3739 +#: c-common.c:3744 #, gcc-internal-format msgid "comparison of unsigned expression < 0 is always false" msgstr "" -#: c-common.c:3781 +#: c-common.c:3785 #, gcc-internal-format msgid "pointer of type %<void *%> used in arithmetic" msgstr "" -#: c-common.c:3787 +#: c-common.c:3791 #, gcc-internal-format msgid "pointer to a function used in arithmetic" msgstr "" -#: c-common.c:3793 +#: c-common.c:3797 #, gcc-internal-format msgid "pointer to member function used in arithmetic" msgstr "" -#: c-common.c:3875 -#, gcc-internal-format -msgid "offset %<%wd%> outside bounds of constant string" -msgstr "" - -#: c-common.c:3999 +#: c-common.c:3978 #, gcc-internal-format msgid "the address of %qD will always evaluate as %<true%>" msgstr "" -#: c-common.c:4087 cp/semantics.c:594 cp/typeck.c:6669 +#: c-common.c:4066 cp/semantics.c:593 cp/typeck.c:6676 #, gcc-internal-format msgid "suggest parentheses around assignment used as truth value" msgstr "" -#: c-common.c:4164 c-decl.c:2888 c-typeck.c:9798 +#: c-common.c:4143 c-decl.c:3001 c-typeck.c:9934 #, gcc-internal-format msgid "invalid use of %<restrict%>" msgstr "" -#: c-common.c:4381 +#: c-common.c:4360 #, gcc-internal-format msgid "invalid application of %<sizeof%> to a function type" msgstr "" -#: c-common.c:4394 +#: c-common.c:4373 #, gcc-internal-format msgid "invalid application of %qs to a void type" msgstr "" -#: c-common.c:4402 +#: c-common.c:4381 #, gcc-internal-format msgid "invalid application of %qs to incomplete type %qT " msgstr "" -#: c-common.c:4443 +#: c-common.c:4422 #, gcc-internal-format msgid "%<__alignof%> applied to a bit-field" msgstr "" -#: c-common.c:5170 +#: c-common.c:5149 #, gcc-internal-format msgid "cannot disable built-in function %qs" msgstr "" -#: c-common.c:5361 +#: c-common.c:5340 #, gcc-internal-format msgid "pointers are not permitted as case values" msgstr "" -#: c-common.c:5368 +#: c-common.c:5347 #, gcc-internal-format msgid "range expressions in switch statements are non-standard" msgstr "" -#: c-common.c:5394 +#: c-common.c:5373 #, gcc-internal-format msgid "empty range specified" msgstr "" -#: c-common.c:5454 +#: c-common.c:5433 #, gcc-internal-format msgid "duplicate (or overlapping) case value" msgstr "" -#: c-common.c:5455 +#: c-common.c:5434 #, gcc-internal-format msgid "%Jthis is the first entry overlapping that value" msgstr "" -#: c-common.c:5459 +#: c-common.c:5438 #, gcc-internal-format msgid "duplicate case value" msgstr "" -#: c-common.c:5460 +#: c-common.c:5439 #, gcc-internal-format msgid "%Jpreviously used here" msgstr "" -#: c-common.c:5464 +#: c-common.c:5443 #, gcc-internal-format msgid "multiple default labels in one switch" msgstr "" -#: c-common.c:5465 +#: c-common.c:5444 #, gcc-internal-format msgid "%Jthis is the first default label" msgstr "" -#: c-common.c:5516 +#: c-common.c:5495 #, gcc-internal-format msgid "%Jcase value %qs not in enumerated type" msgstr "" -#: c-common.c:5520 +#: c-common.c:5499 #, gcc-internal-format msgid "%Jcase value %qs not in enumerated type %qT" msgstr "" -#: c-common.c:5579 +#: c-common.c:5558 #, gcc-internal-format msgid "%Hswitch missing default case" msgstr "" -#: c-common.c:5650 +#: c-common.c:5629 #, gcc-internal-format msgid "%Henumeration value %qE not handled in switch" msgstr "" -#: c-common.c:5685 +#: c-common.c:5664 #, gcc-internal-format msgid "taking the address of a label is non-standard" msgstr "" -#: c-common.c:5858 +#: c-common.c:5837 #, gcc-internal-format msgid "%qE attribute ignored for field of type %qT" msgstr "" -#: c-common.c:5869 c-common.c:5888 c-common.c:5906 c-common.c:5933 -#: c-common.c:5960 c-common.c:5986 c-common.c:6005 c-common.c:6029 -#: c-common.c:6052 c-common.c:6075 c-common.c:6096 c-common.c:6117 -#: c-common.c:6141 c-common.c:6167 c-common.c:6204 c-common.c:6231 -#: c-common.c:6274 c-common.c:6358 c-common.c:6388 c-common.c:6407 -#: c-common.c:6742 c-common.c:6758 c-common.c:6806 c-common.c:6829 -#: c-common.c:6893 c-common.c:7021 c-common.c:7087 c-common.c:7131 -#: c-common.c:7177 c-common.c:7247 c-common.c:7271 c-common.c:7557 -#: c-common.c:7580 c-common.c:7619 c-common.c:7708 c-common.c:7848 -#: ada/gcc-interface/utils.c:4957 ada/gcc-interface/utils.c:5130 -#: ada/gcc-interface/utils.c:5149 +#: c-common.c:5848 c-common.c:5867 c-common.c:5885 c-common.c:5912 +#: c-common.c:5939 c-common.c:5965 c-common.c:5984 c-common.c:6008 +#: c-common.c:6031 c-common.c:6054 c-common.c:6075 c-common.c:6096 +#: c-common.c:6120 c-common.c:6146 c-common.c:6183 c-common.c:6210 +#: c-common.c:6253 c-common.c:6337 c-common.c:6367 c-common.c:6387 +#: c-common.c:6722 c-common.c:6738 c-common.c:6786 c-common.c:6809 +#: c-common.c:6873 c-common.c:7001 c-common.c:7067 c-common.c:7111 +#: c-common.c:7157 c-common.c:7235 c-common.c:7259 c-common.c:7545 +#: c-common.c:7568 c-common.c:7607 c-common.c:7696 c-common.c:7836 tree.c:4066 +#: tree.c:4078 tree.c:4088 config/darwin.c:1437 config/arm/arm.c:3299 +#: config/arm/arm.c:3327 config/avr/avr.c:4807 config/h8300/h8300.c:5283 +#: config/h8300/h8300.c:5307 config/i386/i386.c:4286 config/i386/i386.c:26894 +#: config/ia64/ia64.c:621 config/m68hc11/m68hc11.c:1110 +#: config/rs6000/rs6000.c:20744 config/spu/spu.c:3784 +#: ada/gcc-interface/utils.c:5036 ada/gcc-interface/utils.c:5209 +#: ada/gcc-interface/utils.c:5228 #, gcc-internal-format msgid "%qE attribute ignored" msgstr "" -#: c-common.c:5951 c-common.c:5977 +#: c-common.c:5930 c-common.c:5956 #, gcc-internal-format msgid "%qE attribute conflicts with attribute %s" msgstr "" -#: c-common.c:6198 +#: c-common.c:6177 #, gcc-internal-format msgid "%qE attribute have effect only on public objects" msgstr "" -#: c-common.c:6295 +#: c-common.c:6274 #, gcc-internal-format msgid "destructor priorities are not supported" msgstr "" -#: c-common.c:6297 +#: c-common.c:6276 #, gcc-internal-format msgid "constructor priorities are not supported" msgstr "" -#: c-common.c:6314 +#: c-common.c:6293 #, gcc-internal-format msgid "destructor priorities from 0 to %d are reserved for the implementation" msgstr "" -#: c-common.c:6319 +#: c-common.c:6298 #, gcc-internal-format msgid "constructor priorities from 0 to %d are reserved for the implementation" msgstr "" -#: c-common.c:6327 +#: c-common.c:6306 #, gcc-internal-format msgid "destructor priorities must be integers from 0 to %d inclusive" msgstr "" -#: c-common.c:6330 +#: c-common.c:6309 #, gcc-internal-format msgid "constructor priorities must be integers from 0 to %d inclusive" msgstr "" -#: c-common.c:6451 +#: c-common.c:6431 #, gcc-internal-format -msgid "unknown machine mode %qs" +msgid "unknown machine mode %qE" msgstr "" -#: c-common.c:6480 +#: c-common.c:6460 #, gcc-internal-format msgid "specifying vector types with __attribute__ ((mode)) is deprecated" msgstr "" -#: c-common.c:6483 +#: c-common.c:6463 #, gcc-internal-format msgid "use __attribute__ ((vector_size)) instead" msgstr "" -#: c-common.c:6492 +#: c-common.c:6472 #, gcc-internal-format msgid "unable to emulate %qs" msgstr "" -#: c-common.c:6502 +#: c-common.c:6482 #, gcc-internal-format msgid "invalid pointer mode %qs" msgstr "" -#: c-common.c:6519 +#: c-common.c:6499 #, gcc-internal-format msgid "signness of type and machine mode %qs don't match" msgstr "" -#: c-common.c:6530 +#: c-common.c:6510 #, gcc-internal-format msgid "no data type for mode %qs" msgstr "" -#: c-common.c:6540 +#: c-common.c:6520 #, gcc-internal-format msgid "cannot use mode %qs for enumeral types" msgstr "" -#: c-common.c:6567 +#: c-common.c:6547 #, gcc-internal-format msgid "mode %qs applied to inappropriate type" msgstr "" -#: c-common.c:6598 +#: c-common.c:6578 #, gcc-internal-format msgid "%Jsection attribute cannot be specified for local variables" msgstr "" -#: c-common.c:6609 config/bfin/bfin.c:5329 config/bfin/bfin.c:5380 +#: c-common.c:6589 config/bfin/bfin.c:5371 config/bfin/bfin.c:5422 #, gcc-internal-format msgid "section of %q+D conflicts with previous declaration" msgstr "" -#: c-common.c:6617 +#: c-common.c:6597 #, gcc-internal-format msgid "section of %q+D cannot be overridden" msgstr "" -#: c-common.c:6625 +#: c-common.c:6605 #, gcc-internal-format msgid "section attribute not allowed for %q+D" msgstr "" -#: c-common.c:6631 +#: c-common.c:6611 #, gcc-internal-format msgid "%Jsection attributes are not supported for this target" msgstr "" -#: c-common.c:6663 +#: c-common.c:6643 #, gcc-internal-format msgid "requested alignment is not a constant" msgstr "" -#: c-common.c:6668 +#: c-common.c:6648 #, gcc-internal-format msgid "requested alignment is not a power of 2" msgstr "" -#: c-common.c:6673 +#: c-common.c:6653 #, gcc-internal-format msgid "requested alignment is too large" msgstr "" -#: c-common.c:6699 +#: c-common.c:6679 #, gcc-internal-format msgid "alignment may not be specified for %q+D" msgstr "" -#: c-common.c:6706 +#: c-common.c:6686 #, gcc-internal-format msgid "" "alignment for %q+D was previously specified as %d and may not be decreased" msgstr "" -#: c-common.c:6710 +#: c-common.c:6690 #, gcc-internal-format msgid "alignment for %q+D must be at least %d" msgstr "" -#: c-common.c:6735 +#: c-common.c:6715 #, gcc-internal-format msgid "inline function %q+D cannot be declared weak" msgstr "" -#: c-common.c:6769 +#: c-common.c:6749 #, gcc-internal-format msgid "%q+D defined both normally and as an alias" msgstr "" -#: c-common.c:6785 +#: c-common.c:6765 #, gcc-internal-format msgid "alias argument not a string" msgstr "" -#: c-common.c:6850 +#: c-common.c:6830 #, gcc-internal-format msgid "%Jweakref attribute must appear before alias attribute" msgstr "" -#: c-common.c:6880 +#: c-common.c:6860 #, gcc-internal-format msgid "%qE attribute ignored on non-class types" msgstr "" -#: c-common.c:6886 +#: c-common.c:6866 #, gcc-internal-format msgid "%qE attribute ignored because %qT is already defined" msgstr "" -#: c-common.c:6899 +#: c-common.c:6879 #, gcc-internal-format msgid "visibility argument not a string" msgstr "" -#: c-common.c:6911 +#: c-common.c:6891 #, gcc-internal-format msgid "%qE attribute ignored on types" msgstr "" -#: c-common.c:6927 +#: c-common.c:6907 #, gcc-internal-format msgid "" "visibility argument must be one of \"default\", \"hidden\", \"protected\" or " "\"internal\"" msgstr "" -#: c-common.c:6938 +#: c-common.c:6918 #, gcc-internal-format msgid "%qD redeclared with different visibility" msgstr "" -#: c-common.c:6941 c-common.c:6945 +#: c-common.c:6921 c-common.c:6925 #, gcc-internal-format msgid "%qD was declared %qs which implies default visibility" msgstr "" -#: c-common.c:7029 +#: c-common.c:7009 #, gcc-internal-format msgid "tls_model argument not a string" msgstr "" -#: c-common.c:7042 +#: c-common.c:7022 #, gcc-internal-format msgid "" "tls_model argument must be one of \"local-exec\", \"initial-exec\", \"local-" "dynamic\" or \"global-dynamic\"" msgstr "" -#: c-common.c:7061 c-common.c:7151 +#: c-common.c:7041 c-common.c:7131 #, gcc-internal-format msgid "%J%qE attribute applies only to functions" msgstr "" -#: c-common.c:7066 c-common.c:7156 +#: c-common.c:7046 c-common.c:7136 #, gcc-internal-format msgid "%Jcan%'t set %qE attribute after definition" msgstr "" -#: c-common.c:7112 +#: c-common.c:7092 #, gcc-internal-format msgid "alloc_size parameter outside range" msgstr "" -#: c-common.c:7245 +#: c-common.c:7193 +#, gcc-internal-format +msgid "deprecated message is not a string" +msgstr "" + +#: c-common.c:7233 #, gcc-internal-format msgid "%qE attribute ignored for %qE" msgstr "" -#: c-common.c:7305 +#: c-common.c:7293 #, gcc-internal-format msgid "invalid vector type for attribute %qE" msgstr "" -#: c-common.c:7311 +#: c-common.c:7299 #, gcc-internal-format msgid "vector size not an integral multiple of component size" msgstr "" -#: c-common.c:7317 +#: c-common.c:7305 #, gcc-internal-format msgid "zero vector size" msgstr "" -#: c-common.c:7325 +#: c-common.c:7313 #, gcc-internal-format msgid "number of components of the vector not a power of two" msgstr "" -#: c-common.c:7353 ada/gcc-interface/utils.c:5008 +#: c-common.c:7341 ada/gcc-interface/utils.c:5087 #, gcc-internal-format msgid "nonnull attribute without arguments on a non-prototype" msgstr "" -#: c-common.c:7368 ada/gcc-interface/utils.c:5023 +#: c-common.c:7356 ada/gcc-interface/utils.c:5102 #, gcc-internal-format msgid "nonnull argument has invalid operand number (argument %lu)" msgstr "" -#: c-common.c:7387 ada/gcc-interface/utils.c:5042 +#: c-common.c:7375 ada/gcc-interface/utils.c:5121 #, gcc-internal-format msgid "" "nonnull argument with out-of-range operand number (argument %lu, operand %lu)" msgstr "" -#: c-common.c:7395 ada/gcc-interface/utils.c:5050 +#: c-common.c:7383 ada/gcc-interface/utils.c:5129 #, gcc-internal-format msgid "" "nonnull argument references non-pointer operand (argument %lu, operand %lu)" msgstr "" -#: c-common.c:7471 +#: c-common.c:7459 #, gcc-internal-format msgid "not enough variable arguments to fit a sentinel" msgstr "" -#: c-common.c:7485 +#: c-common.c:7473 #, gcc-internal-format msgid "missing sentinel in function call" msgstr "" -#: c-common.c:7526 +#: c-common.c:7514 #, gcc-internal-format msgid "null argument where non-null required (argument %lu)" msgstr "" -#: c-common.c:7591 +#: c-common.c:7579 #, gcc-internal-format msgid "cleanup argument not an identifier" msgstr "" -#: c-common.c:7598 +#: c-common.c:7586 #, gcc-internal-format msgid "cleanup argument not a function" msgstr "" -#: c-common.c:7637 ada/gcc-interface/utils.c:5072 +#: c-common.c:7625 ada/gcc-interface/utils.c:5151 #, gcc-internal-format msgid "%qE attribute requires prototypes with named arguments" msgstr "" -#: c-common.c:7648 ada/gcc-interface/utils.c:5083 +#: c-common.c:7636 ada/gcc-interface/utils.c:5162 #, gcc-internal-format msgid "%qE attribute only applies to variadic functions" msgstr "" -#: c-common.c:7660 ada/gcc-interface/utils.c:5094 +#: c-common.c:7648 ada/gcc-interface/utils.c:5173 #, gcc-internal-format msgid "requested position is not an integer constant" msgstr "" -#: c-common.c:7668 ada/gcc-interface/utils.c:5101 +#: c-common.c:7656 ada/gcc-interface/utils.c:5180 #, gcc-internal-format msgid "requested position is less than zero" msgstr "" -#: c-common.c:7792 +#: c-common.c:7780 #, gcc-internal-format msgid "Bad option %s to optimize attribute." msgstr "" -#: c-common.c:7795 +#: c-common.c:7783 #, gcc-internal-format msgid "Bad option %s to pragma attribute" msgstr "" -#: c-common.c:7988 +#: c-common.c:7976 #, gcc-internal-format msgid "not enough arguments to function %qE" msgstr "" -#: c-common.c:7993 c-typeck.c:2669 +#: c-common.c:7981 c-typeck.c:2664 #, gcc-internal-format msgid "too many arguments to function %qE" msgstr "" -#: c-common.c:8023 c-common.c:8069 +#: c-common.c:8011 c-common.c:8057 #, gcc-internal-format msgid "non-floating-point argument in call to function %qE" msgstr "" -#: c-common.c:8046 +#: c-common.c:8034 #, gcc-internal-format msgid "non-floating-point arguments in call to function %qE" msgstr "" -#: c-common.c:8062 +#: c-common.c:8050 #, gcc-internal-format msgid "non-const integer argument %u in call to function %qE" msgstr "" -#: c-common.c:8355 +#: c-common.c:8343 #, gcc-internal-format msgid "" "%Hignoring return value of %qD, declared with attribute warn_unused_result" msgstr "" -#: c-common.c:8359 +#: c-common.c:8347 #, gcc-internal-format msgid "" "%Hignoring return value of function declared with attribute " "warn_unused_result" msgstr "" -#: c-common.c:8413 +#: c-common.c:8401 #, gcc-internal-format msgid "cannot apply %<offsetof%> to static data member %qD" msgstr "" -#: c-common.c:8418 +#: c-common.c:8406 #, gcc-internal-format msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded" msgstr "" -#: c-common.c:8439 cp/typeck.c:4708 +#: c-common.c:8427 cp/typeck.c:4708 #, gcc-internal-format msgid "attempt to take address of bit-field structure member %qD" msgstr "" -#: c-common.c:8492 +#: c-common.c:8480 #, gcc-internal-format msgid "lvalue required as left operand of assignment" msgstr "" -#: c-common.c:8495 +#: c-common.c:8483 #, gcc-internal-format msgid "lvalue required as increment operand" msgstr "" -#: c-common.c:8498 +#: c-common.c:8486 #, gcc-internal-format msgid "lvalue required as decrement operand" msgstr "" -#: c-common.c:8501 +#: c-common.c:8489 #, gcc-internal-format msgid "lvalue required as unary %<&%> operand" msgstr "" -#: c-common.c:8504 +#: c-common.c:8492 #, gcc-internal-format msgid "lvalue required in asm statement" msgstr "" -#: c-common.c:8633 +#: c-common.c:8621 #, gcc-internal-format msgid "size of array is too large" msgstr "" -#: c-common.c:8669 c-common.c:8720 c-typeck.c:2888 +#: c-common.c:8657 c-common.c:8708 c-typeck.c:2883 #, gcc-internal-format msgid "too few arguments to function %qE" msgstr "" -#: c-common.c:8686 c-typeck.c:4964 +#: c-common.c:8674 c-typeck.c:4972 #, gcc-internal-format msgid "incompatible type for argument %d of %qE" msgstr "" -#: c-common.c:8881 +#: c-common.c:8869 #, gcc-internal-format msgid "array subscript has type %<char%>" msgstr "" -#: c-common.c:8916 +#: c-common.c:8904 #, gcc-internal-format msgid "suggest parentheses around %<+%> inside %<<<%>" msgstr "" -#: c-common.c:8919 +#: c-common.c:8907 #, gcc-internal-format msgid "suggest parentheses around %<-%> inside %<<<%>" msgstr "" -#: c-common.c:8925 +#: c-common.c:8913 #, gcc-internal-format msgid "suggest parentheses around %<+%> inside %<>>%>" msgstr "" -#: c-common.c:8928 +#: c-common.c:8916 #, gcc-internal-format msgid "suggest parentheses around %<-%> inside %<>>%>" msgstr "" -#: c-common.c:8934 +#: c-common.c:8922 #, gcc-internal-format msgid "suggest parentheses around %<&&%> within %<||%>" msgstr "" -#: c-common.c:8943 +#: c-common.c:8931 #, gcc-internal-format msgid "suggest parentheses around arithmetic in operand of %<|%>" msgstr "" -#: c-common.c:8948 +#: c-common.c:8936 #, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<|%>" msgstr "" -#: c-common.c:8952 +#: c-common.c:8940 #, gcc-internal-format msgid "" "suggest parentheses around operand of %<!%> or change %<|%> to %<||%> or %<!%" "> to %<~%>" msgstr "" -#: c-common.c:8962 +#: c-common.c:8950 #, gcc-internal-format msgid "suggest parentheses around arithmetic in operand of %<^%>" msgstr "" -#: c-common.c:8967 +#: c-common.c:8955 #, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<^%>" msgstr "" -#: c-common.c:8973 +#: c-common.c:8961 #, gcc-internal-format msgid "suggest parentheses around %<+%> in operand of %<&%>" msgstr "" -#: c-common.c:8976 +#: c-common.c:8964 #, gcc-internal-format msgid "suggest parentheses around %<-%> in operand of %<&%>" msgstr "" -#: c-common.c:8981 +#: c-common.c:8969 #, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<&%>" msgstr "" -#: c-common.c:8985 +#: c-common.c:8973 #, gcc-internal-format msgid "" "suggest parentheses around operand of %<!%> or change %<&%> to %<&&%> or %<!%" "> to %<~%>" msgstr "" -#: c-common.c:8993 +#: c-common.c:8981 #, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<==%>" msgstr "" -#: c-common.c:8999 +#: c-common.c:8987 #, gcc-internal-format msgid "suggest parentheses around comparison in operand of %<!=%>" msgstr "" -#: c-common.c:9010 +#: c-common.c:8998 #, gcc-internal-format msgid "comparisons like %<X<=Y<=Z%> do not have their mathematical meaning" msgstr "" -#: c-common.c:9025 +#: c-common.c:9013 #, gcc-internal-format msgid "label %q+D defined but not used" msgstr "" -#: c-common.c:9027 +#: c-common.c:9015 #, gcc-internal-format msgid "label %q+D declared but not defined" msgstr "" -#: c-common.c:9047 +#: c-common.c:9035 #, gcc-internal-format msgid "division by zero" msgstr "" -#: c-common.c:9079 +#: c-common.c:9067 #, gcc-internal-format msgid "comparison between types %qT and %qT" msgstr "" -#: c-common.c:9130 +#: c-common.c:9118 #, gcc-internal-format msgid "comparison between signed and unsigned integer expressions" msgstr "" -#: c-common.c:9181 +#: c-common.c:9169 #, gcc-internal-format msgid "promoted ~unsigned is always non-zero" msgstr "" -#: c-common.c:9184 +#: c-common.c:9172 #, gcc-internal-format msgid "comparison of promoted ~unsigned with constant" msgstr "" -#: c-common.c:9194 +#: c-common.c:9182 #, gcc-internal-format msgid "comparison of promoted ~unsigned with unsigned" msgstr "" @@ -18510,8 +18769,8 @@ msgstr "" #. an unprototyped function, it is compile-time undefined; #. making it a constraint in that case was rejected in #. DR#252. -#: c-convert.c:98 c-typeck.c:1803 c-typeck.c:4583 cp/typeck.c:1619 -#: cp/typeck.c:5967 cp/typeck.c:6577 fortran/convert.c:88 +#: c-convert.c:98 c-typeck.c:1788 c-typeck.c:4591 cp/typeck.c:1619 +#: cp/typeck.c:5974 cp/typeck.c:6584 fortran/convert.c:88 #, gcc-internal-format msgid "void value not ignored as it ought to be" msgstr "" @@ -18521,111 +18780,121 @@ msgstr "" msgid "conversion to non-scalar type requested" msgstr "" -#: c-decl.c:553 +#: c-decl.c:578 #, gcc-internal-format msgid "array %q+D assumed to have one element" msgstr "" -#: c-decl.c:658 +#: c-decl.c:619 +#, gcc-internal-format +msgid "%qD is static but used in inline function %qD which is not static" +msgstr "" + +#: c-decl.c:624 +#, gcc-internal-format +msgid "%q+D is static but declared in inline function %qD which is not static" +msgstr "" + +#: c-decl.c:769 #, gcc-internal-format msgid "GCC supports only %u nested scopes" msgstr "" -#: c-decl.c:744 cp/decl.c:358 +#: c-decl.c:855 cp/decl.c:356 #, gcc-internal-format msgid "label %q+D used but not defined" msgstr "" -#: c-decl.c:785 +#: c-decl.c:896 #, gcc-internal-format msgid "nested function %q+D declared but never defined" msgstr "" -#: c-decl.c:797 +#: c-decl.c:908 #, gcc-internal-format msgid "inline function %q+D declared but never defined" msgstr "" -#: c-decl.c:812 cp/decl.c:603 +#: c-decl.c:923 cp/decl.c:601 #, gcc-internal-format msgid "unused variable %q+D" msgstr "" -#: c-decl.c:816 +#: c-decl.c:927 #, gcc-internal-format msgid "type of array %q+D completed incompatibly with implicit initialization" msgstr "" -#: c-decl.c:1064 +#: c-decl.c:1177 #, gcc-internal-format msgid "" "a parameter list with an ellipsis can%'t match an empty parameter name list " "declaration" msgstr "" -#: c-decl.c:1071 +#: c-decl.c:1184 #, gcc-internal-format msgid "" "an argument type that has a default promotion can%'t match an empty " "parameter name list declaration" msgstr "" -#: c-decl.c:1112 +#: c-decl.c:1225 #, gcc-internal-format msgid "" "prototype for %q+D declares more arguments than previous old-style definition" msgstr "" -#: c-decl.c:1118 +#: c-decl.c:1231 #, gcc-internal-format msgid "" "prototype for %q+D declares fewer arguments than previous old-style " "definition" msgstr "" -#: c-decl.c:1127 +#: c-decl.c:1240 #, gcc-internal-format msgid "prototype for %q+D declares argument %d with incompatible type" msgstr "" #. If we get here, no errors were found, but do issue a warning #. for this poor-style construct. -#: c-decl.c:1140 +#: c-decl.c:1253 #, gcc-internal-format msgid "prototype for %q+D follows non-prototype definition" msgstr "" -#: c-decl.c:1155 +#: c-decl.c:1268 #, gcc-internal-format msgid "previous definition of %q+D was here" msgstr "" -#: c-decl.c:1157 +#: c-decl.c:1270 #, gcc-internal-format msgid "previous implicit declaration of %q+D was here" msgstr "" -#: c-decl.c:1159 +#: c-decl.c:1272 #, gcc-internal-format msgid "previous declaration of %q+D was here" msgstr "" -#: c-decl.c:1199 +#: c-decl.c:1312 #, gcc-internal-format msgid "%q+D redeclared as different kind of symbol" msgstr "" -#: c-decl.c:1203 +#: c-decl.c:1316 #, gcc-internal-format msgid "built-in function %q+D declared as non-function" msgstr "" -#: c-decl.c:1206 c-decl.c:1326 c-decl.c:2000 +#: c-decl.c:1319 c-decl.c:1439 c-decl.c:2113 #, gcc-internal-format msgid "declaration of %q+D shadows a built-in function" msgstr "" -#: c-decl.c:1215 +#: c-decl.c:1328 #, gcc-internal-format msgid "redeclaration of enumerator %q+D" msgstr "" @@ -18633,269 +18902,269 @@ msgstr "" #. If types don't match for a built-in, throw away the #. built-in. No point in calling locate_old_decl here, it #. won't print anything. -#: c-decl.c:1236 +#: c-decl.c:1349 #, gcc-internal-format msgid "conflicting types for built-in function %q+D" msgstr "" -#: c-decl.c:1261 c-decl.c:1274 c-decl.c:1283 +#: c-decl.c:1374 c-decl.c:1387 c-decl.c:1396 #, gcc-internal-format msgid "conflicting types for %q+D" msgstr "" -#: c-decl.c:1281 +#: c-decl.c:1394 #, gcc-internal-format msgid "conflicting type qualifiers for %q+D" msgstr "" #. Allow OLDDECL to continue in use. -#: c-decl.c:1301 +#: c-decl.c:1414 #, gcc-internal-format msgid "redefinition of typedef %q+D" msgstr "" -#: c-decl.c:1352 c-decl.c:1454 +#: c-decl.c:1465 c-decl.c:1567 #, gcc-internal-format msgid "redefinition of %q+D" msgstr "" -#: c-decl.c:1387 c-decl.c:1492 +#: c-decl.c:1500 c-decl.c:1605 #, gcc-internal-format msgid "static declaration of %q+D follows non-static declaration" msgstr "" -#: c-decl.c:1397 c-decl.c:1405 c-decl.c:1482 c-decl.c:1489 +#: c-decl.c:1510 c-decl.c:1518 c-decl.c:1595 c-decl.c:1602 #, gcc-internal-format msgid "non-static declaration of %q+D follows static declaration" msgstr "" -#: c-decl.c:1421 +#: c-decl.c:1534 #, gcc-internal-format msgid "%<gnu_inline%> attribute present on %q+D" msgstr "" -#: c-decl.c:1423 +#: c-decl.c:1536 #, gcc-internal-format msgid "%Jbut not here" msgstr "" -#: c-decl.c:1441 +#: c-decl.c:1554 #, gcc-internal-format msgid "thread-local declaration of %q+D follows non-thread-local declaration" msgstr "" -#: c-decl.c:1444 +#: c-decl.c:1557 #, gcc-internal-format msgid "non-thread-local declaration of %q+D follows thread-local declaration" msgstr "" -#: c-decl.c:1474 +#: c-decl.c:1587 #, gcc-internal-format msgid "extern declaration of %q+D follows declaration with no linkage" msgstr "" -#: c-decl.c:1510 +#: c-decl.c:1623 #, gcc-internal-format msgid "declaration of %q+D with no linkage follows extern declaration" msgstr "" -#: c-decl.c:1516 +#: c-decl.c:1629 #, gcc-internal-format msgid "redeclaration of %q+D with no linkage" msgstr "" -#: c-decl.c:1530 +#: c-decl.c:1643 #, gcc-internal-format msgid "" "redeclaration of %q+D with different visibility (old visibility preserved)" msgstr "" -#: c-decl.c:1541 +#: c-decl.c:1654 #, gcc-internal-format msgid "inline declaration of %qD follows declaration with attribute noinline" msgstr "" -#: c-decl.c:1548 +#: c-decl.c:1661 #, gcc-internal-format msgid "declaration of %q+D with attribute noinline follows inline declaration " msgstr "" -#: c-decl.c:1566 +#: c-decl.c:1679 #, gcc-internal-format msgid "redefinition of parameter %q+D" msgstr "" -#: c-decl.c:1593 +#: c-decl.c:1706 #, gcc-internal-format msgid "redundant redeclaration of %q+D" msgstr "" -#: c-decl.c:1987 +#: c-decl.c:2100 #, gcc-internal-format msgid "declaration of %q+D shadows previous non-variable" msgstr "" -#: c-decl.c:1992 +#: c-decl.c:2105 #, gcc-internal-format msgid "declaration of %q+D shadows a parameter" msgstr "" -#: c-decl.c:1995 +#: c-decl.c:2108 #, gcc-internal-format msgid "declaration of %q+D shadows a global declaration" msgstr "" -#: c-decl.c:2005 +#: c-decl.c:2118 #, gcc-internal-format msgid "declaration of %q+D shadows a previous local" msgstr "" -#: c-decl.c:2008 cp/name-lookup.c:1049 cp/name-lookup.c:1080 -#: cp/name-lookup.c:1088 +#: c-decl.c:2121 cp/name-lookup.c:1048 cp/name-lookup.c:1079 +#: cp/name-lookup.c:1087 #, gcc-internal-format msgid "%Jshadowed declaration is here" msgstr "" -#: c-decl.c:2141 +#: c-decl.c:2254 #, gcc-internal-format msgid "nested extern declaration of %qD" msgstr "" -#: c-decl.c:2309 c-decl.c:2312 +#: c-decl.c:2422 c-decl.c:2425 #, gcc-internal-format msgid "implicit declaration of function %qE" msgstr "" -#: c-decl.c:2375 +#: c-decl.c:2488 #, gcc-internal-format msgid "incompatible implicit declaration of built-in function %qD" msgstr "" -#: c-decl.c:2384 +#: c-decl.c:2497 #, gcc-internal-format msgid "incompatible implicit declaration of function %qD" msgstr "" -#: c-decl.c:2438 +#: c-decl.c:2551 #, gcc-internal-format msgid "%H%qE undeclared here (not in a function)" msgstr "" -#: c-decl.c:2443 +#: c-decl.c:2556 #, gcc-internal-format msgid "%H%qE undeclared (first use in this function)" msgstr "" -#: c-decl.c:2447 +#: c-decl.c:2560 #, gcc-internal-format msgid "%H(Each undeclared identifier is reported only once" msgstr "" -#: c-decl.c:2448 +#: c-decl.c:2561 #, gcc-internal-format msgid "%Hfor each function it appears in.)" msgstr "" -#: c-decl.c:2487 cp/decl.c:2406 +#: c-decl.c:2600 cp/decl.c:2404 #, gcc-internal-format msgid "label %qE referenced outside of any function" msgstr "" -#: c-decl.c:2529 +#: c-decl.c:2642 #, gcc-internal-format msgid "duplicate label declaration %qE" msgstr "" -#: c-decl.c:2565 +#: c-decl.c:2678 #, gcc-internal-format msgid "%Hduplicate label %qD" msgstr "" -#: c-decl.c:2575 +#: c-decl.c:2688 #, gcc-internal-format msgid "%Jjump into statement expression" msgstr "" -#: c-decl.c:2577 +#: c-decl.c:2690 #, gcc-internal-format msgid "%Jjump into scope of identifier with variably modified type" msgstr "" -#: c-decl.c:2592 +#: c-decl.c:2705 #, gcc-internal-format msgid "" "%Htraditional C lacks a separate namespace for labels, identifier %qE " "conflicts" msgstr "" -#: c-decl.c:2667 +#: c-decl.c:2780 #, gcc-internal-format msgid "%H%qE defined as wrong kind of tag" msgstr "" -#: c-decl.c:2898 +#: c-decl.c:3011 #, gcc-internal-format msgid "unnamed struct/union that defines no instances" msgstr "" -#: c-decl.c:2907 +#: c-decl.c:3020 #, gcc-internal-format msgid "empty declaration with storage class specifier does not redeclare tag" msgstr "" -#: c-decl.c:2919 +#: c-decl.c:3032 #, gcc-internal-format msgid "empty declaration with type qualifier does not redeclare tag" msgstr "" -#: c-decl.c:2941 c-decl.c:2948 +#: c-decl.c:3054 c-decl.c:3061 #, gcc-internal-format msgid "useless type name in empty declaration" msgstr "" -#: c-decl.c:2956 +#: c-decl.c:3069 #, gcc-internal-format msgid "%<inline%> in empty declaration" msgstr "" -#: c-decl.c:2962 +#: c-decl.c:3075 #, gcc-internal-format msgid "%<auto%> in file-scope empty declaration" msgstr "" -#: c-decl.c:2968 +#: c-decl.c:3081 #, gcc-internal-format msgid "%<register%> in file-scope empty declaration" msgstr "" -#: c-decl.c:2974 +#: c-decl.c:3087 #, gcc-internal-format msgid "useless storage class specifier in empty declaration" msgstr "" -#: c-decl.c:2980 +#: c-decl.c:3093 #, gcc-internal-format msgid "useless %<__thread%> in empty declaration" msgstr "" -#: c-decl.c:2988 +#: c-decl.c:3101 #, gcc-internal-format msgid "useless type qualifier in empty declaration" msgstr "" -#: c-decl.c:2995 c-parser.c:1175 +#: c-decl.c:3108 c-parser.c:1176 #, gcc-internal-format msgid "empty declaration" msgstr "" -#: c-decl.c:3062 +#: c-decl.c:3175 #, gcc-internal-format msgid "" "ISO C90 does not support %<static%> or type qualifiers in parameter array " "declarators" msgstr "" -#: c-decl.c:3066 +#: c-decl.c:3179 #, gcc-internal-format msgid "ISO C90 does not support %<[*]%> array declarators" msgstr "" @@ -18903,723 +19172,792 @@ msgstr "" #. C99 6.7.5.2p4 #. A function definition isn't function prototype scope C99 6.2.1p4. #. C99 6.7.5.2p4 -#: c-decl.c:3073 c-decl.c:5087 +#: c-decl.c:3186 c-decl.c:5294 #, gcc-internal-format msgid "%<[*]%> not allowed in other than function prototype scope" msgstr "" -#: c-decl.c:3185 +#: c-decl.c:3298 #, gcc-internal-format msgid "%q+D is usually a function" msgstr "" -#: c-decl.c:3194 cp/decl2.c:781 +#: c-decl.c:3307 cp/decl2.c:781 #, gcc-internal-format msgid "typedef %qD is initialized (use __typeof__ instead)" msgstr "" -#: c-decl.c:3199 +#: c-decl.c:3312 #, gcc-internal-format msgid "function %qD is initialized like a variable" msgstr "" #. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE. -#: c-decl.c:3205 +#: c-decl.c:3318 #, gcc-internal-format msgid "parameter %qD is initialized" msgstr "" -#: c-decl.c:3230 +#: c-decl.c:3343 #, gcc-internal-format msgid "variable %qD has initializer but incomplete type" msgstr "" -#: c-decl.c:3319 c-decl.c:6206 cp/decl.c:4106 cp/decl.c:11495 +#: c-decl.c:3432 c-decl.c:6429 cp/decl.c:4104 cp/decl.c:11493 #, gcc-internal-format msgid "inline function %q+D given attribute noinline" msgstr "" -#: c-decl.c:3332 -#, gcc-internal-format -msgid "%q+D is static but declared in inline function %qD which is not static" -msgstr "" - -#: c-decl.c:3424 +#: c-decl.c:3536 #, gcc-internal-format msgid "initializer fails to determine size of %q+D" msgstr "" -#: c-decl.c:3429 +#: c-decl.c:3541 #, gcc-internal-format msgid "array size missing in %q+D" msgstr "" -#: c-decl.c:3441 +#: c-decl.c:3553 #, gcc-internal-format msgid "zero or negative size array %q+D" msgstr "" -#: c-decl.c:3496 varasm.c:2118 +#: c-decl.c:3608 varasm.c:2117 #, gcc-internal-format msgid "storage size of %q+D isn%'t known" msgstr "" -#: c-decl.c:3507 +#: c-decl.c:3619 #, gcc-internal-format msgid "storage size of %q+D isn%'t constant" msgstr "" -#: c-decl.c:3554 +#: c-decl.c:3666 #, gcc-internal-format msgid "ignoring asm-specifier for non-static local variable %q+D" msgstr "" -#: c-decl.c:3582 fortran/f95-lang.c:624 +#: c-decl.c:3694 fortran/f95-lang.c:620 #, gcc-internal-format msgid "cannot put object with volatile field into register" msgstr "" -#: c-decl.c:3711 +#: c-decl.c:3823 #, gcc-internal-format msgid "ISO C forbids forward parameter declarations" msgstr "" -#: c-decl.c:3837 +#: c-decl.c:3951 #, gcc-internal-format msgid "bit-field %qs width not an integer constant" msgstr "" -#: c-decl.c:3845 +#: c-decl.c:3959 #, gcc-internal-format msgid "negative width in bit-field %qs" msgstr "" -#: c-decl.c:3850 +#: c-decl.c:3964 #, gcc-internal-format msgid "zero width for bit-field %qs" msgstr "" -#: c-decl.c:3860 +#: c-decl.c:3974 #, gcc-internal-format msgid "bit-field %qs has invalid type" msgstr "" -#: c-decl.c:3870 +#: c-decl.c:3984 #, gcc-internal-format msgid "type of bit-field %qs is a GCC extension" msgstr "" -#: c-decl.c:3876 +#: c-decl.c:3990 #, gcc-internal-format msgid "width of %qs exceeds its type" msgstr "" -#: c-decl.c:3889 +#: c-decl.c:4003 #, gcc-internal-format msgid "%qs is narrower than values of its type" msgstr "" -#: c-decl.c:3907 +#: c-decl.c:4022 #, gcc-internal-format -msgid "ISO C90 forbids array %qs whose size can%'t be evaluated" +msgid "ISO C90 forbids array %qE whose size can%'t be evaluated" msgstr "" -#: c-decl.c:3911 +#: c-decl.c:4026 #, gcc-internal-format msgid "ISO C90 forbids array whose size can%'t be evaluated" msgstr "" -#: c-decl.c:3917 +#: c-decl.c:4033 #, gcc-internal-format -msgid "ISO C90 forbids variable length array %qs" +msgid "ISO C90 forbids variable length array %qE" msgstr "" -#: c-decl.c:3920 +#: c-decl.c:4036 #, gcc-internal-format msgid "ISO C90 forbids variable length array" msgstr "" -#: c-decl.c:3929 +#: c-decl.c:4045 #, gcc-internal-format -msgid "the size of array %qs can%'t be evaluated" +msgid "the size of array %qE can%'t be evaluated" msgstr "" -#: c-decl.c:3933 +#: c-decl.c:4049 #, gcc-internal-format msgid "the size of array can %'t be evaluated" msgstr "" -#: c-decl.c:3939 +#: c-decl.c:4055 #, gcc-internal-format -msgid "variable length array %qs is used" +msgid "variable length array %qE is used" msgstr "" -#: c-decl.c:3943 cp/decl.c:7267 +#: c-decl.c:4059 cp/decl.c:7265 #, gcc-internal-format msgid "variable length array is used" msgstr "" -#: c-decl.c:4081 c-decl.c:4377 c-decl.c:4386 +#: c-decl.c:4230 c-decl.c:4559 c-decl.c:4569 +#, gcc-internal-format +msgid "variably modified %qE at file scope" +msgstr "" + +#: c-decl.c:4232 #, gcc-internal-format -msgid "variably modified %qs at file scope" +msgid "variably modified field at file scope" msgstr "" -#: c-decl.c:4099 +#: c-decl.c:4252 #, gcc-internal-format -msgid "type defaults to %<int%> in declaration of %qs" +msgid "type defaults to %<int%> in declaration of %qE" msgstr "" -#: c-decl.c:4127 +#: c-decl.c:4256 +#, gcc-internal-format +msgid "type defaults to %<int%> in type name" +msgstr "" + +#: c-decl.c:4285 #, gcc-internal-format msgid "duplicate %<const%>" msgstr "" -#: c-decl.c:4129 +#: c-decl.c:4287 #, gcc-internal-format msgid "duplicate %<restrict%>" msgstr "" -#: c-decl.c:4131 +#: c-decl.c:4289 #, gcc-internal-format msgid "duplicate %<volatile%>" msgstr "" -#: c-decl.c:4151 +#: c-decl.c:4309 #, gcc-internal-format msgid "function definition declared %<auto%>" msgstr "" -#: c-decl.c:4153 +#: c-decl.c:4311 #, gcc-internal-format msgid "function definition declared %<register%>" msgstr "" -#: c-decl.c:4155 +#: c-decl.c:4313 #, gcc-internal-format msgid "function definition declared %<typedef%>" msgstr "" -#: c-decl.c:4157 +#: c-decl.c:4315 #, gcc-internal-format msgid "function definition declared %<__thread%>" msgstr "" -#: c-decl.c:4173 +#: c-decl.c:4332 #, gcc-internal-format -msgid "storage class specified for structure field %qs" +msgid "storage class specified for structure field %qE" msgstr "" -#: c-decl.c:4177 cp/decl.c:8165 +#: c-decl.c:4335 #, gcc-internal-format -msgid "storage class specified for parameter %qs" +msgid "storage class specified for structure field" msgstr "" -#: c-decl.c:4180 cp/decl.c:8167 +#: c-decl.c:4339 +#, gcc-internal-format +msgid "storage class specified for parameter %qE" +msgstr "" + +#: c-decl.c:4341 +#, gcc-internal-format +msgid "storage class specified for unnamed parameter" +msgstr "" + +#: c-decl.c:4344 cp/decl.c:8165 #, gcc-internal-format msgid "storage class specified for typename" msgstr "" -#: c-decl.c:4197 cp/decl.c:9458 +#: c-decl.c:4361 #, gcc-internal-format -msgid "%qs initialized and declared %<extern%>" +msgid "%qE initialized and declared %<extern%>" msgstr "" -#: c-decl.c:4200 cp/decl.c:9462 +#: c-decl.c:4364 #, gcc-internal-format -msgid "%qs has both %<extern%> and initializer" +msgid "%qE has both %<extern%> and initializer" msgstr "" -#: c-decl.c:4205 +#: c-decl.c:4369 #, gcc-internal-format -msgid "file-scope declaration of %qs specifies %<auto%>" +msgid "file-scope declaration of %qE specifies %<auto%>" msgstr "" -#: c-decl.c:4208 +#: c-decl.c:4372 #, gcc-internal-format -msgid "file-scope declaration of %qs specifies %<register%>" +msgid "file-scope declaration of %qE specifies %<register%>" msgstr "" -#: c-decl.c:4213 cp/decl.c:8178 +#: c-decl.c:4377 #, gcc-internal-format -msgid "nested function %qs declared %<extern%>" +msgid "nested function %qE declared %<extern%>" msgstr "" -#: c-decl.c:4216 cp/decl.c:8188 +#: c-decl.c:4380 #, gcc-internal-format -msgid "function-scope %qs implicitly auto and declared %<__thread%>" +msgid "function-scope %qE implicitly auto and declared %<__thread%>" 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-decl.c:4263 c-decl.c:4557 +#: c-decl.c:4427 c-decl.c:4743 #, gcc-internal-format msgid "static or type qualifiers in non-parameter array declarator" msgstr "" -#: c-decl.c:4310 +#: c-decl.c:4475 +#, gcc-internal-format +msgid "declaration of %qE as array of voids" +msgstr "" + +#: c-decl.c:4477 +#, gcc-internal-format +msgid "declaration of type name as array of voids" +msgstr "" + +#: c-decl.c:4484 #, gcc-internal-format -msgid "declaration of %qs as array of voids" +msgid "declaration of %qE as array of functions" msgstr "" -#: c-decl.c:4316 +#: c-decl.c:4486 #, gcc-internal-format -msgid "declaration of %qs as array of functions" +msgid "declaration of type name as array of functions" msgstr "" -#: c-decl.c:4322 +#: c-decl.c:4492 #, gcc-internal-format msgid "invalid use of structure with flexible array member" msgstr "" -#: c-decl.c:4347 +#: c-decl.c:4518 #, gcc-internal-format -msgid "size of array %qs has non-integer type" +msgid "size of array %qE has non-integer type" msgstr "" -#: c-decl.c:4355 +#: c-decl.c:4520 #, gcc-internal-format -msgid "ISO C forbids zero-size array %qs" +msgid "size of unnamed array has non-integer type" msgstr "" -#: c-decl.c:4362 +#: c-decl.c:4530 #, gcc-internal-format -msgid "size of array %qs is negative" +msgid "ISO C forbids zero-size array %qE" msgstr "" -#: c-decl.c:4436 c-decl.c:4718 cp/decl.c:8696 +#: c-decl.c:4533 #, gcc-internal-format -msgid "size of array %qs is too large" +msgid "ISO C forbids zero-size array" +msgstr "" + +#: c-decl.c:4542 +#, gcc-internal-format +msgid "size of array %qE is negative" +msgstr "" + +#: c-decl.c:4544 +#, gcc-internal-format +msgid "size of unnamed array is negative" +msgstr "" + +#: c-decl.c:4620 c-decl.c:4913 +#, gcc-internal-format +msgid "size of array %qE is too large" msgstr "" -#: c-decl.c:4473 +#: c-decl.c:4622 c-decl.c:4915 +#, gcc-internal-format +msgid "size of unnamed array is too large" +msgstr "" + +#: c-decl.c:4659 #, gcc-internal-format msgid "ISO C90 does not support flexible array members" msgstr "" #. C99 6.7.5.2p4 -#: c-decl.c:4494 +#: c-decl.c:4680 #, gcc-internal-format msgid "%<[*]%> not in a declaration" msgstr "" -#: c-decl.c:4507 +#: c-decl.c:4693 #, gcc-internal-format msgid "array type has incomplete element type" msgstr "" -#: c-decl.c:4589 cp/decl.c:8284 +#: c-decl.c:4776 #, gcc-internal-format -msgid "%qs declared as function returning a function" +msgid "%qE declared as function returning a function" msgstr "" -#: c-decl.c:4594 cp/decl.c:8289 +#: c-decl.c:4779 #, gcc-internal-format -msgid "%qs declared as function returning an array" +msgid "type name declared as function returning a function" +msgstr "" + +#: c-decl.c:4786 +#, gcc-internal-format +msgid "%qE declared as function returning an array" msgstr "" -#: c-decl.c:4617 +#: c-decl.c:4788 +#, gcc-internal-format +msgid "type name declared as function returning an array" +msgstr "" + +#: c-decl.c:4811 #, gcc-internal-format msgid "function definition has qualified void return type" msgstr "" -#: c-decl.c:4620 cp/decl.c:8273 +#: c-decl.c:4814 cp/decl.c:8271 #, gcc-internal-format msgid "type qualifiers ignored on function return type" msgstr "" -#: c-decl.c:4650 c-decl.c:4732 c-decl.c:4822 c-decl.c:4911 +#: c-decl.c:4844 c-decl.c:4929 c-decl.c:5019 c-decl.c:5112 #, gcc-internal-format msgid "ISO C forbids qualified function types" msgstr "" -#: c-decl.c:4740 +#: c-decl.c:4937 #, gcc-internal-format msgid "typedef %q+D declared %<inline%>" msgstr "" -#: c-decl.c:4756 +#: c-decl.c:4953 #, gcc-internal-format msgid "ISO C forbids const or volatile function types" msgstr "" -#: c-decl.c:4767 +#: c-decl.c:4964 #, gcc-internal-format msgid "a member of a structure or union cannot have a variably modified type" msgstr "" -#: c-decl.c:4783 +#: c-decl.c:4980 cp/decl.c:7481 #, gcc-internal-format -msgid "variable or field %qs declared void" +msgid "variable or field %qE declared void" msgstr "" -#: c-decl.c:4814 +#: c-decl.c:5011 #, gcc-internal-format msgid "attributes in parameter array declarator ignored" msgstr "" -#: c-decl.c:4848 +#: c-decl.c:5045 #, gcc-internal-format msgid "parameter %q+D declared %<inline%>" msgstr "" -#: c-decl.c:4861 +#: c-decl.c:5058 +#, gcc-internal-format +msgid "field %qE declared as a function" +msgstr "" + +#: c-decl.c:5065 #, gcc-internal-format -msgid "field %qs declared as a function" +msgid "field %qE has incomplete type" msgstr "" -#: c-decl.c:4867 +#: c-decl.c:5067 #, gcc-internal-format -msgid "field %qs has incomplete type" +msgid "unnamed field has incomplete type" msgstr "" -#: c-decl.c:4884 c-decl.c:4894 c-decl.c:4897 +#: c-decl.c:5084 c-decl.c:5095 c-decl.c:5098 #, gcc-internal-format -msgid "invalid storage class for function %qs" +msgid "invalid storage class for function %qE" msgstr "" -#: c-decl.c:4917 +#: c-decl.c:5118 #, gcc-internal-format msgid "%<noreturn%> function returns non-void value" msgstr "" -#: c-decl.c:4953 +#: c-decl.c:5154 #, gcc-internal-format msgid "cannot inline function %<main%>" msgstr "" -#: c-decl.c:4982 +#: c-decl.c:5183 #, gcc-internal-format msgid "variable previously declared %<static%> redeclared %<extern%>" msgstr "" -#: c-decl.c:4992 +#: c-decl.c:5193 #, gcc-internal-format msgid "variable %q+D declared %<inline%>" msgstr "" -#. C99 6.7.5.2p2 -#: c-decl.c:5023 +#: c-decl.c:5228 +#, gcc-internal-format +msgid "non-nested function with variably modified type" +msgstr "" + +#: c-decl.c:5230 #, gcc-internal-format msgid "object with variably modified type must have no linkage" msgstr "" -#: c-decl.c:5092 c-decl.c:6300 +#: c-decl.c:5299 c-decl.c:6523 #, gcc-internal-format msgid "function declaration isn%'t a prototype" msgstr "" -#: c-decl.c:5100 +#: c-decl.c:5307 #, gcc-internal-format msgid "parameter names (without types) in function declaration" msgstr "" -#: c-decl.c:5133 +#: c-decl.c:5340 #, gcc-internal-format msgid "parameter %u (%q+D) has incomplete type" msgstr "" -#: c-decl.c:5136 +#: c-decl.c:5343 #, gcc-internal-format msgid "%Jparameter %u has incomplete type" msgstr "" -#: c-decl.c:5145 +#: c-decl.c:5352 #, gcc-internal-format msgid "parameter %u (%q+D) has void type" msgstr "" -#: c-decl.c:5148 +#: c-decl.c:5355 #, gcc-internal-format msgid "%Jparameter %u has void type" msgstr "" -#: c-decl.c:5210 +#: c-decl.c:5417 #, gcc-internal-format msgid "%<void%> as only parameter may not be qualified" msgstr "" -#: c-decl.c:5214 c-decl.c:5248 +#: c-decl.c:5421 c-decl.c:5455 #, gcc-internal-format msgid "%<void%> must be the only parameter" msgstr "" -#: c-decl.c:5242 +#: c-decl.c:5449 #, gcc-internal-format msgid "parameter %q+D has just a forward declaration" msgstr "" #. The %s will be one of 'struct', 'union', or 'enum'. -#: c-decl.c:5287 +#: c-decl.c:5494 #, gcc-internal-format msgid "%<%s %E%> declared inside parameter list" msgstr "" #. The %s will be one of 'struct', 'union', or 'enum'. -#: c-decl.c:5291 +#: c-decl.c:5498 #, gcc-internal-format msgid "anonymous %s declared inside parameter list" msgstr "" -#: c-decl.c:5296 +#: c-decl.c:5503 #, gcc-internal-format msgid "" "its scope is only this definition or declaration, which is probably not what " "you want" msgstr "" -#: c-decl.c:5435 +#: c-decl.c:5642 #, gcc-internal-format msgid "redefinition of %<union %E%>" msgstr "" -#: c-decl.c:5437 +#: c-decl.c:5644 #, gcc-internal-format msgid "redefinition of %<struct %E%>" msgstr "" -#: c-decl.c:5444 +#: c-decl.c:5651 #, gcc-internal-format msgid "nested redefinition of %<union %E%>" msgstr "" -#: c-decl.c:5446 +#: c-decl.c:5653 #, gcc-internal-format msgid "nested redefinition of %<struct %E%>" msgstr "" -#: c-decl.c:5524 cp/decl.c:3841 +#: c-decl.c:5731 cp/decl.c:3839 #, gcc-internal-format msgid "declaration does not declare anything" msgstr "" -#: c-decl.c:5527 +#: c-decl.c:5734 #, gcc-internal-format msgid "ISO C doesn%'t support unnamed structs/unions" msgstr "" -#: c-decl.c:5571 c-decl.c:5587 +#: c-decl.c:5778 c-decl.c:5794 #, gcc-internal-format msgid "duplicate member %q+D" msgstr "" -#: c-decl.c:5626 +#: c-decl.c:5833 #, gcc-internal-format msgid "union has no named members" msgstr "" -#: c-decl.c:5628 +#: c-decl.c:5835 #, gcc-internal-format msgid "union has no members" msgstr "" -#: c-decl.c:5633 +#: c-decl.c:5840 #, gcc-internal-format msgid "struct has no named members" msgstr "" -#: c-decl.c:5635 +#: c-decl.c:5842 #, gcc-internal-format msgid "struct has no members" msgstr "" -#: c-decl.c:5699 +#: c-decl.c:5906 #, gcc-internal-format msgid "%Jflexible array member in union" msgstr "" -#: c-decl.c:5704 +#: c-decl.c:5911 #, gcc-internal-format msgid "%Jflexible array member not at end of struct" msgstr "" -#: c-decl.c:5709 +#: c-decl.c:5916 #, gcc-internal-format msgid "%Jflexible array member in otherwise empty struct" msgstr "" -#: c-decl.c:5717 +#: c-decl.c:5924 #, gcc-internal-format msgid "%Jinvalid use of structure with flexible array member" msgstr "" -#: c-decl.c:5826 +#: c-decl.c:6033 #, gcc-internal-format msgid "union cannot be made transparent" msgstr "" -#: c-decl.c:5897 +#: c-decl.c:6104 #, gcc-internal-format msgid "nested redefinition of %<enum %E%>" msgstr "" #. This enum is a named one that has been declared already. -#: c-decl.c:5904 +#: c-decl.c:6111 #, gcc-internal-format msgid "redeclaration of %<enum %E%>" msgstr "" -#: c-decl.c:5967 +#: c-decl.c:6174 #, gcc-internal-format msgid "enumeration values exceed range of largest integer" msgstr "" -#: c-decl.c:5984 +#: c-decl.c:6191 #, gcc-internal-format msgid "specified mode too small for enumeral values" msgstr "" -#: c-decl.c:6081 +#: c-decl.c:6287 c-decl.c:6302 #, gcc-internal-format msgid "enumerator value for %qE is not an integer constant" msgstr "" -#: c-decl.c:6098 +#: c-decl.c:6297 +#, gcc-internal-format +msgid "enumerator value for %qE is not an integer constant expression" +msgstr "" + +#: c-decl.c:6321 #, gcc-internal-format msgid "overflow in enumeration values" msgstr "" -#: c-decl.c:6106 +#: c-decl.c:6329 #, gcc-internal-format msgid "ISO C restricts enumerator values to range of %<int%>" msgstr "" -#: c-decl.c:6224 +#: c-decl.c:6447 #, gcc-internal-format msgid "return type is an incomplete type" msgstr "" -#: c-decl.c:6234 +#: c-decl.c:6457 #, gcc-internal-format msgid "return type defaults to %<int%>" msgstr "" -#: c-decl.c:6307 +#: c-decl.c:6530 #, gcc-internal-format msgid "no previous prototype for %q+D" msgstr "" -#: c-decl.c:6316 +#: c-decl.c:6539 #, gcc-internal-format msgid "%q+D was used with no prototype before its definition" msgstr "" -#: c-decl.c:6322 cp/decl.c:11636 +#: c-decl.c:6545 cp/decl.c:11634 #, gcc-internal-format msgid "no previous declaration for %q+D" msgstr "" -#: c-decl.c:6332 +#: c-decl.c:6555 #, gcc-internal-format msgid "%q+D was used with no declaration before its definition" msgstr "" -#: c-decl.c:6355 +#: c-decl.c:6578 #, gcc-internal-format msgid "return type of %q+D is not %<int%>" msgstr "" -#: c-decl.c:6360 +#: c-decl.c:6583 #, gcc-internal-format msgid "%q+D is normally a non-static function" msgstr "" -#: c-decl.c:6394 +#: c-decl.c:6617 #, gcc-internal-format msgid "%Jold-style parameter declarations in prototyped function definition" msgstr "" -#: c-decl.c:6408 +#: c-decl.c:6631 #, gcc-internal-format msgid "%Jtraditional C rejects ISO C style function definitions" msgstr "" -#: c-decl.c:6425 +#: c-decl.c:6648 #, gcc-internal-format msgid "%Jparameter name omitted" msgstr "" -#: c-decl.c:6459 +#: c-decl.c:6682 #, gcc-internal-format msgid "%Jold-style function definition" msgstr "" -#: c-decl.c:6468 +#: c-decl.c:6691 #, gcc-internal-format msgid "%Jparameter name missing from parameter list" msgstr "" -#: c-decl.c:6479 +#: c-decl.c:6702 #, gcc-internal-format msgid "%q+D declared as a non-parameter" msgstr "" -#: c-decl.c:6484 +#: c-decl.c:6707 #, gcc-internal-format msgid "multiple parameters named %q+D" msgstr "" -#: c-decl.c:6492 +#: c-decl.c:6715 #, gcc-internal-format msgid "parameter %q+D declared with void type" msgstr "" -#: c-decl.c:6509 c-decl.c:6511 +#: c-decl.c:6732 c-decl.c:6734 #, gcc-internal-format msgid "type of %q+D defaults to %<int%>" msgstr "" -#: c-decl.c:6530 +#: c-decl.c:6753 #, gcc-internal-format msgid "parameter %q+D has incomplete type" msgstr "" -#: c-decl.c:6536 +#: c-decl.c:6759 #, gcc-internal-format msgid "declaration for parameter %q+D but no such parameter" msgstr "" -#: c-decl.c:6586 +#: c-decl.c:6809 #, gcc-internal-format msgid "number of arguments doesn%'t match built-in prototype" msgstr "" -#: c-decl.c:6590 +#: c-decl.c:6813 #, gcc-internal-format msgid "number of arguments doesn%'t match prototype" msgstr "" -#: c-decl.c:6591 c-decl.c:6643 +#: c-decl.c:6814 c-decl.c:6866 #, gcc-internal-format msgid "%Hprototype declaration" msgstr "" -#: c-decl.c:6625 +#: c-decl.c:6848 #, gcc-internal-format msgid "promoted argument %qD doesn%'t match built-in prototype" msgstr "" -#: c-decl.c:6629 +#: c-decl.c:6852 #, gcc-internal-format msgid "promoted argument %qD doesn%'t match prototype" msgstr "" -#: c-decl.c:6632 +#: c-decl.c:6855 #, gcc-internal-format msgid "prototype declaration" msgstr "" -#: c-decl.c:6638 +#: c-decl.c:6861 #, gcc-internal-format msgid "argument %qD doesn%'t match built-in prototype" msgstr "" -#: c-decl.c:6642 +#: c-decl.c:6865 #, gcc-internal-format msgid "argument %qD doesn%'t match prototype" msgstr "" -#: c-decl.c:6851 cp/decl.c:12340 +#: c-decl.c:7074 cp/decl.c:12338 #, gcc-internal-format msgid "no return statement in function returning non-void" msgstr "" @@ -19627,443 +19965,443 @@ 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-decl.c:6924 +#: c-decl.c:7147 #, gcc-internal-format msgid "%<for%> loop initial declarations are only allowed in C99 mode" msgstr "" -#: c-decl.c:6928 +#: c-decl.c:7151 #, gcc-internal-format msgid "use option -std=c99 or -std=gnu99 to compile your code" msgstr "" -#: c-decl.c:6959 +#: c-decl.c:7182 #, gcc-internal-format msgid "declaration of static variable %q+D in %<for%> loop initial declaration" msgstr "" -#: c-decl.c:6962 +#: c-decl.c:7185 #, gcc-internal-format msgid "" "declaration of %<extern%> variable %q+D in %<for%> loop initial declaration" msgstr "" -#: c-decl.c:6967 +#: c-decl.c:7190 #, gcc-internal-format msgid "%<struct %E%> declared in %<for%> loop initial declaration" msgstr "" -#: c-decl.c:6971 +#: c-decl.c:7194 #, gcc-internal-format msgid "%<union %E%> declared in %<for%> loop initial declaration" msgstr "" -#: c-decl.c:6975 +#: c-decl.c:7198 #, gcc-internal-format msgid "%<enum %E%> declared in %<for%> loop initial declaration" msgstr "" -#: c-decl.c:6979 +#: c-decl.c:7202 #, gcc-internal-format msgid "declaration of non-variable %q+D in %<for%> loop initial declaration" msgstr "" -#: c-decl.c:7264 c-decl.c:7506 c-decl.c:7813 +#: c-decl.c:7487 c-decl.c:7729 c-decl.c:8036 #, gcc-internal-format msgid "duplicate %qE" msgstr "" -#: c-decl.c:7289 c-decl.c:7516 c-decl.c:7703 +#: c-decl.c:7512 c-decl.c:7739 c-decl.c:7926 #, gcc-internal-format msgid "two or more data types in declaration specifiers" msgstr "" -#: c-decl.c:7301 +#: c-decl.c:7524 #, gcc-internal-format msgid "%<long long long%> is too long for GCC" msgstr "" -#: c-decl.c:7308 c-decl.c:7606 +#: c-decl.c:7531 c-decl.c:7829 #, gcc-internal-format msgid "both %<long long%> and %<double%> in declaration specifiers" msgstr "" -#: c-decl.c:7313 +#: c-decl.c:7536 #, gcc-internal-format msgid "ISO C90 does not support %<long long%>" msgstr "" -#: c-decl.c:7318 c-decl.c:7347 +#: c-decl.c:7541 c-decl.c:7570 #, gcc-internal-format msgid "both %<long%> and %<short%> in declaration specifiers" msgstr "" -#: c-decl.c:7321 c-decl.c:7523 +#: c-decl.c:7544 c-decl.c:7746 #, gcc-internal-format msgid "both %<long%> and %<void%> in declaration specifiers" msgstr "" -#: c-decl.c:7324 c-decl.c:7545 +#: c-decl.c:7547 c-decl.c:7768 #, gcc-internal-format msgid "both %<long%> and %<_Bool%> in declaration specifiers" msgstr "" -#: c-decl.c:7327 c-decl.c:7567 +#: c-decl.c:7550 c-decl.c:7790 #, gcc-internal-format msgid "both %<long%> and %<char%> in declaration specifiers" msgstr "" -#: c-decl.c:7330 c-decl.c:7587 +#: c-decl.c:7553 c-decl.c:7810 #, gcc-internal-format msgid "both %<long%> and %<float%> in declaration specifiers" msgstr "" -#: c-decl.c:7333 +#: c-decl.c:7556 #, gcc-internal-format msgid "both %<long%> and %<_Decimal32%> in declaration specifiers" msgstr "" -#: c-decl.c:7336 +#: c-decl.c:7559 #, gcc-internal-format msgid "both %<long%> and %<_Decimal64%> in declaration specifiers" msgstr "" -#: c-decl.c:7339 +#: c-decl.c:7562 #, gcc-internal-format msgid "both %<long%> and %<_Decimal128%> in declaration specifiers" msgstr "" -#: c-decl.c:7350 c-decl.c:7526 +#: c-decl.c:7573 c-decl.c:7749 #, gcc-internal-format msgid "both %<short%> and %<void%> in declaration specifiers" msgstr "" -#: c-decl.c:7353 c-decl.c:7548 +#: c-decl.c:7576 c-decl.c:7771 #, gcc-internal-format msgid "both %<short%> and %<_Bool%> in declaration specifiers" msgstr "" -#: c-decl.c:7356 c-decl.c:7570 +#: c-decl.c:7579 c-decl.c:7793 #, gcc-internal-format msgid "both %<short%> and %<char%> in declaration specifiers" msgstr "" -#: c-decl.c:7359 c-decl.c:7590 +#: c-decl.c:7582 c-decl.c:7813 #, gcc-internal-format msgid "both %<short%> and %<float%> in declaration specifiers" msgstr "" -#: c-decl.c:7362 c-decl.c:7609 +#: c-decl.c:7585 c-decl.c:7832 #, gcc-internal-format msgid "both %<short%> and %<double%> in declaration specifiers" msgstr "" -#: c-decl.c:7365 +#: c-decl.c:7588 #, gcc-internal-format msgid "both %<short%> and %<_Decimal32%> in declaration specifiers" msgstr "" -#: c-decl.c:7368 +#: c-decl.c:7591 #, gcc-internal-format msgid "both %<short%> and %<_Decimal64%> in declaration specifiers" msgstr "" -#: c-decl.c:7371 +#: c-decl.c:7594 #, gcc-internal-format msgid "both %<short%> and %<_Decimal128%> in declaration specifiers" msgstr "" -#: c-decl.c:7379 c-decl.c:7408 +#: c-decl.c:7602 c-decl.c:7631 #, gcc-internal-format msgid "both %<signed%> and %<unsigned%> in declaration specifiers" msgstr "" -#: c-decl.c:7382 c-decl.c:7529 +#: c-decl.c:7605 c-decl.c:7752 #, gcc-internal-format msgid "both %<signed%> and %<void%> in declaration specifiers" msgstr "" -#: c-decl.c:7385 c-decl.c:7551 +#: c-decl.c:7608 c-decl.c:7774 #, gcc-internal-format msgid "both %<signed%> and %<_Bool%> in declaration specifiers" msgstr "" -#: c-decl.c:7388 c-decl.c:7593 +#: c-decl.c:7611 c-decl.c:7816 #, gcc-internal-format msgid "both %<signed%> and %<float%> in declaration specifiers" msgstr "" -#: c-decl.c:7391 c-decl.c:7612 +#: c-decl.c:7614 c-decl.c:7835 #, gcc-internal-format msgid "both %<signed%> and %<double%> in declaration specifiers" msgstr "" -#: c-decl.c:7394 +#: c-decl.c:7617 #, gcc-internal-format msgid "both %<signed%> and %<_Decimal32%> in declaration specifiers" msgstr "" -#: c-decl.c:7397 +#: c-decl.c:7620 #, gcc-internal-format msgid "both %<signed%> and %<_Decimal64%> in declaration specifiers" msgstr "" -#: c-decl.c:7400 +#: c-decl.c:7623 #, gcc-internal-format msgid "both %<signed%> and %<_Decimal128%> in declaration specifiers" msgstr "" -#: c-decl.c:7411 c-decl.c:7532 +#: c-decl.c:7634 c-decl.c:7755 #, gcc-internal-format msgid "both %<unsigned%> and %<void%> in declaration specifiers" msgstr "" -#: c-decl.c:7414 c-decl.c:7554 +#: c-decl.c:7637 c-decl.c:7777 #, gcc-internal-format msgid "both %<unsigned%> and %<_Bool%> in declaration specifiers" msgstr "" -#: c-decl.c:7417 c-decl.c:7596 +#: c-decl.c:7640 c-decl.c:7819 #, gcc-internal-format msgid "both %<unsigned%> and %<float%> in declaration specifiers" msgstr "" -#: c-decl.c:7420 c-decl.c:7615 +#: c-decl.c:7643 c-decl.c:7838 #, gcc-internal-format msgid "both %<unsigned%> and %<double%> in declaration specifiers" msgstr "" -#: c-decl.c:7423 +#: c-decl.c:7646 #, gcc-internal-format msgid "both %<unsigned%> and %<_Decimal32%> in declaration specifiers" msgstr "" -#: c-decl.c:7426 +#: c-decl.c:7649 #, gcc-internal-format msgid "both %<unsigned%> and %<_Decimal64%> in declaration specifiers" msgstr "" -#: c-decl.c:7429 +#: c-decl.c:7652 #, gcc-internal-format msgid "both %<unsigned%> and %<_Decimal128%> in declaration specifiers" msgstr "" -#: c-decl.c:7437 +#: c-decl.c:7660 #, gcc-internal-format msgid "ISO C90 does not support complex types" msgstr "" -#: c-decl.c:7439 c-decl.c:7535 +#: c-decl.c:7662 c-decl.c:7758 #, gcc-internal-format msgid "both %<complex%> and %<void%> in declaration specifiers" msgstr "" -#: c-decl.c:7442 c-decl.c:7557 +#: c-decl.c:7665 c-decl.c:7780 #, gcc-internal-format msgid "both %<complex%> and %<_Bool%> in declaration specifiers" msgstr "" -#: c-decl.c:7445 +#: c-decl.c:7668 #, gcc-internal-format msgid "both %<complex%> and %<_Decimal32%> in declaration specifiers" msgstr "" -#: c-decl.c:7448 +#: c-decl.c:7671 #, gcc-internal-format msgid "both %<complex%> and %<_Decimal64%> in declaration specifiers" msgstr "" -#: c-decl.c:7451 +#: c-decl.c:7674 #, gcc-internal-format msgid "both %<complex%> and %<_Decimal128%> in declaration specifiers" msgstr "" -#: c-decl.c:7454 +#: c-decl.c:7677 #, gcc-internal-format msgid "both %<complex%> and %<_Fract%> in declaration specifiers" msgstr "" -#: c-decl.c:7457 +#: c-decl.c:7680 #, gcc-internal-format msgid "both %<complex%> and %<_Accum%> in declaration specifiers" msgstr "" -#: c-decl.c:7460 +#: c-decl.c:7683 #, gcc-internal-format msgid "both %<complex%> and %<_Sat%> in declaration specifiers" msgstr "" -#: c-decl.c:7467 +#: c-decl.c:7690 #, gcc-internal-format msgid "ISO C does not support saturating types" msgstr "" -#: c-decl.c:7469 c-decl.c:7538 +#: c-decl.c:7692 c-decl.c:7761 #, gcc-internal-format msgid "both %<_Sat%> and %<void%> in declaration specifiers" msgstr "" -#: c-decl.c:7472 c-decl.c:7560 +#: c-decl.c:7695 c-decl.c:7783 #, gcc-internal-format msgid "both %<_Sat%> and %<_Bool%> in declaration specifiers" msgstr "" -#: c-decl.c:7475 c-decl.c:7573 +#: c-decl.c:7698 c-decl.c:7796 #, gcc-internal-format msgid "both %<_Sat%> and %<char%> in declaration specifiers" msgstr "" -#: c-decl.c:7478 c-decl.c:7580 +#: c-decl.c:7701 c-decl.c:7803 #, gcc-internal-format msgid "both %<_Sat%> and %<int%> in declaration specifiers" msgstr "" -#: c-decl.c:7481 c-decl.c:7599 +#: c-decl.c:7704 c-decl.c:7822 #, gcc-internal-format msgid "both %<_Sat%> and %<float%> in declaration specifiers" msgstr "" -#: c-decl.c:7484 c-decl.c:7618 +#: c-decl.c:7707 c-decl.c:7841 #, gcc-internal-format msgid "both %<_Sat%> and %<double%> in declaration specifiers" msgstr "" -#: c-decl.c:7487 +#: c-decl.c:7710 #, gcc-internal-format msgid "both %<_Sat%> and %<_Decimal32%> in declaration specifiers" msgstr "" -#: c-decl.c:7490 +#: c-decl.c:7713 #, gcc-internal-format msgid "both %<_Sat%> and %<_Decimal64%> in declaration specifiers" msgstr "" -#: c-decl.c:7493 +#: c-decl.c:7716 #, gcc-internal-format msgid "both %<_Sat%> and %<_Decimal128%> in declaration specifiers" msgstr "" -#: c-decl.c:7496 +#: c-decl.c:7719 #, gcc-internal-format msgid "both %<_Sat%> and %<complex%> in declaration specifiers" msgstr "" -#: c-decl.c:7635 +#: c-decl.c:7858 #, gcc-internal-format msgid "both %<long long%> and %<%s%> in declaration specifiers" msgstr "" -#: c-decl.c:7638 +#: c-decl.c:7861 #, gcc-internal-format msgid "both %<long%> and %<%s%> in declaration specifiers" msgstr "" -#: c-decl.c:7641 +#: c-decl.c:7864 #, gcc-internal-format msgid "both %<short%> and %<%s%> in declaration specifiers" msgstr "" -#: c-decl.c:7644 +#: c-decl.c:7867 #, gcc-internal-format msgid "both %<signed%> and %<%s%> in declaration specifiers" msgstr "" -#: c-decl.c:7647 +#: c-decl.c:7870 #, gcc-internal-format msgid "both %<unsigned%> and %<%s%> in declaration specifiers" msgstr "" -#: c-decl.c:7650 c-decl.c:7676 +#: c-decl.c:7873 c-decl.c:7899 #, gcc-internal-format msgid "both %<complex%> and %<%s%> in declaration specifiers" msgstr "" -#: c-decl.c:7653 +#: c-decl.c:7876 #, gcc-internal-format msgid "both %<_Sat%> and %<%s%> in declaration specifiers" msgstr "" -#: c-decl.c:7663 +#: c-decl.c:7886 #, gcc-internal-format msgid "decimal floating point not supported for this target" msgstr "" -#: c-decl.c:7665 +#: c-decl.c:7888 #, gcc-internal-format msgid "ISO C does not support decimal floating point" msgstr "" -#: c-decl.c:7684 c-decl.c:7874 c-parser.c:5176 +#: c-decl.c:7907 c-decl.c:8097 c-parser.c:5189 #, gcc-internal-format msgid "fixed-point types not supported for this target" msgstr "" -#: c-decl.c:7686 +#: c-decl.c:7909 #, gcc-internal-format msgid "ISO C does not support fixed-point types" msgstr "" -#: c-decl.c:7720 +#: c-decl.c:7943 #, gcc-internal-format msgid "%qE fails to be a typedef or built in type" msgstr "" -#: c-decl.c:7764 +#: c-decl.c:7987 #, gcc-internal-format msgid "%qE is not at beginning of declaration" msgstr "" -#: c-decl.c:7778 +#: c-decl.c:8001 #, gcc-internal-format msgid "%<__thread%> used with %<auto%>" msgstr "" -#: c-decl.c:7780 +#: c-decl.c:8003 #, gcc-internal-format msgid "%<__thread%> used with %<register%>" msgstr "" -#: c-decl.c:7782 +#: c-decl.c:8005 #, gcc-internal-format msgid "%<__thread%> used with %<typedef%>" msgstr "" -#: c-decl.c:7793 +#: c-decl.c:8016 #, gcc-internal-format msgid "%<__thread%> before %<extern%>" msgstr "" -#: c-decl.c:7802 +#: c-decl.c:8025 #, gcc-internal-format msgid "%<__thread%> before %<static%>" msgstr "" -#: c-decl.c:7818 +#: c-decl.c:8041 #, gcc-internal-format msgid "multiple storage classes in declaration specifiers" msgstr "" -#: c-decl.c:7825 +#: c-decl.c:8048 #, gcc-internal-format msgid "%<__thread%> used with %qE" msgstr "" -#: c-decl.c:7872 +#: c-decl.c:8095 #, gcc-internal-format msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>" msgstr "" -#: c-decl.c:7886 +#: c-decl.c:8109 #, gcc-internal-format msgid "ISO C does not support plain %<complex%> meaning %<double complex%>" msgstr "" -#: c-decl.c:7931 c-decl.c:7957 +#: c-decl.c:8154 c-decl.c:8180 #, gcc-internal-format msgid "ISO C does not support complex integer types" msgstr "" -#: c-decl.c:8111 toplev.c:845 +#: c-decl.c:8334 toplev.c:847 #, gcc-internal-format msgid "%q+F used but never defined" msgstr "" @@ -20440,32 +20778,37 @@ msgstr "" msgid "this decimal constant would be unsigned in ISO C90" msgstr "" -#: c-lex.c:653 +#: c-lex.c:631 +#, gcc-internal-format +msgid "unsuffixed float constant" +msgstr "" + +#: c-lex.c:663 #, gcc-internal-format msgid "unsupported non-standard suffix on floating constant" msgstr "" -#: c-lex.c:659 +#: c-lex.c:669 #, gcc-internal-format msgid "non-standard suffix on floating constant" msgstr "" -#: c-lex.c:713 c-lex.c:715 +#: c-lex.c:723 c-lex.c:725 #, gcc-internal-format msgid "floating constant exceeds range of %qT" msgstr "" -#: c-lex.c:724 +#: c-lex.c:734 #, gcc-internal-format msgid "floating constant truncated to zero" msgstr "" -#: c-lex.c:919 +#: c-lex.c:929 #, gcc-internal-format msgid "unsupported non-standard concatenation of string literals" msgstr "" -#: c-lex.c:941 +#: c-lex.c:951 #, gcc-internal-format msgid "traditional C rejects string constant concatenation" msgstr "" @@ -20485,22 +20828,22 @@ msgstr "" msgid "%qE is not initialized" msgstr "" -#: c-omp.c:270 +#: c-omp.c:271 #, gcc-internal-format msgid "missing controlling predicate" msgstr "" -#: c-omp.c:348 +#: c-omp.c:349 #, gcc-internal-format msgid "invalid controlling predicate" msgstr "" -#: c-omp.c:355 +#: c-omp.c:356 #, gcc-internal-format msgid "missing increment expression" msgstr "" -#: c-omp.c:422 +#: c-omp.c:423 #, gcc-internal-format msgid "invalid increment expression" msgstr "" @@ -20545,158 +20888,158 @@ msgstr "" msgid "obsolete option -I- used, please use -iquote instead" msgstr "" -#: c-opts.c:510 +#: c-opts.c:506 #, gcc-internal-format msgid "argument %qs to %<-Wnormalized%> not recognized" msgstr "" -#: c-opts.c:593 +#: c-opts.c:589 #, gcc-internal-format msgid "switch %qs is no longer supported" msgstr "" -#: c-opts.c:700 +#: c-opts.c:696 #, gcc-internal-format msgid "" "-fhandle-exceptions has been renamed -fexceptions (and is now on by default)" msgstr "" -#: c-opts.c:1039 +#: c-opts.c:1035 #, gcc-internal-format msgid "-fexcess-precision=standard for C++" msgstr "" -#: c-opts.c:1052 +#: c-opts.c:1048 #, gcc-internal-format msgid "-fno-gnu89-inline is only supported in GNU99 or C99 mode" msgstr "" -#: c-opts.c:1134 +#: c-opts.c:1127 #, gcc-internal-format msgid "-Wformat-y2k ignored without -Wformat" msgstr "" -#: c-opts.c:1136 +#: c-opts.c:1129 #, gcc-internal-format msgid "-Wformat-extra-args ignored without -Wformat" msgstr "" -#: c-opts.c:1138 +#: c-opts.c:1131 #, gcc-internal-format msgid "-Wformat-zero-length ignored without -Wformat" msgstr "" -#: c-opts.c:1140 +#: c-opts.c:1133 #, gcc-internal-format msgid "-Wformat-nonliteral ignored without -Wformat" msgstr "" -#: c-opts.c:1142 +#: c-opts.c:1135 #, gcc-internal-format msgid "-Wformat-contains-nul ignored without -Wformat" msgstr "" -#: c-opts.c:1144 +#: c-opts.c:1137 #, gcc-internal-format msgid "-Wformat-security ignored without -Wformat" msgstr "" -#: c-opts.c:1168 +#: c-opts.c:1161 #, gcc-internal-format msgid "opening output file %s: %m" msgstr "" -#: c-opts.c:1173 +#: c-opts.c:1166 #, gcc-internal-format msgid "too many filenames given. Type %s --help for usage" msgstr "" -#: c-opts.c:1253 +#: c-opts.c:1246 #, gcc-internal-format msgid "The C parser does not support -dy, option ignored" msgstr "" -#: c-opts.c:1257 +#: c-opts.c:1250 #, gcc-internal-format msgid "The Objective-C parser does not support -dy, option ignored" msgstr "" -#: c-opts.c:1260 +#: c-opts.c:1253 #, gcc-internal-format msgid "The C++ parser does not support -dy, option ignored" msgstr "" -#: c-opts.c:1264 +#: c-opts.c:1257 #, gcc-internal-format msgid "The Objective-C++ parser does not support -dy, option ignored" msgstr "" -#: c-opts.c:1315 +#: c-opts.c:1308 #, gcc-internal-format msgid "opening dependency file %s: %m" msgstr "" -#: c-opts.c:1325 +#: c-opts.c:1318 #, gcc-internal-format msgid "closing dependency file %s: %m" msgstr "" -#: c-opts.c:1328 +#: c-opts.c:1321 #, gcc-internal-format msgid "when writing output to %s: %m" msgstr "" -#: c-opts.c:1408 +#: c-opts.c:1401 #, gcc-internal-format msgid "to generate dependencies you must specify either -M or -MM" msgstr "" -#: c-opts.c:1431 +#: c-opts.c:1424 #, gcc-internal-format msgid "-MG may only be used with -M or -MM" msgstr "" -#: c-opts.c:1461 +#: c-opts.c:1454 #, gcc-internal-format msgid "-fdirectives-only is incompatible with -Wunused_macros" msgstr "" -#: c-opts.c:1463 +#: c-opts.c:1456 #, gcc-internal-format msgid "-fdirectives-only is incompatible with -traditional" msgstr "" -#: c-opts.c:1601 +#: c-opts.c:1594 #, gcc-internal-format msgid "too late for # directive to set debug directory" msgstr "" -#: c-parser.c:227 +#: c-parser.c:225 #, gcc-internal-format -msgid "identifier %qs conflicts with C++ keyword" +msgid "identifier %qE conflicts with C++ keyword" msgstr "" -#: c-parser.c:976 +#: c-parser.c:974 #, gcc-internal-format msgid "ISO C forbids an empty translation unit" msgstr "" -#: c-parser.c:1061 c-parser.c:6306 +#: c-parser.c:1060 c-parser.c:6319 #, gcc-internal-format msgid "ISO C does not allow extra %<;%> outside of a function" msgstr "" -#: c-parser.c:1163 c-parser.c:6868 +#: c-parser.c:1164 c-parser.c:6881 #, gcc-internal-format msgid "expected declaration specifiers" msgstr "" -#: c-parser.c:1211 +#: c-parser.c:1212 #, gcc-internal-format msgid "data definition has no type or storage class" msgstr "" -#: c-parser.c:1265 +#: c-parser.c:1266 #, gcc-internal-format msgid "expected %<,%> or %<;%>" msgstr "" @@ -20704,188 +21047,188 @@ 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-parser.c:1272 c-parser.c:1288 +#: c-parser.c:1273 c-parser.c:1289 #, gcc-internal-format msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>" msgstr "" -#: c-parser.c:1280 +#: c-parser.c:1281 #, gcc-internal-format msgid "ISO C forbids nested functions" msgstr "" -#: c-parser.c:1655 c-parser.c:2466 c-parser.c:3116 c-parser.c:3376 -#: c-parser.c:4318 c-parser.c:4957 c-parser.c:5382 c-parser.c:5404 -#: c-parser.c:5511 c-parser.c:5692 c-parser.c:5721 c-parser.c:5948 -#: c-parser.c:5960 c-parser.c:5985 c-parser.c:6119 c-parser.c:6148 -#: c-parser.c:6156 c-parser.c:6184 c-parser.c:6198 c-parser.c:6414 -#: c-parser.c:6513 c-parser.c:7038 c-parser.c:7743 +#: c-parser.c:1656 c-parser.c:2467 c-parser.c:3117 c-parser.c:3380 +#: c-parser.c:4331 c-parser.c:4970 c-parser.c:5395 c-parser.c:5417 +#: c-parser.c:5524 c-parser.c:5705 c-parser.c:5734 c-parser.c:5961 +#: c-parser.c:5973 c-parser.c:5998 c-parser.c:6132 c-parser.c:6161 +#: c-parser.c:6169 c-parser.c:6197 c-parser.c:6211 c-parser.c:6427 +#: c-parser.c:6526 c-parser.c:7051 c-parser.c:7756 #, gcc-internal-format msgid "expected identifier" msgstr "" -#: c-parser.c:1688 cp/parser.c:11978 +#: c-parser.c:1689 cp/parser.c:11978 #, gcc-internal-format msgid "comma at end of enumerator list" msgstr "" -#: c-parser.c:1694 +#: c-parser.c:1695 #, gcc-internal-format msgid "expected %<,%> or %<}%>" msgstr "" -#: c-parser.c:1710 c-parser.c:1897 c-parser.c:6273 +#: c-parser.c:1711 c-parser.c:1898 c-parser.c:6286 #, gcc-internal-format msgid "expected %<{%>" msgstr "" -#: c-parser.c:1724 +#: c-parser.c:1725 #, gcc-internal-format msgid "ISO C forbids forward references to %<enum%> types" msgstr "" -#: c-parser.c:1830 +#: c-parser.c:1831 #, gcc-internal-format msgid "expected class name" msgstr "" -#: c-parser.c:1849 c-parser.c:6052 +#: c-parser.c:1850 c-parser.c:6065 #, gcc-internal-format msgid "extra semicolon in struct or union specified" msgstr "" -#: c-parser.c:1878 +#: c-parser.c:1879 #, gcc-internal-format msgid "no semicolon at end of struct or union" msgstr "" -#: c-parser.c:1881 +#: c-parser.c:1882 #, gcc-internal-format msgid "expected %<;%>" msgstr "" -#: c-parser.c:1964 c-parser.c:2942 +#: c-parser.c:1965 c-parser.c:2943 #, gcc-internal-format msgid "expected specifier-qualifier-list" msgstr "" -#: c-parser.c:1974 +#: c-parser.c:1975 #, gcc-internal-format msgid "ISO C forbids member declarations with no members" msgstr "" -#: c-parser.c:2050 +#: c-parser.c:2051 #, gcc-internal-format msgid "expected %<,%>, %<;%> or %<}%>" msgstr "" -#: c-parser.c:2057 +#: c-parser.c:2058 #, gcc-internal-format msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>" msgstr "" -#: c-parser.c:2110 +#: c-parser.c:2111 #, gcc-internal-format msgid "%<typeof%> applied to a bit-field" msgstr "" -#: c-parser.c:2334 +#: c-parser.c:2335 #, gcc-internal-format msgid "expected identifier or %<(%>" msgstr "" -#: c-parser.c:2536 +#: c-parser.c:2537 #, gcc-internal-format msgid "ISO C requires a named argument before %<...%>" msgstr "" -#: c-parser.c:2644 +#: c-parser.c:2645 #, gcc-internal-format msgid "expected declaration specifiers or %<...%>" msgstr "" -#: c-parser.c:2695 +#: c-parser.c:2696 #, gcc-internal-format msgid "wide string literal in %<asm%>" msgstr "" -#: c-parser.c:2701 c-parser.c:6923 +#: c-parser.c:2702 c-parser.c:6936 #, gcc-internal-format msgid "expected string literal" msgstr "" -#: c-parser.c:3034 +#: c-parser.c:3035 #, gcc-internal-format msgid "ISO C forbids empty initializer braces" msgstr "" -#: c-parser.c:3082 +#: c-parser.c:3083 #, gcc-internal-format msgid "obsolete use of designated initializer with %<:%>" msgstr "" -#: c-parser.c:3214 +#: c-parser.c:3215 #, gcc-internal-format msgid "ISO C forbids specifying range of elements to initialize" msgstr "" -#: c-parser.c:3227 +#: c-parser.c:3228 #, gcc-internal-format msgid "ISO C90 forbids specifying subobject to initialize" msgstr "" -#: c-parser.c:3234 +#: c-parser.c:3235 #, gcc-internal-format msgid "obsolete use of designated initializer without %<=%>" msgstr "" -#: c-parser.c:3241 +#: c-parser.c:3242 #, gcc-internal-format msgid "expected %<=%>" msgstr "" -#: c-parser.c:3391 +#: c-parser.c:3395 #, gcc-internal-format msgid "ISO C forbids label declarations" msgstr "" -#: c-parser.c:3396 c-parser.c:3472 +#: c-parser.c:3401 c-parser.c:3481 #, gcc-internal-format msgid "expected declaration or statement" msgstr "" -#: c-parser.c:3426 c-parser.c:3454 +#: c-parser.c:3433 c-parser.c:3462 #, gcc-internal-format msgid "ISO C90 forbids mixed declarations and code" msgstr "" -#: c-parser.c:3479 +#: c-parser.c:3489 #, gcc-internal-format msgid "expected %<}%> before %<else%>" msgstr "" -#: c-parser.c:3484 +#: c-parser.c:3494 #, gcc-internal-format msgid "%<else%> without a previous %<if%>" msgstr "" -#: c-parser.c:3500 +#: c-parser.c:3511 #, gcc-internal-format msgid "label at end of compound statement" msgstr "" -#: c-parser.c:3543 +#: c-parser.c:3556 #, gcc-internal-format msgid "expected %<:%> or %<...%>" msgstr "" -#: c-parser.c:3577 +#: c-parser.c:3590 #, gcc-internal-format msgid "" "a label can only be part of a statement and a declaration is not a statement" msgstr "" -#: c-parser.c:3739 +#: c-parser.c:3752 #, gcc-internal-format msgid "expected identifier or %<*%>" msgstr "" @@ -20894,224 +21237,224 @@ 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-parser.c:3803 +#: c-parser.c:3816 #, gcc-internal-format msgid "expected statement" msgstr "" -#: c-parser.c:3898 cp/parser.c:7300 +#: c-parser.c:3911 cp/parser.c:7294 #, gcc-internal-format msgid "suggest braces around empty body in an %<if%> statement" msgstr "" -#: c-parser.c:3924 cp/parser.c:7321 +#: c-parser.c:3937 cp/parser.c:7315 #, gcc-internal-format msgid "suggest braces around empty body in an %<else%> statement" msgstr "" -#: c-parser.c:4044 +#: c-parser.c:4057 #, gcc-internal-format msgid "suggest braces around empty body in %<do%> statement" msgstr "" -#: c-parser.c:4197 +#: c-parser.c:4210 #, gcc-internal-format msgid "%E qualifier ignored on asm" msgstr "" -#: c-parser.c:4494 +#: c-parser.c:4507 #, gcc-internal-format msgid "ISO C forbids omitting the middle term of a ?: expression" msgstr "" -#: c-parser.c:4926 +#: c-parser.c:4939 #, gcc-internal-format msgid "traditional C rejects the unary plus operator" msgstr "" -#: c-parser.c:5043 +#: c-parser.c:5056 #, gcc-internal-format msgid "%<sizeof%> applied to a bit-field" msgstr "" -#: c-parser.c:5204 c-parser.c:5548 c-parser.c:5568 +#: c-parser.c:5217 c-parser.c:5561 c-parser.c:5581 #, gcc-internal-format msgid "expected expression" msgstr "" -#: c-parser.c:5230 +#: c-parser.c:5243 #, gcc-internal-format msgid "braced-group within expression allowed only inside a function" msgstr "" -#: c-parser.c:5243 +#: c-parser.c:5256 #, gcc-internal-format msgid "ISO C forbids braced-groups within expressions" msgstr "" -#: c-parser.c:5442 +#: c-parser.c:5455 #, gcc-internal-format msgid "first argument to %<__builtin_choose_expr%> not a constant" msgstr "" -#: c-parser.c:5599 +#: c-parser.c:5612 #, gcc-internal-format msgid "compound literal has variable size" msgstr "" -#: c-parser.c:5607 +#: c-parser.c:5620 #, gcc-internal-format msgid "ISO C90 forbids compound literals" msgstr "" -#: c-parser.c:6269 +#: c-parser.c:6282 #, gcc-internal-format msgid "extra semicolon in method definition specified" msgstr "" -#: c-parser.c:6817 +#: c-parser.c:6830 #, gcc-internal-format msgid "%<#pragma omp barrier%> may only be used in compound statements" msgstr "" -#: c-parser.c:6828 +#: c-parser.c:6841 #, gcc-internal-format msgid "%<#pragma omp flush%> may only be used in compound statements" msgstr "" -#: c-parser.c:6839 +#: c-parser.c:6852 #, gcc-internal-format msgid "%<#pragma omp taskwait%> may only be used in compound statements" msgstr "" -#: c-parser.c:6852 +#: c-parser.c:6865 #, gcc-internal-format msgid "" "%<#pragma omp section%> may only be used in %<#pragma omp sections%> " "construct" msgstr "" -#: c-parser.c:6858 +#: c-parser.c:6871 #, gcc-internal-format msgid "%<#pragma GCC pch_preprocess%> must be first" msgstr "" -#: c-parser.c:7016 +#: c-parser.c:7029 #, gcc-internal-format msgid "too many %qs clauses" msgstr "" -#: c-parser.c:7112 +#: c-parser.c:7125 #, gcc-internal-format msgid "collapse argument needs positive constant integer expression" msgstr "" -#: c-parser.c:7177 +#: c-parser.c:7190 #, gcc-internal-format msgid "expected %<none%> or %<shared%>" msgstr "" -#: c-parser.c:7220 +#: c-parser.c:7233 #, gcc-internal-format msgid "expected %<(%>" msgstr "" -#: c-parser.c:7265 c-parser.c:7450 +#: c-parser.c:7278 c-parser.c:7463 #, gcc-internal-format msgid "expected integer expression" msgstr "" -#: c-parser.c:7275 +#: c-parser.c:7288 #, gcc-internal-format msgid "%<num_threads%> value must be positive" msgstr "" -#: c-parser.c:7355 +#: c-parser.c:7368 #, gcc-internal-format msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, or %<||%>" msgstr "" -#: c-parser.c:7441 +#: c-parser.c:7454 #, gcc-internal-format msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter" msgstr "" -#: c-parser.c:7445 +#: c-parser.c:7458 #, gcc-internal-format msgid "schedule %<auto%> does not take a %<chunk_size%> parameter" msgstr "" -#: c-parser.c:7463 +#: c-parser.c:7476 #, gcc-internal-format msgid "invalid schedule kind" msgstr "" -#: c-parser.c:7581 +#: c-parser.c:7594 #, gcc-internal-format msgid "expected %<#pragma omp%> clause" msgstr "" -#: c-parser.c:7590 +#: c-parser.c:7603 #, gcc-internal-format msgid "%qs is not valid for %qs" msgstr "" -#: c-parser.c:7692 +#: c-parser.c:7705 #, gcc-internal-format msgid "invalid operator for %<#pragma omp atomic%>" msgstr "" -#: c-parser.c:7746 c-parser.c:7766 +#: c-parser.c:7759 c-parser.c:7779 #, gcc-internal-format msgid "expected %<(%> or end of line" msgstr "" -#: c-parser.c:7798 +#: c-parser.c:7811 #, gcc-internal-format msgid "for statement expected" msgstr "" -#: c-parser.c:7849 +#: c-parser.c:7864 #, gcc-internal-format msgid "expected iteration declaration or initialization" msgstr "" -#: c-parser.c:7929 +#: c-parser.c:7944 #, gcc-internal-format msgid "not enough perfectly nested loops" msgstr "" -#: c-parser.c:7977 +#: c-parser.c:7992 #, gcc-internal-format msgid "collapsed loops not perfectly nested" msgstr "" -#: c-parser.c:8014 cp/pt.c:10572 +#: c-parser.c:8029 cp/pt.c:10584 #, gcc-internal-format msgid "iteration variable %qD should not be firstprivate" msgstr "" -#: c-parser.c:8164 +#: c-parser.c:8179 #, gcc-internal-format msgid "expected %<#pragma omp section%> or %<}%>" msgstr "" -#: c-parser.c:8434 +#: c-parser.c:8449 #, gcc-internal-format msgid "%qD is not a variable" msgstr "" -#: c-parser.c:8436 cp/semantics.c:3838 +#: c-parser.c:8451 cp/semantics.c:3837 #, gcc-internal-format msgid "%qE declared %<threadprivate%> after first use" msgstr "" -#: c-parser.c:8438 cp/semantics.c:3840 +#: c-parser.c:8453 cp/semantics.c:3839 #, gcc-internal-format msgid "automatic variable %qE cannot be %<threadprivate%>" msgstr "" -#: c-parser.c:8442 cp/semantics.c:3842 +#: c-parser.c:8457 cp/semantics.c:3841 #, gcc-internal-format msgid "%<threadprivate%> %qE has incomplete type" msgstr "" @@ -21171,322 +21514,352 @@ msgstr "" msgid "%s: PCH file was invalid" msgstr "" -#: c-pragma.c:102 +#: c-pragma.c:101 #, gcc-internal-format msgid "#pragma pack (pop) encountered without matching #pragma pack (push)" msgstr "" -#: c-pragma.c:115 +#: c-pragma.c:114 #, gcc-internal-format msgid "" -"#pragma pack(pop, %s) encountered without matching #pragma pack(push, %s)" +"#pragma pack(pop, %E) encountered without matching #pragma pack(push, %E)" msgstr "" -#: c-pragma.c:129 +#: c-pragma.c:128 #, gcc-internal-format msgid "#pragma pack(push[, id], <n>) is not supported on this target" msgstr "" -#: c-pragma.c:131 +#: c-pragma.c:130 #, gcc-internal-format msgid "#pragma pack(pop[, id], <n>) is not supported on this target" msgstr "" -#: c-pragma.c:152 +#: c-pragma.c:151 #, gcc-internal-format msgid "missing %<(%> after %<#pragma pack%> - ignored" msgstr "" -#: c-pragma.c:163 c-pragma.c:195 +#: c-pragma.c:162 c-pragma.c:194 #, gcc-internal-format msgid "invalid constant in %<#pragma pack%> - ignored" msgstr "" -#: c-pragma.c:167 c-pragma.c:209 +#: c-pragma.c:166 c-pragma.c:208 #, gcc-internal-format msgid "malformed %<#pragma pack%> - ignored" msgstr "" -#: c-pragma.c:172 +#: c-pragma.c:171 #, gcc-internal-format msgid "malformed %<#pragma pack(push[, id][, <n>])%> - ignored" msgstr "" -#: c-pragma.c:174 +#: c-pragma.c:173 #, gcc-internal-format msgid "malformed %<#pragma pack(pop[, id])%> - ignored" msgstr "" -#: c-pragma.c:183 +#: c-pragma.c:182 #, gcc-internal-format -msgid "unknown action %qs for %<#pragma pack%> - ignored" +msgid "unknown action %qE for %<#pragma pack%> - ignored" msgstr "" -#: c-pragma.c:212 +#: c-pragma.c:211 #, gcc-internal-format msgid "junk at end of %<#pragma pack%>" msgstr "" -#: c-pragma.c:215 +#: c-pragma.c:214 #, gcc-internal-format msgid "#pragma pack has no effect with -fpack-struct - ignored" msgstr "" -#: c-pragma.c:235 +#: c-pragma.c:234 #, gcc-internal-format msgid "alignment must be a small power of two, not %d" msgstr "" -#: c-pragma.c:291 +#: c-pragma.c:288 #, gcc-internal-format msgid "missing %<(%> after %<#pragma push_macro%> - ignored" msgstr "" -#: c-pragma.c:299 +#: c-pragma.c:296 #, gcc-internal-format msgid "invalid constant in %<#pragma push_macro%> - ignored" msgstr "" -#: c-pragma.c:302 +#: c-pragma.c:299 #, gcc-internal-format msgid "missing %<)%> after %<#pragma push_macro%> - ignored" msgstr "" -#: c-pragma.c:305 +#: c-pragma.c:302 #, gcc-internal-format msgid "junk at end of %<#pragma push_macro%>" msgstr "" -#: c-pragma.c:348 +#: c-pragma.c:345 #, gcc-internal-format msgid "missing %<(%> after %<#pragma pop_macro%> - ignored" msgstr "" -#: c-pragma.c:356 +#: c-pragma.c:353 #, gcc-internal-format msgid "invalid constant in %<#pragma pop_macro%> - ignored" msgstr "" -#: c-pragma.c:359 +#: c-pragma.c:356 #, gcc-internal-format msgid "missing %<)%> after %<#pragma pop_macro%> - ignored" msgstr "" -#: c-pragma.c:362 +#: c-pragma.c:359 #, gcc-internal-format msgid "junk at end of %<#pragma pop_macro%>" msgstr "" -#: c-pragma.c:408 +#: c-pragma.c:405 #, gcc-internal-format msgid "" "applying #pragma weak %q+D after first use results in unspecified behavior" msgstr "" -#: c-pragma.c:482 c-pragma.c:487 +#: c-pragma.c:479 c-pragma.c:484 #, gcc-internal-format msgid "malformed #pragma weak, ignored" msgstr "" -#: c-pragma.c:491 +#: c-pragma.c:488 #, gcc-internal-format msgid "junk at end of %<#pragma weak%>" msgstr "" -#: c-pragma.c:559 c-pragma.c:561 +#: c-pragma.c:556 c-pragma.c:558 #, gcc-internal-format msgid "malformed #pragma redefine_extname, ignored" msgstr "" -#: c-pragma.c:564 +#: c-pragma.c:561 #, gcc-internal-format msgid "junk at end of %<#pragma redefine_extname%>" msgstr "" -#: c-pragma.c:570 +#: c-pragma.c:567 #, gcc-internal-format msgid "#pragma redefine_extname not supported on this target" msgstr "" -#: c-pragma.c:587 c-pragma.c:674 +#: c-pragma.c:584 c-pragma.c:671 #, gcc-internal-format msgid "#pragma redefine_extname ignored due to conflict with previous rename" msgstr "" -#: c-pragma.c:610 +#: c-pragma.c:607 #, gcc-internal-format msgid "" "#pragma redefine_extname ignored due to conflict with previous #pragma " "redefine_extname" msgstr "" -#: c-pragma.c:629 +#: c-pragma.c:626 #, gcc-internal-format msgid "malformed #pragma extern_prefix, ignored" msgstr "" -#: c-pragma.c:632 +#: c-pragma.c:629 #, gcc-internal-format msgid "junk at end of %<#pragma extern_prefix%>" msgstr "" -#: c-pragma.c:639 +#: c-pragma.c:636 #, gcc-internal-format msgid "#pragma extern_prefix not supported on this target" msgstr "" -#: c-pragma.c:665 +#: c-pragma.c:662 #, gcc-internal-format msgid "asm declaration ignored due to conflict with previous rename" msgstr "" -#: c-pragma.c:696 +#: c-pragma.c:693 #, gcc-internal-format msgid "" "#pragma redefine_extname ignored due to conflict with __asm__ declaration" msgstr "" -#: c-pragma.c:758 +#: c-pragma.c:755 #, gcc-internal-format msgid "" "#pragma GCC visibility push() must specify default, internal, hidden or " "protected" msgstr "" -#: c-pragma.c:793 +#: c-pragma.c:790 #, gcc-internal-format msgid "#pragma GCC visibility must be followed by push or pop" msgstr "" -#: c-pragma.c:799 +#: c-pragma.c:796 #, gcc-internal-format msgid "no matching push for %<#pragma GCC visibility pop%>" msgstr "" -#: c-pragma.c:806 c-pragma.c:813 +#: c-pragma.c:803 c-pragma.c:810 #, gcc-internal-format msgid "missing %<(%> after %<#pragma GCC visibility push%> - ignored" msgstr "" -#: c-pragma.c:809 +#: c-pragma.c:806 #, gcc-internal-format msgid "malformed #pragma GCC visibility push" msgstr "" -#: c-pragma.c:817 +#: c-pragma.c:814 #, gcc-internal-format msgid "junk at end of %<#pragma GCC visibility%>" msgstr "" -#: c-pragma.c:833 +#: c-pragma.c:830 #, gcc-internal-format msgid "#pragma GCC diagnostic not allowed inside functions" msgstr "" -#: c-pragma.c:839 +#: c-pragma.c:836 #, gcc-internal-format msgid "missing [error|warning|ignored] after %<#pragma GCC diagnostic%>" msgstr "" -#: c-pragma.c:848 +#: c-pragma.c:845 #, gcc-internal-format msgid "expected [error|warning|ignored] after %<#pragma GCC diagnostic%>" msgstr "" -#: c-pragma.c:852 +#: c-pragma.c:849 #, gcc-internal-format msgid "missing option after %<#pragma GCC diagnostic%> kind" msgstr "" -#: c-pragma.c:866 +#: c-pragma.c:863 #, gcc-internal-format msgid "unknown option after %<#pragma GCC diagnostic%> kind" msgstr "" -#: c-pragma.c:879 +#: c-pragma.c:876 #, gcc-internal-format msgid "#pragma GCC option is not allowed inside functions" msgstr "" -#: c-pragma.c:892 +#: c-pragma.c:889 #, gcc-internal-format msgid "%<#pragma GCC option%> is not a string" msgstr "" -#: c-pragma.c:919 +#: c-pragma.c:916 #, gcc-internal-format msgid "" "%<#pragma GCC target (string [,string]...)%> does not have a final %<)%>." msgstr "" -#: c-pragma.c:925 +#: c-pragma.c:922 #, gcc-internal-format msgid "#pragma GCC target string... is badly formed" msgstr "" -#: c-pragma.c:948 +#: c-pragma.c:945 #, gcc-internal-format msgid "#pragma GCC optimize is not allowed inside functions" msgstr "" -#: c-pragma.c:961 +#: c-pragma.c:958 #, gcc-internal-format msgid "%<#pragma GCC optimize%> is not a string or number" msgstr "" -#: c-pragma.c:987 +#: c-pragma.c:984 #, gcc-internal-format msgid "" "%<#pragma GCC optimize (string [,string]...)%> does not have a final %<)%>." msgstr "" -#: c-pragma.c:993 +#: c-pragma.c:990 #, gcc-internal-format msgid "#pragma GCC optimize string... is badly formed" msgstr "" -#: c-pragma.c:1036 +#: c-pragma.c:1032 #, gcc-internal-format msgid "junk at end of %<#pragma push_options%>" msgstr "" -#: c-pragma.c:1066 +#: c-pragma.c:1062 #, gcc-internal-format msgid "junk at end of %<#pragma pop_options%>" msgstr "" -#: c-pragma.c:1073 +#: c-pragma.c:1069 #, gcc-internal-format msgid "" "%<#pragma GCC pop_options%> without a corresponding %<#pragma GCC " "push_options%>" msgstr "" -#: c-pragma.c:1114 +#: c-pragma.c:1110 #, gcc-internal-format msgid "junk at end of %<#pragma reset_options%>" msgstr "" -#: c-pragma.c:1151 c-pragma.c:1158 +#: c-pragma.c:1147 c-pragma.c:1154 #, gcc-internal-format msgid "expected a string after %<#pragma message%>" msgstr "" -#: c-pragma.c:1153 +#: c-pragma.c:1149 #, gcc-internal-format msgid "malformed %<#pragma message%>, ignored" msgstr "" -#: c-pragma.c:1163 +#: c-pragma.c:1159 #, gcc-internal-format msgid "junk at end of %<#pragma message%>" msgstr "" -#: c-pragma.c:1166 +#: c-pragma.c:1162 #, gcc-internal-format msgid "#pragma message: %s" msgstr "" +#: c-pragma.c:1199 +#, gcc-internal-format +msgid "invalid location for %<pragma %s%>, ignored" +msgstr "" + +#: c-pragma.c:1206 c-pragma.c:1220 +#, gcc-internal-format +msgid "malformed %<#pragma %s%>, ignored" +msgstr "" + +#: c-pragma.c:1226 +#, gcc-internal-format +msgid "junk at end of %<#pragma %s%>" +msgstr "" + +#: c-pragma.c:1244 +#, gcc-internal-format +msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported for C++" +msgstr "" + +#: c-pragma.c:1253 +#, gcc-internal-format +msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported on this target" +msgstr "" + +#: c-pragma.c:1259 +#, gcc-internal-format +msgid "ISO C does not support %<#pragma STDC FLOAT_CONST_DECIMAL64%>" +msgstr "" + #: c-typeck.c:217 #, gcc-internal-format msgid "%qD has an incomplete type" @@ -21548,67 +21921,62 @@ msgstr "" msgid "function return types not compatible due to %<volatile%>" msgstr "" -#: c-typeck.c:1581 c-typeck.c:3064 +#: c-typeck.c:1581 c-typeck.c:3059 #, gcc-internal-format msgid "arithmetic on pointer to an incomplete type" msgstr "" -#: c-typeck.c:1941 +#: c-typeck.c:1926 #, gcc-internal-format msgid "%qT has no member named %qE" msgstr "" -#: c-typeck.c:1993 +#: c-typeck.c:1978 #, gcc-internal-format msgid "request for member %qE in something not a structure or union" msgstr "" -#: c-typeck.c:2042 +#: c-typeck.c:2027 #, gcc-internal-format msgid "dereferencing pointer to incomplete type" msgstr "" -#: c-typeck.c:2046 +#: c-typeck.c:2031 #, gcc-internal-format msgid "dereferencing %<void *%> pointer" msgstr "" -#: c-typeck.c:2065 +#: c-typeck.c:2050 #, gcc-internal-format msgid "invalid type argument of %qs (have %qT)" msgstr "" -#: c-typeck.c:2096 cp/typeck.c:2697 +#: c-typeck.c:2081 cp/typeck.c:2697 #, gcc-internal-format msgid "subscripted value is neither array nor pointer" msgstr "" -#: c-typeck.c:2107 cp/typeck.c:2612 cp/typeck.c:2702 +#: c-typeck.c:2092 cp/typeck.c:2612 cp/typeck.c:2702 #, gcc-internal-format msgid "array subscript is not an integer" msgstr "" -#: c-typeck.c:2113 +#: c-typeck.c:2098 #, gcc-internal-format msgid "subscripted value is pointer to function" msgstr "" -#: c-typeck.c:2161 +#: c-typeck.c:2146 #, gcc-internal-format msgid "ISO C forbids subscripting %<register%> array" msgstr "" -#: c-typeck.c:2164 +#: c-typeck.c:2149 #, gcc-internal-format msgid "ISO C90 forbids subscripting non-lvalue array" msgstr "" -#: c-typeck.c:2288 -#, gcc-internal-format -msgid "%qD is static but used in inline function %qD which is not static" -msgstr "" - -#: c-typeck.c:2479 +#: c-typeck.c:2474 #, gcc-internal-format msgid "called object %qE is not a function" msgstr "" @@ -21616,861 +21984,856 @@ 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-typeck.c:2515 +#: c-typeck.c:2510 #, gcc-internal-format msgid "function called through a non-compatible type" msgstr "" -#: c-typeck.c:2529 c-typeck.c:2582 +#: c-typeck.c:2524 c-typeck.c:2577 #, gcc-internal-format msgid "function with qualified void return type called" msgstr "" -#: c-typeck.c:2704 +#: c-typeck.c:2699 #, gcc-internal-format msgid "type of formal parameter %d is incomplete" msgstr "" -#: c-typeck.c:2719 +#: c-typeck.c:2714 #, gcc-internal-format msgid "" "passing argument %d of %qE as integer rather than floating due to prototype" msgstr "" -#: c-typeck.c:2724 +#: c-typeck.c:2719 #, gcc-internal-format msgid "" "passing argument %d of %qE as integer rather than complex due to prototype" msgstr "" -#: c-typeck.c:2729 +#: c-typeck.c:2724 #, gcc-internal-format msgid "" "passing argument %d of %qE as complex rather than floating due to prototype" msgstr "" -#: c-typeck.c:2734 +#: c-typeck.c:2729 #, gcc-internal-format msgid "" "passing argument %d of %qE as floating rather than integer due to prototype" msgstr "" -#: c-typeck.c:2739 +#: c-typeck.c:2734 #, gcc-internal-format msgid "" "passing argument %d of %qE as complex rather than integer due to prototype" msgstr "" -#: c-typeck.c:2744 +#: c-typeck.c:2739 #, gcc-internal-format msgid "" "passing argument %d of %qE as floating rather than complex due to prototype" msgstr "" -#: c-typeck.c:2757 +#: c-typeck.c:2752 #, gcc-internal-format msgid "" "passing argument %d of %qE as %<float%> rather than %<double%> due to " "prototype" msgstr "" -#: c-typeck.c:2782 +#: c-typeck.c:2777 #, gcc-internal-format msgid "passing argument %d of %qE as %qT rather than %qT due to prototype" msgstr "" -#: c-typeck.c:2803 +#: c-typeck.c:2798 #, gcc-internal-format msgid "passing argument %d of %qE with different width due to prototype" msgstr "" -#: c-typeck.c:2826 +#: c-typeck.c:2821 #, gcc-internal-format msgid "passing argument %d of %qE as unsigned due to prototype" msgstr "" -#: c-typeck.c:2830 +#: c-typeck.c:2825 #, gcc-internal-format msgid "passing argument %d of %qE as signed due to prototype" msgstr "" -#: c-typeck.c:2967 c-typeck.c:2971 +#: c-typeck.c:2962 c-typeck.c:2966 #, gcc-internal-format msgid "comparison with string literal results in unspecified behavior" msgstr "" -#: c-typeck.c:2985 +#: c-typeck.c:2980 #, gcc-internal-format msgid "comparison between %qT and %qT" msgstr "" -#: c-typeck.c:3005 +#: c-typeck.c:3000 #, gcc-internal-format msgid "pointer of type %<void *%> used in subtraction" msgstr "" -#: c-typeck.c:3008 +#: c-typeck.c:3003 #, gcc-internal-format msgid "pointer to a function used in subtraction" msgstr "" -#: c-typeck.c:3135 +#: c-typeck.c:3130 #, gcc-internal-format msgid "wrong type argument to unary plus" msgstr "" -#: c-typeck.c:3148 +#: c-typeck.c:3143 #, gcc-internal-format msgid "wrong type argument to unary minus" msgstr "" -#: c-typeck.c:3168 +#: c-typeck.c:3163 #, gcc-internal-format msgid "ISO C does not support %<~%> for complex conjugation" msgstr "" -#: c-typeck.c:3174 +#: c-typeck.c:3169 #, gcc-internal-format msgid "wrong type argument to bit-complement" msgstr "" -#: c-typeck.c:3182 +#: c-typeck.c:3177 #, gcc-internal-format msgid "wrong type argument to abs" msgstr "" -#: c-typeck.c:3194 +#: c-typeck.c:3189 #, gcc-internal-format msgid "wrong type argument to conjugation" msgstr "" -#: c-typeck.c:3207 +#: c-typeck.c:3202 #, gcc-internal-format msgid "wrong type argument to unary exclamation mark" msgstr "" -#: c-typeck.c:3274 +#: c-typeck.c:3269 #, gcc-internal-format msgid "ISO C does not support %<++%> and %<--%> on complex types" msgstr "" -#: c-typeck.c:3293 c-typeck.c:3325 +#: c-typeck.c:3288 c-typeck.c:3320 #, gcc-internal-format msgid "wrong type argument to increment" msgstr "" -#: c-typeck.c:3295 c-typeck.c:3328 +#: c-typeck.c:3290 c-typeck.c:3323 #, gcc-internal-format msgid "wrong type argument to decrement" msgstr "" -#: c-typeck.c:3315 +#: c-typeck.c:3310 #, gcc-internal-format msgid "increment of pointer to unknown structure" msgstr "" -#: c-typeck.c:3318 +#: c-typeck.c:3313 #, gcc-internal-format msgid "decrement of pointer to unknown structure" msgstr "" -#: c-typeck.c:3395 +#: c-typeck.c:3390 #, gcc-internal-format msgid "taking address of expression of type %<void%>" msgstr "" -#: c-typeck.c:3562 +#: c-typeck.c:3557 #, gcc-internal-format msgid "assignment of read-only member %qD" msgstr "" -#: c-typeck.c:3563 +#: c-typeck.c:3558 #, gcc-internal-format msgid "increment of read-only member %qD" msgstr "" -#: c-typeck.c:3564 +#: c-typeck.c:3559 #, gcc-internal-format msgid "decrement of read-only member %qD" msgstr "" -#: c-typeck.c:3565 +#: c-typeck.c:3560 #, gcc-internal-format msgid "read-only member %qD used as %<asm%> output" msgstr "" -#: c-typeck.c:3569 +#: c-typeck.c:3564 #, gcc-internal-format msgid "assignment of read-only variable %qD" msgstr "" -#: c-typeck.c:3570 +#: c-typeck.c:3565 #, gcc-internal-format msgid "increment of read-only variable %qD" msgstr "" -#: c-typeck.c:3571 +#: c-typeck.c:3566 #, gcc-internal-format msgid "decrement of read-only variable %qD" msgstr "" -#: c-typeck.c:3572 +#: c-typeck.c:3567 #, gcc-internal-format msgid "read-only variable %qD used as %<asm%> output" msgstr "" -#: c-typeck.c:3575 c-typeck.c:3591 +#: c-typeck.c:3570 c-typeck.c:3586 #, gcc-internal-format msgid "assignment of read-only location %qE" msgstr "" -#: c-typeck.c:3576 c-typeck.c:3594 +#: c-typeck.c:3571 c-typeck.c:3589 #, gcc-internal-format msgid "increment of read-only location %qE" msgstr "" -#: c-typeck.c:3577 c-typeck.c:3597 +#: c-typeck.c:3572 c-typeck.c:3592 #, gcc-internal-format msgid "decrement of read-only location %qE" msgstr "" -#: c-typeck.c:3578 +#: c-typeck.c:3573 #, gcc-internal-format msgid "read-only location %qE used as %<asm%> output" msgstr "" -#: c-typeck.c:3637 +#: c-typeck.c:3632 #, gcc-internal-format msgid "cannot take address of bit-field %qD" msgstr "" -#: c-typeck.c:3665 +#: c-typeck.c:3660 #, gcc-internal-format msgid "global register variable %qD used in nested function" msgstr "" -#: c-typeck.c:3668 +#: c-typeck.c:3663 #, gcc-internal-format msgid "register variable %qD used in nested function" msgstr "" -#: c-typeck.c:3673 +#: c-typeck.c:3668 #, gcc-internal-format msgid "address of global register variable %qD requested" msgstr "" -#: c-typeck.c:3675 +#: c-typeck.c:3670 #, gcc-internal-format msgid "address of register variable %qD requested" msgstr "" -#: c-typeck.c:3740 +#: c-typeck.c:3735 #, gcc-internal-format msgid "non-lvalue array in conditional expression" msgstr "" -#: c-typeck.c:3829 +#: c-typeck.c:3824 #, gcc-internal-format msgid "signed and unsigned type in conditional expression" msgstr "" -#: c-typeck.c:3851 +#: c-typeck.c:3846 #, gcc-internal-format msgid "ISO C forbids conditional expr with only one void side" msgstr "" -#: c-typeck.c:3866 c-typeck.c:3875 +#: c-typeck.c:3861 c-typeck.c:3870 #, gcc-internal-format msgid "ISO C forbids conditional expr between %<void *%> and function pointer" msgstr "" -#: c-typeck.c:3884 +#: c-typeck.c:3879 #, gcc-internal-format msgid "pointer type mismatch in conditional expression" msgstr "" -#: c-typeck.c:3892 c-typeck.c:3903 +#: c-typeck.c:3887 c-typeck.c:3898 #, gcc-internal-format msgid "pointer/integer type mismatch in conditional expression" msgstr "" -#: c-typeck.c:3917 +#: c-typeck.c:3912 #, gcc-internal-format msgid "type mismatch in conditional expression" msgstr "" -#: c-typeck.c:4010 +#: c-typeck.c:4005 #, gcc-internal-format msgid "left-hand operand of comma expression has no effect" msgstr "" -#: c-typeck.c:4062 +#: c-typeck.c:4057 #, gcc-internal-format msgid "cast specifies array type" msgstr "" -#: c-typeck.c:4068 +#: c-typeck.c:4063 #, gcc-internal-format msgid "cast specifies function type" msgstr "" -#: c-typeck.c:4084 +#: c-typeck.c:4079 #, gcc-internal-format msgid "ISO C forbids casting nonscalar to the same type" msgstr "" -#: c-typeck.c:4101 +#: c-typeck.c:4096 #, gcc-internal-format msgid "ISO C forbids casts to union type" msgstr "" -#: c-typeck.c:4108 +#: c-typeck.c:4103 #, gcc-internal-format msgid "cast to union type from type not present in union" msgstr "" -#: c-typeck.c:4154 +#: c-typeck.c:4149 #, gcc-internal-format msgid "cast adds new qualifiers to function type" msgstr "" #. There are qualifiers present in IN_OTYPE that are not #. present in IN_TYPE. -#: c-typeck.c:4159 +#: c-typeck.c:4154 #, gcc-internal-format msgid "cast discards qualifiers from pointer target type" msgstr "" -#: c-typeck.c:4175 +#: c-typeck.c:4170 #, gcc-internal-format msgid "cast increases required alignment of target type" msgstr "" -#: c-typeck.c:4186 +#: c-typeck.c:4181 #, gcc-internal-format msgid "cast from pointer to integer of different size" msgstr "" -#: c-typeck.c:4190 +#: c-typeck.c:4185 #, gcc-internal-format msgid "cast from function call of type %qT to non-matching type %qT" msgstr "" -#: c-typeck.c:4198 +#: c-typeck.c:4193 #, gcc-internal-format msgid "cast to pointer from integer of different size" msgstr "" -#: c-typeck.c:4212 +#: c-typeck.c:4207 #, gcc-internal-format msgid "ISO C forbids conversion of function pointer to object pointer type" msgstr "" -#: c-typeck.c:4221 +#: c-typeck.c:4216 #, gcc-internal-format msgid "ISO C forbids conversion of object pointer to function pointer type" msgstr "" +#: c-typeck.c:4407 c-typeck.c:4572 +#, gcc-internal-format +msgid "enum conversion in assignment is invalid in C++" +msgstr "" + #. This macro is used to emit diagnostics to ensure that all format #. strings are complete sentences, visible to gettext and checked at #. compile time. -#: c-typeck.c:4496 c-typeck.c:4967 +#: c-typeck.c:4510 c-typeck.c:4975 #, gcc-internal-format msgid "expected %qT but argument is of type %qT" msgstr "" -#: c-typeck.c:4561 +#: c-typeck.c:4570 #, gcc-internal-format msgid "enum conversion when passing argument %d of %qE is invalid in C++" msgstr "" -#: c-typeck.c:4563 -#, gcc-internal-format -msgid "enum conversion in assignment is invalid in C++" -msgstr "" - -#: c-typeck.c:4565 -#, gcc-internal-format -msgid "enum conversion in initialization is invalid in C++" -msgstr "" - -#: c-typeck.c:4567 +#: c-typeck.c:4576 #, gcc-internal-format msgid "enum conversion in return is invalid in C++" msgstr "" -#: c-typeck.c:4597 +#: c-typeck.c:4605 #, gcc-internal-format msgid "cannot pass rvalue to reference parameter" msgstr "" -#: c-typeck.c:4720 c-typeck.c:4889 +#: c-typeck.c:4728 c-typeck.c:4897 #, gcc-internal-format msgid "" "passing argument %d of %qE makes qualified function pointer from unqualified" msgstr "" -#: c-typeck.c:4723 c-typeck.c:4892 +#: c-typeck.c:4731 c-typeck.c:4900 #, gcc-internal-format msgid "assignment makes qualified function pointer from unqualified" msgstr "" -#: c-typeck.c:4726 c-typeck.c:4894 +#: c-typeck.c:4734 c-typeck.c:4902 #, gcc-internal-format msgid "initialization makes qualified function pointer from unqualified" msgstr "" -#: c-typeck.c:4729 c-typeck.c:4896 +#: c-typeck.c:4737 c-typeck.c:4904 #, gcc-internal-format msgid "return makes qualified function pointer from unqualified" msgstr "" -#: c-typeck.c:4734 c-typeck.c:4854 +#: c-typeck.c:4742 c-typeck.c:4862 #, gcc-internal-format msgid "passing argument %d of %qE discards qualifiers from pointer target type" msgstr "" -#: c-typeck.c:4736 c-typeck.c:4856 +#: c-typeck.c:4744 c-typeck.c:4864 #, gcc-internal-format msgid "assignment discards qualifiers from pointer target type" msgstr "" -#: c-typeck.c:4738 c-typeck.c:4858 +#: c-typeck.c:4746 c-typeck.c:4866 #, gcc-internal-format msgid "initialization discards qualifiers from pointer target type" msgstr "" -#: c-typeck.c:4740 c-typeck.c:4860 +#: c-typeck.c:4748 c-typeck.c:4868 #, gcc-internal-format msgid "return discards qualifiers from pointer target type" msgstr "" -#: c-typeck.c:4748 +#: c-typeck.c:4756 #, gcc-internal-format msgid "ISO C prohibits argument conversion to union type" msgstr "" -#: c-typeck.c:4781 +#: c-typeck.c:4789 #, gcc-internal-format msgid "request for implicit conversion from %qT to %qT not permitted in C++" msgstr "" -#: c-typeck.c:4793 +#: c-typeck.c:4801 #, gcc-internal-format msgid "argument %d of %qE might be a candidate for a format attribute" msgstr "" -#: c-typeck.c:4799 +#: c-typeck.c:4807 #, gcc-internal-format msgid "assignment left-hand side might be a candidate for a format attribute" msgstr "" -#: c-typeck.c:4804 +#: c-typeck.c:4812 #, gcc-internal-format msgid "" "initialization left-hand side might be a candidate for a format attribute" msgstr "" -#: c-typeck.c:4809 +#: c-typeck.c:4817 #, gcc-internal-format msgid "return type might be a candidate for a format attribute" msgstr "" -#: c-typeck.c:4833 +#: c-typeck.c:4841 #, gcc-internal-format msgid "" "ISO C forbids passing argument %d of %qE between function pointer and %<void " "*%>" msgstr "" -#: c-typeck.c:4836 +#: c-typeck.c:4844 #, gcc-internal-format msgid "ISO C forbids assignment between function pointer and %<void *%>" msgstr "" -#: c-typeck.c:4838 +#: c-typeck.c:4846 #, gcc-internal-format msgid "ISO C forbids initialization between function pointer and %<void *%>" msgstr "" -#: c-typeck.c:4840 +#: c-typeck.c:4848 #, gcc-internal-format msgid "ISO C forbids return between function pointer and %<void *%>" msgstr "" -#: c-typeck.c:4871 +#: c-typeck.c:4879 #, gcc-internal-format msgid "pointer targets in passing argument %d of %qE differ in signedness" msgstr "" -#: c-typeck.c:4873 +#: c-typeck.c:4881 #, gcc-internal-format msgid "pointer targets in assignment differ in signedness" msgstr "" -#: c-typeck.c:4875 +#: c-typeck.c:4883 #, gcc-internal-format msgid "pointer targets in initialization differ in signedness" msgstr "" -#: c-typeck.c:4877 +#: c-typeck.c:4885 #, gcc-internal-format msgid "pointer targets in return differ in signedness" msgstr "" -#: c-typeck.c:4904 +#: c-typeck.c:4912 #, gcc-internal-format msgid "passing argument %d of %qE from incompatible pointer type" msgstr "" -#: c-typeck.c:4906 +#: c-typeck.c:4914 #, gcc-internal-format msgid "assignment from incompatible pointer type" msgstr "" -#: c-typeck.c:4907 +#: c-typeck.c:4915 #, gcc-internal-format msgid "initialization from incompatible pointer type" msgstr "" -#: c-typeck.c:4909 +#: c-typeck.c:4917 #, gcc-internal-format msgid "return from incompatible pointer type" msgstr "" -#: c-typeck.c:4927 +#: c-typeck.c:4935 #, gcc-internal-format msgid "passing argument %d of %qE makes pointer from integer without a cast" msgstr "" -#: c-typeck.c:4929 +#: c-typeck.c:4937 #, gcc-internal-format msgid "assignment makes pointer from integer without a cast" msgstr "" -#: c-typeck.c:4931 +#: c-typeck.c:4939 #, gcc-internal-format msgid "initialization makes pointer from integer without a cast" msgstr "" -#: c-typeck.c:4933 +#: c-typeck.c:4941 #, gcc-internal-format msgid "return makes pointer from integer without a cast" msgstr "" -#: c-typeck.c:4941 +#: c-typeck.c:4949 #, gcc-internal-format msgid "passing argument %d of %qE makes integer from pointer without a cast" msgstr "" -#: c-typeck.c:4943 +#: c-typeck.c:4951 #, gcc-internal-format msgid "assignment makes integer from pointer without a cast" msgstr "" -#: c-typeck.c:4945 +#: c-typeck.c:4953 #, gcc-internal-format msgid "initialization makes integer from pointer without a cast" msgstr "" -#: c-typeck.c:4947 +#: c-typeck.c:4955 #, gcc-internal-format msgid "return makes integer from pointer without a cast" msgstr "" -#: c-typeck.c:4970 +#: c-typeck.c:4978 #, gcc-internal-format msgid "incompatible types when assigning to type %qT from type %qT" msgstr "" -#: c-typeck.c:4974 +#: c-typeck.c:4982 #, gcc-internal-format msgid "incompatible types when initializing type %qT using type %qT" msgstr "" -#: c-typeck.c:4978 +#: c-typeck.c:4986 #, gcc-internal-format msgid "incompatible types when returning type %qT but %qT was expected" msgstr "" -#: c-typeck.c:5039 +#: c-typeck.c:5047 #, gcc-internal-format msgid "traditional C rejects automatic aggregate initialization" msgstr "" -#: c-typeck.c:5210 c-typeck.c:5226 c-typeck.c:5243 +#: c-typeck.c:5220 c-typeck.c:5236 c-typeck.c:5253 #, gcc-internal-format msgid "(near initialization for %qs)" msgstr "" -#: c-typeck.c:5831 cp/decl.c:5150 +#: c-typeck.c:5841 cp/decl.c:5148 #, gcc-internal-format msgid "opaque vector types cannot be initialized" msgstr "" -#: c-typeck.c:6478 +#: c-typeck.c:6506 #, gcc-internal-format msgid "unknown field %qE specified in initializer" msgstr "" -#: c-typeck.c:7438 +#: c-typeck.c:7485 #, gcc-internal-format msgid "traditional C rejects initialization of unions" msgstr "" -#: c-typeck.c:7753 +#: c-typeck.c:7804 #, gcc-internal-format msgid "jump into statement expression" msgstr "" -#: c-typeck.c:7759 +#: c-typeck.c:7810 #, gcc-internal-format msgid "jump into scope of identifier with variably modified type" msgstr "" -#: c-typeck.c:7795 +#: c-typeck.c:7846 #, gcc-internal-format msgid "ISO C forbids %<goto *expr;%>" msgstr "" -#: c-typeck.c:7813 cp/typeck.c:6851 +#: c-typeck.c:7864 cp/typeck.c:6858 #, gcc-internal-format msgid "function declared %<noreturn%> has a %<return%> statement" msgstr "" -#: c-typeck.c:7836 +#: c-typeck.c:7887 #, gcc-internal-format msgid "%<return%> with no value, in function returning non-void" msgstr "" -#: c-typeck.c:7846 +#: c-typeck.c:7897 #, gcc-internal-format msgid "%<return%> with a value, in function returning void" msgstr "" -#: c-typeck.c:7848 +#: c-typeck.c:7899 #, gcc-internal-format msgid "ISO C forbids %<return%> with expression, in function returning void" msgstr "" -#: c-typeck.c:7907 +#: c-typeck.c:7958 #, gcc-internal-format msgid "function returns address of local variable" msgstr "" -#: c-typeck.c:7982 cp/semantics.c:952 +#: c-typeck.c:8033 cp/semantics.c:951 #, gcc-internal-format msgid "switch quantity not an integer" msgstr "" -#: c-typeck.c:7994 +#: c-typeck.c:8045 #, gcc-internal-format msgid "%<long%> switch expression not converted to %<int%> in ISO C" msgstr "" -#: c-typeck.c:8030 c-typeck.c:8038 +#: c-typeck.c:8081 c-typeck.c:8089 #, gcc-internal-format msgid "case label is not an integer constant expression" msgstr "" -#: c-typeck.c:8054 +#: c-typeck.c:8105 #, gcc-internal-format msgid "" "case label in statement expression not containing enclosing switch statement" msgstr "" -#: c-typeck.c:8057 +#: c-typeck.c:8108 #, gcc-internal-format msgid "" "%<default%> label in statement expression not containing enclosing switch " "statement" msgstr "" -#: c-typeck.c:8063 +#: c-typeck.c:8114 #, gcc-internal-format msgid "" "case label in scope of identifier with variably modified type not containing " "enclosing switch statement" msgstr "" -#: c-typeck.c:8066 +#: c-typeck.c:8117 #, gcc-internal-format msgid "" "%<default%> label in scope of identifier with variably modified type not " "containing enclosing switch statement" msgstr "" -#: c-typeck.c:8070 +#: c-typeck.c:8121 #, gcc-internal-format msgid "case label not within a switch statement" msgstr "" -#: c-typeck.c:8072 +#: c-typeck.c:8123 #, gcc-internal-format msgid "%<default%> label not within a switch statement" msgstr "" -#: c-typeck.c:8149 +#: c-typeck.c:8200 #, gcc-internal-format msgid "%Hsuggest explicit braces to avoid ambiguous %<else%>" msgstr "" -#: c-typeck.c:8258 cp/cp-gimplify.c:92 +#: c-typeck.c:8309 cp/cp-gimplify.c:92 #, gcc-internal-format msgid "break statement not within loop or switch" msgstr "" -#: c-typeck.c:8260 +#: c-typeck.c:8311 #, gcc-internal-format msgid "continue statement not within a loop" msgstr "" -#: c-typeck.c:8265 +#: c-typeck.c:8316 #, gcc-internal-format msgid "break statement used with OpenMP for loop" msgstr "" -#: c-typeck.c:8291 +#: c-typeck.c:8342 #, gcc-internal-format msgid "%Hstatement with no effect" msgstr "" -#: c-typeck.c:8315 +#: c-typeck.c:8366 #, gcc-internal-format msgid "expression statement has incomplete type" msgstr "" -#: c-typeck.c:8981 cp/typeck.c:3529 +#: c-typeck.c:9032 cp/typeck.c:3529 #, gcc-internal-format msgid "right shift count is negative" msgstr "" -#: c-typeck.c:8992 cp/typeck.c:3535 +#: c-typeck.c:9043 cp/typeck.c:3535 #, gcc-internal-format msgid "right shift count >= width of type" msgstr "" -#: c-typeck.c:9018 cp/typeck.c:3556 +#: c-typeck.c:9069 cp/typeck.c:3556 #, gcc-internal-format msgid "left shift count is negative" msgstr "" -#: c-typeck.c:9025 cp/typeck.c:3561 +#: c-typeck.c:9076 cp/typeck.c:3561 #, gcc-internal-format msgid "left shift count >= width of type" msgstr "" -#: c-typeck.c:9045 cp/typeck.c:3607 +#: c-typeck.c:9096 cp/typeck.c:3607 #, gcc-internal-format msgid "comparing floating point with == or != is unsafe" msgstr "" -#: c-typeck.c:9069 c-typeck.c:9076 +#: c-typeck.c:9120 c-typeck.c:9127 #, gcc-internal-format msgid "ISO C forbids comparison of %<void *%> with function pointer" msgstr "" -#: c-typeck.c:9083 c-typeck.c:9145 +#: c-typeck.c:9134 c-typeck.c:9196 #, gcc-internal-format msgid "comparison of distinct pointer types lacks a cast" msgstr "" -#: c-typeck.c:9093 c-typeck.c:9102 cp/typeck.c:3630 cp/typeck.c:3642 +#: c-typeck.c:9144 c-typeck.c:9153 cp/typeck.c:3630 cp/typeck.c:3642 #, gcc-internal-format msgid "the address of %qD will never be NULL" msgstr "" -#: c-typeck.c:9109 c-typeck.c:9114 c-typeck.c:9167 c-typeck.c:9172 +#: c-typeck.c:9160 c-typeck.c:9165 c-typeck.c:9218 c-typeck.c:9223 #, gcc-internal-format msgid "comparison between pointer and integer" msgstr "" -#: c-typeck.c:9136 +#: c-typeck.c:9187 #, gcc-internal-format msgid "comparison of complete and incomplete pointers" msgstr "" -#: c-typeck.c:9138 +#: c-typeck.c:9189 #, gcc-internal-format msgid "ISO C forbids ordered comparisons of pointers to functions" msgstr "" -#: c-typeck.c:9153 c-typeck.c:9156 c-typeck.c:9162 +#: c-typeck.c:9204 c-typeck.c:9207 c-typeck.c:9213 #, gcc-internal-format msgid "ordered comparison of pointer with integer zero" msgstr "" -#: c-typeck.c:9403 +#: c-typeck.c:9539 #, gcc-internal-format msgid "used array that cannot be converted to pointer where scalar is required" msgstr "" -#: c-typeck.c:9407 +#: c-typeck.c:9543 #, gcc-internal-format msgid "used struct type value where scalar is required" msgstr "" -#: c-typeck.c:9411 +#: c-typeck.c:9547 #, gcc-internal-format msgid "used union type value where scalar is required" msgstr "" -#: c-typeck.c:9563 cp/semantics.c:3721 +#: c-typeck.c:9699 cp/semantics.c:3720 #, gcc-internal-format msgid "%qE has invalid type for %<reduction%>" msgstr "" -#: c-typeck.c:9597 cp/semantics.c:3734 +#: c-typeck.c:9733 cp/semantics.c:3733 #, gcc-internal-format msgid "%qE has invalid type for %<reduction(%s)%>" msgstr "" -#: c-typeck.c:9613 cp/semantics.c:3744 +#: c-typeck.c:9749 cp/semantics.c:3743 #, gcc-internal-format msgid "%qE must be %<threadprivate%> for %<copyin%>" msgstr "" -#: c-typeck.c:9622 cp/semantics.c:3541 +#: c-typeck.c:9758 cp/semantics.c:3540 #, gcc-internal-format msgid "%qE is not a variable in clause %qs" msgstr "" -#: c-typeck.c:9629 c-typeck.c:9649 c-typeck.c:9669 +#: c-typeck.c:9765 c-typeck.c:9785 c-typeck.c:9805 #, gcc-internal-format msgid "%qE appears more than once in data clauses" msgstr "" -#: c-typeck.c:9643 cp/semantics.c:3564 +#: c-typeck.c:9779 cp/semantics.c:3563 #, gcc-internal-format msgid "%qE is not a variable in clause %<firstprivate%>" msgstr "" -#: c-typeck.c:9663 cp/semantics.c:3586 +#: c-typeck.c:9799 cp/semantics.c:3585 #, gcc-internal-format msgid "%qE is not a variable in clause %<lastprivate%>" msgstr "" -#: c-typeck.c:9723 cp/semantics.c:3785 +#: c-typeck.c:9859 cp/semantics.c:3784 #, gcc-internal-format msgid "%qE is predetermined %qs for %qs" msgstr "" -#: calls.c:2055 +#: calls.c:2056 #, gcc-internal-format msgid "function call has aggregate value" msgstr "" -#: cfgexpand.c:299 +#: cfgexpand.c:318 #, gcc-internal-format msgid "Unrecognized GIMPLE statement during RTL expansion" msgstr "" -#: cfgexpand.c:2332 +#: cfgexpand.c:2477 #, gcc-internal-format msgid "not protecting local variables: variable length buffer" msgstr "" -#: cfgexpand.c:2335 +#: cfgexpand.c:2480 #, gcc-internal-format msgid "not protecting function: no buffer at least %d bytes long" msgstr "" @@ -22525,7 +22888,7 @@ msgstr "" msgid "verify_flow_info: Basic block %d succ edge is corrupted" msgstr "" -#: cfghooks.c:197 cfgrtl.c:1813 +#: cfghooks.c:197 cfgrtl.c:1856 #, gcc-internal-format msgid "wrong amount of branch edges after unconditional jump %i" msgstr "" @@ -22735,232 +23098,257 @@ msgstr "" msgid "%d exits recorded for loop %d (having %d exits)" msgstr "" -#: cfgrtl.c:1707 +#: cfgrtl.c:1750 #, gcc-internal-format msgid "BB_RTL flag not set for block %d" msgstr "" -#: cfgrtl.c:1714 +#: cfgrtl.c:1757 #, gcc-internal-format msgid "insn %d basic block pointer is %d, should be %d" msgstr "" -#: cfgrtl.c:1725 +#: cfgrtl.c:1768 #, gcc-internal-format msgid "insn %d in header of bb %d has non-NULL basic block" msgstr "" -#: cfgrtl.c:1733 +#: cfgrtl.c:1776 #, gcc-internal-format msgid "insn %d in footer of bb %d has non-NULL basic block" msgstr "" -#: cfgrtl.c:1755 +#: cfgrtl.c:1798 #, gcc-internal-format msgid "verify_flow_info: REG_BR_PROB does not match cfg %wi %i" msgstr "" -#: cfgrtl.c:1770 +#: cfgrtl.c:1813 #, gcc-internal-format msgid "fallthru edge crosses section boundary (bb %i)" msgstr "" -#: cfgrtl.c:1795 +#: cfgrtl.c:1838 #, gcc-internal-format msgid "missing REG_EH_REGION note in the end of bb %i" msgstr "" -#: cfgrtl.c:1803 +#: cfgrtl.c:1846 #, gcc-internal-format msgid "too many outgoing branch edges from bb %i" msgstr "" -#: cfgrtl.c:1808 +#: cfgrtl.c:1851 #, gcc-internal-format msgid "fallthru edge after unconditional jump %i" msgstr "" -#: cfgrtl.c:1819 +#: cfgrtl.c:1862 #, gcc-internal-format msgid "wrong amount of branch edges after conditional jump %i" msgstr "" -#: cfgrtl.c:1825 +#: cfgrtl.c:1868 #, gcc-internal-format msgid "call edges for non-call insn in bb %i" msgstr "" -#: cfgrtl.c:1834 +#: cfgrtl.c:1877 #, gcc-internal-format msgid "abnormal edges for no purpose in bb %i" msgstr "" -#: cfgrtl.c:1846 +#: cfgrtl.c:1889 #, gcc-internal-format msgid "insn %d inside basic block %d but block_for_insn is NULL" msgstr "" -#: cfgrtl.c:1850 +#: cfgrtl.c:1893 #, gcc-internal-format msgid "insn %d inside basic block %d but block_for_insn is %i" msgstr "" -#: cfgrtl.c:1864 cfgrtl.c:1874 +#: cfgrtl.c:1907 cfgrtl.c:1917 #, gcc-internal-format msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d" msgstr "" -#: cfgrtl.c:1887 +#: cfgrtl.c:1930 #, gcc-internal-format msgid "NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d" msgstr "" -#: cfgrtl.c:1897 +#: cfgrtl.c:1940 #, gcc-internal-format msgid "in basic block %d:" msgstr "" -#: cfgrtl.c:1950 cfgrtl.c:2040 +#: cfgrtl.c:1993 cfgrtl.c:2083 #, gcc-internal-format msgid "insn %d outside of basic blocks has non-NULL bb field" msgstr "" -#: cfgrtl.c:1958 +#: cfgrtl.c:2001 #, gcc-internal-format msgid "end insn %d for block %d not found in the insn stream" msgstr "" -#: cfgrtl.c:1971 +#: cfgrtl.c:2014 #, gcc-internal-format msgid "insn %d is in multiple basic blocks (%d and %d)" msgstr "" -#: cfgrtl.c:1983 +#: cfgrtl.c:2026 #, gcc-internal-format msgid "head insn %d for block %d not found in the insn stream" msgstr "" -#: cfgrtl.c:2003 +#: cfgrtl.c:2046 #, gcc-internal-format msgid "missing barrier after block %i" msgstr "" -#: cfgrtl.c:2016 +#: cfgrtl.c:2059 #, gcc-internal-format msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i" msgstr "" -#: cfgrtl.c:2025 +#: cfgrtl.c:2068 #, gcc-internal-format msgid "verify_flow_info: Incorrect fallthru %i->%i" msgstr "" -#: cfgrtl.c:2058 +#: cfgrtl.c:2101 #, gcc-internal-format msgid "basic blocks not laid down consecutively" msgstr "" -#: cfgrtl.c:2097 +#: cfgrtl.c:2140 #, gcc-internal-format msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)" msgstr "" -#: cgraph.c:1299 +#: cgraph.c:1494 #, gcc-internal-format msgid "%D renamed after being referenced in assembly" msgstr "" -#: cgraphunit.c:573 +#: cgraphunit.c:580 #, gcc-internal-format msgid "aux field set for edge %s->%s" msgstr "" -#: cgraphunit.c:579 +#: cgraphunit.c:587 #, gcc-internal-format msgid "Execution count is negative" msgstr "" -#: cgraphunit.c:586 +#: cgraphunit.c:594 #, gcc-internal-format msgid "caller edge count is negative" msgstr "" -#: cgraphunit.c:591 +#: cgraphunit.c:599 #, gcc-internal-format msgid "caller edge frequency is negative" msgstr "" -#: cgraphunit.c:596 +#: cgraphunit.c:604 #, gcc-internal-format msgid "caller edge frequency is too large" msgstr "" -#: cgraphunit.c:605 +#: cgraphunit.c:613 #, gcc-internal-format msgid "inlined_to pointer is wrong" msgstr "" -#: cgraphunit.c:610 +#: cgraphunit.c:618 #, gcc-internal-format msgid "multiple inline callers" msgstr "" -#: cgraphunit.c:617 +#: cgraphunit.c:625 #, gcc-internal-format msgid "inlined_to pointer set for noninline callers" msgstr "" -#: cgraphunit.c:623 +#: cgraphunit.c:631 #, gcc-internal-format msgid "inlined_to pointer is set but no predecessors found" msgstr "" -#: cgraphunit.c:628 +#: cgraphunit.c:636 #, gcc-internal-format msgid "inlined_to pointer refers to itself" msgstr "" -#: cgraphunit.c:638 +#: cgraphunit.c:642 #, gcc-internal-format msgid "node not found in cgraph_hash" msgstr "" -#: cgraphunit.c:667 +#: cgraphunit.c:654 +#, gcc-internal-format +msgid "node has wrong clone_of" +msgstr "" + +#: cgraphunit.c:666 +#, gcc-internal-format +msgid "node has wrong clone list" +msgstr "" + +#: cgraphunit.c:672 +#, gcc-internal-format +msgid "node is in clone list but it is not clone" +msgstr "" + +#: cgraphunit.c:677 +#, gcc-internal-format +msgid "node has wrong prev_clone pointer" +msgstr "" + +#: cgraphunit.c:682 +#, gcc-internal-format +msgid "double linked list of clones corrupted" +msgstr "" + +#: cgraphunit.c:711 #, gcc-internal-format msgid "shared call_stmt:" msgstr "" -#: cgraphunit.c:674 +#: cgraphunit.c:718 #, gcc-internal-format msgid "edge points to wrong declaration:" msgstr "" -#: cgraphunit.c:683 +#: cgraphunit.c:727 #, gcc-internal-format msgid "missing callgraph edge for call stmt:" msgstr "" -#: cgraphunit.c:699 +#: cgraphunit.c:743 #, gcc-internal-format msgid "edge %s->%s has no corresponding call_stmt" msgstr "" -#: cgraphunit.c:711 +#: cgraphunit.c:755 #, gcc-internal-format msgid "verify_cgraph_node failed" msgstr "" -#: cgraphunit.c:804 cgraphunit.c:827 +#: cgraphunit.c:848 cgraphunit.c:871 #, gcc-internal-format msgid "%J%<externally_visible%> attribute have effect only on public objects" msgstr "" -#: cgraphunit.c:1021 +#: cgraphunit.c:1065 #, gcc-internal-format msgid "failed to reclaim unneeded function" msgstr "" -#: cgraphunit.c:1355 +#: cgraphunit.c:1400 #, gcc-internal-format msgid "nodes with unreleased memory found" msgstr "" @@ -23050,12 +23438,12 @@ msgstr "" msgid "coverage mismatch for function %u while reading execution counters" msgstr "" -#: coverage.c:278 coverage.c:373 +#: coverage.c:278 coverage.c:372 #, gcc-internal-format msgid "checksum is %x instead of %x" msgstr "" -#: coverage.c:286 coverage.c:375 +#: coverage.c:286 coverage.c:374 #, gcc-internal-format msgid "number of counters is %d instead of %d" msgstr "" @@ -23072,35 +23460,35 @@ msgstr "" #: coverage.c:350 #, gcc-internal-format -msgid "no coverage for function %qs found" +msgid "no coverage for function %qE found" msgstr "" -#: coverage.c:364 coverage.c:367 +#: coverage.c:363 coverage.c:366 #, gcc-internal-format -msgid "coverage mismatch for function %qs while reading counter %qs" +msgid "coverage mismatch for function %qE while reading counter %qs" msgstr "" -#: coverage.c:383 +#: coverage.c:382 #, gcc-internal-format msgid "coverage mismatch ignored due to -Wcoverage-mismatch" msgstr "" -#: coverage.c:385 +#: coverage.c:384 #, gcc-internal-format msgid "execution counts estimated" msgstr "" -#: coverage.c:388 +#: coverage.c:387 #, gcc-internal-format msgid "this can result in poorly optimized code" msgstr "" -#: coverage.c:570 +#: coverage.c:569 #, gcc-internal-format msgid "cannot open %s" msgstr "" -#: coverage.c:605 +#: coverage.c:604 #, gcc-internal-format msgid "error writing %qs" msgstr "" @@ -23120,7 +23508,7 @@ msgstr "" msgid " %s" msgstr "" -#: dbxout.c:3229 +#: dbxout.c:3228 #, gcc-internal-format msgid "common symbol debug info is not structured as symbol+offset" msgstr "" @@ -23140,27 +23528,27 @@ msgstr "" msgid "dominator of %d should be %d, not %d" msgstr "" -#: dwarf2out.c:4523 +#: dwarf2out.c:4543 #, gcc-internal-format msgid "DW_LOC_OP %s not implemented" msgstr "" -#: emit-rtl.c:2454 +#: emit-rtl.c:2457 #, gcc-internal-format msgid "invalid rtl sharing found in the insn" msgstr "" -#: emit-rtl.c:2456 +#: emit-rtl.c:2459 #, gcc-internal-format msgid "shared rtx" msgstr "" -#: emit-rtl.c:2458 +#: emit-rtl.c:2461 #, gcc-internal-format msgid "internal consistency failure" msgstr "" -#: emit-rtl.c:3518 +#: emit-rtl.c:3521 #, gcc-internal-format msgid "ICE: emit_insn used where emit_jump_insn needed:\n" msgstr "" @@ -23175,91 +23563,86 @@ msgstr "" msgid "exception handling disabled, use -fexceptions to enable" msgstr "" -#: except.c:2889 +#: except.c:3387 #, gcc-internal-format msgid "argument of %<__builtin_eh_return_regno%> must be constant" msgstr "" -#: except.c:3022 +#: except.c:3520 #, gcc-internal-format msgid "__builtin_eh_return not supported on this target" msgstr "" -#: except.c:3973 -#, gcc-internal-format -msgid "Wrong prev_try pointer in EH region %i" -msgstr "" - -#: except.c:3983 +#: except.c:4470 #, gcc-internal-format msgid "Try region %i has wrong rh_catch pointer to %i" msgstr "" -#: except.c:3993 +#: except.c:4480 #, gcc-internal-format msgid "Catch region %i has different outer region than try region %i" msgstr "" -#: except.c:3999 +#: except.c:4486 #, gcc-internal-format msgid "Catch region %i has corrupted catchlist" msgstr "" -#: except.c:4008 +#: except.c:4495 #, gcc-internal-format msgid "Try region %i has wrong last_catch pointer to %i instead of %i" msgstr "" -#: except.c:4020 +#: except.c:4507 #, gcc-internal-format msgid "Catch region %i should be followed by try" msgstr "" -#: except.c:4063 except.c:4074 +#: except.c:4545 except.c:4556 #, gcc-internal-format msgid "region_array is corrupted for region %i" msgstr "" -#: except.c:4079 +#: except.c:4561 #, gcc-internal-format msgid "outer block of region %i is wrong" msgstr "" -#: except.c:4085 +#: except.c:4567 #, gcc-internal-format msgid "region %i may contain throw and is contained in region that may not" msgstr "" -#: except.c:4091 +#: except.c:4573 #, gcc-internal-format msgid "negative nesting depth of region %i" msgstr "" -#: except.c:4112 +#: except.c:4594 #, gcc-internal-format msgid "tree list ends on depth %i" msgstr "" -#: except.c:4117 +#: except.c:4599 #, gcc-internal-format msgid "array does not match the region tree" msgstr "" -#: except.c:4127 +#: except.c:4609 #, gcc-internal-format msgid "verify_eh_tree failed" msgstr "" -#: explow.c:1258 +#: explow.c:1263 #, gcc-internal-format msgid "stack limits not supported on this target" msgstr "" -#: expr.c:8019 +#: expr.c:8060 msgid "%Kcall to %qs declared with attribute error: %s" msgstr "" -#: expr.c:8026 +#: expr.c:8067 msgid "%Kcall to %qs declared with attribute warning: %s" msgstr "" @@ -23278,7 +23661,7 @@ msgstr "" msgid "large fixed-point constant implicitly truncated to fixed-point type" msgstr "" -#: fold-const.c:991 tree-ssa-loop-niter.c:1880 tree-vrp.c:5707 tree-vrp.c:5748 +#: fold-const.c:991 tree-ssa-loop-niter.c:1880 tree-vrp.c:5723 tree-vrp.c:5764 #, gcc-internal-format msgid "%H%s" msgstr "" @@ -23288,45 +23671,45 @@ msgstr "" msgid "assuming signed overflow does not occur when negating a division" msgstr "" -#: fold-const.c:4055 fold-const.c:4066 +#: fold-const.c:4059 fold-const.c:4070 #, gcc-internal-format msgid "comparison is always %d due to width of bit-field" msgstr "" -#: fold-const.c:5397 +#: fold-const.c:5404 #, gcc-internal-format msgid "assuming signed overflow does not occur when simplifying range test" msgstr "" -#: fold-const.c:5774 fold-const.c:5789 +#: fold-const.c:5781 fold-const.c:5796 #, gcc-internal-format msgid "comparison is always %d" msgstr "" -#: fold-const.c:5918 +#: fold-const.c:5925 #, gcc-internal-format msgid "%<or%> of unmatched not-equal tests is always 1" msgstr "" -#: fold-const.c:5923 +#: fold-const.c:5930 #, gcc-internal-format msgid "%<and%> of mutually exclusive equal-tests is always 0" msgstr "" -#: fold-const.c:8826 +#: fold-const.c:8833 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when reducing constant in comparison" msgstr "" -#: fold-const.c:9193 +#: fold-const.c:9200 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when combining constants around a " "comparison" msgstr "" -#: fold-const.c:13748 +#: fold-const.c:13762 #, gcc-internal-format msgid "fold check: original tree changed by fold" msgstr "" @@ -23336,62 +23719,62 @@ msgstr "" msgid "%Jtotal size of local objects too large" msgstr "" -#: function.c:918 varasm.c:2146 +#: function.c:916 varasm.c:2145 #, gcc-internal-format msgid "size of variable %q+D is too large" msgstr "" -#: function.c:1626 gimplify.c:4848 +#: function.c:1624 gimplify.c:4931 #, gcc-internal-format msgid "impossible constraint in %<asm%>" msgstr "" -#: function.c:3732 +#: function.c:3730 #, gcc-internal-format msgid "variable %q+D might be clobbered by %<longjmp%> or %<vfork%>" msgstr "" -#: function.c:3753 +#: function.c:3751 #, gcc-internal-format msgid "argument %q+D might be clobbered by %<longjmp%> or %<vfork%>" msgstr "" -#: function.c:4198 +#: function.c:4196 #, gcc-internal-format msgid "function returns an aggregate" msgstr "" -#: function.c:4599 +#: function.c:4597 #, gcc-internal-format msgid "unused parameter %q+D" msgstr "" -#: gcc.c:1311 +#: gcc.c:1318 #, gcc-internal-format msgid "ambiguous abbreviation %s" msgstr "" -#: gcc.c:1338 +#: gcc.c:1345 #, gcc-internal-format msgid "incomplete '%s' option" msgstr "" -#: gcc.c:1349 +#: gcc.c:1356 #, gcc-internal-format msgid "missing argument to '%s' option" msgstr "" -#: gcc.c:1362 +#: gcc.c:1369 #, gcc-internal-format msgid "extraneous argument to '%s' option" msgstr "" -#: gcc.c:4078 +#: gcc.c:4092 #, gcc-internal-format msgid "warning: -pipe ignored because -save-temps specified" msgstr "" -#: gcc.c:4371 +#: gcc.c:4385 #, gcc-internal-format msgid "warning: '-x %s' after last input file has no effect" msgstr "" @@ -23399,62 +23782,62 @@ msgstr "" #. Catch the case where a spec string contains something like #. '%{foo:%*}'. i.e. there is no * in the pattern on the left #. hand side of the :. -#: gcc.c:5527 +#: gcc.c:5541 #, gcc-internal-format msgid "spec failure: '%%*' has not been initialized by pattern match" msgstr "" -#: gcc.c:5536 +#: gcc.c:5550 #, gcc-internal-format msgid "warning: use of obsolete %%[ operator in specs" msgstr "" -#: gcc.c:5617 +#: gcc.c:5631 #, gcc-internal-format msgid "spec failure: unrecognized spec option '%c'" msgstr "" -#: gcc.c:6514 +#: gcc.c:6528 #, gcc-internal-format msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC" msgstr "" -#: gcc.c:6537 +#: gcc.c:6551 #, gcc-internal-format msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC" msgstr "" -#: gcc.c:6624 +#: gcc.c:6638 #, gcc-internal-format msgid "unrecognized option '-%s'" msgstr "" -#: gcc.c:6857 gcc.c:6920 +#: gcc.c:6871 gcc.c:6934 #, gcc-internal-format msgid "%s: %s compiler not installed on this system" msgstr "" -#: gcc.c:7020 +#: gcc.c:7034 #, gcc-internal-format msgid "%s: linker input file unused because linking not done" msgstr "" -#: gcc.c:7060 +#: gcc.c:7074 #, gcc-internal-format msgid "language %s not recognized" msgstr "" -#: gcc.c:7131 +#: gcc.c:7145 #, gcc-internal-format msgid "%s: %s" msgstr "" -#: gcse.c:6566 +#: gcse.c:4910 #, gcc-internal-format msgid "%s: %d basic blocks and %d edges/basic block" msgstr "" -#: gcse.c:6579 +#: gcse.c:4923 #, gcc-internal-format msgid "%s: %d basic blocks and %d registers" msgstr "" @@ -23507,62 +23890,62 @@ msgstr "" msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d" msgstr "" -#: gimplify.c:4733 +#: gimplify.c:4816 #, gcc-internal-format msgid "invalid lvalue in asm output %d" msgstr "" -#: gimplify.c:4849 +#: gimplify.c:4932 #, gcc-internal-format msgid "non-memory input %d must stay in memory" msgstr "" -#: gimplify.c:4864 +#: gimplify.c:4947 #, gcc-internal-format msgid "memory input %d is not directly addressable" msgstr "" -#: gimplify.c:5358 +#: gimplify.c:5441 #, gcc-internal-format -msgid "%qs not specified in enclosing parallel" +msgid "%qE not specified in enclosing parallel" msgstr "" -#: gimplify.c:5360 +#: gimplify.c:5443 #, gcc-internal-format msgid "%Henclosing parallel" msgstr "" -#: gimplify.c:5465 +#: gimplify.c:5548 #, gcc-internal-format -msgid "iteration variable %qs should be private" +msgid "iteration variable %qE should be private" msgstr "" -#: gimplify.c:5479 +#: gimplify.c:5562 #, gcc-internal-format -msgid "iteration variable %qs should not be firstprivate" +msgid "iteration variable %qE should not be firstprivate" msgstr "" -#: gimplify.c:5482 +#: gimplify.c:5565 #, gcc-internal-format -msgid "iteration variable %qs should not be reduction" +msgid "iteration variable %qE should not be reduction" msgstr "" -#: gimplify.c:5645 +#: gimplify.c:5728 #, gcc-internal-format -msgid "%s variable %qs is private in outer context" +msgid "%s variable %qE is private in outer context" msgstr "" -#: gimplify.c:7159 +#: gimplify.c:7252 #, gcc-internal-format msgid "gimplification failed" msgstr "" -#: graph.c:401 java/jcf-parse.c:1750 java/jcf-parse.c:1890 objc/objc-act.c:497 +#: graph.c:401 java/jcf-parse.c:1750 java/jcf-parse.c:1890 objc/objc-act.c:496 #, gcc-internal-format msgid "can't open %s: %m" msgstr "" -#: graphite.c:6188 toplev.c:1727 +#: graphite.c:6188 toplev.c:1791 #, gcc-internal-format msgid "Graphite loop optimizations cannot be used" msgstr "" @@ -23572,7 +23955,7 @@ msgstr "" msgid "fix_sched_param: unknown param: %s" msgstr "" -#: ira.c:1438 ira.c:1451 ira.c:1465 +#: ira.c:1439 ira.c:1452 ira.c:1466 #, gcc-internal-format msgid "%s cannot be used in asm here" msgstr "" @@ -23618,7 +24001,7 @@ msgid "" "critical region may not be nested inside a critical region with the same name" msgstr "" -#: omp-low.c:6695 cp/decl.c:2669 +#: omp-low.c:6695 cp/decl.c:2667 #, gcc-internal-format msgid "invalid exit from OpenMP structured block" msgstr "" @@ -23634,17 +24017,17 @@ msgstr "" msgid "invalid branch to/from an OpenMP structured block" msgstr "" -#: opts.c:172 +#: opts.c:169 #, gcc-internal-format msgid "argument %qs to %<-femit-struct-debug-detailed%> not recognized" msgstr "" -#: opts.c:206 +#: opts.c:203 #, gcc-internal-format msgid "argument %qs to %<-femit-struct-debug-detailed%> unknown" msgstr "" -#: opts.c:212 +#: opts.c:209 #, gcc-internal-format msgid "" "%<-femit-struct-debug-detailed=dir:...%> must allow at least as much as %<-" @@ -23652,147 +24035,147 @@ msgid "" msgstr "" #. Eventually this should become a hard error IMO. -#: opts.c:443 +#: opts.c:435 #, gcc-internal-format msgid "command line option \"%s\" is valid for %s but not for %s" msgstr "" -#: opts.c:474 opts.c:770 +#: opts.c:466 opts.c:762 #, gcc-internal-format msgid "unrecognized command line option \"%s\"" msgstr "" -#: opts.c:535 +#: opts.c:527 #, gcc-internal-format msgid "command line option %qs is not supported by this configuration" msgstr "" -#: opts.c:588 +#: opts.c:580 #, gcc-internal-format msgid "missing argument to \"%s\"" msgstr "" -#: opts.c:598 +#: opts.c:590 #, gcc-internal-format msgid "argument to \"%s\" should be a non-negative integer" msgstr "" -#: opts.c:977 +#: opts.c:990 #, gcc-internal-format msgid "Section anchors must be disabled when unit-at-a-time is disabled." msgstr "" -#: opts.c:981 +#: opts.c:994 #, gcc-internal-format msgid "Toplevel reorder must be disabled when unit-at-a-time is disabled." msgstr "" -#: opts.c:996 +#: opts.c:1009 #, gcc-internal-format msgid "section anchors must be disabled when toplevel reorder is disabled" msgstr "" -#: opts.c:1026 +#: opts.c:1039 #, gcc-internal-format msgid "-freorder-blocks-and-partition does not work with exceptions" msgstr "" -#: opts.c:1037 +#: opts.c:1050 #, gcc-internal-format msgid "-freorder-blocks-and-partition does not support unwind info" msgstr "" -#: opts.c:1051 +#: opts.c:1064 #, gcc-internal-format msgid "-freorder-blocks-and-partition does not work on this architecture" msgstr "" -#: opts.c:1065 +#: opts.c:1078 #, gcc-internal-format msgid "-fira-algorithm=CB does not work on this architecture" msgstr "" -#: opts.c:1374 +#: opts.c:1387 #, gcc-internal-format msgid "unrecognized include_flags 0x%x passed to print_specific_help" msgstr "" -#: opts.c:1721 +#: opts.c:1725 #, gcc-internal-format msgid "unknown excess precision style \"%s\"" msgstr "" -#: opts.c:1758 +#: opts.c:1762 #, gcc-internal-format msgid "structure alignment must be a small power of two, not %d" msgstr "" -#: opts.c:1774 opts.c:1782 +#: opts.c:1778 opts.c:1786 #, gcc-internal-format msgid "Plugin support is disabled. Configure with --enable-plugin." msgstr "" -#: opts.c:1861 +#: opts.c:1865 #, gcc-internal-format msgid "unrecognized visibility value \"%s\"" msgstr "" -#: opts.c:1919 +#: opts.c:1923 #, gcc-internal-format msgid "unknown stack check parameter \"%s\"" msgstr "" -#: opts.c:1945 +#: opts.c:1949 #, gcc-internal-format msgid "unrecognized register name \"%s\"" msgstr "" -#: opts.c:1969 +#: opts.c:1973 #, gcc-internal-format msgid "unknown tls-model \"%s\"" msgstr "" -#: opts.c:1978 +#: opts.c:1982 #, gcc-internal-format msgid "unknown ira algorithm \"%s\"" msgstr "" -#: opts.c:1989 +#: opts.c:1993 #, gcc-internal-format msgid "unknown ira region \"%s\"" msgstr "" -#: opts.c:2092 +#: opts.c:2096 #, gcc-internal-format msgid "%s: --param arguments should be of the form NAME=VALUE" msgstr "" -#: opts.c:2097 +#: opts.c:2101 #, gcc-internal-format msgid "invalid --param value %qs" msgstr "" -#: opts.c:2215 +#: opts.c:2204 #, gcc-internal-format msgid "target system does not support debug output" msgstr "" -#: opts.c:2222 +#: opts.c:2211 #, gcc-internal-format msgid "debug format \"%s\" conflicts with prior selection" msgstr "" -#: opts.c:2238 +#: opts.c:2227 #, gcc-internal-format msgid "unrecognised debug output level \"%s\"" msgstr "" -#: opts.c:2240 +#: opts.c:2229 #, gcc-internal-format msgid "debug output level %s is too high" msgstr "" -#: opts.c:2322 +#: opts.c:2313 #, gcc-internal-format msgid "-Werror=%s: No option -%s" msgstr "" @@ -23813,7 +24196,7 @@ msgstr "" msgid "invalid parameter %qs" msgstr "" -#: plugin.c:158 +#: plugin.c:160 #, gcc-internal-format msgid "" "Plugin %s was specified with different paths:\n" @@ -23821,50 +24204,50 @@ msgid "" "%s" msgstr "" -#: plugin.c:204 +#: plugin.c:206 #, gcc-internal-format msgid "Malformed option -fplugin-arg-%s (multiple '=' signs)" msgstr "" -#: plugin.c:220 +#: plugin.c:222 #, gcc-internal-format msgid "Malformed option -fplugin-arg-%s (missing -<key>[=<value>])" msgstr "" -#: plugin.c:282 +#: plugin.c:284 #, gcc-internal-format msgid "" "Plugin %s should be specified before -fplugin-arg-%s in the command line" msgstr "" -#: plugin.c:363 +#: plugin.c:365 #, gcc-internal-format msgid "Invalid pass positioning operation" msgstr "" -#: plugin.c:403 +#: plugin.c:405 #, gcc-internal-format msgid "No pass specified when registering a new pass in plugin %s" msgstr "" -#: plugin.c:410 +#: plugin.c:412 #, gcc-internal-format msgid "No reference pass specified for positioning the pass from plugin %s" msgstr "" -#: plugin.c:420 +#: plugin.c:422 #, gcc-internal-format msgid "" "Failed to position pass %s registered by plugin %s. Cannot find the " "(specified instance of) reference pass %s" msgstr "" -#: plugin.c:499 +#: plugin.c:501 #, gcc-internal-format msgid "Plugin %s registered a null callback function for event %s" msgstr "" -#: plugin.c:513 +#: plugin.c:515 #, gcc-internal-format msgid "Unkown callback event registered by plugin %s" msgstr "" @@ -23883,7 +24266,7 @@ msgid "" "%s" msgstr "" -#: plugin.c:603 +#: plugin.c:600 #, gcc-internal-format msgid "Fail to initialize plugin %s" msgstr "" @@ -23951,51 +24334,51 @@ msgstr "" msgid "output operand %d must use %<&%> constraint" msgstr "" -#: reginfo.c:823 +#: regcprop.c:948 #, gcc-internal-format -msgid "can't use '%s' as a %s register" +msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)" msgstr "" -#: reginfo.c:838 config/ia64/ia64.c:5165 config/ia64/ia64.c:5172 -#: config/pa/pa.c:363 config/pa/pa.c:370 config/sh/sh.c:7976 -#: config/sh/sh.c:7983 config/spu/spu.c:4481 config/spu/spu.c:4488 +#: regcprop.c:960 #, gcc-internal-format -msgid "unknown register name: %s" +msgid "validate_value_data: Loop in regno chain (%u)" msgstr "" -#: reginfo.c:847 +#: regcprop.c:963 #, gcc-internal-format -msgid "global register variable follows a function definition" +msgid "validate_value_data: [%u] Bad oldest_regno (%u)" msgstr "" -#: reginfo.c:851 +#: regcprop.c:975 #, gcc-internal-format -msgid "register used for two global register variables" +msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)" msgstr "" -#: reginfo.c:856 +#: reginfo.c:823 #, gcc-internal-format -msgid "call-clobbered register used for global register variable" +msgid "can't use '%s' as a %s register" msgstr "" -#: regrename.c:1907 +#: reginfo.c:838 config/ia64/ia64.c:5186 config/ia64/ia64.c:5193 +#: config/pa/pa.c:367 config/pa/pa.c:374 config/sh/sh.c:7966 +#: config/sh/sh.c:7973 config/spu/spu.c:4624 config/spu/spu.c:4631 #, gcc-internal-format -msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)" +msgid "unknown register name: %s" msgstr "" -#: regrename.c:1919 +#: reginfo.c:847 #, gcc-internal-format -msgid "validate_value_data: Loop in regno chain (%u)" +msgid "global register variable follows a function definition" msgstr "" -#: regrename.c:1922 +#: reginfo.c:851 #, gcc-internal-format -msgid "validate_value_data: [%u] Bad oldest_regno (%u)" +msgid "register used for two global register variables" msgstr "" -#: regrename.c:1934 +#: reginfo.c:856 #, gcc-internal-format -msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)" +msgid "call-clobbered register used for global register variable" msgstr "" #: reload.c:1259 @@ -24053,7 +24436,7 @@ msgstr "" msgid "%<asm%> operand constraint incompatible with operand size" msgstr "" -#: reload1.c:7577 +#: reload1.c:7598 #, gcc-internal-format msgid "output operand is constant in %<asm%>" msgstr "" @@ -24103,122 +24486,122 @@ msgstr "" msgid "RTL flag check: %s used with unexpected rtx code '%s' in %s, at %s:%d" msgstr "" -#: stmt.c:310 +#: stmt.c:311 #, gcc-internal-format msgid "output operand constraint lacks %<=%>" msgstr "" -#: stmt.c:325 +#: stmt.c:326 #, gcc-internal-format msgid "output constraint %qc for operand %d is not at the beginning" msgstr "" -#: stmt.c:348 +#: stmt.c:349 #, gcc-internal-format msgid "operand constraint contains incorrectly positioned %<+%> or %<=%>" msgstr "" -#: stmt.c:355 stmt.c:454 +#: stmt.c:356 stmt.c:455 #, gcc-internal-format msgid "%<%%%> constraint used with last operand" msgstr "" -#: stmt.c:374 +#: stmt.c:375 #, gcc-internal-format msgid "matching constraint not valid in output operand" msgstr "" -#: stmt.c:445 +#: stmt.c:446 #, gcc-internal-format msgid "input operand constraint contains %qc" msgstr "" -#: stmt.c:487 +#: stmt.c:488 #, gcc-internal-format msgid "matching constraint references invalid operand number" msgstr "" -#: stmt.c:525 +#: stmt.c:526 #, gcc-internal-format msgid "invalid punctuation %qc in constraint" msgstr "" -#: stmt.c:549 +#: stmt.c:550 #, gcc-internal-format msgid "matching constraint does not allow a register" msgstr "" -#: stmt.c:603 +#: stmt.c:604 #, gcc-internal-format -msgid "asm-specifier for variable %qs conflicts with asm clobber list" +msgid "asm-specifier for variable %qE conflicts with asm clobber list" msgstr "" -#: stmt.c:693 +#: stmt.c:694 #, gcc-internal-format msgid "unknown register name %qs in %<asm%>" msgstr "" -#: stmt.c:701 +#: stmt.c:702 #, gcc-internal-format msgid "PIC register %qs clobbered in %<asm%>" msgstr "" -#: stmt.c:748 +#: stmt.c:749 #, gcc-internal-format msgid "more than %d operands in %<asm%>" msgstr "" -#: stmt.c:811 +#: stmt.c:812 #, gcc-internal-format msgid "output number %d not directly addressable" msgstr "" -#: stmt.c:894 +#: stmt.c:895 #, gcc-internal-format msgid "asm operand %d probably doesn%'t match constraints" msgstr "" -#: stmt.c:904 +#: stmt.c:905 #, gcc-internal-format msgid "use of memory input without lvalue in asm operand %d is deprecated" msgstr "" -#: stmt.c:1051 +#: stmt.c:1052 #, gcc-internal-format msgid "asm clobber conflict with output operand" msgstr "" -#: stmt.c:1056 +#: stmt.c:1057 #, gcc-internal-format msgid "asm clobber conflict with input operand" msgstr "" -#: stmt.c:1134 +#: stmt.c:1135 #, gcc-internal-format msgid "too many alternatives in %<asm%>" msgstr "" -#: stmt.c:1146 +#: stmt.c:1147 #, gcc-internal-format msgid "operand constraints for %<asm%> differ in number of alternatives" msgstr "" -#: stmt.c:1199 +#: stmt.c:1200 #, gcc-internal-format msgid "duplicate asm operand name %qs" msgstr "" -#: stmt.c:1297 +#: stmt.c:1298 #, gcc-internal-format msgid "missing close brace for named operand" msgstr "" -#: stmt.c:1325 +#: stmt.c:1326 #, gcc-internal-format msgid "undefined named operand %qs" msgstr "" -#: stmt.c:1469 +#: stmt.c:1471 #, gcc-internal-format msgid "%Hvalue computed is not used" msgstr "" @@ -24272,12 +24655,12 @@ msgstr "" #: stor-layout.c:1303 #, gcc-internal-format -msgid "packed attribute causes inefficient alignment for %qs" +msgid "packed attribute causes inefficient alignment for %qE" msgstr "" #: stor-layout.c:1307 #, gcc-internal-format -msgid "packed attribute is unnecessary for %qs" +msgid "packed attribute is unnecessary for %qE" msgstr "" #: stor-layout.c:1313 @@ -24295,17 +24678,17 @@ msgstr "" msgid "alignment of array elements is greater than element size" msgstr "" -#: targhooks.c:116 +#: targhooks.c:124 #, gcc-internal-format msgid "__builtin_saveregs not supported by this target" msgstr "" -#: targhooks.c:728 +#: targhooks.c:742 #, gcc-internal-format msgid "target attribute is not supported on this machine" msgstr "" -#: targhooks.c:738 +#: targhooks.c:752 #, gcc-internal-format msgid "#pragma GCC target is not supported for this machine" msgstr "" @@ -24327,628 +24710,658 @@ msgstr "" msgid "ld returned %d exit status" msgstr "" -#: toplev.c:526 +#: toplev.c:528 #, gcc-internal-format msgid "invalid option argument %qs" msgstr "" -#: toplev.c:624 +#: toplev.c:626 #, gcc-internal-format msgid "getting core file size maximum limit: %m" msgstr "" -#: toplev.c:627 +#: toplev.c:629 #, gcc-internal-format msgid "setting core file size limit to maximum: %m" msgstr "" -#: toplev.c:847 +#: toplev.c:849 #, gcc-internal-format msgid "%q+F declared %<static%> but never defined" msgstr "" -#: toplev.c:875 +#: toplev.c:877 #, gcc-internal-format msgid "%q+D defined but not used" msgstr "" -#: toplev.c:918 +#: toplev.c:944 +#, gcc-internal-format +msgid "%qD is deprecated (declared at %s:%d): %s" +msgstr "" + +#: toplev.c:948 #, gcc-internal-format msgid "%qD is deprecated (declared at %s:%d)" msgstr "" -#: toplev.c:941 +#: toplev.c:973 #, gcc-internal-format -msgid "%qs is deprecated (declared at %s:%d)" +msgid "%qE is deprecated (declared at %s:%d): %s" msgstr "" -#: toplev.c:945 +#: toplev.c:977 +#, gcc-internal-format +msgid "%qE is deprecated (declared at %s:%d)" +msgstr "" + +#: toplev.c:984 +#, gcc-internal-format +msgid "type is deprecated (declared at %s:%d): %s" +msgstr "" + +#: toplev.c:988 #, gcc-internal-format msgid "type is deprecated (declared at %s:%d)" msgstr "" -#: toplev.c:951 +#: toplev.c:997 +#, gcc-internal-format +msgid "%qE is deprecated: %s" +msgstr "" + +#: toplev.c:1000 #, gcc-internal-format -msgid "%qs is deprecated" +msgid "%qE is deprecated" msgstr "" -#: toplev.c:953 +#: toplev.c:1005 +#, gcc-internal-format +msgid "type is deprecated: %s" +msgstr "" + +#: toplev.c:1008 #, gcc-internal-format msgid "type is deprecated" msgstr "" -#: toplev.c:1092 +#: toplev.c:1148 #, gcc-internal-format msgid "unrecognized gcc debugging option: %c" msgstr "" -#: toplev.c:1347 +#: toplev.c:1407 #, gcc-internal-format msgid "can%'t open %s for writing: %m" msgstr "" -#: toplev.c:1368 +#: toplev.c:1428 #, gcc-internal-format msgid "-frecord-gcc-switches is not supported by the current target" msgstr "" -#: toplev.c:1701 +#: toplev.c:1765 #, gcc-internal-format msgid "this target does not support %qs" msgstr "" -#: toplev.c:1756 +#: toplev.c:1820 #, gcc-internal-format msgid "instruction scheduling not supported on this target machine" msgstr "" -#: toplev.c:1760 +#: toplev.c:1824 #, gcc-internal-format msgid "this target machine does not have delayed branches" msgstr "" -#: toplev.c:1774 +#: toplev.c:1838 #, gcc-internal-format msgid "-f%sleading-underscore not supported on this target machine" msgstr "" -#: toplev.c:1847 +#: toplev.c:1911 #, gcc-internal-format msgid "target system does not support the \"%s\" debug format" msgstr "" -#: toplev.c:1860 +#: toplev.c:1924 #, gcc-internal-format msgid "variable tracking requested, but useless unless producing debug info" msgstr "" -#: toplev.c:1863 +#: toplev.c:1927 #, gcc-internal-format msgid "variable tracking requested, but not supported by this debug format" msgstr "" -#: toplev.c:1897 +#: toplev.c:1961 #, gcc-internal-format msgid "can%'t open %s: %m" msgstr "" -#: toplev.c:1904 +#: toplev.c:1968 #, gcc-internal-format msgid "-ffunction-sections not supported for this target" msgstr "" -#: toplev.c:1909 +#: toplev.c:1973 #, gcc-internal-format msgid "-fdata-sections not supported for this target" msgstr "" -#: toplev.c:1916 +#: toplev.c:1980 #, gcc-internal-format msgid "-ffunction-sections disabled; it makes profiling impossible" msgstr "" -#: toplev.c:1923 +#: toplev.c:1987 #, gcc-internal-format msgid "-fprefetch-loop-arrays not supported for this target" msgstr "" -#: toplev.c:1929 +#: toplev.c:1993 #, gcc-internal-format msgid "" "-fprefetch-loop-arrays not supported for this target (try -march switches)" msgstr "" -#: toplev.c:1938 +#: toplev.c:2002 #, gcc-internal-format msgid "-fprefetch-loop-arrays is not supported with -Os" msgstr "" -#: toplev.c:1949 +#: toplev.c:2013 #, gcc-internal-format msgid "-fassociative-math disabled; other options take precedence" msgstr "" -#: toplev.c:1965 +#: toplev.c:2029 #, gcc-internal-format msgid "-fstack-protector not supported for this target" msgstr "" -#: toplev.c:1978 +#: toplev.c:2042 #, gcc-internal-format msgid "unwind tables currently require a frame pointer for correctness" msgstr "" -#: toplev.c:2205 +#: toplev.c:2269 #, gcc-internal-format msgid "error writing to %s: %m" msgstr "" -#: toplev.c:2207 java/jcf-parse.c:1769 +#: toplev.c:2271 java/jcf-parse.c:1769 #, gcc-internal-format msgid "error closing %s: %m" msgstr "" -#: tree-cfg.c:1535 tree-cfg.c:2209 +#: tree-cfg.c:1535 tree-cfg.c:2214 #, gcc-internal-format msgid "%Hwill never be executed" msgstr "" -#: tree-cfg.c:2843 +#: tree-cfg.c:2848 #, gcc-internal-format msgid "SSA name in freelist but still referenced" msgstr "" -#: tree-cfg.c:2852 +#: tree-cfg.c:2857 #, gcc-internal-format msgid "Indirect reference's operand is not a register or a constant." msgstr "" -#: tree-cfg.c:2861 +#: tree-cfg.c:2866 #, gcc-internal-format msgid "ASSERT_EXPR with an always-false condition" msgstr "" -#: tree-cfg.c:2867 +#: tree-cfg.c:2872 #, gcc-internal-format msgid "MODIFY_EXPR not expected while having tuples." msgstr "" -#: tree-cfg.c:2888 +#: tree-cfg.c:2893 #, gcc-internal-format msgid "constant not recomputed when ADDR_EXPR changed" msgstr "" -#: tree-cfg.c:2893 +#: tree-cfg.c:2898 #, gcc-internal-format msgid "side effects not recomputed when ADDR_EXPR changed" msgstr "" -#: tree-cfg.c:2911 tree-ssa.c:497 +#: tree-cfg.c:2916 tree-ssa.c:497 #, gcc-internal-format msgid "address taken, but ADDRESSABLE bit not set" msgstr "" -#: tree-cfg.c:2916 +#: tree-cfg.c:2921 #, gcc-internal-format msgid "DECL_GIMPLE_REG_P set on a variable with address taken" msgstr "" -#: tree-cfg.c:2927 +#: tree-cfg.c:2932 #, gcc-internal-format msgid "non-integral used in condition" msgstr "" -#: tree-cfg.c:2932 +#: tree-cfg.c:2937 #, gcc-internal-format msgid "invalid conditional operand" msgstr "" -#: tree-cfg.c:2979 +#: tree-cfg.c:2984 #, gcc-internal-format msgid "invalid position or size operand to BIT_FIELD_REF" msgstr "" -#: tree-cfg.c:2986 +#: tree-cfg.c:2991 #, gcc-internal-format msgid "" "integral result type precision does not match field size of BIT_FIELD_REF" msgstr "" -#: tree-cfg.c:2994 +#: tree-cfg.c:2999 #, gcc-internal-format msgid "" "mode precision of non-integral result does not match field size of " "BIT_FIELD_REF" msgstr "" -#: tree-cfg.c:3005 +#: tree-cfg.c:3010 #, gcc-internal-format msgid "invalid reference prefix" msgstr "" -#: tree-cfg.c:3016 +#: tree-cfg.c:3021 #, gcc-internal-format msgid "invalid operand to plus/minus, type is a pointer" msgstr "" -#: tree-cfg.c:3027 +#: tree-cfg.c:3032 #, gcc-internal-format msgid "invalid operand to pointer plus, first operand is not a pointer" msgstr "" -#: tree-cfg.c:3035 +#: tree-cfg.c:3040 #, gcc-internal-format msgid "" "invalid operand to pointer plus, second operand is not an integer with type " "of sizetype." msgstr "" -#: tree-cfg.c:3106 +#: tree-cfg.c:3111 #, gcc-internal-format msgid "invalid expression for min lvalue" msgstr "" -#: tree-cfg.c:3117 +#: tree-cfg.c:3122 #, gcc-internal-format msgid "invalid operand in indirect reference" msgstr "" -#: tree-cfg.c:3124 +#: tree-cfg.c:3129 #, gcc-internal-format msgid "type mismatch in indirect reference" msgstr "" -#: tree-cfg.c:3152 +#: tree-cfg.c:3158 #, gcc-internal-format msgid "invalid operands to array reference" msgstr "" -#: tree-cfg.c:3163 +#: tree-cfg.c:3169 #, gcc-internal-format msgid "type mismatch in array reference" msgstr "" -#: tree-cfg.c:3172 +#: tree-cfg.c:3178 #, gcc-internal-format msgid "type mismatch in array range reference" msgstr "" -#: tree-cfg.c:3183 +#: tree-cfg.c:3189 #, gcc-internal-format msgid "type mismatch in real/imagpart reference" msgstr "" -#: tree-cfg.c:3193 +#: tree-cfg.c:3199 #, gcc-internal-format msgid "type mismatch in component reference" msgstr "" -#: tree-cfg.c:3255 +#: tree-cfg.c:3262 #, gcc-internal-format msgid "non-function in gimple call" msgstr "" -#: tree-cfg.c:3262 +#: tree-cfg.c:3269 #, gcc-internal-format msgid "invalid LHS in gimple call" msgstr "" -#: tree-cfg.c:3278 +#: tree-cfg.c:3285 #, gcc-internal-format msgid "invalid conversion in gimple call" msgstr "" -#: tree-cfg.c:3303 +#: tree-cfg.c:3310 #, gcc-internal-format msgid "invalid operands in gimple comparison" msgstr "" -#: tree-cfg.c:3321 +#: tree-cfg.c:3328 #, gcc-internal-format msgid "type mismatch in comparison expression" msgstr "" -#: tree-cfg.c:3347 +#: tree-cfg.c:3354 #, gcc-internal-format msgid "non-register as LHS of unary operation" msgstr "" -#: tree-cfg.c:3353 +#: tree-cfg.c:3360 #, gcc-internal-format msgid "invalid operand in unary operation" msgstr "" -#: tree-cfg.c:3388 +#: tree-cfg.c:3395 #, gcc-internal-format msgid "invalid types in nop conversion" msgstr "" -#: tree-cfg.c:3402 +#: tree-cfg.c:3409 #, gcc-internal-format msgid "invalid types in fixed-point conversion" msgstr "" -#: tree-cfg.c:3415 +#: tree-cfg.c:3422 #, gcc-internal-format msgid "invalid types in conversion to floating point" msgstr "" -#: tree-cfg.c:3428 +#: tree-cfg.c:3435 #, gcc-internal-format msgid "invalid types in conversion to integer" msgstr "" -#: tree-cfg.c:3463 +#: tree-cfg.c:3470 #, gcc-internal-format msgid "non-trivial conversion in unary operation" msgstr "" -#: tree-cfg.c:3490 +#: tree-cfg.c:3497 #, gcc-internal-format msgid "non-register as LHS of binary operation" msgstr "" -#: tree-cfg.c:3497 +#: tree-cfg.c:3504 #, gcc-internal-format msgid "invalid operands in binary operation" msgstr "" -#: tree-cfg.c:3512 +#: tree-cfg.c:3519 #, gcc-internal-format msgid "type mismatch in complex expression" msgstr "" -#: tree-cfg.c:3541 +#: tree-cfg.c:3548 #, gcc-internal-format msgid "type mismatch in shift expression" msgstr "" -#: tree-cfg.c:3562 +#: tree-cfg.c:3570 #, gcc-internal-format msgid "type mismatch in vector shift expression" msgstr "" #: tree-cfg.c:3583 #, gcc-internal-format +msgid "non-element sized vector shift of floating point vector" +msgstr "" + +#: tree-cfg.c:3601 +#, gcc-internal-format msgid "invalid non-vector operands to vector valued plus" msgstr "" -#: tree-cfg.c:3607 +#: tree-cfg.c:3625 #, gcc-internal-format msgid "invalid (pointer) operands to plus/minus" msgstr "" -#: tree-cfg.c:3622 +#: tree-cfg.c:3640 #, gcc-internal-format msgid "type mismatch in pointer plus expression" msgstr "" -#: tree-cfg.c:3645 +#: tree-cfg.c:3663 #, gcc-internal-format msgid "type mismatch in binary truth expression" msgstr "" -#: tree-cfg.c:3713 +#: tree-cfg.c:3731 #, gcc-internal-format msgid "type mismatch in binary expression" msgstr "" -#: tree-cfg.c:3738 +#: tree-cfg.c:3756 #, gcc-internal-format msgid "non-trivial conversion at assignment" msgstr "" -#: tree-cfg.c:3755 +#: tree-cfg.c:3773 #, gcc-internal-format msgid "invalid operand in unary expression" msgstr "" -#: tree-cfg.c:3762 +#: tree-cfg.c:3780 #, gcc-internal-format msgid "type mismatch in address expression" msgstr "" -#: tree-cfg.c:3786 tree-cfg.c:3812 +#: tree-cfg.c:3804 tree-cfg.c:3830 #, gcc-internal-format msgid "invalid rhs for gimple memory store" msgstr "" -#: tree-cfg.c:3878 +#: tree-cfg.c:3896 #, gcc-internal-format msgid "invalid operand in return statement" msgstr "" -#: tree-cfg.c:3890 +#: tree-cfg.c:3908 #, gcc-internal-format msgid "invalid conversion in return statement" msgstr "" -#: tree-cfg.c:3914 +#: tree-cfg.c:3932 #, gcc-internal-format msgid "goto destination is neither a label nor a pointer" msgstr "" -#: tree-cfg.c:3929 +#: tree-cfg.c:3947 #, gcc-internal-format msgid "invalid operand to switch statement" msgstr "" -#: tree-cfg.c:3949 +#: tree-cfg.c:3967 #, gcc-internal-format msgid "Invalid PHI result" msgstr "" -#: tree-cfg.c:3961 +#: tree-cfg.c:3979 #, gcc-internal-format msgid "Invalid PHI argument" msgstr "" -#: tree-cfg.c:3967 +#: tree-cfg.c:3985 #, gcc-internal-format msgid "Incompatible types in PHI argument %u" msgstr "" -#: tree-cfg.c:4092 +#: tree-cfg.c:4110 #, gcc-internal-format msgid "verify_gimple failed" msgstr "" -#: tree-cfg.c:4126 +#: tree-cfg.c:4144 #, gcc-internal-format msgid "invalid function in call statement" msgstr "" -#: tree-cfg.c:4137 +#: tree-cfg.c:4155 #, gcc-internal-format msgid "invalid pure const state for function" msgstr "" -#: tree-cfg.c:4147 tree-ssa.c:669 tree-ssa.c:678 +#: tree-cfg.c:4165 tree-ssa.c:669 tree-ssa.c:678 #, gcc-internal-format msgid "in statement" msgstr "" -#: tree-cfg.c:4164 +#: tree-cfg.c:4182 #, gcc-internal-format msgid "statement marked for throw, but doesn%'t" msgstr "" -#: tree-cfg.c:4169 +#: tree-cfg.c:4187 #, gcc-internal-format msgid "statement marked for throw in middle of block" msgstr "" -#: tree-cfg.c:4241 +#: tree-cfg.c:4259 #, gcc-internal-format msgid "Dead STMT in EH table" msgstr "" -#: tree-cfg.c:4279 +#: tree-cfg.c:4297 #, gcc-internal-format msgid "gimple_bb (phi) is set to a wrong basic block" msgstr "" -#: tree-cfg.c:4290 +#: tree-cfg.c:4308 #, gcc-internal-format msgid "missing PHI def" msgstr "" -#: tree-cfg.c:4301 +#: tree-cfg.c:4319 #, gcc-internal-format msgid "PHI argument is not a GIMPLE value" msgstr "" -#: tree-cfg.c:4310 tree-cfg.c:4355 +#: tree-cfg.c:4328 tree-cfg.c:4389 #, gcc-internal-format msgid "incorrect sharing of tree nodes" msgstr "" -#: tree-cfg.c:4325 +#: tree-cfg.c:4351 #, gcc-internal-format msgid "invalid GIMPLE statement" msgstr "" -#: tree-cfg.c:4334 +#: tree-cfg.c:4360 #, gcc-internal-format msgid "gimple_bb (stmt) is set to a wrong basic block" msgstr "" -#: tree-cfg.c:4346 +#: tree-cfg.c:4372 #, gcc-internal-format msgid "incorrect entry in label_to_block_map.\n" msgstr "" -#: tree-cfg.c:4371 +#: tree-cfg.c:4405 #, gcc-internal-format msgid "verify_stmts failed" msgstr "" -#: tree-cfg.c:4394 +#: tree-cfg.c:4428 #, gcc-internal-format msgid "ENTRY_BLOCK has IL associated with it" msgstr "" -#: tree-cfg.c:4400 +#: tree-cfg.c:4434 #, gcc-internal-format msgid "EXIT_BLOCK has IL associated with it" msgstr "" -#: tree-cfg.c:4407 +#: tree-cfg.c:4441 #, gcc-internal-format msgid "fallthru to exit from bb %d" msgstr "" -#: tree-cfg.c:4431 +#: tree-cfg.c:4465 #, gcc-internal-format msgid "nonlocal label " msgstr "" -#: tree-cfg.c:4440 tree-cfg.c:4449 tree-cfg.c:4474 +#: tree-cfg.c:4474 tree-cfg.c:4483 tree-cfg.c:4508 #, gcc-internal-format msgid "label " msgstr "" -#: tree-cfg.c:4464 +#: tree-cfg.c:4498 #, gcc-internal-format msgid "control flow in the middle of basic block %d" msgstr "" -#: tree-cfg.c:4494 +#: tree-cfg.c:4528 #, gcc-internal-format msgid "fallthru edge after a control statement in bb %d" msgstr "" -#: tree-cfg.c:4507 +#: tree-cfg.c:4541 #, gcc-internal-format msgid "true/false edge after a non-GIMPLE_COND in bb %d" msgstr "" -#: tree-cfg.c:4530 tree-cfg.c:4552 tree-cfg.c:4565 tree-cfg.c:4634 +#: tree-cfg.c:4564 tree-cfg.c:4586 tree-cfg.c:4599 tree-cfg.c:4668 #, gcc-internal-format msgid "wrong outgoing edge flags at end of bb %d" msgstr "" -#: tree-cfg.c:4540 +#: tree-cfg.c:4574 #, gcc-internal-format msgid "explicit goto at end of bb %d" msgstr "" -#: tree-cfg.c:4570 +#: tree-cfg.c:4604 #, gcc-internal-format msgid "return edge does not point to exit in bb %d" msgstr "" -#: tree-cfg.c:4600 +#: tree-cfg.c:4634 #, gcc-internal-format msgid "found default case not at the start of case vector" msgstr "" -#: tree-cfg.c:4608 +#: tree-cfg.c:4642 #, gcc-internal-format msgid "case labels not sorted: " msgstr "" -#: tree-cfg.c:4625 +#: tree-cfg.c:4659 #, gcc-internal-format msgid "extra outgoing edge %d->%d" msgstr "" -#: tree-cfg.c:4648 +#: tree-cfg.c:4682 #, gcc-internal-format msgid "missing edge %i->%i" msgstr "" -#: tree-cfg.c:7098 +#: tree-cfg.c:7156 #, gcc-internal-format msgid "%H%<noreturn%> function does return" msgstr "" -#: tree-cfg.c:7118 +#: tree-cfg.c:7176 #, gcc-internal-format msgid "control reaches end of non-void function" msgstr "" -#: tree-cfg.c:7180 +#: tree-cfg.c:7238 #, gcc-internal-format msgid "%Jfunction might be possible candidate for attribute %<noreturn%>" msgstr "" @@ -24963,116 +25376,116 @@ msgstr "" msgid "ignoring unknown option %q.*s in %<-fdump-%s%>" msgstr "" -#: tree-eh.c:2044 +#: tree-eh.c:2080 #, gcc-internal-format msgid "EH edge %i->%i is missing" msgstr "" -#: tree-eh.c:2049 +#: tree-eh.c:2085 #, gcc-internal-format msgid "EH edge %i->%i miss EH flag" msgstr "" #. ??? might not be mistake. -#: tree-eh.c:2055 +#: tree-eh.c:2091 #, gcc-internal-format msgid "EH edge %i->%i has duplicated regions" msgstr "" -#: tree-eh.c:2091 +#: tree-eh.c:2127 #, gcc-internal-format msgid "BB %i can not throw but has EH edges" msgstr "" -#: tree-eh.c:2098 +#: tree-eh.c:2134 #, gcc-internal-format msgid "BB %i last statement has incorrectly set region" msgstr "" -#: tree-eh.c:2110 +#: tree-eh.c:2146 #, gcc-internal-format msgid "unnecessary EH edge %i->%i" msgstr "" -#: tree-inline.c:2447 +#: tree-inline.c:2474 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses variable sized variables" msgstr "" -#: tree-inline.c:2481 +#: tree-inline.c:2508 #, 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:2495 +#: tree-inline.c:2522 #, gcc-internal-format msgid "function %q+F can never be inlined because it uses setjmp" msgstr "" -#: tree-inline.c:2509 +#: tree-inline.c:2536 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses variable argument lists" msgstr "" -#: tree-inline.c:2521 +#: tree-inline.c:2548 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses setjmp-longjmp exception " "handling" msgstr "" -#: tree-inline.c:2529 +#: tree-inline.c:2556 #, gcc-internal-format msgid "function %q+F can never be inlined because it uses non-local goto" msgstr "" -#: tree-inline.c:2541 +#: tree-inline.c:2568 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses __builtin_return or " "__builtin_apply_args" msgstr "" -#: tree-inline.c:2561 +#: tree-inline.c:2588 #, gcc-internal-format msgid "function %q+F can never be inlined because it contains a computed goto" msgstr "" -#: tree-inline.c:2576 +#: tree-inline.c:2603 #, gcc-internal-format msgid "function %q+F can never be inlined because it receives a non-local goto" msgstr "" -#: tree-inline.c:2602 +#: tree-inline.c:2629 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it saves address of local label " "in a static variable" msgstr "" -#: tree-inline.c:2693 +#: tree-inline.c:2720 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it is suppressed using -fno-inline" msgstr "" -#: tree-inline.c:2707 +#: tree-inline.c:2734 #, gcc-internal-format msgid "" "function %q+F can never be inlined because it uses attributes conflicting " "with inlining" msgstr "" -#: tree-inline.c:3255 tree-inline.c:3266 +#: tree-inline.c:3259 tree-inline.c:3270 #, gcc-internal-format msgid "inlining failed in call to %q+F: %s" msgstr "" -#: tree-inline.c:3257 tree-inline.c:3268 +#: tree-inline.c:3261 tree-inline.c:3272 #, gcc-internal-format msgid "called from here" msgstr "" @@ -25084,71 +25497,51 @@ msgstr "" #: tree-mudflap.c:1064 #, gcc-internal-format -msgid "mudflap cannot track %qs in stub function" +msgid "mudflap cannot track %qE in stub function" msgstr "" #: tree-mudflap.c:1308 #, gcc-internal-format -msgid "mudflap cannot track unknown size extern %qs" +msgid "mudflap cannot track unknown size extern %qE" msgstr "" -#: tree-nomudflap.c:50 +#: tree-nomudflap.c:49 #, gcc-internal-format msgid "mudflap: this language is not supported" msgstr "" -#: tree-optimize.c:462 +#: tree-optimize.c:419 #, gcc-internal-format msgid "size of return value of %q+D is %u bytes" msgstr "" -#: tree-optimize.c:465 +#: tree-optimize.c:422 #, gcc-internal-format msgid "size of return value of %q+D is larger than %wd bytes" msgstr "" -#: tree-outof-ssa.c:678 tree-outof-ssa.c:740 tree-ssa-coalesce.c:934 -#: tree-ssa-coalesce.c:949 tree-ssa-coalesce.c:1168 tree-ssa-live.c:1187 +#: tree-outof-ssa.c:693 tree-outof-ssa.c:750 tree-ssa-coalesce.c:956 +#: tree-ssa-coalesce.c:971 tree-ssa-coalesce.c:1190 tree-ssa-live.c:1130 #, gcc-internal-format msgid "SSA corruption" msgstr "" -#: tree-outof-ssa.c:1310 -#, gcc-internal-format -msgid " Pending stmts not issued on PRED edge (%d, %d)\n" -msgstr "" - -#: tree-outof-ssa.c:1316 -#, gcc-internal-format -msgid " Pending stmts not issued on SUCC edge (%d, %d)\n" -msgstr "" - -#: tree-outof-ssa.c:1323 -#, gcc-internal-format -msgid " Pending stmts not issued on ENTRY edge (%d, %d)\n" -msgstr "" - -#: tree-outof-ssa.c:1329 -#, gcc-internal-format -msgid " Pending stmts not issued on EXIT edge (%d, %d)\n" -msgstr "" - #: tree-profile.c:388 #, gcc-internal-format msgid "unimplemented functionality" msgstr "" -#: tree-ssa-structalias.c:4710 +#: tree-ssa-structalias.c:4708 #, gcc-internal-format msgid "initialized from %qE" msgstr "" -#: tree-ssa-structalias.c:4714 +#: tree-ssa-structalias.c:4712 #, gcc-internal-format msgid "initialized from here" msgstr "" -#: tree-ssa-structalias.c:4763 +#: tree-ssa-structalias.c:4761 #, gcc-internal-format msgid "dereferencing pointer %qD does break strict-aliasing rules" msgstr "" @@ -25288,170 +25681,160 @@ msgstr "" msgid "verify_ssa failed" msgstr "" -#: tree-ssa.c:1266 +#: tree-ssa.c:1271 #, gcc-internal-format msgid "%J%qD was declared here" msgstr "" -#: tree-ssa.c:1333 +#: tree-ssa.c:1338 #, gcc-internal-format msgid "%qD is used uninitialized in this function" msgstr "" -#: tree-ssa.c:1336 tree-ssa.c:1375 +#: tree-ssa.c:1341 tree-ssa.c:1380 #, gcc-internal-format msgid "%qD may be used uninitialized in this function" msgstr "" -#: tree-vrp.c:5017 +#: tree-vrp.c:5033 #, gcc-internal-format msgid "array subscript is outside array bounds" msgstr "" -#: tree-vrp.c:5032 +#: tree-vrp.c:5048 #, gcc-internal-format msgid "array subscript is above array bounds" msgstr "" -#: tree-vrp.c:5039 +#: tree-vrp.c:5055 #, gcc-internal-format msgid "array subscript is below array bounds" msgstr "" -#: tree-vrp.c:5689 +#: tree-vrp.c:5705 #, gcc-internal-format msgid "" "assuming signed overflow does not occur when simplifying conditional to " "constant" msgstr "" -#: tree-vrp.c:5695 +#: tree-vrp.c:5711 #, gcc-internal-format msgid "assuming signed overflow does not occur when simplifying conditional" msgstr "" -#: tree-vrp.c:5732 +#: tree-vrp.c:5748 #, gcc-internal-format msgid "comparison always false due to limited range of data type" msgstr "" -#: tree-vrp.c:5735 +#: tree-vrp.c:5751 #, gcc-internal-format msgid "comparison always true due to limited range of data type" msgstr "" -#: tree.c:3698 +#: tree.c:3697 #, gcc-internal-format msgid "ignoring attributes applied to %qT after definition" msgstr "" -#: tree.c:3981 +#: tree.c:3980 #, gcc-internal-format msgid "%q+D already declared with dllexport attribute: dllimport ignored" msgstr "" -#: tree.c:3993 +#: tree.c:3992 #, gcc-internal-format msgid "" "%q+D redeclared without dllimport attribute after being referenced with dll " "linkage" msgstr "" -#: tree.c:4008 +#: tree.c:4007 #, gcc-internal-format msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored" msgstr "" -#: tree.c:4067 tree.c:4079 tree.c:4089 config/darwin.c:1437 -#: config/arm/arm.c:3290 config/arm/arm.c:3318 config/avr/avr.c:4789 -#: config/h8300/h8300.c:5283 config/h8300/h8300.c:5307 config/i386/i386.c:4288 -#: config/i386/i386.c:26852 config/ia64/ia64.c:621 -#: config/m68hc11/m68hc11.c:1118 config/rs6000/rs6000.c:20737 -#: config/sh/symbian.c:408 config/sh/symbian.c:415 -#, gcc-internal-format -msgid "%qs attribute ignored" -msgstr "" - -#: tree.c:4105 +#: tree.c:4104 #, gcc-internal-format msgid "inline function %q+D declared as dllimport: attribute ignored" msgstr "" -#: tree.c:4113 +#: tree.c:4112 #, gcc-internal-format msgid "function %q+D definition is marked dllimport" msgstr "" -#: tree.c:4121 config/sh/symbian.c:430 +#: tree.c:4120 config/sh/symbian.c:430 #, gcc-internal-format msgid "variable %q+D definition is marked dllimport" msgstr "" -#: tree.c:4144 config/sh/symbian.c:505 +#: tree.c:4143 config/sh/symbian.c:505 #, gcc-internal-format -msgid "external linkage required for symbol %q+D because of %qs attribute" +msgid "external linkage required for symbol %q+D because of %qE attribute" msgstr "" -#: tree.c:4158 +#: tree.c:4157 #, gcc-internal-format msgid "" -"%qs implies default visibility, but %qD has already been declared with a " +"%qE implies default visibility, but %qD has already been declared with a " "different visibility" msgstr "" -#: tree.c:5740 +#: tree.c:5739 #, gcc-internal-format msgid "arrays of functions are not meaningful" msgstr "" -#: tree.c:5891 +#: tree.c:5890 #, gcc-internal-format msgid "function return type cannot be function" msgstr "" -#: tree.c:7104 tree.c:7189 tree.c:7250 +#: tree.c:7103 tree.c:7188 tree.c:7249 #, gcc-internal-format msgid "tree check: %s, have %s in %s, at %s:%d" msgstr "" -#: tree.c:7141 +#: tree.c:7140 #, gcc-internal-format msgid "tree check: expected none of %s, have %s in %s, at %s:%d" msgstr "" -#: tree.c:7154 +#: tree.c:7153 #, gcc-internal-format msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d" msgstr "" -#: tree.c:7203 +#: tree.c:7202 #, gcc-internal-format msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d" msgstr "" -#: tree.c:7216 +#: tree.c:7215 #, gcc-internal-format msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d" msgstr "" -#: tree.c:7276 +#: tree.c:7275 #, gcc-internal-format msgid "" "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:" "%d" msgstr "" -#: tree.c:7290 +#: tree.c:7289 #, gcc-internal-format msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d" msgstr "" -#: tree.c:7303 +#: tree.c:7302 #, gcc-internal-format msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d" msgstr "" -#: tree.c:7316 +#: tree.c:7315 #, gcc-internal-format msgid "" "tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %" @@ -25489,150 +25872,150 @@ msgid "" "count (%d)" msgstr "" -#: varasm.c:575 +#: varasm.c:574 #, gcc-internal-format msgid "%+D causes a section type conflict" msgstr "" -#: varasm.c:1125 +#: varasm.c:1124 #, gcc-internal-format msgid "" "alignment of %q+D is greater than maximum object file alignment. Using %d" msgstr "" -#: varasm.c:1351 varasm.c:1359 +#: varasm.c:1350 varasm.c:1358 #, gcc-internal-format msgid "register name not specified for %q+D" msgstr "" -#: varasm.c:1361 +#: varasm.c:1360 #, gcc-internal-format msgid "invalid register name for %q+D" msgstr "" -#: varasm.c:1363 +#: varasm.c:1362 #, gcc-internal-format msgid "data type of %q+D isn%'t suitable for a register" msgstr "" -#: varasm.c:1366 +#: varasm.c:1365 #, gcc-internal-format msgid "register specified for %q+D isn%'t suitable for data type" msgstr "" -#: varasm.c:1376 +#: varasm.c:1375 #, gcc-internal-format msgid "global register variable has initial value" msgstr "" -#: varasm.c:1380 +#: varasm.c:1379 #, gcc-internal-format msgid "optimization may eliminate reads and/or writes to register variables" msgstr "" -#: varasm.c:1418 +#: varasm.c:1417 #, gcc-internal-format msgid "register name given for non-register variable %q+D" msgstr "" -#: varasm.c:1487 +#: varasm.c:1486 #, gcc-internal-format msgid "global destructors not supported on this target" msgstr "" -#: varasm.c:1553 +#: varasm.c:1552 #, gcc-internal-format msgid "global constructors not supported on this target" msgstr "" -#: varasm.c:1939 +#: varasm.c:1938 #, gcc-internal-format msgid "thread-local COMMON data not implemented" msgstr "" -#: varasm.c:1968 +#: varasm.c:1967 #, gcc-internal-format msgid "" "requested alignment for %q+D is greater than implemented alignment of %wu" msgstr "" -#: varasm.c:4491 +#: varasm.c:4486 #, gcc-internal-format msgid "initializer for integer/fixed-point value is too complicated" msgstr "" -#: varasm.c:4496 +#: varasm.c:4491 #, gcc-internal-format msgid "initializer for floating value is not a floating constant" msgstr "" -#: varasm.c:4769 +#: varasm.c:4764 #, gcc-internal-format -msgid "invalid initial value for member %qs" +msgid "invalid initial value for member %qE" msgstr "" -#: varasm.c:4965 varasm.c:5009 +#: varasm.c:4960 varasm.c:5004 #, gcc-internal-format msgid "weak declaration of %q+D must precede definition" msgstr "" -#: varasm.c:4973 +#: varasm.c:4968 #, gcc-internal-format msgid "" "weak declaration of %q+D after first use results in unspecified behavior" msgstr "" -#: varasm.c:5007 +#: varasm.c:5002 #, gcc-internal-format msgid "weak declaration of %q+D must be public" msgstr "" -#: varasm.c:5011 +#: varasm.c:5006 #, gcc-internal-format msgid "weak declaration of %q+D not supported" msgstr "" -#: varasm.c:5037 +#: varasm.c:5032 #, gcc-internal-format msgid "only weak aliases are supported in this configuration" msgstr "" -#: varasm.c:5272 +#: varasm.c:5266 #, gcc-internal-format msgid "%Jweakref is not supported in this configuration" msgstr "" -#: varasm.c:5353 +#: varasm.c:5347 #, gcc-internal-format -msgid "%q+D aliased to undefined symbol %qs" +msgid "%q+D aliased to undefined symbol %qE" msgstr "" -#: varasm.c:5358 +#: varasm.c:5352 #, gcc-internal-format -msgid "%q+D aliased to external symbol %qs" +msgid "%q+D aliased to external symbol %qE" msgstr "" -#: varasm.c:5397 +#: varasm.c:5391 #, gcc-internal-format msgid "weakref %q+D ultimately targets itself" msgstr "" -#: varasm.c:5406 +#: varasm.c:5400 #, gcc-internal-format msgid "weakref %q+D must have static linkage" msgstr "" -#: varasm.c:5412 +#: varasm.c:5406 #, gcc-internal-format msgid "%Jalias definitions not supported in this configuration" msgstr "" -#: varasm.c:5417 +#: varasm.c:5411 #, gcc-internal-format msgid "%Jonly weak aliases are supported in this configuration" msgstr "" -#: varasm.c:5477 +#: varasm.c:5471 #, gcc-internal-format msgid "visibility attribute not supported in this configuration; ignored" msgstr "" @@ -25647,7 +26030,7 @@ msgstr "" msgid "underflowed virtual array %s in %s, at %s:%d" msgstr "" -#: vec.c:381 +#: vec.c:382 #, gcc-internal-format msgid "vector %s %s domain error, in %s at %s:%u" msgstr "" @@ -25722,12 +26105,12 @@ msgstr "" #: config/darwin.c:1410 #, gcc-internal-format msgid "" -"%<%s%> 2.95 vtable-compatibility attribute applies only when compiling a kext" +"%qE 2.95 vtable-compatibility attribute applies only when compiling a kext" msgstr "" #: config/darwin.c:1417 #, gcc-internal-format -msgid "%<%s%> 2.95 vtable-compatibility attribute applies only to C++ classes" +msgid "%qE 2.95 vtable-compatibility attribute applies only to C++ classes" msgstr "" #: config/darwin.c:1542 @@ -25823,7 +26206,7 @@ msgstr "" msgid "profiler support for VxWorks" msgstr "" -#: config/alpha/alpha.c:233 config/rs6000/rs6000.c:2188 +#: config/alpha/alpha.c:233 config/rs6000/rs6000.c:2194 #, gcc-internal-format msgid "bad value %qs for -mtls-size switch" msgstr "" @@ -25898,7 +26281,7 @@ msgstr "" msgid "bad value %qs for -mmemory-latency" msgstr "" -#: config/alpha/alpha.c:6563 config/alpha/alpha.c:6566 config/s390/s390.c:8715 +#: config/alpha/alpha.c:6578 config/alpha/alpha.c:6581 config/s390/s390.c:8715 #: config/s390/s390.c:8718 #, gcc-internal-format msgid "bad builtin fcode" @@ -25906,209 +26289,215 @@ msgstr "" #: config/arc/arc.c:392 #, gcc-internal-format -msgid "argument of %qs attribute is not a string constant" +msgid "argument of %qE attribute is not a string constant" msgstr "" #: config/arc/arc.c:400 #, gcc-internal-format -msgid "argument of %qs attribute is not \"ilink1\" or \"ilink2\"" +msgid "argument of %qE attribute is not \"ilink1\" or \"ilink2\"" msgstr "" -#: config/arm/arm.c:1178 +#: config/arm/arm.c:1183 #, gcc-internal-format msgid "switch -mcpu=%s conflicts with -march= switch" msgstr "" -#: config/arm/arm.c:1188 config/rs6000/rs6000.c:1588 config/sparc/sparc.c:764 +#: config/arm/arm.c:1193 config/rs6000/rs6000.c:1592 config/sparc/sparc.c:768 #, gcc-internal-format msgid "bad value (%s) for %s switch" msgstr "" -#: config/arm/arm.c:1301 +#: config/arm/arm.c:1306 #, gcc-internal-format msgid "invalid ABI option: -mabi=%s" msgstr "" -#: config/arm/arm.c:1309 +#: config/arm/arm.c:1314 #, gcc-internal-format msgid "target CPU does not support ARM mode" msgstr "" -#: config/arm/arm.c:1315 +#: config/arm/arm.c:1320 #, gcc-internal-format msgid "target CPU does not support interworking" msgstr "" -#: config/arm/arm.c:1321 +#: config/arm/arm.c:1326 #, gcc-internal-format msgid "target CPU does not support THUMB instructions" msgstr "" -#: config/arm/arm.c:1339 +#: config/arm/arm.c:1344 #, gcc-internal-format msgid "" "enabling backtrace support is only meaningful when compiling for the Thumb" msgstr "" -#: config/arm/arm.c:1342 +#: config/arm/arm.c:1347 #, gcc-internal-format msgid "" "enabling callee interworking support is only meaningful when compiling for " "the Thumb" msgstr "" -#: config/arm/arm.c:1345 +#: config/arm/arm.c:1350 #, gcc-internal-format msgid "" "enabling caller interworking support is only meaningful when compiling for " "the Thumb" msgstr "" -#: config/arm/arm.c:1349 +#: config/arm/arm.c:1354 #, gcc-internal-format msgid "-mapcs-stack-check incompatible with -mno-apcs-frame" msgstr "" -#: config/arm/arm.c:1357 +#: config/arm/arm.c:1362 #, gcc-internal-format msgid "-fpic and -mapcs-reent are incompatible" msgstr "" -#: config/arm/arm.c:1360 +#: config/arm/arm.c:1365 #, gcc-internal-format msgid "APCS reentrant code not supported. Ignored" msgstr "" -#: config/arm/arm.c:1368 +#: config/arm/arm.c:1373 #, gcc-internal-format msgid "-g with -mno-apcs-frame may not give sensible debugging" msgstr "" -#: config/arm/arm.c:1371 +#: config/arm/arm.c:1376 #, gcc-internal-format msgid "passing floating point arguments in fp regs not yet supported" msgstr "" -#: config/arm/arm.c:1428 +#: config/arm/arm.c:1433 #, gcc-internal-format msgid "iwmmxt requires an AAPCS compatible ABI for proper operation" msgstr "" -#: config/arm/arm.c:1431 +#: config/arm/arm.c:1436 #, gcc-internal-format msgid "iwmmxt abi requires an iwmmxt capable cpu" msgstr "" -#: config/arm/arm.c:1441 +#: config/arm/arm.c:1446 #, gcc-internal-format msgid "invalid floating point emulation option: -mfpe=%s" msgstr "" -#: config/arm/arm.c:1458 +#: config/arm/arm.c:1463 #, gcc-internal-format msgid "invalid floating point option: -mfpu=%s" msgstr "" -#: config/arm/arm.c:1498 +#: config/arm/arm.c:1503 #, gcc-internal-format msgid "invalid floating point abi: -mfloat-abi=%s" msgstr "" -#: config/arm/arm.c:1505 +#: config/arm/arm.c:1510 #, gcc-internal-format msgid "-mfloat-abi=hard and VFP" msgstr "" -#: config/arm/arm.c:1511 +#: config/arm/arm.c:1514 +#, gcc-internal-format +msgid "FPA is unsupported in the AAPCS" +msgstr "" + +#: config/arm/arm.c:1520 #, gcc-internal-format msgid "iWMMXt and hardware floating point" msgstr "" -#: config/arm/arm.c:1515 +#: config/arm/arm.c:1524 #, gcc-internal-format msgid "Thumb-2 iWMMXt" msgstr "" -#: config/arm/arm.c:1538 +#: config/arm/arm.c:1547 #, gcc-internal-format msgid "invalid thread pointer option: -mtp=%s" msgstr "" -#: config/arm/arm.c:1551 +#: config/arm/arm.c:1560 #, gcc-internal-format msgid "can not use -mtp=cp15 with 16-bit Thumb" msgstr "" -#: config/arm/arm.c:1565 +#: config/arm/arm.c:1574 #, gcc-internal-format msgid "structure size boundary can only be set to %s" msgstr "" -#: config/arm/arm.c:1571 +#: config/arm/arm.c:1580 #, gcc-internal-format msgid "RTP PIC is incompatible with Thumb" msgstr "" -#: config/arm/arm.c:1580 +#: config/arm/arm.c:1589 #, gcc-internal-format msgid "RTP PIC is incompatible with -msingle-pic-base" msgstr "" -#: config/arm/arm.c:1592 +#: config/arm/arm.c:1601 #, gcc-internal-format msgid "-mpic-register= is useless without -fpic" msgstr "" -#: config/arm/arm.c:1601 +#: config/arm/arm.c:1610 #, gcc-internal-format msgid "unable to use '%s' for PIC register" msgstr "" -#: config/arm/arm.c:3258 config/arm/arm.c:3276 config/avr/avr.c:4809 -#: config/avr/avr.c:4825 config/bfin/bfin.c:5228 config/h8300/h8300.c:5259 -#: config/i386/i386.c:4250 config/i386/i386.c:26797 -#: config/m68hc11/m68hc11.c:1155 config/m68k/m68k.c:780 -#: config/mcore/mcore.c:3034 config/mips/mips.c:1283 config/mips/mips.c:1285 -#: config/rs6000/rs6000.c:20663 config/sh/sh.c:8142 config/sh/sh.c:8160 -#: config/sh/sh.c:8189 config/sh/sh.c:8271 config/sh/sh.c:8294 -#: config/stormy16/stormy16.c:2221 config/v850/v850.c:2048 +#: config/arm/arm.c:3267 config/arm/arm.c:3285 config/avr/avr.c:4827 +#: config/avr/avr.c:4843 config/bfin/bfin.c:5270 config/bfin/bfin.c:5331 +#: config/bfin/bfin.c:5360 config/h8300/h8300.c:5259 config/i386/i386.c:4248 +#: config/i386/i386.c:26839 config/m68hc11/m68hc11.c:1147 +#: config/m68k/m68k.c:784 config/mcore/mcore.c:3034 +#: config/rs6000/rs6000.c:20670 config/sh/sh.c:8132 config/sh/sh.c:8150 +#: config/sh/sh.c:8179 config/sh/sh.c:8261 config/sh/sh.c:8284 +#: config/spu/spu.c:3726 config/stormy16/stormy16.c:2221 +#: config/v850/v850.c:2048 #, gcc-internal-format -msgid "%qs attribute only applies to functions" +msgid "%qE attribute only applies to functions" msgstr "" -#: config/arm/arm.c:14809 +#: config/arm/arm.c:14814 #, gcc-internal-format msgid "unable to compute real location of stacked parameter" msgstr "" -#: config/arm/arm.c:16315 +#: config/arm/arm.c:16320 #, gcc-internal-format msgid "argument must be a constant" msgstr "" #. @@@ better error message -#: config/arm/arm.c:16623 config/arm/arm.c:16660 +#: config/arm/arm.c:16628 config/arm/arm.c:16665 #, gcc-internal-format msgid "selector must be an immediate" msgstr "" #. @@@ better error message -#: config/arm/arm.c:16703 +#: config/arm/arm.c:16708 #, gcc-internal-format msgid "mask must be an immediate" msgstr "" -#: config/arm/arm.c:17364 +#: config/arm/arm.c:17369 #, gcc-internal-format msgid "no low registers available for popping high registers" msgstr "" -#: config/arm/arm.c:17587 +#: config/arm/arm.c:17592 #, gcc-internal-format msgid "interrupt Service Routines cannot be coded in Thumb mode" msgstr "" -#: config/arm/arm.c:19635 +#: config/arm/arm.c:19640 #, gcc-internal-format msgid "the mangling of %<va_list%> has changed in GCC 4.4" msgstr "" @@ -26123,114 +26512,109 @@ msgstr "" msgid "static variable %q+D is marked dllimport" msgstr "" -#: config/avr/avr.c:4611 +#: config/avr/avr.c:4629 #, gcc-internal-format msgid "%qs appears to be a misspelled interrupt handler" msgstr "" -#: config/avr/avr.c:4620 +#: config/avr/avr.c:4638 #, gcc-internal-format msgid "%qs appears to be a misspelled signal handler" msgstr "" -#: config/avr/avr.c:4782 +#: config/avr/avr.c:4800 #, gcc-internal-format msgid "only initialized variables can be placed into program memory area" msgstr "" -#: config/avr/avr.c:4916 +#: config/avr/avr.c:4934 #, gcc-internal-format msgid "only uninitialized variables can be placed in the .noinit section" msgstr "" -#: config/avr/avr.c:4930 +#: config/avr/avr.c:4948 #, gcc-internal-format msgid "MCU %qs supported for assembler only" msgstr "" -#: config/avr/avr.h:752 +#: config/avr/avr.h:738 #, gcc-internal-format msgid "trampolines not supported" msgstr "" -#: config/bfin/bfin.c:2479 config/m68k/m68k.c:497 +#: config/bfin/bfin.c:2458 config/m68k/m68k.c:501 #, gcc-internal-format msgid "-mshared-library-id=%s is not between 0 and %d" msgstr "" -#: config/bfin/bfin.c:2499 +#: config/bfin/bfin.c:2478 #, gcc-internal-format msgid "-mcpu=%s is not valid" msgstr "" -#: config/bfin/bfin.c:2535 +#: config/bfin/bfin.c:2514 #, gcc-internal-format msgid "-mcpu=%s has invalid silicon revision" msgstr "" -#: config/bfin/bfin.c:2600 +#: config/bfin/bfin.c:2579 #, gcc-internal-format msgid "-mshared-library-id= specified without -mid-shared-library" msgstr "" -#: config/bfin/bfin.c:2603 +#: config/bfin/bfin.c:2582 #, gcc-internal-format msgid "Can't use multiple stack checking methods together." msgstr "" -#: config/bfin/bfin.c:2606 +#: config/bfin/bfin.c:2585 #, gcc-internal-format msgid "ID shared libraries and FD-PIC mode can't be used together." msgstr "" -#: config/bfin/bfin.c:2611 config/m68k/m68k.c:605 +#: config/bfin/bfin.c:2590 config/m68k/m68k.c:609 #, gcc-internal-format msgid "cannot specify both -msep-data and -mid-shared-library" msgstr "" -#: config/bfin/bfin.c:2631 +#: config/bfin/bfin.c:2610 #, gcc-internal-format msgid "-mmulticore can only be used with BF561" msgstr "" -#: config/bfin/bfin.c:2634 +#: config/bfin/bfin.c:2613 #, gcc-internal-format msgid "-mcorea should be used with -mmulticore" msgstr "" -#: config/bfin/bfin.c:2637 +#: config/bfin/bfin.c:2616 #, gcc-internal-format msgid "-mcoreb should be used with -mmulticore" msgstr "" -#: config/bfin/bfin.c:2640 +#: config/bfin/bfin.c:2619 #, gcc-internal-format msgid "-mcorea and -mcoreb can't be used together" msgstr "" -#: config/bfin/bfin.c:5233 +#: config/bfin/bfin.c:5275 #, gcc-internal-format msgid "multiple function type attributes specified" msgstr "" -#: config/bfin/bfin.c:5289 config/bfin/bfin.c:5318 config/spu/spu.c:3583 -#, gcc-internal-format -msgid "`%s' attribute only applies to functions" -msgstr "" - -#: config/bfin/bfin.c:5300 +#: config/bfin/bfin.c:5342 #, gcc-internal-format msgid "can't apply both longcall and shortcall attributes to the same function" msgstr "" -#: config/bfin/bfin.c:5350 +#: config/bfin/bfin.c:5392 config/i386/winnt.c:59 #, gcc-internal-format -msgid "`%s' attribute only applies to variables" +msgid "%qE attribute only applies to variables" msgstr "" -#: config/bfin/bfin.c:5357 +#: config/bfin/bfin.c:5399 #, gcc-internal-format -msgid "`%s' attribute cannot be specified for local variables" +msgid "%qE attribute cannot be specified for local variables" msgstr "" #. This function is for retrieving a part of an instruction name for @@ -26382,62 +26766,62 @@ msgstr "" msgid "Trampoline support for CRX" msgstr "" -#: config/frv/frv.c:8668 +#: config/frv/frv.c:8705 #, gcc-internal-format msgid "accumulator is not a constant integer" msgstr "" -#: config/frv/frv.c:8673 +#: config/frv/frv.c:8710 #, gcc-internal-format msgid "accumulator number is out of bounds" msgstr "" -#: config/frv/frv.c:8684 +#: config/frv/frv.c:8721 #, gcc-internal-format msgid "inappropriate accumulator for %qs" msgstr "" -#: config/frv/frv.c:8761 +#: config/frv/frv.c:8798 #, gcc-internal-format msgid "invalid IACC argument" msgstr "" -#: config/frv/frv.c:8784 +#: config/frv/frv.c:8821 #, gcc-internal-format msgid "%qs expects a constant argument" msgstr "" -#: config/frv/frv.c:8789 +#: config/frv/frv.c:8826 #, gcc-internal-format msgid "constant argument out of range for %qs" msgstr "" -#: config/frv/frv.c:9270 +#: config/frv/frv.c:9307 #, gcc-internal-format msgid "media functions are not available unless -mmedia is used" msgstr "" -#: config/frv/frv.c:9282 +#: config/frv/frv.c:9319 #, gcc-internal-format msgid "this media function is only available on the fr500" msgstr "" -#: config/frv/frv.c:9310 +#: config/frv/frv.c:9347 #, gcc-internal-format msgid "this media function is only available on the fr400 and fr550" msgstr "" -#: config/frv/frv.c:9329 +#: config/frv/frv.c:9366 #, gcc-internal-format msgid "this builtin function is only available on the fr405 and fr450" msgstr "" -#: config/frv/frv.c:9338 +#: config/frv/frv.c:9375 #, gcc-internal-format msgid "this builtin function is only available on the fr500 and fr550" msgstr "" -#: config/frv/frv.c:9350 +#: config/frv/frv.c:9387 #, gcc-internal-format msgid "this builtin function is only available on the fr450" msgstr "" @@ -26462,377 +26846,382 @@ msgstr "" msgid "can't set position in PCH file: %m" msgstr "" -#: config/i386/i386.c:2750 config/i386/i386.c:2992 +#: config/i386/i386.c:2748 config/i386/i386.c:2990 #, gcc-internal-format msgid "bad value (%s) for %stune=%s %s" msgstr "" -#: config/i386/i386.c:2794 +#: config/i386/i386.c:2792 #, gcc-internal-format msgid "bad value (%s) for %sstringop-strategy=%s %s" msgstr "" -#: config/i386/i386.c:2798 +#: config/i386/i386.c:2796 #, gcc-internal-format msgid "" "%stune=x86-64%s is deprecated. Use %stune=k8%s or %stune=generic%s instead " "as appropriate." msgstr "" -#: config/i386/i386.c:2808 +#: config/i386/i386.c:2806 #, gcc-internal-format msgid "generic CPU can be used only for %stune=%s %s" msgstr "" -#: config/i386/i386.c:2811 config/i386/i386.c:2953 +#: config/i386/i386.c:2809 config/i386/i386.c:2951 #, gcc-internal-format msgid "bad value (%s) for %sarch=%s %s" msgstr "" -#: config/i386/i386.c:2822 +#: config/i386/i386.c:2820 #, gcc-internal-format msgid "unknown ABI (%s) for %sabi=%s %s" msgstr "" -#: config/i386/i386.c:2837 +#: config/i386/i386.c:2835 #, gcc-internal-format msgid "code model %s does not support PIC mode" msgstr "" -#: config/i386/i386.c:2843 +#: config/i386/i386.c:2841 #, gcc-internal-format msgid "bad value (%s) for %scmodel=%s %s" msgstr "" -#: config/i386/i386.c:2867 +#: config/i386/i386.c:2865 #, gcc-internal-format msgid "bad value (%s) for %sasm=%s %s" msgstr "" -#: config/i386/i386.c:2871 +#: config/i386/i386.c:2869 #, gcc-internal-format msgid "code model %qs not supported in the %s bit mode" msgstr "" -#: config/i386/i386.c:2874 +#: config/i386/i386.c:2872 #, gcc-internal-format msgid "%i-bit mode not compiled in" msgstr "" -#: config/i386/i386.c:2886 config/i386/i386.c:2978 +#: config/i386/i386.c:2884 config/i386/i386.c:2976 #, gcc-internal-format msgid "CPU you selected does not support x86-64 instruction set" msgstr "" -#: config/i386/i386.c:3011 +#: config/i386/i386.c:3009 #, gcc-internal-format msgid "%sregparm%s is ignored in 64-bit mode" msgstr "" -#: config/i386/i386.c:3014 +#: config/i386/i386.c:3012 #, gcc-internal-format msgid "%sregparm=%d%s is not between 0 and %d" msgstr "" -#: config/i386/i386.c:3027 +#: config/i386/i386.c:3025 #, gcc-internal-format msgid "%salign-loops%s is obsolete, use -falign-loops%s" msgstr "" -#: config/i386/i386.c:3033 config/i386/i386.c:3048 config/i386/i386.c:3063 +#: config/i386/i386.c:3031 config/i386/i386.c:3046 config/i386/i386.c:3061 #, gcc-internal-format msgid "%salign-loops=%d%s is not between 0 and %d" msgstr "" -#: config/i386/i386.c:3042 +#: config/i386/i386.c:3040 #, gcc-internal-format msgid "%salign-jumps%s is obsolete, use -falign-jumps%s" msgstr "" -#: config/i386/i386.c:3057 +#: config/i386/i386.c:3055 #, gcc-internal-format msgid "%salign-functions%s is obsolete, use -falign-functions%s" msgstr "" -#: config/i386/i386.c:3092 +#: config/i386/i386.c:3090 #, gcc-internal-format msgid "%sbranch-cost=%d%s is not between 0 and 5" msgstr "" -#: config/i386/i386.c:3100 +#: config/i386/i386.c:3098 #, gcc-internal-format msgid "%slarge-data-threshold=%d%s is negative" msgstr "" -#: config/i386/i386.c:3114 +#: config/i386/i386.c:3112 #, gcc-internal-format msgid "bad value (%s) for %stls-dialect=%s %s" msgstr "" -#: config/i386/i386.c:3122 +#: config/i386/i386.c:3120 #, gcc-internal-format msgid "pc%d is not valid precision setting (32, 64 or 80)" msgstr "" -#: config/i386/i386.c:3138 +#: config/i386/i386.c:3136 #, gcc-internal-format msgid "%srtd%s is ignored in 64bit mode" msgstr "" -#: config/i386/i386.c:3193 +#: config/i386/i386.c:3191 #, gcc-internal-format msgid "%spreferred-stack-boundary=%d%s is not between %d and 12" msgstr "" -#: config/i386/i386.c:3214 +#: config/i386/i386.c:3212 #, gcc-internal-format msgid "-mincoming-stack-boundary=%d is not between %d and 12" msgstr "" -#: config/i386/i386.c:3227 +#: config/i386/i386.c:3225 #, gcc-internal-format msgid "%ssseregparm%s used without SSE enabled" msgstr "" -#: config/i386/i386.c:3238 config/i386/i386.c:3252 +#: config/i386/i386.c:3236 config/i386/i386.c:3250 #, gcc-internal-format msgid "SSE instruction set disabled, using 387 arithmetics" msgstr "" -#: config/i386/i386.c:3257 +#: config/i386/i386.c:3255 #, gcc-internal-format msgid "387 instruction set disabled, using SSE arithmetics" msgstr "" -#: config/i386/i386.c:3264 +#: config/i386/i386.c:3262 #, gcc-internal-format msgid "bad value (%s) for %sfpmath=%s %s" msgstr "" -#: config/i386/i386.c:3280 +#: config/i386/i386.c:3278 #, gcc-internal-format msgid "unknown vectorization library ABI type (%s) for %sveclibabi=%s %s" msgstr "" -#: config/i386/i386.c:3300 +#: config/i386/i386.c:3298 #, gcc-internal-format msgid "" "unwind tables currently require either a frame pointer or %saccumulate-" "outgoing-args%s for correctness" msgstr "" -#: config/i386/i386.c:3313 +#: config/i386/i386.c:3311 #, gcc-internal-format msgid "stack probing requires %saccumulate-outgoing-args%s for correctness" msgstr "" -#: config/i386/i386.c:3651 +#: config/i386/i386.c:3649 #, gcc-internal-format msgid "attribute(target(\"%s\")) is unknown" msgstr "" -#: config/i386/i386.c:3673 +#: config/i386/i386.c:3671 #, gcc-internal-format msgid "option(\"%s\") was already specified" msgstr "" -#: config/i386/i386.c:4263 config/i386/i386.c:4307 +#: config/i386/i386.c:4261 config/i386/i386.c:4305 #, gcc-internal-format msgid "fastcall and regparm attributes are not compatible" msgstr "" -#: config/i386/i386.c:4270 +#: config/i386/i386.c:4268 #, gcc-internal-format -msgid "%qs attribute requires an integer constant argument" +msgid "%qE attribute requires an integer constant argument" msgstr "" -#: config/i386/i386.c:4276 +#: config/i386/i386.c:4274 #, gcc-internal-format -msgid "argument to %qs attribute larger than %d" +msgid "argument to %qE attribute larger than %d" msgstr "" -#: config/i386/i386.c:4299 config/i386/i386.c:4334 +#: config/i386/i386.c:4297 config/i386/i386.c:4332 #, gcc-internal-format msgid "fastcall and cdecl attributes are not compatible" msgstr "" -#: config/i386/i386.c:4303 +#: config/i386/i386.c:4301 #, gcc-internal-format msgid "fastcall and stdcall attributes are not compatible" msgstr "" -#: config/i386/i386.c:4317 config/i386/i386.c:4330 +#: config/i386/i386.c:4315 config/i386/i386.c:4328 #, gcc-internal-format msgid "stdcall and cdecl attributes are not compatible" msgstr "" -#: config/i386/i386.c:4321 +#: config/i386/i386.c:4319 #, gcc-internal-format msgid "stdcall and fastcall attributes are not compatible" msgstr "" -#: config/i386/i386.c:4408 +#: config/i386/i386.c:4406 #, gcc-internal-format msgid "nested functions are limited to 2 register parameters" msgstr "" -#: config/i386/i386.c:4494 +#: config/i386/i386.c:4492 #, gcc-internal-format msgid "Calling %qD with attribute sseregparm without SSE/SSE2 enabled" msgstr "" -#: config/i386/i386.c:4497 +#: config/i386/i386.c:4495 #, gcc-internal-format msgid "Calling %qT with attribute sseregparm without SSE/SSE2 enabled" msgstr "" -#: config/i386/i386.c:4756 +#: config/i386/i386.c:4754 #, gcc-internal-format msgid "" "ms_abi attribute require -maccumulate-outgoing-args or subtarget " "optimization implying it" msgstr "" -#: config/i386/i386.c:4873 +#: config/i386/i386.c:4871 #, gcc-internal-format msgid "AVX vector argument without AVX enabled changes the ABI" msgstr "" -#: config/i386/i386.c:5055 +#: config/i386/i386.c:5053 #, 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:5171 +#: config/i386/i386.c:5169 #, gcc-internal-format msgid "The ABI of passing union with long double has changed in GCC 4.4" msgstr "" -#: config/i386/i386.c:5286 +#: config/i386/i386.c:5284 #, gcc-internal-format msgid "" "The ABI of passing structure with complex float member has changed in GCC 4.4" msgstr "" -#: config/i386/i386.c:5431 +#: config/i386/i386.c:5429 #, gcc-internal-format msgid "SSE register return with SSE disabled" msgstr "" -#: config/i386/i386.c:5437 +#: config/i386/i386.c:5435 #, gcc-internal-format msgid "SSE register argument with SSE disabled" msgstr "" -#: config/i386/i386.c:5453 +#: config/i386/i386.c:5451 #, gcc-internal-format msgid "x87 register return with x87 disabled" msgstr "" -#: config/i386/i386.c:5819 +#: config/i386/i386.c:5820 #, gcc-internal-format msgid "SSE vector argument without SSE enabled changes the ABI" msgstr "" -#: config/i386/i386.c:5856 +#: config/i386/i386.c:5857 #, gcc-internal-format msgid "MMX vector argument without MMX enabled changes the ABI" msgstr "" -#: config/i386/i386.c:6457 +#: config/i386/i386.c:6458 #, gcc-internal-format msgid "SSE vector return without SSE enabled changes the ABI" msgstr "" -#: config/i386/i386.c:6467 +#: config/i386/i386.c:6468 #, gcc-internal-format msgid "MMX vector return without MMX enabled changes the ABI" msgstr "" -#: config/i386/i386.c:10732 +#: config/i386/i386.c:10734 #, gcc-internal-format msgid "extended registers have no high halves" msgstr "" -#: config/i386/i386.c:10747 +#: config/i386/i386.c:10749 #, gcc-internal-format msgid "unsupported operand size for extended register" msgstr "" -#: config/i386/i386.c:24012 +#: config/i386/i386.c:10987 +#, gcc-internal-format +msgid "non-integer operand used with operand code '%c'" +msgstr "" + +#: config/i386/i386.c:24052 #, gcc-internal-format msgid "last argument must be an immediate" msgstr "" -#: config/i386/i386.c:24305 +#: config/i386/i386.c:24345 #, gcc-internal-format msgid "the fifth argument must be a 8-bit immediate" msgstr "" -#: config/i386/i386.c:24400 +#: config/i386/i386.c:24440 #, gcc-internal-format msgid "the third argument must be a 8-bit immediate" msgstr "" -#: config/i386/i386.c:24740 +#: config/i386/i386.c:24780 #, gcc-internal-format msgid "the last argument must be a 4-bit immediate" msgstr "" -#: config/i386/i386.c:24745 +#: config/i386/i386.c:24785 #, gcc-internal-format msgid "the last argument must be a 2-bit immediate" msgstr "" -#: config/i386/i386.c:24754 +#: config/i386/i386.c:24794 #, gcc-internal-format msgid "the last argument must be a 1-bit immediate" msgstr "" -#: config/i386/i386.c:24763 +#: config/i386/i386.c:24803 #, gcc-internal-format msgid "the last argument must be a 5-bit immediate" msgstr "" -#: config/i386/i386.c:24772 +#: config/i386/i386.c:24812 #, gcc-internal-format msgid "the next to last argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386.c:24776 config/i386/i386.c:24954 +#: config/i386/i386.c:24816 config/i386/i386.c:24994 #, gcc-internal-format msgid "the last argument must be an 8-bit immediate" msgstr "" -#: config/i386/i386.c:25012 config/rs6000/rs6000.c:8539 +#: config/i386/i386.c:25052 config/rs6000/rs6000.c:8545 #, gcc-internal-format msgid "selector must be an integer constant in the range 0..%wi" msgstr "" -#: config/i386/i386.c:25155 +#: config/i386/i386.c:25195 #, gcc-internal-format msgid "%qE needs unknown isa option" msgstr "" -#: config/i386/i386.c:25159 +#: config/i386/i386.c:25199 #, gcc-internal-format msgid "%qE needs isa option %s" msgstr "" -#: config/i386/i386.c:26804 +#: config/i386/i386.c:26846 #, gcc-internal-format -msgid "%qs attribute only available for 64-bit" +msgid "%qE attribute only available for 64-bit" msgstr "" -#: config/i386/i386.c:26815 config/i386/i386.c:26824 +#: config/i386/i386.c:26857 config/i386/i386.c:26866 #, gcc-internal-format msgid "ms_abi and sysv_abi attributes are not compatible" msgstr "" -#: config/i386/i386.c:26862 config/rs6000/rs6000.c:20746 +#: config/i386/i386.c:26904 config/rs6000/rs6000.c:20753 #, gcc-internal-format -msgid "%qs incompatible attribute ignored" +msgid "%qE incompatible attribute ignored" msgstr "" #: config/i386/netware.c:253 @@ -26845,15 +27234,10 @@ msgstr "" msgid "definition of static data member %q+D of dllimport'd class" msgstr "" -#: config/i386/winnt.c:59 -#, gcc-internal-format -msgid "%qs attribute only applies to variables" -msgstr "" - #: config/i386/winnt.c:81 #, gcc-internal-format msgid "" -"%qs attribute applies only to initialized variables with external linkage" +"%qE attribute applies only to initialized variables with external linkage" msgstr "" #: config/i386/winnt.c:290 @@ -26886,9 +27270,9 @@ msgstr "" msgid "malformed #pragma builtin" msgstr "" -#: config/ia64/ia64.c:589 config/m32r/m32r.c:373 +#: config/ia64/ia64.c:589 #, gcc-internal-format -msgid "invalid argument of %qs attribute" +msgid "invalid argument of %qE attribute" msgstr "" #: config/ia64/ia64.c:601 @@ -26906,69 +27290,69 @@ msgstr "" msgid "%Jaddress area attribute cannot be specified for functions" msgstr "" -#: config/ia64/ia64.c:5153 config/pa/pa.c:351 config/sh/sh.c:7965 -#: config/spu/spu.c:4470 +#: config/ia64/ia64.c:5174 config/pa/pa.c:355 config/sh/sh.c:7955 +#: config/spu/spu.c:4613 #, gcc-internal-format msgid "value of -mfixed-range must have form REG1-REG2" msgstr "" -#: config/ia64/ia64.c:5180 config/pa/pa.c:378 config/sh/sh.c:7991 -#: config/spu/spu.c:4496 +#: config/ia64/ia64.c:5201 config/pa/pa.c:382 config/sh/sh.c:7981 +#: config/spu/spu.c:4639 #, gcc-internal-format msgid "%s-%s is an empty range" msgstr "" -#: config/ia64/ia64.c:5210 +#: config/ia64/ia64.c:5231 #, gcc-internal-format msgid "bad value %<%s%> for -mtls-size= switch" msgstr "" -#: config/ia64/ia64.c:5239 +#: config/ia64/ia64.c:5260 #, gcc-internal-format msgid "value %<%s%> for -mtune= switch is deprecated" msgstr "" -#: config/ia64/ia64.c:5241 +#: config/ia64/ia64.c:5262 #, gcc-internal-format msgid "GCC 4.4 is the last release with Itanium1 tuning support" msgstr "" -#: config/ia64/ia64.c:5248 +#: config/ia64/ia64.c:5269 #, gcc-internal-format msgid "bad value %<%s%> for -mtune= switch" msgstr "" -#: config/ia64/ia64.c:5267 +#: config/ia64/ia64.c:5288 #, gcc-internal-format msgid "not yet implemented: latency-optimized inline square root" msgstr "" -#: config/ia64/ia64.c:10536 +#: config/ia64/ia64.c:10557 #, gcc-internal-format msgid "version attribute is not a string" msgstr "" -#: config/iq2000/iq2000.c:1817 +#: config/iq2000/iq2000.c:1832 #, gcc-internal-format msgid "gp_offset (%ld) or end_offset (%ld) is less than zero" msgstr "" -#: config/iq2000/iq2000.c:2587 +#: config/iq2000/iq2000.c:2602 #, gcc-internal-format msgid "argument %qd is not a constant" msgstr "" -#: config/iq2000/iq2000.c:2889 config/xtensa/xtensa.c:2320 +#: config/iq2000/iq2000.c:2904 config/xtensa/xtensa.c:2324 #, gcc-internal-format msgid "PRINT_OPERAND_ADDRESS, null pointer" msgstr "" -#: config/iq2000/iq2000.c:3044 +#: config/iq2000/iq2000.c:3059 #, gcc-internal-format msgid "PRINT_OPERAND: Unknown punctuation '%c'" msgstr "" -#: config/iq2000/iq2000.c:3053 config/xtensa/xtensa.c:2174 +#: config/iq2000/iq2000.c:3068 config/xtensa/xtensa.c:2178 #, gcc-internal-format msgid "PRINT_OPERAND null pointer" msgstr "" @@ -26993,24 +27377,30 @@ msgstr "" msgid "invalid target memregs value '%d'" msgstr "" -#: config/m32c/m32c.c:2798 +#: config/m32c/m32c.c:2784 #, gcc-internal-format -msgid "`%s' attribute is not supported for R8C target" +msgid "%qE attribute is not supported for R8C target" msgstr "" -#: config/m32c/m32c.c:2806 +#: config/m32c/m32c.c:2792 +#, gcc-internal-format +msgid "%qE attribute applies only to functions" +msgstr "" + +#. The argument must be a constant integer. +#: config/m32c/m32c.c:2800 config/sh/sh.c:8187 config/sh/sh.c:8293 #, gcc-internal-format -msgid "`%s' attribute applies only to functions" +msgid "%qE attribute argument not an integer constant" msgstr "" -#: config/m32c/m32c.c:2814 config/sh/sh.c:8197 +#: config/m32c/m32c.c:2809 #, gcc-internal-format -msgid "`%s' attribute argument not an integer constant" +msgid "%qE attribute argument should be between 18 to 255" msgstr "" -#: config/m32c/m32c.c:2823 +#: config/m32r/m32r.c:377 #, gcc-internal-format -msgid "`%s' attribute argument should be between 18 to 255" +msgid "invalid argument of %qs attribute" msgstr "" #: config/m68hc11/m68hc11.c:279 @@ -27018,208 +27408,213 @@ msgstr "" msgid "-f%s ignored for 68HC11/68HC12 (not supported)" msgstr "" -#: config/m68hc11/m68hc11.c:1240 +#: config/m68hc11/m68hc11.c:1232 #, gcc-internal-format msgid "%<trap%> and %<far%> attributes are not compatible, ignoring %<far%>" msgstr "" -#: config/m68hc11/m68hc11.c:1247 +#: config/m68hc11/m68hc11.c:1239 #, gcc-internal-format msgid "%<trap%> attribute is already used" msgstr "" -#: config/m68k/m68k.c:546 +#: config/m68k/m68k.c:550 #, gcc-internal-format msgid "-mcpu=%s conflicts with -march=%s" msgstr "" -#: config/m68k/m68k.c:617 +#: config/m68k/m68k.c:621 #, gcc-internal-format msgid "-mpcrel -fPIC is not currently supported on selected cpu" msgstr "" -#: config/m68k/m68k.c:679 +#: config/m68k/m68k.c:683 #, gcc-internal-format msgid "-falign-labels=%d is not supported" msgstr "" -#: config/m68k/m68k.c:684 +#: config/m68k/m68k.c:688 #, gcc-internal-format msgid "-falign-loops=%d is not supported" msgstr "" -#: config/m68k/m68k.c:787 +#: config/m68k/m68k.c:791 #, gcc-internal-format msgid "multiple interrupt attributes not allowed" msgstr "" -#: config/m68k/m68k.c:794 +#: config/m68k/m68k.c:798 #, gcc-internal-format msgid "interrupt_thread is available only on fido" msgstr "" -#: config/m68k/m68k.c:1116 config/rs6000/rs6000.c:15593 +#: config/m68k/m68k.c:1120 config/rs6000/rs6000.c:15600 #, gcc-internal-format msgid "stack limit expression is not supported" msgstr "" +#: config/mips/mips.c:1283 config/mips/mips.c:1285 +#, gcc-internal-format +msgid "%qs attribute only applies to functions" +msgstr "" + #: config/mips/mips.c:1295 #, gcc-internal-format -msgid "%qs cannot have both %<mips16%> and %<nomips16%> attributes" +msgid "%qE cannot have both %<mips16%> and %<nomips16%> attributes" msgstr "" #: config/mips/mips.c:1317 config/mips/mips.c:1320 #, gcc-internal-format -msgid "%qs redeclared with conflicting %qs attributes" +msgid "%qE redeclared with conflicting %qs attributes" msgstr "" -#: config/mips/mips.c:2778 +#: config/mips/mips.c:2780 #, gcc-internal-format msgid "MIPS16 TLS" msgstr "" -#: config/mips/mips.c:6119 +#: config/mips/mips.c:6116 #, gcc-internal-format msgid "cannot handle inconsistent calls to %qs" msgstr "" -#: config/mips/mips.c:8721 +#: config/mips/mips.c:8719 #, gcc-internal-format msgid "the %<interrupt%> attribute requires a MIPS32r2 processor" msgstr "" -#: config/mips/mips.c:8723 +#: config/mips/mips.c:8721 #, gcc-internal-format msgid "the %<interrupt%> attribute requires %<-msoft-float%>" msgstr "" -#: config/mips/mips.c:8725 +#: config/mips/mips.c:8723 #, gcc-internal-format msgid "interrupt handlers cannot be MIPS16 functions" msgstr "" -#: config/mips/mips.c:12131 +#: config/mips/mips.c:12134 #, gcc-internal-format msgid "invalid argument to built-in function" msgstr "" -#: config/mips/mips.c:12372 +#: config/mips/mips.c:12375 #, gcc-internal-format -msgid "built-in function %qs not supported for MIPS16" +msgid "built-in function %qE not supported for MIPS16" msgstr "" -#: config/mips/mips.c:12950 +#: config/mips/mips.c:12953 #, gcc-internal-format msgid "%qs does not support MIPS16 code" msgstr "" -#: config/mips/mips.c:13924 +#: config/mips/mips.c:13927 #, gcc-internal-format msgid "MIPS16 PIC for ABIs other than o32 and o64" msgstr "" -#: config/mips/mips.c:13927 +#: config/mips/mips.c:13930 #, gcc-internal-format msgid "MIPS16 -mxgot code" msgstr "" -#: config/mips/mips.c:13930 +#: config/mips/mips.c:13933 #, gcc-internal-format msgid "hard-float MIPS16 code for ABIs other than o32 and o64" msgstr "" -#: config/mips/mips.c:14059 +#: config/mips/mips.c:14062 #, gcc-internal-format msgid "CPU names must be lower case" msgstr "" -#: config/mips/mips.c:14202 +#: config/mips/mips.c:14205 #, gcc-internal-format msgid "" "%<-%s%> conflicts with the other architecture options, which specify a %s " "processor" msgstr "" -#: config/mips/mips.c:14218 +#: config/mips/mips.c:14221 #, gcc-internal-format msgid "%<-march=%s%> is not compatible with the selected ABI" msgstr "" -#: config/mips/mips.c:14233 +#: config/mips/mips.c:14236 #, gcc-internal-format msgid "%<-mgp64%> used with a 32-bit processor" msgstr "" -#: config/mips/mips.c:14235 +#: config/mips/mips.c:14238 #, gcc-internal-format msgid "%<-mgp32%> used with a 64-bit ABI" msgstr "" -#: config/mips/mips.c:14237 +#: config/mips/mips.c:14240 #, gcc-internal-format msgid "%<-mgp64%> used with a 32-bit ABI" msgstr "" -#: config/mips/mips.c:14253 config/mips/mips.c:14255 config/mips/mips.c:14322 +#: config/mips/mips.c:14256 config/mips/mips.c:14258 config/mips/mips.c:14325 #, gcc-internal-format msgid "unsupported combination: %s" msgstr "" -#: config/mips/mips.c:14259 +#: config/mips/mips.c:14262 #, gcc-internal-format msgid "" "%<-mgp32%> and %<-mfp64%> can only be combined if the target supports the " "mfhc1 and mthc1 instructions" msgstr "" -#: config/mips/mips.c:14262 +#: config/mips/mips.c:14265 #, gcc-internal-format msgid "%<-mgp32%> and %<-mfp64%> can only be combined when using the o32 ABI" msgstr "" -#: config/mips/mips.c:14316 +#: config/mips/mips.c:14319 #, gcc-internal-format msgid "the %qs architecture does not support branch-likely instructions" msgstr "" -#: config/mips/mips.c:14356 +#: config/mips/mips.c:14359 #, gcc-internal-format msgid "%<-mno-gpopt%> needs %<-mexplicit-relocs%>" msgstr "" -#: config/mips/mips.c:14364 config/mips/mips.c:14367 +#: config/mips/mips.c:14367 config/mips/mips.c:14370 #, gcc-internal-format msgid "cannot use small-data accesses for %qs" msgstr "" -#: config/mips/mips.c:14381 +#: config/mips/mips.c:14384 #, gcc-internal-format msgid "%<-mips3d%> requires %<-mpaired-single%>" msgstr "" -#: config/mips/mips.c:14390 +#: config/mips/mips.c:14393 #, gcc-internal-format msgid "%qs must be used with %qs" msgstr "" -#: config/mips/mips.c:14397 +#: config/mips/mips.c:14400 #, gcc-internal-format msgid "the %qs architecture does not support paired-single instructions" msgstr "" -#: config/mips/mips.c:14403 +#: config/mips/mips.c:14406 #, gcc-internal-format msgid "%qs requires a target that provides the %qs instruction" msgstr "" -#: config/mips/mips.c:14503 +#: config/mips/mips.c:14506 #, gcc-internal-format msgid "%qs requires branch-likely instructions" msgstr "" #. Output assembler code to FILE to increment profiler label # LABELNO #. for profiling a function entry. -#: config/mips/mips.h:2327 +#: config/mips/mips.h:2335 #, gcc-internal-format msgid "mips16 function profiling" msgstr "" @@ -27277,34 +27672,34 @@ msgstr "" msgid "MMIX Internal: %s is not a shiftable int" msgstr "" -#: config/pa/pa.c:483 +#: config/pa/pa.c:487 #, gcc-internal-format msgid "PIC code generation is not supported in the portable runtime model" msgstr "" -#: config/pa/pa.c:488 +#: config/pa/pa.c:492 #, gcc-internal-format msgid "PIC code generation is not compatible with fast indirect calls" msgstr "" -#: config/pa/pa.c:493 +#: config/pa/pa.c:497 #, gcc-internal-format msgid "-g is only supported when using GAS on this processor," msgstr "" -#: config/pa/pa.c:494 +#: config/pa/pa.c:498 #, gcc-internal-format msgid "-g option disabled" msgstr "" -#: config/pa/pa.c:8376 +#: config/pa/pa.c:8380 #, gcc-internal-format msgid "" "alignment (%u) for %s exceeds maximum alignment for global common data. " "Using %u" msgstr "" -#: config/pa/pa-hpux11.h:84 +#: config/pa/pa-hpux11.h:82 #, gcc-internal-format msgid "-munix=98 option required for C89 Amendment 1 features.\n" msgstr "" @@ -27494,263 +27889,263 @@ msgstr "" msgid "invalid parameter combination for AltiVec intrinsic" msgstr "" -#: config/rs6000/rs6000.c:1368 +#: config/rs6000/rs6000.c:1372 #, gcc-internal-format msgid "-mdynamic-no-pic overrides -fpic or -fPIC" msgstr "" -#: config/rs6000/rs6000.c:1379 +#: config/rs6000/rs6000.c:1383 #, gcc-internal-format msgid "-m64 requires PowerPC64 architecture, enabling" msgstr "" -#: config/rs6000/rs6000.c:1600 +#: config/rs6000/rs6000.c:1604 #, gcc-internal-format msgid "AltiVec not supported in this target" msgstr "" -#: config/rs6000/rs6000.c:1602 +#: config/rs6000/rs6000.c:1606 #, gcc-internal-format msgid "Spe not supported in this target" msgstr "" -#: config/rs6000/rs6000.c:1629 +#: config/rs6000/rs6000.c:1633 #, gcc-internal-format msgid "-mmultiple is not supported on little endian systems" msgstr "" -#: config/rs6000/rs6000.c:1636 +#: config/rs6000/rs6000.c:1640 #, gcc-internal-format msgid "-mstring is not supported on little endian systems" msgstr "" -#: config/rs6000/rs6000.c:1650 +#: config/rs6000/rs6000.c:1654 #, gcc-internal-format msgid "unknown -mdebug-%s switch" msgstr "" -#: config/rs6000/rs6000.c:1662 +#: config/rs6000/rs6000.c:1666 #, gcc-internal-format msgid "" "unknown -mtraceback arg %qs; expecting %<full%>, %<partial%> or %<none%>" msgstr "" -#: config/rs6000/rs6000.c:2171 +#: config/rs6000/rs6000.c:2177 #, gcc-internal-format msgid "unknown -m%s= option specified: '%s'" msgstr "" -#: config/rs6000/rs6000.c:2217 +#: config/rs6000/rs6000.c:2223 #, gcc-internal-format msgid "unknown value %s for -mfpu" msgstr "" -#: config/rs6000/rs6000.c:2415 +#: config/rs6000/rs6000.c:2421 #, gcc-internal-format msgid "not configured for ABI: '%s'" msgstr "" -#: config/rs6000/rs6000.c:2428 +#: config/rs6000/rs6000.c:2434 #, gcc-internal-format msgid "Using darwin64 ABI" msgstr "" -#: config/rs6000/rs6000.c:2433 +#: config/rs6000/rs6000.c:2439 #, gcc-internal-format msgid "Using old darwin ABI" msgstr "" -#: config/rs6000/rs6000.c:2440 +#: config/rs6000/rs6000.c:2446 #, gcc-internal-format msgid "Using IBM extended precision long double" msgstr "" -#: config/rs6000/rs6000.c:2446 +#: config/rs6000/rs6000.c:2452 #, gcc-internal-format msgid "Using IEEE extended precision long double" msgstr "" -#: config/rs6000/rs6000.c:2451 +#: config/rs6000/rs6000.c:2457 #, gcc-internal-format msgid "unknown ABI specified: '%s'" msgstr "" -#: config/rs6000/rs6000.c:2478 +#: config/rs6000/rs6000.c:2484 #, gcc-internal-format msgid "invalid option for -mfloat-gprs: '%s'" msgstr "" -#: config/rs6000/rs6000.c:2488 +#: config/rs6000/rs6000.c:2494 #, gcc-internal-format msgid "Unknown switch -mlong-double-%s" msgstr "" -#: config/rs6000/rs6000.c:2509 +#: config/rs6000/rs6000.c:2515 #, gcc-internal-format msgid "" "-malign-power is not supported for 64-bit Darwin; it is incompatible with " "the installed C and C++ libraries" msgstr "" -#: config/rs6000/rs6000.c:2517 +#: config/rs6000/rs6000.c:2523 #, gcc-internal-format msgid "unknown -malign-XXXXX option specified: '%s'" msgstr "" -#: config/rs6000/rs6000.c:2524 +#: config/rs6000/rs6000.c:2530 #, gcc-internal-format msgid "-msingle-float option equivalent to -mhard-float" msgstr "" -#: config/rs6000/rs6000.c:2540 +#: config/rs6000/rs6000.c:2546 #, gcc-internal-format msgid "-msimple-fpu option ignored" msgstr "" -#: config/rs6000/rs6000.c:5376 +#: config/rs6000/rs6000.c:5382 #, gcc-internal-format msgid "" "GCC vector returned by reference: non-standard ABI extension with no " "compatibility guarantee" msgstr "" -#: config/rs6000/rs6000.c:5449 +#: config/rs6000/rs6000.c:5455 #, 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:5707 +#: config/rs6000/rs6000.c:5713 #, 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:6608 +#: config/rs6000/rs6000.c:6614 #, gcc-internal-format msgid "" "GCC vector passed by reference: non-standard ABI extension with no " "compatibility guarantee" msgstr "" -#: config/rs6000/rs6000.c:7867 +#: config/rs6000/rs6000.c:7873 #, gcc-internal-format msgid "argument 1 must be a 5-bit signed literal" msgstr "" -#: config/rs6000/rs6000.c:7970 config/rs6000/rs6000.c:8902 +#: config/rs6000/rs6000.c:7976 config/rs6000/rs6000.c:8908 #, gcc-internal-format msgid "argument 2 must be a 5-bit unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:8010 +#: config/rs6000/rs6000.c:8016 #, gcc-internal-format msgid "argument 1 of __builtin_altivec_predicate must be a constant" msgstr "" -#: config/rs6000/rs6000.c:8063 +#: config/rs6000/rs6000.c:8069 #, gcc-internal-format msgid "argument 1 of __builtin_altivec_predicate is out of range" msgstr "" -#: config/rs6000/rs6000.c:8312 +#: config/rs6000/rs6000.c:8318 #, gcc-internal-format msgid "argument 3 must be a 4-bit unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:8484 +#: config/rs6000/rs6000.c:8490 #, gcc-internal-format msgid "argument to %qs must be a 2-bit unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:8626 +#: config/rs6000/rs6000.c:8632 #, gcc-internal-format msgid "unresolved overload for Altivec builtin %qF" msgstr "" -#: config/rs6000/rs6000.c:8717 +#: config/rs6000/rs6000.c:8723 #, gcc-internal-format msgid "argument to dss must be a 2-bit unsigned literal" msgstr "" -#: config/rs6000/rs6000.c:9022 +#: config/rs6000/rs6000.c:9028 #, gcc-internal-format msgid "argument 1 of __builtin_paired_predicate must be a constant" msgstr "" -#: config/rs6000/rs6000.c:9069 +#: config/rs6000/rs6000.c:9075 #, gcc-internal-format msgid "argument 1 of __builtin_paired_predicate is out of range" msgstr "" -#: config/rs6000/rs6000.c:9094 +#: config/rs6000/rs6000.c:9100 #, gcc-internal-format msgid "argument 1 of __builtin_spe_predicate must be a constant" msgstr "" -#: config/rs6000/rs6000.c:9166 +#: config/rs6000/rs6000.c:9172 #, gcc-internal-format msgid "argument 1 of __builtin_spe_predicate is out of range" msgstr "" -#: config/rs6000/rs6000.c:15556 +#: config/rs6000/rs6000.c:15563 #, gcc-internal-format msgid "stack frame too large" msgstr "" -#: config/rs6000/rs6000.c:18599 +#: config/rs6000/rs6000.c:18606 #, gcc-internal-format msgid "no profiling of 64-bit code for this ABI" msgstr "" -#: config/rs6000/rs6000.c:20548 +#: config/rs6000/rs6000.c:20555 #, gcc-internal-format msgid "use of %<long%> in AltiVec types is invalid for 64-bit code" msgstr "" -#: config/rs6000/rs6000.c:20550 +#: config/rs6000/rs6000.c:20557 #, gcc-internal-format msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>" msgstr "" -#: config/rs6000/rs6000.c:20554 +#: config/rs6000/rs6000.c:20561 #, gcc-internal-format msgid "use of %<long long%> in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.c:20556 +#: config/rs6000/rs6000.c:20563 #, gcc-internal-format msgid "use of %<double%> in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.c:20558 +#: config/rs6000/rs6000.c:20565 #, gcc-internal-format msgid "use of %<long double%> in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.c:20560 +#: config/rs6000/rs6000.c:20567 #, gcc-internal-format msgid "use of boolean types in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.c:20562 +#: config/rs6000/rs6000.c:20569 #, gcc-internal-format msgid "use of %<complex%> in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.c:20564 +#: config/rs6000/rs6000.c:20571 #, gcc-internal-format msgid "use of decimal floating point types in AltiVec types is invalid" msgstr "" -#: config/rs6000/rs6000.c:22853 +#: config/rs6000/rs6000.c:22861 #, gcc-internal-format msgid "emitting microcode insn %s\t[%s] #%d" msgstr "" -#: config/rs6000/rs6000.c:22857 +#: config/rs6000/rs6000.c:22865 #, gcc-internal-format msgid "emitting conditional microcode insn %s\t[%s] #%d" msgstr "" @@ -27817,7 +28212,7 @@ msgstr "" #. Number of bytes into the frame return addresses can be found. See #. rs6000_stack_info in rs6000.c for more information on how the different #. abi's store the return address. -#: config/rs6000/rs6000.h:1657 +#: config/rs6000/rs6000.h:1641 #, gcc-internal-format msgid "RETURN_ADDRESS_OFFSET not supported" msgstr "" @@ -27962,64 +28357,58 @@ msgstr "" msgid "%qs uses dynamic stack allocation" msgstr "" -#: config/score/score3.c:656 config/score/score7.c:655 +#: config/score/score3.c:653 config/score/score7.c:652 #, gcc-internal-format msgid "-fPIC and -G are incompatible" msgstr "" -#: config/sh/sh.c:6964 +#: config/sh/sh.c:6954 #, gcc-internal-format msgid "__builtin_saveregs not supported by this subtarget" msgstr "" -#: config/sh/sh.c:8053 +#: config/sh/sh.c:8043 #, gcc-internal-format -msgid "%qs attribute only applies to interrupt functions" +msgid "%qE attribute only applies to interrupt functions" msgstr "" -#: config/sh/sh.c:8136 +#: config/sh/sh.c:8126 #, gcc-internal-format -msgid "%qs attribute is supported only for SH2A" +msgid "%qE attribute is supported only for SH2A" msgstr "" -#: config/sh/sh.c:8166 +#: config/sh/sh.c:8156 #, gcc-internal-format msgid "attribute interrupt_handler is not compatible with -m5-compact" msgstr "" -#: config/sh/sh.c:8183 +#: config/sh/sh.c:8173 #, gcc-internal-format -msgid "%qs attribute only applies to SH2A" +msgid "%qE attribute only applies to SH2A" msgstr "" -#: config/sh/sh.c:8205 +#: config/sh/sh.c:8195 #, gcc-internal-format -msgid "`%s' attribute argument should be between 0 to 255" +msgid "%qE attribute argument should be between 0 to 255" msgstr "" #. The argument must be a constant string. -#: config/sh/sh.c:8278 -#, gcc-internal-format -msgid "%qs attribute argument not a string constant" -msgstr "" - -#. The argument must be a constant integer. -#: config/sh/sh.c:8303 +#: config/sh/sh.c:8268 #, gcc-internal-format -msgid "%qs attribute argument not an integer constant" +msgid "%qE attribute argument not a string constant" msgstr "" -#: config/sh/sh.c:10495 +#: config/sh/sh.c:10539 #, gcc-internal-format msgid "r0 needs to be available as a call-clobbered register" msgstr "" -#: config/sh/sh.c:10516 +#: config/sh/sh.c:10560 #, gcc-internal-format msgid "Need a second call-clobbered general purpose register" msgstr "" -#: config/sh/sh.c:10524 +#: config/sh/sh.c:10568 #, gcc-internal-format msgid "Need a call-clobbered target register" msgstr "" @@ -28038,7 +28427,7 @@ msgstr "" #: config/sh/symbian.c:272 #, gcc-internal-format -msgid "%qs declared as both exported to and imported from a DLL" +msgid "%qE declared as both exported to and imported from a DLL" msgstr "" #: config/sh/symbian.c:279 @@ -28052,7 +28441,12 @@ msgstr "" msgid "%s %q+D %s after being referenced with dllimport linkage" msgstr "" -#: config/sh/symbian.c:891 cp/tree.c:2844 +#: config/sh/symbian.c:408 config/sh/symbian.c:415 +#, gcc-internal-format +msgid "%qs attribute ignored" +msgstr "" + +#: config/sh/symbian.c:891 cp/tree.c:2858 #, gcc-internal-format msgid "lang_* check: failed in %s, at %s:%d" msgstr "" @@ -28090,62 +28484,57 @@ msgstr "" msgid "-mrelax is only supported for RTP PIC" msgstr "" -#: config/sparc/sparc.c:701 +#: config/sparc/sparc.c:705 #, gcc-internal-format msgid "%s is not supported by this configuration" msgstr "" -#: config/sparc/sparc.c:708 +#: config/sparc/sparc.c:712 #, gcc-internal-format msgid "-mlong-double-64 not allowed with -m64" msgstr "" -#: config/sparc/sparc.c:728 +#: config/sparc/sparc.c:732 #, gcc-internal-format msgid "bad value (%s) for -mcmodel= switch" msgstr "" -#: config/sparc/sparc.c:733 +#: config/sparc/sparc.c:737 #, gcc-internal-format msgid "-mcmodel= is not supported on 32 bit systems" msgstr "" -#: config/spu/spu-c.c:136 +#: config/spu/spu-c.c:141 #, gcc-internal-format msgid "insufficient arguments to overloaded function %s" msgstr "" -#: config/spu/spu-c.c:171 +#: config/spu/spu-c.c:173 #, gcc-internal-format msgid "too many arguments to overloaded function %s" msgstr "" -#: config/spu/spu-c.c:183 +#: config/spu/spu-c.c:185 #, gcc-internal-format msgid "parameter list does not match a valid signature for %s()" msgstr "" -#: config/spu/spu.c:383 config/spu/spu.c:394 +#: config/spu/spu.c:450 config/spu/spu.c:461 #, gcc-internal-format msgid "Unknown architecture '%s'" msgstr "" -#: config/spu/spu.c:3641 -#, gcc-internal-format -msgid "`%s' attribute ignored" -msgstr "" - -#: config/spu/spu.c:5820 +#: config/spu/spu.c:5973 #, gcc-internal-format msgid "%s expects an integer literal in the range [%d, %d]." msgstr "" -#: config/spu/spu.c:5840 +#: config/spu/spu.c:5993 #, gcc-internal-format msgid "%s expects an integer literal in the range [%d, %d]. (" msgstr "" -#: config/spu/spu.c:5870 +#: config/spu/spu.c:6023 #, gcc-internal-format msgid "%d least significant bits of %s are ignored." msgstr "" @@ -28200,52 +28589,52 @@ msgstr "" msgid "cannot set interrupt attribute: no such identifier" msgstr "" -#: config/v850/v850-c.c:148 +#: config/v850/v850-c.c:152 #, gcc-internal-format msgid "junk at end of #pragma ghs section" msgstr "" -#: config/v850/v850-c.c:165 +#: config/v850/v850-c.c:169 #, gcc-internal-format -msgid "unrecognized section name \"%s\"" +msgid "unrecognized section name %qE" msgstr "" -#: config/v850/v850-c.c:180 +#: config/v850/v850-c.c:184 #, gcc-internal-format msgid "malformed #pragma ghs section" msgstr "" -#: config/v850/v850-c.c:199 +#: config/v850/v850-c.c:203 #, gcc-internal-format msgid "junk at end of #pragma ghs interrupt" msgstr "" -#: config/v850/v850-c.c:210 +#: config/v850/v850-c.c:214 #, gcc-internal-format msgid "junk at end of #pragma ghs starttda" msgstr "" -#: config/v850/v850-c.c:221 +#: config/v850/v850-c.c:225 #, gcc-internal-format msgid "junk at end of #pragma ghs startsda" msgstr "" -#: config/v850/v850-c.c:232 +#: config/v850/v850-c.c:236 #, gcc-internal-format msgid "junk at end of #pragma ghs startzda" msgstr "" -#: config/v850/v850-c.c:243 +#: config/v850/v850-c.c:247 #, gcc-internal-format msgid "junk at end of #pragma ghs endtda" msgstr "" -#: config/v850/v850-c.c:254 +#: config/v850/v850-c.c:258 #, gcc-internal-format msgid "junk at end of #pragma ghs endsda" msgstr "" -#: config/v850/v850-c.c:265 +#: config/v850/v850-c.c:269 #, gcc-internal-format msgid "junk at end of #pragma ghs endzda" msgstr "" @@ -28300,27 +28689,27 @@ msgstr "" msgid "too much stack space to prepare: %d" msgstr "" -#: config/xtensa/xtensa.c:2061 +#: config/xtensa/xtensa.c:2065 #, gcc-internal-format msgid "boolean registers required for the floating-point option" msgstr "" -#: config/xtensa/xtensa.c:2096 +#: config/xtensa/xtensa.c:2100 #, gcc-internal-format msgid "-f%s is not supported with CONST16 instructions" msgstr "" -#: config/xtensa/xtensa.c:2101 +#: config/xtensa/xtensa.c:2105 #, gcc-internal-format msgid "PIC is required but not supported with CONST16 instructions" msgstr "" -#: config/xtensa/xtensa.c:3006 config/xtensa/xtensa.c:3046 +#: config/xtensa/xtensa.c:3010 config/xtensa/xtensa.c:3050 #, gcc-internal-format msgid "bad builtin code" msgstr "" -#: config/xtensa/xtensa.c:3156 +#: config/xtensa/xtensa.c:3160 #, gcc-internal-format msgid "only uninitialized variables can be placed in a .bss section" msgstr "" @@ -28458,88 +28847,88 @@ msgstr "" msgid "no %<%D(int)%> declared for postfix %qs, trying prefix operator instead" msgstr "" -#: cp/call.c:4130 +#: cp/call.c:4142 #, gcc-internal-format msgid "comparison between %q#T and %q#T" msgstr "" -#: cp/call.c:4418 +#: cp/call.c:4430 #, gcc-internal-format msgid "no corresponding deallocation function for %qD" msgstr "" -#: cp/call.c:4423 +#: cp/call.c:4435 #, gcc-internal-format msgid "no suitable %<operator %s%> for %qT" msgstr "" -#: cp/call.c:4441 +#: cp/call.c:4453 #, gcc-internal-format msgid "%q+#D is private" msgstr "" -#: cp/call.c:4443 +#: cp/call.c:4455 #, gcc-internal-format msgid "%q+#D is protected" msgstr "" -#: cp/call.c:4445 +#: cp/call.c:4457 #, gcc-internal-format msgid "%q+#D is inaccessible" msgstr "" -#: cp/call.c:4446 +#: cp/call.c:4458 #, gcc-internal-format msgid "within this context" msgstr "" -#: cp/call.c:4492 +#: cp/call.c:4504 #, gcc-internal-format msgid "passing NULL to non-pointer argument %P of %qD" msgstr "" -#: cp/call.c:4495 +#: cp/call.c:4507 #, gcc-internal-format msgid "converting to non-pointer type %qT from NULL" msgstr "" -#: cp/call.c:4501 +#: cp/call.c:4513 #, gcc-internal-format msgid "converting %<false%> to pointer type for argument %P of %qD" msgstr "" -#: cp/call.c:4552 cp/cvt.c:217 +#: cp/call.c:4564 cp/cvt.c:217 #, gcc-internal-format msgid "invalid conversion from %qT to %qT" msgstr "" -#: cp/call.c:4554 +#: cp/call.c:4566 #, gcc-internal-format msgid " initializing argument %P of %qD" msgstr "" -#: cp/call.c:4578 +#: cp/call.c:4590 #, gcc-internal-format msgid "" "converting to %qT from initializer list would use explicit constructor %qD" msgstr "" -#: cp/call.c:4741 +#: cp/call.c:4753 #, gcc-internal-format msgid "cannot bind bitfield %qE to %qT" msgstr "" -#: cp/call.c:4744 cp/call.c:4762 +#: cp/call.c:4756 cp/call.c:4774 #, gcc-internal-format msgid "cannot bind packed field %qE to %qT" msgstr "" -#: cp/call.c:4747 +#: cp/call.c:4759 #, gcc-internal-format msgid "cannot bind rvalue %qE to %qT" msgstr "" -#: cp/call.c:4871 +#: cp/call.c:4883 #, gcc-internal-format msgid "" "cannot pass objects of non-POD type %q#T through %<...%>; call will abort at " @@ -28547,123 +28936,123 @@ msgid "" msgstr "" #. Undefined behavior [expr.call] 5.2.2/7. -#: cp/call.c:4899 +#: cp/call.c:4911 #, gcc-internal-format msgid "" "cannot receive objects of non-POD type %q#T through %<...%>; call will abort " "at runtime" msgstr "" -#: cp/call.c:4947 +#: cp/call.c:4959 #, gcc-internal-format msgid "the default argument for parameter %d of %qD has not yet been parsed" msgstr "" -#: cp/call.c:4957 +#: cp/call.c:4969 #, gcc-internal-format msgid "recursive evaluation of default argument for %q#D" msgstr "" -#: cp/call.c:5074 +#: cp/call.c:5086 #, gcc-internal-format msgid "argument of function call might be a candidate for a format attribute" msgstr "" -#: cp/call.c:5228 +#: cp/call.c:5240 #, gcc-internal-format msgid "passing %qT as %<this%> argument of %q#D discards qualifiers" msgstr "" -#: cp/call.c:5250 +#: cp/call.c:5262 #, gcc-internal-format msgid "%qT is not an accessible base of %qT" msgstr "" -#: cp/call.c:5545 +#: cp/call.c:5557 #, gcc-internal-format msgid "could not find class$ field in java interface type %qT" msgstr "" -#: cp/call.c:5788 +#: cp/call.c:5800 #, gcc-internal-format msgid "call to non-function %qD" msgstr "" -#: cp/call.c:5927 +#: cp/call.c:5939 #, gcc-internal-format msgid "no matching function for call to %<%T::%s(%A)%#V%>" msgstr "" -#: cp/call.c:5948 +#: cp/call.c:5960 #, gcc-internal-format msgid "call of overloaded %<%s(%A)%> is ambiguous" msgstr "" -#: cp/call.c:5977 +#: cp/call.c:5989 #, gcc-internal-format msgid "cannot call member function %qD without object" msgstr "" -#: cp/call.c:6665 +#: cp/call.c:6677 #, gcc-internal-format msgid "passing %qT chooses %qT over %qT" msgstr "" -#: cp/call.c:6667 cp/name-lookup.c:4475 cp/name-lookup.c:4920 +#: cp/call.c:6679 cp/name-lookup.c:4474 cp/name-lookup.c:4919 #, gcc-internal-format msgid " in call to %qD" msgstr "" -#: cp/call.c:6724 +#: cp/call.c:6736 #, gcc-internal-format msgid "choosing %qD over %qD" msgstr "" -#: cp/call.c:6725 +#: cp/call.c:6737 #, gcc-internal-format msgid " for conversion from %qT to %qT" msgstr "" -#: cp/call.c:6728 +#: cp/call.c:6740 #, gcc-internal-format msgid " because conversion sequence for the argument is better" msgstr "" -#: cp/call.c:6846 +#: cp/call.c:6858 #, gcc-internal-format msgid "default argument mismatch in overload resolution" msgstr "" -#: cp/call.c:6849 +#: cp/call.c:6861 #, gcc-internal-format msgid " candidate 1: %q+#F" msgstr "" -#: cp/call.c:6851 +#: cp/call.c:6863 #, gcc-internal-format msgid " candidate 2: %q+#F" msgstr "" -#: cp/call.c:6889 +#: cp/call.c:6901 #, 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:7033 +#: cp/call.c:7045 #, gcc-internal-format msgid "could not convert %qE to %qT" msgstr "" -#: cp/call.c:7239 +#: cp/call.c:7251 #, gcc-internal-format msgid "" "invalid initialization of non-const reference of type %qT from a temporary " "of type %qT" msgstr "" -#: cp/call.c:7243 +#: cp/call.c:7255 #, gcc-internal-format msgid "" "invalid initialization of reference of type %qT from expression of type %qT" @@ -29034,12 +29423,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:6606 cp/decl.c:1182 cp/name-lookup.c:526 +#: cp/class.c:6588 cp/decl.c:1180 cp/name-lookup.c:525 #, gcc-internal-format msgid "declaration of %q#D" msgstr "" -#: cp/class.c:6607 +#: cp/class.c:6589 #, gcc-internal-format msgid "changes meaning of %qD from %q+#D" msgstr "" @@ -29079,7 +29468,7 @@ msgstr "" msgid "conversion from %qT to %qT discards qualifiers" msgstr "" -#: cp/cvt.c:470 cp/typeck.c:5479 +#: cp/cvt.c:470 cp/typeck.c:5485 #, gcc-internal-format msgid "casting %qT to %qT does not dereference pointer" msgstr "" @@ -29111,173 +29500,173 @@ msgstr "" msgid "%q#T used where a floating point value was expected" msgstr "" -#: cp/cvt.c:763 +#: cp/cvt.c:769 #, gcc-internal-format msgid "conversion from %qT to non-scalar type %qT requested" msgstr "" -#: cp/cvt.c:798 +#: cp/cvt.c:808 #, gcc-internal-format msgid "pseudo-destructor is not called" msgstr "" -#: cp/cvt.c:860 +#: cp/cvt.c:870 #, gcc-internal-format msgid "object of incomplete type %qT will not be accessed in %s" msgstr "" -#: cp/cvt.c:868 +#: cp/cvt.c:878 #, gcc-internal-format msgid "object of type %qT will not be accessed in %s" msgstr "" -#: cp/cvt.c:884 cp/cvt.c:998 +#: cp/cvt.c:895 cp/cvt.c:1009 #, gcc-internal-format msgid "value computed is not used" msgstr "" -#: cp/cvt.c:898 +#: cp/cvt.c:909 #, gcc-internal-format msgid "object %qE of incomplete type %qT will not be accessed in %s" msgstr "" -#: cp/cvt.c:936 +#: cp/cvt.c:947 #, gcc-internal-format msgid "%s cannot resolve address of overloaded function" msgstr "" -#: cp/cvt.c:946 +#: cp/cvt.c:957 #, gcc-internal-format msgid "%s is a reference, not call, to function %qE" msgstr "" -#: cp/cvt.c:964 +#: cp/cvt.c:975 #, gcc-internal-format msgid "%s has no effect" msgstr "" -#: cp/cvt.c:1108 +#: cp/cvt.c:1119 #, gcc-internal-format msgid "converting NULL to non-pointer type" msgstr "" -#: cp/cvt.c:1214 +#: cp/cvt.c:1225 #, gcc-internal-format msgid "ambiguous default type conversion from %qT" msgstr "" -#: cp/cvt.c:1216 +#: cp/cvt.c:1227 #, gcc-internal-format msgid " candidate conversions include %qD and %qD" msgstr "" -#: cp/decl.c:1045 +#: cp/decl.c:1043 #, gcc-internal-format msgid "%qD was declared %<extern%> and later %<static%>" msgstr "" -#: cp/decl.c:1046 cp/decl.c:1593 objc/objc-act.c:2939 objc/objc-act.c:7544 +#: cp/decl.c:1044 cp/decl.c:1591 objc/objc-act.c:2938 objc/objc-act.c:7539 #, gcc-internal-format msgid "previous declaration of %q+D" msgstr "" -#: cp/decl.c:1079 +#: cp/decl.c:1077 #, gcc-internal-format msgid "declaration of %qF throws different exceptions" msgstr "" -#: cp/decl.c:1080 +#: cp/decl.c:1078 #, gcc-internal-format msgid "from previous declaration %q+F" msgstr "" -#: cp/decl.c:1136 +#: cp/decl.c:1134 #, gcc-internal-format msgid "function %q+D redeclared as inline" msgstr "" -#: cp/decl.c:1138 +#: cp/decl.c:1136 #, gcc-internal-format msgid "previous declaration of %q+D with attribute noinline" msgstr "" -#: cp/decl.c:1145 +#: cp/decl.c:1143 #, gcc-internal-format msgid "function %q+D redeclared with attribute noinline" msgstr "" -#: cp/decl.c:1147 +#: cp/decl.c:1145 #, gcc-internal-format msgid "previous declaration of %q+D was inline" msgstr "" -#: cp/decl.c:1169 cp/decl.c:1242 +#: cp/decl.c:1167 cp/decl.c:1240 #, gcc-internal-format msgid "shadowing %s function %q#D" msgstr "" -#: cp/decl.c:1178 +#: cp/decl.c:1176 #, gcc-internal-format msgid "library function %q#D redeclared as non-function %q#D" msgstr "" -#: cp/decl.c:1183 +#: cp/decl.c:1181 #, gcc-internal-format msgid "conflicts with built-in declaration %q#D" msgstr "" -#: cp/decl.c:1237 cp/decl.c:1363 cp/decl.c:1379 +#: cp/decl.c:1235 cp/decl.c:1361 cp/decl.c:1377 #, gcc-internal-format msgid "new declaration %q#D" msgstr "" -#: cp/decl.c:1238 +#: cp/decl.c:1236 #, gcc-internal-format msgid "ambiguates built-in declaration %q#D" msgstr "" -#: cp/decl.c:1327 +#: cp/decl.c:1325 #, gcc-internal-format msgid "%q#D redeclared as different kind of symbol" msgstr "" -#: cp/decl.c:1330 +#: cp/decl.c:1328 #, gcc-internal-format msgid "previous declaration of %q+#D" msgstr "" -#: cp/decl.c:1349 +#: cp/decl.c:1347 #, gcc-internal-format msgid "declaration of template %q#D" msgstr "" -#: cp/decl.c:1350 cp/name-lookup.c:527 cp/name-lookup.c:813 -#: cp/name-lookup.c:824 +#: cp/decl.c:1348 cp/name-lookup.c:526 cp/name-lookup.c:812 +#: cp/name-lookup.c:823 #, gcc-internal-format msgid "conflicts with previous declaration %q+#D" msgstr "" -#: cp/decl.c:1364 cp/decl.c:1380 +#: cp/decl.c:1362 cp/decl.c:1378 #, gcc-internal-format msgid "ambiguates old declaration %q+#D" msgstr "" -#: cp/decl.c:1372 +#: cp/decl.c:1370 #, gcc-internal-format msgid "declaration of C function %q#D conflicts with" msgstr "" -#: cp/decl.c:1374 +#: cp/decl.c:1372 #, gcc-internal-format msgid "previous declaration %q+#D here" msgstr "" -#: cp/decl.c:1388 +#: cp/decl.c:1386 #, gcc-internal-format msgid "conflicting declaration %q#D" msgstr "" -#: cp/decl.c:1389 +#: cp/decl.c:1387 #, gcc-internal-format msgid "%q+D has a previous declaration as %q#D" msgstr "" @@ -29289,63 +29678,63 @@ 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:1441 +#: cp/decl.c:1439 #, gcc-internal-format msgid "declaration of namespace %qD conflicts with" msgstr "" -#: cp/decl.c:1442 +#: cp/decl.c:1440 #, gcc-internal-format msgid "previous declaration of namespace %q+D here" msgstr "" -#: cp/decl.c:1453 +#: cp/decl.c:1451 #, gcc-internal-format msgid "%q+#D previously defined here" msgstr "" #. Prototype decl follows defn w/o prototype. -#: cp/decl.c:1463 +#: cp/decl.c:1461 #, gcc-internal-format msgid "prototype for %q+#D" msgstr "" -#: cp/decl.c:1464 +#: cp/decl.c:1462 #, gcc-internal-format msgid "%Jfollows non-prototype definition here" msgstr "" -#: cp/decl.c:1504 +#: cp/decl.c:1502 #, gcc-internal-format msgid "previous declaration of %q+#D with %qL linkage" msgstr "" -#: cp/decl.c:1506 +#: cp/decl.c:1504 #, gcc-internal-format msgid "conflicts with new declaration with %qL linkage" msgstr "" -#: cp/decl.c:1529 cp/decl.c:1535 +#: cp/decl.c:1527 cp/decl.c:1533 #, gcc-internal-format msgid "default argument given for parameter %d of %q#D" msgstr "" -#: cp/decl.c:1531 cp/decl.c:1537 +#: cp/decl.c:1529 cp/decl.c:1535 #, gcc-internal-format msgid "after previous specification in %q+#D" msgstr "" -#: cp/decl.c:1592 +#: cp/decl.c:1590 #, gcc-internal-format msgid "redundant redeclaration of %qD in same scope" msgstr "" -#: cp/decl.c:1598 +#: cp/decl.c:1596 #, gcc-internal-format msgid "deleted definition of %qD" msgstr "" -#: cp/decl.c:1599 +#: cp/decl.c:1597 #, gcc-internal-format msgid "after previous declaration %q+D" msgstr "" @@ -29358,334 +29747,334 @@ 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:1935 +#: cp/decl.c:1933 #, gcc-internal-format msgid "explicit specialization of %qD after first use" msgstr "" -#: cp/decl.c:2031 +#: cp/decl.c:2029 #, gcc-internal-format msgid "%q+D: visibility attribute ignored because it" msgstr "" -#: cp/decl.c:2033 +#: cp/decl.c:2031 #, gcc-internal-format msgid "%Jconflicts with previous declaration here" msgstr "" -#: cp/decl.c:2466 +#: cp/decl.c:2464 #, gcc-internal-format msgid "jump to label %qD" msgstr "" -#: cp/decl.c:2468 +#: cp/decl.c:2466 #, gcc-internal-format msgid "jump to case label" msgstr "" -#: cp/decl.c:2470 +#: cp/decl.c:2468 #, gcc-internal-format msgid "%H from here" msgstr "" -#: cp/decl.c:2489 cp/decl.c:2652 +#: cp/decl.c:2487 cp/decl.c:2650 #, gcc-internal-format msgid " exits OpenMP structured block" msgstr "" -#: cp/decl.c:2510 +#: cp/decl.c:2508 #, gcc-internal-format msgid " crosses initialization of %q+#D" msgstr "" -#: cp/decl.c:2512 cp/decl.c:2627 +#: cp/decl.c:2510 cp/decl.c:2625 #, gcc-internal-format msgid " enters scope of non-POD %q+#D" msgstr "" -#: cp/decl.c:2525 cp/decl.c:2631 +#: cp/decl.c:2523 cp/decl.c:2629 #, gcc-internal-format msgid " enters try block" msgstr "" -#: cp/decl.c:2527 cp/decl.c:2633 +#: cp/decl.c:2525 cp/decl.c:2631 #, gcc-internal-format msgid " enters catch block" msgstr "" -#: cp/decl.c:2537 cp/decl.c:2636 +#: cp/decl.c:2535 cp/decl.c:2634 #, gcc-internal-format msgid " enters OpenMP structured block" msgstr "" -#: cp/decl.c:2608 cp/decl.c:2648 +#: cp/decl.c:2606 cp/decl.c:2646 #, gcc-internal-format msgid "jump to label %q+D" msgstr "" -#: cp/decl.c:2609 cp/decl.c:2649 +#: cp/decl.c:2607 cp/decl.c:2647 #, gcc-internal-format msgid " from here" msgstr "" #. Can't skip init of __exception_info. -#: cp/decl.c:2621 +#: cp/decl.c:2619 #, gcc-internal-format msgid "%J enters catch block" msgstr "" -#: cp/decl.c:2625 +#: cp/decl.c:2623 #, gcc-internal-format msgid " skips initialization of %q+#D" msgstr "" -#: cp/decl.c:2701 +#: cp/decl.c:2699 #, gcc-internal-format msgid "label named wchar_t" msgstr "" -#: cp/decl.c:2705 +#: cp/decl.c:2703 #, gcc-internal-format msgid "duplicate label %qD" msgstr "" -#: cp/decl.c:2972 +#: cp/decl.c:2970 #, gcc-internal-format msgid "%qD is not a type" msgstr "" -#: cp/decl.c:2978 +#: cp/decl.c:2976 #, gcc-internal-format msgid "%qD used without template parameters" msgstr "" -#: cp/decl.c:2987 +#: cp/decl.c:2985 #, gcc-internal-format msgid "%q#T is not a class" msgstr "" -#: cp/decl.c:3011 cp/decl.c:3079 +#: cp/decl.c:3009 cp/decl.c:3077 #, gcc-internal-format msgid "no class template named %q#T in %q#T" msgstr "" -#: cp/decl.c:3019 +#: cp/decl.c:3017 #, gcc-internal-format msgid "%<typename %T::%D%> names %q#T, which is not a class template" msgstr "" -#: cp/decl.c:3026 +#: cp/decl.c:3024 #, gcc-internal-format msgid "%<typename %T::%D%> names %q#T, which is not a type" msgstr "" -#: cp/decl.c:3088 +#: cp/decl.c:3086 #, gcc-internal-format msgid "template parameters do not match template" msgstr "" -#: cp/decl.c:3089 cp/friend.c:321 cp/friend.c:329 +#: cp/decl.c:3087 cp/friend.c:321 cp/friend.c:329 #, gcc-internal-format msgid "%q+D declared here" msgstr "" -#: cp/decl.c:3772 +#: cp/decl.c:3770 #, gcc-internal-format msgid "%Jan anonymous struct cannot have function members" msgstr "" -#: cp/decl.c:3774 +#: cp/decl.c:3772 #, gcc-internal-format msgid "%Jan anonymous union cannot have function members" msgstr "" -#: cp/decl.c:3792 +#: cp/decl.c:3790 #, gcc-internal-format msgid "member %q+#D with constructor not allowed in anonymous aggregate" msgstr "" -#: cp/decl.c:3795 +#: cp/decl.c:3793 #, gcc-internal-format msgid "member %q+#D with destructor not allowed in anonymous aggregate" msgstr "" -#: cp/decl.c:3798 +#: cp/decl.c:3796 #, gcc-internal-format msgid "" "member %q+#D with copy assignment operator not allowed in anonymous aggregate" msgstr "" -#: cp/decl.c:3823 +#: cp/decl.c:3821 #, gcc-internal-format msgid "multiple types in one declaration" msgstr "" -#: cp/decl.c:3827 +#: cp/decl.c:3825 #, gcc-internal-format msgid "redeclaration of C++ built-in type %qT" msgstr "" -#: cp/decl.c:3864 +#: cp/decl.c:3862 #, gcc-internal-format msgid "missing type-name in typedef-declaration" msgstr "" -#: cp/decl.c:3871 +#: cp/decl.c:3869 #, gcc-internal-format msgid "ISO C++ prohibits anonymous structs" msgstr "" -#: cp/decl.c:3878 +#: cp/decl.c:3876 #, gcc-internal-format msgid "%qs can only be specified for functions" msgstr "" -#: cp/decl.c:3884 +#: cp/decl.c:3882 #, gcc-internal-format msgid "%<friend%> can only be specified inside a class" msgstr "" -#: cp/decl.c:3886 +#: cp/decl.c:3884 #, gcc-internal-format msgid "%<explicit%> can only be specified for constructors" msgstr "" -#: cp/decl.c:3888 +#: cp/decl.c:3886 #, gcc-internal-format msgid "a storage class can only be specified for objects and functions" msgstr "" -#: cp/decl.c:3894 +#: cp/decl.c:3892 #, gcc-internal-format msgid "qualifiers can only be specified for objects and functions" msgstr "" -#: cp/decl.c:3897 +#: cp/decl.c:3895 #, gcc-internal-format msgid "%<typedef%> was ignored in this declaration" msgstr "" -#: cp/decl.c:3926 +#: cp/decl.c:3924 #, gcc-internal-format msgid "attribute ignored in declaration of %q+#T" msgstr "" -#: cp/decl.c:3927 +#: cp/decl.c:3925 #, gcc-internal-format msgid "attribute for %q+#T must follow the %qs keyword" msgstr "" -#: cp/decl.c:3972 +#: cp/decl.c:3970 #, 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:3976 +#: cp/decl.c:3974 #, gcc-internal-format msgid "" "ignoring attributes applied to dependent type %qT without an associated " "declaration" msgstr "" -#: cp/decl.c:4052 +#: cp/decl.c:4050 #, gcc-internal-format msgid "typedef %qD is initialized (use decltype instead)" msgstr "" -#: cp/decl.c:4070 +#: cp/decl.c:4068 #, gcc-internal-format msgid "declaration of %q#D has %<extern%> and is initialized" msgstr "" -#: cp/decl.c:4095 +#: cp/decl.c:4093 #, gcc-internal-format msgid "definition of %q#D is marked %<dllimport%>" msgstr "" -#: cp/decl.c:4114 +#: cp/decl.c:4112 #, gcc-internal-format msgid "%q#D is not a static member of %q#T" msgstr "" -#: cp/decl.c:4120 +#: cp/decl.c:4118 #, gcc-internal-format msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>" msgstr "" -#: cp/decl.c:4129 +#: cp/decl.c:4127 #, gcc-internal-format msgid "" "template header not allowed in member definition of explicitly specialized " "class" msgstr "" -#: cp/decl.c:4137 +#: cp/decl.c:4135 #, gcc-internal-format msgid "duplicate initialization of %qD" msgstr "" -#: cp/decl.c:4176 +#: cp/decl.c:4174 #, gcc-internal-format msgid "declaration of %q#D outside of class is not definition" msgstr "" -#: cp/decl.c:4271 +#: cp/decl.c:4269 #, gcc-internal-format msgid "variable %q#D has initializer but incomplete type" msgstr "" -#: cp/decl.c:4277 cp/decl.c:5025 +#: cp/decl.c:4275 cp/decl.c:5023 #, gcc-internal-format msgid "elements of array %q#D have incomplete type" msgstr "" -#: cp/decl.c:4284 cp/decl.c:5521 +#: cp/decl.c:4282 cp/decl.c:5519 #, gcc-internal-format msgid "declaration of %q#D has no initializer" msgstr "" -#: cp/decl.c:4286 +#: cp/decl.c:4284 #, gcc-internal-format msgid "aggregate %q#D has incomplete type and cannot be defined" msgstr "" -#: cp/decl.c:4322 +#: cp/decl.c:4320 #, gcc-internal-format msgid "%qD declared as reference but not initialized" msgstr "" -#: cp/decl.c:4328 +#: cp/decl.c:4326 #, gcc-internal-format msgid "ISO C++ forbids use of initializer list to initialize reference %qD" msgstr "" -#: cp/decl.c:4354 +#: cp/decl.c:4352 #, gcc-internal-format msgid "cannot initialize %qT from %qT" msgstr "" -#: cp/decl.c:4415 +#: cp/decl.c:4413 #, gcc-internal-format msgid "name used in a GNU-style designated initializer for an array" msgstr "" -#: cp/decl.c:4420 +#: cp/decl.c:4418 #, gcc-internal-format msgid "name %qD used in a GNU-style designated initializer for an array" msgstr "" -#: cp/decl.c:4470 +#: cp/decl.c:4468 #, gcc-internal-format msgid "initializer fails to determine size of %qD" msgstr "" -#: cp/decl.c:4477 +#: cp/decl.c:4475 #, gcc-internal-format msgid "array size missing in %qD" msgstr "" -#: cp/decl.c:4489 +#: cp/decl.c:4487 #, gcc-internal-format msgid "zero-size array %qD" msgstr "" @@ -29693,273 +30082,273 @@ 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:4532 +#: cp/decl.c:4530 #, gcc-internal-format msgid "storage size of %qD isn't known" msgstr "" -#: cp/decl.c:4555 +#: cp/decl.c:4553 #, gcc-internal-format msgid "storage size of %qD isn't constant" msgstr "" -#: cp/decl.c:4606 +#: cp/decl.c:4604 #, 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:4609 +#: cp/decl.c:4607 #, gcc-internal-format msgid "%J you can work around this by removing the initializer" msgstr "" -#: cp/decl.c:4636 +#: cp/decl.c:4634 #, gcc-internal-format msgid "uninitialized const %qD" msgstr "" -#: cp/decl.c:4748 +#: cp/decl.c:4746 #, gcc-internal-format msgid "invalid type %qT as initializer for a vector of type %qT" msgstr "" -#: cp/decl.c:4790 +#: cp/decl.c:4788 #, gcc-internal-format msgid "initializer for %qT must be brace-enclosed" msgstr "" -#: cp/decl.c:4808 +#: cp/decl.c:4806 #, gcc-internal-format msgid "%qT has no non-static data member named %qD" msgstr "" -#: cp/decl.c:4864 +#: cp/decl.c:4862 #, gcc-internal-format msgid "braces around scalar initializer for type %qT" msgstr "" -#: cp/decl.c:4950 +#: cp/decl.c:4948 #, gcc-internal-format msgid "missing braces around initializer for %qT" msgstr "" -#: cp/decl.c:5007 cp/typeck2.c:1087 cp/typeck2.c:1110 cp/typeck2.c:1153 +#: cp/decl.c:5005 cp/typeck2.c:1086 cp/typeck2.c:1109 cp/typeck2.c:1152 #, gcc-internal-format msgid "too many initializers for %qT" msgstr "" -#: cp/decl.c:5027 +#: cp/decl.c:5025 #, gcc-internal-format msgid "elements of array %q#T have incomplete type" msgstr "" -#: cp/decl.c:5036 +#: cp/decl.c:5034 #, gcc-internal-format msgid "variable-sized object %qD may not be initialized" msgstr "" -#: cp/decl.c:5038 +#: cp/decl.c:5036 #, gcc-internal-format msgid "variable-sized compound literal" msgstr "" -#: cp/decl.c:5092 +#: cp/decl.c:5090 #, gcc-internal-format msgid "%qD has incomplete type" msgstr "" -#: cp/decl.c:5112 +#: cp/decl.c:5110 #, gcc-internal-format msgid "scalar object %qD requires one element in initializer" msgstr "" -#: cp/decl.c:5143 +#: cp/decl.c:5141 #, gcc-internal-format msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>" msgstr "" -#: cp/decl.c:5175 +#: cp/decl.c:5173 #, gcc-internal-format msgid "array %qD initialized by parenthesized string literal %qE" msgstr "" -#: cp/decl.c:5189 +#: cp/decl.c:5187 #, gcc-internal-format msgid "structure %qD with uninitialized const members" msgstr "" -#: cp/decl.c:5191 +#: cp/decl.c:5189 #, gcc-internal-format msgid "structure %qD with uninitialized reference members" msgstr "" -#: cp/decl.c:5488 +#: cp/decl.c:5486 #, gcc-internal-format msgid "assignment (not initialization) in declaration" msgstr "" -#: cp/decl.c:5547 cp/decl2.c:853 +#: cp/decl.c:5545 cp/decl2.c:853 #, gcc-internal-format msgid "%qD cannot be defaulted" msgstr "" -#: cp/decl.c:5623 +#: cp/decl.c:5621 #, gcc-internal-format msgid "shadowing previous type declaration of %q#D" msgstr "" -#: cp/decl.c:5653 +#: cp/decl.c:5651 #, gcc-internal-format msgid "%qD cannot be thread-local because it has non-POD type %qT" msgstr "" -#: cp/decl.c:5685 +#: cp/decl.c:5683 #, gcc-internal-format msgid "Java object %qD not allocated with %<new%>" msgstr "" -#: cp/decl.c:5702 +#: cp/decl.c:5700 #, gcc-internal-format msgid "%qD is thread-local and so cannot be dynamically initialized" msgstr "" -#: cp/decl.c:5720 +#: cp/decl.c:5718 #, gcc-internal-format msgid "" "%qD cannot be initialized by a non-constant expression when being declared" msgstr "" -#: cp/decl.c:5760 +#: cp/decl.c:5758 #, gcc-internal-format msgid "non-static data member %qD has Java class type" msgstr "" -#: cp/decl.c:5824 +#: cp/decl.c:5822 #, gcc-internal-format msgid "function %q#D is initialized like a variable" msgstr "" -#: cp/decl.c:6413 +#: cp/decl.c:6411 #, gcc-internal-format msgid "destructor for alien class %qT cannot be a member" msgstr "" -#: cp/decl.c:6415 +#: cp/decl.c:6413 #, gcc-internal-format msgid "constructor for alien class %qT cannot be a member" msgstr "" -#: cp/decl.c:6436 +#: cp/decl.c:6434 #, gcc-internal-format msgid "%qD declared as a %<virtual%> %s" msgstr "" -#: cp/decl.c:6438 +#: cp/decl.c:6436 #, gcc-internal-format msgid "%qD declared as an %<inline%> %s" msgstr "" -#: cp/decl.c:6440 +#: cp/decl.c:6438 #, gcc-internal-format msgid "" "%<const%> and %<volatile%> function specifiers on %qD invalid in %s " "declaration" msgstr "" -#: cp/decl.c:6444 +#: cp/decl.c:6442 #, gcc-internal-format msgid "%q+D declared as a friend" msgstr "" -#: cp/decl.c:6450 +#: cp/decl.c:6448 #, gcc-internal-format msgid "%q+D declared with an exception specification" msgstr "" -#: cp/decl.c:6484 +#: cp/decl.c:6482 #, gcc-internal-format msgid "definition of %qD is not in namespace enclosing %qT" msgstr "" -#: cp/decl.c:6604 +#: cp/decl.c:6602 #, gcc-internal-format msgid "defining explicit specialization %qD in friend declaration" msgstr "" #. Something like `template <class T> friend void f<T>()'. -#: cp/decl.c:6614 +#: cp/decl.c:6612 #, gcc-internal-format msgid "invalid use of template-id %qD in declaration of primary template" msgstr "" -#: cp/decl.c:6644 +#: cp/decl.c:6642 #, gcc-internal-format msgid "" "default arguments are not allowed in declaration of friend template " "specialization %qD" msgstr "" -#: cp/decl.c:6652 +#: cp/decl.c:6650 #, gcc-internal-format msgid "" "%<inline%> is not allowed in declaration of friend template specialization %" "qD" msgstr "" -#: cp/decl.c:6695 +#: cp/decl.c:6693 #, gcc-internal-format msgid "cannot declare %<::main%> to be a template" msgstr "" -#: cp/decl.c:6697 +#: cp/decl.c:6695 #, gcc-internal-format msgid "cannot declare %<::main%> to be inline" msgstr "" -#: cp/decl.c:6699 +#: cp/decl.c:6697 #, gcc-internal-format msgid "cannot declare %<::main%> to be static" msgstr "" -#: cp/decl.c:6727 +#: cp/decl.c:6725 #, gcc-internal-format msgid "non-local function %q#D uses anonymous type" msgstr "" -#: cp/decl.c:6730 cp/decl.c:7006 +#: cp/decl.c:6728 cp/decl.c:7004 #, gcc-internal-format msgid "" "%q+#D does not refer to the unqualified type, so it is not used for linkage" msgstr "" -#: cp/decl.c:6736 +#: cp/decl.c:6734 #, gcc-internal-format msgid "non-local function %q#D uses local type %qT" msgstr "" -#: cp/decl.c:6755 +#: cp/decl.c:6753 #, gcc-internal-format msgid "static member function %qD cannot have cv-qualifier" msgstr "" -#: cp/decl.c:6756 +#: cp/decl.c:6754 #, gcc-internal-format msgid "non-member function %qD cannot have cv-qualifier" msgstr "" -#: cp/decl.c:6804 +#: cp/decl.c:6802 #, gcc-internal-format msgid "%<::main%> must return %<int%>" msgstr "" -#: cp/decl.c:6844 +#: cp/decl.c:6842 #, gcc-internal-format msgid "definition of implicitly-declared %qD" msgstr "" -#: cp/decl.c:6861 cp/decl2.c:685 +#: cp/decl.c:6859 cp/decl2.c:685 #, gcc-internal-format msgid "no %q#D member function declared in class %qT" msgstr "" @@ -29968,594 +30357,619 @@ 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/decl.c:7003 +#: cp/decl.c:7001 #, gcc-internal-format msgid "non-local variable %q#D uses anonymous type" msgstr "" -#: cp/decl.c:7012 +#: cp/decl.c:7010 #, gcc-internal-format msgid "non-local variable %q#D uses local type %qT" msgstr "" -#: cp/decl.c:7135 +#: cp/decl.c:7133 #, gcc-internal-format msgid "" "invalid in-class initialization of static data member of non-integral type %" "qT" msgstr "" -#: cp/decl.c:7145 +#: cp/decl.c:7143 #, gcc-internal-format msgid "ISO C++ forbids in-class initialization of non-const static member %qD" msgstr "" -#: cp/decl.c:7149 +#: cp/decl.c:7147 #, gcc-internal-format msgid "" "ISO C++ forbids initialization of member constant %qD of non-integral type %" "qT" msgstr "" -#: cp/decl.c:7174 +#: cp/decl.c:7172 #, gcc-internal-format msgid "size of array %qD has non-integral type %qT" msgstr "" -#: cp/decl.c:7176 +#: cp/decl.c:7174 #, gcc-internal-format msgid "size of array has non-integral type %qT" msgstr "" -#: cp/decl.c:7228 +#: cp/decl.c:7226 #, gcc-internal-format msgid "size of array %qD is negative" msgstr "" -#: cp/decl.c:7230 +#: cp/decl.c:7228 #, gcc-internal-format msgid "size of array is negative" msgstr "" -#: cp/decl.c:7238 +#: cp/decl.c:7236 #, gcc-internal-format msgid "ISO C++ forbids zero-size array %qD" msgstr "" -#: cp/decl.c:7240 +#: cp/decl.c:7238 #, gcc-internal-format msgid "ISO C++ forbids zero-size array" msgstr "" -#: cp/decl.c:7247 +#: cp/decl.c:7245 #, gcc-internal-format msgid "size of array %qD is not an integral constant-expression" msgstr "" -#: cp/decl.c:7250 +#: cp/decl.c:7248 #, gcc-internal-format msgid "size of array is not an integral constant-expression" msgstr "" -#: cp/decl.c:7256 +#: cp/decl.c:7254 #, gcc-internal-format msgid "ISO C++ forbids variable length array %qD" msgstr "" -#: cp/decl.c:7258 +#: cp/decl.c:7256 #, gcc-internal-format msgid "ISO C++ forbids variable length array" msgstr "" -#: cp/decl.c:7264 +#: cp/decl.c:7262 #, gcc-internal-format msgid "variable length array %qD is used" msgstr "" -#: cp/decl.c:7300 +#: cp/decl.c:7298 #, gcc-internal-format msgid "overflow in array dimension" msgstr "" -#: cp/decl.c:7381 +#: cp/decl.c:7379 #, gcc-internal-format msgid "declaration of %qD as %s" msgstr "" -#: cp/decl.c:7383 +#: cp/decl.c:7381 #, gcc-internal-format msgid "creating %s" msgstr "" -#: cp/decl.c:7395 +#: cp/decl.c:7393 #, gcc-internal-format msgid "" "declaration of %qD as multidimensional array must have bounds for all " "dimensions except the first" msgstr "" -#: cp/decl.c:7399 +#: cp/decl.c:7397 #, gcc-internal-format msgid "" "multidimensional array must have bounds for all dimensions except the first" msgstr "" -#: cp/decl.c:7434 +#: cp/decl.c:7432 #, gcc-internal-format msgid "return type specification for constructor invalid" msgstr "" -#: cp/decl.c:7444 +#: cp/decl.c:7442 #, gcc-internal-format msgid "return type specification for destructor invalid" msgstr "" -#: cp/decl.c:7457 +#: cp/decl.c:7455 #, gcc-internal-format msgid "return type specified for %<operator %T%>" msgstr "" -#: cp/decl.c:7479 +#: cp/decl.c:7477 #, gcc-internal-format msgid "unnamed variable or field declared void" msgstr "" -#: cp/decl.c:7483 -#, gcc-internal-format -msgid "variable or field %qE declared void" -msgstr "" - -#: cp/decl.c:7486 +#: cp/decl.c:7484 #, gcc-internal-format msgid "variable or field declared void" msgstr "" -#: cp/decl.c:7659 +#: cp/decl.c:7657 #, gcc-internal-format msgid "invalid use of qualified-name %<::%D%>" msgstr "" -#: cp/decl.c:7662 +#: cp/decl.c:7660 #, gcc-internal-format msgid "invalid use of qualified-name %<%T::%D%>" msgstr "" -#: cp/decl.c:7665 +#: cp/decl.c:7663 #, gcc-internal-format msgid "invalid use of qualified-name %<%D::%D%>" msgstr "" -#: cp/decl.c:7677 +#: cp/decl.c:7675 #, gcc-internal-format msgid "type %qT is not derived from type %qT" msgstr "" -#: cp/decl.c:7693 cp/decl.c:7785 cp/decl.c:8987 +#: cp/decl.c:7691 cp/decl.c:7783 cp/decl.c:8985 #, gcc-internal-format msgid "declaration of %qD as non-function" msgstr "" -#: cp/decl.c:7699 +#: cp/decl.c:7697 #, gcc-internal-format msgid "declaration of %qD as non-member" msgstr "" -#: cp/decl.c:7730 +#: cp/decl.c:7728 #, gcc-internal-format msgid "declarator-id missing; using reserved word %qD" msgstr "" -#: cp/decl.c:7777 +#: cp/decl.c:7775 #, gcc-internal-format msgid "function definition does not declare parameters" msgstr "" -#: cp/decl.c:7819 +#: cp/decl.c:7817 #, gcc-internal-format msgid "two or more data types in declaration of %qs" msgstr "" -#: cp/decl.c:7825 +#: cp/decl.c:7823 #, gcc-internal-format msgid "conflicting specifiers in declaration of %qs" msgstr "" -#: cp/decl.c:7896 cp/decl.c:7899 cp/decl.c:7902 +#: cp/decl.c:7894 cp/decl.c:7897 cp/decl.c:7900 #, gcc-internal-format msgid "ISO C++ forbids declaration of %qs with no type" msgstr "" -#: cp/decl.c:7927 cp/decl.c:7945 +#: cp/decl.c:7925 cp/decl.c:7943 #, gcc-internal-format msgid "%<signed%> or %<unsigned%> invalid for %qs" msgstr "" -#: cp/decl.c:7929 +#: cp/decl.c:7927 #, gcc-internal-format msgid "%<signed%> and %<unsigned%> specified together for %qs" msgstr "" -#: cp/decl.c:7931 +#: cp/decl.c:7929 #, gcc-internal-format msgid "%<long long%> invalid for %qs" msgstr "" -#: cp/decl.c:7933 +#: cp/decl.c:7931 #, gcc-internal-format msgid "%<long%> invalid for %qs" msgstr "" -#: cp/decl.c:7935 +#: cp/decl.c:7933 #, gcc-internal-format msgid "%<short%> invalid for %qs" msgstr "" -#: cp/decl.c:7937 +#: cp/decl.c:7935 #, gcc-internal-format msgid "%<long%> or %<short%> invalid for %qs" msgstr "" -#: cp/decl.c:7939 +#: cp/decl.c:7937 #, gcc-internal-format msgid "%<long%> or %<short%> specified with char for %qs" msgstr "" -#: cp/decl.c:7941 +#: cp/decl.c:7939 #, gcc-internal-format msgid "%<long%> and %<short%> specified together for %qs" msgstr "" -#: cp/decl.c:7947 +#: cp/decl.c:7945 #, gcc-internal-format msgid "%<short%> or %<long%> invalid for %qs" msgstr "" -#: cp/decl.c:7955 +#: cp/decl.c:7953 #, gcc-internal-format msgid "long, short, signed or unsigned used invalidly for %qs" msgstr "" -#: cp/decl.c:8019 +#: cp/decl.c:8017 #, gcc-internal-format msgid "complex invalid for %qs" msgstr "" -#: cp/decl.c:8048 +#: cp/decl.c:8046 #, gcc-internal-format msgid "qualifiers are not allowed on declaration of %<operator %T%>" msgstr "" -#: cp/decl.c:8061 cp/typeck.c:7286 +#: cp/decl.c:8059 cp/typeck.c:7293 #, gcc-internal-format msgid "ignoring %qV qualifiers added to function type %qT" msgstr "" -#: cp/decl.c:8084 +#: cp/decl.c:8082 #, gcc-internal-format msgid "member %qD cannot be declared both virtual and static" msgstr "" -#: cp/decl.c:8092 +#: cp/decl.c:8090 #, gcc-internal-format msgid "%<%T::%D%> is not a valid declarator" msgstr "" -#: cp/decl.c:8101 +#: cp/decl.c:8099 #, gcc-internal-format msgid "typedef declaration invalid in parameter declaration" msgstr "" -#: cp/decl.c:8107 +#: cp/decl.c:8105 #, gcc-internal-format msgid "storage class specifiers invalid in parameter declarations" msgstr "" -#: cp/decl.c:8111 +#: cp/decl.c:8109 #, gcc-internal-format msgid "parameter declared %<auto%>" msgstr "" -#: cp/decl.c:8120 +#: cp/decl.c:8118 #, gcc-internal-format msgid "%<virtual%> outside class declaration" msgstr "" -#: cp/decl.c:8138 +#: cp/decl.c:8136 #, gcc-internal-format msgid "multiple storage classes in declaration of %qs" msgstr "" -#: cp/decl.c:8161 +#: cp/decl.c:8159 #, gcc-internal-format msgid "storage class specified for %qs" msgstr "" -#: cp/decl.c:8182 +#: cp/decl.c:8163 +#, gcc-internal-format +msgid "storage class specified for parameter %qs" +msgstr "" + +#: cp/decl.c:8176 +#, gcc-internal-format +msgid "nested function %qs declared %<extern%>" +msgstr "" + +#: cp/decl.c:8180 #, gcc-internal-format msgid "top-level declaration of %qs specifies %<auto%>" msgstr "" -#: cp/decl.c:8195 +#: cp/decl.c:8186 +#, gcc-internal-format +msgid "function-scope %qs implicitly auto and declared %<__thread%>" +msgstr "" + +#: cp/decl.c:8193 #, gcc-internal-format msgid "storage class specifiers invalid in friend function declarations" msgstr "" -#: cp/decl.c:8310 +#: cp/decl.c:8282 +#, gcc-internal-format +msgid "%qs declared as function returning a function" +msgstr "" + +#: cp/decl.c:8287 +#, gcc-internal-format +msgid "%qs declared as function returning an array" +msgstr "" + +#: cp/decl.c:8308 #, gcc-internal-format msgid "%qs function uses %<auto%> type specifier without late return type" msgstr "" -#: cp/decl.c:8316 +#: cp/decl.c:8314 #, gcc-internal-format msgid "" "%qs function with late return type has %qT as its type rather than plain %" "<auto%>" msgstr "" -#: cp/decl.c:8324 +#: cp/decl.c:8322 #, gcc-internal-format msgid "" "%qs function with late return type not declared with %<auto%> type specifier" msgstr "" -#: cp/decl.c:8357 +#: cp/decl.c:8355 #, gcc-internal-format msgid "destructor cannot be static member function" msgstr "" -#: cp/decl.c:8362 +#: cp/decl.c:8360 #, gcc-internal-format msgid "destructors may not be cv-qualified" msgstr "" -#: cp/decl.c:8380 +#: cp/decl.c:8378 #, gcc-internal-format msgid "constructors cannot be declared virtual" msgstr "" -#: cp/decl.c:8393 +#: cp/decl.c:8391 #, gcc-internal-format msgid "can't initialize friend function %qs" msgstr "" #. Cannot be both friend and virtual. -#: cp/decl.c:8397 +#: cp/decl.c:8395 #, gcc-internal-format msgid "virtual functions cannot be friends" msgstr "" -#: cp/decl.c:8401 +#: cp/decl.c:8399 #, gcc-internal-format msgid "friend declaration not in class definition" msgstr "" -#: cp/decl.c:8403 +#: cp/decl.c:8401 #, gcc-internal-format msgid "can't define friend function %qs in a local class definition" msgstr "" -#: cp/decl.c:8416 +#: cp/decl.c:8414 #, gcc-internal-format msgid "destructors may not have parameters" msgstr "" -#: cp/decl.c:8435 +#: cp/decl.c:8433 #, gcc-internal-format msgid "cannot declare pointer to %q#T" msgstr "" -#: cp/decl.c:8448 cp/decl.c:8455 +#: cp/decl.c:8446 cp/decl.c:8453 #, gcc-internal-format msgid "cannot declare reference to %q#T" msgstr "" -#: cp/decl.c:8457 +#: cp/decl.c:8455 #, gcc-internal-format msgid "cannot declare pointer to %q#T member" msgstr "" -#: cp/decl.c:8477 +#: cp/decl.c:8475 #, gcc-internal-format msgid "cannot declare %s to qualified function type %qT" msgstr "" -#: cp/decl.c:8514 +#: cp/decl.c:8512 #, gcc-internal-format msgid "" "cannot declare reference to %q#T, which is not a typedef or a template type " "argument" msgstr "" -#: cp/decl.c:8558 +#: cp/decl.c:8556 #, gcc-internal-format msgid "template-id %qD used as a declarator" msgstr "" -#: cp/decl.c:8609 +#: cp/decl.c:8607 #, gcc-internal-format msgid "member functions are implicitly friends of their class" msgstr "" -#: cp/decl.c:8614 +#: cp/decl.c:8612 #, gcc-internal-format msgid "extra qualification %<%T::%> on member %qs" msgstr "" -#: cp/decl.c:8646 +#: cp/decl.c:8644 #, gcc-internal-format msgid "cannot define member function %<%T::%s%> within %<%T%>" msgstr "" -#: cp/decl.c:8663 +#: cp/decl.c:8661 #, gcc-internal-format msgid "cannot declare member %<%T::%s%> within %qT" msgstr "" -#: cp/decl.c:8686 +#: cp/decl.c:8684 #, gcc-internal-format msgid "non-parameter %qs cannot be a parameter pack" msgstr "" -#: cp/decl.c:8707 +#: cp/decl.c:8694 +#, gcc-internal-format +msgid "size of array %qs is too large" +msgstr "" + +#: cp/decl.c:8705 #, gcc-internal-format msgid "data member may not have variably modified type %qT" msgstr "" -#: cp/decl.c:8709 +#: cp/decl.c:8707 #, gcc-internal-format msgid "parameter may not have variably modified type %qT" msgstr "" #. [dcl.fct.spec] The explicit specifier shall only be used in #. declarations of constructors within a class definition. -#: cp/decl.c:8717 +#: cp/decl.c:8715 #, gcc-internal-format msgid "only declarations of constructors can be %<explicit%>" msgstr "" -#: cp/decl.c:8725 +#: cp/decl.c:8723 #, gcc-internal-format msgid "non-member %qs cannot be declared %<mutable%>" msgstr "" -#: cp/decl.c:8730 +#: cp/decl.c:8728 #, gcc-internal-format msgid "non-object member %qs cannot be declared %<mutable%>" msgstr "" -#: cp/decl.c:8736 +#: cp/decl.c:8734 #, gcc-internal-format msgid "function %qs cannot be declared %<mutable%>" msgstr "" -#: cp/decl.c:8741 +#: cp/decl.c:8739 #, gcc-internal-format msgid "static %qs cannot be declared %<mutable%>" msgstr "" -#: cp/decl.c:8746 +#: cp/decl.c:8744 #, gcc-internal-format msgid "const %qs cannot be declared %<mutable%>" msgstr "" -#: cp/decl.c:8783 +#: cp/decl.c:8781 #, gcc-internal-format msgid "%Jtypedef name may not be a nested-name-specifier" msgstr "" -#: cp/decl.c:8801 +#: cp/decl.c:8799 #, gcc-internal-format msgid "ISO C++ forbids nested type %qD with same name as enclosing class" msgstr "" -#: cp/decl.c:8889 +#: cp/decl.c:8887 #, gcc-internal-format msgid "" "qualified function types cannot be used to declare static member functions" msgstr "" -#: cp/decl.c:8891 +#: cp/decl.c:8889 #, gcc-internal-format msgid "qualified function types cannot be used to declare free functions" msgstr "" -#: cp/decl.c:8917 +#: cp/decl.c:8915 #, gcc-internal-format msgid "type qualifiers specified for friend class declaration" msgstr "" -#: cp/decl.c:8922 +#: cp/decl.c:8920 #, gcc-internal-format msgid "%<inline%> specified for friend class declaration" msgstr "" -#: cp/decl.c:8930 +#: cp/decl.c:8928 #, gcc-internal-format msgid "template parameters cannot be friends" msgstr "" -#: cp/decl.c:8932 +#: cp/decl.c:8930 #, gcc-internal-format msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>" msgstr "" -#: cp/decl.c:8936 +#: cp/decl.c:8934 #, gcc-internal-format msgid "friend declaration requires class-key, i.e. %<friend %#T%>" msgstr "" -#: cp/decl.c:8949 +#: cp/decl.c:8947 #, gcc-internal-format msgid "trying to make class %qT a friend of global scope" msgstr "" -#: cp/decl.c:8967 +#: cp/decl.c:8965 #, gcc-internal-format msgid "invalid qualifiers on non-member function type" msgstr "" -#: cp/decl.c:8977 +#: cp/decl.c:8975 #, gcc-internal-format msgid "abstract declarator %qT used as declaration" msgstr "" -#: cp/decl.c:9006 +#: cp/decl.c:9004 #, gcc-internal-format msgid "cannot use %<::%> in parameter declaration" msgstr "" #. Something like struct S { int N::j; }; -#: cp/decl.c:9052 +#: cp/decl.c:9050 #, gcc-internal-format msgid "invalid use of %<::%>" msgstr "" -#: cp/decl.c:9067 +#: cp/decl.c:9065 #, gcc-internal-format msgid "can't make %qD into a method -- not in a class" msgstr "" -#: cp/decl.c:9076 +#: cp/decl.c:9074 #, gcc-internal-format msgid "function %qD declared virtual inside a union" msgstr "" -#: cp/decl.c:9085 +#: cp/decl.c:9083 #, gcc-internal-format msgid "%qD cannot be declared virtual, since it is always static" msgstr "" -#: cp/decl.c:9103 +#: cp/decl.c:9101 #, gcc-internal-format msgid "expected qualified name in friend declaration for destructor %qD" msgstr "" -#: cp/decl.c:9110 +#: cp/decl.c:9108 #, gcc-internal-format msgid "declaration of %qD as member of %qT" msgstr "" -#: cp/decl.c:9117 +#: cp/decl.c:9115 #, gcc-internal-format msgid "expected qualified name in friend declaration for constructor %qD" msgstr "" -#: cp/decl.c:9180 +#: cp/decl.c:9178 #, gcc-internal-format msgid "field %qD has incomplete type" msgstr "" -#: cp/decl.c:9182 +#: cp/decl.c:9180 #, gcc-internal-format msgid "name %qT has incomplete type" msgstr "" -#: cp/decl.c:9191 +#: cp/decl.c:9189 #, gcc-internal-format msgid " in instantiation of template %qT" msgstr "" -#: cp/decl.c:9200 +#: cp/decl.c:9198 #, gcc-internal-format msgid "%qE is neither function nor member function; cannot be declared friend" msgstr "" @@ -30572,117 +30986,127 @@ msgstr "" #. the rest of the compiler does not correctly #. handle the initialization unless the member is #. static so we make it static below. -#: cp/decl.c:9252 +#: cp/decl.c:9250 #, gcc-internal-format msgid "ISO C++ forbids initialization of member %qD" msgstr "" -#: cp/decl.c:9254 +#: cp/decl.c:9252 #, gcc-internal-format msgid "making %qD static" msgstr "" -#: cp/decl.c:9319 +#: cp/decl.c:9317 #, gcc-internal-format msgid "storage class %<auto%> invalid for function %qs" msgstr "" -#: cp/decl.c:9321 +#: cp/decl.c:9319 #, gcc-internal-format msgid "storage class %<register%> invalid for function %qs" msgstr "" -#: cp/decl.c:9323 +#: cp/decl.c:9321 #, gcc-internal-format msgid "storage class %<__thread%> invalid for function %qs" msgstr "" -#: cp/decl.c:9335 +#: cp/decl.c:9333 #, gcc-internal-format msgid "" "%<static%> specified invalid for function %qs declared out of global scope" msgstr "" -#: cp/decl.c:9339 +#: cp/decl.c:9337 #, gcc-internal-format msgid "" "%<inline%> specifier invalid for function %qs declared out of global scope" msgstr "" -#: cp/decl.c:9346 +#: cp/decl.c:9344 #, gcc-internal-format msgid "%q#T is not a class or a namespace" msgstr "" -#: cp/decl.c:9354 +#: cp/decl.c:9352 #, gcc-internal-format msgid "virtual non-class function %qs" msgstr "" -#: cp/decl.c:9361 +#: cp/decl.c:9359 #, gcc-internal-format msgid "%qs defined in a non-class scope" msgstr "" -#: cp/decl.c:9394 +#: cp/decl.c:9392 #, gcc-internal-format msgid "cannot declare member function %qD to have static linkage" msgstr "" #. FIXME need arm citation -#: cp/decl.c:9401 +#: cp/decl.c:9399 #, gcc-internal-format msgid "cannot declare static function inside another function" msgstr "" -#: cp/decl.c:9431 +#: cp/decl.c:9429 #, gcc-internal-format msgid "" "%<static%> may not be used when defining (as opposed to declaring) a static " "data member" msgstr "" -#: cp/decl.c:9438 +#: cp/decl.c:9436 #, gcc-internal-format msgid "static member %qD declared %<register%>" msgstr "" -#: cp/decl.c:9444 +#: cp/decl.c:9442 #, gcc-internal-format msgid "cannot explicitly declare member %q#D to have extern linkage" msgstr "" -#: cp/decl.c:9588 +#: cp/decl.c:9456 +#, gcc-internal-format +msgid "%qs initialized and declared %<extern%>" +msgstr "" + +#: cp/decl.c:9460 +#, gcc-internal-format +msgid "%qs has both %<extern%> and initializer" +msgstr "" + +#: cp/decl.c:9586 #, gcc-internal-format msgid "default argument for %q#D has type %qT" msgstr "" -#: cp/decl.c:9591 +#: cp/decl.c:9589 #, gcc-internal-format msgid "default argument for parameter of type %qT has type %qT" msgstr "" -#: cp/decl.c:9607 +#: cp/decl.c:9605 #, gcc-internal-format msgid "default argument %qE uses local variable %qD" msgstr "" -#: cp/decl.c:9690 +#: cp/decl.c:9688 #, gcc-internal-format msgid "parameter %qD has Java class type" msgstr "" -#: cp/decl.c:9710 +#: cp/decl.c:9708 #, gcc-internal-format msgid "parameter %qD invalidly declared method type" msgstr "" -#: cp/decl.c:9734 +#: cp/decl.c:9732 #, gcc-internal-format msgid "parameter %qD includes %s to array of unknown bound %qT" msgstr "" -#: cp/decl.c:9749 +#: cp/decl.c:9747 #, gcc-internal-format msgid "parameter packs must be at the end of the parameter list" msgstr "" @@ -30702,139 +31126,139 @@ 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:9972 +#: cp/decl.c:9970 #, gcc-internal-format msgid "invalid constructor; you probably meant %<%T (const %T&)%>" msgstr "" -#: cp/decl.c:10094 +#: cp/decl.c:10092 #, gcc-internal-format msgid "%qD may not be declared within a namespace" msgstr "" -#: cp/decl.c:10099 +#: cp/decl.c:10097 #, gcc-internal-format msgid "%qD may not be declared as static" msgstr "" -#: cp/decl.c:10125 +#: cp/decl.c:10123 #, gcc-internal-format msgid "%qD must be a nonstatic member function" msgstr "" -#: cp/decl.c:10134 +#: cp/decl.c:10132 #, gcc-internal-format msgid "" "%qD must be either a non-static member function or a non-member function" msgstr "" -#: cp/decl.c:10156 +#: cp/decl.c:10154 #, gcc-internal-format msgid "%qD must have an argument of class or enumerated type" msgstr "" -#: cp/decl.c:10197 +#: cp/decl.c:10195 #, gcc-internal-format msgid "conversion to %s%s will never use a type conversion operator" msgstr "" #. 13.4.0.3 -#: cp/decl.c:10205 +#: cp/decl.c:10203 #, gcc-internal-format msgid "ISO C++ prohibits overloading operator ?:" msgstr "" -#: cp/decl.c:10210 +#: cp/decl.c:10208 #, gcc-internal-format msgid "%qD must not have variable number of arguments" msgstr "" -#: cp/decl.c:10261 +#: cp/decl.c:10259 #, gcc-internal-format msgid "postfix %qD must take %<int%> as its argument" msgstr "" -#: cp/decl.c:10264 +#: cp/decl.c:10262 #, gcc-internal-format msgid "postfix %qD must take %<int%> as its second argument" msgstr "" -#: cp/decl.c:10272 +#: cp/decl.c:10270 #, gcc-internal-format msgid "%qD must take either zero or one argument" msgstr "" -#: cp/decl.c:10274 +#: cp/decl.c:10272 #, gcc-internal-format msgid "%qD must take either one or two arguments" msgstr "" -#: cp/decl.c:10296 +#: cp/decl.c:10294 #, gcc-internal-format msgid "prefix %qD should return %qT" msgstr "" -#: cp/decl.c:10302 +#: cp/decl.c:10300 #, gcc-internal-format msgid "postfix %qD should return %qT" msgstr "" -#: cp/decl.c:10311 +#: cp/decl.c:10309 #, gcc-internal-format msgid "%qD must take %<void%>" msgstr "" -#: cp/decl.c:10313 cp/decl.c:10322 +#: cp/decl.c:10311 cp/decl.c:10320 #, gcc-internal-format msgid "%qD must take exactly one argument" msgstr "" -#: cp/decl.c:10324 +#: cp/decl.c:10322 #, gcc-internal-format msgid "%qD must take exactly two arguments" msgstr "" -#: cp/decl.c:10333 +#: cp/decl.c:10331 #, gcc-internal-format msgid "user-defined %qD always evaluates both arguments" msgstr "" -#: cp/decl.c:10347 +#: cp/decl.c:10345 #, gcc-internal-format msgid "%qD should return by value" msgstr "" -#: cp/decl.c:10358 cp/decl.c:10363 +#: cp/decl.c:10356 cp/decl.c:10361 #, gcc-internal-format msgid "%qD cannot have default arguments" msgstr "" -#: cp/decl.c:10421 +#: cp/decl.c:10419 #, gcc-internal-format msgid "using template type parameter %qT after %qs" msgstr "" -#: cp/decl.c:10436 +#: cp/decl.c:10434 #, gcc-internal-format msgid "using typedef-name %qD after %qs" msgstr "" -#: cp/decl.c:10437 +#: cp/decl.c:10435 #, gcc-internal-format msgid "%q+D has a previous declaration here" msgstr "" -#: cp/decl.c:10445 +#: cp/decl.c:10443 #, gcc-internal-format msgid "%qT referred to as %qs" msgstr "" -#: cp/decl.c:10446 cp/decl.c:10453 +#: cp/decl.c:10444 cp/decl.c:10451 #, gcc-internal-format msgid "%q+T has a previous declaration here" msgstr "" -#: cp/decl.c:10452 +#: cp/decl.c:10450 #, gcc-internal-format msgid "%qT referred to as enum" msgstr "" @@ -30846,77 +31270,77 @@ msgstr "" #. void f(class C); // No template header here #. #. then the required template argument is missing. -#: cp/decl.c:10467 +#: cp/decl.c:10465 #, gcc-internal-format msgid "template argument required for %<%s %T%>" msgstr "" -#: cp/decl.c:10515 cp/name-lookup.c:2808 +#: cp/decl.c:10513 cp/name-lookup.c:2807 #, gcc-internal-format msgid "%qD has the same name as the class in which it is declared" msgstr "" -#: cp/decl.c:10545 cp/name-lookup.c:2316 +#: cp/decl.c:10543 cp/name-lookup.c:2315 #, gcc-internal-format msgid "reference to %qD is ambiguous" msgstr "" -#: cp/decl.c:10659 +#: cp/decl.c:10657 #, gcc-internal-format msgid "use of enum %q#D without previous declaration" msgstr "" -#: cp/decl.c:10680 +#: cp/decl.c:10678 #, gcc-internal-format msgid "redeclaration of %qT as a non-template" msgstr "" -#: cp/decl.c:10681 +#: cp/decl.c:10679 #, gcc-internal-format msgid "previous declaration %q+D" msgstr "" -#: cp/decl.c:10795 +#: cp/decl.c:10793 #, gcc-internal-format msgid "derived union %qT invalid" msgstr "" -#: cp/decl.c:10804 +#: cp/decl.c:10802 #, gcc-internal-format msgid "Java class %qT cannot have multiple bases" msgstr "" -#: cp/decl.c:10815 +#: cp/decl.c:10813 #, gcc-internal-format msgid "Java class %qT cannot have virtual bases" msgstr "" -#: cp/decl.c:10835 +#: cp/decl.c:10833 #, gcc-internal-format msgid "base type %qT fails to be a struct or class type" msgstr "" -#: cp/decl.c:10868 +#: cp/decl.c:10866 #, gcc-internal-format msgid "recursive type %qT undefined" msgstr "" -#: cp/decl.c:10870 +#: cp/decl.c:10868 #, gcc-internal-format msgid "duplicate base type %qT invalid" msgstr "" -#: cp/decl.c:10954 +#: cp/decl.c:10952 #, gcc-internal-format msgid "multiple definition of %q#T" msgstr "" -#: cp/decl.c:10955 +#: cp/decl.c:10953 #, gcc-internal-format msgid "%Jprevious definition here" msgstr "" -#: cp/decl.c:11002 +#: cp/decl.c:11000 #, gcc-internal-format msgid "underlying type %<%T%> of %<%T%> must be an integral type" msgstr "" @@ -30925,62 +31349,62 @@ msgstr "" #. #. IF no integral type can represent all the enumerator values, the #. enumeration is ill-formed. -#: cp/decl.c:11134 +#: cp/decl.c:11132 #, gcc-internal-format msgid "no integral type can represent all of the enumerator values for %qT" msgstr "" -#: cp/decl.c:11265 +#: cp/decl.c:11263 #, gcc-internal-format msgid "enumerator value for %qD is not an integer constant" msgstr "" -#: cp/decl.c:11297 +#: cp/decl.c:11295 #, gcc-internal-format msgid "overflow in enumeration values at %qD" msgstr "" -#: cp/decl.c:11317 +#: cp/decl.c:11315 #, gcc-internal-format msgid "enumerator value %E is too large for underlying type %<%T%>" msgstr "" -#: cp/decl.c:11414 +#: cp/decl.c:11412 #, gcc-internal-format msgid "return type %q#T is incomplete" msgstr "" -#: cp/decl.c:11416 +#: cp/decl.c:11414 #, gcc-internal-format msgid "return type has Java class type %q#T" msgstr "" -#: cp/decl.c:11541 cp/typeck.c:6970 +#: cp/decl.c:11539 cp/typeck.c:6977 #, gcc-internal-format msgid "%<operator=%> should return a reference to %<*this%>" msgstr "" -#: cp/decl.c:11856 +#: cp/decl.c:11854 #, gcc-internal-format msgid "invalid function declaration" msgstr "" -#: cp/decl.c:11940 +#: cp/decl.c:11938 #, gcc-internal-format msgid "parameter %qD declared void" msgstr "" -#: cp/decl.c:12442 +#: cp/decl.c:12440 #, gcc-internal-format msgid "invalid member function declaration" msgstr "" -#: cp/decl.c:12457 +#: cp/decl.c:12455 #, gcc-internal-format msgid "%qD is already defined in class %qT" msgstr "" -#: cp/decl.c:12704 +#: cp/decl.c:12702 #, gcc-internal-format msgid "static member function %q#D declared with type qualifiers" msgstr "" @@ -31200,7 +31624,7 @@ msgstr "" #. We really want to suppress this warning in system headers, #. because libstdc++ uses variadic templates even when we aren't #. in C++0x mode. -#: cp/error.c:2798 +#: cp/error.c:2825 #, gcc-internal-format msgid "%s only available with -std=c++0x or -std=gnu++0x" msgstr "" @@ -31468,7 +31892,7 @@ msgstr "" msgid "bad array initializer" msgstr "" -#: cp/init.c:1440 cp/semantics.c:2537 +#: cp/init.c:1440 cp/semantics.c:2536 #, gcc-internal-format msgid "%qT is not a class type" msgstr "" @@ -31644,32 +32068,32 @@ msgid "" "use of an undeclared name is deprecated)" msgstr "" -#: cp/mangle.c:1690 +#: cp/mangle.c:1689 #, gcc-internal-format msgid "mangling typeof, use decltype instead" msgstr "" -#: cp/mangle.c:1903 +#: cp/mangle.c:1902 #, gcc-internal-format msgid "mangling unknown fixed point type" msgstr "" -#: cp/mangle.c:2332 +#: cp/mangle.c:2331 #, gcc-internal-format msgid "mangling %C" msgstr "" -#: cp/mangle.c:2387 +#: cp/mangle.c:2386 #, gcc-internal-format msgid "mangling new-expression" msgstr "" -#: cp/mangle.c:2407 +#: cp/mangle.c:2406 #, gcc-internal-format msgid "omitted middle operand to %<?:%> operand cannot be mangled" msgstr "" -#: cp/mangle.c:2722 +#: cp/mangle.c:2721 #, gcc-internal-format msgid "the mangled name of %qD will change in a future version of GCC" msgstr "" @@ -31701,7 +32125,7 @@ msgid "" "future version of GCC due to implicit virtual destructor" msgstr "" -#: cp/name-lookup.c:734 +#: cp/name-lookup.c:733 #, gcc-internal-format msgid "redeclaration of %<wchar_t%> as %qT" msgstr "" @@ -31712,597 +32136,597 @@ msgstr "" #. [basic.start.main] #. #. This function shall not be overloaded. -#: cp/name-lookup.c:764 +#: cp/name-lookup.c:763 #, gcc-internal-format msgid "invalid redeclaration of %q+D" msgstr "" -#: cp/name-lookup.c:765 +#: cp/name-lookup.c:764 #, gcc-internal-format msgid "as %qD" msgstr "" -#: cp/name-lookup.c:811 cp/name-lookup.c:822 +#: cp/name-lookup.c:810 cp/name-lookup.c:821 #, gcc-internal-format msgid "declaration of %q#D with C language linkage" msgstr "" -#: cp/name-lookup.c:815 +#: cp/name-lookup.c:814 #, gcc-internal-format msgid "due to different exception specifications" msgstr "" -#: cp/name-lookup.c:906 +#: cp/name-lookup.c:905 #, gcc-internal-format msgid "type mismatch with previous external decl of %q#D" msgstr "" -#: cp/name-lookup.c:907 +#: cp/name-lookup.c:906 #, gcc-internal-format msgid "previous external decl of %q+#D" msgstr "" -#: cp/name-lookup.c:998 +#: cp/name-lookup.c:997 #, gcc-internal-format msgid "extern declaration of %q#D doesn't match" msgstr "" -#: cp/name-lookup.c:999 +#: cp/name-lookup.c:998 #, gcc-internal-format msgid "global declaration %q+#D" msgstr "" -#: cp/name-lookup.c:1041 cp/name-lookup.c:1048 +#: cp/name-lookup.c:1040 cp/name-lookup.c:1047 #, gcc-internal-format msgid "declaration of %q#D shadows a parameter" msgstr "" #. Location of previous decl is not useful in this case. -#: cp/name-lookup.c:1073 +#: cp/name-lookup.c:1072 #, gcc-internal-format msgid "declaration of %qD shadows a member of 'this'" msgstr "" -#: cp/name-lookup.c:1079 +#: cp/name-lookup.c:1078 #, gcc-internal-format msgid "declaration of %qD shadows a previous local" msgstr "" -#: cp/name-lookup.c:1086 +#: cp/name-lookup.c:1085 #, gcc-internal-format msgid "declaration of %qD shadows a global declaration" msgstr "" -#: cp/name-lookup.c:1209 +#: cp/name-lookup.c:1208 #, gcc-internal-format msgid "name lookup of %qD changed" msgstr "" -#: cp/name-lookup.c:1210 +#: cp/name-lookup.c:1209 #, gcc-internal-format msgid " matches this %q+D under ISO standard rules" msgstr "" -#: cp/name-lookup.c:1212 +#: cp/name-lookup.c:1211 #, gcc-internal-format msgid " matches this %q+D under old rules" msgstr "" -#: cp/name-lookup.c:1230 cp/name-lookup.c:1238 +#: cp/name-lookup.c:1229 cp/name-lookup.c:1237 #, gcc-internal-format msgid "name lookup of %qD changed for ISO %<for%> scoping" msgstr "" -#: cp/name-lookup.c:1232 +#: cp/name-lookup.c:1231 #, gcc-internal-format msgid " cannot use obsolete binding at %q+D because it has a destructor" msgstr "" -#: cp/name-lookup.c:1241 +#: cp/name-lookup.c:1240 #, gcc-internal-format msgid " using obsolete binding at %q+D" msgstr "" -#: cp/name-lookup.c:1247 cp/parser.c:10158 +#: cp/name-lookup.c:1246 cp/parser.c:10152 #, gcc-internal-format msgid "(if you use %<-fpermissive%> G++ will accept your code)" msgstr "" -#: cp/name-lookup.c:1303 +#: cp/name-lookup.c:1302 #, gcc-internal-format msgid "%s %s(%E) %p %d\n" msgstr "" -#: cp/name-lookup.c:1306 +#: cp/name-lookup.c:1305 #, gcc-internal-format msgid "%s %s %p %d\n" msgstr "" -#: cp/name-lookup.c:1434 +#: cp/name-lookup.c:1433 #, gcc-internal-format msgid "XXX is_class_level != (current_scope == class_scope)\n" msgstr "" -#: cp/name-lookup.c:2029 +#: cp/name-lookup.c:2028 #, gcc-internal-format msgid "%q#D hides constructor for %q#T" msgstr "" -#: cp/name-lookup.c:2046 +#: cp/name-lookup.c:2045 #, gcc-internal-format msgid "%q#D conflicts with previous using declaration %q#D" msgstr "" -#: cp/name-lookup.c:2069 +#: cp/name-lookup.c:2068 #, gcc-internal-format msgid "previous non-function declaration %q+#D" msgstr "" -#: cp/name-lookup.c:2070 +#: cp/name-lookup.c:2069 #, gcc-internal-format msgid "conflicts with function declaration %q#D" msgstr "" #. It's a nested name with template parameter dependent scope. #. This can only be using-declaration for class member. -#: cp/name-lookup.c:2148 cp/name-lookup.c:2173 +#: cp/name-lookup.c:2147 cp/name-lookup.c:2172 #, gcc-internal-format msgid "%qT is not a namespace" msgstr "" #. 7.3.3/5 #. A using-declaration shall not name a template-id. -#: cp/name-lookup.c:2158 +#: cp/name-lookup.c:2157 #, gcc-internal-format msgid "a using-declaration cannot specify a template-id. Try %<using %D%>" msgstr "" -#: cp/name-lookup.c:2165 +#: cp/name-lookup.c:2164 #, gcc-internal-format msgid "namespace %qD not allowed in using-declaration" msgstr "" -#: cp/name-lookup.c:2201 +#: cp/name-lookup.c:2200 #, gcc-internal-format msgid "%qD not declared" msgstr "" -#: cp/name-lookup.c:2237 cp/name-lookup.c:2274 cp/name-lookup.c:2308 -#: cp/name-lookup.c:2323 +#: cp/name-lookup.c:2236 cp/name-lookup.c:2273 cp/name-lookup.c:2307 +#: cp/name-lookup.c:2322 #, gcc-internal-format msgid "%qD is already declared in this scope" msgstr "" -#: cp/name-lookup.c:2927 +#: cp/name-lookup.c:2926 #, gcc-internal-format msgid "using-declaration for non-member at class scope" msgstr "" -#: cp/name-lookup.c:2934 +#: cp/name-lookup.c:2933 #, gcc-internal-format msgid "%<%T::%D%> names destructor" msgstr "" -#: cp/name-lookup.c:2939 +#: cp/name-lookup.c:2938 #, gcc-internal-format msgid "%<%T::%D%> names constructor" msgstr "" -#: cp/name-lookup.c:2944 +#: cp/name-lookup.c:2943 #, gcc-internal-format msgid "%<%T::%D%> names constructor in %qT" msgstr "" -#: cp/name-lookup.c:2994 +#: cp/name-lookup.c:2993 #, gcc-internal-format msgid "no members matching %<%T::%D%> in %q#T" msgstr "" -#: cp/name-lookup.c:3062 +#: cp/name-lookup.c:3061 #, gcc-internal-format msgid "declaration of %qD not in a namespace surrounding %qD" msgstr "" -#: cp/name-lookup.c:3070 +#: cp/name-lookup.c:3069 #, gcc-internal-format msgid "explicit qualification in declaration of %qD" msgstr "" -#: cp/name-lookup.c:3113 +#: cp/name-lookup.c:3112 #, gcc-internal-format msgid "%qD should have been declared inside %qD" msgstr "" -#: cp/name-lookup.c:3158 +#: cp/name-lookup.c:3157 #, gcc-internal-format msgid "%qD attribute requires a single NTBS argument" msgstr "" -#: cp/name-lookup.c:3165 +#: cp/name-lookup.c:3164 #, gcc-internal-format msgid "" "%qD attribute is meaningless since members of the anonymous namespace get " "local symbols" msgstr "" -#: cp/name-lookup.c:3174 cp/name-lookup.c:3544 +#: cp/name-lookup.c:3173 cp/name-lookup.c:3543 #, gcc-internal-format msgid "%qD attribute directive ignored" msgstr "" -#: cp/name-lookup.c:3219 +#: cp/name-lookup.c:3218 #, gcc-internal-format msgid "namespace alias %qD not allowed here, assuming %qD" msgstr "" -#: cp/name-lookup.c:3532 +#: cp/name-lookup.c:3531 #, gcc-internal-format msgid "strong using only meaningful at namespace scope" msgstr "" -#: cp/name-lookup.c:3536 +#: cp/name-lookup.c:3535 #, gcc-internal-format msgid "current namespace %qD does not enclose strongly used namespace %qD" msgstr "" -#: cp/name-lookup.c:4473 +#: cp/name-lookup.c:4472 #, gcc-internal-format msgid "%q+D is not a function," msgstr "" -#: cp/name-lookup.c:4474 +#: cp/name-lookup.c:4473 #, gcc-internal-format msgid " conflict with %q+D" msgstr "" -#: cp/name-lookup.c:4919 +#: cp/name-lookup.c:4918 #, gcc-internal-format msgid "argument dependent lookup finds %q+D" msgstr "" -#: cp/name-lookup.c:5360 +#: cp/name-lookup.c:5359 #, gcc-internal-format msgid "XXX entering pop_everything ()\n" msgstr "" -#: cp/name-lookup.c:5369 +#: cp/name-lookup.c:5368 #, gcc-internal-format msgid "XXX leaving pop_everything ()\n" msgstr "" -#: cp/parser.c:440 +#: cp/parser.c:431 #, gcc-internal-format -msgid "identifier %<%s%> will become a keyword in C++0x" +msgid "identifier %qE will become a keyword in C++0x" msgstr "" -#: cp/parser.c:2084 +#: cp/parser.c:2078 #, gcc-internal-format msgid "%H%<#pragma%> is not allowed here" msgstr "" -#: cp/parser.c:2115 +#: cp/parser.c:2109 #, gcc-internal-format msgid "%H%<%E::%E%> has not been declared" msgstr "" -#: cp/parser.c:2118 +#: cp/parser.c:2112 #, gcc-internal-format msgid "%H%<::%E%> has not been declared" msgstr "" -#: cp/parser.c:2121 +#: cp/parser.c:2115 #, gcc-internal-format msgid "%Hrequest for member %qE in non-class type %qT" msgstr "" -#: cp/parser.c:2124 +#: cp/parser.c:2118 #, gcc-internal-format msgid "%H%<%T::%E%> has not been declared" msgstr "" -#: cp/parser.c:2127 +#: cp/parser.c:2121 #, gcc-internal-format msgid "%H%qE has not been declared" msgstr "" -#: cp/parser.c:2130 +#: cp/parser.c:2124 #, gcc-internal-format msgid "%H%<%E::%E%> %s" msgstr "" -#: cp/parser.c:2132 +#: cp/parser.c:2126 #, gcc-internal-format msgid "%H%<::%E%> %s" msgstr "" -#: cp/parser.c:2134 +#: cp/parser.c:2128 #, gcc-internal-format msgid "%H%qE %s" msgstr "" -#: cp/parser.c:2169 +#: cp/parser.c:2163 #, gcc-internal-format msgid "%H%<long long long%> is too long for GCC" msgstr "" -#: cp/parser.c:2172 +#: cp/parser.c:2166 #, gcc-internal-format msgid "ISO C++ 1998 does not support %<long long%>" msgstr "" -#: cp/parser.c:2192 +#: cp/parser.c:2186 #, gcc-internal-format msgid "%Hduplicate %qs" msgstr "" -#: cp/parser.c:2236 +#: cp/parser.c:2230 #, gcc-internal-format msgid "%Hnew types may not be defined in a return type" msgstr "" -#: cp/parser.c:2238 +#: cp/parser.c:2232 #, gcc-internal-format msgid "(perhaps a semicolon is missing after the definition of %qT)" msgstr "" -#: cp/parser.c:2258 +#: cp/parser.c:2252 #, gcc-internal-format msgid "%H%qT is not a template" msgstr "" -#: cp/parser.c:2260 +#: cp/parser.c:2254 #, gcc-internal-format msgid "%H%qE is not a template" msgstr "" -#: cp/parser.c:2262 +#: cp/parser.c:2256 #, gcc-internal-format msgid "%Hinvalid template-id" msgstr "" -#: cp/parser.c:2324 +#: cp/parser.c:2318 #, gcc-internal-format msgid "%Hinvalid use of template-name %qE without an argument list" msgstr "" -#: cp/parser.c:2327 +#: cp/parser.c:2321 #, gcc-internal-format msgid "%Hinvalid use of destructor %qD as a type" msgstr "" #. Something like 'unsigned A a;' -#: cp/parser.c:2330 +#: cp/parser.c:2324 #, gcc-internal-format msgid "%Hinvalid combination of multiple type-specifiers" msgstr "" #. Issue an error message. -#: cp/parser.c:2335 +#: cp/parser.c:2329 #, gcc-internal-format msgid "%H%qE does not name a type" msgstr "" -#: cp/parser.c:2368 +#: cp/parser.c:2362 #, gcc-internal-format msgid "(perhaps %<typename %T::%E%> was intended)" msgstr "" -#: cp/parser.c:2383 +#: cp/parser.c:2377 #, gcc-internal-format msgid "%H%qE in namespace %qE does not name a type" msgstr "" -#: cp/parser.c:2386 +#: cp/parser.c:2380 #, gcc-internal-format msgid "%H%qE in class %qT does not name a type" msgstr "" -#: cp/parser.c:2950 +#: cp/parser.c:2944 #, gcc-internal-format msgid "%Hunsupported non-standard concatenation of string literals" msgstr "" -#: cp/parser.c:3153 +#: cp/parser.c:3147 #, gcc-internal-format msgid "%Hfixed-point types not supported in C++" msgstr "" -#: cp/parser.c:3234 +#: cp/parser.c:3228 #, gcc-internal-format msgid "ISO C++ forbids braced-groups within expressions" msgstr "" -#: cp/parser.c:3245 +#: cp/parser.c:3239 #, gcc-internal-format msgid "" "%Hstatement-expressions are not allowed outside functions nor in template-" "argument lists" msgstr "" -#: cp/parser.c:3304 +#: cp/parser.c:3298 #, gcc-internal-format msgid "%H%<this%> may not be used in this context" msgstr "" -#: cp/parser.c:3513 +#: cp/parser.c:3507 #, gcc-internal-format msgid "%Hlocal variable %qD may not appear in this context" msgstr "" -#: cp/parser.c:3813 +#: cp/parser.c:3807 #, gcc-internal-format msgid "%Hscope %qT before %<~%> is not a class-name" msgstr "" -#: cp/parser.c:3927 +#: cp/parser.c:3921 #, gcc-internal-format msgid "%Hdeclaration of %<~%T%> as member of %qT" msgstr "" -#: cp/parser.c:3941 +#: cp/parser.c:3935 #, gcc-internal-format msgid "%Htypedef-name %qD used as destructor declarator" msgstr "" -#: cp/parser.c:4155 +#: cp/parser.c:4149 #, gcc-internal-format msgid "%H%qD used without template parameters" msgstr "" -#: cp/parser.c:4159 cp/parser.c:14879 cp/parser.c:17171 +#: cp/parser.c:4153 cp/parser.c:14879 cp/parser.c:17176 #, gcc-internal-format msgid "%Hreference to %qD is ambiguous" msgstr "" -#: cp/parser.c:4205 cp/pt.c:5660 +#: cp/parser.c:4199 cp/pt.c:5660 #, gcc-internal-format msgid "%qT is not a template" msgstr "" #. Warn the user that a compound literal is not #. allowed in standard C++. -#: cp/parser.c:4629 +#: cp/parser.c:4623 #, gcc-internal-format msgid "ISO C++ forbids compound-literals" msgstr "" -#: cp/parser.c:5002 +#: cp/parser.c:4996 #, gcc-internal-format msgid "%H%qE does not have class type" msgstr "" -#: cp/parser.c:5086 +#: cp/parser.c:5080 #, gcc-internal-format msgid "%Hinvalid use of %qD" msgstr "" -#: cp/parser.c:5665 +#: cp/parser.c:5659 #, gcc-internal-format msgid "%Harray bound forbidden after parenthesized type-id" msgstr "" -#: cp/parser.c:5668 +#: cp/parser.c:5662 #, gcc-internal-format msgid "try removing the parentheses around the type-id" msgstr "" -#: cp/parser.c:5861 +#: cp/parser.c:5855 #, gcc-internal-format msgid "%Hexpression in new-declarator must have integral or enumeration type" msgstr "" -#: cp/parser.c:6117 +#: cp/parser.c:6111 #, gcc-internal-format msgid "use of old-style cast" msgstr "" -#: cp/parser.c:6248 +#: cp/parser.c:6242 #, gcc-internal-format msgid "%H%<>>%> operator will be treated as two right angle brackets in C++0x" msgstr "" -#: cp/parser.c:6251 +#: cp/parser.c:6245 #, gcc-internal-format msgid "suggest parentheses around %<>>%> expression" msgstr "" -#: cp/parser.c:7088 +#: cp/parser.c:7082 #, gcc-internal-format msgid "%Hcase label %qE not within a switch statement" msgstr "" -#: cp/parser.c:7100 +#: cp/parser.c:7094 #, gcc-internal-format msgid "%Hcase label not within a switch statement" msgstr "" -#: cp/parser.c:7218 +#: cp/parser.c:7212 #, gcc-internal-format msgid "%H%<else%> without a previous %<if%>" msgstr "" -#: cp/parser.c:7697 +#: cp/parser.c:7691 #, gcc-internal-format msgid "%Hbreak statement not within loop or switch" msgstr "" -#: cp/parser.c:7705 cp/parser.c:7725 +#: cp/parser.c:7699 cp/parser.c:7719 #, gcc-internal-format msgid "%Hinvalid exit from OpenMP structured block" msgstr "" -#: cp/parser.c:7708 +#: cp/parser.c:7702 #, gcc-internal-format msgid "%Hbreak statement used with OpenMP for loop" msgstr "" -#: cp/parser.c:7718 +#: cp/parser.c:7712 #, gcc-internal-format msgid "%Hcontinue statement not within a loop" msgstr "" #. Issue a warning about this use of a GNU extension. -#: cp/parser.c:7761 +#: cp/parser.c:7755 #, gcc-internal-format msgid "ISO C++ forbids computed gotos" msgstr "" -#: cp/parser.c:7905 cp/parser.c:15753 +#: cp/parser.c:7899 cp/parser.c:15753 #, gcc-internal-format msgid "extra %<;%>" msgstr "" -#: cp/parser.c:8126 +#: cp/parser.c:8120 #, gcc-internal-format msgid "%H%<__label__%> not at the beginning of a block" msgstr "" -#: cp/parser.c:8263 +#: cp/parser.c:8257 #, gcc-internal-format msgid "%Hmixing declarations and function-definitions is forbidden" msgstr "" -#: cp/parser.c:8403 +#: cp/parser.c:8397 #, gcc-internal-format msgid "%H%<friend%> used outside of class" msgstr "" -#: cp/parser.c:8459 +#: cp/parser.c:8453 #, gcc-internal-format msgid "%H%<auto%> will change meaning in C++0x; please remove it" msgstr "" -#: cp/parser.c:8578 +#: cp/parser.c:8572 #, gcc-internal-format msgid "%Hclass definition may not be declared a friend" msgstr "" -#: cp/parser.c:8648 cp/parser.c:16075 +#: cp/parser.c:8642 cp/parser.c:16075 #, gcc-internal-format msgid "%Htemplates may not be %<virtual%>" msgstr "" -#: cp/parser.c:9051 +#: cp/parser.c:9045 #, gcc-internal-format msgid "invalid use of %<auto%> in conversion operator" msgstr "" -#: cp/parser.c:9135 +#: cp/parser.c:9129 #, gcc-internal-format msgid "%Honly constructors take base initializers" msgstr "" -#: cp/parser.c:9157 +#: cp/parser.c:9151 #, gcc-internal-format msgid "%Hcannot expand initializer for member %<%D%>" msgstr "" -#: cp/parser.c:9212 +#: cp/parser.c:9206 #, gcc-internal-format msgid "anachronistic old-style base class initializer" msgstr "" -#: cp/parser.c:9272 +#: cp/parser.c:9266 #, gcc-internal-format msgid "" "%Hkeyword %<typename%> not allowed in this context (a qualified member " @@ -32310,54 +32734,59 @@ msgid "" msgstr "" #. Warn that we do not support `export'. -#: cp/parser.c:9618 +#: cp/parser.c:9612 #, gcc-internal-format msgid "keyword %<export%> not implemented, and will be ignored" msgstr "" -#: cp/parser.c:9800 cp/parser.c:9898 cp/parser.c:10004 +#: cp/parser.c:9794 cp/parser.c:9892 cp/parser.c:9998 #, gcc-internal-format msgid "%Htemplate parameter pack %qD cannot have a default argument" msgstr "" -#: cp/parser.c:9803 +#: cp/parser.c:9797 #, gcc-internal-format msgid "%Htemplate parameter pack cannot have a default argument" msgstr "" -#: cp/parser.c:9901 cp/parser.c:10008 +#: cp/parser.c:9895 cp/parser.c:10002 #, gcc-internal-format msgid "%Htemplate parameter packs cannot have default arguments" msgstr "" -#: cp/parser.c:10150 +#: cp/parser.c:10144 #, gcc-internal-format msgid "%<<::%> cannot begin a template-argument list" msgstr "" -#: cp/parser.c:10154 +#: cp/parser.c:10148 #, gcc-internal-format msgid "" "%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> " "and %<::%>" msgstr "" -#: cp/parser.c:10232 +#: cp/parser.c:10226 #, gcc-internal-format msgid "%Hparse error in template argument list" msgstr "" #. Explain what went wrong. -#: cp/parser.c:10347 +#: cp/parser.c:10341 #, gcc-internal-format msgid "%Hnon-template %qD used as template" msgstr "" -#: cp/parser.c:10349 +#: cp/parser.c:10343 #, gcc-internal-format msgid "use %<%T::template %D%> to indicate that it is a template" msgstr "" +#: cp/parser.c:10476 +#, gcc-internal-format +msgid "%Hexpected parameter pack before %<...%>" +msgstr "" + #: cp/parser.c:10886 #, gcc-internal-format msgid "%Htemplate specialization with C linkage" @@ -32562,12 +32991,12 @@ msgid "" "implicitly a type)" msgstr "" -#: cp/parser.c:17360 +#: cp/parser.c:17365 #, gcc-internal-format msgid "specializing member %<%T::%E%> requires %<template<>%> syntax" msgstr "" -#: cp/parser.c:17365 +#: cp/parser.c:17370 #, gcc-internal-format msgid "too few template-parameter-lists" msgstr "" @@ -32576,13 +33005,13 @@ msgstr "" #. something like: #. #. template <class T> template <class U> void S::f(); -#: cp/parser.c:17372 +#: cp/parser.c:17377 #, gcc-internal-format msgid "%Htoo many template-parameter-lists" msgstr "" #. Issue an error message. -#: cp/parser.c:17646 +#: cp/parser.c:17651 #, gcc-internal-format msgid "%Hnamed return values are no longer supported" msgstr "" @@ -32590,169 +33019,169 @@ msgstr "" #. 14.5.2.2 [temp.mem] #. #. A local class shall not have member templates. -#: cp/parser.c:17721 +#: cp/parser.c:17726 #, gcc-internal-format msgid "%Hinvalid declaration of member template in local class" msgstr "" -#: cp/parser.c:17731 +#: cp/parser.c:17736 #, gcc-internal-format msgid "%Htemplate with C linkage" msgstr "" -#: cp/parser.c:17878 +#: cp/parser.c:17883 #, gcc-internal-format msgid "%Htemplate declaration of %qs" msgstr "" -#: cp/parser.c:17942 +#: cp/parser.c:17947 #, gcc-internal-format msgid "%Hexplicit template specialization cannot have a storage class" msgstr "" -#: cp/parser.c:18160 +#: cp/parser.c:18165 #, gcc-internal-format msgid "%H%<>>%> should be %<> >%> within a nested template argument list" msgstr "" -#: cp/parser.c:18173 +#: cp/parser.c:18178 #, gcc-internal-format msgid "%Hspurious %<>>%>, use %<>%> to terminate a template argument list" msgstr "" -#: cp/parser.c:18507 +#: cp/parser.c:18512 #, gcc-internal-format msgid "%Hinvalid use of %qD in linkage specification" msgstr "" -#: cp/parser.c:18520 +#: cp/parser.c:18525 #, gcc-internal-format msgid "%H%<__thread%> before %qD" msgstr "" -#: cp/parser.c:18841 +#: cp/parser.c:18846 #, gcc-internal-format msgid "%qs tag used in naming %q#T" msgstr "" -#: cp/parser.c:18862 +#: cp/parser.c:18867 #, gcc-internal-format msgid "%H%qD redeclared with different access" msgstr "" -#: cp/parser.c:18880 +#: cp/parser.c:18885 #, gcc-internal-format msgid "%H%<template%> (as a disambiguator) is only allowed within templates" msgstr "" -#: cp/parser.c:19146 cp/parser.c:20073 cp/parser.c:20205 +#: cp/parser.c:19151 cp/parser.c:20078 cp/parser.c:20210 #, gcc-internal-format msgid "%Hmisplaced %<@%D%> Objective-C++ construct" msgstr "" -#: cp/parser.c:19290 +#: cp/parser.c:19295 #, gcc-internal-format msgid "%H%<@encode%> must specify a type as an argument" msgstr "" -#: cp/parser.c:19606 +#: cp/parser.c:19611 #, gcc-internal-format msgid "%Hinvalid Objective-C++ selector name" msgstr "" -#: cp/parser.c:19937 +#: cp/parser.c:19942 #, gcc-internal-format msgid "%Hidentifier expected after %<@protocol%>" msgstr "" -#: cp/parser.c:20298 +#: cp/parser.c:20303 #, gcc-internal-format msgid "%Htoo many %qs clauses" msgstr "" -#: cp/parser.c:20412 +#: cp/parser.c:20417 #, gcc-internal-format msgid "%Hcollapse argument needs positive constant integer expression" msgstr "" -#: cp/parser.c:20701 +#: cp/parser.c:20706 #, gcc-internal-format msgid "%Hschedule %<runtime%> does not take a %<chunk_size%> parameter" msgstr "" -#: cp/parser.c:20704 +#: cp/parser.c:20709 #, gcc-internal-format msgid "%Hschedule %<auto%> does not take a %<chunk_size%> parameter" msgstr "" -#: cp/parser.c:20852 +#: cp/parser.c:20857 #, gcc-internal-format msgid "%H%qs is not valid for %qs" msgstr "" -#: cp/parser.c:21275 +#: cp/parser.c:21280 #, gcc-internal-format msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop" msgstr "" -#: cp/parser.c:21400 cp/parser.c:21438 +#: cp/parser.c:21405 cp/parser.c:21443 #, gcc-internal-format msgid "%Hiteration variable %qD should not be firstprivate" msgstr "" -#: cp/parser.c:21442 +#: cp/parser.c:21447 #, gcc-internal-format msgid "%Hiteration variable %qD should not be reduction" msgstr "" -#: cp/parser.c:21509 +#: cp/parser.c:21514 #, gcc-internal-format msgid "%Hnot enough collapsed for loops" msgstr "" -#: cp/parser.c:21555 +#: cp/parser.c:21560 #, gcc-internal-format msgid "%Hcollapsed loops not perfectly nested" msgstr "" -#: cp/parser.c:21966 +#: cp/parser.c:21971 #, gcc-internal-format msgid "%Hjunk at end of %<#pragma GCC pch_preprocess%>" msgstr "" -#: cp/parser.c:21970 +#: cp/parser.c:21975 #, gcc-internal-format msgid "%Hexpected string literal" msgstr "" -#: cp/parser.c:22003 +#: cp/parser.c:22008 #, gcc-internal-format msgid "%H%<#pragma GCC pch_preprocess%> must be first" msgstr "" -#: cp/parser.c:22014 +#: cp/parser.c:22019 #, gcc-internal-format msgid "%H%<#pragma omp barrier%> may only be used in compound statements" msgstr "" -#: cp/parser.c:22029 +#: cp/parser.c:22034 #, gcc-internal-format msgid "%H%<#pragma omp flush%> may only be used in compound statements" msgstr "" -#: cp/parser.c:22044 +#: cp/parser.c:22049 #, gcc-internal-format msgid "%H%<#pragma omp taskwait%> may only be used in compound statements" msgstr "" -#: cp/parser.c:22072 +#: cp/parser.c:22077 #, gcc-internal-format msgid "" "%H%<#pragma omp section%> may only be used in %<#pragma omp sections%> " "construct" msgstr "" -#: cp/parser.c:22130 +#: cp/parser.c:22135 #, gcc-internal-format msgid "inter-module optimizations not implemented for C++" msgstr "" @@ -33349,211 +33778,211 @@ msgstr "" msgid "creating pointer to member function of non-class type %qT" msgstr "" -#: cp/pt.c:9203 +#: cp/pt.c:9211 #, gcc-internal-format msgid "array bound is not an integer constant" msgstr "" -#: cp/pt.c:9223 +#: cp/pt.c:9231 #, gcc-internal-format msgid "creating array with negative size (%qE)" msgstr "" -#: cp/pt.c:9472 +#: cp/pt.c:9480 #, gcc-internal-format msgid "forming reference to void" msgstr "" -#: cp/pt.c:9474 +#: cp/pt.c:9482 #, gcc-internal-format msgid "forming %s to reference type %qT" msgstr "" -#: cp/pt.c:9525 +#: cp/pt.c:9533 #, gcc-internal-format msgid "creating pointer to member of non-class type %qT" msgstr "" -#: cp/pt.c:9531 +#: cp/pt.c:9539 #, gcc-internal-format msgid "creating pointer to member reference type %qT" msgstr "" -#: cp/pt.c:9537 +#: cp/pt.c:9545 #, gcc-internal-format msgid "creating pointer to member of type void" msgstr "" -#: cp/pt.c:9604 +#: cp/pt.c:9612 #, gcc-internal-format msgid "creating array of %qT" msgstr "" -#: cp/pt.c:9610 +#: cp/pt.c:9618 #, gcc-internal-format msgid "creating array of %qT, which is an abstract class type" msgstr "" -#: cp/pt.c:9661 +#: cp/pt.c:9669 #, gcc-internal-format msgid "%qT is not a class, struct, or union type" msgstr "" -#: cp/pt.c:9696 +#: cp/pt.c:9704 #, gcc-internal-format msgid "%qT resolves to %qT, which is not an enumeration type" msgstr "" -#: cp/pt.c:9699 +#: cp/pt.c:9707 #, gcc-internal-format msgid "%qT resolves to %qT, which is is not a class type" msgstr "" -#: cp/pt.c:9805 +#: cp/pt.c:9813 #, gcc-internal-format msgid "use of %qs in template" msgstr "" -#: cp/pt.c:9942 +#: cp/pt.c:9950 #, gcc-internal-format msgid "" "dependent-name %qE is parsed as a non-type, but instantiation yields a type" msgstr "" -#: cp/pt.c:9944 +#: cp/pt.c:9952 #, gcc-internal-format msgid "say %<typename %E%> if a type is meant" msgstr "" -#: cp/pt.c:10086 +#: cp/pt.c:10098 #, gcc-internal-format msgid "using invalid field %qD" msgstr "" -#: cp/pt.c:10416 cp/pt.c:11079 +#: cp/pt.c:10428 cp/pt.c:11091 #, gcc-internal-format msgid "invalid use of pack expansion expression" msgstr "" -#: cp/pt.c:10420 cp/pt.c:11083 +#: cp/pt.c:10432 cp/pt.c:11095 #, gcc-internal-format msgid "use %<...%> to expand argument pack" msgstr "" -#: cp/pt.c:10575 +#: cp/pt.c:10587 #, gcc-internal-format msgid "iteration variable %qD should not be reduction" msgstr "" -#: cp/pt.c:11243 +#: cp/pt.c:11255 #, gcc-internal-format msgid "" "a cast to a type other than an integral or enumeration type cannot appear in " "a constant-expression" msgstr "" -#: cp/pt.c:11711 +#: cp/pt.c:11723 #, gcc-internal-format msgid "%qT is not a class or namespace" msgstr "" -#: cp/pt.c:11714 +#: cp/pt.c:11726 #, gcc-internal-format msgid "%qD is not a class or namespace" msgstr "" -#: cp/pt.c:11934 +#: cp/pt.c:11946 #, gcc-internal-format msgid "%qT is/uses anonymous type" msgstr "" -#: cp/pt.c:11936 +#: cp/pt.c:11948 #, gcc-internal-format msgid "template argument for %qD uses local type %qT" msgstr "" -#: cp/pt.c:11946 +#: cp/pt.c:11958 #, gcc-internal-format msgid "%qT is a variably modified type" msgstr "" -#: cp/pt.c:11957 +#: cp/pt.c:11969 #, gcc-internal-format msgid "integral expression %qE is not constant" msgstr "" -#: cp/pt.c:11975 +#: cp/pt.c:11987 #, gcc-internal-format msgid " trying to instantiate %qD" msgstr "" -#: cp/pt.c:14803 +#: cp/pt.c:14822 #, gcc-internal-format msgid "ambiguous class template instantiation for %q#T" msgstr "" -#: cp/pt.c:14806 +#: cp/pt.c:14825 #, gcc-internal-format msgid "%s %+#T" msgstr "" -#: cp/pt.c:14829 cp/pt.c:14912 +#: cp/pt.c:14848 cp/pt.c:14931 #, gcc-internal-format msgid "explicit instantiation of non-template %q#D" msgstr "" -#: cp/pt.c:14844 +#: cp/pt.c:14863 #, gcc-internal-format msgid "%qD is not a static data member of a class template" msgstr "" -#: cp/pt.c:14850 cp/pt.c:14907 +#: cp/pt.c:14869 cp/pt.c:14926 #, gcc-internal-format msgid "no matching template for %qD found" msgstr "" -#: cp/pt.c:14855 +#: cp/pt.c:14874 #, gcc-internal-format msgid "" "type %qT for explicit instantiation %qD does not match declared type %qT" msgstr "" -#: cp/pt.c:14863 +#: cp/pt.c:14882 #, gcc-internal-format msgid "explicit instantiation of %q#D" msgstr "" -#: cp/pt.c:14899 +#: cp/pt.c:14918 #, gcc-internal-format msgid "duplicate explicit instantiation of %q#D" msgstr "" -#: cp/pt.c:14922 cp/pt.c:15014 +#: cp/pt.c:14941 cp/pt.c:15033 #, gcc-internal-format msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations" msgstr "" -#: cp/pt.c:14927 cp/pt.c:15031 +#: cp/pt.c:14946 cp/pt.c:15050 #, gcc-internal-format msgid "storage class %qD applied to template instantiation" msgstr "" -#: cp/pt.c:14992 +#: cp/pt.c:15011 #, gcc-internal-format msgid "explicit instantiation of non-template type %qT" msgstr "" -#: cp/pt.c:15001 +#: cp/pt.c:15020 #, gcc-internal-format msgid "explicit instantiation of %q#T before definition of template" msgstr "" -#: cp/pt.c:15019 +#: cp/pt.c:15038 #, gcc-internal-format msgid "ISO C++ forbids the use of %qE on explicit instantiations" msgstr "" -#: cp/pt.c:15065 +#: cp/pt.c:15084 #, gcc-internal-format msgid "duplicate explicit instantiation of %q#T" msgstr "" @@ -33565,12 +33994,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:15515 +#: cp/pt.c:15534 #, gcc-internal-format msgid "explicit instantiation of %qD but no definition available" msgstr "" -#: cp/pt.c:15681 +#: cp/pt.c:15700 #, gcc-internal-format msgid "" "template instantiation depth exceeds maximum of %d instantiating %q+D, " @@ -33578,19 +34007,19 @@ msgid "" "the maximum)" msgstr "" -#: cp/pt.c:16036 +#: cp/pt.c:16055 #, gcc-internal-format msgid "%q#T is not a valid type for a template constant parameter" msgstr "" -#: cp/pt.c:17034 +#: cp/pt.c:17053 #, gcc-internal-format msgid "" "deducing auto from brace-enclosed initializer list requires #include " "<initializer_list>" msgstr "" -#: cp/pt.c:17075 +#: cp/pt.c:17094 #, gcc-internal-format msgid "unable to deduce %qT from %qE" msgstr "" @@ -33610,34 +34039,34 @@ msgstr "" msgid "can't create repository information file %qs" msgstr "" -#: cp/rtti.c:288 +#: cp/rtti.c:287 #, gcc-internal-format msgid "cannot use typeid with -fno-rtti" msgstr "" -#: cp/rtti.c:294 +#: cp/rtti.c:293 #, gcc-internal-format msgid "must #include <typeinfo> before using typeid" msgstr "" -#: cp/rtti.c:377 +#: cp/rtti.c:376 #, gcc-internal-format msgid "" "cannot create type information for type %qT because it involves types of " "variable size" msgstr "" -#: cp/rtti.c:635 cp/rtti.c:650 +#: cp/rtti.c:634 cp/rtti.c:649 #, gcc-internal-format msgid "dynamic_cast of %q#D to %q#T can never succeed" msgstr "" -#: cp/rtti.c:661 +#: cp/rtti.c:660 #, gcc-internal-format msgid "%<dynamic_cast%> not permitted with -fno-rtti" msgstr "" -#: cp/rtti.c:740 +#: cp/rtti.c:739 #, gcc-internal-format msgid "cannot dynamic_cast %qE (of type %q#T) to type %q#T (%s)" msgstr "" @@ -33714,251 +34143,251 @@ msgstr "" msgid " since %q+#D declared in base class" msgstr "" -#: cp/semantics.c:761 +#: cp/semantics.c:760 #, gcc-internal-format msgid "suggest explicit braces around empty body in %<do%> statement" msgstr "" -#: cp/semantics.c:1285 +#: cp/semantics.c:1284 #, gcc-internal-format msgid "type of asm operand %qE could not be determined" msgstr "" -#: cp/semantics.c:1341 +#: cp/semantics.c:1340 #, gcc-internal-format msgid "__label__ declarations are only allowed in function scopes" msgstr "" -#: cp/semantics.c:1439 +#: cp/semantics.c:1438 #, gcc-internal-format msgid "invalid use of member %q+D in static member function" msgstr "" -#: cp/semantics.c:1441 +#: cp/semantics.c:1440 #, gcc-internal-format msgid "invalid use of non-static data member %q+D" msgstr "" -#: cp/semantics.c:1442 cp/semantics.c:1484 +#: cp/semantics.c:1441 cp/semantics.c:1483 #, gcc-internal-format msgid "from this location" msgstr "" -#: cp/semantics.c:1483 +#: cp/semantics.c:1482 #, gcc-internal-format msgid "object missing in reference to %q+D" msgstr "" -#: cp/semantics.c:2007 +#: cp/semantics.c:2006 #, gcc-internal-format msgid "arguments to destructor are not allowed" msgstr "" -#: cp/semantics.c:2057 +#: cp/semantics.c:2056 #, gcc-internal-format msgid "%<this%> is unavailable for static member functions" msgstr "" -#: cp/semantics.c:2063 +#: cp/semantics.c:2062 #, gcc-internal-format msgid "invalid use of %<this%> in non-member function" msgstr "" -#: cp/semantics.c:2065 +#: cp/semantics.c:2064 #, gcc-internal-format msgid "invalid use of %<this%> at top level" msgstr "" -#: cp/semantics.c:2089 +#: cp/semantics.c:2088 #, gcc-internal-format msgid "invalid qualifying scope in pseudo-destructor name" msgstr "" -#: cp/semantics.c:2094 cp/typeck.c:2130 +#: cp/semantics.c:2093 cp/typeck.c:2130 #, gcc-internal-format msgid "qualified type %qT does not match destructor name ~%qT" msgstr "" -#: cp/semantics.c:2116 +#: cp/semantics.c:2115 #, gcc-internal-format msgid "%qE is not of type %qT" msgstr "" -#: cp/semantics.c:2160 +#: cp/semantics.c:2159 #, gcc-internal-format msgid "compound literal of non-object type %qT" msgstr "" -#: cp/semantics.c:2244 +#: cp/semantics.c:2243 #, gcc-internal-format msgid "template type parameters must use the keyword %<class%> or %<typename%>" msgstr "" -#: cp/semantics.c:2285 +#: cp/semantics.c:2284 #, gcc-internal-format msgid "" "invalid use of type %qT as a default value for a template template-parameter" msgstr "" -#: cp/semantics.c:2288 +#: cp/semantics.c:2287 #, gcc-internal-format msgid "invalid default argument for a template template parameter" msgstr "" -#: cp/semantics.c:2305 +#: cp/semantics.c:2304 #, gcc-internal-format msgid "definition of %q#T inside template parameter list" msgstr "" -#: cp/semantics.c:2316 +#: cp/semantics.c:2315 #, gcc-internal-format msgid "invalid definition of qualified type %qT" msgstr "" -#: cp/semantics.c:2532 +#: cp/semantics.c:2531 #, gcc-internal-format msgid "invalid base-class specification" msgstr "" -#: cp/semantics.c:2544 +#: cp/semantics.c:2543 #, gcc-internal-format msgid "base class %qT has cv qualifiers" msgstr "" -#: cp/semantics.c:2569 +#: cp/semantics.c:2568 #, gcc-internal-format msgid "%Hincomplete type %qT used in nested name specifier" msgstr "" -#: cp/semantics.c:2573 +#: cp/semantics.c:2572 #, gcc-internal-format msgid "%Hreference to %<%T::%D%> is ambiguous" msgstr "" -#: cp/semantics.c:2577 +#: cp/semantics.c:2576 #, gcc-internal-format msgid "%H%qD is not a member of %qT" msgstr "" -#: cp/semantics.c:2580 +#: cp/semantics.c:2579 #, gcc-internal-format msgid "%H%qD is not a member of %qD" msgstr "" -#: cp/semantics.c:2582 +#: cp/semantics.c:2581 #, gcc-internal-format msgid "%H%<::%D%> has not been declared" msgstr "" -#: cp/semantics.c:2723 +#: cp/semantics.c:2722 #, gcc-internal-format msgid "use of %<auto%> variable from containing function" msgstr "" -#: cp/semantics.c:2725 +#: cp/semantics.c:2724 #, gcc-internal-format msgid " %q+#D declared here" msgstr "" -#: cp/semantics.c:2763 +#: cp/semantics.c:2762 #, 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:2927 +#: cp/semantics.c:2926 #, gcc-internal-format msgid "%qD cannot appear in a constant-expression" msgstr "" -#: cp/semantics.c:2935 +#: cp/semantics.c:2934 #, gcc-internal-format msgid "use of namespace %qD as expression" msgstr "" -#: cp/semantics.c:2940 +#: cp/semantics.c:2939 #, gcc-internal-format msgid "use of class template %qT as expression" msgstr "" #. Ambiguous reference to base members. -#: cp/semantics.c:2946 +#: cp/semantics.c:2945 #, gcc-internal-format msgid "request for member %qD is ambiguous in multiple inheritance lattice" msgstr "" -#: cp/semantics.c:3068 cp/semantics.c:4798 +#: cp/semantics.c:3067 cp/semantics.c:4798 #, gcc-internal-format msgid "type of %qE is unknown" msgstr "" -#: cp/semantics.c:3083 +#: cp/semantics.c:3082 #, gcc-internal-format msgid "cannot apply %<offsetof%> to destructor %<~%T%>" msgstr "" -#: cp/semantics.c:3094 +#: cp/semantics.c:3093 #, gcc-internal-format msgid "cannot apply %<offsetof%> to member function %qD" msgstr "" -#: cp/semantics.c:3539 +#: cp/semantics.c:3538 #, gcc-internal-format msgid "%qD is not a variable in clause %qs" msgstr "" -#: cp/semantics.c:3548 cp/semantics.c:3570 cp/semantics.c:3592 +#: cp/semantics.c:3547 cp/semantics.c:3569 cp/semantics.c:3591 #, gcc-internal-format msgid "%qD appears more than once in data clauses" msgstr "" -#: cp/semantics.c:3562 +#: cp/semantics.c:3561 #, gcc-internal-format msgid "%qD is not a variable in clause %<firstprivate%>" msgstr "" -#: cp/semantics.c:3584 +#: cp/semantics.c:3583 #, gcc-internal-format msgid "%qD is not a variable in clause %<lastprivate%>" msgstr "" -#: cp/semantics.c:3614 +#: cp/semantics.c:3613 #, gcc-internal-format msgid "num_threads expression must be integral" msgstr "" -#: cp/semantics.c:3628 +#: cp/semantics.c:3627 #, gcc-internal-format msgid "schedule chunk size expression must be integral" msgstr "" -#: cp/semantics.c:3760 +#: cp/semantics.c:3759 #, gcc-internal-format msgid "%qE has reference type for %qs" msgstr "" -#: cp/semantics.c:3831 +#: cp/semantics.c:3830 #, gcc-internal-format msgid "%<threadprivate%> %qD is not file, namespace or block scope variable" msgstr "" -#: cp/semantics.c:3845 +#: cp/semantics.c:3844 #, gcc-internal-format msgid "%<threadprivate%> %qE directive not in %qT definition" msgstr "" -#: cp/semantics.c:3980 +#: cp/semantics.c:3979 #, gcc-internal-format msgid "%Hinvalid controlling predicate" msgstr "" -#: cp/semantics.c:3990 +#: cp/semantics.c:3989 #, gcc-internal-format msgid "%Hdifference between %qE and %qD does not have integer type" msgstr "" -#: cp/semantics.c:4085 +#: cp/semantics.c:4084 #, gcc-internal-format msgid "%Hinvalid increment expression" msgstr "" @@ -34024,43 +34453,43 @@ msgstr "" msgid "%qV qualifiers cannot be applied to %qT" msgstr "" -#: cp/tree.c:2216 +#: cp/tree.c:2230 #, gcc-internal-format msgid "%qE attribute can only be applied to Java class definitions" msgstr "" -#: cp/tree.c:2245 +#: cp/tree.c:2259 #, gcc-internal-format msgid "%qE attribute can only be applied to class definitions" msgstr "" -#: cp/tree.c:2251 +#: cp/tree.c:2265 #, gcc-internal-format msgid "%qE is obsolete; g++ vtables are now COM-compatible by default" msgstr "" -#: cp/tree.c:2275 +#: cp/tree.c:2289 #, gcc-internal-format msgid "requested init_priority is not an integer constant" msgstr "" -#: cp/tree.c:2296 +#: cp/tree.c:2310 #, gcc-internal-format msgid "" "can only use %qE attribute on file-scope definitions of objects of class type" msgstr "" -#: cp/tree.c:2304 +#: cp/tree.c:2318 #, gcc-internal-format msgid "requested init_priority is out of range" msgstr "" -#: cp/tree.c:2314 +#: cp/tree.c:2328 #, gcc-internal-format msgid "requested init_priority is reserved for internal use" msgstr "" -#: cp/tree.c:2325 +#: cp/tree.c:2339 #, gcc-internal-format msgid "%qE attribute is not supported on this platform" msgstr "" @@ -34469,42 +34898,47 @@ msgstr "" msgid "%s expression list treated as compound expression" msgstr "" -#: cp/typeck.c:5064 +#: cp/typeck.c:5039 +#, gcc-internal-format +msgid "no context to resolve type of %qE" +msgstr "" + +#: cp/typeck.c:5070 #, gcc-internal-format msgid "cast from type %qT to type %qT casts away qualifiers" msgstr "" -#: cp/typeck.c:5069 +#: cp/typeck.c:5075 #, gcc-internal-format msgid "static_cast from type %qT to type %qT casts away qualifiers" msgstr "" -#: cp/typeck.c:5074 +#: cp/typeck.c:5080 #, gcc-internal-format msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers" msgstr "" -#: cp/typeck.c:5394 +#: cp/typeck.c:5400 #, gcc-internal-format msgid "invalid static_cast from type %qT to type %qT" msgstr "" -#: cp/typeck.c:5417 +#: cp/typeck.c:5423 #, gcc-internal-format msgid "converting from %qT to %qT" msgstr "" -#: cp/typeck.c:5466 +#: cp/typeck.c:5472 #, gcc-internal-format msgid "invalid cast of an rvalue expression of type %qT to type %qT" msgstr "" -#: cp/typeck.c:5528 +#: cp/typeck.c:5534 #, gcc-internal-format msgid "cast from %qT to %qT loses precision" msgstr "" -#: cp/typeck.c:5558 +#: cp/typeck.c:5564 #, gcc-internal-format msgid "cast from %qT to %qT increases required alignment of target type" msgstr "" @@ -34513,160 +34947,160 @@ msgstr "" #. where possible, and it is necessary in some cases. DR 195 #. addresses this issue, but as of 2004/10/26 is still in #. drafting. -#: cp/typeck.c:5577 +#: cp/typeck.c:5583 #, gcc-internal-format msgid "" "ISO C++ forbids casting between pointer-to-function and pointer-to-object" msgstr "" -#: cp/typeck.c:5589 +#: cp/typeck.c:5595 #, gcc-internal-format msgid "invalid cast from type %qT to type %qT" msgstr "" -#: cp/typeck.c:5645 +#: cp/typeck.c:5651 #, 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:5654 +#: cp/typeck.c:5660 #, 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:5679 +#: cp/typeck.c:5685 #, gcc-internal-format msgid "invalid const_cast of an rvalue of type %qT to type %qT" msgstr "" -#: cp/typeck.c:5728 +#: cp/typeck.c:5734 #, gcc-internal-format msgid "invalid const_cast from type %qT to type %qT" msgstr "" -#: cp/typeck.c:5805 cp/typeck.c:5813 +#: cp/typeck.c:5811 cp/typeck.c:5819 #, gcc-internal-format msgid "ISO C++ forbids casting to an array type %qT" msgstr "" -#: cp/typeck.c:5822 +#: cp/typeck.c:5828 #, gcc-internal-format msgid "invalid cast to function type %qT" msgstr "" -#: cp/typeck.c:6062 +#: cp/typeck.c:6069 #, gcc-internal-format msgid " in evaluation of %<%Q(%#T, %#T)%>" msgstr "" -#: cp/typeck.c:6113 +#: cp/typeck.c:6120 #, gcc-internal-format msgid "incompatible types in assignment of %qT to %qT" msgstr "" -#: cp/typeck.c:6126 +#: cp/typeck.c:6133 #, gcc-internal-format msgid "array used as initializer" msgstr "" -#: cp/typeck.c:6128 +#: cp/typeck.c:6135 #, gcc-internal-format msgid "invalid array assignment" msgstr "" -#: cp/typeck.c:6226 +#: cp/typeck.c:6233 #, gcc-internal-format msgid " in pointer to member function conversion" msgstr "" -#: cp/typeck.c:6237 +#: cp/typeck.c:6244 #, gcc-internal-format msgid "pointer to member conversion via virtual base %qT" msgstr "" -#: cp/typeck.c:6277 cp/typeck.c:6289 +#: cp/typeck.c:6284 cp/typeck.c:6296 #, gcc-internal-format msgid " in pointer to member conversion" msgstr "" -#: cp/typeck.c:6367 +#: cp/typeck.c:6374 #, gcc-internal-format msgid "invalid conversion to type %qT from type %qT" msgstr "" -#: cp/typeck.c:6638 +#: cp/typeck.c:6645 #, gcc-internal-format msgid "cannot convert %qT to %qT for argument %qP to %qD" msgstr "" -#: cp/typeck.c:6641 +#: cp/typeck.c:6648 #, gcc-internal-format msgid "cannot convert %qT to %qT in %s" msgstr "" -#: cp/typeck.c:6655 +#: cp/typeck.c:6662 #, gcc-internal-format msgid "%s might be a candidate for a format attribute" msgstr "" -#: cp/typeck.c:6744 cp/typeck.c:6746 +#: cp/typeck.c:6751 cp/typeck.c:6753 #, gcc-internal-format msgid "in passing argument %P of %q+D" msgstr "" -#: cp/typeck.c:6796 +#: cp/typeck.c:6803 #, gcc-internal-format msgid "returning reference to temporary" msgstr "" -#: cp/typeck.c:6803 +#: cp/typeck.c:6810 #, gcc-internal-format msgid "reference to non-lvalue returned" msgstr "" -#: cp/typeck.c:6819 +#: cp/typeck.c:6826 #, gcc-internal-format msgid "reference to local variable %q+D returned" msgstr "" -#: cp/typeck.c:6822 +#: cp/typeck.c:6829 #, gcc-internal-format msgid "address of local variable %q+D returned" msgstr "" -#: cp/typeck.c:6857 +#: cp/typeck.c:6864 #, 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:6865 +#: cp/typeck.c:6872 #, 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:6868 +#: cp/typeck.c:6875 #, gcc-internal-format msgid "returning a value from a constructor" msgstr "" -#: cp/typeck.c:6893 +#: cp/typeck.c:6900 #, gcc-internal-format msgid "return-statement with no value, in function returning %qT" msgstr "" -#: cp/typeck.c:6914 +#: cp/typeck.c:6921 #, gcc-internal-format msgid "return-statement with a value, in function returning 'void'" msgstr "" -#: cp/typeck.c:6944 +#: cp/typeck.c:6951 #, gcc-internal-format msgid "" "%<operator new%> must not return NULL unless it is declared %<throw()%> (or -" @@ -34703,208 +35137,208 @@ msgstr "" msgid "%s of read-only location %qE" msgstr "" -#: cp/typeck2.c:288 +#: cp/typeck2.c:287 #, gcc-internal-format msgid "cannot declare variable %q+D to be of abstract type %qT" msgstr "" -#: cp/typeck2.c:291 +#: cp/typeck2.c:290 #, gcc-internal-format msgid "cannot declare parameter %q+D to be of abstract type %qT" msgstr "" -#: cp/typeck2.c:294 +#: cp/typeck2.c:293 #, gcc-internal-format msgid "cannot declare field %q+D to be of abstract type %qT" msgstr "" -#: cp/typeck2.c:298 +#: cp/typeck2.c:297 #, gcc-internal-format msgid "invalid abstract return type for member function %q+#D" msgstr "" -#: cp/typeck2.c:300 +#: cp/typeck2.c:299 #, gcc-internal-format msgid "invalid abstract return type for function %q+#D" msgstr "" #. Here we do not have location information. -#: cp/typeck2.c:303 +#: cp/typeck2.c:302 #, gcc-internal-format msgid "invalid abstract type %qT for %qE" msgstr "" -#: cp/typeck2.c:305 +#: cp/typeck2.c:304 #, gcc-internal-format msgid "invalid abstract type for %q+D" msgstr "" -#: cp/typeck2.c:308 +#: cp/typeck2.c:307 #, gcc-internal-format msgid "cannot allocate an object of abstract type %qT" msgstr "" -#: cp/typeck2.c:316 +#: cp/typeck2.c:315 #, gcc-internal-format msgid "%J because the following virtual functions are pure within %qT:" msgstr "" -#: cp/typeck2.c:320 +#: cp/typeck2.c:319 #, gcc-internal-format msgid "\t%+#D" msgstr "" -#: cp/typeck2.c:327 +#: cp/typeck2.c:326 #, gcc-internal-format msgid "%J since type %qT has pure virtual functions" msgstr "" -#: cp/typeck2.c:607 +#: cp/typeck2.c:606 #, gcc-internal-format msgid "constructor syntax used, but no constructor declared for type %qT" msgstr "" -#: cp/typeck2.c:621 +#: cp/typeck2.c:620 #, gcc-internal-format msgid "cannot initialize arrays using this syntax" msgstr "" -#: cp/typeck2.c:707 +#: cp/typeck2.c:706 #, gcc-internal-format msgid "narrowing conversion of %qE from %qT to %qT inside { }" msgstr "" -#: cp/typeck2.c:765 +#: cp/typeck2.c:764 #, gcc-internal-format msgid "int-array initialized from non-wide string" msgstr "" -#: cp/typeck2.c:770 +#: cp/typeck2.c:769 #, gcc-internal-format msgid "int-array initialized from incompatible wide string" msgstr "" -#: cp/typeck2.c:831 +#: cp/typeck2.c:830 #, gcc-internal-format msgid "cannot initialize aggregate of type %qT with a compound literal" msgstr "" -#: cp/typeck2.c:840 +#: cp/typeck2.c:839 #, gcc-internal-format msgid "array must be initialized with a brace-enclosed initializer" msgstr "" -#: cp/typeck2.c:922 cp/typeck2.c:1030 +#: cp/typeck2.c:921 cp/typeck2.c:1029 #, gcc-internal-format msgid "non-trivial designated initializers not supported" msgstr "" -#: cp/typeck2.c:1054 cp/typeck2.c:1068 +#: cp/typeck2.c:1053 cp/typeck2.c:1067 #, gcc-internal-format msgid "missing initializer for member %qD" msgstr "" -#: cp/typeck2.c:1059 +#: cp/typeck2.c:1058 #, gcc-internal-format msgid "uninitialized const member %qD" msgstr "" -#: cp/typeck2.c:1061 +#: cp/typeck2.c:1060 #, gcc-internal-format msgid "member %qD with uninitialized const fields" msgstr "" -#: cp/typeck2.c:1063 +#: cp/typeck2.c:1062 #, gcc-internal-format msgid "member %qD is uninitialized reference" msgstr "" -#: cp/typeck2.c:1131 +#: cp/typeck2.c:1130 #, gcc-internal-format msgid "no field %qD found in union being initialized" msgstr "" -#: cp/typeck2.c:1140 +#: cp/typeck2.c:1139 #, gcc-internal-format msgid "index value instead of field name in union initializer" msgstr "" -#: cp/typeck2.c:1299 +#: cp/typeck2.c:1298 #, gcc-internal-format msgid "circular pointer delegation detected" msgstr "" -#: cp/typeck2.c:1312 +#: cp/typeck2.c:1311 #, gcc-internal-format msgid "base operand of %<->%> has non-pointer type %qT" msgstr "" -#: cp/typeck2.c:1336 +#: cp/typeck2.c:1335 #, gcc-internal-format msgid "result of %<operator->()%> yields non-pointer result" msgstr "" -#: cp/typeck2.c:1338 +#: cp/typeck2.c:1337 #, gcc-internal-format msgid "base operand of %<->%> is not a pointer" msgstr "" -#: cp/typeck2.c:1360 +#: cp/typeck2.c:1359 #, gcc-internal-format msgid "%qE cannot be used as a member pointer, since it is of type %qT" msgstr "" -#: cp/typeck2.c:1369 +#: cp/typeck2.c:1368 #, gcc-internal-format msgid "cannot apply member pointer %qE to %qE, which is of non-class type %qT" msgstr "" -#: cp/typeck2.c:1391 +#: cp/typeck2.c:1390 #, gcc-internal-format msgid "pointer to member type %qT incompatible with object type %qT" msgstr "" -#: cp/typeck2.c:1451 +#: cp/typeck2.c:1450 #, gcc-internal-format msgid "invalid value-initialization of reference types" msgstr "" -#: cp/typeck2.c:1638 +#: cp/typeck2.c:1637 #, gcc-internal-format msgid "call to function %qD which throws incomplete type %q#T" msgstr "" -#: cp/typeck2.c:1641 +#: cp/typeck2.c:1640 #, gcc-internal-format msgid "call to function which throws incomplete type %q#T" msgstr "" -#: fortran/f95-lang.c:211 +#: fortran/f95-lang.c:208 #, gcc-internal-format msgid "Unexpected type in truthvalue_conversion" msgstr "" -#: fortran/f95-lang.c:273 +#: fortran/f95-lang.c:270 #, gcc-internal-format msgid "can't open input file: %s" msgstr "" -#: fortran/f95-lang.c:600 +#: fortran/f95-lang.c:596 #, gcc-internal-format msgid "global register variable %qs used in nested function" msgstr "" -#: fortran/f95-lang.c:604 +#: fortran/f95-lang.c:600 #, gcc-internal-format msgid "register variable %qs used in nested function" msgstr "" -#: fortran/f95-lang.c:611 +#: fortran/f95-lang.c:607 #, gcc-internal-format msgid "address of global register variable %qs requested" msgstr "" -#: fortran/f95-lang.c:629 +#: fortran/f95-lang.c:625 #, gcc-internal-format msgid "address of register variable %qs requested" msgstr "" @@ -34914,14 +35348,14 @@ msgstr "" msgid "-fexcess-precision=standard for Fortran" msgstr "" -#: fortran/trans-array.c:5867 +#: fortran/trans-array.c:5870 #, gcc-internal-format msgid "" "Possible frontend bug: Deferred array size without pointer, allocatable " "attribute or derived type without allocatable components." msgstr "" -#: fortran/trans-array.c:6348 +#: fortran/trans-array.c:6351 #, gcc-internal-format msgid "bad expression type during walk (%d)" msgstr "" @@ -34931,27 +35365,27 @@ msgstr "" msgid "gfc_conv_constant_to_tree(): invalid type: %s" msgstr "" -#: fortran/trans-decl.c:1029 +#: fortran/trans-decl.c:1071 #, gcc-internal-format msgid "intrinsic variable which isn't a procedure" msgstr "" -#: fortran/trans-decl.c:3205 +#: fortran/trans-decl.c:3254 #, gcc-internal-format msgid "backend decl for module variable %s already exists" msgstr "" -#: fortran/trans-expr.c:1321 +#: fortran/trans-expr.c:1322 #, gcc-internal-format msgid "Unknown intrinsic op" msgstr "" -#: fortran/trans-intrinsic.c:733 +#: fortran/trans-intrinsic.c:734 #, gcc-internal-format msgid "Intrinsic function %s(%d) not recognized" msgstr "" -#: fortran/trans-io.c:2103 +#: fortran/trans-io.c:2101 #, gcc-internal-format msgid "Bad IO basetype (%d)" msgstr "" @@ -34981,7 +35415,7 @@ msgstr "" msgid "Array element size too big" msgstr "" -#: fortran/trans.c:1234 +#: fortran/trans.c:1241 #, gcc-internal-format msgid "gfc_trans_code(): Bad statement code" msgstr "" @@ -35218,27 +35652,27 @@ msgstr "" msgid "warning: already-compiled .class files ignored with -C" msgstr "" -#: java/lang.c:535 +#: java/lang.c:534 #, gcc-internal-format msgid "-fexcess-precision=standard for Java" msgstr "" -#: java/lang.c:546 +#: java/lang.c:545 #, gcc-internal-format msgid "-findirect-dispatch is incompatible with -freduced-reflection" msgstr "" -#: java/lang.c:549 +#: java/lang.c:548 #, gcc-internal-format msgid "-fjni is incompatible with -freduced-reflection" msgstr "" -#: java/lang.c:560 +#: java/lang.c:559 #, gcc-internal-format msgid "can't do dependency tracking with input from stdin" msgstr "" -#: java/lang.c:576 +#: java/lang.c:575 #, gcc-internal-format msgid "couldn't determine target name for dependency tracking" msgstr "" @@ -35268,256 +35702,266 @@ msgstr "" msgid "bad pc in exception_table" msgstr "" -#: objc/objc-act.c:702 +#: objc/objc-act.c:701 #, gcc-internal-format msgid "%<@end%> must appear in an @implementation context" msgstr "" -#: objc/objc-act.c:731 +#: objc/objc-act.c:730 #, gcc-internal-format msgid "method declaration not in @interface context" msgstr "" -#: objc/objc-act.c:742 +#: objc/objc-act.c:741 #, gcc-internal-format msgid "method definition not in @implementation context" msgstr "" -#: objc/objc-act.c:1171 +#: objc/objc-act.c:990 +#, gcc-internal-format +msgid "class %qs does not implement the %qE protocol" +msgstr "" + +#: objc/objc-act.c:993 +#, gcc-internal-format +msgid "type %qs does not conform to the %qE protocol" +msgstr "" + +#: objc/objc-act.c:1170 #, gcc-internal-format msgid "comparison of distinct Objective-C types lacks a cast" msgstr "" -#: objc/objc-act.c:1175 +#: objc/objc-act.c:1174 #, gcc-internal-format msgid "initialization from distinct Objective-C type" msgstr "" -#: objc/objc-act.c:1179 +#: objc/objc-act.c:1178 #, gcc-internal-format msgid "assignment from distinct Objective-C type" msgstr "" -#: objc/objc-act.c:1183 +#: objc/objc-act.c:1182 #, gcc-internal-format msgid "distinct Objective-C type in return" msgstr "" -#: objc/objc-act.c:1187 +#: objc/objc-act.c:1186 #, gcc-internal-format msgid "passing argument %d of %qE from distinct Objective-C type" msgstr "" -#: objc/objc-act.c:1343 +#: objc/objc-act.c:1342 #, gcc-internal-format -msgid "statically allocated instance of Objective-C class %qs" +msgid "statically allocated instance of Objective-C class %qE" msgstr "" -#: objc/objc-act.c:1420 +#: objc/objc-act.c:1419 #, gcc-internal-format -msgid "protocol %qs has circular dependency" +msgid "protocol %qE has circular dependency" msgstr "" -#: objc/objc-act.c:1445 objc/objc-act.c:6622 +#: objc/objc-act.c:1444 objc/objc-act.c:6619 #, gcc-internal-format -msgid "cannot find protocol declaration for %qs" +msgid "cannot find protocol declaration for %qE" msgstr "" -#: objc/objc-act.c:1909 objc/objc-act.c:3360 objc/objc-act.c:7237 -#: objc/objc-act.c:7573 objc/objc-act.c:7627 objc/objc-act.c:7652 +#: objc/objc-act.c:1908 objc/objc-act.c:3358 objc/objc-act.c:7234 +#: objc/objc-act.c:7568 objc/objc-act.c:7623 objc/objc-act.c:7648 #, gcc-internal-format -msgid "cannot find interface declaration for %qs" +msgid "cannot find interface declaration for %qE" msgstr "" -#: objc/objc-act.c:1913 +#: objc/objc-act.c:1912 #, gcc-internal-format -msgid "interface %qs does not have valid constant string layout" +msgid "interface %qE does not have valid constant string layout" msgstr "" -#: objc/objc-act.c:1918 +#: objc/objc-act.c:1917 #, gcc-internal-format -msgid "cannot find reference tag for class %qs" +msgid "cannot find reference tag for class %qE" msgstr "" -#: objc/objc-act.c:2553 +#: objc/objc-act.c:2552 #, gcc-internal-format msgid "%Hcreating selector for nonexistent method %qE" msgstr "" -#: objc/objc-act.c:2758 +#: objc/objc-act.c:2757 #, gcc-internal-format -msgid "%qs is not an Objective-C class name or alias" +msgid "%qE is not an Objective-C class name or alias" msgstr "" -#: objc/objc-act.c:2886 objc/objc-act.c:2917 objc/objc-act.c:7501 -#: objc/objc-act.c:7802 objc/objc-act.c:7832 +#: objc/objc-act.c:2885 objc/objc-act.c:2916 objc/objc-act.c:7496 +#: objc/objc-act.c:7798 objc/objc-act.c:7828 #, gcc-internal-format msgid "Objective-C declarations may only appear in global scope" msgstr "" -#: objc/objc-act.c:2891 +#: objc/objc-act.c:2890 #, gcc-internal-format -msgid "cannot find class %qs" +msgid "cannot find class %qE" msgstr "" -#: objc/objc-act.c:2893 +#: objc/objc-act.c:2892 #, gcc-internal-format -msgid "class %qs already exists" +msgid "class %qE already exists" msgstr "" -#: objc/objc-act.c:2937 objc/objc-act.c:7542 +#: objc/objc-act.c:2936 objc/objc-act.c:7537 #, gcc-internal-format -msgid "%qs redeclared as different kind of symbol" +msgid "%qE redeclared as different kind of symbol" msgstr "" -#: objc/objc-act.c:3213 +#: objc/objc-act.c:3212 #, gcc-internal-format msgid "strong-cast assignment has been intercepted" msgstr "" -#: objc/objc-act.c:3255 +#: objc/objc-act.c:3254 #, gcc-internal-format msgid "strong-cast may possibly be needed" msgstr "" -#: objc/objc-act.c:3265 +#: objc/objc-act.c:3264 #, gcc-internal-format msgid "instance variable assignment has been intercepted" msgstr "" -#: objc/objc-act.c:3284 +#: objc/objc-act.c:3283 #, gcc-internal-format msgid "pointer arithmetic for garbage-collected objects not allowed" msgstr "" -#: objc/objc-act.c:3290 +#: objc/objc-act.c:3289 #, gcc-internal-format msgid "global/static variable assignment has been intercepted" msgstr "" -#: objc/objc-act.c:3473 +#: objc/objc-act.c:3471 #, gcc-internal-format msgid "use %<-fobjc-exceptions%> to enable Objective-C exception syntax" msgstr "" -#: objc/objc-act.c:3816 +#: objc/objc-act.c:3814 #, gcc-internal-format msgid "@catch parameter is not a known Objective-C class type" msgstr "" -#: objc/objc-act.c:3832 +#: objc/objc-act.c:3830 #, gcc-internal-format msgid "exception of type %<%T%> will be caught" msgstr "" -#: objc/objc-act.c:3834 +#: objc/objc-act.c:3832 #, gcc-internal-format msgid "%H by earlier handler for %<%T%>" msgstr "" -#: objc/objc-act.c:3887 +#: objc/objc-act.c:3885 #, gcc-internal-format msgid "%<@try%> without %<@catch%> or %<@finally%>" msgstr "" -#: objc/objc-act.c:3938 +#: objc/objc-act.c:3936 #, gcc-internal-format msgid "%<@throw%> (rethrow) used outside of a @catch block" msgstr "" -#: objc/objc-act.c:4339 +#: objc/objc-act.c:4337 #, gcc-internal-format msgid "type %q+D does not have a known size" msgstr "" -#: objc/objc-act.c:4975 +#: objc/objc-act.c:4973 #, gcc-internal-format msgid "%J%s %qs" msgstr "" -#: objc/objc-act.c:4998 objc/objc-act.c:5017 +#: objc/objc-act.c:4996 objc/objc-act.c:5015 #, gcc-internal-format msgid "inconsistent instance variable specification" msgstr "" -#: objc/objc-act.c:5882 +#: objc/objc-act.c:5880 #, gcc-internal-format msgid "can not use an object as parameter to a method" msgstr "" -#: objc/objc-act.c:6109 +#: objc/objc-act.c:6107 #, gcc-internal-format -msgid "multiple methods named %<%c%s%> found" +msgid "multiple methods named %<%c%E%> found" msgstr "" -#: objc/objc-act.c:6112 +#: objc/objc-act.c:6110 #, gcc-internal-format msgid "%Jusing %<%c%s%>" msgstr "" -#: objc/objc-act.c:6120 +#: objc/objc-act.c:6118 #, gcc-internal-format -msgid "multiple selectors named %<%c%s%> found" +msgid "multiple selectors named %<%c%E%> found" msgstr "" -#: objc/objc-act.c:6123 +#: objc/objc-act.c:6121 #, gcc-internal-format msgid "%Jfound %<%c%s%>" msgstr "" -#: objc/objc-act.c:6132 +#: objc/objc-act.c:6130 #, gcc-internal-format msgid "%Jalso found %<%c%s%>" msgstr "" -#: objc/objc-act.c:6346 +#: objc/objc-act.c:6344 #, gcc-internal-format -msgid "no super class declared in @interface for %qs" +msgid "no super class declared in @interface for %qE" msgstr "" -#: objc/objc-act.c:6384 +#: objc/objc-act.c:6382 #, gcc-internal-format -msgid "found %<-%s%> instead of %<+%s%> in protocol(s)" +msgid "found %<-%E%> instead of %<+%E%> in protocol(s)" msgstr "" -#: objc/objc-act.c:6443 +#: objc/objc-act.c:6440 #, gcc-internal-format msgid "invalid receiver type %qs" msgstr "" -#: objc/objc-act.c:6458 +#: objc/objc-act.c:6455 #, gcc-internal-format -msgid "%<%c%s%> not found in protocol(s)" +msgid "%<%c%E%> not found in protocol(s)" msgstr "" -#: objc/objc-act.c:6472 +#: objc/objc-act.c:6469 #, gcc-internal-format -msgid "%qs may not respond to %<%c%s%>" +msgid "%qE may not respond to %<%c%E%>" msgstr "" -#: objc/objc-act.c:6480 +#: objc/objc-act.c:6477 #, gcc-internal-format -msgid "no %<%c%s%> method found" +msgid "no %<%c%E%> method found" msgstr "" -#: objc/objc-act.c:6486 +#: objc/objc-act.c:6483 #, gcc-internal-format msgid "(Messages without a matching method signature" msgstr "" -#: objc/objc-act.c:6487 +#: objc/objc-act.c:6484 #, gcc-internal-format msgid "will be assumed to return %<id%> and accept" msgstr "" -#: objc/objc-act.c:6488 +#: objc/objc-act.c:6485 #, gcc-internal-format msgid "%<...%> as arguments.)" msgstr "" -#: objc/objc-act.c:6722 +#: objc/objc-act.c:6719 #, gcc-internal-format -msgid "undeclared selector %qs" +msgid "undeclared selector %qE" msgstr "" #. Historically, a class method that produced objects (factory @@ -35529,180 +35973,185 @@ msgstr "" #. to an instance variable. It's better to catch the cases #. where this is done unknowingly than to support the above #. paradigm. -#: objc/objc-act.c:6764 +#: objc/objc-act.c:6761 #, gcc-internal-format -msgid "instance variable %qs accessed in class method" +msgid "instance variable %qE accessed in class method" msgstr "" -#: objc/objc-act.c:6998 +#: objc/objc-act.c:6995 #, gcc-internal-format -msgid "duplicate declaration of method %<%c%s%>" +msgid "duplicate declaration of method %<%c%E%>" msgstr "" -#: objc/objc-act.c:7059 +#: objc/objc-act.c:7056 #, gcc-internal-format -msgid "duplicate interface declaration for category %<%s(%s)%>" +msgid "duplicate interface declaration for category %<%E(%E)%>" msgstr "" -#: objc/objc-act.c:7086 +#: objc/objc-act.c:7083 #, gcc-internal-format msgid "illegal reference type specified for instance variable %qs" msgstr "" -#: objc/objc-act.c:7097 +#: objc/objc-act.c:7094 #, gcc-internal-format msgid "instance variable %qs has unknown size" msgstr "" -#: objc/objc-act.c:7122 +#: objc/objc-act.c:7119 #, gcc-internal-format -msgid "type %qs has no default constructor to call" +msgid "type %qE has no default constructor to call" msgstr "" -#: objc/objc-act.c:7128 +#: objc/objc-act.c:7125 #, gcc-internal-format -msgid "destructor for %qs shall not be run either" +msgid "destructor for %qE shall not be run either" msgstr "" #. Vtable pointers are Real Bad(tm), since Obj-C cannot #. initialize them. -#: objc/objc-act.c:7140 +#: objc/objc-act.c:7137 #, gcc-internal-format -msgid "type %qs has virtual member functions" +msgid "type %qE has virtual member functions" msgstr "" -#: objc/objc-act.c:7141 +#: objc/objc-act.c:7138 #, gcc-internal-format -msgid "illegal aggregate type %qs specified for instance variable %qs" +msgid "illegal aggregate type %qE specified for instance variable %qs" msgstr "" -#: objc/objc-act.c:7151 +#: objc/objc-act.c:7148 #, gcc-internal-format -msgid "type %qs has a user-defined constructor" +msgid "type %qE has a user-defined constructor" msgstr "" -#: objc/objc-act.c:7153 +#: objc/objc-act.c:7150 #, gcc-internal-format -msgid "type %qs has a user-defined destructor" +msgid "type %qE has a user-defined destructor" msgstr "" -#: objc/objc-act.c:7157 +#: objc/objc-act.c:7154 #, gcc-internal-format msgid "" "C++ constructors and destructors will not be invoked for Objective-C fields" msgstr "" -#: objc/objc-act.c:7266 +#: objc/objc-act.c:7263 #, gcc-internal-format -msgid "instance variable %qs is declared private" +msgid "instance variable %qE is declared private" msgstr "" -#: objc/objc-act.c:7277 +#: objc/objc-act.c:7274 #, gcc-internal-format -msgid "instance variable %qs is %s; this will be a hard error in the future" +msgid "instance variable %qE is %s; this will be a hard error in the future" msgstr "" -#: objc/objc-act.c:7284 +#: objc/objc-act.c:7281 #, gcc-internal-format -msgid "instance variable %qs is declared %s" +msgid "instance variable %qE is declared %s" msgstr "" -#: objc/objc-act.c:7310 objc/objc-act.c:7398 +#: objc/objc-act.c:7307 objc/objc-act.c:7395 #, gcc-internal-format -msgid "incomplete implementation of class %qs" +msgid "incomplete implementation of class %qE" msgstr "" -#: objc/objc-act.c:7314 objc/objc-act.c:7403 +#: objc/objc-act.c:7311 objc/objc-act.c:7399 #, gcc-internal-format -msgid "incomplete implementation of category %qs" +msgid "incomplete implementation of category %qE" msgstr "" -#: objc/objc-act.c:7319 objc/objc-act.c:7408 +#: objc/objc-act.c:7316 objc/objc-act.c:7403 #, gcc-internal-format -msgid "method definition for %<%c%s%> not found" +msgid "method definition for %<%c%E%> not found" msgstr "" -#: objc/objc-act.c:7449 +#: objc/objc-act.c:7444 #, gcc-internal-format -msgid "%s %qs does not fully implement the %qs protocol" +msgid "%s %qE does not fully implement the %qE protocol" msgstr "" -#: objc/objc-act.c:7507 objc/objc-act.c:9208 +#: objc/objc-act.c:7502 objc/objc-act.c:9189 #, gcc-internal-format msgid "%<@end%> missing in implementation context" msgstr "" -#: objc/objc-act.c:7526 +#: objc/objc-act.c:7521 +#, gcc-internal-format +msgid "cannot find interface declaration for %qE, superclass of %qE" +msgstr "" + +#: objc/objc-act.c:7551 #, gcc-internal-format -msgid "cannot find interface declaration for %qs, superclass of %qs" +msgid "reimplementation of class %qE" msgstr "" -#: objc/objc-act.c:7556 +#: objc/objc-act.c:7581 #, gcc-internal-format -msgid "reimplementation of class %qs" +msgid "conflicting super class name %qE" msgstr "" -#: objc/objc-act.c:7588 +#: objc/objc-act.c:7584 #, gcc-internal-format -msgid "conflicting super class name %qs" +msgid "previous declaration of %qE" msgstr "" -#: objc/objc-act.c:7590 +#: objc/objc-act.c:7586 #, gcc-internal-format -msgid "previous declaration of %qs" +msgid "previous declaration" msgstr "" -#: objc/objc-act.c:7606 objc/objc-act.c:7604 +#: objc/objc-act.c:7602 objc/objc-act.c:7600 #, gcc-internal-format -msgid "duplicate interface declaration for class %qs" +msgid "duplicate interface declaration for class %qE" msgstr "" -#: objc/objc-act.c:7860 +#: objc/objc-act.c:7856 #, gcc-internal-format -msgid "duplicate declaration for protocol %qs" +msgid "duplicate declaration for protocol %qE" msgstr "" -#: objc/objc-act.c:8688 +#: objc/objc-act.c:8684 #, gcc-internal-format msgid "%Jconflicting types for %<%c%s%>" msgstr "" -#: objc/objc-act.c:8691 +#: objc/objc-act.c:8687 #, gcc-internal-format msgid "%Jprevious declaration of %<%c%s%>" msgstr "" -#: objc/objc-act.c:8777 +#: objc/objc-act.c:8773 #, gcc-internal-format -msgid "no super class declared in interface for %qs" +msgid "no super class declared in interface for %qE" msgstr "" -#: objc/objc-act.c:8829 +#: objc/objc-act.c:8826 #, gcc-internal-format msgid "[super ...] must appear in a method context" msgstr "" -#: objc/objc-act.c:8868 +#: objc/objc-act.c:8865 #, gcc-internal-format msgid "method possibly missing a [super dealloc] call" msgstr "" -#: objc/objc-act.c:9498 +#: objc/objc-act.c:9479 #, gcc-internal-format -msgid "local declaration of %qs hides instance variable" +msgid "local declaration of %qE hides instance variable" msgstr "" -#: ada/gcc-interface/misc.c:204 +#: ada/gcc-interface/misc.c:195 #, gcc-internal-format msgid "missing argument to \"-%s\"" msgstr "" -#: ada/gcc-interface/misc.c:262 +#: ada/gcc-interface/misc.c:253 #, gcc-internal-format msgid "%<-gnat%> misspelled as %<-gant%>" msgstr "" -#: ada/gcc-interface/misc.c:320 +#: ada/gcc-interface/misc.c:311 #, gcc-internal-format msgid "-fexcess-precision=standard for Ada" msgstr "" diff --git a/gcc/pretty-print.c b/gcc/pretty-print.c index d531075c933..55bc3feeeac 100644 --- a/gcc/pretty-print.c +++ b/gcc/pretty-print.c @@ -719,6 +719,7 @@ pp_construct (pretty_printer *pp, const char *prefix, int maximum_length) pp_line_cutoff (pp) = maximum_length; pp_prefixing_rule (pp) = DIAGNOSTICS_SHOW_PREFIX_ONCE; pp_set_prefix (pp, prefix); + pp_translate_identifiers (pp) = true; } /* Append a string delimited by START and END to the output area of @@ -855,8 +856,14 @@ pp_base_maybe_space (pretty_printer *pp) void pp_base_tree_identifier (pretty_printer *pp, tree id) { - const char *text = identifier_to_locale (IDENTIFIER_POINTER (id)); - pp_append_text (pp, text, text + strlen (text)); + if (pp_translate_identifiers (pp)) + { + const char *text = identifier_to_locale (IDENTIFIER_POINTER (id)); + pp_append_text (pp, text, text + strlen (text)); + } + else + pp_append_text (pp, IDENTIFIER_POINTER (id), + IDENTIFIER_POINTER (id) + IDENTIFIER_LENGTH (id)); } /* The string starting at P has LEN (at least 1) bytes left; if they diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h index 58292259604..5c4ddca8043 100644 --- a/gcc/pretty-print.h +++ b/gcc/pretty-print.h @@ -148,6 +148,10 @@ typedef bool (*printer_fn) (pretty_printer *, text_info *, const char *, /* The amount of whitespace to be emitted when starting a new line. */ #define pp_indentation(PP) pp_base (PP)->indent_skip +/* True if identifiers are translated to the locale character set on + output. */ +#define pp_translate_identifiers(PP) pp_base (PP)->translate_identifiers + /* The data structure that contains the bare minimum required to do proper pretty-printing. Clients may derived from this structure and add additional fields they need. */ @@ -187,6 +191,10 @@ struct pretty_print_info /* Nonzero means one should emit a newline before outputting anything. */ bool need_newline; + + /* Nonzero means identifiers are translated to the locale character + set on output. */ + bool translate_identifiers; }; #define pp_set_line_maximum_length(PP, L) \ @@ -273,7 +281,9 @@ struct pretty_print_info pp_scalar (PP, HOST_WIDEST_INT_PRINT_DEC, (HOST_WIDEST_INT) I) #define pp_pointer(PP, P) pp_scalar (PP, "%p", P) -#define pp_identifier(PP, ID) pp_string (PP, identifier_to_locale (ID)) +#define pp_identifier(PP, ID) pp_string (PP, (pp_translate_identifiers (PP) \ + ? identifier_to_locale (ID) \ + : (ID))) #define pp_tree_identifier(PP, T) \ pp_base_tree_identifier (pp_base (PP), T) diff --git a/gcc/regcprop.c b/gcc/regcprop.c new file mode 100644 index 00000000000..87aaf02c409 --- /dev/null +++ b/gcc/regcprop.c @@ -0,0 +1,1005 @@ +/* Copy propagation on hard registers for the GNU compiler. + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Free Software Foundation, Inc. + + This file is part of GCC. + + GCC is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + GCC is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. + + You should have received a copy of the GNU General Public License + along with GCC; see the file COPYING3. If not see + <http://www.gnu.org/licenses/>. */ + +#include "config.h" +#include "system.h" +#include "coretypes.h" +#include "tm.h" +#include "rtl.h" +#include "tm_p.h" +#include "insn-config.h" +#include "regs.h" +#include "addresses.h" +#include "hard-reg-set.h" +#include "basic-block.h" +#include "reload.h" +#include "output.h" +#include "function.h" +#include "recog.h" +#include "flags.h" +#include "toplev.h" +#include "obstack.h" +#include "timevar.h" +#include "tree-pass.h" +#include "df.h" + +/* The following code does forward propagation of hard register copies. + The object is to eliminate as many dependencies as possible, so that + we have the most scheduling freedom. As a side effect, we also clean + up some silly register allocation decisions made by reload. This + code may be obsoleted by a new register allocator. */ + +/* For each register, we have a list of registers that contain the same + value. The OLDEST_REGNO field points to the head of the list, and + the NEXT_REGNO field runs through the list. The MODE field indicates + what mode the data is known to be in; this field is VOIDmode when the + register is not known to contain valid data. */ + +struct value_data_entry +{ + enum machine_mode mode; + unsigned int oldest_regno; + unsigned int next_regno; +}; + +struct value_data +{ + struct value_data_entry e[FIRST_PSEUDO_REGISTER]; + unsigned int max_value_regs; +}; + +static void kill_value_one_regno (unsigned, struct value_data *); +static void kill_value_regno (unsigned, unsigned, struct value_data *); +static void kill_value (rtx, struct value_data *); +static void set_value_regno (unsigned, enum machine_mode, struct value_data *); +static void init_value_data (struct value_data *); +static void kill_clobbered_value (rtx, const_rtx, void *); +static void kill_set_value (rtx, const_rtx, void *); +static int kill_autoinc_value (rtx *, void *); +static void copy_value (rtx, rtx, struct value_data *); +static bool mode_change_ok (enum machine_mode, enum machine_mode, + unsigned int); +static rtx maybe_mode_change (enum machine_mode, enum machine_mode, + enum machine_mode, unsigned int, unsigned int); +static rtx find_oldest_value_reg (enum reg_class, rtx, struct value_data *); +static bool replace_oldest_value_reg (rtx *, enum reg_class, rtx, + struct value_data *); +static bool replace_oldest_value_addr (rtx *, enum reg_class, + enum machine_mode, rtx, + struct value_data *); +static bool replace_oldest_value_mem (rtx, rtx, struct value_data *); +static bool copyprop_hardreg_forward_1 (basic_block, struct value_data *); +extern void debug_value_data (struct value_data *); +#ifdef ENABLE_CHECKING +static void validate_value_data (struct value_data *); +#endif + +/* Kill register REGNO. This involves removing it from any value + lists, and resetting the value mode to VOIDmode. This is only a + helper function; it does not handle any hard registers overlapping + with REGNO. */ + +static void +kill_value_one_regno (unsigned int regno, struct value_data *vd) +{ + unsigned int i, next; + + if (vd->e[regno].oldest_regno != regno) + { + for (i = vd->e[regno].oldest_regno; + vd->e[i].next_regno != regno; + i = vd->e[i].next_regno) + continue; + vd->e[i].next_regno = vd->e[regno].next_regno; + } + else if ((next = vd->e[regno].next_regno) != INVALID_REGNUM) + { + for (i = next; i != INVALID_REGNUM; i = vd->e[i].next_regno) + vd->e[i].oldest_regno = next; + } + + vd->e[regno].mode = VOIDmode; + vd->e[regno].oldest_regno = regno; + vd->e[regno].next_regno = INVALID_REGNUM; + +#ifdef ENABLE_CHECKING + validate_value_data (vd); +#endif +} + +/* Kill the value in register REGNO for NREGS, and any other registers + whose values overlap. */ + +static void +kill_value_regno (unsigned int regno, unsigned int nregs, + struct value_data *vd) +{ + unsigned int j; + + /* Kill the value we're told to kill. */ + for (j = 0; j < nregs; ++j) + kill_value_one_regno (regno + j, vd); + + /* Kill everything that overlapped what we're told to kill. */ + if (regno < vd->max_value_regs) + j = 0; + else + j = regno - vd->max_value_regs; + for (; j < regno; ++j) + { + unsigned int i, n; + if (vd->e[j].mode == VOIDmode) + continue; + n = hard_regno_nregs[j][vd->e[j].mode]; + if (j + n > regno) + for (i = 0; i < n; ++i) + kill_value_one_regno (j + i, vd); + } +} + +/* Kill X. This is a convenience function wrapping kill_value_regno + so that we mind the mode the register is in. */ + +static void +kill_value (rtx x, struct value_data *vd) +{ + rtx orig_rtx = x; + + if (GET_CODE (x) == SUBREG) + { + x = simplify_subreg (GET_MODE (x), SUBREG_REG (x), + GET_MODE (SUBREG_REG (x)), SUBREG_BYTE (x)); + if (x == NULL_RTX) + x = SUBREG_REG (orig_rtx); + } + if (REG_P (x)) + { + unsigned int regno = REGNO (x); + unsigned int n = hard_regno_nregs[regno][GET_MODE (x)]; + + kill_value_regno (regno, n, vd); + } +} + +/* Remember that REGNO is valid in MODE. */ + +static void +set_value_regno (unsigned int regno, enum machine_mode mode, + struct value_data *vd) +{ + unsigned int nregs; + + vd->e[regno].mode = mode; + + nregs = hard_regno_nregs[regno][mode]; + if (nregs > vd->max_value_regs) + vd->max_value_regs = nregs; +} + +/* Initialize VD such that there are no known relationships between regs. */ + +static void +init_value_data (struct value_data *vd) +{ + int i; + for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i) + { + vd->e[i].mode = VOIDmode; + vd->e[i].oldest_regno = i; + vd->e[i].next_regno = INVALID_REGNUM; + } + vd->max_value_regs = 0; +} + +/* Called through note_stores. If X is clobbered, kill its value. */ + +static void +kill_clobbered_value (rtx x, const_rtx set, void *data) +{ + struct value_data *const vd = (struct value_data *) data; + if (GET_CODE (set) == CLOBBER) + kill_value (x, vd); +} + +/* Called through note_stores. If X is set, not clobbered, kill its + current value and install it as the root of its own value list. */ + +static void +kill_set_value (rtx x, const_rtx set, void *data) +{ + struct value_data *const vd = (struct value_data *) data; + if (GET_CODE (set) != CLOBBER) + { + kill_value (x, vd); + if (REG_P (x)) + set_value_regno (REGNO (x), GET_MODE (x), vd); + } +} + +/* Called through for_each_rtx. Kill any register used as the base of an + auto-increment expression, and install that register as the root of its + own value list. */ + +static int +kill_autoinc_value (rtx *px, void *data) +{ + rtx x = *px; + struct value_data *const vd = (struct value_data *) data; + + if (GET_RTX_CLASS (GET_CODE (x)) == RTX_AUTOINC) + { + x = XEXP (x, 0); + kill_value (x, vd); + set_value_regno (REGNO (x), Pmode, vd); + return -1; + } + + return 0; +} + +/* Assert that SRC has been copied to DEST. Adjust the data structures + to reflect that SRC contains an older copy of the shared value. */ + +static void +copy_value (rtx dest, rtx src, struct value_data *vd) +{ + unsigned int dr = REGNO (dest); + unsigned int sr = REGNO (src); + unsigned int dn, sn; + unsigned int i; + + /* ??? At present, it's possible to see noop sets. It'd be nice if + this were cleaned up beforehand... */ + if (sr == dr) + return; + + /* Do not propagate copies to the stack pointer, as that can leave + memory accesses with no scheduling dependency on the stack update. */ + if (dr == STACK_POINTER_REGNUM) + return; + + /* Likewise with the frame pointer, if we're using one. */ + if (frame_pointer_needed && dr == HARD_FRAME_POINTER_REGNUM) + return; + + /* Do not propagate copies to fixed or global registers, patterns + can be relying to see particular fixed register or users can + expect the chosen global register in asm. */ + if (fixed_regs[dr] || global_regs[dr]) + return; + + /* If SRC and DEST overlap, don't record anything. */ + dn = hard_regno_nregs[dr][GET_MODE (dest)]; + sn = hard_regno_nregs[sr][GET_MODE (dest)]; + if ((dr > sr && dr < sr + sn) + || (sr > dr && sr < dr + dn)) + return; + + /* If SRC had no assigned mode (i.e. we didn't know it was live) + assign it now and assume the value came from an input argument + or somesuch. */ + if (vd->e[sr].mode == VOIDmode) + set_value_regno (sr, vd->e[dr].mode, vd); + + /* If we are narrowing the input to a smaller number of hard regs, + and it is in big endian, we are really extracting a high part. + Since we generally associate a low part of a value with the value itself, + we must not do the same for the high part. + Note we can still get low parts for the same mode combination through + a two-step copy involving differently sized hard regs. + Assume hard regs fr* are 32 bits bits each, while r* are 64 bits each: + (set (reg:DI r0) (reg:DI fr0)) + (set (reg:SI fr2) (reg:SI r0)) + loads the low part of (reg:DI fr0) - i.e. fr1 - into fr2, while: + (set (reg:SI fr2) (reg:SI fr0)) + loads the high part of (reg:DI fr0) into fr2. + + We can't properly represent the latter case in our tables, so don't + record anything then. */ + else if (sn < (unsigned int) hard_regno_nregs[sr][vd->e[sr].mode] + && (GET_MODE_SIZE (vd->e[sr].mode) > UNITS_PER_WORD + ? WORDS_BIG_ENDIAN : BYTES_BIG_ENDIAN)) + return; + + /* If SRC had been assigned a mode narrower than the copy, we can't + link DEST into the chain, because not all of the pieces of the + copy came from oldest_regno. */ + else if (sn > (unsigned int) hard_regno_nregs[sr][vd->e[sr].mode]) + return; + + /* Link DR at the end of the value chain used by SR. */ + + vd->e[dr].oldest_regno = vd->e[sr].oldest_regno; + + for (i = sr; vd->e[i].next_regno != INVALID_REGNUM; i = vd->e[i].next_regno) + continue; + vd->e[i].next_regno = dr; + +#ifdef ENABLE_CHECKING + validate_value_data (vd); +#endif +} + +/* Return true if a mode change from ORIG to NEW is allowed for REGNO. */ + +static bool +mode_change_ok (enum machine_mode orig_mode, enum machine_mode new_mode, + unsigned int regno ATTRIBUTE_UNUSED) +{ + if (GET_MODE_SIZE (orig_mode) < GET_MODE_SIZE (new_mode)) + return false; + +#ifdef CANNOT_CHANGE_MODE_CLASS + return !REG_CANNOT_CHANGE_MODE_P (regno, orig_mode, new_mode); +#endif + + return true; +} + +/* Register REGNO was originally set in ORIG_MODE. It - or a copy of it - + was copied in COPY_MODE to COPY_REGNO, and then COPY_REGNO was accessed + in NEW_MODE. + Return a NEW_MODE rtx for REGNO if that's OK, otherwise return NULL_RTX. */ + +static rtx +maybe_mode_change (enum machine_mode orig_mode, enum machine_mode copy_mode, + enum machine_mode new_mode, unsigned int regno, + unsigned int copy_regno ATTRIBUTE_UNUSED) +{ + if (GET_MODE_SIZE (copy_mode) < GET_MODE_SIZE (orig_mode) + && GET_MODE_SIZE (copy_mode) < GET_MODE_SIZE (new_mode)) + return NULL_RTX; + + if (orig_mode == new_mode) + return gen_rtx_raw_REG (new_mode, regno); + else if (mode_change_ok (orig_mode, new_mode, regno)) + { + int copy_nregs = hard_regno_nregs[copy_regno][copy_mode]; + int use_nregs = hard_regno_nregs[copy_regno][new_mode]; + int copy_offset + = GET_MODE_SIZE (copy_mode) / copy_nregs * (copy_nregs - use_nregs); + int offset + = GET_MODE_SIZE (orig_mode) - GET_MODE_SIZE (new_mode) - copy_offset; + int byteoffset = offset % UNITS_PER_WORD; + int wordoffset = offset - byteoffset; + + offset = ((WORDS_BIG_ENDIAN ? wordoffset : 0) + + (BYTES_BIG_ENDIAN ? byteoffset : 0)); + return gen_rtx_raw_REG (new_mode, + regno + subreg_regno_offset (regno, orig_mode, + offset, + new_mode)); + } + return NULL_RTX; +} + +/* Find the oldest copy of the value contained in REGNO that is in + register class CL and has mode MODE. If found, return an rtx + of that oldest register, otherwise return NULL. */ + +static rtx +find_oldest_value_reg (enum reg_class cl, rtx reg, struct value_data *vd) +{ + unsigned int regno = REGNO (reg); + enum machine_mode mode = GET_MODE (reg); + unsigned int i; + + /* If we are accessing REG in some mode other that what we set it in, + make sure that the replacement is valid. In particular, consider + (set (reg:DI r11) (...)) + (set (reg:SI r9) (reg:SI r11)) + (set (reg:SI r10) (...)) + (set (...) (reg:DI r9)) + Replacing r9 with r11 is invalid. */ + if (mode != vd->e[regno].mode) + { + if (hard_regno_nregs[regno][mode] + > hard_regno_nregs[regno][vd->e[regno].mode]) + return NULL_RTX; + } + + for (i = vd->e[regno].oldest_regno; i != regno; i = vd->e[i].next_regno) + { + enum machine_mode oldmode = vd->e[i].mode; + rtx new_rtx; + + if (!in_hard_reg_set_p (reg_class_contents[cl], mode, i)) + return NULL_RTX; + + new_rtx = maybe_mode_change (oldmode, vd->e[regno].mode, mode, i, regno); + if (new_rtx) + { + ORIGINAL_REGNO (new_rtx) = ORIGINAL_REGNO (reg); + REG_ATTRS (new_rtx) = REG_ATTRS (reg); + REG_POINTER (new_rtx) = REG_POINTER (reg); + return new_rtx; + } + } + + return NULL_RTX; +} + +/* If possible, replace the register at *LOC with the oldest register + in register class CL. Return true if successfully replaced. */ + +static bool +replace_oldest_value_reg (rtx *loc, enum reg_class cl, rtx insn, + struct value_data *vd) +{ + rtx new_rtx = find_oldest_value_reg (cl, *loc, vd); + if (new_rtx) + { + if (dump_file) + fprintf (dump_file, "insn %u: replaced reg %u with %u\n", + INSN_UID (insn), REGNO (*loc), REGNO (new_rtx)); + + validate_change (insn, loc, new_rtx, 1); + return true; + } + return false; +} + +/* Similar to replace_oldest_value_reg, but *LOC contains an address. + Adapted from find_reloads_address_1. CL is INDEX_REG_CLASS or + BASE_REG_CLASS depending on how the register is being considered. */ + +static bool +replace_oldest_value_addr (rtx *loc, enum reg_class cl, + enum machine_mode mode, rtx insn, + struct value_data *vd) +{ + rtx x = *loc; + RTX_CODE code = GET_CODE (x); + const char *fmt; + int i, j; + bool changed = false; + + switch (code) + { + case PLUS: + { + rtx orig_op0 = XEXP (x, 0); + rtx orig_op1 = XEXP (x, 1); + RTX_CODE code0 = GET_CODE (orig_op0); + RTX_CODE code1 = GET_CODE (orig_op1); + rtx op0 = orig_op0; + rtx op1 = orig_op1; + rtx *locI = NULL; + rtx *locB = NULL; + enum rtx_code index_code = SCRATCH; + + if (GET_CODE (op0) == SUBREG) + { + op0 = SUBREG_REG (op0); + code0 = GET_CODE (op0); + } + + if (GET_CODE (op1) == SUBREG) + { + op1 = SUBREG_REG (op1); + code1 = GET_CODE (op1); + } + + if (code0 == MULT || code0 == SIGN_EXTEND || code0 == TRUNCATE + || code0 == ZERO_EXTEND || code1 == MEM) + { + locI = &XEXP (x, 0); + locB = &XEXP (x, 1); + index_code = GET_CODE (*locI); + } + else if (code1 == MULT || code1 == SIGN_EXTEND || code1 == TRUNCATE + || code1 == ZERO_EXTEND || code0 == MEM) + { + locI = &XEXP (x, 1); + locB = &XEXP (x, 0); + index_code = GET_CODE (*locI); + } + else if (code0 == CONST_INT || code0 == CONST + || code0 == SYMBOL_REF || code0 == LABEL_REF) + { + locB = &XEXP (x, 1); + index_code = GET_CODE (XEXP (x, 0)); + } + else if (code1 == CONST_INT || code1 == CONST + || code1 == SYMBOL_REF || code1 == LABEL_REF) + { + locB = &XEXP (x, 0); + index_code = GET_CODE (XEXP (x, 1)); + } + else if (code0 == REG && code1 == REG) + { + int index_op; + unsigned regno0 = REGNO (op0), regno1 = REGNO (op1); + + if (REGNO_OK_FOR_INDEX_P (regno1) + && regno_ok_for_base_p (regno0, mode, PLUS, REG)) + index_op = 1; + else if (REGNO_OK_FOR_INDEX_P (regno0) + && regno_ok_for_base_p (regno1, mode, PLUS, REG)) + index_op = 0; + else if (regno_ok_for_base_p (regno0, mode, PLUS, REG) + || REGNO_OK_FOR_INDEX_P (regno1)) + index_op = 1; + else if (regno_ok_for_base_p (regno1, mode, PLUS, REG)) + index_op = 0; + else + index_op = 1; + + locI = &XEXP (x, index_op); + locB = &XEXP (x, !index_op); + index_code = GET_CODE (*locI); + } + else if (code0 == REG) + { + locI = &XEXP (x, 0); + locB = &XEXP (x, 1); + index_code = GET_CODE (*locI); + } + else if (code1 == REG) + { + locI = &XEXP (x, 1); + locB = &XEXP (x, 0); + index_code = GET_CODE (*locI); + } + + if (locI) + changed |= replace_oldest_value_addr (locI, INDEX_REG_CLASS, mode, + insn, vd); + if (locB) + changed |= replace_oldest_value_addr (locB, + base_reg_class (mode, PLUS, + index_code), + mode, insn, vd); + return changed; + } + + case POST_INC: + case POST_DEC: + case POST_MODIFY: + case PRE_INC: + case PRE_DEC: + case PRE_MODIFY: + return false; + + case MEM: + return replace_oldest_value_mem (x, insn, vd); + + case REG: + return replace_oldest_value_reg (loc, cl, insn, vd); + + default: + break; + } + + fmt = GET_RTX_FORMAT (code); + for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--) + { + if (fmt[i] == 'e') + changed |= replace_oldest_value_addr (&XEXP (x, i), cl, mode, + insn, vd); + else if (fmt[i] == 'E') + for (j = XVECLEN (x, i) - 1; j >= 0; j--) + changed |= replace_oldest_value_addr (&XVECEXP (x, i, j), cl, + mode, insn, vd); + } + + return changed; +} + +/* Similar to replace_oldest_value_reg, but X contains a memory. */ + +static bool +replace_oldest_value_mem (rtx x, rtx insn, struct value_data *vd) +{ + return replace_oldest_value_addr (&XEXP (x, 0), + base_reg_class (GET_MODE (x), MEM, + SCRATCH), + GET_MODE (x), insn, vd); +} + +/* Perform the forward copy propagation on basic block BB. */ + +static bool +copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd) +{ + bool changed = false; + rtx insn; + + for (insn = BB_HEAD (bb); ; insn = NEXT_INSN (insn)) + { + int n_ops, i, alt, predicated; + bool is_asm, any_replacements; + rtx set; + bool replaced[MAX_RECOG_OPERANDS]; + + if (! INSN_P (insn)) + { + if (insn == BB_END (bb)) + break; + else + continue; + } + + set = single_set (insn); + extract_insn (insn); + if (! constrain_operands (1)) + fatal_insn_not_found (insn); + preprocess_constraints (); + alt = which_alternative; + n_ops = recog_data.n_operands; + is_asm = asm_noperands (PATTERN (insn)) >= 0; + + /* Simplify the code below by rewriting things to reflect + matching constraints. Also promote OP_OUT to OP_INOUT + in predicated instructions. */ + + predicated = GET_CODE (PATTERN (insn)) == COND_EXEC; + for (i = 0; i < n_ops; ++i) + { + int matches = recog_op_alt[i][alt].matches; + if (matches >= 0) + recog_op_alt[i][alt].cl = recog_op_alt[matches][alt].cl; + if (matches >= 0 || recog_op_alt[i][alt].matched >= 0 + || (predicated && recog_data.operand_type[i] == OP_OUT)) + recog_data.operand_type[i] = OP_INOUT; + } + + /* For each earlyclobber operand, zap the value data. */ + for (i = 0; i < n_ops; i++) + if (recog_op_alt[i][alt].earlyclobber) + kill_value (recog_data.operand[i], vd); + + /* Within asms, a clobber cannot overlap inputs or outputs. + I wouldn't think this were true for regular insns, but + scan_rtx treats them like that... */ + note_stores (PATTERN (insn), kill_clobbered_value, vd); + + /* Kill all auto-incremented values. */ + /* ??? REG_INC is useless, since stack pushes aren't done that way. */ + for_each_rtx (&PATTERN (insn), kill_autoinc_value, vd); + + /* Kill all early-clobbered operands. */ + for (i = 0; i < n_ops; i++) + if (recog_op_alt[i][alt].earlyclobber) + kill_value (recog_data.operand[i], vd); + + /* Special-case plain move instructions, since we may well + be able to do the move from a different register class. */ + if (set && REG_P (SET_SRC (set))) + { + rtx src = SET_SRC (set); + unsigned int regno = REGNO (src); + enum machine_mode mode = GET_MODE (src); + unsigned int i; + rtx new_rtx; + + /* If we are accessing SRC in some mode other that what we + set it in, make sure that the replacement is valid. */ + if (mode != vd->e[regno].mode) + { + if (hard_regno_nregs[regno][mode] + > hard_regno_nregs[regno][vd->e[regno].mode]) + goto no_move_special_case; + } + + /* If the destination is also a register, try to find a source + register in the same class. */ + if (REG_P (SET_DEST (set))) + { + new_rtx = find_oldest_value_reg (REGNO_REG_CLASS (regno), src, vd); + if (new_rtx && validate_change (insn, &SET_SRC (set), new_rtx, 0)) + { + if (dump_file) + fprintf (dump_file, + "insn %u: replaced reg %u with %u\n", + INSN_UID (insn), regno, REGNO (new_rtx)); + changed = true; + goto did_replacement; + } + } + + /* Otherwise, try all valid registers and see if its valid. */ + for (i = vd->e[regno].oldest_regno; i != regno; + i = vd->e[i].next_regno) + { + new_rtx = maybe_mode_change (vd->e[i].mode, vd->e[regno].mode, + mode, i, regno); + if (new_rtx != NULL_RTX) + { + if (validate_change (insn, &SET_SRC (set), new_rtx, 0)) + { + ORIGINAL_REGNO (new_rtx) = ORIGINAL_REGNO (src); + REG_ATTRS (new_rtx) = REG_ATTRS (src); + REG_POINTER (new_rtx) = REG_POINTER (src); + if (dump_file) + fprintf (dump_file, + "insn %u: replaced reg %u with %u\n", + INSN_UID (insn), regno, REGNO (new_rtx)); + changed = true; + goto did_replacement; + } + } + } + } + no_move_special_case: + + any_replacements = false; + + /* For each input operand, replace a hard register with the + eldest live copy that's in an appropriate register class. */ + for (i = 0; i < n_ops; i++) + { + replaced[i] = false; + + /* Don't scan match_operand here, since we've no reg class + information to pass down. Any operands that we could + substitute in will be represented elsewhere. */ + if (recog_data.constraints[i][0] == '\0') + continue; + + /* Don't replace in asms intentionally referencing hard regs. */ + if (is_asm && REG_P (recog_data.operand[i]) + && (REGNO (recog_data.operand[i]) + == ORIGINAL_REGNO (recog_data.operand[i]))) + continue; + + if (recog_data.operand_type[i] == OP_IN) + { + if (recog_op_alt[i][alt].is_address) + replaced[i] + = replace_oldest_value_addr (recog_data.operand_loc[i], + recog_op_alt[i][alt].cl, + VOIDmode, insn, vd); + else if (REG_P (recog_data.operand[i])) + replaced[i] + = replace_oldest_value_reg (recog_data.operand_loc[i], + recog_op_alt[i][alt].cl, + insn, vd); + else if (MEM_P (recog_data.operand[i])) + replaced[i] = replace_oldest_value_mem (recog_data.operand[i], + insn, vd); + } + else if (MEM_P (recog_data.operand[i])) + replaced[i] = replace_oldest_value_mem (recog_data.operand[i], + insn, vd); + + /* If we performed any replacement, update match_dups. */ + if (replaced[i]) + { + int j; + rtx new_rtx; + + new_rtx = *recog_data.operand_loc[i]; + recog_data.operand[i] = new_rtx; + for (j = 0; j < recog_data.n_dups; j++) + if (recog_data.dup_num[j] == i) + validate_unshare_change (insn, recog_data.dup_loc[j], new_rtx, 1); + + any_replacements = true; + } + } + + if (any_replacements) + { + if (! apply_change_group ()) + { + for (i = 0; i < n_ops; i++) + if (replaced[i]) + { + rtx old = *recog_data.operand_loc[i]; + recog_data.operand[i] = old; + } + + if (dump_file) + fprintf (dump_file, + "insn %u: reg replacements not verified\n", + INSN_UID (insn)); + } + else + changed = true; + } + + did_replacement: + /* Clobber call-clobbered registers. */ + if (CALL_P (insn)) + for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) + if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i)) + kill_value_regno (i, 1, vd); + + /* Notice stores. */ + note_stores (PATTERN (insn), kill_set_value, vd); + + /* Notice copies. */ + if (set && REG_P (SET_DEST (set)) && REG_P (SET_SRC (set))) + copy_value (SET_DEST (set), SET_SRC (set), vd); + + if (insn == BB_END (bb)) + break; + } + + return changed; +} + +/* Main entry point for the forward copy propagation optimization. */ + +static unsigned int +copyprop_hardreg_forward (void) +{ + struct value_data *all_vd; + basic_block bb; + sbitmap visited; + + all_vd = XNEWVEC (struct value_data, last_basic_block); + + visited = sbitmap_alloc (last_basic_block); + sbitmap_zero (visited); + + FOR_EACH_BB (bb) + { + SET_BIT (visited, bb->index); + + /* If a block has a single predecessor, that we've already + processed, begin with the value data that was live at + the end of the predecessor block. */ + /* ??? Ought to use more intelligent queuing of blocks. */ + if (single_pred_p (bb) + && TEST_BIT (visited, single_pred (bb)->index) + && ! (single_pred_edge (bb)->flags & (EDGE_ABNORMAL_CALL | EDGE_EH))) + all_vd[bb->index] = all_vd[single_pred (bb)->index]; + else + init_value_data (all_vd + bb->index); + + copyprop_hardreg_forward_1 (bb, all_vd + bb->index); + } + + sbitmap_free (visited); + free (all_vd); + return 0; +} + +/* Dump the value chain data to stderr. */ + +void +debug_value_data (struct value_data *vd) +{ + HARD_REG_SET set; + unsigned int i, j; + + CLEAR_HARD_REG_SET (set); + + for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i) + if (vd->e[i].oldest_regno == i) + { + if (vd->e[i].mode == VOIDmode) + { + if (vd->e[i].next_regno != INVALID_REGNUM) + fprintf (stderr, "[%u] Bad next_regno for empty chain (%u)\n", + i, vd->e[i].next_regno); + continue; + } + + SET_HARD_REG_BIT (set, i); + fprintf (stderr, "[%u %s] ", i, GET_MODE_NAME (vd->e[i].mode)); + + for (j = vd->e[i].next_regno; + j != INVALID_REGNUM; + j = vd->e[j].next_regno) + { + if (TEST_HARD_REG_BIT (set, j)) + { + fprintf (stderr, "[%u] Loop in regno chain\n", j); + return; + } + + if (vd->e[j].oldest_regno != i) + { + fprintf (stderr, "[%u] Bad oldest_regno (%u)\n", + j, vd->e[j].oldest_regno); + return; + } + SET_HARD_REG_BIT (set, j); + fprintf (stderr, "[%u %s] ", j, GET_MODE_NAME (vd->e[j].mode)); + } + fputc ('\n', stderr); + } + + for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i) + if (! TEST_HARD_REG_BIT (set, i) + && (vd->e[i].mode != VOIDmode + || vd->e[i].oldest_regno != i + || vd->e[i].next_regno != INVALID_REGNUM)) + fprintf (stderr, "[%u] Non-empty reg in chain (%s %u %i)\n", + i, GET_MODE_NAME (vd->e[i].mode), vd->e[i].oldest_regno, + vd->e[i].next_regno); +} + +#ifdef ENABLE_CHECKING +static void +validate_value_data (struct value_data *vd) +{ + HARD_REG_SET set; + unsigned int i, j; + + CLEAR_HARD_REG_SET (set); + + for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i) + if (vd->e[i].oldest_regno == i) + { + if (vd->e[i].mode == VOIDmode) + { + if (vd->e[i].next_regno != INVALID_REGNUM) + internal_error ("validate_value_data: [%u] Bad next_regno for empty chain (%u)", + i, vd->e[i].next_regno); + continue; + } + + SET_HARD_REG_BIT (set, i); + + for (j = vd->e[i].next_regno; + j != INVALID_REGNUM; + j = vd->e[j].next_regno) + { + if (TEST_HARD_REG_BIT (set, j)) + internal_error ("validate_value_data: Loop in regno chain (%u)", + j); + if (vd->e[j].oldest_regno != i) + internal_error ("validate_value_data: [%u] Bad oldest_regno (%u)", + j, vd->e[j].oldest_regno); + + SET_HARD_REG_BIT (set, j); + } + } + + for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i) + if (! TEST_HARD_REG_BIT (set, i) + && (vd->e[i].mode != VOIDmode + || vd->e[i].oldest_regno != i + || vd->e[i].next_regno != INVALID_REGNUM)) + internal_error ("validate_value_data: [%u] Non-empty reg in chain (%s %u %i)", + i, GET_MODE_NAME (vd->e[i].mode), vd->e[i].oldest_regno, + vd->e[i].next_regno); +} +#endif + +static bool +gate_handle_cprop (void) +{ + return (optimize > 0 && (flag_cprop_registers)); +} + + +struct rtl_opt_pass pass_cprop_hardreg = +{ + { + RTL_PASS, + "cprop_hardreg", /* name */ + gate_handle_cprop, /* gate */ + copyprop_hardreg_forward, /* execute */ + NULL, /* sub */ + NULL, /* next */ + 0, /* static_pass_number */ + TV_CPROP_REGISTERS, /* tv_id */ + 0, /* properties_required */ + 0, /* properties_provided */ + 0, /* properties_destroyed */ + 0, /* todo_flags_start */ + TODO_dump_func | TODO_verify_rtl_sharing /* todo_flags_finish */ + } +}; diff --git a/gcc/regmove.c b/gcc/regmove.c index 52ce8335a6a..ff38ff849ef 100644 --- a/gcc/regmove.c +++ b/gcc/regmove.c @@ -50,9 +50,16 @@ static void optimize_reg_copy_2 (rtx, rtx, rtx); static void optimize_reg_copy_3 (rtx, rtx, rtx); static void copy_src_to_dest (rtx, rtx, rtx); +enum match_use +{ + READ, + WRITE, + READWRITE +}; + struct match { int with[MAX_RECOG_OPERANDS]; - enum { READ, WRITE, READWRITE } use[MAX_RECOG_OPERANDS]; + enum match_use use[MAX_RECOG_OPERANDS]; int commutative[MAX_RECOG_OPERANDS]; int early_clobber[MAX_RECOG_OPERANDS]; }; diff --git a/gcc/sched-int.h b/gcc/sched-int.h index f7a54b67127..1b6a0345a01 100644 --- a/gcc/sched-int.h +++ b/gcc/sched-int.h @@ -1,7 +1,8 @@ /* Instruction scheduling pass. This file contains definitions used internally in the scheduler. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, - 2001, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009 + Free Software Foundation, Inc. This file is part of GCC. @@ -425,6 +426,24 @@ enum reg_pending_barrier_mode TRUE_BARRIER }; +/* Whether a register movement is associated with a call. */ +enum post_call_group +{ + not_post_call, + post_call, + post_call_initial +}; + +/* Insns which affect pseudo-registers. */ +struct deps_reg +{ + rtx uses; + rtx sets; + rtx clobbers; + int uses_length; + int clobbers_length; +}; + /* Describe state of dependencies used during sched_analyze phase. */ struct deps { @@ -488,7 +507,7 @@ struct deps /* Used to keep post-call pseudo/hard reg movements together with the call. */ - enum { not_post_call, post_call, post_call_initial } in_post_call_group_p; + enum post_call_group in_post_call_group_p; /* The maximum register number for the following arrays. Before reload this is max_reg_num; after reload it is FIRST_PSEUDO_REGISTER. */ @@ -498,14 +517,7 @@ struct deps N within the current basic block; or zero, if there is no such insn. Needed for new registers which may be introduced by splitting insns. */ - struct deps_reg - { - rtx uses; - rtx sets; - rtx clobbers; - int uses_length; - int clobbers_length; - } *reg_last; + struct deps_reg *reg_last; /* Element N is set for each register that has any nonzero element in reg_last[N].{uses,sets,clobbers}. */ diff --git a/gcc/target.h b/gcc/target.h index 63fab54c42e..b6935264e91 100644 --- a/gcc/target.h +++ b/gcc/target.h @@ -91,6 +91,18 @@ struct _dep; /* This is defined in ddg.h . */ struct ddg; +/* Assembler instructions for creating various kinds of integer object. */ + +struct asm_int_op +{ + const char *hi; + const char *si; + const char *di; + const char *ti; +}; + +/* The target structure. This holds all the backend hooks. */ + struct gcc_target { /* Functions that output assembler for the target. */ @@ -101,13 +113,7 @@ struct gcc_target /* Assembler instructions for creating various kinds of integer object. */ const char *byte_op; - struct asm_int_op - { - const char *hi; - const char *si; - const char *di; - const char *ti; - } aligned_op, unaligned_op; + struct asm_int_op aligned_op, unaligned_op; /* Try to output the assembler code for an integer object whose value is given by X. SIZE is the size of the object in bytes and diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index be5e1aa3d04..ca5cf9f7cc9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,192 @@ +2009-05-10 Ian Lance Taylor <iant@google.com> + + * gcc.dg/Wcxx-compat-7.c: New testcase. + * gcc.dg/Wcxx-compat-8.c: New testcase. + * gcc.dg/c99-tag-1.c: Recognize new "originally defined here" + notes + * gcc.dg/pr17188-1.c: Likewise. + * gcc.dg/pr39084.c: Likewise. + +2009-05-10 Michael Matz <matz@suse.de> + + PR target/40031 + * gcc.dg/pr40031.c: New test. + +2009-05-10 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/40018 + * gfortran.dg/array_constructor_31.f90: New test. + +2009-05-10 Richard Guenther <rguenther@suse.de> + + PR tree-optimization/40081 + * g++.dg/torture/pr40081.C: New testcase. + +2009-05-10 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/38863 + * gfortran.dg/dependency_24.f90: New test. + * gfortran.dg/dependency_23.f90: Clean up module files. + +2009-05-10 David Billinghurst <billingd@gcc.gnu.org> + + PR fortran/38956 + * gfortran.dg/chmod_1.f90: Don't run on *-*-cygwin*. + * gfortran.dg/chmod_2.f90: Likewise. + * gfortran.dg/chmod_3.f90: Likewise. + * gfortran.dg/open_errors.f90: Likewise. + +2009-05-09 Jan Hubicka <jh@suse.cz> + + PR middle-end/40043 + * g++.dg/eh/nested-try.C: New test. + +2009-05-08 Michael Meissner <meissner@linux.vnet.ibm.com> + + PR tree-optimization/40049 + * gcc.dg/vect/vect-shift-2.c: New test. + +2009-05-08 Joseph Myers <joseph@codesourcery.com> + + * gcc.dg/torture/complex-sign-mul-minus-one.c, + gcc.dg/torture/complex-sign-mul-one.c: New tests. + +2009-05-08 H.J. Lu <hongjiu.lu@intel.com> + + PR c/36892 + * g++.dg/warn/deprecated-6.C: New. + * gcc.dg/deprecated-4.c: Likewise. + * gcc.dg/deprecated-5.c: Likewise. + * gcc.dg/deprecated-6.c: Likewise. + +2009-05-08 H.J. Lu <hongjiu.lu@intel.com> + + * gcc.dg/vect/no-vfa-vect-37.c: Replace __aligned__(16) with + __aligned__(__BIGGEST_ALIGNMENT__). + * gcc.dg/vect/no-vfa-vect-43.c: Likewise. + * gcc.dg/vect/no-vfa-vect-49.c: Likewise. + * gcc.dg/vect/no-vfa-vect-53.c: Likewise. + * gcc.dg/vect/no-vfa-vect-57.c: Likewise. + * gcc.dg/vect/no-vfa-vect-61.c: Likewise. + * gcc.dg/vect/no-vfa-vect-79.c: Likewise. + * gcc.dg/vect/Os-vect-95.c: Likewise. + * gcc.dg/vect/pr20122.c: Likewise. + * gcc.dg/vect/pr36493.c: Likewise. + * gcc.dg/vect/pr37385.c: Likewise. + * gcc.dg/vect/slp-7.c: Likewise. + * gcc.dg/vect/slp-9.c: Likewise. + * gcc.dg/vect/slp-widen-mult-s16.c: Likewise. + * gcc.dg/vect/slp-widen-mult-u8.c: Likewise. + * gcc.dg/vect/vect-35.c: Likewise. + * gcc.dg/vect/vect-40.c: Likewise. + * gcc.dg/vect/vect-42.c: Likewise. + * gcc.dg/vect/vect-44.c: Likewise. + * gcc.dg/vect/vect-46.c: Likewise. + * gcc.dg/vect/vect-48.c: Likewise. + * gcc.dg/vect/vect-52.c: Likewise. + * gcc.dg/vect/vect-54.c: Likewise. + * gcc.dg/vect/vect-56.c: Likewise. + * gcc.dg/vect/vect-58.c: Likewise. + * gcc.dg/vect/vect-60.c: Likewise. + * gcc.dg/vect/vect-74.c: Likewise. + * gcc.dg/vect/vect-75.c: Likewise. + * gcc.dg/vect/vect-76.c: Likewise. + * gcc.dg/vect/vect-77-alignchecks.c: Likewise. + * gcc.dg/vect/vect-77.c: Likewise. + * gcc.dg/vect/vect-77-global.c: Likewise. + * gcc.dg/vect/vect-78-alignchecks.c: Likewise. + * gcc.dg/vect/vect-78.c: Likewise. + * gcc.dg/vect/vect-78-global.c: Likewise. + * gcc.dg/vect/vect-80.c: Likewise. + * gcc.dg/vect/vect-85.c: Likewise. + * gcc.dg/vect/vect-87.c: Likewise. + * gcc.dg/vect/vect-88.c: Likewise. + * gcc.dg/vect/vect-92.c: Likewise. + * gcc.dg/vect/vect-93.c: Likewise. + * gcc.dg/vect/vect-95.c: Likewise. + * gcc.dg/vect/vect-97.c: Likewise. + * gcc.dg/vect/vect-complex-1.c: Likewise. + * gcc.dg/vect/vect-complex-4.c: Likewise. + * gcc.dg/vect/vect-complex-5.c: Likewise. + * gcc.dg/vect/vect-multitypes-10.c: Likewise. + * gcc.dg/vect/vect-multitypes-11.c: Likewise. + * gcc.dg/vect/vect-multitypes-12.c: Likewise. + * gcc.dg/vect/vect-multitypes-13.c: Likewise. + * gcc.dg/vect/vect-multitypes-14.c: Likewise. + * gcc.dg/vect/vect-multitypes-15.c: Likewise. + * gcc.dg/vect/vect-multitypes-16.c: Likewise. + * gcc.dg/vect/vect-multitypes-17.c: Likewise. + * gcc.dg/vect/vect-multitypes-3.c: Likewise. + * gcc.dg/vect/vect-multitypes-6.c: Likewise. + * gcc.dg/vect/vect-multitypes-7.c: Likewise. + * gcc.dg/vect/vect-multitypes-8.c: Likewise. + * gcc.dg/vect/vect-multitypes-9.c: Likewise. + * gcc.dg/vect/vect-outer-1a.c: Likewise. + * gcc.dg/vect/vect-outer-1.c: Likewise. + * gcc.dg/vect/vect-outer-2a.c: Likewise. + * gcc.dg/vect/vect-outer-2b.c: Likewise. + * gcc.dg/vect/vect-outer-2.c: Likewise. + * gcc.dg/vect/vect-outer-2c.c: Likewise. + * gcc.dg/vect/vect-outer-2d.c: Likewise. + * gcc.dg/vect/vect-outer-3a.c: Likewise. + * gcc.dg/vect/vect-outer-3b.c: Likewise. + * gcc.dg/vect/vect-outer-3.c: Likewise. + * gcc.dg/vect/vect-outer-3c.c: Likewise. + * gcc.dg/vect/vect-outer-5.c: Likewise. + * gcc.dg/vect/vect-outer-6.c: Likewise. + * gcc.dg/vect/vect-reduc-dot-s16a.c: Likewise. + * gcc.dg/vect/vect-reduc-dot-s16b.c: Likewise. + * gcc.dg/vect/vect-reduc-dot-s8a.c: Likewise. + * gcc.dg/vect/vect-reduc-dot-s8b.c: Likewise. + * gcc.dg/vect/vect-reduc-dot-s8c.c: Likewise. + * gcc.dg/vect/vect-reduc-dot-u16a.c: Likewise. + * gcc.dg/vect/vect-reduc-dot-u16b.c: Likewise. + * gcc.dg/vect/vect-reduc-dot-u8a.c: Likewise. + * gcc.dg/vect/vect-reduc-dot-u8b.c: Likewise. + * gcc.dg/vect/vect-widen-mult-s16.c: Likewise. + * gcc.dg/vect/vect-widen-mult-s8.c: Likewise. + * gcc.dg/vect/vect-widen-mult-u16.c: Likewise. + * gcc.dg/vect/vect-widen-mult-u8.c: Likewise. + * gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c: Likewise. + +2009-05-08 Joseph Myers <joseph@codesourcery.com> + + PR c/24581 + * gcc.dg/torture/complex-sign.h: New header. + * gcc.dg/torture/complex-sign-add.c, + gcc.dg/torture/complex-sign-mixed-add.c, + gcc.dg/torture/complex-sign-mixed-div.c, + gcc.dg/torture/complex-sign-mixed-mul.c, + gcc.dg/torture/complex-sign-mixed-sub.c, + gcc.dg/torture/complex-sign-mul.c, + gcc.dg/torture/complex-sign-sub.c: New tests. + +2009-05-08 Janus Weil <janus@gcc.gnu.org> + + PR fortran/39876 + * gfortran.dg/intrinsic_3.f90: New. + +2009-05-07 Janis Johnson <janis187@us.ibm.com> + + PR c/39037 + * gcc.dg/Wunsuffixed-float-constants-1.c: New test. + * gcc.dg/cpp/pragma-float-const-decimal64-1.c: New test. + * gcc.dg/dfp/float-constant-double.c: New test. + * gcc.dg/dfp/pragma-float-const-decimal64-1.c: New test. + * gcc.dg/dfp/pragma-float-const-decimal64-2.c: New test. + * gcc.dg/dfp/pragma-float-const-decimal64-3.c: New test. + * gcc.dg/dfp/pragma-float-const-decimal64-4.c: New test. + * gcc.dg/dfp/pragma-float-const-decimal64-5.c: New test. + * gcc.dg/dfp/pragma-float-const-decimal64-6.c: New test. + * gcc.dg/dfp/pragma-float-const-decimal64-7.c: New test. + * gcc.dg/dfp/pragma-float-const-decimal64-8.c: New test. + * g++.dg/cpp/pragma-float-const-decimal64-1.C: New test. + +2009-05-07 Jakub Jelinek <jakub@redhat.com> + + PR middle-end/40057 + * gcc.c-torture/execute/pr40057.c: New test. + 2009-05-06 James E. Wilson <wilson@codesourcery.com> * gcc.c-torture/compile/const-high-part.c: New test. diff --git a/gcc/testsuite/g++.dg/cpp/pragma-float-const-decimal64-1.C b/gcc/testsuite/g++.dg/cpp/pragma-float-const-decimal64-1.C new file mode 100644 index 00000000000..31e1ad6d507 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp/pragma-float-const-decimal64-1.C @@ -0,0 +1,5 @@ +// { dg-do compile } +// { dg-options "-Wunknown-pragmas" } + +#pragma STDC FLOAT_CONST_DECIMAL64 ON // { dg-warning "not supported for C\\\+\\\+" } +double d = 1.0; diff --git a/gcc/testsuite/g++.dg/eh/nested-try.C b/gcc/testsuite/g++.dg/eh/nested-try.C new file mode 100644 index 00000000000..5796f9a2806 --- /dev/null +++ b/gcc/testsuite/g++.dg/eh/nested-try.C @@ -0,0 +1,25 @@ +// { dg-do compile } +// Nested try statements shadowing each other was crashing in EH edge redirection. +// PR middle-end/40043 +struct A +{ + ~A(); + void foo(); +}; + +void bar() +{ + A a; + + try + { + A b; + + try + { + b.foo(); + } + catch (int) {} + } + catch (int) {} +} diff --git a/gcc/testsuite/g++.dg/torture/pr40081.C b/gcc/testsuite/g++.dg/torture/pr40081.C new file mode 100644 index 00000000000..e65c5a8438d --- /dev/null +++ b/gcc/testsuite/g++.dg/torture/pr40081.C @@ -0,0 +1,16 @@ +struct Atomic_t { + Atomic_t(int i) : val(i) { } + volatile int val; +}; +class RefCount { +public: + RefCount(Atomic_t c) : m_count(c) { } + Atomic_t m_count; +}; +class IntrusiveCountableBase { + RefCount m_useCount; +protected: + IntrusiveCountableBase(); +}; +IntrusiveCountableBase::IntrusiveCountableBase() : m_useCount(0) { } + diff --git a/gcc/testsuite/g++.dg/warn/deprecated-6.C b/gcc/testsuite/g++.dg/warn/deprecated-6.C new file mode 100644 index 00000000000..8ce6ac02d52 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/deprecated-6.C @@ -0,0 +1,110 @@ +/* Test __attribute__ ((deprecated("message"))) */ +/* { dg-do compile } */ +/* { dg-options "-Wdeprecated-declarations -fmessage-length=0" } */ + +typedef int INT1 __attribute__((deprecated("Please avoid INT1"))); +typedef INT1 INT2 __attribute__ ((__deprecated__("Please avoid INT2"))); + +typedef INT1 INT1a; /* { dg-warning "'INT1' is deprecated .declared at \[^\n\]*: Please avoid INT1" "" } */ + +INT1 should_be_unavailable; /* { dg-warning "'INT1' is deprecated .declared at \[^\n\]*: Please avoid INT1" "" } */ +INT1a should_not_be_deprecated; + +INT1 f1(void) __attribute__ ((deprecated("Please avoid f1"))); +INT1 f2(void) { return 0; } /* { dg-warning "'INT1' is deprecated .declared at \[^\n\]*: Please avoid INT1" "" } */ + +INT2 f3(void) __attribute__ ((__deprecated__("Please avoid f3"))); +INT2 f4(void) { return 0; } /* { dg-warning "'INT2' is deprecated .declared at \[^\n\]*: Please avoid INT2" "" } */ +int f5(INT2 x); /* { dg-warning "'INT2' is deprecated" "" } */ +int f6(INT2 x) __attribute__ ((__deprecated__("Please avoid f6"))); + +typedef enum Color {red, green, blue} Color __attribute__((deprecated("Please avoid Color"))); + +int g1; +int g2 __attribute__ ((deprecated("Please avoid g2"))); +int g3 __attribute__ ((__deprecated__("Please avoid g3"))); +Color k; /* { dg-warning "'Color' is deprecated .declared at \[^\n\]*: Please avoid Color" "" } */ + +typedef struct { + int field1; + int field2 __attribute__ ((deprecated("Please avoid field2"))); + int field3; + int field4 __attribute__ ((__deprecated__("Please avoid field4"))); + union { + int field5; + int field6 __attribute__ ((deprecated("Please avoid field6"))); + } u1; + int field7:1; + int field8:1 __attribute__ ((deprecated("Please avoid field8"))); + union { + int field9; + int field10; + } u2 __attribute__ ((deprecated("Please avoid u2"))); +} S1; + +int func1() +{ + INT1 w; /* { dg-warning "'INT1' is deprecated .declared at \[^\n\]*: Please avoid INT1" "" } */ + int x __attribute__ ((deprecated("Please avoid x"))); + int y __attribute__ ((__deprecated__("Please avoid y"))); + int z; + int (*pf)() = f1; /* { dg-warning "'INT1 f1\\(\\)' is deprecated .declared at \[^\n\]*: Please avoid f1" "" } */ + + z = w + x + y + g1 + g2 + g3; /* { dg-warning "'x' is deprecated .declared at \[^\n\]*: Please avoid x" "" } */ + /* { dg-warning "'y' is deprecated .declared at \[^\n\]*: Please avoid y" "y" { target *-*-* } 53 } */ + /* { dg-warning "'g2' is deprecated .declared at \[^\n\]*: Please avoid g2" "g2" { target *-*-* } 53 } */ + /* { dg-warning "'g3' is deprecated .declared at \[^\n\]*: Please avoid g3" "g3" { target *-*-* } 53 } */ + return f1(); /* { dg-warning "'INT1 f1\\(\\)' is deprecated .declared at \[^\n\]*: Please avoid f1" "f1" } */ +} + +int func2(S1 *p) +{ + S1 lp; + + if (p->field1) + return p->field2; /* { dg-warning "'S1::field2' is deprecated .declared at \[^\n\]*: Please avoid field2" "" } */ + else if (lp.field4) /* { dg-warning "'S1::field4' is deprecated .declared at \[^\n\]*: Please avoid field4" "" } */ + return p->field3; + + p->u1.field5 = g1 + p->field7; + p->u2.field9; /* { dg-warning "'S1::u2' is deprecated .declared at \[^\n\]*: Please avoid u2" "" } */ + return p->u1.field6 + p->field8; /* { dg-warning "'S1::<anonymous union>::field6' is deprecated .declared at \[^\n\]*: Please avoid field6" "" } */ + /* { dg-warning "'S1::field8' is deprecated .declared at \[^\n\]*: Please avoid field8" "field8" { target *-*-* } 71 } */ +} + +struct SS1 { + int x; + INT1 y; /* { dg-warning "'INT1' is deprecated .declared at \[^\n\]*: Please avoid INT1" "" } */ +} __attribute__ ((deprecated("Please avoid SS1"))); + +struct SS1 *p1; /* { dg-warning "'SS1' is deprecated .declared at \[^\n\]*: Please avoid SS1" "" } */ + +struct __attribute__ ((__deprecated__("Please avoid SS2"))) SS2 { + int x; + INT1 y; /* { dg-warning "'INT1' is deprecated .declared at \[^\n\]*: Please avoid INT1" "" } */ +}; + +struct SS2 *p2; /* { dg-warning "'SS2' is deprecated .declared at \[^\n\]*: Please avoid SS2" "" } */ + +class T { + public: + void member1(int) __attribute__ ((deprecated("Please avoid member1"))); + void member2(INT1) __attribute__ ((__deprecated__("Please avoid member2"))); /* { dg-warning "'INT1' is deprecated" "" } */ + int member3(T *); + int x; +} __attribute__ ((deprecated("Please avoid T"))); + +T *p3; // { dg-warning "'T' is deprecated .declared at \[^\n\]*: Please avoid T" } + +inline void T::member1(int) {} + +int T::member3(T *p) // { dg-warning "'T' is deprecated .declared at \[^\n\]*: Please avoid T" } +{ + p->member1(1); /* { dg-warning "'void T::member1\\(int\\)' is deprecated .declared at \[^\n\]*: Please avoid member1" "" } */ + (*p).member1(2); /* { dg-warning "'void T::member1\\(int\\)' is deprecated .declared at \[^\n\]*: Please avoid member1" "" } */ + p->member2(1); /* { dg-warning "'void T::member2\\(INT1\\)' is deprecated .declared at \[^\n\]*: Please avoid member2" "" } */ + (*p).member2(2); /* { dg-warning "'void T::member2\\(INT1\\)' is deprecated .declared at \[^\n\]*: Please avoid member2" "" } */ + p->member3(p); + (*p).member3(p); + return f1(); /* { dg-warning "'INT1 f1\\(\\)' is deprecated .declared at \[^\n\]*: Please avoid f1" "" } */ +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr40057.c b/gcc/testsuite/gcc.c-torture/execute/pr40057.c new file mode 100644 index 00000000000..9d5c4e31e87 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr40057.c @@ -0,0 +1,37 @@ +/* PR middle-end/40057 */ + +extern void abort (void); + +__attribute__((noinline)) int +foo (unsigned long long x) +{ + unsigned long long y = (x >> 31ULL) & 1ULL; + if (y == 0ULL) + return 0; + return -1; +} + +__attribute__((noinline)) int +bar (long long x) +{ + long long y = (x >> 31LL) & 1LL; + if (y == 0LL) + return 0; + return -1; +} + +int +main (void) +{ + if (sizeof (long long) != 8) + return 0; + if (foo (0x1682a9aaaULL)) + abort (); + if (!foo (0x1882a9aaaULL)) + abort (); + if (bar (0x1682a9aaaLL)) + abort (); + if (!bar (0x1882a9aaaLL)) + abort (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/Wcxx-compat-7.c b/gcc/testsuite/gcc.dg/Wcxx-compat-7.c new file mode 100644 index 00000000000..bccbd1107b6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wcxx-compat-7.c @@ -0,0 +1,35 @@ +/* { dg-do compile } */ +/* { dg-options "-Wc++-compat" } */ + +struct s1 +{ + enum e1 /* { dg-message "note: enum type defined here" } */ + { + A, /* { dg-message "note: enum constant defined here" } */ + B + } f1; + struct s2 /* { dg-message "note: struct defined here" } */ + { + struct s3 /* { dg-message "note: struct defined here" } */ + { + enum e1 f3; + struct s1 *p1; + struct s2 *p2; + struct s3 *p3; + } f2; + union u1 /* { dg-message "note: union defined here" } */ + { + int f4; + } f5; + struct s3 f6; + } f7; + struct s2 f8; + enum e1 f9; +}; + +struct s1 v1; +enum e1 v2; /* { dg-warning "not visible in C\[+\]\[+\]" } */ +struct s2 v3; /* { dg-warning "not visible in C\[+\]\[+\]" } */ +struct s3 v4; /* { dg-warning "not visible in C\[+\]\[+\]" } */ +union u1 v5; /* { dg-warning "not visible in C\[+\]\[+\]" } */ +int i = A; /* { dg-warning "not visible in C\[+\]\[+\]" } */ diff --git a/gcc/testsuite/gcc.dg/Wcxx-compat-8.c b/gcc/testsuite/gcc.dg/Wcxx-compat-8.c new file mode 100644 index 00000000000..a7343ba91e6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wcxx-compat-8.c @@ -0,0 +1,43 @@ +/* { dg-do compile } */ +/* { dg-options "-Wc++-compat" } */ + +struct s1 +{ + enum e1 /* { dg-message "note: enum type defined here" } */ + { + A = sizeof (struct s2 { int i; }), /* { dg-warning "invalid in C\[+\]\[+\]" } */ + B + } f1; +}; +struct s2 v1; /* Don't issue another warning about s2. */ +enum e1 v2; /* { dg-warning "not visible in C\[+\]\[+\]" } */ + +enum e2 +{ + C = sizeof (struct s3 { int i; }), /* { dg-warning "invalid in C\[+\]\[+\]" } */ + D = __alignof__ (struct s4 { int i; }), /* { dg-warning "invalid in C\[+\]\[+\]" } */ + E +}; + +struct s3 v3; +int v4 = C; + +__typeof__ (struct s5 { int i; }) v5; /* { dg-warning "invalid in C\[+\]\[+\]" } */ + +int +f1 (struct s1 *p) +{ + return ((struct s6 { int j; } *) p)->j; /* { dg-warning "invalid in C\[+\]\[+\]" } */ +} + +int +f2 (struct s1 *p) +{ + return (__extension__ (struct s7 { int j; } *)p)->j; +} + +int +f3 () +{ + return (struct s8 { int i; }) { 0 }.i; /* { dg-warning "invalid in C\[+\]\[+\]" } */ +} diff --git a/gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c b/gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c new file mode 100644 index 00000000000..b4a38d5cb10 --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99 -Wunsuffixed-float-constants" } */ + +#define VAL 0.5; + +double a = 1.1d; + +/* With FLOAT_CONST_DECIMAL64 switched to ON these would have type + _Decimal64. */ + +double b = VAL; /* { dg-warning "unsuffixed float constant" } */ +double c = 1.2; /* { dg-warning "unsuffixed float constant" } */ + +/* With FLOAT_CONST_DECIMAL64 switched to ON these are still binary. */ + +double d = 0x5.0p1; /* No warning for hex constant. */ +double e = 3.1i; /* No warning for imaginary constant. */ diff --git a/gcc/testsuite/gcc.dg/c99-tag-1.c b/gcc/testsuite/gcc.dg/c99-tag-1.c index e93d3bcf0b4..dd525317d03 100644 --- a/gcc/testsuite/gcc.dg/c99-tag-1.c +++ b/gcc/testsuite/gcc.dg/c99-tag-1.c @@ -24,7 +24,7 @@ foo (void) /* A specific type shall have its content defined at most once. But we may redeclare the tag in different scopes. */ { - struct s0 { int i; }; + struct s0 { int i; }; /* { dg-message "note: originally defined here" } */ { struct s0 { long l; }; } @@ -33,7 +33,7 @@ foo (void) } struct s0 { int i; }; /* { dg-bogus "warning" "warning in place of error" } */ /* { dg-error "rede" "struct redef" { target *-*-* } 34 } */ - union u0 { int i; }; + union u0 { int i; }; /* { dg-message "note: originally defined here" } */ { union u0 { long l; }; } @@ -42,7 +42,7 @@ foo (void) } union u0 { int i; }; /* { dg-bogus "warning" "warning in place of error" } */ /* { dg-error "rede" "union redef" { target *-*-* } 43 } */ - enum e0 { E0A }; + enum e0 { E0A }; /* { dg-message "note: originally defined here" } */ { enum e0 { E0B }; } diff --git a/gcc/testsuite/gcc.dg/cpp/pragma-float-const-decimal64-1.c b/gcc/testsuite/gcc.dg/cpp/pragma-float-const-decimal64-1.c new file mode 100644 index 00000000000..633383899dd --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/pragma-float-const-decimal64-1.c @@ -0,0 +1,5 @@ +/* { dg-do compile { target { ! dfp } } } */ +/* { dg-options "-std=gnu99 -Wunknown-pragmas" } */ + +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "not supported on this target" } */ +double d = 1.0; diff --git a/gcc/testsuite/gcc.dg/deprecated-4.c b/gcc/testsuite/gcc.dg/deprecated-4.c new file mode 100644 index 00000000000..f36dbdf9af1 --- /dev/null +++ b/gcc/testsuite/gcc.dg/deprecated-4.c @@ -0,0 +1,88 @@ +/* Test __attribute__ ((deprecated("message"))) */ +/* { dg-do compile } */ +/* { dg-options "-Wdeprecated-declarations" } */ + +typedef int INT1 __attribute__((deprecated("Please avoid INT1"))); +typedef INT1 INT2 __attribute__ ((__deprecated__("Please avoid INT2"))); + +typedef INT1 INT1a; /* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */ +typedef INT1 INT1b __attribute__ ((deprecated("Please avoid INT1b"))); + +INT1 should_be_unavailable; /* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */ +INT1a should_not_be_deprecated; + +INT1 f1(void) __attribute__ ((deprecated("Please avoid f1"))); +INT1 f2(void) { return 0; } /* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */ + +INT2 f3(void) __attribute__ ((__deprecated__("Please avoid f3"))); +INT2 f4(void) { return 0; } /* { dg-warning "'INT2' is deprecated: Please avoid INT2" "" } */ +int f5(INT2 x); /* { dg-warning "'INT2' is deprecated: Please avoid INT2" "" } */ +int f6(INT2 x) __attribute__ ((__deprecated__("Please avoid f6"))); /* { dg-warning "'INT2' is deprecated: Please avoid INT2" "" } */ + +typedef enum {red, green, blue} Color __attribute__((deprecated("Please avoid Color"))); + +int g1; +int g2 __attribute__ ((deprecated("Please avoid g2"))); +int g3 __attribute__ ((__deprecated__("Please avoid g3"))); +Color k; /* { dg-warning "'Color' is deprecated .declared at \[^\n\]*: Please avoid Color" "" } */ + +typedef struct { + int field1; + int field2 __attribute__ ((deprecated("Please avoid field2"))); + int field3; + int field4 __attribute__ ((__deprecated__("Please avoid field4"))); + union { + int field5; + int field6 __attribute__ ((deprecated("Please avoid field6"))); + } u1; + int field7:1; + int field8:1 __attribute__ ((deprecated("Please avoid field8"))); + union { + int field9; + int field10; + } u2 __attribute__ ((deprecated("Please avoid u2"))); +} S1; + +int func1() +{ + INT1 w; /* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */ + int x __attribute__ ((deprecated("Avoid x"))); + int y __attribute__ ((__deprecated__("Bad y"))); + int z; + int (*pf)() = f1; /* { dg-warning "'f1' is deprecated .declared at \[^\n\]*: Please avoid f1" "" } */ + + z = w + x + y + g1 + g2 + g3; /* { dg-warning "'x' is deprecated .declared at \[^\n\]*: Avoid x" "" } */ + /* { dg-warning "'y' is deprecated .declared at \[^\n\]*: Bad y" "y" { target *-*-* } 54 } */ + /* { dg-warning "'g2' is deprecated .declared at \[^\n\]*: Please avoid g2" "g2" { target *-*-* } 54 } */ + /* { dg-warning "'g3' is deprecated .declared at \[^\n\]*: Please avoid g3" "g3" { target *-*-* } 54 } */ + return f1(); /* { dg-warning "'f1' is deprecated .declared at \[^\n\]*: Please avoid f1" "" } */ +} + +int func2(S1 *p) +{ + S1 lp; + + if (p->field1) + return p->field2; /* { dg-warning "'field2' is deprecated .declared at \[^\n\]*: Please avoid field2" "" } */ + else if (lp.field4) /* { dg-warning "'field4' is deprecated .declared at \[^\n\]*: Please avoid field4" "" } */ + return p->field3; + + p->u1.field5 = g1 + p->field7; + p->u2.field9; /* { dg-warning "'u2' is deprecated .declared at \[^\n\]*: Please avoid u2" "" } */ + return p->u1.field6 + p->field8; /* { dg-warning "'field6' is deprecated .declared at \[^\n\]*: Please avoid field6" "" } */ + /* { dg-warning "'field8' is deprecated .declared at \[^\n\]*: Please avoid field8" "field8" { target *-*-* } 72 } */ +} + +struct SS1 { + int x; + INT1 y; /* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */ +} __attribute__ ((deprecated("Please avoid SS1"))); + +struct SS1 *p1; /* { dg-warning "'SS1' is deprecated .declared at \[^\n\]*: Please avoid SS1" "" } */ + +struct __attribute__ ((__deprecated__("Please avoid SS2"))) SS2 { + int x; + INT1 y; /* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */ +}; + +struct SS2 *p2; /* { dg-warning "'SS2' is deprecated .declared at \[^\n\]*: Please avoid SS2" "" } */ diff --git a/gcc/testsuite/gcc.dg/deprecated-5.c b/gcc/testsuite/gcc.dg/deprecated-5.c new file mode 100644 index 00000000000..133e60e4057 --- /dev/null +++ b/gcc/testsuite/gcc.dg/deprecated-5.c @@ -0,0 +1,7 @@ +/* Test __attribute__((deprecated)). Test types without names. */ +/* Origin: Joseph Myers <jsm@polyomino.org.uk> */ +/* { dg-do compile } */ +/* { dg-options "" } */ + +struct { int a; } __attribute__((deprecated ("Do not use"))) x; /* { dg-warning "type is deprecated" } */ +typeof(x) y; /* { dg-warning "type is deprecated .declared at .*.: Do not use" } */ diff --git a/gcc/testsuite/gcc.dg/deprecated-6.c b/gcc/testsuite/gcc.dg/deprecated-6.c new file mode 100644 index 00000000000..874e1a68e07 --- /dev/null +++ b/gcc/testsuite/gcc.dg/deprecated-6.c @@ -0,0 +1,11 @@ +/* Test __attribute__((deprecated)). Test merging with multiple + declarations. Bug 7425. */ +/* { dg-do compile } */ +/* { dg-options "" } */ + +void func(void); +void func(void) __attribute__((deprecated ("Do not use"))); + +void f(void) { + func(); /* { dg-warning "'func' is deprecated .declared at .*.: Do not use" } */ +} diff --git a/gcc/testsuite/gcc.dg/dfp/float-constant-double.c b/gcc/testsuite/gcc.dg/dfp/float-constant-double.c new file mode 100644 index 00000000000..3f8de656bf6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/dfp/float-constant-double.c @@ -0,0 +1,21 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99" } */ + +/* Constant float values of type double in <float.h> are suffixed with L + and cast to double so they can be used within code that uses pragma + FLOAT_CONST_DECIMAL64. If they were not suffixed then use of the macro + would have them interpreted as _Decimal64, leading to errors when used + in expressions with other operands of type double. */ + +#include <float.h> + +extern double a, b, c, d; + +void +foo () +{ + _Pragma ("STDC FLOAT_CONST_DECIMAL64 ON") + a = 0.1d * DBL_MAX; + b = DBL_EPSILON * 10.0d; + c = DBL_MIN * 200.0d; +} diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-1.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-1.c new file mode 100644 index 00000000000..79fabf34484 --- /dev/null +++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-1.c @@ -0,0 +1,85 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99 -Wall" } */ + +/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma. + C99 6.4.4.2a (New). + + Verify that the pragma has the expected result by using unsuffixed + float constants as operands in expressions that would mix binary and + decimal operands if the pragma had no effect, or the wrong effect. */ + +#pragma STDC FLOAT_CONST_DECIMAL64 ON +double a = 1.0 * 2.0dd; + +double +f1 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 OFF + double b = 2.0 * 3.0d; + + { + double c = 3.0 * 4.0d; + b = b + c; + } + + { +#pragma STDC FLOAT_CONST_DECIMAL64 ON + double d = 4.0 * 5.0dd; + + b = b + d; + } + + { + /* Default is OFF. */ +#pragma STDC FLOAT_CONST_DECIMAL64 DEFAULT + double e = 5.0 * 6.0d; + b = b + e; + } + + return b; +} + +double +f2 (void) +{ + /* Use value from outer scope, which is ON. */ + double b = 2.0 * 3.0dd; + + { +#pragma STDC FLOAT_CONST_DECIMAL64 OFF + double c = 3.0 * 4.0d; + + { +#pragma STDC FLOAT_CONST_DECIMAL64 ON + double d = 4.0 * 5.0dd; + + { +#pragma STDC FLOAT_CONST_DECIMAL64 DEFAULT + double e = 5.0 * 6.0d; + + { +#pragma STDC FLOAT_CONST_DECIMAL64 ON + double f = 6.0 * 7.0dd; + + b = a + b + c + d + e + f; + } + } + } + } + return b; +} + +/* Use previous value from this scope, which is ON. */ +double f = 6.0 * 7.0dd; + +double +f3 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 OFF + double b = 2.0 * 3.0d; + + return b + f; +} + +/* Return to the state from this scope, which is ON. */ +double g = 7.0 + 8.0dd; diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-2.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-2.c new file mode 100644 index 00000000000..212748c6c78 --- /dev/null +++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-2.c @@ -0,0 +1,86 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99 -Wall" } */ + +/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma. + C99 6.4.4.2a (New). + + Verify that the pragma has the expected result by using unsuffixed + float constants as operands in expressions that would mix binary and + decimal operands if the pragma had no effect, or the wrong effect. + Use _Pragma rather than #pragma. */ + +_Pragma ("STDC FLOAT_CONST_DECIMAL64 ON") +double a = 1.0 * 2.0dd; + +double +f1 (void) +{ +_Pragma ("STDC FLOAT_CONST_DECIMAL64 OFF") + double b = 2.0 * 3.0d; + + { + double c = 3.0 * 4.0d; + b = b + c; + } + + { +_Pragma ("STDC FLOAT_CONST_DECIMAL64 ON") + double d = 4.0 * 5.0dd; + + b = b + d; + } + + { + /* Default is OFF. */ +_Pragma ("STDC FLOAT_CONST_DECIMAL64 DEFAULT") + double e = 5.0 * 6.0d; + b = b + e; + } + + return b; +} + +double +f2 (void) +{ + /* Use value from outer scope, which is ON. */ + double b = 2.0 * 3.0dd; + + { +_Pragma ("STDC FLOAT_CONST_DECIMAL64 OFF") + double c = 3.0 * 4.0d; + + { +_Pragma ("STDC FLOAT_CONST_DECIMAL64 ON") + double d = 4.0 * 5.0dd; + + { +_Pragma ("STDC FLOAT_CONST_DECIMAL64 DEFAULT") + double e = 5.0 * 6.0d; + + { +_Pragma ("STDC FLOAT_CONST_DECIMAL64 ON") + double f = 6.0 * 7.0dd; + + b = a + b + c + d + e + f; + } + } + } + } + return b; +} + +/* Use previous value from this scope, which is ON. */ +double f = 6.0 * 7.0dd; + +double +f3 (void) +{ +_Pragma ("STDC FLOAT_CONST_DECIMAL64 OFF") + double b = 2.0 * 3.0d; + + return b + f; +} + +/* Return to the state from this scope, which is ON. */ +double g = 7.0 + 8.0dd; diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-3.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-3.c new file mode 100644 index 00000000000..b9286aac11a --- /dev/null +++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-3.c @@ -0,0 +1,83 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99 -Wall" } */ + +/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma. + C99 6.4.4.2a (New). */ + +/* Check that defining macros whose names are the same as the tokens used + in the pragma doesn't affect use of the pragma. */ + +#define ON YES +#define OFF NO +#define DEFAULT NOPE +#define STDC OFFICIAL +#define FLOAT_CONST_DECIMAL64 NEW_PRAGMA + +double a; + +void +f1a (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 ON + a = 1.0dd + 2.0; +} + +void +f1b (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 OFF + a = 2.0d + 3.0; +} + +void +f1c (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 DEFAULT + a = 3.0d + 4.0; +} + +/* Check that a macro can be used for the entire pragma. */ + +#define PRAGMA(x) _Pragma (#x) +#define DEFAULT_FLOAT_IS_DECIMAL PRAGMA(STDC FLOAT_CONST_DECIMAL64 ON) +#define DEFAULT_FLOAT_IS_BINARY PRAGMA(STDC FLOAT_CONST_DECIMAL64 OFF) + +void +f2a (void) +{ + DEFAULT_FLOAT_IS_DECIMAL + a = 5.0 * 6.0dd; +} + +void +f2b (void) +{ + DEFAULT_FLOAT_IS_BINARY + a = 6.0 * 7.0d; +} + +/* _Pragma can be used with macros, including the use of a macro for the + switch. */ + +#undef ON +#undef OFF +#undef DEFAULT +#undef STDC +#undef FLOAT_CONST_DECIMAL64 + +#define SWITCH ON +#define FLOAT_CONST_DECIMAL64(x) PRAGMA(STDC FLOAT_CONST_DECIMAL64 x) + +void +f3a (void) +{ + FLOAT_CONST_DECIMAL64(SWITCH) + a = 1.0 * 7.0dd; +} + +void +f3b (void) +{ + FLOAT_CONST_DECIMAL64(OFF) + a = 1.0 + 2.0d; +} diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-4.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-4.c new file mode 100644 index 00000000000..86cec1dbd45 --- /dev/null +++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-4.c @@ -0,0 +1,46 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99" } */ + +/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma. + C99 6.4.4.2a (New). + + Check that malformed versions of pragma STDC FLOAT_CONST_DECIMAL64 + are detected. */ + +double a; + +void f1 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 /* { dg-warning "malformed" } */ + a = 1.0; +} + +void f2 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 DFP /* { dg-warning "malformed" } */ + a = 2.0; +} + +void f3 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 ON DFP /* { dg-warning "junk at end" } */ + a = 3.0; +} + +void f4 (void) +{ + _Pragma ( "STDC FLOAT_CONST_DECIMAL64" ) /* { dg-warning "malformed" } */ + a = 1.0; +} + +void f5 (void) +{ + _Pragma ( "STDC FLOAT_CONST_DECIMAL64 DFP" ) /* { dg-warning "malformed" } */ + a = 2.0; +} + +void f6 (void) +{ + _Pragma ( "STDC FLOAT_CONST_DECIMAL64 ON DFP" ) /* { dg-warning "junk at end" } */ + a = 3.0; +} diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-5.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-5.c new file mode 100644 index 00000000000..75e9525dda0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-5.c @@ -0,0 +1,46 @@ +/* { dg-do compile } */ +/* { dg-options "-std=c99 -pedantic" } */ + +/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma. + C99 6.4.4.2a (New). + + Check that there is a pedantic warning for the use of pragma + STD FLOAT_CONST_DECIMAL64. */ + +double a; + +void f1 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "ISO C" } */ + a = 1.0; +} + +void f2 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-warning "ISO C" } */ + a = 2.0; +} + +void f3 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 DEFAULT /* { dg-warning "ISO C" } */ + a = 3.0; +} + +void f4 (void) +{ + _Pragma ("STDC FLOAT_CONST_DECIMAL64 ON") /* { dg-warning "ISO C" } */ + a = 1.0; +} + +void f5 (void) +{ + _Pragma ("STDC FLOAT_CONST_DECIMAL64 OFF") /* { dg-warning "ISO C" } */ + a = 2.0; +} + +void f6 (void) +{ + _Pragma ("STDC FLOAT_CONST_DECIMAL64 DEFAULT") /* { dg-warning "ISO C" } */ + a = 3.0; +} diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-6.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-6.c new file mode 100644 index 00000000000..03c1715bee6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-6.c @@ -0,0 +1,46 @@ +/* { dg-do compile } */ +/* { dg-options "-std=c99 -pedantic-errors" } */ + +/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma. + C99 6.4.4.2a (New). + + Check that there is a pedantic error for the use of pragma + STD FLOAT_CONST_DECIMAL64. */ + +double a; + +void f1 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "ISO C" } */ + a = 1.0; +} + +void f2 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-error "ISO C" } */ + a = 2.0; +} + +void f3 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 DEFAULT /* { dg-error "ISO C" } */ + a = 3.0; +} + +void f4 (void) +{ + _Pragma ("STDC FLOAT_CONST_DECIMAL64 ON") /* { dg-error "ISO C" } */ + a = 1.0; +} + +void f5 (void) +{ + _Pragma ("STDC FLOAT_CONST_DECIMAL64 OFF") /* { dg-error "ISO C" } */ + a = 2.0; +} + +void f6 (void) +{ + _Pragma ("STDC FLOAT_CONST_DECIMAL64 DEFAULT") /* { dg-error "ISO C" } */ + a = 3.0; +} diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-7.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-7.c new file mode 100644 index 00000000000..7533ee7f0de --- /dev/null +++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-7.c @@ -0,0 +1,39 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99 -Wall" } */ + +/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma. + C99 6.4.4.2a (New). + + Check that when pragma FLOAT_CONST_DECIMAL64 is in effect so that + unsuffixed constants are _Decimal64, invalid types are still reported + as invalid. */ + +double +f1 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 OFF + double a = 0x1.0p1; + double b = 1.0i; + + return a + b; +} + +double +f2 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 OFF + double a = 0x1.0p1dd; /* { dg-error "with hex" } */ + double b = 1.0idd; /* { dg-error "invalid suffix" } */ + + return a + b; +} + +double +f3 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 ON + double a = 0x1.0p1; /* Hex constant is not affected by pragma. */ + double b = 1.0i; /* Imaginary constant is not affected by pragma. */ + + return a + b; +} diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-8.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-8.c new file mode 100644 index 00000000000..5dbbda5b8f2 --- /dev/null +++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-8.c @@ -0,0 +1,174 @@ +/* { dg-do compile } */ +/* { dg-options "-std=gnu99 -Wall" } */ + +/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma. + C99 6.4.4.2a (New). + + Pragma STDC FLOAT_CONST_DECIMAL64 "shall occur either outside external + declarations or preceding all explicit declarations and statements + inside a compound statement." */ + +#pragma STDC FLOAT_CONST_DECIMAL64 OFF + +#define MAX 200 + +#pragma STDC FLOAT_CONST_DECIMAL64 ON + +double a; + +#pragma STDC FLOAT_CONST_DECIMAL64 OFF + +struct S1 { +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */ + int i; + int j; +}; + +struct S2 { + int i; +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */ + int j; +}; + +struct S3 { + int i; + int j; +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */ +}; + +enum E1 { +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */ + one, + two +}; + +enum E2 { + red, +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */ + blue +}; + +enum E3 { + cat, + dog +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */ +}; + +double +#pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-error "#pragma" } */ +b; + +double +f1 (void) +{ +#pragma STDC FLOAT_CONST_DECIMAL64 ON + return a; +} + +double +f2 (void) +{ + double b; +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */ + b = 0.5; + return a + b; +} + +#pragma STDC FLOAT_CONST_DECIMAL64 OFF + +double +f3 (void) +{ + typedef double b32; +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */ + b32 b = 0.5; + return b; +} + +double +f4 (int i) +{ +top: +#pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-warning "invalid location" } */ + if (i == 0) + return a; + a *= 2.; + i = 0; + goto top; +} + +double +f5 (int i) +{ + a = a * i; +#pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-warning "invalid location" } */ + return a * 2.; +} + +double +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */ +f6 (void) +{ + return a; +} + +double +f7 +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */ +(void) /* { dg-error "before" } */ +{ + return a; +} + +double +f8 (void) +{ + { +#pragma STDC FLOAT_CONST_DECIMAL64 OFF + } +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */ + return a; +} + +extern void foo9 (void *); + +double +f9 (void) +{ + __label__ here; +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */ + foo9 (&&here); +here: + return a; +} + +double +f10 (void) +{ + void foo10 (void) + { + a = 1.0; + } +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */ + return a; +} + +double +f11 (void) +{ + __extension__ + struct A { + struct { char a; }; + char b; + }; +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */ + return a; +} + +double +f12 (void) +{ + __extension__ ({ a = 0.5; }); +#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */ + return a; +} diff --git a/gcc/testsuite/gcc.dg/pr17188-1.c b/gcc/testsuite/gcc.dg/pr17188-1.c index 2cad0120fa4..522a14f7d75 100644 --- a/gcc/testsuite/gcc.dg/pr17188-1.c +++ b/gcc/testsuite/gcc.dg/pr17188-1.c @@ -5,20 +5,20 @@ /* { dg-do compile } */ /* { dg-options "" } */ -struct s0 { }; +struct s0 { }; /* { dg-message "note: originally defined here" } */ struct s0; struct s0 { }; /* { dg-error "redefinition of 'struct s0'" } */ -struct s1 { }; +struct s1 { }; /* { dg-message "note: originally defined here" } */ struct s1 { }; /* { dg-error "redefinition of 'struct s1'" } */ -struct s2 { int a : 1; }; +struct s2 { int a : 1; }; /* { dg-message "note: originally defined here" } */ struct s2 { int a : 1; }; /* { dg-error "redefinition of 'struct s2'" } */ -struct s3 { }; +struct s3 { }; /* { dg-message "note: originally defined here" } */ struct s3 { int a : 1; }; /* { dg-error "redefinition of 'struct s3'" } */ -struct s4 { int a : 1; }; +struct s4 { int a : 1; }; /* { dg-message "note: originally defined here" } */ struct s4 { }; /* { dg-error "redefinition of 'struct s4'" } */ struct s5 { int a : 1; }; diff --git a/gcc/testsuite/gcc.dg/pr39084.c b/gcc/testsuite/gcc.dg/pr39084.c index 6432841fb15..ff731492154 100644 --- a/gcc/testsuite/gcc.dg/pr39084.c +++ b/gcc/testsuite/gcc.dg/pr39084.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ /* { dg-options "-O2" } */ -struct color { int i; }; +struct color { int i; }; /* { dg-message "note: originally defined here" } */ static const struct color col; struct color * f(void) { diff --git a/gcc/testsuite/gcc.dg/pr40031.c b/gcc/testsuite/gcc.dg/pr40031.c new file mode 100644 index 00000000000..f6f1f65a7ee --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr40031.c @@ -0,0 +1,9 @@ +/* { dg-do compile { target fpic } } */ +/* { dg-options "-O2 -fPIC" } */ +double c; +double d; +double *f(int a) +{ + if(a) return &c; + return &d; +} diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-add.c b/gcc/testsuite/gcc.dg/torture/complex-sign-add.c new file mode 100644 index 00000000000..db921406671 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/complex-sign-add.c @@ -0,0 +1,53 @@ +/* Test complex arithmetic with signed zeros. Pure complex + addition. */ +/* { dg-do run } */ +/* { dg-options "-std=gnu99" } */ + +#include "complex-sign.h" + +#define CHECK_ADD(TYPE, COPY, ZERO, ZEROI) \ + do { \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, +, +, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, +, +, -, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, +, -, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, +, -, -, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, -, +, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, -, +, -, +, -); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, -, -, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, -, -, -, +, -); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, +, +, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, +, +, -, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, +, -, +, -, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, +, -, -, -, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, -, +, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, -, +, -, +, -); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, -, -, +, -, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, -, -, -, -, -); \ + } while (0) + +void +check_add_float (void) +{ + CHECK_ADD (float, __builtin_copysignf, 0.0f, 0.0if); +} + +void +check_add_double (void) +{ + CHECK_ADD (double, __builtin_copysign, 0.0, 0.0i); +} + +void +check_add_long_double (void) +{ + CHECK_ADD (long double, __builtin_copysignl, 0.0l, 0.0il); +} + +int +main (void) +{ + check_add_float (); + check_add_double (); + check_add_long_double (); + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-add.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-add.c new file mode 100644 index 00000000000..5548fe431e8 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-add.c @@ -0,0 +1,53 @@ +/* Test complex arithmetic with signed zeros. Mixed real/complex + addition. */ +/* { dg-do run } */ +/* { dg-options "-std=gnu99" } */ + +#include "complex-sign.h" + +#define CHECK_ADD(TYPE, COPY, ZERO, ZEROI) \ + do { \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, +, +, +, +, +); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, +, +, -, +, -); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, +, -, +, +, +); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, +, -, -, +, -); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, -, +, +, +, +); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, -, +, -, +, -); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, -, -, +, -, +); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, -, -, -, -, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, +, +, +, ZERO, +, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, +, +, -, ZERO, +, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, +, -, +, ZERO, +, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, +, -, -, ZERO, +, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, -, +, +, ZERO, +, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, -, +, -, ZERO, -, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, -, -, +, ZERO, +, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, -, -, -, ZERO, -, -); \ + } while (0) + +void +check_add_float (void) +{ + CHECK_ADD (float, __builtin_copysignf, 0.0f, 0.0if); +} + +void +check_add_double (void) +{ + CHECK_ADD (double, __builtin_copysign, 0.0, 0.0i); +} + +void +check_add_long_double (void) +{ + CHECK_ADD (long double, __builtin_copysignl, 0.0l, 0.0il); +} + +int +main (void) +{ + check_add_float (); + check_add_double (); + check_add_long_double (); + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-div.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-div.c new file mode 100644 index 00000000000..4a315dcd529 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-div.c @@ -0,0 +1,45 @@ +/* Test complex arithmetic with signed zeros. Mixed real/complex + division. */ +/* { dg-do run } */ +/* { dg-options "-std=gnu99" } */ + +#include "complex-sign.h" + +#define CHECK_DIV(TYPE, COPY, ZERO, ZEROI, ONE) \ + do { \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, +, +, +, ONE, +, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, +, +, -, ONE, -, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, +, -, +, ONE, +, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, +, -, -, ONE, -, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, -, +, +, ONE, -, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, -, +, -, ONE, +, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, -, -, +, ONE, -, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, -, -, -, ONE, +, +); \ + } while (0) + +void +check_div_float (void) +{ + CHECK_DIV (float, __builtin_copysignf, 0.0f, 0.0if, 1.0f); +} + +void +check_div_double (void) +{ + CHECK_DIV (double, __builtin_copysign, 0.0, 0.0i, 1.0); +} + +void +check_div_long_double (void) +{ + CHECK_DIV (long double, __builtin_copysignl, 0.0l, 0.0il, 1.0l); +} + +int +main (void) +{ + check_div_float (); + check_div_double (); + check_div_long_double (); + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-mul.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-mul.c new file mode 100644 index 00000000000..f5b1fc47e20 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-mul.c @@ -0,0 +1,53 @@ +/* Test complex arithmetic with signed zeros. Mixed real/complex + multiplication. */ +/* { dg-do run } */ +/* { dg-options "-std=gnu99" } */ + +#include "complex-sign.h" + +#define CHECK_MUL(TYPE, COPY, ZERO, ZEROI) \ + do { \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, +, +, +, +, +); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, +, +, -, +, -); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, +, -, +, -, +); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, +, -, -, -, -); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, -, +, +, -, -); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, -, +, -, -, +); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, -, -, +, +, -); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, -, -, -, +, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, +, +, +, ZERO, +, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, +, +, -, ZERO, -, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, +, -, +, ZERO, +, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, +, -, -, ZERO, -, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, -, +, +, ZERO, -, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, -, +, -, ZERO, +, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, -, -, +, ZERO, -, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, -, -, -, ZERO, +, +); \ + } while (0) + +void +check_mul_float (void) +{ + CHECK_MUL (float, __builtin_copysignf, 0.0f, 0.0if); +} + +void +check_mul_double (void) +{ + CHECK_MUL (double, __builtin_copysign, 0.0, 0.0i); +} + +void +check_mul_long_double (void) +{ + CHECK_MUL (long double, __builtin_copysignl, 0.0l, 0.0il); +} + +int +main (void) +{ + check_mul_float (); + check_mul_double (); + check_mul_long_double (); + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-sub.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-sub.c new file mode 100644 index 00000000000..adc384548c6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-sub.c @@ -0,0 +1,53 @@ +/* Test complex arithmetic with signed zeros. Mixed real/complex + subtraction. */ +/* { dg-do run } */ +/* { dg-options "-std=gnu99" } */ + +#include "complex-sign.h" + +#define CHECK_SUB(TYPE, COPY, ZERO, ZEROI) \ + do { \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, +, +, +, +, -); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, +, +, -, +, +); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, +, -, +, +, -); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, +, -, -, +, +); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, -, +, +, -, -); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, -, +, -, -, +); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, -, -, +, +, -); \ + CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, -, -, -, +, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, +, +, +, ZERO, +, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, +, +, -, ZERO, +, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, +, -, +, ZERO, +, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, +, -, -, ZERO, +, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, -, +, +, ZERO, -, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, -, +, -, ZERO, +, +); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, -, -, +, ZERO, -, -); \ + CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, -, -, -, ZERO, +, -); \ + } while (0) + +void +check_sub_float (void) +{ + CHECK_SUB (float, __builtin_copysignf, 0.0f, 0.0if); +} + +void +check_sub_double (void) +{ + CHECK_SUB (double, __builtin_copysign, 0.0, 0.0i); +} + +void +check_sub_long_double (void) +{ + CHECK_SUB (long double, __builtin_copysignl, 0.0l, 0.0il); +} + +int +main (void) +{ + check_sub_float (); + check_sub_double (); + check_sub_long_double (); + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mul-minus-one.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mul-minus-one.c new file mode 100644 index 00000000000..6b9a905ae9c --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mul-minus-one.c @@ -0,0 +1,61 @@ +/* Test complex arithmetic with signed zeros. Pure complex + multiplication with -1.0 + 0.0i. */ +/* { dg-do run } */ +/* { dg-options "-std=gnu99" } */ + +#include "complex-sign.h" + +#define CHECK_MUL_INT(TYPE, COPY, ZERO, ZEROI, ONE, S1, S2, SR, SI) \ + do { \ + _Complex TYPE a1, b1, c1; \ + volatile _Complex TYPE a2, b2, c2; \ + a1 = ENCODE(ZERO, ZEROI, S1, S2); \ + CHECK_RES (a1, COPY, S1, S2); \ + b1 = -ONE + ZEROI; \ + c1 = a1 * b1; \ + CHECK_RES (c1, COPY, SR, SI); \ + c1 = a1 * (-ONE + ZEROI); \ + CHECK_RES (c1, COPY, SR, SI); \ + a2 = ENCODE(ZERO, ZEROI, S1, S2); \ + CHECK_RES (a2, COPY, S1, S2); \ + b2 = -ONE + ZEROI; \ + c2 = a2 * b2; \ + CHECK_RES (c2, COPY, SR, SI); \ + c2 = a2 * (-ONE + ZEROI); \ + CHECK_RES (c2, COPY, SR, SI); \ + } while (0) + +#define CHECK_MUL(TYPE, COPY, ZERO, ZEROI, ONE) \ + do { \ + CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, +, +, -, +); \ + CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, +, -, +, +); \ + CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, -, +, +, -); \ + CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, -, -, +, +); \ + } while (0) + +void +check_mul_float (void) +{ + CHECK_MUL (float, __builtin_copysignf, 0.0f, 0.0if, 1.0f); +} + +void +check_mul_double (void) +{ + CHECK_MUL (double, __builtin_copysign, 0.0, 0.0i, 1.0); +} + +void +check_mul_long_double (void) +{ + CHECK_MUL (long double, __builtin_copysignl, 0.0l, 0.0il, 1.0l); +} + +int +main (void) +{ + check_mul_float (); + check_mul_double (); + check_mul_long_double (); + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mul-one.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mul-one.c new file mode 100644 index 00000000000..9d1d6c7ce10 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mul-one.c @@ -0,0 +1,61 @@ +/* Test complex arithmetic with signed zeros. Pure complex + multiplication with 1.0 + 0.0i. */ +/* { dg-do run } */ +/* { dg-options "-std=gnu99" } */ + +#include "complex-sign.h" + +#define CHECK_MUL_INT(TYPE, COPY, ZERO, ZEROI, ONE, S1, S2, SR, SI) \ + do { \ + _Complex TYPE a1, b1, c1; \ + volatile _Complex TYPE a2, b2, c2; \ + a1 = ENCODE(ZERO, ZEROI, S1, S2); \ + CHECK_RES (a1, COPY, S1, S2); \ + b1 = ONE + ZEROI; \ + c1 = a1 * b1; \ + CHECK_RES (c1, COPY, SR, SI); \ + c1 = a1 * (ONE + ZEROI); \ + CHECK_RES (c1, COPY, SR, SI); \ + a2 = ENCODE(ZERO, ZEROI, S1, S2); \ + CHECK_RES (a2, COPY, S1, S2); \ + b2 = ONE + ZEROI; \ + c2 = a2 * b2; \ + CHECK_RES (c2, COPY, SR, SI); \ + c2 = a2 * (ONE + ZEROI); \ + CHECK_RES (c2, COPY, SR, SI); \ + } while (0) + +#define CHECK_MUL(TYPE, COPY, ZERO, ZEROI, ONE) \ + do { \ + CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, +, +, +, +); \ + CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, +, -, +, +); \ + CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, -, +, -, +); \ + CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, -, -, +, -); \ + } while (0) + +void +check_mul_float (void) +{ + CHECK_MUL (float, __builtin_copysignf, 0.0f, 0.0if, 1.0f); +} + +void +check_mul_double (void) +{ + CHECK_MUL (double, __builtin_copysign, 0.0, 0.0i, 1.0); +} + +void +check_mul_long_double (void) +{ + CHECK_MUL (long double, __builtin_copysignl, 0.0l, 0.0il, 1.0l); +} + +int +main (void) +{ + check_mul_float (); + check_mul_double (); + check_mul_long_double (); + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mul.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mul.c new file mode 100644 index 00000000000..d9a06a5359b --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mul.c @@ -0,0 +1,53 @@ +/* Test complex arithmetic with signed zeros. Pure complex + multiplication. */ +/* { dg-do run } */ +/* { dg-options "-std=gnu99" } */ + +#include "complex-sign.h" + +#define CHECK_MUL(TYPE, COPY, ZERO, ZEROI) \ + do { \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, +, +, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, +, +, -, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, +, -, +, -, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, +, -, -, +, -); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, -, +, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, -, +, -, +, -); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, -, -, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, -, -, -, -, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, +, +, +, -, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, +, +, -, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, +, -, +, +, -); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, +, -, -, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, -, +, +, +, -); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, -, +, -, -, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, -, -, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, -, -, -, +, +); \ + } while (0) + +void +check_mul_float (void) +{ + CHECK_MUL (float, __builtin_copysignf, 0.0f, 0.0if); +} + +void +check_mul_double (void) +{ + CHECK_MUL (double, __builtin_copysign, 0.0, 0.0i); +} + +void +check_mul_long_double (void) +{ + CHECK_MUL (long double, __builtin_copysignl, 0.0l, 0.0il); +} + +int +main (void) +{ + check_mul_float (); + check_mul_double (); + check_mul_long_double (); + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-sub.c b/gcc/testsuite/gcc.dg/torture/complex-sign-sub.c new file mode 100644 index 00000000000..94ab17d7fc6 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/complex-sign-sub.c @@ -0,0 +1,53 @@ +/* Test complex arithmetic with signed zeros. Pure complex + subtraction. */ +/* { dg-do run } */ +/* { dg-options "-std=gnu99" } */ + +#include "complex-sign.h" + +#define CHECK_SUB(TYPE, COPY, ZERO, ZEROI) \ + do { \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, +, +, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, +, +, -, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, +, -, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, +, -, -, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, -, +, +, +, -); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, -, +, -, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, -, -, +, +, -); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, -, -, -, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, +, +, +, -, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, +, +, -, -, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, +, -, +, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, +, -, -, +, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, -, +, +, -, -); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, -, +, -, -, +); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, -, -, +, +, -); \ + CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, -, -, -, +, +); \ + } while (0) + +void +check_sub_float (void) +{ + CHECK_SUB (float, __builtin_copysignf, 0.0f, 0.0if); +} + +void +check_sub_double (void) +{ + CHECK_SUB (double, __builtin_copysign, 0.0, 0.0i); +} + +void +check_sub_long_double (void) +{ + CHECK_SUB (long double, __builtin_copysignl, 0.0l, 0.0il); +} + +int +main (void) +{ + check_sub_float (); + check_sub_double (); + check_sub_long_double (); + exit (0); +} diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign.h b/gcc/testsuite/gcc.dg/torture/complex-sign.h new file mode 100644 index 00000000000..f12e25d656f --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/complex-sign.h @@ -0,0 +1,74 @@ +/* Common header for complex arithmetic sign tests. */ + +extern void abort (void); +extern void exit (int); + +#define CHECK_RES(VALUE, COPY, SIGN_REAL, SIGN_IMAG) \ + do { \ + if ((VALUE) != 0 \ + || COPY (1.0, __real__ (VALUE)) != SIGN_REAL 1.0 \ + || COPY (1.0, __imag__ (VALUE)) != SIGN_IMAG 1.0) \ + abort (); \ + } while (0) + +/* This definition is intended to work with or without imaginary + types, as long as mixed real/complex arithmetic is handled + correctly. */ +#define ENCODE(ZERO, ZEROI, SA, SB) \ + (SA 1 == 1 \ + ? SB 1 == 1 ? ZERO + ZEROI : ZERO - ZEROI \ + : SB 1 == 1 ? -(ZERO - ZEROI) : -(ZERO + ZEROI)) + +#define CHECK_ARITH(TYPE, COPY, ZERO, ZEROI, OP, S1, S2, S3, S4, SR, SI) \ + do { \ + _Complex TYPE a1, b1, c1; \ + volatile _Complex TYPE a2, b2, c2; \ + a1 = ENCODE(ZERO, ZEROI, S1, S2); \ + CHECK_RES (a1, COPY, S1, S2); \ + b1 = ENCODE(ZERO, ZEROI, S3, S4); \ + CHECK_RES (b1, COPY, S3, S4); \ + c1 = a1 OP b1; \ + CHECK_RES (c1, COPY, SR, SI); \ + a2 = ENCODE(ZERO, ZEROI, S1, S2); \ + CHECK_RES (a2, COPY, S1, S2); \ + b2 = ENCODE(ZERO, ZEROI, S3, S4); \ + CHECK_RES (b2, COPY, S3, S4); \ + c2 = a2 OP b2; \ + CHECK_RES (c2, COPY, SR, SI); \ + } while (0) + +#define CHECK_ARITH_RC(TYPE, COPY, ZERO, ZEROI, OP, S1, S3, S4, SR, SI) \ + do { \ + TYPE a1; \ + _Complex TYPE b1, c1; \ + volatile TYPE a2; \ + volatile _Complex TYPE b2, c2; \ + a1 = S1 ZERO; \ + b1 = ENCODE(ZERO, ZEROI, S3, S4); \ + CHECK_RES (b1, COPY, S3, S4); \ + c1 = a1 OP b1; \ + CHECK_RES (c1, COPY, SR, SI); \ + a2 = S1 ZERO; \ + b2 = ENCODE(ZERO, ZEROI, S3, S4); \ + CHECK_RES (b2, COPY, S3, S4); \ + c2 = a2 OP b2; \ + CHECK_RES (c2, COPY, SR, SI); \ + } while (0) + +#define CHECK_ARITH_CR(TYPE, COPY, ZERO, ZEROI, OP, S1, S2, S3, V3, SR, SI) \ + do { \ + _Complex TYPE a1, c1; \ + TYPE b1; \ + volatile _Complex TYPE a2, c2; \ + volatile TYPE b2; \ + a1 = ENCODE(ZERO, ZEROI, S1, S2); \ + CHECK_RES (a1, COPY, S1, S2); \ + b1 = S3 V3; \ + c1 = a1 OP b1; \ + CHECK_RES (c1, COPY, SR, SI); \ + a2 = ENCODE(ZERO, ZEROI, S1, S2); \ + CHECK_RES (a2, COPY, S1, S2); \ + b2 = S3 V3; \ + c2 = a2 OP b2; \ + CHECK_RES (c2, COPY, SR, SI); \ + } while (0) diff --git a/gcc/testsuite/gcc.dg/vect/Os-vect-95.c b/gcc/testsuite/gcc.dg/vect/Os-vect-95.c index be7168b30ff..8f6e53a6f96 100644 --- a/gcc/testsuite/gcc.dg/vect/Os-vect-95.c +++ b/gcc/testsuite/gcc.dg/vect/Os-vect-95.c @@ -41,8 +41,8 @@ main1 (int n, float * __restrict__ pd, float * __restrict__ pa, float * __restri int main (void) { int i; - float a[N] __attribute__ ((__aligned__(16))); - float d[N+1] __attribute__ ((__aligned__(16))); + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c index bfa0802c0ce..dc17239a3b4 100644 --- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c +++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c @@ -4,8 +4,8 @@ #include "tree-vect.h" #define N 16 -char x[N] __attribute__ ((__aligned__(16))); -char cb[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; +char x[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +char cb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; __attribute__ ((noinline)) int main1 (char *y) diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c index cd7bb01a50d..13fbc82a42f 100644 --- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c +++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c @@ -25,8 +25,8 @@ __attribute__ ((noinline)) int main1 (float *pa) { int i; - float pb[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; - float pc[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + float pb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; + float pc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; /* Vectorizable: pa may not alias pb and/or pc, even though their addresses escape. &pa would need to escape to point to escaped memory. */ @@ -66,7 +66,7 @@ main2 (float * pa) int main (void) { int i; - float a[N] __attribute__ ((__aligned__(16))); + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); check_vect (); diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c index f61dff6e341..b883a94a95e 100644 --- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c +++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c @@ -31,7 +31,7 @@ void bar (float *pa, float *pb, float *pc) __attribute__ ((noinline)) int main1 (float *pb, float *pc) { - float pa[N] __attribute__ ((__aligned__(16))); + float pa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); int i; for (i = 0; i < N; i++) @@ -47,8 +47,8 @@ main1 (float *pb, float *pc) int main (void) { int i; - float b[N+1] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; - float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + float b[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; + float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; check_vect (); diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c index fe04694f657..28deeaeac26 100644 --- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c +++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c @@ -31,7 +31,7 @@ void bar (const float *pa, const float *pb, const float *pc) __attribute__ ((noinline)) int main1 (int n, float *pb, float *pc) { - float pa[N] __attribute__ ((__aligned__(16))); + float pa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); int i; for (i = 0; i < n; i++) @@ -47,9 +47,9 @@ main1 (int n, float *pb, float *pc) int main (void) { int i; - float a[N] __attribute__ ((__aligned__(16))); - float b[N+1] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; - float c[N+1] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float b[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; + float c[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; check_vect (); diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c index 69f79bf8823..63d332a39b2 100644 --- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c +++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c @@ -43,8 +43,8 @@ __attribute__ ((noinline)) int main1 (float *pa) { int i; - float b[N] __attribute__ ((__aligned__(16))); - float c[N] __attribute__ ((__aligned__(16))); + float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float *pb = b; float *pc = c; @@ -63,7 +63,7 @@ main1 (float *pa) int main (void) { int i; - float a[N] __attribute__ ((__aligned__(16))); + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); check_vect (); main1 (a); diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c index 47b268e148b..2df45fdfe85 100644 --- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c +++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c @@ -44,8 +44,8 @@ __attribute__ ((noinline)) int main1 (int n , float *pa) { int i; - float b[N] __attribute__ ((__aligned__(16))); - float c[N] __attribute__ ((__aligned__(16))); + float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float *pb = b; float *pc = c; @@ -65,7 +65,7 @@ int main (void) { int i; int n=N; - float a[N] __attribute__ ((__aligned__(16))); + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); check_vect (); main1 (n,a); diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c index f653714942a..1a694b33e05 100644 --- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c +++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c @@ -5,9 +5,9 @@ #define N 16 -float fa[N] __attribute__ ((__aligned__(16))); -float fb[N+4] __attribute__ ((__aligned__(16))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0}; -float fc[N] __attribute__ ((__aligned__(16))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5}; +float fa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +float fb[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0}; +float fc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5}; /* Like vect-80.c but the pointers are not annotated as restricted, and therefore can't be antialiased. */ diff --git a/gcc/testsuite/gcc.dg/vect/pr20122.c b/gcc/testsuite/gcc.dg/vect/pr20122.c index 05948c7fc81..9d21fc60062 100644 --- a/gcc/testsuite/gcc.dg/vect/pr20122.c +++ b/gcc/testsuite/gcc.dg/vect/pr20122.c @@ -3,7 +3,7 @@ #include <stdarg.h> #include "tree-vect.h" -short Kernshort[24] __attribute__ ((__aligned__(16))); +short Kernshort[24] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); static void VecBug(short Kernel[8][24]) __attribute__((noinline)); static void VecBug2(short Kernel[8][24]) __attribute__((noinline)); @@ -21,7 +21,7 @@ static void VecBug(short Kernel[8][24]) static void VecBug2(short Kernel[8][24]) { int k,i; - short Kernshort2[24] __attribute__ ((__aligned__(16))); + short Kernshort2[24] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); for (k = 0; k<8; k++) for (i = 0; i<24; i++) Kernshort2[i] = Kernel[k][i]; @@ -36,7 +36,7 @@ int main (int argc, char **argv) { check_vect (); - short Kernel[8][24] __attribute__ ((__aligned__(16))); + short Kernel[8][24] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); int k,i; for (k = 0; k<8; k++) diff --git a/gcc/testsuite/gcc.dg/vect/pr36493.c b/gcc/testsuite/gcc.dg/vect/pr36493.c index 0a3d2029c9f..0a330b0f056 100644 --- a/gcc/testsuite/gcc.dg/vect/pr36493.c +++ b/gcc/testsuite/gcc.dg/vect/pr36493.c @@ -6,7 +6,7 @@ int main (void) { int i; - long x[12] __attribute__((aligned(16))); + long x[12] __attribute__((aligned(__BIGGEST_ALIGNMENT__))); x[0] = 1; for (i = 0; i < 12; i++) diff --git a/gcc/testsuite/gcc.dg/vect/pr37385.c b/gcc/testsuite/gcc.dg/vect/pr37385.c index d6a477e634c..8b1cf3ae18a 100644 --- a/gcc/testsuite/gcc.dg/vect/pr37385.c +++ b/gcc/testsuite/gcc.dg/vect/pr37385.c @@ -4,7 +4,7 @@ typedef int int_t; typedef void (*fun_t) (int); -fun_t fun_tab[400] __attribute__ ((__aligned__(16))); +fun_t fun_tab[400] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); void foo (int_t a); diff --git a/gcc/testsuite/gcc.dg/vect/slp-7.c b/gcc/testsuite/gcc.dg/vect/slp-7.c index f00bf54aaa7..db9fb04099d 100644 --- a/gcc/testsuite/gcc.dg/vect/slp-7.c +++ b/gcc/testsuite/gcc.dg/vect/slp-7.c @@ -6,8 +6,8 @@ #define N 8 -unsigned int in[N*8] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; -unsigned short in2[N*16] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +unsigned int in[N*8] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +unsigned short in2[N*16] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; int main1 () diff --git a/gcc/testsuite/gcc.dg/vect/slp-9.c b/gcc/testsuite/gcc.dg/vect/slp-9.c index 461f32e8241..eefb81680a4 100644 --- a/gcc/testsuite/gcc.dg/vect/slp-9.c +++ b/gcc/testsuite/gcc.dg/vect/slp-9.c @@ -5,8 +5,8 @@ #define N 64 -short X[N] __attribute__ ((__aligned__(16))); -short Y[N] __attribute__ ((__aligned__(16))); +short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); int result[N]; /* short->int widening-mult */ diff --git a/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c b/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c index 32853d73a15..2eb73f38036 100644 --- a/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c +++ b/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c @@ -5,8 +5,8 @@ #define N 64 -short X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; -short Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; +short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; int result[N]; diff --git a/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c b/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c index 2f80ea085b6..fb3292ad468 100644 --- a/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c +++ b/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c @@ -5,8 +5,8 @@ #define N 64 -unsigned char X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; -unsigned char Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; +unsigned char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +unsigned char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; unsigned short result[N]; diff --git a/gcc/testsuite/gcc.dg/vect/vect-35.c b/gcc/testsuite/gcc.dg/vect/vect-35.c index 62782e75799..0f4284a6257 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-35.c +++ b/gcc/testsuite/gcc.dg/vect/vect-35.c @@ -9,8 +9,8 @@ __attribute__ ((noinline)) int main1 () { union { - unsigned char a[N] __attribute__ ((__aligned__(16))); - unsigned char b[N] __attribute__ ((__aligned__(16))); + unsigned char a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + unsigned char b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); } s; int i; diff --git a/gcc/testsuite/gcc.dg/vect/vect-40.c b/gcc/testsuite/gcc.dg/vect/vect-40.c index 83d8cabcd87..a73d1551643 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-40.c +++ b/gcc/testsuite/gcc.dg/vect/vect-40.c @@ -30,9 +30,9 @@ __attribute__ ((noinline)) int main1 () { int i; - float a[N] __attribute__ ((__aligned__(16))); - float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; - float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; + float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; float *pa = a; float *pb = b; float *pc = c; diff --git a/gcc/testsuite/gcc.dg/vect/vect-42.c b/gcc/testsuite/gcc.dg/vect/vect-42.c index 324e2f8da2a..f1764e13ecf 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-42.c +++ b/gcc/testsuite/gcc.dg/vect/vect-42.c @@ -30,8 +30,8 @@ __attribute__ ((noinline)) int main1 (float * __restrict__ pa) { int i; - float pb[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; - float pc[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + float pb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; + float pc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; for (i = 0; i < N; i++) { @@ -44,9 +44,9 @@ main1 (float * __restrict__ pa) int main (void) { int i; - float a[N] __attribute__ ((__aligned__(16))); - float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; - float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; + float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; check_vect (); diff --git a/gcc/testsuite/gcc.dg/vect/vect-44.c b/gcc/testsuite/gcc.dg/vect/vect-44.c index d80df10bfd9..81c6c1b8e87 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-44.c +++ b/gcc/testsuite/gcc.dg/vect/vect-44.c @@ -46,9 +46,9 @@ main1 (float * __restrict__ pa, float * __restrict__ pb, float * __restrict__ pc int main (void) { int i; - float a[N+4] __attribute__ ((__aligned__(16))); - float b[N+4] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69}; - float c[N+4] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23}; + float a[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float b[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69}; + float c[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23}; check_vect (); diff --git a/gcc/testsuite/gcc.dg/vect/vect-46.c b/gcc/testsuite/gcc.dg/vect/vect-46.c index abe35b4013f..2588a7b291e 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-46.c +++ b/gcc/testsuite/gcc.dg/vect/vect-46.c @@ -30,7 +30,7 @@ __attribute__ ((noinline)) int main1 (int n) { int i; - float a[N] __attribute__ ((__aligned__(16))); float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; float *pa = a; float *pb = b; float *pc = c; diff --git a/gcc/testsuite/gcc.dg/vect/vect-48.c b/gcc/testsuite/gcc.dg/vect/vect-48.c index 011b868639f..e47ee00de91 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-48.c +++ b/gcc/testsuite/gcc.dg/vect/vect-48.c @@ -18,7 +18,7 @@ __attribute__ ((noinline)) int main1 (float *pb, float *pc) { - float pa[N] __attribute__ ((__aligned__(16))); + float pa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); int i; for (i = 0; i < N; i++) @@ -39,8 +39,8 @@ main1 (float *pb, float *pc) int main (void) { int i; - float b[N+1] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; - float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; + float b[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; + float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; check_vect (); diff --git a/gcc/testsuite/gcc.dg/vect/vect-52.c b/gcc/testsuite/gcc.dg/vect/vect-52.c index 207e7007c41..af485abbd14 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-52.c +++ b/gcc/testsuite/gcc.dg/vect/vect-52.c @@ -18,7 +18,7 @@ __attribute__ ((noinline)) int main1 (int n, float *pb, float *pc) { - float pa[N] __attribute__ ((__aligned__(16))); + float pa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); int i; for (i = 0; i < n; i++) @@ -39,9 +39,9 @@ main1 (int n, float *pb, float *pc) int main (void) { int i; - float a[N] __attribute__ ((__aligned__(16))); - float b[N+1] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; - float c[N+1] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float b[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; + float c[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; check_vect (); diff --git a/gcc/testsuite/gcc.dg/vect/vect-54.c b/gcc/testsuite/gcc.dg/vect/vect-54.c index a44cdd41811..629e82df59b 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-54.c +++ b/gcc/testsuite/gcc.dg/vect/vect-54.c @@ -26,14 +26,14 @@ void bar (float *pa, float *pb, float *pc) vect-58.c is similar to this one with one difference: the loop bound is unknown. */ -float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; -float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; +float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; +float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; __attribute__ ((noinline)) int main1 () { int i; - float a[N] __attribute__ ((__aligned__(16))); + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float *pa = a; float *pb = b; float *pc = c; diff --git a/gcc/testsuite/gcc.dg/vect/vect-56.c b/gcc/testsuite/gcc.dg/vect/vect-56.c index 624a11287ea..e32d855d08d 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-56.c +++ b/gcc/testsuite/gcc.dg/vect/vect-56.c @@ -30,14 +30,14 @@ void bar (float *pa, float *pb, float *pc) vect-57.c is similar to this one with two differences: aliasing is a problem, and the write access has unknown alignment. */ -float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; -float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; +float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; +float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; __attribute__ ((noinline)) int main1 () { int i; - float a[N] __attribute__ ((__aligned__(16))); + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float *pa = a; float *pb = b; float *pc = c; diff --git a/gcc/testsuite/gcc.dg/vect/vect-58.c b/gcc/testsuite/gcc.dg/vect/vect-58.c index fe58860e000..fa8c91b3071 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-58.c +++ b/gcc/testsuite/gcc.dg/vect/vect-58.c @@ -26,7 +26,7 @@ void bar (float *pa, float *pb, float *pc) vect-54.c is similar to this one with one difference: the loop bound is known. */ -float a[N] __attribute__ ((__aligned__(16))); float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; +float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; __attribute__ ((noinline)) int main1 (int n) diff --git a/gcc/testsuite/gcc.dg/vect/vect-60.c b/gcc/testsuite/gcc.dg/vect/vect-60.c index efb1d5043c4..3319e360710 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-60.c +++ b/gcc/testsuite/gcc.dg/vect/vect-60.c @@ -30,14 +30,14 @@ void bar (float *pa, float *pb, float *pc) vect-61.c is similar to this one with two differences: aliasing is not a problem, and the write access has unknown alignment. */ -float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; -float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; +float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; +float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; __attribute__ ((noinline)) int main1 (int n) { int i; - float a[N] __attribute__ ((__aligned__(16))); + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float *pa = a; float *pb = b; float *pc = c; diff --git a/gcc/testsuite/gcc.dg/vect/vect-74.c b/gcc/testsuite/gcc.dg/vect/vect-74.c index e1e2805c915..a680b9fb01b 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-74.c +++ b/gcc/testsuite/gcc.dg/vect/vect-74.c @@ -9,9 +9,9 @@ the expression that represents the first location accessed - is more involved than just an ssa_name. */ -float a[N] __attribute__ ((__aligned__(16))); -float b[N+4] __attribute__ ((__aligned__(16))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0}; -float c[N] __attribute__ ((__aligned__(16))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5}; +float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +float b[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0}; +float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5}; __attribute__ ((noinline)) int main1 (float *__restrict__ pa, float * __restrict__ pb, float * __restrict__ pc) diff --git a/gcc/testsuite/gcc.dg/vect/vect-75.c b/gcc/testsuite/gcc.dg/vect/vect-75.c index 03c1868e420..092a3013e07 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-75.c +++ b/gcc/testsuite/gcc.dg/vect/vect-75.c @@ -10,7 +10,7 @@ the expression that represents the first location accessed - is more involved than just an ssa_name. */ -int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; +int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; __attribute__ ((noinline)) int main1 (int *ib) diff --git a/gcc/testsuite/gcc.dg/vect/vect-76.c b/gcc/testsuite/gcc.dg/vect/vect-76.c index 8a2f7514e7e..847b5e5259d 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-76.c +++ b/gcc/testsuite/gcc.dg/vect/vect-76.c @@ -10,7 +10,7 @@ the expression that represents the first location accessed - is more involved than just an ssa_name. */ -int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10}; +int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10}; __attribute__ ((noinline)) int main1 (int *pib) diff --git a/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c b/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c index a3d1b4cd6e9..4a05874b67e 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c +++ b/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c @@ -10,7 +10,7 @@ the expression that represents the first location accessed - is more involved than just an ssa_name. */ -int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; +int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; __attribute__ ((noinline)) int main1 (int *ib, int off) diff --git a/gcc/testsuite/gcc.dg/vect/vect-77-global.c b/gcc/testsuite/gcc.dg/vect/vect-77-global.c index 38f1443bb39..ac29d7d3c44 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-77-global.c +++ b/gcc/testsuite/gcc.dg/vect/vect-77-global.c @@ -10,7 +10,7 @@ the expression that represents the first location accessed - is more involved than just an ssa_name. */ -int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; +int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; int ia[N]; __attribute__ ((noinline)) diff --git a/gcc/testsuite/gcc.dg/vect/vect-77.c b/gcc/testsuite/gcc.dg/vect/vect-77.c index a6eb2ad8f23..07ee0fde18d 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-77.c +++ b/gcc/testsuite/gcc.dg/vect/vect-77.c @@ -10,7 +10,7 @@ the expression that represents the first location accessed - is more involved than just an ssa_name. */ -int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; +int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; __attribute__ ((noinline)) int main1 (int *ib, int off) diff --git a/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c b/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c index 5c97b410962..71c01ae1ce7 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c +++ b/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c @@ -10,7 +10,7 @@ the expression that represents the first location accessed - is more involved than just an ssa_name. */ -int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; +int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; int off = 8; __attribute__ ((noinline)) diff --git a/gcc/testsuite/gcc.dg/vect/vect-78-global.c b/gcc/testsuite/gcc.dg/vect/vect-78-global.c index dccc83903da..ec6520fd8a0 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-78-global.c +++ b/gcc/testsuite/gcc.dg/vect/vect-78-global.c @@ -11,7 +11,7 @@ more involved than just an ssa_name. */ int ia[N]; -int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; +int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; int off = 8; __attribute__ ((noinline)) diff --git a/gcc/testsuite/gcc.dg/vect/vect-78.c b/gcc/testsuite/gcc.dg/vect/vect-78.c index 67ce20fda1b..12ea12af9c5 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-78.c +++ b/gcc/testsuite/gcc.dg/vect/vect-78.c @@ -10,7 +10,7 @@ the expression that represents the first location accessed - is more involved than just an ssa_name. */ -int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; +int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34}; int off = 8; __attribute__ ((noinline)) diff --git a/gcc/testsuite/gcc.dg/vect/vect-80.c b/gcc/testsuite/gcc.dg/vect/vect-80.c index beb8d259adf..fc0ed1b3938 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-80.c +++ b/gcc/testsuite/gcc.dg/vect/vect-80.c @@ -5,9 +5,9 @@ #define N 16 -float fa[N] __attribute__ ((__aligned__(16))); -float fb[N+4] __attribute__ ((__aligned__(16))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0}; -float fc[N] __attribute__ ((__aligned__(16))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5}; +float fa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +float fb[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0}; +float fc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5}; /* Check handling of accesses for which the "initial condition" - the expression that represents the first location accessed - is diff --git a/gcc/testsuite/gcc.dg/vect/vect-85.c b/gcc/testsuite/gcc.dg/vect/vect-85.c index 6e8b43e79a3..a5bf5db078a 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-85.c +++ b/gcc/testsuite/gcc.dg/vect/vect-85.c @@ -35,7 +35,7 @@ int main1 (int *a) int main (void) { - int a[N] __attribute__ ((__aligned__(16))); + int a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); check_vect (); diff --git a/gcc/testsuite/gcc.dg/vect/vect-87.c b/gcc/testsuite/gcc.dg/vect/vect-87.c index 20a0d2ded45..151091a065b 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-87.c +++ b/gcc/testsuite/gcc.dg/vect/vect-87.c @@ -35,7 +35,7 @@ int main1 (int n, int *a) int main (void) { - int a[N] __attribute__ ((__aligned__(16))); + int a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); check_vect (); diff --git a/gcc/testsuite/gcc.dg/vect/vect-88.c b/gcc/testsuite/gcc.dg/vect/vect-88.c index 8c231c09240..a1666334916 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-88.c +++ b/gcc/testsuite/gcc.dg/vect/vect-88.c @@ -35,7 +35,7 @@ int main1 (int n, int *a) int main (void) { - int a[N+1] __attribute__ ((__aligned__(16))); + int a[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); check_vect (); diff --git a/gcc/testsuite/gcc.dg/vect/vect-92.c b/gcc/testsuite/gcc.dg/vect/vect-92.c index 94fff980002..01c751fbfa3 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-92.c +++ b/gcc/testsuite/gcc.dg/vect/vect-92.c @@ -5,9 +5,9 @@ #define N 256 -float pa[N] __attribute__ ((__aligned__(16))); -float pb[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; -float pc[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; +float pa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +float pb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; +float pc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; /* Check handling of unaligned accesses when the misalignment is known at compile time and different accesses have the same diff --git a/gcc/testsuite/gcc.dg/vect/vect-93.c b/gcc/testsuite/gcc.dg/vect/vect-93.c index b2245c85a47..351ab04fe84 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-93.c +++ b/gcc/testsuite/gcc.dg/vect/vect-93.c @@ -41,8 +41,8 @@ main1 (float *pa) int main (void) { int i; - float a[N] __attribute__ ((__aligned__(16))); - float b[N] __attribute__ ((__aligned__(16))); + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); check_vect (); diff --git a/gcc/testsuite/gcc.dg/vect/vect-95.c b/gcc/testsuite/gcc.dg/vect/vect-95.c index aeb5042ec81..ea9f32b994a 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-95.c +++ b/gcc/testsuite/gcc.dg/vect/vect-95.c @@ -42,8 +42,8 @@ main1 (int n, float * __restrict__ pd, float * __restrict__ pa, float * __restri int main (void) { int i; - float a[N] __attribute__ ((__aligned__(16))); - float d[N+1] __attribute__ ((__aligned__(16))); + float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; diff --git a/gcc/testsuite/gcc.dg/vect/vect-97.c b/gcc/testsuite/gcc.dg/vect/vect-97.c index c95c503c941..6ea26149095 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-97.c +++ b/gcc/testsuite/gcc.dg/vect/vect-97.c @@ -5,8 +5,8 @@ #define N 16 -char x[N] __attribute__ ((__aligned__(16))); -char cb[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; +char x[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +char cb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; __attribute__ ((noinline)) int main1 () diff --git a/gcc/testsuite/gcc.dg/vect/vect-complex-1.c b/gcc/testsuite/gcc.dg/vect/vect-complex-1.c index e2d0adcf9fb..2c7d5ce616b 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-complex-1.c +++ b/gcc/testsuite/gcc.dg/vect/vect-complex-1.c @@ -6,19 +6,19 @@ #define N 16 -_Complex float a[N] __attribute__ ((__aligned__(16))) = +_Complex float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = { 10.0F + 20.0iF, 11.0F + 21.0iF, 12.0F + 22.0iF, 13.0F + 23.0iF, 14.0F + 24.0iF, 15.0F + 25.0iF, 16.0F + 26.0iF, 17.0F + 27.0iF, 18.0F + 28.0iF, 19.0F + 29.0iF, 20.0F + 30.0iF, 21.0F + 31.0iF, 22.0F + 32.0iF, 23.0F + 33.0iF, 24.0F + 34.0iF, 25.0F + 35.0iF }; -_Complex float b[N] __attribute__ ((__aligned__(16))) = +_Complex float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = { 30.0F + 40.0iF, 31.0F + 41.0iF, 32.0F + 42.0iF, 33.0F + 43.0iF, 34.0F + 44.0iF, 35.0F + 45.0iF, 36.0F + 46.0iF, 37.0F + 47.0iF, 38.0F + 48.0iF, 39.0F + 49.0iF, 40.0F + 50.0iF, 41.0F + 51.0iF, 42.0F + 52.0iF, 43.0F + 53.0iF, 44.0F + 54.0iF, 45.0F + 55.0iF }; -_Complex float c[N] __attribute__ ((__aligned__(16))); -_Complex float res[N] __attribute__ ((__aligned__(16))) = +_Complex float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +_Complex float res[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = { 40.0F + 60.0iF, 42.0F + 62.0iF, 44.0F + 64.0iF, 46.0F + 66.0iF, 48.0F + 68.0iF, 50.0F + 70.0iF, 52.0F + 72.0iF, 54.0F + 74.0iF, 56.0F + 76.0iF, 58.0F + 78.0iF, 60.0F + 80.0iF, 62.0F + 82.0iF, diff --git a/gcc/testsuite/gcc.dg/vect/vect-complex-4.c b/gcc/testsuite/gcc.dg/vect/vect-complex-4.c index 85c416597f6..0e00e789ac1 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-complex-4.c +++ b/gcc/testsuite/gcc.dg/vect/vect-complex-4.c @@ -11,7 +11,7 @@ struct foostr { _Complex short f2; }; -struct foostr a[16] __attribute__ ((__aligned__(16))) = +struct foostr a[16] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = { 11 + 23i, 24 + 22i, 11 + 26i, 24 + 35i, @@ -31,7 +31,7 @@ struct foostr a[16] __attribute__ ((__aligned__(16))) = 35 + 36i, 34 + 28i, }; -struct foostr b[16] __attribute__ ((__aligned__(16))) = +struct foostr b[16] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = { 37 + 12i, 23 + 15i, 14 + 11i, 13 + 25i, @@ -50,7 +50,7 @@ struct foostr b[16] __attribute__ ((__aligned__(16))) = 25 + 27i, 15 + 30i, 10 + 31i, 37 + 37i, }; -struct foostr c[16] __attribute__ ((__aligned__(16))); +struct foostr c[16] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); struct foostr res[N] = { 48 + 35i, 47 + 37i, diff --git a/gcc/testsuite/gcc.dg/vect/vect-complex-5.c b/gcc/testsuite/gcc.dg/vect/vect-complex-5.c index 91eb1f54b3c..a17830fa917 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-complex-5.c +++ b/gcc/testsuite/gcc.dg/vect/vect-complex-5.c @@ -11,11 +11,11 @@ struct foostr { _Complex short f2; }; -_Complex short a1[64] __attribute__ ((__aligned__(16))); -_Complex short a2[64] __attribute__ ((__aligned__(16))); -_Complex short b1[64] __attribute__ ((__aligned__(16))); -_Complex short b2[64] __attribute__ ((__aligned__(16))); -struct foostr c[64] __attribute__ ((__aligned__(16))); +_Complex short a1[64] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +_Complex short a2[64] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +_Complex short b1[64] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +_Complex short b2[64] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +struct foostr c[64] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); __attribute__ ((noinline)) void foo (void) diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c index 757af63f124..175422a55fc 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c @@ -5,11 +5,11 @@ #define N 64 -unsigned char uX[N] __attribute__ ((__aligned__(16))); -unsigned short uY[N] __attribute__ ((__aligned__(16))); +unsigned char uX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +unsigned short uY[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); unsigned int uresult[N]; -signed char X[N] __attribute__ ((__aligned__(16))); -signed short Y[N] __attribute__ ((__aligned__(16))); +signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +signed short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); int result[N]; /* Unsigned type promotion (hi->si) */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c index ef66c734e9c..9cb8c1dfe44 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c @@ -5,7 +5,7 @@ #define N 64 -short x[N] __attribute__ ((__aligned__(16))); +short x[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); __attribute__ ((noinline)) int foo (int len, int *z) { diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c index e4d5417547e..ca34ea42719 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c @@ -5,7 +5,7 @@ #define N 64 -char x[N] __attribute__ ((__aligned__(16))); +char x[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); __attribute__ ((noinline)) int foo (int len, int *z) { diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c index 32b3131ee20..a5012ab2317 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c @@ -5,9 +5,9 @@ #define N 64 -unsigned char uX[N] __attribute__ ((__aligned__(16))); +unsigned char uX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); unsigned int uresult[N]; -signed char X[N] __attribute__ ((__aligned__(16))); +signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); int result[N]; /* Unsigned type promotion (qi->si) */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c index 970535ff660..11ff337a960 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c @@ -5,9 +5,9 @@ #define N 64 -unsigned char uX[N] __attribute__ ((__aligned__(16))); +unsigned char uX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); unsigned char uresultX[N]; -unsigned int uY[N] __attribute__ ((__aligned__(16))); +unsigned int uY[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); unsigned char uresultY[N]; /* Unsigned type demotion (si->qi) */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c index ad09ff95679..c96daf8ad9b 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c @@ -9,9 +9,9 @@ #define DOT1 43680 #define DOT2 -20832 -signed char X[N] __attribute__ ((__aligned__(16))); -signed char Y[N] __attribute__ ((__aligned__(16))); -unsigned char CX[N] __attribute__ ((__aligned__(16))); +signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +unsigned char CX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); __attribute__ ((noinline)) void foo1(int len) { diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c index 4192e3d19ec..176333c2b03 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c @@ -5,7 +5,7 @@ #define N 64 -char x[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +char x[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; __attribute__ ((noinline)) int foo (int len, long long *z) { diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c index 9084fc82a12..b2f81058260 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c @@ -5,9 +5,9 @@ #define N 64 -unsigned char uX[N] __attribute__ ((__aligned__(16))) = {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; +unsigned char uX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; unsigned char uresultX[N]; -unsigned long long uY[N] __attribute__ ((__aligned__(16))) = {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; +unsigned long long uY[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; unsigned char uresultY[N]; /* Unsigned type demotion (si->qi) */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c index 22711aa0ab1..ba1f6604861 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c @@ -5,11 +5,11 @@ #define N 32 -int ib[N] __attribute__ ((__aligned__(16))) = +int ib[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; -short sb[N] __attribute__ ((__aligned__(16))) = +short sb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; -char cb[N] __attribute__ ((__aligned__(16))) = +char cb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; __attribute__ ((noinline)) diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c index a4867e44f3d..7d8f5afe3e4 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c @@ -5,17 +5,17 @@ #define N 32 -unsigned int ic[N] __attribute__ ((__aligned__(16))) = +unsigned int ic[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; -unsigned int ib[N] __attribute__ ((__aligned__(16))) = +unsigned int ib[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; -unsigned short sc[N] __attribute__ ((__aligned__(16))) = +unsigned short sc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; -unsigned short sb[N] __attribute__ ((__aligned__(16))) = +unsigned short sb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; -unsigned char cc[N] __attribute__ ((__aligned__(16))) = +unsigned char cc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; -unsigned char cb[N] __attribute__ ((__aligned__(16))) = +unsigned char cb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45}; __attribute__ ((noinline)) diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c index 80604321b98..6114b5b8836 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c @@ -9,9 +9,9 @@ #define DOT1 43680 #define DOT2 -20832 -signed short X[N] __attribute__ ((__aligned__(16))); -signed short Y[N] __attribute__ ((__aligned__(16))); -unsigned char CX[N] __attribute__ ((__aligned__(16))); +signed short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +signed short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +unsigned char CX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); __attribute__ ((noinline)) void foo1(int len) { diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c index 6a71298a59f..25e442f5251 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c @@ -5,9 +5,9 @@ #define N 64 -unsigned char uX[N] __attribute__ ((__aligned__(16))); +unsigned char uX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); unsigned char uresultX[N]; -unsigned int uY[N] __attribute__ ((__aligned__(16))); +unsigned int uY[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); unsigned short uresultY[N]; /* Unsigned type demotion (si->hi) */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c index 4ac2d0c1a90..54dd25dc70a 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c +++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c @@ -5,9 +5,9 @@ #define N 64 -unsigned char uX[N] __attribute__ ((__aligned__(16))); +unsigned char uX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); unsigned short uresult[N]; -signed char X[N] __attribute__ ((__aligned__(16))); +signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); short result[N]; /* Unsigned type promotion (qi->hi) */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-1.c b/gcc/testsuite/gcc.dg/vect/vect-outer-1.c index f1892488603..f0df5d4cd9d 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-1.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-1.c @@ -1,9 +1,9 @@ /* { dg-do compile } */ #define N 64 -signed short image[N][N] __attribute__ ((__aligned__(16))); -signed short block[N][N] __attribute__ ((__aligned__(16))); -signed short out[N] __attribute__ ((__aligned__(16))); +signed short image[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +signed short block[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +signed short out[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); /* Can't do outer-loop vectorization because of non-consecutive access. */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c b/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c index 2d903937f91..3d237b78e72 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c @@ -1,8 +1,8 @@ /* { dg-do compile } */ #define N 64 -signed short image[N][N] __attribute__ ((__aligned__(16))); -signed short block[N][N] __attribute__ ((__aligned__(16))); +signed short image[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +signed short block[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); /* Can't do outer-loop vectorization because of non-consecutive access. Currently fails to vectorize because the reduction pattern is not diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-2.c b/gcc/testsuite/gcc.dg/vect/vect-outer-2.c index 604c35a0c1a..38701977bc6 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-2.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-2.c @@ -4,7 +4,7 @@ #include "tree-vect.h" #define N 40 -float image[N][N] __attribute__ ((__aligned__(16))); +float image[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float out[N]; /* Outer-loop vectorization. */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-2a.c b/gcc/testsuite/gcc.dg/vect/vect-outer-2a.c index aee79735e36..b8d0e51fee5 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-2a.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-2a.c @@ -4,7 +4,7 @@ #include "tree-vect.h" #define N 40 -float image[N][N][N] __attribute__ ((__aligned__(16))); +float image[N][N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); __attribute__ ((noinline)) void foo (){ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c b/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c index 9d9fb5cb52d..df2e6a7b129 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c @@ -3,7 +3,7 @@ #include "tree-vect.h" #define N 40 -float image[2*N][N][N] __attribute__ ((__aligned__(16))); +float image[2*N][N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); __attribute__ ((noinline)) void foo (){ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-2c.c b/gcc/testsuite/gcc.dg/vect/vect-outer-2c.c index da3748dc223..0ca868637ad 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-2c.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-2c.c @@ -4,7 +4,7 @@ #include "tree-vect.h" #define N 40 -float image[2*N][2*N][N] __attribute__ ((__aligned__(16))); +float image[2*N][2*N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); __attribute__ ((noinline)) void foo (){ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-2d.c b/gcc/testsuite/gcc.dg/vect/vect-outer-2d.c index af19867050e..3e19d47b315 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-2d.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-2d.c @@ -3,7 +3,7 @@ #include "tree-vect.h" #define N 40 -float image[N][N][N+1] __attribute__ ((__aligned__(16))); +float image[N][N][N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); __attribute__ ((noinline)) void foo (){ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-3.c b/gcc/testsuite/gcc.dg/vect/vect-outer-3.c index 5f7a802f164..924700c5840 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-3.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-3.c @@ -3,7 +3,7 @@ #include "tree-vect.h" #define N 40 -float image[N][N] __attribute__ ((__aligned__(16))); +float image[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float out[N]; /* Outer-loop vectoriation. */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c b/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c index beade07c241..4b5107dcf4e 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c @@ -3,7 +3,7 @@ #include "tree-vect.h" #define N 40 -float image[N][N+1] __attribute__ ((__aligned__(16))); +float image[N][N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float out[N]; /* Outer-loop vectorization with misaliged accesses in the inner-loop. */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c b/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c index a0ff0906ce2..f11cb751ca4 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c @@ -3,7 +3,7 @@ #include "tree-vect.h" #define N 40 -float image[N][N] __attribute__ ((__aligned__(16))); +float image[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float out[N]; /* Outer-loop vectorization with non-consecutive access. Not vectorized yet. */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-3c.c b/gcc/testsuite/gcc.dg/vect/vect-outer-3c.c index 149823a5ef8..599137ba12e 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-3c.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-3c.c @@ -3,7 +3,7 @@ #include "tree-vect.h" #define N 40 -float image[N][N+1] __attribute__ ((__aligned__(16))); +float image[N][N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float out[N]; /* Outer-loop vectorization. */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-5.c b/gcc/testsuite/gcc.dg/vect/vect-outer-5.c index 28dce1b94af..2fc421e9680 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-5.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-5.c @@ -13,10 +13,10 @@ extern void abort(void); __attribute__ ((noinline)) int main1 () { - float A[N] __attribute__ ((__aligned__(16))); - float B[N] __attribute__ ((__aligned__(16))); - float C[N] __attribute__ ((__aligned__(16))); - float D[N] __attribute__ ((__aligned__(16))); + float A[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float B[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float C[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); + float D[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float E[4] = {0,1,2,480}; float s; diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-6.c b/gcc/testsuite/gcc.dg/vect/vect-outer-6.c index c83943a5a59..572f433cf50 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-outer-6.c +++ b/gcc/testsuite/gcc.dg/vect/vect-outer-6.c @@ -7,10 +7,10 @@ #define N 64 #define MAX 42 -float A[N] __attribute__ ((__aligned__(16))); -float B[N] __attribute__ ((__aligned__(16))); -float C[N] __attribute__ ((__aligned__(16))); -float D[N] __attribute__ ((__aligned__(16))); +float A[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +float B[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +float C[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +float D[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); extern void abort(void); __attribute__ ((noinline)) diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c index b768c6c8590..61517066ef0 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c @@ -6,8 +6,8 @@ #define N 64 #define DOT 43680 -signed short X[N] __attribute__ ((__aligned__(16))); -signed short Y[N] __attribute__ ((__aligned__(16))); +signed short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +signed short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); /* short->int->int dot product. Detected as a dot-product pattern. diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c index 587800c032a..3459a30a03e 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c @@ -7,8 +7,8 @@ #define DOT 43680 -signed short X[N] __attribute__ ((__aligned__(16))); -signed short Y[N] __attribute__ ((__aligned__(16))); +signed short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +signed short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); /* short->short->int dot product. Should be vectorized on architectures supporting vectorized multiplication of two short args with short result, diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c index 66ca021a57a..95a4cdd88f3 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c @@ -7,8 +7,8 @@ #define DOT1 43680 -signed char X[N] __attribute__ ((__aligned__(16))); -signed char Y[N] __attribute__ ((__aligned__(16))); +signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); /* char->short->int dot product. The dot-product pattern should be detected. diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c index 8db7797045b..ba24af26a03 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c @@ -7,8 +7,8 @@ #define DOT2 -21856 -signed char X[N] __attribute__ ((__aligned__(16))); -signed char Y[N] __attribute__ ((__aligned__(16))); +signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); /* char->short->short dot product. The dot-product pattern should be detected. diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c index 80377bae9a4..758886ef8ad 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c @@ -7,8 +7,8 @@ #define DOT3 43680 -signed char X[N] __attribute__ ((__aligned__(16))); -signed char Y[N] __attribute__ ((__aligned__(16))); +signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); /* char->int->int dot product. Not detected as a dot-product pattern. */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c index eb89ac779e7..c09750d4454 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c @@ -8,8 +8,8 @@ #define DOT1 43680 #define DOT2 43680 -unsigned short X[N] __attribute__ ((__aligned__(16))); -unsigned short Y[N] __attribute__ ((__aligned__(16))); +unsigned short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +unsigned short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); /* short->short->int dot product. Not detected as a dot-product pattern. diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c index 270a3f420de..1a198218147 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c @@ -7,8 +7,8 @@ #define DOT2 43680 -unsigned short X[N] __attribute__ ((__aligned__(16))); -unsigned short Y[N] __attribute__ ((__aligned__(16))); +unsigned short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +unsigned short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); /* short->int->int dot product. Currently not detected as a dot-product pattern: the multiplication diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c index 1934deb40d1..d856754c902 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c @@ -7,8 +7,8 @@ #define DOT 43680 -unsigned char X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; -unsigned char Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; +unsigned char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +unsigned char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; /* char->short->int dot product. Detected as a dot-product pattern. diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c index 3266d1ca0b5..01c82b52c54 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c +++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c @@ -7,8 +7,8 @@ #define DOT 43680 -unsigned char X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; -unsigned char Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; +unsigned char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +unsigned char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; /* char->short->short dot product. Detected as a dot-product pattern. diff --git a/gcc/testsuite/gcc.dg/vect/vect-shift-2.c b/gcc/testsuite/gcc.dg/vect/vect-shift-2.c new file mode 100644 index 00000000000..93e1154fb42 --- /dev/null +++ b/gcc/testsuite/gcc.dg/vect/vect-shift-2.c @@ -0,0 +1,189 @@ +/* { dg-require-effective-target vect_shift } */ +/* { dg-require-effective-target vect_int } */ +/* Check the standard integer types for left and right shifts to see if the + compiler replaced a scalar instruction with a vector instruction whether the + correct value is generated. */ + +#ifdef TRACE +#include <stdio.h> +#endif + +#include <stdarg.h> +#include "tree-vect.h" + +#ifndef ALIGN +#define ALIGN __attribute__((__aligned__(__BIGGEST_ALIGNMENT__))) +#endif + +#ifndef NOINLINE +#define NOINLINE __attribute__((__noinline__)) +#endif + +#ifdef TRACE +#define TRACE_FUNC(PREFIX, NAME) printf (#PREFIX #NAME "\n") +#define TRACE_DONE() printf ("done!\n") +#define TRACE_ABORT(I,E,G) \ +do { \ + printf ("Element %d, expected 0x%lx, got 0x%lx\n", \ + I, (long)(E), (long)(G)); \ + abort (); \ +} while (0) + +#else +#define TRACE_FUNC(PREFIX, A) +#define TRACE_DONE() +#define TRACE_ABORT(I,E,G) abort () +#endif + +#define NAME(A,B) A ## B + +#define VECT_TESTS(PREFIX, TYPE, N) \ + /* Restrict the optimizer from optimizing the setup loops. */ \ +volatile TYPE NAME (PREFIX, zero) = 0; \ + \ +TYPE NAME (PREFIX, a)[N] ALIGN; \ +TYPE NAME (PREFIX, b)[N] ALIGN; \ +TYPE NAME (PREFIX, c)[N] ALIGN; \ +TYPE NAME (PREFIX, d)[N] ALIGN; \ + \ +static void NOINLINE \ +NAME (PREFIX, lshift_2) (void) \ +{ \ + int i; \ + \ + TRACE_FUNC (PREFIX, lshift_2); \ + for (i = 0; i < N; i++) \ + NAME (PREFIX, a)[i] = NAME (PREFIX, b)[i] << 2; \ +} \ + \ +static void NOINLINE \ +NAME (PREFIX, lshift_var) (int shift) \ +{ \ + int i; \ + \ + TRACE_FUNC (PREFIX, lshift_var); \ + for (i = 0; i < N; i++) \ + NAME (PREFIX, a)[i] = NAME (PREFIX, b)[i] << shift; \ +} \ + \ +static void NOINLINE \ +NAME (PREFIX, lshift_vect) (void) \ +{ \ + int i; \ + \ + TRACE_FUNC (PREFIX, lshift_vect); \ + for (i = 0; i < N; i++) \ + NAME (PREFIX, a)[i] = NAME (PREFIX, b)[i] << NAME (PREFIX, c)[i]; \ +} \ + \ +static void NOINLINE \ +NAME (PREFIX, rshift_2) (void) \ +{ \ + int i; \ + \ + TRACE_FUNC (PREFIX, rshift_2); \ + for (i = 0; i < N; i++) \ + NAME (PREFIX, a)[i] = NAME (PREFIX, b)[i] >> 2; \ +} \ + \ +static void NOINLINE \ +NAME (PREFIX, rshift_var) (int shift) \ +{ \ + int i; \ + \ + TRACE_FUNC (PREFIX, rshift_var); \ + for (i = 0; i < N; i++) \ + NAME (PREFIX, a)[i] = NAME (PREFIX, b)[i] >> shift; \ +} \ + \ +static void NOINLINE \ +NAME (PREFIX, rshift_vect) (void) \ +{ \ + int i; \ + \ + TRACE_FUNC (PREFIX, rshift_vect); \ + for (i = 0; i < N; i++) \ + NAME (PREFIX, a)[i] = NAME (PREFIX, b)[i] >> NAME (PREFIX, c)[i]; \ +} \ + \ +static void NOINLINE \ +NAME (PREFIX, check) (void) \ +{ \ + int i; \ + \ + TRACE_FUNC (PREFIX, check); \ + for (i = 0; i < N; i++) \ + if (NAME (PREFIX, a)[i] != NAME (PREFIX, d)[i]) \ + TRACE_ABORT (i, NAME (PREFIX, d)[i], NAME (PREFIX, a)[i]); \ +} \ + \ +static void NOINLINE \ +NAME (PREFIX, tests) (void) \ +{ \ + int i; \ + \ + TRACE_FUNC (PREFIX, tests); \ + for (i = 0; i < N; i++) \ + { \ + NAME (PREFIX, b)[i] = (i + NAME (PREFIX, zero)); \ + NAME (PREFIX, c)[i] = 2; \ + NAME (PREFIX, d)[i] = (i + NAME (PREFIX, zero)) << 2; \ + } \ + \ + NAME (PREFIX, lshift_2) (); \ + NAME (PREFIX, check) (); \ + \ + NAME (PREFIX, lshift_var) (2); \ + NAME (PREFIX, check) (); \ + \ + NAME (PREFIX, lshift_vect) (); \ + NAME (PREFIX, check) (); \ + \ + for (i = 0; i < N; i++) \ + { \ + NAME (PREFIX, b)[i] = ((i + NAME (PREFIX, zero)) << 4) \ + | (((TYPE)0x80) << ((sizeof (TYPE) * 8) - 8)); \ + NAME (PREFIX, c)[i] = 2; \ + NAME (PREFIX, d)[i] = (TYPE)((NAME (PREFIX, b)[i] \ + + NAME (PREFIX, zero)) >> 2); \ + } \ + \ + NAME (PREFIX, rshift_2) (); \ + NAME (PREFIX, check) (); \ + \ + NAME (PREFIX, rshift_var) (2); \ + NAME (PREFIX, check) (); \ + \ + NAME (PREFIX, rshift_vect) (); \ + NAME (PREFIX, check) (); \ +} + +VECT_TESTS(uc_, unsigned char, 16) +VECT_TESTS(us_, unsigned short, 32) +VECT_TESTS(ui_, unsigned int, 32) +VECT_TESTS(ul_, unsigned long, 32) + +VECT_TESTS(sc_, signed char, 16) +VECT_TESTS(ss_, short, 32) +VECT_TESTS(si_, int, 32) +VECT_TESTS(sl_, long, 32) + +int main () +{ + int i; + + check_vect (); + + uc_tests (); + us_tests (); + ui_tests (); + ul_tests (); + + sc_tests (); + ss_tests (); + si_tests (); + sl_tests (); + + TRACE_DONE (); + return 0; +} diff --git a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s16.c b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s16.c index e63373b2c34..aeb065262a6 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s16.c +++ b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s16.c @@ -5,8 +5,8 @@ #define N 64 -short X[N] __attribute__ ((__aligned__(16))); -short Y[N] __attribute__ ((__aligned__(16))); +short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); int result[N]; /* short->int widening-mult */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s8.c b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s8.c index 8f79e22711d..7578352c341 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s8.c +++ b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s8.c @@ -5,8 +5,8 @@ #define N 64 -signed char X[N] __attribute__ ((__aligned__(16))); -signed char Y[N] __attribute__ ((__aligned__(16))); +signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); short result[N]; /* char->short widening-mult */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c index 3aa0ff10dfe..9b98c19a160 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c +++ b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c @@ -5,8 +5,8 @@ #define N 64 -unsigned short X[N] __attribute__ ((__aligned__(16))); -unsigned short Y[N] __attribute__ ((__aligned__(16))); +unsigned short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +unsigned short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); unsigned int result[N]; /* short->int widening-mult */ diff --git a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c index 63bd00227d7..1658f7b5a29 100644 --- a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c +++ b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c @@ -5,8 +5,8 @@ #define N 64 -unsigned char X[N] __attribute__ ((__aligned__(16))); -unsigned char Y[N] __attribute__ ((__aligned__(16))); +unsigned char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); +unsigned char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); unsigned short result[N]; /* char->short widening-mult */ diff --git a/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c b/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c index 7fc00e21a79..68caa8bd1dd 100644 --- a/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c +++ b/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c @@ -7,8 +7,8 @@ #define DOT -21856 -signed char X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; -signed char Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; +signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63}; +signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1}; /* char->short->short dot product. The dot-product pattern should be detected. diff --git a/gcc/testsuite/gfortran.dg/array_constructor_31.f90 b/gcc/testsuite/gfortran.dg/array_constructor_31.f90 new file mode 100644 index 00000000000..02936340ffc --- /dev/null +++ b/gcc/testsuite/gfortran.dg/array_constructor_31.f90 @@ -0,0 +1,10 @@ +! { dg-do compile } +! Test the fix for pr40018 in which the elements in the array +! constructor would be of default type and this would cause an +! ICE in the backend because of the type mistmatch with 'i'. +! +! Contributed by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> +! + integer(kind=8) :: i + write(*,*) [(i, i = 1, 10)] + end diff --git a/gcc/testsuite/gfortran.dg/chmod_1.f90 b/gcc/testsuite/gfortran.dg/chmod_1.f90 index 1c7907e8f35..07760cf1245 100644 --- a/gcc/testsuite/gfortran.dg/chmod_1.f90 +++ b/gcc/testsuite/gfortran.dg/chmod_1.f90 @@ -1,5 +1,6 @@ -! { dg-do run { target { ! { *-*-mingw* spu-*-* } } } } +! { dg-do run { target { ! { *-*-mingw* *-*-cygwin* spu-*-* } } } } ! { dg-options "-std=gnu" } +! See PR38956. Test fails on cygwin when user has Administrator rights implicit none character(len=*), parameter :: n = "foobar_file" integer :: i diff --git a/gcc/testsuite/gfortran.dg/chmod_2.f90 b/gcc/testsuite/gfortran.dg/chmod_2.f90 index b43c60f9b92..3e5ed617be4 100644 --- a/gcc/testsuite/gfortran.dg/chmod_2.f90 +++ b/gcc/testsuite/gfortran.dg/chmod_2.f90 @@ -1,5 +1,6 @@ -! { dg-do run { target { ! { *-*-mingw* spu-*-* } } } } +! { dg-do run { target { ! { *-*-mingw* *-*-cygwin* spu-*-* } } } } ! { dg-options "-std=gnu" } +! See PR38956. Test fails on cygwin when user has Administrator rights implicit none character(len=*), parameter :: n = "foobar_file" integer :: i diff --git a/gcc/testsuite/gfortran.dg/chmod_3.f90 b/gcc/testsuite/gfortran.dg/chmod_3.f90 index c97af6d4692..9e92ecabccd 100644 --- a/gcc/testsuite/gfortran.dg/chmod_3.f90 +++ b/gcc/testsuite/gfortran.dg/chmod_3.f90 @@ -1,5 +1,6 @@ -! { dg-do run { target { ! { *-*-mingw* spu-*-* } } } } +! { dg-do run { target { ! { *-*-mingw* *-*-cygwin* spu-*-* } } } } ! { dg-options "-std=gnu -fdefault-integer-8" } +! See PR38956. Test fails on cygwin when user has Administrator rights implicit none character(len=*), parameter :: n = "foobar_file" integer :: i diff --git a/gcc/testsuite/gfortran.dg/dependency_23.f90 b/gcc/testsuite/gfortran.dg/dependency_23.f90 index bdb17115a11..447d626c533 100644 --- a/gcc/testsuite/gfortran.dg/dependency_23.f90 +++ b/gcc/testsuite/gfortran.dg/dependency_23.f90 @@ -52,5 +52,6 @@ end module rg0045_stuff use rg0045_stuff call rg0045(1, 2, 3) end +! { dg-final { cleanup-modules "rg0045_stuff" } } diff --git a/gcc/testsuite/gfortran.dg/dependency_24.f90 b/gcc/testsuite/gfortran.dg/dependency_24.f90 new file mode 100644 index 00000000000..9645f207538 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/dependency_24.f90 @@ -0,0 +1,81 @@ +! { dg-do run } +! Check the fix for PR38863 comment #1, where defined assignment +! to derived types was not treating components correctly that were +! not set explicitly. +! +! Contributed by Mikael Morin <mikael@gcc.gnu.org> +! +module m + type t + integer :: i,j + end type t + type ti + integer :: i,j = 99 + end type ti + interface assignment (=) + module procedure i_to_t, i_to_ti + end interface +contains + elemental subroutine i_to_ti (p, q) + type(ti), intent(out) :: p + integer, intent(in) :: q + p%i = q + end subroutine + elemental subroutine i_to_t (p, q) + type(t), intent(out) :: p + integer, intent(in) :: q + p%i = q + end subroutine +end module + + use m + call test_t ! Check original problem + call test_ti ! Default initializers were treated wrongly +contains + subroutine test_t + type(t), target :: a(3) + type(t), target :: b(3) + type(t), dimension(:), pointer :: p + logical :: l(3) + + a%i = 1 + a%j = [101, 102, 103] + b%i = 3 + b%j = 4 + + p => b + l = .true. + + where (l) + a = p%i ! Comment #1 of PR38863 concerned WHERE assignment + end where + if (any (a%j .ne. [101, 102, 103])) call abort + + a = p%i ! Ordinary assignment was wrong too. + if (any (a%j .ne. [101, 102, 103])) call abort + end subroutine + + subroutine test_ti + type(ti), target :: a(3) + type(ti), target :: b(3) + type(ti), dimension(:), pointer :: p + logical :: l(3) + + a%i = 1 + a%j = [101, 102, 103] + b%i = 3 + b%j = 4 + + p => b + l = .true. + + where (l) + a = p%i + end where + if (any (a%j .ne. 99)) call abort + + a = p%i + if (any (a%j .ne. 99)) call abort + end subroutine +end +! { dg-final { cleanup-modules "m" } } diff --git a/gcc/testsuite/gfortran.dg/intrinsic_3.f90 b/gcc/testsuite/gfortran.dg/intrinsic_3.f90 new file mode 100644 index 00000000000..fcd40e94bbb --- /dev/null +++ b/gcc/testsuite/gfortran.dg/intrinsic_3.f90 @@ -0,0 +1,40 @@ +! { dg-do compile } +! { dg-options "-std=f95" } +! +! PR 39876: module procedure name that collides with the GNU intrinsic +! +! Contributed by Alexei Matveev <alexei.matveev+gcc@gmail.com> + +module p + implicit none + + contains + + subroutine test() + implicit none + print *, avg(erfc) + end subroutine test + + function avg(f) + implicit none + double precision :: avg + interface + double precision function f(x) + implicit none + double precision, intent(in) :: x + end function f + end interface + avg = ( f(1.0D0) + f(2.0D0) ) / 2 + end function avg + + function erfc(x) + implicit none + double precision, intent(in) :: x + double precision :: erfc + erfc = x + end function erfc + +end module p + +! { dg-final { cleanup-modules "p" } } + diff --git a/gcc/testsuite/gfortran.dg/open_errors.f90 b/gcc/testsuite/gfortran.dg/open_errors.f90 index 729cc6a4fef..d6f1e430526 100644 --- a/gcc/testsuite/gfortran.dg/open_errors.f90 +++ b/gcc/testsuite/gfortran.dg/open_errors.f90 @@ -1,6 +1,7 @@ -! { dg-do run { target { ! { *-*-mingw* spu-*-* } } } } +! { dg-do run { target { ! { *-*-mingw* *-*-cygwin* spu-*-* } } } } ! PR30005 Enhanced error messages for OPEN ! Submitted by Jerry DeLisle <jvdelisle@gcc.gnu.org> +! See PR38956. Test fails on cygwin when user has Administrator rights character(60) :: msg character(25) :: n = "temptestfile" logical :: there diff --git a/gcc/toplev.c b/gcc/toplev.c index 1b850faca84..68dc6a3bcfa 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -908,17 +908,45 @@ emit_debug_global_declarations (tree *vec, int len) /* Warn about a use of an identifier which was marked deprecated. */ void -warn_deprecated_use (tree node) +warn_deprecated_use (tree node, tree attr) { + const char *msg; + if (node == 0 || !warn_deprecated_decl) return; + if (!attr) + { + if (DECL_P (node)) + attr = DECL_ATTRIBUTES (node); + else if (TYPE_P (node)) + { + tree decl = TYPE_STUB_DECL (node); + if (decl) + attr = lookup_attribute ("deprecated", + TYPE_ATTRIBUTES (TREE_TYPE (decl))); + } + } + + if (attr) + attr = lookup_attribute ("deprecated", attr); + + if (attr) + msg = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr))); + else + msg = NULL; + if (DECL_P (node)) { expanded_location xloc = expand_location (DECL_SOURCE_LOCATION (node)); - warning (OPT_Wdeprecated_declarations, - "%qD is deprecated (declared at %s:%d)", - node, xloc.file, xloc.line); + if (msg) + warning (OPT_Wdeprecated_declarations, + "%qD is deprecated (declared at %s:%d): %s", + node, xloc.file, xloc.line, msg); + else + warning (OPT_Wdeprecated_declarations, + "%qD is deprecated (declared at %s:%d)", + node, xloc.file, xloc.line); } else if (TYPE_P (node)) { @@ -939,20 +967,46 @@ warn_deprecated_use (tree node) expanded_location xloc = expand_location (DECL_SOURCE_LOCATION (decl)); if (what) - warning (OPT_Wdeprecated_declarations, - "%qE is deprecated (declared at %s:%d)", what, - xloc.file, xloc.line); + { + if (msg) + warning (OPT_Wdeprecated_declarations, + "%qE is deprecated (declared at %s:%d): %s", + what, xloc.file, xloc.line, msg); + else + warning (OPT_Wdeprecated_declarations, + "%qE is deprecated (declared at %s:%d)", what, + xloc.file, xloc.line); + } else - warning (OPT_Wdeprecated_declarations, - "type is deprecated (declared at %s:%d)", - xloc.file, xloc.line); + { + if (msg) + warning (OPT_Wdeprecated_declarations, + "type is deprecated (declared at %s:%d): %s", + xloc.file, xloc.line, msg); + else + warning (OPT_Wdeprecated_declarations, + "type is deprecated (declared at %s:%d)", + xloc.file, xloc.line); + } } else { if (what) - warning (OPT_Wdeprecated_declarations, "%qE is deprecated", what); + { + if (msg) + warning (OPT_Wdeprecated_declarations, "%qE is deprecated: %s", + what, msg); + else + warning (OPT_Wdeprecated_declarations, "%qE is deprecated", what); + } else - warning (OPT_Wdeprecated_declarations, "type is deprecated"); + { + if (msg) + warning (OPT_Wdeprecated_declarations, "type is deprecated: %s", + msg); + else + warning (OPT_Wdeprecated_declarations, "type is deprecated"); + } } } } diff --git a/gcc/toplev.h b/gcc/toplev.h index 28f5d0c4b17..08a89eab034 100644 --- a/gcc/toplev.h +++ b/gcc/toplev.h @@ -83,7 +83,7 @@ extern void announce_function (tree); extern void error_for_asm (const_rtx, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3); extern void warning_for_asm (const_rtx, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3); -extern void warn_deprecated_use (tree); +extern void warn_deprecated_use (tree, tree); extern bool parse_optimize_options (tree, bool); #ifdef BUFSIZ diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index b5c67cd8a08..077f9d602d7 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -7074,7 +7074,7 @@ struct gimple_opt_pass pass_split_crit_edges = PROP_no_crit_edges, /* properties_provided */ 0, /* properties_destroyed */ 0, /* todo_flags_start */ - TODO_dump_func /* todo_flags_finish */ + TODO_dump_func | TODO_verify_flow /* todo_flags_finish */ } }; diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c index 7dbc63ab12d..2835220c206 100644 --- a/gcc/tree-complex.c +++ b/gcc/tree-complex.c @@ -99,7 +99,10 @@ some_nonzerop (tree t) { int zerop = false; - if (TREE_CODE (t) == REAL_CST) + /* Operations with real or imaginary part of a complex number zero + cannot be treated the same as operations with a real or imaginary + operand if we care about the signs of zeros in the result. */ + if (TREE_CODE (t) == REAL_CST && !flag_signed_zeros) zerop = REAL_VALUES_IDENTICAL (TREE_REAL_CST (t), dconst0); else if (TREE_CODE (t) == FIXED_CST) zerop = fixed_zerop (t); diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c index 80014e11292..204bf7e336b 100644 --- a/gcc/tree-eh.c +++ b/gcc/tree-eh.c @@ -344,6 +344,26 @@ outside_finally_tree (treemple start, gimple target) The eh region creation is straight-forward, but frobbing all the gotos and such into shape isn't. */ +/* The GOTO_QUEUE is is an array of GIMPLE_GOTO and GIMPLE_RETURN + statements that are seen to escape this GIMPLE_TRY_FINALLY node. + The idea is to record a gimple statement for everything except for + the conditionals, which get their labels recorded. Since labels are + of type 'tree', we need this node to store both gimple and tree + objects. REPL_STMT is the sequence used to replace the goto/return + statement. CONT_STMT is used to store the statement that allows + the return/goto to jump to the original destination. */ + +struct goto_queue_node +{ + treemple stmt; + gimple_seq repl_stmt; + gimple cont_stmt; + int index; + /* This is used when index >= 0 to indicate that stmt is a label (as + opposed to a goto stmt). */ + int is_label; +}; + /* State of the world while lowering. */ struct leh_state @@ -352,7 +372,6 @@ struct leh_state correspond to variables of the same name in cfun->eh, which we don't have easy access to. */ struct eh_region *cur_region; - struct eh_region *prev_try; /* Processing of TRY_FINALLY requires a bit more state. This is split out into a separate structure so that we don't have to @@ -378,23 +397,8 @@ struct leh_tf_state /* The exception region created for it. */ struct eh_region *region; - /* The GOTO_QUEUE is is an array of GIMPLE_GOTO and GIMPLE_RETURN statements - that are seen to escape this GIMPLE_TRY_FINALLY node. - The idea is to record a gimple statement for everything except for - the conditionals, which get their labels recorded. Since labels are of - type 'tree', we need this node to store both gimple and tree objects. - REPL_STMT is the sequence used to replace the goto/return statement. - CONT_STMT is used to store the statement that allows the return/goto to - jump to the original destination. */ - struct goto_queue_node { - treemple stmt; - gimple_seq repl_stmt; - gimple cont_stmt; - int index; - /* this is used when index >= 0 to indicate that stmt is a label(as - opposed to a goto stmt) */ - int is_label; - } *goto_queue; + /* The goto queue. */ + struct goto_queue_node *goto_queue; size_t goto_queue_size; size_t goto_queue_active; @@ -1566,12 +1570,11 @@ lower_try_finally (struct leh_state *state, gimple tp) this_tf.outer = state; if (using_eh_for_cleanups_p) this_tf.region - = gen_eh_region_cleanup (state->cur_region, state->prev_try); + = gen_eh_region_cleanup (state->cur_region); else this_tf.region = NULL; this_state.cur_region = this_tf.region; - this_state.prev_try = state->prev_try; this_state.tf = &this_tf; lower_eh_constructs_1 (&this_state, gimple_try_eval(tp)); @@ -1650,7 +1653,6 @@ lower_catch (struct leh_state *state, gimple tp) try_region = gen_eh_region_try (state->cur_region); this_state.cur_region = try_region; - this_state.prev_try = try_region; this_state.tf = state->tf; lower_eh_constructs_1 (&this_state, gimple_try_eval (tp)); @@ -1672,7 +1674,6 @@ lower_catch (struct leh_state *state, gimple tp) gimple_catch_types (gcatch)); this_state.cur_region = catch_region; - this_state.prev_try = state->prev_try; lower_eh_constructs_1 (&this_state, gimple_catch_handler (gcatch)); eh_label = create_artificial_label (); @@ -1719,10 +1720,6 @@ lower_eh_filter (struct leh_state *state, gimple tp) gimple_eh_filter_types (inner)); this_state = *state; this_state.cur_region = this_region; - /* For must not throw regions any cleanup regions inside it - can't reach outer catch regions. */ - if (gimple_eh_filter_must_not_throw (inner)) - this_state.prev_try = NULL; lower_eh_constructs_1 (&this_state, gimple_try_eval (tp)); @@ -1759,7 +1756,7 @@ lower_cleanup (struct leh_state *state, gimple tp) return result; } - this_region = gen_eh_region_cleanup (state->cur_region, state->prev_try); + this_region = gen_eh_region_cleanup (state->cur_region); this_state = *state; this_state.cur_region = this_region; diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index b134ae53d15..752766b6c7b 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see #include "params.h" #include "input.h" #include "insn-config.h" -#include "varray.h" #include "hashtab.h" #include "langhooks.h" #include "basic-block.h" @@ -133,6 +132,7 @@ static tree copy_decl_to_var (tree, copy_body_data *); static tree copy_result_decl_to_var (tree, copy_body_data *); static tree copy_decl_maybe_to_var (tree, copy_body_data *); static gimple remap_gimple_stmt (gimple, copy_body_data *); +static bool delete_unreachable_blocks_update_callgraph (copy_body_data *id); /* Insert a tree->tree mapping for ID. Despite the name suggests that the trees should be variables, it is used for more than that. */ @@ -1393,6 +1393,8 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale, need to process all of them. */ do { + tree fn; + stmt = gsi_stmt (copy_gsi); if (is_gimple_call (stmt) && gimple_call_va_arg_pack_p (stmt) @@ -1481,34 +1483,24 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale, callgraph edges and update or duplicate them. */ if (is_gimple_call (stmt)) { - struct cgraph_node *node; - struct cgraph_edge *edge; + struct cgraph_edge *edge = cgraph_edge (id->src_node, orig_stmt); int flags; switch (id->transform_call_graph_edges) { case CB_CGE_DUPLICATE: - edge = cgraph_edge (id->src_node, orig_stmt); - if (edge) + if (edge) cgraph_clone_edge (edge, id->dst_node, stmt, REG_BR_PROB_BASE, 1, edge->frequency, true); break; case CB_CGE_MOVE_CLONES: - for (node = id->dst_node->next_clone; - node; - node = node->next_clone) - { - edge = cgraph_edge (node, orig_stmt); - if (edge) - cgraph_set_call_stmt (edge, stmt); - } - /* FALLTHRU */ + cgraph_set_call_stmt_including_clones (id->dst_node, orig_stmt, stmt); + break; case CB_CGE_MOVE: - edge = cgraph_edge (id->dst_node, orig_stmt); - if (edge) + if (edge) cgraph_set_call_stmt (edge, stmt); break; @@ -1516,6 +1508,37 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale, gcc_unreachable (); } + /* Constant propagation on argument done during inlining + may create new direct call. Produce an edge for it. */ + if (!edge && is_gimple_call (stmt) + && (fn = gimple_call_fndecl (stmt)) != NULL + && !cgraph_edge (id->dst_node, stmt)) + { + struct cgraph_node *dest = cgraph_node (fn); + + /* We have missing edge in the callgraph. This can happen in one case + where previous inlining turned indirect call into direct call by + constant propagating arguments. In all other cases we hit a bug + (incorrect node sharing is most common reason for missing edges. */ + gcc_assert (dest->needed || !dest->analyzed); + if (id->transform_call_graph_edges == CB_CGE_MOVE_CLONES) + cgraph_create_edge_including_clones (id->dst_node, dest, stmt, + bb->count, + compute_call_stmt_bb_frequency (id->dst_node->decl, bb), + bb->loop_depth, + CIF_ORIGINALLY_INDIRECT_CALL); + else + cgraph_create_edge (id->dst_node, dest, stmt, + bb->count, CGRAPH_FREQ_BASE, + bb->loop_depth)->inline_failed + = CIF_ORIGINALLY_INDIRECT_CALL; + if (dump_file) + { + fprintf (dump_file, "Created new direct edge to %s", + cgraph_node_name (dest)); + } + } + flags = gimple_call_flags (stmt); if (flags & ECF_MAY_BE_ALLOCA) @@ -2746,6 +2769,8 @@ estimate_move_cost (tree type) { HOST_WIDE_INT size; + gcc_assert (!VOID_TYPE_P (type)); + size = int_size_in_bytes (type); if (size < 0 || size > MOVE_MAX_PIECES * MOVE_RATIO (!optimize_size)) @@ -2991,20 +3016,24 @@ estimate_num_insns (gimple stmt, eni_weights *weights) { tree arg; for (arg = DECL_ARGUMENTS (decl); arg; arg = TREE_CHAIN (arg)) - cost += estimate_move_cost (TREE_TYPE (arg)); + if (!VOID_TYPE_P (TREE_TYPE (arg))) + cost += estimate_move_cost (TREE_TYPE (arg)); } else if (funtype && prototype_p (funtype)) { tree t; - for (t = TYPE_ARG_TYPES (funtype); t; t = TREE_CHAIN (t)) - cost += estimate_move_cost (TREE_VALUE (t)); + for (t = TYPE_ARG_TYPES (funtype); t && t != void_list_node; + t = TREE_CHAIN (t)) + if (!VOID_TYPE_P (TREE_VALUE (t))) + cost += estimate_move_cost (TREE_VALUE (t)); } else { for (i = 0; i < gimple_call_num_args (stmt); i++) { tree arg = gimple_call_arg (stmt, i); - cost += estimate_move_cost (TREE_TYPE (arg)); + if (!VOID_TYPE_P (TREE_TYPE (arg))) + cost += estimate_move_cost (TREE_TYPE (arg)); } } @@ -3221,29 +3250,6 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id) cg_edge = cgraph_edge (id->dst_node, stmt); - /* Constant propagation on argument done during previous inlining - may create new direct call. Produce an edge for it. */ - if (!cg_edge) - { - struct cgraph_node *dest = cgraph_node (fn); - - /* We have missing edge in the callgraph. This can happen in one case - where previous inlining turned indirect call into direct call by - constant propagating arguments. In all other cases we hit a bug - (incorrect node sharing is most common reason for missing edges. */ - gcc_assert (dest->needed); - cgraph_create_edge (id->dst_node, dest, stmt, - bb->count, CGRAPH_FREQ_BASE, - bb->loop_depth)->inline_failed - = CIF_ORIGINALLY_INDIRECT_CALL; - if (dump_file) - { - fprintf (dump_file, "Created new direct edge to %s", - cgraph_node_name (dest)); - } - goto egress; - } - /* Don't try to inline functions that are not well-suited to inlining. */ if (!cgraph_inline_p (cg_edge, &reason)) @@ -3544,6 +3550,7 @@ fold_marked_statements (int first, struct pointer_set_t *statements) if (pointer_set_contains (statements, gsi_stmt (gsi))) { gimple old_stmt = gsi_stmt (gsi); + tree old_decl = is_gimple_call (old_stmt) ? gimple_call_fndecl (old_stmt) : 0; if (fold_stmt (&gsi)) { @@ -3552,8 +3559,9 @@ fold_marked_statements (int first, struct pointer_set_t *statements) gimple new_stmt = gsi_stmt (gsi); update_stmt (new_stmt); - if (is_gimple_call (old_stmt)) - cgraph_update_edges_for_call_stmt (old_stmt, new_stmt); + if (is_gimple_call (old_stmt) + || is_gimple_call (new_stmt)) + cgraph_update_edges_for_call_stmt (old_stmt, old_decl, new_stmt); if (maybe_clean_or_replace_eh_stmt (old_stmt, new_stmt)) gimple_purge_dead_eh_edges (BASIC_BLOCK (first)); @@ -3656,6 +3664,10 @@ optimize_inline_calls (tree fn) number_blocks (fn); fold_cond_expr_cond (); + delete_unreachable_blocks_update_callgraph (&id); +#ifdef ENABLE_CHECKING + verify_cgraph_node (id.dst_node); +#endif /* It would be nice to check SSA/CFG/statement consistency here, but it is not possible yet - the IPA passes might make various functions to not @@ -4281,27 +4293,98 @@ tree_versionable_function_p (tree fndecl) return true; } -/* Create a new name for omp child function. Returns an identifier. */ - -static GTY(()) unsigned int clone_fn_id_num; +/* Delete all unreachable basic blocks and update callgraph. + Doing so is somewhat nontrivial because we need to update all clones and + remove inline function that become unreachable. */ -static tree -clone_function_name (tree decl) +static bool +delete_unreachable_blocks_update_callgraph (copy_body_data *id) { - tree name = DECL_ASSEMBLER_NAME (decl); - size_t len = IDENTIFIER_LENGTH (name); - char *tmp_name, *prefix; - - prefix = XALLOCAVEC (char, len + strlen ("_clone") + 1); - memcpy (prefix, IDENTIFIER_POINTER (name), len); - strcpy (prefix + len, "_clone"); -#ifndef NO_DOT_IN_LABEL - prefix[len] = '.'; -#elif !defined NO_DOLLAR_IN_LABEL - prefix[len] = '$'; + bool changed = false; + basic_block b, next_bb; + + find_unreachable_blocks (); + + /* Delete all unreachable basic blocks. */ + + for (b = ENTRY_BLOCK_PTR->next_bb; b != EXIT_BLOCK_PTR; b = next_bb) + { + next_bb = b->next_bb; + + if (!(b->flags & BB_REACHABLE)) + { + gimple_stmt_iterator bsi; + + for (bsi = gsi_start_bb (b); !gsi_end_p (bsi); gsi_next (&bsi)) + if (gimple_code (gsi_stmt (bsi)) == GIMPLE_CALL) + { + struct cgraph_edge *e; + struct cgraph_node *node; + + if ((e = cgraph_edge (id->dst_node, gsi_stmt (bsi))) != NULL) + { + if (!e->inline_failed) + cgraph_remove_node_and_inline_clones (e->callee); + else + cgraph_remove_edge (e); + } + if (id->transform_call_graph_edges == CB_CGE_MOVE_CLONES + && id->dst_node->clones) + for (node = id->dst_node->clones; node != id->dst_node;) + { + if ((e = cgraph_edge (node, gsi_stmt (bsi))) != NULL) + { + if (!e->inline_failed) + cgraph_remove_node_and_inline_clones (e->callee); + else + cgraph_remove_edge (e); + } + + if (node->clones) + node = node->clones; + else if (node->next_sibling_clone) + node = node->next_sibling_clone; + else + { + while (node != id->dst_node && !node->next_sibling_clone) + node = node->clone_of; + if (node != id->dst_node) + node = node->next_sibling_clone; + } + } + } + delete_basic_block (b); + changed = true; + } + } + + if (changed) + tidy_fallthru_edges (); +#ifdef ENABLE_CHECKING0 + verify_cgraph_node (id->dst_node); + if (id->transform_call_graph_edges == CB_CGE_MOVE_CLONES + && id->dst_node->clones) + { + struct cgraph_node *node; + for (node = id->dst_node->clones; node != id->dst_node;) + { + verify_cgraph_node (node); + + if (node->clones) + node = node->clones; + else if (node->next_sibling_clone) + node = node->next_sibling_clone; + else + { + while (node != id->dst_node && !node->next_sibling_clone) + node = node->clone_of; + if (node != id->dst_node) + node = node->next_sibling_clone; + } + } + } #endif - ASM_FORMAT_PRIVATE_NAME (tmp_name, prefix, clone_fn_id_num++); - return get_identifier (tmp_name); + return changed; } /* Create a copy of a function's tree. @@ -4313,7 +4396,7 @@ clone_function_name (tree decl) trees. If UPDATE_CLONES is set, the call_stmt fields of edges of clones of the function will be updated. */ void -tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map, +tree_function_versioning (tree old_decl, tree new_decl, VEC(ipa_replace_map_p,gc)* tree_map, bool update_clones, bitmap args_to_skip) { struct cgraph_node *old_version_node; @@ -4349,13 +4432,7 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map, memset (&id, 0, sizeof (id)); /* Generate a new name for the new version. */ - if (!update_clones) - { - DECL_NAME (new_decl) = clone_function_name (old_decl); - SET_DECL_ASSEMBLER_NAME (new_decl, DECL_NAME (new_decl)); - SET_DECL_RTL (new_decl, NULL_RTX); - id.statements_to_fold = pointer_set_create (); - } + id.statements_to_fold = pointer_set_create (); id.decl_map = pointer_map_create (); id.src_fn = old_decl; @@ -4388,11 +4465,10 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map, /* If there's a tree_map, prepare for substitution. */ if (tree_map) - for (i = 0; i < VARRAY_ACTIVE_SIZE (tree_map); i++) + for (i = 0; i < VEC_length (ipa_replace_map_p, tree_map); i++) { gimple init; - replace_info - = (struct ipa_replace_map *) VARRAY_GENERIC_PTR (tree_map, i); + replace_info = VEC_index (ipa_replace_map_p, tree_map, i); if (replace_info->replace_p) { tree op = replace_info->new_tree; @@ -4431,6 +4507,7 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map, number_blocks (id.dst_fn); declare_inline_vars (DECL_INITIAL (new_decl), vars); + if (DECL_STRUCT_FUNCTION (old_decl)->local_decls != NULL_TREE) /* Add local vars. */ for (t_step = DECL_STRUCT_FUNCTION (old_decl)->local_decls; @@ -4469,14 +4546,15 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map, pointer_map_destroy (id.decl_map); free_dominance_info (CDI_DOMINATORS); free_dominance_info (CDI_POST_DOMINATORS); - if (!update_clones) - { - fold_marked_statements (0, id.statements_to_fold); - pointer_set_destroy (id.statements_to_fold); - fold_cond_expr_cond (); - delete_unreachable_blocks (); - update_ssa (TODO_update_ssa); - } + + fold_marked_statements (0, id.statements_to_fold); + pointer_set_destroy (id.statements_to_fold); + fold_cond_expr_cond (); + delete_unreachable_blocks_update_callgraph (&id); + update_ssa (TODO_update_ssa); + free_dominance_info (CDI_DOMINATORS); + free_dominance_info (CDI_POST_DOMINATORS); + VEC_free (gimple, heap, init_stmts); pop_cfun (); current_function_decl = old_current_function_decl; @@ -4544,5 +4622,3 @@ tree_can_inline_p (tree caller, tree callee) /* Allow the backend to decide if inlining is ok. */ return targetm.target_option.can_inline_p (caller, callee); } - -#include "gt-tree-inline.h" diff --git a/gcc/tree-inline.h b/gcc/tree-inline.h index 2a4e38b1657..1214c95dd0b 100644 --- a/gcc/tree-inline.h +++ b/gcc/tree-inline.h @@ -1,5 +1,6 @@ /* Tree inlining hooks and declarations. - Copyright 2001, 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. + Copyright 2001, 2003, 2004, 2005, 2007, 2008, 2009 + Free Software Foundation, Inc. Contributed by Alexandre Oliva <aoliva@redhat.com> This file is part of GCC. @@ -21,10 +22,20 @@ along with GCC; see the file COPYING3. If not see #ifndef GCC_TREE_INLINE_H #define GCC_TREE_INLINE_H -#include "varray.h" #include "pointer-set.h" +/* Indicate the desired behavior wrt call graph edges. We can either + duplicate the edge (inlining, cloning), move the edge (versioning, + parallelization), or move the edges of the clones (saving). */ + +enum copy_body_cge_which +{ + CB_CGE_DUPLICATE, + CB_CGE_MOVE, + CB_CGE_MOVE_CLONES +}; + /* Data required for function body duplication. */ typedef struct copy_body_data @@ -76,14 +87,8 @@ typedef struct copy_body_data than enumerating the different cases, we categorize the behavior in the various situations. */ - /* Indicate the desired behavior wrt call graph edges. We can either - duplicate the edge (inlining, cloning), move the edge (versioning, - parallelization), or move the edges of the clones (saving). */ - enum copy_body_cge_which { - CB_CGE_DUPLICATE, - CB_CGE_MOVE, - CB_CGE_MOVE_CLONES - } transform_call_graph_edges; + /* What to do with call graph edges. */ + enum copy_body_cge_which transform_call_graph_edges; /* True if a new CFG should be created. False for inlining, true for everything else. */ @@ -156,7 +161,6 @@ int estimate_num_insns (gimple, eni_weights *); int estimate_num_insns_fn (tree, eni_weights *); int count_insns_seq (gimple_seq, eni_weights *); bool tree_versionable_function_p (tree); -void tree_function_versioning (tree, tree, varray_type, bool, bitmap); bool tree_can_inline_p (tree, tree); extern gimple_seq remap_gimple_seq (gimple_seq, copy_body_data *); diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h index 8ce7c3ae81b..464de5e0cdb 100644 --- a/gcc/tree-pass.h +++ b/gcc/tree-pass.h @@ -94,17 +94,22 @@ extern const char *dump_file_name; /* Return the dump_file_info for the given phase. */ extern struct dump_file_info *get_dump_file_info (int); +/* Optimization pass type. */ +enum opt_pass_type +{ + GIMPLE_PASS, + RTL_PASS, + SIMPLE_IPA_PASS, + IPA_PASS +}; + /* Describe one pass; this is the common part shared across different pass types. */ struct opt_pass { /* Optimization pass type. */ - enum opt_pass_type { - GIMPLE_PASS, - RTL_PASS, - SIMPLE_IPA_PASS, - IPA_PASS - } type; + enum opt_pass_type type; + /* Terse name of the pass used as a fragment of the dump file name. If the name starts with a star, no dump happens. */ const char *name; diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c index c8cbe1d4351..d9d31eee79b 100644 --- a/gcc/tree-pretty-print.c +++ b/gcc/tree-pretty-print.c @@ -2767,6 +2767,7 @@ maybe_init_pretty_print (FILE *file) { pp_construct (&buffer, /* prefix */NULL, /* line-width */0); pp_needs_newline (&buffer) = true; + pp_translate_identifiers (&buffer) = false; initialized = 1; } diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c index 2d31f9f534c..b3990c6bfe1 100644 --- a/gcc/tree-scalar-evolution.c +++ b/gcc/tree-scalar-evolution.c @@ -1319,11 +1319,7 @@ follow_ssa_edge_in_condition_phi (struct loop *loop, *evolution_of_loop = evolution_of_branch; - /* If the phi node is just a copy, do not increase the limit. */ n = gimple_phi_num_args (condition_phi); - if (n > 1) - limit++; - for (i = 1; i < n; i++) { /* Quickly give up when the evolution of one of the branches is @@ -1331,10 +1327,12 @@ follow_ssa_edge_in_condition_phi (struct loop *loop, if (*evolution_of_loop == chrec_dont_know) return t_true; + /* Increase the limit by the PHI argument number to avoid exponential + time and memory complexity. */ res = follow_ssa_edge_in_condition_phi_branch (i, loop, condition_phi, halting_phi, &evolution_of_branch, - init, limit); + init, limit + i); if (res == t_false || res == t_dont_know) return res; diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index ff8a7399459..626a253d152 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -270,6 +270,10 @@ sra_type_can_be_decomposed_p (tree type) != TYPE_PRECISION (TREE_TYPE (t)))) goto fail; + /* And volatile fields. */ + if (TREE_THIS_VOLATILE (t)) + goto fail; + saw_one_field = true; } diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 0ab9883887c..06d51e2d318 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -1974,11 +1974,20 @@ vectorizable_operation (gimple stmt, gimple_stmt_iterator *gsi, else { optab = optab_for_tree_code (code, vectype, optab_vector); - if (vect_print_dump_info (REPORT_DETAILS) - && optab + if (optab && (optab_handler (optab, TYPE_MODE (vectype))->insn_code != CODE_FOR_nothing)) - fprintf (vect_dump, "vector/vector shift/rotate found."); + { + if (vect_print_dump_info (REPORT_DETAILS)) + fprintf (vect_dump, "vector/vector shift/rotate found."); + + /* Unlike the other binary operators, shifts/rotates have + the rhs being int, instead of the same type as the lhs, + so make sure the scalar is the right type if we are + dealing with vectors of short/char. */ + if (dt[1] == vect_constant_def) + op1 = fold_convert (TREE_TYPE (vectype), op1); + } } } diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index a541b69211c..4e21b581121 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,25 @@ +2009-05-10 Joseph Myers <joseph@codesourcery.com> + + * include/cpplib.h (enum cpp_token_fld_kind): Add + CPP_TOKEN_FLD_TOKEN_NO. + (struct cpp_macro_arg, struct cpp_identifier): Define. + (union cpp_token_u): Use struct cpp_identifier for identifiers. + Use struct cpp_macro_arg for macro arguments. Add token_no for + CPP_PASTE token numbers. + * directives.c (_cpp_handle_directive, lex_macro_node, do_pragma, + do_pragma_poison, parse_assertion): Use val.node.node in place of + val.node. + * expr.c (parse_defined, eval_token): Use val.node.node in place + of val.node. + * lex.c (cpp_ideq, _cpp_lex_direct, cpp_token_len, + cpp_spell_token, cpp_output_token, _cpp_equiv_tokens, + cpp_token_val_index): Use val.macro_arg.arg_no or val.token_no in + place of val.arg_no. Use val.node.node in place of val.node. + * macro.c (replace_args, cpp_get_token, parse_params, + lex_expansion_token, create_iso_definition, cpp_macro_definition): + Use val.macro_arg.arg_no or val.token_no in place of val.arg_no. + Use val.node.node in place of val.node. + 2009-05-03 Joseph Myers <joseph@codesourcery.com> * charset.c (one_utf8_to_cppchar): Correct mask used for 5-byte diff --git a/libcpp/directives.c b/libcpp/directives.c index c2e71016f24..e71efb2bd94 100644 --- a/libcpp/directives.c +++ b/libcpp/directives.c @@ -408,8 +408,8 @@ _cpp_handle_directive (cpp_reader *pfile, int indented) if (dname->type == CPP_NAME) { - if (dname->val.node->is_directive) - dir = &dtable[dname->val.node->directive_index]; + if (dname->val.node.node->is_directive) + dir = &dtable[dname->val.node.node->directive_index]; } /* We do not recognize the # followed by a number extension in assembler code. */ @@ -538,7 +538,7 @@ lex_macro_node (cpp_reader *pfile, bool is_def_or_undef) if (token->type == CPP_NAME) { - cpp_hashnode *node = token->val.node; + cpp_hashnode *node = token->val.node.node; if (is_def_or_undef && node == pfile->spec_nodes.n_defined) cpp_error (pfile, CPP_DL_ERROR, @@ -549,7 +549,7 @@ lex_macro_node (cpp_reader *pfile, bool is_def_or_undef) else if (token->flags & NAMED_OP) cpp_error (pfile, CPP_DL_ERROR, "\"%s\" cannot be used as a macro name as it is an operator in C++", - NODE_NAME (token->val.node)); + NODE_NAME (token->val.node.node)); else if (token->type == CPP_EOF) cpp_error (pfile, CPP_DL_ERROR, "no macro name given in #%s directive", pfile->directive->name); @@ -1329,7 +1329,7 @@ do_pragma (cpp_reader *pfile) ns_token = *token; if (token->type == CPP_NAME) { - p = lookup_pragma_entry (pfile->pragmas, token->val.node); + p = lookup_pragma_entry (pfile->pragmas, token->val.node.node); if (p && p->is_nspace) { bool allow_name_expansion = p->allow_expansion; @@ -1337,7 +1337,7 @@ do_pragma (cpp_reader *pfile) pfile->state.prevent_expansion--; token = cpp_get_token (pfile); if (token->type == CPP_NAME) - p = lookup_pragma_entry (p->u.space, token->val.node); + p = lookup_pragma_entry (p->u.space, token->val.node.node); else p = NULL; if (allow_name_expansion) @@ -1429,7 +1429,7 @@ do_pragma_poison (cpp_reader *pfile) break; } - hp = tok->val.node; + hp = tok->val.node.node; if (hp->flags & NODE_POISONED) continue; @@ -1986,12 +1986,12 @@ parse_assertion (cpp_reader *pfile, struct answer **answerp, int type) cpp_error (pfile, CPP_DL_ERROR, "predicate must be an identifier"); else if (parse_answer (pfile, answerp, type) == 0) { - unsigned int len = NODE_LEN (predicate->val.node); + unsigned int len = NODE_LEN (predicate->val.node.node); unsigned char *sym = (unsigned char *) alloca (len + 1); /* Prefix '#' to get it out of macro namespace. */ sym[0] = '#'; - memcpy (sym + 1, NODE_NAME (predicate->val.node), len); + memcpy (sym + 1, NODE_NAME (predicate->val.node.node), len); result = cpp_lookup (pfile, sym, len + 1); } diff --git a/libcpp/expr.c b/libcpp/expr.c index ecedb96c672..6887b165690 100644 --- a/libcpp/expr.c +++ b/libcpp/expr.c @@ -651,7 +651,7 @@ parse_defined (cpp_reader *pfile) if (token->type == CPP_NAME) { - node = token->val.node; + node = token->val.node.node; if (paren && cpp_get_token (pfile)->type != CPP_CLOSE_PAREN) { cpp_error (pfile, CPP_DL_ERROR, "missing ')' after \"defined\""); @@ -771,14 +771,14 @@ eval_token (cpp_reader *pfile, const cpp_token *token) break; case CPP_NAME: - if (token->val.node == pfile->spec_nodes.n_defined) + if (token->val.node.node == pfile->spec_nodes.n_defined) return parse_defined (pfile); else if (CPP_OPTION (pfile, cplusplus) - && (token->val.node == pfile->spec_nodes.n_true - || token->val.node == pfile->spec_nodes.n_false)) + && (token->val.node.node == pfile->spec_nodes.n_true + || token->val.node.node == pfile->spec_nodes.n_false)) { result.high = 0; - result.low = (token->val.node == pfile->spec_nodes.n_true); + result.low = (token->val.node.node == pfile->spec_nodes.n_true); } else { @@ -786,7 +786,7 @@ eval_token (cpp_reader *pfile, const cpp_token *token) result.low = 0; if (CPP_OPTION (pfile, warn_undef) && !pfile->state.skip_eval) cpp_error (pfile, CPP_DL_WARNING, "\"%s\" is not defined", - NODE_NAME (token->val.node)); + NODE_NAME (token->val.node.node)); } break; diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index 80e905686fc..83439c7341f 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -189,10 +189,27 @@ enum cpp_token_fld_kind { CPP_TOKEN_FLD_SOURCE, CPP_TOKEN_FLD_STR, CPP_TOKEN_FLD_ARG_NO, + CPP_TOKEN_FLD_TOKEN_NO, CPP_TOKEN_FLD_PRAGMA, CPP_TOKEN_FLD_NONE }; +/* A macro argument in the cpp_token union. */ +struct GTY(()) cpp_macro_arg { + /* Argument number. */ + unsigned int arg_no; +}; + +/* An identifier in the cpp_token union. */ +struct GTY(()) cpp_identifier { + /* The canonical (UTF-8) spelling of the identifier. */ + cpp_hashnode * + GTY ((nested_ptr (union tree_node, + "%h ? CPP_HASHNODE (GCC_IDENT_TO_HT_IDENT (%h)) : NULL", + "%h ? HT_IDENT_TO_GCC_IDENT (HT_NODE (%h)) : NULL"))) + node; +}; + /* A preprocessing token. This has been carefully packed and should occupy 16 bytes on 32-bit hosts and 24 bytes on 64-bit hosts. */ struct GTY(()) cpp_token { @@ -203,12 +220,7 @@ struct GTY(()) cpp_token { union cpp_token_u { /* An identifier. */ - cpp_hashnode * - GTY ((nested_ptr (union tree_node, - "%h ? CPP_HASHNODE (GCC_IDENT_TO_HT_IDENT (%h)) : NULL", - "%h ? HT_IDENT_TO_GCC_IDENT (HT_NODE (%h)) : NULL"), - tag ("CPP_TOKEN_FLD_NODE"))) - node; + struct cpp_identifier GTY ((tag ("CPP_TOKEN_FLD_NODE"))) node; /* Inherit padding from this token. */ cpp_token * GTY ((tag ("CPP_TOKEN_FLD_SOURCE"))) source; @@ -217,7 +229,11 @@ struct GTY(()) cpp_token { struct cpp_string GTY ((tag ("CPP_TOKEN_FLD_STR"))) str; /* Argument no. for a CPP_MACRO_ARG. */ - unsigned int GTY ((tag ("CPP_TOKEN_FLD_ARG_NO"))) arg_no; + struct cpp_macro_arg GTY ((tag ("CPP_TOKEN_FLD_ARG_NO"))) macro_arg; + + /* Original token no. for a CPP_PASTE (from a sequence of + consecutive paste tokens in a macro expansion). */ + unsigned int GTY ((tag ("CPP_TOKEN_FLD_TOKEN_NO"))) token_no; /* Caller-supplied identifier for a CPP_PRAGMA. */ unsigned int GTY ((tag ("CPP_TOKEN_FLD_PRAGMA"))) pragma; diff --git a/libcpp/lex.c b/libcpp/lex.c index af5c06a7abc..ca2f2ca06f1 100644 --- a/libcpp/lex.c +++ b/libcpp/lex.c @@ -76,7 +76,7 @@ cpp_ideq (const cpp_token *token, const char *string) if (token->type != CPP_NAME) return 0; - return !ustrcmp (NODE_NAME (token->val.node), (const uchar *) string); + return !ustrcmp (NODE_NAME (token->val.node.node), (const uchar *) string); } /* Record a note TYPE at byte POS into the current cleaned logical @@ -1120,16 +1120,16 @@ _cpp_lex_direct (cpp_reader *pfile) result->type = CPP_NAME; { struct normalize_state nst = INITIAL_NORMALIZE_STATE; - result->val.node = lex_identifier (pfile, buffer->cur - 1, false, - &nst); + result->val.node.node = lex_identifier (pfile, buffer->cur - 1, false, + &nst); warn_about_normalization (pfile, result, &nst); } /* Convert named operators to their proper types. */ - if (result->val.node->flags & NODE_OPERATOR) + if (result->val.node.node->flags & NODE_OPERATOR) { result->flags |= NAMED_OP; - result->type = (enum cpp_ttype) result->val.node->directive_index; + result->type = (enum cpp_ttype) result->val.node.node->directive_index; } break; @@ -1244,7 +1244,7 @@ _cpp_lex_direct (cpp_reader *pfile) result->flags |= DIGRAPH; result->type = CPP_HASH; if (*buffer->cur == '%' && buffer->cur[1] == ':') - buffer->cur += 2, result->type = CPP_PASTE, result->val.arg_no = 0; + buffer->cur += 2, result->type = CPP_PASTE, result->val.token_no = 0; } else if (*buffer->cur == '>') { @@ -1325,7 +1325,7 @@ _cpp_lex_direct (cpp_reader *pfile) case '=': IF_NEXT_IS ('=', CPP_EQ_EQ, CPP_EQ); break; case '!': IF_NEXT_IS ('=', CPP_NOT_EQ, CPP_NOT); break; case '^': IF_NEXT_IS ('=', CPP_XOR_EQ, CPP_XOR); break; - case '#': IF_NEXT_IS ('#', CPP_PASTE, CPP_HASH); result->val.arg_no = 0; break; + case '#': IF_NEXT_IS ('#', CPP_PASTE, CPP_HASH); result->val.token_no = 0; break; case '?': result->type = CPP_QUERY; break; case '~': result->type = CPP_COMPL; break; @@ -1350,7 +1350,7 @@ _cpp_lex_direct (cpp_reader *pfile) if (forms_identifier_p (pfile, true, &nst)) { result->type = CPP_NAME; - result->val.node = lex_identifier (pfile, base, true, &nst); + result->val.node.node = lex_identifier (pfile, base, true, &nst); warn_about_normalization (pfile, result, &nst); break; } @@ -1376,7 +1376,7 @@ cpp_token_len (const cpp_token *token) { default: len = 6; break; case SPELL_LITERAL: len = token->val.str.len; break; - case SPELL_IDENT: len = NODE_LEN (token->val.node) * 10; break; + case SPELL_IDENT: len = NODE_LEN (token->val.node.node) * 10; break; } return len; @@ -1457,23 +1457,23 @@ cpp_spell_token (cpp_reader *pfile, const cpp_token *token, case SPELL_IDENT: if (forstring) { - memcpy (buffer, NODE_NAME (token->val.node), - NODE_LEN (token->val.node)); - buffer += NODE_LEN (token->val.node); + memcpy (buffer, NODE_NAME (token->val.node.node), + NODE_LEN (token->val.node.node)); + buffer += NODE_LEN (token->val.node.node); } else { size_t i; - const unsigned char * name = NODE_NAME (token->val.node); + const unsigned char * name = NODE_NAME (token->val.node.node); - for (i = 0; i < NODE_LEN (token->val.node); i++) + for (i = 0; i < NODE_LEN (token->val.node.node); i++) if (name[i] & ~0x7F) { i += utf8_to_ucn (buffer, name + i) - 1; buffer += 10; } else - *buffer++ = NODE_NAME (token->val.node)[i]; + *buffer++ = NODE_NAME (token->val.node.node)[i]; } break; @@ -1550,9 +1550,9 @@ cpp_output_token (const cpp_token *token, FILE *fp) case SPELL_IDENT: { size_t i; - const unsigned char * name = NODE_NAME (token->val.node); + const unsigned char * name = NODE_NAME (token->val.node.node); - for (i = 0; i < NODE_LEN (token->val.node); i++) + for (i = 0; i < NODE_LEN (token->val.node.node); i++) if (name[i] & ~0x7F) { unsigned char buffer[10]; @@ -1560,7 +1560,7 @@ cpp_output_token (const cpp_token *token, FILE *fp) fwrite (buffer, 1, 10, fp); } else - fputc (NODE_NAME (token->val.node)[i], fp); + fputc (NODE_NAME (token->val.node.node)[i], fp); } break; @@ -1583,13 +1583,14 @@ _cpp_equiv_tokens (const cpp_token *a, const cpp_token *b) { default: /* Keep compiler happy. */ case SPELL_OPERATOR: - /* arg_no is used to track where multiple consecutive ## + /* token_no is used to track where multiple consecutive ## tokens were originally located. */ - return (a->type != CPP_PASTE || a->val.arg_no == b->val.arg_no); + return (a->type != CPP_PASTE || a->val.token_no == b->val.token_no); case SPELL_NONE: - return (a->type != CPP_MACRO_ARG || a->val.arg_no == b->val.arg_no); + return (a->type != CPP_MACRO_ARG + || a->val.macro_arg.arg_no == b->val.macro_arg.arg_no); case SPELL_IDENT: - return a->val.node == b->val.node; + return a->val.node.node == b->val.node.node; case SPELL_LITERAL: return (a->val.str.len == b->val.str.len && !memcmp (a->val.str.text, b->val.str.text, @@ -1901,7 +1902,7 @@ cpp_token_val_index (cpp_token *tok) return CPP_TOKEN_FLD_STR; case SPELL_OPERATOR: if (tok->type == CPP_PASTE) - return CPP_TOKEN_FLD_ARG_NO; + return CPP_TOKEN_FLD_TOKEN_NO; else return CPP_TOKEN_FLD_NONE; case SPELL_NONE: diff --git a/libcpp/macro.c b/libcpp/macro.c index 36853971780..e051fbc7757 100644 --- a/libcpp/macro.c +++ b/libcpp/macro.c @@ -946,7 +946,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg /* We have an argument. If it is not being stringified or pasted it is macro-replaced before insertion. */ - arg = &args[src->val.arg_no - 1]; + arg = &args[src->val.macro_arg.arg_no - 1]; if (src->flags & STRINGIFY_ARG) { @@ -982,7 +982,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg } paste_flag = 0; - arg = &args[src->val.arg_no - 1]; + arg = &args[src->val.macro_arg.arg_no - 1]; if (src->flags & STRINGIFY_ARG) count = 1, from = &arg->stringified; else if (src->flags & PASTE_LEFT) @@ -994,7 +994,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg { if (dest[-1]->type == CPP_COMMA && macro->variadic - && src->val.arg_no == macro->paramc) + && src->val.macro_arg.arg_no == macro->paramc) { /* Swallow a pasted comma if from == NULL, otherwise drop the paste flag. */ @@ -1035,7 +1035,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg "empty macro arguments are undefined" " in ISO C90 and ISO C++98", NODE_NAME (node), - src->val.arg_no); + src->val.macro_arg.arg_no); } /* Avoid paste on RHS (even case count == 0). */ @@ -1261,7 +1261,7 @@ cpp_get_token (cpp_reader *pfile) if (result->type != CPP_NAME) break; - node = result->val.node; + node = result->val.node.node; if (node->type != NT_MACRO || (result->flags & NO_EXPAND)) break; @@ -1553,7 +1553,7 @@ parse_params (cpp_reader *pfile, cpp_macro *macro) } prev_ident = 1; - if (_cpp_save_parameter (pfile, macro, token->val.node)) + if (_cpp_save_parameter (pfile, macro, token->val.node.node)) return false; continue; @@ -1626,10 +1626,10 @@ lex_expansion_token (cpp_reader *pfile, cpp_macro *macro) /* Is this a parameter? */ if (token->type == CPP_NAME - && (token->val.node->flags & NODE_MACRO_ARG) != 0) + && (token->val.node.node->flags & NODE_MACRO_ARG) != 0) { token->type = CPP_MACRO_ARG; - token->val.arg_no = token->val.node->value.arg_index; + token->val.macro_arg.arg_no = token->val.node.node->value.arg_index; } else if (CPP_WTRADITIONAL (pfile) && macro->paramc > 0 && (token->type == CPP_STRING || token->type == CPP_CHAR)) @@ -1771,7 +1771,7 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro) { macro->extra_tokens = 1; num_extra_tokens++; - token->val.arg_no = macro->count - 1; + token->val.token_no = macro->count - 1; } else { @@ -2007,7 +2007,7 @@ cpp_macro_definition (cpp_reader *pfile, const cpp_hashnode *node) cpp_token *token = ¯o->exp.tokens[i]; if (token->type == CPP_MACRO_ARG) - len += NODE_LEN (macro->params[token->val.arg_no - 1]); + len += NODE_LEN (macro->params[token->val.macro_arg.arg_no - 1]); else len += cpp_token_len (token); @@ -2079,9 +2079,9 @@ cpp_macro_definition (cpp_reader *pfile, const cpp_hashnode *node) if (token->type == CPP_MACRO_ARG) { memcpy (buffer, - NODE_NAME (macro->params[token->val.arg_no - 1]), - NODE_LEN (macro->params[token->val.arg_no - 1])); - buffer += NODE_LEN (macro->params[token->val.arg_no - 1]); + NODE_NAME (macro->params[token->val.macro_arg.arg_no - 1]), + NODE_LEN (macro->params[token->val.macro_arg.arg_no - 1])); + buffer += NODE_LEN (macro->params[token->val.macro_arg.arg_no - 1]); } else buffer = cpp_spell_token (pfile, token, buffer, false); diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 8b2fb21704f..383527990dd 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,9 @@ +2009-05-07 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> + + PR fortran/22423 + * io/transfer.c (read_block_direct): Avoid warning. + * runtime/string.c (compare0): Avoid warning. + 2009-04-30 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/39667 @@ -32,25 +38,25 @@ 2009-04-15 Danny Smith <dannysmith@clear.net.nz> - * io/write.c (itoa) : Rename back to gfc_itoa. - (write_i): Adjust call to write_decimal. - (write_integer): Use gfc_itoa. + * io/write.c (itoa) : Rename back to gfc_itoa. + (write_i): Adjust call to write_decimal. + (write_integer): Use gfc_itoa. 2009-04-10 Janne Blomqvist <jb@gcc.gnu.org> - * io/io.h (move_pos_offset): Remove prototype. - * io/transfer.c (formatted_transfer_scalar_read): Use sseek - instead of move_pos_offset. - * io/unix.c (move_pos_offset): Remove. + * io/io.h (move_pos_offset): Remove prototype. + * io/transfer.c (formatted_transfer_scalar_read): Use sseek + instead of move_pos_offset. + * io/unix.c (move_pos_offset): Remove. 2009-04-10 Janne Blomqvist <jb@gcc.gnu.org> PR libfortran/39665 libfortran/39702 libfortran/39709 * io/io.h (st_parameter_dt): Revert aligned attribute from u.p.value. - * io/list_read.c (read_complex): Read directly into user pointer. - (read_real): Likewise. - (list_formatted_read_scalar): Update read_complex and read_real calls. - (nml_read_obj): Read directly into user pointer. + * io/list_read.c (read_complex): Read directly into user pointer. + (read_real): Likewise. + (list_formatted_read_scalar): Update read_complex and read_real calls. + (nml_read_obj): Read directly into user pointer. 2009-04-09 Janne Blomqvist <jb@gcc.gnu.org> @@ -686,43 +692,43 @@ 2009-04-08 Janne Blomqvist <jb@gcc.gnu.org> - * io/open.c (already_open): Test for POSIX close return value. - * io/unit.c (close_unit_1): Likewise. - * io/unix.c (raw_close): Return 0 for success for preconnected units. + * io/open.c (already_open): Test for POSIX close return value. + * io/unit.c (close_unit_1): Likewise. + * io/unix.c (raw_close): Return 0 for success for preconnected units. 2009-04-08 Janne Blomqvist <jb@gcc.gnu.org> - * runtime/string.c (compare0): Use gfc_charlen_type. - * runtime/error.c (gfc_itoa): Move to io/write.c - (xtoa): Rename to gfc_xtoa. - * runtime/backtrace.c (show_backtrace): Call gfc_xtoa. - * intrinsics/cshift0.c (cshift0): Use index_type for shift arg. - * intrinsics/date_and_time.c (date_and_time): Use index_type. - (itime_i4): Likewise. - (itime_i8): Likewise. - (idate_i4): Likewise. - (idate_i8): Likewise. - (gmtime_i4): Likewise. - (gmtime_i8): Likewise. - (ltime_i4): Likewise. - (ltime_i8): Likewise. - * libgfortran.h (gfc_itoa): Remove prototype. - (xtoa): Rename prototype to gfc_xtoa. - * io/list_read.c (nml_read_obj): Use size_t for string length. - * io/transfer.c (read_block_direct): Change nbytes arg from - pointer to value. - (unformatted_read): Minor cleanup, call read_block_directly properly. - (skip_record): Use ssize_t. - (next_record_w_unf): Avoid stell() call by calling sseek with SEEK_CUR. - (iolength_transfer): Make sure to multiply before cast. - * io/intrinsics.c (fgetc): Remove unnecessary variable. - * io/format.c (format_hash): Use gfc_charlen_type. - * io/write.c (itoa): Move from runtime/error.c:gfc_itoa, rename, - make static. - (write_i): Call with pointer to itoa. - (write_z): Call with pointer to gfc_xtoa. - (write_integer): Pointer to itoa. - (nml_write_obj): Type cleanup, don't call strlen in loop. + * runtime/string.c (compare0): Use gfc_charlen_type. + * runtime/error.c (gfc_itoa): Move to io/write.c + (xtoa): Rename to gfc_xtoa. + * runtime/backtrace.c (show_backtrace): Call gfc_xtoa. + * intrinsics/cshift0.c (cshift0): Use index_type for shift arg. + * intrinsics/date_and_time.c (date_and_time): Use index_type. + (itime_i4): Likewise. + (itime_i8): Likewise. + (idate_i4): Likewise. + (idate_i8): Likewise. + (gmtime_i4): Likewise. + (gmtime_i8): Likewise. + (ltime_i4): Likewise. + (ltime_i8): Likewise. + * libgfortran.h (gfc_itoa): Remove prototype. + (xtoa): Rename prototype to gfc_xtoa. + * io/list_read.c (nml_read_obj): Use size_t for string length. + * io/transfer.c (read_block_direct): Change nbytes arg from + pointer to value. + (unformatted_read): Minor cleanup, call read_block_directly properly. + (skip_record): Use ssize_t. + (next_record_w_unf): Avoid stell() call by calling sseek with SEEK_CUR. + (iolength_transfer): Make sure to multiply before cast. + * io/intrinsics.c (fgetc): Remove unnecessary variable. + * io/format.c (format_hash): Use gfc_charlen_type. + * io/write.c (itoa): Move from runtime/error.c:gfc_itoa, rename, + make static. + (write_i): Call with pointer to itoa. + (write_z): Call with pointer to gfc_xtoa. + (write_integer): Pointer to itoa. + (nml_write_obj): Type cleanup, don't call strlen in loop. 2009-04-06 H.J. Lu <hongjiu.lu@intel.com> diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index 27ae8994918..ea1ef7a44bf 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -465,7 +465,7 @@ read_block_direct (st_parameter_dt *dtp, void *buf, size_t nbytes) /* Check whether we exceed the total record length. */ if (dtp->u.p.current_unit->flags.has_recl - && (nbytes > dtp->u.p.current_unit->bytes_left)) + && ((gfc_offset) nbytes > dtp->u.p.current_unit->bytes_left)) { to_read_record = dtp->u.p.current_unit->bytes_left; short_record = 1; diff --git a/libgfortran/runtime/string.c b/libgfortran/runtime/string.c index 5a81bd6d950..a102c3bd49a 100644 --- a/libgfortran/runtime/string.c +++ b/libgfortran/runtime/string.c @@ -36,7 +36,10 @@ compare0 (const char *s1, gfc_charlen_type s1_len, const char *s2) /* Strip trailing blanks from the Fortran string. */ len = fstrlen (s1, s1_len); - if (len != strlen(s2)) return 0; /* don't match */ + + if ((size_t) len != strlen(s2)) + return 0; /* don't match */ + return strncasecmp (s1, s2, len) == 0; } diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index dd6ae6e93ba..45e0f2b6b39 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,21 @@ 2009-05-07 Paolo Carlini <paolo.carlini@oracle.com> + * include/ext/throw_allocator.h: Remove redundante include. + +2009-05-07 Paolo Carlini <paolo.carlini@oracle.com> + + * include/ext/throw_allocator.h (throw_allocator_base): Avoid + out of line member functions definitions. + (throw_allocator_base::_S_g, _S_map, _S_throw_prob, _S_label): + Remove, use static locals instead. + (throw_allocator_base::do_check_allocated, print_to_string): Declare. + * src/throw_allocator.cc: New. + * src/Makefile.am: Add. + * config/abi/pre/gnu.ver: Add exports. + * src/Makefile.in: Regenerate. + +2009-05-07 Paolo Carlini <paolo.carlini@oracle.com> + * configure.ac: Bump libtool_VERSION to 6:12:0. * configure: Regenerate. diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver index 240e7bcf09b..f40fd97ef38 100644 --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -964,6 +964,10 @@ GLIBCXX_3.4.12 { _ZSt27__set_once_functor_lock_ptrPSt11unique_lockISt5mutexE; _ZSt16__get_once_mutexv; + # throw_allocator + _ZN9__gnu_cxx20throw_allocator_base18do_check_allocated*; + _ZN9__gnu_cxx20throw_allocator_base15print_to_string*; + } GLIBCXX_3.4.11; # Symbols in the support library (libsupc++) have their own tag. diff --git a/libstdc++-v3/include/ext/throw_allocator.h b/libstdc++-v3/include/ext/throw_allocator.h index 13030546943..21e235c1200 100644 --- a/libstdc++-v3/include/ext/throw_allocator.h +++ b/libstdc++-v3/include/ext/throw_allocator.h @@ -47,7 +47,6 @@ #include <cmath> #include <ctime> #include <map> -#include <set> #include <string> #include <ostream> #include <stdexcept> @@ -64,13 +63,24 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) std::tr1::mt19937 _M_generator; public: - twister_rand_gen(unsigned int s = static_cast<unsigned int>(std::time(0))); - + twister_rand_gen(unsigned int seed = + static_cast<unsigned int>(std::time(0))) + : _M_generator(seed) { } + void - init(unsigned int); - + init(unsigned int seed) + { _M_generator.seed(seed); } + double - get_prob(); + get_prob() + { + const double min = _M_generator.min(); + const double res = static_cast<const double>(_M_generator() - min); + const double range = static_cast<const double>(_M_generator.max() - min); + const double ret = res / range; + _GLIBCXX_DEBUG_ASSERT(ret >= 0 && ret <= 1); + return ret; + } }; /** @@ -96,30 +106,40 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) { public: void - init(unsigned long seed); + init(unsigned long seed) + { rand_gen().init(seed); } static void - set_throw_prob(double throw_prob); + set_throw_prob(double t_p) + { throw_prob() = t_p; } static double - get_throw_prob(); + get_throw_prob() + { return throw_prob(); } static void - set_label(size_t l); + set_label(size_t l) + { label() = l; } + + static size_t + get_label() + { return label(); } static bool - empty(); + empty() + { return map().empty(); } struct group_throw_prob_adjustor { - group_throw_prob_adjustor(size_t size) : _M_throw_prob_orig(_S_throw_prob) + group_throw_prob_adjustor(size_t size) + : _M_throw_prob_orig(get_throw_prob()) { - _S_throw_prob = - 1 - std::pow(double(1 - _S_throw_prob), double(0.5 / (size + 1))); + set_throw_prob(1 - std::pow(double(1 - get_throw_prob()), + double(0.5 / (size + 1)))); } ~group_throw_prob_adjustor() - { _S_throw_prob = _M_throw_prob_orig; } + { set_throw_prob(_M_throw_prob_orig); } private: const double _M_throw_prob_orig; @@ -127,11 +147,12 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) struct zero_throw_prob_adjustor { - zero_throw_prob_adjustor() : _M_throw_prob_orig(_S_throw_prob) - { _S_throw_prob = 0; } + zero_throw_prob_adjustor() + : _M_throw_prob_orig(get_throw_prob()) + { set_throw_prob(0); } ~zero_throw_prob_adjustor() - { _S_throw_prob = _M_throw_prob_orig; } + { set_throw_prob(_M_throw_prob_orig); } private: const double _M_throw_prob_orig; @@ -139,22 +160,43 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) protected: static void - insert(void*, size_t); + insert(void* p, size_t size) + { + const_iterator found_it = map().find(p); + if (found_it != map().end()) + { + std::string error("throw_allocator_base::insert double insert!\n"); + print_to_string(error, make_entry(p, size)); + print_to_string(error, *found_it); + std::__throw_logic_error(error.c_str()); + } + map().insert(make_entry(p, size)); + } static void - erase(void*, size_t); + erase(void* p, size_t size) + { + check_allocated(p, size); + map().erase(p); + } static void - throw_conditionally(); + throw_conditionally() + { + if (rand_gen().get_prob() < get_throw_prob()) + __throw_forced_exception_error(); + } // See if a particular address and size has been allocated by this // allocator. static void - check_allocated(void*, size_t); + check_allocated(void* p, size_t size) + { do_check_allocated(map().find(p), map().end(), p, size); } // See if a given label has been allocated by this allocator. static void - check_allocated(size_t); + check_allocated(size_t label) + { do_check_allocated(map().begin(), map().end(), label); } private: typedef std::pair<size_t, size_t> alloc_data_type; @@ -167,20 +209,59 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) operator<<(std::ostream&, const throw_allocator_base&); static entry_type - make_entry(void*, size_t); + make_entry(void* p, size_t size) + { return std::make_pair(p, alloc_data_type(get_label(), size)); } + + static void + do_check_allocated(const_iterator, const_iterator, void*, size_t); static void - print_to_string(std::string&); + do_check_allocated(const_iterator, const_iterator, size_t); static void print_to_string(std::string&, const_reference); - static twister_rand_gen _S_g; - static map_type _S_map; - static double _S_throw_prob; - static size_t _S_label; + static map_type& + map() + { + static map_type mp; + return mp; + } + + static twister_rand_gen& + rand_gen() + { + static twister_rand_gen rg; + return rg; + } + + static double& + throw_prob() + { + static double tp; + return tp; + } + + static size_t& + label() + { + static size_t ll; + return ll; + } }; + inline std::ostream& + operator<<(std::ostream& os, const throw_allocator_base&) + { + std::string error; + typedef throw_allocator_base alloc_type; + alloc_type::const_iterator beg = alloc_type::map().begin(); + alloc_type::const_iterator end = alloc_type::map().end(); + for (; beg != end; ++beg) + alloc_type::print_to_string(error, *beg); + return os << error; + } + /** * @brief Allocator class with logging and exception control. * @ingroup allocators @@ -273,176 +354,6 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) operator!=(const throw_allocator<T>&, const throw_allocator<T>&) { return false; } - std::ostream& - operator<<(std::ostream& os, const throw_allocator_base& alloc) - { - std::string error; - throw_allocator_base::print_to_string(error); - os << error; - return os; - } - - // XXX Should be in .cc. - twister_rand_gen:: - twister_rand_gen(unsigned int seed) : _M_generator(seed) { } - - void - twister_rand_gen:: - init(unsigned int seed) - { _M_generator.seed(seed); } - - double - twister_rand_gen:: - get_prob() - { - const double min = _M_generator.min(); - const double res = static_cast<const double>(_M_generator() - min); - const double range = static_cast<const double>(_M_generator.max() - min); - const double ret = res / range; - _GLIBCXX_DEBUG_ASSERT(ret >= 0 && ret <= 1); - return ret; - } - - twister_rand_gen throw_allocator_base::_S_g; - - throw_allocator_base::map_type - throw_allocator_base::_S_map; - - double throw_allocator_base::_S_throw_prob; - - size_t throw_allocator_base::_S_label = 0; - - throw_allocator_base::entry_type - throw_allocator_base::make_entry(void* p, size_t size) - { return std::make_pair(p, alloc_data_type(_S_label, size)); } - - void - throw_allocator_base::init(unsigned long seed) - { _S_g.init(seed); } - - void - throw_allocator_base::set_throw_prob(double throw_prob) - { _S_throw_prob = throw_prob; } - - double - throw_allocator_base::get_throw_prob() - { return _S_throw_prob; } - - void - throw_allocator_base::set_label(size_t l) - { _S_label = l; } - - void - throw_allocator_base::insert(void* p, size_t size) - { - const_iterator found_it = _S_map.find(p); - if (found_it != _S_map.end()) - { - std::string error("throw_allocator_base::insert"); - error += "double insert!"; - error += '\n'; - print_to_string(error, make_entry(p, size)); - print_to_string(error, *found_it); - std::__throw_logic_error(error.c_str()); - } - _S_map.insert(make_entry(p, size)); - } - - bool - throw_allocator_base::empty() - { return _S_map.empty(); } - - void - throw_allocator_base::erase(void* p, size_t size) - { - check_allocated(p, size); - _S_map.erase(p); - } - - void - throw_allocator_base::check_allocated(void* p, size_t size) - { - const_iterator found_it = _S_map.find(p); - if (found_it == _S_map.end()) - { - std::string error("throw_allocator_base::check_allocated by value "); - error += "null erase!"; - error += '\n'; - print_to_string(error, make_entry(p, size)); - std::__throw_logic_error(error.c_str()); - } - - if (found_it->second.second != size) - { - std::string error("throw_allocator_base::check_allocated by value "); - error += "wrong-size erase!"; - error += '\n'; - print_to_string(error, make_entry(p, size)); - print_to_string(error, *found_it); - std::__throw_logic_error(error.c_str()); - } - } - - void - throw_allocator_base::check_allocated(size_t label) - { - std::string found; - const_iterator it = _S_map.begin(); - while (it != _S_map.end()) - { - if (it->second.first == label) - { - print_to_string(found, *it); - } - ++it; - } - - if (!found.empty()) - { - std::string error("throw_allocator_base::check_allocated by label "); - error += '\n'; - error += found; - std::__throw_logic_error(error.c_str()); - } - } - - void - throw_allocator_base::throw_conditionally() - { - if (_S_g.get_prob() < _S_throw_prob) - __throw_forced_exception_error(); - } - - void - throw_allocator_base::print_to_string(std::string& s) - { - const_iterator begin = throw_allocator_base::_S_map.begin(); - const_iterator end = throw_allocator_base::_S_map.end(); - for (; begin != end; ++begin) - print_to_string(s, *begin); - } - - void - throw_allocator_base::print_to_string(std::string& s, const_reference ref) - { - char buf[40]; - const char tab('\t'); - s += "address: "; - __builtin_sprintf(buf, "%p", ref.first); - s += buf; - s += tab; - s += "label: "; - unsigned long l = static_cast<unsigned long>(ref.second.first); - __builtin_sprintf(buf, "%lu", l); - s += buf; - s += tab; - s += "size: "; - l = static_cast<unsigned long>(ref.second.second); - __builtin_sprintf(buf, "%lu", l); - s += buf; - s += '\n'; - } - _GLIBCXX_END_NAMESPACE #endif diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index d218ceaa9ca..288243aab26 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -182,6 +182,7 @@ sources = \ streambuf-inst.cc \ streambuf.cc \ string-inst.cc \ + throw_allocator.cc \ valarray-inst.cc \ wlocale-inst.cc \ wstring-inst.cc \ diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index 9ee5275198b..24187af1dae 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -85,12 +85,13 @@ am__libstdc___la_SOURCES_DIST = atomic.cc bitmap_allocator.cc \ fstream-inst.cc ext-inst.cc ios-inst.cc iostream-inst.cc \ istream-inst.cc istream.cc locale-inst.cc misc-inst.cc \ ostream-inst.cc sstream-inst.cc streambuf-inst.cc streambuf.cc \ - string-inst.cc valarray-inst.cc wlocale-inst.cc \ - wstring-inst.cc mutex.cc condition_variable.cc chrono.cc \ - thread.cc atomicity.cc codecvt_members.cc collate_members.cc \ - ctype_members.cc messages_members.cc monetary_members.cc \ - numeric_members.cc time_members.cc basic_file.cc c++locale.cc \ - compatibility-ldbl.cc parallel_list.cc parallel_settings.cc + string-inst.cc throw_allocator.cc valarray-inst.cc \ + wlocale-inst.cc wstring-inst.cc mutex.cc condition_variable.cc \ + chrono.cc thread.cc atomicity.cc codecvt_members.cc \ + collate_members.cc ctype_members.cc messages_members.cc \ + monetary_members.cc numeric_members.cc time_members.cc \ + basic_file.cc c++locale.cc compatibility-ldbl.cc \ + parallel_list.cc parallel_settings.cc am__objects_1 = atomicity.lo codecvt_members.lo collate_members.lo \ ctype_members.lo messages_members.lo monetary_members.lo \ numeric_members.lo time_members.lo @@ -111,9 +112,9 @@ am__objects_5 = atomic.lo bitmap_allocator.lo pool_allocator.lo \ fstream-inst.lo ext-inst.lo ios-inst.lo iostream-inst.lo \ istream-inst.lo istream.lo locale-inst.lo misc-inst.lo \ ostream-inst.lo sstream-inst.lo streambuf-inst.lo streambuf.lo \ - string-inst.lo valarray-inst.lo wlocale-inst.lo \ - wstring-inst.lo mutex.lo condition_variable.lo chrono.lo \ - thread.lo $(am__objects_1) $(am__objects_4) + string-inst.lo throw_allocator.lo valarray-inst.lo \ + wlocale-inst.lo wstring-inst.lo mutex.lo condition_variable.lo \ + chrono.lo thread.lo $(am__objects_1) $(am__objects_4) am_libstdc___la_OBJECTS = $(am__objects_5) libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS) DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) @@ -434,6 +435,7 @@ sources = \ streambuf-inst.cc \ streambuf.cc \ string-inst.cc \ + throw_allocator.cc \ valarray-inst.cc \ wlocale-inst.cc \ wstring-inst.cc \ diff --git a/libstdc++-v3/src/throw_allocator.cc b/libstdc++-v3/src/throw_allocator.cc new file mode 100644 index 00000000000..a8247ad9782 --- /dev/null +++ b/libstdc++-v3/src/throw_allocator.cc @@ -0,0 +1,95 @@ +// Throw Allocator. Out of line function definitions. -*- C++ -*- + +// Copyright (C) 2009 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. + +// Under Section 7 of GPL version 3, you are granted additional +// permissions described in the GCC Runtime Library Exception, version +// 3.1, as published by the Free Software Foundation. + +// You should have received a copy of the GNU General Public License and +// a copy of the GCC Runtime Library Exception along with this program; +// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +// <http://www.gnu.org/licenses/>. + +#include <ext/throw_allocator.h> + +_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) + + void + throw_allocator_base::do_check_allocated(const_iterator found, + const_iterator end, + void* p, size_t size) + { + if (found == end) + { + std::string error("throw_allocator_base::check_allocated by value " + "null erase!\n"); + print_to_string(error, make_entry(p, size)); + std::__throw_logic_error(error.c_str()); + } + + if (found->second.second != size) + { + std::string error("throw_allocator_base::check_allocated by value " + "wrong-size erase!\n"); + print_to_string(error, make_entry(p, size)); + print_to_string(error, *found); + std::__throw_logic_error(error.c_str()); + } + } + + void + throw_allocator_base::do_check_allocated(const_iterator beg, + const_iterator end, + size_t label) + { + std::string found; + while (beg != end) + { + if (beg->second.first == label) + print_to_string(found, *beg); + ++beg; + } + + if (!found.empty()) + { + std::string error("throw_allocator_base::check_allocated by label \n"); + error += found; + std::__throw_logic_error(error.c_str()); + } + } + + void + throw_allocator_base::print_to_string(std::string& s, + const_reference ref) + { + char buf[40]; + const char tab('\t'); + s += "address: "; + __builtin_sprintf(buf, "%p", ref.first); + s += buf; + s += tab; + s += "label: "; + unsigned long l = static_cast<unsigned long>(ref.second.first); + __builtin_sprintf(buf, "%lu", l); + s += buf; + s += tab; + s += "size: "; + l = static_cast<unsigned long>(ref.second.second); + __builtin_sprintf(buf, "%lu", l); + s += buf; + s += '\n'; + } + +_GLIBCXX_END_NAMESPACE |