summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2010-01-21 07:20:48 +0000
committerbstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4>2010-01-21 07:20:48 +0000
commit1869ca576befbe5457337f88ec2e183aa66eb96f (patch)
tree5a7be8ba6dc1abd3f95a537fbc5e0ad6a7afb4ef /gcc
parent63b82f0a74f7ec778b00401a1a273c9df747b758 (diff)
downloadgcc-1869ca576befbe5457337f88ec2e183aa66eb96f.tar.gz
2010-01-21 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 156107 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@156108 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog374
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/Makefile.in9
-rw-r--r--gcc/ada/ChangeLog14
-rw-r--r--gcc/ada/gcc-interface/Makefile.in2
-rw-r--r--gcc/ada/gcc-interface/utils.c20
-rw-r--r--gcc/c-common.c2
-rw-r--r--gcc/c-decl.c4
-rw-r--r--gcc/c-typeck.c9
-rw-r--r--gcc/calls.c11
-rw-r--r--gcc/cfgexpand.c18
-rw-r--r--gcc/cgraphunit.c3
-rw-r--r--gcc/collect2.c7
-rw-r--r--gcc/config.gcc24
-rw-r--r--gcc/config.in6
-rw-r--r--gcc/config/alpha/predicates.md46
-rw-r--r--gcc/config/arm/neon-testgen.ml22
-rw-r--r--gcc/config/arm/neon.ml11
-rw-r--r--gcc/config/h8300/h8300.c27
-rw-r--r--gcc/config/i386/cygwin.h4
-rw-r--r--gcc/config/i386/i386.c10
-rw-r--r--gcc/config/rs6000/aix.h2
-rwxr-xr-xgcc/configure44
-rw-r--r--gcc/configure.ac15
-rw-r--r--gcc/cp/ChangeLog75
-rw-r--r--gcc/cp/class.c5
-rw-r--r--gcc/cp/cvt.c1
-rw-r--r--gcc/cp/decl.c11
-rw-r--r--gcc/cp/except.c13
-rw-r--r--gcc/cp/mangle.c30
-rw-r--r--gcc/cp/semantics.c21
-rw-r--r--gcc/doc/tm.texi203
-rw-r--r--gcc/dwarf2out.c57
-rw-r--r--gcc/fortran/ChangeLog49
-rw-r--r--gcc/fortran/gfortran.h8
-rw-r--r--gcc/fortran/interface.c20
-rw-r--r--gcc/fortran/module.c4
-rw-r--r--gcc/fortran/resolve.c14
-rw-r--r--gcc/fortran/symbol.c16
-rw-r--r--gcc/fortran/trans-decl.c39
-rw-r--r--gcc/function.c122
-rw-r--r--gcc/fwprop.c6
-rw-r--r--gcc/graphite-clast-to-gimple.c9
-rw-r--r--gcc/haifa-sched.c9
-rw-r--r--gcc/java/ChangeLog10
-rw-r--r--gcc/java/jcf-parse.c13
-rw-r--r--gcc/java/jvspec.c4
-rw-r--r--gcc/java/lang.c2
-rw-r--r--gcc/lto-streamer-in.c4
-rw-r--r--gcc/lto-streamer-out.c4
-rw-r--r--gcc/po/ChangeLog12
-rw-r--r--gcc/po/sv.po480
-rw-r--r--gcc/po/zh_CN.po1342
-rw-r--r--gcc/print-tree.c5
-rw-r--r--gcc/sel-sched.c24
-rw-r--r--gcc/target.h2
-rw-r--r--gcc/testsuite/ChangeLog208
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle39.C28
-rw-r--r--gcc/testsuite/g++.dg/abi/packed1.C24
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/compat-common.h55
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/decimal-dummy.h67
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-1_x.C30
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-1_y.C5
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-2_x.C32
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-2_y.C7
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-3_x.C30
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-3_y.C7
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-4_x.C32
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-4_y.C5
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-5_x.C30
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-5_y.C7
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-6_x.C32
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass-6_y.C5
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass_x.h151
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/pass_y.h89
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-1_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-1_x.C24
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-1_y.C5
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-2_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-2_x.C26
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-2_y.C7
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-3_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-3_x.C24
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-3_y.C7
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-4_main.C13
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-4_x.C26
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-4_y.C5
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-5_main.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-5_x.C24
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-5_y.C7
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-6_main.C14
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-6_x.C26
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return-6_y.C5
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return_x.h90
-rw-r--r--gcc/testsuite/g++.dg/compat/decimal/return_y.h67
-rw-r--r--gcc/testsuite/g++.dg/conversion/op6.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype22.C13
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-warn1.C8
-rw-r--r--gcc/testsuite/g++.dg/other/cv_func.C3
-rw-r--r--gcc/testsuite/g++.dg/parse/crash55.C8
-rw-r--r--gcc/testsuite/g++.dg/parse/fn-typedef1.C19
-rw-r--r--gcc/testsuite/g++.dg/parse/limits-initializer1.C37
-rw-r--r--gcc/testsuite/g++.dg/torture/pr42773.C54
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr42717.c30
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr42248.c27
-rw-r--r--gcc/testsuite/gcc.dg/20020312-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/cleanup-13.c15
-rw-r--r--gcc/testsuite/gcc.dg/cpp/_Pragma6.c2
-rw-r--r--gcc/testsuite/gcc.dg/debug/pr42767.c18
-rw-r--r--gcc/testsuite/gcc.dg/guality/pr42782.c24
-rw-r--r--gcc/testsuite/gcc.dg/pr19340.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr42715.c59
-rw-r--r--gcc/testsuite/gcc.dg/pr42719.c14
-rw-r--r--gcc/testsuite/gcc.dg/pr42728.c11
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c2
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/asm-3.c4
-rw-r--r--gcc/testsuite/gcc.dg/weak/typeof-2.c2
-rw-r--r--gcc/testsuite/gcc.target/alpha/pr42774.c10
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vget_lows16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vget_lows32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vget_lows64.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vget_lows8.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c2
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c1
-rw-r--r--gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c2
-rw-r--r--gcc/testsuite/gfortran.dg/bounds_check_15.f9033
-rw-r--r--gcc/testsuite/gfortran.dg/extends_10.f0334
-rw-r--r--gcc/testsuite/gfortran.dg/extends_6.f032
-rw-r--r--gcc/testsuite/gfortran.dg/interface_assignment_5.f9049
-rw-r--r--gcc/testsuite/gfortran.dg/private_type_6.f902
-rw-r--r--gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_6.f9035
-rw-r--r--gcc/testsuite/gfortran.dg/structure_constructor_8.f032
-rw-r--r--gcc/testsuite/gfortran.dg/typebound_call_12.f0336
-rw-r--r--gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f44
-rw-r--r--gcc/testsuite/gfortran.fortran-torture/compile/pr42781.f9059
-rw-r--r--gcc/toplev.c10
-rw-r--r--gcc/tree-cfg.c4
-rw-r--r--gcc/tree-cfgcleanup.c2
-rw-r--r--gcc/tree-data-ref.c32
-rw-r--r--gcc/tree-inline.c6
-rw-r--r--gcc/tree-outof-ssa.c2
-rw-r--r--gcc/tree-predcom.c30
-rw-r--r--gcc/tree-ssa-dce.c67
-rw-r--r--gcc/tree-ssa-pre.c8
-rw-r--r--gcc/tree-ssa-structalias.c7
-rw-r--r--gcc/tree-ssa-uncprop.c2
-rw-r--r--gcc/tree-vect-data-refs.c19
-rw-r--r--gcc/tree-vect-loop-manip.c22
-rw-r--r--gcc/tree-vect-loop.c2
-rw-r--r--gcc/tree.c12
-rw-r--r--gcc/tree.def10
-rw-r--r--gcc/tree.h18
-rw-r--r--gcc/unwind-dw2.c4
-rw-r--r--gcc/var-tracking.c125
-rw-r--r--gcc/varasm.c169
165 files changed, 4375 insertions, 1519 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 85e0daeacb9..90061ec7f5a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,377 @@
+2010-01-20 Janis Johnson <janis187@us.ibm.com>
+ Jason Merrill <jason@redhat.com>
+
+ * tree.h (TYPE_TRANSPARENT_UNION): Replace with ...
+ (TYPE_TRANSPARENT_AGGR): this, for union and record.
+ * calls.c (initialize argument_information): Handle it.
+ * c-common.c (handle_transparent_union_attribute): Use new name.
+ * c-decl.c (finish_struct): Ditto.
+ * c-typeck.c (type_lists_compatible_p): Ditto.
+ (convert_for_assignment): Use new name and also handle record.
+ * function.c (aggregate_value_p): Handle it.
+ (pass_by_reference): Ditto.
+ (assign_parm_data_types): Ditto.
+ * print-tree.c (print_node): Ditto.
+ * lto-streamer-in.c (unpack_ts_type_value_fields): Ditto.
+ * lto-streamer-out.c (pack_ts_type_value_fields): Ditto.
+ * tree.c (first_field): New fn.
+
+2010-01-21 Dave Korn <dave.korn.cygwin@gmail.com>
+
+ PR target/42818
+ * config/i386/cygwin.h (CXX_WRAP_SPEC_LIST): Always apply wrappers,
+ even when linking statically, for now.
+
+2010-01-20 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/42715
+ * var-tracking.c (use_type): Choose MO_VAL_SET for REGs set
+ without a cselib val.
+ (count_uses): Accept MO_VAL_SET with no val on stores.
+ (add_stores): Likewise.
+
+2010-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ * var-tracking.c (check_value_val): Add a compile time assertion.
+ (dv_is_decl_p): Simplify.
+ (dv_as_decl, dv_as_value, dv_from_decl, dv_from_value): Only use
+ gcc_assert if ENABLE_CHECKING.
+
+2010-01-20 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/42782
+ * var-tracking.c: Include tree-flow.h.
+ (mem_dies_at_call): New.
+ (dataflow_set_preserve_mem_locs): Use it.
+ (dataflow_set_remove_mem_locs): Likewise.
+ (dump_var): Renamed from dump_variable. Adjust all callers.
+ (dump_var_slot): Renamed from dump_variable_slot. Likewise.
+ * Makefile.in (var-tracking.o): Adjust deps.
+
+2010-01-20 Joern Rennecke <amylaar@spamcop.net>
+
+ * doc/tm.texi (TARGET_SCHED_SET_SCHED_FLAGS): Fix argument list.
+
+2010-01-20 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/42717
+ * tree-ssa-dce.c (get_live_post_dom): Remove.
+ (forward_edge_to_pdom): Take an arbitrary edge to copy
+ degenerate PHI args from.
+ (remove_dead_stmt): Use the first post-dominator even if it
+ does not contain live statements as redirection destination.
+
+2010-01-20 Richard Guenther <rguenther@suse.de>
+
+ * tree-inline.c (estimate_num_insns): Handle EH builtins.
+
+2010-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ * sel-sched.c (create_speculation_check): Remove set but not used
+ variable twin.
+ (try_transformation_cache): Remove set but not used variable ds.
+ (calculate_privileged_insns): Remove set but not used variables
+ cur_insn and min_spec_insn.
+ (find_best_expr): Remove set but not used variable avail_n.
+ * tree-predcom.c (base_names_in_chain_on): Remove set but not used
+ variable e.
+ * cgraphunit.c (assemble_thunk): Remove set but not used variable
+ false_label.
+ * haifa-sched.c (remove_notes): Remove set but not used variable prev.
+ * graphite-clast-to-gimple.c (gloog): Remove set but not used variable
+ new_scop_exit_edge.
+
+2010-01-20 Felyza Wishbringer <fwishbringer@gmail.com>
+
+ PR bootstrap/42786
+ * config.gcc (i[34567]86-*-*): Fix handling of athlon64 and athlon-fx
+ cpu types. Add support for *-sse3 cpu types.
+ (x86_64-*-*): Ditto.
+
+2010-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/42803
+ * varasm.c (narrowing_initializer_constant_valid_p): Add CACHE
+ argument, call initializer_constant_valid_p_1 instead of
+ initializer_constant_valid_p, pass CACHE to it, return NULL
+ immediately if first call returns NULL.
+ (initializer_constant_valid_p_1): New function.
+ (initializer_constant_valid_p): Use it.
+
+2010-01-20 Thomas Quinot <quinot@adacore.com>
+
+ * tree.def (PLACEHOLDER_EXPR): Fix comment.
+
+2010-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf2out.c (mem_loc_descriptor): Use DW_OP_mod for UMOD instead
+ of MOD, handle MOD using DW_OP_{over,over,div,mul,minus}.
+ (loc_list_from_tree): Don't handle unsigned division. Handle
+ signed modulo using DW_OP_{over,over,div,mul,minus}.
+ * unwind-dw2.c (execute_stack_op): Handle DW_OP_mod using unsigned
+ modulo instead of signed.
+
+2010-01-20 DJ Delorie <dj@redhat.com>
+
+ * config/h8300/h8300.c (F): Add "in_epilogue" flag.
+ (Fpa): Pass it
+ (h8300_emit_stack_adjustment): Propogate it.
+ (push): Pass it.
+ (h8300_expand_prologue): Likewise.
+ (h8300_expand_epilogue): Likewise.
+
+2010-01-19 Michael Matz <matz@suse.de>
+
+ PR tree-optimization/41783
+ * tree-data-ref.c (toplevel): Include flags.h.
+ (dump_data_dependence_relation): Also dump the inputs if the
+ result will be unknown.
+ (split_constant_offset_1): Look through some conversions.
+ * tree-predcom.c (determine_roots_comp): Restart a new chain if
+ the offset from last element is too large.
+ (ref_at_iteration): Deal also with MISALIGNED_INDIRECT_REF.
+ (reassociate_to_the_same_stmt): Handle vector registers.
+ * tree-vect-data-refs.c (vect_equal_offsets): Handle unary operations
+ (e.g. conversions).
+ * tree-vect-loop-manip.c (vect_gen_niters_for_prolog_loop): Add
+ wide_prolog_niters argument, emit widening instructions.
+ (vect_do_peeling_for_alignment): Adjust caller, use widened
+ variant of the iteration cound.
+ * Makefile.in (tree-data-ref.o): Add $(FLAGS_H).
+
+2010-01-19 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+
+ PR target/38697
+ * config/arm/neon-testgen.m (emit_automatics): New parameter
+ features. Adjust for Fixed_return_reg feature.
+ (test_intrinsic): Call emit_automatics with new feature.
+ * config/arm/neon.ml: Update copyright years.
+ (features): New Fixed_return_reg feature.
+ (ops): Update feature for Vget_low.
+
+2010-01-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/42719
+ * tree-outof-ssa.c (trivially_conflicts_p): Don't consider debug
+ stmt uses.
+
+ PR debug/42728
+ * fwprop.c (all_uses_available_at): Return false if def_set dest
+ is a REG that is used in def_insn.
+
+2010-01-19 Joern Rennecke <amylaar@spamcop.net>
+
+ * doc/tm.texi (TARGET_FIXED_CONDITION_CODE_REGS): Add argument names.
+
+ (TARGET_CC_MODES_COMPATIBLE): Put return value in braces.
+ Add argument names.
+
+ (TARGET_SCHED_INIT_SCHED_CONTEXT): Clarify language.
+
+ * target.h (struct gcc_target) <secondary_reload>: Change type
+ of last argument to secondary_reload_info *.
+
+2010-01-18 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/42774
+ * config/alpha/predicates.md (aligned_memory_operand): Return 0 for
+ memory references with unaligned offsets. Remove CQImode handling.
+ (unaligned_memory_operand): Return 1 for memory references with
+ unaligned offsets. Remove CQImode handling.
+
+2010-01-18 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/39954
+ * cfgexpand.c (expand_call_stmt): TER pointer arguments in
+ builtin calls.
+
+2010-01-18 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/42781
+ * tree-ssa-structalias.c (find_what_var_points_to): Skip
+ restrict processing only if the original variable was
+ artificial.
+
+2010-01-18 Joern Rennecke <amylaar@spamcop.net>
+
+ * doc/tm.texi (TARGET_ASM_FUNCTION_EPILOGUE): Update text on where to
+ find number of popped argument bytes.
+
+ (TARGET_INVALID_WITHIN_DOLOOP): Put return value in braces.
+ Fix the text that describes the return value for invalid insns.
+
+ (TARGET_SCHED_NEEDS_BLOCK_P): Fix return type. Fix argument list.
+
+ (TARGET_SCHED_IS_COSTLY_DEPENDENCE): Fix argument types.
+ Clarify what 'cost of the -dependence' is. Fix quoting.
+
+ * toplev.c (default_get_pch_validity): Rename argument to "sz".
+ * doc/tm.texi (TARGET_GET_PCH_VALIDITY): Likewise.
+
+2010-01-17 Jakub Jelinek <jakub@redhat.com>
+
+ * dwarf2out.c (mem_loc_descriptor): Don't ICE on
+ {S,U}S_{PLUS,MINUS,NEG,ABS,ASHIFT}.
+
+2010-01-17 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/42248
+ * function.c (split_complex_args): Take a VEC to modify.
+ (assign_parms_augmented_arg_list): Build a VEC instead of
+ a chain of PARM_DECLs.
+ (assign_parms_unsplit_complex): Take a VEC of arguments.
+ Do not fixup unmodified parms.
+ (assign_parms): Deal with the VEC.
+ (gimplify_parameters): Likewise.
+
+2010-01-17 Richard Guenther <rguenther@suse.de>
+
+ * tree-ssa-uncprop.c (uncprop_into_successor_phis): Fix PHI
+ node existence check.
+ * tree-vect-loop.c (vect_analyze_loop_form): Likewise.
+ * tree-cfgcleanup.c (merge_phi_nodes): Likewise.
+ * tree-ssa-dce.c (forward_edge_to_pdom): Likewise.
+ * tree-cfg.c (gimple_execute_on_growing_pred): Likewise.
+ (gimple_execute_on_growing_pred): Likewise.
+
+2010-01-17 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/42773
+ * tree-ssa-pre.c (phi_translate_set): Fix check for PHI node existence.
+ (compute_antic_aux): Likewise.
+ (compute_partial_antic_aux): Likewise.
+
+2010-01-17 Jie Zhang <jie.zhang@analog.com>
+
+ PR debug/42767
+ * dwarf2out.c (mem_loc_descriptor): Handle SS_TRUNCATE
+ and US_TRUNCATE.
+
+2010-01-17 Joern Rennecke <amylaar@spamcop.net>
+
+ * doc/tm.texi (TARGET_INIT_LIBFUNCS): Put @findex entries in order of
+ appearance.
+
+ (TARGET_LEGITIMATE_ADDRESS_P): Add return type.
+ Fix markup for strict argument.
+
+ (TARGET_SCHED_REORDER2): Fix argument types.
+
+ (TARGET_SCHED_DFA_PRE_CYCLE_INSN): Fix return type.
+ (TARGET_SCHED_DFA_POST_CYCLE_INSN): Likewise.
+
+ (TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE): Fix name.
+ (TARGET_SCHED_DFA_POST_ADVANCE_CYCLE): Likewise.
+
+ (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD):
+ Add argument name.
+
+ (TARGET_SCHED_ALLOC_SCHED_CONTEXT): Remove duplicate documentation.
+ (TARGET_SCHED_INIT_SCHED_CONTEXT): Likewise.
+ (TARGET_SCHED_SET_SCHED_CONTEXT): Likewise.
+ (TARGET_SCHED_CLEAR_SCHED_CONTEXT): Likewise.
+ (TARGET_SCHED_FREE_SCHED_CONTEXT): Likewise.
+
+ (TARGET_SCHED_SET_SCHED_CONTEXT): Fix typo.
+
+ (TARGET_SCHED_GEN_SPEC_CHECK): Fix name.
+
+ (TARGET_ASM_RELOC_RW_MASK): Add return type.
+ (TARGET_MANGLE_DECL_ASSEMBLER_NAME): Fix return type.
+
+ (TARGET_STRIP_NAME_ENCODING): Fix markup of return type and parameter.
+
+ (TARGET_ASM_FILE_START): Put @findex before paragraph start.
+ Use prototype.
+
+ (TARGET_ASM_NAMED_SECTION): Fix argument list.
+
+ (TARGET_HAVE_NAMED_SECTIONS): Use @deftypevr.
+ (TARGET_HAVE_SWITCHABLE_BSS_SECTIONS): Likewise.
+
+ (TARGET_ASM_RECORD_GCC_SWITCHES_SECTION): Use @deftypevr.
+
+ (TARGET_ASM_ASSEMBLE_VISIBILITY): Fix argument types.
+
+ (TARGET_ASM_MARK_DECL_PRESERVED): Fix argument and markup
+ referring to it. Fix language.
+
+ (TARGET_HAVE_CTORS_DTORS): Use @deftypevr.
+
+ (TARGET_ASM_FINAL_POSTSCAN_INSN): Adjust name of first argument.
+
+ (TARGET_ASM_EMIT_UNWIND_LABEL): Add argument types.
+
+ (TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL): Add type to argument.
+
+ (TARGET_UNWIND_EMIT): Remove space between 'FILE *' and
+ '@var{stream}. Remove stray 'and'.
+
+ (TARGET_ARM_EABI_UNWINDER): Use @deftypevr.
+
+ (TARGET_ASM_OUTPUT_DWARF_DTPREL): Adjust name of first argument.
+
+ (TARGET_SET_DEFAULT_TYPE_ATTRIBUTES): Add missing article.
+
+ (TARGET_OPTION_VALID_ATTRIBUTE_P): Fix name, it was
+ misspelled as TARGET_VALID_OPTION_ATTRIBUTE_P.
+
+ (TARGET_GET_PCH_VALIDITY): Put 'void *' in braces.
+ Fix description of return value.
+ Rename argument "sz" to "len."
+
+ (TARGET_CXX_GUARD_MASK_BIT): Add missing article.
+ Clarify meaning of 'true' return value.
+
+ (TARGET_SHIFT_TRUNCATION_MASK): Fix return type.
+
+ (TARGET_MODE_REP_EXTENDED): Fix two inconsisent uses of
+ rep_mode versus mode_rep.
+
+ (TARGET_HANDLE_PRAGMA_EXTERN_PREFIX): Document.
+
+ (TARGET_BUILTIN_DECL): Fix name.
+
+ (TARGET_COMMUTATIVE_P): Fix type of first argument.
+
+ (TARGET_SET_CURRENT_FUNCTION): Mention possibility of cfun being NULL.
+
+ (TARGET_BRANCH_TARGET_REGISTER_CLASS): Fix return type.
+
+ (TARGET_USE_LOCAL_THUNK_ALIAS_P): Document as macro instead of hook.
+
+ (TARGET_RELAXED_ORDERING): Use @deftypevr.
+
+ (TARGET_GET_DRAP_RTX): Note that this is a hook.
+ Clarify language.
+
+ (TARGET_BUILTIN_RECIPROCAL): Fix argument types.
+ Rename argument tm_fn to md_fn.
+
+ (TARGET_OPTION_PRINT): Fix argument list.
+
+2010-01-16 Harsha Jagasia <harsha.jagasia@amd.com>
+
+ PR target/42664
+ * config/i386/i386.c (ix86_fixup_binary_operands):
+ Revert FMA4 fixup of operands.
+
+2010-01-16 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ PR gcc/42525
+ * Makefile.in (write_entries_to_file, install-plugin):
+ Use \012 instead of \n with tr.
+
+2010-01-16 Richard Sandiford <r.sandiford@uk.ibm.com>
+
+ * configure.ac (HAVE_AS_REF): New C macro.
+ * configure: Regenerate.
+ * config.in: Likewise.
+ * collect2.c (main): Only postpone SCAN_DWEH to the second pass
+ if HAVE_AS_REF.
+ * config/rs6000/aix.h (ASM_OUTPUT_DWARF_TABLE_REF): Only define
+ if HAVE_AS_REF.
+
2010-01-16 Joern Rennecke <amylaar@spamcop.net>
* doc/tm.texi (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Fix argument types.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 3d99ded7fcf..27796e14032 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20100116
+20100121
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 11cfc741d62..06549807afe 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -291,7 +291,7 @@ write_entries_to_file = $(shell rm -f $(2) || :) $(shell touch $(2)) \
echo $$i; i=`expr $$i + $(write_entries_to_file_split)`; done), \
$(shell echo "$(wordlist $(range), \
$(shell expr $(range) + $(write_entries_to_file_split) - 1), $(1))" \
- | tr ' ' '\n' >> $(2)))
+ | tr ' ' '\012' >> $(2)))
# --------
# UNSORTED
@@ -2571,7 +2571,7 @@ tree-scalar-evolution.o: tree-scalar-evolution.c $(CONFIG_H) $(SYSTEM_H) \
$(TIMEVAR_H) $(CFGLOOP_H) $(SCEV_H) $(TREE_PASS_H) $(FLAGS_H) \
gt-tree-scalar-evolution.h
tree-data-ref.o: tree-data-ref.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(GGC_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \
+ $(GGC_H) $(FLAGS_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \
$(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \
$(TREE_DATA_REF_H) $(TREE_PASS_H) langhooks.h
sese.o: sese.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
@@ -3068,7 +3068,8 @@ regstat.o : regstat.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
var-tracking.o : var-tracking.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TREE_H) hard-reg-set.h insn-config.h reload.h $(FLAGS_H) \
$(BASIC_BLOCK_H) output.h sbitmap.h alloc-pool.h $(FIBHEAP_H) $(HASHTAB_H) \
- $(REGS_H) $(EXPR_H) $(TIMEVAR_H) $(TREE_PASS_H) cselib.h $(TARGET_H)
+ $(REGS_H) $(EXPR_H) $(TIMEVAR_H) $(TREE_PASS_H) $(TREE_FLOW_H) \
+ cselib.h $(TARGET_H)
profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) $(FUNCTION_H) \
$(TOPLEV_H) $(COVERAGE_H) $(TREE_FLOW_H) value-prof.h cfghooks.h \
@@ -4362,7 +4363,7 @@ install-plugin: installdirs lang.install-plugin s-header-vars
# We keep the directory structure for files in config and .def files. All
# other files are flattened to a single directory.
$(mkinstalldirs) $(DESTDIR)$(plugin_includedir)
- headers=`echo $(PLUGIN_HEADERS) $(MELT_PLUGIN_HEADERS) | tr ' ' '\n' | sort -u`; \
+ headers=`echo $(PLUGIN_HEADERS) $(MELT_PLUGIN_HEADERS) | tr ' ' '\012' | sort -u`; \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \
for file in $$headers; do \
if [ -f $$file ] ; then \
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index fe779ad8beb..a794e5b7342 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,17 @@
+2010-01-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/utils.c (create_var_decl_1): Fix formatting nits.
+
+2010-01-18 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/42068
+ * gcc-interface/utils.c (create_var_decl_1): Do not set COMMON flag for
+ unit local variables.
+
+2010-01-17 Laurent GUERBY <laurent@guerby.net>
+
+ * gcc-interface/Makefile.in: Fix typo in arm*-*-linux-gnueabi.
+
2010-01-11 Mikael Pettersson <mikpe@it.uu.se>
* gcc-interface/Makefile.in: Add arm*-*-linux-gnueabi.
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
index 1aa7ca1ba1f..41fd39a5200 100644
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -1792,7 +1792,7 @@ ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),)
LIBRARY_VERSION := $(LIB_VERSION)
endif
-ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word4,$(targ)))),)
+ifeq ($(strip $(filter-out arm% linux-gnueabi,$(arch) $(osys)-$(word 4,$(targ)))),)
LIBGNAT_TARGET_PAIRS = \
a-intnam.ads<a-intnam-linux.ads \
s-inmaop.adb<s-inmaop-posix.adb \
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index 38795a0cea6..1444d6e8bcc 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -6,7 +6,7 @@
* *
* C Implementation File *
* *
- * Copyright (C) 1992-2009, Free Software Foundation, Inc. *
+ * Copyright (C) 1992-2010, Free Software Foundation, Inc. *
* *
* GNAT is free software; you can redistribute it and/or modify it under *
* terms of the GNU General Public License as published by the Free Soft- *
@@ -1385,24 +1385,26 @@ create_var_decl_1 (tree var_name, tree asm_name, tree type, tree var_init,
/* At the global level, an initializer requiring code to be generated
produces elaboration statements. Check that such statements are allowed,
that is, not violating a No_Elaboration_Code restriction. */
- if (global_bindings_p () && var_init != 0 && ! init_const)
+ if (global_bindings_p () && var_init != 0 && !init_const)
Check_Elaboration_Code_Allowed (gnat_node);
+ DECL_INITIAL (var_decl) = var_init;
+ TREE_READONLY (var_decl) = const_flag;
+ DECL_EXTERNAL (var_decl) = extern_flag;
+ TREE_PUBLIC (var_decl) = public_flag || extern_flag;
+ TREE_CONSTANT (var_decl) = constant_p;
+ TREE_THIS_VOLATILE (var_decl) = TREE_SIDE_EFFECTS (var_decl)
+ = TYPE_VOLATILE (type);
+
/* Ada doesn't feature Fortran-like COMMON variables so we shouldn't
try to fiddle with DECL_COMMON. However, on platforms that don't
support global BSS sections, uninitialized global variables would
go in DATA instead, thus increasing the size of the executable. */
if (!flag_no_common
&& TREE_CODE (var_decl) == VAR_DECL
+ && TREE_PUBLIC (var_decl)
&& !have_global_bss_p ())
DECL_COMMON (var_decl) = 1;
- DECL_INITIAL (var_decl) = var_init;
- TREE_READONLY (var_decl) = const_flag;
- DECL_EXTERNAL (var_decl) = extern_flag;
- TREE_PUBLIC (var_decl) = public_flag || extern_flag;
- TREE_CONSTANT (var_decl) = constant_p;
- TREE_THIS_VOLATILE (var_decl) = TREE_SIDE_EFFECTS (var_decl)
- = TYPE_VOLATILE (type);
/* If it's public and not external, always allocate storage for it.
At the global binding level we need to allocate static storage for the
diff --git a/gcc/c-common.c b/gcc/c-common.c
index 7552077d280..f9bdf38f2d2 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -6247,7 +6247,7 @@ handle_transparent_union_attribute (tree *node, tree name,
*node = type = build_duplicate_type (type);
}
- TYPE_TRANSPARENT_UNION (type) = 1;
+ TYPE_TRANSPARENT_AGGR (type) = 1;
return NULL_TREE;
}
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 91d58844550..e48cdc88e4e 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -6953,10 +6953,10 @@ finish_struct (location_t loc, tree t, tree fieldlist, tree attributes,
/* If this was supposed to be a transparent union, but we can't
make it one, warn and turn off the flag. */
if (TREE_CODE (t) == UNION_TYPE
- && TYPE_TRANSPARENT_UNION (t)
+ && TYPE_TRANSPARENT_AGGR (t)
&& (!TYPE_FIELDS (t) || TYPE_MODE (t) != DECL_MODE (TYPE_FIELDS (t))))
{
- TYPE_TRANSPARENT_UNION (t) = 0;
+ TYPE_TRANSPARENT_AGGR (t) = 0;
warning_at (loc, 0, "union cannot be made transparent");
}
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 17bdbf92b3b..567c2a51282 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -1622,7 +1622,7 @@ type_lists_compatible_p (const_tree args1, const_tree args2,
and wait (union wait *) to be compatible. */
if (TREE_CODE (a1) == UNION_TYPE
&& (TYPE_NAME (a1) == 0
- || TYPE_TRANSPARENT_UNION (a1))
+ || TYPE_TRANSPARENT_AGGR (a1))
&& TREE_CODE (TYPE_SIZE (a1)) == INTEGER_CST
&& tree_int_cst_equal (TYPE_SIZE (a1),
TYPE_SIZE (a2)))
@@ -1643,7 +1643,7 @@ type_lists_compatible_p (const_tree args1, const_tree args2,
}
else if (TREE_CODE (a2) == UNION_TYPE
&& (TYPE_NAME (a2) == 0
- || TYPE_TRANSPARENT_UNION (a2))
+ || TYPE_TRANSPARENT_AGGR (a2))
&& TREE_CODE (TYPE_SIZE (a2)) == INTEGER_CST
&& tree_int_cst_equal (TYPE_SIZE (a2),
TYPE_SIZE (a1)))
@@ -5014,9 +5014,10 @@ convert_for_assignment (location_t location, tree type, tree rhs,
&& comptypes (type, rhstype))
return convert_and_check (type, rhs);
- /* Conversion to a transparent union from its member types.
+ /* Conversion to a transparent union or record from its member types.
This applies only to function arguments. */
- if (codel == UNION_TYPE && TYPE_TRANSPARENT_UNION (type)
+ if (((codel == UNION_TYPE || codel == RECORD_TYPE)
+ && TYPE_TRANSPARENT_AGGR (type))
&& errtype == ic_argpass)
{
tree memb, marginal_memb = NULL_TREE;
diff --git a/gcc/calls.c b/gcc/calls.c
index fe4bf0dbce5..ce54bbea846 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1010,11 +1010,12 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED,
if (type == error_mark_node || !COMPLETE_TYPE_P (type))
args[i].tree_value = integer_zero_node, type = integer_type_node;
- /* If TYPE is a transparent union, pass things the way we would
- pass the first field of the union. We have already verified that
- the modes are the same. */
- if (TREE_CODE (type) == UNION_TYPE && TYPE_TRANSPARENT_UNION (type))
- type = TREE_TYPE (TYPE_FIELDS (type));
+ /* If TYPE is a transparent union or record, pass things the way
+ we would pass the first field of the union or record. We have
+ already verified that the modes are the same. */
+ if ((TREE_CODE (type) == UNION_TYPE || TREE_CODE (type) == RECORD_TYPE)
+ && TYPE_TRANSPARENT_AGGR (type))
+ type = TREE_TYPE (first_field (type));
/* Decide where to pass this arg.
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 70d2b355aa1..788242c3d82 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -1746,15 +1746,31 @@ expand_call_stmt (gimple stmt)
tree exp;
tree lhs = gimple_call_lhs (stmt);
size_t i;
+ bool builtin_p;
+ tree decl;
exp = build_vl_exp (CALL_EXPR, gimple_call_num_args (stmt) + 3);
CALL_EXPR_FN (exp) = gimple_call_fn (stmt);
+ decl = gimple_call_fndecl (stmt);
+ builtin_p = decl && DECL_BUILT_IN (decl);
+
TREE_TYPE (exp) = gimple_call_return_type (stmt);
CALL_EXPR_STATIC_CHAIN (exp) = gimple_call_chain (stmt);
for (i = 0; i < gimple_call_num_args (stmt); i++)
- CALL_EXPR_ARG (exp, i) = gimple_call_arg (stmt, i);
+ {
+ tree arg = gimple_call_arg (stmt, i);
+ gimple def;
+ /* TER addresses into arguments of builtin functions so we have a
+ chance to infer more correct alignment information. See PR39954. */
+ if (builtin_p
+ && TREE_CODE (arg) == SSA_NAME
+ && (def = get_gimple_for_ssa_name (arg))
+ && gimple_assign_rhs_code (def) == ADDR_EXPR)
+ arg = gimple_assign_rhs1 (def);
+ CALL_EXPR_ARG (exp, i) = arg;
+ }
if (gimple_has_side_effects (stmt))
TREE_SIDE_EFFECTS (exp) = 1;
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index ebe662ad639..9cd5f16f488 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -1465,7 +1465,7 @@ assemble_thunk (struct cgraph_node *node)
if (restmp && !this_adjusting)
{
- tree true_label = NULL_TREE, false_label = NULL_TREE;
+ tree true_label = NULL_TREE;
if (TREE_CODE (TREE_TYPE (restmp)) == POINTER_TYPE)
{
@@ -1479,7 +1479,6 @@ assemble_thunk (struct cgraph_node *node)
else_bb = create_basic_block (NULL, (void *) 0, else_bb);
remove_edge (single_succ_edge (bb));
true_label = gimple_block_label (then_bb);
- false_label = gimple_block_label (else_bb);
stmt = gimple_build_cond (NE_EXPR, restmp,
fold_convert (TREE_TYPE (restmp),
integer_zero_node),
diff --git a/gcc/collect2.c b/gcc/collect2.c
index 777510b4e40..914015f06f9 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -1677,8 +1677,11 @@ main (int argc, char **argv)
control whether we need a first pass link later on or not, and what
will remain to be scanned there. */
- scanfilter this_filter
- = shared_obj ? ld1_filter : (ld1_filter & ~SCAN_DWEH);
+ scanfilter this_filter = ld1_filter;
+#if HAVE_AS_REF
+ if (!shared_obj)
+ this_filter &= ~SCAN_DWEH;
+#endif
while (export_object_lst < object)
scan_prog_file (*export_object_lst++, PASS_OBJ, this_filter);
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 59fa4d78d9c..1c7cb37f918 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1144,7 +1144,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
tmake_file="${tmake_file} i386/t-linux64"
need_64bit_hwint=yes
case X"${with_cpu}" in
- Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
+ Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
;;
X)
if test x$with_cpu_64 = x; then
@@ -1153,7 +1153,7 @@ i[34567]86-*-linux* | i[34567]86-*-kfreebsd*-gnu | i[34567]86-*-knetbsd*-gnu | i
;;
*)
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
- echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
+ echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
exit 1
;;
esac
@@ -1260,7 +1260,7 @@ i[34567]86-*-solaris2*)
need_64bit_hwint=yes
use_gcc_stdint=wrap
case X"${with_cpu}" in
- Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
+ Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
;;
X)
if test x$with_cpu_64 = x; then
@@ -1269,7 +1269,7 @@ i[34567]86-*-solaris2*)
;;
*)
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
- echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
+ echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
exit 1
;;
esac
@@ -1339,7 +1339,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
if test x$enable_targets = xall; then
tm_defines="${tm_defines} TARGET_BI_ARCH=1"
case X"${with_cpu}" in
- Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx)
+ Xgeneric|Xatom|Xcore2|Xnocona|Xx86-64|Xamdfam10|Xbarcelona|Xk8|Xopteron|Xathlon64|Xathlon-fx|Xathlon64-sse3|Xk8-sse3|Xopteron-sse3)
;;
X)
if test x$with_cpu_64 = x; then
@@ -1348,7 +1348,7 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
;;
*)
echo "Unsupported CPU used in --with-cpu=$with_cpu, supported values:" 1>&2
- echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx" 1>&2
+ echo "generic atom core2 nocona x86-64 amdfam10 barcelona k8 opteron athlon64 athlon-fx athlon64-sse3 k8-sse3 opteron-sse3" 1>&2
exit 1
;;
esac
@@ -2629,8 +2629,11 @@ if test x$with_cpu = x ; then
case ${target_noncanonical} in
amdfam10-*|barcelona-*)
with_cpu=amdfam10
+ ;;
+ k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
+ with_cpu=k8-sse3
;;
- k8-*|opteron-*|athlon_64-*)
+ k8-*|opteron-*|athlon64-*|athlon_fx-*)
with_cpu=k8
;;
athlon_xp-*|athlon_mp-*|athlon_4-*)
@@ -2676,7 +2679,10 @@ if test x$with_cpu = x ; then
amdfam10-*|barcelona-*)
with_cpu=amdfam10
;;
- k8-*|opteron-*|athlon_64-*)
+ k8_sse3-*|opteron_sse3-*|athlon64_sse3-*)
+ with_cpu=k8-sse3
+ ;;
+ k8-*|opteron-*|athlon64-*|athlon_fx-*)
with_cpu=k8
;;
nocona-*)
@@ -2970,7 +2976,7 @@ case "${target}" in
esac
# OK
;;
- "" | amdfam10 | barcelona | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | atom | generic)
+ "" | amdfam10 | barcelona | k8-sse3 | opteron-sse3 | athlon64-sse3 | k8 | opteron | athlon64 | athlon-fx | nocona | core2 | atom | generic)
# OK
;;
*)
diff --git a/gcc/config.in b/gcc/config.in
index 1686be9d0ea..a3744f99dcb 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -393,6 +393,12 @@
#endif
+/* Define if your assembler supports .ref */
+#ifndef USED_FOR_TARGET
+#undef HAVE_AS_REF
+#endif
+
+
/* Define if your assembler supports .register. */
#ifndef USED_FOR_TARGET
#undef HAVE_AS_REGISTER_PSEUDO_OP
diff --git a/gcc/config/alpha/predicates.md b/gcc/config/alpha/predicates.md
index b52d9dce028..0852f692998 100644
--- a/gcc/config/alpha/predicates.md
+++ b/gcc/config/alpha/predicates.md
@@ -439,13 +439,11 @@
(match_code "mem"))
{
rtx base;
+ int offset;
if (MEM_ALIGN (op) >= 32)
return 1;
- if (mode == CQImode)
- return 0;
-
op = XEXP (op, 0);
/* LEGITIMIZE_RELOAD_ADDRESS creates (plus (plus reg const_hi) const_lo)
@@ -453,14 +451,29 @@
if (reload_in_progress
&& GET_CODE (op) == PLUS
&& GET_CODE (XEXP (op, 0)) == PLUS)
- base = XEXP (XEXP (op, 0), 0);
+ {
+ base = XEXP (XEXP (op, 0), 0);
+ offset = INTVAL (XEXP (op, 1));
+ }
else
{
if (! memory_address_p (mode, op))
return 0;
- base = (GET_CODE (op) == PLUS ? XEXP (op, 0) : op);
+ if (GET_CODE (op) == PLUS)
+ {
+ base = XEXP (op, 0);
+ offset = INTVAL (XEXP (op, 1));
+ }
+ else
+ {
+ base = op;
+ offset = 0;
+ }
}
+ if (offset % GET_MODE_SIZE (mode))
+ return 0;
+
return (REG_P (base) && REGNO_POINTER_ALIGN (REGNO (base)) >= 32);
})
@@ -471,13 +484,11 @@
(match_code "mem"))
{
rtx base;
+ int offset;
if (MEM_ALIGN (op) >= 32)
return 0;
- if (mode == CQImode)
- return 1;
-
op = XEXP (op, 0);
/* LEGITIMIZE_RELOAD_ADDRESS creates (plus (plus reg const_hi) const_lo)
@@ -485,14 +496,29 @@
if (reload_in_progress
&& GET_CODE (op) == PLUS
&& GET_CODE (XEXP (op, 0)) == PLUS)
- base = XEXP (XEXP (op, 0), 0);
+ {
+ base = XEXP (XEXP (op, 0), 0);
+ offset = INTVAL (XEXP (op, 1));
+ }
else
{
if (! memory_address_p (mode, op))
return 0;
- base = (GET_CODE (op) == PLUS ? XEXP (op, 0) : op);
+ if (GET_CODE (op) == PLUS)
+ {
+ base = XEXP (op, 0);
+ offset = INTVAL (XEXP (op, 1));
+ }
+ else
+ {
+ base = op;
+ offset = 0;
+ }
}
+ if (offset % GET_MODE_SIZE (mode))
+ return 1;
+
return (REG_P (base) && REGNO_POINTER_ALIGN (REGNO (base)) < 32);
})
diff --git a/gcc/config/arm/neon-testgen.ml b/gcc/config/arm/neon-testgen.ml
index f1c431a3841..be86386cbf0 100644
--- a/gcc/config/arm/neon-testgen.ml
+++ b/gcc/config/arm/neon-testgen.ml
@@ -1,5 +1,5 @@
(* Auto-generate ARM Neon intrinsics tests.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Contributed by CodeSourcery.
This file is part of GCC.
@@ -58,7 +58,7 @@ let emit_prologue chan test_name =
(* Emit declarations of local variables that are going to be passed
to an intrinsic, together with one to take a returned value if needed. *)
-let emit_automatics chan c_types =
+let emit_automatics chan c_types features =
let emit () =
ignore (
List.fold_left (fun arg_number -> fun (flags, ty) ->
@@ -75,11 +75,17 @@ let emit_automatics chan c_types =
in
match c_types with
(_, return_ty) :: tys ->
- if return_ty <> "void" then
- (* The intrinsic returns a value. *)
- (Printf.fprintf chan " %s out_%s;\n" return_ty return_ty;
- emit ())
- else
+ if return_ty <> "void" then begin
+ (* The intrinsic returns a value. We need to do explict register
+ allocation for vget_low tests or they fail because of copy
+ elimination. *)
+ ((if List.mem Fixed_return_reg features then
+ Printf.fprintf chan " register %s out_%s asm (\"d18\");\n"
+ return_ty return_ty
+ else
+ Printf.fprintf chan " %s out_%s;\n" return_ty return_ty);
+ emit ())
+ end else
(* The intrinsic does not return a value. *)
emit ()
| _ -> assert false
@@ -257,7 +263,7 @@ let test_intrinsic dir opcode features shape name munge elt_ty =
(* Emit file and function prologues. *)
emit_prologue chan test_name;
(* Emit local variable declarations. *)
- emit_automatics chan c_types;
+ emit_automatics chan c_types features;
Printf.fprintf chan "\n";
(* Emit the call to the intrinsic. *)
emit_call chan const_valuator c_types name elt_ty;
diff --git a/gcc/config/arm/neon.ml b/gcc/config/arm/neon.ml
index 466b06b0fff..f77f05cc825 100644
--- a/gcc/config/arm/neon.ml
+++ b/gcc/config/arm/neon.ml
@@ -1,7 +1,7 @@
(* Common code for ARM NEON header file, documentation and test case
generators.
- Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Contributed by CodeSourcery.
This file is part of GCC.
@@ -234,6 +234,7 @@ type features =
cases. The function supplied must return the integer to be written
into the testcase for the argument number (0-based) supplied to it. *)
| Const_valuator of (int -> int)
+ | Fixed_return_reg
exception MixedMode of elts * elts
@@ -1089,9 +1090,13 @@ let ops =
Use_operands [| Dreg; Qreg |], "vget_high",
notype_1, pf_su_8_64;
Vget_low, [Instruction_name ["vmov"];
- Disassembles_as [Use_operands [| Dreg; Dreg |]]],
+ Disassembles_as [Use_operands [| Dreg; Dreg |]];
+ Fixed_return_reg],
Use_operands [| Dreg; Qreg |], "vget_low",
- notype_1, pf_su_8_64;
+ notype_1, pf_su_8_32;
+ Vget_low, [No_op],
+ Use_operands [| Dreg; Qreg |], "vget_low",
+ notype_1, [S64; U64];
(* Conversions. *)
Vcvt, [InfoWord], All (2, Dreg), "vcvt", conv_1,
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index 7bb1e7a6c5c..e9e2216c270 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -83,7 +83,7 @@ static int h8300_interrupt_function_p (tree);
static int h8300_saveall_function_p (tree);
static int h8300_monitor_function_p (tree);
static int h8300_os_task_function_p (tree);
-static void h8300_emit_stack_adjustment (int, HOST_WIDE_INT);
+static void h8300_emit_stack_adjustment (int, HOST_WIDE_INT, bool);
static HOST_WIDE_INT round_frame_size (HOST_WIDE_INT);
static unsigned int compute_saved_regs (void);
static void push (int);
@@ -509,9 +509,10 @@ byte_reg (rtx x, int b)
/* We use this to wrap all emitted insns in the prologue. */
static rtx
-F (rtx x)
+F (rtx x, bool set_it)
{
- RTX_FRAME_RELATED_P (x) = 1;
+ if (set_it)
+ RTX_FRAME_RELATED_P (x) = 1;
return x;
}
@@ -528,7 +529,7 @@ Fpa (rtx par)
int i;
for (i = 0; i < len; i++)
- F (XVECEXP (par, 0, i));
+ F (XVECEXP (par, 0, i), true);
return par;
}
@@ -537,7 +538,7 @@ Fpa (rtx par)
SIZE to adjust the stack pointer. */
static void
-h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size)
+h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size, bool in_prologue)
{
/* If the frame size is 0, we don't have anything to do. */
if (size == 0)
@@ -552,9 +553,9 @@ h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size)
&& !(cfun->static_chain_decl != NULL && sign < 0))
{
rtx r3 = gen_rtx_REG (Pmode, 3);
- F (emit_insn (gen_movhi (r3, GEN_INT (sign * size))));
+ F (emit_insn (gen_movhi (r3, GEN_INT (sign * size))), in_prologue);
F (emit_insn (gen_addhi3 (stack_pointer_rtx,
- stack_pointer_rtx, r3)));
+ stack_pointer_rtx, r3)), in_prologue);
}
else
{
@@ -568,11 +569,11 @@ h8300_emit_stack_adjustment (int sign, HOST_WIDE_INT size)
rtx x = emit_insn (gen_addhi3 (stack_pointer_rtx,
stack_pointer_rtx, GEN_INT (sign * size)));
if (size < 4)
- F (x);
+ F (x, in_prologue);
}
else
F (emit_insn (gen_addsi3 (stack_pointer_rtx,
- stack_pointer_rtx, GEN_INT (sign * size))));
+ stack_pointer_rtx, GEN_INT (sign * size))), in_prologue);
}
}
@@ -622,7 +623,7 @@ push (int rn)
x = gen_push_h8300hs_advanced (reg);
else
x = gen_push_h8300hs_normal (reg);
- x = F (emit_insn (x));
+ x = F (emit_insn (x), 1);
REG_NOTES (x) = gen_rtx_EXPR_LIST (REG_INC, stack_pointer_rtx, 0);
}
@@ -854,7 +855,7 @@ h8300_expand_prologue (void)
{
/* Push fp. */
push (HARD_FRAME_POINTER_REGNUM);
- F (emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx));
+ F (emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx), 1);
}
/* Push the rest of the registers in ascending order. */
@@ -885,7 +886,7 @@ h8300_expand_prologue (void)
}
/* Leave room for locals. */
- h8300_emit_stack_adjustment (-1, round_frame_size (get_frame_size ()));
+ h8300_emit_stack_adjustment (-1, round_frame_size (get_frame_size ()), true);
}
/* Return nonzero if we can use "rts" for the function currently being
@@ -920,7 +921,7 @@ h8300_expand_epilogue (void)
returned_p = false;
/* Deallocate locals. */
- h8300_emit_stack_adjustment (1, frame_size);
+ h8300_emit_stack_adjustment (1, frame_size, false);
/* Pop the saved registers in descending order. */
saved_regs = compute_saved_regs ();
diff --git a/gcc/config/i386/cygwin.h b/gcc/config/i386/cygwin.h
index 86eff635ae6..0a395c64ecc 100644
--- a/gcc/config/i386/cygwin.h
+++ b/gcc/config/i386/cygwin.h
@@ -87,7 +87,7 @@ along with GCC; see the file COPYING3. If not see
/* To implement C++ function replacement we always wrap the cxx
malloc-like operators. See N2800 #17.6.4.6 [replacement.functions] */
-#define CXX_WRAP_SPEC_LIST "%{!static: %{!static-libstdc++: \
+#define CXX_WRAP_SPEC_LIST " \
--wrap _Znwj \
--wrap _Znaj \
--wrap _ZdlPv \
@@ -96,7 +96,7 @@ along with GCC; see the file COPYING3. If not see
--wrap _ZnajRKSt9nothrow_t \
--wrap _ZdlPvRKSt9nothrow_t \
--wrap _ZdaPvRKSt9nothrow_t \
- }}"
+"
#if defined (USE_CYGWIN_LIBSTDCXX_WRAPPERS)
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 1926c504ad1..6b1c9b9c61f 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -13387,16 +13387,6 @@ ix86_fixup_binary_operands (enum rtx_code code, enum machine_mode mode,
if (MEM_P (src1) && !rtx_equal_p (dst, src1))
src1 = force_reg (mode, src1);
- /* In order for the multiply-add patterns to get matched, we need
- to aid combine by forcing all operands into registers to start. */
- if (optimize && TARGET_FMA4)
- {
- if (MEM_P (src2))
- src2 = force_reg (GET_MODE (src2), src2);
- else if (MEM_P (src1))
- src1 = force_reg (GET_MODE (src1), src1);
- }
-
operands[1] = src1;
operands[2] = src2;
return dst;
diff --git a/gcc/config/rs6000/aix.h b/gcc/config/rs6000/aix.h
index 4676110b44e..380b0b8b532 100644
--- a/gcc/config/rs6000/aix.h
+++ b/gcc/config/rs6000/aix.h
@@ -43,11 +43,13 @@
collect has a chance to see them, so scan the object files directly. */
#define COLLECT_EXPORT_LIST
+#if HAVE_AS_REF
/* Issue assembly directives that create a reference to the given DWARF table
identifier label from the current function section. This is defined to
ensure we drag frame frame tables associated with needed function bodies in
a link with garbage collection activated. */
#define ASM_OUTPUT_DWARF_TABLE_REF rs6000_aix_asm_output_dwarf_table_ref
+#endif
/* Handle #pragma weak and #pragma pack. */
#define HANDLE_SYSV_PRAGMA 1
diff --git a/gcc/configure b/gcc/configure
index daa43835784..6e6a54adde3 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -23636,6 +23636,50 @@ if test $gcc_cv_as_powerpc_tls_markers = yes; then
$as_echo "#define HAVE_AS_TLS_MARKERS 1" >>confdefs.h
fi
+
+ case $target in
+ *-*-aix*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler for .ref support" >&5
+$as_echo_n "checking assembler for .ref support... " >&6; }
+if test "${gcc_cv_as_aix_ref+set}" = set; then :
+ $as_echo_n "(cached) " >&6
+else
+ gcc_cv_as_aix_ref=no
+ if test $in_tree_gas = yes; then
+ if test $gcc_cv_gas_vers -ge `expr \( \( 2.21.0 \* 1000 \) + gcc_cv_as_aix_ref=yes \) \* 1000 + `
+ then :
+fi
+ elif test x$gcc_cv_as != x; then
+ echo ' .csect stuff[rw]
+ stuff:
+ .long 1
+ .extern sym
+ .ref sym
+ ' > conftest.s
+ if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+ then
+ gcc_cv_as_aix_ref=yes
+ else
+ echo "configure: failed program was" >&5
+ cat conftest.s >&5
+ fi
+ rm -f conftest.o conftest.s
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_aix_ref" >&5
+$as_echo "$gcc_cv_as_aix_ref" >&6; }
+if test $gcc_cv_as_aix_ref = yes; then
+
+$as_echo "#define HAVE_AS_REF 1" >>confdefs.h
+
+fi
+ ;;
+ esac
;;
mips*-*-*)
diff --git a/gcc/configure.ac b/gcc/configure.ac
index dc329f5f20d..14d649b41b6 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -3326,6 +3326,21 @@ LCF0:
[ bl __tls_get_addr(x@tlsgd)],,
[AC_DEFINE(HAVE_AS_TLS_MARKERS, 1,
[Define if your assembler supports arg info for __tls_get_addr.])])
+
+ case $target in
+ *-*-aix*)
+ gcc_GAS_CHECK_FEATURE([.ref support],
+ gcc_cv_as_aix_ref, [2.21.0],,
+ [ .csect stuff[[rw]]
+ stuff:
+ .long 1
+ .extern sym
+ .ref sym
+ ],,
+ [AC_DEFINE(HAVE_AS_REF, 1,
+ [Define if your assembler supports .ref])])
+ ;;
+ esac
;;
mips*-*-*)
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 9f73d86c22e..43da561ffd2 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,78 @@
+2010-01-20 Janis Johnson <janis187@us.ibm.com>
+ Jason Merrill <jason@redhat.com>
+
+ * mangle.c (write_type): Mangle transparent record as member type.
+ * semantics.c (begin_class_definition): Recognize decimal classes
+ and set TYPE_TRANSPARENT_AGGR.
+
+2010-01-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/42338
+ * mangle.c (write_expression): Handle tree codes that have extra
+ arguments in the middle-end.
+
+2010-01-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/42038
+ * except.c (expand_start_catch_block): Deal correctly with
+ do_begin_catch returning error_mark_node.
+
+2010-01-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/41788
+ * class.c (layout_class_type): Set packed_maybe_necessary for packed
+ non-PODs.
+
+ PR c++/41920
+ * semantics.c (build_lambda_object): Call mark_used on captured
+ variables.
+
+ PR c++/40750
+ * decl.c (grokdeclarator): Clear type_quals for a member function
+ declared using a typedef. Don't complain about adding cv-quals
+ to a function typedef in C++0x mode.
+
+2010-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ * decl.c (create_array_type_for_decl): Remove set but not used
+ variable error_msg. Remove break stmts after return stmts.
+
+2010-01-19 Dodji Seketeli <dodji@redhat.com>
+
+ * error.c (dump_template_parms, count_non_default_template_args):
+ Revert fix of PR c++/42634.
+
+2010-01-18 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/42634
+ * error.c (dump_template_parms): Use innermost template
+ arguments before calling count_non_default_template_args.
+ (count_non_default_template_args): We are being called with
+ template innermost arguments now. There is no need to ensure
+ that again.
+
+2010-01-18 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/42766
+ * cvt.c (build_expr_type_conversion): Look through OVERLOAD.
+
+2010-01-17 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/42697
+ *pt.c (tsubst_decl): Revert commit for PR c++/42697.
+
+2010-01-17 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/42697
+ *pt.c (tsubst_decl): Get the arguments of a specialization from
+ the specialization template, not from the most general template.
+
+2010-01-16 Jason Merrill <jason@redhat.com>
+
+ PR c++/42761
+ * semantics.c (finish_decltype_type): Within a template, treat
+ unresolved CALL_EXPR as dependent.
+
2010-01-15 Dodji Seketeli <dodji@redhat.com>
* error.c (dump_template_parms,count_non_default_template_args):
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 16d566682a6..f88914d3c22 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -5216,6 +5216,11 @@ layout_class_type (tree t, tree *virtuals_p)
build_decl (input_location,
FIELD_DECL, NULL_TREE, char_type_node));
+ /* If this is a non-POD, declaring it packed makes a difference to how it
+ can be used as a field; don't let finalize_record_size undo it. */
+ if (TYPE_PACKED (t) && !layout_pod_type_p (t))
+ rli->packed_maybe_necessary = true;
+
/* Let the back end lay out the type. */
finish_record_layout (rli, /*free_p=*/true);
diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c
index b4cc2b3ed8c..cbe85965a59 100644
--- a/gcc/cp/cvt.c
+++ b/gcc/cp/cvt.c
@@ -1203,6 +1203,7 @@ build_expr_type_conversion (int desires, tree expr, bool complain)
int win = 0;
tree candidate;
tree cand = TREE_VALUE (conv);
+ cand = OVL_CURRENT (cand);
if (winner && winner == cand)
continue;
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 2409aa31b15..920d75b75a8 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -7422,15 +7422,11 @@ static tree
create_array_type_for_decl (tree name, tree type, tree size)
{
tree itype = NULL_TREE;
- const char* error_msg;
/* If things have already gone awry, bail now. */
if (type == error_mark_node || size == error_mark_node)
return error_mark_node;
- /* Assume that everything will go OK. */
- error_msg = NULL;
-
/* If there are some types which cannot be array elements,
issue an error-message and return. */
switch (TREE_CODE (type))
@@ -7441,7 +7437,6 @@ create_array_type_for_decl (tree name, tree type, tree size)
else
error ("creating array of void");
return error_mark_node;
- break;
case FUNCTION_TYPE:
if (name)
@@ -7449,7 +7444,6 @@ create_array_type_for_decl (tree name, tree type, tree size)
else
error ("creating array of functions");
return error_mark_node;
- break;
case REFERENCE_TYPE:
if (name)
@@ -7457,7 +7451,6 @@ create_array_type_for_decl (tree name, tree type, tree size)
else
error ("creating array of references");
return error_mark_node;
- break;
case METHOD_TYPE:
if (name)
@@ -7465,7 +7458,6 @@ create_array_type_for_decl (tree name, tree type, tree size)
else
error ("creating array of function members");
return error_mark_node;
- break;
default:
break;
@@ -8157,7 +8149,7 @@ grokdeclarator (const cp_declarator *declarator,
/* This was an error in C++98 (cv-qualifiers cannot be added to
a function type), but DR 295 makes the code well-formed by
dropping the extra qualifiers. */
- if (pedantic)
+ if (pedantic && cxx_dialect == cxx98)
{
tree bad_type = build_qualified_type (type, type_quals);
pedwarn (input_location, OPT_pedantic,
@@ -9054,6 +9046,7 @@ grokdeclarator (const cp_declarator *declarator,
/* The qualifiers on the function type become the qualifiers on
the non-static member function. */
memfn_quals |= cp_type_quals (type);
+ type_quals = TYPE_UNQUALIFIED;
}
}
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index 83164c86a7e..4f4f85b490d 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -1,6 +1,6 @@
/* Handle exceptional things in C++.
Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
+ 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
Contributed by Michael Tiemann <tiemann@cygnus.com>
Rewritten by Mike Stump <mrs@cygnus.com>, based upon an
@@ -417,7 +417,7 @@ tree
expand_start_catch_block (tree decl)
{
tree exp;
- tree type;
+ tree type, init;
if (! doing_eh (1))
return NULL_TREE;
@@ -450,10 +450,12 @@ expand_start_catch_block (tree decl)
/* Call __cxa_end_catch at the end of processing the exception. */
push_eh_cleanup (type);
+ init = do_begin_catch ();
+
/* If there's no decl at all, then all we need to do is make sure
to tell the runtime that we've begun handling the exception. */
- if (decl == NULL || decl == error_mark_node)
- finish_expr_stmt (do_begin_catch ());
+ if (decl == NULL || decl == error_mark_node || init == error_mark_node)
+ finish_expr_stmt (init);
/* If the C++ object needs constructing, we need to do that before
calling __cxa_begin_catch, so that std::uncaught_exception gets
@@ -463,7 +465,7 @@ expand_start_catch_block (tree decl)
{
exp = do_get_exception_ptr ();
initialize_handler_parm (decl, exp);
- finish_expr_stmt (do_begin_catch ());
+ finish_expr_stmt (init);
}
/* Otherwise the type uses a bitwise copy, and we don't have to worry
@@ -471,7 +473,6 @@ expand_start_catch_block (tree decl)
copy with the return value of __cxa_end_catch instead. */
else
{
- tree init = do_begin_catch ();
tree init_type = type;
/* Pointers are passed by values, everything else by reference. */
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index 13b0ed47af3..c14f5b7d844 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -1732,6 +1732,12 @@ write_type (tree type)
if (find_substitution (type))
return;
+ /* According to the C++ ABI, some library classes are passed the
+ same as the scalar type of their single member and use the same
+ mangling. */
+ if (TREE_CODE (type) == RECORD_TYPE && TYPE_TRANSPARENT_AGGR (type))
+ type = TREE_TYPE (first_field (type));
+
if (write_CV_qualifiers_for_type (type) > 0)
/* If TYPE was CV-qualified, we just wrote the qualifiers; now
mangle the unqualified type. The recursive call is needed here
@@ -2481,7 +2487,7 @@ write_expression (tree expr)
}
else
{
- int i;
+ int i, len;
const char *name;
/* When we bind a variable or function to a non-type template
@@ -2582,7 +2588,27 @@ write_expression (tree expr)
break;
default:
- for (i = 0; i < TREE_OPERAND_LENGTH (expr); ++i)
+ /* In the middle-end, some expressions have more operands than
+ they do in templates (and mangling). */
+ switch (code)
+ {
+ case PREINCREMENT_EXPR:
+ case PREDECREMENT_EXPR:
+ case POSTINCREMENT_EXPR:
+ case POSTDECREMENT_EXPR:
+ len = 1;
+ break;
+
+ case ARRAY_REF:
+ len = 2;
+ break;
+
+ default:
+ len = TREE_OPERAND_LENGTH (expr);
+ break;
+ }
+
+ for (i = 0; i < len; ++i)
{
tree operand = TREE_OPERAND (expr, i);
/* As a GNU extension, the middle operand of a
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index b2f9fd31f56..d9ba591b3f5 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -2368,6 +2368,18 @@ begin_class_definition (tree t, tree attributes)
error ("definition of %q#T inside template parameter list", t);
return error_mark_node;
}
+
+ /* According to the C++ ABI, decimal classes defined in ISO/IEC TR 24733
+ are passed the same as decimal scalar types. */
+ if (TREE_CODE (t) == RECORD_TYPE)
+ {
+ const char *n = type_as_string (t, TFF_CLASS_KEY_OR_ENUM);
+ if ((strcmp (n, "class std::decimal::decimal32") == 0)
+ || (strcmp (n, "class std::decimal::decimal64") == 0)
+ || (strcmp (n, "class std::decimal::decimal128") == 0))
+ TYPE_TRANSPARENT_AGGR (t) = 1;
+ }
+
/* A non-implicit typename comes from code like:
template <typename T> struct A {
@@ -4803,6 +4815,7 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
if (type && !type_uses_auto (type))
return type;
+ treat_as_dependent:
type = cxx_make_type (DECLTYPE_TYPE);
DECLTYPE_TYPE_EXPR (type) = expr;
DECLTYPE_TYPE_ID_EXPR_OR_MEMBER_ACCESS_P (type)
@@ -4930,6 +4943,11 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p)
&& (TREE_CODE (TREE_TYPE (target_type)) == FUNCTION_TYPE
|| TREE_CODE (TREE_TYPE (target_type)) == METHOD_TYPE))
type = TREE_TYPE (TREE_TYPE (target_type));
+ else if (processing_template_decl)
+ /* Within a template finish_call_expr doesn't resolve
+ CALL_EXPR_FN, so even though this decltype isn't really
+ dependent let's defer resolving it. */
+ goto treat_as_dependent;
else
sorry ("unable to determine the declared type of expression %<%E%>",
expr);
@@ -5402,6 +5420,9 @@ build_lambda_object (tree lambda_expr)
tree field = TREE_PURPOSE (node);
tree val = TREE_VALUE (node);
+ if (DECL_P (val))
+ mark_used (val);
+
/* Mere mortals can't copy arrays with aggregate initialization, so
do some magic to make it work here. */
if (TREE_CODE (TREE_TYPE (field)) == ARRAY_TYPE)
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 16e984e55a2..c8f211de384 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -4698,11 +4698,9 @@ number of arguments.
@findex current_function_pops_args
Your definition of the macro @code{RETURN_POPS_ARGS} decides which
functions pop their own arguments. @code{TARGET_ASM_FUNCTION_EPILOGUE}
-needs to know what was decided. The variable that is called
-@code{current_function_pops_args} is the number of bytes of its
-arguments that a function should pop. @xref{Scalar Return}.
-@c what is the "its arguments" in the above sentence referring to, pray
-@c tell? --mew 5feb93
+needs to know what was decided. The number of bytes of the current
+function's arguments that this function should pop is available in
+@code{crtl->args.pops_args}. @xref{Scalar Return}.
@end deftypefn
@itemize @bullet
@@ -5253,8 +5251,8 @@ provide alternate names for GCC's internal library functions if there
are ABI-mandated names that the compiler should provide.
@end defmac
-@findex init_one_libfunc
@findex set_optab_libfunc
+@findex init_one_libfunc
@deftypefn {Target Hook} void TARGET_INIT_LIBFUNCS (void)
This hook should declare additional library routines or rename
existing ones, using the functions @code{set_optab_libfunc} and
@@ -5412,12 +5410,12 @@ the maximum number that @code{TARGET_LEGITIMATE_ADDRESS_P} would ever
accept.
@end defmac
-@deftypefn {Target Hook} TARGET_LEGITIMATE_ADDRESS_P (enum machine_mode @var{mode}, rtx @var{x}, bool @var{strict})
+@deftypefn {Target Hook} bool TARGET_LEGITIMATE_ADDRESS_P (enum machine_mode @var{mode}, rtx @var{x}, bool @var{strict})
A function that returns whether @var{x} (an RTX) is a legitimate memory
address on the target machine for a memory operand of mode @var{mode}.
Legitimate addresses are defined in two variants: a strict variant and a
-non-strict one. The @code{strict} parameter chooses which variant is
+non-strict one. The @var{strict} parameter chooses which variant is
desired by the caller.
The strict variant is used in the reload pass. It must be defined so
@@ -5619,10 +5617,10 @@ of @var{x}.
The default version returns false for all constants.
@end deftypefn
-@deftypefn {Target Hook} tree TARGET_BUILTIN_RECIPROCAL (enum tree_code @var{fn}, bool @var{tm_fn}, bool @var{sqrt})
+@deftypefn {Target Hook} tree TARGET_BUILTIN_RECIPROCAL (unsigned @var{fn}, bool @var{md_fn}, bool @var{sqrt})
This hook should return the DECL of a function that implements reciprocal of
the builtin function with builtin function code @var{fn}, or
-@code{NULL_TREE} if such a function is not available. @var{tm_fn} is true
+@code{NULL_TREE} if such a function is not available. @var{md_fn} is true
when @var{fn} is a code of a machine-dependent builtin function. When
@var{sqrt} is true, additional optimizations that apply only to the reciprocal
of a square root function are performed, and only reciprocals of @code{sqrt}
@@ -6000,7 +5998,7 @@ like:
@end smallexample
@end defmac
-@deftypefn {Target Hook} bool TARGET_FIXED_CONDITION_CODE_REGS (unsigned int *, unsigned int *)
+@deftypefn {Target Hook} bool TARGET_FIXED_CONDITION_CODE_REGS (unsigned int *@var{p1}, unsigned int *@var{p2})
On targets which do not use @code{(cc0)}, and which use a hard
register rather than a pseudo-register to hold condition codes, the
regular CSE passes are often not able to identify cases in which the
@@ -6009,13 +6007,13 @@ small pass which optimizes such cases. This hook should return true
to enable this pass, and it should set the integers to which its
arguments point to the hard register numbers used for condition codes.
When there is only one such register, as is true on most systems, the
-integer pointed to by the second argument should be set to
+integer pointed to by @var{p2} should be set to
@code{INVALID_REGNUM}.
The default version of this hook returns false.
@end deftypefn
-@deftypefn {Target Hook} enum machine_mode TARGET_CC_MODES_COMPATIBLE (enum machine_mode, enum machine_mode)
+@deftypefn {Target Hook} {enum machine_mode} TARGET_CC_MODES_COMPATIBLE (enum machine_mode @var{m1}, enum machine_mode @var{m2})
On targets which use multiple condition code modes in class
@code{MODE_CC}, it is sometimes the case that a comparison can be
validly done in more than one mode. On such a system, define this
@@ -6422,7 +6420,7 @@ can issue this cycle; normally this is just @code{issue_rate}. See also
@samp{TARGET_SCHED_REORDER2}.
@end deftypefn
-@deftypefn {Target Hook} int TARGET_SCHED_REORDER2 (FILE *@var{file}, int @var{verbose}, rtx *@var{ready}, int *@var{n_ready}, @var{clock})
+@deftypefn {Target Hook} int TARGET_SCHED_REORDER2 (FILE *@var{file}, int @var{verbose}, rtx *@var{ready}, int *@var{n_readyp}, int @var{clock})
Like @samp{TARGET_SCHED_REORDER}, but called at a different time. That
function is called whenever the scheduler starts a new cycle. This one
is called once per iteration over a cycle, immediately after
@@ -6475,7 +6473,7 @@ This is the cleanup hook corresponding to @code{TARGET_SCHED_INIT_GLOBAL}.
@var{verbose} is the verbose level provided by @option{-fsched-verbose-@var{n}}.
@end deftypefn
-@deftypefn {Target Hook} int TARGET_SCHED_DFA_PRE_CYCLE_INSN (void)
+@deftypefn {Target Hook} rtx TARGET_SCHED_DFA_PRE_CYCLE_INSN (void)
The hook returns an RTL insn. The automaton state used in the
pipeline hazard recognizer is changed as if the insn were scheduled
when the new simulated processor cycle starts. Usage of the hook may
@@ -6489,7 +6487,7 @@ when the new simulated processor cycle starts.
The hook can be used to initialize data used by the previous hook.
@end deftypefn
-@deftypefn {Target Hook} int TARGET_SCHED_DFA_POST_CYCLE_INSN (void)
+@deftypefn {Target Hook} rtx TARGET_SCHED_DFA_POST_CYCLE_INSN (void)
The hook is analogous to @samp{TARGET_SCHED_DFA_PRE_CYCLE_INSN} but used
to changed the state as if the insn were scheduled when the new
simulated processor cycle finishes.
@@ -6500,14 +6498,14 @@ The hook is analogous to @samp{TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN} but
used to initialize data used by the previous hook.
@end deftypefn
-@deftypefn {Target Hook} void TARGET_SCHED_DFA_PRE_CYCLE_ADVANCE (void)
+@deftypefn {Target Hook} void TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE (void)
The hook to notify target that the current simulated cycle is about to finish.
The hook is analogous to @samp{TARGET_SCHED_DFA_PRE_CYCLE_INSN} but used
to change the state in more complicated situations - e.g., when advancing
state on a single insn is not enough.
@end deftypefn
-@deftypefn {Target Hook} void TARGET_SCHED_DFA_POST_CYCLE_ADVANCE (void)
+@deftypefn {Target Hook} void TARGET_SCHED_DFA_POST_ADVANCE_CYCLE (void)
The hook to notify target that new simulated cycle has just started.
The hook is analogous to @samp{TARGET_SCHED_DFA_POST_CYCLE_INSN} but used
to change the state in more complicated situations - e.g., when advancing
@@ -6543,11 +6541,11 @@ schedules to choose the best one.
The default is no multipass scheduling.
@end deftypefn
-@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx)
+@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx @var{insn})
This hook controls what insns from the ready insn queue will be
considered for the multipass insn scheduling. If the hook returns
-zero for insn passed as the parameter, the insn will be not chosen to
+zero for @var{insn}, the insn will be not chosen to
be issued.
The default is that any ready insns can be chosen to be issued.
@@ -6567,13 +6565,13 @@ correspondingly processor cycle on which the previous insn has been
issued and the current processor cycle.
@end deftypefn
-@deftypefn {Target Hook} bool TARGET_SCHED_IS_COSTLY_DEPENDENCE (struct dep_def *@var{_dep}, int @var{cost}, int @var{distance})
+@deftypefn {Target Hook} bool TARGET_SCHED_IS_COSTLY_DEPENDENCE (struct _dep *@var{_dep}, int @var{cost}, int @var{distance})
This hook is used to define which dependences are considered costly by
the target, so costly that it is not advisable to schedule the insns that
are involved in the dependence too close to one another. The parameters
to this hook are as follows: The first parameter @var{_dep} is the dependence
being evaluated. The second parameter @var{cost} is the cost of the
-dependence, and the third
+dependence as estimated by the scheduler, and the third
parameter @var{distance} is the distance in cycles between the two insns.
The hook returns @code{true} if considering the distance between the two
insns the dependence between them is considered costly by the target,
@@ -6585,7 +6583,7 @@ delays, however: (b) there's a better chance to predict the actual grouping
that will be formed, and (c) correctly emulating the grouping can be very
important. In such targets one may want to allow issuing dependent insns
closer to one another---i.e., closer than the dependence distance; however,
-not in cases of "costly dependences", which this hooks allows to define.
+not in cases of ``costly dependences'', which this hooks allows to define.
@end deftypefn
@deftypefn {Target Hook} void TARGET_SCHED_H_I_D_EXTENDED (void)
@@ -6601,35 +6599,11 @@ Return a pointer to a store large enough to hold target scheduling context.
@deftypefn {Target Hook} void TARGET_SCHED_INIT_SCHED_CONTEXT (void *@var{tc}, bool @var{clean_p})
Initialize store pointed to by @var{tc} to hold target scheduling context.
It @var{clean_p} is true then initialize @var{tc} as if scheduler is at the
-beginning of the block. Otherwise, make a copy of the current context in
-@var{tc}.
-@end deftypefn
-
-@deftypefn {Target Hook} void TARGET_SCHED_SET_SCHED_CONTEXT (void *@var{tc})
-Copy target scheduling context pointer to by @var{tc} to the current context.
-@end deftypefn
-
-@deftypefn {Target Hook} void TARGET_SCHED_CLEAR_SCHED_CONTEXT (void *@var{tc})
-Deallocate internal data in target scheduling context pointed to by @var{tc}.
-@end deftypefn
-
-@deftypefn {Target Hook} void TARGET_SCHED_FREE_SCHED_CONTEXT (void *@var{tc})
-Deallocate a store for target scheduling context pointed to by @var{tc}.
-@end deftypefn
-
-@deftypefn {Target Hook} {void *} TARGET_SCHED_ALLOC_SCHED_CONTEXT (void)
-Return a pointer to a store large enough to hold target scheduling context.
-@end deftypefn
-
-@deftypefn {Target Hook} void TARGET_SCHED_INIT_SCHED_CONTEXT (void *@var{tc}, bool @var{clean_p})
-Initialize store pointed to by @var{tc} to hold target scheduling context.
-It @var{clean_p} is true then initialize @var{tc} as if scheduler is at the
-beginning of the block. Otherwise, make a copy of the current context in
-@var{tc}.
+beginning of the block. Otherwise, copy the current context into @var{tc}.
@end deftypefn
@deftypefn {Target Hook} void TARGET_SCHED_SET_SCHED_CONTEXT (void *@var{tc})
-Copy target scheduling context pointer to by @var{tc} to the current context.
+Copy target scheduling context pointed to by @var{tc} to the current context.
@end deftypefn
@deftypefn {Target Hook} void TARGET_SCHED_CLEAR_SCHED_CONTEXT (void *@var{tc})
@@ -6651,13 +6625,13 @@ speculation. If the return value equals 1 then @var{new_pat} is assigned
the generated speculative pattern.
@end deftypefn
-@deftypefn {Target Hook} int TARGET_SCHED_NEEDS_BLOCK_P (rtx @var{insn})
+@deftypefn {Target Hook} bool TARGET_SCHED_NEEDS_BLOCK_P (int @var{dep_status})
This hook is called by the insn scheduler during generation of recovery code
-for @var{insn}. It should return nonzero, if the corresponding check
-instruction should branch to recovery code, or zero otherwise.
+for @var{insn}. It should return @code{true}, if the corresponding check
+instruction should branch to recovery code, or @code{false} otherwise.
@end deftypefn
-@deftypefn {Target Hook} rtx TARGET_SCHED_GEN_CHECK (rtx @var{insn}, rtx @var{label}, int @var{mutate_p})
+@deftypefn {Target Hook} rtx TARGET_SCHED_GEN_SPEC_CHECK (rtx @var{insn}, rtx @var{label}, int @var{mutate_p})
This hook is called by the insn scheduler to generate a pattern for recovery
check instruction. If @var{mutate_p} is zero, then @var{insn} is a
speculative instruction for which the check should be generated.
@@ -6679,14 +6653,10 @@ the hook is used to cancel data speculative insns when the ALAT table
is nearly full.
@end deftypefn
-@deftypefn {Target Hook} void TARGET_SCHED_SET_SCHED_FLAGS (unsigned int *@var{flags}, spec_info_t @var{spec_info})
+@deftypefn {Target Hook} void TARGET_SCHED_SET_SCHED_FLAGS (struct spec_info_def *@var{spec_info})
This hook is used by the insn scheduler to find out what features should be
-enabled/used. @var{flags} initially may have either the SCHED_RGN or SCHED_EBB
-bit set. This denotes the scheduler pass for which the data should be
-provided. The target backend should modify @var{flags} by modifying
-the bits corresponding to the following features: USE_DEPS_LIST, USE_GLAT,
-DETACH_LIFE_INFO, and DO_SPECULATION@. For the DO_SPECULATION feature
-an additional structure @var{spec_info} should be filled by the target.
+enabled/used.
+The structure *@var{spec_info} should be filled in by the target.
The structure describes speculation types that can be used in the scheduler.
@end deftypefn
@@ -6872,7 +6842,7 @@ any assembly code, and before calling any of the section-returning hooks
described below.
@end deftypefn
-@deftypefn {Target Hook} TARGET_ASM_RELOC_RW_MASK (void)
+@deftypefn {Target Hook} int TARGET_ASM_RELOC_RW_MASK (void)
Return a mask describing how relocations should be treated when
selecting sections. Bit 1 should be set if global relocations
should be placed in a read-write section; bit 0 should be set if
@@ -6940,7 +6910,7 @@ constants in @code{flag_pic} mode in @code{data_section} and everything
else in @code{readonly_data_section}.
@end deftypefn
-@deftypefn {Target Hook} void TARGET_MANGLE_DECL_ASSEMBLER_NAME (tree @var{decl}, tree @var{id})
+@deftypefn {Target Hook} tree TARGET_MANGLE_DECL_ASSEMBLER_NAME (tree @var{decl}, tree @var{id})
Define this hook if you need to postprocess the assembler name generated
by target-independent code. The @var{id} provided to this hook will be
the computed name (e.g., the macro @code{DECL_NAME} of the @var{decl} in C,
@@ -6988,7 +6958,7 @@ in @file{varasm.c}, sets a number of commonly-useful bits in
before overriding it.
@end deftypefn
-@deftypefn {Target Hook} const char *TARGET_STRIP_NAME_ENCODING (const char *name)
+@deftypefn {Target Hook} {const char *} TARGET_STRIP_NAME_ENCODING (const char *@var{name})
Decode @var{name} and return the real name part, sans
the characters that @code{TARGET_ENCODE_SECTION_INFO}
may have added.
@@ -7095,8 +7065,8 @@ instructions do.
@c prevent bad page break with this line
This describes the overall framework of an assembly file.
-@deftypefn {Target Hook} void TARGET_ASM_FILE_START ()
@findex default_file_start
+@deftypefn {Target Hook} void TARGET_ASM_FILE_START (void)
Output to @code{asm_out_file} any text which the assembler expects to
find at the beginning of a file. The default behavior is controlled
by two flags, documented below. Unless your target's assembler is
@@ -7184,26 +7154,24 @@ A C statement to output something to the assembler file to handle a
macro is not defined, nothing is output for a @samp{#ident} directive.
@end defmac
-@deftypefn {Target Hook} void TARGET_ASM_NAMED_SECTION (const char *@var{name}, unsigned int @var{flags}, unsigned int @var{align})
+@deftypefn {Target Hook} void TARGET_ASM_NAMED_SECTION (const char *@var{name}, unsigned int @var{flags}, tree @var{decl})
Output assembly directives to switch to section @var{name}. The section
should have attributes as specified by @var{flags}, which is a bit mask
-of the @code{SECTION_*} flags defined in @file{output.h}. If @var{align}
-is nonzero, it contains an alignment in bytes to be used for the section,
-otherwise some target default should be used. Only targets that must
-specify an alignment within the section directive need pay attention to
-@var{align} -- we will still use @code{ASM_OUTPUT_ALIGN}.
+of the @code{SECTION_*} flags defined in @file{output.h}. If @var{decl}
+is non-NULL, it is the @code{VAR_DECL} or @code{FUNCTION_DECL} with which
+this section is associated.
@end deftypefn
-@deftypefn {Target Hook} bool TARGET_HAVE_NAMED_SECTIONS
+@deftypevr {Target Hook} bool TARGET_HAVE_NAMED_SECTIONS
This flag is true if the target supports @code{TARGET_ASM_NAMED_SECTION}.
-@end deftypefn
+@end deftypevr
@anchor{TARGET_HAVE_SWITCHABLE_BSS_SECTIONS}
-@deftypefn {Target Hook} bool TARGET_HAVE_SWITCHABLE_BSS_SECTIONS
+@deftypevr {Target Hook} bool TARGET_HAVE_SWITCHABLE_BSS_SECTIONS
This flag is true if we can create zeroed data by switching to a BSS
section and then using @code{ASM_OUTPUT_SKIP} to allocate the space.
This is true on most ELF targets.
-@end deftypefn
+@end deftypevr
@deftypefn {Target Hook} {unsigned int} TARGET_SECTION_TYPE_FLAGS (tree @var{decl}, const char *@var{name}, int @var{reloc})
Choose a set of section attributes for use by @code{TARGET_ASM_NAMED_SECTION}
@@ -7263,11 +7231,11 @@ provided by the @code{TARGET_ASM_RECORD_GCC_SWITCHES_SECTION} target
hook.
@end deftypefn
-@deftypefn {Target Hook} {const char *} TARGET_ASM_RECORD_GCC_SWITCHES_SECTION
+@deftypevr {Target Hook} {const char *} TARGET_ASM_RECORD_GCC_SWITCHES_SECTION
This is the name of the section that will be created by the example
ELF implementation of the @code{TARGET_ASM_RECORD_GCC_SWITCHES} target
hook.
-@end deftypefn
+@end deftypevr
@need 2000
@node Data Output
@@ -7802,7 +7770,7 @@ setting the @code{DECL_ONE_ONLY} flag is enough to mark a declaration to
be emitted as one-only.
@end defmac
-@deftypefn {Target Hook} void TARGET_ASM_ASSEMBLE_VISIBILITY (tree @var{decl}, const char *@var{visibility})
+@deftypefn {Target Hook} void TARGET_ASM_ASSEMBLE_VISIBILITY (tree @var{decl}, int @var{visibility})
This target hook is a function to output to @var{asm_out_file} some
commands that will make the symbol(s) associated with @var{decl} have
hidden, protected or internal visibility as specified by @var{visibility}.
@@ -7844,10 +7812,10 @@ pseudo-op to declare a library function name external. The name of the
library function is given by @var{symref}, which is a @code{symbol_ref}.
@end deftypefn
-@deftypefn {Target Hook} void TARGET_ASM_MARK_DECL_PRESERVED (tree @var{decl})
+@deftypefn {Target Hook} void TARGET_ASM_MARK_DECL_PRESERVED (const char *@var{symbol})
This target hook is a function to output to @var{asm_out_file} an assembler
-directive to annotate used symbol. Darwin target use .no_dead_code_strip
-directive.
+directive to annotate @var{symbol} as used. The Darwin target uses the
+.no_dead_code_strip directive.
@end deftypefn
@defmac ASM_OUTPUT_LABELREF (@var{stream}, @var{name})
@@ -8215,11 +8183,11 @@ of objects. If zero, the compiler will issue an error message upon
encountering an @code{init_priority} attribute.
@end defmac
-@deftypefn {Target Hook} bool TARGET_HAVE_CTORS_DTORS
+@deftypevr {Target Hook} bool TARGET_HAVE_CTORS_DTORS
This value is true if the target supports some ``native'' method of
collecting constructors and destructors to be run at startup and exit.
It is false if we must use @command{collect2}.
-@end deftypefn
+@end deftypevr
@deftypefn {Target Hook} void TARGET_ASM_CONSTRUCTOR (rtx @var{symbol}, int @var{priority})
If defined, a function that outputs assembler code to arrange to call
@@ -8361,7 +8329,7 @@ writing conditional output routines in those patterns.
If this macro is not defined, it is equivalent to a null statement.
@end defmac
-@deftypefn {Target Hook} void TARGET_ASM_FINAL_POSTSCAN_INSN (FILE *@var{FILE}, rtx @var{insn}, rtx *@var{opvec}, int @var{noperands})
+@deftypefn {Target Hook} void TARGET_ASM_FINAL_POSTSCAN_INSN (FILE *@var{file}, rtx @var{insn}, rtx *@var{opvec}, int @var{noperands})
If defined, this target hook is a function which is executed just after the
output of assembler code for @var{insn}, to change the mode of the assembler
if necessary.
@@ -8579,7 +8547,7 @@ If this macro is not defined, nothing special is output at the end of
the jump-table.
@end defmac
-@deftypefn {Target Hook} void TARGET_ASM_EMIT_UNWIND_LABEL (@var{stream}, @var{decl}, @var{for_eh}, @var{empty})
+@deftypefn {Target Hook} void TARGET_ASM_EMIT_UNWIND_LABEL (FILE *@var{stream}, tree @var{decl}, int @var{for_eh}, int @var{empty})
This target hook emits a label at the beginning of each FDE@. It
should be defined on targets where FDEs need special labels, and it
should write the appropriate label, for the FDE associated with the
@@ -8591,7 +8559,7 @@ true if this is a placeholder label for an omitted FDE@.
The default is that FDEs are not given nonlocal labels.
@end deftypefn
-@deftypefn {Target Hook} void TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL (@var{stream})
+@deftypefn {Target Hook} void TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL (FILE *@var{stream})
This target hook emits a label at the beginning of the exception table.
It should be defined on targets where it is desirable for the table
to be broken up according to function.
@@ -8599,8 +8567,8 @@ to be broken up according to function.
The default is that no label is emitted.
@end deftypefn
-@deftypefn {Target Hook} void TARGET_UNWIND_EMIT (FILE * @var{stream}, rtx @var{insn})
-This target hook emits and assembly directives required to unwind the
+@deftypefn {Target Hook} void TARGET_UNWIND_EMIT (FILE *@var{stream}, rtx @var{insn})
+This target hook emits assembly directives required to unwind the
given instruction. This is only used when TARGET_UNWIND_INFO is set.
@end deftypefn
@@ -8725,12 +8693,12 @@ if the reference was output. Returning @code{false} will cause the
reference to be output using the normal Dwarf2 routines.
@end deftypefn
-@deftypefn {Target Hook} bool TARGET_ARM_EABI_UNWINDER
-This hook should be set to @code{true} on targets that use an ARM EABI
+@deftypevr {Target Hook} bool TARGET_ARM_EABI_UNWINDER
+This flag should be set to @code{true} on targets that use an ARM EABI
based unwinding library, and @code{false} on other targets. This effects
the format of unwinding tables, and how the unwinder in entered after
running a cleanup. The default is @code{false}.
-@end deftypefn
+@end deftypevr
@node Alignment Output
@subsection Assembler Commands for Alignment
@@ -9207,7 +9175,7 @@ is used on some systems to avoid garbage collecting a DWARF table which
is referenced by a function.
@end defmac
-@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_DWARF_DTPREL (FILE *@var{FILE}, int @var{size}, rtx @var{x})
+@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_DWARF_DTPREL (FILE *@var{file}, int @var{size}, rtx @var{x})
If defined, this target hook is a function which outputs a DTP-relative
reference to the given TLS symbol of the specified size.
@end deftypefn
@@ -9485,7 +9453,7 @@ supposed always to be compatible.
@deftypefn {Target Hook} void TARGET_SET_DEFAULT_TYPE_ATTRIBUTES (tree @var{type})
If defined, this target hook is a function which assigns default attributes to
-newly defined @var{type}.
+the newly defined @var{type}.
@end deftypefn
@deftypefn {Target Hook} tree TARGET_MERGE_TYPE_ATTRIBUTES (tree @var{type1}, tree @var{type2})
@@ -9555,7 +9523,7 @@ attributes, @code{false} otherwise. By default, if a function has a
target specific attribute attached to it, it will not be inlined.
@end deftypefn
-@deftypefn {Target Hook} bool TARGET_VALID_OPTION_ATTRIBUTE_P (tree @var{fndecl}, tree @var{name}, tree @var{args}, int @var{flags})
+@deftypefn {Target Hook} bool TARGET_OPTION_VALID_ATTRIBUTE_P (tree @var{fndecl}, tree @var{name}, tree @var{args}, int @var{flags})
This hook is called to parse the @code{attribute(option("..."))}, and
it allows the function to set different target machine compile time
options for the current function that might be different than the
@@ -9580,7 +9548,7 @@ information in the @var{struct cl_target_option} structure for
function specific options.
@end deftypefn
-@deftypefn {Target Hook} void TARGET_OPTION_PRINT (struct cl_target_option *@var{ptr})
+@deftypefn {Target Hook} void TARGET_OPTION_PRINT (FILE *@var{file}, int @var{indent}, struct cl_target_option *@var{ptr})
This hook is called to print any additional target specific
information in the @var{struct cl_target_option} structure for
function specific options.
@@ -9722,8 +9690,9 @@ Default: empty.
@section Parameters for Precompiled Header Validity Checking
@cindex parameters, precompiled headers
-@deftypefn {Target Hook} void *TARGET_GET_PCH_VALIDITY (size_t *@var{sz})
-This hook returns the data needed by @code{TARGET_PCH_VALID_P} and sets
+@deftypefn {Target Hook} {void *} TARGET_GET_PCH_VALIDITY (size_t *@var{sz})
+This hook returns a pointer to the data needed by
+@code{TARGET_PCH_VALID_P} and sets
@samp{*@var{sz}} to the size of the data in bytes.
@end deftypefn
@@ -9762,8 +9731,8 @@ default is long_long_integer_type_node.
@deftypefn {Target Hook} bool TARGET_CXX_GUARD_MASK_BIT (void)
This hook determines how guard variables are used. It should return
-@code{false} (the default) if first byte should be used. A return value of
-@code{true} indicates the least significant bit should be used.
+@code{false} (the default) if the first byte should be used. A return value of
+@code{true} indicates that only the least significant bit should be used.
@end deftypefn
@deftypefn {Target Hook} tree TARGET_CXX_GET_COOKIE_SIZE (tree @var{type})
@@ -10103,7 +10072,7 @@ You need not define this macro if it would always have the value of zero.
@end defmac
@anchor{TARGET_SHIFT_TRUNCATION_MASK}
-@deftypefn {Target Hook} int TARGET_SHIFT_TRUNCATION_MASK (enum machine_mode @var{mode})
+@deftypefn {Target Hook} {unsigned HOST_WIDE_INT} TARGET_SHIFT_TRUNCATION_MASK (enum machine_mode @var{mode})
This function describes how the standard shift patterns for @var{mode}
deal with shifts by negative amounts or by more than the width of the mode.
@xref{shift patterns}.
@@ -10152,7 +10121,7 @@ otherwise. (Currently, none of the targets use zero-extended
representation this way so unlike @code{LOAD_EXTEND_OP},
@code{TARGET_MODE_REP_EXTENDED} is expected to return either
@code{SIGN_EXTEND} or @code{UNKNOWN}. Also no target extends
-@var{mode} to @var{mode_rep} so that @var{mode_rep} is not the next
+@var{mode} to @var{rep_mode} so that @var{rep_mode} is not the next
widest integral mode and currently we take advantage of this fact.)
Similarly to @code{LOAD_EXTEND_OP} you may return a non-@code{UNKNOWN}
@@ -10466,6 +10435,10 @@ Define this macro, as well as
arguments of @samp{#pragma pack}.
@end defmac
+@deftypevr {Target Hook} bool TARGET_HANDLE_PRAGMA_EXTERN_PREFIX
+True if @code{#pragma extern_prefix} is to be supported.
+@end deftypevr
+
@defmac TARGET_DEFAULT_PACK_STRUCT
If your target requires a structure packing default other than 0 (meaning
the machine default), define this macro to the necessary value (in bytes).
@@ -10655,7 +10628,7 @@ only language front ends that use those two functions will call
@samp{TARGET_INIT_BUILTINS}.
@end deftypefn
-@deftypefn {Target Hook} tree TARGET_BUILTIN_FUNCTION (unsigned @var{code}, bool @var{initialize_p})
+@deftypefn {Target Hook} tree TARGET_BUILTIN_DECL (unsigned @var{code}, bool @var{initialize_p})
Define this hook if you have any machine-specific built-in functions
that need to be defined. It should be a function that returns the
builtin function declaration for the builtin function code @var{code}.
@@ -10699,10 +10672,11 @@ simplified expression for the call's result. If @var{ignore} is true
the value will be ignored.
@end deftypefn
-@deftypefn {Target Hook} const char * TARGET_INVALID_WITHIN_DOLOOP (rtx @var{insn})
+@deftypefn {Target Hook} {const char *} TARGET_INVALID_WITHIN_DOLOOP (const_rtx @var{insn})
Take an instruction in @var{insn} and return NULL if it is valid within a
-low-overhead loop, otherwise return a string why doloop could not be applied.
+low-overhead loop, otherwise return a string explaining why doloop
+could not be applied.
Many targets use special registers for low-overhead looping. For any
instruction that clobbers these this function should return a string indicating
@@ -10722,7 +10696,7 @@ filling of delay slots can result in branches being redirected, and this
may in turn cause a branch offset to overflow.
@end defmac
-@deftypefn {Target Hook} bool TARGET_COMMUTATIVE_P (rtx @var{x}, @var{outer_code})
+@deftypefn {Target Hook} bool TARGET_COMMUTATIVE_P (const_rtx @var{x}, int @var{outer_code})
This target hook returns @code{true} if @var{x} is considered to be commutative.
Usually, this is just COMMUTATIVE_P (@var{x}), but the HP PA doesn't consider
PLUS to be commutative inside a MEM@. @var{outer_code} is the rtx code
@@ -10775,6 +10749,8 @@ GCC sets @code{cfun} to a dummy function context during initialization of
some parts of the back end. The hook function is not invoked in this
situation; you need not worry about the hook being invoked recursively,
or when the back end is in a partially-initialized state.
+@code{cfun} might be @code{NULL} to indicate processing at top level,
+outside of any function scope.
@end deftypefn
@defmac TARGET_OBJECT_SUFFIX
@@ -10829,7 +10805,7 @@ cannot_modify_jumps_past_reload_p ()
@end smallexample
@end deftypefn
-@deftypefn {Target Hook} int TARGET_BRANCH_TARGET_REGISTER_CLASS (void)
+@deftypefn {Target Hook} {enum reg_class} TARGET_BRANCH_TARGET_REGISTER_CLASS (void)
This target hook returns a register class for which branch target register
optimizations should be applied. All registers in this class should be
usable interchangeably. After reload, registers in this class will be
@@ -10889,13 +10865,13 @@ systems, this is used for Framework includes, which have semantics
that are different from @option{-I}.
@end deftypefn
-@deftypefn {Target Hook} bool TARGET_USE_LOCAL_THUNK_ALIAS_P (tree @var{fndecl})
-This target hook returns @code{true} if it is safe to use a local alias
+@defmac bool TARGET_USE_LOCAL_THUNK_ALIAS_P (tree @var{fndecl})
+This target macro returns @code{true} if it is safe to use a local alias
for a virtual function @var{fndecl} when constructing thunks,
-@code{false} otherwise. By default, the hook returns @code{true} for all
+@code{false} otherwise. By default, the macro returns @code{true} for all
functions, if a target supports aliases (i.e.@: defines
@code{ASM_OUTPUT_DEF}), @code{false} otherwise,
-@end deftypefn
+@end defmac
@defmac TARGET_FORMAT_TYPES
If defined, this macro is the name of a global variable containing
@@ -10926,7 +10902,7 @@ routine for target specific customizations of the system printf
and scanf formatter settings.
@end defmac
-@deftypefn {Target Hook} bool TARGET_RELAXED_ORDERING
+@deftypevr {Target Hook} bool TARGET_RELAXED_ORDERING
If set to @code{true}, means that the target's memory model does not
guarantee that loads which do not depend on one another will access
main memory in the order of the instruction stream; if ordering is
@@ -10934,7 +10910,7 @@ important, an explicit memory barrier must be used. This is true of
many recent processors which implement a policy of ``relaxed,''
``weak,'' or ``release'' memory consistency, such as Alpha, PowerPC,
and ia64. The default is @code{false}.
-@end deftypefn
+@end deftypevr
@deftypefn {Target Hook} {const char *} TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN (const_tree @var{typelist}, const_tree @var{funcdecl}, const_tree @var{val})
If defined, this macro returns the diagnostic message when it is
@@ -11018,9 +10994,10 @@ necessary.
@end deftypefn
@deftypefn {Target Hook} rtx TARGET_GET_DRAP_RTX (void)
-Define this macro to an rtx for Dynamic Realign Argument Pointer if a
+This hook should return an rtx for Dynamic Realign Argument Pointer (DRAP) if a
different argument pointer register is needed to access the function's
-argument list when stack is aligned.
+argument list due to stack realignment. Return @code{NULL} if no DRAP
+is needed.
@end deftypefn
@deftypefn {Target Hook} bool TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS (void)
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 02c0afd1171..0a6045a4a87 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -1,6 +1,6 @@
/* Output Dwarf2 format symbol table information from GCC.
Copyright (C) 1992, 1993, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
- 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
Contributed by Gary Funck (gary@intrepid.com).
Derived from DWARF 1 implementation of Ron Guilmette (rfg@monkeys.com).
Extensively modified by Jason Merrill (jason@cygnus.com).
@@ -13129,7 +13129,7 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
op = DW_OP_div;
goto do_binop;
- case MOD:
+ case UMOD:
op = DW_OP_mod;
goto do_binop;
@@ -13171,6 +13171,24 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
add_loc_descr (&mem_loc_result, new_loc_descr (op, 0, 0));
break;
+ case MOD:
+ op0 = mem_loc_descriptor (XEXP (rtl, 0), mode,
+ VAR_INIT_STATUS_INITIALIZED);
+ op1 = mem_loc_descriptor (XEXP (rtl, 1), mode,
+ VAR_INIT_STATUS_INITIALIZED);
+
+ if (op0 == 0 || op1 == 0)
+ break;
+
+ mem_loc_result = op0;
+ add_loc_descr (&mem_loc_result, op1);
+ add_loc_descr (&mem_loc_result, new_loc_descr (DW_OP_over, 0, 0));
+ add_loc_descr (&mem_loc_result, new_loc_descr (DW_OP_over, 0, 0));
+ add_loc_descr (&mem_loc_result, new_loc_descr (DW_OP_div, 0, 0));
+ add_loc_descr (&mem_loc_result, new_loc_descr (DW_OP_mul, 0, 0));
+ add_loc_descr (&mem_loc_result, new_loc_descr (DW_OP_minus, 0, 0));
+ break;
+
case NOT:
op = DW_OP_not;
goto do_unop;
@@ -13442,8 +13460,18 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
case US_MULT:
case SS_DIV:
case US_DIV:
+ case SS_PLUS:
+ case US_PLUS:
+ case SS_MINUS:
+ case US_MINUS:
+ case SS_NEG:
+ case US_NEG:
+ case SS_ABS:
+ case SS_ASHIFT:
+ case US_ASHIFT:
+ case SS_TRUNCATE:
+ case US_TRUNCATE:
case UDIV:
- case UMOD:
case UNORDERED:
case ORDERED:
case UNEQ:
@@ -14497,6 +14525,8 @@ loc_list_from_tree (tree loc, int want_address)
case CEIL_DIV_EXPR:
case ROUND_DIV_EXPR:
case TRUNC_DIV_EXPR:
+ if (TYPE_UNSIGNED (TREE_TYPE (loc)))
+ return 0;
op = DW_OP_div;
goto do_binop;
@@ -14508,8 +14538,25 @@ loc_list_from_tree (tree loc, int want_address)
case CEIL_MOD_EXPR:
case ROUND_MOD_EXPR:
case TRUNC_MOD_EXPR:
- op = DW_OP_mod;
- goto do_binop;
+ if (TYPE_UNSIGNED (TREE_TYPE (loc)))
+ {
+ op = DW_OP_mod;
+ goto do_binop;
+ }
+ list_ret = loc_list_from_tree (TREE_OPERAND (loc, 0), 0);
+ list_ret1 = loc_list_from_tree (TREE_OPERAND (loc, 1), 0);
+ if (list_ret == 0 || list_ret1 == 0)
+ return 0;
+
+ add_loc_list (&list_ret, list_ret1);
+ if (list_ret == 0)
+ return 0;
+ add_loc_descr_to_each (list_ret, new_loc_descr (DW_OP_over, 0, 0));
+ add_loc_descr_to_each (list_ret, new_loc_descr (DW_OP_over, 0, 0));
+ add_loc_descr_to_each (list_ret, new_loc_descr (DW_OP_div, 0, 0));
+ add_loc_descr_to_each (list_ret, new_loc_descr (DW_OP_mul, 0, 0));
+ add_loc_descr_to_each (list_ret, new_loc_descr (DW_OP_minus, 0, 0));
+ break;
case MULT_EXPR:
op = DW_OP_mul;
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index af85555a2e7..8c8e08038ca 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,52 @@
+2010-01-20 Joern Rennecke <amylaar@spamcop.net>
+
+ * module.c (mio_f2k_derived): Use enumerator as initializer of
+ enum variable.
+
+ PR bootstrap/42812
+ * gfortran.h (struct gfc_namespace) <resolved>: Change to signed
+ bitfield of width 2.
+
+2010-01-19 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/42804
+ * resolve.c (extract_compcall_passed_object): Set locus for
+ passed-object argument.
+ (extract_ppc_passed_object): Set locus and correctly remove PPC
+ reference.
+
+2010-01-19 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/42783
+ * trans-decl.c (add_argument_checking): Do not use the backend
+ decl directly to test for the presence of an optional dummy
+ argument. Use gfc_conv_expr_present, remembering to set the
+ symbol referenced.
+
+ PR fortran/42772
+ * trans-decl.c (gfc_generate_function_code): Small white space
+ changes. If 'recurcheckvar' is NULL do not try to reset it.
+
+2010-01-19 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/42545
+ * resolve.c (resolve_fl_derived): Set the accessibility of the parent
+ component for extended types.
+ * symbol.c (gfc_find_component): Remove a wrongly-worded error message
+ and take care of parent component accessibility.
+
+2010-01-17 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/42677
+ * gfortran.h (symbol_attribute): Remove 'ambiguous_interfaces'.
+ * interface.c (check_interface1): Move a warning message here from
+ resolve_fl_procedure.
+ (check_sym_interfaces): Removed 'attr.ambiguous_interfaces'.
+ * module.c (read_module): Remove call to gfc_check_interfaces, since
+ this comes too early here.
+ * resolve.c (resolve_fl_procedure): Move warning message to
+ check_interface1.
+
2010-01-14 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/42684
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index 345a7015dce..dd86c1554b0 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -714,9 +714,6 @@ typedef struct
modification of type or type parameters is permitted. */
unsigned referenced:1;
- /* Set if the symbol has ambiguous interfaces. */
- unsigned ambiguous_interfaces:1;
-
/* Set if this is the symbol for the main program. */
unsigned is_main_program:1;
@@ -1375,8 +1372,9 @@ typedef struct gfc_namespace
/* Set to 1 if namespace is an interface body with "IMPORT" used. */
unsigned has_import_set:1;
- /* Set to 1 if resolved has been called for this namespace. */
- unsigned resolved:1;
+ /* Set to 1 if resolved has been called for this namespace.
+ Holds -1 during resolution. */
+ signed resolved:2;
/* Set to 1 if code has been generated for this namespace. */
unsigned translated:1;
diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c
index 2a5ece1c465..f27d75c333f 100644
--- a/gcc/fortran/interface.c
+++ b/gcc/fortran/interface.c
@@ -1132,16 +1132,16 @@ check_interface1 (gfc_interface *p, gfc_interface *q0,
NULL, 0))
{
if (referenced)
- {
- gfc_error ("Ambiguous interfaces '%s' and '%s' in %s at %L",
- p->sym->name, q->sym->name, interface_name,
- &p->where);
- }
-
- if (!p->sym->attr.use_assoc && q->sym->attr.use_assoc)
+ gfc_error ("Ambiguous interfaces '%s' and '%s' in %s at %L",
+ p->sym->name, q->sym->name, interface_name,
+ &p->where);
+ else if (!p->sym->attr.use_assoc && q->sym->attr.use_assoc)
gfc_warning ("Ambiguous interfaces '%s' and '%s' in %s at %L",
p->sym->name, q->sym->name, interface_name,
&p->where);
+ else
+ gfc_warning ("Although not referenced, '%s' has ambiguous "
+ "interfaces at %L", interface_name, &p->where);
return 1;
}
}
@@ -1157,7 +1157,6 @@ static void
check_sym_interfaces (gfc_symbol *sym)
{
char interface_name[100];
- bool k;
gfc_interface *p;
if (sym->ns != gfc_current_ns)
@@ -1184,9 +1183,8 @@ check_sym_interfaces (gfc_symbol *sym)
/* Originally, this test was applied to host interfaces too;
this is incorrect since host associated symbols, from any
source, cannot be ambiguous with local symbols. */
- k = sym->attr.referenced || !sym->attr.use_assoc;
- if (check_interface1 (sym->generic, sym->generic, 1, interface_name, k))
- sym->attr.ambiguous_interfaces = 1;
+ check_interface1 (sym->generic, sym->generic, 1, interface_name,
+ sym->attr.referenced || !sym->attr.use_assoc);
}
}
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index 667bab83c49..c72cac141ba 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -3474,7 +3474,7 @@ mio_f2k_derived (gfc_namespace *f2k)
else
while (peek_atom () != ATOM_RPAREN)
{
- gfc_intrinsic_op op = 0; /* Silence GCC. */
+ gfc_intrinsic_op op = GFC_INTRINSIC_BEGIN; /* Silence GCC. */
mio_lparen ();
mio_intrinsic_op (&op);
@@ -4482,8 +4482,6 @@ read_module (void)
module_name);
}
- gfc_check_interfaces (gfc_current_ns);
-
/* Now we should be in a position to fill f2k_derived with derived type
extensions, since everything has been loaded. */
set_module_locus (&extensions);
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 9212521b2f3..fe98b7e0a54 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -4777,6 +4777,7 @@ extract_compcall_passed_object (gfc_expr* e)
po->expr_type = EXPR_VARIABLE;
po->symtree = e->symtree;
po->ref = gfc_copy_ref (e->ref);
+ po->where = e->where;
}
if (gfc_resolve_expr (po) == FAILURE)
@@ -4831,11 +4832,12 @@ extract_ppc_passed_object (gfc_expr *e)
po->expr_type = EXPR_VARIABLE;
po->symtree = e->symtree;
po->ref = gfc_copy_ref (e->ref);
+ po->where = e->where;
/* Remove PPC reference. */
ref = &po->ref;
while ((*ref)->next)
- (*ref) = (*ref)->next;
+ ref = &(*ref)->next;
gfc_free_ref_list (*ref);
*ref = NULL;
@@ -9077,10 +9079,6 @@ resolve_fl_procedure (gfc_symbol *sym, int mp_flag)
{
gfc_formal_arglist *arg;
- if (sym->attr.ambiguous_interfaces && !sym->attr.referenced)
- gfc_warning ("Although not referenced, '%s' at %L has ambiguous "
- "interfaces", sym->name, &sym->declared_at);
-
if (sym->attr.function
&& resolve_fl_var_and_proc (sym, mp_flag) == FAILURE)
return FAILURE;
@@ -10498,6 +10496,12 @@ resolve_fl_derived (gfc_symbol *sym)
&& resolve_typespec_used (&c->ts, &c->loc, c->name) == FAILURE)
return FAILURE;
+ /* If this type is an extension, set the accessibility of the parent
+ component. */
+ if (super_type && c == sym->components
+ && strcmp (super_type->name, c->name) == 0)
+ c->attr.access = super_type->attr.access;
+
/* If this type is an extension, see if this component has the same name
as an inherited type-bound procedure. */
if (super_type
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index a5787de04ab..e363c5e2703 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -1958,23 +1958,17 @@ gfc_find_component (gfc_symbol *sym, const char *name,
else if (sym->attr.use_assoc && !noaccess)
{
- if (p->attr.access == ACCESS_PRIVATE)
+ bool is_parent_comp = sym->attr.extension && (p == sym->components);
+ if (p->attr.access == ACCESS_PRIVATE ||
+ (p->attr.access != ACCESS_PUBLIC
+ && sym->component_access == ACCESS_PRIVATE
+ && !is_parent_comp))
{
if (!silent)
gfc_error ("Component '%s' at %C is a PRIVATE component of '%s'",
name, sym->name);
return NULL;
}
-
- /* If there were components given and all components are private, error
- out at this place. */
- if (p->attr.access != ACCESS_PUBLIC && sym->component_access == ACCESS_PRIVATE)
- {
- if (!silent)
- gfc_error ("All components of '%s' are PRIVATE in structure"
- " constructor at %C", sym->name);
- return NULL;
- }
}
return p;
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 612c6f61296..062310af6af 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -3999,8 +3999,9 @@ add_argument_checking (stmtblock_t *block, gfc_symbol *sym)
cl->passed_length,
fold_convert (gfc_charlen_type_node,
integer_zero_node));
- not_absent = fold_build2 (NE_EXPR, boolean_type_node,
- fsym->backend_decl, null_pointer_node);
+ /* The symbol needs to be referenced for gfc_get_symbol_decl. */
+ fsym->attr.referenced = 1;
+ not_absent = gfc_conv_expr_present (fsym);
absent_failed = fold_build2 (TRUTH_OR_EXPR, boolean_type_node,
not_0length, not_absent);
@@ -4256,7 +4257,7 @@ gfc_generate_function_code (gfc_namespace * ns)
stmtblock_t block;
stmtblock_t body;
tree result;
- tree recurcheckvar = NULL;
+ tree recurcheckvar = NULL_TREE;
gfc_symbol *sym;
int rank;
bool is_recursive;
@@ -4330,8 +4331,9 @@ gfc_generate_function_code (gfc_namespace * ns)
is_recursive = sym->attr.recursive
|| (sym->attr.entry_master
&& sym->ns->entries->sym->attr.recursive);
- if ((gfc_option.rtcheck & GFC_RTCHECK_RECURSION) && !is_recursive
- && !gfc_option.flag_recursive)
+ if ((gfc_option.rtcheck & GFC_RTCHECK_RECURSION)
+ && !is_recursive
+ && !gfc_option.flag_recursive)
{
char * msg;
@@ -4348,7 +4350,7 @@ gfc_generate_function_code (gfc_namespace * ns)
}
if (TREE_TYPE (DECL_RESULT (fndecl)) != void_type_node
- && sym->attr.subroutine)
+ && sym->attr.subroutine)
{
tree alternate_return;
alternate_return = gfc_get_fake_result_decl (sym, 0);
@@ -4395,8 +4397,9 @@ gfc_generate_function_code (gfc_namespace * ns)
else
result = sym->result->backend_decl;
- if (result != NULL_TREE && sym->attr.function
- && !sym->attr.pointer)
+ if (result != NULL_TREE
+ && sym->attr.function
+ && !sym->attr.pointer)
{
if (sym->ts.type == BT_DERIVED
&& sym->ts.u.derived->attr.alloc_comp)
@@ -4413,8 +4416,10 @@ gfc_generate_function_code (gfc_namespace * ns)
gfc_add_expr_to_block (&block, tmp);
/* Reset recursion-check variable. */
- if ((gfc_option.rtcheck & GFC_RTCHECK_RECURSION) && !is_recursive
- && !gfc_option.flag_openmp)
+ if ((gfc_option.rtcheck & GFC_RTCHECK_RECURSION)
+ && !is_recursive
+ && !gfc_option.flag_openmp
+ && recurcheckvar != NULL_TREE)
{
gfc_add_modify (&block, recurcheckvar, boolean_false_node);
recurcheckvar = NULL;
@@ -4445,12 +4450,14 @@ gfc_generate_function_code (gfc_namespace * ns)
{
gfc_add_expr_to_block (&block, tmp);
/* Reset recursion-check variable. */
- if ((gfc_option.rtcheck & GFC_RTCHECK_RECURSION) && !is_recursive
- && !gfc_option.flag_openmp)
- {
- gfc_add_modify (&block, recurcheckvar, boolean_false_node);
- recurcheckvar = NULL;
- }
+ if ((gfc_option.rtcheck & GFC_RTCHECK_RECURSION)
+ && !is_recursive
+ && !gfc_option.flag_openmp
+ && recurcheckvar != NULL_TREE)
+ {
+ gfc_add_modify (&block, recurcheckvar, boolean_false_node);
+ recurcheckvar = NULL_TREE;
+ }
}
diff --git a/gcc/function.c b/gcc/function.c
index ac5ba94f9d1..f85f780e916 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -1890,6 +1890,11 @@ aggregate_value_p (const_tree exp, const_tree fntype)
if (TREE_CODE (type) == VOID_TYPE)
return 0;
+ /* If a record should be passed the same as its first (and only) member
+ don't pass it as an aggregate. */
+ if (TREE_CODE (type) == RECORD_TYPE && TYPE_TRANSPARENT_AGGR (type))
+ return aggregate_value_p (first_field (type), fntype);
+
/* If the front end has decided that this needs to be passed by
reference, do so. */
if ((TREE_CODE (exp) == PARM_DECL || TREE_CODE (exp) == RESULT_DECL)
@@ -2004,6 +2009,14 @@ pass_by_reference (CUMULATIVE_ARGS *ca, enum machine_mode mode,
/* GCC post 3.4 passes *all* variable sized types by reference. */
if (!TYPE_SIZE (type) || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
return true;
+
+ /* If a record type should be passed the same as its first (and only)
+ member, use the type and mode of that member. */
+ if (TREE_CODE (type) == RECORD_TYPE && TYPE_TRANSPARENT_AGGR (type))
+ {
+ type = TREE_TYPE (first_field (type));
+ mode = TYPE_MODE (type);
+ }
}
return targetm.calls.pass_by_reference (ca, mode, type, named_arg);
@@ -2082,25 +2095,13 @@ assign_parms_initialize_all (struct assign_parm_data_all *all)
entries of the component type. Return a new list of substitutions are
needed, else the old list. */
-static tree
-split_complex_args (tree args)
+static void
+split_complex_args (VEC(tree, heap) **args)
{
+ unsigned i;
tree p;
- /* Before allocating memory, check for the common case of no complex. */
- for (p = args; p; p = TREE_CHAIN (p))
- {
- tree type = TREE_TYPE (p);
- if (TREE_CODE (type) == COMPLEX_TYPE
- && targetm.calls.split_complex_arg (type))
- goto found;
- }
- return args;
-
- found:
- args = copy_list (args);
-
- for (p = args; p; p = TREE_CHAIN (p))
+ for (i = 0; VEC_iterate (tree, *args, i, p); ++i)
{
tree type = TREE_TYPE (p);
if (TREE_CODE (type) == COMPLEX_TYPE
@@ -2111,6 +2112,7 @@ split_complex_args (tree args)
bool addressable = TREE_ADDRESSABLE (p);
/* Rewrite the PARM_DECL's type with its component. */
+ p = copy_node (p);
TREE_TYPE (p) = subtype;
DECL_ARG_TYPE (p) = TREE_TYPE (DECL_ARG_TYPE (p));
DECL_MODE (p) = VOIDmode;
@@ -2124,6 +2126,7 @@ split_complex_args (tree args)
DECL_IGNORED_P (p) = addressable;
TREE_ADDRESSABLE (p) = 0;
layout_decl (p, 0);
+ VEC_replace (tree, *args, i, p);
/* Build a second synthetic decl. */
decl = build_decl (EXPR_LOCATION (p),
@@ -2132,27 +2135,27 @@ split_complex_args (tree args)
DECL_ARTIFICIAL (decl) = addressable;
DECL_IGNORED_P (decl) = addressable;
layout_decl (decl, 0);
-
- /* Splice it in; skip the new decl. */
- TREE_CHAIN (decl) = TREE_CHAIN (p);
- TREE_CHAIN (p) = decl;
- p = decl;
+ VEC_safe_insert (tree, heap, *args, ++i, decl);
}
}
-
- return args;
}
/* A subroutine of assign_parms. Adjust the parameter list to incorporate
the hidden struct return argument, and (abi willing) complex args.
Return the new parameter list. */
-static tree
+static VEC(tree, heap) *
assign_parms_augmented_arg_list (struct assign_parm_data_all *all)
{
tree fndecl = current_function_decl;
tree fntype = TREE_TYPE (fndecl);
- tree fnargs = DECL_ARGUMENTS (fndecl);
+ VEC(tree, heap) *fnargs = NULL;
+ tree arg;
+
+ for (arg = DECL_ARGUMENTS (fndecl); arg; arg = TREE_CHAIN (arg))
+ VEC_safe_push (tree, heap, fnargs, arg);
+
+ all->orig_fnargs = DECL_ARGUMENTS (fndecl);
/* If struct value address is treated as the first argument, make it so. */
if (aggregate_value_p (DECL_RESULT (fndecl), fndecl)
@@ -2168,16 +2171,16 @@ assign_parms_augmented_arg_list (struct assign_parm_data_all *all)
DECL_ARTIFICIAL (decl) = 1;
DECL_IGNORED_P (decl) = 1;
- TREE_CHAIN (decl) = fnargs;
- fnargs = decl;
+ TREE_CHAIN (decl) = all->orig_fnargs;
+ all->orig_fnargs = decl;
+ VEC_safe_insert (tree, heap, fnargs, 0, decl);
+
all->function_result_decl = decl;
}
- all->orig_fnargs = fnargs;
-
/* If the target wants to split complex arguments into scalars, do so. */
if (targetm.calls.split_complex_arg)
- fnargs = split_complex_args (fnargs);
+ split_complex_args (&fnargs);
return fnargs;
}
@@ -2228,12 +2231,13 @@ assign_parm_find_data_types (struct assign_parm_data_all *all, tree parm,
passed_mode = TYPE_MODE (passed_type);
nominal_mode = TYPE_MODE (nominal_type);
- /* If the parm is to be passed as a transparent union, use the type of
- the first field for the tests below. We have already verified that
- the modes are the same. */
- if (TREE_CODE (passed_type) == UNION_TYPE
- && TYPE_TRANSPARENT_UNION (passed_type))
- passed_type = TREE_TYPE (TYPE_FIELDS (passed_type));
+ /* If the parm is to be passed as a transparent union or record, use the
+ type of the first field for the tests below. We have already verified
+ that the modes are the same. */
+ if ((TREE_CODE (passed_type) == UNION_TYPE
+ || TREE_CODE (passed_type) == RECORD_TYPE)
+ && TYPE_TRANSPARENT_AGGR (passed_type))
+ passed_type = TREE_TYPE (first_field (passed_type));
/* See if this arg was passed by invisible reference. */
if (pass_by_reference (&all->args_so_far, passed_mode,
@@ -3065,12 +3069,14 @@ assign_parm_setup_stack (struct assign_parm_data_all *all, tree parm,
undo the frobbing that we did in assign_parms_augmented_arg_list. */
static void
-assign_parms_unsplit_complex (struct assign_parm_data_all *all, tree fnargs)
+assign_parms_unsplit_complex (struct assign_parm_data_all *all,
+ VEC(tree, heap) *fnargs)
{
tree parm;
tree orig_fnargs = all->orig_fnargs;
+ unsigned i = 0;
- for (parm = orig_fnargs; parm; parm = TREE_CHAIN (parm))
+ for (parm = orig_fnargs; parm; parm = TREE_CHAIN (parm), ++i)
{
if (TREE_CODE (TREE_TYPE (parm)) == COMPLEX_TYPE
&& targetm.calls.split_complex_arg (TREE_TYPE (parm)))
@@ -3078,8 +3084,8 @@ assign_parms_unsplit_complex (struct assign_parm_data_all *all, tree fnargs)
rtx tmp, real, imag;
enum machine_mode inner = GET_MODE_INNER (DECL_MODE (parm));
- real = DECL_RTL (fnargs);
- imag = DECL_RTL (TREE_CHAIN (fnargs));
+ real = DECL_RTL (VEC_index (tree, fnargs, i));
+ imag = DECL_RTL (VEC_index (tree, fnargs, i + 1));
if (inner != GET_MODE (real))
{
real = gen_lowpart_SUBREG (inner, real);
@@ -3112,8 +3118,8 @@ assign_parms_unsplit_complex (struct assign_parm_data_all *all, tree fnargs)
tmp = gen_rtx_CONCAT (DECL_MODE (parm), real, imag);
SET_DECL_RTL (parm, tmp);
- real = DECL_INCOMING_RTL (fnargs);
- imag = DECL_INCOMING_RTL (TREE_CHAIN (fnargs));
+ real = DECL_INCOMING_RTL (VEC_index (tree, fnargs, i));
+ imag = DECL_INCOMING_RTL (VEC_index (tree, fnargs, i + 1));
if (inner != GET_MODE (real))
{
real = gen_lowpart_SUBREG (inner, real);
@@ -3121,20 +3127,8 @@ assign_parms_unsplit_complex (struct assign_parm_data_all *all, tree fnargs)
}
tmp = gen_rtx_CONCAT (DECL_MODE (parm), real, imag);
set_decl_incoming_rtl (parm, tmp, false);
- fnargs = TREE_CHAIN (fnargs);
+ i++;
}
- else
- {
- SET_DECL_RTL (parm, DECL_RTL (fnargs));
- set_decl_incoming_rtl (parm, DECL_INCOMING_RTL (fnargs), false);
-
- /* Set MEM_EXPR to the original decl, i.e. to PARM,
- instead of the copy of decl, i.e. FNARGS. */
- if (DECL_INCOMING_RTL (parm) && MEM_P (DECL_INCOMING_RTL (parm)))
- set_mem_expr (DECL_INCOMING_RTL (parm), parm);
- }
-
- fnargs = TREE_CHAIN (fnargs);
}
}
@@ -3145,7 +3139,9 @@ static void
assign_parms (tree fndecl)
{
struct assign_parm_data_all all;
- tree fnargs, parm;
+ tree parm;
+ VEC(tree, heap) *fnargs;
+ unsigned i;
crtl->args.internal_arg_pointer
= targetm.calls.internal_arg_pointer ();
@@ -3153,7 +3149,7 @@ assign_parms (tree fndecl)
assign_parms_initialize_all (&all);
fnargs = assign_parms_augmented_arg_list (&all);
- for (parm = fnargs; parm; parm = TREE_CHAIN (parm))
+ for (i = 0; VEC_iterate (tree, fnargs, i, parm); ++i)
{
struct assign_parm_data_one data;
@@ -3216,9 +3212,11 @@ assign_parms (tree fndecl)
assign_parm_setup_stack (&all, parm, &data);
}
- if (targetm.calls.split_complex_arg && fnargs != all.orig_fnargs)
+ if (targetm.calls.split_complex_arg)
assign_parms_unsplit_complex (&all, fnargs);
+ VEC_free (tree, heap, fnargs);
+
/* Output all parameter conversion instructions (possibly including calls)
now that all parameters have been copied out of hard registers. */
emit_insn (all.first_conversion_insn);
@@ -3370,13 +3368,15 @@ gimple_seq
gimplify_parameters (void)
{
struct assign_parm_data_all all;
- tree fnargs, parm;
+ tree parm;
gimple_seq stmts = NULL;
+ VEC(tree, heap) *fnargs;
+ unsigned i;
assign_parms_initialize_all (&all);
fnargs = assign_parms_augmented_arg_list (&all);
- for (parm = fnargs; parm; parm = TREE_CHAIN (parm))
+ for (i = 0; VEC_iterate (tree, fnargs, i, parm); ++i)
{
struct assign_parm_data_one data;
@@ -3454,6 +3454,8 @@ gimplify_parameters (void)
}
}
+ VEC_free (tree, heap, fnargs);
+
return stmts;
}
diff --git a/gcc/fwprop.c b/gcc/fwprop.c
index 0c5c7280ad5..708ab3f8edc 100644
--- a/gcc/fwprop.c
+++ b/gcc/fwprop.c
@@ -818,17 +818,23 @@ all_uses_available_at (rtx def_insn, rtx target_insn)
}
else
{
+ rtx def_reg = REG_P (SET_DEST (def_set)) ? SET_DEST (def_set) : NULL_RTX;
+
/* Look at all the uses of DEF_INSN, and see if they are not
killed between DEF_INSN and TARGET_INSN. */
for (use_rec = DF_INSN_INFO_USES (insn_info); *use_rec; use_rec++)
{
df_ref use = *use_rec;
+ if (def_reg && rtx_equal_p (DF_REF_REG (use), def_reg))
+ return false;
if (use_killed_between (use, def_insn, target_insn))
return false;
}
for (use_rec = DF_INSN_INFO_EQ_USES (insn_info); *use_rec; use_rec++)
{
df_ref use = *use_rec;
+ if (def_reg && rtx_equal_p (DF_REF_REG (use), def_reg))
+ return false;
if (use_killed_between (use, def_insn, target_insn))
return false;
}
diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c
index 6651e95b48f..cc48859b37e 100644
--- a/gcc/graphite-clast-to-gimple.c
+++ b/gcc/graphite-clast-to-gimple.c
@@ -1430,7 +1430,6 @@ create_params_index (htab_t index_table, CloogProgram *prog) {
bool
gloog (scop_p scop, htab_t bb_pbb_mapping)
{
- edge new_scop_exit_edge = NULL;
VEC (tree, heap) *newivs = VEC_alloc (tree, heap, 10);
loop_p context_loop;
sese region = SCOP_REGION (scop);
@@ -1471,10 +1470,10 @@ gloog (scop_p scop, htab_t bb_pbb_mapping)
create_params_index (params_index, pc.prog);
- new_scop_exit_edge = translate_clast (region, context_loop, pc.stmt,
- if_region->true_region->entry,
- rename_map, &newivs, newivs_index,
- bb_pbb_mapping, 1, params_index);
+ translate_clast (region, context_loop, pc.stmt,
+ if_region->true_region->entry,
+ rename_map, &newivs, newivs_index,
+ bb_pbb_mapping, 1, params_index);
graphite_verify ();
sese_adjust_liveout_phis (region, rename_map,
if_region->region->exit->src,
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 0a85b6ee9fa..b7f0cfce359 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -1835,27 +1835,22 @@ concat_note_lists (rtx from_end, rtx *to_endp)
void
remove_notes (rtx head, rtx tail)
{
- rtx next_tail, prev, insn, next;
+ rtx next_tail, insn, next;
note_list = 0;
if (head == tail && !INSN_P (head))
return;
next_tail = NEXT_INSN (tail);
- prev = PREV_INSN (head);
for (insn = head; insn != next_tail; insn = next)
{
next = NEXT_INSN (insn);
if (!NOTE_P (insn))
- {
- prev = insn;
- continue;
- }
+ continue;
switch (NOTE_KIND (insn))
{
case NOTE_INSN_BASIC_BLOCK:
- prev = insn;
continue;
case NOTE_INSN_EPILOGUE_BEG:
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 579982c5c46..3fefe43059a 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,13 @@
+2010-01-20 Joern Rennecke <amylaar@spamcop.net>
+
+ * lang.c (java_post_options): Constify variable "dot".
+
+ * jcf-parse.c (set_source_filename): Constify variable "dot".
+ (load_class): Constify variable "separator".
+ Use get_identifier_with_length.
+
+ * jvspec.c (lang_specific_driver): Constify two variables named "p".
+
2010-01-09 Jakub Jelinek <jakub@redhat.com>
* jcf-dump.c (version): Update copyright notice dates.
diff --git a/gcc/java/jcf-parse.c b/gcc/java/jcf-parse.c
index 1a2de9ee8b0..2fe97bc6b46 100644
--- a/gcc/java/jcf-parse.c
+++ b/gcc/java/jcf-parse.c
@@ -333,7 +333,7 @@ set_source_filename (JCF *jcf, int index)
{
const char *class_name
= IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (current_class)));
- char *dot = strrchr (class_name, '.');
+ const char *dot = strrchr (class_name, '.');
if (dot != NULL)
{
/* Length of prefix, not counting final dot. */
@@ -1355,7 +1355,7 @@ load_class (tree class_or_name, int verbose)
{
while (1)
{
- char *separator;
+ const char *separator;
/* We've already loaded it. */
if (IDENTIFIER_CLASS_VALUE (name) != NULL_TREE)
@@ -1372,12 +1372,9 @@ load_class (tree class_or_name, int verbose)
for an inner class. */
if ((separator = strrchr (IDENTIFIER_POINTER (name), '$'))
|| (separator = strrchr (IDENTIFIER_POINTER (name), '.')))
- {
- int c = *separator;
- *separator = '\0';
- name = get_identifier (IDENTIFIER_POINTER (name));
- *separator = c;
- }
+ name = get_identifier_with_length (IDENTIFIER_POINTER (name),
+ (separator
+ - IDENTIFIER_POINTER (name)));
/* Otherwise, we failed, we bail. */
else
break;
diff --git a/gcc/java/jvspec.c b/gcc/java/jvspec.c
index 0f58d47d20c..a021aa45f22 100644
--- a/gcc/java/jvspec.c
+++ b/gcc/java/jvspec.c
@@ -542,14 +542,14 @@ lang_specific_driver (int *in_argc, const char *const **in_argv,
if (! strncmp (argv[i], "-fCLASSPATH=", 12)
|| ! strncmp (argv[i], "-fclasspath=", 12))
{
- char *p = strchr (argv[i], '=');
+ const char *p = strchr (argv[i], '=');
jcf_path_classpath_arg (p + 1);
--j;
continue;
}
if (! strncmp (argv[i], "-fbootclasspath=", 16))
{
- char *p = strchr (argv[i], '=');
+ const char *p = strchr (argv[i], '=');
jcf_path_bootclasspath_arg (p + 1);
--j;
continue;
diff --git a/gcc/java/lang.c b/gcc/java/lang.c
index f1d8f44ce86..22fe4ffd09b 100644
--- a/gcc/java/lang.c
+++ b/gcc/java/lang.c
@@ -587,7 +587,7 @@ java_post_options (const char **pfilename)
{
if (dependency_tracking)
{
- char *dot;
+ const char *dot;
/* If the target is set and the output filename is set, then
there's no processing to do here. Otherwise we must
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c
index f316459e083..e41917702f1 100644
--- a/gcc/lto-streamer-in.c
+++ b/gcc/lto-streamer-in.c
@@ -1742,8 +1742,8 @@ unpack_ts_type_value_fields (struct bitpack_d *bp, tree expr)
TYPE_STRING_FLAG (expr) = (unsigned) bp_unpack_value (bp, 1);
TYPE_NO_FORCE_BLK (expr) = (unsigned) bp_unpack_value (bp, 1);
TYPE_NEEDS_CONSTRUCTING(expr) = (unsigned) bp_unpack_value (bp, 1);
- if (TREE_CODE (expr) == UNION_TYPE)
- TYPE_TRANSPARENT_UNION (expr) = (unsigned) bp_unpack_value (bp, 1);
+ if (TREE_CODE (expr) == UNION_TYPE || TREE_CODE (expr) == RECORD_TYPE)
+ TYPE_TRANSPARENT_AGGR (expr) = (unsigned) bp_unpack_value (bp, 1);
TYPE_PACKED (expr) = (unsigned) bp_unpack_value (bp, 1);
TYPE_RESTRICT (expr) = (unsigned) bp_unpack_value (bp, 1);
TYPE_CONTAINS_PLACEHOLDER_INTERNAL (expr)
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index d5431ba5a6e..b5fc3e26c20 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -518,8 +518,8 @@ pack_ts_type_value_fields (struct bitpack_d *bp, tree expr)
bp_pack_value (bp, TYPE_STRING_FLAG (expr), 1);
bp_pack_value (bp, TYPE_NO_FORCE_BLK (expr), 1);
bp_pack_value (bp, TYPE_NEEDS_CONSTRUCTING(expr), 1);
- if (TREE_CODE (expr) == UNION_TYPE)
- bp_pack_value (bp, TYPE_TRANSPARENT_UNION (expr), 1);
+ if (TREE_CODE (expr) == UNION_TYPE || TREE_CODE (expr) == RECORD_TYPE)
+ bp_pack_value (bp, TYPE_TRANSPARENT_AGGR (expr), 1);
bp_pack_value (bp, TYPE_PACKED (expr), 1);
bp_pack_value (bp, TYPE_RESTRICT (expr), 1);
bp_pack_value (bp, TYPE_CONTAINS_PLACEHOLDER_INTERNAL (expr), 2);
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 5b09d0d8028..3e0cf425227 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,15 @@
+2010-01-20 Joseph Myers <joseph@codesourcery.com>
+
+ * zh_CN.po: Update.
+
+2010-01-18 Joseph Myers <joseph@codesourcery.com>
+
+ * zh_CN.po: Update.
+
+2010-01-17 Joseph Myers <joseph@codesourcery.com>
+
+ * sv.po: Update.
+
2010-01-14 Shujing Zhao <pearly.zhao@oracle.com>
PR translation/39521
diff --git a/gcc/po/sv.po b/gcc/po/sv.po
index b348cfbcb2b..816d8e161c6 100644
--- a/gcc/po/sv.po
+++ b/gcc/po/sv.po
@@ -11,7 +11,7 @@ msgstr ""
"Project-Id-Version: gcc 4.5-b20091203\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
"POT-Creation-Date: 2009-12-03 21:28+0000\n"
-"PO-Revision-Date: 2010-01-09 12:45+0100\n"
+"PO-Revision-Date: 2010-01-17 11:35+0100\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"MIME-Version: 1.0\n"
@@ -19743,9 +19743,9 @@ msgid "ISO C90 forbids variable length array"
msgstr "ISO C90 förbjuder vektorer med variabel längd"
#: c-decl.c:4670
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "the size of array %qE can%'t be evaluated"
-msgstr "storleken på vektor %qs kan inte beräknas"
+msgstr "storleken på vektor %qE kan inte beräknas"
#: c-decl.c:4674
#, gcc-internal-format
@@ -19753,9 +19753,9 @@ msgid "the size of array can %'t be evaluated"
msgstr "storleken på vektorn kan inte beräknas"
#: c-decl.c:4680
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "variable length array %qE is used"
-msgstr "vektor %qs med variabel längd används"
+msgstr "vektor %qE med variabel längd används"
#: c-decl.c:4684 cp/decl.c:7348
#, gcc-internal-format
@@ -19763,24 +19763,24 @@ msgid "variable length array is used"
msgstr "vektor med variabel längd används"
#: c-decl.c:4862 c-decl.c:5208 c-decl.c:5218
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "variably modified %qE at file scope"
-msgstr "variabel %qs har filräckvidd"
+msgstr "variabelt ändrad %qE i filräckvidd"
#: c-decl.c:4864
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "variably modified field at file scope"
-msgstr "variabel %qs har filräckvidd"
+msgstr "variabelt ändrat fält i filräckvidd"
#: c-decl.c:4884
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type defaults to %<int%> in declaration of %qE"
-msgstr "typen sätts skönsmässigt till %<int%> i deklarationen av %qs"
+msgstr "typen sätts skönsmässigt till %<int%> i deklarationen av %qE"
#: c-decl.c:4888
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type defaults to %<int%> in type name"
-msgstr "typen sätts skönsmässigt till %<int%> i deklarationen av %qs"
+msgstr "typen sätts skönsmässigt till %<int%> i typnamnet"
#: c-decl.c:4921
#, gcc-internal-format
@@ -19798,9 +19798,9 @@ msgid "duplicate %<volatile%>"
msgstr "dubblerad %<volatile%>"
#: c-decl.c:4929
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "conflicting named address spaces (%s vs %s)"
-msgstr "motstridande superklassnamn %qs"
+msgstr "motstridande namngivna adressrymder (%s respektive %s)"
#: c-decl.c:4951
#, gcc-internal-format
@@ -19823,24 +19823,24 @@ msgid "function definition declared %<__thread%>"
msgstr "funktionsdefinition deklarerad som %<__thread%>"
#: c-decl.c:4974
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "storage class specified for structure field %qE"
-msgstr "lagringsklass angiven för postfält %qs"
+msgstr "lagringsklass angiven för postfält %qE"
#: c-decl.c:4977
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "storage class specified for structure field"
-msgstr "lagringsklass angiven för postfält %qs"
+msgstr "lagringsklass angiven för postfält"
#: c-decl.c:4981
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "storage class specified for parameter %qE"
-msgstr "lagringsklass angiven för parameter %qs"
+msgstr "lagringsklass angiven för parameter %qE"
#: c-decl.c:4984
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "storage class specified for unnamed parameter"
-msgstr "lagringsklass angiven för parameter %qs"
+msgstr "lagringsklass angiven för namnlös parameter"
#: c-decl.c:4987 cp/decl.c:8284
#, gcc-internal-format
@@ -19848,34 +19848,34 @@ msgid "storage class specified for typename"
msgstr "lagringsklass angiven för typnamn"
#: c-decl.c:5004
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE initialized and declared %<extern%>"
-msgstr "%qs initierad och deklarerad %<extern%>"
+msgstr "%qE initierad och deklarerad %<extern%>"
#: c-decl.c:5008
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE has both %<extern%> and initializer"
-msgstr "%qs har både %<extern%> och initierare"
+msgstr "%qE har både %<extern%> och initierare"
#: c-decl.c:5013
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "file-scope declaration of %qE specifies %<auto%>"
-msgstr "filnivådeklaration av %qs anger %<auto%>"
+msgstr "filnivådeklaration av %qE anger %<auto%>"
#: c-decl.c:5017
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "file-scope declaration of %qE specifies %<register%>"
-msgstr "filnivådeklaration av %qs anger %<auto%>"
+msgstr "filnivådeklaration av %qE anger %<register%>"
#: c-decl.c:5022
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "nested function %qE declared %<extern%>"
-msgstr "nästad funktion %qs är deklarerad %<extern%>"
+msgstr "nästad funktion %qE är deklarerad %<extern%>"
#: c-decl.c:5025
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "function-scope %qE implicitly auto and declared %<__thread%>"
-msgstr "funktionsdefinitionsområde %qs implicit auto och deklarerat %<__thread%>"
+msgstr "%qE i funktions definitionsområde är implicit auto och deklarerad %<__thread%>"
#. Only the innermost declarator (making a parameter be of
#. array type which is converted to pointer type)
@@ -19886,24 +19886,24 @@ msgid "static or type qualifiers in non-parameter array declarator"
msgstr "static- eller typkvalificerare i vektordeklarerare som inte är parameter"
#: c-decl.c:5120
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "declaration of %qE as array of voids"
-msgstr "deklaration av %qs som ett fält med void"
+msgstr "deklaration av %qE som en vektor av void"
#: c-decl.c:5122
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "declaration of type name as array of voids"
-msgstr "deklaration av %qs som ett fält med void"
+msgstr "deklaration av typnamn som en vektor av void"
#: c-decl.c:5129
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "declaration of %qE as array of functions"
-msgstr "deklaration av %qs som ett fält med funktioner"
+msgstr "deklaration av %qE som en vektor av funktioner"
#: c-decl.c:5132
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "declaration of type name as array of functions"
-msgstr "deklaration av %qs som ett fält med funktioner"
+msgstr "deklaration av typnamn som en vektor av funktioner"
#: c-decl.c:5139 c-decl.c:6837
#, gcc-internal-format
@@ -19911,44 +19911,44 @@ msgid "invalid use of structure with flexible array member"
msgstr "ogiltig användning av post med flexibel vektormedlem"
#: c-decl.c:5165
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "size of array %qE has non-integer type"
-msgstr "storlek på vektorn %qs är inte av heltalstyp"
+msgstr "storlek på vektorn %qE är inte av heltalstyp"
#: c-decl.c:5169
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "size of unnamed array has non-integer type"
-msgstr "storlek på vektorn %qs är inte av heltalstyp"
+msgstr "storlek på en namnlös vektor är inte av heltalstyp"
#: c-decl.c:5179
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "ISO C forbids zero-size array %qE"
-msgstr "ISO C förbjuder vektor %qs med storlek noll"
+msgstr "ISO C förbjuder vektor %qE med storlek noll"
#: c-decl.c:5182
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "ISO C forbids zero-size array"
-msgstr "ISO C++ förbjuder vektor med storlek noll"
+msgstr "ISO C förbjuder vektorer med storlek noll"
#: c-decl.c:5191
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "size of array %qE is negative"
-msgstr "storlek på vektorn %qs är negativ"
+msgstr "storleken på vektorn %qE är negativ"
#: c-decl.c:5193
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "size of unnamed array is negative"
-msgstr "storleken på vektorn är negativ"
+msgstr "storleken på en namnlös vektor är negativ"
#: c-decl.c:5269 c-decl.c:5631
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "size of array %qE is too large"
-msgstr "storleken på vektorn %qs är för stor"
+msgstr "storleken på vektorn %qE är för stor"
#: c-decl.c:5272 c-decl.c:5633
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "size of unnamed array is too large"
-msgstr "storleken på vektorn är för stor"
+msgstr "storleken på en namnlös vektor är för stor"
#: c-decl.c:5309
#, gcc-internal-format
@@ -19967,24 +19967,24 @@ msgid "array type has incomplete element type"
msgstr "fälttyp har ofullständig elementtyp"
#: c-decl.c:5433
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE declared as function returning a function"
-msgstr "%qs är deklarerad som en funktion som returnerar en funktion"
+msgstr "%qE är deklarerad som en funktion som returnerar en funktion"
#: c-decl.c:5436
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type name declared as function returning a function"
-msgstr "%qs är deklarerad som en funktion som returnerar en funktion"
+msgstr "typnamn är deklarerat som en funktion som returnerar en funktion"
#: c-decl.c:5443
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE declared as function returning an array"
-msgstr "%qs är deklarerad som en funktion som returnerar en vektor"
+msgstr "%qE är deklarerad som en funktion som returnerar en vektor"
#: c-decl.c:5446
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type name declared as function returning an array"
-msgstr "%qs är deklarerad som en funktion som returnerar en vektor"
+msgstr "typnamn är deklarerat som en funktion som returnerar en vektor"
#: c-decl.c:5476
#, gcc-internal-format
@@ -20002,9 +20002,9 @@ msgid "ISO C forbids qualified function types"
msgstr "ISO C förbjuder kvalificerade funktionstyper"
#: c-decl.c:5576
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qs combined with %<auto%> qualifier for %qE"
-msgstr "motstridiga typkvalificerare för %q+D"
+msgstr "%qs kombinerad med %<auto%>-kvalificerare för %E"
#: c-decl.c:5580
#, gcc-internal-format
@@ -20012,29 +20012,29 @@ msgid "%qs combined with %<register%> qualifier for %qE"
msgstr "%qs kombinerat med %<register%>-kvalificerare för %qE"
#: c-decl.c:5586
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qs specified for auto variable %qE"
-msgstr "%Hogiltig typ för iterationsvariabeln %qE"
+msgstr "%qs angiven för auto-variabel %qE"
#: c-decl.c:5602
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qs specified for parameter %qE"
-msgstr "lagringsklass angiven för parameter %qs"
+msgstr "%qs angiven för parameter %qE"
#: c-decl.c:5605
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qs specified for unnamed parameter"
-msgstr "lagringsklass angiven för parameter %qs"
+msgstr "%qs angiven för namnlös parameter"
#: c-decl.c:5611
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qs specified for structure field %qE"
-msgstr "lagringsklass angiven för postfält %qs"
+msgstr "%qs angiven för postfält %qE"
#: c-decl.c:5614
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qs specified for structure field"
-msgstr "lagringsklass angiven för postfält %qs"
+msgstr "%qs angiven för postfält"
#: c-decl.c:5655
#, gcc-internal-format
@@ -20068,24 +20068,24 @@ msgid "parameter %q+D declared %<inline%>"
msgstr "parametern %q+D deklarerad %<inline%>"
#: c-decl.c:5796
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "field %qE declared as a function"
-msgstr "fältet %qs deklarerat som en funktion"
+msgstr "fältet %qE deklarerat som en funktion"
#: c-decl.c:5803
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "field %qE has incomplete type"
-msgstr "fält %qs har ofullständig typ"
+msgstr "fält %qE har ofullständig typ"
#: c-decl.c:5805
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "unnamed field has incomplete type"
-msgstr "namnet %qT har ofullständig typ"
+msgstr "namnlöst fält har ofullständig typ"
#: c-decl.c:5822 c-decl.c:5833 c-decl.c:5836
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid storage class for function %qE"
-msgstr "ogiltig lagringsklass för funktionen %qs"
+msgstr "ogiltig lagringsklass för funktionen %qE"
#: c-decl.c:5856
#, gcc-internal-format
@@ -20108,9 +20108,9 @@ msgid "variable %q+D declared %<inline%>"
msgstr "variabeln %q+D deklarerad %<inline%>"
#: c-decl.c:5966
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "non-nested function with variably modified type"
-msgstr "hopp in i räckvidd för identifierare med variabel typ"
+msgstr "onästad funktion med variabelt modifierad typ"
#: c-decl.c:5968
#, gcc-internal-format
@@ -20133,9 +20133,9 @@ msgid "parameter %u (%q+D) has incomplete type"
msgstr "parameter %u (%q+D) har ofullständig typ"
#: c-decl.c:6098
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "parameter %u has incomplete type"
-msgstr "%Jparameter %u har ofullständig typ"
+msgstr "parameter %u har ofullständig typ"
#: c-decl.c:6108
#, gcc-internal-format
@@ -20143,9 +20143,9 @@ msgid "parameter %u (%q+D) has void type"
msgstr "parameter %u (%q+D) har void-typ"
#: c-decl.c:6112
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "parameter %u has void type"
-msgstr "%Jparameter %u har void-typ"
+msgstr "parameter %u har void-typ"
#: c-decl.c:6182
#, gcc-internal-format
@@ -20180,19 +20180,19 @@ msgid "its scope is only this definition or declaration, which is probably not w
msgstr "dess scope-område är endast denna definition eller deklaration, vilket troligen inte är vad du vill."
#: c-decl.c:6361
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "enum type defined here"
-msgstr "%q+#D definierades tidigare här"
+msgstr "enum-typ definierad här"
#: c-decl.c:6367
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "struct defined here"
-msgstr "%q+#D definierades tidigare här"
+msgstr "post definierad här"
#: c-decl.c:6373
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "union defined here"
-msgstr "%q+#D definierades tidigare här"
+msgstr "union definierad här"
#: c-decl.c:6446
#, gcc-internal-format
@@ -20255,19 +20255,19 @@ msgid "struct has no members"
msgstr "posten har inga medlemmar"
#: c-decl.c:6817
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "flexible array member in union"
-msgstr "%Jflexibel vektormedlem i union"
+msgstr "flexibel vektormedlem i union"
#: c-decl.c:6823
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "flexible array member not at end of struct"
-msgstr "%Jflexibel vektormedlem inte vid slutet av post"
+msgstr "flexibel vektormedlem inte vid slutet av post"
#: c-decl.c:6829
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "flexible array member in otherwise empty struct"
-msgstr "%Jflexibel vektor medlem i i övrigt tom post"
+msgstr "flexibel vektor medlem i i övrigt tom post"
#: c-decl.c:6946
#, gcc-internal-format
@@ -20301,9 +20301,9 @@ msgid "enumerator value for %qE is not an integer constant"
msgstr "uppräkningsvärde för %qE är inte en heltalskonstant"
#: c-decl.c:7256
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "enumerator value for %qE is not an integer constant expression"
-msgstr "uppräkningsvärde för %qE är inte en heltalskonstant"
+msgstr "uppräkningsvärde för %qE är inte ett konstant heltalsuttryck"
#: c-decl.c:7280
#, gcc-internal-format
@@ -20316,9 +20316,9 @@ msgid "ISO C restricts enumerator values to range of %<int%>"
msgstr "ISO C begränsar uppräkningsvärden till intervallet hos %<int%>"
#: c-decl.c:7373
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "inline function %qD given attribute noinline"
-msgstr "inline-funktionen %q+D har fått attributet noinline"
+msgstr "inline-funktionen %qD har fått attributet noinline"
#: c-decl.c:7391
#, gcc-internal-format
@@ -20331,89 +20331,89 @@ msgid "return type defaults to %<int%>"
msgstr "returtyp sätts skönsmässigt till %<int%>"
#: c-decl.c:7475
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "no previous prototype for %qD"
-msgstr "ingen tidigare prototyp för %q+D"
+msgstr "ingen tidigare prototyp för %qD"
#: c-decl.c:7484
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD was used with no prototype before its definition"
-msgstr "%q+D användes utan någon prototyp före sin definition"
+msgstr "%qD användes utan någon prototyp före sin definition"
#: c-decl.c:7491
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "no previous declaration for %qD"
-msgstr "ingen tidigare deklaration av %q+D"
+msgstr "ingen tidigare deklaration av %qD"
#: c-decl.c:7501
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD was used with no declaration before its definition"
-msgstr "%q+D användes utan någon deklaration före sin definition"
+msgstr "%qD användes utan någon deklaration före sin definition"
#: c-decl.c:7524
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "return type of %qD is not %<int%>"
-msgstr "returtypen på %q+D är inte %<int%>"
+msgstr "returtypen för %qD är inte %<int%>"
#: c-decl.c:7530
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD is normally a non-static function"
-msgstr "%q+D är normalt en icke-statisk funktion"
+msgstr "%qD är normalt en icke-statisk funktion"
#: c-decl.c:7565
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "old-style parameter declarations in prototyped function definition"
-msgstr "%Jgammaldags parameterdeklarationer i funktionsdefinition med prototyp"
+msgstr "gammaldags parameterdeklarationer i funktionsdefinition med prototyp"
#: c-decl.c:7579
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "traditional C rejects ISO C style function definitions"
-msgstr "%Jtraditionell C tillåter inte ISO C:s stil av funktionsdefinitioner"
+msgstr "traditionell C tillåter inte ISO C:s stil av funktionsdefinitioner"
#: c-decl.c:7595
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "parameter name omitted"
-msgstr "%Jparameternamn utelämnat"
+msgstr "parameternamn utelämnat"
#: c-decl.c:7630
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "old-style function definition"
-msgstr "%Jgammaldags funktionsdefinition"
+msgstr "gammaldags funktionsdefinition"
#: c-decl.c:7639
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "parameter name missing from parameter list"
-msgstr "%Jparameternamn saknas i parameterlista"
+msgstr "parameternamn saknas i parameterlista"
#: c-decl.c:7651
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qD declared as a non-parameter"
-msgstr "%q+D deklarerad som en icke-parameter"
+msgstr "%qD deklarerad som en icke-parameter"
#: c-decl.c:7657
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "multiple parameters named %qD"
-msgstr "flera parametrar med namnet %q+D"
+msgstr "flera parametrar med namnet %qD"
#: c-decl.c:7666
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "parameter %qD declared with void type"
-msgstr "parameter %q+D deklarerad med typen void"
+msgstr "parameter %qD deklarerad med typen void"
#: c-decl.c:7695 c-decl.c:7699
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "type of %qD defaults to %<int%>"
-msgstr "typen på %q+D sätts skönsmässigt till %<int%>"
+msgstr "typen på %qD sätts skönsmässigt till %<int%>"
#: c-decl.c:7719
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "parameter %qD has incomplete type"
-msgstr "parametern %q+D har ofullständig typ"
+msgstr "parametern %qD har ofullständig typ"
#: c-decl.c:7726
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "declaration for parameter %qD but no such parameter"
-msgstr "deklaration av parameter %q+D med det finns ingen sådan parameter"
+msgstr "deklaration av parameter %qD med det finns ingen sådan parameter"
#: c-decl.c:7778
#, gcc-internal-format
@@ -20469,14 +20469,14 @@ msgid "use option -std=c99 or -std=gnu99 to compile your code"
msgstr "använd flaggan -std=c99 eller -std=gnu99 för att kompilera din kod"
#: c-decl.c:8141
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "declaration of static variable %qD in %<for%> loop initial declaration"
-msgstr "deklaration av statisk variabel %q+D i %<for%>-slingas initiala deklaration"
+msgstr "deklaration av statisk variabel %qD i %<for%>-slingas initiala deklaration"
#: c-decl.c:8145
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "declaration of %<extern%> variable %qD in %<for%> loop initial declaration"
-msgstr "deklaration av %<extern%>-variabel %q+D i %<for%>-slingas initiala deklaration"
+msgstr "deklaration av %<extern%>-variabel %qD i %<for%>-slingas initiala deklaration"
#: c-decl.c:8152
#, gcc-internal-format
@@ -20494,9 +20494,9 @@ msgid "%<enum %E%> declared in %<for%> loop initial declaration"
msgstr "%<enum %E%> är deklarerad i %<for%>-slingas initiala deklaration"
#: c-decl.c:8165
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "declaration of non-variable %qD in %<for%> loop initial declaration"
-msgstr "deklaration av icke-variabel %q+D i %<for%>-slingas initiala deklaration"
+msgstr "deklaration av icke-variabel %qD i %<for%>-slingas initiala deklaration"
#: c-decl.c:8416
#, gcc-internal-format
@@ -20953,15 +20953,15 @@ msgid "badly nested C headers from preprocessor"
msgstr "felaktigt inkapslade C-huvuden från preprocessorn"
#: c-lex.c:267
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "ignoring #pragma %s %s"
-msgstr "%Hignorerar #pragma %s %s"
+msgstr "ignorerar #pragma %s %s"
#. ... or not.
#: c-lex.c:383
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "stray %<@%> in program"
-msgstr "%Höverblivet %<@%> i program"
+msgstr "överblivet %<@%> i program"
#: c-lex.c:398
#, gcc-internal-format
@@ -20994,9 +20994,9 @@ msgid "this decimal constant would be unsigned in ISO C90"
msgstr "denna decimala konstant skulle varit teckenlös i ISO C90"
#: c-lex.c:633
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "unsuffixed float constant"
-msgstr "icke-standardsuffix på flyttalskonstant"
+msgstr "flyttalskonstant utan suffix"
#: c-lex.c:665
#, gcc-internal-format
@@ -21229,9 +21229,9 @@ msgid "too late for # directive to set debug directory"
msgstr "för sent för #-direktiv att ange felsökningskatalog"
#: c-parser.c:232
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "identifier %qE conflicts with C++ keyword"
-msgstr "identifieraren %qs står i konflikt med ett C++-nyckelord"
+msgstr "identifieraren %qE står i konflikt med ett nyckelord i C++"
#: c-parser.c:996
#, gcc-internal-format
@@ -21736,9 +21736,9 @@ msgid "#pragma pack (pop) encountered without matching #pragma pack (push)"
msgstr "#pragma pack (pop) påträffat utan matchande #pragma pack (push)"
#: c-pragma.c:115
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "#pragma pack(pop, %E) encountered without matching #pragma pack(push, %E)"
-msgstr "#pragma pack(pop, %s) påträffat utan matchande #pragma pack(push, %s)"
+msgstr "#pragma pack(pop, %E) påträffat utan matchande #pragma pack(push, %E)"
#: c-pragma.c:129
#, gcc-internal-format
@@ -21776,9 +21776,9 @@ msgid "malformed %<#pragma pack(pop[, id])%> - ignored"
msgstr "fel utformat %<#pragma pack(pop[, id])%> - ignoreras"
#: c-pragma.c:183
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "unknown action %qE for %<#pragma pack%> - ignored"
-msgstr "okänd åtgärd %qs för %<#pragma pack%> - ignoreras"
+msgstr "okänd åtgärd %qE för %<#pragma pack%> - ignoreras"
#: c-pragma.c:212
#, gcc-internal-format
@@ -21991,19 +21991,19 @@ msgid "#pragma message: %s"
msgstr "#pragma message: %s"
#: c-pragma.c:1061
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid location for %<pragma %s%>, ignored"
-msgstr "ogiltig konstant i %<#pragma pack%> - ignoreras"
+msgstr "ogiltig plats för %<#pragma %s%>, ignoreras"
#: c-pragma.c:1068 c-pragma.c:1082
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "malformed %<#pragma %s%>, ignored"
-msgstr "felformaterat %<#pragma message%>, ignoreras"
+msgstr "felformaterat %<#pragma %s%>, ignoreras"
#: c-pragma.c:1088
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "junk at end of %<#pragma %s%>"
-msgstr "skräp vid slutet av #pragma %s"
+msgstr "skräp vid slutet av %<#pragma %s%>"
#: c-pragma.c:1106
#, gcc-internal-format
@@ -22011,9 +22011,9 @@ msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported for C++"
msgstr "%<#pragma STDC FLOAT_CONST_DECIMAL64%> stöds inte för C++"
#: c-pragma.c:1115
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported on this target"
-msgstr "#pragma extern_prefix stöds inte på denna målarkitektur"
+msgstr "%<#pragma STDC FLOAT_CONST_DECIMAL64%> stöds inte på denna målarkitektur"
#: c-pragma.c:1121
#, gcc-internal-format
@@ -22082,9 +22082,9 @@ msgid "types are not quite compatible"
msgstr "typerna är inte riktigt kompatibla"
#: c-typeck.c:1198
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "pointer target types incompatible in C++"
-msgstr "pekare-på-medlemstyp %qT är inkompatibel med objekttyp %qT"
+msgstr "pekares måltyper är inkompatibla i C++"
#: c-typeck.c:1528
#, gcc-internal-format
@@ -22165,9 +22165,9 @@ msgid "function called through a non-compatible type"
msgstr "funktion anropad via en inkompatibel typ"
#: c-typeck.c:2657 c-typeck.c:2711
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "function with qualified void return type called"
-msgstr "funktionsdefinition som har kvalificerad void-returtyp"
+msgstr "funktion med kvalificerad void-returtyp anropad"
#: c-typeck.c:2834
#, gcc-internal-format
@@ -22235,9 +22235,9 @@ msgid "comparison with string literal results in unspecified behavior"
msgstr "jämförelse med strängliteral resulterar i odefinierat beteende"
#: c-typeck.c:3122
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "comparison between %qT and %qT"
-msgstr "jämförelse mellan %q#T och %q#T"
+msgstr "jämförelse mellan %qT och %qT"
#: c-typeck.c:3174
#, gcc-internal-format
@@ -22295,9 +22295,9 @@ msgid "decrement of pointer to unknown structure"
msgstr "minskning av pekare på okänd post"
#: c-typeck.c:3581
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
-msgstr "tar adress till något temporärt"
+msgstr "tar adressen till uttryck av typ %<void%>"
#: c-typeck.c:3750
#, gcc-internal-format
@@ -22395,9 +22395,9 @@ msgid "ISO C forbids conditional expr with only one void side"
msgstr "ISO C förbjuder villkorliga uttryck med bara en sida void"
#: c-typeck.c:4075
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "pointers to disjoint address spaces used in conditional expression"
-msgstr "pekartyper stämmer inte i villkorsuttryck"
+msgstr "pekare till skilda adressrymder använda i villkorsuttryck"
#: c-typeck.c:4083 c-typeck.c:4092
#, gcc-internal-format
@@ -22523,14 +22523,14 @@ msgid "expected %qT but argument is of type %qT"
msgstr "%qT förväntades men argumentet har typ %qT"
#: c-typeck.c:4907
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
-msgstr "pekarmål när argument %d till %qE skickades skiljer i teckenhet"
+msgstr "enum-konvertering när argument %d till %qE skickades är ogiltigt i C++"
#: c-typeck.c:4913
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
-msgstr "ogiltig konvertering i retursats"
+msgstr "enum-konvertering i retursats är ogiltigt i C++"
#: c-typeck.c:4942
#, gcc-internal-format
@@ -22588,19 +22588,19 @@ msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr "begäran om implicit konvertering från %qT till %qT tillåts inte i C++"
#: c-typeck.c:5148
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "passing argument %d of %qE from pointer to non-enclosed address space"
-msgstr "skickar argument %d till %qE från inkompatibel pekartyp"
+msgstr "skickar argument %d till %qE från pekare till adressutrymme som inte är inneslutet"
#: c-typeck.c:5152
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "assignment from pointer to non-enclosed address space"
-msgstr "typkonvertering från pekare till heltal av annan storlek"
+msgstr "tilldelning från pekare till adressutrymme som inte är inneslutet"
#: c-typeck.c:5156
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "initialization from pointer to non-enclosed address space"
-msgstr "initiering från inkompatibel pekartyp"
+msgstr "initiering från pekare till adressutrymme som inte är inneslutet"
#: c-typeck.c:5160
#, gcc-internal-format
@@ -22808,9 +22808,9 @@ msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "%<long%>-switch-uttryck konverteras inte till %<int%> i ISO C"
#: c-typeck.c:8463 c-typeck.c:8471
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "case label is not an integer constant expression"
-msgstr "storlek på vektorn är inte ett konstantuttryck av heltalstyp"
+msgstr "case-etikett är inte ett konstant heltalsuttryck"
#: c-typeck.c:8477 cp/parser.c:7750
#, gcc-internal-format
@@ -22823,9 +22823,9 @@ msgid "%<default%> label not within a switch statement"
msgstr "%<default%>-etikett som inte ligger i en switch-sats"
#: c-typeck.c:8562 cp/parser.c:8041
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "suggest explicit braces to avoid ambiguous %<else%>"
-msgstr "%Hföreslår uttryckliga klamrar för att undvika tvetydighet i %<else%>"
+msgstr "föreslår uttryckliga klamrar för att undvika tvetydighet i %<else%>"
#: c-typeck.c:8671 cp/cp-gimplify.c:92 cp/parser.c:8391
#, gcc-internal-format
@@ -22878,9 +22878,9 @@ msgid "comparing floating point with == or != is unsafe"
msgstr "jämföra flyttal med == eller != är osäkert"
#: c-typeck.c:9397 c-typeck.c:9485
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "comparison of pointers to disjoint address spaces"
-msgstr "jämförelse av skilda pekartyper saknar en typkonvertering"
+msgstr "jämförelse av pekare till skilda adressutrymmen"
#: c-typeck.c:9404 c-typeck.c:9410
#, gcc-internal-format
@@ -23288,9 +23288,9 @@ msgid "missing REG_EH_REGION note in the end of bb %i"
msgstr "REG_EH_REGION-notering saknas i slutet av bb %i"
#: cfgrtl.c:1909
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "too many eh edges %i"
-msgstr "för många utgående bågar från bb %i"
+msgstr "för många eh-bågar %i"
#: cfgrtl.c:1917
#, gcc-internal-format
@@ -23303,7 +23303,7 @@ msgid "fallthru edge after unconditional jump %i"
msgstr "fall igenom-båge efter ovillkorligt hopp %i"
#: cfgrtl.c:1927
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "wrong number of branch edges after unconditional jump %i"
msgstr "fel antal förgreningsbågar efter ovillkorligt hopp %i"
@@ -23438,9 +23438,9 @@ msgid "caller edge frequency is too large"
msgstr "frekvensen anropande båge är för stor"
#: cgraphunit.c:633
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "caller edge frequency %i does not match BB freqency %i"
-msgstr "frekvensen anropande båge är för stor"
+msgstr "anropsbåges frekvens %i stämmer inte med GB-frekvens %i"
#: cgraphunit.c:645
#, gcc-internal-format
@@ -23503,9 +23503,9 @@ msgid "shared call_stmt:"
msgstr "delat anropssats:"
#: cgraphunit.c:750
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "edge points to same body alias:"
-msgstr "bågpekare till fel deklaration:"
+msgstr "båge pekar till samma kroppalias:"
#: cgraphunit.c:756
#, gcc-internal-format
@@ -23528,9 +23528,9 @@ msgid "verify_cgraph_node failed"
msgstr "verify_cgraph_node misslyckades"
#: cgraphunit.c:896 cgraphunit.c:916
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<externally_visible%> attribute have effect only on public objects"
-msgstr "%Jattributet %<externally_visible%> har bara effekt på publika objekt"
+msgstr "attributet %<externally_visible%> har bara effekt på publika objekt"
#: cgraphunit.c:1126
#, gcc-internal-format
@@ -23543,9 +23543,9 @@ msgid "nodes with unreleased memory found"
msgstr "noder med ej frigjort minne funna"
#: collect2.c:1505 opts.c:1137
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "LTO support has not been enabled in this configuration"
-msgstr "-m64 stöds inte i denna konfiguration"
+msgstr "LTO-stöd har inte aktiverats i denna konfiguration"
#: collect2.c:1598
#, gcc-internal-format
@@ -23648,14 +23648,14 @@ msgid "%qs has overflowed"
msgstr "%qs har spillt över"
#: coverage.c:350
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "no coverage for function %qE found"
-msgstr "det finns ingen täckning för funktionen %qs"
+msgstr "det finns ingen täckning för funktionen %qE"
#: coverage.c:363 coverage.c:366
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "coverage mismatch for function %qE while reading counter %qs"
-msgstr "mismatch i täckning för funktionen %qs när räknaren %qs lästes"
+msgstr "mismatch i täckning för funktionen %qE när räknaren %qs lästes"
#: coverage.c:382
#, gcc-internal-format
@@ -23773,9 +23773,9 @@ msgid "region_array is corrupted for region %i"
msgstr "region_array är trasig för region %i"
#: except.c:3347 except.c:3378
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "lp_array is corrupted for lp %i"
-msgstr "region_array är trasig för region %i"
+msgstr "lp_array är trasig för region %i"
#: except.c:3364
#, gcc-internal-format
@@ -23788,9 +23788,9 @@ msgid "negative nesting depth of region %i"
msgstr "negativt nästningsdjup för region %i"
#: except.c:3383
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "region of lp %i is wrong"
-msgstr "yttre block för region %i är fel"
+msgstr "region för lp %i är fel"
#: except.c:3410
#, gcc-internal-format
@@ -23798,14 +23798,14 @@ msgid "tree list ends on depth %i"
msgstr "trädlista slutar på djup %i"
#: except.c:3415
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "region_array does not match region_tree"
-msgstr "vektor stämmer inte med regionträdet"
+msgstr "region_array stämmer inte med region_tree"
#: except.c:3420
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "lp_array does not match region_tree"
-msgstr "vektor stämmer inte med regionträdet"
+msgstr "lp_array stämmer inte med region_tree"
#: except.c:3427
#, gcc-internal-format
@@ -23836,14 +23836,14 @@ msgid "the frame size of %wd bytes is larger than %wd bytes"
msgstr "ramstorleken på %wd byte är större än %wd byte"
#: final.c:4367 toplev.c:1921
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "could not open final insn dump file %qs: %s"
-msgstr "kunde inte öppna dump-fil %qs: %s"
+msgstr "det gick inte att öppna slutgilgit instruktionsdumpfil %qs: %s"
#: final.c:4423
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "could not close final insn dump file %qs: %s"
-msgstr "kunde inte öppna dump-fil %qs: %s"
+msgstr "det gick inte att stänga slutgiltig instruktionsdumpfil %qs: %s"
#: fixed-value.c:104
#, gcc-internal-format
@@ -23896,9 +23896,9 @@ msgid "fold check: original tree changed by fold"
msgstr "vikningskontroll: originalträdet ändrat av vikning"
#: function.c:254
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "total size of local objects too large"
-msgstr "%Jtotal storlek på lokala objekt är för stor"
+msgstr "total storlek på lokala objekt är för stor"
#: function.c:919 varasm.c:2167
#, gcc-internal-format
@@ -23979,9 +23979,9 @@ msgid "spec failure: unrecognized spec option '%c'"
msgstr "spec-fel: okänd spec-flagga \"%c\""
#: gcc.c:6673
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%s: could not determine length of compare-debug file %s"
-msgstr "det gick inte att skriva till svarsfilen %s"
+msgstr "%s: det gick inte att avgöra längden på compare-debug-filen %s"
#: gcc.c:6684
#, gcc-internal-format
@@ -23989,9 +23989,9 @@ msgid "%s: -fcompare-debug failure (length)"
msgstr "%s: -fcompare-debug misslyckades (längd)"
#: gcc.c:6694 gcc.c:6735
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%s: could not open compare-debug file %s"
-msgstr "%s:kunde inte öppna utdatafilen \"%s\"\n"
+msgstr "%s: det gick inte att öppna compare-debug-filen %s"
#: gcc.c:6714 gcc.c:6751
#, gcc-internal-format
@@ -24107,9 +24107,9 @@ msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr "gimple-kontroll: %s(%s) förväntades, har %s(%s) i %s, vid %s:%d"
#: gimplify.c:2373
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "using result of function returning %<void%>"
-msgstr "ingen retursats i funktion som returnerar icke-void"
+msgstr "använder resultat från funktion som returnerar %<void%>"
#: gimplify.c:4759
#, gcc-internal-format
@@ -24127,29 +24127,29 @@ msgid "memory input %d is not directly addressable"
msgstr "minnesindata %d är inte direkt adresserbar"
#: gimplify.c:5391
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE not specified in enclosing parallel"
-msgstr "%qs inte angiven i omgivande parallel"
+msgstr "%qE inte angiven i omgivande parallel"
#: gimplify.c:5393
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "enclosing parallel"
-msgstr "%Homgivande parallel"
+msgstr "omgivande parallel"
#: gimplify.c:5498
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "iteration variable %qE should be private"
-msgstr "instansvariabel %qs skall vara privat"
+msgstr "instansvariabel %qE skall vara privat"
#: gimplify.c:5512
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "iteration variable %qE should not be firstprivate"
-msgstr "iterationsvariabel %qD får inte vara firstprivate"
+msgstr "iterationsvariabel %qE får inte vara firstprivate"
#: gimplify.c:5515
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "iteration variable %qE should not be reduction"
-msgstr "iterationsvariabel %qs skall inte vara reduction"
+msgstr "iterationsvariabel %qE skall inte vara reduction"
#: gimplify.c:5678
#, fuzzy, gcc-internal-format
diff --git a/gcc/po/zh_CN.po b/gcc/po/zh_CN.po
index 7a85b4d1f99..bf0543eea94 100644
--- a/gcc/po/zh_CN.po
+++ b/gcc/po/zh_CN.po
@@ -1,14 +1,14 @@
# Simplified Chinese translation for gcc.
# Copyright (C) 2005 Free Software Foundation, Inc.
# This file is distributed under the same license as the gcc package.
-# Meng Jie <zuxy.meng@gmail.com>, 2005-2009.
+# Meng Jie <zuxy.meng@gmail.com>, 2005-2010.
#
msgid ""
msgstr ""
"Project-Id-Version: gcc 4.5-b20091203\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
"POT-Creation-Date: 2009-12-03 21:28+0000\n"
-"PO-Revision-Date: 2010-01-11 10:18+0800\n"
+"PO-Revision-Date: 2010-01-20 13:46+0800\n"
"Last-Translator: Meng Jie <zuxy.meng@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"MIME-Version: 1.0\n"
@@ -422,7 +422,7 @@ msgstr "空的标é‡åˆå§‹å€¼è®¾å®šé¡¹"
#: c-typeck.c:6651
msgid "extra elements in scalar initializer"
-msgstr "æ ‡é‡åˆå§‹åŒ–设定中有多余元素"
+msgstr "æ ‡é‡åˆå§‹å€¼è®¾å®šä¸­æœ‰å¤šä½™å…ƒç´ "
#: c-typeck.c:6759 c-typeck.c:6837
msgid "array index in non-array initializer"
@@ -430,7 +430,7 @@ msgstr "在éžæ•°ç»„åˆå§‹å€¼è®¾å®šé¡¹ä¸­å‡ºçŽ°æ•°ç»„索引"
#: c-typeck.c:6764 c-typeck.c:6893
msgid "field name not in record or union initializer"
-msgstr "字段åä¸åœ¨è®°å½•æˆ–è”åˆåˆå§‹åŒ–设定中"
+msgstr "字段åä¸åœ¨è®°å½•æˆ–è”åˆåˆå§‹å€¼è®¾å®šä¸­"
#: c-typeck.c:6810
msgid "array index in initializer not of integer type"
@@ -458,7 +458,7 @@ msgstr "åˆå§‹å€¼è®¾å®šä¸­æ•°æ®ç´¢å¼•èŒƒå›´è¶…出数组边界"
#: c-typeck.c:6948 c-typeck.c:6975 c-typeck.c:7494
msgid "initialized field with side-effects overwritten"
-msgstr "带副作用的字段åˆå§‹åŒ–设定被覆盖"
+msgstr "带副作用的字段åˆå§‹å€¼è®¾å®šè¢«è¦†ç›–"
#: c-typeck.c:6950 c-typeck.c:6977 c-typeck.c:7496
msgid "initialized field overwritten"
@@ -4340,7 +4340,7 @@ msgstr "%3$L处内建函数‘%2$s’的实å‚‘%1$s’必须是一个 POINTER
#: fortran/check.c:653
#, no-c-format
msgid "Array section with a vector subscript at %L shall not be the target of a pointer"
-msgstr "%L处由å‘é‡ä¸‹æ ‡é€‰æ‹©çš„部分数组ä¸åº”是指针的目标"
+msgstr "%L处由å‘é‡ä¸‹æ ‡é€‰æ‹©çš„数组段ä¸åº”是指针的目标"
#: fortran/check.c:664
#, no-c-format
@@ -4487,12 +4487,12 @@ msgstr "%3$L处内建函数‘%2$s’的‘%1$s’实å‚类型必须为 REAL 或
#: fortran/check.c:2335
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be of a dummy variable"
-msgstr "%3$L处内建函数‘%2$s’的实å‚‘%1$s’必须是一个哑元å˜é‡"
+msgstr "%3$L处内建函数‘%2$s’的实å‚‘%1$s’必须是一个哑元"
#: fortran/check.c:2343
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be of an OPTIONAL dummy variable"
-msgstr "%3$L处内建函数‘%2$s’的实å‚‘%1$s’必须是一个 OPTIONAL å“‘å˜é‡"
+msgstr "%3$L处内建函数‘%2$s’的实å‚‘%1$s’必须是一个 OPTIONAL å“‘å…ƒ"
#: fortran/check.c:2359
#, no-c-format
@@ -4717,7 +4717,7 @@ msgstr "%2$C处的过程‘%1$s’已ç»åœ¨%3$L处被定义"
#: fortran/decl.c:821
#, no-c-format
msgid "Name '%s' at %C is already defined as a generic interface at %L"
-msgstr "%2$C 处的å字‘%1$s’已ç»åœ¨ %3$L 处被定义为一般接å£"
+msgstr "%2$C处的å字‘%1$s’已ç»åœ¨%3$L处被定义为泛型接å£"
#: fortran/decl.c:834
#, no-c-format
@@ -5279,7 +5279,7 @@ msgstr "%C处的 ENTRY 语å¥ä¸èƒ½å‡ºçŽ°åœ¨ IF-THEN å—中"
#: fortran/decl.c:4855
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a DO block"
-msgstr "%C处的 ENTRY 语å¥ä¸èƒ½å‡ºçŽ°åœ¨ DO 中"
+msgstr "%C处的 ENTRY 语å¥ä¸èƒ½å‡ºçŽ°åœ¨ DO å—中"
#: fortran/decl.c:4859
#, no-c-format
@@ -5503,9 +5503,9 @@ msgid "Unexpected characters in PARAMETER statement at %C"
msgstr "%C处 PARAMETER 语å¥ä¸­æœ‰éžé¢„期的字符"
#: fortran/decl.c:6313
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Blanket SAVE statement at %C follows previous SAVE statement"
-msgstr "%C 处覆盖层 SAVE 语å¥è·Ÿéšä»¥å‰çš„ SAVE 语å¥"
+msgstr "%C处覆盖 SAVE 语å¥è·Ÿéšä»¥å‰çš„ SAVE 语å¥"
#: fortran/decl.c:6325
#, no-c-format
@@ -5780,9 +5780,9 @@ msgid "There's already a non-generic procedure with binding name '%s' for the de
msgstr "%3$C处派生类型‘%2$s’已ç»æœ‰ä¸€ä¸ªç»‘定å为‘%1$s’的éžæ³›åž‹è¿‡ç¨‹"
#: fortran/decl.c:7627
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Binding at %C must have the same access as already defined binding '%s'"
-msgstr "在 %C 处的æ†ç»‘必须有与已ç»å®šä¹‰çš„æ†ç»‘“%sâ€ç›¸åŒçš„访问æƒé™"
+msgstr "%C处的绑定必须有与已ç»å®šä¹‰çš„绑定‘%s’相åŒçš„访问æƒé™"
#: fortran/decl.c:7676
#, no-c-format
@@ -5790,9 +5790,9 @@ msgid "Expected specific binding name at %C"
msgstr "%C处需è¦ç‰¹å®šçš„绑定å"
#: fortran/decl.c:7686
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' already defined as specific binding for the generic '%s' at %C"
-msgstr "在 %3$C 处“%1$sâ€å·²ç»ä¸ºæ™®é€šçš„“%2$sâ€å®šä¹‰ä¸ºç‰¹å®šçš„é™å®š"
+msgstr "%3$C处‘%1$s’已ç»å®šä¹‰ä¸ºæ³›åž‹çš„‘%2$s’特定的é™å®š"
#: fortran/decl.c:7702
#, no-c-format
@@ -5800,9 +5800,9 @@ msgid "Junk after GENERIC binding at %C"
msgstr "%C 处的泛型绑定åŽæœ‰åžƒåœ¾å­—符"
#: fortran/decl.c:7727
-#, fuzzy, no-c-format
+#, no-c-format
msgid "FINAL declaration at %C must be inside a derived type CONTAINS section"
-msgstr "%C 处的 FINAL 声明必须是在派生类型 CONTAINS 节内"
+msgstr "%C处的 FINAL 声明必须在一个派生类型的 CONTAINS 节内"
#: fortran/decl.c:7738
#, no-c-format
@@ -5835,9 +5835,9 @@ msgid "'%s' at %C is already defined as FINAL procedure!"
msgstr "%2$C 处的‘%1$s’已ç»è¢«å®šä¹‰ä¸º FINALï¼"
#: fortran/decl.c:7866
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Unknown attribute in !GCC$ ATTRIBUTES statement at %C"
-msgstr "%C处 !GCC$ ATTRIBUTES 语å¥ä¸­çš„语法错误"
+msgstr "%C处 !GCC$ ATTRIBUTES 语å¥ä¸­æœ‰æœªçŸ¥çš„属性"
#: fortran/decl.c:7913
#, no-c-format
@@ -5918,14 +5918,14 @@ msgid "elemental function arguments at %C are not compliant"
msgstr "%C处基本函数的实å‚ä¸å…¼å®¹"
#: fortran/expr.c:1967
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Numeric or CHARACTER operands are required in expression at %L"
-msgstr "%L 处的表达å¼ä¸­éœ€è¦æ•°å­—或 CHARACTER æ“作数"
+msgstr "%L处的表达å¼ä¸­éœ€è¦æ•°å­—或 CHARACTER æ“作数"
#: fortran/expr.c:1992
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Concatenation operator in expression at %L must have two CHARACTER operands"
-msgstr "%L 处的表达å¼ä¸­çš„并置è¿ç®—符必须有两个 CHARACTER æ“作数"
+msgstr "%L处表达å¼ä¸­çš„毗连è¿ç®—符必须有两个 CHARACTER æ“作数"
#: fortran/expr.c:1999
#, no-c-format
@@ -5953,14 +5953,14 @@ msgid "Numeric operands are required in expression at %L"
msgstr "%L处的表达å¼éœ€è¦æ•°å­—æ“作数"
#: fortran/expr.c:2137
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Assumed character length variable '%s' in constant expression at %L"
-msgstr "%2$L 处常é‡è¡¨è¾¾å¼ä¸­å‡å®šå­—符长度å˜é‡â€œ%1$sâ€"
+msgstr "%2$L处常é‡è¡¨è¾¾å¼ä¸­æœ‰å‡å®šå­—符长度å˜é‡â€˜%1$s’"
#: fortran/expr.c:2195
-#, fuzzy, no-c-format
+#, no-c-format
msgid "transformational intrinsic '%s' at %L is not permitted in an initialization expression"
-msgstr "在 %2$L 处å˜æ¢å†…建的 %1$s 在åˆå§‹åŒ–表达å¼ä¸­ä¸è¢«å…许"
+msgstr "%2$L处的转æ¢å†…建函数‘%1$s’ä¸å…许用在åˆå§‹åŒ–表达å¼ä¸­"
#: fortran/expr.c:2226
#, no-c-format
@@ -5978,14 +5978,14 @@ msgid "Intrinsic function '%s' at %L is not permitted in an initialization expre
msgstr "%2$L处内建函数‘%1$s’ä¸å…许出现在在åˆå§‹åŒ–表达å¼ä¸­"
#: fortran/expr.c:2327
-#, fuzzy, no-c-format
+#, no-c-format
msgid "PARAMETER '%s' is used at %L before its definition is complete"
-msgstr "在其定义完æˆä»¥å‰åœ¨ %2$L 处使用 PARAMETE“%1$sâ€"
+msgstr "%2$L处 PARAMETER‘%1$s’在其定义完全之å‰è¢«ä½¿ç”¨"
#: fortran/expr.c:2347
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Assumed size array '%s' at %L is not permitted in an initialization expression"
-msgstr "在 %L 处的å‡å®šå¤§å°æ•°ç»„“%1$sâ€åœ¨åˆå§‹åŒ–表达å¼ä¸­ä¸è¢«å…许"
+msgstr "%L处å‡å®šå¤§å°æ•°ç»„‘%1$s’ä¸èƒ½ç”¨åœ¨åœ¨åˆå§‹åŒ–表达å¼ä¸­"
#: fortran/expr.c:2353
#, no-c-format
@@ -5998,9 +5998,9 @@ msgid "Deferred array '%s' at %L is not permitted in an initialization expressio
msgstr "%2$L处的延迟数组‘%1$s’ä¸å…许出现在åˆå§‹åŒ–表达å¼ä¸­"
#: fortran/expr.c:2365
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Array '%s' at %L is a variable, which does not reduce to a constant expression"
-msgstr "%2$L 处数组“%1$sâ€æ˜¯ä¸ªå˜é‡ï¼Œä¸èƒ½è¢«å½’约为常é‡è¡¨è¾¾å¼"
+msgstr "%2$L处数组‘%1$s’是个å˜é‡ï¼Œä¸èƒ½è¢«å½’约为常é‡è¡¨è¾¾å¼"
#: fortran/expr.c:2375
#, no-c-format
@@ -6035,17 +6035,17 @@ msgstr "%2$L处规格函数‘%1$s’ä¸èƒ½æ˜¯ RECURSIVE"
#: fortran/expr.c:2685
#, no-c-format
msgid "Dummy argument '%s' not allowed in expression at %L"
-msgstr "哑元实å‚‘%s’ä¸èƒ½å‡ºçŽ°åœ¨%L处的表达å¼ä¸­"
+msgstr "虚å‚‘%s’ä¸èƒ½å‡ºçŽ°åœ¨%L处的表达å¼ä¸­"
#: fortran/expr.c:2692
#, no-c-format
msgid "Dummy argument '%s' at %L cannot be OPTIONAL"
-msgstr "%2$L处的哑元实å‚‘%1$s’ä¸èƒ½æ˜¯ OPTIONAL"
+msgstr "%2$L处的虚å‚‘%1$s’ä¸èƒ½æ˜¯ OPTIONAL"
#: fortran/expr.c:2699
#, no-c-format
msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)"
-msgstr "%2$L处的‘%1$s’哑元实å‚ä¸èƒ½æ˜¯ INTENT(OUT)"
+msgstr "%2$L处的‘%1$s’虚å‚ä¸èƒ½æ˜¯ INTENT(OUT)"
#: fortran/expr.c:2730
#, no-c-format
@@ -6073,9 +6073,9 @@ msgid "Incompatible ranks in %s (%d and %d) at %L"
msgstr "%4$L%1$s 中秩(%2$d å’Œ %3$d)ä¸å…¼å®¹"
#: fortran/expr.c:2847
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Different shape for %s at %L on dimension %d (%d and %d)"
-msgstr "%s ä¸åŒçš„外形在 %L 处关于维次 %d (%d å’Œ %d)"
+msgstr "%2$L处 %1$s 在第 %3$d 维上外形ä¸åŒ(%4$d å’Œ %5$d)"
#: fortran/expr.c:2893 fortran/expr.c:3153
#, no-c-format
@@ -6147,9 +6147,9 @@ msgid "Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disab
msgstr "%L处按ä½è½¬æ¢ BOZ 时产生算术 NaN。这一检查å¯ç”¨ -fno-range-check 选项ç¦ç”¨"
#: fortran/expr.c:3055
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Incompatible types in DATA statement at %L; attempted conversion of %s to %s"
-msgstr "%L 处 DATA 语å¥ä¸­ç±»åž‹ä¸å…¼å®¹ï¼›ä¼å›¾ä»Ž %s 到 %s 转æ¢"
+msgstr "%L处 DATA 语å¥ä¸­ç±»åž‹ä¸å…¼å®¹ï¼›è¯•å›¾ä»Ž %s 转æ¢åˆ° %s"
#: fortran/expr.c:3091
#, no-c-format
@@ -6157,9 +6157,9 @@ msgid "Pointer assignment target is not a POINTER at %L"
msgstr "%L处指针赋值的目标ä¸æ˜¯ä¸€ä¸ª POINTER"
#: fortran/expr.c:3100
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' in the pointer assignment at %L cannot be an l-value since it is a procedure"
-msgstr "在 %2$L 处指针赋值中的“%1$sâ€ä¸èƒ½æ˜¯ä¸€ä¸ªå€¼å› ä¸ºå®ƒæ˜¯ä¸ªè¿‡ç¨‹"
+msgstr "%2$L处指针赋值中的‘%1$s’ä¸èƒ½æ˜¯ä¸€ä¸ªå·¦å€¼ï¼Œå› ä¸ºå®ƒæ˜¯ä¸€ä¸ªè¿‡ç¨‹"
#: fortran/expr.c:3131
#, no-c-format
@@ -6172,9 +6172,9 @@ msgid "Fortran 2003: Bounds specification for '%s' in pointer assignment at %L"
msgstr "Fortran 2003:%2$L处指针赋值语å¥ä¸­â€˜%1$s’的边界规格"
#: fortran/expr.c:3142
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Pointer bounds remapping at %L is not yet implemented in gfortran"
-msgstr "在 %L 处的指针é™å®šé‡æ˜ å°„在 gfortran 中还未实现"
+msgstr "%L处的指针é™å®šé‡æ˜ å°„在 gfortran 中尚未实现"
#: fortran/expr.c:3162
#, no-c-format
@@ -6217,14 +6217,14 @@ msgid "Interface mismatch in procedure pointer assignment at %L: %s"
msgstr "%L处过程指针赋值中接å£ä¸åŒ¹é…:%s"
#: fortran/expr.c:3282
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Different types in pointer assignment at %L; attempted assignment of %s to %s"
-msgstr "%L 处指针赋值时类型ä¸åŒï¼›ä¼å›¾èµ‹å€¼ %s 到 %s"
+msgstr "%L处指针赋值时类型ä¸åŒï¼›è¯•å›¾å°† %s 赋值给 %s"
#: fortran/expr.c:3290
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Different kind type parameters in pointer assignment at %L"
-msgstr "%L 处指针赋值时ä¸åŒç±»åž‹çš„å‚æ•°"
+msgstr "%L处指针赋值时å‚æ•°ç§åˆ«ç±»åž‹ä¸åŒ"
#: fortran/expr.c:3297
#, no-c-format
@@ -6232,9 +6232,9 @@ msgid "Different ranks in pointer assignment at %L"
msgstr "%L处指针赋值时秩ä¸åŒ"
#: fortran/expr.c:3319
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Pointer assignment target is neither TARGET nor POINTER at %L"
-msgstr "%L 处指针赋值的目标既ä¸æ˜¯ TARGET 也ä¸æ˜¯ POINTER"
+msgstr "%L处指针赋值的目标既ä¸æ˜¯ TARGET 也ä¸æ˜¯ POINTER"
#: fortran/expr.c:3326
#, no-c-format
@@ -6247,9 +6247,9 @@ msgid "Pointer assignment with vector subscript on rhs at %L"
msgstr "%L处指针赋值的å³æ‰‹è¾¹å¸¦æœ‰å‘é‡ä¸‹æ ‡"
#: fortran/expr.c:3340
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Pointer assignment target has PROTECTED attribute at %L"
-msgstr "%L 处指针赋值目标对象有 PROTECTED 属性"
+msgstr "%L处指针赋值目标对象有 PROTECTED 属性"
#: fortran/gfortranspec.c:245
#, c-format
@@ -6376,9 +6376,9 @@ msgid "Intrinsic operator interface at %L must be a FUNCTION"
msgstr "%L处内建è¿ç®—符接å£å¿…须是一个 FUNCTION"
#: fortran/interface.c:655
-#, fuzzy, no-c-format
+#, no-c-format
msgid "First argument of defined assignment at %L must be INTENT(OUT) or INTENT(INOUT)"
-msgstr "%L 处定义赋值的第一个å‚数必须是 INTENT(OUT) 或 INTENT(INOUT)"
+msgstr "%L处定义赋值的第一个å‚数必须是 INTENT(OUT) 或 INTENT(INOUT)"
#: fortran/interface.c:662
#, no-c-format
@@ -6443,12 +6443,12 @@ msgstr "%2$L处实å‚‘%1$s’秩ä¸åŒ¹é…(%3$d å’Œ %4$d)"
#: fortran/interface.c:1486
#, no-c-format
msgid "Fortran 2003: Scalar CHARACTER actual argument with array dummy argument '%s' at %L"
-msgstr "Fortran 2003:%2$Lå¤„æ ‡é‡ CHARACTER 实å‚带有数组哑å‚数‘%1$s’"
+msgstr "Fortran 2003:%2$Lå¤„æ ‡é‡ CHARACTER 实å‚带有数组虚å‚‘%1$s’"
#: fortran/interface.c:1511
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Element of assumed-shaped array passed to dummy argument '%s' at %L"
-msgstr "%2$L 处å‡å®šå¤–形的数组的元素传递给哑å‚数“%1$sâ€"
+msgstr "%2$L处å‡å®šå¤–形的数组的元素传递给虚å‚‘%1$s’"
#: fortran/interface.c:1828
#, no-c-format
@@ -6456,9 +6456,9 @@ msgid "Keyword argument '%s' at %L is not in the procedure"
msgstr "%2$L处关键字实å‚‘%1$s’ä¸åœ¨è¿‡ç¨‹é‡Œ"
#: fortran/interface.c:1836
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Keyword argument '%s' at %L is already associated with another actual argument"
-msgstr "在 %C 处关键字å‚数“%sâ€å·²ç»ä¸Žåˆ«çš„实å‚相关"
+msgstr "%C处关键字实å‚‘%s’已ç»ä¸Žåˆ«çš„实å‚相关"
#: fortran/interface.c:1846
#, no-c-format
@@ -6476,24 +6476,24 @@ msgid "Unexpected alternate return spec in subroutine call at %L"
msgstr "%L处å­è¿›ç¨‹è°ƒç”¨ä¸­çš„替代返回é™å®šä¸Žé¢„期ä¸ç¬¦"
#: fortran/interface.c:1889
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Character length mismatch (%ld/%ld) between actual argument and pointer or allocatable dummy argument '%s' at %L"
-msgstr "在实å‚和指针或 %4$L 处å¯åˆ†é…å“‘å‚数“%3$sâ€å®žå‚之间的字符长度失é…(%1$lu/%2$lu)"
+msgstr "%4$L处实å‚和指针或å¯åˆ†é…虚å‚‘%3$s’间字符长度ä¸åŒ¹é…(%1$lu/%2$lu)"
#: fortran/interface.c:1896
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Character length mismatch (%ld/%ld) between actual argument and assumed-shape dummy argument '%s' at %L"
-msgstr "在 %4$L 处实å‚å’Œå‡å®šæˆå½¢å“‘å‚数“%3$sâ€ä¹‹é—´çš„字符长度失é…(%1$lu/%2$lu)"
+msgstr "%4$L处实å‚å’Œå‡å®šå¤–形虚å‚‘%3$s’间字符长度ä¸åŒ¹é…(%1$lu/%2$lu)"
#: fortran/interface.c:1912
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Character length of actual argument shorter than of dummy argument '%s' (%lu/%lu) at %L"
-msgstr "在 %L 处实å‚的字符长度短于哑å‚数“%sâ€(%lu/%lu)"
+msgstr "%4$L处实å‚的字符长度短于虚å‚‘%1$s’(%2$lu/%3$lu)"
#: fortran/interface.c:1917
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Actual argument contains too few elements for dummy argument '%s' (%lu/%lu) at %L"
-msgstr "在 %4$L 处实å‚包å«çš„元素对于哑å‚数“%1$sâ€(%2$lu/%3$lu)æ¥è¯´å¤ªå°‘了"
+msgstr "%4$L处实å‚包å«çš„元素对于虚å‚‘%1$s’(%2$lu/%3$lu)而言太少"
#: fortran/interface.c:1934
#, no-c-format
@@ -6528,32 +6528,32 @@ msgstr "‘%s’的实å‚在%L处必须是 ALLOCATABLE çš„"
#: fortran/interface.c:2001
#, no-c-format
msgid "Actual argument at %L must be definable as the dummy argument '%s' is INTENT = OUT/INOUT"
-msgstr "%L处的实å‚必须是å¯å®šä¹‰çš„,因为哑å‚数‘%s’是 INTENT = OUT/INOUT"
+msgstr "%L处的实å‚必须是å¯å®šä¹‰çš„,因为虚å‚‘%s’是 INTENT = OUT/INOUT"
#: fortran/interface.c:2010
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Actual argument at %L is use-associated with PROTECTED attribute and dummy argument '%s' is INTENT = OUT/INOUT"
-msgstr "在 %1$L 处实际å‚数是使用相关的 PROTECTED 属性并且å‡å‚数“%2$sâ€æ˜¯ INTENT = OUT/INOUT"
+msgstr "%L处实å‚与 PROTECTED 属性使用相关,而虚å‚‘%s’是 INTENT = OUT/INOUT"
#: fortran/interface.c:2023
#, no-c-format
msgid "Array-section actual argument with vector subscripts at %L is incompatible with INTENT(OUT), INTENT(INOUT) or VOLATILE attribute of the dummy argument '%s'"
-msgstr "%L处带有å‘é‡ä¸‹æ ‡çš„数组节实际å‚数与哑实å‚‘%s’的 INTENT(OUT)ã€INTENT(INOUT) 或 VOLATILE 属性ä¸å…¼å®¹"
+msgstr "%L处带有å‘é‡ä¸‹æ ‡çš„数组节实际å‚数与虚å‚‘%s’的 INTENT(OUT)ã€INTENT(INOUT) 或 VOLATILE 属性ä¸å…¼å®¹"
#: fortran/interface.c:2040
-#, fuzzy, no-c-format
+#, 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 "在 %L 处å‡å®šå¤–形实际的å‚数由于 VOLATILE 属性与éžé‡‡å–å‡å®šå¤–å½¢å‡å‚数“%sâ€ä¸å…¼å®¹"
+msgstr "%L处å‡å®šå¤–形的实å‚由于 VOLATILE 属性而与éžå‡å®šå¤–形虚å‚‘%s’ä¸å…¼å®¹"
#: fortran/interface.c:2052
-#, fuzzy, no-c-format
+#, 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 "在 %L 处数组节实际的å‚数由于 VOLATILE 属性与éžå‡å®šå¤–å½¢å‡å‚数“%sâ€ä¸å…¼å®¹"
+msgstr "%L处数组节实å‚由于 VOLATILE 属性而与éžå‡å®šå¤–形虚å‚‘%s’ä¸å…¼å®¹"
#: fortran/interface.c:2071
-#, fuzzy, no-c-format
+#, 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 "在 %L 处指针数组实际的å‚数由于 VOLATILE 属性è¦æ±‚一个å‡å®šå¤–形或指针数组å‡å‚æ•° “%sâ€"
+msgstr "%L处指针数组的实å‚由于 VOLATILE 属性è¦æ±‚一个å‡å®šå¤–形或指针数组虚å‚‘%s’"
#: fortran/interface.c:2101
#, no-c-format
@@ -6561,24 +6561,24 @@ msgid "Missing actual argument for argument '%s' at %L"
msgstr "å‚数‘%s’在%L处缺少实å‚"
#: fortran/interface.c:2287
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Same actual argument associated with INTENT(%s) argument '%s' and INTENT(%s) argument '%s' at %L"
-msgstr "åŒæ ·çš„与 INTENT(%1$s) å‚数“%2$sâ€ç›¸å…³çš„实际å‚数和在 %4$L 处 INTENT(%3$s) å‚数“%sâ€"
+msgstr "%5$L处åŒæ ·çš„实际å‚数与 INTENT(%1$s) 实å‚‘%2$s’和 INTENT(%3$s)实å‚‘%4$s’相关è”"
#: fortran/interface.c:2343
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Procedure argument at %L is INTENT(IN) while interface specifies INTENT(%s)"
-msgstr "当接å£æŒ‡å®š INTENT(%2$s) 时在 %1$L 处过程å‚数是 INTENT(IN)"
+msgstr "%L处过程实å‚是 INTENT(IN) 而接å£æŒ‡å®šäº† INTENT(%s)"
#: fortran/interface.c:2353
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Procedure argument at %L is local to a PURE procedure and is passed to an INTENT(%s) argument"
-msgstr "在 %1$L 处的过程å‚数对于 PURE 过程是局部的å‚数并且被传递给一个 INTENT(%2$s) å‚æ•°"
+msgstr "%L处的过程å‚数对于 PURE 过程是局部的,但被传递给一个 INTENT(%2s) å‚æ•°"
#: fortran/interface.c:2361
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Procedure argument at %L is local to a PURE procedure and has the POINTER attribute"
-msgstr "在 %2$L 处的过程å‚数对于 PURE 过程是局部的å‚数并且有 POINTER 属性"
+msgstr "%L处的过程å‚数对于 PURE 过程是局部的,但是有 POINTER 属性"
#: fortran/interface.c:2387
#, no-c-format
@@ -6586,9 +6586,9 @@ msgid "Procedure '%s' called with an implicit interface at %L"
msgstr "调用过程‘%s’带éšå¼æŽ¥å£ï¼Œä½äºŽ %L"
#: fortran/interface.c:2398
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Keyword argument requires explicit interface for procedure '%s' at %L"
-msgstr "%2$L 处过程“%1$sâ€çš„关键字å‚æ•°è¦æ±‚显å¼çš„接å£"
+msgstr "%2$L处过程‘%1$s’的关键字å‚æ•°è¦æ±‚显å¼çš„接å£"
#: fortran/interface.c:2430
#, no-c-format
@@ -6606,9 +6606,9 @@ msgid "Entity '%s' at %C is already present in the interface"
msgstr "%2$C处实体‘%1$s’已ç»å‡ºçŽ°åœ¨æŽ¥å£ä¸­"
#: fortran/intrinsic.c:961
-#, fuzzy, no-c-format
+#, no-c-format
msgid "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."
-msgstr "在 %2$L 处内在的“%1$sâ€ä¸åŒ…å«åœ¨é€‰ä¸­çš„标准中,但是 %3$s 和“%4$sâ€å°†æŒ‰å£°æ˜Žäº† EXTERNAL æ¥å¤„ç†ã€‚ 使用一个适当的 -std=* 选项或定义 -fall-intrinsics 以å…许这个内在的。"
+msgstr "%2$L处内建的‘%1$s’ä¸åŒ…å«åœ¨é€‰ä¸­çš„标准中,但是 %3$s 和‘%4$s’将按声明为 EXTERNAL æ¥å¤„ç†ã€‚使用一个适当的 -std=* 选项或定义 -fall-intrinsics 以å…许这个建函数。"
#: fortran/intrinsic.c:3241
#, no-c-format
@@ -6616,9 +6616,9 @@ msgid "Too many arguments in call to '%s' at %L"
msgstr "%2$L处对‘%1$s’的调用给出的å‚数太多"
#: fortran/intrinsic.c:3256
-#, fuzzy, no-c-format
+#, no-c-format
msgid "The argument list functions %%VAL, %%LOC or %%REF are not allowed in this context at %L"
-msgstr "å‚数列表功能 %%VALã€%%LOC 或 %%REF 在 %L 处该上下文中ä¸è¢«å…许"
+msgstr "å‚数列表函数 %%VALã€%%LOC 或 %%REF 在%L处该上下文中ä¸è¢«å…许"
#: fortran/intrinsic.c:3259
#, no-c-format
@@ -6626,9 +6626,9 @@ msgid "Can't find keyword named '%s' in call to '%s' at %L"
msgstr "%3$L处对‘%2$s’的调用中找ä¸åˆ°å为‘%1$s’的关键字"
#: fortran/intrinsic.c:3266
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Argument '%s' is appears twice in call to '%s' at %L"
-msgstr "å‚数“%1$sâ€ï¼Œåœ¨ %3$L 处调用“%2$sâ€æ—¶å‡ºçŽ°ä¸¤æ¬¡"
+msgstr "%3$L处å‚数‘%1$s’在调用‘%2$s’时出现两次"
#: fortran/intrinsic.c:3280
#, no-c-format
@@ -6656,9 +6656,9 @@ msgid "Fortran 2003: Function '%s' as initialization expression at %L"
msgstr "Fortran 2003:函数‘%s’在%L处用作åˆå§‹åŒ–表达å¼"
#: fortran/intrinsic.c:3857
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Fortran 2003: Elemental function as initialization expression with non-integer/non-character arguments at %L"
-msgstr "Fortran 2003:作为åˆå§‹è¡¨è¾¾å¼çš„基本函数在 %L 处用整数或éžå­—符的å‚æ•°"
+msgstr "Fortran 2003:作为åˆå§‹è¡¨è¾¾å¼çš„基本函数在%L处使用了éžæ•´æ•°æˆ–éžå­—符的å‚æ•°"
#: fortran/intrinsic.c:3918
#, no-c-format
@@ -6681,14 +6681,14 @@ msgid "Can't convert %s to %s at %L"
msgstr "ä¸èƒ½å°† %s 转æ¢ä¸º %s,于 %L"
#: fortran/intrinsic.c:4135
-#, fuzzy, no-c-format
+#, 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 "在 %L 处声明的“%sâ€å¯èƒ½é®ç›–内在的相åŒå字。 为了调用内在的,è¦æ±‚显å¼çš„ INTRINSIC 声明。"
+msgstr "%L处声明的‘%s’å¯èƒ½æŽ©ç›–åŒå的内建函数。调用内建函数å¯èƒ½éœ€è¦æ˜¾å¼çš„ INTRINSIC 声明。"
#: fortran/intrinsic.c:4140
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' declared at %L is also the name of an intrinsic. It can only be called via an explicit interface or if declared EXTERNAL."
-msgstr "在 %L 处声明的“%sâ€ä¹Ÿæ˜¯ä¸€ä¸ªå†…在的å字。 åªèƒ½é€šè¿‡ç»è¿‡ä¸€ä¸ªæ˜¾å¼æŽ¥å£æˆ–声明 EXTERNAL æ¥è°ƒç”¨å®ƒã€‚"
+msgstr "%2$L处声明的‘%1$s’也是一个内建函数的å字。它åªèƒ½é€šè¿‡ä¸€ä¸ªæ˜¾å¼æŽ¥å£æˆ–声明 EXTERNAL æ¥è°ƒç”¨ã€‚"
#: fortran/io.c:167 fortran/primary.c:771
#, no-c-format
@@ -6878,9 +6878,9 @@ msgid "Variable '%s' at %L has not been assigned a format label"
msgstr "å˜é‡â€˜%s’在 %L 尚未分é…到格å¼æ ‡å·"
#: fortran/io.c:1405
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Scalar '%s' in FORMAT tag at %L is not an ASSIGNED variable"
-msgstr "%2$L 处的 FORMAT 标记中的标é‡â€œ%1$sâ€ä¸æ˜¯ä¸€ä¸ª ASSIGNED å˜é‡"
+msgstr "%2$L处的 FORMAT 标记中的标é‡â€˜%1$s’ä¸æ˜¯ä¸€ä¸ª ASSIGNED å˜é‡"
#: fortran/io.c:1417
#, no-c-format
@@ -7038,9 +7038,9 @@ msgid "Duplicate NML specification at %C"
msgstr "%C处é‡å¤çš„ NML 规格"
#: fortran/io.c:2585
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Symbol '%s' at %C must be a NAMELIST group name"
-msgstr "%2$C 处的符å·â€œ%1$sâ€å¿…须是个 NAMELIST 组å"
+msgstr "%2$C处的符å·â€˜%1$s’必须是个 NAMELIST 组å"
#: fortran/io.c:2650
#, no-c-format
@@ -7058,9 +7058,9 @@ msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER var
msgstr "%L处的 UNIT 规格必须是 INTEGER 表达å¼æˆ–一个 CHARACTER å˜é‡"
#: fortran/io.c:2758
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Invalid form of WRITE statement at %L, UNIT required"
-msgstr "%L 处 WRITE 语å¥çš„éžæ³•å½¢å¼ï¼Œè¦æ±‚ UNIT"
+msgstr "%L处 WRITE 语å¥å½¢å¼æ— æ•ˆï¼Œéœ€è¦ UNIT"
#: fortran/io.c:2769
#, no-c-format
@@ -7113,9 +7113,9 @@ msgid "Expected expression in %s statement at %C"
msgstr "%2$Cå¤„éœ€è¦ %1$s 语å¥"
#: fortran/io.c:3000
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Variable '%s' in input list at %C cannot be INTENT(IN)"
-msgstr "在 %2$C 处输入列表中å˜é‡â€œ%1$sâ€ä¸èƒ½æ˜¯ INTENT(IN)"
+msgstr "%2$C处输入列表中的å˜é‡â€˜%1$s’ä¸èƒ½æ˜¯ INTENT(IN)"
#: fortran/io.c:3010
#, no-c-format
@@ -7123,9 +7123,9 @@ msgid "Cannot read to variable '%s' in PURE procedure at %C"
msgstr "ä¸èƒ½åœ¨%2$C处的 PURE 过程中读å–å˜é‡â€˜%1$s’"
#: fortran/io.c:3027
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Cannot write to internal file unit '%s' at %C inside a PURE procedure"
-msgstr "在 PURE 过程中ä¸èƒ½å†™ %2$C 处的内部文件å•å…ƒâ€œ%1$sâ€"
+msgstr "%2$C处 PURE 过程中ä¸èƒ½å†™å…¥å†…部文件å•å…ƒâ€˜%1$s’"
#. A general purpose syntax error.
#: fortran/io.c:3088 fortran/io.c:3692 fortran/gfortran.h:2364
@@ -7249,9 +7249,9 @@ msgid "Name at %C is too long"
msgstr "%C çš„å字太长"
#: fortran/match.c:556
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Invalid character '$' at %C. Use -fdollar-ok to allow it as an extension"
-msgstr "在 %C 处无效的字符 '$'。使用 -fdollar-ok å…许它作为一个扩展"
+msgstr "%C处无效的字符‘$’。使用 -fdollar-ok 以å…许它作为一个扩展"
#: fortran/match.c:607 fortran/match.c:655
#, no-c-format
@@ -7299,14 +7299,14 @@ msgid "Syntax error in IF-expression at %C"
msgstr "%C处 IF 表达å¼è¯­æ³•é”™è¯¯"
#: fortran/match.c:1456
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Block label not appropriate for arithmetic IF statement at %C"
-msgstr "%C 处的算术 IF 语å¥å—标记ä¸é€‚åˆ"
+msgstr "%C处的å—æ ‡å·ä¸é€‚于算术 IF 语å¥"
#: fortran/match.c:1494
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Block label is not appropriate for IF statement at %C"
-msgstr "%C 处的 IF 语å¥å—标记ä¸é€‚åˆ"
+msgstr "%C处的å—æ ‡å·ä¸é€‚于 IF 语å¥"
#: fortran/match.c:1574 fortran/primary.c:3007
#, no-c-format
@@ -7339,9 +7339,9 @@ msgid "Unexpected junk after ELSE IF statement at %C"
msgstr "%C处 ELSE IF 语å¥åŽæœ‰éžé¢„期的垃圾字符"
#: fortran/match.c:1862
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Name '%s' in %s statement at %C is not a loop name"
-msgstr "DATA å™è¿°ä¸å…许出现在 %C 处 %s å™è¿°ä¸­çš„å称“%sâ€ä¸æ˜¯ä¸ªå›žåœˆå称"
+msgstr "%3$C处 %2$s 语å¥ä¸­çš„å字‘%1$s’ä¸æ˜¯ä¸€ä¸ªå¾ªçŽ¯å"
#: fortran/match.c:1878
#, no-c-format
@@ -7384,9 +7384,9 @@ msgid "Deleted feature: Assigned GOTO statement at %C"
msgstr "已删除的特性:%C处赋值 GOTO 语å¥"
#: fortran/match.c:2148 fortran/match.c:2200
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Statement label list in GOTO at %C cannot be empty"
-msgstr "%C 处 GOTO 中的语å¥æ ‡å·åˆ—表ä¸èƒ½ä¸ºç©º"
+msgstr "%C处 GOTO 中的语å¥æ ‡å·åˆ—表ä¸èƒ½ä¸ºç©º"
#: fortran/match.c:2210
#, no-c-format
@@ -7420,9 +7420,9 @@ msgid "Bad allocate-object at %C for a PURE procedure"
msgstr "%C处 PURE 过程中分é…对象错误"
#: fortran/match.c:2465
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Type of entity at %L is type incompatible with typespec"
-msgstr "æˆå‘˜æŒ‡é’ˆç±»åž‹%qT与对象类型%qTä¸å…¼å®¹"
+msgstr "%L处实体类型与 typepec 类型ä¸å…¼å®¹"
#: fortran/match.c:2473
#, no-c-format
@@ -7510,9 +7510,9 @@ msgid "Junk after CALL at %C"
msgstr "%C处在 CALL 以åŽæœ‰åžƒåœ¾å­—符"
#: fortran/match.c:2931
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Expected type-bound procedure or procedure pointer component at %C"
-msgstr "å‚数‘%s’在%L处需è¦ä¸€ä¸ªè¿‡ç¨‹"
+msgstr "%C处需è¦ä¸€ä¸ªç±»åž‹é™å®šçš„过程或过程指针组件"
#: fortran/match.c:3150
#, no-c-format
@@ -7528,14 +7528,14 @@ msgstr "符å·â€˜%s’在%C处已ç»æ˜¯ä¸€ä¸ªéž COMMON 的外部符å·"
#. cause it's just semantic, and we can see if there
#. are more errors.
#: fortran/match.c:3245
-#, fuzzy, no-c-format
+#, 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 "在公共å—“%3$sâ€ä¸­çš„ %2$L 处的å˜é‡â€œ%1$sâ€å¿…须被声明为与 C å¯äº’æ“作的类因为公共å—“%4$sâ€æ˜¯ bind(c)"
+msgstr "%4$C处公共å—‘%3$s’中的%2$L处的å˜é‡â€˜%1$s’必须声明为有与 C å¯äº’æ“作的ç§åˆ«ï¼Œå› ä¸ºå…¬å…±å—‘%5$s’是 bind(c)"
#: fortran/match.c:3254
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Variable '%s' in common block '%s' at %C can not be bind(c) since it is not global"
-msgstr "在 %3$C 处的公共å—“%2$sâ€ä¸­çš„å˜é‡â€œ%1$sâ€ä¸èƒ½æ˜¯ bind(c),因为它ä¸æ˜¯å…¨å±€çš„"
+msgstr "%3$C处的公共å—‘%2$s’中的å˜é‡â€˜%1$s’ä¸èƒ½æ˜¯ bind(c),因为它ä¸æ˜¯å…¨å±€çš„"
#: fortran/match.c:3261
#, no-c-format
@@ -7543,9 +7543,9 @@ msgid "Symbol '%s' at %C is already in a COMMON block"
msgstr "符å·â€˜%s’在%C处已ç»åœ¨ä¸€ä¸ª COMMON å—中"
#: fortran/match.c:3269
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Initialized symbol '%s' at %C can only be COMMON in BLOCK DATA"
-msgstr "在 %C 处åˆå§‹åŒ–的符å·â€œ%sâ€ä»…å¯ä»¥æ˜¯åœ¨ BLOCK DATA 中的 COMMON"
+msgstr "%2$C处已åˆå§‹åŒ–的符å·â€˜%1$s’仅å¯ä»¥æ˜¯åœ¨ BLOCK DATA 中的 COMMON"
#: fortran/match.c:3296
#, no-c-format
@@ -7553,44 +7553,44 @@ msgid "Array specification for symbol '%s' in COMMON at %C must be explicit"
msgstr "%2$C处 COMMON 中符å·â€˜%1$s’的数组规格必须是显å¼çš„"
#: fortran/match.c:3306
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Symbol '%s' in COMMON at %C cannot be a POINTER array"
-msgstr "%2$C 处 COMMON 中的符å·â€œ%1$sâ€ä¸èƒ½æ˜¯ä¸ª POINTER 数组"
+msgstr "%2$C处 COMMON 中的符å·â€˜%1$s’ä¸èƒ½æ˜¯ä¸ª POINTER 数组"
#: fortran/match.c:3338
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Symbol '%s', in COMMON block '%s' at %C is being indirectly equivalenced to another COMMON block '%s'"
-msgstr "在 %3$C 处 COMMON å—“%2$sâ€çš„ä¸­ç¬¦å· '%1$s 是间接地等价å¦ä¸€ä¸ª COMMON å— '%4$s'çš„"
+msgstr "%3$C处 COMMON å—‘%2$s’的中符å·â€˜%1$s’间接地等价于å¦ä¸€ä¸ª COMMON å—‘%4$s’"
#: fortran/match.c:3446
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Namelist group name '%s' at %C already has a basic type of %s"
-msgstr "在 %2$C 处的组å列表“%1$sâ€å·²ç»æœ‰ä¸€ä¸ªåŸºæœ¬ç±»åž‹ %3$s"
+msgstr "%2$C处的组å列表‘%1$s’已ç»æœ‰ä¸€ä¸ªåŸºæœ¬ç±»åž‹ %3$s"
#: fortran/match.c:3454
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Namelist group name '%s' at %C already is USE associated and cannot be respecified."
-msgstr "在 %2$C 处的组å列表“%1$sâ€å·²ç»æ˜¯ç›¸å…³çš„ USE 并且ä¸èƒ½é‡æ–°æŒ‡å®š"
+msgstr "%2$C处组å列表‘%1$s’已ç»ä¸º USE 相关因此ä¸èƒ½è¢«é‡æ–°æŒ‡å®šã€‚"
#: fortran/match.c:3481
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Assumed size array '%s' in namelist '%s' at %C is not allowed"
-msgstr "ä¸å…许 %3$L 处 %2$s å字列表中å‡å®šå¤§å°çš„数组“%1$sâ€"
+msgstr "%3$C处å字列表‘%2$s’中的å‡å®šå¤§å°æ•°ç»„‘%1$s’ä¸è¢«å…许"
#: fortran/match.c:3488
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Assumed character length '%s' in namelist '%s' at %C is not allowed"
-msgstr "%3$C 处å字列表 '%2$s’的å‡å®šå­—符长度“%1$sâ€ä¸è¢«å…许"
+msgstr "%3$C处å字列表‘%2$s’中å‡å®šå­—符长度‘%1$s’ä¸è¢«å…许"
#: fortran/match.c:3615
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Derived type component %C is not a permitted EQUIVALENCE member"
-msgstr "派生类型组件 %C 是个ä¸è®¸å¯çš„ EQUIVALENCE æˆå‘˜"
+msgstr "派生类型组件%Cä¸æ˜¯å…许的 EQUIVALENCE æˆå‘˜"
#: fortran/match.c:3623
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Array reference in EQUIVALENCE at %C cannot be an array section"
-msgstr "%C 处 EQUIVALENCE 中的数组引用ä¸èƒ½æ˜¯ä¸ªæ•°ç»„部分"
+msgstr "%C处 EQUIVALENCE 中的数组引用ä¸èƒ½æ˜¯ä¸ªæ•°ç»„段"
#: fortran/match.c:3651
#, no-c-format
@@ -7598,9 +7598,9 @@ msgid "EQUIVALENCE at %C requires two or more objects"
msgstr "%C处的 EQUIVALENCE 需è¦ä¸¤ä¸ªæˆ–更多的对象"
#: fortran/match.c:3665
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C"
-msgstr "试图由在 %3$C 处的 EQUIVALENCE 去间接地é‡å  COMMON å— %1$s å’Œ %2$s"
+msgstr "%3$C处的 EQUIVALENCE 试图间接地é‡å  COMMON å— %1$s å’Œ %2$s"
#: fortran/match.c:3678
#, no-c-format
@@ -7668,9 +7668,9 @@ msgid "ELSEWHERE statement at %C not enclosed in WHERE block"
msgstr "%C处的 ELSEWHERE 语å¥ä¸åœ¨ WHERE å—中"
#: fortran/match.c:4410
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Label '%s' at %C doesn't match WHERE label '%s'"
-msgstr "%2$C 处的标å·â€œ%1$sâ€ä¸åŒ¹é… WHERE æ ‡å·â€œ%2$sâ€"
+msgstr "%2$C处的标å·â€˜%1$s’ä¸åŒ¹é… WHERE æ ‡å·â€˜%3$s’"
#: fortran/match.c:4510
#, no-c-format
@@ -7719,9 +7719,9 @@ msgid "Fortran 2003: module nature in USE statement at %C"
msgstr "Fortran 2003:%C处的 USE 语å¥ä¸­æ¨¡å—本性"
#: fortran/module.c:531
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Module nature in USE statement at %C shall be either INTRINSIC or NON_INTRINSIC"
-msgstr "在 %C 处 USE 语å¥ä¸­çš„模å—本性应该是 INTRINSIC 或 NON_INTRINSIC 中的任何一个"
+msgstr "%C处 USE 语å¥ä¸­çš„模å—本性应该是 INTRINSIC 或 NON_INTRINSIC 中的一个"
#: fortran/module.c:544
#, no-c-format
@@ -7744,9 +7744,9 @@ msgid "Fortran 2003: Renaming operators in USE statements at %C"
msgstr "Fortran 2003:%C处的 USE 语å¥ä¸­æ›´åè¿ç®—符"
#: fortran/module.c:657
-#, fuzzy, no-c-format
+#, no-c-format
msgid "The name '%s' at %C has already been used as an external module name."
-msgstr "%2$C 处的å字“%1$sâ€å·²ç»è¢«ç”¨ä½œå¤–部模å—å。"
+msgstr "%2$C处的å字‘%1$s’已ç»è¢«ç”¨ä½œå¤–部模å—å。"
#: fortran/module.c:934
#, no-c-format
@@ -7841,9 +7841,9 @@ msgid "Bad type in constant expression"
msgstr "常é‡è¡¨è¾¾å¼ä¸­ç±»åž‹é”™è¯¯"
#: fortran/module.c:3152
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Namelist %s cannot be renamed by USE association to %s"
-msgstr "å字列表 %s ä¸èƒ½ç”¨å¯¹ %s çš„å…³è”æ¥æ›´å"
+msgstr "å字列表 %s ä¸èƒ½ä¸ºå¯¹ %s çš„ USE å…³è”æ¥æ›´å"
#: fortran/module.c:4436
#, no-c-format
@@ -7886,14 +7886,14 @@ msgid "Can't delete temporary module file '%s': %s"
msgstr "无法删除临时模å—文件‘%s’:%s"
#: fortran/module.c:5133 fortran/module.c:5216
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Symbol '%s' referenced at %L does not exist in intrinsic module ISO_C_BINDING."
-msgstr "%2$L 处引用的符å·â€œ%1$sâ€åœ¨å†…å»ºæ¨¡å— ISO_C_BINDING 中ä¸å­˜åœ¨"
+msgstr "%2$L处引用的符å·â€˜%1$sâ€™åœ¨å†…å»ºæ¨¡å— ISO_C_BINDING 中ä¸å­˜åœ¨."
#: fortran/module.c:5251
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
-msgstr "%2$L 处引用的符å·â€œ%1$sâ€åœ¨å†…å»ºæ¨¡å— ISO_C_BINDING 中找ä¸åˆ°"
+msgstr "%2$L处引用的符å·â€˜%1$sâ€™åœ¨å†…å»ºæ¨¡å— ISO_C_BINDING 中找ä¸åˆ°"
#: fortran/module.c:5273
#, no-c-format
@@ -7901,29 +7901,29 @@ msgid "Symbol '%s' already declared"
msgstr "符å·â€˜%s’已ç»è¢«å£°æ˜Žè¿‡"
#: fortran/module.c:5328
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name used previously"
-msgstr "在 %2$C 处内在的模å—“%1$sâ€çš„使用与以å‰ä½¿ç”¨çš„éžå†…在的模å—å字相冲çª"
+msgstr "%2$C处对内建模å—‘%1$s’的使用与以å‰ä½¿ç”¨çš„éžå†…建模å—å字冲çª"
#: fortran/module.c:5341
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Symbol '%s' referenced at %L does not exist in intrinsic module ISO_FORTRAN_ENV"
-msgstr "%2$L 处引用的符å·â€œ%1$sâ€åœ¨å†…å»ºæ¨¡å— ISO_FORTRAN_ENV 中ä¸å­˜åœ¨"
+msgstr "%2$L处引用的符å·â€˜%1$sâ€™åœ¨å†…å»ºæ¨¡å— ISO_FORTRAN_ENV 中ä¸å­˜åœ¨"
#: fortran/module.c:5349
-#, fuzzy, no-c-format
+#, 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 "从在 %L å¤„å†…åœ¨çš„æ¨¡å— ISO_FORTRAN_ENV 使用 NUMERIC_STORAGE_SIZE 命å常数与选项 %s 是ä¸å¯å…¼å®¹çš„"
+msgstr "%Lå¤„åœ¨å†…å»ºæ¨¡å— ISO_FORTRAN_ENV 中对 NUMERIC_STORAGE_SIZE 命å常数的使用与选项 %s ä¸å…¼å®¹"
#: fortran/module.c:5377
-#, fuzzy, no-c-format
+#, 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 "从在 %C å¤„å†…åœ¨çš„æ¨¡å— ISO_FORTRAN_ENV 使用 NUMERIC_STORAGE_SIZE 命å常数与选项 %s 是ä¸å¯å…¼å®¹çš„"
+msgstr "%Cå¤„åœ¨å†…å»ºæ¨¡å— ISO_FORTRAN_ENV 中对 NUMERIC_STORAGE_SIZE 命å常数的使用与选项 %s ä¸å…¼å®¹"
#: fortran/module.c:5393
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
-msgstr "%2$L 处引用的符å·â€œ%1$sâ€åœ¨å†…å»ºæ¨¡å— ISO_FORTRAN_ENV 中找ä¸åˆ°"
+msgstr "%2$L处引用的符å·â€˜%1$sâ€™åœ¨å†…å»ºæ¨¡å— ISO_FORTRAN_ENV 中找ä¸åˆ°"
#: fortran/module.c:5427
#, no-c-format
@@ -7946,9 +7946,9 @@ msgid "Can't open module file '%s' for reading at %C: %s"
msgstr "无法打开模å—文件‘%s’读å–,在%C处:%s"
#: fortran/module.c:5458
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name used previously"
-msgstr "在 %2$C 处éžå†…在的模å—“%1$sâ€çš„使用与以å‰ä½¿ç”¨çš„内在的模å—å字相冲çª"
+msgstr "%2$C处对éžå†…建模å—‘%1$s’的使用与之å‰å¯¹å†…建模å—å字的使用相冲çª"
#: fortran/module.c:5473
msgid "Unexpected end of module"
@@ -7960,9 +7960,9 @@ msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr "%2$C处打开的文件的‘%1$s’并éžä¸€ä¸ª GFORTRAN 模å—文件"
#: fortran/module.c:5485
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Parse error when checking module version for file '%s' opened at %C"
-msgstr "当为在 %C 处打开的文件“%sâ€æ£€æŸ¥æ¨¡å—版本时语法分æžé”™è¯¯"
+msgstr "当为在%2$C处打开的文件‘%1$s’检查模å—版本时语法分æžé”™è¯¯"
#: fortran/module.c:5490
#, no-c-format
@@ -7985,9 +7985,9 @@ msgid "Syntax error in OpenMP variable list at %C"
msgstr "%C处的 OpenMP å˜é‡åˆ—表语法错误"
#: fortran/openmp.c:293
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s is not INTRINSIC procedure name at %C"
-msgstr "%2$C 处 %1$s ä¸æ˜¯ INTRINSIC 过程å"
+msgstr "%2$C处 %1$s ä¸æ˜¯ INTRINSIC 过程å"
#: fortran/openmp.c:404
#, no-c-format
@@ -8026,9 +8026,9 @@ msgstr "%2$L处对象‘%1$s’ä¸æ˜¯ä¸€ä¸ªå˜é‡"
#: fortran/openmp.c:824 fortran/openmp.c:834 fortran/openmp.c:841
#: fortran/openmp.c:851
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Symbol '%s' present on multiple clauses at %L"
-msgstr "%L 处符å·â€œ%1$sâ€å‡ºçŽ°åœ¨å¤šä¸ªåˆ†å¥ä¸Š"
+msgstr "%2$L处符å·â€˜%1$s’出现在多个分å¥ä¸Š"
#: fortran/openmp.c:874
#, no-c-format
@@ -8036,19 +8036,19 @@ msgid "Non-THREADPRIVATE object '%s' in COPYIN clause at %L"
msgstr "%2$L处 COPYIN 分å¥ä¸­çš„éž THREADPRIVATE 对象‘%1$s’"
#: fortran/openmp.c:877
-#, fuzzy, no-c-format
+#, no-c-format
msgid "COPYIN clause object '%s' at %L has ALLOCATABLE components"
-msgstr "%2$L 处 COPYIN 分å¥å¯¹è±¡â€œ%1$sâ€æœ‰ ALLOCATABLE 组件"
+msgstr "%2$L处 COPYIN 分å¥å¯¹è±¡â€˜%1$s’有 ALLOCATABLE 组件"
#: fortran/openmp.c:885
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Assumed size array '%s' in COPYPRIVATE clause at %L"
-msgstr "%3$L 处 COPYPRIVATE 分å¥ä¸­å‡å®šå¤§å°çš„数组“%1$sâ€"
+msgstr "%2$L处 COPYPRIVATE 分å¥ä¸­æœ‰å‡å®šå¤§å°çš„数组‘%1$s’"
#: fortran/openmp.c:888
-#, fuzzy, no-c-format
+#, no-c-format
msgid "COPYPRIVATE clause object '%s' at %L has ALLOCATABLE components"
-msgstr "%2$L 处 COPYPRIVATE 分å¥å¯¹è±¡â€œ%1$sâ€æœ‰ ALLOCATABLE 组件"
+msgstr "%2$L处 COPYPRIVATE 分å¥å¯¹è±¡â€˜%1$s’有 ALLOCATABLE 组件"
#: fortran/openmp.c:896
#, no-c-format
@@ -8056,9 +8056,9 @@ msgid "THREADPRIVATE object '%s' in SHARED clause at %L"
msgstr "%2$L处 SHARED 分å¥ä¸­çš„ THREADPRIVATE 对象‘%1$s’"
#: fortran/openmp.c:899
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Cray pointee '%s' in SHARED clause at %L"
-msgstr "%2$L 处 SHARED 分å¥ä¸­çš„ Cray 指针“%1$sâ€"
+msgstr "%2$L处 SHARED 分å¥ä¸­ä¸º Cray 指针引用的‘%1$s’"
#: fortran/openmp.c:907
#, no-c-format
@@ -8071,14 +8071,14 @@ msgid "Cray pointee '%s' in %s clause at %L"
msgstr "%3$L处 %2$s 分å¥ä¸­ çš„Cray 指针目标‘%1$s’"
#: fortran/openmp.c:915
-#, fuzzy, no-c-format
+#, no-c-format
msgid "POINTER object '%s' in %s clause at %L"
-msgstr "%3$L 处 %2$s 分å¥ä¸­çš„ POINTER 对象“%1$sâ€"
+msgstr "%3$L处 %2$s 分å¥ä¸­çš„ POINTER 对象‘%1$s’"
#: fortran/openmp.c:920
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s clause object '%s' has ALLOCATABLE components at %L"
-msgstr "%3$L 处“%1$sâ€åˆ†å¥å¯¹è±¡â€œ%2$sâ€æœ‰ ALLOCATABLE 组件"
+msgstr "%3$L处 %1$s 分å¥å¯¹è±¡â€˜%2$s’有 ALLOCATABLE 组件"
#: fortran/openmp.c:923
#, no-c-format
@@ -8091,9 +8091,9 @@ msgid "Assumed size array '%s' in %s clause at %L"
msgstr "%3$L处 %2$s 分å¥ä¸­å‡å®šå¤§å°çš„数组‘%1$s’"
#: fortran/openmp.c:932
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Variable '%s' in %s clause is used in NAMELIST statement at %L"
-msgstr "在“%2$sâ€åˆ†å¥ä¸­å˜é‡â€œ%1$sâ€å·²è¢«ç”¨åœ¨ NAMELIST 语å¥ä¸­"
+msgstr "%2$s 分å¥ä¸­çš„å˜é‡â€˜%1$s’被用在%3$L处的 NAMELIST 语å¥ä¸­"
#: fortran/openmp.c:941
#, no-c-format
@@ -8191,9 +8191,9 @@ msgid "!$OMP DO iteration variable present on clause other than PRIVATE or LASTP
msgstr "%L处 !$OMP DO 迭代å˜é‡å‡ºçŽ°åœ¨éž PRIVATE 或 LASTPRIVATE 分å¥ä¸­"
#: fortran/openmp.c:1463
-#, fuzzy, no-c-format
+#, no-c-format
msgid "!$OMP DO collapsed loops don't form rectangular iteration space at %L"
-msgstr "在 %L 处,!$OMP DO 崩溃的循环ä¸å½¢æˆçŸ©å½¢è¿­ä»£ç©ºç™½"
+msgstr "%L处 !$OMP DO 折å çš„循环ä¸å½¢æˆçŸ©å½¢è¿­ä»£ç©ºé—´"
#: fortran/openmp.c:1477
#, no-c-format
@@ -8402,14 +8402,14 @@ msgid "Unexpected end of file in '%s'"
msgstr "‘%s’中éžé¢„期的文件结尾"
#: fortran/parse.c:1817
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Derived-type '%s' with SEQUENCE must not have a CONTAINS section at %C"
-msgstr "有 SEQUENCE 的派生类“%1$sâ€å¿…须没有 %C 处的 CONTAINS 段"
+msgstr "%2$C处带有 SEQUENCE 派生类型‘%1$s’ä¸èƒ½æœ‰ CONTAINS 节"
#: fortran/parse.c:1820
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Derived-type '%s' with BIND(C) must not have a CONTAINS section at %C"
-msgstr "有 BIND(C) 的派生类“%1$sâ€å¿…须没有 %C 处的 CONTAINS 段"
+msgstr "带 BIND(C) 的派生类‘%s’在%C处ä¸èƒ½æœ‰ CONTAINS 节"
#: fortran/parse.c:1840
#, no-c-format
@@ -8517,9 +8517,9 @@ msgid "FUNCTION at %C does not belong in a generic subroutine interface"
msgstr "%C处的 FUNCTION ä¸å±žäºŽä¸€ä¸ªæ³›åž‹å‡½æ•°æŽ¥å£"
#: fortran/parse.c:2261
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Name '%s' of ABSTRACT INTERFACE at %C cannot be the same as an intrinsic type"
-msgstr "在 %2$C 处的 ABSTRACT INTERFACE çš„å字“%1$sâ€ä¸èƒ½ä¸Žå†…建类型一样"
+msgstr "%2$C处的 ABSTRACT INTERFACE çš„å字‘%1$s’ä¸èƒ½ä¸Žå†…建类型一样"
#: fortran/parse.c:2292
#, no-c-format
@@ -8527,9 +8527,9 @@ msgid "Unexpected %s statement at %C in INTERFACE body"
msgstr "éžé¢„期的 %s 语å¥å‡ºçŽ°åœ¨%C处的 INTERFACE 体中"
#: fortran/parse.c:2310
-#, fuzzy, no-c-format
+#, no-c-format
msgid "INTERFACE procedure '%s' at %L has the same name as the enclosing procedure"
-msgstr "在 %2$L 处 INTERFACE 过程“%1$sâ€æœ‰ä¸ŽåŒ…装过程相åŒçš„åå­—"
+msgstr "%2$L处 INTERFACE 过程‘%1$s’有与外围过程相åŒçš„åå­—"
#: fortran/parse.c:2431
#, no-c-format
@@ -8582,9 +8582,9 @@ msgid "Duplicate ELSE statements at %L and %C"
msgstr "%L å’Œ%C处é‡å¤çš„ ELSE 语å¥"
#: fortran/parse.c:2846
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Expected a CASE or END SELECT statement following SELECT CASE at %C"
-msgstr "在 %C 处期待的一个 CASE 或 END SELECT 语å¥åŽè·Ÿ SELECT CASE"
+msgstr "%C处 SELECT CASE 之åŽéœ€è¦ CASE 或 END SELECT 语å¥"
#: fortran/parse.c:2929
#, no-c-format
@@ -8657,9 +8657,9 @@ msgid "Global name '%s' at %L is already being used as a %s at %L"
msgstr "%2$L处的å字‘%1$s’已ç»åœ¨%4$L处被用作 %3$s"
#: fortran/parse.c:3889
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Blank BLOCK DATA at %C conflicts with prior BLOCK DATA at %L"
-msgstr "在 %C 的空白 BLOCK DATA 与在 %L 处优先的 BLOCK DATA 冲çª"
+msgstr "%C处空白 BLOCK DATA 与%L处先å‰çš„ BLOCK DATA 冲çª"
#: fortran/parse.c:3915
#, no-c-format
@@ -8785,9 +8785,9 @@ msgid "Unterminated character constant beginning at %C"
msgstr "开始于 %C 的未终结的字符常é‡"
#: fortran/primary.c:1000
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Character '%s' in string at %C is not representable in character kind %d"
-msgstr "在 %2$C 处字符串中的字符“%1$sâ€åœ¨å­—符ç§ç±»%3$d中ä¸æ˜¯å¯è¡¨ç¤ºçš„"
+msgstr "%2$C处字符串中的字符‘%1$s’在字符ç§åˆ« %3$d 中ä¸å¯è¡¨ç¤º"
#: fortran/primary.c:1083
#, no-c-format
@@ -8815,9 +8815,9 @@ msgid "Fortran 2003: PARAMETER symbol in complex constant at %C"
msgstr "Fortran 2003:%C处å¤æ•°å¸¸é‡ä¸­çš„ PARAMETER 符å·"
#: fortran/primary.c:1168
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Error converting PARAMETER constant in complex constant at %C"
-msgstr "åœ¨è½¬æ¢ %C 处å¤æ•°å¸¸é‡ä¸­çš„ PARAMETER 常é‡æ—¶å‡ºé”™"
+msgstr "%C处在å¤æ•°å¸¸é‡ä¸­è½¬æ¢ PARAMETER 常é‡æ—¶å‡ºé”™"
#: fortran/primary.c:1297
#, no-c-format
@@ -8865,9 +8865,9 @@ msgid "Fortran 2003: Structure constructor with missing optional arguments at %C
msgstr "Fortran 2003:%C处的结构构造函数丢失å¯é€‰çš„å‚æ•°"
#: fortran/primary.c:2204
-#, fuzzy, no-c-format
+#, no-c-format
msgid "No initializer for component '%s' given in the structure constructor at %C!"
-msgstr "对 %C 处结构构造中给出的“%1$sâ€ç»„件没有åˆå§‹åŒ–器"
+msgstr "%C处结构构造函数中没有给出组件‘%1$s’的åˆå§‹å€¼è®¾å®š"
#: fortran/primary.c:2260
#, no-c-format
@@ -8880,9 +8880,9 @@ msgid "Fortran 2003: Structure constructor with named arguments at %C"
msgstr "Fortran 2003:%C处的结构构造函数有有åçš„å‚æ•°"
#: fortran/primary.c:2303
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Component initializer without name after component named %s at %C!"
-msgstr "在 %C 处组件指åçš„ %såŽç»„件åˆå§‹åŒ–器没有åå­—ï¼"
+msgstr "%2$C处å为 %s 的组åˆä¹‹åŽçš„组件åˆå§‹å€¼è®¾å®šæ²¡æœ‰åå­—ï¼"
#: fortran/primary.c:2306
#, no-c-format
@@ -8895,9 +8895,9 @@ msgid "Component '%s' is initialized twice in the structure constructor at %C!"
msgstr "%2$C处结构构造函数中组件‘%1$s’被åˆå§‹åŒ–两次ï¼"
#: fortran/primary.c:2395
-#, fuzzy, no-c-format
+#, no-c-format
msgid "component '%s' at %L has already been set by a parent derived type constructor"
-msgstr "%3$L 处的组件“%1$sâ€å·²è¢«çˆ¶è¾ˆæ´¾ç”Ÿç±»åž‹ç»“构器设置"
+msgstr "%2$L处的组件‘%1$s’已被基类派生类型构造函数所设置"
#: fortran/primary.c:2418
#, no-c-format
@@ -8975,19 +8975,19 @@ msgid "Alternate return specifier in function '%s' at %L is not allowed"
msgstr "函数‘%s’中的替代返回é™å®šç¬¦åœ¨%L处ä¸è¢«å…许"
#: fortran/resolve.c:181
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Dummy procedure '%s' of PURE procedure at %L must also be PURE"
-msgstr "在 %L 处 PURE 过程的哑过程“%sâ€å¿…须也是 PURE"
+msgstr "%2$L处 PURE 过程的哑过程‘%1$s’必须也是 PURE"
#: fortran/resolve.c:188
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Dummy procedure at %L not allowed in ELEMENTAL procedure"
-msgstr "在 %L 处的哑程åºä¸å…许出现在 ELEMENTAL 程åºä¸­"
+msgstr "%L处的哑过程ä¸å…许出现在 ELEMENTAL 过程中"
#: fortran/resolve.c:201 fortran/resolve.c:1414
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Unable to find a specific INTRINSIC procedure for the reference '%s' at %L"
-msgstr "在 %2$L 处对“%1$sâ€çš„引用ä¸èƒ½æ‰¾åˆ°ç‰¹å®šçš„ INTRINSIC 过程"
+msgstr "%2$L处对‘%1$s’的引用找ä¸åˆ°ç‰¹å®šçš„ INTRINSIC 过程"
#: fortran/resolve.c:249
#, no-c-format
@@ -8995,9 +8995,9 @@ msgid "Argument '%s' of pure function '%s' at %L must be INTENT(IN)"
msgstr "%3$L处纯函数‘%2$s’的实å‚‘%1$s’必须是 INTENT(IN)"
#: fortran/resolve.c:254
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Argument '%s' of pure subroutine '%s' at %L must have its INTENT specified"
-msgstr "在 %3$L 处的纯的å­ä¾‹ç¨‹â€œ%2$sâ€çš„å‚数“%1$sâ€å¿…须有它的 INTENT 指定符"
+msgstr "%3$L处纯å­è¿›ç¨‹â€˜%2$s’的å‚数‘%1$s’必须指定其 INTENT"
#: fortran/resolve.c:263
#, no-c-format
@@ -9005,14 +9005,14 @@ msgid "Argument '%s' of elemental procedure at %L must be scalar"
msgstr "元素过程的实å‚‘%s’在%L处必须是标é‡"
#: fortran/resolve.c:270
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Argument '%s' of elemental procedure at %L cannot have the POINTER attribute"
-msgstr "在 %2$L 处基本过程的å‚数“%1$sâ€ä¸èƒ½æœ‰ POINTER 属性"
+msgstr "%2$L处基本过程的å‚数‘%1$s’ä¸èƒ½æœ‰ POINTER 属性"
#: fortran/resolve.c:278
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Dummy procedure '%s' not allowed in elemental procedure '%s' at %L"
-msgstr "哑过程“%1$sâ€ä¸èƒ½å‡ºçŽ°åœ¨ %3$L 处的基本的过程“%2$sâ€ä¸­"
+msgstr "%3$L处哑过程‘%1$s’ä¸èƒ½å‡ºçŽ°åœ¨åŸºæœ¬è¿‡ç¨‹â€˜%2$s’中"
#: fortran/resolve.c:290
#, no-c-format
@@ -9020,9 +9020,9 @@ msgid "Argument '%s' of statement function at %L must be scalar"
msgstr "语å¥å‡½æ•°çš„实å‚‘%s’在%L处必须是标é‡"
#: fortran/resolve.c:300
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Character-valued argument '%s' of statement function at %L must have constant length"
-msgstr "在 %1$L 处语å¥å‡½æ•°çš„字符值å‚数“%2$sâ€å¿…须是常数长度"
+msgstr "%2$L处语å¥å‡½æ•°æœ‰å­—符值的å‚数‘%1$s’必须有常é‡é•¿åº¦"
#: fortran/resolve.c:357
#, no-c-format
@@ -9030,9 +9030,9 @@ msgid "Contained function '%s' at %L has no IMPLICIT type"
msgstr "%2$L处的包å«å‡½æ•°â€˜%1$s’没有éšå¼ç±»åž‹"
#: fortran/resolve.c:360
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Result '%s' of contained function '%s' at %L has no IMPLICIT type"
-msgstr "%3$L 处的包å«å‡½æ•°â€œ%2$sâ€çš„结果“%1$sâ€æ²¡æœ‰ IMPLICIT 类型"
+msgstr "%3$L处包å«å‡½æ•°â€˜%2$s’的结果‘%1$s’没有 IMPLICIT 类型"
#: fortran/resolve.c:386
msgid "module procedure"
@@ -9043,9 +9043,9 @@ msgid "internal function"
msgstr "内部函数"
#: fortran/resolve.c:384
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Character-valued %s '%s' at %L must not be assumed length"
-msgstr "语å¥å‡½æ•°â€˜%s’在%L处ä¸å…许用作实å‚"
+msgstr "%3$L处有字符值的 %1$s‘%2$s’ä¸èƒ½æ˜¯å‡å®šé•¿åº¦çš„"
#: fortran/resolve.c:559
#, no-c-format
@@ -9053,9 +9053,9 @@ msgid "Function %s at %L has entries with mismatched array specifications"
msgstr "%2$L处函数‘%1$s’有ä¸åŒ¹é…的数组规格说明"
#: fortran/resolve.c:576
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Extension: Function %s at %L with entries returning variables of different string lengths"
-msgstr "Extension: 在 %2$L 处具有返回ä¸åŒå­—符串长度的å˜é‡è¡¨é¡¹çš„函数 %1$s"
+msgstr "扩展:%2$L处函数 %1$s 有返回ä¸åŒå­—符串长度的å˜é‡çš„表项"
#: fortran/resolve.c:603
#, no-c-format
@@ -9088,29 +9088,29 @@ msgid "ENTRY result %s can't be of type %s in FUNCTION %s at %L"
msgstr "%4$L处函数 %2$s 中入å£è¿”回值 %1$s ä¸èƒ½å…·æœ‰ %3$s å…·åž‹"
#: fortran/resolve.c:719
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Variable '%s' at %L is in COMMON but only in BLOCK DATA initialization is allowed"
-msgstr "在 %L 处å˜é‡â€œ%sâ€æ˜¯åœ¨ COMMON中, 但仅容许在 BLOCK DATA åˆå§‹åŒ–中"
+msgstr "%2$L处å˜é‡â€˜%s’在 COMMON中,但其åˆå§‹åŒ–仅容许出现在 BLOCK DATA 中"
#: fortran/resolve.c:723
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Initialized variable '%s' at %L is in a blank COMMON but initialization is only allowed in named common blocks"
-msgstr "在 %2$L 处åˆå§‹åŒ–çš„å˜é‡â€œ%1$sâ€æ˜¯åœ¨ä¸€ä¸ªç©ºç™½ COMMON 中,但是åˆå§‹åŒ–仅容许在命å公用的å—中"
+msgstr "%2$L处被åˆå§‹åŒ–çš„å˜é‡â€˜%1$s’是在一个空白 COMMON 中,但是åˆå§‹åŒ–仅容许出现在有å公用å—中"
#: fortran/resolve.c:734
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Derived type variable '%s' in COMMON at %L has neither the SEQUENCE nor the BIND(C) attribute"
-msgstr "%2$L 处 COMMON 中的派生类型å˜é‡â€œ%1$sâ€å¿…须既ä¸æ˜¯ SEQUENCE 也ä¸æ˜¯ BIND(C) 属性"
+msgstr "%2$L处 COMMON 中的派生类型å˜é‡â€˜%1$s’既没有 SEQUENCE 也没有 BIND(C) 属性"
#: fortran/resolve.c:738
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Derived type variable '%s' in COMMON at %L has an ultimate component that is allocatable"
-msgstr "%2$L 处 COMMON 中的派生类型å˜é‡â€œ%1$sâ€æœ‰ä¸€ä¸ªå¯åˆ†é…的根本的组件"
+msgstr "%2$L处 COMMON 中的派生类型å˜é‡â€˜%1$s’有一个å¯åˆ†é…的最终组件"
#: fortran/resolve.c:742
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Derived type variable '%s' in COMMON at %L may not have default initializer"
-msgstr "在 %2$L 处 COMMON 中的派生类型å˜é‡â€œ%1$sâ€ä¸èƒ½æœ‰é»˜è®¤çš„åˆå§‹åŒ–器"
+msgstr "%2$L处 COMMON 中的派生类型å˜é‡â€˜%1$s’ä¸èƒ½æœ‰é»˜è®¤çš„åˆå§‹å€¼è®¾å®š"
#: fortran/resolve.c:772
#, no-c-format
@@ -9158,9 +9158,9 @@ msgid "The element in the derived type constructor at %L, for pointer component
msgstr "%L处指针组件‘%s’的派生类型构造函数中的元素应该是 POINTER 或 TARGET"
#: fortran/resolve.c:1034
-#, fuzzy, no-c-format
+#, 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 "在最åŽç»´ä¸­ä¸Šéƒ¨çš„æ†ç»‘ 必须出现在对在 %L 处å‡å®šå¤§å°æ•°ç»„“%sâ€çš„引用中"
+msgstr "最åŽä¸€ç»´çš„上é™å¿…须出现在对在%2$L处å‡å®šå¤§å°æ•°ç»„‘%1$s’的引用中"
#: fortran/resolve.c:1096
#, no-c-format
@@ -9173,9 +9173,9 @@ msgid "GENERIC procedure '%s' is not allowed as an actual argument at %L"
msgstr "GENERIC 过程‘%s’在%L处ä¸å…许用作实å‚"
#: fortran/resolve.c:1202
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Type specified for intrinsic function '%s' at %L is ignored"
-msgstr "在 %2$L 处内建函数“%1$sâ€ä¸­ç±»åž‹æŒ‡å®šç¬¦è¢«å¿½ç•¥"
+msgstr "%2$L处为内建函数‘%1$s’指定的类型被忽略"
#: fortran/resolve.c:1215
#, no-c-format
@@ -9193,9 +9193,9 @@ msgid "The intrinsic '%s' declared INTRINSIC at %L is not available in the curre
msgstr "在%2$L处由内建函数‘%1$s’声明的 INTRINSIC 在当å‰çš„标准设置中是ä¸å¯ç”¨çš„,但在 %3$s 下å¯ç”¨ã€‚使用一个适当的 -std=* 选项或å¯ç”¨ -fall-intrinsics 以便使用它。"
#: fortran/resolve.c:1273
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. Declare it RECURSIVE or use -frecursive"
-msgstr "在 %L 处éžRECURSIVE 过程“%sâ€å¯èƒ½é€’归地调用它自己 。 把它声明为 RECURSIVE 或使用 -frecursive"
+msgstr "%2$Lå¤„éž RECURSIVE 过程‘%1$s’å¯èƒ½é€’归地调用它自己。请将它声明为 RECURSIVE 或使用 -frecursive"
#: fortran/resolve.c:1307 fortran/resolve.c:7213 fortran/resolve.c:8001
#, no-c-format
@@ -9218,9 +9218,9 @@ msgid "Internal procedure '%s' is not allowed as an actual argument at %L"
msgstr "内部过程‘%s’在%L处ä¸å…许用作实å‚"
#: fortran/resolve.c:1387
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ELEMENTAL non-INTRINSIC procedure '%s' is not allowed as an actual argument at %L"
-msgstr "ELEMENTAL non-INTRINSIC 程åºâ€œ%sâ€åœ¨ %L 处ä¸å…许åšä¸ºå®žé™…引数"
+msgstr "ELEMENTAL éž INTRINSIC 过程‘%s’ä¸å…许在%L处作为实际å‚æ•°"
#: fortran/resolve.c:1436
#, no-c-format
@@ -9248,18 +9248,18 @@ msgid "Passing internal procedure at %L by location not allowed"
msgstr "ä¸å…许按ä½ç½®ä¼ é€’%L处的内部过程"
#: fortran/resolve.c:1645
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' at %L is an array and OPTIONAL; IF IT IS MISSING, it cannot be the actual argument of an ELEMENTAL procedure unless there is a non-optional argument with the same rank (12.4.1.5)"
-msgstr "在 %2$L 处的“%1$sâ€æ˜¯ä¸ªæ•°ç»„且是 OPTIONAL çš„; 如果它缺失, 它ä¸èƒ½æ˜¯ä¸€ä¸ª ELEMENTAL 过程的实际的å‚数,除éžæœ‰ä¸€ä¸ªå…·æœ‰ç›¸åŒè¡Œåˆ—çš„éžå¯é€‰çš„å‚æ•°(12.4.1.5)"
+msgstr "%2$L处的‘%1$s’是个数组且是å¯é€‰çš„;如果它缺失, 它ä¸èƒ½æ˜¯ä¸€ä¸ª ELEMENTAL 过程的实际å‚数,除éžæœ‰ä¸€ä¸ªå…·æœ‰ç›¸åŒç§©çš„éžå¯é€‰çš„å‚æ•°(12.4.1.5)"
#: fortran/resolve.c:1668
msgid "elemental procedure"
msgstr "基本过程"
#: fortran/resolve.c:1684
-#, fuzzy, no-c-format
+#, 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 "在 %1$L 处 ELEMENTAL å­ç¨‹åºâ€œ%4$sâ€çš„ INTENT(%2$s) å‡â€œ%3$sâ€çš„实际的å‚数是一个标é‡ï¼Œä½†æ˜¯å¦ä¸€ä¸ªå®žé™…å‚数是个数组"
+msgstr "%1$L处 ELEMENTAL å­ç¨‹åºâ€˜%4$s’的 INTENT(%2$s) 哑‘%3$s’的实际å‚数是一个标é‡ï¼Œä½†æ˜¯å¦ä¸€ä¸ªå®žé™…å‚数是一个数组"
#: fortran/resolve.c:1830
#, no-c-format
@@ -9272,14 +9272,14 @@ msgid "There is no specific function for the generic '%s' at %L"
msgstr "%2$L处的泛型‘%1$s’没有指定的函数"
#: fortran/resolve.c:1939
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Generic function '%s' at %L is not consistent with a specific intrinsic interface"
-msgstr "在 %2$C 处通用函数“%1$sâ€ä¸Žç‰¹å®šçš„内建接å£ä¸ä¸€è‡´"
+msgstr "%2$L处泛型函数‘%1$s’与特定的内建接å£ä¸ä¸€è‡´"
#: fortran/resolve.c:1977
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Function '%s' at %L is INTRINSIC but is not compatible with an intrinsic"
-msgstr "在 %2$L 处的函数“%1$sâ€æ˜¯ INTRINSIC,但ä¸æ˜¯ä¸Žä¸€ä¸ªå†…建函数ä¸å…¼å®¹"
+msgstr "%2$L处的函数‘%1$s’是 INTRINSIC,但与内建函数ä¸å…¼å®¹"
#: fortran/resolve.c:2026
#, no-c-format
@@ -9302,29 +9302,29 @@ msgid "More actual than formal arguments in '%s' call at %L"
msgstr "%2$L处‘%1$s’调用过程时实å‚比形å‚多"
#: fortran/resolve.c:2348
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Parameter '%s' to '%s' at %L must be either a TARGET or an associated pointer"
-msgstr "%3$L 处的å‚数“%1$sâ€åˆ°â€œ%2$sâ€å¿…é¡»æ—¢éž TARGET 也éžç›¸å…³çš„指针"
+msgstr "%3$L处‘%2$s’的å‚数‘%1$s’必须是一个 TARGET 或者相关è”的指针"
#: fortran/resolve.c:2371
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Allocatable variable '%s' used as a parameter to '%s' at %L must not be an array of zero size"
-msgstr "å¯åˆ†é…å˜é‡â€œ%sâ€ç”¨ä½œåœ¨ %L 处“%sâ€ä¸€ä¸ªå‚æ•°å¿…é¡»ä¸æ˜¯é›¶å¤§å°çš„数组"
+msgstr "%3$L用作‘%2$s’的å‚æ•°çš„å¯åˆ†é…å˜é‡â€˜%1$s’ä¸èƒ½æ˜¯å¤§å°ä¸ºé›¶çš„数组"
#: fortran/resolve.c:2388
-#, fuzzy, no-c-format
+#, 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 "%2$L 处å‡å®šæˆå½¢æ•°ç»„“%1$sâ€ä¸èƒ½æ˜¯åŽ»åˆ°è¿‡ç¨‹â€œ%3$sâ€çš„å‚数,因为该过程是ä¸èƒ½ä¸Ž C 互æ“作的"
+msgstr "%2$L处å‡å®šå¤–形数组‘%1$s’ä¸èƒ½æ˜¯è¿‡ç¨‹â€˜%3$s’的å‚数,因为该过程是ä¸èƒ½ä¸Ž C 互æ“作的"
#: fortran/resolve.c:2398
-#, fuzzy, no-c-format
+#, 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 "%2$L 处推迟æˆå½¢æ•°ç»„“%1$sâ€ä¸èƒ½æ˜¯åŽ»åˆ°è¿‡ç¨‹â€œ%3$sâ€çš„å‚数,因为该过程是ä¸èƒ½ä¸Ž C 互æ“作的"
+msgstr "%2$L处延迟外形数组‘%1$s’ä¸èƒ½æ˜¯è¿‡ç¨‹â€˜%3$s’的å‚数,因为它ä¸èƒ½ä¸Ž C 互æ“作"
#: fortran/resolve.c:2421 fortran/resolve.c:2458
-#, fuzzy, no-c-format
+#, no-c-format
msgid "CHARACTER argument '%s' to '%s' at %L must have a length of 1"
-msgstr "在 %3$L 处的 CHARACTER å‚数“%1$sâ€åˆ°â€œ%2$sâ€é•¿åº¦å¿…须为 1"
+msgstr "%3$L处的‘%2$s’的 CHARACTER å‚数‘%1$s’长度必须为 1"
#. Case 1c, section 15.1.2.5, J3/04-007: an associated
#. scalar pointer.
@@ -9356,45 +9356,45 @@ msgid "'%s' at %L is not a function"
msgstr "%2$L处的‘%1$s’ä¸æ˜¯ä¸€ä¸ªå‡½æ•°"
#: fortran/resolve.c:2539 fortran/resolve.c:3153
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ABSTRACT INTERFACE '%s' must not be referenced at %L"
-msgstr "%2$L 处的 ABSTRACT INTERFACE“%1$sâ€å¿…é¡»ä¸è¢«å¼•ç”¨"
+msgstr "%2$L处的 ABSTRACT INTERFACE‘%1$s’ä¸èƒ½è¢«å¼•ç”¨"
#. Internal procedures are taken care of in resolve_contained_fntype.
#: fortran/resolve.c:2585
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Function '%s' is declared CHARACTER(*) and cannot be used at %L since it is not a dummy argument"
-msgstr "函数“%sâ€å£°æ˜Žäº† CHARACTER(*) 而ä¸èƒ½è¢«ä½¿ç”¨åœ¨ %L 处,因为它ä¸æ˜¯ä¸€ä¸ªå‡å‚æ•°"
+msgstr "函数‘%s’被声明为 CHARACTER(*)从而ä¸èƒ½è¢«ä½¿ç”¨åœ¨%L处,因为它ä¸æ˜¯ä¸€ä¸ªè™šå‚"
#: fortran/resolve.c:2638
-#, fuzzy, no-c-format
+#, no-c-format
msgid "User defined non-ELEMENTAL function '%s' at %L not allowed in WORKSHARE construct"
-msgstr "在 %2$L å¤„ç”¨æˆ·å®šä¹‰çš„éž ELEMENTAL 函数“%1$sâ€ä¸ 容许在 WORKSHARE 造中"
+msgstr "%2$Lå¤„ç”¨æˆ·å®šä¹‰çš„éž ELEMENTAL 函数‘%1$s’ä¸å®¹è®¸å‡ºçŽ°åœ¨ WORKSHARE 构造中"
#: fortran/resolve.c:2688
-#, fuzzy, no-c-format
+#, no-c-format
msgid "reference to non-PURE function '%s' at %L inside a FORALL %s"
-msgstr "对在 %L 处一个 FORALL %s 内部éž-PURE 函数“%sâ€çš„引用"
+msgstr "%2$Lå¤„å¯¹éž PURE 函数‘%1$s’的引用出现在 FORALL %3$s 中"
#: fortran/resolve.c:2695
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Function reference to '%s' at %L is to a non-PURE procedure within a PURE procedure"
-msgstr "%2$L 处引用“%1$sâ€çš„的函数是对一个 PURE è¿‡ç¨‹å†…çš„éž PURE 过程的引用"
+msgstr "%2$L处对‘%1$s’的函数引用是在一个 PURE è¿‡ç¨‹å†…çš„å¯¹éž PURE 过程的引用"
#: fortran/resolve.c:2711
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ENTRY '%s' at %L cannot be called recursively, as function '%s' is not RECURSIVE"
-msgstr "在 %2$L 处 ENTRY“%1$sâ€ä¸èƒ½é€’归调用,因为函数“%3$sâ€å¹¶éž RECURSIVE"
+msgstr "%2$L处 ENTRY‘%1$s’ä¸èƒ½é€’归调用,因为函数‘%3$sâ€™å¹¶éž RECURSIVE"
#: fortran/resolve.c:2715
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Function '%s' at %L cannot be called recursively, as it is not RECURSIVE"
-msgstr "在 %2$L 处的函数“%1$sâ€ä¸èƒ½è¢«é€’å½’è°ƒç”¨ï¼Œå› ä¸ºå®ƒå¹¶éž RECURSIVE"
+msgstr "%2$L处的函数‘%1$s’ä¸èƒ½è¢«é€’å½’è°ƒç”¨ï¼Œå› ä¸ºå®ƒå¹¶éž RECURSIVE"
#: fortran/resolve.c:2763
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Subroutine call to '%s' in FORALL block at %L is not PURE"
-msgstr "在 %2$L 处调用 FORALL å—内“%1$sâ€çš„å­ä¾‹ç¨‹ä¸æ˜¯ PURE"
+msgstr "%2$L处 FORALL å—内对‘%1$s’å­ä¾‹ç¨‹çš„调用ä¸æ˜¯ PURE"
#: fortran/resolve.c:2766
#, no-c-format
@@ -9407,24 +9407,24 @@ msgid "There is no specific subroutine for the generic '%s' at %L"
msgstr "泛型‘%s’在%L处没有特定的å­è¿›ç¨‹"
#: fortran/resolve.c:2838
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Generic subroutine '%s' at %L is not consistent with an intrinsic subroutine interface"
-msgstr "通用å­è¿›ç¨‹â€œ%sâ€(于 %L 处)与一个内建å­ä¾‹ç¨‹æŽ¥å£ä¸ä¸€è‡´"
+msgstr "%2$L处泛型å­è¿›ç¨‹â€˜%1$s’与一个内建å­è¿›ç¨‹æŽ¥å£ä¸ä¸€è‡´"
#: fortran/resolve.c:2946
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Missing SHAPE parameter for call to %s at %L"
-msgstr "在 %2$L 处在调用“%1$sâ€æ—¶ç¼ºå°‘ SHAPE 实å‚“%sâ€"
+msgstr "%2$L处调用‘%1$s’时缺少 SHAPE 实å‚"
#: fortran/resolve.c:2954
-#, fuzzy, no-c-format
+#, no-c-format
msgid "SHAPE parameter for call to %s at %L must be a rank 1 INTEGER array"
-msgstr "%2$L处调用“%1$sâ€çš„SHAPE å‚数必须是一个行列 1 INTEGER 数组"
+msgstr "%2$L处调用‘%1$s’的 SHAPE å‚数必须是一个秩为 1 çš„ INTEGER 数组"
#: fortran/resolve.c:3021
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Subroutine '%s' at %L is INTRINSIC but is not compatible with an intrinsic"
-msgstr "在 %2$L 处的å­ä¾‹ç¨‹â€œ%sâ€æ˜¯ INTRINSIC,但ä¸æ˜¯ä¸Žä¸€ä¸ªå†…建å­ä¾‹ç¨‹å¯å…¼å®¹"
+msgstr "%2$L处的å­è¿›ç¨‹â€˜%1$s’是 INTRINSIC,但与内建函数ä¸å…¼å®¹"
#: fortran/resolve.c:3065
#, no-c-format
@@ -9432,19 +9432,19 @@ msgid "Unable to resolve the specific subroutine '%s' at %L"
msgstr "ä¸èƒ½è§£å†³%2$L处的指定å­ä¾‹ç¨‹â€˜%1$s’"
#: fortran/resolve.c:3125
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' at %L has a type, which is not consistent with the CALL at %L"
-msgstr "在 %2$L 处的“%1$sâ€çš„类型与在 %3$L 处 CALL 的类型ä¸ä¸€è‡´"
+msgstr "%2$L处的‘%1$s’的类型与%3$L处 CALL 的类型ä¸ä¸€è‡´"
#: fortran/resolve.c:3163
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ENTRY '%s' at %L cannot be called recursively, as subroutine '%s' is not RECURSIVE"
-msgstr "在 %2$L 处 ENTRY“%1$sâ€ä¸èƒ½é€’归调用,因为å­ä¾‹ç¨‹â€œ%3$sâ€å¹¶éž RECURSIVE"
+msgstr "%2$L处 ENTRY‘%1$s’ä¸èƒ½è¢«é€’归调用,因为å­è¿›ç¨‹â€˜%3$sâ€™å¹¶éž RECURSIVE"
#: fortran/resolve.c:3167
-#, fuzzy, no-c-format
+#, no-c-format
msgid "SUBROUTINE '%s' at %L cannot be called recursively, as it is not RECURSIVE"
-msgstr "在 %2$L 处 SUBROUTINE“%1$sâ€ä¸èƒ½é€’å½’è°ƒç”¨ï¼Œå› ä¸ºå®ƒå¹¶éž RECURSIVE"
+msgstr "%2$L处 SUBROUTINE‘%1$s’ä¸èƒ½é€’å½’è°ƒç”¨ï¼Œå› ä¸ºå®ƒå¹¶éž RECURSIVE"
#: fortran/resolve.c:3245
#, no-c-format
@@ -9551,9 +9551,9 @@ msgid "Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d"
msgstr "%1$L处数组上é™å¼•ç”¨åœ¨ç¬¬ %4$d 维中越界(%2$ld > %3$ld)"
#: fortran/resolve.c:3843
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Rightmost upper bound of assumed size array section not specified at %L"
-msgstr "在 %L 处最å³ä¸Šçš„æ†ç»‘çš„å‡å®šå¤§å°æ•°ç»„节ä¸è§„定"
+msgstr "%L处未指定å‡å®šå¤§å°æ•°ç»„段的最å³ç«¯ä¸Šé™"
#: fortran/resolve.c:3853
#, no-c-format
@@ -9566,9 +9566,9 @@ msgid "Array index at %L must be scalar"
msgstr "%L处数组索引必须是标é‡"
#: fortran/resolve.c:3887
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Array index at %L must be of INTEGER type, found %s"
-msgstr "%L 处数组索引必须具有 INTEGER 类型,找到 %s"
+msgstr "%L处数组索引必须具有 INTEGER 类型而ä¸æ˜¯ %s"
#: fortran/resolve.c:3893
#, no-c-format
@@ -9626,19 +9626,19 @@ msgid "Substring end index at %L is too large"
msgstr "%L处å­ä¸²ç»“æŸç´¢å¼•å¤ªå¤§"
#: fortran/resolve.c:4285
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Component to the right of a part reference with nonzero rank must not have the POINTER attribute at %L"
-msgstr "%L 处具有éžé›¶è¡Œåˆ—部分引用的å³ä¾§çš„组件ä¸å¿…须有 POINTER 属性"
+msgstr "%L处对有éžé›¶ç§©çš„部分引用的å³ä¾§çš„组件ä¸èƒ½æœ‰ POINTER 属性"
#: fortran/resolve.c:4292
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Component to the right of a part reference with nonzero rank must not have the ALLOCATABLE attribute at %L"
-msgstr "%L 处具有éžé›¶è¡Œåˆ—部分引用的å³ä¾§çš„组件ä¸å¿…须有 ALLOCATABLE 属性"
+msgstr "%L处对有éžé›¶ç§©çš„部分引用的å³ä¾§çš„组件ä¸èƒ½æœ‰ ALLOCATABLE 属性"
#: fortran/resolve.c:4311
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Two or more part references with nonzero rank must not be specified at %L"
-msgstr "%L 处具有éžé›¶è¡Œåˆ—部分引用的两个或多个部分ä¸å¿…指定"
+msgstr "%L处ä¸èƒ½æŒ‡å®šä¸¤ä¸ªæˆ–以上秩ä¸ä¸ºé›¶çš„部分引用"
#: fortran/resolve.c:4494
#, no-c-format
@@ -9662,9 +9662,9 @@ msgstr "%L处类型é™å®šè¿‡ç¨‹è°ƒç”¨çš„基类型是 ABSTRACT 类型‘%s’"
#. Nothing matching found!
#: fortran/resolve.c:4989
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Found no matching specific binding for the call to the GENERIC '%s' at %L"
-msgstr "对在 %2$L 处的 GENERIC“%1$sâ€çš„调用没有找到匹é…特别的é™å®š"
+msgstr "%2$L处对 GENERIC‘%1$s’的调用没有找到匹é…特别的é™å®š"
#. To resolve class member calls, we borrow this bit
#. of code to select the specific procedures.
@@ -9679,9 +9679,9 @@ msgid "'%s' at %L should be a FUNCTION"
msgstr "%2$L处的‘%1$s’应该是一个 FUNCTION"
#: fortran/resolve.c:5137
-#, fuzzy, no-c-format
+#, no-c-format
msgid "no typebound available procedure named '%s' at %L"
-msgstr "å‚数‘%s’在%L处需è¦ä¸€ä¸ªè¿‡ç¨‹"
+msgstr "%2$L处没有类型绑定的å为‘%1$s’的å¯ç”¨è¿‡ç¨‹"
#: fortran/resolve.c:5598
#, no-c-format
@@ -9814,9 +9814,9 @@ msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr "%L处 stat å˜é‡å¿…é¡»æ˜¯ä¸€ä¸ªæ ‡é‡ INTEGER å˜é‡"
#: fortran/resolve.c:6258
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
-msgstr "%C READ 语å¥éœ€è¦å˜é‡"
+msgstr "%1$L处的统计å˜é‡ä¸èƒ½åœ¨åŒä¸€ä¸ª %3$s 语å¥ä¸­è¢« %2$s"
#: fortran/resolve.c:6266
#, no-c-format
@@ -9834,9 +9834,9 @@ msgid "Illegal errmsg-variable at %L for a PURE procedure"
msgstr "%L处 PURE 过程éžæ³• errmsg å˜é‡"
#: fortran/resolve.c:6282
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
-msgstr "%L处指定的 UNIT 必须是 INTEGER 表达å¼æˆ–一个 CHARACTER å˜é‡"
+msgstr "%L处错误信æ¯å˜é‡å¿…é¡»æ˜¯ä¸€ä¸ªæ ‡é‡ CHARACTER å˜é‡"
#: fortran/resolve.c:6287
#, no-c-format
@@ -9853,9 +9853,9 @@ msgstr "%L处分é…的对象也出现在%L处"
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
#: fortran/resolve.c:6472
-#, fuzzy, no-c-format
+#, no-c-format
msgid "CASE label at %L overlaps with CASE label at %L"
-msgstr "在 %L 处CASE 标记与在 %L 处的 CASE 标记é‡å "
+msgstr "%L处的 CASE æ ‡å·ä¸Ž%L处的 CASE æ ‡å·é‡å "
#: fortran/resolve.c:6523
#, no-c-format
@@ -9888,14 +9888,14 @@ msgid "Argument of SELECT statement at %L must be a scalar expression"
msgstr "%L处 SELECT 语å¥ä¸­çš„实å‚必须为标é‡"
#: fortran/resolve.c:6684 fortran/resolve.c:6906
-#, fuzzy, no-c-format
+#, no-c-format
msgid "The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
-msgstr "在 %L 处的 DEFAULT CASE ä¸èƒ½è·Ÿéšç¬¬äºŒä¸ªåœ¨ %L 处的 DEFAULT CASE "
+msgstr "%L处的 DEFAULT CASE 为%L处的第二个 DEFAULT CASE 所跟éš"
#: fortran/resolve.c:6710
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Logical range in CASE statement at %L is not allowed"
-msgstr "%L 处 CASE 语å¥ä¸­çš„逻辑范围是ä¸è¢«å…许的"
+msgstr "%L处 CASE 语å¥ä¸­çš„逻辑范围是ä¸è¢«å…许的"
#: fortran/resolve.c:6722
#, no-c-format
@@ -9908,9 +9908,9 @@ msgid "Range specification at %L can never be matched"
msgstr "%L处范围规格无法匹é…"
#: fortran/resolve.c:6839
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Logical SELECT CASE block at %L has more that two cases"
-msgstr "在 %L 处逻辑的 SELECT CASE å—多于两个的情况"
+msgstr "%L处逻辑 SELECT CASE å—有多于两个的情况"
#: fortran/resolve.c:6884
#, no-c-format
@@ -9948,9 +9948,9 @@ msgid "Data transfer element at %L cannot be a full reference to an assumed-size
msgstr "%L处数æ®ä¼ è¾“元素ä¸èƒ½æ˜¯å¯¹ä¸€ä¸ªå‡å®šå¤§å°æ•°ç»„的全引用"
#: fortran/resolve.c:7220
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Statement at %L is not a valid branch target statement for the branch statement at %L"
-msgstr "在 %L 处的语å¥å¯¹äºŽåœ¨ %L 处的分支语å¥ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„分支目标语å¥"
+msgstr "%L处的语å¥å¯¹%L处的分支语å¥è€Œè¨€ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„分支目标语å¥"
#: fortran/resolve.c:7229
#, no-c-format
@@ -9961,9 +9961,9 @@ msgstr "%L处的分支å¯èƒ½å¯¼è‡´æ— ç©·å¾ªçŽ¯"
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
#: fortran/resolve.c:7257
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
-msgstr "在 %L 处标记ä¸åœ¨ %L 处 GOTO 语å¥åŒæ ·çš„å—中"
+msgstr "%L处的标å·ä¸Ž%L处 GOTO 语å¥ä¸åœ¨ç›¸åŒçš„å—中"
#: fortran/resolve.c:7332
#, no-c-format
@@ -9976,9 +9976,9 @@ msgid "WHERE assignment target at %L has inconsistent shape"
msgstr "%L处 WHERE 赋值目标外形ä¸ä¸€è‡´"
#: fortran/resolve.c:7356 fortran/resolve.c:7443
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
-msgstr "在 %L 处 WHERE ä¸­éž ELEMENTAL 用户定义的赋值"
+msgstr "%L处 WHERE ä¸­ç”¨æˆ·å®šä¹‰çš„éž ELEMENTAL 用户赋值"
#: fortran/resolve.c:7366 fortran/resolve.c:7453
#, no-c-format
@@ -9991,14 +9991,14 @@ msgid "Assignment to a FORALL index variable at %L"
msgstr "%Lå¤„å‘ FORALL 索引å˜é‡èµ‹å€¼"
#: fortran/resolve.c:7406
-#, fuzzy, no-c-format
+#, 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 "在 %2$L 处ä¸åœ¨èµ‹å€¼å·¦ä¾§ä½¿ç”¨å¸¦æœ‰ç´¢å¼•â€œ%1$sâ€çš„ FORALL,所以å¯èƒ½å¼•èµ·å¯¹è¿™ä¸ªå¯¹è±¡çš„多个赋值"
+msgstr "%2$L处带索引‘%1$s’的 FORALL 没有被用在赋值的左侧,所以å¯èƒ½å¯¼è‡´å¯¹è¿™ä¸ªå¯¹è±¡çš„多个赋值"
#: fortran/resolve.c:7575
-#, fuzzy, no-c-format
+#, no-c-format
msgid "An outer FORALL construct already has an index with this name %L"
-msgstr "外部的 FORALL 构造已ç»æœ‰ä¸€ä¸ªæœ‰æ­¤åå­— %L 的索引"
+msgstr "%L处外部 FORALL 构造已ç»æœ‰ä¸€ä¸ªåŒå的索引"
#: fortran/resolve.c:7654
#, no-c-format
@@ -10006,9 +10006,9 @@ msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr "%L处的 WHERE/ELSEWHERE å­å¥éœ€è¦ä¸€ä¸ª LOGICAL 数组"
#: fortran/resolve.c:7806
-#, fuzzy, no-c-format
+#, no-c-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
-msgstr "CHARACTER 表达å¼åœ¨ %3$L 处赋值(%1$d/%2$d)时被截断"
+msgstr "CHARACTER 表达å¼åœ¨%3$L处赋值时将被截断(%1$d/%2$d)"
#: fortran/resolve.c:7831
#, no-c-format
@@ -10016,9 +10016,9 @@ msgid "Cannot assign to variable '%s' in PURE procedure at %L"
msgstr "ä¸èƒ½åœ¨%2$L处的 PURE 过程中为å˜é‡â€˜%1$s’赋值"
#: fortran/resolve.c:7843
-#, fuzzy, no-c-format
+#, 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 "在 %L 处 impure å˜é‡è¢«èµ‹å€¼åˆ°ä¸€ä¸ª PURE 过程(12.6)中的 POINTER 组件的派生类型å˜é‡"
+msgstr "%L处一个éžçº¯å˜é‡åœ¨ PURE 过程中被赋值给带有 POINTER 组件派生类型å˜é‡(12.6)"
#: fortran/resolve.c:7854
#, no-c-format
@@ -10031,9 +10031,9 @@ msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr "ASSIGNED GOTO 语å¥åœ¨%L处需è¦ä¸€ä¸ª INTEGER å˜é‡"
#: fortran/resolve.c:7967
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Variable '%s' has not been assigned a target label at %L"
-msgstr "å˜é‡â€œ%sâ€åœ¨ %L 尚未指派到目标å·æ ‡"
+msgstr "å˜é‡â€˜%s’在 %L 尚未指派目标标å·"
#: fortran/resolve.c:7978
#, no-c-format
@@ -10041,19 +10041,19 @@ msgid "Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifi
msgstr "%L处的替代 RETURN 语å¥éœ€è¦ä¸€ä¸ª SCALAR-INTEGER 返回é™å®šç¬¦"
#: fortran/resolve.c:8009
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
-msgstr "在 %L 处的 ASSIGN 语å¥éœ€è¦ä¸€ä¸ªæ ‡é‡é»˜è®¤çš„ INTEGER å˜é‡"
+msgstr "%L处的 ASSIGN 语å¥éœ€è¦ä¸€ä¸ªé»˜è®¤æ ‡é‡ INTEGER å˜é‡"
#: fortran/resolve.c:8024
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
-msgstr "%L 处的算数 IF 语å¥è¦æ±‚一个数字表达å¼"
+msgstr "%L处的算术 IF 语å¥è¦æ±‚一个数字表达å¼"
#: fortran/resolve.c:8087
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
-msgstr "%L 处的 DO WHILE 循环的推退æ¡ä»¶å¿…é¡»æ˜¯ä¸€ä¸ªæ ‡é‡ LOGICAL 表达å¼"
+msgstr "%L处 DO WHILE 循环的退出æ¡ä»¶å¿…é¡»æ˜¯ä¸€ä¸ªæ ‡é‡ LOGICAL 表达å¼"
#: fortran/resolve.c:8169
#, no-c-format
@@ -10061,37 +10061,37 @@ msgid "FORALL mask clause at %L requires a LOGICAL expression"
msgstr "%L处的 FORMALL 掩ç å­å¥éœ€è¦ä¸€ä¸ª LOGICAL 表达å¼"
#: fortran/resolve.c:8241 fortran/resolve.c:8297
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Binding label '%s' for common block '%s' at %L collides with the global entity '%s' at %L"
-msgstr "%3$L 处的公共å—“%2$sâ€çš„æ†ç»‘标记“%1$sâ€ä¸Ž %4$L 处的全局标记项“%3$sâ€å†²çª"
+msgstr "%3$L处公共å—‘%2$s’的绑定标å·â€˜%1$s’与 %5$L 处的全局实体‘%4$s’冲çª"
#. Common block names match but binding labels do not.
#: fortran/resolve.c:8262
-#, fuzzy, no-c-format
+#, 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 "%3$L 处的公共å—“%2$sâ€çš„æ†ç»‘标记“%1$sâ€ä¸Ž %6$L 处公共å—“%5$sâ€çš„æ†ç»‘标记ä¸åŒ¹é… “%4$sâ€ä¸åŒ¹é…"
+msgstr "%3$L处公共å—‘%2$s’的绑定标å·â€˜%1$s’与%6$L处公共å—‘%5$s’的绑定标记‘%4$s’ä¸åŒ¹é…"
#: fortran/resolve.c:8309
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Binding label '%s' for common block '%s' at %L collides with global entity '%s' at %L"
-msgstr "%3$L 处的公共å—“%2$sâ€çš„æ†ç»‘标记“%1$sâ€ä¸Ž %4$L 处的全局标记项“%3$sâ€å†²çª"
+msgstr "%3$L处公共å—‘%2$s’的绑定标å·â€˜%1$s’与 %5$L 处的全局实体‘%4$s’冲çª"
#. Make sure global procedures don't collide with anything.
#: fortran/resolve.c:8361
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
-msgstr "%2$L 处的æ†ç»‘标记“%1$sâ€ä¸Ž %4$L 处的全局实体“%3$sâ€å†²çª"
+msgstr "%2$L处的绑定标å·â€˜%1$s’与 %4$L 处的全局实体‘%3$s’冲çª"
#. Make sure procedures in interface bodies don't collide.
#: fortran/resolve.c:8374
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Binding label '%s' in interface body at %L collides with the global entity '%s' at %L"
-msgstr "%2$L 处的接å£ä½““%2$sâ€ä¸­çš„çš„æ†ç»‘标记“%1$sâ€ä¸Ž %4$L 处的全局实体“%3$sâ€å†²çª"
+msgstr "%2$L处接å£ä½“内的绑定标å·â€˜%1$s’与%4L处的全局实体‘%3$s’冲çª"
#: fortran/resolve.c:8387
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
-msgstr "%2$L 处的æ†ç»‘标记“%1$sâ€ä¸Ž %4$L 处的全局实体“%3$sâ€å†²çª"
+msgstr "%2$L处的æ†ç»‘æ ‡å·â€˜%1$s’与 %4$L 处的全局实体‘%3$s’冲çª"
#: fortran/resolve.c:8464
#, no-c-format
@@ -10109,9 +10109,9 @@ msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr "å¯åˆ†é…的数组‘%s’在%L处必须有延迟的外形"
#: fortran/resolve.c:8781
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
-msgstr "%2$L 处标é‡å¯¹è±¡â€œ%1$sâ€ä¸èƒ½ä¸º ALLOCATABLE"
+msgstr "%2$L处标é‡å¯¹è±¡â€˜%1$s’ä¸èƒ½ä¸º ALLOCATABLE"
#: fortran/resolve.c:8789
#, no-c-format
@@ -10124,19 +10124,19 @@ msgid "Array '%s' at %L cannot have a deferred shape"
msgstr "数组‘%s’在%L处ä¸èƒ½æœ‰å»¶è¿Ÿçš„外形"
#: fortran/resolve.c:8828
-#, fuzzy, no-c-format
+#, 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 "在 %2$L 处类型“%1$sâ€ä¸èƒ½æ˜¯ä¸»æœºç›¸å…³çš„,因为它被在 %3$L 处声明的一个ä¸å…¼å®¹çš„åŒå对象所阻ç¢"
+msgstr "‘%s’在%L处ä¸èƒ½æ˜¯ä¸»æœºç›¸å…³çš„,因为它被在%L处声明的一个ä¸å…¼å®¹çš„åŒå对象所阻ç¢"
#: fortran/resolve.c:8851
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Object '%s' at %L must have the SAVE attribute for default initialization of a component"
-msgstr "%2$L 处的对象“%1$sâ€å¯¹äºŽæˆåˆ†çš„默认åˆå§‹åŒ–必须有 SAVE 属性,"
+msgstr "%2$L处的对象‘%1$s’为默认åˆå§‹åŒ–组件必须有 SAVE 属性"
#: fortran/resolve.c:8862
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Type '%s' of CLASS variable '%s' at %L is not extensible"
-msgstr "函数‘%s’中的替代返回é™å®šç¬¦åœ¨%L处ä¸è¢«å…许"
+msgstr "%3$L处 CLASS å˜é‡â€˜%2$s’的类型‘%1$s’ä¸èƒ½è¢«æ‰©å±•"
#: fortran/resolve.c:8872
#, no-c-format
@@ -10151,9 +10151,9 @@ msgid "The module or main program array '%s' at %L must have constant shape"
msgstr "%2$L处的模å—或主程åºæ•°ç»„‘%1$s’必须有常é‡å¤–å½¢"
#: fortran/resolve.c:8932
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Entity with assumed character length at %L must be a dummy argument or a PARAMETER"
-msgstr "%L 处å‡å®šå­—符长度的实体必须是个哑å‚数或是个 PARAMETER"
+msgstr "%L处å‡å®šå­—符长度的实体必须是个虚å‚或是个 PARAMETER"
#: fortran/resolve.c:8951
#, no-c-format
@@ -10196,9 +10196,9 @@ msgid "Although not referenced, '%s' at %L has ambiguous interfaces"
msgstr "尽管没有被引用,%2$L处的‘%1$s’的接å£ä¹Ÿæœ‰æ­§ä¹‰"
#: fortran/resolve.c:9045
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Character-valued statement function '%s' at %L must have constant length"
-msgstr "%2$L 处的字符值语å¥å‡½æ•°â€œ%1$sâ€å¿…须有一个常é‡é•¿åº¦"
+msgstr "%2$L处有字符值的语å¥å‡½æ•°â€˜%1$s’必须有常é‡é•¿åº¦"
#: fortran/resolve.c:9053
#, no-c-format
@@ -10206,14 +10206,14 @@ msgid "Automatic character length function '%s' at %L must have an explicit inte
msgstr "%2$L处的自动字符长度函数‘%1$s’必须有一个显å¼çš„接å£"
#: fortran/resolve.c:9078
-#, fuzzy, no-c-format
+#, 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 2003:“%1$sâ€æ˜¯ PRIVATE 类型因而ä¸èƒ½æ˜¯åœ¨ %3$L 处的 PUBLIC 类型“%2$sâ€çš„å“‘å‚æ•°"
+msgstr "Fortran 2003:%3$L处‘%1$s’是 PRIVATE 类型因而ä¸èƒ½æ˜¯ PUBLIC 类型‘%2$s’的虚å‚"
#: fortran/resolve.c:9101 fortran/resolve.c:9126
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
-msgstr "Fortran 2003: 在 %3$L 处 PUBLIC 接å£â€œ%2$sâ€ä¸­çš„过程“%1$sâ€å–了一个 PRIVATE çš„å‡å‚数“%4$sâ€"
+msgstr "Fortran 2003: %3$L处 PUBLIC 接å£â€˜%2$s’中的过程‘%1$s’有 PRIVATE 的虚å‚‘%4$s’"
#: fortran/resolve.c:9144
#, no-c-format
@@ -10226,9 +10226,9 @@ msgid "External object '%s' at %L may not have an initializer"
msgstr "外部对象‘%s’在%L处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
#: fortran/resolve.c:9161
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
-msgstr "%2$L 处的 ELEMENTAL 函数“%1$sâ€å¿…须有一个标é‡ç»“æžœ"
+msgstr "%2$L处 ELEMENTAL 函数‘%1$s’必须有一个标é‡è¿”回值"
#: fortran/resolve.c:9182
#, no-c-format
@@ -10256,14 +10256,14 @@ msgid "Obsolescent feature: CHARACTER(*) function '%s' at %L"
msgstr "已过时的特性:%2$L处的 CHARACTER(*) 函数‘%1$s’"
#: fortran/resolve.c:9258
-#, fuzzy, no-c-format
+#, no-c-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
-msgstr "PROCEDURE 属性与在 %2$L 处“%1$sâ€ä¸­çš„ SAVE 属性冲çª"
+msgstr "PROCEDURE 属性与%2$L处‘%1$s’中的 SAVE 属性冲çª"
#: fortran/resolve.c:9264
-#, fuzzy, no-c-format
+#, no-c-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
-msgstr "PROCEDURE 属性与 %2$L 处“%1$sâ€ä¸­çš„ INTENT 属性冲çª"
+msgstr "PROCEDURE 属性与%2$L处‘%1$s’中的 INTENT 属性冲çª"
#: fortran/resolve.c:9270
#, no-c-format
@@ -10281,14 +10281,14 @@ msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr "%2$L处过程指针结果‘%1$s’缺少指针属性"
#: fortran/resolve.c:9330
-#, fuzzy, no-c-format
+#, no-c-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
-msgstr "%L 处 FINAL 过程的å‚æ•°å¿…é¡»ä¸æ˜¯ POINTER"
+msgstr "%2$L处 FINAL 过程‘%1$s’ä¸æ˜¯ä¸€ä¸ª SUBROUTINE"
#: fortran/resolve.c:9338
-#, fuzzy, no-c-format
+#, no-c-format
msgid "FINAL procedure at %L must have exactly one argument"
-msgstr "%L 处的 FINAL 过程必须åªæœ‰ä¸€ä¸ªå‚æ•°"
+msgstr "%L处的 FINAL 过程有且åªæœ‰ä¸€ä¸ªå‚æ•°"
#: fortran/resolve.c:9347
#, no-c-format
@@ -10321,14 +10321,14 @@ msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr "%L处的éžæ ‡é‡ FINAL 过程应当有å‡å®šå¤–形的å‚æ•°"
#: fortran/resolve.c:9402
-#, fuzzy, no-c-format
+#, no-c-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
-msgstr "在 %2$L 处声明的 FINAL 过程“%1$sâ€æœ‰ä¸Žâ€œ%4$sâ€ç›¸åŒçš„行列“%3$dâ€"
+msgstr "%2$L处声明的 FINAL 过程‘%1$s’有与‘%4$s’相åŒçš„秩(%3$d)"
#: fortran/resolve.c:9435
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Only array FINAL procedures declared for derived type '%s' defined at %L, suggest also scalar one"
-msgstr "仅数组 FINAL 过程声明了在 %L 处定义的派生类型“%sâ€ï¼Œè¿˜å»ºè®®å®šä¹‰ä¸€ä¸ªæ ‡é‡"
+msgstr "仅为定义在%2$L处的派生类型‘%1$s’声明了数组 FINAL 过程,建议也定义一个标é‡è¿‡ç¨‹"
#. TODO: Remove this error when finalization is finished.
#: fortran/resolve.c:9440
@@ -10387,19 +10387,19 @@ msgid "'%s' at %L overrides a PUBLIC procedure and must not be PRIVATE"
msgstr "%2$L处的‘%1$s’覆盖了一个 PUBLIC 过程因此必须ä¸æ˜¯ PRIVATE"
#: fortran/resolve.c:9580
-#, fuzzy, no-c-format
+#, 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 "在 %3$L 处的“%2$sâ€çš„“%1$sâ€åº”该命å为与被跨越过程的相应å‚数匹é…的“%1$sâ€"
+msgstr "%3$L处‘%2$s’的虚å‚‘%1$s’应该命å为‘%4$s’以匹é…被覆盖过程的相应å‚æ•°"
#: fortran/resolve.c:9593
#, no-c-format
msgid "Types mismatch for dummy argument '%s' of '%s' %L in respect to the overridden procedure"
-msgstr "%3$L处‘%2$s’的哑元实å‚‘%1$s’相对于覆盖过程类型ä¸åŒ¹é…"
+msgstr "%3$L处‘%2$s’的虚å‚‘%1$s’相对于覆盖过程类型ä¸åŒ¹é…"
#: fortran/resolve.c:9603
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' at %L must have the same number of formal arguments as the overridden procedure"
-msgstr "在 %2$L 处的“%1$sâ€å¿…须有与被跨越的过程相åŒçš„å½¢å¼å‚æ•°"
+msgstr "%2$L处的‘%1$s’必须有与被覆盖的过程相åŒæ•°é‡çš„å½¢å¼å‚æ•°"
#: fortran/resolve.c:9612
#, no-c-format
@@ -10412,34 +10412,34 @@ msgid "'%s' at %L overrides a binding with PASS and must also be PASS"
msgstr "%2$L处的‘%1$s’覆盖了一个具有 PASS 的绑定因此也必须是 PASS"
#: fortran/resolve.c:9630
-#, fuzzy, no-c-format
+#, 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 "在 %2$L 处的“%1$sâ€çš„传递对象的哑å‚数必须与被跨越的过程传递对象的哑å‚数有相åŒçš„ä½ç½®"
+msgstr "%2$L处的‘%1$s’的传递对象虚å‚必须与被覆盖的过程传递对象的虚å‚ä½ç½®ç›¸åŒ"
#: fortran/resolve.c:9664
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
-msgstr "在 %L 处对于 GENERIC“%sâ€çš„ FUNCTION/SUBROUTINE ä¸èƒ½æ··åˆâ€œ%sâ€å’Œâ€œ%sâ€"
+msgstr "%4$L处‘%1$s’和‘%2$s’对 GENERIC‘%3$s’ä¸èƒ½æ˜¯æ··åˆçš„ FUNCTION/SUBROUTINE"
#: fortran/resolve.c:9673
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
-msgstr "在 %L 处 GENERIC“%sâ€çš„“%sâ€å’Œâ€œ%sâ€æ˜¯äºŒä¹‰æ€§çš„"
+msgstr "%4$L处 GENERIC‘%3$s’的‘%1$s’和‘%2$s’有歧义"
#: fortran/resolve.c:9732
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
-msgstr "没有定义的特别绑定“%1$sâ€ä½œä¸ºåœ¨ %3$L 处的 GENERIC“%2$sâ€"
+msgstr "未定义的指定绑定‘%1$s’用作%3$L处的 GENERIC‘%2$s’的目标"
#: fortran/resolve.c:9744
-#, fuzzy, no-c-format
+#, no-c-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
-msgstr "在 %L 处 GENERIC“%sâ€å¿…须把目标定到一个特定的æ†ç»‘,“%sâ€æ˜¯ GENERIC,必须也是"
+msgstr "%2$L处 GENERIC‘%1$s’必须定ä½ä¸€ä¸ªç‰¹å®šçš„绑定,‘%3$s’也是 GENERIC"
#: fortran/resolve.c:9774
-#, fuzzy, no-c-format
+#, no-c-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
-msgstr "在 %L 处 GENERIC“%sâ€æ— æ³•ç›–写与特殊相åŒåå­—æ†ç»‘"
+msgstr "%2$L处 GENERIC‘%1$s’无法覆盖åŒå的特定绑定"
#: fortran/resolve.c:9830
#, no-c-format
@@ -10447,24 +10447,24 @@ msgid "Type-bound operator at %L can't be NOPASS"
msgstr "%L处类型é™å®šçš„æ“作数ä¸èƒ½æ˜¯ NOPASS"
#: fortran/resolve.c:9993
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' must be a module procedure or an external procedure with an explicit interface at %L"
-msgstr "“%sâ€æ˜¯å¿…须是一个模å—过程或有显å¼æŽ¥å£çš„外部过程于 %L 处"
+msgstr "%2$L处的‘%1$s’必须是一个模å—过程或带有显å¼æŽ¥å£çš„外部过程"
#: fortran/resolve.c:10030
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
-msgstr "%3$L 处与 PASS(%2$s)一起的过程“%1$sâ€æ²¡æœ‰å‚数“%4$sâ€"
+msgstr "%3$L处有 PASS(%2$s)的过程‘%1$s’没有å‚数‘%4$s’"
#: fortran/resolve.c:10044
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
-msgstr "%2$L 处与 PASS 一起的过程“%1$sâ€å¿…须至少有一个å‚æ•°"
+msgstr "%2$L处有 PASS 的过程‘%1$s’必须至少带一个å‚æ•°"
#: fortran/resolve.c:10055 fortran/resolve.c:10424
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Non-polymorphic passed-object dummy argument of '%s' at %L"
-msgstr "%2$L处声明了未使用的哑元实å‚‘%1$s’"
+msgstr "%2$L处éžå¤šæ€çš„传递对象虚å‚‘%1$s’"
#: fortran/resolve.c:10063
#, no-c-format
@@ -10472,14 +10472,14 @@ msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s
msgstr " %4$L处的具有 PASS(%3$s) 的‘%2$s’的å‚数‘%1$s’必须具有派生类型‘%5$s’"
#: fortran/resolve.c:10091
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
-msgstr "在 %2$L 处过程“%1$sâ€æœ‰ä¸Žâ€œ%3$sâ€ç»„件å相åŒçš„åå­—"
+msgstr "%2$L处过程‘%1$s’和‘%3$s’的组件é‡å"
#: fortran/resolve.c:10100
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Procedure '%s' at %L has the same name as an inherited component of '%s'"
-msgstr "在 %2$L 处过程“%1$sâ€æœ‰ä¸Žâ€œ%3$sâ€ç»§æ‰¿ç»„件å相åŒçš„åå­—"
+msgstr "%2$L处过程‘%1$s’和‘%3$s’的继承组件é‡å"
#: fortran/resolve.c:10187
#, no-c-format
@@ -10487,14 +10487,14 @@ msgid "Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRE
msgstr "%2$L处声明的派生类型‘%1$s’必须是 ABSTRACT,因为‘%3$s’是 DEFERRED 且没有被覆盖"
#: fortran/resolve.c:10248
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
-msgstr "%2$L 处ä¸èƒ½ä¼¸å±•çš„派生类型“%1$sâ€å¿…é¡»ä¸æ˜¯ä¸ª ABSTRACT"
+msgstr "%2$L处ä¸èƒ½æ‰©å±•çš„派生类型‘%1$s’ä¸èƒ½æ˜¯ ABSTRACT"
#: fortran/resolve.c:10258
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Interface '%s', used by procedure pointer component '%s' at %L, is declared in a later PROCEDURE statement"
-msgstr "内部过程‘%s’在%L处ä¸å…许用作实å‚"
+msgstr "%3$L处为过程指针组件‘%2$s’所使用的接å£â€˜%1$s’在之åŽçš„ PROCEDURE 语å¥ä¸­è¢«å£°æ˜Ž"
#: fortran/resolve.c:10319
#, no-c-format
@@ -10512,9 +10512,9 @@ msgid "Procedure pointer component '%s' with PASS at %L must have at least one a
msgstr "%2$L处的具有 PASS 的过程指针组件‘%1$s’必须至少有一个实å‚"
#: fortran/resolve.c:10388
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Argument '%s' of '%s' with PASS(%s) at %L must be of the derived type '%s'"
-msgstr " %4$L 处的具有 PASS(%3$s) 的“%2$sâ€çš„å‚数“%1$sâ€å¿…须是派生类型“%5$sâ€"
+msgstr "%4$L处具有 PASS(%3$s) 的‘%2$s’的å‚数‘%1$s’必须有派生类型‘%5$s’"
#: fortran/resolve.c:10398
#, no-c-format
@@ -10532,9 +10532,9 @@ msgid "Argument '%s' of '%s' with PASS(%s) at %L may not be ALLOCATABLE"
msgstr "%4$L处带有 PASS(%3$s)的‘%2$s’的å‚数‘%1s’ä¸èƒ½æ˜¯ ALLOCATABLE"
#: fortran/resolve.c:10439
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
-msgstr "在 %3$L 处的“%2$sâ€çš„组件“%1$sâ€æœ‰ä¸Žç»§æ‰¿çš„ç•Œé™ç±»åž‹è¿‡ç¨‹åŒçš„åå­—"
+msgstr "%3$L处‘%2$s’的组件‘%1$s’与一个继承的类型é™å®šè¿‡ç¨‹åŒå"
#: fortran/resolve.c:10451
#, no-c-format
@@ -10542,19 +10542,19 @@ msgid "Character length of component '%s' needs to be a constant specification e
msgstr "%2$L处组件‘%1$s’的字符长度必须是一个常é‡è§„格表达å¼"
#: fortran/resolve.c:10466
-#, fuzzy, no-c-format
+#, 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 2003: 组件“%1$sâ€æ˜¯ä¸€ä¸ª PRIVATE 类型并且ä¸èƒ½æ˜¯ä¸€ä¸ªåœ¨ %3$L 处的 PUBLIC 的组件“%2$sâ€"
+msgstr "Fortran 2003:%3$L处组åˆâ€˜%1$s’是一个 PRIVATE 类型,因此ä¸èƒ½æ˜¯ PUBLIC‘%2$s’的组åˆ"
#: fortran/resolve.c:10476
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Component %s of SEQUENCE type declared at %L does not have the SEQUENCE attribute"
-msgstr "在 %2$L 处 SEQUENCE 类型声明的组件 %1$s 没有 SEQUENCE 属性"
+msgstr "%2$L处声明的有 SEQUENCE 类型的组件 %1$s 没有 SEQUENCE 属性"
#: fortran/resolve.c:10487
-#, fuzzy, no-c-format
+#, no-c-format
msgid "The pointer component '%s' of '%s' at %L is a type that has not been declared"
-msgstr "在 %3$L 处的“%2$sâ€çš„组件“%1$sâ€æ˜¯ä¸ªå°šæœªå£°æ˜Žçš„类型"
+msgstr "%3$L处‘%2$s’的指针组件‘%1$s’类型尚未声明"
#: fortran/resolve.c:10498
#, no-c-format
@@ -10562,59 +10562,59 @@ msgid "Component '%s' with CLASS at %L must be allocatable or pointer"
msgstr "%2$L处具有 CLASS 的组件‘%1$s’必须是å¯åˆ†é…的或指针"
#: fortran/resolve.c:10526
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Component '%s' of '%s' at %L must have constant array bounds"
-msgstr "在 %3$L 处的组件“%2$sâ€çš„“%1$sâ€å¿…须常é‡æ•°ç»„ç•Œé™"
+msgstr "%3$L处‘%2$s’的组件‘%1$s’必须有常é‡æ•°ç»„ç•Œé™"
#: fortran/resolve.c:10571
-#, fuzzy, no-c-format
+#, no-c-format
msgid "NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC namelist '%s' at %L"
-msgstr "NAMELIST 对象“%sâ€å£°æ˜Žäº† PRIVATE 而ä¸èƒ½æ˜¯åœ¨ %L 处 PUBLIC å字列表“%sâ€çš„æˆå‘˜"
+msgstr "%3$L处 NAMELIST 对象‘%1$s’声明为 PRIVATE å› æ­¤ä¸èƒ½æ˜¯ PUBLIC å字列表‘%2$s’的æˆå‘˜"
#: fortran/resolve.c:10581
-#, fuzzy, no-c-format
+#, no-c-format
msgid "NAMELIST object '%s' has use-associated PRIVATE components and cannot be member of namelist '%s' at %L"
-msgstr "NAMELIST 对象“%1$sâ€æœ‰ä½¿ç”¨ç›¸å…³çš„ PRIVATE 组件并且ä¸èƒ½æ˜¯åœ¨ %3$L 处 NAMELIST“%2$sâ€çš„æˆå‘˜"
+msgstr "%3$L处 NAMELIST 对象‘%1$s’有使用相关的 PRIVATE 组件因此ä¸èƒ½æ˜¯ NAMELIST‘%2$s’的æˆå‘˜"
#: fortran/resolve.c:10594
-#, fuzzy, no-c-format
+#, no-c-format
msgid "NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC namelist '%s' at %L"
-msgstr "NAMELIST 对象“%1$sâ€æœ‰ PRIVATE 组件并且ä¸èƒ½æ˜¯åœ¨ %3$L 处 PUBLIC å字列表“%2$sâ€çš„一个æˆå‘˜"
+msgstr "%3$L处 NAMELIST 对象‘%1$s’有 PRIVATE 组件因此ä¸èƒ½æ˜¯ PUBLIC å字列表‘%2$s’的æˆå‘˜"
#: fortran/resolve.c:10606
-#, fuzzy, no-c-format
+#, no-c-format
msgid "NAMELIST array object '%s' must not have assumed shape in namelist '%s' at %L"
-msgstr "NAMELIST 数组对象“%1$sâ€åœ¨ %3$L 处å字列表“%2$sâ€ä¸­å¿…须没有å‡å®šå¤–å½¢"
+msgstr "%3$L处 NAMELIST 数组对象‘%1$s’在å字列表‘%2$s’ä¸èƒ½æœ‰å‡å®šå¤–å½¢"
#: fortran/resolve.c:10615
-#, fuzzy, no-c-format
+#, no-c-format
msgid "NAMELIST array object '%s' must have constant shape in namelist '%s' at %L"
-msgstr "NAMELIST 数组对象“%1$sâ€åœ¨ %3$L 处å字列表“%2$sâ€ä¸­å¿…须有æ’定的外形"
+msgstr "%3$L处 NAMELIST 数组对象‘%1$s’在å字列表‘%2$s’必须有常外形"
#: fortran/resolve.c:10627
-#, fuzzy, no-c-format
+#, no-c-format
msgid "NAMELIST object '%s' in namelist '%s' at %L cannot have ALLOCATABLE components"
-msgstr "%L 处å字列表“%2$sâ€ä¸­çš„ NAMELIST 对象“%1$sâ€ä¸èƒ½æœ‰ ALLOCATABLE 组件"
+msgstr "%3$L处 NAMELIST 数组对象‘%1$s’在å字列表‘%2$s’必须有 ALLOCATABLE 组件"
#: fortran/resolve.c:10635
-#, fuzzy, no-c-format
+#, no-c-format
msgid "NAMELIST object '%s' in namelist '%s' at %L cannot have POINTER components"
-msgstr "%3$L 处å字列表“%2$sâ€ä¸­çš„ NAMELIST 对象“%1$sâ€ä¸èƒ½æœ‰ POINTER 组件"
+msgstr "%3$L处 NAMELIST 数组对象‘%1$s’在å字列表‘%2$s’ä¸èƒ½æœ‰ POINTER 组件"
#: fortran/resolve.c:10661
-#, fuzzy, no-c-format
+#, no-c-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
-msgstr "PROCEDURE 属性与在 %2$L 处“%1$sâ€ä¸­çš„ NAMELIST 属性冲çª"
+msgstr "PROCEDURE 属性与%2$L处‘%1$s’中的 NAMELIST 属性冲çª"
#: fortran/resolve.c:10680
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
-msgstr "在 %L 处的å‚数数组“%1$sâ€ä¸èƒ½æ˜¯è‡ªåŠ¨çš„或有延迟的外形"
+msgstr "%2$L处的å‚数数组‘%1$s’ä¸èƒ½æ˜¯è‡ªåŠ¨çš„或有延迟的外形"
#: fortran/resolve.c:10692
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
-msgstr "在 %2$L 处éšå¼åœ°æ‰“å­—çš„ PARAMETER“%1$sâ€ä¸Žä¸€ä¸ªæ›´åŽé¢çš„ IMPLICIT 类型ä¸åŒ¹é…"
+msgstr "%2$L处éšå¼ç±»åž‹çš„ PARAMETER‘%1$s’与éšåŽçš„ IMPLICIT 类型ä¸åŒ¹é…"
#: fortran/resolve.c:10703
#, no-c-format
@@ -10627,24 +10627,24 @@ msgid "PROCEDURE '%s' at %L may not be used as its own interface"
msgstr "%2$L处的 PROCEDURE‘%1$s’ä¸èƒ½è¢«ç”¨ä½œå…¶è‡ªèº«çš„接å£"
#: fortran/resolve.c:10772
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Interface '%s', used by procedure '%s' at %L, is declared in a later PROCEDURE statement"
-msgstr "%3$L 处“%2$sâ€è¿‡ç¨‹æ‰€ç”¨çš„接å£â€œ%1$sâ€æ˜¯åœ¨ä»¥åŽçš„ PROCEDURE 语å¥ä¸­å£°æ˜Ž"
+msgstr "为过程‘%2$s’在%3$L处使用的接å£â€˜%1$s’是在之åŽçš„ PROCEDURE 语å¥ä¸­å£°æ˜Žçš„"
#: fortran/resolve.c:10825
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Interface '%s' of procedure '%s' at %L must be explicit"
-msgstr "在 %3$L 处过程“%2$sâ€çš„接å£â€œ%1$sâ€å¿…须是显å¼çš„"
+msgstr "%3$L处过程‘%2$s’的接å£â€˜%1$s’必须是显å¼çš„"
#: fortran/resolve.c:10892
#, no-c-format
msgid "Assumed size array at %L must be a dummy argument"
-msgstr "%L处å‡å®šå¤§å°çš„数组必须是一个哑元"
+msgstr "%L处å‡å®šå¤§å°çš„数组必须是一个虚å‚"
#: fortran/resolve.c:10895
#, no-c-format
msgid "Assumed shape array at %L must be a dummy argument"
-msgstr "%L处å‡å®šå¤–形的数组必须是一个哑元"
+msgstr "%L处å‡å®šå¤–形的数组必须是一个虚å‚"
#: fortran/resolve.c:10907
#, no-c-format
@@ -10652,39 +10652,39 @@ msgid "Symbol at %L is not a DUMMY variable"
msgstr "%L处的符å·ä¸æ˜¯ä¸€ä¸ª DUMMY å˜é‡"
#: fortran/resolve.c:10913
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
-msgstr "%2$L 处的“%1$sâ€ä¸èƒ½æœ‰ VALUE 属性,因为它ä¸æ˜¯ä¸ªå“‘å‚æ•°"
+msgstr "%2$L 处的“%1$sâ€ä¸èƒ½æœ‰ VALUE 属性,因为它ä¸æ˜¯ä¸ªè™šå‚"
#: fortran/resolve.c:10923
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Character dummy variable '%s' at %L with VALUE attribute must have constant length"
-msgstr "在 %2$L 处具有 VALUE 属性的字符哑å˜é‡â€œ%1$sâ€å¿…须有是常数长度"
+msgstr "%2$L处带 VALUE 属性的字符哑元‘%1$s’必须具有常数长度"
#: fortran/resolve.c:10932
-#, fuzzy, no-c-format
+#, no-c-format
msgid "C interoperable character dummy variable '%s' at %L with VALUE attribute must have length one"
-msgstr "在 %2$L 处具有 C å¯äº’æ“作的 VALUE 属性的字符哑å˜é‡â€œ%1$sâ€å¿…须长度1"
+msgstr "%2$L处带 VALUE 属性与 C å¯äº’æ“作的字符哑元‘%1$s’长度必须为 1"
#: fortran/resolve.c:10958
-#, fuzzy, no-c-format
+#, 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 "在 %2$L 处å˜é‡â€œ%1$sâ€ä¸èƒ½æ˜¯ä½¿ç»“åˆ BIND(C) 因为它既ä¸æ˜¯ä¸€ä¸ª COMMON å—也ä¸æ˜¯äºŽæ¨¡å—级范围声明的"
+msgstr "%2$L处å˜é‡â€˜%1$s’ä¸èƒ½æ˜¯ BIND(C) 因为它既ä¸æ˜¯ä¸€ä¸ª COMMON å—也ä¸æ˜¯äºŽæ¨¡å—级作用域声明的"
#: fortran/resolve.c:11011
-#, fuzzy, no-c-format
+#, no-c-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
-msgstr "在 %2$L 处的派生类型“%1$sâ€æ˜¯å°šæœªå®šä¹‰çš„类型“%3$sâ€"
+msgstr "%2$L处派生类型‘%1$s’的类型‘%3$s’尚未定义"
#: fortran/resolve.c:11052
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
-msgstr "Fortran 2003: PRIVATE 派生类型“%3$sâ€çš„ %2$L 处的 PUBLIC %s“%1$sâ€"
+msgstr "Fortran 2003:%3$L处 PUBLIC %1$s‘%2$s’具有 PRIVATE 派生类型‘%4$s’"
#: fortran/resolve.c:11071
-#, fuzzy, no-c-format
+#, no-c-format
msgid "The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have a default initializer"
-msgstr "在 %L 处INTENT(OUT) å‡å‚数“%sâ€æ˜¯ ASSUMED SIZE 所以ä¸èƒ½å¤Ÿæœ‰ä¸€ä¸ªé»˜è®¤åˆå§‹åŒ–器"
+msgstr "%2$L处INTENT(OUT) 虚å‚‘%1$s’是 ASSUMED SIZE,所以ä¸èƒ½æœ‰ä¸€ä¸ªé»˜è®¤åˆå§‹å€¼è®¾å®š"
#: fortran/resolve.c:11145
#, no-c-format
@@ -10692,14 +10692,14 @@ msgid "Threadprivate at %L isn't SAVEd"
msgstr "%L处的线程ç§æœ‰å˜é‡æœªè¢«ä¿å­˜"
#: fortran/resolve.c:11233
-#, fuzzy, no-c-format
+#, no-c-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
-msgstr "BLOCK DATA 元素“%sâ€(在 %L 上)必须在 COMMON 中"
+msgstr "%2$L处 BLOCK DATA 元素‘%1$s’必须在 COMMON 中"
#: fortran/resolve.c:11239
-#, fuzzy, no-c-format
+#, no-c-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
-msgstr "在 %L 处的 DATA 数组“%sâ€å¿…须在一个先å‰çš„声明中规定"
+msgstr "%2$L处 BLOCK DATA 元素‘%1$s’必在å‰ä¸€ä¸ªå£°æ˜Žä¸­æŒ‡å®š"
#: fortran/resolve.c:11255
#, no-c-format
@@ -10707,9 +10707,9 @@ msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr "%2$L处的 DATA 元素‘%1$s’是一个指针所以必须是一个完全的数组"
#: fortran/resolve.c:11301
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Nonconstant array section at %L in DATA statement"
-msgstr "%L 处 DATA 语å¥ä¸­æœ‰éžå¸¸é‡æ•°ç»„部分"
+msgstr "%L处 DATA 语å¥ä¸­æœ‰éžå¸¸é‡æ•°ç»„段"
#: fortran/resolve.c:11314
#, no-c-format
@@ -10787,14 +10787,14 @@ msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr "%2$L处的有å常é‡â€˜%1$s’ä¸èƒ½æ˜¯ä¸€ä¸ª EQUIVALENCE 对象"
#: fortran/resolve.c:11978
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
-msgstr "具有éžå¸¸é‡é™å®šçš„ %2$L 处的数组“%1$sâ€ä¸èƒ½æ˜¯ä¸€ä¸ª EQUIVALENCE 对象"
+msgstr "%2$L处有éžå¸¸é‡ç•Œé™çš„数组‘%1$s’ä¸èƒ½æ˜¯ä¸€ä¸ª EQUIVALENCE 对象"
#: fortran/resolve.c:11989
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
-msgstr "%2$L 处的结构组件“%1$sâ€ä¸èƒ½æ˜¯ä¸€ä¸ª EQUIVALENCE 对象"
+msgstr "%2$L处结构组件‘%1$s’ä¸èƒ½æ˜¯ä¸€ä¸ª EQUIVALENCE 对象"
#: fortran/resolve.c:12000
#, no-c-format
@@ -10802,9 +10802,9 @@ msgid "Substring at %L has length zero"
msgstr "%L çš„å­å­—符串长度为零"
#: fortran/resolve.c:12044
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
-msgstr "Fortran 2003:PRIVATE 类型“%3$sâ€çš„ %2$L 处的 PUBLIC 函数“%1$sâ€"
+msgstr "Fortran 2003:%2$L处 PRIVATE 类型‘%3$s’的 PUBLIC 函数‘%1$s’"
#: fortran/resolve.c:12057
#, no-c-format
@@ -10817,9 +10817,9 @@ msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr "%2$L处的用户è¿ç®—符‘%1$s’必须是一个 FUNCTION"
#: fortran/resolve.c:12084
-#, fuzzy, no-c-format
+#, no-c-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
-msgstr "在 %2$L 处用户è¿ç®—符过程“%1$sâ€ä¸èƒ½æ˜¯å‡å®šçš„字符长度"
+msgstr "%2$L处用户è¿ç®—符过程‘%1$s’ä¸èƒ½æœ‰å‡å®šå­—符长度"
#: fortran/resolve.c:12092
#, no-c-format
@@ -10842,19 +10842,19 @@ msgid "Operator interface at %L must have, at most, two arguments"
msgstr "%L处的è¿ç®—符接å£å¿…须有至多两个实å‚"
#: fortran/resolve.c:12203
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
-msgstr "在 PURE 过程的 %2$L 处的包å«çš„过程的“%1$sâ€å¿…须也是 PURE"
+msgstr "%2$L处 PURE 过程中包å«çš„过程‘%1$s’必须也是 PURE"
#: fortran/scanner.c:760
-#, fuzzy, no-c-format
+#, no-c-format
msgid "!$OMP at %C starts a commented line as it neither is followed by a space nor is a continuation line"
-msgstr "在 %C 处 !$OMP 开始一个注释行,它既ä¸æ˜¯è·Ÿéšä¸€ä¸ªç©ºç™½ç¬¦ä¹Ÿä¸æ˜¯ä¸€ä¸ªç»­è¡Œç¬¦"
+msgstr "%C处的 !$OMP 开始了一个注释行,因为它既ä¸æ˜¯ç”±ä¸€ä¸ªç©ºç™½ç¬¦è·Ÿéšä¹Ÿä¸æ˜¯ä¸€ä¸ªç»­è¡Œ"
#: fortran/scanner.c:1078 fortran/scanner.c:1221
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Limit of %d continuations exceeded in statement at %C"
-msgstr "%2$C 处语å¥ä¸­è¶…出 %1$d 个连续的é™åˆ¶"
+msgstr "%2$C处语å¥è¶…出 %1$d 个续行的é™åˆ¶"
#: fortran/scanner.c:1090 fortran/scanner.c:1177
#, no-c-format
@@ -10904,7 +10904,7 @@ msgstr "%s 的结果在%L处上溢其ç§åˆ«"
#: fortran/simplify.c:91
#, no-c-format
msgid "Result of %s underflows its kind at %L"
-msgstr "%s 的结果在%L处下溢其ç§ç±»"
+msgstr "%s 的结果在%L处下溢其ç§åˆ«"
#: fortran/simplify.c:96
#, no-c-format
@@ -10937,9 +10937,9 @@ msgid "Argument of %s function at %L outside of range [0,127]"
msgstr "%2$L处 %1$s 函数的å‚æ•°ä¸åœ¨[0,127]范围内"
#: fortran/simplify.c:705
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Argument of %s function at %L is too large for the collating sequence of kind %d"
-msgstr "%2$L 处的 %1$s 函数的å‚数对于对比åºåˆ— $3$d æ¥è¯´å¤ªå¤§"
+msgstr "%2$L处的 %1$s 函数的å‚数对于ç§åˆ«ä¸º %3$d 的对比åºåˆ—æ¥è¯´å¤ªå¤§"
#: fortran/simplify.c:744
#, no-c-format
@@ -10984,7 +10984,7 @@ msgstr "%L处 IBCLR 的第二个å‚数无效"
#: fortran/simplify.c:2275
#, no-c-format
msgid "Second argument of IBCLR exceeds bit size at %L"
-msgstr "%L处IBCLR 的第二个å‚数超过ä½å¤§å°"
+msgstr "%L处 IBCLR 的第二个å‚数超过ä½å¤§å°"
#: fortran/simplify.c:2309
#, no-c-format
@@ -11137,9 +11137,9 @@ msgid "Argument of SQRT at %L has a negative value"
msgstr "%L处 SQRT çš„å‚数为负"
#: fortran/simplify.c:5623
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Intrinsic TRANSFER at %L has partly undefined result: source size %ld < result size %ld"
-msgstr "在 %L 处内在的 TRANSFER 有部分未定义的结果: æºå°ºå¯¸ %ld < 结果尺寸 %ld"
+msgstr "%L处内建 TRANSFER 有部分未定义的结果:æºå°ºå¯¸ %ld < 结果尺寸 %ld"
#: fortran/simplify.c:6078
#, no-c-format
@@ -11180,9 +11180,9 @@ msgstr "%2$L处éšå¼å£°æ˜Žçš„ BIND(C) å˜é‡â€˜%1$s’ä¸èƒ½ä¸Ž C 互æ“作"
#. Dummy args to a BIND(C) routine may not be interoperable if
#. they are implicitly typed.
#: fortran/symbol.c:292
-#, fuzzy, no-c-format
+#, 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 "%2$L 处éšå¼å£°æ˜Žçš„å˜é‡â€œ%1$sâ€ä¸èƒ½ä¸Ž C 互æ“作,但它对 %4$L 处的 BIND(C) 过程“%3$sâ€æ˜¯ä¸ªå“‘å‚æ•°"
+msgstr "%2$L处éšå¼å£°æ˜Žçš„å˜é‡â€˜%1$s’ä¸èƒ½ä¸Ž C 互æ“作,但它是%4$L处的 BIND(C) 过程‘%3$s’的虚å‚"
#: fortran/symbol.c:333
#, no-c-format
@@ -11245,19 +11245,19 @@ msgid "Duplicate %s attribute specified at %L"
msgstr "é‡å¤çš„ %s 属性在%L处被指定"
#: fortran/symbol.c:847
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ALLOCATABLE specified outside of INTERFACE body at %L"
-msgstr "规定的 ALLOCATABLE 在 INTERFACE 主体外é¢(在 %L 上)"
+msgstr "%L 处 ALLOCATABLE 指定在 INTERFACE 体之外"
#: fortran/symbol.c:873
-#, fuzzy, no-c-format
+#, no-c-format
msgid "DIMENSION specified for '%s' outside its INTERFACE body at %L"
-msgstr "为“%sâ€è§„定的 DIMENSION 在 %L 处它的 INTERFACE 主体外é¢"
+msgstr "%2$L处为‘%1$s’的 DIMENSION 指定在其 INTERFACE 体之外"
#: fortran/symbol.c:991
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Cray Pointee at %L appears in multiple pointer() statements"
-msgstr "在 %L 处的Cray Pointee 出现在多个 pointer() 语å¥ä¸­"
+msgstr "%L处 Cray 指针指å‘的对象出现在多个 pointer() 语å¥ä¸­"
#: fortran/symbol.c:1010
#, no-c-format
@@ -11290,9 +11290,9 @@ msgid "%s attribute of '%s' conflicts with %s attribute at %L"
msgstr "‘%2$s’的 %1$s 属性与%4$L处的 %3$s 属性冲çª"
#: fortran/symbol.c:1417
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s procedure at %L is already declared as %s procedure"
-msgstr "%2$L 处的 %1$s 过程已ç»è¢«å£°æ˜Žä¸º %3$s 过程"
+msgstr "%2$L处的 %1$s 过程已ç»è¢«å£°æ˜Žä¸º %3$s 过程"
#: fortran/symbol.c:1452
#, no-c-format
@@ -11315,9 +11315,9 @@ msgid "Fortran 2003: BIND(C) at %L"
msgstr "Fortran 2003:%L处的 BIND(C)"
#: fortran/symbol.c:1517
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate EXTENDS attribute specified at %L"
-msgstr "%L 处指定了é‡å¤çš„ EXTENDS 属性"
+msgstr "%L处指定了é‡å¤çš„ EXTENDS 属性"
#: fortran/symbol.c:1521
#, no-c-format
@@ -11330,9 +11330,9 @@ msgid "Symbol '%s' at %L already has an explicit interface"
msgstr "符å·â€˜%s’在%L处已ç»æœ‰äº†æ˜¾å¼æŽ¥å£"
#: fortran/symbol.c:1550
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' at %L has attributes specified outside its INTERFACE body"
-msgstr "在 %L 处的“%sâ€æœ‰åœ¨å®ƒçš„ INTERFACE 主体外é¢è§„定的属性"
+msgstr "%2$L处的‘%1$s’有在其 INTERFACE 体外指定的属性"
#: fortran/symbol.c:1583
#, no-c-format
@@ -11410,25 +11410,25 @@ msgid "Label %d at %C previously used as branch target"
msgstr "%2$Cå¤„çš„æ ‡å· %1$d å…ˆå‰ç”¨ä½œåˆ†æ”¯ç›®æ ‡"
#: fortran/symbol.c:2463
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Name '%s' at %C is an ambiguous reference to '%s' from module '%s'"
-msgstr "在 %2$C 处的å字“%1$sâ€æ˜¯ä¸ªä»Žæ¨¡å—“%4$sâ€å¯¹â€œ%3$sâ€äºŒä¹‰æ€§çš„引用"
+msgstr "%2$C处的å字‘%1$s’是从模å—‘%4$s’对‘%3$s’有歧义的引用"
#: fortran/symbol.c:2466
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Name '%s' at %C is an ambiguous reference to '%s' from current program unit"
-msgstr "在 %C 处å字“%sâ€æ˜¯ä»Žå½“å‰çš„程åºå•å…ƒå¯¹â€œ%sâ€çš„二义性的引用"
+msgstr "%2$C处的å字‘%1$s’是从当å‰ç¨‹åºå•å…ƒå¯¹â€˜%3$s’有歧义的引用"
#. Symbol is from another namespace.
#: fortran/symbol.c:2625
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Symbol '%s' at %C has already been host associated"
-msgstr "在 %C 处符å·â€œ%sâ€å·²ç»ä¸Žä¸»æœºç›¸å…³è”"
+msgstr "%2$C处符å·â€˜%1$s’已ç»ä¸Žä¸»æœºç›¸å…³è”"
#: fortran/symbol.c:3459
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Derived type '%s' declared at %L must have the BIND attribute to be C interoperable"
-msgstr "%2$L 处的派生类型“%1$sâ€å¿…须使 BIND 属性为å¯ä¸Ž C 互æ“作"
+msgstr "%2$L处声明的派生类型‘%1$s’必须使用 BIND 属性方å¯ä¸Ž C 互æ“作"
#: fortran/symbol.c:3470
#, no-c-format
@@ -11436,9 +11436,9 @@ msgid "Derived type '%s' at %L is empty"
msgstr "派生类型‘%s’在%L处是空的"
#: fortran/symbol.c:3487
-#, fuzzy, no-c-format
+#, 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 "%2$L 处的组件“%1$sâ€ä¸èƒ½æœ‰ POINTER 属性,因为它是 %4$L 处派生类型 BIND(C)“%3$sâ€çš„æˆå‘˜"
+msgstr "%2$L处的组件‘%1$s’ä¸èƒ½æœ‰ POINTER 属性,因为它是%4$L处派生类型 BIND(C)‘%3$s’的æˆå‘˜"
#: fortran/symbol.c:3497
#, no-c-format
@@ -11446,34 +11446,34 @@ msgid "Procedure pointer component '%s' at %L cannot be a member of the BIND(C)
msgstr "%2$L 处的过程指针组件‘%1$s’ä¸èƒ½æ˜¯%4$L处 BIND(C) 派生类型‘%3$s’的æˆå‘˜"
#: fortran/symbol.c:3508
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Component '%s' at %L cannot have the ALLOCATABLE attribute because it is a member of the BIND(C) derived type '%s' at %L"
-msgstr "%2$L 处的组件“%1$sâ€ä¸èƒ½æœ‰ ALLOCATABLE 属性,因为它是 %4$L 处派生类型 BIND(C)“%3$sâ€çš„æˆå‘˜"
+msgstr "%2$L处的组件‘%1$s’ä¸èƒ½æœ‰ ALLOCATABLE 属性,因为它是%4$L处派生类型 BIND(C)‘%3$s’的æˆå‘˜"
#. If the derived type is bind(c), all fields must be
#. interop.
#: fortran/symbol.c:3546
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Component '%s' in derived type '%s' at %L may not be C interoperable, even though derived type '%s' is BIND(C)"
-msgstr "%3$L 处的派生类型“%2$sâ€ç»„件“%1$sâ€ä¸å¯èƒ½æ˜¯ C 互æ“作的,å³ä½¿æ´¾ç”Ÿç±»åž‹â€œ%3$sâ€æ˜¯ BIND(C)"
+msgstr "%3$L处的派生类型‘%2$s’的组件‘%1$s’ä¸èƒ½ä¸Ž C 互æ“作,å³ä½¿æ´¾ç”Ÿç±»åž‹â€˜%4$s’是 BIND(C)"
#. 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:3555
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Component '%s' in derived type '%s' at %L may not be C interoperable"
-msgstr "%2$L 派生类型“%2$sâ€ä¸­çš„组件“%1$sâ€ä¸èƒ½ä¸Ž C 互æ“作"
+msgstr "%3$L处派生类型‘%2$s’中的组件‘%1$s’ä¸èƒ½ä¸Ž C 互æ“作"
#: fortran/symbol.c:3569
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Derived type '%s' at %L cannot be declared with both PRIVATE and BIND(C) attributes"
-msgstr "%2$L 处的派生类型“%1$sâ€ä¸èƒ½ç”¨ PRIVATE å’Œ BIND(C) 属性æ¥å£°æ˜Ž"
+msgstr "%2$L处派生类型‘%1$s’ä¸èƒ½åŒæ—¶è¢«å£°æ˜Žä¸ºå…·æœ‰ PRIVATE å’Œ BIND(C)属性"
#: fortran/symbol.c:3577
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Derived type '%s' at %L cannot have the SEQUENCE attribute because it is BIND(C)"
-msgstr "%2$L 处派生类型“%1$sâ€ä¸èƒ½æœ‰ SEQUENCE 属性,因为它是 BIND(C)"
+msgstr "%2$L处派生类型‘%1$s’ä¸èƒ½æœ‰ SEQUENCE 属性,因为它是 BIND(C)"
#: fortran/symbol.c:4507
#, no-c-format
@@ -11491,9 +11491,9 @@ msgid "'%s' of '%s' is PRIVATE at %L"
msgstr "‘%2$s’的‘%1$s’在%3$L处是 PRIVATE"
#: fortran/target-memory.c:659
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Overlapping unequal initializers in EQUIVALENCE at %L"
-msgstr "在 %L 处 EQUIVALENCE中é‡è¿­ä¸ç­‰çš„åˆå§‹åŒ–器"
+msgstr "%L 处 EQUIVALENCE 中ä¸ç­‰çš„åˆå§‹å€¼è®¾å®šé‡å "
#: fortran/target-memory.c:746
#, no-c-format
@@ -11509,9 +11509,9 @@ msgstr "在%L处建立临时数组"
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
#: fortran/trans-array.c:4112
-#, fuzzy, no-c-format
+#, 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 "在 %L 处数组构造æˆå‘˜ä¸­çš„元素数需è¦ä¸€ä¸ªå®¹è®¸ %d 上é™çš„增加。 è§ -fmax-array-constructor 选项"
+msgstr "%Lå¤„æ•°ç»„æž„é€ å‡½æ•°ä¸­çš„å…ƒç´ æ•°è¶…è¿‡å®¹è®¸çš„ä¸Šé™ %d。请å‚è§ -fmax-array-constructor 选项"
#: fortran/trans-array.c:5577
#, no-c-format
@@ -11519,9 +11519,9 @@ msgid "Creating array temporary at %L for argument '%s'"
msgstr "%L处为å˜é‡â€˜%s’建立临时数组"
#: fortran/trans-common.c:400
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Named COMMON block '%s' at %L shall be of the same size"
-msgstr "%2$L 处的 COMMON å—“%1$sâ€åº”该是åŒæ ·çš„大å°"
+msgstr "%2$L处的 COMMON å—‘%1$s’应该有åŒæ ·çš„大å°"
#: fortran/trans-common.c:839
#, no-c-format
@@ -11529,40 +11529,40 @@ msgid "Bad array reference at %L"
msgstr "%L处数组引用错误"
#: fortran/trans-common.c:847
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Illegal reference type at %L as EQUIVALENCE object"
-msgstr "在 %L 处的éžæ³•å¼•ç”¨ç±»åž‹ä½œä¸º EQUIVALENCE 对象"
+msgstr "%L处的éžæ³•å¼•ç”¨ç±»åž‹ä½œä¸º EQUIVALENCE 对象"
#: fortran/trans-common.c:887
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Inconsistent equivalence rules involving '%s' at %L and '%s' at %L"
-msgstr "ä¸ä¸€è‡´çš„ç­‰ä»·è§„åˆ™æ¶‰åŠ %2$L 处的“%1$sâ€å’Œ %4$L 处的“%3$sâ€"
+msgstr "涉åŠ%2$L处的‘%1$s’和%4$L处的‘%3$s’的等价规则ä¸ä¸€è‡´"
#. Aligning this field would misalign a previous field.
#: fortran/trans-common.c:1020
-#, fuzzy, no-c-format
+#, no-c-format
msgid "The equivalence set for variable '%s' declared at %L violates alignment requirements"
-msgstr "对于在 %L 处声明的å˜é‡â€œ%sâ€ç­‰ä»·è®¾ç½®ç ´å对准需求"
+msgstr "%2$L处声明的å˜é‡â€˜%1$s’的等价设置è¿å了对é½éœ€æ±‚"
#: fortran/trans-common.c:1087
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Equivalence for '%s' does not match ordering of COMMON '%s' at %L"
-msgstr "“%1$sâ€çš„等价ä¸åŒ¹é…在 %3$L 处 COMMON 的“%2$sâ€çš„次åº"
+msgstr "%3$L处‘%1$s’的等价设置ä¸åŒ¹é… COMMON ‘%2$s’的次åº"
#: fortran/trans-common.c:1102
-#, fuzzy, no-c-format
+#, no-c-format
msgid "The equivalence set for '%s' cause an invalid extension to COMMON '%s' at %L"
-msgstr "对“%1$sâ€ç­‰ä»·è®¾ç½®å¼•èµ·ä¸€ä¸ªå¯¹åœ¨ %3$L 处 COMMON“%2$sâ€çš„无效的扩展 "
+msgstr "%3$L处‘%1$s’的等价设置造æˆäº† COMMON‘%2$s’的一个无效的扩展"
#: fortran/trans-common.c:1117
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Padding of %d bytes required before '%s' in COMMON '%s' at %L; reorder elements or use -fno-align-commons"
-msgstr "需è¦åœ¨ %4$L 处 COMMON“%3$sâ€ä¸­çš„“%2$sâ€ä»¥å‰å¡«å…… %1$d 字节;é‡æŽ’åºå…ƒç´ æˆ–使用 -fno-align-commons"
+msgstr "%4$L处 COMMON‘%3$s’中‘%2$s’之å‰éœ€è¦å¡«å…… %1$d 字节; é‡æŽ’åºå…ƒç´ æˆ–使用 -fno-align-commons"
#: fortran/trans-common.c:1122
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Padding of %d bytes required before '%s' in COMMON at %L; reorder elements or use -fno-align-commons"
-msgstr "在 %L 处 COMMON 中“%sâ€å¤„以å‰éœ€è¦å¡«å…… %d 字节; é‡æŽ’åºå…ƒç´ æˆ–使用 -fno-align-commons"
+msgstr "%3$L处 COMMON 中‘%2$s’之å‰éœ€è¦å¡«å…… %1$d 字节; é‡æŽ’åºå…ƒç´ æˆ–使用 -fno-align-commons"
#: fortran/trans-common.c:1145
#, no-c-format
@@ -11570,19 +11570,19 @@ msgid "COMMON '%s' at %L does not exist"
msgstr "%2$L处的 COMMON‘%1$s’并ä¸å­˜åœ¨"
#: fortran/trans-common.c:1153
-#, fuzzy, no-c-format
+#, no-c-format
msgid "COMMON '%s' at %L requires %d bytes of padding at start; reorder elements or use -fno-align-commons"
-msgstr "在 %L 处的 COMMON“%sâ€éœ€è¦ %d 字节填充在开始处;é‡æŽ’åºå…ƒç´ æˆ–使用 -fno-align-commons"
+msgstr "%2$L处的 COMMON‘%1$sâ€™éœ€è¦ %3$d 字节填充在开始处;é‡æŽ’åºå…ƒç´ æˆ–使用 -fno-align-commons"
#: fortran/trans-common.c:1157
-#, fuzzy, no-c-format
+#, no-c-format
msgid "COMMON at %L requires %d bytes of padding at start; reorder elements or use -fno-align-commons"
-msgstr "在 %L 处的 COMMON éœ€è¦ %d 字节填充在开始处;é‡æŽ’åºå…ƒç´ æˆ–使用 -fno-align-commons"
+msgstr "%L处的 COMMON éœ€è¦ %d 字节填充在开始处;é‡æŽ’åºå…ƒç´ æˆ–使用 -fno-align-commons"
#: fortran/trans-const.c:294
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Assigning value other than 0 or 1 to LOGICAL has undefined result at %L"
-msgstr "在 %L 处对 LOGICAL 赋 0 或 1 外显的值有未定义的结果"
+msgstr "%Lå¤„å‘ LOGICAL 赋 0 或 1 以外的值有未定义的结果"
#: fortran/trans-const.c:358
#, no-c-format
@@ -11597,12 +11597,12 @@ msgstr "%2$L处函数‘%1$s’的返回值没有设置"
#: fortran/trans-decl.c:3782
#, no-c-format
msgid "Dummy argument '%s' at %L was declared INTENT(OUT) but was not set"
-msgstr "%2$L处的哑元å‚数‘%1$s’被声明为 INTENT(OUT),但没有设置"
+msgstr "%2$L处的虚å‚‘%1$s’被声明为 INTENT(OUT),但没有设置"
#: fortran/trans-decl.c:3787
#, no-c-format
msgid "Unused dummy argument '%s' at %L"
-msgstr "%2$L处声明了未使用的哑元实å‚‘%1$s’"
+msgstr "%2$L处声明了未使用的虚å‚‘%1$s’"
#: fortran/trans-decl.c:3793
#, no-c-format
@@ -11622,12 +11622,12 @@ msgstr "%3$L处声明的的函数‘%2$s’的返回值‘%1$s’没有设置"
#: fortran/trans-decl.c:3963
#, c-format
msgid "Actual string length does not match the declared one for dummy argument '%s' (%ld/%ld)"
-msgstr "字符串的实际长度ä¸åŒ¹é…其哑元实å‚声明‘%s’(%ld/%ld)"
+msgstr "字符串的实际长度ä¸åŒ¹é…其虚å‚声明‘%s’(%ld/%ld)"
#: fortran/trans-decl.c:3971
#, c-format
msgid "Actual string length is shorter than the declared one for dummy argument '%s' (%ld/%ld)"
-msgstr "字符串的实际长度短于其哑元实å‚声明‘%s’(%ld/%ld)"
+msgstr "字符串的实际长度短于其虚å‚声明‘%s’(%ld/%ld)"
#: fortran/trans-expr.c:1616
msgid "internal error: bad hash value in dynamic dispatch"
@@ -11651,7 +11651,7 @@ msgstr "%2$L处派生类型‘%1$s’有ç§æœ‰ç»„件"
#: fortran/trans-stmt.c:484
#, no-c-format
msgid "An alternate return at %L without a * dummy argument"
-msgstr "%L ä¸å¸¦ * 哑实å‚的替代返回"
+msgstr "%L ä¸å¸¦ * 虚å‚的替代返回"
#: fortran/trans.c:50
msgid "Array bound mismatch"
@@ -12162,7 +12162,7 @@ msgstr "将 MODULE 文件放入‘directory’"
#: fortran/lang.opt:73
msgid "Warn about possible aliasing of dummy arguments"
-msgstr "为å¯èƒ½çš„å“‘å…ƒé‡å ç»™å‡ºè­¦å‘Š"
+msgstr "为å¯èƒ½çš„虚å‚é‡å ç»™å‡ºè­¦å‘Š"
#: fortran/lang.opt:77
msgid "Warn about alignment of COMMON blocks"
@@ -12225,9 +12225,8 @@ msgid "All intrinsics procedures are available regardless of selected standard"
msgstr "无论选择何ç§æ ‡å‡†ï¼Œæ‰€æœ‰å†…建过程å‡å¯ç”¨"
#: fortran/lang.opt:153
-#, fuzzy
msgid "Do not treat local variables and COMMON blocks as if they were named in SAVE statements"
-msgstr "ä¸æŠŠå±€éƒ¨å˜é‡ å’Œ COMMON å—如它们在 SAVE 语å¥ä¸­å‘½å的那样æ¥å¤„ç†"
+msgstr "ä¸æŠŠå±€éƒ¨å˜é‡ å’Œ COMMON å—如它们在 SAVE 语å¥ä¸­è¢«å‘½å那样æ¥å¤„ç†"
#: fortran/lang.opt:157
msgid "Specify that backslash in string introduces an escape character"
@@ -12242,9 +12241,8 @@ msgid "-fblas-matmul-limit=<n> Size of the smallest matrix for which matm
msgstr "-fblas-matmul-limit=<n> 使用 BLAS 进行矩阵乘法的矩阵大å°ä¸‹é™"
#: fortran/lang.opt:169
-#, fuzzy
msgid "Produce a warning at runtime if a array temporary has been created for a procedure argument"
-msgstr "在è¿è¡Œæ—¶é—´æ—¶åˆ»ä¸Šå¦‚果临时为一个过程å‚数创建一个数组产生一个警告"
+msgstr "对为过程实å‚而临时创建的数组产生一个è¿è¡Œæ—¶è­¦å‘Š"
#: fortran/lang.opt:173
msgid "Use big-endian format for unformatted files"
@@ -12408,7 +12406,7 @@ msgstr "在堆栈上分é…局部å˜é‡ä»¥å…许间接递归"
#: fortran/lang.opt:341
msgid "Copy array sections into a contiguous block on procedure entry"
-msgstr "在过程入å£å¤„将数组节å¤åˆ¶åˆ°ä¸€ä¸ªè¿žç»­çš„å—中"
+msgstr "在过程入å£å¤„将数组段å¤åˆ¶åˆ°ä¸€ä¸ªè¿žç»­çš„å—中"
#: fortran/lang.opt:345
msgid "Specify which runtime checks are to be performed"
@@ -13442,7 +13440,7 @@ msgstr "å‡å®šæ ˆå¯¹é½åˆ° 2 的此次方上"
#: config/i386/i386.opt:185
msgid "Use push instructions to save outgoing arguments"
-msgstr "使用 push 指令ä¿å­˜å‚æ•°"
+msgstr "使用 push 指令ä¿å­˜è¾“出å‚æ•°"
#: config/i386/i386.opt:189
msgid "Use red-zone in the x86-64 code"
@@ -13886,18 +13884,16 @@ msgid "Determine which dependences between insns are considered costly"
msgstr "指定指令间的哪些ä¾èµ–关系将被认为是有开销的"
#: config/rs6000/rs6000.opt:310
-#, fuzzy
msgid "Specify which post scheduling nop insertion scheme to apply"
-msgstr "指定应用的事åŽè°ƒåº¦ nop æ’入计划"
+msgstr "指定è¦åº”ç”¨çš„è°ƒåº¦åŽ NOP æ’入机制"
#: config/rs6000/rs6000.opt:314
msgid "Specify alignment of structure fields default/natural"
msgstr "指定结构字段默认或自然的对é½"
#: config/rs6000/rs6000.opt:318
-#, fuzzy
msgid "Specify scheduling priority for dispatch slot restricted insns"
-msgstr "为é™åˆ¶ insns çš„è°ƒé£æ§½æŒ‡å®šè°ƒåº¦ä¼˜å…ˆçº§æ•°"
+msgstr "指定分é…槽å—é™çš„指令的调度优先级"
#: config/rs6000/rs6000.opt:322
msgid "Single-precision floating point unit"
@@ -14670,9 +14666,8 @@ msgid "Relax branches"
msgstr "放宽跳转"
#: config/avr/avr.opt:60
-#, fuzzy
msgid "Make the linker relaxation machine assume that a program counter wrap-around occures."
-msgstr "链接器æ¾é©°æœºå™¨å‡å®šä¸€ä¸ªç¨‹åºè®¡æ•°å™¨çŽ¯ç»•å‘生 。"
+msgstr "使链接器æ¾é©°æœºå‡å®šä¼šå‘生程åºè®¡æ•°å™¨çŽ¯ç»•"
#: config/crx/crx.opt:23
msgid "Support multiply accumulate instructions"
@@ -16105,7 +16100,7 @@ msgstr "é‡è½½è™šå‡½æ•°å时给出警告"
#: c.opt:377
msgid "Warn about overriding initializers without side effects"
-msgstr "覆盖无副作用的åˆå§‹åŒ–设定时给出警告"
+msgstr "覆盖无副作用的åˆå§‹å€¼è®¾å®šæ—¶ç»™å‡ºè­¦å‘Š"
#: c.opt:381
msgid "Warn about packed bit-fields whose offset changed in GCC 4.4"
@@ -17006,9 +17001,8 @@ msgid "Delete useless null pointer checks"
msgstr "删除无用的空指针检查"
#: common.opt:451
-#, fuzzy
msgid "How often to emit source location at the beginning of line-wrapped diagnostics"
-msgstr "于折行诊断起点å‘表æºä½ç½®ç¨‹åº¦"
+msgstr "指定在自动æ¢è¡Œçš„诊断信æ¯å¼€å§‹ç»™å‡ºæºä½ç½®çš„频率"
#: common.opt:455
msgid "Amend appropriate diagnostic messages with the command line option that controls them"
@@ -17031,9 +17025,8 @@ msgid "Suppress output of instruction numbers, line number notes and addresses i
msgstr "在调试转储中ä¸è¾“出指令数ã€è¡Œå·æ ‡è®°å’Œåœ°å€"
#: common.opt:475
-#, fuzzy
msgid "Suppress output of previous and next insn numbers in debugging dumps"
-msgstr "在调试转储中ä¸è¾“出地å€"
+msgstr "在调试转储中ä¸è¾“出å‰ä¸€æ¡å’ŒåŽä¸€æ¡æŒ‡ä»¤å·ç "
#: common.opt:479
msgid "Enable CFI tables via GAS assembler directives."
@@ -17440,9 +17433,8 @@ msgid "Set the top-level directory for storing the profile data."
msgstr "指定存储的å–æ ·æ•°æ®çš„顶级目录"
#: common.opt:932
-#, fuzzy
msgid "Enable correction of flow inconsistent profile data input"
-msgstr "å¯ç”¨æµä¸ä¸€è‡´ç‰¹å¾æ•°æ®è¾“入修正"
+msgstr "å¯ç”¨å¯¹æµä¸ä¸€è‡´å–æ ·æ•°æ®è¾“入的修正"
#: common.opt:936
msgid "Enable common options for generating profile info for profile feedback directed optimizations"
@@ -19267,12 +19259,12 @@ msgstr "与%q+D类型冲çª"
#: c-decl.c:1759
#, gcc-internal-format
msgid "conflicting named address spaces (generic vs %s) for %q+D"
-msgstr "为%2$q+D指定了冲çªçš„有å寻å€ç©ºé—´(普通和 %1$s)"
+msgstr "为%2$q+D指定了冲çªçš„有å寻å€ç©ºé—´(泛型和 %1$s)"
#: c-decl.c:1763
#, gcc-internal-format
msgid "conflicting named address spaces (%s vs generic) for %q+D"
-msgstr "为%2$q+D指定了冲çªçš„有å寻å€ç©ºé—´(%1$s 和普通)"
+msgstr "为%2$q+D指定了冲çªçš„有å寻å€ç©ºé—´(%1$s 和泛型)"
#: c-decl.c:1767
#, gcc-internal-format
@@ -23178,9 +23170,9 @@ msgid "edge from %d to %d should not be marked irreducible"
msgstr "从 %d 到 %d çš„è¾¹ä¸åº”被标记为ä¸å¯å½’约的"
#: cfgloop.c:1473
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "corrupted head of the exits list of loop %d"
-msgstr "循环 %d的退出列表头部被破å"
+msgstr "循环 %d 的退出列表头已æŸå"
#: cfgloop.c:1491
#, gcc-internal-format
@@ -23188,9 +23180,9 @@ msgid "corrupted exits list of loop %d"
msgstr "循环 %d 的出å£åˆ—表已æŸå"
#: cfgloop.c:1500
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "nonempty exits list of loop %d, but exits are not recorded"
-msgstr "循环 %déžç©ºé€€å‡ºåˆ—表,但是退出未被记录"
+msgstr "循环 %d 退出列表éžç©ºï¼Œä½†æ˜¯é€€å‡ºæœªè¢«è®°å½•"
#: cfgloop.c:1526
#, gcc-internal-format
@@ -23198,9 +23190,9 @@ msgid "Exit %d->%d not recorded"
msgstr "退出 %d->%d 未被记录"
#: cfgloop.c:1544
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "Wrong list of exited loops for edge %d->%d"
-msgstr " 边缘 %d->%d 的错误退出的循环列表"
+msgstr "边 %d->%d 已退出的循环列表错误"
#: cfgloop.c:1553
#, gcc-internal-format
@@ -23208,9 +23200,9 @@ msgid "Too many loop exits recorded"
msgstr "记录了太多的循环出å£"
#: cfgloop.c:1564
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%d exits recorded for loop %d (having %d exits)"
-msgstr "%1$d 为循环 %2$d 记录的退出(有 %3$d 的退出)"
+msgstr "循环 %2$d 记录了 %1$d 个退出(有 %3$d 个退出)"
#: cfgrtl.c:1817
#, gcc-internal-format
@@ -23218,19 +23210,19 @@ msgid "BB_RTL flag not set for block %d"
msgstr "å— %d 没有设置 BB_RTL 标志"
#: cfgrtl.c:1824
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "insn %d basic block pointer is %d, should be %d"
-msgstr "insn %d 基本å—指针是 %d,应该是 %d"
+msgstr "指令 %d 基本å—指针是 %d,应该是 %d"
#: cfgrtl.c:1835
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "insn %d in header of bb %d has non-NULL basic block"
-msgstr "bb %2$d 的头部指令 %1$d 有éžé›¶çš„基本å—"
+msgstr "åŸºæœ¬å— %2$d 头中的指令 %1$d 有éžç©ºçš„基本å—"
#: cfgrtl.c:1843
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "insn %d in footer of bb %d has non-NULL basic block"
-msgstr "bb %2$d 的脚部指令 %1$d 有éžé›¶çš„基本å—"
+msgstr "åŸºæœ¬å— %2$d 尾中的指令 %1$d 有éžç©ºçš„基本å—"
#: cfgrtl.c:1865
#, gcc-internal-format
@@ -23238,14 +23230,14 @@ msgid "verify_flow_info: REG_BR_PROB does not match cfg %wi %i"
msgstr "verify_flow_info:REG_BR_PROB ä¸åŒ¹é… cfg %wi %i"
#: cfgrtl.c:1880
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "fallthru edge crosses section boundary (bb %i)"
-msgstr "fallthru 边缘交å‰èŠ‚分界线(bb %i)"
+msgstr "直通边越过了节分界(åŸºæœ¬å— %i)"
#: cfgrtl.c:1904
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "missing REG_EH_REGION note in the end of bb %i"
-msgstr "åœ¨ç»“æŸ bb %i 处丢失 REG_EH_REGION 注æ„"
+msgstr "åŸºæœ¬å— %i 结尾缺少 REG_EH_REGION 记录"
#: cfgrtl.c:1909
#, gcc-internal-format
@@ -23283,9 +23275,9 @@ msgid "abnormal edges for no purpose in bb %i"
msgstr "åœ¨åŸºæœ¬å— %i 中无用途的å常边"
#: cfgrtl.c:1961
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "insn %d inside basic block %d but block_for_insn is NULL"
-msgstr "指令 %d åœ¨åŸºæœ¬å— %d 内,但 block_for_insn å´ä¸º NULL"
+msgstr "指令 %d åœ¨åŸºæœ¬å— %d 内,但 block_for_insn 为 NULL"
#: cfgrtl.c:1965
#, gcc-internal-format
@@ -23313,9 +23305,9 @@ msgid "insn %d outside of basic blocks has non-NULL bb field"
msgstr "基本å—外指令 %d æœ‰éž NULL çš„ bb 域"
#: cfgrtl.c:2073
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "end insn %d for block %d not found in the insn stream"
-msgstr "ç»“æŸ insn %d äºŽå— %d 在 insn æµä¸­æ‰¾ä¸åˆ°"
+msgstr "å— %2$d 的结æŸæŒ‡ä»¤ %1$d 在指令æµä¸­æ‰¾ä¸åˆ°"
#: cfgrtl.c:2086
#, gcc-internal-format
@@ -23323,9 +23315,9 @@ msgid "insn %d is in multiple basic blocks (%d and %d)"
msgstr "指令 %d 在多个基本å—内(%d å’Œ %d)"
#: cfgrtl.c:2098
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "head insn %d for block %d not found in the insn stream"
-msgstr "头部 insn %d å¯¹äºŽå— %d 在 insn æµä¸­æ‰¾ä¸åˆ°"
+msgstr "å— %2$d 的头指令 %1$d 在指令æµä¸­æ‰¾ä¸åˆ°"
#: cfgrtl.c:2117
#, gcc-internal-format
@@ -23333,9 +23325,9 @@ msgid "missing barrier after block %i"
msgstr "å— %i åŽç¼ºå°‘å±éšœ"
#: cfgrtl.c:2133
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i"
-msgstr "verify_flow_info:ä¸æ­£ç¡®çš„å—直通 %i->%i"
+msgstr "verify_flow_info:直通边 %i->%i å—ä¸æ­£ç¡®"
#: cfgrtl.c:2142
#, gcc-internal-format
@@ -23348,9 +23340,9 @@ msgid "basic blocks not laid down consecutively"
msgstr "基本å—ä¸è¿žè´¯"
#: cfgrtl.c:2212
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
-msgstr "在 insn 链 (%d) != n_basic_blocks (%d)中的 bb 注æ„æ•°"
+msgstr "指令链中记录的基本å—æ•° (%d) != n_basic_blocks (%d)"
#: cgraph.c:1754
#, gcc-internal-format
@@ -23473,9 +23465,9 @@ msgid "edge points to wrong declaration:"
msgstr "边指å‘错误的声明:"
#: cgraphunit.c:765
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "missing callgraph edge for call stmt:"
-msgstr "丢失调用语å¥çš„ callgraph 的边缘"
+msgstr "调用语å¥ç¼ºå°‘ callgraph 边:"
#: cgraphunit.c:781
#, gcc-internal-format
@@ -23498,7 +23490,7 @@ msgid "failed to reclaim unneeded function"
msgstr "无法收回ä¸éœ€è¦çš„函数"
#: cgraphunit.c:1855
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "nodes with unreleased memory found"
msgstr "找到未释放内存的节点"
@@ -23583,9 +23575,9 @@ msgid "%qs is version %q.*s, expected version %q.*s"
msgstr "%qs的版本是%q.*s,需è¦çš„版本%q.*s"
#: coverage.c:276 coverage.c:284
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "coverage mismatch for function %u while reading execution counters"
-msgstr "读å–执行计数器时 %u 的函数覆盖ä¸åŒ¹é…"
+msgstr "读å–执行计数器时函数 %u 覆盖ä¸åŒ¹é…"
#: coverage.c:278 coverage.c:372
#, gcc-internal-format
@@ -23658,9 +23650,9 @@ msgid " %s"
msgstr " %s"
#: dbxout.c:3258
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "common symbol debug info is not structured as symbol+offset"
-msgstr "公用的符å·è°ƒè¯•ä¿¡æ¯ä¸æ˜¯æž„造为符å·+å移的形å¼"
+msgstr "公共符å·è°ƒè¯•ä¿¡æ¯æ²¡æœ‰æž„造为符å·+å移的形å¼"
#: diagnostic.c:728
#, gcc-internal-format
@@ -24062,9 +24054,9 @@ msgid "can't seek PCH file: %m"
msgstr "无法在 PCH 文件中定ä½ï¼š%m"
#: gimple.c:1032
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
-msgstr "简å•æ£€æŸ¥ï¼šæœŸå¾…çš„ %s(%s),得到 %s(%s) 在 %s 中,于 %s:%d"
+msgstr "gimple æ£€æŸ¥ï¼šéœ€è¦ %s(%s),得到 %s(%s) 在 %s 中,于 %s:%d"
#: gimplify.c:2373
#, gcc-internal-format
@@ -24238,9 +24230,9 @@ msgid "gimple bytecode streams do not support the target attribute"
msgstr "gimple 字节ç æµä¸æ”¯æŒç›®æ ‡å±žæ€§"
#: lto-streamer-out.c:1194
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "tree code %qs is not supported in gimple streams"
-msgstr "32 ä½ç³»ç»Ÿä¸æ”¯æŒ -mcmodel="
+msgstr "树代ç %qs在 gimple æµä¸­ä¸è¢«æ”¯æŒ"
#: lto-streamer-out.c:1238
#, gcc-internal-format
@@ -24420,9 +24412,9 @@ msgid "-flto and -fwhopr are mutually exclusive"
msgstr "-flto and -fwhopr 互斥"
#: opts.c:1435
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "unrecognized include_flags 0x%x passed to print_specific_help"
-msgstr "ä¸å¯è¯†åˆ«çš„ include_flags 0x%x 传递到 print_specific_help"
+msgstr "传递给 print_specific_help çš„ include_flags 0x%x ä¸å¯è¯†åˆ«"
#: opts.c:1773
#, gcc-internal-format
@@ -24526,9 +24518,9 @@ msgid "invalid parameter %qs"
msgstr "无效的å‚æ•°%qs"
#: passes.c:581
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "Invalid pass positioning operation"
-msgstr "对%<__fpreg%>çš„æ“作无效"
+msgstr "无效的趟定ä½æ“作"
#: passes.c:621
#, gcc-internal-format
@@ -24639,9 +24631,9 @@ msgid "correcting inconsistent profile data"
msgstr "改正ä¸ä¸€è‡´çš„å–æ ·æ•°æ®"
#: profile.c:640
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "corrupted profile info: profile data is not flow-consistent"
-msgstr "æŸå的样本信æ¯ï¼šæ ·æœ¬æ•°æ®ä¸æ˜¯æµè¿žè´¯çš„"
+msgstr "æŸå的样本信æ¯ï¼šæ ·æœ¬æ•°æ®ä¸æ˜¯æµä¸€è‡´çš„"
#: profile.c:657
#, gcc-internal-format
@@ -24786,19 +24778,19 @@ msgid "output operand is constant in %<asm%>"
msgstr "%<asm%>的输出æ“作数是常é‡"
#: rtl.c:635
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "RTL check: access of elt %d of '%s' with last elt %d in %s, at %s:%d"
-msgstr "RTL 检查:在 %5$s:%6$d 处,%4$s 中与最åŽçš„ elt %3$d 一起的å‘é‡çš„“%2$sâ€çš„ elt %1$d访问"
+msgstr "RTL 检查:在 %4$s 中访问了‘%2$s’的 elt %1$d,最åŽçš„ elt %3$d,于 %5$s:%6$d"
#: rtl.c:645
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "RTL check: expected elt %d type '%c', have '%c' (rtx %s) in %s, at %s:%d"
-msgstr "RTL 检查:期待的 elt %d 类型“%câ€ï¼Œå´æœ‰â€œ%câ€(rtx %s)在 %s 中,于 %s:%d"
+msgstr "RTL 检查:在 %5$s ä¸­éœ€è¦ elt %1$d 类型‘%2$c’,得到了‘%3$c’(rtx %4$s),于 %6$s:%7$d"
#: rtl.c:655
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "RTL check: expected elt %d type '%c' or '%c', have '%c' (rtx %s) in %s, at %s:%d"
-msgstr "RTL 检查:期待的 elt %d 类型“%câ€æˆ–“%câ€ï¼Œå´æœ‰â€œ%câ€(rtx %s)在 %s中,于 %s:%d"
+msgstr "RTL 检查:在 %6$s ä¸­éœ€è¦ elt %1$d 类型‘%2$c’或‘%3$c’,得到了‘%4$c’(rtx %5$s),于 %7$s:%8$d"
#: rtl.c:664
#, gcc-internal-format
@@ -24811,19 +24803,19 @@ msgid "RTL check: expected code '%s' or '%s', have '%s' in %s, at %s:%d"
msgstr "RTL 检查:需è¦ä»£ç â€˜%s’或‘%s’,å´å¾—到‘%s’在 %s,于 %s:%d"
#: rtl.c:701
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "RTL check: attempt to treat non-block symbol as a block symbol in %s, at %s:%d"
-msgstr "RTL 检查:在 %2$s:%3$d 处,试图把éžå—符å·å¤„ç†ä¸º %1$s 中的å—符å·"
+msgstr "RTL 检查:在 %s 中试图将éžå—符å·å¤„ç†ä¸ºå—符å·ï¼ŒäºŽ %s:%d"
#: rtl.c:711
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "RTL check: access of elt %d of vector with last elt %d in %s, at %s:%d"
-msgstr "RTL 检查:在 %4$s:%5$d 处,%4$s 中与最åŽçš„ elt %2$d 一起的å‘é‡çš„ elt %1$d 的访问"
+msgstr "RTL 检查:在 %3$s 中访问了å‘é‡ elt %1$d,最åŽçš„ elt %2$d,于 %4$s:%5$d"
#: rtl.c:722
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "RTL flag check: %s used with unexpected rtx code '%s' in %s, at %s:%d"
-msgstr "RTL 检查:“%3$sâ€ä¸­ä¸ŽéžæœŸå¾… rtx 代ç â€œ%2$sâ€ä¸€èµ·ä½¿ç”¨çš„“%1$sâ€ï¼ŒäºŽ %4$s:%5$d"
+msgstr "RTL 标记检查:%3$s 中与éžé¢„期 rtx 代ç â€˜%2$s’一起使用的 %1$s,于 %4$s:%5$d"
#: stmt.c:312
#, gcc-internal-format
@@ -25271,9 +25263,9 @@ msgid "ASSERT_EXPR with an always-false condition"
msgstr "ASSERT_EXPR 具有一个总是å‡çš„æ¡ä»¶"
#: tree-cfg.c:2559
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples."
-msgstr "当有元组的时候ä¸æœŸæœ› MODIFY_EXPR。"
+msgstr "当有元组的时候ä¸åº”有 MODIFY_EXPR。"
#: tree-cfg.c:2580
#, gcc-internal-format
@@ -25306,19 +25298,19 @@ msgid "invalid conditional operand"
msgstr "无效的æ¡ä»¶æ“作数"
#: tree-cfg.c:2671
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
-msgstr "对 BIT_FIELD_REF çš„éžæ³•ä½ç½®æˆ–大å°æ“作数"
+msgstr "BIT_FIELD_REF ä½ç½®æˆ–大å°æ“作数无效"
#: tree-cfg.c:2678
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "integral result type precision does not match field size of BIT_FIELD_REF"
-msgstr "整体的结果类型精度ä¸åŒ¹é… BIT_FIELD_REF 字段尺寸 "
+msgstr "整体结果类型精度ä¸åŒ¹é… BIT_FIELD_REF 字段尺寸"
#: tree-cfg.c:2686
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "mode precision of non-integral result does not match field size of BIT_FIELD_REF"
-msgstr "éžæ•´ä½“结果ä¸åŒ¹é… BIT_FIELD_REF 的字段尺寸的方å¼ç²¾åº¦"
+msgstr "éžæ•´ä½“结果的模å¼ç²¾åº¦ä¸åŒ¹é… BIT_FIELD_REF 的字段尺寸"
#: tree-cfg.c:2697
#, gcc-internal-format
@@ -25596,9 +25588,9 @@ msgid "statement marked for throw, but doesn%'t"
msgstr "语å¥è¢«æ ‡è®°ä¸ºæŠ›å‡ºå¼‚常,但实际上并未抛出"
#: tree-cfg.c:3943
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "statement marked for throw in middle of block"
-msgstr "语å¥åœ¨å—的中部被标记为抛出"
+msgstr "语å¥åœ¨å—中被标记为抛出"
#: tree-cfg.c:4015
#, gcc-internal-format
@@ -25606,7 +25598,7 @@ msgid "Dead STMT in EH table"
msgstr "在 EH 表中死了的 STMT"
#: tree-cfg.c:4053
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr "gimple_bb (phi) 设置为一个错误的基本å—"
@@ -25616,9 +25608,9 @@ msgid "missing PHI def"
msgstr "缺少 PHI 定义"
#: tree-cfg.c:4075
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "PHI argument is not a GIMPLE value"
-msgstr "PHI å‚æ•°ä¸æ˜¯ GIMPLE å˜é‡å€¼"
+msgstr "PHI å‚æ•°ä¸æ˜¯ GIMPLE å˜é‡"
#: tree-cfg.c:4084 tree-cfg.c:4157
#, gcc-internal-format
@@ -25631,7 +25623,7 @@ msgid "invalid GIMPLE statement"
msgstr "无效的 GIMPLE 语å¥"
#: tree-cfg.c:4116
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr "gimple_bb (stmt) 设置为一个错误的基本å—"
@@ -25641,9 +25633,9 @@ msgid "incorrect entry in label_to_block_map"
msgstr "label_to_block_map 中æ¡ç›®ä¸æ­£ç¡®"
#: tree-cfg.c:4139
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "incorrect setting of landing pad number"
-msgstr "æ ¼å¼å­—符串的æ“作数å·æ— æ•ˆ"
+msgstr "ç€é™†åœºå·ç è®¾ç½®ä¸æ­£ç¡®"
#: tree-cfg.c:4173
#, gcc-internal-format
@@ -25691,9 +25683,9 @@ msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr "åŸºæœ¬å— %d ä¸­éž GIMPLE_COND åŽçš„真å‡è¾¹"
#: tree-cfg.c:4335 tree-cfg.c:4357 tree-cfg.c:4370 tree-cfg.c:4439
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
-msgstr "于 bb %d结æŸå¤„错误的离去边缘标志 "
+msgstr "åŸºæœ¬å— %d 结尾处有错误的出边标记"
#: tree-cfg.c:4345
#, gcc-internal-format
@@ -25947,9 +25939,9 @@ msgid "found a real definition for a non-register"
msgstr "为一个éžå¯„存器找到一个真实定义"
#: tree-ssa.c:614
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "found a default name with a non-empty defining statement"
-msgstr "找到一个éžç©ºå®šä¹‰è¯­å¥çš„默认åå­—"
+msgstr "找到一个有éžç©ºå®šä¹‰è¯­å¥çš„默认åå­—"
#: tree-ssa.c:642
#, gcc-internal-format
@@ -28399,9 +28391,9 @@ msgid "Invalid mul type specified (%s) - expected mac, mul or none"
msgstr "指定了无效的 mul 类型(%s) - éœ€è¦ macã€mul 或 none"
#: config/picochip/picochip.c:638
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "unexpected mode %s encountered in picochip_emit_save_register\n"
-msgstr "在 picochip_emit_save_register 中é‡åˆ°æ„å¤–çš„æ–¹å¼ %s\n"
+msgstr "picochip_emit_save_register é‡åˆ°éžé¢„æœŸçš„æ¨¡å¼ %s\n"
#: config/picochip/picochip.c:805
#, gcc-internal-format
@@ -30776,7 +30768,7 @@ msgstr "数组%q#D的元素类型ä¸å®Œå…¨"
#: cp/decl.c:4348 cp/decl.c:5588
#, gcc-internal-format
msgid "declaration of %q#D has no initializer"
-msgstr "%q#D声明有缺少åˆå§‹åŒ–设定"
+msgstr "%q#D声明有缺少åˆå§‹å€¼è®¾å®š"
#: cp/decl.c:4350
#, gcc-internal-format
@@ -30854,12 +30846,12 @@ msgstr "未åˆå§‹åŒ–的常é‡%qD"
#: cp/decl.c:4807
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
-msgstr "无效类型%qT被用作类型为%qTçš„å‘é‡çš„åˆå§‹åŒ–设定"
+msgstr "无效类型%qT被用作类型为%qTçš„å‘é‡çš„åˆå§‹å€¼è®¾å®š"
#: cp/decl.c:4849
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
-msgstr "%qTçš„åˆå§‹åŒ–设定必须在花括å·å†…"
+msgstr "%qTçš„åˆå§‹å€¼è®¾å®šå¿…须在花括å·å†…"
#: cp/decl.c:4867
#, gcc-internal-format
@@ -32675,12 +32667,12 @@ msgstr "在此处åˆå§‹åŒ–åŽè¢«åˆå§‹åŒ–"
#: cp/init.c:687
#, gcc-internal-format
msgid "multiple initializations given for %qD"
-msgstr "为%qD给定了多个åˆå§‹åŒ–设定"
+msgstr "为%qD给定了多个åˆå§‹å€¼è®¾å®š"
#: cp/init.c:691
#, gcc-internal-format
msgid "multiple initializations given for base %qT"
-msgstr "为基类%qT给定了多个åˆå§‹åŒ–设定"
+msgstr "为基类%qT给定了多个åˆå§‹å€¼è®¾å®š"
#: cp/init.c:759
#, gcc-internal-format
@@ -32945,7 +32937,7 @@ msgstr "%qD修饰åŽçš„å字将在 GCC 的未æ¥ç‰ˆæœ¬ä¸­æœ‰å˜åŒ–"
#: cp/method.c:388
#, gcc-internal-format
msgid "generic thunk code fails for method %q#D which uses %<...%>"
-msgstr "通用的转æ¢å±‚代ç (thunk)对使用了%<...%>的方法%q#D失效"
+msgstr "泛型的转æ¢å±‚代ç (thunk)对使用了%<...%>的方法%q#D失效"
#: cp/method.c:569
#, gcc-internal-format
diff --git a/gcc/print-tree.c b/gcc/print-tree.c
index eebd1c35ba1..b5656adcaa3 100644
--- a/gcc/print-tree.c
+++ b/gcc/print-tree.c
@@ -605,8 +605,9 @@ print_node (FILE *file, const char *prefix, tree node, int indent)
/* The transparent-union flag is used for different things in
different nodes. */
- if (code == UNION_TYPE && TYPE_TRANSPARENT_UNION (node))
- fputs (" transparent-union", file);
+ if ((code == UNION_TYPE || code == RECORD_TYPE)
+ && TYPE_TRANSPARENT_AGGR (node))
+ fputs (" transparent-aggr", file);
else if (code == ARRAY_TYPE
&& TYPE_NONALIASED_COMPONENT (node))
fputs (" nonaliased-component", file);
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
index 6ec404b6270..0981440fde7 100644
--- a/gcc/sel-sched.c
+++ b/gcc/sel-sched.c
@@ -1866,14 +1866,13 @@ create_speculation_check (expr_t c_expr, ds_t check_ds, insn_t orig_insn)
if (recovery_block != NULL)
{
rtx twin_rtx;
- insn_t twin;
twin_rtx = copy_rtx (PATTERN (EXPR_INSN_RTX (c_expr)));
twin_rtx = create_insn_rtx_from_pattern (twin_rtx, NULL_RTX);
- twin = sel_gen_recovery_insn_from_rtx_after (twin_rtx,
- INSN_EXPR (orig_insn),
- INSN_SEQNO (insn),
- bb_note (recovery_block));
+ sel_gen_recovery_insn_from_rtx_after (twin_rtx,
+ INSN_EXPR (orig_insn),
+ INSN_SEQNO (insn),
+ bb_note (recovery_block));
}
/* If we've generated a data speculation check, make sure
@@ -2411,10 +2410,6 @@ try_transformation_cache (expr_t expr, insn_t insn,
EXPR_TARGET_AVAILABLE (expr) = false;
if (pti->type == TRANS_SPECULATION)
{
- ds_t ds;
-
- ds = EXPR_SPEC_DONE_DS (expr);
-
EXPR_SPEC_DONE_DS (expr) = pti->ds;
EXPR_NEEDS_SPEC_CHECK_P (expr) |= pti->needs_check;
}
@@ -4216,7 +4211,6 @@ static int
calculate_privileged_insns (void)
{
expr_t cur_expr, min_spec_expr = NULL;
- insn_t cur_insn, min_spec_insn;
int privileged_n = 0, i;
for (i = 0; i < ready.n_ready; i++)
@@ -4225,12 +4219,8 @@ calculate_privileged_insns (void)
continue;
if (! min_spec_expr)
- {
- min_spec_insn = ready_element (&ready, i);
- min_spec_expr = find_expr_for_ready (i, true);
- }
+ min_spec_expr = find_expr_for_ready (i, true);
- cur_insn = ready_element (&ready, i);
cur_expr = find_expr_for_ready (i, true);
if (EXPR_SPEC (cur_expr) > EXPR_SPEC (min_spec_expr))
@@ -4384,7 +4374,7 @@ find_best_expr (av_set_t *av_vliw_ptr, blist_t bnds, fence_t fence,
best = fill_ready_list (av_vliw_ptr, bnds, fence, pneed_stall);
if (best == NULL && ready.n_ready > 0)
{
- int privileged_n, index, avail_n;
+ int privileged_n, index;
can_issue_more = invoke_reorder_hooks (fence);
if (can_issue_more > 0)
@@ -4393,7 +4383,7 @@ find_best_expr (av_set_t *av_vliw_ptr, blist_t bnds, fence_t fence,
scheduled due to liveness restrictions on its destination register.
In the future, we'd like to choose once and then just probe insns
in the order of their priority. */
- avail_n = invoke_dfa_lookahead_guard ();
+ invoke_dfa_lookahead_guard ();
privileged_n = calculate_privileged_insns ();
can_issue_more = choose_best_insn (fence, privileged_n, &index);
if (can_issue_more)
diff --git a/gcc/target.h b/gcc/target.h
index e5df4ef0597..ae3b352342f 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -1021,7 +1021,7 @@ struct gcc_target
/* Return the class for a secondary reload, and fill in extra information. */
enum reg_class (*secondary_reload) (bool, rtx, enum reg_class,
enum machine_mode,
- struct secondary_reload_info *);
+ secondary_reload_info *);
/* This target hook allows the backend to perform additional
processing while initializing for variable expansion. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 995ba7989e0..9c89203d503 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,211 @@
+2010-01-20 Janis Johnson <janis187@us.ibm.com>
+
+ * g++.dg/compat/decimal/compat-common.h: New file.
+ * g++.dg/compat/decimal/decimal-dummy.h: New file.
+ * g++.dg/compat/decimal/pass_x.h: New file.
+ * g++.dg/compat/decimal/pass_y.h: New file.
+ * g++.dg/compat/decimal/pass-1_main.C: New file.
+ * g++.dg/compat/decimal/pass-1_x.C: New file.
+ * g++.dg/compat/decimal/pass-1_y.C: New file.
+ * g++.dg/compat/decimal/pass-2_main.C: New file.
+ * g++.dg/compat/decimal/pass-2_x.C: New file.
+ * g++.dg/compat/decimal/pass-2_y.C: New file.
+ * g++.dg/compat/decimal/pass-3_main.C: New file.
+ * g++.dg/compat/decimal/pass-3_x.C: New file.
+ * g++.dg/compat/decimal/pass-3_y.C: New file.
+ * g++.dg/compat/decimal/pass-4_main.C: New file.
+ * g++.dg/compat/decimal/pass-4_x.C: New file.
+ * g++.dg/compat/decimal/pass-4_y.C: New file.
+ * g++.dg/compat/decimal/pass-5_main.C: New file.
+ * g++.dg/compat/decimal/pass-5_x.C: New file.
+ * g++.dg/compat/decimal/pass-5_y.C: New file.
+ * g++.dg/compat/decimal/pass-6_main.C: New file.
+ * g++.dg/compat/decimal/pass-6_x.C: New file.
+ * g++.dg/compat/decimal/pass-6_y.C: New file.
+ * g++.dg/compat/decimal/return_x.h: New file.
+ * g++.dg/compat/decimal/return_y.h: New file.
+ * g++.dg/compat/decimal/return-1_main.C: New file.
+ * g++.dg/compat/decimal/return-1_x.C: New file.
+ * g++.dg/compat/decimal/return-1_y.C: New file.
+ * g++.dg/compat/decimal/return-2_main.C: New file.
+ * g++.dg/compat/decimal/return-2_x.C: New file.
+ * g++.dg/compat/decimal/return-2_y.C: New file.
+ * g++.dg/compat/decimal/return-3_main.C: New file.
+ * g++.dg/compat/decimal/return-3_x.C: New file.
+ * g++.dg/compat/decimal/return-3_y.C: New file.
+ * g++.dg/compat/decimal/return-4_main.C: New file.
+ * g++.dg/compat/decimal/return-4_x.C: New file.
+ * g++.dg/compat/decimal/return-4_y.C: New file.
+ * g++.dg/compat/decimal/return-5_main.C: New file.
+ * g++.dg/compat/decimal/return-5_x.C: New file.
+ * g++.dg/compat/decimal/return-5_y.C: New file.
+ * g++.dg/compat/decimal/return-6_main.C: New file.
+ * g++.dg/compat/decimal/return-6_x.C: New file.
+ * g++.dg/compat/decimal/return-6_y.C: New file.
+
+2010-01-20 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/42715
+ * gcc.dg/pr42715.c: New.
+
+2010-01-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/42038
+ * g++.dg/parse/crash55.C: New.
+
+2010-01-20 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/42782
+ * gcc.dg/guality/pr42782.c: New.
+
+2010-01-20 Jason Merrill <jason@redhat.com>
+
+ PR c++/41788
+ * g++.dg/abi/packed1.C: New.
+
+ PR c++/41920
+ * g++.dg/cpp0x/lambda/lambda-warn1.C: New.
+
+ PR c++/40750
+ * g++.dg/parse/fn-typedef1.C: New.
+ * g++.dg/other/cv_quals.C: Adjust.
+
+2010-01-20 Anthony Green <green@moxielogic.com>
+
+ * gcc.dg/cpp/_Pragma6.c: Skip this test for moxie-*-* (no
+ pack(push) pragma).
+ * gcc.dg/pr19340.c: Skip this test for moxie-*-* (no scheduling).
+ * gcc.dg/20020312-2.c: Port this to the moxie core.
+ * gcc.dg/weak/typeof-2.c: Ditto.
+
+2010-01-20 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/42717
+ * gcc.c-torture/compile/pr42717.c: New testcase.
+
+2010-01-20 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/cleanup-13.c: Expect DW_OP_mod to do unsigned modulo instead
+ of signed, add a few new tests.
+
+ PR middle-end/42803
+ * g++.dg/parse/limits-initializer1.C: New test.
+
+2010-01-19 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/42804
+ * gfortran.dg/proc_ptr_comp_pass_6.f90: New test.
+ * gfortran.dg/typebound_call_12.f03: New test.
+
+2010-01-19 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/42783
+ * gfortran.dg/bounds_check_15.f90 : New test.
+
+2010-01-19 Michael Matz <matz@suse.de>
+
+ PR tree-optimization/41783
+ * gfortran.dg/vect/fast-math-mgrid-resid.f: New.
+
+2010-01-19 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
+
+ PR target/38697.
+ * gcc.target/arm/neon/vget_lowf32.c: Regenerate.
+ * gcc.target/arm/neon/vget_lowp16.c: Likewise.
+ * gcc.target/arm/neon/vget_lowp8.c: Likewise.
+ * gcc.target/arm/neon/vget_lows16.c: Likewise.
+ * gcc.target/arm/neon/vget_lows32.c: Likewise.
+ * gcc.target/arm/neon/vget_lows64.c: Likewise.
+ * gcc.target/arm/neon/vget_lows8.c: Likewise.
+ * gcc.target/arm/neon/vget_lowu16.c: Likewise.
+ * gcc.target/arm/neon/vget_lowu32.c: Likewise.
+ * gcc.target/arm/neon/vget_lowu64.c: Likewise.
+ * gcc.target/arm/neon/vget_lowu8.c: Likewise.
+
+2010-01-19 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/42545
+ * gfortran.dg/extends_6.f03: Modified an error message.
+ * gfortran.dg/extends_10.f03: New test.
+ * gfortran.dg/private_type_6.f03: Modified an error message.
+ * gfortran.dg/structure_constructor_8.f03: Ditto.
+
+2010-01-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/42719
+ * gcc.dg/pr42719.c: New test.
+
+ PR debug/42728
+ * gcc.dg/pr42728.c: New test.
+
+2010-01-19 Anthony Green <green@moxielogic.com>
+
+ * gcc.dg/tree-ssa/20040204-1.c: Expect this test to pass.
+
+2010-01-18 Anthony Green <green@moxielogic.com>
+
+ * gcc.dg/tree-ssa/asm-3.c (REGISTER): Pick an appropriate register
+ for moxie.
+
+2010-01-19 Dodji Seketeli <dodji@redhat.com>
+
+ * g++.dg/template/error45.C: reverted as part of reverting the
+ fix of PR c++/42634.
+
+2010-01-18 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/42634
+ * g++.dg/template/error45.C: New test.
+
+2010-01-18 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/42766
+ * g++.dg/conversion/op6.C: New test.
+
+2010-01-18 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/42774
+ * gcc.target/alpha/pr42774.c: New test.
+
+2010-01-18 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/42781
+ * gfortran.fortran-torture/compile/pr42781.f90: New testcase.
+
+2010-01-17 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/42248
+ * gcc.c-torture/execute/pr42248.c: New testcase.
+
+2010-01-17 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/42773
+ * g++.dg/torture/pr42773.C: New testcase.
+
+2010-01-17 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/42677
+ * gfortran.dg/interface_assignment_5.f90: New test.
+
+2010-01-17 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/42697
+ * g++.dg/template/crash94.C: Reverted.
+
+2010-01-17 Dodji Seketeli <dodji@redhat.com>
+
+ PR c++/42697
+
+2010-01-17 Jie Zhang <jie.zhang@analog.com>
+
+ PR debug/42767
+ * gcc.dg/debug/pr42767.c: New.
+
+2010-01-15 Jason Merrill <jason@redhat.com>
+
+ PR c++/42761
+ * g++.dg/cpp0x/decltype22.C: New.
+
2010-01-16 Jakub Jelinek <jakub@redhat.com>
PR middle-end/42760
diff --git a/gcc/testsuite/g++.dg/abi/mangle39.C b/gcc/testsuite/g++.dg/abi/mangle39.C
new file mode 100644
index 00000000000..30a08b0c32f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle39.C
@@ -0,0 +1,28 @@
+// PR c++/42338
+// { dg-options "-std=c++0x" }
+// { dg-final { scan-assembler "_Z1fIPiEDTcmppfp_Li0EET_" } }
+// { dg-final { scan-assembler "_Z1gIiEvRK1AIT_EDTixfp_Li0EE" } }
+
+template<typename T>
+auto f(T t) -> decltype(++t, 0)
+{
+ ++t;
+ return 0;
+}
+
+template <class T>
+struct A
+{
+ T operator[](int) const { return 0; }
+};
+
+template< typename T >
+void g(const A<T> &a, decltype(a[0]) t) { }
+
+int main()
+{
+ f((int*)0);
+
+ A<int> a;
+ g(a,1);
+}
diff --git a/gcc/testsuite/g++.dg/abi/packed1.C b/gcc/testsuite/g++.dg/abi/packed1.C
new file mode 100644
index 00000000000..4e759728a17
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/packed1.C
@@ -0,0 +1,24 @@
+// PR c++/41788
+// { dg-options "-Wpacked" }
+// { dg-do run }
+
+extern "C" void abort ();
+
+struct INNER {
+ virtual int foo() const { return 1; }
+} __attribute__ ((packed));
+
+struct OUTER {
+ char c;
+ INNER inner;
+} __attribute__ ((packed));
+
+int main()
+{
+ OUTER outer;
+ int s = sizeof(outer);
+ int o = (char *)&outer.inner - (char *)&outer;
+ if (s != sizeof (char) + sizeof (void*)
+ || o != sizeof (char))
+ abort ();
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/compat-common.h b/gcc/testsuite/g++.dg/compat/decimal/compat-common.h
new file mode 100644
index 00000000000..43c22d722f7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/compat-common.h
@@ -0,0 +1,55 @@
+/* Several of the binary compatibility tests use these macros to
+ allow debugging the test or tracking down a failure by getting an
+ indication of whether each individual check passed or failed.
+ When DBG is defined, each check is shown by a dot (pass) or 'F'
+ (fail) rather than aborting as soon as a failure is detected. */
+
+#ifdef DBG
+#include <stdio.h>
+#define DEBUG_INIT setbuf (stdout, NULL);
+#define DEBUG_FPUTS(x) fputs (x, stdout);
+#define DEBUG_DOT putc ('.', stdout);
+#define DEBUG_NL putc ('\n', stdout);
+#define DEBUG_FAIL putc ('F', stdout); fails++;
+#define DEBUG_CHECK { DEBUG_FAIL } else { DEBUG_DOT }
+#define DEBUG_FINI if (fails) DEBUG_FPUTS ("failed\n") \
+ else DEBUG_FPUTS ("passed\n")
+#else
+#define DEBUG_INIT
+#define DEBUG_FPUTS(x)
+#define DEBUG_DOT
+#define DEBUG_NL
+#define DEBUG_FAIL abort ();
+#define DEBUG_CHECK abort ();
+#define DEBUG_FINI
+#endif
+
+#ifdef SKIP_COMPLEX
+#ifndef SKIP_COMPLEX_INT
+#define SKIP_COMPLEX_INT
+#endif
+#endif
+
+#ifndef SKIP_COMPLEX
+#ifdef __GNUC__
+#define CINT(x, y) (x + y * __extension__ 1i)
+#define CDBL(x, y) (x + y * __extension__ 1i)
+#else
+#ifdef __SUNPRO_C
+/* ??? Complex support without <complex.h>. */
+#else
+#include <complex.h>
+#endif
+#ifndef SKIP_COMPLEX_INT
+#define CINT(x, y) ((_Complex int) (x + y * _Complex_I))
+#endif
+#define CDBL(x, y) (x + y * _Complex_I)
+#endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void abort (void);
+#else
+extern void abort (void);
+#endif
+extern int fails;
diff --git a/gcc/testsuite/g++.dg/compat/decimal/decimal-dummy.h b/gcc/testsuite/g++.dg/compat/decimal/decimal-dummy.h
new file mode 100644
index 00000000000..ec347f9b7eb
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/decimal-dummy.h
@@ -0,0 +1,67 @@
+namespace std {
+namespace decimal {
+
+ class decimal32
+ {
+ public:
+ typedef float __dec32 __attribute__((mode(SD)));
+ decimal32 () : __val(0.e-101DF) {}
+ decimal32 (__dec32 x) : __val(x) {}
+ __dec32 __val;
+ };
+
+ class decimal64
+ {
+ public:
+ typedef float __dec64 __attribute__((mode(DD)));
+ decimal64 () : __val(0.e-398dd) {}
+ decimal64 (__dec64 x) : __val(x) {}
+ __dec64 __val;
+ };
+
+ class decimal128
+ {
+ public:
+ typedef float __dec128 __attribute__((mode(TD)));
+ decimal128 () : __val(0.e-6176DL) {}
+ decimal128 (__dec128 x) : __val(x) {}
+ __dec128 __val;
+ };
+
+ inline decimal32 operator+ (decimal32 lhs, decimal32 rhs)
+ {
+ decimal32 tmp;
+ tmp.__val = lhs.__val + rhs.__val;
+ return tmp;
+ }
+
+ inline decimal64 operator+ (decimal64 lhs, decimal64 rhs)
+ {
+ decimal64 tmp;
+ tmp.__val = lhs.__val + rhs.__val;
+ return tmp;
+ }
+
+ inline decimal128 operator+ (decimal128 lhs, decimal128 rhs)
+ {
+ decimal128 tmp;
+ tmp.__val = lhs.__val + rhs.__val;
+ return tmp;
+ }
+
+ inline bool operator!= (decimal32 lhs, decimal32 rhs)
+ {
+ return lhs.__val != rhs.__val;
+ }
+
+ inline bool operator!= (decimal64 lhs, decimal64 rhs)
+ {
+ return lhs.__val != rhs.__val;
+ }
+
+ inline bool operator!= (decimal128 lhs, decimal128 rhs)
+ {
+ return lhs.__val != rhs.__val;
+ }
+}
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C
new file mode 100644
index 00000000000..963dc3bbfab
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C
@@ -0,0 +1,13 @@
+/* { dg-require-effective-target dfp } */
+
+/* Test passing decimal scalars by value. */
+
+extern void pass_1_x (void);
+int fails;
+
+int
+main ()
+{
+ pass_1_x ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-1_x.C b/gcc/testsuite/g++.dg/compat/decimal/pass-1_x.C
new file mode 100644
index 00000000000..265a1317b00
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-1_x.C
@@ -0,0 +1,30 @@
+typedef float dec32 __attribute__((mode(SD)));
+typedef float dec64 __attribute__((mode(DD)));
+typedef float dec128 __attribute__((mode(TD)));
+
+#include "pass_x.h"
+
+void
+pass_1_x (void)
+{
+DEBUG_INIT
+
+#define T(NAME) testit##NAME ();
+
+#ifndef SKIP_DECIMAL32
+T(d32)
+#endif
+#ifndef SKIP_DECIMAL64
+T(d64)
+#endif
+#ifndef SKIP_DECIMAL128
+T(d128)
+#endif
+
+DEBUG_FINI
+
+if (fails != 0)
+ abort ();
+
+#undef T
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-1_y.C b/gcc/testsuite/g++.dg/compat/decimal/pass-1_y.C
new file mode 100644
index 00000000000..5da7f87d51e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-1_y.C
@@ -0,0 +1,5 @@
+typedef float dec32 __attribute__((mode(SD)));
+typedef float dec64 __attribute__((mode(DD)));
+typedef float dec128 __attribute__((mode(TD)));
+
+#include "pass_y.h"
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C
new file mode 100644
index 00000000000..533e4b276dc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-2_main.C
@@ -0,0 +1,13 @@
+/* { dg-require-effective-target dfp } */
+
+/* Test passing decimal classes by value. */
+
+extern void pass_2_x (void);
+int fails;
+
+int
+main ()
+{
+ pass_2_x ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-2_x.C b/gcc/testsuite/g++.dg/compat/decimal/pass-2_x.C
new file mode 100644
index 00000000000..8a67bda0ed8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-2_x.C
@@ -0,0 +1,32 @@
+#include "decimal-dummy.h"
+
+#define dec32 std::decimal::decimal32
+#define dec64 std::decimal::decimal64
+#define dec128 std::decimal::decimal128
+
+#include "pass_x.h"
+
+void
+pass_2_x (void)
+{
+DEBUG_INIT
+
+#define T(NAME) testit##NAME ();
+
+#ifndef SKIP_DECIMAL32
+T(d32)
+#endif
+#ifndef SKIP_DECIMAL64
+T(d64)
+#endif
+#ifndef SKIP_DECIMAL128
+T(d128)
+#endif
+
+DEBUG_FINI
+
+if (fails != 0)
+ abort ();
+
+#undef T
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-2_y.C b/gcc/testsuite/g++.dg/compat/decimal/pass-2_y.C
new file mode 100644
index 00000000000..97471457dbe
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-2_y.C
@@ -0,0 +1,7 @@
+#include "decimal-dummy.h"
+
+#define dec32 std::decimal::decimal32
+#define dec64 std::decimal::decimal64
+#define dec128 std::decimal::decimal128
+
+#include "pass_y.h"
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C
new file mode 100644
index 00000000000..de09992c224
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-3_main.C
@@ -0,0 +1,13 @@
+/* { dg-require-effective-target dfp } */
+
+/* Test passing decimal scalars and classes by value. */
+
+extern void pass_3_x (void);
+int fails;
+
+int
+main ()
+{
+ pass_3_x ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-3_x.C b/gcc/testsuite/g++.dg/compat/decimal/pass-3_x.C
new file mode 100644
index 00000000000..17e4d1c8b5a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-3_x.C
@@ -0,0 +1,30 @@
+typedef float dec32 __attribute__((mode(SD)));
+typedef float dec64 __attribute__((mode(DD)));
+typedef float dec128 __attribute__((mode(TD)));
+
+#include "pass_x.h"
+
+void
+pass_3_x (void)
+{
+DEBUG_INIT
+
+#define T(NAME) testit##NAME ();
+
+#ifndef SKIP_DECIMAL32
+T(d32)
+#endif
+#ifndef SKIP_DECIMAL64
+T(d64)
+#endif
+#ifndef SKIP_DECIMAL128
+T(d128)
+#endif
+
+DEBUG_FINI
+
+if (fails != 0)
+ abort ();
+
+#undef T
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-3_y.C b/gcc/testsuite/g++.dg/compat/decimal/pass-3_y.C
new file mode 100644
index 00000000000..97471457dbe
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-3_y.C
@@ -0,0 +1,7 @@
+#include "decimal-dummy.h"
+
+#define dec32 std::decimal::decimal32
+#define dec64 std::decimal::decimal64
+#define dec128 std::decimal::decimal128
+
+#include "pass_y.h"
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C
new file mode 100644
index 00000000000..d5a0a47d478
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-4_main.C
@@ -0,0 +1,13 @@
+/* { dg-require-effective-target dfp } */
+
+/* Test passing decimal classes and scalars by value. */
+
+extern void pass_4_x (void);
+int fails;
+
+int
+main ()
+{
+ pass_4_x ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-4_x.C b/gcc/testsuite/g++.dg/compat/decimal/pass-4_x.C
new file mode 100644
index 00000000000..b0483ac278f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-4_x.C
@@ -0,0 +1,32 @@
+#include "decimal-dummy.h"
+
+#define dec32 std::decimal::decimal32
+#define dec64 std::decimal::decimal64
+#define dec128 std::decimal::decimal128
+
+#include "pass_x.h"
+
+void
+pass_4_x (void)
+{
+DEBUG_INIT
+
+#define T(NAME) testit##NAME ();
+
+#ifndef SKIP_DECIMAL32
+T(d32)
+#endif
+#ifndef SKIP_DECIMAL64
+T(d64)
+#endif
+#ifndef SKIP_DECIMAL128
+T(d128)
+#endif
+
+DEBUG_FINI
+
+if (fails != 0)
+ abort ();
+
+#undef T
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-4_y.C b/gcc/testsuite/g++.dg/compat/decimal/pass-4_y.C
new file mode 100644
index 00000000000..5da7f87d51e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-4_y.C
@@ -0,0 +1,5 @@
+typedef float dec32 __attribute__((mode(SD)));
+typedef float dec64 __attribute__((mode(DD)));
+typedef float dec128 __attribute__((mode(TD)));
+
+#include "pass_y.h"
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C
new file mode 100644
index 00000000000..9b25a49c72e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-5_main.C
@@ -0,0 +1,13 @@
+/* { dg-require-effective-target dfp } */
+
+/* Test passing decimal scalars and typedef'd classes by value. */
+
+extern void pass_5_x (void);
+int fails;
+
+int
+main ()
+{
+ pass_5_x ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-5_x.C b/gcc/testsuite/g++.dg/compat/decimal/pass-5_x.C
new file mode 100644
index 00000000000..11c4d96c9cd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-5_x.C
@@ -0,0 +1,30 @@
+typedef float dec32 __attribute__((mode(SD)));
+typedef float dec64 __attribute__((mode(DD)));
+typedef float dec128 __attribute__((mode(TD)));
+
+#include "pass_x.h"
+
+void
+pass_5_x (void)
+{
+DEBUG_INIT
+
+#define T(NAME) testit##NAME ();
+
+#ifndef SKIP_DECIMAL32
+T(d32)
+#endif
+#ifndef SKIP_DECIMAL64
+T(d64)
+#endif
+#ifndef SKIP_DECIMAL128
+T(d128)
+#endif
+
+DEBUG_FINI
+
+if (fails != 0)
+ abort ();
+
+#undef T
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-5_y.C b/gcc/testsuite/g++.dg/compat/decimal/pass-5_y.C
new file mode 100644
index 00000000000..5a2c1fba01b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-5_y.C
@@ -0,0 +1,7 @@
+#include "decimal-dummy.h"
+
+typedef std::decimal::decimal32 dec32;
+typedef std::decimal::decimal64 dec64;
+typedef std::decimal::decimal128 dec128;
+
+#include "pass_y.h"
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C b/gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C
new file mode 100644
index 00000000000..1b686a21dd0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-6_main.C
@@ -0,0 +1,13 @@
+/* { dg-require-effective-target dfp } */
+
+/* Test passing typedef'd decimal classes and scalars by value. */
+
+extern void pass_6_x (void);
+int fails;
+
+int
+main ()
+{
+ pass_6_x ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-6_x.C b/gcc/testsuite/g++.dg/compat/decimal/pass-6_x.C
new file mode 100644
index 00000000000..e59ca7f722d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-6_x.C
@@ -0,0 +1,32 @@
+#include "decimal-dummy.h"
+
+typedef std::decimal::decimal32 dec32;
+typedef std::decimal::decimal64 dec64;
+typedef std::decimal::decimal128 dec128;
+
+#include "pass_x.h"
+
+void
+pass_6_x (void)
+{
+DEBUG_INIT
+
+#define T(NAME) testit##NAME ();
+
+#ifndef SKIP_DECIMAL32
+T(d32)
+#endif
+#ifndef SKIP_DECIMAL64
+T(d64)
+#endif
+#ifndef SKIP_DECIMAL128
+T(d128)
+#endif
+
+DEBUG_FINI
+
+if (fails != 0)
+ abort ();
+
+#undef T
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass-6_y.C b/gcc/testsuite/g++.dg/compat/decimal/pass-6_y.C
new file mode 100644
index 00000000000..5da7f87d51e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass-6_y.C
@@ -0,0 +1,5 @@
+typedef float dec32 __attribute__((mode(SD)));
+typedef float dec64 __attribute__((mode(DD)));
+typedef float dec128 __attribute__((mode(TD)));
+
+#include "pass_y.h"
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass_x.h b/gcc/testsuite/g++.dg/compat/decimal/pass_x.h
new file mode 100644
index 00000000000..5b25dc9bf1a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass_x.h
@@ -0,0 +1,151 @@
+#include "compat-common.h"
+
+#define T(NAME, TYPE, INITVAL) \
+TYPE g01##NAME, g02##NAME, g03##NAME, g04##NAME; \
+TYPE g05##NAME, g06##NAME, g07##NAME, g08##NAME; \
+TYPE g09##NAME, g10##NAME, g11##NAME, g12##NAME; \
+TYPE g13##NAME, g14##NAME, g15##NAME, g16##NAME; \
+ \
+extern void init##NAME (TYPE *p, TYPE v); \
+extern void checkg##NAME (void); \
+extern void \
+test##NAME (TYPE x01, TYPE x02, TYPE x03, TYPE x04, \
+ TYPE x05, TYPE x06, TYPE x07, TYPE x08, \
+ TYPE x09, TYPE x10, TYPE x11, TYPE x12, \
+ TYPE x13, TYPE x14, TYPE x15, TYPE x16); \
+extern void testva##NAME (int n, ...); \
+ \
+extern void \
+check##NAME (TYPE x, TYPE v) \
+{ \
+ if (x != v + INITVAL) \
+ DEBUG_CHECK \
+} \
+ \
+extern void \
+test2_##NAME (TYPE x01, TYPE x02, TYPE x03, TYPE x04, \
+ TYPE x05, TYPE x06, TYPE x07, TYPE x08) \
+{ \
+ test##NAME (x01, g02##NAME, x02, g04##NAME, \
+ x03, g06##NAME, x04, g08##NAME, \
+ x05, g10##NAME, x06, g12##NAME, \
+ x07, g14##NAME, x08, g16##NAME); \
+} \
+ \
+extern void \
+testit##NAME (void) \
+{ \
+ DEBUG_FPUTS (#NAME) \
+ DEBUG_FPUTS (" init: ") \
+ init##NAME (&g01##NAME, 1); \
+ init##NAME (&g02##NAME, 2); \
+ init##NAME (&g03##NAME, 3); \
+ init##NAME (&g04##NAME, 4); \
+ init##NAME (&g05##NAME, 5); \
+ init##NAME (&g06##NAME, 6); \
+ init##NAME (&g07##NAME, 7); \
+ init##NAME (&g08##NAME, 8); \
+ init##NAME (&g09##NAME, 9); \
+ init##NAME (&g10##NAME, 10); \
+ init##NAME (&g11##NAME, 11); \
+ init##NAME (&g12##NAME, 12); \
+ init##NAME (&g13##NAME, 13); \
+ init##NAME (&g14##NAME, 14); \
+ init##NAME (&g15##NAME, 15); \
+ init##NAME (&g16##NAME, 16); \
+ checkg##NAME (); \
+ DEBUG_NL \
+ DEBUG_FPUTS (#NAME) \
+ DEBUG_FPUTS (" test: ") \
+ test##NAME (g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME, g06##NAME, g07##NAME, g08##NAME, \
+ g09##NAME, g10##NAME, g11##NAME, g12##NAME, \
+ g13##NAME, g14##NAME, g15##NAME, g16##NAME); \
+ DEBUG_NL \
+ DEBUG_FPUTS (#NAME) \
+ DEBUG_FPUTS (" testva: ") \
+ DEBUG_NL \
+ testva##NAME (1, \
+ g01##NAME); \
+ DEBUG_NL \
+ testva##NAME (2, \
+ g01##NAME, g02##NAME); \
+ DEBUG_NL \
+ testva##NAME (3, \
+ g01##NAME, g02##NAME, g03##NAME); \
+ DEBUG_NL \
+ testva##NAME (4, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME); \
+ DEBUG_NL \
+ testva##NAME (5, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME); \
+ DEBUG_NL \
+ testva##NAME (6, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME, g06##NAME); \
+ DEBUG_NL \
+ testva##NAME (7, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME, g06##NAME, g07##NAME); \
+ DEBUG_NL \
+ testva##NAME (8, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME, g06##NAME, g07##NAME, g08##NAME); \
+ DEBUG_NL \
+ testva##NAME (9, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME, g06##NAME, g07##NAME, g08##NAME, \
+ g09##NAME); \
+ DEBUG_NL \
+ testva##NAME (10, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME, g06##NAME, g07##NAME, g08##NAME, \
+ g09##NAME, g10##NAME); \
+ DEBUG_NL \
+ testva##NAME (11, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME, g06##NAME, g07##NAME, g08##NAME, \
+ g09##NAME, g10##NAME, g11##NAME); \
+ DEBUG_NL \
+ testva##NAME (12, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME, g06##NAME, g07##NAME, g08##NAME, \
+ g09##NAME, g10##NAME, g11##NAME, g12##NAME); \
+ DEBUG_NL \
+ testva##NAME (13, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME, g06##NAME, g07##NAME, g08##NAME, \
+ g09##NAME, g10##NAME, g11##NAME, g12##NAME, \
+ g13##NAME); \
+ DEBUG_NL \
+ testva##NAME (14, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME, g06##NAME, g07##NAME, g08##NAME, \
+ g09##NAME, g10##NAME, g11##NAME, g12##NAME, \
+ g13##NAME, g14##NAME); \
+ DEBUG_NL \
+ testva##NAME (15, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME, g06##NAME, g07##NAME, g08##NAME, \
+ g09##NAME, g10##NAME, g11##NAME, g12##NAME, \
+ g13##NAME, g14##NAME, g15##NAME); \
+ DEBUG_NL \
+ testva##NAME (16, \
+ g01##NAME, g02##NAME, g03##NAME, g04##NAME, \
+ g05##NAME, g06##NAME, g07##NAME, g08##NAME, \
+ g09##NAME, g10##NAME, g11##NAME, g12##NAME, \
+ g13##NAME, g14##NAME, g15##NAME, g16##NAME); \
+ DEBUG_NL \
+ DEBUG_FPUTS (#NAME) \
+ DEBUG_FPUTS (" test2: ") \
+ test2_##NAME (g01##NAME, g03##NAME, g05##NAME, g07##NAME, \
+ g09##NAME, g11##NAME, g13##NAME, g15##NAME); \
+ DEBUG_NL \
+}
+
+T(d32, dec32, (dec32)1.5DF)
+T(d64, dec64, (dec64)2.5DD)
+T(d128, dec128, (dec128)3.5DL)
+
+#undef T
diff --git a/gcc/testsuite/g++.dg/compat/decimal/pass_y.h b/gcc/testsuite/g++.dg/compat/decimal/pass_y.h
new file mode 100644
index 00000000000..f835b198352
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/pass_y.h
@@ -0,0 +1,89 @@
+#include <stdarg.h>
+
+#include "compat-common.h"
+
+#ifdef SKIP_VA
+const int test_va = 0;
+#else
+const int test_va = 1;
+#endif
+
+#define T(NAME, TYPE, INITVAL) \
+extern TYPE g01##NAME, g02##NAME, g03##NAME, g04##NAME; \
+extern TYPE g05##NAME, g06##NAME, g07##NAME, g08##NAME; \
+extern TYPE g09##NAME, g10##NAME, g11##NAME, g12##NAME; \
+extern TYPE g13##NAME, g14##NAME, g15##NAME, g16##NAME; \
+ \
+extern void check##NAME (TYPE x, TYPE v); \
+ \
+extern void \
+init##NAME (TYPE *p, TYPE v) \
+{ \
+ *p = v + INITVAL; \
+} \
+ \
+extern void \
+checkg##NAME (void) \
+{ \
+ check##NAME (g01##NAME, 1); \
+ check##NAME (g02##NAME, 2); \
+ check##NAME (g03##NAME, 3); \
+ check##NAME (g04##NAME, 4); \
+ check##NAME (g05##NAME, 5); \
+ check##NAME (g06##NAME, 6); \
+ check##NAME (g07##NAME, 7); \
+ check##NAME (g08##NAME, 8); \
+ check##NAME (g09##NAME, 9); \
+ check##NAME (g10##NAME, 10); \
+ check##NAME (g11##NAME, 11); \
+ check##NAME (g12##NAME, 12); \
+ check##NAME (g13##NAME, 13); \
+ check##NAME (g14##NAME, 14); \
+ check##NAME (g15##NAME, 15); \
+ check##NAME (g16##NAME, 16); \
+} \
+ \
+extern void \
+test##NAME (TYPE x01, TYPE x02, TYPE x03, TYPE x04, \
+ TYPE x05, TYPE x06, TYPE x07, TYPE x08, \
+ TYPE x09, TYPE x10, TYPE x11, TYPE x12, \
+ TYPE x13, TYPE x14, TYPE x15, TYPE x16) \
+{ \
+ check##NAME (x01, 1); \
+ check##NAME (x02, 2); \
+ check##NAME (x03, 3); \
+ check##NAME (x04, 4); \
+ check##NAME (x05, 5); \
+ check##NAME (x06, 6); \
+ check##NAME (x07, 7); \
+ check##NAME (x08, 8); \
+ check##NAME (x09, 9); \
+ check##NAME (x10, 10); \
+ check##NAME (x11, 11); \
+ check##NAME (x12, 12); \
+ check##NAME (x13, 13); \
+ check##NAME (x14, 14); \
+ check##NAME (x15, 15); \
+ check##NAME (x16, 16); \
+} \
+ \
+extern void \
+testva##NAME (int n, ...) \
+{ \
+ int i; \
+ va_list ap; \
+ if (test_va) \
+ { \
+ va_start (ap, n); \
+ for (i = 0; i < n; i++) \
+ { \
+ TYPE t = va_arg (ap, TYPE); \
+ check##NAME (t, i+1); \
+ } \
+ va_end (ap); \
+ } \
+}
+
+T(d32, dec32, (dec32)1.5DF)
+T(d64, dec64, (dec64)2.5DD)
+T(d128, dec128, (dec128)3.5DL)
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-1_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-1_main.C
new file mode 100644
index 00000000000..c663bb01cf3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-1_main.C
@@ -0,0 +1,13 @@
+/* { dg-require-effective-target dfp } */
+
+/* Test function return values for decimal float scalars. */
+
+extern void return_1_x (void);
+int fails;
+
+int
+main ()
+{
+ return_1_x ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-1_x.C b/gcc/testsuite/g++.dg/compat/decimal/return-1_x.C
new file mode 100644
index 00000000000..e391bd1f1f3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-1_x.C
@@ -0,0 +1,24 @@
+typedef float dec32 __attribute__((mode(SD)));
+typedef float dec64 __attribute__((mode(DD)));
+typedef float dec128 __attribute__((mode(TD)));
+
+#include "return_x.h"
+
+void
+return_1_x (void)
+{
+DEBUG_INIT
+
+#define T(NAME) testit##NAME ();
+
+T(d32)
+T(d64)
+T(d128)
+
+DEBUG_FINI
+
+if (fails != 0)
+ abort ();
+
+#undef T
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-1_y.C b/gcc/testsuite/g++.dg/compat/decimal/return-1_y.C
new file mode 100644
index 00000000000..0b4d4bf38c6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-1_y.C
@@ -0,0 +1,5 @@
+typedef float dec32 __attribute__((mode(SD)));
+typedef float dec64 __attribute__((mode(DD)));
+typedef float dec128 __attribute__((mode(TD)));
+
+#include "return_y.h"
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-2_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-2_main.C
new file mode 100644
index 00000000000..afa27f269df
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-2_main.C
@@ -0,0 +1,13 @@
+/* { dg-require-effective-target dfp } */
+
+/* Test function return values for decimal classes. */
+
+extern void return_2_x (void);
+int fails;
+
+int
+main ()
+{
+ return_2_x ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-2_x.C b/gcc/testsuite/g++.dg/compat/decimal/return-2_x.C
new file mode 100644
index 00000000000..d96c01479c2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-2_x.C
@@ -0,0 +1,26 @@
+#include "decimal-dummy.h"
+
+#define dec32 std::decimal::decimal32
+#define dec64 std::decimal::decimal64
+#define dec128 std::decimal::decimal128
+
+#include "return_x.h"
+
+void
+return_2_x (void)
+{
+DEBUG_INIT
+
+#define T(NAME) testit##NAME ();
+
+T(d32)
+T(d64)
+T(d128)
+
+DEBUG_FINI
+
+if (fails != 0)
+ abort ();
+
+#undef T
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-2_y.C b/gcc/testsuite/g++.dg/compat/decimal/return-2_y.C
new file mode 100644
index 00000000000..c68088b30cf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-2_y.C
@@ -0,0 +1,7 @@
+#include "decimal-dummy.h"
+
+#define dec32 std::decimal::decimal32
+#define dec64 std::decimal::decimal64
+#define dec128 std::decimal::decimal128
+
+#include "return_y.h"
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-3_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-3_main.C
new file mode 100644
index 00000000000..468f3fc0c34
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-3_main.C
@@ -0,0 +1,13 @@
+/* { dg-require-effective-target dfp } */
+
+/* Test function return values for decimal float scalars and classes. */
+
+extern void return_3_x (void);
+int fails;
+
+int
+main ()
+{
+ return_3_x ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-3_x.C b/gcc/testsuite/g++.dg/compat/decimal/return-3_x.C
new file mode 100644
index 00000000000..52e599c7631
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-3_x.C
@@ -0,0 +1,24 @@
+typedef float dec32 __attribute__((mode(SD)));
+typedef float dec64 __attribute__((mode(DD)));
+typedef float dec128 __attribute__((mode(TD)));
+
+#include "return_x.h"
+
+void
+return_3_x (void)
+{
+DEBUG_INIT
+
+#define T(NAME) testit##NAME ();
+
+T(d32)
+T(d64)
+T(d128)
+
+DEBUG_FINI
+
+if (fails != 0)
+ abort ();
+
+#undef T
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-3_y.C b/gcc/testsuite/g++.dg/compat/decimal/return-3_y.C
new file mode 100644
index 00000000000..c68088b30cf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-3_y.C
@@ -0,0 +1,7 @@
+#include "decimal-dummy.h"
+
+#define dec32 std::decimal::decimal32
+#define dec64 std::decimal::decimal64
+#define dec128 std::decimal::decimal128
+
+#include "return_y.h"
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-4_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-4_main.C
new file mode 100644
index 00000000000..365d8becd59
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-4_main.C
@@ -0,0 +1,13 @@
+/* { dg-require-effective-target dfp } */
+
+/* Test function return values for decimal float classes and scalars. */
+
+extern void return_4_x (void);
+int fails;
+
+int
+main ()
+{
+ return_4_x ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-4_x.C b/gcc/testsuite/g++.dg/compat/decimal/return-4_x.C
new file mode 100644
index 00000000000..b9d28fa5b9a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-4_x.C
@@ -0,0 +1,26 @@
+#include "decimal-dummy.h"
+
+#define dec32 std::decimal::decimal32
+#define dec64 std::decimal::decimal64
+#define dec128 std::decimal::decimal128
+
+#include "return_x.h"
+
+void
+return_4_x (void)
+{
+DEBUG_INIT
+
+#define T(NAME) testit##NAME ();
+
+T(d32)
+T(d64)
+T(d128)
+
+DEBUG_FINI
+
+if (fails != 0)
+ abort ();
+
+#undef T
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-4_y.C b/gcc/testsuite/g++.dg/compat/decimal/return-4_y.C
new file mode 100644
index 00000000000..0b4d4bf38c6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-4_y.C
@@ -0,0 +1,5 @@
+typedef float dec32 __attribute__((mode(SD)));
+typedef float dec64 __attribute__((mode(DD)));
+typedef float dec128 __attribute__((mode(TD)));
+
+#include "return_y.h"
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-5_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-5_main.C
new file mode 100644
index 00000000000..2c334832797
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-5_main.C
@@ -0,0 +1,14 @@
+/* { dg-require-effective-target dfp } */
+
+/* Test function return values for decimal float scalars and typedef'd
+ classes. */
+
+extern void return_5_x (void);
+int fails;
+
+int
+main ()
+{
+ return_5_x ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-5_x.C b/gcc/testsuite/g++.dg/compat/decimal/return-5_x.C
new file mode 100644
index 00000000000..a2bb6173b2f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-5_x.C
@@ -0,0 +1,24 @@
+typedef float dec32 __attribute__((mode(SD)));
+typedef float dec64 __attribute__((mode(DD)));
+typedef float dec128 __attribute__((mode(TD)));
+
+#include "return_x.h"
+
+void
+return_5_x (void)
+{
+DEBUG_INIT
+
+#define T(NAME) testit##NAME ();
+
+T(d32)
+T(d64)
+T(d128)
+
+DEBUG_FINI
+
+if (fails != 0)
+ abort ();
+
+#undef T
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-5_y.C b/gcc/testsuite/g++.dg/compat/decimal/return-5_y.C
new file mode 100644
index 00000000000..0f780167a4e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-5_y.C
@@ -0,0 +1,7 @@
+#include "decimal-dummy.h"
+
+typedef std::decimal::decimal32 dec32;
+typedef std::decimal::decimal64 dec64;
+typedef std::decimal::decimal128 dec128;
+
+#include "return_y.h"
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-6_main.C b/gcc/testsuite/g++.dg/compat/decimal/return-6_main.C
new file mode 100644
index 00000000000..94526bdcb81
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-6_main.C
@@ -0,0 +1,14 @@
+/* { dg-require-effective-target dfp } */
+
+/* Test function return values for typedef'd decimal float classes
+ and scalars. */
+
+extern void return_6_x (void);
+int fails;
+
+int
+main ()
+{
+ return_6_x ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-6_x.C b/gcc/testsuite/g++.dg/compat/decimal/return-6_x.C
new file mode 100644
index 00000000000..e0a487dbe3b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-6_x.C
@@ -0,0 +1,26 @@
+#include "decimal-dummy.h"
+
+typedef std::decimal::decimal32 dec32;
+typedef std::decimal::decimal64 dec64;
+typedef std::decimal::decimal128 dec128;
+
+#include "return_x.h"
+
+void
+return_6_x (void)
+{
+DEBUG_INIT
+
+#define T(NAME) testit##NAME ();
+
+T(d32)
+T(d64)
+T(d128)
+
+DEBUG_FINI
+
+if (fails != 0)
+ abort ();
+
+#undef T
+}
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return-6_y.C b/gcc/testsuite/g++.dg/compat/decimal/return-6_y.C
new file mode 100644
index 00000000000..0b4d4bf38c6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return-6_y.C
@@ -0,0 +1,5 @@
+typedef float dec32 __attribute__((mode(SD)));
+typedef float dec64 __attribute__((mode(DD)));
+typedef float dec128 __attribute__((mode(TD)));
+
+#include "return_y.h"
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return_x.h b/gcc/testsuite/g++.dg/compat/decimal/return_x.h
new file mode 100644
index 00000000000..401adfb5c93
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return_x.h
@@ -0,0 +1,90 @@
+#include "compat-common.h"
+
+#ifdef SKIP_VA
+const int test_va = 0;
+#else
+const int test_va = 1;
+#endif
+
+#define T(NAME, TYPE, INITVAL) \
+TYPE g01##NAME, g02##NAME, g03##NAME, g04##NAME; \
+TYPE g05##NAME, g06##NAME, g07##NAME, g08##NAME; \
+TYPE g09##NAME, g10##NAME, g11##NAME, g12##NAME; \
+TYPE g13##NAME, g14##NAME, g15##NAME, g16##NAME; \
+ \
+extern void init##NAME (TYPE *p, TYPE v); \
+extern void checkg##NAME (void); \
+extern TYPE test0##NAME (void); \
+extern TYPE test1##NAME (TYPE); \
+extern TYPE testva##NAME (int n, ...); \
+ \
+extern void \
+check##NAME (TYPE x, TYPE v) \
+{ \
+ if (x != v) \
+ DEBUG_CHECK \
+} \
+ \
+extern void \
+testit##NAME (void) \
+{ \
+ TYPE rslt; \
+ DEBUG_FPUTS (#NAME) \
+ DEBUG_FPUTS (" init: ") \
+ init##NAME (&g01##NAME, 1); \
+ init##NAME (&g02##NAME, 2); \
+ init##NAME (&g03##NAME, 3); \
+ init##NAME (&g04##NAME, 4); \
+ init##NAME (&g05##NAME, 5); \
+ init##NAME (&g06##NAME, 6); \
+ init##NAME (&g07##NAME, 7); \
+ init##NAME (&g08##NAME, 8); \
+ init##NAME (&g09##NAME, 9); \
+ init##NAME (&g10##NAME, 10); \
+ init##NAME (&g11##NAME, 11); \
+ init##NAME (&g12##NAME, 12); \
+ init##NAME (&g13##NAME, 13); \
+ init##NAME (&g14##NAME, 14); \
+ init##NAME (&g15##NAME, 15); \
+ init##NAME (&g16##NAME, 16); \
+ checkg##NAME (); \
+ DEBUG_NL \
+ DEBUG_FPUTS (#NAME) \
+ DEBUG_FPUTS (" test0: ") \
+ rslt = test0##NAME (); \
+ check##NAME (rslt, g01##NAME); \
+ DEBUG_NL \
+ DEBUG_FPUTS (#NAME) \
+ DEBUG_FPUTS (" test1: ") \
+ rslt = test1##NAME (g01##NAME); \
+ check##NAME (rslt, g01##NAME); \
+ if (test_va) \
+ { \
+ DEBUG_NL \
+ DEBUG_FPUTS (#NAME) \
+ DEBUG_FPUTS (" testva: ") \
+ rslt = testva##NAME (1, g01##NAME); \
+ check##NAME (rslt, g01##NAME); \
+ rslt = testva##NAME (5, g01##NAME, g02##NAME, g03##NAME, \
+ g04##NAME, g05##NAME); \
+ check##NAME (rslt, g05##NAME); \
+ rslt = testva##NAME (9, g01##NAME, g02##NAME, g03##NAME, \
+ g04##NAME, g05##NAME, g06##NAME, \
+ g07##NAME, g08##NAME, g09##NAME); \
+ check##NAME (rslt, g09##NAME); \
+ rslt = testva##NAME (16, g01##NAME, g02##NAME, g03##NAME, \
+ g04##NAME, g05##NAME, g06##NAME, \
+ g07##NAME, g08##NAME, g09##NAME, \
+ g10##NAME, g11##NAME, g12##NAME, \
+ g13##NAME, g14##NAME, g15##NAME, \
+ g16##NAME); \
+ check##NAME (rslt, g16##NAME); \
+ } \
+ DEBUG_NL \
+}
+
+T(d32, dec32, (dec32)1.5DF);
+T(d64, dec64, (dec64)2.5DD);
+T(d128, dec128, (dec128)3.5DL);
+
+#undef T
diff --git a/gcc/testsuite/g++.dg/compat/decimal/return_y.h b/gcc/testsuite/g++.dg/compat/decimal/return_y.h
new file mode 100644
index 00000000000..285526e2e36
--- /dev/null
+++ b/gcc/testsuite/g++.dg/compat/decimal/return_y.h
@@ -0,0 +1,67 @@
+#include <stdarg.h>
+
+#include "compat-common.h"
+
+#define T(NAME, TYPE, INITVAL) \
+extern TYPE g01##NAME, g02##NAME, g03##NAME, g04##NAME; \
+extern TYPE g05##NAME, g06##NAME, g07##NAME, g08##NAME; \
+extern TYPE g09##NAME, g10##NAME, g11##NAME, g12##NAME; \
+extern TYPE g13##NAME, g14##NAME, g15##NAME, g16##NAME; \
+ \
+extern void check##NAME (TYPE x, TYPE v); \
+ \
+extern void \
+init##NAME (TYPE *p, TYPE v) \
+{ \
+ *p = v + INITVAL; \
+} \
+ \
+extern void \
+checkg##NAME (void) \
+{ \
+ check##NAME (g01##NAME, 1+INITVAL); \
+ check##NAME (g02##NAME, 2+INITVAL); \
+ check##NAME (g03##NAME, 3+INITVAL); \
+ check##NAME (g04##NAME, 4+INITVAL); \
+ check##NAME (g05##NAME, 5+INITVAL); \
+ check##NAME (g06##NAME, 6+INITVAL); \
+ check##NAME (g07##NAME, 7+INITVAL); \
+ check##NAME (g08##NAME, 8+INITVAL); \
+ check##NAME (g09##NAME, 9+INITVAL); \
+ check##NAME (g10##NAME, 10+INITVAL); \
+ check##NAME (g11##NAME, 11+INITVAL); \
+ check##NAME (g12##NAME, 12+INITVAL); \
+ check##NAME (g13##NAME, 13+INITVAL); \
+ check##NAME (g14##NAME, 14+INITVAL); \
+ check##NAME (g15##NAME, 15+INITVAL); \
+ check##NAME (g16##NAME, 16+INITVAL); \
+} \
+ \
+extern TYPE \
+test0##NAME (void) \
+{ \
+ return g01##NAME; \
+} \
+ \
+extern TYPE \
+test1##NAME (TYPE x01) \
+{ \
+ return x01; \
+} \
+ \
+extern TYPE \
+testva##NAME (int n, ...) \
+{ \
+ int i; \
+ TYPE rslt; \
+ va_list ap; \
+ va_start (ap, n); \
+ for (i = 0; i < n; i++) \
+ rslt = va_arg (ap, TYPE); \
+ va_end (ap); \
+ return rslt; \
+}
+
+T(d32, dec32, (dec32)1.5)
+T(d64, dec64, (dec64)2.5)
+T(d128, dec128, (dec128)3.5)
diff --git a/gcc/testsuite/g++.dg/conversion/op6.C b/gcc/testsuite/g++.dg/conversion/op6.C
new file mode 100644
index 00000000000..9aec9f0a808
--- /dev/null
+++ b/gcc/testsuite/g++.dg/conversion/op6.C
@@ -0,0 +1,18 @@
+// Origin: PR c++/42766
+// { dg-do compile }
+
+template<class T> class smart_pointer {
+public:
+ operator T* () const { }
+ operator bool () const { }
+ operator bool () { }
+};
+class Context { };
+typedef smart_pointer<Context> ContextP;
+class SvnClient {
+ ~SvnClient();
+ ContextP svnContext;
+};
+SvnClient::~SvnClient() {
+ delete svnContext;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype22.C b/gcc/testsuite/g++.dg/cpp0x/decltype22.C
new file mode 100644
index 00000000000..74811cfe701
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/decltype22.C
@@ -0,0 +1,13 @@
+// PR c++/42761
+// { dg-options "-std=c++0x" }
+
+template<typename _Tp> _Tp* fn();
+
+template <class T> struct A
+{
+ template <class U,
+ class S = decltype(fn<T>())>
+ struct B { };
+};
+
+A<int> a;
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-warn1.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-warn1.C
new file mode 100644
index 00000000000..b384d5cff6d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-warn1.C
@@ -0,0 +1,8 @@
+// PR c++/41920
+// { dg-options "-std=c++0x -Wall -Wextra" }
+
+int foo(int i)
+{
+ auto bar = [=](){ return i; };
+ return bar();
+}
diff --git a/gcc/testsuite/g++.dg/other/cv_func.C b/gcc/testsuite/g++.dg/other/cv_func.C
index 4f103824d93..788c173b423 100644
--- a/gcc/testsuite/g++.dg/other/cv_func.C
+++ b/gcc/testsuite/g++.dg/other/cv_func.C
@@ -4,7 +4,6 @@ typedef int FIC(int) const;
typedef int FI(int);
FIC f; // { dg-error "qualified" }
-// { dg-error "ignoring" "ignoring" { target *-*-* } 6 }
struct S {
FIC f; // OK
@@ -15,7 +14,7 @@ struct S {
};
FIC S::*pm = &S::f;
const FI S::*pm2 = &S::f; // { dg-error "qualifier" }
-// { dg-error "cannot convert" "cannot convert" { target *-*-* } 17 }
+// { dg-error "cannot convert" "cannot convert" { target *-*-* } 16 }
const FIC S::*pm3 = &S::f; // { dg-error "qualifier" }
int S::f(int) const
diff --git a/gcc/testsuite/g++.dg/parse/crash55.C b/gcc/testsuite/g++.dg/parse/crash55.C
new file mode 100644
index 00000000000..7676d49bcd9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/crash55.C
@@ -0,0 +1,8 @@
+// PR c++/42038
+
+extern int __cxa_begin_catch;
+
+void f(void)
+{
+ try { } catch (int) { } // { dg-error "cannot be used" }
+}
diff --git a/gcc/testsuite/g++.dg/parse/fn-typedef1.C b/gcc/testsuite/g++.dg/parse/fn-typedef1.C
new file mode 100644
index 00000000000..ebdc012f59c
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/fn-typedef1.C
@@ -0,0 +1,19 @@
+// PR c++/40750
+// { dg-do run }
+
+extern "C" void abort ();
+
+typedef void Fn() const;
+
+struct Foo {
+ Fn fn;
+};
+
+bool called = false;
+void Foo::fn() const { called = true; }
+
+int main() {
+ Foo f; f.fn();
+ if (!called)
+ abort();
+}
diff --git a/gcc/testsuite/g++.dg/parse/limits-initializer1.C b/gcc/testsuite/g++.dg/parse/limits-initializer1.C
new file mode 100644
index 00000000000..4b507912f36
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/limits-initializer1.C
@@ -0,0 +1,37 @@
+// PR middle-end/42803
+// { dg-do compile }
+// { dg-options "-O0" }
+
+#define X2 (a + a)
+#define X4 (X2 + X2)
+#define X8 (X4 + X4)
+#define X16 (X8 + X8)
+#define X32 (X16 + X16)
+#define X64 (X32 + X32)
+#define X128 (X64 + X64)
+#define X256 (X128 + X128)
+#define X512 (X256 + X256)
+#define X1024 (X512 + X512)
+#define X2048 (X1024 + X1024)
+#define X4096 (X2048 + X2048)
+#define X8192 (X4096 + X4096)
+#define X16384 (X8192 + X8192)
+#define X32768 (X16384 + X16384)
+#define X65536 (X32768 + X32768)
+#define X131072 (X65536 + X65536)
+#define X262144 (X131072 + X131072)
+
+int
+foo (int a)
+{
+ int v = X262144;
+ return v;
+}
+
+// Emit an error to just make sure we don't waste too much time
+// in the middle-end compiling this.
+int
+bar (void)
+{
+ return x; // { dg-error "was not declared in this scope" }
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr42773.C b/gcc/testsuite/g++.dg/torture/pr42773.C
new file mode 100644
index 00000000000..478ad278aa6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr42773.C
@@ -0,0 +1,54 @@
+// { dg-do compile }
+// { dg-options "-fno-exceptions" }
+
+typedef unsigned int uint;
+struct QShared {
+ bool deref() {
+ return !--count;
+ }
+ uint count;
+};
+template <class T> class QValueListNode {
+public:
+ QValueListNode<T>* next;
+ QValueListNode<T>* prev;
+};
+template <class T> class QValueListPrivate : public QShared {
+public:
+ typedef QValueListNode<T> Node;
+ typedef QValueListNode<T>* NodePtr;
+ QValueListPrivate();
+ void derefAndDelete() {
+ if ( deref() ) delete this;
+ }
+ ~QValueListPrivate();
+ NodePtr node;
+};
+template <class T> QValueListPrivate<T>::QValueListPrivate() {
+ node = new Node;
+ node->next = node->prev = node;
+}
+template <class T> QValueListPrivate<T>::~QValueListPrivate() {
+ NodePtr p = node->next;
+ while( p != node ) {
+ NodePtr x = p->next;
+ delete p;
+ p = x;
+ }
+}
+template <class T> class QValueList {
+public:
+ QValueList() {
+ sh = new QValueListPrivate<T>;
+ }
+ ~QValueList() {
+ sh->derefAndDelete();
+ }
+ QValueListPrivate<T>* sh;
+};
+class Cell {
+ QValueList<Cell*> obscuringCells() const;
+};
+QValueList<Cell*> Cell::obscuringCells() const {
+ QValueList<Cell*> empty;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr42717.c b/gcc/testsuite/gcc.c-torture/compile/pr42717.c
new file mode 100644
index 00000000000..4fe6f93e797
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr42717.c
@@ -0,0 +1,30 @@
+static signed char
+foo (signed char si1, unsigned char si2)
+{
+ return (si1 ^ si2) & (-si2 ^ si2) ? : si1 - si2;
+}
+
+struct S0
+{
+};
+
+unsigned char g_21;
+
+struct S0 g_34;
+
+void
+bar (unsigned char p_20)
+{
+ unsigned char *l_22 = &g_21;
+ unsigned char l_23 = 0;
+ struct S0 *l = &g_34;
+ goto lbl_42;
+ for (; l_23; l_23 = foo (l_23, 1))
+ {
+ for (p_20 = 0; 0; p_20 = foo (p_20, 1))
+ lbl_42:;
+ (l == &g_34) ? 0 : "";
+lbl_85:*l_22 = p_20;
+ }
+ goto lbl_85;
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr42248.c b/gcc/testsuite/gcc.c-torture/execute/pr42248.c
new file mode 100644
index 00000000000..bbb91b343b1
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr42248.c
@@ -0,0 +1,27 @@
+typedef struct {
+ _Complex double a;
+ _Complex double b;
+} Scf10;
+
+Scf10 g1s;
+
+void
+check (Scf10 x, _Complex double y)
+{
+ if (x.a != y) __builtin_abort ();
+}
+
+void
+init (Scf10 *p, _Complex double y)
+{
+ p->a = y;
+}
+
+int
+main ()
+{
+ init (&g1s, (_Complex double)1);
+ check (g1s, (_Complex double)1);
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/20020312-2.c b/gcc/testsuite/gcc.dg/20020312-2.c
index 057c19e1a99..bf8225a1a6b 100644
--- a/gcc/testsuite/gcc.dg/20020312-2.c
+++ b/gcc/testsuite/gcc.dg/20020312-2.c
@@ -46,6 +46,8 @@ extern void abort (void);
/* No pic register. */
#elif defined(__mn10300__)
/* No pic register. */
+#elif defined(__moxie__)
+/* No pic register. */
#elif defined(__hppa__)
/* PIC register is %r27 or %r19, but is used even without -fpic. */
#elif defined(__pdp11__)
diff --git a/gcc/testsuite/gcc.dg/cleanup-13.c b/gcc/testsuite/gcc.dg/cleanup-13.c
index 0a5a9e9153e..5a0d4c69f5a 100644
--- a/gcc/testsuite/gcc.dg/cleanup-13.c
+++ b/gcc/testsuite/gcc.dg/cleanup-13.c
@@ -210,9 +210,22 @@ OP_const1s(-123) OP_abs OP_const1u(123) OP_eq ASSERT_TOS_NON0 \
OP_lit3 OP_lit6 OP_and OP_lit2 OP_eq ASSERT_TOS_NON0 \
OP_lit3 OP_lit6 OP_or OP_lit7 OP_eq ASSERT_TOS_NON0 \
OP_lit17 OP_lit2 OP_minus OP_lit15 OP_eq ASSERT_TOS_NON0 \
+/* Divide is signed truncating toward zero. */ \
OP_const1s(-6) OP_const1s(-2) OP_div OP_lit3 OP_eq ASSERT_TOS_NON0 \
-OP_const1s(-6) OP_const1s(-4) OP_mod OP_const1s(-2) \
+OP_const1s(-7) OP_const1s(3) OP_div OP_const1s(-2) \
OP_eq ASSERT_TOS_NON0 \
+/* Modulo is unsigned. */ \
+OP_const1s(-6) OP_const1s(-4) OP_mod OP_const1s(-6) \
+ OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-6) OP_lit4 OP_mod OP_lit2 OP_eq ASSERT_TOS_NON0 \
+OP_lit6 OP_const1s(-4) OP_mod OP_lit6 OP_eq ASSERT_TOS_NON0 \
+/* Signed modulo can be implemented using "over over div mul minus". */\
+OP_const1s(-6) OP_const1s(-4) OP_over OP_over OP_div OP_mul OP_minus \
+ OP_const1s(-2) OP_eq ASSERT_TOS_NON0 \
+OP_const1s(-7) OP_lit3 OP_over OP_over OP_div OP_mul OP_minus \
+ OP_const1s(-1) OP_eq ASSERT_TOS_NON0 \
+OP_lit7 OP_const1s(-3) OP_over OP_over OP_div OP_mul OP_minus \
+ OP_lit1 OP_eq ASSERT_TOS_NON0 \
OP_lit16 OP_lit31 OP_plus_uconst(1) OP_mul OP_const2u(512) \
OP_eq ASSERT_TOS_NON0 \
OP_lit5 OP_not OP_lit31 OP_and OP_lit26 OP_eq ASSERT_TOS_NON0 \
diff --git a/gcc/testsuite/gcc.dg/cpp/_Pragma6.c b/gcc/testsuite/gcc.dg/cpp/_Pragma6.c
index 986b40cb156..a5324f2f9be 100644
--- a/gcc/testsuite/gcc.dg/cpp/_Pragma6.c
+++ b/gcc/testsuite/gcc.dg/cpp/_Pragma6.c
@@ -2,7 +2,7 @@
/* This is supposed to succeed only if
the target defines HANDLE_PRAGMA_PACK_PUSH_POP
and doesn't define HANDLE_PRAGMA_PACK_WITH_EXPANSION. */
-/* { dg-do compile { target { ! { powerpc-ibm-aix* *-*-solaris2* fido-*-* m68k-*-* sh*-[us]*-elf m32c-*-* *-*-vxworks } } } } */
+/* { dg-do compile { target { ! { powerpc-ibm-aix* *-*-solaris2* fido-*-* m68k-*-* sh*-[us]*-elf m32c-*-* *-*-vxworks moxie-*-* } } } } */
#define push bar
#define foo _Pragma ("pack(push)")
diff --git a/gcc/testsuite/gcc.dg/debug/pr42767.c b/gcc/testsuite/gcc.dg/debug/pr42767.c
new file mode 100644
index 00000000000..1f0e25fe58e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/pr42767.c
@@ -0,0 +1,18 @@
+/* PR debug/42767 */
+/* { dg-do compile } */
+/* { dg-options "-O1 -g" } */
+
+struct lineno_cache_entry
+{
+ unsigned long size;
+};
+_bfd_link_section_stabs (struct lineno_cache_entry * stabsec)
+{
+ unsigned long count;
+ unsigned char *sym;
+ unsigned char *symend;
+ unsigned long skip;
+ count = stabsec->size / 12;
+ for (; sym < symend; sym += 1);
+ stabsec->size = (count - skip) * 12;
+}
diff --git a/gcc/testsuite/gcc.dg/guality/pr42782.c b/gcc/testsuite/gcc.dg/guality/pr42782.c
new file mode 100644
index 00000000000..6a880814aaf
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/guality/pr42782.c
@@ -0,0 +1,24 @@
+/* { dg-options "-g" } */
+
+#include "guality.h"
+
+void __attribute__ ((__noinline__))
+g (void)
+{
+ asm volatile ("");
+}
+
+int
+f (int a)
+{
+ g ();
+ GUALCHKVAL (a);
+ return a;
+}
+
+int
+main (int argc, char *argv[])
+{
+ f (argc + 2);
+ f (argc + 5);
+}
diff --git a/gcc/testsuite/gcc.dg/pr19340.c b/gcc/testsuite/gcc.dg/pr19340.c
index 844d80677d0..58a919b4586 100644
--- a/gcc/testsuite/gcc.dg/pr19340.c
+++ b/gcc/testsuite/gcc.dg/pr19340.c
@@ -1,6 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O1 -fschedule-insns2 -fsched2-use-traces" } */
-/* { dg-skip-if "No scheduling" { mmix-*-* cris-*-* crisv32-*-* fido-*-* m68k-*-* m32c-*-* avr-*-* } { "*" } { "" } } */
+/* { dg-skip-if "No scheduling" { mmix-*-* cris-*-* crisv32-*-* fido-*-* m68k-*-* m32c-*-* avr-*-* moxie-*-* } { "*" } { "" } } */
extern double f (double x);
diff --git a/gcc/testsuite/gcc.dg/pr42715.c b/gcc/testsuite/gcc.dg/pr42715.c
new file mode 100644
index 00000000000..72bdfc86244
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr42715.c
@@ -0,0 +1,59 @@
+/* { dg-do compile { target fpic } } */
+/* { dg-options "-fPIC -g -O2 -w" } */
+/* var-tracking failed to clobber the reg holding v at the asm insn,
+ so v ended up bound to an intermediate PIC expression. */
+
+struct A { unsigned a1; char a2[15]; };
+struct B { long b1; unsigned char b2; long b3; };
+struct C { void *c1; unsigned c2; unsigned c3; };
+
+static struct A v1;
+struct A *const v2 = &v1;
+
+static inline
+int foo (void)
+{
+ int *v;
+ __asm__ __volatile__ ("" : "=r" (v));
+ return v[1];
+}
+
+static void
+bar (struct C *x)
+{
+ if (x->c2 == x->c3 && x->c1)
+ f1 (foo (), x->c1, x->c3 * sizeof (x->c1[0]));
+}
+
+void
+baz (struct B *y)
+{
+ int i;
+ const char *j;
+ char *k;
+ char x[64];
+ for (i = 0; i < sizeof (struct B); i++, y)
+ {
+ switch (y->b2)
+ {
+ case 0x20:
+ if (__builtin_strchr (j, '='))
+ continue;
+ }
+ switch (y->b2)
+ {
+ case 0x80:
+ bar (&x);
+ f2 (y->b3);
+ case 0x2e:
+ case 0x4e:
+ break;
+ default:
+ if (v2->a1)
+ f2 (y->b2);
+ }
+ k[0] = '\0';
+ if (v2->a1)
+ f2 (y->b1);
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/pr42719.c b/gcc/testsuite/gcc.dg/pr42719.c
new file mode 100644
index 00000000000..94a58e41a1a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr42719.c
@@ -0,0 +1,14 @@
+/* PR tree-optimization/42719 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftracer -fcompare-debug" } */
+
+int *v;
+
+void
+foo (int a)
+{
+ int i, j;
+ for (j = i = a; i != -1; j = i, i = v[i])
+ ;
+ v[j] = v[a];
+}
diff --git a/gcc/testsuite/gcc.dg/pr42728.c b/gcc/testsuite/gcc.dg/pr42728.c
new file mode 100644
index 00000000000..7b2fbb690fb
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr42728.c
@@ -0,0 +1,11 @@
+/* PR debug/42728 */
+/* { dg-do compile } */
+/* { dg-options "-O1 -fcompare-debug" } */
+
+void
+foo (char *a)
+{
+ char *b;
+ for (; *a; a++)
+ a = b++;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c
index d7aea1b8430..e7566642cc0 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/20040204-1.c
@@ -33,5 +33,5 @@ void test55 (int x, int y)
that the && should be emitted (based on BRANCH_COST). Fix this
by teaching dom to look through && and register all components
as true. */
-/* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" { xfail { ! "powerpc*-*-* cris-*-* crisv32-*-* mmix-*-* mips*-*-* m68k*-*-*" } } } } */
+/* { dg-final { scan-tree-dump-times "link_error" 0 "optimized" { xfail { ! "powerpc*-*-* cris-*-* crisv32-*-* mmix-*-* mips*-*-* m68k*-*-* moxie-*-*" } } } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c b/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
index e35d179c547..5ed282e49a1 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/asm-3.c
@@ -5,8 +5,12 @@
#ifdef __hppa__
#define REGISTER "1"
#else
+#ifdef __moxie__
+#define REGISTER "8"
+#else
#define REGISTER "0"
#endif
+#endif
static inline int source(void)
{
diff --git a/gcc/testsuite/gcc.dg/weak/typeof-2.c b/gcc/testsuite/gcc.dg/weak/typeof-2.c
index 5d97dc5c240..63f427fc8c9 100644
--- a/gcc/testsuite/gcc.dg/weak/typeof-2.c
+++ b/gcc/testsuite/gcc.dg/weak/typeof-2.c
@@ -43,4 +43,6 @@ int bar3 (int x)
// Likewise for m68k targets.
// { dg-final { if [string match fido-*-* $target_triplet ] {return} } }
// { dg-final { if [string match m68k-*-* $target_triplet ] {return} } }
+// Likewise for moxie targets.
+// { dg-final { if [string match moxie-*-* $target_triplet ] {return} } }
// { dg-final { scan-assembler "baz3.*baz3.*baz3.*baz3.*baz3.*baz3" } }
diff --git a/gcc/testsuite/gcc.target/alpha/pr42774.c b/gcc/testsuite/gcc.target/alpha/pr42774.c
new file mode 100644
index 00000000000..65688002b3a
--- /dev/null
+++ b/gcc/testsuite/gcc.target/alpha/pr42774.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mcpu=ev4" } */
+
+unsigned int ntfs_getinfo(void *p)
+{
+ char bootsect[8];
+
+ __builtin_memcpy(bootsect, p, sizeof bootsect);
+ return *(unsigned short *)(bootsect + 3);
+}
diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c
index ae63430f737..a14a57636d0 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowf32.c
@@ -9,7 +9,7 @@
void test_vget_lowf32 (void)
{
- float32x2_t out_float32x2_t;
+ register float32x2_t out_float32x2_t asm ("d18");
float32x4_t arg0_float32x4_t;
out_float32x2_t = vget_low_f32 (arg0_float32x4_t);
diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c
index c24ac0cf12a..5c130f0b44d 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowp16.c
@@ -9,7 +9,7 @@
void test_vget_lowp16 (void)
{
- poly16x4_t out_poly16x4_t;
+ register poly16x4_t out_poly16x4_t asm ("d18");
poly16x8_t arg0_poly16x8_t;
out_poly16x4_t = vget_low_p16 (arg0_poly16x8_t);
diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c
index 45d65bcafc1..4b4f599fc4e 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowp8.c
@@ -9,7 +9,7 @@
void test_vget_lowp8 (void)
{
- poly8x8_t out_poly8x8_t;
+ register poly8x8_t out_poly8x8_t asm ("d18");
poly8x16_t arg0_poly8x16_t;
out_poly8x8_t = vget_low_p8 (arg0_poly8x16_t);
diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c
index 8e6c29aa7fa..ee6e9904b67 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lows16.c
@@ -9,7 +9,7 @@
void test_vget_lows16 (void)
{
- int16x4_t out_int16x4_t;
+ register int16x4_t out_int16x4_t asm ("d18");
int16x8_t arg0_int16x8_t;
out_int16x4_t = vget_low_s16 (arg0_int16x8_t);
diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c
index e018afd7fab..08315286d9b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lows32.c
@@ -9,7 +9,7 @@
void test_vget_lows32 (void)
{
- int32x2_t out_int32x2_t;
+ register int32x2_t out_int32x2_t asm ("d18");
int32x4_t arg0_int32x4_t;
out_int32x2_t = vget_low_s32 (arg0_int32x4_t);
diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c b/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c
index e2e2bd66fb9..9c1440ceb5b 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lows64.c
@@ -15,5 +15,4 @@ void test_vget_lows64 (void)
out_int64x1_t = vget_low_s64 (arg0_int64x2_t);
}
-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c
index 0be24de35e2..7d324f33713 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lows8.c
@@ -9,7 +9,7 @@
void test_vget_lows8 (void)
{
- int8x8_t out_int8x8_t;
+ register int8x8_t out_int8x8_t asm ("d18");
int8x16_t arg0_int8x16_t;
out_int8x8_t = vget_low_s8 (arg0_int8x16_t);
diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c
index 67bcd5090e7..b0c4384531f 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowu16.c
@@ -9,7 +9,7 @@
void test_vget_lowu16 (void)
{
- uint16x4_t out_uint16x4_t;
+ register uint16x4_t out_uint16x4_t asm ("d18");
uint16x8_t arg0_uint16x8_t;
out_uint16x4_t = vget_low_u16 (arg0_uint16x8_t);
diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c
index d21d97acd01..fdd8e79e974 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowu32.c
@@ -9,7 +9,7 @@
void test_vget_lowu32 (void)
{
- uint32x2_t out_uint32x2_t;
+ register uint32x2_t out_uint32x2_t asm ("d18");
uint32x4_t arg0_uint32x4_t;
out_uint32x2_t = vget_low_u32 (arg0_uint32x4_t);
diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c
index 79cf1c53d20..e6f7627cbd4 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowu64.c
@@ -15,5 +15,4 @@ void test_vget_lowu64 (void)
out_uint64x1_t = vget_low_u64 (arg0_uint64x2_t);
}
-/* { dg-final { scan-assembler "vmov\[ \]+\[dD\]\[0-9\]+, \[dD\]\[0-9\]+!?\(\[ \]+@\[a-zA-Z0-9 \]+\)?\n" } } */
/* { dg-final { cleanup-saved-temps } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c b/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c
index 03996493c78..d4e3c714d93 100644
--- a/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c
+++ b/gcc/testsuite/gcc.target/arm/neon/vget_lowu8.c
@@ -9,7 +9,7 @@
void test_vget_lowu8 (void)
{
- uint8x8_t out_uint8x8_t;
+ register uint8x8_t out_uint8x8_t asm ("d18");
uint8x16_t arg0_uint8x16_t;
out_uint8x8_t = vget_low_u8 (arg0_uint8x16_t);
diff --git a/gcc/testsuite/gfortran.dg/bounds_check_15.f90 b/gcc/testsuite/gfortran.dg/bounds_check_15.f90
new file mode 100644
index 00000000000..947ffb2f4b4
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/bounds_check_15.f90
@@ -0,0 +1,33 @@
+! { dg-do run }
+! { dg-options "-fbounds-check" }
+! Test the fix for PR42783, in which a bogus array bounds violation
+! with missing optional array argument.
+!
+! Contributed by Harald Anlauf <anlauf@gmx.de>
+!
+program gfcbug99
+ implicit none
+ character(len=8), parameter :: mnem_list(2) = "A"
+
+ call foo (mnem_list) ! This call succeeds
+ call foo () ! This call fails
+contains
+ subroutine foo (mnem_list)
+ character(len=8) ,intent(in) ,optional :: mnem_list(:)
+
+ integer :: i,j
+ character(len=256) :: ml
+ ml = ''
+ j = 0
+ if (present (mnem_list)) then
+ do i = 1, size (mnem_list)
+ if (mnem_list(i) /= "") then
+ j = j + 1
+ if (j > len (ml)/8) call abort ()
+ ml((j-1)*8+1:(j-1)*8+8) = mnem_list(i)
+ end if
+ end do
+ end if
+ if (j > 0) print *, trim (ml(1:8))
+ end subroutine foo
+end program gfcbug99
diff --git a/gcc/testsuite/gfortran.dg/extends_10.f03 b/gcc/testsuite/gfortran.dg/extends_10.f03
new file mode 100644
index 00000000000..fbcaa7efc3f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/extends_10.f03
@@ -0,0 +1,34 @@
+! { dg-do compile }
+!
+! PR 42545: type extension: parent component has wrong accessibility
+!
+! Reported by Reinhold Bader <bader@lrz.de>
+
+module mo
+ implicit none
+ type :: t1
+ integer :: i = 1
+ end type
+ type, extends(t1) :: t2
+ private
+ real :: x = 2.0
+ end type
+ type :: u1
+ integer :: j = 1
+ end type
+ type, extends(u1) :: u2
+ real :: y = 2.0
+ end type
+ private :: u1
+end module
+
+program pr
+ use mo
+ implicit none
+ type(t2) :: a
+ type(u2) :: b
+ print *,a%t1%i
+ print *,b%u1%j ! { dg-error "is a PRIVATE component of" }
+end program
+
+! { dg-final { cleanup-modules "mo" } }
diff --git a/gcc/testsuite/gfortran.dg/extends_6.f03 b/gcc/testsuite/gfortran.dg/extends_6.f03
index 866fbbd1c50..a50a9b751b1 100644
--- a/gcc/testsuite/gfortran.dg/extends_6.f03
+++ b/gcc/testsuite/gfortran.dg/extends_6.f03
@@ -30,7 +30,7 @@ end module m
end type two
o_dt%day = 5 ! VALID but failed in first version of EXTENDS patch
- o_dt%yr = 5 ! { dg-error "All components of 'date' are PRIVATE" }
+ o_dt%yr = 5 ! { dg-error "is a PRIVATE component of" }
t = two(one = one(4), i = 5, r=4.4) ! { dg-error "has already been set" }
diff --git a/gcc/testsuite/gfortran.dg/interface_assignment_5.f90 b/gcc/testsuite/gfortran.dg/interface_assignment_5.f90
new file mode 100644
index 00000000000..8444dd0847e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/interface_assignment_5.f90
@@ -0,0 +1,49 @@
+! { dg-do compile }
+!
+! PR 42677: [4.5 Regression] Bogus Error: Ambiguous interfaces '...' in intrinsic assignment operator
+!
+! Contributed by Harald Anlauf <anlauf@gmx.de>
+
+module mod1
+ implicit none
+ type t_m
+ integer :: i = 0
+ end type t_m
+!------------------------------------------------------------------------------
+ interface assignment (=)
+ module procedure assign_m
+ end interface
+!------------------------------------------------------------------------------
+contains
+ subroutine assign_m (y, x)
+ type(t_m) ,intent(inout) :: y
+ type(t_m) ,intent(in) :: x
+ end subroutine assign_m
+end module mod1
+!==============================================================================
+module mod2
+ use mod1, only: t_m, assignment(=)
+ implicit none
+ type t_atm
+ integer :: k
+ end type t_atm
+!------------------------------------------------------------------------------
+ interface assignment(=)
+ module procedure assign_to_atm
+ end interface
+!------------------------------------------------------------------------------
+ interface
+ pure subroutine delete_m (x)
+ use mod1
+ type(t_m) ,intent(in) :: x
+ end subroutine delete_m
+ end interface
+!------------------------------------------------------------------------------
+contains
+ subroutine assign_to_atm (atm, r)
+ type(t_atm) ,intent(inout) :: atm
+ integer ,intent(in) :: r
+ end subroutine assign_to_atm
+end module mod2
+
+! { dg-final { cleanup-modules "mod1 mod2" } }
diff --git a/gcc/testsuite/gfortran.dg/private_type_6.f90 b/gcc/testsuite/gfortran.dg/private_type_6.f90
index 5e13ed53477..4af3f704f98 100644
--- a/gcc/testsuite/gfortran.dg/private_type_6.f90
+++ b/gcc/testsuite/gfortran.dg/private_type_6.f90
@@ -18,7 +18,7 @@ program foo_test
implicit none
TYPE(footype) :: foo
TYPE(bartype) :: foo2
- foo = footype(1) ! { dg-error "All components of 'footype' are PRIVATE" }
+ foo = footype(1) ! { dg-error "is a PRIVATE component" }
foo2 = bartype(1,2) ! { dg-error "is a PRIVATE component" }
foo2%dummy2 = 5 ! { dg-error "is a PRIVATE component" }
end program foo_test
diff --git a/gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_6.f90 b/gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_6.f90
new file mode 100644
index 00000000000..8898a597d53
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/proc_ptr_comp_pass_6.f90
@@ -0,0 +1,35 @@
+! { dg-do compile }
+! { dg-options "-fcheck=bounds" }
+!
+! PR 42804: ICE with -fcheck=bounds and type bound procedure call on array element
+!
+! Contributed by Ian Harvey <ian_harvey@bigpond.com>
+
+MODULE ModA
+ IMPLICIT NONE
+ TYPE, PUBLIC :: A
+ PROCEDURE(a_proc),pointer :: Proc
+ END TYPE A
+CONTAINS
+ SUBROUTINE a_proc(this, stat)
+ CLASS(A), INTENT(INOUT) :: this
+ INTEGER, INTENT(OUT) :: stat
+ WRITE (*, *) 'a_proc'
+ stat = 0
+ END SUBROUTINE a_proc
+END MODULE ModA
+
+PROGRAM ProgA
+ USE ModA
+ IMPLICIT NONE
+ INTEGER :: ierr
+ INTEGER :: i
+ TYPE(A), ALLOCATABLE :: arr(:)
+ ALLOCATE(arr(2))
+ DO i = 1, 2
+ arr(i)%proc => a_proc
+ CALL arr(i)%Proc(ierr)
+ END DO
+END PROGRAM ProgA
+
+! { dg-final { cleanup-modules "ModA" } }
diff --git a/gcc/testsuite/gfortran.dg/structure_constructor_8.f03 b/gcc/testsuite/gfortran.dg/structure_constructor_8.f03
index 520b52853d5..b86d0ecccaf 100644
--- a/gcc/testsuite/gfortran.dg/structure_constructor_8.f03
+++ b/gcc/testsuite/gfortran.dg/structure_constructor_8.f03
@@ -51,7 +51,7 @@ PROGRAM test
struct1 = haspriv_t (b = 2, a = 1) ! { dg-error "is a PRIVATE component" }
! This should fail as all components are private
- struct2 = allpriv_t (5) ! { dg-error "of 'allpriv_t' are PRIVATE" }
+ struct2 = allpriv_t (5) ! { dg-error "is a PRIVATE component" }
! This should fail as the type itself is private, and the expression should
! be deduced as call to an undefined function.
diff --git a/gcc/testsuite/gfortran.dg/typebound_call_12.f03 b/gcc/testsuite/gfortran.dg/typebound_call_12.f03
new file mode 100644
index 00000000000..afb0fda71a4
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/typebound_call_12.f03
@@ -0,0 +1,36 @@
+! { dg-do compile }
+! { dg-options "-fcheck=bounds" }
+!
+! PR 42804: ICE with -fcheck=bounds and type bound procedure call on array element
+!
+! Contributed by Ian Harvey <ian_harvey@bigpond.com>
+
+MODULE ModA
+ IMPLICIT NONE
+ PRIVATE
+ TYPE, PUBLIC :: A
+ CONTAINS
+ PROCEDURE :: Proc => a_proc
+ END TYPE A
+CONTAINS
+ SUBROUTINE a_proc(this, stat)
+ CLASS(A), INTENT(INOUT) :: this
+ INTEGER, INTENT(OUT) :: stat
+ WRITE (*, *) 'a_proc'
+ stat = 0
+ END SUBROUTINE a_proc
+END MODULE ModA
+
+PROGRAM ProgA
+ USE ModA
+ IMPLICIT NONE
+ INTEGER :: ierr
+ INTEGER :: i
+ TYPE(A), ALLOCATABLE :: arr(:)
+ ALLOCATE(arr(2))
+ DO i = 1, 2
+ CALL arr(i)%Proc(ierr)
+ END DO
+END PROGRAM ProgA
+
+! { dg-final { cleanup-modules "ModA" } }
diff --git a/gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f b/gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f
new file mode 100644
index 00000000000..2d1844b367a
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/vect/fast-math-mgrid-resid.f
@@ -0,0 +1,44 @@
+! { dg-do compile }
+! { dg-require-effective-target vect_double }
+! { dg-options "-O3 -ffast-math -fpredictive-commoning -ftree-vectorize -fdump-tree-optimized" }
+
+******* RESID COMPUTES THE RESIDUAL: R = V - AU
+*
+* THIS SIMPLE IMPLEMENTATION COSTS 27A + 4M PER RESULT, WHERE
+* A AND M DENOTE THE COSTS OF ADDITION (OR SUBTRACTION) AND
+* MULTIPLICATION, RESPECTIVELY. BY USING SEVERAL TWO-DIMENSIONAL
+* BUFFERS ONE CAN REDUCE THIS COST TO 13A + 4M IN THE GENERAL
+* CASE, OR 10A + 3M WHEN THE COEFFICIENT A(1) IS ZERO.
+*
+ SUBROUTINE RESID(U,V,R,N,A)
+ INTEGER N
+ REAL*8 U(N,N,N),V(N,N,N),R(N,N,N),A(0:3)
+ INTEGER I3, I2, I1
+C
+ DO 600 I3=2,N-1
+ DO 600 I2=2,N-1
+ DO 600 I1=2,N-1
+ 600 R(I1,I2,I3)=V(I1,I2,I3)
+ > -A(0)*( U(I1, I2, I3 ) )
+ > -A(1)*( U(I1-1,I2, I3 ) + U(I1+1,I2, I3 )
+ > + U(I1, I2-1,I3 ) + U(I1, I2+1,I3 )
+ > + U(I1, I2, I3-1) + U(I1, I2, I3+1) )
+ > -A(2)*( U(I1-1,I2-1,I3 ) + U(I1+1,I2-1,I3 )
+ > + U(I1-1,I2+1,I3 ) + U(I1+1,I2+1,I3 )
+ > + U(I1, I2-1,I3-1) + U(I1, I2+1,I3-1)
+ > + U(I1, I2-1,I3+1) + U(I1, I2+1,I3+1)
+ > + U(I1-1,I2, I3-1) + U(I1-1,I2, I3+1)
+ > + U(I1+1,I2, I3-1) + U(I1+1,I2, I3+1) )
+ > -A(3)*( U(I1-1,I2-1,I3-1) + U(I1+1,I2-1,I3-1)
+ > + U(I1-1,I2+1,I3-1) + U(I1+1,I2+1,I3-1)
+ > + U(I1-1,I2-1,I3+1) + U(I1+1,I2-1,I3+1)
+ > + U(I1-1,I2+1,I3+1) + U(I1+1,I2+1,I3+1) )
+C
+ RETURN
+ END
+! we want to check that predictive commoning did something on the
+! vectorized loop, which means we have to have exactly 13 vector
+! additions.
+! { dg-final { scan-tree-dump-times "vect_var\[^\\n\]*\\+ " 13 "optimized" } }
+! { dg-final { cleanup-tree-dump "vect" } }
+! { dg-final { cleanup-tree-dump "optimized" } }
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/pr42781.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/pr42781.f90
new file mode 100644
index 00000000000..95228506345
--- /dev/null
+++ b/gcc/testsuite/gfortran.fortran-torture/compile/pr42781.f90
@@ -0,0 +1,59 @@
+! ICE with gfortran 4.5 at -O1:
+!gfcbug98.f90: In function ‘convert_cof’:
+!gfcbug98.f90:36:0: internal compiler error: in pt_solutions_same_restrict_base,
+!at tree-ssa-structalias.c:5072
+module foo
+ implicit none
+ type t_time
+ integer :: secs = 0
+ end type t_time
+contains
+ elemental function time_cyyyymmddhh (cyyyymmddhh) result (time)
+ type (t_time) :: time
+ character(len=10),intent(in) :: cyyyymmddhh
+ end function time_cyyyymmddhh
+
+ function nf90_open(path, mode, ncid)
+ character(len = *), intent(in) :: path
+ integer, intent(in) :: mode
+ integer, intent(out) :: ncid
+ integer :: nf90_open
+ end function nf90_open
+end module foo
+!==============================================================================
+module gfcbug98
+ use foo
+ implicit none
+
+ type t_fileinfo
+ character(len=10) :: atime = ' '
+ end type t_fileinfo
+
+ type t_body
+ real :: bg(10)
+ end type t_body
+contains
+ subroutine convert_cof (ifile)
+ character(len=*) ,intent(in) :: ifile
+
+ character(len=5) :: version
+ type(t_fileinfo) :: gattr
+ type(t_time) :: atime
+ type(t_body),allocatable :: tmp_dat(:)
+ real ,allocatable :: BDA(:, :, :)
+
+ call open_input
+ call convert_data
+ contains
+ subroutine open_input
+ integer :: i,j
+ version = ''
+ j = nf90_open(ifile, 1, i)
+ end subroutine open_input
+ !--------------------------------------------------------------------------
+ subroutine convert_data
+ BDA(1,:,1) = tmp_dat(1)% bg(:)
+ atime = time_cyyyymmddhh (gattr% atime)
+ end subroutine convert_data
+ end subroutine convert_cof
+end module gfcbug98
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 51d4a2a313f..c7a6a63f6c6 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -1524,20 +1524,20 @@ option_affects_pch_p (int option, struct cl_option_state *state)
most targets, but completely right for very few. */
void *
-default_get_pch_validity (size_t *len)
+default_get_pch_validity (size_t *sz)
{
struct cl_option_state state;
size_t i;
char *result, *r;
- *len = 2;
+ *sz = 2;
if (targetm.check_pch_target_flags)
- *len += sizeof (target_flags);
+ *sz += sizeof (target_flags);
for (i = 0; i < cl_options_count; i++)
if (option_affects_pch_p (i, &state))
- *len += state.size;
+ *sz += state.size;
- result = r = XNEWVEC (char, *len);
+ result = r = XNEWVEC (char, *sz);
r[0] = flag_pic;
r[1] = flag_pie;
r += 2;
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 0a3d544eece..d9276981eea 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -6937,7 +6937,7 @@ gimple_execute_on_growing_pred (edge e)
{
basic_block bb = e->dest;
- if (phi_nodes (bb))
+ if (!gimple_seq_empty_p (phi_nodes (bb)))
reserve_phi_args_for_new_edge (bb);
}
@@ -6947,7 +6947,7 @@ gimple_execute_on_growing_pred (edge e)
static void
gimple_execute_on_shrinking_pred (edge e)
{
- if (phi_nodes (e->dest))
+ if (!gimple_seq_empty_p (phi_nodes (e->dest)))
remove_phi_args (e);
}
diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c
index 5904407a35b..201298dc535 100644
--- a/gcc/tree-cfgcleanup.c
+++ b/gcc/tree-cfgcleanup.c
@@ -875,7 +875,7 @@ merge_phi_nodes (void)
/* We have to feed into another basic block with PHI
nodes. */
- if (!phi_nodes (dest)
+ if (gimple_seq_empty_p (phi_nodes (dest))
/* We don't want to deal with a basic block with
abnormal edges. */
|| has_abnormal_incoming_edge_p (bb))
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c
index dbdd3237d5e..9f5a623b2fa 100644
--- a/gcc/tree-data-ref.c
+++ b/gcc/tree-data-ref.c
@@ -79,6 +79,7 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "ggc.h"
+#include "flags.h"
#include "tree.h"
/* These RTL headers are needed for basic-block.h. */
@@ -380,6 +381,19 @@ dump_data_dependence_relation (FILE *outf,
if (!ddr || DDR_ARE_DEPENDENT (ddr) == chrec_dont_know)
{
+ if (ddr)
+ {
+ dra = DDR_A (ddr);
+ drb = DDR_B (ddr);
+ if (dra)
+ dump_data_reference (outf, dra);
+ else
+ fprintf (outf, " (nil)\n");
+ if (drb)
+ dump_data_reference (outf, drb);
+ else
+ fprintf (outf, " (nil)\n");
+ }
fprintf (outf, " (don't know)\n)\n");
return;
}
@@ -631,6 +645,24 @@ split_constant_offset_1 (tree type, tree op0, enum tree_code code, tree op1,
return split_constant_offset_1 (type, var0, subcode, var1, var, off);
}
+ CASE_CONVERT:
+ {
+ /* We must not introduce undefined overflow, and we must not change the value.
+ Hence we're okay if the inner type doesn't overflow to start with
+ (pointer or signed), the outer type also is an integer or pointer
+ and the outer precision is at least as large as the inner. */
+ tree itype = TREE_TYPE (op0);
+ if ((POINTER_TYPE_P (itype)
+ || (INTEGRAL_TYPE_P (itype) && TYPE_OVERFLOW_UNDEFINED (itype)))
+ && TYPE_PRECISION (type) >= TYPE_PRECISION (itype)
+ && (POINTER_TYPE_P (type) || INTEGRAL_TYPE_P (type)))
+ {
+ split_constant_offset (op0, &var0, off);
+ *var = fold_convert (type, var0);
+ return true;
+ }
+ return false;
+ }
default:
return false;
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index d7e515a4d1b..e08842ca829 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -3310,6 +3310,12 @@ estimate_num_insns (gimple stmt, eni_weights *weights)
cost = weights->target_builtin_call_cost;
break;
+ /* Exception state returns or moves registers around. */
+ case BUILT_IN_EH_FILTER:
+ case BUILT_IN_EH_POINTER:
+ case BUILT_IN_EH_COPY_VALUES:
+ return 0;
+
default:
break;
}
diff --git a/gcc/tree-outof-ssa.c b/gcc/tree-outof-ssa.c
index a82cec824fd..32aa464948b 100644
--- a/gcc/tree-outof-ssa.c
+++ b/gcc/tree-outof-ssa.c
@@ -956,6 +956,8 @@ trivially_conflicts_p (basic_block bb, tree result, tree arg)
FOR_EACH_IMM_USE_FAST (use, imm_iter, result)
{
gimple use_stmt = USE_STMT (use);
+ if (is_gimple_debug (use_stmt))
+ continue;
/* Now, if there's a use of RESULT that lies outside this basic block,
then there surely is a conflict with ARG. */
if (gimple_bb (use_stmt) != bb)
diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c
index 78d45b88364..ae59cd9fe79 100644
--- a/gcc/tree-predcom.c
+++ b/gcc/tree-predcom.c
@@ -1180,6 +1180,7 @@ determine_roots_comp (struct loop *loop,
unsigned i;
dref a;
chain_p chain = NULL;
+ double_int last_ofs = double_int_zero;
/* Invariants are handled specially. */
if (comp->comp_step == RS_INVARIANT)
@@ -1194,13 +1195,20 @@ determine_roots_comp (struct loop *loop,
for (i = 0; VEC_iterate (dref, comp->refs, i, a); i++)
{
- if (!chain || !DR_IS_READ (a->ref))
+ if (!chain || !DR_IS_READ (a->ref)
+ || double_int_ucmp (uhwi_to_double_int (MAX_DISTANCE),
+ double_int_add (a->offset,
+ double_int_neg (last_ofs))) <= 0)
{
if (nontrivial_chain_p (chain))
- VEC_safe_push (chain_p, heap, *chains, chain);
+ {
+ add_looparound_copies (loop, chain);
+ VEC_safe_push (chain_p, heap, *chains, chain);
+ }
else
release_chain (chain);
chain = make_rooted_chain (a);
+ last_ofs = a->offset;
continue;
}
@@ -1338,9 +1346,11 @@ ref_at_iteration (struct loop *loop, tree ref, int iter)
else if (!INDIRECT_REF_P (ref))
return unshare_expr (ref);
- if (TREE_CODE (ref) == INDIRECT_REF)
+ if (INDIRECT_REF_P (ref))
{
- ret = build1 (INDIRECT_REF, TREE_TYPE (ref), NULL_TREE);
+ /* Take care for INDIRECT_REF and MISALIGNED_INDIRECT_REF at
+ the same time. */
+ ret = copy_node (ref);
idx = TREE_OPERAND (ref, 0);
idx_p = &TREE_OPERAND (ret, 0);
}
@@ -1879,7 +1889,6 @@ base_names_in_chain_on (struct loop *loop, tree name, tree var)
{
gimple stmt, phi;
imm_use_iterator iter;
- edge e;
SSA_NAME_VAR (name) = var;
@@ -1898,11 +1907,6 @@ base_names_in_chain_on (struct loop *loop, tree name, tree var)
if (!phi)
return;
- if (gimple_bb (phi) == loop->header)
- e = loop_latch_edge (loop);
- else
- e = single_pred_edge (gimple_bb (stmt));
-
name = PHI_RESULT (phi);
SSA_NAME_VAR (name) = var;
}
@@ -2205,11 +2209,17 @@ reassociate_to_the_same_stmt (tree name1, tree name2)
/* Insert the new statement combining NAME1 and NAME2 before S1, and
combine it with the rhs of S1. */
var = create_tmp_var (type, "predreastmp");
+ if (TREE_CODE (type) == COMPLEX_TYPE
+ || TREE_CODE (type) == VECTOR_TYPE)
+ DECL_GIMPLE_REG_P (var) = 1;
add_referenced_var (var);
new_name = make_ssa_name (var, NULL);
new_stmt = gimple_build_assign_with_ops (code, new_name, name1, name2);
var = create_tmp_var (type, "predreastmp");
+ if (TREE_CODE (type) == COMPLEX_TYPE
+ || TREE_CODE (type) == VECTOR_TYPE)
+ DECL_GIMPLE_REG_P (var) = 1;
add_referenced_var (var);
tmp_name = make_ssa_name (var, NULL);
diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c
index cdb64323b41..4e3499aa6e1 100644
--- a/gcc/tree-ssa-dce.c
+++ b/gcc/tree-ssa-dce.c
@@ -917,27 +917,6 @@ remove_dead_phis (basic_block bb)
return something_changed;
}
-/* Find first live post dominator of BB. */
-
-static basic_block
-get_live_post_dom (basic_block bb)
-{
- basic_block post_dom_bb;
-
-
- /* The post dominance info has to be up-to-date. */
- gcc_assert (dom_info_state (CDI_POST_DOMINATORS) == DOM_OK);
-
- /* Get the immediate post dominator of bb. */
- post_dom_bb = get_immediate_dominator (CDI_POST_DOMINATORS, bb);
- /* And look for first live one. */
- while (post_dom_bb != EXIT_BLOCK_PTR
- && !TEST_BIT (bb_contains_live_stmts, post_dom_bb->index))
- post_dom_bb = get_immediate_dominator (CDI_POST_DOMINATORS, post_dom_bb);
-
- return post_dom_bb;
-}
-
/* Forward edge E to respective POST_DOM_BB and update PHIs. */
static edge
@@ -958,13 +937,12 @@ forward_edge_to_pdom (edge e, basic_block post_dom_bb)
if (e2 != e)
return e2;
- if (phi_nodes (post_dom_bb))
+ if (!gimple_seq_empty_p (phi_nodes (post_dom_bb)))
{
/* We are sure that for every live PHI we are seeing control dependent BB.
- This means that we can look up the end of control dependent path leading
- to the PHI itself. */
+ This means that we can pick any edge to duplicate PHI args from. */
FOR_EACH_EDGE (e2, ei, post_dom_bb->preds)
- if (e2 != e && dominated_by_p (CDI_POST_DOMINATORS, e->src, e2->src))
+ if (e2 != e)
break;
for (gsi = gsi_start_phis (post_dom_bb); !gsi_end_p (gsi);)
{
@@ -972,40 +950,27 @@ forward_edge_to_pdom (edge e, basic_block post_dom_bb)
tree op;
source_location locus;
- /* Dead PHI do not imply control dependency. */
- if (!gimple_plf (phi, STMT_NECESSARY)
- && is_gimple_reg (gimple_phi_result (phi)))
- {
- gsi_next (&gsi);
- continue;
- }
- if (gimple_phi_arg_def (phi, e->dest_idx))
- {
- gsi_next (&gsi);
- continue;
- }
-
- /* We didn't find edge to update. This can happen for PHIs on virtuals
- since there is no control dependency relation on them. We are lost
- here and must force renaming of the symbol. */
+ /* PHIs for virtuals have no control dependency relation on them.
+ We are lost here and must force renaming of the symbol. */
if (!is_gimple_reg (gimple_phi_result (phi)))
{
mark_virtual_phi_result_for_renaming (phi);
remove_phi_node (&gsi, true);
continue;
}
- if (!e2)
- {
- op = gimple_phi_arg_def (phi, e->dest_idx == 0 ? 1 : 0);
- locus = gimple_phi_arg_location (phi, e->dest_idx == 0 ? 1 : 0);
- }
- else
+
+ /* Dead PHI do not imply control dependency. */
+ if (!gimple_plf (phi, STMT_NECESSARY))
{
- op = gimple_phi_arg_def (phi, e2->dest_idx);
- locus = gimple_phi_arg_location (phi, e2->dest_idx);
+ gsi_next (&gsi);
+ continue;
}
+
+ op = gimple_phi_arg_def (phi, e2->dest_idx);
+ locus = gimple_phi_arg_location (phi, e2->dest_idx);
add_phi_arg (phi, op, e, locus);
- gcc_assert (e2 || degenerate_phi_p (phi));
+ /* The resulting PHI if not dead can only be degenerate. */
+ gcc_assert (degenerate_phi_p (phi));
gsi_next (&gsi);
}
}
@@ -1041,7 +1006,7 @@ remove_dead_stmt (gimple_stmt_iterator *i, basic_block bb)
edge e, e2;
edge_iterator ei;
- post_dom_bb = get_live_post_dom (bb);
+ post_dom_bb = get_immediate_dominator (CDI_POST_DOMINATORS, bb);
e = find_edge (bb, post_dom_bb);
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index cafebe67770..c1e5cd7c701 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -1823,7 +1823,7 @@ phi_translate_set (bitmap_set_t dest, bitmap_set_t set, basic_block pred,
pre_expr expr;
int i;
- if (!phi_nodes (phiblock))
+ if (gimple_seq_empty_p (phi_nodes (phiblock)))
{
bitmap_set_copy (dest, set);
return;
@@ -2269,14 +2269,14 @@ compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge)
goto maybe_dump_sets;
}
- if (phi_nodes (first))
+ if (!gimple_seq_empty_p (phi_nodes (first)))
phi_translate_set (ANTIC_OUT, ANTIC_IN (first), block, first);
else
bitmap_set_copy (ANTIC_OUT, ANTIC_IN (first));
for (i = 0; VEC_iterate (basic_block, worklist, i, bprime); i++)
{
- if (phi_nodes (bprime))
+ if (!gimple_seq_empty_p (phi_nodes (bprime)))
{
bitmap_set_t tmp = bitmap_set_new ();
phi_translate_set (tmp, ANTIC_IN (bprime), block, bprime);
@@ -2426,7 +2426,7 @@ compute_partial_antic_aux (basic_block block,
FOR_EACH_EXPR_ID_IN_SET (ANTIC_IN (bprime), i, bi)
bitmap_value_insert_into_set (PA_OUT,
expression_for_id (i));
- if (phi_nodes (bprime))
+ if (!gimple_seq_empty_p (phi_nodes (bprime)))
{
bitmap_set_t pa_in = bitmap_set_new ();
phi_translate_set (pa_in, PA_IN (bprime), block, bprime);
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index 753eefee909..3db28745f1a 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -4776,18 +4776,19 @@ set_uids_in_ptset (bitmap into, bitmap from, struct pt_solution *pt)
/* Compute the points-to solution *PT for the variable VI. */
static void
-find_what_var_points_to (varinfo_t vi, struct pt_solution *pt)
+find_what_var_points_to (varinfo_t orig_vi, struct pt_solution *pt)
{
unsigned int i;
bitmap_iterator bi;
bitmap finished_solution;
bitmap result;
+ varinfo_t vi;
memset (pt, 0, sizeof (struct pt_solution));
/* This variable may have been collapsed, let's get the real
variable. */
- vi = get_varinfo (find (vi->id));
+ vi = get_varinfo (find (orig_vi->id));
/* Translate artificial variables into SSA_NAME_PTR_INFO
attributes. */
@@ -4822,7 +4823,7 @@ find_what_var_points_to (varinfo_t vi, struct pt_solution *pt)
/* Instead of doing extra work, simply do not create
elaborate points-to information for pt_anything pointers. */
if (pt->anything
- && (vi->is_artificial_var
+ && (orig_vi->is_artificial_var
|| !pt->vars_contains_restrict))
return;
diff --git a/gcc/tree-ssa-uncprop.c b/gcc/tree-ssa-uncprop.c
index 8e7715431f4..96c08d3c8f2 100644
--- a/gcc/tree-ssa-uncprop.c
+++ b/gcc/tree-ssa-uncprop.c
@@ -456,7 +456,7 @@ uncprop_into_successor_phis (basic_block bb)
/* If there are no PHI nodes in this destination, then there is
no sense in recording any equivalences. */
- if (!phis)
+ if (gimple_seq_empty_p (phis))
continue;
/* Record any equivalency associated with E. */
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 89918535372..37ae9b5e3bf 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -294,7 +294,7 @@ vect_update_interleaving_chain (struct data_reference *drb,
static bool
vect_equal_offsets (tree offset1, tree offset2)
{
- bool res0, res1;
+ bool res;
STRIP_NOPS (offset1);
STRIP_NOPS (offset2);
@@ -303,16 +303,19 @@ vect_equal_offsets (tree offset1, tree offset2)
return true;
if (TREE_CODE (offset1) != TREE_CODE (offset2)
- || !BINARY_CLASS_P (offset1)
- || !BINARY_CLASS_P (offset2))
+ || (!BINARY_CLASS_P (offset1) && !UNARY_CLASS_P (offset1)))
return false;
- res0 = vect_equal_offsets (TREE_OPERAND (offset1, 0),
- TREE_OPERAND (offset2, 0));
- res1 = vect_equal_offsets (TREE_OPERAND (offset1, 1),
- TREE_OPERAND (offset2, 1));
+ res = vect_equal_offsets (TREE_OPERAND (offset1, 0),
+ TREE_OPERAND (offset2, 0));
- return (res0 && res1);
+ if (!res || !BINARY_CLASS_P (offset1))
+ return res;
+
+ res = vect_equal_offsets (TREE_OPERAND (offset1, 1),
+ TREE_OPERAND (offset2, 1));
+
+ return res;
}
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c
index a0d3ce57cab..f4056b05891 100644
--- a/gcc/tree-vect-loop-manip.c
+++ b/gcc/tree-vect-loop-manip.c
@@ -1961,7 +1961,8 @@ vect_do_peeling_for_loop_bound (loop_vec_info loop_vinfo, tree *ratio,
use TYPE_VECTOR_SUBPARTS. */
static tree
-vect_gen_niters_for_prolog_loop (loop_vec_info loop_vinfo, tree loop_niters)
+vect_gen_niters_for_prolog_loop (loop_vec_info loop_vinfo, tree loop_niters,
+ tree *wide_prolog_niters)
{
struct data_reference *dr = LOOP_VINFO_UNALIGNED_DR (loop_vinfo);
struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
@@ -2045,6 +2046,19 @@ vect_gen_niters_for_prolog_loop (loop_vec_info loop_vinfo, tree loop_niters)
add_referenced_var (var);
stmts = NULL;
iters_name = force_gimple_operand (iters, &stmts, false, var);
+ if (types_compatible_p (sizetype, niters_type))
+ *wide_prolog_niters = iters_name;
+ else
+ {
+ gimple_seq seq = NULL;
+ tree wide_iters = fold_convert (sizetype, iters);
+ var = create_tmp_var (sizetype, "prolog_loop_niters");
+ add_referenced_var (var);
+ *wide_prolog_niters = force_gimple_operand (wide_iters, &seq, false,
+ var);
+ if (seq)
+ gimple_seq_add_seq (&stmts, seq);
+ }
/* Insert stmt on loop preheader edge. */
if (stmts)
@@ -2115,6 +2129,7 @@ vect_do_peeling_for_alignment (loop_vec_info loop_vinfo)
struct loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
tree niters_of_prolog_loop, ni_name;
tree n_iters;
+ tree wide_prolog_niters;
struct loop *new_loop;
unsigned int th = 0;
int min_profitable_iters;
@@ -2125,7 +2140,8 @@ vect_do_peeling_for_alignment (loop_vec_info loop_vinfo)
initialize_original_copy_tables ();
ni_name = vect_build_loop_niters (loop_vinfo, NULL);
- niters_of_prolog_loop = vect_gen_niters_for_prolog_loop (loop_vinfo, ni_name);
+ niters_of_prolog_loop = vect_gen_niters_for_prolog_loop (loop_vinfo, ni_name,
+ &wide_prolog_niters);
/* Get profitability threshold for vectorized loop. */
@@ -2150,7 +2166,7 @@ vect_do_peeling_for_alignment (loop_vec_info loop_vinfo)
TREE_TYPE (n_iters), n_iters, niters_of_prolog_loop);
/* Update the init conditions of the access functions of all data refs. */
- vect_update_inits_of_drs (loop_vinfo, niters_of_prolog_loop);
+ vect_update_inits_of_drs (loop_vinfo, wide_prolog_niters);
/* After peeling we have to reset scalar evolution analyzer. */
scev_reset ();
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index f160cb458b4..9e17eb36670 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -981,7 +981,7 @@ vect_analyze_loop_form (struct loop *loop)
before the loop if needed), where the loop header contains all the
executable statements, and the latch is empty. */
if (!empty_block_p (loop->latch)
- || phi_nodes (loop->latch))
+ || !gimple_seq_empty_p (phi_nodes (loop->latch)))
{
if (vect_print_dump_info (REPORT_BAD_FORM_LOOPS))
fprintf (vect_dump, "not vectorized: unexpected loop form.");
diff --git a/gcc/tree.c b/gcc/tree.c
index 7fa7649d2f9..5d44841769f 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -1983,6 +1983,18 @@ fields_length (const_tree type)
return count;
}
+/* Returns the first FIELD_DECL in the TYPE_FIELDS of the RECORD_TYPE or
+ UNION_TYPE TYPE, or NULL_TREE if none. */
+
+tree
+first_field (const_tree type)
+{
+ tree t = TYPE_FIELDS (type);
+ while (t && TREE_CODE (t) != FIELD_DECL)
+ t = TREE_CHAIN (t);
+ return t;
+}
+
/* Concatenate two chains of nodes (chained through TREE_CHAIN)
by modifying the last node in chain 1 to point to chain 2.
This is the Lisp primitive `nconc'. */
diff --git a/gcc/tree.def b/gcc/tree.def
index 60ac1ade865..cb36f40f874 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -567,11 +567,11 @@ DEFTREECODE (WITH_CLEANUP_EXPR, "with_cleanup_expr", tcc_expression, 1)
BLKmode, because it will not be forced out of memory. */
DEFTREECODE (CLEANUP_POINT_EXPR, "cleanup_point_expr", tcc_expression, 1)
-/* The following two codes are used in languages that have types where
- some field in an object of the type contains a value that is used in
- the computation of another field's offset or size and/or the size of
- the type. The positions and/or sizes of fields can vary from object
- to object of the same type or even for one and the same object within
+/* The following code is used in languages that have types where some
+ field in an object of the type contains a value that is used in the
+ computation of another field's offset or size and/or the size of the
+ type. The positions and/or sizes of fields can vary from object to
+ object of the same type or even for one and the same object within
its scope.
Record types with discriminants in Ada or schema types in Pascal are
diff --git a/gcc/tree.h b/gcc/tree.h
index a0e1f677761..f5827d59f89 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -2251,16 +2251,18 @@ extern enum machine_mode vector_type_mode (const_tree);
#define TYPE_NEEDS_CONSTRUCTING(NODE) \
(TYPE_CHECK (NODE)->type.needs_constructing_flag)
-/* Indicates that objects of this type (a UNION_TYPE), should be passed
- the same way that the first union alternative would be passed. */
-#define TYPE_TRANSPARENT_UNION(NODE) \
- (UNION_TYPE_CHECK (NODE)->type.transparent_union_flag)
+/* Indicates that a UNION_TYPE object should be passed the same way that
+ the first union alternative would be passed, or that a RECORD_TYPE
+ object should be passed the same way that the first (and only) member
+ would be passed. */
+#define TYPE_TRANSPARENT_AGGR(NODE) \
+ (RECORD_OR_UNION_CHECK (NODE)->type.transparent_aggr_flag)
/* For an ARRAY_TYPE, indicates that it is not permitted to take the
address of a component of the type. This is the counterpart of
DECL_NONADDRESSABLE_P for arrays, see the definition of this flag. */
#define TYPE_NONALIASED_COMPONENT(NODE) \
- (ARRAY_TYPE_CHECK (NODE)->type.transparent_union_flag)
+ (ARRAY_TYPE_CHECK (NODE)->type.transparent_aggr_flag)
/* Indicated that objects of this type should be laid out in as
compact a way as possible. */
@@ -2285,7 +2287,7 @@ struct GTY(()) tree_type {
unsigned int precision : 10;
unsigned no_force_blk_flag : 1;
unsigned needs_constructing_flag : 1;
- unsigned transparent_union_flag : 1;
+ unsigned transparent_aggr_flag : 1;
unsigned restrict_flag : 1;
unsigned contains_placeholder_bits : 2;
@@ -4360,6 +4362,10 @@ extern int list_length (const_tree);
extern int fields_length (const_tree);
+/* Returns the first FIELD_DECL in a type. */
+
+extern tree first_field (const_tree);
+
/* Given an initializer INIT, return TRUE if INIT is zero or some
aggregate of zeros. Otherwise return FALSE. */
diff --git a/gcc/unwind-dw2.c b/gcc/unwind-dw2.c
index 28373c20bd8..3cf3189bb4f 100644
--- a/gcc/unwind-dw2.c
+++ b/gcc/unwind-dw2.c
@@ -1,6 +1,6 @@
/* DWARF2 exception handling and frame unwind runtime interface routines.
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
- 2008, 2009 Free Software Foundation, Inc.
+ 2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of GCC.
@@ -765,7 +765,7 @@ execute_stack_op (const unsigned char *op_ptr, const unsigned char *op_end,
result = second - first;
break;
case DW_OP_mod:
- result = (_Unwind_Sword) second % (_Unwind_Sword) first;
+ result = second % first;
break;
case DW_OP_mul:
result = second * first;
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index e5f95d97fcf..79e8d560895 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -106,9 +106,17 @@
#include "expr.h"
#include "timevar.h"
#include "tree-pass.h"
+#include "tree-flow.h"
#include "cselib.h"
#include "target.h"
+/* var-tracking.c assumes that tree code with the same value as VALUE rtx code
+ has no chance to appear in REG_EXPR/MEM_EXPRs and isn't a decl.
+ Currently the value is the same as IDENTIFIER_NODE, which has such
+ a property. If this compile time assertion ever fails, make sure that
+ the new tree code that equals (int) VALUE has the same property. */
+extern char check_value_val[(int) VALUE == (int) IDENTIFIER_NODE ? 1 : -1];
+
/* Type of micro operation. */
enum micro_operation_type
{
@@ -446,8 +454,8 @@ static bool compute_bb_dataflow (basic_block);
static void vt_find_locations (void);
static void dump_attrs_list (attrs);
-static int dump_variable_slot (void **, void *);
-static void dump_variable (variable);
+static int dump_var_slot (void **, void *);
+static void dump_var (variable);
static void dump_vars (htab_t);
static void dump_dataflow_set (dataflow_set *);
static void dump_dataflow_sets (void);
@@ -722,26 +730,7 @@ adjust_stack_reference (rtx mem, HOST_WIDE_INT adjustment)
static inline bool
dv_is_decl_p (decl_or_value dv)
{
- if (!dv)
- return true;
-
- /* Make sure relevant codes don't overlap. */
- switch ((int)TREE_CODE ((tree)dv))
- {
- case (int)VAR_DECL:
- case (int)PARM_DECL:
- case (int)RESULT_DECL:
- case (int)FUNCTION_DECL:
- case (int)DEBUG_EXPR_DECL:
- case (int)COMPONENT_REF:
- return true;
-
- case (int)VALUE:
- return false;
-
- default:
- gcc_unreachable ();
- }
+ return !dv || (int) TREE_CODE ((tree) dv) != (int) VALUE;
}
/* Return true if a decl_or_value is a VALUE rtl. */
@@ -755,7 +744,9 @@ dv_is_value_p (decl_or_value dv)
static inline tree
dv_as_decl (decl_or_value dv)
{
+#ifdef ENABLE_CHECKING
gcc_assert (dv_is_decl_p (dv));
+#endif
return (tree) dv;
}
@@ -763,7 +754,9 @@ dv_as_decl (decl_or_value dv)
static inline rtx
dv_as_value (decl_or_value dv)
{
+#ifdef ENABLE_CHECKING
gcc_assert (dv_is_value_p (dv));
+#endif
return (rtx)dv;
}
@@ -809,7 +802,9 @@ dv_from_decl (tree decl)
{
decl_or_value dv;
dv = decl;
+#ifdef ENABLE_CHECKING
gcc_assert (dv_is_decl_p (dv));
+#endif
return dv;
}
@@ -819,7 +814,9 @@ dv_from_value (rtx value)
{
decl_or_value dv;
dv = value;
+#ifdef ENABLE_CHECKING
gcc_assert (dv_is_value_p (dv));
+#endif
return dv;
}
@@ -3716,13 +3713,32 @@ find_mem_expr_in_1pdv (tree expr, rtx val, htab_t vars)
return where;
}
+/* Return TRUE if the value of MEM may vary across a call. */
+
+static bool
+mem_dies_at_call (rtx mem)
+{
+ tree expr = MEM_EXPR (mem);
+ tree decl;
+
+ if (!expr)
+ return true;
+
+ decl = get_base_address (expr);
+
+ if (!decl)
+ return true;
+
+ if (!DECL_P (decl))
+ return true;
+
+ return (may_be_aliased (decl)
+ || (!TREE_READONLY (decl) && is_global_var (decl)));
+}
+
/* Remove all MEMs from the location list of a hash table entry for a
one-part variable, except those whose MEM attributes map back to
- the variable itself, directly or within a VALUE.
-
- ??? We could also preserve MEMs that reference stack slots that are
- annotated as not addressable. This is arguably even more reliable
- than the current heuristic. */
+ the variable itself, directly or within a VALUE. */
static int
dataflow_set_preserve_mem_locs (void **slot, void *data)
@@ -3744,16 +3760,18 @@ dataflow_set_preserve_mem_locs (void **slot, void *data)
{
for (loc = var->var_part[0].loc_chain; loc; loc = loc->next)
{
- /* We want to remove a MEM that doesn't refer to DECL. */
+ /* We want to remove dying MEMs that doesn't refer to
+ DECL. */
if (GET_CODE (loc->loc) == MEM
&& (MEM_EXPR (loc->loc) != decl
- || MEM_OFFSET (loc->loc)))
+ || MEM_OFFSET (loc->loc))
+ && !mem_dies_at_call (loc->loc))
break;
- /* We want to move here a MEM that does refer to DECL. */
+ /* We want to move here MEMs that do refer to DECL. */
else if (GET_CODE (loc->loc) == VALUE
&& find_mem_expr_in_1pdv (decl, loc->loc,
shared_hash_htab (set->vars)))
- break;
+ break;
}
if (!loc)
@@ -3790,7 +3808,8 @@ dataflow_set_preserve_mem_locs (void **slot, void *data)
if (GET_CODE (loc->loc) != MEM
|| (MEM_EXPR (loc->loc) == decl
- && MEM_OFFSET (loc->loc) == 0))
+ && MEM_OFFSET (loc->loc) == 0)
+ || !mem_dies_at_call (loc->loc))
{
if (old_loc != loc->loc && emit_notes)
{
@@ -3838,7 +3857,8 @@ dataflow_set_remove_mem_locs (void **slot, void *data)
if (var->refcount > 1 || shared_hash_shared (set->vars))
{
for (loc = var->var_part[0].loc_chain; loc; loc = loc->next)
- if (GET_CODE (loc->loc) == MEM)
+ if (GET_CODE (loc->loc) == MEM
+ && mem_dies_at_call (loc->loc))
break;
if (!loc)
@@ -3852,7 +3872,8 @@ dataflow_set_remove_mem_locs (void **slot, void *data)
for (locp = &var->var_part[0].loc_chain, loc = *locp;
loc; loc = *locp)
{
- if (GET_CODE (loc->loc) != MEM)
+ if (GET_CODE (loc->loc) != MEM
+ || !mem_dies_at_call (loc->loc))
{
locp = &loc->next;
continue;
@@ -4034,7 +4055,7 @@ dataflow_set_different_1 (void **slot, void *data)
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "dataflow difference found: removal of:\n");
- dump_variable (var1);
+ dump_var (var1);
}
/* Stop traversing the hash table. */
@@ -4048,8 +4069,8 @@ dataflow_set_different_1 (void **slot, void *data)
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "dataflow difference found: old and new follow:\n");
- dump_variable (var1);
- dump_variable (var2);
+ dump_var (var1);
+ dump_var (var2);
}
/* Stop traversing the hash table. */
@@ -4405,7 +4426,6 @@ static enum micro_operation_type
use_type (rtx loc, struct count_use_info *cui, enum machine_mode *modep)
{
tree expr;
- cselib_val *val;
if (cui && cui->sets)
{
@@ -4426,19 +4446,24 @@ use_type (rtx loc, struct count_use_info *cui, enum machine_mode *modep)
return MO_CLOBBER;
}
- if ((REG_P (loc) || MEM_P (loc))
- && (val = find_use_val (loc, GET_MODE (loc), cui)))
+ if (REG_P (loc) || MEM_P (loc))
{
if (modep)
*modep = GET_MODE (loc);
if (cui->store_p)
{
if (REG_P (loc)
- || cselib_lookup (XEXP (loc, 0), GET_MODE (loc), 0))
+ || (find_use_val (loc, GET_MODE (loc), cui)
+ && cselib_lookup (XEXP (loc, 0), GET_MODE (loc), 0)))
return MO_VAL_SET;
}
- else if (!cselib_preserved_value_p (val))
- return MO_VAL_USE;
+ else
+ {
+ cselib_val *val = find_use_val (loc, GET_MODE (loc), cui);
+
+ if (val && !cselib_preserved_value_p (val))
+ return MO_VAL_USE;
+ }
}
}
@@ -4559,7 +4584,8 @@ count_uses (rtx *ploc, void *cuip)
cselib_preserve_value (val);
}
else
- gcc_assert (mopt == MO_VAL_LOC);
+ gcc_assert (mopt == MO_VAL_LOC
+ || (mopt == MO_VAL_SET && cui->store_p));
break;
@@ -4947,6 +4973,9 @@ add_stores (rtx loc, const_rtx expr, void *cuip)
v = find_use_val (oloc, mode, cui);
+ if (!v)
+ goto log_and_return;
+
resolve = preserve = !cselib_preserved_value_p (v);
nloc = replace_expr_with_values (oloc);
@@ -5703,11 +5732,11 @@ dump_attrs_list (attrs list)
/* Print the information about variable *SLOT to dump file. */
static int
-dump_variable_slot (void **slot, void *data ATTRIBUTE_UNUSED)
+dump_var_slot (void **slot, void *data ATTRIBUTE_UNUSED)
{
variable var = (variable) *slot;
- dump_variable (var);
+ dump_var (var);
/* Continue traversing the hash table. */
return 1;
@@ -5716,7 +5745,7 @@ dump_variable_slot (void **slot, void *data ATTRIBUTE_UNUSED)
/* Print the information about variable VAR to dump file. */
static void
-dump_variable (variable var)
+dump_var (variable var)
{
int i;
location_chain node;
@@ -5763,7 +5792,7 @@ dump_vars (htab_t vars)
if (htab_elements (vars) > 0)
{
fprintf (dump_file, "Variables:\n");
- htab_traverse (vars, dump_variable_slot, NULL);
+ htab_traverse (vars, dump_var_slot, NULL);
}
}
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 7ed59055745..310647e7e2b 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -1,7 +1,7 @@
/* Output variables, constants and external declarations, for GNU compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
- 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
- Free Software Foundation, Inc.
+ 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
+ 2010 Free Software Foundation, Inc.
This file is part of GCC.
@@ -4093,6 +4093,9 @@ constructor_static_from_elts_p (const_tree ctor)
&& !VEC_empty (constructor_elt, CONSTRUCTOR_ELTS (ctor)));
}
+static tree initializer_constant_valid_p_1 (tree value, tree endtype,
+ tree *cache);
+
/* A subroutine of initializer_constant_valid_p. VALUE is a MINUS_EXPR,
PLUS_EXPR or POINTER_PLUS_EXPR. This looks for cases of VALUE
which are valid when ENDTYPE is an integer of any size; in
@@ -4102,7 +4105,7 @@ constructor_static_from_elts_p (const_tree ctor)
returns NULL. */
static tree
-narrowing_initializer_constant_valid_p (tree value, tree endtype)
+narrowing_initializer_constant_valid_p (tree value, tree endtype, tree *cache)
{
tree op0, op1;
@@ -4141,11 +4144,14 @@ narrowing_initializer_constant_valid_p (tree value, tree endtype)
op1 = inner;
}
- op0 = initializer_constant_valid_p (op0, endtype);
- op1 = initializer_constant_valid_p (op1, endtype);
+ op0 = initializer_constant_valid_p_1 (op0, endtype, cache);
+ if (!op0)
+ return NULL_TREE;
+ op1 = initializer_constant_valid_p_1 (op1, endtype,
+ cache ? cache + 2 : NULL);
/* Both initializers must be known. */
- if (op0 && op1)
+ if (op1)
{
if (op0 == op1
&& (op0 == null_pointer_node
@@ -4166,7 +4172,8 @@ narrowing_initializer_constant_valid_p (tree value, tree endtype)
return NULL_TREE;
}
-/* Return nonzero if VALUE is a valid constant-valued expression
+/* Helper function of initializer_constant_valid_p.
+ Return nonzero if VALUE is a valid constant-valued expression
for use in initializing a static variable; one that can be an
element of a "constant" initializer.
@@ -4174,10 +4181,12 @@ narrowing_initializer_constant_valid_p (tree value, tree endtype)
if it is relocatable, return the variable that determines the relocation.
We assume that VALUE has been folded as much as possible;
therefore, we do not need to check for such things as
- arithmetic-combinations of integers. */
+ arithmetic-combinations of integers.
-tree
-initializer_constant_valid_p (tree value, tree endtype)
+ Use CACHE (pointer to 2 tree values) for caching if non-NULL. */
+
+static tree
+initializer_constant_valid_p_1 (tree value, tree endtype, tree *cache)
{
tree ret;
@@ -4190,18 +4199,33 @@ initializer_constant_valid_p (tree value, tree endtype)
tree elt;
bool absolute = true;
+ if (cache && cache[0] == value)
+ return cache[1];
FOR_EACH_CONSTRUCTOR_VALUE (CONSTRUCTOR_ELTS (value), idx, elt)
{
tree reloc;
- reloc = initializer_constant_valid_p (elt, TREE_TYPE (elt));
+ reloc = initializer_constant_valid_p_1 (elt, TREE_TYPE (elt),
+ NULL);
if (!reloc)
- return NULL_TREE;
+ {
+ if (cache)
+ {
+ cache[0] = value;
+ cache[1] = NULL_TREE;
+ }
+ return NULL_TREE;
+ }
if (reloc != null_pointer_node)
absolute = false;
}
/* For a non-absolute relocation, there is no single
variable that can be "the variable that determines the
relocation." */
+ if (cache)
+ {
+ cache[0] = value;
+ cache[1] = absolute ? null_pointer_node : error_mark_node;
+ }
return absolute ? null_pointer_node : error_mark_node;
}
@@ -4241,7 +4265,8 @@ initializer_constant_valid_p (tree value, tree endtype)
}
case NON_LVALUE_EXPR:
- return initializer_constant_valid_p (TREE_OPERAND (value, 0), endtype);
+ return initializer_constant_valid_p_1 (TREE_OPERAND (value, 0),
+ endtype, cache);
case VIEW_CONVERT_EXPR:
{
@@ -4256,13 +4281,13 @@ initializer_constant_valid_p (tree value, tree endtype)
if (AGGREGATE_TYPE_P (src_type) && !AGGREGATE_TYPE_P (dest_type))
{
if (TYPE_MODE (endtype) == TYPE_MODE (dest_type))
- return initializer_constant_valid_p (src, endtype);
+ return initializer_constant_valid_p_1 (src, endtype, cache);
else
return NULL_TREE;
}
/* Allow all other kinds of view-conversion. */
- return initializer_constant_valid_p (src, endtype);
+ return initializer_constant_valid_p_1 (src, endtype, cache);
}
CASE_CONVERT:
@@ -4277,18 +4302,18 @@ initializer_constant_valid_p (tree value, tree endtype)
|| (FLOAT_TYPE_P (dest_type) && FLOAT_TYPE_P (src_type))
|| (TREE_CODE (dest_type) == OFFSET_TYPE
&& TREE_CODE (src_type) == OFFSET_TYPE))
- return initializer_constant_valid_p (src, endtype);
+ return initializer_constant_valid_p_1 (src, endtype, cache);
/* Allow length-preserving conversions between integer types. */
if (INTEGRAL_TYPE_P (dest_type) && INTEGRAL_TYPE_P (src_type)
&& (TYPE_PRECISION (dest_type) == TYPE_PRECISION (src_type)))
- return initializer_constant_valid_p (src, endtype);
+ return initializer_constant_valid_p_1 (src, endtype, cache);
/* Allow conversions between other integer types only if
explicit value. */
if (INTEGRAL_TYPE_P (dest_type) && INTEGRAL_TYPE_P (src_type))
{
- tree inner = initializer_constant_valid_p (src, endtype);
+ tree inner = initializer_constant_valid_p_1 (src, endtype, cache);
if (inner == null_pointer_node)
return null_pointer_node;
break;
@@ -4297,7 +4322,7 @@ initializer_constant_valid_p (tree value, tree endtype)
/* Allow (int) &foo provided int is as wide as a pointer. */
if (INTEGRAL_TYPE_P (dest_type) && POINTER_TYPE_P (src_type)
&& (TYPE_PRECISION (dest_type) >= TYPE_PRECISION (src_type)))
- return initializer_constant_valid_p (src, endtype);
+ return initializer_constant_valid_p_1 (src, endtype, cache);
/* Likewise conversions from int to pointers, but also allow
conversions from 0. */
@@ -4311,14 +4336,14 @@ initializer_constant_valid_p (tree value, tree endtype)
if (integer_zerop (src))
return null_pointer_node;
else if (TYPE_PRECISION (dest_type) <= TYPE_PRECISION (src_type))
- return initializer_constant_valid_p (src, endtype);
+ return initializer_constant_valid_p_1 (src, endtype, cache);
}
/* Allow conversions to struct or union types if the value
inside is okay. */
if (TREE_CODE (dest_type) == RECORD_TYPE
|| TREE_CODE (dest_type) == UNION_TYPE)
- return initializer_constant_valid_p (src, endtype);
+ return initializer_constant_valid_p_1 (src, endtype, cache);
}
break;
@@ -4328,66 +4353,102 @@ initializer_constant_valid_p (tree value, tree endtype)
with -frounding-math we hit this with addition of two constants. */
if (TREE_CODE (endtype) == REAL_TYPE)
return NULL_TREE;
+ if (cache && cache[0] == value)
+ return cache[1];
if (! INTEGRAL_TYPE_P (endtype)
|| TYPE_PRECISION (endtype) >= TYPE_PRECISION (TREE_TYPE (value)))
{
- tree valid0 = initializer_constant_valid_p (TREE_OPERAND (value, 0),
- endtype);
- tree valid1 = initializer_constant_valid_p (TREE_OPERAND (value, 1),
- endtype);
+ tree ncache[4] = { NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE };
+ tree valid0
+ = initializer_constant_valid_p_1 (TREE_OPERAND (value, 0),
+ endtype, ncache);
+ tree valid1
+ = initializer_constant_valid_p_1 (TREE_OPERAND (value, 1),
+ endtype, ncache + 2);
/* If either term is absolute, use the other term's relocation. */
if (valid0 == null_pointer_node)
- return valid1;
- if (valid1 == null_pointer_node)
- return valid0;
+ ret = valid1;
+ else if (valid1 == null_pointer_node)
+ ret = valid0;
+ /* Support narrowing pointer differences. */
+ else
+ ret = narrowing_initializer_constant_valid_p (value, endtype,
+ ncache);
}
-
+ else
/* Support narrowing pointer differences. */
- ret = narrowing_initializer_constant_valid_p (value, endtype);
- if (ret != NULL_TREE)
- return ret;
-
- break;
+ ret = narrowing_initializer_constant_valid_p (value, endtype, NULL);
+ if (cache)
+ {
+ cache[0] = value;
+ cache[1] = ret;
+ }
+ return ret;
case MINUS_EXPR:
if (TREE_CODE (endtype) == REAL_TYPE)
return NULL_TREE;
+ if (cache && cache[0] == value)
+ return cache[1];
if (! INTEGRAL_TYPE_P (endtype)
|| TYPE_PRECISION (endtype) >= TYPE_PRECISION (TREE_TYPE (value)))
{
- tree valid0 = initializer_constant_valid_p (TREE_OPERAND (value, 0),
- endtype);
- tree valid1 = initializer_constant_valid_p (TREE_OPERAND (value, 1),
- endtype);
+ tree ncache[4] = { NULL_TREE, NULL_TREE, NULL_TREE, NULL_TREE };
+ tree valid0
+ = initializer_constant_valid_p_1 (TREE_OPERAND (value, 0),
+ endtype, ncache);
+ tree valid1
+ = initializer_constant_valid_p_1 (TREE_OPERAND (value, 1),
+ endtype, ncache + 2);
/* Win if second argument is absolute. */
if (valid1 == null_pointer_node)
- return valid0;
+ ret = valid0;
/* Win if both arguments have the same relocation.
Then the value is absolute. */
- if (valid0 == valid1 && valid0 != 0)
- return null_pointer_node;
-
+ else if (valid0 == valid1 && valid0 != 0)
+ ret = null_pointer_node;
/* Since GCC guarantees that string constants are unique in the
generated code, a subtraction between two copies of the same
constant string is absolute. */
- if (valid0 && TREE_CODE (valid0) == STRING_CST
- && valid1 && TREE_CODE (valid1) == STRING_CST
- && operand_equal_p (valid0, valid1, 1))
- return null_pointer_node;
+ else if (valid0 && TREE_CODE (valid0) == STRING_CST
+ && valid1 && TREE_CODE (valid1) == STRING_CST
+ && operand_equal_p (valid0, valid1, 1))
+ ret = null_pointer_node;
+ /* Support narrowing differences. */
+ else
+ ret = narrowing_initializer_constant_valid_p (value, endtype,
+ ncache);
}
-
- /* Support narrowing differences. */
- ret = narrowing_initializer_constant_valid_p (value, endtype);
- if (ret != NULL_TREE)
- return ret;
-
- break;
+ else
+ /* Support narrowing differences. */
+ ret = narrowing_initializer_constant_valid_p (value, endtype, NULL);
+ if (cache)
+ {
+ cache[0] = value;
+ cache[1] = ret;
+ }
+ return ret;
default:
break;
}
- return 0;
+ return NULL_TREE;
+}
+
+/* Return nonzero if VALUE is a valid constant-valued expression
+ for use in initializing a static variable; one that can be an
+ element of a "constant" initializer.
+
+ Return null_pointer_node if the value is absolute;
+ if it is relocatable, return the variable that determines the relocation.
+ We assume that VALUE has been folded as much as possible;
+ therefore, we do not need to check for such things as
+ arithmetic-combinations of integers. */
+tree
+initializer_constant_valid_p (tree value, tree endtype)
+{
+ return initializer_constant_valid_p_1 (value, endtype, NULL);
}
/* Return true if VALUE is a valid constant-valued expression