aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog114
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/ada/ChangeLog4
-rw-r--r--gcc/ada/s-osinte-linux-hppa.ads2
-rw-r--r--gcc/c-common.c27
-rw-r--r--gcc/c-common.h2
-rw-r--r--gcc/c-decl.c12
-rw-r--r--gcc/config/cris/cris.c108
-rw-r--r--gcc/config/i386/i386.md14
-rw-r--r--gcc/config/i386/pmm_malloc.h6
-rw-r--r--gcc/config/m68k/m68k.c14
-rw-r--r--gcc/config/m68k/t-m68kelf2
-rw-r--r--gcc/config/m68k/t-uclinux2
-rw-r--r--gcc/config/pa/pa.md84
-rw-r--r--gcc/config/rs6000/rs6000.c2
-rw-r--r--gcc/cp/ChangeLog106
-rw-r--r--gcc/cp/call.c13
-rw-r--r--gcc/cp/class.c8
-rw-r--r--gcc/cp/cp-tree.h6
-rw-r--r--gcc/cp/decl.c74
-rw-r--r--gcc/cp/decl2.c17
-rw-r--r--gcc/cp/init.c9
-rw-r--r--gcc/cp/name-lookup.c8
-rw-r--r--gcc/cp/parser.c148
-rw-r--r--gcc/cp/pt.c6
-rw-r--r--gcc/cp/ptree.c6
-rw-r--r--gcc/cp/repo.c6
-rw-r--r--gcc/cp/semantics.c11
-rw-r--r--gcc/cp/typeck.c136
-rw-r--r--gcc/cp/typeck2.c3
-rw-r--r--gcc/cse.c22
-rw-r--r--gcc/dwarf2out.c2
-rw-r--r--gcc/emit-rtl.c9
-rw-r--r--gcc/fold-const.c7
-rw-r--r--gcc/fortran/ChangeLog125
-rw-r--r--gcc/fortran/decl.c10
-rw-r--r--gcc/fortran/expr.c54
-rw-r--r--gcc/fortran/gfortran.h18
-rw-r--r--gcc/fortran/interface.c53
-rw-r--r--gcc/fortran/io.c323
-rw-r--r--gcc/fortran/match.c71
-rw-r--r--gcc/fortran/match.h4
-rw-r--r--gcc/fortran/parse.c27
-rw-r--r--gcc/fortran/primary.c6
-rw-r--r--gcc/fortran/resolve.c94
-rw-r--r--gcc/fortran/symbol.c17
-rw-r--r--gcc/fortran/trans-decl.c2
-rw-r--r--gcc/fortran/trans-io.c2
-rw-r--r--gcc/fortran/trans-types.c76
-rw-r--r--gcc/function.c32
-rw-r--r--gcc/po/ChangeLog4
-rw-r--r--gcc/po/zh_CN.po2734
-rw-r--r--gcc/regrename.c49
-rw-r--r--gcc/reload.c2
-rw-r--r--gcc/reload1.c4
-rw-r--r--gcc/stmt.c8
-rw-r--r--gcc/testsuite/ChangeLog238
-rw-r--r--gcc/testsuite/g++.dg/ext/complit4.C10
-rw-r--r--gcc/testsuite/g++.dg/ext/complit5.C12
-rw-r--r--gcc/testsuite/g++.dg/lookup/friend9.C23
-rw-r--r--gcc/testsuite/g++.dg/lookup/using12.C2
-rw-r--r--gcc/testsuite/g++.dg/opt/init1.C4
-rw-r--r--gcc/testsuite/g++.dg/opt/pr25005.C34
-rw-r--r--gcc/testsuite/g++.dg/other/friend4.C8
-rw-r--r--gcc/testsuite/g++.dg/other/i386-2.C12
-rw-r--r--gcc/testsuite/g++.dg/parse/access9.C5
-rw-r--r--gcc/testsuite/g++.dg/parse/crash17.C2
-rw-r--r--gcc/testsuite/g++.dg/parse/ctor3.C8
-rw-r--r--gcc/testsuite/g++.dg/parse/dtor6.C8
-rw-r--r--gcc/testsuite/g++.dg/parse/error29.C12
-rw-r--r--gcc/testsuite/g++.dg/parse/operator6.C5
-rw-r--r--gcc/testsuite/g++.dg/parse/pragma3.C26
-rw-r--r--gcc/testsuite/g++.dg/rtti/tinfo1.C2
-rw-r--r--gcc/testsuite/g++.dg/tc1/dr52.C4
-rw-r--r--gcc/testsuite/g++.dg/template/call4.C21
-rw-r--r--gcc/testsuite/g++.dg/template/class3.C2
-rw-r--r--gcc/testsuite/g++.dg/template/error20.C4
-rw-r--r--gcc/testsuite/g++.dg/template/ptrmem16.C22
-rw-r--r--gcc/testsuite/g++.dg/template/repo5.C11
-rw-r--r--gcc/testsuite/g++.dg/template/sfinae3.C17
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/comdat5.C2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20051216-1.c131
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20051228-1.c10
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr25513.c9
-rw-r--r--gcc/testsuite/gcc.dg/attr-weakref-1.c4
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-1.c1
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-2.c1
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-3.c1
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-4.c1
-rw-r--r--gcc/testsuite/gcc.dg/ipa/ipa-5.c1
-rw-r--r--gcc/testsuite/gcc.dg/pr21041.c42
-rw-r--r--gcc/testsuite/gcc.dg/pr23911.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr25559.c10
-rw-r--r--gcc/testsuite/gcc.dg/pragma-pack-3.c27
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr25183.c22
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/loop-1.c4
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/pr14841.c2
-rw-r--r--gcc/testsuite/gcc.dg/weak/typeof-2.c2
-rw-r--r--gcc/testsuite/gcc.target/i386/local2.c1
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_shape_nml.f9017
-rw-r--r--gcc/testsuite/gfortran.dg/assumed_size_nml.f9017
-rw-r--r--gcc/testsuite/gfortran.dg/backspace_2.f21
-rw-r--r--gcc/testsuite/gfortran.dg/comma.f18
-rw-r--r--gcc/testsuite/gfortran.dg/der_charlen_1.f9024
-rw-r--r--gcc/testsuite/gfortran.dg/endfile.f18
-rw-r--r--gcc/testsuite/gfortran.dg/enum_5.f902
-rw-r--r--gcc/testsuite/gfortran.dg/g77/19981216-0.f2
-rw-r--r--gcc/testsuite/gfortran.dg/g77/980616-0.f2
-rw-r--r--gcc/testsuite/gfortran.dg/host_used_types_1.f9040
-rw-r--r--gcc/testsuite/gfortran.dg/initialization_1.f9038
-rw-r--r--gcc/testsuite/gfortran.dg/io_constraints_1.f9078
-rw-r--r--gcc/testsuite/gfortran.dg/io_constraints_2.f9069
-rw-r--r--gcc/testsuite/gfortran.dg/label_1.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/list_read_5.f9038
-rw-r--r--gcc/testsuite/gfortran.dg/namelist_use.f903
-rw-r--r--gcc/testsuite/gfortran.dg/pointer_component_type_1.f9031
-rw-r--r--gcc/testsuite/gfortran.dg/pure_byref_3.f9033
-rw-r--r--gcc/testsuite/gfortran.dg/used_dummy_types_1.f9036
-rw-r--r--gcc/testsuite/gfortran.dg/used_dummy_types_2.f9032
-rw-r--r--gcc/testsuite/gfortran.dg/used_dummy_types_3.f9036
-rw-r--r--gcc/testsuite/gfortran.dg/used_dummy_types_4.f90101
-rw-r--r--gcc/testsuite/gfortran.dg/used_dummy_types_5.f9085
-rw-r--r--gcc/testsuite/gfortran.dg/userdef_operator_1.f9035
-rw-r--r--gcc/testsuite/objc/execute/pr25328.m11
-rw-r--r--gcc/tree-dfa.c4
-rw-r--r--gcc/varasm.c30
-rw-r--r--gcc/version.c2
-rw-r--r--libcpp/ChangeLog7
-rw-r--r--libcpp/directives.c3
-rw-r--r--libgfortran/ChangeLog29
-rw-r--r--libgfortran/io/file_pos.c1
-rw-r--r--libgfortran/io/list_read.c73
-rw-r--r--libgfortran/io/transfer.c7
-rw-r--r--libgfortran/io/unix.c2
-rw-r--r--libgfortran/libgfortran.h2
-rw-r--r--libgfortran/runtime/error.c8
-rw-r--r--libjava/ChangeLog51
-rw-r--r--libjava/Makefile.in4
-rw-r--r--libjava/classpath/ChangeLog16
-rw-r--r--libjava/classpath/gnu/java/nio/DatagramChannelImpl.java2
-rw-r--r--libjava/classpath/gnu/java/nio/SelectorImpl.java26
-rw-r--r--libjava/classpath/gnu/java/nio/SocketChannelImpl.java2
-rw-r--r--libjava/classpath/java/net/Socket.java20
-rw-r--r--libjava/gnu/gcj/convert/BytesToCharsetAdaptor.java90
-rw-r--r--libjava/gnu/gcj/convert/BytesToUnicode.java15
-rw-r--r--libjava/gnu/gcj/convert/CharsetToBytesAdaptor.java150
-rw-r--r--libjava/gnu/gcj/convert/UnicodeToBytes.java20
-rw-r--r--libjava/gnu/gcj/runtime/SystemClassLoader.java21
-rw-r--r--libjava/gnu/java/net/natPlainSocketImplPosix.cc12
-rw-r--r--libjava/gnu/java/net/natPlainSocketImplWin32.cc12
-rw-r--r--libjava/gnu/java/nio/charset/Provider.java154
-rw-r--r--libjava/java/io/InputStreamReader.java21
-rw-r--r--libjava/java/io/OutputStreamWriter.java28
-rw-r--r--libjava/java/lang/Class.h21
-rw-r--r--libjava/java/lang/natClassLoader.cc7
-rw-r--r--libjava/java/nio/charset/Charset.java94
-rw-r--r--libjava/mauve-libgcj1
-rw-r--r--libjava/posix-threads.cc2
-rw-r--r--libjava/sources.am4
-rw-r--r--libjava/sysdep/pa/locks.h62
-rw-r--r--libstdc++-v3/ChangeLog144
-rw-r--r--libstdc++-v3/include/bits/stream_iterator.h2
-rw-r--r--libstdc++-v3/include/debug/functions.h6
-rw-r--r--libstdc++-v3/include/ext/mt_allocator.h2
-rw-r--r--libstdc++-v3/include/tr1/functional4
-rw-r--r--libstdc++-v3/include/tr1/hashtable4
-rw-r--r--libstdc++-v3/include/tr1/tuple_iterate.h4
-rw-r--r--libstdc++-v3/testsuite/18_support/numeric_limits/specialization.cc4
-rw-r--r--libstdc++-v3/testsuite/18_support/numeric_limits/traps.cc4
-rw-r--r--libstdc++-v3/testsuite/20_util/functional/binders/1.cc8
-rw-r--r--libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc8
-rw-r--r--libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/24559.cc6
-rw-r--r--libstdc++-v3/testsuite/22_locale/ctype/is/char/9858.cc12
-rw-r--r--libstdc++-v3/testsuite/22_locale/ctype/narrow/char/19955.cc2
-rw-r--r--libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_1.cc2
-rw-r--r--libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_3.cc4
-rw-r--r--libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_1.cc2
-rw-r--r--libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_3.cc4
-rw-r--r--libstdc++-v3/testsuite/23_containers/deque/cons/clear_allocator.cc4
-rw-r--r--libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.cc4
-rw-r--r--libstdc++-v3/testsuite/23_containers/set/modifiers/16728.cc2
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/bool/clear_allocator.cc4
-rw-r--r--libstdc++-v3/testsuite/23_containers/vector/cons/clear_allocator.cc4
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/find/17441.cc4
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/heap/heap.cc138
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/iter_swap/20577.cc2
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/replace_copy/check_type.cc4
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/replace_copy_if/check_type.cc4
-rw-r--r--libstdc++-v3/testsuite/25_algorithms/unique_copy/check_type.cc4
-rw-r--r--libstdc++-v3/testsuite/26_numerics/valarray/valarray_subset_assignment.cc3
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/2.cc2
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/12206.cc24
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ios/cons/char/3.cc4
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/getline/char/5.cc3
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc3
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc3
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/2.cc3
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/1.cc8
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/1.cc7
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/endl/char/1.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/endl/wchar_t/1.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/1.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/1.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/1.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/1.cc1
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/write/char/1.cc4
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_ostream/write/wchar_t/1.cc4
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc2
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc2
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/1.cc5
-rw-r--r--libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/1.cc4
-rw-r--r--libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc15
-rw-r--r--libstdc++-v3/testsuite/27_io/types/1.cc6
-rw-r--r--libstdc++-v3/testsuite/ext/array_allocator/2.cc3
-rw-r--r--libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_global.cc5
-rw-r--r--libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_local.cc5
-rw-r--r--libstdc++-v3/testsuite/ext/pool_allocator/allocate_chunk.cc2
-rw-r--r--libstdc++-v3/testsuite/testsuite_allocator.h5
-rw-r--r--libstdc++-v3/testsuite/testsuite_character.h10
-rw-r--r--libstdc++-v3/testsuite/testsuite_hooks.h13
-rw-r--r--libstdc++-v3/testsuite/testsuite_io.h36
-rw-r--r--libstdc++-v3/testsuite/testsuite_iterators.h2
-rw-r--r--libstdc++-v3/testsuite/thread/18185.cc10
-rw-r--r--libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/assign.cc2
-rw-r--r--libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/shared_ptr.cc2
-rw-r--r--libstdc++-v3/testsuite/tr1/3_function_objects/mem_fn.cc5
-rw-r--r--libstdc++-v3/testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc4
-rw-r--r--libstdc++-v3/testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc3
-rw-r--r--libstdc++-v3/testsuite/tr1/6_containers/unordered/insert/multiset_range.cc6
-rw-r--r--libstdc++-v3/testsuite/tr1/6_containers/unordered/insert/set_range.cc4
-rw-r--r--libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/hash.cc45
-rw-r--r--libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/map.cc19
-rw-r--r--libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/multimap.cc17
-rw-r--r--libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/multiset.cc14
-rw-r--r--libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/set.cc14
235 files changed, 5522 insertions, 2480 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f90477e3640..aeb3bcc0fc5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,117 @@
+2006-01-04 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/pmm_malloc.h (posix_memalign): If __cplusplus,
+ make the prototype extern "C" and add throw ().
+
+ PR target/25554
+ * config/i386/i386.md (testqi_ext_3): Ensure len is positive
+ and pos non-negative and pos + len <= 32.
+ (testqi_ext_3_rex64): Ensure len is positive and pos non-negative,
+ drop pos + len < HOST_BITS_PER_WIDE_INT test.
+ (testqi_ext_3* splitter): Handle pos + len == HOST_BITS_PER_WIDE_INT.
+
+ PR c/25559
+ * c-common.c (handle_vector_size_attribute): Reject zero vector size
+ as well as sizes not multiple of component size.
+
+ PR debug/25562
+ * function.c (instantiate_expr): New function.
+ (instantiate_decls_1, instantiate_decls): If DECL_HAS_VALUE_EXPR_P,
+ walk its DECL_VALUE_EXPR with instantiate_expr.
+
+ * dwarf2out.c (loc_descriptor_from_tree_1): Don't add
+ DW_OP_deref{,_size} if address isn't going to be added.
+
+2006-01-03 Steven Bosscher <stevenb.gcc@gmail.com>
+
+ * fold-const.c (operand_equal_p): Accept a NULL operand 0 for
+ COMPONENT_REFs.
+ * emit-rtl.c (mem_attrs_htab_eq): Use iterative_hash_expr for
+ hashing trees instead of a pointer hash.
+ (mem_attrs_htab_eq): Do a deep compare instead of a pointer
+ compare for MEM_EXPR.
+
+ PR rtl-optimization/25130
+ * cse.c (exp_equiv_p): Compare MEM_ATTRS instead of MEM_ALIAS_SET
+ when comparing MEMs for GCSE
+
+2006-01-03 Richard Guenther <rguenther@suse.de>
+
+ PR c/25183
+ * stmt.c (add_case_node): Make sure to clear overflow flags
+ from ranges.
+
+2005-12-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR fortran/25586
+ * pa.md: Remove REG_POINTER check from REG+REG peephole2 floating-point
+ store patterns.
+
+2005-12-29 Daniel Jacobowitz <dan@codesourcery.com>
+ Paul Brook <paul@codesourcery.com>
+
+ * config/m68k/m68k.c (m68k_output_pic_call): Don't use bsr.l for
+ !TARGET_68020.
+ * config/m68k/t-m68kelf (EXTRA_PARTS): Remove.
+ (EXTRA_MULTILIB_PARTS): Set.
+ * config/m68k/t-uclinux (EXTRA_PARTS): Remove.
+ (EXTRA_MULTILIB_PARTS): Set.
+
+2005-12-29 Hans-Peter Nilsson <hp@axis.com>
+
+ PR target/24342
+ * config/cris/cris.c (cris_split_movdx): Add REG_INC notes for
+ emitted insns with post-increments.
+ (cris_expand_epilogue): Ditto.
+
+2005-12-29 Alan Modra <amodra@bigpond.net.au>
+
+ PR target/25572
+ * config/rs6000/rs6000.c (create_TOC_reference): Set regs_ever_live.
+
+2005-12-26 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/23171, c++/23172, c++/25417.
+ * c-decl.c (compound_literal_number): Remove.
+ (build_compound_literal): Use set_compound_literal_name.
+ * c-common.c (compound_literal_number): New variable.
+ (set_compound_literal_name): New function.
+ * c-common.h (set_compound_literal_name): Declare.
+
+2005-12-24 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/23171
+ * varasm.c (initializer_constant_valid_p): An ADDR_EXPR of a
+ CONSTRUCTOR is invalid.
+
+2005-12-23 Ulrich Weigand <uweigand@de.ibm.com>
+
+ PR rtl-optimization/21041
+ * reload.c (find_reloads_subreg_address): Replace paradoxical
+ subreg of MEM by widened access only if the resulting memory
+ is properly aligned, even on !STRICT_ALIGNMENT targets.
+
+2005-12-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/25005
+ * regrename.c (replace_oldest_value_reg): Use validate_change with
+ IN_GROUP set to 1 instead of doing direct modifications.
+ (copyprop_hardreg_forward_1): Likewise. If any replace_oldest_*
+ replacements have been performed on an instruction, use
+ apply_change_group ().
+
+2005-12-23 Alan Modra <amodra@bigpond.net.au>
+
+ PR rtl-optimization/25432
+ * reload1.c (eliminate_regs_in_insn): Update insn code on
+ successfully re-recognizing modified insn.
+
+2005-12-22 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR tree-opt/25513
+ * tree-dfa.c (make_rename_temp): Set DECL_COMPLEX_GIMPLE_REG_P complex
+ variables.
+
2005-12-21 Andrew Pinski <pinskia@physics.uc.edu>
PR debug/25518
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index d6c7c5aeee5..69abdc9110f 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20051222
+20060105
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 56190540da7..04fc953b222 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2005-12-28 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * s-osinte-linux-hppa.ads: Correct alignment of atomic_lock_t.
+
2005-12-15 Eric Botcazou <ebotcazou@adacore.com>
PR ada/18659
diff --git a/gcc/ada/s-osinte-linux-hppa.ads b/gcc/ada/s-osinte-linux-hppa.ads
index a04c636f1e8..ec7efd2feae 100644
--- a/gcc/ada/s-osinte-linux-hppa.ads
+++ b/gcc/ada/s-osinte-linux-hppa.ads
@@ -508,7 +508,7 @@ private
lock : lock_array;
end record;
pragma Convention (C, atomic_lock_t);
- for atomic_lock_t'Alignment use 8 * 16;
+ for atomic_lock_t'Alignment use 16;
type struct_pthread_fast_lock is record
spinlock : atomic_lock_t;
diff --git a/gcc/c-common.c b/gcc/c-common.c
index c1b976d2705..84ce0557931 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -3335,6 +3335,21 @@ set_builtin_user_assembler_name (tree decl, const char *asmspec)
init_block_clear_fn (asmspec);
}
+/* The number of named compound-literals generated thus far. */
+static GTY(()) int compound_literal_number;
+
+/* Set DECL_NAME for DECL, a VAR_DECL for a compound-literal. */
+
+void
+set_compound_literal_name (tree decl)
+{
+ char *name;
+ ASM_FORMAT_PRIVATE_NAME (name, "__compound_literal",
+ compound_literal_number);
+ compound_literal_number++;
+ DECL_NAME (decl) = get_identifier (name);
+}
+
tree
build_va_arg (tree expr, tree type)
{
@@ -5151,6 +5166,18 @@ handle_vector_size_attribute (tree *node, tree name, tree args,
return NULL_TREE;
}
+ if (vecsize % tree_low_cst (TYPE_SIZE_UNIT (type), 1))
+ {
+ error ("vector size not an integral multiple of component size");
+ return NULL;
+ }
+
+ if (vecsize == 0)
+ {
+ error ("zero vector size");
+ return NULL;
+ }
+
/* Calculate how many units fit in the vector. */
nunits = vecsize / tree_low_cst (TYPE_SIZE_UNIT (type), 1);
if (nunits & (nunits - 1))
diff --git a/gcc/c-common.h b/gcc/c-common.h
index 963f09da163..1de56a20d3f 100644
--- a/gcc/c-common.h
+++ b/gcc/c-common.h
@@ -682,6 +682,8 @@ extern void set_builtin_user_assembler_name (tree decl, const char *asmspec);
extern void disable_builtin_function (const char *);
+extern void set_compound_literal_name (tree decl);
+
extern tree build_va_arg (tree, tree);
extern unsigned int c_common_init_options (unsigned int, const char **);
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 3184e077a3e..2660673355c 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -3615,8 +3615,6 @@ mark_forward_parm_decls (void)
TREE_ASM_WRITTEN (b->decl) = 1;
}
-static GTY(()) int compound_literal_number;
-
/* Build a COMPOUND_LITERAL_EXPR. TYPE is the type given in the compound
literal, which may be an incomplete array type completed by the
initializer; INIT is a CONSTRUCTOR that initializes the compound
@@ -3666,14 +3664,8 @@ build_compound_literal (tree type, tree init)
if (TREE_STATIC (decl))
{
- /* This decl needs a name for the assembler output. We also need
- a unique suffix to be added to the name. */
- char *name;
-
- ASM_FORMAT_PRIVATE_NAME (name, "__compound_literal",
- compound_literal_number);
- compound_literal_number++;
- DECL_NAME (decl) = get_identifier (name);
+ /* This decl needs a name for the assembler output. */
+ set_compound_literal_name (decl);
DECL_DEFER_OUTPUT (decl) = 1;
DECL_COMDAT (decl) = 1;
DECL_ARTIFICIAL (decl) = 1;
diff --git a/gcc/config/cris/cris.c b/gcc/config/cris/cris.c
index 0c415391543..63b5ba71d1f 100644
--- a/gcc/config/cris/cris.c
+++ b/gcc/config/cris/cris.c
@@ -2353,12 +2353,31 @@ cris_split_movdx (rtx *operands)
if (GET_CODE (addr) == POST_INC)
{
- emit_insn (gen_rtx_SET (VOIDmode,
- operand_subword (dest, 0, TRUE, mode),
- change_address (src, SImode, addr)));
- emit_insn (gen_rtx_SET (VOIDmode,
- operand_subword (dest, 1, TRUE, mode),
- change_address (src, SImode, addr)));
+ rtx mem;
+ rtx insn;
+
+ /* Whenever we emit insns with post-incremented
+ addresses ourselves, we must add a post-inc note
+ manually. */
+ mem = change_address (src, SImode, addr);
+ insn
+ = gen_rtx_SET (VOIDmode,
+ operand_subword (dest, 0, TRUE, mode), mem);
+ insn = emit_insn (insn);
+ if (GET_CODE (XEXP (mem, 0)) == POST_INC)
+ REG_NOTES (insn)
+ = alloc_EXPR_LIST (REG_INC, XEXP (XEXP (mem, 0), 0),
+ REG_NOTES (insn));
+
+ mem = change_address (src, SImode, addr);
+ insn
+ = gen_rtx_SET (VOIDmode,
+ operand_subword (dest, 1, TRUE, mode), mem);
+ insn = emit_insn (insn);
+ if (GET_CODE (XEXP (mem, 0)) == POST_INC)
+ REG_NOTES (insn)
+ = alloc_EXPR_LIST (REG_INC, XEXP (XEXP (mem, 0), 0),
+ REG_NOTES (insn));
}
else
{
@@ -2399,12 +2418,31 @@ cris_split_movdx (rtx *operands)
if (GET_CODE (addr) == POST_INC)
{
- emit_insn (gen_rtx_SET (VOIDmode,
- change_address (dest, SImode, addr),
- operand_subword (src, 0, TRUE, mode)));
- emit_insn (gen_rtx_SET (VOIDmode,
- change_address (dest, SImode, addr),
- operand_subword (src, 1, TRUE, mode)));
+ rtx mem;
+ rtx insn;
+
+ /* Whenever we emit insns with post-incremented addresses
+ ourselves, we must add a post-inc note manually. */
+ mem = change_address (dest, SImode, addr);
+ insn
+ = gen_rtx_SET (VOIDmode,
+ mem, operand_subword (src, 0, TRUE, mode));
+ insn = emit_insn (insn);
+ if (GET_CODE (XEXP (mem, 0)) == POST_INC)
+ REG_NOTES (insn)
+ = alloc_EXPR_LIST (REG_INC, XEXP (XEXP (mem, 0), 0),
+ REG_NOTES (insn));
+
+ mem = change_address (dest, SImode, addr);
+ insn
+ = gen_rtx_SET (VOIDmode,
+ mem,
+ operand_subword (src, 1, TRUE, mode));
+ insn = emit_insn (insn);
+ if (GET_CODE (XEXP (mem, 0)) == POST_INC)
+ REG_NOTES (insn)
+ = alloc_EXPR_LIST (REG_INC, XEXP (XEXP (mem, 0), 0),
+ REG_NOTES (insn));
}
else
{
@@ -2780,6 +2818,8 @@ cris_expand_epilogue (void)
regno--)
if (cris_reg_saved_in_regsave_area (regno, got_really_used))
{
+ rtx insn;
+
if (argspace_offset)
{
/* There is an area for outgoing parameters located before
@@ -2795,12 +2835,19 @@ cris_expand_epilogue (void)
mem = gen_rtx_MEM (SImode, gen_rtx_POST_INC (SImode,
stack_pointer_rtx));
set_mem_alias_set (mem, get_frame_alias_set ());
- emit_move_insn (gen_rtx_raw_REG (SImode, regno), mem);
+ insn = emit_move_insn (gen_rtx_raw_REG (SImode, regno), mem);
+
+ /* Whenever we emit insns with post-incremented addresses
+ ourselves, we must add a post-inc note manually. */
+ REG_NOTES (insn)
+ = alloc_EXPR_LIST (REG_INC, stack_pointer_rtx, REG_NOTES (insn));
}
/* If we have any movem-restore, do it now. */
if (last_movem_reg != -1)
{
+ rtx insn;
+
if (argspace_offset)
{
emit_insn (gen_rtx_SET (VOIDmode,
@@ -2813,7 +2860,14 @@ cris_expand_epilogue (void)
mem = gen_rtx_MEM (SImode,
gen_rtx_POST_INC (SImode, stack_pointer_rtx));
set_mem_alias_set (mem, get_frame_alias_set ());
- emit_insn (cris_gen_movem_load (mem, GEN_INT (last_movem_reg + 1), 0));
+ insn
+ = emit_insn (cris_gen_movem_load (mem,
+ GEN_INT (last_movem_reg + 1), 0));
+ /* Whenever we emit insns with post-incremented addresses
+ ourselves, we must add a post-inc note manually. */
+ if (side_effects_p (PATTERN (insn)))
+ REG_NOTES (insn)
+ = alloc_EXPR_LIST (REG_INC, stack_pointer_rtx, REG_NOTES (insn));
}
/* If we don't clobber all of the allocated stack area (we've already
@@ -2829,13 +2883,20 @@ cris_expand_epilogue (void)
/* Restore frame pointer if necessary. */
if (frame_pointer_needed)
{
+ rtx insn;
+
emit_insn (gen_cris_frame_deallocated_barrier ());
emit_move_insn (stack_pointer_rtx, frame_pointer_rtx);
mem = gen_rtx_MEM (SImode, gen_rtx_POST_INC (SImode,
stack_pointer_rtx));
set_mem_alias_set (mem, get_frame_alias_set ());
- emit_move_insn (frame_pointer_rtx, mem);
+ insn = emit_move_insn (frame_pointer_rtx, mem);
+
+ /* Whenever we emit insns with post-incremented addresses
+ ourselves, we must add a post-inc note manually. */
+ REG_NOTES (insn)
+ = alloc_EXPR_LIST (REG_INC, stack_pointer_rtx, REG_NOTES (insn));
}
else if ((size + argspace_offset) != 0)
{
@@ -2861,12 +2922,18 @@ cris_expand_epilogue (void)
if (current_function_calls_eh_return)
{
rtx mem;
+ rtx insn;
rtx srpreg = gen_rtx_raw_REG (SImode, CRIS_SRP_REGNUM);
mem = gen_rtx_MEM (SImode,
gen_rtx_POST_INC (SImode,
stack_pointer_rtx));
set_mem_alias_set (mem, get_frame_alias_set ());
- emit_move_insn (srpreg, mem);
+ insn = emit_move_insn (srpreg, mem);
+
+ /* Whenever we emit insns with post-incremented addresses
+ ourselves, we must add a post-inc note manually. */
+ REG_NOTES (insn)
+ = alloc_EXPR_LIST (REG_INC, stack_pointer_rtx, REG_NOTES (insn));
emit_insn (gen_addsi3 (stack_pointer_rtx,
stack_pointer_rtx,
@@ -2889,11 +2956,18 @@ cris_expand_epilogue (void)
{
rtx mem;
rtx srpreg = gen_rtx_raw_REG (SImode, CRIS_SRP_REGNUM);
+ rtx insn;
+
mem = gen_rtx_MEM (SImode,
gen_rtx_POST_INC (SImode,
stack_pointer_rtx));
set_mem_alias_set (mem, get_frame_alias_set ());
- emit_move_insn (srpreg, mem);
+ insn = emit_move_insn (srpreg, mem);
+
+ /* Whenever we emit insns with post-incremented addresses
+ ourselves, we must add a post-inc note manually. */
+ REG_NOTES (insn)
+ = alloc_EXPR_LIST (REG_INC, stack_pointer_rtx, REG_NOTES (insn));
}
emit_insn (gen_rtx_SET (VOIDmode,
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 7e7c8116362..76fe6183e44 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -7868,6 +7868,9 @@
(match_operand:SI 2 "const_int_operand" ""))
(const_int 0)))]
"ix86_match_ccmode (insn, CCNOmode)
+ && INTVAL (operands[1]) > 0
+ && INTVAL (operands[2]) >= 0
+ && INTVAL (operands[1]) + INTVAL (operands[2]) <= 32
&& (GET_MODE (operands[0]) == SImode
|| (TARGET_64BIT && GET_MODE (operands[0]) == DImode)
|| GET_MODE (operands[0]) == HImode
@@ -7883,8 +7886,8 @@
(const_int 0)))]
"TARGET_64BIT
&& ix86_match_ccmode (insn, CCNOmode)
- /* The code below cannot deal with constants outside HOST_WIDE_INT. */
- && INTVAL (operands[1]) + INTVAL (operands[2]) < HOST_BITS_PER_WIDE_INT
+ && INTVAL (operands[1]) > 0
+ && INTVAL (operands[2]) >= 0
/* Ensure that resulting mask is zero or sign extended operand. */
&& (INTVAL (operands[1]) + INTVAL (operands[2]) <= 32
|| (INTVAL (operands[1]) + INTVAL (operands[2]) == 64
@@ -7939,8 +7942,11 @@
val = gen_lowpart (QImode, val);
}
- mask = ((HOST_WIDE_INT)1 << (pos + len)) - 1;
- mask &= ~(((HOST_WIDE_INT)1 << pos) - 1);
+ if (len == HOST_BITS_PER_WIDE_INT)
+ mask = -1;
+ else
+ mask = ((HOST_WIDE_INT)1 << len) - 1;
+ mask <<= pos;
operands[2] = gen_rtx_AND (mode, val, gen_int_mode (mask, mode));
})
diff --git a/gcc/config/i386/pmm_malloc.h b/gcc/config/i386/pmm_malloc.h
index ae09aad31c6..744ac6d41cc 100644
--- a/gcc/config/i386/pmm_malloc.h
+++ b/gcc/config/i386/pmm_malloc.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2006 Free Software Foundation, Inc.
This file is part of GCC.
@@ -31,7 +31,11 @@
/* We can't depend on <stdlib.h> since the prototype of posix_memalign
may not be visible. */
+#ifndef __cplusplus
extern int posix_memalign (void **, size_t, size_t);
+#else
+extern "C" int posix_memalign (void **, size_t, size_t) throw ();
+#endif
static __inline void *
_mm_malloc (size_t size, size_t alignment)
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 2af20a480c3..5d05b1cc795 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -1047,16 +1047,14 @@ m68k_output_pic_call(rtx dest)
if (!(GET_CODE (dest) == MEM && GET_CODE (XEXP (dest, 0)) == SYMBOL_REF))
out = "jsr %0";
- /* We output a BSR instruction if we're using -fpic or we're building for
- * a target that supports long branches. If we're building -fPIC on the
- * 68000, 68010 or ColdFire we generate one of two sequences:
- * a shorter one that uses a GOT entry or a longer one that doesn't.
- * We'll use the -Os command-line flag to decide which to generate.
- * Both sequences take the same time to execute on the ColdFire.
- */
+ /* We output a BSR instruction if we're building for a target that
+ supports long branches. Otherwise we generate one of two sequences:
+ a shorter one that uses a GOT entry or a longer one that doesn't.
+ We use the -Os command-line flag to decide which to generate.
+ Both sequences take the same time to execute on the ColdFire. */
else if (TARGET_PCREL)
out = "bsr.l %o0";
- else if ((flag_pic == 1) || TARGET_68020)
+ else if (TARGET_68020)
#if defined(USE_GAS)
out = "bsr.l %0@PLTPC";
#else
diff --git a/gcc/config/m68k/t-m68kelf b/gcc/config/m68k/t-m68kelf
index 686e2d49054..a1d57a04c26 100644
--- a/gcc/config/m68k/t-m68kelf
+++ b/gcc/config/m68k/t-m68kelf
@@ -24,6 +24,6 @@ LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
# from ../t-svr4
-EXTRA_PARTS=crtbegin.o crtend.o
+EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o
# no pic for now
#CRTSTUFF_T_CFLAGS=-fpic
diff --git a/gcc/config/m68k/t-uclinux b/gcc/config/m68k/t-uclinux
index 8d864bfeb58..1fb7a42e598 100644
--- a/gcc/config/m68k/t-uclinux
+++ b/gcc/config/m68k/t-uclinux
@@ -21,4 +21,4 @@ LIBGCC = stmp-multilib
INSTALL_LIBGCC = install-multilib
# We don't use crtbegin.o and crtend.o
-EXTRA_PARTS=
+EXTRA_MULTILIB_PARTS=
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md
index 83fdec6066a..779b1d6565b 100644
--- a/gcc/config/pa/pa.md
+++ b/gcc/config/pa/pa.md
@@ -2404,9 +2404,9 @@
(match_operand:SI 3 "register_operand" ""))]
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
- && REG_OK_FOR_BASE_P (operands[1])
- && (TARGET_NO_SPACE_REGS
- || (!REG_POINTER (operands[1]) && REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_INDEX_P (operands[1])
+ && REG_OK_FOR_BASE_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:SI (plus:SI (match_dup 1) (match_dup 2)))
(match_dup 3))
@@ -2421,9 +2421,9 @@
(match_operand:SI 3 "register_operand" ""))]
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
- && REG_OK_FOR_BASE_P (operands[2])
- && (TARGET_NO_SPACE_REGS
- || (REG_POINTER (operands[1]) && !REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_BASE_P (operands[1])
+ && REG_OK_FOR_INDEX_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:SI (plus:SI (match_dup 2) (match_dup 1)))
(match_dup 3))
@@ -2439,9 +2439,9 @@
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
&& TARGET_64BIT
- && REG_OK_FOR_BASE_P (operands[1])
- && (TARGET_NO_SPACE_REGS
- || (!REG_POINTER (operands[1]) && REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_INDEX_P (operands[1])
+ && REG_OK_FOR_BASE_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:SI (plus:DI (match_dup 1) (match_dup 2)))
(match_dup 3))
@@ -2457,9 +2457,9 @@
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
&& TARGET_64BIT
- && REG_OK_FOR_BASE_P (operands[2])
- && (TARGET_NO_SPACE_REGS
- || (REG_POINTER (operands[1]) && !REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_BASE_P (operands[1])
+ && REG_OK_FOR_INDEX_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:SI (plus:DI (match_dup 2) (match_dup 1)))
(match_dup 3))
@@ -3930,9 +3930,9 @@
(match_operand:DF 3 "register_operand" ""))]
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
- && REG_OK_FOR_BASE_P (operands[1])
- && (TARGET_NO_SPACE_REGS
- || (!REG_POINTER (operands[1]) && REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_INDEX_P (operands[1])
+ && REG_OK_FOR_BASE_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:DF (plus:SI (match_dup 1) (match_dup 2)))
(match_dup 3))
@@ -3947,9 +3947,9 @@
(match_operand:DF 3 "register_operand" ""))]
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
- && REG_OK_FOR_BASE_P (operands[2])
- && (TARGET_NO_SPACE_REGS
- || (REG_POINTER (operands[1]) && !REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_BASE_P (operands[1])
+ && REG_OK_FOR_INDEX_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:DF (plus:SI (match_dup 2) (match_dup 1)))
(match_dup 3))
@@ -3965,9 +3965,9 @@
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
&& TARGET_64BIT
- && REG_OK_FOR_BASE_P (operands[1])
- && (TARGET_NO_SPACE_REGS
- || (!REG_POINTER (operands[1]) && REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_INDEX_P (operands[1])
+ && REG_OK_FOR_BASE_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:DF (plus:DI (match_dup 1) (match_dup 2)))
(match_dup 3))
@@ -3983,9 +3983,9 @@
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
&& TARGET_64BIT
- && REG_OK_FOR_BASE_P (operands[2])
- && (TARGET_NO_SPACE_REGS
- || (REG_POINTER (operands[1]) && !REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_BASE_P (operands[1])
+ && REG_OK_FOR_INDEX_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:DF (plus:DI (match_dup 2) (match_dup 1)))
(match_dup 3))
@@ -4215,9 +4215,9 @@
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
&& TARGET_64BIT
- && REG_OK_FOR_BASE_P (operands[1])
- && (TARGET_NO_SPACE_REGS
- || (!REG_POINTER (operands[1]) && REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_INDEX_P (operands[1])
+ && REG_OK_FOR_BASE_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:DI (plus:DI (match_dup 1) (match_dup 2)))
(match_dup 3))
@@ -4233,9 +4233,9 @@
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
&& TARGET_64BIT
- && REG_OK_FOR_BASE_P (operands[2])
- && (TARGET_NO_SPACE_REGS
- || (REG_POINTER (operands[1]) && !REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_BASE_P (operands[1])
+ && REG_OK_FOR_INDEX_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:DI (plus:DI (match_dup 2) (match_dup 1)))
(match_dup 3))
@@ -4447,9 +4447,9 @@
(match_operand:SF 3 "register_operand" ""))]
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
- && REG_OK_FOR_BASE_P (operands[1])
- && (TARGET_NO_SPACE_REGS
- || (!REG_POINTER (operands[1]) && REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_INDEX_P (operands[1])
+ && REG_OK_FOR_BASE_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:SF (plus:SI (match_dup 1) (match_dup 2)))
(match_dup 3))
@@ -4464,9 +4464,9 @@
(match_operand:SF 3 "register_operand" ""))]
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
- && REG_OK_FOR_BASE_P (operands[2])
- && (TARGET_NO_SPACE_REGS
- || (REG_POINTER (operands[1]) && !REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_BASE_P (operands[1])
+ && REG_OK_FOR_INDEX_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:SF (plus:SI (match_dup 2) (match_dup 1)))
(match_dup 3))
@@ -4482,9 +4482,9 @@
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
&& TARGET_64BIT
- && REG_OK_FOR_BASE_P (operands[1])
- && (TARGET_NO_SPACE_REGS
- || (!REG_POINTER (operands[1]) && REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_INDEX_P (operands[1])
+ && REG_OK_FOR_BASE_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:SF (plus:DI (match_dup 1) (match_dup 2)))
(match_dup 3))
@@ -4500,9 +4500,9 @@
"!TARGET_SOFT_FLOAT
&& !TARGET_DISABLE_INDEXING
&& TARGET_64BIT
- && REG_OK_FOR_BASE_P (operands[2])
- && (TARGET_NO_SPACE_REGS
- || (REG_POINTER (operands[1]) && !REG_POINTER (operands[2])))
+ && TARGET_NO_SPACE_REGS
+ && REG_OK_FOR_BASE_P (operands[1])
+ && REG_OK_FOR_INDEX_P (operands[2])
&& FP_REGNO_P (REGNO (operands[3]))"
[(set (mem:SF (plus:DI (match_dup 2) (match_dup 1)))
(match_dup 3))
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index ba546d0c997..52413c83df9 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -13511,6 +13511,8 @@ uses_TOC (void)
rtx
create_TOC_reference (rtx symbol)
{
+ if (no_new_pseudos)
+ regs_ever_live[TOC_REGISTER] = 1;
return gen_rtx_PLUS (Pmode,
gen_rtx_REG (Pmode, TOC_REGISTER),
gen_rtx_CONST (Pmode,
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 6e55ac7dda2..b6cb9db7aa3 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,109 @@
+2005-01-04 Zdenek Dvorak <dvorakz@suse.cz>
+
+ PR c++/25632
+ * init.c (constant_value_1): Unshare use of DECL_INITIAL. Fix a typo
+ in condition.
+
+2006-01-04 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/24782
+ * parser.c (cp_parser_nested_name_specifier_opt): Preserve access
+ checks, even when parsing tentatively.
+
+2006-01-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/25492
+ * name-lookup.c (push_class_level_binding): When a derived class
+ provides a type binding, eliminate any type binding from a base
+ class.
+
+ PR c++/25625
+ * repo.c (repo_emit_p): Always instantiate static data members
+ initialized by constant expressions, so that there values are
+ available.
+
+2006-01-02 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/25635
+ * class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
+ conversion operator.
+ * decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.
+
+ PR c++/25638
+ * class.c (add_method): Never associate more than one destructor
+ with a single class.
+
+ PR c++/25637
+ * decl.c (grokdeclarator): Refine check for invalid
+ declarations/definitions of member functions outside of their own
+ class.
+
+ PR c++/25633
+ * parser.c (cp_parser_mem_initializer_list): Check result of
+ cp_parser_mem_initializer against error_mark_node, not NULL_TREE.
+ (cp_parser_mem_initializer): Return error_mark_node for failure.
+
+ PR c++/25634
+ * parser.c (cp_parser_elaborated_type_specifier): Call
+ cp_parser_check_template_parameters.
+
+2006-01-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ * parser.c (cp_parser_using_declaration): Skip name-lookup on
+ invalid scope.
+
+2006-01-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ * decl.c (grokdeclarator): Improve diagnostic for friend
+ declarations of class members.
+
+2005-12-26 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/23171, c++/23172, c++/25417.
+ * typeck.c (build_unary_op): Create temporary variables for
+ compound literals whose addresses are taken.
+ * init.c (expand_aggr_init_1): Use COMPOUND_LITERAL_P.
+ * decl.c (reshape_init_vector): Likewise.
+ (reshape_init): Give it external linkage.
+ (check_initializer): Use COMPOUND_LITERAL_P.
+ (initialize_artificial_var): Allow the initializer to be a
+ CONSTRUCTOR.
+ * call.c (make_temporary_var_for_ref_to_temp): Use
+ create_temporary_var.
+ * cp-tree.h (COMPOUND_LITERAL_P): New macro.
+ (rehape_init): Declare.
+ * typeck2.c (digest_init): Use COMPOUND_LITERAL_P.
+ * semantics.c (finish_compound_literal): Use reshape_init.
+
+2005-12-26 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/25439
+ * decl.c (grokdeclarator): Remove dead code.
+ * ptree.c (cxx_print_xnode): Handle BASELINK.
+ * parser.c (make_id_declarator): Add sfk parameter.
+ (cp_parser_direct_declarator): Do not pass TYPE_DECLs to
+ make_id_declarator.
+ (cp_parser_declarator_id): Simplify BASELINKs here.
+ (cp_parser_member_declaration): Adjust calls to
+ make_id_declarator.
+
+2005-12-23 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/24671
+ * pt.c (instantiate_template): Handle SFINAE.
+
+2005-12-22 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/25369
+ * pt.c (tsubst_copy): Call mark_used on the member referenced by an
+ OFFSET_REF.
+ * decl2.c (mark_used): Accept BASELINKs.
+
+2005-12-22 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/25364
+ * semantics.c (finish_qualified_id_expr): Call mark_used.
+
2005-12-20 Mark Mitchell <mark@codesourcery.com>
PR c++/21228
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 99b8bcbee15..ea1ebc26dfe 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -6429,10 +6429,7 @@ make_temporary_var_for_ref_to_temp (tree decl, tree type)
tree var;
/* Create the variable. */
- var = build_decl (VAR_DECL, NULL_TREE, type);
- DECL_ARTIFICIAL (var) = 1;
- DECL_IGNORED_P (var) = 1;
- TREE_USED (var) = 1;
+ var = create_temporary_var (type);
/* Register the variable. */
if (TREE_STATIC (decl))
@@ -6447,12 +6444,8 @@ make_temporary_var_for_ref_to_temp (tree decl, tree type)
var = pushdecl_top_level (var);
}
else
- {
- /* Create a new cleanup level if necessary. */
- maybe_push_cleanup_level (type);
- /* Don't push unnamed temps. Do set DECL_CONTEXT, though. */
- DECL_CONTEXT (var) = current_function_decl;
- }
+ /* Create a new cleanup level if necessary. */
+ maybe_push_cleanup_level (type);
return var;
}
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 1caa93dbd0d..edadf0f0f3a 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -1059,10 +1059,16 @@ add_method (tree type, tree method, tree using_decl)
}
}
+ /* A class should never have more than one destructor. */
+ if (current_fns && DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (method))
+ return false;
+
/* Add the new binding. */
overload = build_overload (method, current_fns);
- if (!conv_p && slot >= CLASSTYPE_FIRST_CONVERSION_SLOT && !complete_p)
+ if (conv_p)
+ TYPE_HAS_CONVERSION (type) = 1;
+ else if (slot >= CLASSTYPE_FIRST_CONVERSION_SLOT && !complete_p)
push_class_level_binding (DECL_NAME (method), overload);
if (insert_p)
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 009cbf36d03..7757421a691 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -2447,6 +2447,11 @@ extern void decl_shadowed_for_var_insert (tree, tree);
#define BRACE_ENCLOSED_INITIALIZER_P(NODE) \
(TREE_CODE (NODE) == CONSTRUCTOR && !TREE_TYPE (NODE))
+/* True if NODE is a compound-literal, i.e., a brace-enclosed
+ initializer cast to a particular type. */
+#define COMPOUND_LITERAL_P(NODE) \
+ (TREE_CODE (NODE) == CONSTRUCTOR && TREE_HAS_CONSTRUCTOR (NODE))
+
#define EMPTY_CONSTRUCTOR_P(NODE) (TREE_CODE (NODE) == CONSTRUCTOR \
&& VEC_empty (constructor_elt, \
CONSTRUCTOR_ELTS (NODE)) \
@@ -3891,6 +3896,7 @@ extern const char *cxx_comdat_group (tree);
extern bool cp_missing_noreturn_ok_p (tree);
extern void initialize_artificial_var (tree, tree);
extern tree check_var_type (tree, tree);
+extern tree reshape_init (tree, tree);
extern bool have_extern_spec;
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 61d67bb5beb..3983f981367 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -105,7 +105,6 @@ static void store_parm_decls (tree);
static void initialize_local_var (tree, tree);
static void expand_static_init (tree, tree);
static tree next_initializable_field (tree);
-static tree reshape_init (tree, tree);
/* Erroneous argument lists can use this *IFF* they do not modify it. */
tree error_mark_list;
@@ -4404,8 +4403,7 @@ reshape_init_vector (tree type, reshape_iter *d)
gcc_assert (TREE_CODE (type) == VECTOR_TYPE);
- if (TREE_CODE (d->cur->value) == CONSTRUCTOR
- && TREE_HAS_CONSTRUCTOR (d->cur->value))
+ if (COMPOUND_LITERAL_P (d->cur->value))
{
tree value = d->cur->value;
if (!same_type_p (TREE_TYPE (value), type))
@@ -4589,7 +4587,7 @@ reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p)
we should add a call to reshape_init in finish_compound_literal,
before calling digest_init, so changing this code would still
not be necessary. */
- if (!TREE_HAS_CONSTRUCTOR (init))
+ if (!COMPOUND_LITERAL_P (init))
{
++d->cur;
gcc_assert (BRACE_ENCLOSED_INITIALIZER_P (init));
@@ -4629,14 +4627,13 @@ reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p)
routine transforms INIT from the former form into the latter. The
revised CONSTRUCTOR node is returned. */
-static tree
+tree
reshape_init (tree type, tree init)
{
VEC(constructor_elt, gc) *v;
reshape_iter d;
tree new_init;
- gcc_assert (TREE_CODE (init) == CONSTRUCTOR);
gcc_assert (BRACE_ENCLOSED_INITIALIZER_P (init));
v = CONSTRUCTOR_ELTS (init);
@@ -4725,7 +4722,7 @@ check_initializer (tree decl, tree init, int flags, tree *cleanup)
/* Do not reshape constructors of vectors (they don't need to be
reshaped. */
if (TREE_CODE (init) == CONSTRUCTOR
- && !TREE_HAS_CONSTRUCTOR (init)
+ && !COMPOUND_LITERAL_P (init)
&& !TREE_TYPE (init)) /* ptrmemfunc */
{
init = reshape_init (type, init);
@@ -4748,7 +4745,6 @@ check_initializer (tree decl, tree init, int flags, tree *cleanup)
goto initialize_aggr;
else if (TREE_CODE (init) == CONSTRUCTOR)
{
- gcc_assert (BRACE_ENCLOSED_INITIALIZER_P (init));
if (TYPE_NON_AGGREGATE_CLASS (type))
{
error ("%qD must be initialized by constructor, "
@@ -4967,13 +4963,17 @@ initialize_local_var (tree decl, tree init)
/* DECL is a VAR_DECL for a compiler-generated variable with static
storage duration (like a virtual table) whose initializer is a
- compile-time constant. Initialize the variable and provide it to
- the back end. */
+ compile-time constant. INIT must be either a TREE_LIST of values,
+ or a CONSTRUCTOR. Initialize the variable and provide it to the
+ back end. */
void
initialize_artificial_var (tree decl, tree init)
{
- DECL_INITIAL (decl) = build_constructor_from_list (NULL_TREE, init);
+ if (TREE_CODE (init) == TREE_LIST)
+ init = build_constructor_from_list (NULL_TREE, init);
+ gcc_assert (TREE_CODE (init) == CONSTRUCTOR);
+ DECL_INITIAL (decl) = init;
DECL_INITIALIZED_P (decl) = 1;
determine_visibility (decl);
layout_var_decl (decl);
@@ -6854,10 +6854,6 @@ grokdeclarator (const cp_declarator *declarator,
else if (TREE_CODE (qualifying_scope) == NAMESPACE_DECL)
in_namespace = qualifying_scope;
}
- if (TREE_CODE (decl) == BASELINK)
- decl = BASELINK_FUNCTIONS (decl);
- if (decl == error_mark_node)
- return error_mark_node;
switch (TREE_CODE (decl))
{
case BIT_NOT_EXPR:
@@ -6921,11 +6917,6 @@ grokdeclarator (const cp_declarator *declarator,
}
break;
- case TYPE_DECL:
- dname = constructor_name (TREE_TYPE (decl));
- name = IDENTIFIER_POINTER (dname);
- break;
-
default:
gcc_unreachable ();
}
@@ -7391,8 +7382,6 @@ grokdeclarator (const cp_declarator *declarator,
else
{
unqualified_id = id_declarator->u.id.unqualified_name;
- if (TREE_CODE (unqualified_id) == BASELINK)
- unqualified_id = BASELINK_FUNCTIONS (unqualified_id);
switch (TREE_CODE (unqualified_id))
{
case BIT_NOT_EXPR:
@@ -7400,11 +7389,6 @@ grokdeclarator (const cp_declarator *declarator,
= constructor_name (TREE_OPERAND (unqualified_id, 0));
break;
- case TYPE_DECL:
- unqualified_id
- = constructor_name (TREE_TYPE (unqualified_id));
- break;
-
case IDENTIFIER_NODE:
case TEMPLATE_ID_EXPR:
break;
@@ -7494,8 +7478,6 @@ grokdeclarator (const cp_declarator *declarator,
&& (friendp == 0 || dname == current_class_name))
ctype = current_class_type;
- if (ctype && sfk == sfk_conversion)
- TYPE_HAS_CONVERSION (ctype) = 1;
if (ctype && (sfk == sfk_constructor
|| sfk == sfk_destructor))
{
@@ -7738,28 +7720,36 @@ grokdeclarator (const cp_declarator *declarator,
}
if (ctype == current_class_type)
- pedwarn ("extra qualification %<%T::%> on member %qs",
- ctype, name);
+ {
+ if (friendp)
+ pedwarn ("member functions are implicitly friends of their class");
+ else
+ pedwarn ("extra qualification %<%T::%> on member %qs",
+ ctype, name);
+ }
else if (TREE_CODE (type) == FUNCTION_TYPE)
{
tree sname = declarator->u.id.unqualified_name;
+ if (current_class_type
+ && (!friendp || funcdef_flag))
+ {
+ error (funcdef_flag
+ ? "cannot define member function %<%T::%s%> within %<%T%>"
+ : "cannot declare member function %<%T::%s%> within %<%T%>",
+ ctype, name, current_class_type);
+ return error_mark_node;
+ }
+
if (TREE_CODE (sname) == IDENTIFIER_NODE
&& NEW_DELETE_OPNAME_P (sname))
/* Overloaded operator new and operator delete
are always static functions. */
;
- else if (current_class_type == NULL_TREE || friendp)
- type
- = build_method_type_directly (ctype,
- TREE_TYPE (type),
- TYPE_ARG_TYPES (type));
else
- {
- error ("cannot declare member function %<%T::%s%> within %<%T%>",
- ctype, name, current_class_type);
- return error_mark_node;
- }
+ type = build_method_type_directly (ctype,
+ TREE_TYPE (type),
+ TYPE_ARG_TYPES (type));
}
else if (declspecs->specs[(int)ds_typedef]
|| COMPLETE_TYPE_P (complete_type (ctype)))
@@ -8312,7 +8302,7 @@ grokdeclarator (const cp_declarator *declarator,
{
/* Friends are treated specially. */
if (ctype == current_class_type)
- warning (0, "member functions are implicitly friends of their class");
+ ; /* We already issued a pedwarn. */
else if (decl && DECL_NAME (decl))
{
if (template_class_depth (current_class_type) == 0)
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index dcf3217dfb3..47b476cd500 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -3233,14 +3233,27 @@ check_default_args (tree x)
}
}
-/* Mark DECL as "used" in the program. If DECL is a specialization or
- implicitly declared class member, generate the actual definition. */
+/* Mark DECL (eithet a _DECL or a BASELINK) as "used" in the program.
+ If DECL is a specialization or implicitly declared class member,
+ generate the actual definition. */
void
mark_used (tree decl)
{
HOST_WIDE_INT saved_processing_template_decl = 0;
+ /* If DECL is a BASELINK for a single function, then treat it just
+ like the DECL for the function. Otherwise, if the BASELINK is
+ for an overloaded function, we don't know which function was
+ actually used until after overload resolution. */
+ if (TREE_CODE (decl) == BASELINK)
+ {
+ decl = BASELINK_FUNCTIONS (decl);
+ if (really_overloaded_fn (decl))
+ return;
+ decl = OVL_CURRENT (decl);
+ }
+
TREE_USED (decl) = 1;
/* If we don't need a value, then we don't need to synthesize DECL. */
if (skip_evaluation)
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index f19842dddc1..3953fccd9e4 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -1271,11 +1271,10 @@ expand_aggr_init_1 (tree binfo, tree true_exp, tree exp, tree init, int flags)
as TARGET_EXPRs. */
if (init && TREE_CODE (exp) == VAR_DECL
- && TREE_CODE (init) == CONSTRUCTOR
- && TREE_HAS_CONSTRUCTOR (init))
+ && COMPOUND_LITERAL_P (init))
{
/* If store_init_value returns NULL_TREE, the INIT has been
- record in the DECL_INITIAL for EXP. That means there's
+ recorded as the DECL_INITIAL for EXP. That means there's
nothing more we have to do. */
init = store_init_value (exp, init);
if (init)
@@ -1597,7 +1596,7 @@ constant_value_1 (tree decl, bool integral_p)
mark_used (decl);
init = DECL_INITIAL (decl);
}
- if (!(init || init == error_mark_node)
+ if (!init || init == error_mark_node
|| !TREE_TYPE (init)
|| (integral_p
? !INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (init))
@@ -1610,7 +1609,7 @@ constant_value_1 (tree decl, bool integral_p)
|| TREE_CODE (init) == CONSTRUCTOR
|| TREE_CODE (init) == STRING_CST)))
break;
- decl = init;
+ decl = unshare_expr (init);
}
return decl;
}
diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c
index 5ca2af12189..9fd896fb744 100644
--- a/gcc/cp/name-lookup.c
+++ b/gcc/cp/name-lookup.c
@@ -2670,7 +2670,13 @@ push_class_level_binding (tree name, tree x)
INHERITED_VALUE_BINDING_P (binding) = 0;
}
else
- old_decl = bval;
+ {
+ old_decl = bval;
+ /* Any inherited type declaration is hidden by the type
+ declaration in the derived class. */
+ if (TREE_CODE (x) == TYPE_DECL && DECL_ARTIFICIAL (x))
+ binding->type = NULL_TREE;
+ }
}
else if (TREE_CODE (x) == OVERLOAD && is_overloaded_fn (bval))
old_decl = bval;
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 1cc94684122..9b194b2afd1 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -817,12 +817,15 @@ make_declarator (cp_declarator_kind kind)
return declarator;
}
-/* Make a declarator for a generalized identifier. If non-NULL, the
- identifier is QUALIFYING_SCOPE::UNQUALIFIED_NAME; otherwise, it is
- just UNQUALIFIED_NAME. */
+/* Make a declarator for a generalized identifier. If
+ QUALIFYING_SCOPE is non-NULL, the identifier is
+ QUALIFYING_SCOPE::UNQUALIFIED_NAME; otherwise, it is just
+ UNQUALIFIED_NAME. SFK indicates the kind of special function this
+ is, if any. */
static cp_declarator *
-make_id_declarator (tree qualifying_scope, tree unqualified_name)
+make_id_declarator (tree qualifying_scope, tree unqualified_name,
+ special_function_kind sfk)
{
cp_declarator *declarator;
@@ -839,10 +842,14 @@ make_id_declarator (tree qualifying_scope, tree unqualified_name)
if (qualifying_scope && TYPE_P (qualifying_scope))
qualifying_scope = TYPE_MAIN_VARIANT (qualifying_scope);
+ gcc_assert (TREE_CODE (unqualified_name) == IDENTIFIER_NODE
+ || TREE_CODE (unqualified_name) == BIT_NOT_EXPR
+ || TREE_CODE (unqualified_name) == TEMPLATE_ID_EXPR);
+
declarator = make_declarator (cdk_id);
declarator->u.id.qualifying_scope = qualifying_scope;
declarator->u.id.unqualified_name = unqualified_name;
- declarator->u.id.sfk = sfk_none;
+ declarator->u.id.sfk = sfk;
return declarator;
}
@@ -3524,7 +3531,6 @@ cp_parser_nested_name_specifier_opt (cp_parser *parser,
bool is_declaration)
{
bool success = false;
- tree access_check = NULL_TREE;
cp_token_position start = 0;
cp_token *token;
@@ -3544,9 +3550,10 @@ cp_parser_nested_name_specifier_opt (cp_parser *parser,
/* Remember where the nested-name-specifier starts. */
if (cp_parser_uncommitted_to_tentative_parse_p (parser))
- start = cp_lexer_token_position (parser->lexer, false);
-
- push_deferring_access_checks (dk_deferred);
+ {
+ start = cp_lexer_token_position (parser->lexer, false);
+ push_deferring_access_checks (dk_deferred);
+ }
while (true)
{
@@ -3725,10 +3732,6 @@ cp_parser_nested_name_specifier_opt (cp_parser *parser,
parser->scope = new_scope;
}
- /* Retrieve any deferred checks. Do not pop this access checks yet
- so the memory will not be reclaimed during token replacing below. */
- access_check = get_deferred_access_checks ();
-
/* If parsing tentatively, replace the sequence of tokens that makes
up the nested-name-specifier with a CPP_NESTED_NAME_SPECIFIER
token. That way, should we re-parse the token stream, we will
@@ -3736,19 +3739,27 @@ cp_parser_nested_name_specifier_opt (cp_parser *parser,
we issue duplicate error messages. */
if (success && start)
{
- cp_token *token = cp_lexer_token_at (parser->lexer, start);
+ cp_token *token;
+ tree access_checks;
+ token = cp_lexer_token_at (parser->lexer, start);
/* Reset the contents of the START token. */
token->type = CPP_NESTED_NAME_SPECIFIER;
- token->value = build_tree_list (access_check, parser->scope);
+ /* Retrieve any deferred checks. Do not pop this access checks yet
+ so the memory will not be reclaimed during token replacing below. */
+ access_checks = get_deferred_access_checks ();
+ token->value = build_tree_list (copy_list (access_checks),
+ parser->scope);
TREE_TYPE (token->value) = parser->qualifying_scope;
token->keyword = RID_MAX;
/* Purge all subsequent tokens. */
cp_lexer_purge_tokens_after (parser->lexer, start);
}
+
+ if (start)
+ pop_to_parent_deferring_access_checks ();
- pop_deferring_access_checks ();
return success ? parser->scope : NULL_TREE;
}
@@ -7866,7 +7877,7 @@ cp_parser_mem_initializer_list (cp_parser* parser)
/* Parse the mem-initializer. */
mem_initializer = cp_parser_mem_initializer (parser);
/* Add it to the list, unless it was erroneous. */
- if (mem_initializer)
+ if (mem_initializer != error_mark_node)
{
TREE_CHAIN (mem_initializer) = mem_initializer_list;
mem_initializer_list = mem_initializer;
@@ -7895,7 +7906,8 @@ cp_parser_mem_initializer_list (cp_parser* parser)
Returns a TREE_LIST. The TREE_PURPOSE is the TYPE (for a base
class) or FIELD_DECL (for a non-static data member) to initialize;
- the TREE_VALUE is the expression-list. */
+ the TREE_VALUE is the expression-list. An empty initialization
+ list is represented by void_list_node. */
static tree
cp_parser_mem_initializer (cp_parser* parser)
@@ -7920,12 +7932,14 @@ cp_parser_mem_initializer (cp_parser* parser)
= cp_parser_parenthesized_expression_list (parser, false,
/*cast_p=*/false,
/*non_constant_p=*/NULL);
+ if (expression_list == error_mark_node)
+ return error_mark_node;
if (!expression_list)
expression_list = void_type_node;
in_base_initializer = 0;
- return member ? build_tree_list (member, expression_list) : NULL_TREE;
+ return member ? build_tree_list (member, expression_list) : error_mark_node;
}
/* Parse a mem-initializer-id.
@@ -10169,6 +10183,11 @@ cp_parser_elaborated_type_specifier (cp_parser* parser,
(parser->num_template_parameter_lists
&& (cp_parser_next_token_starts_class_definition_p (parser)
|| cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)));
+ /* An unqualified name was used to reference this type, so
+ there were no qualifying templates. */
+ if (!cp_parser_check_template_parameters (parser,
+ /*num_templates=*/0))
+ return error_mark_node;
type = xref_tag (tag_type, identifier, ts, template_p);
}
}
@@ -10543,7 +10562,7 @@ cp_parser_using_declaration (cp_parser* parser)
/* The function we call to handle a using-declaration is different
depending on what scope we are in. */
- if (identifier == error_mark_node)
+ if (qscope == error_mark_node || identifier == error_mark_node)
;
else if (TREE_CODE (identifier) != IDENTIFIER_NODE
&& TREE_CODE (identifier) != BIT_NOT_EXPR)
@@ -11418,6 +11437,7 @@ cp_parser_direct_declarator (cp_parser* parser,
{
tree qualifying_scope;
tree unqualified_name;
+ special_function_kind sfk;
/* Parse a declarator-id */
if (dcl_kind == CP_PARSER_DECLARATOR_EITHER)
@@ -11475,9 +11495,7 @@ cp_parser_direct_declarator (cp_parser* parser,
qualifying_scope = type;
}
- declarator = make_id_declarator (qualifying_scope,
- unqualified_name);
- declarator->id_loc = token->location;
+ sfk = sfk_none;
if (unqualified_name)
{
tree class_type;
@@ -11488,28 +11506,9 @@ cp_parser_direct_declarator (cp_parser* parser,
else
class_type = current_class_type;
- if (class_type)
+ if (TREE_CODE (unqualified_name) == TYPE_DECL)
{
- if (TREE_CODE (unqualified_name) == BIT_NOT_EXPR)
- declarator->u.id.sfk = sfk_destructor;
- else if (IDENTIFIER_TYPENAME_P (unqualified_name))
- declarator->u.id.sfk = sfk_conversion;
- else if (/* There's no way to declare a constructor
- for an anonymous type, even if the type
- got a name for linkage purposes. */
- !TYPE_WAS_ANONYMOUS (class_type)
- && (constructor_name_p (unqualified_name,
- class_type)
- || (TREE_CODE (unqualified_name) == TYPE_DECL
- && (same_type_p
- (TREE_TYPE (unqualified_name),
- class_type)))))
- declarator->u.id.sfk = sfk_constructor;
-
- if (ctor_dtor_or_conv_p && declarator->u.id.sfk != sfk_none)
- *ctor_dtor_or_conv_p = -1;
- if (qualifying_scope
- && TREE_CODE (unqualified_name) == TYPE_DECL
+ if (qualifying_scope
&& CLASSTYPE_USE_TEMPLATE (TREE_TYPE (unqualified_name)))
{
error ("invalid use of constructor as a template");
@@ -11518,9 +11517,50 @@ cp_parser_direct_declarator (cp_parser* parser,
class_type,
DECL_NAME (TYPE_TI_TEMPLATE (class_type)),
class_type, class_type);
+ declarator = cp_error_declarator;
+ break;
+ }
+ else if (class_type
+ && same_type_p (TREE_TYPE (unqualified_name),
+ class_type))
+ unqualified_name = constructor_name (class_type);
+ else
+ {
+ /* We do not attempt to print the declarator
+ here because we do not have enough
+ information about its original syntactic
+ form. */
+ error ("invalid declarator");
+ declarator = cp_error_declarator;
+ break;
}
}
+
+ if (class_type)
+ {
+ if (TREE_CODE (unqualified_name) == BIT_NOT_EXPR)
+ sfk = sfk_destructor;
+ else if (IDENTIFIER_TYPENAME_P (unqualified_name))
+ sfk = sfk_conversion;
+ else if (/* There's no way to declare a constructor
+ for an anonymous type, even if the type
+ got a name for linkage purposes. */
+ !TYPE_WAS_ANONYMOUS (class_type)
+ && constructor_name_p (unqualified_name,
+ class_type))
+ {
+ unqualified_name = constructor_name (class_type);
+ sfk = sfk_constructor;
+ }
+
+ if (ctor_dtor_or_conv_p && sfk != sfk_none)
+ *ctor_dtor_or_conv_p = -1;
+ }
}
+ declarator = make_id_declarator (qualifying_scope,
+ unqualified_name,
+ sfk);
+ declarator->id_loc = token->location;
handle_declarator:;
scope = get_scope_of_declarator (declarator);
@@ -11730,6 +11770,7 @@ cp_parser_cv_qualifier_seq_opt (cp_parser* parser)
static tree
cp_parser_declarator_id (cp_parser* parser)
{
+ tree id;
/* The expression must be an id-expression. Assume that qualified
names are the names of types so that:
@@ -11744,11 +11785,14 @@ cp_parser_declarator_id (cp_parser* parser)
int S<T>::R<T>::i = 3;
will work, too. */
- return cp_parser_id_expression (parser,
- /*template_keyword_p=*/false,
- /*check_dependency_p=*/false,
- /*template_p=*/NULL,
- /*declarator_p=*/true);
+ id = cp_parser_id_expression (parser,
+ /*template_keyword_p=*/false,
+ /*check_dependency_p=*/false,
+ /*template_p=*/NULL,
+ /*declarator_p=*/true);
+ if (BASELINK_P (id))
+ id = BASELINK_FUNCTIONS (id);
+ return id;
}
/* Parse a type-id.
@@ -13530,7 +13574,8 @@ cp_parser_member_declaration (cp_parser* parser)
/* Create the bitfield declaration. */
decl = grokbitfield (identifier
? make_id_declarator (NULL_TREE,
- identifier)
+ identifier,
+ sfk_none)
: NULL,
&decl_specifiers,
width);
@@ -17187,7 +17232,8 @@ cp_parser_objc_class_ivars (cp_parser* parser)
{
/* Get the name of the bitfield. */
declarator = make_id_declarator (NULL_TREE,
- cp_parser_identifier (parser));
+ cp_parser_identifier (parser),
+ sfk_none);
eat_colon:
cp_lexer_consume_token (parser->lexer); /* Eat ':'. */
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index ecceb5cc57b..3cf5e4e4759 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -8127,6 +8127,10 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
in response to the saved STMT_IS_FULL_EXPR_P setting. */
gcc_unreachable ();
+ case OFFSET_REF:
+ mark_used (TREE_OPERAND (t, 1));
+ return t;
+
default:
return t;
}
@@ -9313,6 +9317,8 @@ instantiate_template (tree tmpl, tree targ_ptr, tsubst_flags_t complain)
/* Substitute template parameters. */
fndecl = tsubst (DECL_TEMPLATE_RESULT (gen_tmpl),
targ_ptr, complain, gen_tmpl);
+ if (fndecl == error_mark_node)
+ return error_mark_node;
/* Now we know the specialization, compute access previously
deferred. */
diff --git a/gcc/cp/ptree.c b/gcc/cp/ptree.c
index 8a7ba940063..d471714afc0 100644
--- a/gcc/cp/ptree.c
+++ b/gcc/cp/ptree.c
@@ -168,6 +168,12 @@ cxx_print_xnode (FILE *file, tree node, int indent)
{
switch (TREE_CODE (node))
{
+ case BASELINK:
+ print_node (file, "functions", BASELINK_FUNCTIONS (node), indent + 4);
+ print_node (file, "binfo", BASELINK_BINFO (node), indent + 4);
+ print_node (file, "access_binfo", BASELINK_ACCESS_BINFO (node),
+ indent + 4);
+ break;
case OVERLOAD:
print_node (file, "function", OVL_FUNCTION (node), indent+4);
print_node (file, "chain", TREE_CHAIN (node), indent+4);
diff --git a/gcc/cp/repo.c b/gcc/cp/repo.c
index eee3b87f8d3..9c7317b6e97 100644
--- a/gcc/cp/repo.c
+++ b/gcc/cp/repo.c
@@ -298,6 +298,12 @@ repo_emit_p (tree decl)
&& (!TYPE_LANG_SPECIFIC (type)
|| !CLASSTYPE_TEMPLATE_INSTANTIATION (type)))
return 2;
+ /* Static data members initialized by constant expressions must
+ be processed where needed so that their definitions are
+ available. */
+ if (DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl)
+ && DECL_CLASS_SCOPE_P (decl))
+ return 2;
}
else if (!DECL_TEMPLATE_INSTANTIATION (decl))
return 2;
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index 3b0e502a687..1b5e7d4ec37 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -1517,6 +1517,13 @@ finish_qualified_id_expr (tree qualifying_class,
if (template_p)
check_template_keyword (expr);
+ if (DECL_P (expr))
+ mark_used (expr);
+ else if (BASELINK_P (expr)
+ && TREE_CODE (BASELINK_FUNCTIONS (expr)) != TEMPLATE_ID_EXPR
+ && !really_overloaded_fn (BASELINK_FUNCTIONS (expr)))
+ mark_used (OVL_CURRENT (BASELINK_FUNCTIONS (expr)));
+
/* If EXPR occurs as the operand of '&', use special handling that
permits a pointer-to-member. */
if (address_p && done)
@@ -2003,12 +2010,12 @@ finish_compound_literal (tree type, VEC(constructor_elt,gc) *initializer_list)
/* Build a CONSTRUCTOR for the INITIALIZER_LIST. */
compound_literal = build_constructor (NULL_TREE, initializer_list);
- /* Mark it as a compound-literal. */
if (processing_template_decl)
TREE_TYPE (compound_literal) = type;
else
{
/* Check the initialization. */
+ compound_literal = reshape_init (type, compound_literal);
compound_literal = digest_init (type, compound_literal);
/* If the TYPE was an array type with an unknown bound, then we can
figure out the dimension now. For example, something like:
@@ -2021,7 +2028,9 @@ finish_compound_literal (tree type, VEC(constructor_elt,gc) *initializer_list)
compound_literal, 1);
}
+ /* Mark it as a compound-literal. */
TREE_HAS_CONSTRUCTOR (compound_literal) = 1;
+
return compound_literal;
}
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index b1eccb3b3c6..291d5216ebc 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -4190,75 +4190,93 @@ build_unary_op (enum tree_code code, tree xarg, int noconvert)
break;
}
- /* Allow the address of a constructor if all the elements
- are constant. */
- if (TREE_CODE (arg) == CONSTRUCTOR && TREE_HAS_CONSTRUCTOR (arg)
- && TREE_CONSTANT (arg))
- ;
/* Anything not already handled and not a true memory reference
is an error. */
- else if (TREE_CODE (argtype) != FUNCTION_TYPE
- && TREE_CODE (argtype) != METHOD_TYPE
- && TREE_CODE (arg) != OFFSET_REF
- && !lvalue_or_else (arg, lv_addressof))
+ if (TREE_CODE (argtype) != FUNCTION_TYPE
+ && TREE_CODE (argtype) != METHOD_TYPE
+ && TREE_CODE (arg) != OFFSET_REF
+ /* Permit users to take the address of a compound-literal
+ with sufficient simple elements. */
+ && !(COMPOUND_LITERAL_P (arg) && TREE_STATIC (arg))
+ && !lvalue_or_else (arg, lv_addressof))
return error_mark_node;
if (argtype != error_mark_node)
argtype = build_pointer_type (argtype);
- {
- tree addr;
+ /* In a template, we are processing a non-dependent expression
+ so we can just form an ADDR_EXPR with the correct type. */
+ if (processing_template_decl)
+ {
+ val = build_address (arg);
+ if (TREE_CODE (arg) == OFFSET_REF)
+ PTRMEM_OK_P (val) = PTRMEM_OK_P (arg);
+ return val;
+ }
- if (TREE_CODE (arg) != COMPONENT_REF
- /* Inside a template, we are processing a non-dependent
- expression so we can just form an ADDR_EXPR with the
- correct type. */
- || processing_template_decl)
- {
- addr = build_address (arg);
- if (TREE_CODE (arg) == OFFSET_REF)
- PTRMEM_OK_P (addr) = PTRMEM_OK_P (arg);
- }
- else if (TREE_CODE (TREE_OPERAND (arg, 1)) == BASELINK)
- {
- tree fn = BASELINK_FUNCTIONS (TREE_OPERAND (arg, 1));
-
- /* We can only get here with a single static member
- function. */
- gcc_assert (TREE_CODE (fn) == FUNCTION_DECL
- && DECL_STATIC_FUNCTION_P (fn));
- mark_used (fn);
- addr = build_address (fn);
- if (TREE_SIDE_EFFECTS (TREE_OPERAND (arg, 0)))
- /* Do not lose object's side effects. */
- addr = build2 (COMPOUND_EXPR, TREE_TYPE (addr),
- TREE_OPERAND (arg, 0), addr);
- }
- else if (DECL_C_BIT_FIELD (TREE_OPERAND (arg, 1)))
- {
- error ("attempt to take address of bit-field structure member %qD",
- TREE_OPERAND (arg, 1));
- return error_mark_node;
- }
- else
- {
- tree object = TREE_OPERAND (arg, 0);
- tree field = TREE_OPERAND (arg, 1);
- gcc_assert (same_type_ignoring_top_level_qualifiers_p
- (TREE_TYPE (object), decl_type_context (field)));
- addr = build_address (arg);
- }
+ /* If the user has taken the address of the compound literal,
+ create a variable to contain the value of the literal and
+ then return the address of that variable. */
+ if (COMPOUND_LITERAL_P (arg))
+ {
+ tree var;
+ gcc_assert (TREE_STATIC (arg));
+ var = create_temporary_var (TREE_TYPE (arg));
+ TREE_STATIC (var) = 1;
+ set_compound_literal_name (var);
+ initialize_artificial_var (var, arg);
+ arg = pushdecl (var);
+ /* Since each compound literal is unique, pushdecl should
+ never find a pre-existing variable with the same
+ name. */
+ gcc_assert (arg == var);
+ }
+
+ if (TREE_CODE (arg) != COMPONENT_REF)
+ {
+ val = build_address (arg);
+ if (TREE_CODE (arg) == OFFSET_REF)
+ PTRMEM_OK_P (val) = PTRMEM_OK_P (arg);
+ }
+ else if (TREE_CODE (TREE_OPERAND (arg, 1)) == BASELINK)
+ {
+ tree fn = BASELINK_FUNCTIONS (TREE_OPERAND (arg, 1));
+
+ /* We can only get here with a single static member
+ function. */
+ gcc_assert (TREE_CODE (fn) == FUNCTION_DECL
+ && DECL_STATIC_FUNCTION_P (fn));
+ mark_used (fn);
+ val = build_address (fn);
+ if (TREE_SIDE_EFFECTS (TREE_OPERAND (arg, 0)))
+ /* Do not lose object's side effects. */
+ val = build2 (COMPOUND_EXPR, TREE_TYPE (val),
+ TREE_OPERAND (arg, 0), val);
+ }
+ else if (DECL_C_BIT_FIELD (TREE_OPERAND (arg, 1)))
+ {
+ error ("attempt to take address of bit-field structure member %qD",
+ TREE_OPERAND (arg, 1));
+ return error_mark_node;
+ }
+ else
+ {
+ tree object = TREE_OPERAND (arg, 0);
+ tree field = TREE_OPERAND (arg, 1);
+ gcc_assert (same_type_ignoring_top_level_qualifiers_p
+ (TREE_TYPE (object), decl_type_context (field)));
+ val = build_address (arg);
+ }
- if (TREE_CODE (argtype) == POINTER_TYPE
- && TREE_CODE (TREE_TYPE (argtype)) == METHOD_TYPE)
- {
- build_ptrmemfunc_type (argtype);
- addr = build_ptrmemfunc (argtype, addr, 0,
- /*c_cast_p=*/false);
- }
+ if (TREE_CODE (argtype) == POINTER_TYPE
+ && TREE_CODE (TREE_TYPE (argtype)) == METHOD_TYPE)
+ {
+ build_ptrmemfunc_type (argtype);
+ val = build_ptrmemfunc (argtype, val, 0,
+ /*c_cast_p=*/false);
+ }
- return addr;
- }
+ return val;
default:
break;
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index 42520e2f767..a37a3d6f43e 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -712,8 +712,7 @@ digest_init (tree type, tree init)
return process_init_constructor (type, init);
else
{
- if (TREE_HAS_CONSTRUCTOR (init)
- && TREE_CODE (type) == ARRAY_TYPE)
+ if (COMPOUND_LITERAL_P (init) && TREE_CODE (type) == ARRAY_TYPE)
{
error ("cannot initialize aggregate of type %qT with "
"a compound literal", type);
diff --git a/gcc/cse.c b/gcc/cse.c
index fdcbe19ba65..a9dc0f1e720 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -2538,16 +2538,26 @@ exp_equiv_p (rtx x, rtx y, int validate, bool for_gcse)
case MEM:
if (for_gcse)
{
- /* Can't merge two expressions in different alias sets, since we
- can decide that the expression is transparent in a block when
- it isn't, due to it being set with the different alias set. */
- if (MEM_ALIAS_SET (x) != MEM_ALIAS_SET (y))
- return 0;
-
/* A volatile mem should not be considered equivalent to any
other. */
if (MEM_VOLATILE_P (x) || MEM_VOLATILE_P (y))
return 0;
+
+ /* Can't merge two expressions in different alias sets, since we
+ can decide that the expression is transparent in a block when
+ it isn't, due to it being set with the different alias set.
+
+ Also, can't merge two expressions with different MEM_ATTRS.
+ They could e.g. be two different entities allocated into the
+ same space on the stack (see e.g. PR25130). In that case, the
+ MEM addresses can be the same, even though the two MEMs are
+ absolutely not equivalent.
+
+ But because really all MEM attributes should be the same for
+ equivalent MEMs, we just use the invariant that MEMs that have
+ the same attributes share the same mem_attrs data structure. */
+ if (MEM_ATTRS (x) != MEM_ATTRS (y))
+ return 0;
}
break;
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index bb70e2f95ee..b8fb443bcf8 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -9411,7 +9411,7 @@ loc_descriptor_from_tree_1 (tree loc, int want_address)
return 0;
/* If we've got an address and don't want one, dereference. */
- if (!want_address && have_address)
+ if (!want_address && have_address && ret)
{
HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (loc));
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 53bff455054..81c8ae150a4 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -254,7 +254,7 @@ mem_attrs_htab_hash (const void *x)
return (p->alias ^ (p->align * 1000)
^ ((p->offset ? INTVAL (p->offset) : 0) * 50000)
^ ((p->size ? INTVAL (p->size) : 0) * 2500000)
- ^ (size_t) p->expr);
+ ^ (size_t) iterative_hash_expr (p->expr, 0));
}
/* Returns nonzero if the value represented by X (which is really a
@@ -267,8 +267,11 @@ mem_attrs_htab_eq (const void *x, const void *y)
mem_attrs *p = (mem_attrs *) x;
mem_attrs *q = (mem_attrs *) y;
- return (p->alias == q->alias && p->expr == q->expr && p->offset == q->offset
- && p->size == q->size && p->align == q->align);
+ return (p->alias == q->alias && p->offset == q->offset
+ && p->size == q->size && p->align == q->align
+ && (p->expr == q->expr
+ || (p->expr != NULL_TREE && q->expr != NULL_TREE
+ && operand_equal_p (p->expr, q->expr, 0))));
}
/* Allocate a new mem_attrs structure and insert it into the hash table if
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index de182c334b9..86287931ca0 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -2577,8 +2577,11 @@ operand_equal_p (tree arg0, tree arg1, unsigned int flags)
&& OP_SAME_WITH_NULL (3));
case COMPONENT_REF:
- /* Handle operand 2 the same as for ARRAY_REF. */
- return OP_SAME (0) && OP_SAME (1) && OP_SAME_WITH_NULL (2);
+ /* Handle operand 2 the same as for ARRAY_REF. Operand 0
+ may be NULL when we're called to compare MEM_EXPRs. */
+ return OP_SAME_WITH_NULL (0)
+ && OP_SAME (1)
+ && OP_SAME_WITH_NULL (2);
case BIT_FIELD_REF:
return OP_SAME (0) && OP_SAME (1) && OP_SAME (2);
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index d22be2aceb0..b547356bd2a 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,128 @@
+2005-12-31 Steven G. Kargl <kargls@comcast.net>
+
+ PR fortran/25106
+ PR fortran/25055
+ * io.c (match_dt_format): Remove second arg in gfc_match_st_label.
+ * match.c (gfc_match_small_literal_int): Add cnt argument;
+ (gfc_match_st_label,gfc_match_stopcode): Account for cnt argument.
+ (gfc_match_st_label): Remove allow_zero (second argument), and use
+ cnt for errors.
+ (gfc_match_do,gfc_match_goto): Remove second arg in gfc_match_st_label
+ * match.h (gfc_match_small_literal_int,gfc_match_st_label):
+ Update prototypes.
+ * decl.c (match_char_length,gfc_match_old_kind_spec): Account for cnt.
+ * parse.c (next_free): Account for cnt; Remove second arg in
+ gfc_match_st_label
+ * primary.c (match_kind_param): Ditto.
+
+2005-12-30 Erik Edelmann <eedelman@gcc.gnu.org>
+
+ PR fortran/22607
+ * trans-decl.c(gfc_get_extern_function_decl): Don't set
+ DECL_IS_PURE (fndecl) = 1 for return-by-reference
+ functions.
+
+ fortran/PR 25396
+ * interface.c (gfc_extend_expr): Initialize
+ e->value.function.name to NULL.
+
+2005-12-29 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/25532
+ * trans-types.c (copy_dt_decls_ifequal): Copy declarations for
+ components of derived type components by recursing into
+ gfc_get_derived_type.
+
+2005-12-28 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR fortran/25587
+ * trans-io.c (gfc_build_st_parameter): Correct off by one error.
+
+2005-12-26 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/20889
+ * resolve.c (resolve_structure_cons): Do not attempt to convert
+ the type of mismatched pointer type components, except when
+ the constructor component is BT_UNKNOWN; emit error instead.
+
+ PR fortran/25018
+ * expr.c (check_inquiry): Return FAILURE if there is no symtree to
+ provide a name. Error/warning for assumed character length argument
+ to LEN for an initialization expression, using GFC_GNU_STD. Add an
+ argument to flag that the expression is not restricted.
+ (check_init_expr): Improve the message for a failing variable.
+ (gfc_match_init_expr): Call check_enquiry again to make sure that
+ unsimplified expressions are not causing unnecessary errors.
+
+ PR fortran/19362
+ PR fortran/20244
+ PR fortran/20864
+ PR fortran/25391
+ * interface.c (gfc_compare_types): Broken into two.
+ (gfc_compare_derived_types): Second half of gfc_compare_types with
+ corrections for a missing check that module name is non-NULL and
+ a check for private components.
+ * symbol.c (gfc_free_dt_list): New function.
+ (gfc_free_namespace): Call gfc_free_dt_list.
+ * resolve.c (resolve_symbol): Build the list of derived types in the
+ symbols namespace.
+ * gfortran.h: Define the structure type gfc_dt_list. Add a new field,
+ derived_types to gfc_namespace. Provide a prototye for the new
+ function gfc_compare_derived_types.
+ * trans_types.c(gfc_get_derived_type): Test for the derived type being
+ available in the host namespace. In this case, the host backend
+ declaration is used for the structure and its components. If an
+ unbuilt, equal structure that is not use associated is found in the
+ host namespace, build it there and then. On exit,traverse the
+ namespace of the derived type to see if there are equal but unbuilt.
+ If so, copy the structure and its component declarations.
+ (copy_dt_decls_ifequal): New functions to copy declarations to other
+ equal structure types.
+
+ PR fortran/20862
+ * io.c (gfc_match_format): Make the appearance of a format statement
+ in a module specification block an error.
+
+ PR fortran/23152
+ * match.c (gfc_match_namelist): Set assumed shape arrays in
+ namelists as std=GFC_STD_GNU and assumed size arrays as an
+ unconditional error.
+
+ PR fortran/25069
+ * match.c (gfc_match_namelist): Set the respecification of a USE
+ associated namelist group as std=GFC_STD_GNU. Permit the concatenation
+ on no error.
+
+ PR fortran/25053
+ PR fortran/25063
+ PR fortran/25064
+ PR fortran/25066
+ PR fortran/25067
+ PR fortran/25068
+ PR fortran/25307
+ * io.c (resolve_tag): Change std on IOSTAT != default integer to
+ GFC_STD_GNU and change message accordingly. Add same error for
+ SIZE.
+ (match_dt_element, gfortran.h): Add field err_where to gfc_dt and
+ set it when tags are being matched.
+ (gfc_resolve_dt): Remove tests that can be done before resolution
+ and add some of the new ones here.
+ (check_io_constraints): New function that checks for most of the
+ data transfer constraints. Some of these were previously done in
+ match_io, from where this function is called, and some were done
+ in gfc_resolve_dt.
+ (match_io): Remove most of the tests of constraints and add the
+ call to check_io_constraints.
+
+2005-12-24 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
+
+ PR fortran/18990
+ * gfortran.h (gfc_charlen): Add resolved field.
+ * expr.c (gfc_specification_expr): Accept NULL argument.
+ * resolve.c (gfc_resolve_charlen, gfc_resolve_derived): New.
+ (gfc_resolve_symbol): Resolve derived type definitions. Use
+ resolve_charlen to resolve character lengths.
+
2005-12-22 Steven G. Kargl <kargls@comcast.net>
* decl.c (gfc_match_old_kind_spec,match_type_spec): Use gfc_std_notify
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index cf8bb8447b3..8914956cb98 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -508,14 +508,15 @@ char_len_param_value (gfc_expr ** expr)
static match
match_char_length (gfc_expr ** expr)
{
- int length;
+ int length, cnt;
match m;
m = gfc_match_char ('*');
if (m != MATCH_YES)
return m;
- m = gfc_match_small_literal_int (&length);
+ /* cnt is unused, here. */
+ m = gfc_match_small_literal_int (&length, &cnt);
if (m == MATCH_ERROR)
return m;
@@ -1279,12 +1280,13 @@ match
gfc_match_old_kind_spec (gfc_typespec * ts)
{
match m;
- int original_kind;
+ int original_kind, cnt;
if (gfc_match_char ('*') != MATCH_YES)
return MATCH_NO;
- m = gfc_match_small_literal_int (&ts->kind);
+ /* cnt is unused, here. */
+ m = gfc_match_small_literal_int (&ts->kind, &cnt);
if (m != MATCH_YES)
return MATCH_ERROR;
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index 1ceec01eae0..5862b64fa3b 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -1365,7 +1365,7 @@ not_numeric:
this problem here. */
static try
-check_inquiry (gfc_expr * e)
+check_inquiry (gfc_expr * e, int not_restricted)
{
const char *name;
@@ -1379,6 +1379,10 @@ check_inquiry (gfc_expr * e)
int i;
+ /* An undeclared parameter will get us here (PR25018). */
+ if (e->symtree == NULL)
+ return FAILURE;
+
name = e->symtree->n.sym->name;
for (i = 0; inquiry_function[i]; i++)
@@ -1407,6 +1411,15 @@ check_inquiry (gfc_expr * e)
e->ts = e->symtree->n.sym->ts;
}
+ /* Assumed character length will not reduce to a constant expression
+ with LEN,as required by the standard. */
+ if (i == 4 && not_restricted
+ && e->symtree->n.sym->ts.type == BT_CHARACTER
+ && e->symtree->n.sym->ts.cl->length == NULL)
+ gfc_notify_std (GFC_STD_GNU, "The F95 does not permit the assumed character "
+ "length variable '%s' in constant expression at %L.",
+ e->symtree->n.sym->name, &e->where);
+
return SUCCESS;
}
@@ -1440,7 +1453,7 @@ check_init_expr (gfc_expr * e)
case EXPR_FUNCTION:
t = SUCCESS;
- if (check_inquiry (e) != SUCCESS)
+ if (check_inquiry (e, 1) != SUCCESS)
{
t = SUCCESS;
for (ap = e->value.function.actual; ap; ap = ap->next)
@@ -1478,7 +1491,8 @@ check_init_expr (gfc_expr * e)
break;
}
- gfc_error ("Variable '%s' at %L cannot appear in an initialization "
+ gfc_error ("Parameter '%s' at %L has not been declared or is "
+ "a variable, which does not reduce to a constant "
"expression", e->symtree->n.sym->name, &e->where);
t = FAILURE;
break;
@@ -1557,8 +1571,14 @@ gfc_match_init_expr (gfc_expr ** result)
return MATCH_ERROR;
}
- if (!gfc_is_constant_expr (expr))
- gfc_internal_error ("Initialization expression didn't reduce %C");
+ /* Not all inquiry functions are simplified to constant expressions
+ so it is necessary to call check_inquiry again. */
+ if (!gfc_is_constant_expr (expr)
+ && check_inquiry (expr, 1) == FAILURE)
+ {
+ gfc_error ("Initialization expression didn't reduce %C");
+ return MATCH_ERROR;
+ }
*result = expr;
@@ -1637,7 +1657,7 @@ static try
restricted_intrinsic (gfc_expr * e)
{
/* TODO: Check constraints on inquiry functions. 7.1.6.2 (7). */
- if (check_inquiry (e) == SUCCESS)
+ if (check_inquiry (e, 0) == SUCCESS)
return SUCCESS;
return restricted_args (e->value.function.actual);
@@ -1748,6 +1768,8 @@ check_restricted (gfc_expr * e)
try
gfc_specification_expr (gfc_expr * e)
{
+ if (e == NULL)
+ return SUCCESS;
if (e->ts.type != BT_INTEGER)
{
@@ -1986,6 +2008,26 @@ gfc_check_pointer_assign (gfc_expr * lvalue, gfc_expr * rvalue)
return FAILURE;
}
+ if (rvalue->symtree->n.sym
+ && rvalue->symtree->n.sym->as
+ && rvalue->symtree->n.sym->as->type == AS_ASSUMED_SIZE)
+ {
+ gfc_ref * ref;
+ int dim = 0;
+ int last = 0;
+ for (ref = rvalue->ref; ref; ref = ref->next)
+ if (ref->type == REF_ARRAY)
+ for (dim = 0;dim < ref->u.ar.as->rank; dim++)
+ last = ref->u.ar.end[dim] == NULL;
+ if (last)
+ {
+ gfc_error ("The upper bound in the last dimension of the "
+ "assumed_size array on the rhs of the pointer "
+ "assignment at %L must be set", &rvalue->where);
+ return FAILURE;
+ }
+ }
+
return SUCCESS;
}
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index 24cb95db396..2df2dea7f7d 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -580,6 +580,8 @@ typedef struct gfc_charlen
struct gfc_expr *length;
struct gfc_charlen *next;
tree backend_decl;
+
+ int resolved;
}
gfc_charlen;
@@ -896,6 +898,16 @@ typedef struct gfc_symtree
}
gfc_symtree;
+/* A linked list of derived types in the namespace. */
+typedef struct gfc_dt_list
+{
+ struct gfc_symbol *derived;
+ struct gfc_dt_list *next;
+}
+gfc_dt_list;
+
+#define gfc_get_dt_list() gfc_getmem(sizeof(gfc_dt_list))
+
/* A namespace describes the contents of procedure, module or
interface block. */
@@ -955,6 +967,9 @@ typedef struct gfc_namespace
/* A list of all alternate entry points to this procedure (or NULL). */
gfc_entry_list *entries;
+ /* A list of all derived types in this procedure (or NULL). */
+ gfc_dt_list *derived_types;
+
/* Set to 1 if namespace is a BLOCK DATA program unit. */
int is_block_data;
}
@@ -1416,7 +1431,7 @@ typedef struct
gfc_st_label *format_label;
gfc_st_label *err, *end, *eor;
- locus eor_where, end_where;
+ locus eor_where, end_where, err_where;
}
gfc_dt;
@@ -1975,6 +1990,7 @@ int gfc_is_compile_time_shape (gfc_array_spec *);
/* interface.c -- FIXME: some of these should be in symbol.c */
void gfc_free_interface (gfc_interface *);
+int gfc_compare_derived_types (gfc_symbol *, gfc_symbol *);
int gfc_compare_types (gfc_typespec *, gfc_typespec *);
void gfc_check_interfaces (gfc_namespace *);
void gfc_procedure_use (gfc_symbol *, gfc_actual_arglist **, locus *);
diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c
index 5dc6944cafb..e3a13f5d9e4 100644
--- a/gcc/fortran/interface.c
+++ b/gcc/fortran/interface.c
@@ -320,43 +320,39 @@ gfc_match_end_interface (void)
}
-/* Compare two typespecs, recursively if necessary. */
+/* Compare two derived types using the criteria in 4.4.2 of the standard,
+ recursing through gfc_compare_types for the components. */
int
-gfc_compare_types (gfc_typespec * ts1, gfc_typespec * ts2)
+gfc_compare_derived_types (gfc_symbol * derived1, gfc_symbol * derived2)
{
gfc_component *dt1, *dt2;
- if (ts1->type != ts2->type)
- return 0;
- if (ts1->type != BT_DERIVED)
- return (ts1->kind == ts2->kind);
-
- /* Compare derived types. */
- if (ts1->derived == ts2->derived)
- return 1;
-
/* Special case for comparing derived types across namespaces. If the
true names and module names are the same and the module name is
nonnull, then they are equal. */
- if (strcmp (ts1->derived->name, ts2->derived->name) == 0
- && ((ts1->derived->module == NULL && ts2->derived->module == NULL)
- || (ts1->derived != NULL && ts2->derived != NULL
- && strcmp (ts1->derived->module, ts2->derived->module) == 0)))
+ if (strcmp (derived1->name, derived2->name) == 0
+ && derived1 != NULL && derived2 != NULL
+ && derived1->module != NULL && derived2->module != NULL
+ && strcmp (derived1->module, derived2->module) == 0)
return 1;
/* Compare type via the rules of the standard. Both types must have
the SEQUENCE attribute to be equal. */
- if (strcmp (ts1->derived->name, ts2->derived->name))
+ if (strcmp (derived1->name, derived2->name))
return 0;
- dt1 = ts1->derived->components;
- dt2 = ts2->derived->components;
+ if (derived1->component_access == ACCESS_PRIVATE
+ || derived2->component_access == ACCESS_PRIVATE)
+ return 0;
- if (ts1->derived->attr.sequence == 0 || ts2->derived->attr.sequence == 0)
+ if (derived1->attr.sequence == 0 || derived2->attr.sequence == 0)
return 0;
+ dt1 = derived1->components;
+ dt2 = derived2->components;
+
/* Since subtypes of SEQUENCE types must be SEQUENCE types as well, a
simple test can speed things up. Otherwise, lots of things have to
match. */
@@ -389,6 +385,24 @@ gfc_compare_types (gfc_typespec * ts1, gfc_typespec * ts2)
return 1;
}
+/* Compare two typespecs, recursively if necessary. */
+
+int
+gfc_compare_types (gfc_typespec * ts1, gfc_typespec * ts2)
+{
+
+ if (ts1->type != ts2->type)
+ return 0;
+ if (ts1->type != BT_DERIVED)
+ return (ts1->kind == ts2->kind);
+
+ /* Compare derived types. */
+ if (ts1->derived == ts2->derived)
+ return 1;
+
+ return gfc_compare_derived_types (ts1->derived ,ts2->derived);
+}
+
/* Given two symbols that are formal arguments, compare their ranks
and types. Returns nonzero if they have the same rank and type,
@@ -1704,6 +1718,7 @@ gfc_extend_expr (gfc_expr * e)
e->value.function.actual = actual;
e->value.function.esym = NULL;
e->value.function.isym = NULL;
+ e->value.function.name = NULL;
if (gfc_pure (NULL) && !gfc_pure (sym))
{
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index 98778ea076b..161347cade1 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -816,6 +816,13 @@ gfc_match_format (void)
gfc_expr *e;
locus start;
+ if (gfc_current_ns->proc_name
+ && gfc_current_ns->proc_name->attr.flavor == FL_MODULE)
+ {
+ gfc_error ("Format statement in module main block at %C.");
+ return MATCH_ERROR;
+ }
+
if (gfc_statement_label == NULL)
{
gfc_error ("Missing format label at %C");
@@ -1046,12 +1053,30 @@ resolve_tag (const io_tag * tag, gfc_expr * e)
gfc_error ("%s tag at %L must be scalar", tag->name, &e->where);
return FAILURE;
}
+
if (tag == &tag_iomsg)
{
if (gfc_notify_std (GFC_STD_F2003, "Fortran 2003: IOMSG tag at %L",
&e->where) == FAILURE)
return FAILURE;
}
+
+ if (tag == &tag_iostat && e->ts.kind != gfc_default_integer_kind)
+ {
+ if (gfc_notify_std (GFC_STD_GNU, "Fortran 95 requires default "
+ "INTEGER in IOSTAT tag at %L",
+ &e->where) == FAILURE)
+ return FAILURE;
+ }
+
+ if (tag == &tag_size && e->ts.kind != gfc_default_integer_kind)
+ {
+ if (gfc_notify_std (GFC_STD_GNU, "Fortran 95 requires default "
+ "INTEGER in SIZE tag at %L",
+ &e->where) == FAILURE)
+ return FAILURE;
+ }
+
if (tag == &tag_convert)
{
if (gfc_notify_std (GFC_STD_GNU, "Extension: CONVERT tag at %L",
@@ -1059,7 +1084,6 @@ resolve_tag (const io_tag * tag, gfc_expr * e)
return FAILURE;
}
}
-
return SUCCESS;
}
@@ -1603,7 +1627,7 @@ match_dt_format (gfc_dt * dt)
return MATCH_YES;
}
- if (gfc_match_st_label (&label, 0) == MATCH_YES)
+ if (gfc_match_st_label (&label) == MATCH_YES)
{
if (dt->format_expr != NULL || dt->format_label != NULL)
{
@@ -1718,6 +1742,8 @@ match_dt_element (io_kind k, gfc_dt * dt)
if (m != MATCH_NO)
return m;
m = match_ltag (&tag_err, &dt->err);
+ if (m == MATCH_YES)
+ dt->err_where = gfc_current_locus;
if (m != MATCH_NO)
return m;
m = match_etag (&tag_advance, &dt->advance);
@@ -1797,7 +1823,6 @@ gfc_resolve_dt (gfc_dt * dt)
return FAILURE;
}
- /* Sanity checks on data transfer statements. */
if (e->ts.type == BT_CHARACTER)
{
if (gfc_has_vector_index (e))
@@ -1806,85 +1831,50 @@ gfc_resolve_dt (gfc_dt * dt)
&e->where);
return FAILURE;
}
+ }
- if (dt->rec != NULL)
- {
- gfc_error ("REC tag at %L is incompatible with internal file",
- &dt->rec->where);
- return FAILURE;
- }
-
- if (dt->namelist != NULL)
- {
- gfc_error ("Internal file at %L is incompatible with namelist",
- &dt->io_unit->where);
- return FAILURE;
- }
-
- if (dt->advance != NULL)
- {
- gfc_error ("ADVANCE tag at %L is incompatible with internal file",
- &dt->advance->where);
- return FAILURE;
- }
+ if (e->rank && e->ts.type != BT_CHARACTER)
+ {
+ gfc_error ("External IO UNIT cannot be an array at %L", &e->where);
+ return FAILURE;
}
- if (dt->rec != NULL)
+ if (dt->err)
{
- if (dt->end != NULL)
+ if (gfc_reference_st_label (dt->err, ST_LABEL_TARGET) == FAILURE)
+ return FAILURE;
+ if (dt->err->defined == ST_LABEL_UNKNOWN)
{
- gfc_error ("REC tag at %L is incompatible with END tag",
- &dt->rec->where);
+ gfc_error ("ERR tag label %d at %L not defined",
+ dt->err->value, &dt->err_where);
return FAILURE;
}
+ }
- if (dt->format_label == &format_asterisk)
+ if (dt->end)
+ {
+ if (gfc_reference_st_label (dt->end, ST_LABEL_TARGET) == FAILURE)
+ return FAILURE;
+ if (dt->end->defined == ST_LABEL_UNKNOWN)
{
- gfc_error
- ("END tag at %L is incompatible with list directed format (*)",
- &dt->end_where);
+ gfc_error ("END tag label %d at %L not defined",
+ dt->end->value, &dt->end_where);
return FAILURE;
}
+ }
- if (dt->namelist != NULL)
+ if (dt->eor)
+ {
+ if (gfc_reference_st_label (dt->eor, ST_LABEL_TARGET) == FAILURE)
+ return FAILURE;
+ if (dt->eor->defined == ST_LABEL_UNKNOWN)
{
- gfc_error ("REC tag at %L is incompatible with namelist",
- &dt->rec->where);
+ gfc_error ("EOR tag label %d at %L not defined",
+ dt->eor->value, &dt->eor_where);
return FAILURE;
}
}
- if (dt->advance != NULL && dt->format_label == &format_asterisk)
- {
- gfc_error ("ADVANCE tag at %L is incompatible with list directed "
- "format (*)", &dt->advance->where);
- return FAILURE;
- }
-
- if (dt->eor != 0 && dt->advance == NULL)
- {
- gfc_error ("EOR tag at %L requires an ADVANCE tag", &dt->eor_where);
- return FAILURE;
- }
-
- if (dt->size != NULL && dt->advance == NULL)
- {
- gfc_error ("SIZE tag at %L requires an ADVANCE tag", &dt->size->where);
- return FAILURE;
- }
-
- /* TODO: Make sure the ADVANCE tag is 'yes' or 'no' if it is a string
- constant. */
-
- if (gfc_reference_st_label (dt->err, ST_LABEL_TARGET) == FAILURE)
- return FAILURE;
-
- if (gfc_reference_st_label (dt->end, ST_LABEL_TARGET) == FAILURE)
- return FAILURE;
-
- if (gfc_reference_st_label (dt->eor, ST_LABEL_TARGET) == FAILURE)
- return FAILURE;
-
/* Check the format label actually exists. */
if (dt->format_label && dt->format_label != &format_asterisk
&& dt->format_label->defined == ST_LABEL_UNKNOWN)
@@ -2171,6 +2161,165 @@ terminate_io (gfc_code * io_code)
}
+/* Check the constraints for a data transfer statement. The majority of the
+ constraints appearing in 9.4 of the standard appear here. Some are handled
+ in resolve_tag and others in gfc_resolve_dt. */
+
+static match
+check_io_constraints (io_kind k, gfc_dt *dt, gfc_code * io_code, locus * spec_end)
+{
+#define io_constraint(condition,msg,arg)\
+if (condition) \
+ {\
+ gfc_error(msg,arg);\
+ m = MATCH_ERROR;\
+ }
+
+ match m;
+ gfc_expr * expr;
+ gfc_symbol * sym = NULL;
+
+ m = MATCH_YES;
+
+ expr = dt->io_unit;
+ if (expr && expr->expr_type == EXPR_VARIABLE
+ && expr->ts.type == BT_CHARACTER)
+ {
+ sym = expr->symtree->n.sym;
+
+ io_constraint (k == M_WRITE && sym->attr.intent == INTENT_IN,
+ "Internal file at %L must not be INTENT(IN)",
+ &expr->where);
+
+ io_constraint (gfc_has_vector_index (dt->io_unit),
+ "Internal file incompatible with vector subscript at %L",
+ &expr->where);
+
+ io_constraint (dt->rec != NULL,
+ "REC tag at %L is incompatible with internal file",
+ &dt->rec->where);
+
+ io_constraint (dt->namelist != NULL,
+ "Internal file at %L is incompatible with namelist",
+ &expr->where);
+
+ io_constraint (dt->advance != NULL,
+ "ADVANCE tag at %L is incompatible with internal file",
+ &dt->advance->where);
+ }
+
+ if (expr && expr->ts.type != BT_CHARACTER)
+ {
+
+ io_constraint (gfc_pure (NULL)
+ && (k == M_READ || k == M_WRITE),
+ "IO UNIT in %s statement at %C must be "
+ "an internal file in a PURE procedure",
+ io_kind_name (k));
+ }
+
+
+ if (k != M_READ)
+ {
+ io_constraint (dt->end,
+ "END tag not allowed with output at %L",
+ &dt->end_where);
+
+ io_constraint (dt->eor,
+ "EOR tag not allowed with output at %L",
+ &dt->eor_where);
+
+ io_constraint (k != M_READ && dt->size,
+ "SIZE=specifier not allowed with output at %L",
+ &dt->size->where);
+ }
+ else
+ {
+ io_constraint (dt->size && dt->advance == NULL,
+ "SIZE tag at %L requires an ADVANCE tag",
+ &dt->size->where);
+
+ io_constraint (dt->eor && dt->advance == NULL,
+ "EOR tag at %L requires an ADVANCE tag",
+ &dt->eor_where);
+ }
+
+
+
+ if (dt->namelist)
+ {
+ io_constraint (io_code && dt->namelist,
+ "NAMELIST cannot be followed by IO-list at %L",
+ &io_code->loc);
+
+ io_constraint (dt->format_expr,
+ "IO spec-list cannot contain both NAMELIST group name "
+ "and format specification at %L.",
+ &dt->format_expr->where);
+
+ io_constraint (dt->format_label,
+ "IO spec-list cannot contain both NAMELIST group name "
+ "and format label at %L", spec_end);
+
+ io_constraint (dt->rec,
+ "NAMELIST IO is not allowed with a REC=specifier "
+ "at %L.", &dt->rec->where);
+
+ io_constraint (dt->advance,
+ "NAMELIST IO is not allowed with a ADVANCE=specifier "
+ "at %L.", &dt->advance->where);
+ }
+
+ if (dt->rec)
+ {
+ io_constraint (dt->end,
+ "An END tag is not allowed with a "
+ "REC=specifier at %L.", &dt->end_where);
+
+
+ io_constraint (dt->format_label == &format_asterisk,
+ "FMT=* is not allowed with a REC=specifier "
+ "at %L.", spec_end);
+ }
+
+ if (dt->advance)
+ {
+ const char * advance;
+ int not_yes, not_no;
+ expr = dt->advance;
+ advance = expr->value.character.string;
+
+ io_constraint (dt->format_label == &format_asterisk,
+ "List directed format(*) is not allowed with a "
+ "ADVANCE=specifier at %L.", &expr->where);
+
+ not_no = strncasecmp (advance, "no", 2) != 0;
+ not_yes = strncasecmp (advance, "yes", 2) != 0;
+
+ io_constraint (expr->expr_type == EXPR_CONSTANT
+ && not_no && not_yes,
+ "ADVANCE=specifier at %L must have value = "
+ "YES or NO.", &expr->where);
+
+ io_constraint (dt->size && expr->expr_type == EXPR_CONSTANT
+ && not_no && k == M_READ,
+ "SIZE tag at %L requires an ADVANCE = 'NO'",
+ &dt->size->where);
+
+ io_constraint (dt->eor && expr->expr_type == EXPR_CONSTANT
+ && not_no && k == M_READ,
+ "EOR tag at %L requires an ADVANCE = 'NO'",
+ &dt->eor_where);
+ }
+
+ expr = dt->format_expr;
+ if (expr != NULL && expr->expr_type == EXPR_CONSTANT)
+ check_format_string (expr);
+
+ return m;
+}
+#undef io_constraint
+
/* Match a READ, WRITE or PRINT statement. */
static match
@@ -2179,12 +2328,13 @@ match_io (io_kind k)
char name[GFC_MAX_SYMBOL_LEN + 1];
gfc_code *io_code;
gfc_symbol *sym;
- gfc_expr *expr;
int comma_flag, c;
locus where;
+ locus spec_end;
gfc_dt *dt;
match m;
+ where = gfc_current_locus;
comma_flag = 0;
current_dt = dt = gfc_getmem (sizeof (gfc_dt));
if (gfc_match_char ('(') == MATCH_NO)
@@ -2207,12 +2357,6 @@ match_io (io_kind k)
m = MATCH_ERROR;
goto cleanup;
}
- if (gfc_match_eos () == MATCH_NO)
- {
- gfc_error ("Namelist followed by I/O list at %C");
- m = MATCH_ERROR;
- goto cleanup;
- }
dt->io_unit = default_unit (k);
dt->namelist = sym;
@@ -2311,6 +2455,10 @@ loop:
}
get_io_list:
+
+ /* Used in check_io_constraints, where no locus is available. */
+ spec_end = gfc_current_locus;
+
/* Optional leading comma (non-standard). */
if (!comma_flag
&& gfc_match_char (',') == MATCH_YES
@@ -2336,33 +2484,12 @@ get_io_list:
goto syntax;
}
- /* A full IO statement has been matched. */
- if (dt->io_unit->expr_type == EXPR_VARIABLE
- && k == M_WRITE
- && dt->io_unit->ts.type == BT_CHARACTER
- && dt->io_unit->symtree->n.sym->attr.intent == INTENT_IN)
- {
- gfc_error ("Internal file '%s' at %L is INTENT(IN)",
- dt->io_unit->symtree->n.sym->name, &dt->io_unit->where);
- m = MATCH_ERROR;
- goto cleanup;
- }
-
- expr = dt->format_expr;
-
- if (expr != NULL && expr->expr_type == EXPR_CONSTANT)
- check_format_string (expr);
+ /* A full IO statement has been matched. Check the constraints. spec_end is
+ supplied for cases where no locus is supplied. */
+ m = check_io_constraints (k, dt, io_code, &spec_end);
- if (gfc_pure (NULL)
- && (k == M_READ || k == M_WRITE)
- && dt->io_unit->ts.type != BT_CHARACTER)
- {
- gfc_error
- ("io-unit in %s statement at %C must be an internal file in a "
- "PURE procedure", io_kind_name (k));
- m = MATCH_ERROR;
- goto cleanup;
- }
+ if (m == MATCH_ERROR)
+ goto cleanup;
new_st.op = (k == M_READ) ? EXEC_READ : EXEC_WRITE;
new_st.ext.dt = dt;
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index f75b0e5af7d..e1ce3937410 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -141,11 +141,11 @@ gfc_match_eos (void)
old-style character length specifications. */
match
-gfc_match_small_literal_int (int *value)
+gfc_match_small_literal_int (int *value, int *cnt)
{
locus old_loc;
char c;
- int i;
+ int i, j;
old_loc = gfc_current_locus;
@@ -159,6 +159,7 @@ gfc_match_small_literal_int (int *value)
}
i = c - '0';
+ j = 1;
for (;;)
{
@@ -169,6 +170,7 @@ gfc_match_small_literal_int (int *value)
break;
i = 10 * i + c - '0';
+ j++;
if (i > 99999999)
{
@@ -180,6 +182,7 @@ gfc_match_small_literal_int (int *value)
gfc_current_locus = old_loc;
*value = i;
+ *cnt = j;
return MATCH_YES;
}
@@ -217,25 +220,35 @@ gfc_match_small_int (int *value)
do most of the work. */
match
-gfc_match_st_label (gfc_st_label ** label, int allow_zero)
+gfc_match_st_label (gfc_st_label ** label)
{
locus old_loc;
match m;
- int i;
+ int i, cnt;
old_loc = gfc_current_locus;
- m = gfc_match_small_literal_int (&i);
+ m = gfc_match_small_literal_int (&i, &cnt);
if (m != MATCH_YES)
return m;
- if (((i == 0) && allow_zero) || i <= 99999)
+ if (cnt > 5)
{
- *label = gfc_get_st_label (i);
- return MATCH_YES;
+ gfc_error ("Too many digits in statement label at %C");
+ goto cleanup;
+ }
+
+ if (i == 0)
+ {
+ gfc_error ("Statement label at %C is zero");
+ goto cleanup;
}
- gfc_error ("Statement label at %C is out of range");
+ *label = gfc_get_st_label (i);
+ return MATCH_YES;
+
+cleanup:
+
gfc_current_locus = old_loc;
return MATCH_ERROR;
}
@@ -690,7 +703,7 @@ loop:
case 'l':
label = va_arg (argp, gfc_st_label **);
- n = gfc_match_st_label (label, 0);
+ n = gfc_match_st_label (label);
if (n != MATCH_YES)
{
m = n;
@@ -1242,7 +1255,7 @@ gfc_match_do (void)
if (gfc_match (" do") != MATCH_YES)
return MATCH_NO;
- m = gfc_match_st_label (&label, 0);
+ m = gfc_match_st_label (&label);
if (m == MATCH_ERROR)
goto cleanup;
@@ -1275,7 +1288,7 @@ gfc_match_do (void)
gfc_match_label (); /* This won't error */
gfc_match (" do "); /* This will work */
- gfc_match_st_label (&label, 0); /* Can't error out */
+ gfc_match_st_label (&label); /* Can't error out */
gfc_match_char (','); /* Optional comma */
m = gfc_match_iterator (&iter, 0);
@@ -1425,19 +1438,20 @@ gfc_match_stopcode (gfc_statement st)
int stop_code;
gfc_expr *e;
match m;
+ int cnt;
stop_code = -1;
e = NULL;
if (gfc_match_eos () != MATCH_YES)
{
- m = gfc_match_small_literal_int (&stop_code);
+ m = gfc_match_small_literal_int (&stop_code, &cnt);
if (m == MATCH_ERROR)
goto cleanup;
- if (m == MATCH_YES && stop_code > 99999)
+ if (m == MATCH_YES && cnt > 5)
{
- gfc_error ("STOP code out of range at %C");
+ gfc_error ("Too many digits in STOP code at %C");
goto cleanup;
}
@@ -1606,7 +1620,7 @@ gfc_match_goto (void)
do
{
- m = gfc_match_st_label (&label, 0);
+ m = gfc_match_st_label (&label);
if (m != MATCH_YES)
goto syntax;
@@ -1652,7 +1666,7 @@ gfc_match_goto (void)
do
{
- m = gfc_match_st_label (&label, 0);
+ m = gfc_match_st_label (&label);
if (m != MATCH_YES)
goto syntax;
@@ -2510,6 +2524,14 @@ gfc_match_namelist (void)
return MATCH_ERROR;
}
+ if (group_name->attr.flavor == FL_NAMELIST
+ && group_name->attr.use_assoc
+ && gfc_notify_std (GFC_STD_GNU, "Namelist group name '%s' "
+ "at %C already is USE associated and can"
+ "not be respecified.", group_name->name)
+ == FAILURE)
+ return MATCH_ERROR;
+
if (group_name->attr.flavor != FL_NAMELIST
&& gfc_add_flavor (&group_name->attr, FL_NAMELIST,
group_name->name, NULL) == FAILURE)
@@ -2527,6 +2549,21 @@ gfc_match_namelist (void)
&& gfc_add_in_namelist (&sym->attr, sym->name, NULL) == FAILURE)
goto error;
+ /* Use gfc_error_check here, rather than goto error, so that this
+ these are the only errors for the next two lines. */
+ if (sym->as && sym->as->type == AS_ASSUMED_SIZE)
+ {
+ gfc_error ("Assumed size array '%s' in namelist '%s'at "
+ "%C is not allowed.", sym->name, group_name->name);
+ gfc_error_check ();
+ }
+
+ if (sym->as && sym->as->type == AS_ASSUMED_SHAPE
+ && gfc_notify_std (GFC_STD_GNU, "Assumed shape array '%s' in "
+ "namelist '%s' at %C is an extension.",
+ sym->name, group_name->name) == FAILURE)
+ gfc_error_check ();
+
nl = gfc_get_namelist ();
nl->sym = sym;
diff --git a/gcc/fortran/match.h b/gcc/fortran/match.h
index 381c9ae50db..19340cee0f1 100644
--- a/gcc/fortran/match.h
+++ b/gcc/fortran/match.h
@@ -40,8 +40,8 @@ extern gfc_st_label *gfc_statement_label;
/* Generic match subroutines */
match gfc_match_space (void);
match gfc_match_eos (void);
-match gfc_match_small_literal_int (int *);
-match gfc_match_st_label (gfc_st_label **, int);
+match gfc_match_small_literal_int (int *, int *);
+match gfc_match_st_label (gfc_st_label **);
match gfc_match_label (void);
match gfc_match_small_int (int *);
int gfc_match_strings (mstring *);
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index cb9460fac28..6306cc4c4a8 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -410,7 +410,7 @@ static gfc_statement
next_free (void)
{
match m;
- int c, d;
+ int c, d, cnt;
gfc_gobble_whitespace ();
@@ -419,30 +419,27 @@ next_free (void)
if (ISDIGIT (c))
{
/* Found a statement label? */
- m = gfc_match_st_label (&gfc_statement_label, 0);
+ m = gfc_match_st_label (&gfc_statement_label);
d = gfc_peek_char ();
if (m != MATCH_YES || !gfc_is_whitespace (d))
{
+ gfc_match_small_literal_int (&c, &cnt);
+
+ if (cnt > 5)
+ gfc_error_now ("Too many digits in statement label at %C");
+
+ if (c == 0)
+ gfc_error_now ("Statement label at %C is zero");
+
do
- {
- /* Skip the bad statement label. */
- gfc_warning_now ("Ignoring bad statement label at %C");
- c = gfc_next_char ();
- }
- while (ISDIGIT (c));
+ c = gfc_next_char ();
+ while (ISDIGIT(c));
}
else
{
label_locus = gfc_current_locus;
- if (gfc_statement_label->value == 0)
- {
- gfc_warning_now ("Ignoring statement label of zero at %C");
- gfc_free_st_label (gfc_statement_label);
- gfc_statement_label = NULL;
- }
-
gfc_gobble_whitespace ();
if (gfc_match_eos () == MATCH_YES)
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c
index d2b7068956f..b60e0c12834 100644
--- a/gcc/fortran/primary.c
+++ b/gcc/fortran/primary.c
@@ -40,8 +40,10 @@ match_kind_param (int *kind)
gfc_symbol *sym;
const char *p;
match m;
+ int cnt;
- m = gfc_match_small_literal_int (kind);
+ /* cnt is unused, here. */
+ m = gfc_match_small_literal_int (kind, &cnt);
if (m != MATCH_NO)
return m;
@@ -1474,7 +1476,7 @@ gfc_match_actual_arglist (int sub_flag, gfc_actual_arglist ** argp)
if (sub_flag && gfc_match_char ('*') == MATCH_YES)
{
- m = gfc_match_st_label (&label, 0);
+ m = gfc_match_st_label (&label);
if (m == MATCH_NO)
gfc_error ("Expected alternate return label at %C");
if (m != MATCH_YES)
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 755776d55dd..02efe19b7a3 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -586,9 +586,18 @@ resolve_structure_cons (gfc_expr * expr)
/* If we don't have the right type, try to convert it. */
- if (!gfc_compare_types (&cons->expr->ts, &comp->ts)
- && gfc_convert_type (cons->expr, &comp->ts, 1) == FAILURE)
- t = FAILURE;
+ if (!gfc_compare_types (&cons->expr->ts, &comp->ts))
+ {
+ t = FAILURE;
+ if (comp->pointer && cons->expr->ts.type != BT_UNKNOWN)
+ gfc_error ("The element in the derived type constructor at %L, "
+ "for pointer component '%s', is %s but should be %s",
+ &cons->expr->where, comp->name,
+ gfc_basic_typename (cons->expr->ts.type),
+ gfc_basic_typename (comp->ts.type));
+ else
+ t = gfc_convert_type (cons->expr, &comp->ts, 1);
+ }
}
return t;
@@ -4254,6 +4263,60 @@ resolve_values (gfc_symbol * sym)
}
+/* Resolve a charlen structure. */
+
+static try
+resolve_charlen (gfc_charlen *cl)
+{
+ if (cl->resolved)
+ return SUCCESS;
+
+ cl->resolved = 1;
+
+ if (gfc_resolve_expr (cl->length) == FAILURE)
+ return FAILURE;
+
+ if (gfc_simplify_expr (cl->length, 0) == FAILURE)
+ return FAILURE;
+
+ if (gfc_specification_expr (cl->length) == FAILURE)
+ return FAILURE;
+
+ return SUCCESS;
+}
+
+
+/* Resolve the components of a derived type. */
+
+static try
+resolve_derived (gfc_symbol *sym)
+{
+ gfc_component *c;
+
+ for (c = sym->components; c != NULL; c = c->next)
+ {
+ if (c->ts.type == BT_CHARACTER)
+ {
+ if (resolve_charlen (c->ts.cl) == FAILURE)
+ return FAILURE;
+
+ if (c->ts.cl->length == NULL
+ || !gfc_is_constant_expr (c->ts.cl->length))
+ {
+ gfc_error ("Character length of component '%s' needs to "
+ "be a constant specification expression at %L.",
+ c->name,
+ c->ts.cl->length ? &c->ts.cl->length->where : &c->loc);
+ return FAILURE;
+ }
+ }
+
+ /* TODO: Anything else that should be done here? */
+ }
+
+ return SUCCESS;
+}
+
/* Do anything necessary to resolve a symbol. Right now, we just
assume that an otherwise unknown symbol is a variable. This sort
of thing commonly happens for symbols in module. */
@@ -4306,6 +4369,9 @@ resolve_symbol (gfc_symbol * sym)
}
}
+ if (sym->attr.flavor == FL_DERIVED && resolve_derived (sym) == FAILURE)
+ return;
+
/* Symbols that are module procedures with results (functions) have
the types and array specification copied for type checking in
procedures that call them, as well as for saving to a module
@@ -4634,6 +4700,17 @@ resolve_symbol (gfc_symbol * sym)
}
break;
+ case FL_DERIVED:
+ /* Add derived type to the derived type list. */
+ {
+ gfc_dt_list * dt_list;
+ dt_list = gfc_get_dt_list ();
+ dt_list->next = sym->ns->derived_types;
+ dt_list->derived = sym;
+ sym->ns->derived_types = dt_list;
+ }
+ break;
+
default:
/* An external symbol falls through to here if it is not referenced. */
@@ -5511,16 +5588,7 @@ gfc_resolve (gfc_namespace * ns)
gfc_check_interfaces (ns);
for (cl = ns->cl_list; cl; cl = cl->next)
- {
- if (cl->length == NULL || gfc_resolve_expr (cl->length) == FAILURE)
- continue;
-
- if (gfc_simplify_expr (cl->length, 0) == FAILURE)
- continue;
-
- if (gfc_specification_expr (cl->length) == FAILURE)
- continue;
- }
+ resolve_charlen (cl);
gfc_traverse_ns (ns, resolve_values);
diff --git a/gcc/fortran/symbol.c b/gcc/fortran/symbol.c
index 76d7f57d017..826b850974e 100644
--- a/gcc/fortran/symbol.c
+++ b/gcc/fortran/symbol.c
@@ -2335,6 +2335,21 @@ free_sym_tree (gfc_symtree * sym_tree)
}
+/* Free a derived type list. */
+
+static void
+gfc_free_dt_list (gfc_dt_list * dt)
+{
+ gfc_dt_list *n;
+
+ for (; dt; dt = n)
+ {
+ n = dt->next;
+ gfc_free (dt);
+ }
+}
+
+
/* Free a namespace structure and everything below it. Interface
lists associated with intrinsic operators are not freed. These are
taken care of when a specific name is freed. */
@@ -2371,6 +2386,8 @@ gfc_free_namespace (gfc_namespace * ns)
gfc_free_equiv (ns->equiv);
+ gfc_free_dt_list (ns->derived_types);
+
for (i = GFC_INTRINSIC_BEGIN; i != GFC_INTRINSIC_END; i++)
gfc_free_interface (ns->operator[i]);
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 0920f596283..2a3b9004804 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -1109,7 +1109,7 @@ gfc_get_extern_function_decl (gfc_symbol * sym)
sense. */
if (sym->attr.pure || sym->attr.elemental)
{
- if (sym->attr.function)
+ if (sym->attr.function && !gfc_return_by_reference (sym))
DECL_IS_PURE (fndecl) = 1;
/* TODO: check if pure SUBROUTINEs don't have INTENT(OUT)
parameters and don't use alternate returns (is this
diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c
index 87a11c3d861..1cb0918fb21 100644
--- a/gcc/fortran/trans-io.c
+++ b/gcc/fortran/trans-io.c
@@ -160,7 +160,7 @@ gfc_build_st_parameter (enum ioparam_type ptype, tree *types)
gcc_assert (len <= sizeof (name) - sizeof ("__st_parameter_"));
memcpy (name, "__st_parameter_", sizeof ("__st_parameter_"));
memcpy (name + sizeof ("__st_parameter_") - 1, st_parameter[ptype].name,
- len);
+ len + 1);
TYPE_NAME (t) = get_identifier (name);
for (type = 0, p = st_parameter_field; type < IOPARM_field_num; type++, p++)
diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c
index 6aaf81a5b4c..b41940c1cdc 100644
--- a/gcc/fortran/trans-types.c
+++ b/gcc/fortran/trans-types.c
@@ -1395,13 +1395,53 @@ gfc_add_field_to_struct (tree *fieldlist, tree context,
}
-/* Build a tree node for a derived type. */
+/* Copy the backend_decl and component backend_decls if
+ the two derived type symbols are "equal", as described
+ in 4.4.2 and resolved by gfc_compare_derived_types. */
+
+static int
+copy_dt_decls_ifequal (gfc_symbol *from, gfc_symbol *to)
+{
+ gfc_component *to_cm;
+ gfc_component *from_cm;
+
+ if (from->backend_decl == NULL
+ || !gfc_compare_derived_types (from, to))
+ return 0;
+
+ to->backend_decl = from->backend_decl;
+
+ to_cm = to->components;
+ from_cm = from->components;
+
+ /* Copy the component declarations. If a component is itself
+ a derived type, we need a copy of its component declarations.
+ This is done by recursing into gfc_get_derived_type and
+ ensures that the component's component declarations have
+ been built. */
+ for (; to_cm; to_cm = to_cm->next, from_cm = from_cm->next)
+ {
+ to_cm->backend_decl = from_cm->backend_decl;
+ if (from_cm->ts.type == BT_DERIVED)
+ gfc_get_derived_type (to_cm->ts.derived);
+ }
+
+ return 1;
+}
+
+
+/* Build a tree node for a derived type. If there are equal
+ derived types, with different local names, these are built
+ at the same time. If an equal derived type has been built
+ in a parent namespace, this is used. */
static tree
gfc_get_derived_type (gfc_symbol * derived)
{
tree typenode, field, field_type, fieldlist;
gfc_component *c;
+ gfc_dt_list *dt;
+ gfc_namespace * ns;
gcc_assert (derived && derived->attr.flavor == FL_DERIVED);
@@ -1417,6 +1457,29 @@ gfc_get_derived_type (gfc_symbol * derived)
}
else
{
+ /* In a module, if an equal derived type is already available in the
+ specification block, use its backend declaration and those of its
+ components, rather than building anew so that potential dummy and
+ actual arguments use the same TREE_TYPE. Non-module structures,
+ need to be built, if found, because the order of visits to the
+ namespaces is different. */
+
+ for (ns = derived->ns->parent; ns; ns = ns->parent)
+ {
+ for (dt = ns->derived_types; dt; dt = dt->next)
+ {
+ if (derived->module == NULL
+ && dt->derived->backend_decl == NULL
+ && gfc_compare_derived_types (dt->derived, derived))
+ gfc_get_derived_type (dt->derived);
+
+ if (copy_dt_decls_ifequal (dt->derived, derived))
+ break;
+ }
+ if (derived->backend_decl)
+ goto other_equal_dts;
+ }
+
/* We see this derived type first time, so build the type node. */
typenode = make_node (RECORD_TYPE);
TYPE_NAME (typenode) = get_identifier (derived->name);
@@ -1495,9 +1558,16 @@ gfc_get_derived_type (gfc_symbol * derived)
derived->backend_decl = typenode;
- return typenode;
+other_equal_dts:
+ /* Add this backend_decl to all the other, equal derived types and
+ their components in this namespace. */
+ for (dt = derived->ns->derived_types; dt; dt = dt->next)
+ copy_dt_decls_ifequal (derived, dt->derived);
+
+ return derived->backend_decl;
}
-
+
+
int
gfc_return_by_reference (gfc_symbol * sym)
{
diff --git a/gcc/function.c b/gcc/function.c
index ff80df70b28..6053afae99b 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -1590,6 +1590,22 @@ instantiate_decl (rtx x)
for_each_rtx (&XEXP (x, 0), instantiate_virtual_regs_in_rtx, NULL);
}
+/* Helper for instantiate_decls called via walk_tree: Process all decls
+ in the given DECL_VALUE_EXPR. */
+
+static tree
+instantiate_expr (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
+{
+ tree t = *tp;
+ if (! EXPR_P (t))
+ {
+ *walk_subtrees = 0;
+ if (DECL_P (t) && DECL_RTL_SET_P (t))
+ instantiate_decl (DECL_RTL (t));
+ }
+ return NULL;
+}
+
/* Subroutine of instantiate_decls: Process all decls in the given
BLOCK node and all its subblocks. */
@@ -1599,8 +1615,15 @@ instantiate_decls_1 (tree let)
tree t;
for (t = BLOCK_VARS (let); t; t = TREE_CHAIN (t))
- if (DECL_RTL_SET_P (t))
- instantiate_decl (DECL_RTL (t));
+ {
+ if (DECL_RTL_SET_P (t))
+ instantiate_decl (DECL_RTL (t));
+ if (TREE_CODE (t) == VAR_DECL && DECL_HAS_VALUE_EXPR_P (t))
+ {
+ tree v = DECL_VALUE_EXPR (t);
+ walk_tree (&v, instantiate_expr, NULL, NULL);
+ }
+ }
/* Process all subblocks. */
for (t = BLOCK_SUBBLOCKS (let); t; t = TREE_CHAIN (t))
@@ -1620,6 +1643,11 @@ instantiate_decls (tree fndecl)
{
instantiate_decl (DECL_RTL (decl));
instantiate_decl (DECL_INCOMING_RTL (decl));
+ if (DECL_HAS_VALUE_EXPR_P (decl))
+ {
+ tree v = DECL_VALUE_EXPR (decl);
+ walk_tree (&v, instantiate_expr, NULL, NULL);
+ }
}
/* Now process all variables defined in the function or its subblocks. */
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index 2b1dc2a7aa8..ed6093d08f9 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2006-01-03 Joseph S. Myers <joseph@codesourcery.com>
+
+ * zh_CN.po: Update.
+
2005-12-16 Joseph S. Myers <joseph@codesourcery.com>
* zh_CN.po: Update.
diff --git a/gcc/po/zh_CN.po b/gcc/po/zh_CN.po
index 091d4a5809c..9d922a433eb 100644
--- a/gcc/po/zh_CN.po
+++ b/gcc/po/zh_CN.po
@@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: gcc 4.1-b20051125\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
"POT-Creation-Date: 2005-11-20 16:33+0000\n"
-"PO-Revision-Date: 2005-12-17 00:30+0800\n"
+"PO-Revision-Date: 2005-12-31 00:08+0800\n"
"Last-Translator: Meng Jie <zuxyhere@eastday.com>\n"
"Language-Team: Chinese (simplified) <i18n-translation@lists.linux.net.cn>\n"
"MIME-Version: 1.0\n"
@@ -449,7 +449,7 @@ msgstr "æ ‡é‡åˆå§‹å€¼è®¾å®šé¡¹ä¸­æœ‰å¤šä½™å…ƒç´ "
#: cfgrtl.c:2129
msgid "flow control insn inside a basic block"
-msgstr ""
+msgstr "基本å—内有æµç¨‹æŽ§åˆ¶æŒ‡ä»¤"
#: cfgrtl.c:2207
msgid "wrong insn in the fallthru edge"
@@ -462,7 +462,7 @@ msgstr "基本å—外出现指令"
#: cfgrtl.c:2256
#, fuzzy
msgid "return not followed by barrier"
-msgstr "%s:行 %d:列表分隔符没有出现在域之åŽ"
+msgstr "‘#’åŽæ²¡æœ‰å®å‚æ•°"
#: cgraph.c:300 ipa-inline.c:294
msgid "function body not available"
@@ -565,14 +565,14 @@ msgid "can't open nm output"
msgstr "无法打开 nm 的输出"
#: collect2.c:2110
-#, fuzzy, c-format
+#, c-format
msgid "init function found in object %s"
-msgstr "存储中未找到对象"
+msgstr "在对象 %s 中å‘现 init 函数"
#: collect2.c:2118
-#, fuzzy, c-format
+#, c-format
msgid "fini function found in object %s"
-msgstr "存储中未找到对象"
+msgstr "在对象 %s 中å‘现 fini 函数"
#: collect2.c:2221
#, c-format
@@ -679,12 +679,12 @@ msgstr "未结æŸçš„汇编风格指示"
#: final.c:3075
#, c-format
msgid "operand number missing after %%-letter"
-msgstr "%% å­—æ¯åŽç¼ºå°‘æ“作数"
+msgstr "%% å­—æ¯åŽç¼ºå°‘æ“作数å·"
#: final.c:3078 final.c:3119
#, c-format
msgid "operand number out of range"
-msgstr "æ“作数超出范围"
+msgstr "æ“作数å·è¶…出范围"
#: final.c:3138
#, c-format
@@ -692,9 +692,9 @@ msgid "invalid %%-code"
msgstr "无效的 %%-code"
#: final.c:3168
-#, fuzzy, c-format
+#, c-format
msgid "'%%l' operand isn't a label"
-msgstr "输入新标签:"
+msgstr "‘%%l’æ“作数ä¸æ˜¯ä¸€ä¸ªæ ‡å·"
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
@@ -1148,9 +1148,9 @@ msgstr "spec 函数åæ ¼å¼é”™è¯¯"
#. )
#: gcc.c:5413
-#, fuzzy, c-format
+#, c-format
msgid "no arguments for spec function"
-msgstr "CRIS 没有 FUNCTION_PROFILER"
+msgstr "spec 函数没有实å‚"
#: gcc.c:5432
#, c-format
@@ -1257,19 +1257,19 @@ msgid "invalid version number `%s'"
msgstr "无效的版本å·â€˜%s’"
#: gcc.c:7701
-#, fuzzy, c-format
+#, c-format
msgid "too few arguments to %%:version-compare"
-msgstr "给予函数 %qs çš„å‚数太少"
+msgstr "%%:version-compare 的实å‚太少"
#: gcc.c:7707
-#, fuzzy, c-format
+#, c-format
msgid "too many arguments to %%:version-compare"
-msgstr "给予函数 %qs çš„å‚数太多"
+msgstr "%%:version-compare 的实å‚太多"
#: gcc.c:7748
-#, fuzzy, c-format
+#, c-format
msgid "unknown operator '%s' in %%:version-compare"
-msgstr "-mtune= 中未知的 CRIS CPU 版本设定:%s"
+msgstr "%%:version-compare 中有未知的æ“作数‘%s’"
#: gcov.c:388
#, c-format
@@ -1281,11 +1281,13 @@ msgstr ""
"\n"
#: gcov.c:389
-#, fuzzy, c-format
+#, c-format
msgid ""
"Print code coverage information.\n"
"\n"
-msgstr "显示路线信æ¯å¹¶é€€å‡ºã€‚"
+msgstr ""
+"显示代ç è¦†ç›–ä¿¡æ¯ã€‚\n"
+"\n"
#: gcov.c:390
#, c-format
@@ -1371,7 +1373,7 @@ msgid ""
"\n"
msgstr ""
"本程åºæ˜¯è‡ªç”±è½¯ä»¶ï¼›è¯·å‚看æºä»£ç çš„版æƒå£°æ˜Žã€‚本软件没有任何担ä¿ï¼›\n"
-"包括没有适销性和适用性担ä¿ã€‚\n"
+"包括没有适销性和æŸä¸€ä¸“用目的下的适用性担ä¿ã€‚\n"
#: gcov.c:507
#, c-format
@@ -1441,7 +1443,7 @@ msgstr "%s:版本‘%.4s’,首选版本‘%.4s’\n"
#: gcov.c:990
#, c-format
msgid "%s:stamp mismatch with graph file\n"
-msgstr ""
+msgstr "%s:时间戳与图文件ä¸åŒ¹é…\n"
#: gcov.c:1016
#, c-format
@@ -1461,22 +1463,22 @@ msgstr "%s:溢出\n"
#: gcov.c:1072
#, c-format
msgid "%s:'%s' lacks entry and/or exit blocks\n"
-msgstr ""
+msgstr "%s:‘%s’缺少入å£/出å£å—\n"
#: gcov.c:1077
#, c-format
msgid "%s:'%s' has arcs to entry block\n"
-msgstr ""
+msgstr "%s:‘%s’有去往入å£å—的弧\n"
#: gcov.c:1085
#, c-format
msgid "%s:'%s' has arcs from exit block\n"
-msgstr ""
+msgstr "%s:‘%s’有æ¥è‡ªå‡ºå£å—的弧\n"
#: gcov.c:1293
-#, fuzzy, c-format
+#, c-format
msgid "%s:graph is unsolvable for '%s'\n"
-msgstr "规则对此有效(&R):"
+msgstr "%s:图为‘%s’ä¸å¯è§£\n"
#: gcov.c:1373
#, c-format
@@ -1519,9 +1521,9 @@ msgid "No calls\n"
msgstr "没有调用\n"
#: gcov.c:1543
-#, fuzzy, c-format
+#, c-format
msgid "%s:no lines for '%s'\n"
-msgstr "线宽(0 表示没有边框)"
+msgstr "%s:‘%s’没有行\n"
#: gcov.c:1738
#, c-format
@@ -1559,9 +1561,9 @@ msgid "%s:cannot open source file\n"
msgstr "%s:无法打开æºæ–‡ä»¶\n"
#: gcov.c:1802
-#, fuzzy, c-format
+#, c-format
msgid "%s:source file is newer than graph file '%s'\n"
-msgstr "远程文件较本地文件“%sâ€æ–° -- å–回。\n"
+msgstr "%s:æºæ–‡ä»¶è¾ƒå›¾æ–‡ä»¶â€˜%s’新\n"
#. Return if there's nothing to do, or it is too expensive.
#: gcse.c:694
@@ -1648,7 +1650,6 @@ msgid "--param max-inline-insns-single limit reached"
msgstr "到达 --param max-inline-insns-single 给定的æžé™"
#: ipa-inline.c:312
-#, fuzzy
msgid "--param max-inline-insns-auto limit reached"
msgstr "到达 --param max-inline-insns-single 给定的æžé™"
@@ -1657,9 +1658,8 @@ msgid "recursive inlining"
msgstr "递归内è”"
#: ipa-inline.c:777
-#, fuzzy
msgid "call is unlikely"
-msgstr "对 %<(%T) (%A)%> 的调用有歧义"
+msgstr "ä¸å¤ªå¯èƒ½è°ƒç”¨"
#: ipa-inline.c:848
msgid "--param inline-unit-growth limit reached"
@@ -1765,9 +1765,9 @@ msgid "%s: invalid file name: %s\n"
msgstr "%s:无效的文件å:%s\n"
#: protoize.c:1282
-#, fuzzy, c-format
+#, c-format
msgid "%s: %s: can't get status: %s\n"
-msgstr "%s:ä¸èƒ½èŽ·å–文件‘%s’的状æ€ï¼š%s\n"
+msgstr "%s:%s:ä¸èƒ½èŽ·å–状æ€ï¼š%s\n"
#: protoize.c:1303
#, c-format
@@ -1775,11 +1775,13 @@ msgid ""
"\n"
"%s: fatal error: aux info file corrupted at line %d\n"
msgstr ""
+"\n"
+"%s:致命错误:辅助信æ¯æ–‡ä»¶çš„第 %d 行已æŸå\n"
#: protoize.c:1632
#, c-format
msgid "%s:%d: declaration of function '%s' takes different forms\n"
-msgstr ""
+msgstr "%s:%d:函数‘%s’的声明形å¼ä¸åŒ\n"
#: protoize.c:1887
#, c-format
@@ -1814,12 +1816,12 @@ msgstr "%s:无法读å–输助信æ¯æ–‡ä»¶â€˜%s’:%s\n"
#: protoize.c:2026 protoize.c:2054
#, c-format
msgid "%s: can't get status of aux info file '%s': %s\n"
-msgstr ""
+msgstr "%s:ä¸èƒ½èŽ·å–辅助信æ¯æ–‡ä»¶â€˜%s’的状æ€ï¼š%s\n"
#: protoize.c:2082
#, c-format
msgid "%s: can't open aux info file '%s' for reading: %s\n"
-msgstr ""
+msgstr "%s:无法打开辅助信æ¯æ–‡ä»¶â€˜%s’以供读出:%s\n"
#: protoize.c:2100
#, c-format
@@ -1852,9 +1854,9 @@ msgid "%s: conflicting extern definitions of '%s'\n"
msgstr "%s:‘%s’有相互冲çªçš„外部定义\n"
#: protoize.c:2415
-#, fuzzy, c-format
+#, c-format
msgid "%s: declarations of '%s' will not be converted\n"
-msgstr "找ä¸åˆ° %s。"
+msgstr "%s:‘%s’的声明ä¸ä¼šè¢«è½¬åŒ–\n"
#: protoize.c:2417
#, c-format
@@ -1864,7 +1866,7 @@ msgstr "%s:‘%s’的冲çªåˆ—表如下:\n"
#: protoize.c:2450
#, c-format
msgid "%s: warning: using formals list from %s(%d) for function '%s'\n"
-msgstr ""
+msgstr "%s:警告:使用æ¥è‡ª %s(%d)çš„å½¢å‚列表,为函数‘%s’\n"
#: protoize.c:2490
#, c-format
@@ -1894,12 +1896,12 @@ msgstr "%s:%d:警告:æºæ–‡ä»¶ä¸å¯ç†è§£\n"
#: protoize.c:2900
#, c-format
msgid "%s: %d: warning: varargs function declaration not converted\n"
-msgstr ""
+msgstr "%s:%d:警告:å¯å˜å‚数函数声明未被转化\n"
#: protoize.c:2915
-#, fuzzy, c-format
+#, c-format
msgid "%s: declaration of function '%s' not converted\n"
-msgstr "%s:未æ’入函数‘%s’的局部声明\n"
+msgstr "%s:函数‘%s’的声明ä¸ä¼šè¢«è½¬åŒ–\n"
#: protoize.c:3038
#, c-format
@@ -1931,26 +1933,28 @@ msgid ""
"\n"
"%s: %d: warning: can't add declaration of '%s' into macro call\n"
msgstr ""
+"\n"
+"%s:%d:警告:ä¸èƒ½å°†â€˜%s’的声明添加至å®è°ƒç”¨ä¸­\n"
#: protoize.c:3429
#, c-format
msgid "%s: global declarations for file '%s' not inserted\n"
-msgstr ""
+msgstr "%s:文件‘%s’的全局声明未被æ’å…¥\n"
#: protoize.c:3518 protoize.c:3548
-#, fuzzy, c-format
+#, c-format
msgid "%s: definition of function '%s' not converted\n"
-msgstr "函数ä¸å­˜åœ¨"
+msgstr "%s:函数‘%s’的定义ä¸ä¼šè¢«è½¬åŒ–\n"
#: protoize.c:3537
-#, fuzzy, c-format
+#, c-format
msgid "%s: %d: warning: definition of %s not converted\n"
-msgstr "警告:无法ç†è§£èŠ‚点 <%s>\n"
+msgstr "%s:%d:警告:%s 的定义未被转化\n"
#: protoize.c:3863
-#, fuzzy, c-format
+#, c-format
msgid "%s: found definition of '%s' at %s(%d)\n"
-msgstr "找到一个定义"
+msgstr "%s:找到‘%s’的定义,于 %s(%d)\n"
#. If we make it here, then we did not know about this
#. function definition.
@@ -1960,9 +1964,9 @@ msgid "%s: %d: warning: '%s' excluded by preprocessing\n"
msgstr "%s:%d:警告:‘%s’被预处ç†æ‰€æŽ’除\n"
#: protoize.c:3882
-#, fuzzy, c-format
+#, c-format
msgid "%s: function definition not converted\n"
-msgstr "函数ä¸å­˜åœ¨"
+msgstr "%s:函数定义ä¸ä¼šè¢«è½¬åŒ–\n"
#: protoize.c:3940
#, c-format
@@ -2034,12 +2038,8 @@ msgid "%s: input file names must have .c suffixes: %s\n"
msgstr "%s:输入文件å必须有 .c åŽç¼€ï¼š%s\n"
#: reload.c:3730
-#, fuzzy
msgid "unable to generate reloads for:"
-msgstr ""
-"无法打开\n"
-" %1\n"
-" æ¥å†™å…¥"
+msgstr "无法生æˆé‡æ–°è½½å…¥ï¼Œä¸ºï¼š"
#: reload1.c:1901
msgid "this is the insn:"
@@ -2052,14 +2052,12 @@ msgstr "找ä¸åˆ°å¯èˆå‡ºçš„寄存器"
#. It's the compiler's fault.
#: reload1.c:6722
-#, fuzzy
msgid "VOIDmode on an output"
-msgstr "输出时滚动(_R)"
+msgstr "输出有 VOIDmode"
#: reload1.c:7692
-#, fuzzy
msgid "Failure trying to reload:"
-msgstr "正在å°è¯•åœæ­¢å‘¼å«"
+msgstr "试图é‡æ–°è½½å…¥æ—¶å¤±è´¥ï¼š"
#: rtl-error.c:128
msgid "unrecognizable insn:"
@@ -2108,9 +2106,9 @@ msgid "collect: recompiling %s\n"
msgstr "collect:é‡æ–°ç¼–译 %s\n"
#: tlink.c:714
-#, fuzzy, c-format
+#, c-format
msgid "collect: tweaking %s in %s\n"
-msgstr " (在新窗å£ä¸­)"
+msgstr "collect:调整 %s,于 %s\n"
#: tlink.c:764
#, c-format
@@ -2123,17 +2121,16 @@ msgid "unrecoverable error"
msgstr "ä¸å¯æ¢å¤é”™è¯¯"
#: toplev.c:1114
-#, fuzzy, c-format
+#, c-format
msgid ""
"%s%s%s version %s (%s)\n"
"%s\tcompiled by GNU C version %s.\n"
msgstr ""
"%s%s%s 版本 %s (%s)\n"
"%s\t由 GNU C 版本 %s 编译。\n"
-"%s%s%s 版本 %s (%s) 由 CC 编译。\n"
#: toplev.c:1116
-#, fuzzy, c-format
+#, c-format
msgid "%s%s%s version %s (%s) compiled by CC.\n"
msgstr "由 CC 编译的 %s%s%s 版本 %s (%s)。\n"
@@ -2151,9 +2148,9 @@ msgid "options enabled: "
msgstr "å¯ç”¨çš„选项:"
#: toplev.c:1330
-#, fuzzy, c-format
+#, c-format
msgid "created and used with differing settings of '%s'"
-msgstr "创建和使用时使用了ä¸åŒçš„‘-m%s’设定"
+msgstr "创建和使用时使用了ä¸åŒçš„‘%s’设定"
#: toplev.c:1332
msgid "out of memory"
@@ -2210,7 +2207,7 @@ msgstr "调试:"
#: params.def:48
msgid "The maximum number of fields in a structure variable without direct structure accesses that GCC will attempt to track separately"
-msgstr ""
+msgstr "GCC 试图分别跟踪的ä¸å­˜åœ¨ç›´æŽ¥ç»“构访问的结构å˜é‡ä¸­çš„字段的最大数目"
#: params.def:57
msgid "The maximum structure size (in bytes) for which GCC will use by-element copies"
@@ -2222,7 +2219,7 @@ msgstr "GCC 将为其考虑按元素å¤åˆ¶çš„结构字段最大数é‡"
#: params.def:78
msgid "The threshold ratio between instantiated fields and the total structure size"
-msgstr ""
+msgstr "实例化的字段和结构总大å°ä¹‹æ¯”的阈值"
#: params.def:95
msgid "The maximum number of instructions in a single function eligible for inlining"
@@ -2250,11 +2247,11 @@ msgstr "éžå†…è”函数中嵌套内è”的最大深度"
#: params.def:132
msgid "Inline recursively only when the probability of call being executed exceeds the parameter"
-msgstr ""
+msgstr "仅当被执行的调用的概率超过此å‚数时方进行递归地内è”"
#: params.def:139
msgid "If -fvariable-expansion-in-unroller is used, the maximum number of times that an individual variable will be expanded during loop unrolling"
-msgstr ""
+msgstr "如果使用了 -fvariable-expansion-in-unroller,å³æŒ‡å•ä¸ªå˜é‡åœ¨å¾ªçŽ¯å±•å¼€æ—¶å¯ä»¥åŒæ—¶è¢«å±•å¼€çš„次数"
#: params.def:150
msgid "The maximum number of instructions to consider to fill a delay slot"
@@ -2262,11 +2259,11 @@ msgstr "考虑填充入延迟槽中的最大指令数"
#: params.def:161
msgid "The maximum number of instructions to consider to find accurate live register information"
-msgstr ""
+msgstr "用以å‘现准确的活动寄存器信æ¯çš„最大指令数é‡"
#: params.def:171
msgid "The maximum length of scheduling's pending operations list"
-msgstr ""
+msgstr "调度候选æ“作列表的最大长度"
#: params.def:176
msgid "The size of function body to be considered large"
@@ -2286,7 +2283,7 @@ msgstr "给定的编译å•å…ƒå› å†…è”造æˆçš„体积膨胀上é™(以百分数è¡
#: params.def:192
msgid "expense of call operation relative to ordinary arithmetic operations"
-msgstr ""
+msgstr "调用æ“作相对于普通算术æ“作的代价"
#: params.def:199
msgid "The maximum amount of memory to be allocated by GCSE"
@@ -2298,11 +2295,11 @@ msgstr "进行 GCSE 的最多趟数"
#: params.def:214
msgid "The threshold ratio for performing partial redundancy elimination after reload"
-msgstr ""
+msgstr "é‡æ–°è½½å…¥åŽè¿›è¡Œéƒ¨åˆ†å†—余消除的比例阈值"
#: params.def:221
msgid "The threshold ratio of critical edges execution count that permit performing redundancy elimination after reload"
-msgstr ""
+msgstr "é‡æ–°è½½å…¥åŽå…许进行冗余消除的关键边执行次数的比例阈值"
#: params.def:232
msgid "The maximum number of instructions to consider to unroll in a loop"
@@ -2334,7 +2331,7 @@ msgstr "一个完全剥离的å•ä¸ªå¾ªçŽ¯æœ€å¤§çš„剥离数"
#: params.def:268
msgid "The maximum number of insns of a peeled loop that rolls only once"
-msgstr ""
+msgstr "被剥离åŽåªå·ç»•ä¸€æ¬¡çš„循环包å«çš„最多指令数"
#: params.def:274
msgid "The maximum number of insns of an unswitched loop"
@@ -2378,11 +2375,11 @@ msgstr "é™æ€é¢„测时的最多循环次数"
#: params.def:334
msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is available"
-msgstr ""
+msgstr "必须被踪迹形æˆæ‰€è¦†ç›–的函数百分比,以执行频率加æƒã€‚当å–æ ·å馈å¯ç”¨æ—¶ä½¿ç”¨"
#: params.def:338
msgid "The percentage of function, weighted by execution frequency, that must be covered by trace formation. Used when profile feedback is not available"
-msgstr ""
+msgstr "必须被踪迹形æˆæ‰€è¦†ç›–的函数百分比,以执行频率加æƒã€‚当å–æ ·å馈ä¸å¯ç”¨æ—¶ä½¿ç”¨"
#: params.def:342
msgid "Maximal code growth caused by tail duplication (in percent)"
@@ -2402,15 +2399,15 @@ msgstr "当最优边的概率å°äºŽæ­¤é™å€¼(以百分数表示)时,åœæ­¢å‰å
#: params.def:360
msgid "The maximum number of incoming edges to consider for crossjumping"
-msgstr ""
+msgstr "考虑进行交å‰è·³è½¬çš„最大入边数é‡"
#: params.def:366
msgid "The minimum number of matching instructions to consider for crossjumping"
-msgstr ""
+msgstr "考虑进行交å‰è·³è½¬çš„最å°åŒ¹é…指令数é‡"
#: params.def:372
msgid "The maximum expansion factor when copying basic blocks"
-msgstr ""
+msgstr "å¤åˆ¶åŸºæœ¬å—时最大的展开因å­"
#: params.def:378
msgid "The maximum number of insns to duplicate when unfactoring computed gotos"
@@ -2463,7 +2460,7 @@ msgstr "GCSE å¯åˆ†é…的最大内存é‡"
#: params.def:459
msgid "Minimum heap expansion to trigger garbage collection, as a percentage of the total size of the heap"
-msgstr ""
+msgstr "引å‘垃圾收集的堆展开的最å°å€¼ï¼Œä»¥å å †æ€»å¤§å°çš„百分比给出"
#: params.def:464
msgid "Minimum heap size before we start collecting garbage, in kilobytes"
@@ -2486,9 +2483,8 @@ msgid "The maximum number of insns in a region to be considered for interblock s
msgstr "一个区域中考虑进行å—间调度的最大指令数"
#: params.def:492
-#, fuzzy
msgid "The minimum probability of reaching a source block for interblock speculative scheduling"
-msgstr "一个区域中考虑进行å—间调度的最大å—æ•°"
+msgstr "å—间预测调度时到达一个æºå—的最å°æ¦‚率"
#: params.def:497
msgid "The maximum number of RTL nodes that can be recorded as combiner's last value"
@@ -2592,7 +2588,7 @@ msgstr "无效 %%E 值"
#: config/alpha/alpha.c:5362 config/alpha/alpha.c:5410
#, fuzzy, c-format
msgid "unknown relocation unspec"
-msgstr "%1 (未知文件类型)"
+msgstr "未知的转义åºåˆ—:‘\\%c’"
#: config/alpha/alpha.c:5371 config/crx/crx.c:1082
#: config/rs6000/rs6000.c:10706
@@ -2661,7 +2657,7 @@ msgstr "地å€é”™è¯¯ï¼Œä¸æ˜¯(reg+disp):"
#: config/avr/avr.c:1123
msgid "bad address, not post_inc or pre_dec:"
-msgstr ""
+msgstr "错误的地å€ï¼Œä¸æ˜¯ post_inc 或 pre_dec:"
#: config/avr/avr.c:1134
msgid "internal compiler error. Bad address:"
@@ -2760,9 +2756,8 @@ msgid "c4x_valid_operands: Internal error"
msgstr "c4x_valid_operands:内部错误"
#: config/c4x/c4x.c:3853
-#, fuzzy
msgid "c4x_operand_subword: invalid mode"
-msgstr "c4x_operand_subword:无效的自增é‡"
+msgstr "c4x_operand_subword:无效模å¼"
#: config/c4x/c4x.c:3856
msgid "c4x_operand_subword: invalid operand"
@@ -2784,7 +2779,7 @@ msgstr "c4x_operand_subword:无法å–å移é‡çš„地å€"
#: config/c4x/c4x.c:4101
msgid "c4x_rptb_rpts_p: Repeat block top label moved"
-msgstr ""
+msgstr "c4x_rptb_rpts_p:é‡å¤å—的顶层标å·è¢«ç§»åŠ¨"
#. Use `%s' to print the string in case there are any escape
#. characters in the message.
@@ -2800,11 +2795,11 @@ msgstr "%s"
#: config/cris/cris.c:544
msgid "unexpected index-type in cris_print_index"
-msgstr ""
+msgstr "cris_print_index 中有éžé¢„期的索引类型"
#: config/cris/cris.c:558
msgid "unexpected base-type in cris_print_base"
-msgstr ""
+msgstr "cris_print_base 中有éžé¢„期的基类型"
#: config/cris/cris.c:674
msgid "invalid operand for 'b' modifier"
@@ -2859,9 +2854,8 @@ msgid "invalid operand modifier letter"
msgstr "无效的æ“作数修饰符字æ¯"
#: config/cris/cris.c:1025
-#, fuzzy
msgid "unexpected multiplicative operand"
-msgstr "æ ¼å¼(æ“作数)(&R):"
+msgstr "无效的乘性æ“作数"
#: config/cris/cris.c:1045
msgid "unexpected operand"
@@ -2872,20 +2866,18 @@ msgid "unrecognized address"
msgstr "无法识别的地å€"
#: config/cris/cris.c:2014
-#, fuzzy
msgid "unrecognized supposed constant"
-msgstr "固定比特率设置"
+msgstr "预期的常é‡æ— æ³•è¯†åˆ«"
#: config/cris/cris.c:2370 config/cris/cris.c:2415
msgid "unexpected side-effects in address"
-msgstr ""
+msgstr "地å€ä¸­æœ‰éžé¢„期的副作用"
#. Can't possibly get a GOT-needing-fixup for a function-call,
#. right?
#: config/cris/cris.c:3173
-#, fuzzy
msgid "Unidentifiable call op"
-msgstr "/图层(L)/剪割图层(_O)"
+msgstr "无法识别的 call æ“作"
#: config/cris/cris.c:3208
#, c-format
@@ -2939,20 +2931,17 @@ msgid "fr30_print_operand: unhandled MEM"
msgstr "fr30_print_operand:未处ç†çš„ MEM"
#: config/frv/frv.c:2541
-#, fuzzy
msgid "bad insn to frv_print_operand_address:"
-msgstr "给 frv_print_operand 错误的指令,‘e’修饰符:"
+msgstr "给 frv_print_operand_address 错误的指令:"
#: config/frv/frv.c:2552
-#, fuzzy
msgid "bad register to frv_print_operand_memory_reference_reg:"
-msgstr "给 frv_print_operand 错误的指令,‘e’修饰符:"
+msgstr "给 frv_print_operand_memory_reference_reg 错误的寄存器:"
#: config/frv/frv.c:2591 config/frv/frv.c:2601 config/frv/frv.c:2610
#: config/frv/frv.c:2631 config/frv/frv.c:2636
-#, fuzzy
msgid "bad insn to frv_print_operand_memory_reference:"
-msgstr "给 frv_print_operand 错误的指令,‘e’修饰符:"
+msgstr "给 frv_print_operand_memory_reference 错误的指令:"
#: config/frv/frv.c:2722
#, c-format
@@ -2960,9 +2949,8 @@ msgid "bad condition code"
msgstr "错误的æ¡ä»¶ç "
#: config/frv/frv.c:2797
-#, fuzzy
msgid "bad insn in frv_print_operand, bad const_double"
-msgstr "给 frv_print_operand 错误的指令,‘e’修饰符:"
+msgstr "frv_print_operand 中有错误指令,错误的 const_double"
#: config/frv/frv.c:2858
msgid "bad insn to frv_print_operand, 'e' modifier:"
@@ -2997,33 +2985,28 @@ msgid "bad insn to frv_print_operand, P modifier:"
msgstr "给 frv_print_operand 错误的指令,P 修饰符:"
#: config/frv/frv.c:3016
-#, fuzzy
msgid "bad insn in frv_print_operand, z case"
-msgstr "给 frv_print_operand 错误的指令,‘e’修饰符:"
+msgstr "frv_print_operand 中有错误指令,z case"
#: config/frv/frv.c:3047
-#, fuzzy
msgid "bad insn in frv_print_operand, 0 case"
-msgstr "给 frv_print_operand 错误的指令,‘e’修饰符:"
+msgstr "frv_print_operand 中有错误指令,0 case"
#: config/frv/frv.c:3052
msgid "frv_print_operand: unknown code"
msgstr "frv_print_operand:未知代ç "
#: config/frv/frv.c:4421
-#, fuzzy
msgid "bad output_move_single operand"
-msgstr "output_move_single:"
+msgstr "错误的 output_move_single æ“作数"
#: config/frv/frv.c:4548
-#, fuzzy
msgid "bad output_move_double operand"
-msgstr "无效的åŒç²¾åº¦å¸¸é‡æ“作数"
+msgstr "错误的 output_move_double æ“作数"
#: config/frv/frv.c:4690
-#, fuzzy
msgid "bad output_condmove_single operand"
-msgstr "output_move_single:"
+msgstr "错误的 output_condmove_single æ“作数"
#. This macro is a C statement to print on `stderr' a string describing the
#. particular machine description choice. Every machine description should
@@ -3086,19 +3069,16 @@ msgid "ia64_print_operand: unknown code"
msgstr "ia64_print_operand:未知代ç "
#: config/ia64/ia64.c:8918
-#, fuzzy
msgid "invalid conversion from %<__fpreg%>"
-msgstr "从类型 %qT 到类型 %qT 的转æ¢æ— æ•ˆ"
+msgstr "从 %<__fpreg%> 的转æ¢æ— æ•ˆ"
#: config/ia64/ia64.c:8921
-#, fuzzy
msgid "invalid conversion to %<__fpreg%>"
-msgstr "从类型 %qT 到类型 %qT 的转æ¢æ— æ•ˆ"
+msgstr "å‘ %<__fpreg%> 的转æ¢æ— æ•ˆ"
#: config/ia64/ia64.c:8934 config/ia64/ia64.c:8945
-#, fuzzy
msgid "invalid operation on %<__fpreg%>"
-msgstr "对未åˆå§‹åŒ–类型的æ“作无效"
+msgstr "对 %<__fpreg%> çš„æ“作无效"
#: config/iq2000/iq2000.c:3125
#, c-format
@@ -3157,15 +3137,13 @@ msgid "bad address"
msgstr "错误地å€"
#: config/m32r/m32r.c:2049
-#, fuzzy
msgid "lo_sum not of register"
-msgstr "无法在 DCOP 上登记。\n"
+msgstr "lo_sum ä¸æ˜¯å¯„存器"
#. !!!! SCz wrong here.
#: config/m68hc11/m68hc11.c:3189 config/m68hc11/m68hc11.c:3567
-#, fuzzy
msgid "move insn not handled"
-msgstr "无法分离指令"
+msgstr "æœªå¤„ç† move 指令"
#: config/m68hc11/m68hc11.c:3413 config/m68hc11/m68hc11.c:3497
#: config/m68hc11/m68hc11.c:3770
@@ -3181,9 +3159,8 @@ msgid "invalid register in the instruction"
msgstr "此指令中寄存器无效"
#: config/m68hc11/m68hc11.c:3777
-#, fuzzy
msgid "operand 1 must be a hard register"
-msgstr "目的寄存器æ“作数必须是å¶æ•°"
+msgstr "æ“作数 1 必须是一个硬件寄存器"
#: config/m68hc11/m68hc11.c:3791
msgid "invalid rotate insn"
@@ -3194,14 +3171,12 @@ msgid "registers IX, IY and Z used in the same INSN"
msgstr "在相åŒæŒ‡ä»¤ä¸­ä½¿ç”¨å¯„存器 IXã€IY å’Œ Z"
#: config/m68hc11/m68hc11.c:4552 config/m68hc11/m68hc11.c:4852
-#, fuzzy
msgid "cannot do z-register replacement"
-msgstr "无法注册到 OAF"
+msgstr "æ— æ³•å®Œæˆ z 寄存器替æ¢"
#: config/m68hc11/m68hc11.c:4915
-#, fuzzy
msgid "invalid Z register replacement for insn"
-msgstr "PRINT_OPERAND,%%C 的指令无效"
+msgstr "无效的 Z 寄存器替æ¢"
#: config/mips/mips.c:5200
msgid "mips_debugger_offset called with non stack/frame/arg pointer"
@@ -3233,9 +3208,9 @@ msgid "invalid %%Y value"
msgstr "无效的 %%Y 值"
#: config/mips/mips.c:5483 config/mips/mips.c:5491
-#, fuzzy, c-format
+#, c-format
msgid "PRINT_OPERAND, invalid insn for %%q"
-msgstr "PRINT_OPERAND,%%C 的指令无效"
+msgstr "PRINT_OPERAND,%%q 指令无效"
#: config/mips/mips.c:5560
msgid "PRINT_OPERAND, invalid operand for relocation"
@@ -3287,14 +3262,12 @@ msgid "ms1_final_prescan_insn, invalid insn #1"
msgstr ""
#: config/ms1/ms1.c:373
-#, fuzzy
msgid "PRINT_OPERAND_ADDRESS, 2 regs"
-msgstr "PRINT_OPERAND_ADDRESS,空指针"
+msgstr "PRINT_OPERAND_ADDRESS,两个寄存器"
#: config/ms1/ms1.c:397
-#, fuzzy
msgid "PRINT_OPERAND_ADDRESS, invalid insn #1"
-msgstr "PRINT_OPERAND,%%C 的指令无效"
+msgstr "PRINT_OPERAND_ADDRESS,无效指令 #1"
#: config/rs6000/host-darwin.c:83
#, c-format
@@ -3304,7 +3277,7 @@ msgstr "堆栈溢出。\n"
#: config/rs6000/host-darwin.c:104
#, c-format
msgid "Try running '%s' in the shell to raise its limit.\n"
-msgstr ""
+msgstr "å°è¯•åœ¨å‘½ä»¤è§£é‡Šå™¨ä¸­è¿è¡Œâ€˜%s’以æå‡å®ƒçš„æžé™ã€‚\n"
#: config/rs6000/rs6000.c:10152
#, c-format
@@ -3372,44 +3345,39 @@ msgid "invalid %%v value"
msgstr "无效 %%v 值"
#: config/rs6000/rs6000.c:19064
-#, fuzzy
msgid "AltiVec argument passed to unprototyped function"
-msgstr "给予函数的实å‚太少"
+msgstr "传递 AltiVec 实å‚给无原型的函数"
#: config/s390/s390.c:4175
-#, fuzzy, c-format
+#, c-format
msgid "cannot decompose address"
-msgstr "无法分解地å€ã€‚"
+msgstr "无法分解地å€"
#: config/s390/s390.c:4385
-#, fuzzy
msgid "UNKNOWN in print_operand !?"
-msgstr "PRINT_OPERAND:未知的标点‘%c’"
+msgstr "UNKNOWN 出现在 print_operand 中?ï¼"
#: config/sh/sh.c:768
-#, fuzzy, c-format
+#, c-format
msgid "invalid operand to %%R"
-msgstr "%%R 代ç çš„æ“作数无效"
+msgstr "%%R çš„æ“作数无效"
#: config/sh/sh.c:795
-#, fuzzy, c-format
+#, c-format
msgid "invalid operand to %%S"
-msgstr "%%R 代ç çš„æ“作数无效"
+msgstr "%%S çš„æ“作数无效"
#: config/sh/sh.c:7661
-#, fuzzy
msgid "created and used with different architectures / ABIs"
-msgstr "创建和使用时使用了ä¸åŒçš„ -fpic 设定"
+msgstr "创建和使用时使用了ä¸åŒçš„架构/ABI"
#: config/sh/sh.c:7663
-#, fuzzy
msgid "created and used with different ABIs"
-msgstr "创建和使用时使用了ä¸åŒçš„ -fpic 设定"
+msgstr "创建和使用时使用了ä¸åŒçš„ ABI"
#: config/sh/sh.c:7665
-#, fuzzy
msgid "created and used with different endianness"
-msgstr "创建和使用时使用了ä¸åŒçš„ -fpic 设定"
+msgstr "创建和使用时使用了ä¸åŒçš„高/低ä½å­—节在å‰è®¾å®š"
#: config/sparc/sparc.c:6610 config/sparc/sparc.c:6616
#, c-format
@@ -3474,7 +3442,7 @@ msgstr "‘B’æ“作数ä¸æ˜¯ä¸€ä¸ªå¸¸é‡"
#: config/stormy16/stormy16.c:1791
#, c-format
msgid "'B' operand has multiple bits set"
-msgstr ""
+msgstr "‘B’æ“作数设置了多个ä½"
#: config/stormy16/stormy16.c:1817
#, c-format
@@ -3482,9 +3450,9 @@ msgid "'o' operand is not constant"
msgstr "‘o’æ“作数ä¸æ˜¯ä¸€ä¸ªå¸¸é‡"
#: config/stormy16/stormy16.c:1849
-#, fuzzy, c-format
+#, c-format
msgid "xstormy16_print_operand: unknown code"
-msgstr "ia64_print_operand:未知代ç "
+msgstr "xstormy16_print_operand:未知代ç "
#: config/v850/v850.c:360
msgid "const_double_split got a bad insn:"
@@ -3582,11 +3550,11 @@ msgstr "%L 处被零除"
#: fortran/arith.c:156
msgid "Array operands are incommensurate at %L"
-msgstr ""
+msgstr "%L 处数组æ“作数无法被使用"
#: fortran/arith.c:160
msgid "Integer outside symmetric range implied by Standard Fortran at %L"
-msgstr ""
+msgstr "%L 处整数超出标准 Fortran éšå«çš„对称范围"
#: fortran/arith.c:1384
msgid "Elemental binary operation"
@@ -3613,9 +3581,9 @@ msgid "Arithmetic NaN converting %s to %s at %L"
msgstr "从 %s 转æ¢åˆ° %s,在 %L 处:算术 NaN"
#: fortran/arith.c:1930
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Division by zero converting %s to %s at %L"
-msgstr "%<%E / 0%> 中被零除"
+msgstr "从 %s 转æ¢åˆ° %s 时被零除,于 %L 处"
#: fortran/arith.c:1934
#, no-c-format
@@ -3631,7 +3599,7 @@ msgstr ""
#: fortran/arith.c:2393
#, no-c-format
msgid "The Hollerith constant at %L is too long to convert to %s"
-msgstr ""
+msgstr "%L çš„è·å‹’瑞斯常数太长,无法被转æ¢ä¸º %s"
#: fortran/arith.c:2439
#, no-c-format
@@ -3644,14 +3612,14 @@ msgid "Expected array subscript at %C"
msgstr "%C 处需è¦æ•°ç»„下标"
#: fortran/array.c:124
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Expected array subscript stride at %C"
-msgstr "数组下标类型为 %<char%>"
+msgstr "%C 需è¦æ•°ç»„下标间隔"
#: fortran/array.c:167
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Invalid form of array reference at %C"
-msgstr "%C 处的任何引用都ä¸èƒ½å¤šäºŽ %d ç»´"
+msgstr "%C 处数组引用形å¼æ— æ•ˆ"
#: fortran/array.c:172
#, no-c-format
@@ -3661,12 +3629,12 @@ msgstr "%C 处的任何引用都ä¸èƒ½å¤šäºŽ %d ç»´"
#: fortran/array.c:224
#, no-c-format
msgid "Variable '%s' at %L in this context must be constant"
-msgstr ""
+msgstr "å˜é‡â€˜%s’在 %L 处上下文中必须是常é‡"
#: fortran/array.c:300
#, no-c-format
msgid "Expected expression in array specification at %C"
-msgstr ""
+msgstr "%C 处指定数组时需è¦è¡¨è¾¾å¼"
#: fortran/array.c:379
#, no-c-format
@@ -3691,12 +3659,12 @@ msgstr ""
#: fortran/array.c:416
#, no-c-format
msgid "Expected another dimension in array declaration at %C"
-msgstr ""
+msgstr "%C 处数组声明需è¦å¦å¤–一维"
#: fortran/array.c:422
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Array specification at %C has more than %d dimensions"
-msgstr "%C 处的任何引用都ä¸èƒ½å¤šäºŽ %d ç»´"
+msgstr "%C 处数组指定了多于 %d 的维数"
#: fortran/array.c:627
#, no-c-format
@@ -3706,37 +3674,37 @@ msgstr "é‡å¤çš„åˆå§‹å€¼è®¾å®š"
#: fortran/array.c:720
#, no-c-format
msgid "DO-iterator '%s' at %L is inside iterator of the same name"
-msgstr ""
+msgstr "DO 游标‘%s’在 %L 处出现在å¦ä¸€ä¸ªåŒå游标作用域内"
#: fortran/array.c:822 fortran/array.c:931
#, no-c-format
msgid "Syntax error in array constructor at %C"
-msgstr ""
+msgstr "%C 数组构造语法错误"
#: fortran/array.c:877
#, no-c-format
msgid "New in Fortran 2003: [...] style array constructors at %C"
-msgstr ""
+msgstr "Fortran 2003 中的新特性:%C 处 [...] 风格的数组构造"
#: fortran/array.c:891
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Empty array constructor at %C is not allowed"
-msgstr "ä¸å…许 min/max 指令"
+msgstr "%C 处的空数组构造ä¸è¢«å…许"
#: fortran/array.c:976
#, no-c-format
msgid "Element in %s array constructor at %L is %s"
-msgstr ""
+msgstr "%s 数组构造中的元素在 %L 处是 %s"
#: fortran/array.c:1305
#, no-c-format
msgid "Iterator step at %L cannot be zero"
-msgstr ""
+msgstr "%L 迭代次数ä¸èƒ½ä¸ºé›¶"
#: fortran/check.c:44
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be %s"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)的秩必须为 %d"
+msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须是 %s"
#: fortran/check.c:60
#, no-c-format
@@ -3754,14 +3722,14 @@ msgid "'%s' argument of '%s' intrinsic at %L must be REAL or COMPLEX"
msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须为实数型或å¤æ•°åž‹"
#: fortran/check.c:118
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be a constant"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)的秩必须为 %d"
+msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须是一个常é‡"
#: fortran/check.c:126
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Invalid kind for %s at %L"
-msgstr "%s:“%s†开始部份的数字无效"
+msgstr "%s ç§åˆ«æ— æ•ˆï¼ŒäºŽ %L 处"
#: fortran/check.c:146
#, no-c-format
@@ -3786,7 +3754,7 @@ msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须是一个标
#: fortran/check.c:210
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be the same type and kind as '%s'"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须具有与‘%s’一样的类型和ç§ç±»"
+msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须具有与‘%s’一样的类型和ç§åˆ«"
#: fortran/check.c:225
#, no-c-format
@@ -3801,12 +3769,12 @@ msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)ä¸èƒ½ä¸ºå¯é€‰çš„
#: fortran/check.c:259
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be of kind %d"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须具有ç§ç±» %d"
+msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须具有ç§åˆ« %d"
#: fortran/check.c:280
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L cannot be INTENT(IN)"
-msgstr ""
+msgstr "‘%s’实å‚(属于内建函数‘%s’)在 %L 处ä¸èƒ½æ˜¯ INTENT(IN)"
#: fortran/check.c:286
#, no-c-format
@@ -3816,12 +3784,12 @@ msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须是一个å˜
#: fortran/check.c:311
#, no-c-format
msgid "Missing DIM parameter in intrinsic '%s' at %L"
-msgstr ""
+msgstr "内建函数‘%s’在 %L 处缺少 DIM å‚æ•°"
#: fortran/check.c:348
#, no-c-format
msgid "'dim' argument of '%s' intrinsic at %L is not a valid dimension index"
-msgstr ""
+msgstr "‘%s’内建函数的‘dim’实å‚(于 %L 处)ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„维数索引"
#: fortran/check.c:434
#, no-c-format
@@ -3836,7 +3804,7 @@ msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须是一个 PO
#: fortran/check.c:485
#, no-c-format
msgid "NULL pointer at %L is not permitted as actual argument of '%s' intrinsic function"
-msgstr ""
+msgstr "%L çš„ NULL 指针ä¸èƒ½ç”¨ä½œå†…建函数‘%s’的实å‚"
#: fortran/check.c:494
#, no-c-format
@@ -3846,12 +3814,12 @@ msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须是一个 PO
#: fortran/check.c:510
#, no-c-format
msgid "Array section with a vector subscript at %L shall not be the target of a pointer"
-msgstr ""
+msgstr "%L 处由矢é‡ä¸‹æ ‡é€‰æ‹©çš„部分数组ä¸åº”是指针的目标"
#: fortran/check.c:620 fortran/check.c:722
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must not be present if 'x' is COMPLEX"
-msgstr ""
+msgstr "当‘x’是 COMPLEX 时‘%s’实å‚(属于‘%s’内建函数,在 %L 处)ä¸èƒ½å­˜åœ¨"
#: fortran/check.c:771 fortran/check.c:1423 fortran/check.c:1431
#, no-c-format
@@ -3862,7 +3830,7 @@ msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须为数字或
#: fortran/check.c:1343
#, no-c-format
msgid "Extension: Different type kinds at %L"
-msgstr ""
+msgstr "扩展:%L 处类型ç§åˆ«ä¸åŒ"
#: fortran/check.c:1025
#, no-c-format
@@ -3872,7 +3840,7 @@ msgstr "%s çš„å‚æ•°(ä½äºŽ %L)长度必须为 1"
#: fortran/check.c:1077
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be the same kind as '%s'"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须具有与‘%s’一样的ç§ç±»"
+msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须具有与‘%s’一样的ç§åˆ«"
#: fortran/check.c:1192
#, no-c-format
@@ -3892,7 +3860,7 @@ msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须是 %s(%d)"
#: fortran/check.c:1374
#, no-c-format
msgid "'a1' argument of '%s' intrinsic at %L must be INTEGER or REAL"
-msgstr ""
+msgstr "‘%s’内建函数的‘a1’实å‚在 %L 处必须是 INTEGER 或 REAL"
#: fortran/check.c:1452
#, no-c-format
@@ -3907,7 +3875,7 @@ msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须与‘%s’å
#: fortran/check.c:1667
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be of type REAL or COMPLEX"
-msgstr ""
+msgstr "‘%s’实å‚(属于内建函数‘%s’,于 %L 处)的类型必须为 REAL 或 COMPLEX"
#: fortran/check.c:1688
#, no-c-format
@@ -3917,17 +3885,17 @@ msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须是一个哑
#: fortran/check.c:1696
#, no-c-format
msgid "'%s' argument of '%s' intrinsic at %L must be of an OPTIONAL dummy variable"
-msgstr ""
+msgstr "‘%s’实å‚(属于‘%s’内建函数,ä½äºŽ %L)必须是一个 OPTIONAL å“‘å˜é‡"
#: fortran/check.c:1812
#, no-c-format
msgid "'shape' argument of 'reshape' intrinsic at %L must be an array of constant size"
-msgstr ""
+msgstr "‘reshape’内建函数的‘shape’实å‚在 %L 处必须是大å°ä¸ºå¸¸é‡çš„数组"
#: fortran/check.c:1822
#, no-c-format
msgid "'shape' argument of 'reshape' intrinsic at %L has more than %d elements"
-msgstr ""
+msgstr "‘reshape’内建函数的‘shape’实å‚在 %L 处有多于 %d 个的元素"
#: fortran/check.c:1910
#, no-c-format
@@ -3937,7 +3905,7 @@ msgstr "%s 内建函数缺少实å‚,于 %L 处"
#: fortran/check.c:1951
#, no-c-format
msgid "'source' argument of 'shape' intrinsic at %L must not be an assumed size array"
-msgstr ""
+msgstr "‘shape’内建函数的‘source’实å‚在 %L 处ä¸èƒ½æ˜¯å‡å®šå¤§å°çš„数组"
#: fortran/check.c:2013
#, no-c-format
@@ -3945,9 +3913,9 @@ msgid "'%s' argument of '%s' intrinsic at %L must be less than rank %d"
msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)秩必须å°äºŽ %d"
#: fortran/check.c:2470 fortran/check.c:2490
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Too many arguments to %s at %L"
-msgstr "给予函数 %qs çš„å‚数太多"
+msgstr "给予函数 %s çš„å‚数太多,于 %L"
#: fortran/check.c:2618 fortran/check.c:2980 fortran/check.c:3004
#, no-c-format
@@ -3962,17 +3930,17 @@ msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须为 INTEGER
#: fortran/check.c:3066
#, no-c-format
msgid "'%s' and '%s' arguments of '%s' intrinsic at %L must have the same type"
-msgstr ""
+msgstr "‘%s’和‘%s’实å‚(属于‘%s’内建函数)在 %L 处类型必须相åŒ"
#: fortran/data.c:63
-#, fuzzy, no-c-format
+#, no-c-format
msgid "non-constant array in DATA statement %L."
-msgstr "åˆå§‹å€¼è®¾å®šä¸­æ•°ç»„索引ä¸æ˜¯å¸¸æ•°"
+msgstr "%L DATA 语å¥ä¸­æœ‰éžå¸¸é‡æ•°ç»„"
#: fortran/data.c:327
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Extension: re-initialization of '%s' at %L"
-msgstr "扩展:%C 处缺少逗å·"
+msgstr "扩展:‘%s’é‡åˆå§‹åŒ–于 %L"
#: fortran/decl.c:208
#, no-c-format
@@ -3982,47 +3950,47 @@ msgstr ""
#: fortran/decl.c:215
#, no-c-format
msgid "Extension: initialization of common block variable '%s' in DATA statement at %C"
-msgstr ""
+msgstr "扩展:DATA 语å¥ä¸­å¯¹å…¬å…±å—å˜é‡â€˜%s’在 %C 处åˆå§‹åŒ–"
#: fortran/decl.c:301
#, no-c-format
msgid "Symbol '%s' must be a PARAMETER in DATA statement at %C"
-msgstr ""
+msgstr "DATA 语å¥ä¸­ç¬¦å·â€˜%s’必须是一个 PARAMETER,在 %C 处"
#: fortran/decl.c:408
#, no-c-format
msgid "Initialization at %C is not allowed in a PURE procedure"
-msgstr ""
+msgstr "åˆå§‹åŒ–ä¸å…许出现在 %C 处的 PURE 过程中"
#: fortran/decl.c:455
#, no-c-format
msgid "DATA statement at %C is not allowed in a PURE procedure"
-msgstr ""
+msgstr "DATA 语å¥ä¸å…许出现在 %C 处的 PURE 过程中"
#: fortran/decl.c:483
#, no-c-format
msgid "Bad INTENT specification at %C"
-msgstr ""
+msgstr "%C 处错误地指定 INTENT"
#: fortran/decl.c:547
#, no-c-format
msgid "Syntax error in character length specification at %C"
-msgstr ""
+msgstr "%C 处指定字符长度时语法错误"
#: fortran/decl.c:779
#, no-c-format
msgid "Initializer not allowed for PARAMETER '%s' at %C"
-msgstr ""
+msgstr "PARAMETER‘%s’在 %C 处ä¸å…许有åˆå§‹å€¼è®¾å®š"
#: fortran/decl.c:788
#, no-c-format
msgid "Initializer not allowed for COMMON variable '%s' at %C"
-msgstr ""
+msgstr "COMMON å˜é‡â€˜%s’在 %C 处ä¸å…许有åˆå§‹å€¼è®¾å®š"
#: fortran/decl.c:798
-#, fuzzy, no-c-format
+#, no-c-format
msgid "PARAMETER at %L is missing an initializer"
-msgstr "缺少åˆå§‹å€¼è®¾å®š"
+msgstr "%L 处 PARAMETER 缺少åˆå§‹å€¼è®¾å®š"
#: fortran/decl.c:809
#, no-c-format
@@ -4032,7 +4000,7 @@ msgstr ""
#: fortran/decl.c:887
#, no-c-format
msgid "Component at %C must have the POINTER attribute"
-msgstr ""
+msgstr "%C 处的组件必须有 POINTER 属性"
#: fortran/decl.c:896
#, no-c-format
@@ -4052,12 +4020,12 @@ msgstr ""
#: fortran/decl.c:961
#, no-c-format
msgid "NULL() initialization at %C is ambiguous"
-msgstr ""
+msgstr "%C 处的 NULL() åˆå§‹åŒ–有歧义"
#: fortran/decl.c:1028
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enumerator cannot be array at %C"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须是一个逻辑数组"
+msgstr "%C 处枚举é‡ä¸èƒ½æ˜¯æ•°ç»„"
#: fortran/decl.c:1089 fortran/decl.c:3297
#, no-c-format
@@ -4075,9 +4043,9 @@ msgid "Extension: Old-style initialization at %C"
msgstr "扩展:%C 处旧å¼çš„åˆå§‹åŒ–"
#: fortran/decl.c:1173
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Initialization at %C isn't for a pointer variable"
-msgstr "åˆå§‹åŒ–将指针赋给整数,未作类型转æ¢"
+msgstr "%C çš„åˆå§‹åŒ–ä¸æ˜¯ä¸ºæŒ‡é’ˆå˜é‡å‡†å¤‡çš„"
#: fortran/decl.c:1181
#, no-c-format
@@ -4085,9 +4053,9 @@ msgid "Pointer initialization requires a NULL at %C"
msgstr "%C 处的指针åˆå§‹åŒ–éœ€è¦ NULL"
#: fortran/decl.c:1188
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Initialization of pointer at %C is not allowed in a PURE procedure"
-msgstr ""
+msgstr "DATA 语å¥ä¸å…许出现在 %C 处的 PURE 过程中"
#: fortran/decl.c:1204
#, no-c-format
@@ -4095,14 +4063,14 @@ msgid "Pointer initialization at %C requires '=>', not '='"
msgstr "在 %C 处的指针åˆå§‹åŒ–需è¦â€˜=>’,而ä¸æ˜¯â€˜=’"
#: fortran/decl.c:1212
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Expected an initialization expression at %C"
-msgstr "%C 处需è¦å¸¸é‡è¡¨è¾¾å¼"
+msgstr "%C 处需è¦ä¸€ä¸ªåˆå§‹åŒ–表达å¼"
#: fortran/decl.c:1219
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Initialization of variable at %C is not allowed in a PURE procedure"
-msgstr ""
+msgstr "DATA 语å¥ä¸å…许出现在 %C 处的 PURE 过程中"
#: fortran/decl.c:1241
#, no-c-format
@@ -4110,39 +4078,39 @@ msgid "ENUMERATOR %L not initialized with integer expression"
msgstr ""
#: fortran/decl.c:1298
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Old-style kind %d not supported for type %s at %C"
-msgstr "-fdata-sections 在此目标机上ä¸å—支æŒ"
+msgstr "æ—§å¼çš„ç§åˆ« %d 在 %C 处ä¸ä¸ºç±»åž‹ %s 所支æŒ"
#: fortran/decl.c:1334
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Expected initialization expression at %C"
-msgstr "%C 处需è¦å¸¸é‡è¡¨è¾¾å¼"
+msgstr "%C 处需è¦åˆå§‹åŒ–表达å¼"
#: fortran/decl.c:1340
#, no-c-format
msgid "Expected scalar initialization expression at %C"
-msgstr ""
+msgstr "%C 处需è¦æ ‡é‡åˆå§‹åŒ–表达å¼"
#: fortran/decl.c:1358
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Kind %d not supported for type %s at %C"
-msgstr "朗读光标类型ä¸æ”¯æŒçš„值“%sâ€"
+msgstr "ç§åˆ« %d 在 %C 处 ä¸ä¸ºç±»åž‹ %s 所支æŒ"
#: fortran/decl.c:1367
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Missing right paren at %C"
-msgstr "移到å³è¾¹ç¼˜"
+msgstr "%C 处缺少å³æ‹¬å·"
#: fortran/decl.c:1456 fortran/decl.c:1499
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Kind %d is not a CHARACTER kind at %C"
-msgstr "在 %1:%2 çš„å•ä¸ªâ€œ.â€ä¸æ˜¯æ•°å­—"
+msgstr "ç§åˆ« %d 在 %C 处ä¸æ˜¯ CHARACTER ç§åˆ«"
#: fortran/decl.c:1493
#, no-c-format
msgid "Syntax error in CHARACTER declaration at %C"
-msgstr ""
+msgstr "%C 的 CHARACTER 声明语法错误"
#: fortran/decl.c:1554
#, no-c-format
@@ -4155,9 +4123,9 @@ msgid "BYTE type used at %C is not available on the target machine"
msgstr "%C 使用到的 BYTE 类型在目标机上ä¸å¯"
#: fortran/decl.c:1628
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Type name '%s' at %C is ambiguous"
-msgstr "类型已过时(于 %s:%d 声明)"
+msgstr "类型å‘%s’(于 %C 处)有歧义"
#: fortran/decl.c:1694
#, no-c-format
@@ -4167,27 +4135,27 @@ msgstr ""
#: fortran/decl.c:1740
#, no-c-format
msgid "Letters must be in alphabetic order in IMPLICIT statement at %C"
-msgstr ""
+msgstr "%C 处 IMPLICIT 语å¥ä¸­çš„å­—æ¯å¿…须按åºæŽ’列"
#: fortran/decl.c:1794
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Empty IMPLICIT statement at %C"
-msgstr "在下个语å¥å¤„中断(&B)"
+msgstr "%C IMPLICIT 语å¥ä¸ºç©º"
#: fortran/decl.c:1958
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Enumerator cannot have attributes %C"
-msgstr "无法找到下一个属性ï¼"
+msgstr "枚举é‡ä¸èƒ½æœ‰å±žæ€§ %C"
#: fortran/decl.c:1971
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Missing dimension specification at %C"
-msgstr "扩展:%C 处缺少逗å·"
+msgstr "%C 处没有指定维数"
#: fortran/decl.c:2053
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate %s attribute at %L"
-msgstr "在约会结æŸæ—¶ %s"
+msgstr "é‡å¤çš„ %s 属性,ä½äºŽ %L"
#: fortran/decl.c:2070
#, no-c-format
@@ -4195,46 +4163,46 @@ msgid "Attribute at %L is not allowed in a TYPE definition"
msgstr ""
#: fortran/decl.c:2084
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s attribute at %L is not allowed outside of a MODULE"
-msgstr "%J%qD ä¸èƒ½æœ‰ section 属性"
+msgstr "%s 属性(ä½äºŽ %L)ä¸å…许出现在 MODULE 以外"
#. Now we have an error, which we signal, and then fix up
#. because the knock-on is plain and simple confusing.
#: fortran/decl.c:2222
#, no-c-format
msgid "Derived type at %C has not been previously defined and so cannot appear in a derived type definition."
-msgstr ""
+msgstr "%C 处的派生类型尚未被定义,因此ä¸èƒ½å‡ºçŽ°åœ¨æ´¾ç”Ÿç±»åž‹å®šä¹‰ä¸­"
#: fortran/decl.c:2252
#, no-c-format
msgid "Syntax error in data declaration at %C"
-msgstr "%C çš„æ•°æ®å£°æ˜Žè¯­æ³•é”™è¯¯"
+msgstr "%C 处数æ®å£°æ˜Žè¯­æ³•é”™è¯¯"
#: fortran/decl.c:2398
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Name '%s' at %C is the name of the procedure"
-msgstr "å称ä¸å”¯ä¸€"
+msgstr "å字‘%s’(ä½äºŽ %C)是一个过程的åå­—"
#: fortran/decl.c:2410
#, no-c-format
msgid "Unexpected junk in formal argument list at %C"
-msgstr ""
+msgstr "%C 处形å‚列表中有éžé¢„期的垃圾字符"
#: fortran/decl.c:2428
#, no-c-format
msgid "Duplicate symbol '%s' in formal argument list at %C"
-msgstr ""
+msgstr "符å·â€˜%s’在 %C 处的形å‚列表中é‡å¤å‡ºçŽ°"
#: fortran/decl.c:2471
#, no-c-format
msgid "Unexpected junk following RESULT variable at %C"
-msgstr ""
+msgstr "%C 处的 RESULT å˜é‡åŽæœ‰éžé¢„期的垃圾字符"
#: fortran/decl.c:2478
#, no-c-format
msgid "RESULT variable at %C must be different than function name"
-msgstr ""
+msgstr "%C 处 RESULT å˜é‡ä¸èƒ½ä¸Žå‡½æ•°é‡å"
#: fortran/decl.c:2533
#, no-c-format
@@ -4247,9 +4215,9 @@ msgid "Unexpected junk after function declaration at %C"
msgstr "%C 处的函数声明åŽæœ‰éžé¢„期的垃圾字符"
#: fortran/decl.c:2565
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Function '%s' at %C already has a type of %s"
-msgstr "å­—æ¯ %c 在 %C 处已ç»æœ‰äº†ä¸€ä¸ª IMPLICIT 类型"
+msgstr "函数‘%s’(ä½äºŽ %C)å·²ç»å…·æœ‰ç±»åž‹ %s"
#: fortran/decl.c:2613
#, no-c-format
@@ -4307,14 +4275,14 @@ msgid "ENTRY statement at %C cannot appear within a contained subprogram"
msgstr "%C 处的 ENTRY 语å¥ä¸èƒ½å‡ºçŽ°åœ¨åµŒå¥—çš„å­ç¨‹åºä¸­"
#: fortran/decl.c:2666
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ENTRY statement at %C cannot appear in a contained procedure"
-msgstr "%C 处的 ENTRY 语å¥ä¸èƒ½å‡ºçŽ°åœ¨åµŒå¥—çš„å­ç¨‹åºä¸­"
+msgstr "%C 处 ENTRY 语å¥ä¸èƒ½å‡ºçŽ°åœ¨è¢«åŒ…å«çš„过程中"
#: fortran/decl.c:2741
#, no-c-format
msgid "RESULT attribute required in ENTRY statement at %C"
-msgstr ""
+msgstr "%C 处的 ENTRY 语å¥éœ€è¦ RESULT 属性"
#: fortran/decl.c:2982
#, no-c-format
@@ -4328,14 +4296,14 @@ msgid "%s statement expected at %L"
msgstr "éœ€è¦ %s 语å¥åœ¨ %L 处"
#: fortran/decl.c:3002
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Expecting %s statement at %C"
-msgstr "在下个语å¥å¤„中断(&B)"
+msgstr "éœ€è¦ %s 语å¥ï¼ŒäºŽ %C"
#: fortran/decl.c:3016
#, no-c-format
msgid "Expected block name of '%s' in %s statement at %C"
-msgstr ""
+msgstr "需è¦å—å‘%s’在‘%s’表达å¼ä¸­ï¼ŒäºŽ %C"
#: fortran/decl.c:3032
#, no-c-format
@@ -4343,9 +4311,9 @@ msgid "Expected terminating name at %C"
msgstr "%C 处需è¦ç»“æŸå"
#: fortran/decl.c:3041
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Expected label '%s' for %s statement at %C"
-msgstr "æ ‡å·ä½äºŽå¤åˆè¯­å¥æœ«å°¾"
+msgstr "需è¦æ ‡å·â€˜%s’,为 %s 语å¥ï¼ŒäºŽ %C"
#: fortran/decl.c:3096
#, no-c-format
@@ -4353,14 +4321,14 @@ msgid "Missing array specification at %L in DIMENSION statement"
msgstr ""
#: fortran/decl.c:3105
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Array specification must be deferred at %L"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须是一个逻辑数组"
+msgstr "%L 处数组指定必须延迟"
#: fortran/decl.c:3176
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Unexpected character in variable list at %C"
-msgstr ""
+msgstr "%C 处形å‚列表中有éžé¢„期的垃圾字符"
#: fortran/decl.c:3213
#, no-c-format
@@ -4373,14 +4341,14 @@ msgid "Expected variable name at %C"
msgstr "在 %C 处需è¦å˜é‡å"
#: fortran/decl.c:3243
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Cray pointer at %C must be an integer."
-msgstr "%L 处的表达å¼å¿…须具有 INTEGER 类型"
+msgstr "%C 处 Cray 指针必须是一个整数。"
#: fortran/decl.c:3247
#, no-c-format
msgid "Cray pointer at %C has %d bytes of precision; memory addresses require %d bytes."
-msgstr ""
+msgstr "%C 处的 Cray 指针精度为 %d;内存地å€éœ€è¦ %d 字节"
#: fortran/decl.c:3254
#, no-c-format
@@ -4400,7 +4368,7 @@ msgstr "在 %C 处需è¦â€œ,â€æˆ–语å¥å°¾"
#: fortran/decl.c:3394
#, no-c-format
msgid "Cray pointer declaration at %C requires -fcray-pointer flag."
-msgstr ""
+msgstr "%C 处的 Cray æŒ‡é’ˆå£°æ˜Žéœ€è¦ -fcray-pointer 标记。"
#: fortran/decl.c:3492
#, no-c-format
@@ -4420,17 +4388,17 @@ msgstr ""
#: fortran/decl.c:3604
#, no-c-format
msgid "Expected = sign in PARAMETER statement at %C"
-msgstr ""
+msgstr "%C 在 PARAMETER 语å¥ä¸­éœ€è¦ = 符å·"
#: fortran/decl.c:3610
#, no-c-format
msgid "Expected expression at %C in PARAMETER statement"
-msgstr ""
+msgstr "%C 在 PARAMETER 语å¥ä¸­éœ€è¦è¡¨è¾¾å¼"
#: fortran/decl.c:3668
#, no-c-format
msgid "Unexpected characters in PARAMETER statement at %C"
-msgstr ""
+msgstr "%C 处 PARAMETER 语å¥ä¸­æœ‰éžé¢„期的字符"
#: fortran/decl.c:3693
#, no-c-format
@@ -4440,12 +4408,12 @@ msgstr ""
#: fortran/decl.c:3706
#, no-c-format
msgid "SAVE statement at %C follows blanket SAVE statement"
-msgstr ""
+msgstr "%C 处 SAVE 语å¥è·Ÿéšç©ºç™½ SAVE 语å¥"
#: fortran/decl.c:3752
#, no-c-format
msgid "Syntax error in SAVE statement at %C"
-msgstr ""
+msgstr "%C SAVE 语å¥è¯­æ³•é”™è¯¯"
#: fortran/decl.c:3773
#, no-c-format
@@ -4463,14 +4431,14 @@ msgid "Derived type at %C can only be PUBLIC within a MODULE"
msgstr ""
#: fortran/decl.c:3857
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Expected :: in TYPE definition at %C"
-msgstr "RTL 检查:需è¦ä»£ç â€˜%s’,å´å¾—到‘%s’在 %s,于 %s:%d"
+msgstr "%C 在 TYPE å®šä¹‰ä¸­éœ€è¦ ::"
#: fortran/decl.c:3874
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Type name '%s' at %C cannot be the same as an intrinsic type"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须具有与‘%s’一样的类型和ç§ç±»"
+msgstr "类型‘%s’(ä½äºŽ %C)ä¸èƒ½ä¸Žå†…建类型é‡å"
#: fortran/decl.c:3884
#, no-c-format
@@ -4490,7 +4458,7 @@ msgstr ""
#: fortran/decl.c:3956
#, no-c-format
msgid "New in Fortran 2003: ENUM AND ENUMERATOR at %C"
-msgstr ""
+msgstr "Fortran 2003 新特性:%C 处的 ENUM AND ENUMERATOR"
#: fortran/decl.c:3980
#, no-c-format
@@ -4500,7 +4468,7 @@ msgstr ""
#: fortran/decl.c:4013
#, no-c-format
msgid "Syntax error in ENUMERATOR definition at %C"
-msgstr ""
+msgstr "%C 处 ENUMERATOR 定义中语法错误"
#: fortran/dump-parse-tree.c:53
#, c-format
@@ -4880,12 +4848,12 @@ msgid "value: "
msgstr "值:"
#: fortran/dump-parse-tree.c:639
-#, fuzzy, c-format
+#, c-format
msgid "Array spec:"
-msgstr "Mac 指示 (-m):"
+msgstr "数组指定:"
#: fortran/dump-parse-tree.c:646
-#, fuzzy, c-format
+#, c-format
msgid "Generic interfaces:"
msgstr "通用接å£ï¼š"
@@ -4907,24 +4875,24 @@ msgid "components: "
msgstr "组件:"
#: fortran/dump-parse-tree.c:667
-#, fuzzy, c-format
+#, c-format
msgid "Formal arglist:"
-msgstr "å½¢å¼å‚数资料"
+msgstr "å½¢å‚列表:"
#: fortran/dump-parse-tree.c:674
-#, fuzzy, c-format
+#, c-format
msgid " [Alt Return]"
-msgstr " (按回车键)"
+msgstr " [替代返回]"
#: fortran/dump-parse-tree.c:681
-#, fuzzy, c-format
+#, c-format
msgid "Formal namespace"
-msgstr "(全局å字空间)"
+msgstr "å½¢å¼å‘½å空间"
#: fortran/dump-parse-tree.c:739
-#, fuzzy, c-format
+#, c-format
msgid "common: /%s/ "
-msgstr "常è§(&C)"
+msgstr "common: /%s/ "
#: fortran/dump-parse-tree.c:747 fortran/dump-parse-tree.c:1453
#, c-format
@@ -5357,7 +5325,7 @@ msgstr " EOR=%d"
#: fortran/dump-parse-tree.c:1447
#, c-format
msgid "Equivalence: "
-msgstr ""
+msgstr "等价:"
#: fortran/dump-parse-tree.c:1473
#, c-format
@@ -5380,9 +5348,9 @@ msgid "procedure name = %s"
msgstr "过程å = %s"
#: fortran/dump-parse-tree.c:1514
-#, fuzzy, c-format
+#, c-format
msgid "Operator interfaces for %s:"
-msgstr "正在查找网络接å£..."
+msgstr "%s çš„è¿ç®—符接å£ï¼š"
#: fortran/dump-parse-tree.c:1523
#, c-format
@@ -5397,7 +5365,7 @@ msgstr "CONTAINS\n"
#: fortran/error.c:137
#, no-c-format
msgid "In file %s:%d\n"
-msgstr "在文件 %s:%d 中\n"
+msgstr "在文件 %s:%d\n"
#: fortran/error.c:152
#, no-c-format
@@ -5459,7 +5427,7 @@ msgstr ""
#: fortran/expr.c:1313
#, no-c-format
msgid "Concat operator at %L must concatenate strings of the same kind"
-msgstr "%L 处的毗连è¿ç®—符必须毗连åŒä¸€ç±»åž‹çš„字符串"
+msgstr "%L 处的毗连è¿ç®—符必须毗连åŒä¸€ç§åˆ«çš„字符串"
#: fortran/expr.c:1323
#, no-c-format
@@ -5469,7 +5437,7 @@ msgstr "%L 处的表达å¼ä¸­çš„ .NOT. è¿ç®—符必须带 LOGICAL æ“作数"
#: fortran/expr.c:1339
#, no-c-format
msgid "LOGICAL operands are required in expression at %L"
-msgstr ""
+msgstr "%L 处的表达å¼éœ€è¦ LOGICAL æ“作数"
#: fortran/expr.c:1347
#, no-c-format
@@ -5479,7 +5447,7 @@ msgstr "%L 处åªæœ‰å†…建è¿ç®—符æ‰èƒ½ç”¨äºŽè¡¨è¾¾å¼ä¸­"
#: fortran/expr.c:1355
#, no-c-format
msgid "Numeric operands are required in expression at %L"
-msgstr ""
+msgstr "%L 处的表达å¼éœ€è¦æ•°å­—æ“作数"
#: fortran/expr.c:1459
#, no-c-format
@@ -5487,44 +5455,44 @@ msgid "Function '%s' in initialization expression at %L must be an intrinsic fun
msgstr ""
#: fortran/expr.c:1481
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Variable '%s' at %L cannot appear in an initialization expression"
-msgstr "%s ä¸èƒ½å‡ºçŽ°åœ¨å¸¸é‡è¡¨è¾¾å¼ä¸­"
+msgstr "å˜é‡â€˜%s’ä¸èƒ½å‡ºçŽ°åœ¨ %L 处的åˆå§‹åŒ–表达å¼ä¸­"
#: fortran/expr.c:1603
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Specification function '%s' at %L cannot be a statement function"
-msgstr "构造函数ä¸èƒ½æ˜¯é™æ€æˆå‘˜å‡½æ•°"
+msgstr "指定函数‘%s’(ä½äºŽ %L)ä¸èƒ½æ˜¯ä¸€ä¸ªè¯­å¥å‡½æ•°"
#: fortran/expr.c:1610
#, no-c-format
msgid "Specification function '%s' at %L cannot be an internal function"
-msgstr ""
+msgstr "指定函数‘%s’(ä½äºŽ %L)ä¸èƒ½æ˜¯ä¸€ä¸ªå†…部函数"
#: fortran/expr.c:1617
#, no-c-format
msgid "Specification function '%s' at %L must be PURE"
-msgstr ""
+msgstr "指定函数‘%s’(ä½äºŽ %L)必须为 PURE"
#: fortran/expr.c:1624
#, no-c-format
msgid "Specification function '%s' at %L cannot be RECURSIVE"
-msgstr ""
+msgstr "指定函数‘%s’(ä½äºŽ %L)ä¸èƒ½æ˜¯ RECURSIVE"
#: fortran/expr.c:1681
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Dummy argument '%s' at %L cannot be OPTIONAL"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)ä¸èƒ½ä¸ºå¯é€‰çš„"
+msgstr "哑元‘%s’(ä½äºŽ %L)ä¸èƒ½æ˜¯ OPTIONAL"
#: fortran/expr.c:1688
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)"
-msgstr ""
+msgstr "‘%s’实å‚(属于内建函数‘%s’)在 %L 处ä¸èƒ½æ˜¯ INTENT(IN)"
#: fortran/expr.c:1708
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Variable '%s' cannot appear in the expression at %L"
-msgstr "%qD ä¸èƒ½å‡ºçŽ°åœ¨å¸¸é‡è¡¨è¾¾å¼ä¸­"
+msgstr "å˜é‡â€˜%s’ä¸èƒ½å‡ºçŽ°åœ¨ %L 处的表达å¼ä¸­"
#: fortran/expr.c:1754
#, no-c-format
@@ -5537,9 +5505,9 @@ msgid "Expression at %L must be scalar"
msgstr "%L 处的表达å¼å¿…须具有标é‡ç±»åž‹"
#: fortran/expr.c:1788
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Incompatible ranks in %s at %L"
-msgstr "æ¯æ¬¡æ›´æ”¹å‘生在:"
+msgstr "%s 中秩ä¸å…¼å®¹ï¼Œä½äºŽ %L"
#: fortran/expr.c:1802
#, no-c-format
@@ -5552,19 +5520,19 @@ msgid "Can't assign to INTENT(IN) variable '%s' at %L"
msgstr ""
#: fortran/expr.c:1842
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Incompatible ranks %d and %d in assignment at %L"
-msgstr "赋值时类型ä¸å…¼å®¹"
+msgstr "赋值中有ä¸å…¼å®¹çš„秩 %d å’Œ %d,ä½äºŽ %L"
#: fortran/expr.c:1849
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Variable type is UNKNOWN in assignment at %L"
-msgstr "赋值时类型ä¸å…¼å®¹"
+msgstr "%L 处赋值中的å˜é‡ç±»åž‹æ˜¯ UNKNOWN"
#: fortran/expr.c:1856
#, no-c-format
msgid "NULL appears on right-hand side in assignment at %L"
-msgstr ""
+msgstr "%L 处赋值å³æ‰‹è¾¹å‡ºçŽ° NULL"
#: fortran/expr.c:1866
#, no-c-format
@@ -5572,18 +5540,18 @@ msgid "Vector assignment to assumed-size Cray Pointee at %L is illegal."
msgstr ""
#: fortran/expr.c:1875
-#, fuzzy, no-c-format
+#, no-c-format
msgid "POINTER valued function appears on right-hand side of assignment at %L"
-msgstr "赋值的左æ“作数无效"
+msgstr "%L 处赋值å³æ‰‹è¾¹å‡ºçŽ°å€¼ä¸º POINTER 的函数"
#: fortran/expr.c:1880
msgid "Array assignment"
msgstr "数组赋值"
#: fortran/expr.c:1897
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Incompatible types in assignment at %L, %s to %s"
-msgstr "赋值时类型ä¸å…¼å®¹"
+msgstr "%L 处赋值类型ä¸å…¼å®¹ï¼Œä»Ž %s 到 %s"
#: fortran/expr.c:1920
#, no-c-format
@@ -5591,9 +5559,9 @@ msgid "Pointer assignment target is not a POINTER at %L"
msgstr ""
#: fortran/expr.c:1928
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Pointer assignment to non-POINTER at %L"
-msgstr "å°† NULL 转æ¢ä¸ºéžæŒ‡é’ˆç±»åž‹"
+msgstr "%L 处指针赋给éžæŒ‡é’ˆ"
#: fortran/expr.c:1936
#, no-c-format
@@ -5601,9 +5569,9 @@ msgid "Bad pointer object in PURE procedure at %L"
msgstr ""
#: fortran/expr.c:1949
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Different types in pointer assignment at %L"
-msgstr "赋值时类型ä¸å…¼å®¹"
+msgstr "%L 处指针赋值时类型ä¸åŒ"
#: fortran/expr.c:1956
#, no-c-format
@@ -5644,6 +5612,10 @@ msgid ""
"For more information about these matters, see the file named COPYING\n"
"\n"
msgstr ""
+"GNU Fortran 在法律å…许的范围内没有任何担ä¿ã€‚\n"
+"您å¯ä»¥åœ¨éµå¾ª GNU 通用公共许å¯è¯çš„å‰æä¸‹åˆ†å‘ GNU Fortran 的副本。\n"
+"有关事宜的详情请å‚考å为 COPYING 的文件\n"
+"\n"
#: fortran/gfortranspec.c:374
#, c-format
@@ -5658,12 +5630,12 @@ msgstr ""
#: fortran/gfortranspec.c:530
#, c-format
msgid "Driving:"
-msgstr ""
+msgstr "驱动:"
#: fortran/interface.c:175
#, no-c-format
msgid "Syntax error in generic specification at %C"
-msgstr ""
+msgstr "%C 一般指定语法错误"
#: fortran/interface.c:204
#, no-c-format
@@ -5688,12 +5660,12 @@ msgstr "%C 处需è¦â€˜END INTERFACE ASSIGNMENT (=)’或语å¥å°¾"
#: fortran/interface.c:286
#, no-c-format
msgid "Expecting 'END INTERFACE OPERATOR (%s)' at %C"
-msgstr ""
+msgstr "需è¦â€˜END INTERFACE ASSIGNMENT (%s)’在 %C 处"
#: fortran/interface.c:300
#, no-c-format
msgid "Expecting 'END INTERFACE OPERATOR (.%s.)' at %C"
-msgstr ""
+msgstr "需è¦â€˜END INTERFACE ASSIGNMENT (.%s.)’在 %C 处"
#: fortran/interface.c:311
#, no-c-format
@@ -5713,22 +5685,22 @@ msgstr ""
#: fortran/interface.c:605
#, no-c-format
msgid "First argument of defined assignment at %L must be INTENT(IN) or INTENT(INOUT)"
-msgstr ""
+msgstr "%L 定义赋值的第一个å‚数必须是 INTENT(IN) 或 INTENT(INOUT)"
#: fortran/interface.c:609
#, no-c-format
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
-msgstr ""
+msgstr "%L 定义赋值的第二个å‚数必须是 INTENT(IN)"
#: fortran/interface.c:615
-#, no-c-format
+#, fuzzy, no-c-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
-msgstr ""
+msgstr "%L 定义赋值的第一个å‚数必须是 INTENT(IN) 或 INTENT(INOUT)"
#: fortran/interface.c:619
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
-msgstr ""
+msgstr "%L 定义赋值的第二个å‚数必须是 INTENT(IN)"
#: fortran/interface.c:626
#, no-c-format
@@ -5748,12 +5720,12 @@ msgstr ""
#: fortran/interface.c:934
#, no-c-format
msgid "Ambiguous interfaces '%s' and '%s' in %s at %L"
-msgstr ""
+msgstr "有歧义的接å£â€˜%s’和‘%s’在 %s 中,ä½äºŽ %L"
#: fortran/interface.c:1183
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Keyword argument '%s' at %L is not in the procedure"
-msgstr ""
+msgstr "åˆå§‹åŒ–ä¸å…许出现在 %C 处的 PURE 过程中"
#: fortran/interface.c:1192
#, no-c-format
@@ -5778,7 +5750,7 @@ msgstr ""
#: fortran/interface.c:1233
#, no-c-format
msgid "Type/rank mismatch in argument '%s' at %L"
-msgstr ""
+msgstr "实å‚‘%s’类型/秩ä¸åŒ¹é…,于 %L 处"
#: fortran/interface.c:1248
#, no-c-format
@@ -5786,14 +5758,14 @@ msgid "Actual argument for '%s' cannot be an assumed-size array at %L"
msgstr ""
#: fortran/interface.c:1257
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Actual argument for '%s' must be a pointer at %L"
-msgstr "%qs 的实å‚必须是一个 2 ä½æ— ç¬¦å·å­—é¢å¸¸é‡"
+msgstr "‘%s’的实å‚在 %L 处必须是一个指针"
#: fortran/interface.c:1278
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Missing actual argument for argument '%s' at %L"
-msgstr "å½¢å‚ %P (属于 %q+#D)缺少默认实å‚"
+msgstr "å‚数‘%s’在 %L 处缺少实å‚"
#: fortran/interface.c:1463
#, no-c-format
@@ -5816,9 +5788,9 @@ msgid "Procedure argument at %L is local to a PURE procedure and has the POINTER
msgstr ""
#: fortran/interface.c:1545
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Procedure '%s' called with an implicit interface at %L"
-msgstr "对带有éšå¼æŽ¥å£çš„调用给出警告"
+msgstr "调用过程‘%s’带éšå¼æŽ¥å£ï¼Œä½äºŽ %L"
#: fortran/interface.c:1711
#, no-c-format
@@ -5836,9 +5808,9 @@ msgid "Entity '%s' at %C is already present in the interface"
msgstr ""
#: fortran/intrinsic.c:2715
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Too many arguments in call to '%s' at %L"
-msgstr "给予 %s %q+#D 的实å‚太多"
+msgstr "对‘%s’的调用给出的å‚数太多,于 %L 处"
#: fortran/intrinsic.c:2729
#, no-c-format
@@ -5851,9 +5823,9 @@ msgid "Argument '%s' is appears twice in call to '%s' at %L"
msgstr ""
#: fortran/intrinsic.c:2750
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Missing actual argument '%s' in call to '%s' at %L"
-msgstr "‘%s’选项缺少实å‚"
+msgstr "缺少实å‚‘%s’,在调用‘%s’时,ä½äºŽ %L"
#: fortran/intrinsic.c:2809
#, no-c-format
@@ -5881,19 +5853,19 @@ msgid "Subroutine call to intrinsic '%s' at %L is not PURE"
msgstr ""
#: fortran/intrinsic.c:3397
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Extension: Conversion from %s to %s at %L"
-msgstr "从类型 %qT 到类型 %qT 的转æ¢æ— æ•ˆ"
+msgstr "扩展:从 %s 到 %s,ä½äºŽ %L"
#: fortran/intrinsic.c:3400
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Conversion from %s to %s at %L"
-msgstr "从类型 %qT 到类型 %qT 的转æ¢æ— æ•ˆ"
+msgstr "从 %s 转æ¢åˆ° %s,ä½äºŽ %L"
#: fortran/intrinsic.c:3437
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Can't convert %s to %s at %L"
-msgstr "ä¸èƒ½å°†å€¼è½¬æ¢ä¸ºçŸ¢é‡"
+msgstr "ä¸èƒ½å°† %s 转æ¢ä¸º %s,于 %L"
#: fortran/io.c:404
msgid "Positive width required"
@@ -5920,9 +5892,8 @@ msgid "Missing leading left parenthesis"
msgstr "缺少å‰å¯¼å·¦æ‹¬å·"
#: fortran/io.c:463
-#, fuzzy
msgid "Expected P edit descriptor"
-msgstr "无效的文件æ述符"
+msgstr "éœ€è¦ P 编译æ述符"
#. P requires a prior number.
#: fortran/io.c:471
@@ -5936,9 +5907,9 @@ msgid "Extension: X descriptor requires leading space count at %C"
msgstr ""
#: fortran/io.c:496
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Extension: $ descriptor at %C"
-msgstr "扩展:%C 处缺少逗å·"
+msgstr "扩展:%C 处的 $ æ述符"
#: fortran/io.c:501
msgid "$ must be the last specifier"
@@ -5949,9 +5920,8 @@ msgid "Repeat count cannot follow P descriptor"
msgstr ""
#: fortran/io.c:609
-#, fuzzy
msgid "Positive exponent width required"
-msgstr "需è¦å¸¸é‡è¡¨è¾¾å¼"
+msgstr "需è¦æ­£çš„指数宽度"
#: fortran/io.c:710 fortran/io.c:762
#, no-c-format
@@ -5959,24 +5929,24 @@ msgid "Extension: Missing comma at %C"
msgstr "扩展:%C 处缺少逗å·"
#: fortran/io.c:777 fortran/io.c:780
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s in format string at %C"
-msgstr "“%â€å­—符在字符串尾。"
+msgstr "%s 出现在 %C 处的格å¼å­—符串中"
#: fortran/io.c:820
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Missing format label at %C"
-msgstr "扩展:%C 处缺少逗å·"
+msgstr "%C 处缺少格å¼æ ‡å·"
#: fortran/io.c:878 fortran/io.c:902
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate %s specification at %C"
-msgstr "在约会结æŸæ—¶ %s"
+msgstr "é‡å¤ %s 指定,于 %C"
#: fortran/io.c:909
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Variable tag cannot be INTENT(IN) at %C"
-msgstr ""
+msgstr "‘%s’实å‚(属于内建函数‘%s’)在 %L 处ä¸èƒ½æ˜¯ INTENT(IN)"
#: fortran/io.c:916
#, no-c-format
@@ -5984,14 +5954,14 @@ msgid "Variable tag cannot be assigned in PURE procedure at %C"
msgstr ""
#: fortran/io.c:953
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate %s label specification at %C"
-msgstr "é‡å¤çš„ case æ ‡å·ï¼š%<default%>"
+msgstr "é‡å¤çš„ %s æ ‡å·æŒ‡å®šï¼Œä½äºŽ %C"
#: fortran/io.c:975
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s tag at %L must be of type %s"
-msgstr "%L 处的表达å¼å¿…须具有 INTEGER 类型"
+msgstr "%s 标记在 %L 处必须具有类型 %s"
#: fortran/io.c:986
#, no-c-format
@@ -5999,19 +5969,19 @@ msgid "Constant expression in FORMAT tag at %L must be of type default CHARACTER
msgstr ""
#: fortran/io.c:999
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s tag at %L must be of type %s or %s"
-msgstr "%L 处的表达å¼å¿…须具有 INTEGER 类型"
+msgstr "%s 标记在 %L 处必须具有类型 %s 或 %s"
#: fortran/io.c:1007
#, no-c-format
msgid "Obsolete: ASSIGNED variable in FORMAT tag at %L"
-msgstr ""
+msgstr "已过时:%L 处 FORMAT 标记中有 ASSIGNED å˜é‡"
#: fortran/io.c:1012
#, no-c-format
msgid "Variable '%s' at %L has not been assigned a format label"
-msgstr ""
+msgstr "å˜é‡â€˜%s’在 %L 尚未分é…到格å¼æ ‡å·"
#: fortran/io.c:1027
#, no-c-format
@@ -6024,9 +5994,9 @@ msgid "Extension: Non-character in FORMAT tag at %L"
msgstr ""
#: fortran/io.c:1045
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s tag at %L must be scalar"
-msgstr "列必须至少为 1。"
+msgstr "%s 标记在 %L 处必须是标é‡"
#: fortran/io.c:1050
#, no-c-format
@@ -6034,19 +6004,19 @@ msgid "Fortran 2003: IOMSG tag at %L"
msgstr "Fortran 2003:%L 处的 IOMSG 标记"
#: fortran/io.c:1214
-#, no-c-format
+#, fuzzy, no-c-format
msgid "OPEN statement not allowed in PURE procedure at %C"
-msgstr ""
+msgstr "DATA 语å¥ä¸å…许出现在 %C 处的 PURE 过程中"
#: fortran/io.c:1322
-#, no-c-format
+#, fuzzy, no-c-format
msgid "CLOSE statement not allowed in PURE procedure at %C"
-msgstr ""
+msgstr "DATA 语å¥ä¸å…许出现在 %C 处的 PURE 过程中"
#: fortran/io.c:1448 fortran/match.c:1441
-#, no-c-format
+#, fuzzy, no-c-format
msgid "%s statement not allowed in PURE procedure at %C"
-msgstr ""
+msgstr "DATA 语å¥ä¸å…许出现在 %C 处的 PURE 过程中"
#: fortran/io.c:1508
#, no-c-format
@@ -6054,24 +6024,24 @@ msgid "Fortran 2003: FLUSH statement at %C"
msgstr "Fortran 2003:%C 处的 FLUSH 语å¥"
#: fortran/io.c:1568
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate UNIT specification at %C"
-msgstr "一次编译一整个编译å•å…ƒ"
+msgstr "%C 处é‡å¤çš„ UNIT 指定"
#: fortran/io.c:1624
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate format specification at %C"
-msgstr "é‡å¤çš„ %s 声明 %qs"
+msgstr "%C 处é‡å¤çš„æ ¼å¼æŒ‡å®š"
#: fortran/io.c:1641
#, no-c-format
msgid "Symbol '%s' in namelist '%s' is INTENT(IN) at %C"
-msgstr ""
+msgstr "符å·â€˜%s’在å字列表‘%s’是 INTENT(IN),ä½äºŽ %C"
#: fortran/io.c:1677
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate NML specification at %C"
-msgstr "é‡å¤çš„ %s 声明 %qs"
+msgstr "%C 处é‡å¤çš„ NML 指定"
#: fortran/io.c:1686
#, no-c-format
@@ -6086,7 +6056,7 @@ msgstr "%C 处的 END 标记ä¸å…许出现在输出语å¥ä¸­"
#: fortran/io.c:1782
#, no-c-format
msgid "UNIT specification at %L must be an INTEGER expression or a CHARACTER variable"
-msgstr ""
+msgstr "%L 处指定的 UNIT 必须是 INTEGER 表达å¼æˆ–一个 CHARACTER å˜é‡"
#: fortran/io.c:1792
#, no-c-format
@@ -6099,9 +6069,9 @@ msgid "REC tag at %L is incompatible with internal file"
msgstr ""
#: fortran/io.c:1806
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Internal file at %L is incompatible with namelist"
-msgstr "-march=%s 与所选 ABI ä¸å…¼å®¹"
+msgstr "%L 处的内部文件与å字列表ä¸å…¼å®¹"
#: fortran/io.c:1813
#, no-c-format
@@ -6109,9 +6079,9 @@ msgid "ADVANCE tag at %L is incompatible with internal file"
msgstr ""
#: fortran/io.c:1823
-#, fuzzy, no-c-format
+#, no-c-format
msgid "REC tag at %L is incompatible with END tag"
-msgstr "-march=%s 与所选 ABI ä¸å…¼å®¹"
+msgstr "%L REC 标记与 END 标记ä¸å…¼å®¹"
#: fortran/io.c:1831
#, no-c-format
@@ -6119,9 +6089,9 @@ msgid "END tag at %L is incompatible with list directed format (*)"
msgstr ""
#: fortran/io.c:1838
-#, fuzzy, no-c-format
+#, no-c-format
msgid "REC tag at %L is incompatible with namelist"
-msgstr "-march=%s 与所选 ABI ä¸å…¼å®¹"
+msgstr "%L REC 标记与å字列表ä¸å…¼å®¹"
#: fortran/io.c:1846
#, no-c-format
@@ -6139,24 +6109,24 @@ msgid "SIZE tag at %L requires an ADVANCE tag"
msgstr ""
#: fortran/io.c:1879
-#, fuzzy, no-c-format
+#, no-c-format
msgid "FORMAT label %d at %L not defined"
-msgstr "æ ‡å· %q+D 使用å‰æœªå®šä¹‰"
+msgstr "FORMAT æ ‡å· %d 在 %L 处未定义"
#: fortran/io.c:2000
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Syntax error in I/O iterator at %C"
-msgstr "çŸ¢é‡ %s %s 域错误,在 %s 于 %s:%u"
+msgstr "%C 处 I/O 迭代语法错误"
#: fortran/io.c:2031
#, no-c-format
msgid "Expected variable in READ statement at %C"
-msgstr ""
+msgstr "%C READ 语å¥éœ€è¦å˜é‡"
#: fortran/io.c:2037
#, no-c-format
msgid "Expected expression in %s statement at %C"
-msgstr "%C å¤„éœ€è¦ %s 语å¥"
+msgstr "éœ€è¦ %s 语å¥ï¼ŒäºŽ %C 处"
#: fortran/io.c:2048
#, no-c-format
@@ -6175,14 +6145,14 @@ msgstr ""
#. A general purpose syntax error.
#: fortran/io.c:2134 fortran/io.c:2363 fortran/gfortran.h:1629
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Syntax error in %s statement at %C"
-msgstr "çŸ¢é‡ %s %s 域错误,在 %s 于 %s:%u"
+msgstr "%s 语å¥åœ¨ %C 处语法错误"
#: fortran/io.c:2191
#, no-c-format
msgid "PRINT namelist at %C is an extension"
-msgstr ""
+msgstr "%C 处的 PRINT å字列表是一个扩展"
#: fortran/io.c:2199
#, no-c-format
@@ -6195,14 +6165,14 @@ msgid "Extension: Comma before output item list at %C is an extension"
msgstr ""
#: fortran/io.c:2314
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Expected comma in I/O list at %C"
-msgstr "RTL 检查:需è¦ä»£ç â€˜%s’,å´å¾—到‘%s’在 %s,于 %s:%d"
+msgstr "%C 处 I/O 列表中需è¦é€—å·"
#: fortran/io.c:2332
#, no-c-format
msgid "Internal file '%s' at %L is INTENT(IN)"
-msgstr ""
+msgstr "内部文件‘%s’在 %L 处是 INTENT(IN)"
#: fortran/io.c:2348
#, no-c-format
@@ -6210,14 +6180,14 @@ msgid "io-unit in %s statement at %C must be an internal file in a PURE procedur
msgstr ""
#: fortran/io.c:2395
-#, no-c-format
+#, fuzzy, no-c-format
msgid "PRINT statement at %C not allowed within PURE procedure"
-msgstr ""
+msgstr "DATA 语å¥ä¸å…许出现在 %C 处的 PURE 过程中"
#: fortran/io.c:2534 fortran/io.c:2582
-#, no-c-format
+#, fuzzy, no-c-format
msgid "INQUIRE statement not allowed in PURE procedure at %C"
-msgstr ""
+msgstr "DATA 语å¥ä¸å…许出现在 %C 处的 PURE 过程中"
#: fortran/io.c:2558
#, no-c-format
@@ -6242,22 +6212,22 @@ msgstr "%C 处整数太大"
#: fortran/match.c:238
#, no-c-format
msgid "Statement label at %C is out of range"
-msgstr ""
+msgstr "%C 处语å¥æ ‡å·è¶Šç•Œ"
#: fortran/match.c:263
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Label name '%s' at %C is ambiguous"
-msgstr "对 %qD 的引用有歧义"
+msgstr "æ ‡å·å‘%s’在 %C 处有歧义"
#: fortran/match.c:269
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate construct label '%s' at %C"
-msgstr "é‡å¤çš„ case æ ‡å·ï¼š%<default%>"
+msgstr "é‡å¤çš„构造标å·â€˜%s’出现在 %C 处"
#: fortran/match.c:393
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Name at %C is too long"
-msgstr "若消æ¯è¿‡é•¿(&L):"
+msgstr "%C çš„å字太长"
#: fortran/match.c:510
#, no-c-format
@@ -6265,9 +6235,9 @@ msgid "Loop variable at %C cannot be a sub-component"
msgstr ""
#: fortran/match.c:516
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Loop variable '%s' at %C cannot be INTENT(IN)"
-msgstr ""
+msgstr "‘%s’实å‚(属于内建函数‘%s’)在 %L 处ä¸èƒ½æ˜¯ INTENT(IN)"
#: fortran/match.c:523
#, no-c-format
@@ -6280,14 +6250,14 @@ msgid "Expected a step value in iterator at %C"
msgstr ""
#: fortran/match.c:565
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Syntax error in iterator at %C"
-msgstr "çŸ¢é‡ %s %s 域错误,在 %s 于 %s:%u"
+msgstr "%C 处迭代语法错误"
#: fortran/match.c:801
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Invalid form of PROGRAM statement at %C"
-msgstr "%C 处的 ENTRY 语å¥ä¸èƒ½å‡ºçŽ°åœ¨ PROGRAM 中"
+msgstr "%C 处 PROGRAM 语å¥æ ¼å¼æ— æ•ˆ"
#: fortran/match.c:835
#, no-c-format
@@ -6297,12 +6267,12 @@ msgstr ""
#: fortran/match.c:924 fortran/match.c:1000
#, no-c-format
msgid "Obsolete: arithmetic IF statement at %C"
-msgstr ""
+msgstr "已过时:%C 处的算术 IF 语å¥"
#: fortran/match.c:971
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Syntax error in IF-expression at %C"
-msgstr "整数溢出"
+msgstr "%C 处 IF 表达å¼è¯­æ³•é”™è¯¯"
#: fortran/match.c:983
#, no-c-format
@@ -6317,12 +6287,12 @@ msgstr ""
#: fortran/match.c:1096
#, no-c-format
msgid "Unclassifiable statement in IF-clause at %C"
-msgstr ""
+msgstr "%C 处 IF å­å¥ä¸­æœ‰æ— æ³•å½’类的语å¥"
#: fortran/match.c:1103
#, no-c-format
msgid "Syntax error in IF-clause at %C"
-msgstr ""
+msgstr "%C 处 IF 语å¥è¯­æ³•é”™è¯¯"
#: fortran/match.c:1147
#, no-c-format
@@ -6340,24 +6310,24 @@ msgid "Unexpected junk after ELSE IF statement at %C"
msgstr ""
#: fortran/match.c:1345
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Name '%s' in %s statement at %C is not a loop name"
-msgstr ""
+msgstr "DATA 语å¥ä¸å…许出现在 %C 处的 PURE 过程中"
#: fortran/match.c:1360
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s statement at %C is not within a loop"
-msgstr "break 语å¥ä¸åœ¨å¾ªçŽ¯æˆ–开关语å¥å†…"
+msgstr "%s 语å¥åœ¨ %C 处ä¸åœ¨å¾ªçŽ¯å†…"
#: fortran/match.c:1363
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s statement at %C is not within loop '%s'"
-msgstr "break 语å¥ä¸åœ¨å¾ªçŽ¯æˆ–开关语å¥å†…"
+msgstr "%s 语å¥åœ¨ %C 处ä¸åœ¨å¾ªçŽ¯â€˜%s’内"
#: fortran/match.c:1419
#, no-c-format
msgid "STOP code out of range at %C"
-msgstr ""
+msgstr "%C 处 STOP 代ç è¶Šç•Œ"
#: fortran/match.c:1472
#, no-c-format
@@ -6372,7 +6342,7 @@ msgstr "已过时:%C 处的 ASSIGN 语å¥"
#: fortran/match.c:1567
#, no-c-format
msgid "Obsolete: Assigned GOTO statement at %C"
-msgstr ""
+msgstr "已过时:%C 处赋值 GOTO 语å¥"
#: fortran/match.c:1614 fortran/match.c:1666
#, no-c-format
@@ -6395,9 +6365,9 @@ msgid "Illegal STAT variable in ALLOCATE statement at %C for a PURE procedure"
msgstr ""
#: fortran/match.c:1785 fortran/match.c:1951
-#, fuzzy, no-c-format
+#, no-c-format
msgid "STAT expression at %C must be a variable"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须是一个å˜é‡"
+msgstr "%C 处的 STAT 表达å¼å¿…须是一个å˜é‡"
#: fortran/match.c:1840
#, no-c-format
@@ -6422,7 +6392,7 @@ msgstr ""
#: fortran/match.c:1993
#, no-c-format
msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE"
-msgstr ""
+msgstr "%C 处的替代 RETURN 语å¥åªå…许出现在 SUBROUTINE 中"
#: fortran/match.c:2024
#, no-c-format
@@ -6497,7 +6467,7 @@ msgstr "%L 处的语å¥å‡½æ•°æ˜¯é€’å½’çš„"
#: fortran/match.c:2914
#, no-c-format
msgid "Expected initialization expression in CASE at %C"
-msgstr ""
+msgstr "%C 处 CASE 中需è¦åˆå§‹åŒ–表达å¼"
#: fortran/match.c:2941
#, no-c-format
@@ -6512,7 +6482,7 @@ msgstr "%C 处éžé¢„期的 CASE 语å¥"
#: fortran/match.c:3037
#, no-c-format
msgid "Syntax error in CASE-specification at %C"
-msgstr ""
+msgstr "%C CASE 指定语法错误"
#: fortran/match.c:3157
#, no-c-format
@@ -6527,12 +6497,12 @@ msgstr ""
#: fortran/match.c:3283
#, no-c-format
msgid "Syntax error in FORALL iterator at %C"
-msgstr ""
+msgstr "%C 处 FORALL 迭代语法错误"
#: fortran/matchexp.c:29
-#, fuzzy, c-format
+#, c-format
msgid "Syntax error in expression at %C"
-msgstr "正则表达å¼ä¸­æœ‰è¯­æ³•é”™è¯¯"
+msgstr "%C 表达å¼è¯­æ³•é”™è¯¯"
#: fortran/matchexp.c:73
#, no-c-format
@@ -6542,17 +6512,17 @@ msgstr ""
#: fortran/matchexp.c:81
#, no-c-format
msgid "The name '%s' cannot be used as a defined operator at %C"
-msgstr ""
+msgstr "å字‘%s’在 %C 处ä¸èƒ½ç”¨ä½œå·²å®šä¹‰çš„è¿ç®—符"
#: fortran/matchexp.c:156
#, no-c-format
msgid "Expected a right parenthesis in expression at %C"
-msgstr ""
+msgstr "%C 处表达å¼ä¸­éœ€è¦å³æ‹¬å·"
#: fortran/matchexp.c:278
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Expected exponent in expression at %C"
-msgstr "赋值需è¦ä¸€ä¸ªå·¦è¡¨è¾¾å¼"
+msgstr "%C 处表达å¼ä¸­éœ€è¦æŒ‡æ•°éƒ¨åˆ†"
#: fortran/matchexp.c:314 fortran/matchexp.c:418
#, no-c-format
@@ -6570,19 +6540,19 @@ msgid "Missing generic specification in USE statement at %C"
msgstr ""
#: fortran/module.c:837
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Reading module %s at line %d column %d: %s"
-msgstr "第 %2$d 行第 %3$d 字出现无效的 namespace“%1$sâ€"
+msgstr "è¯»å‡ºæ¨¡å— %s,于行 %d 列 %d:%s"
#: fortran/module.c:841
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Writing module %s at line %d column %d: %s"
-msgstr "第 %2$d 行第 %3$d 字出现无效的 namespace“%1$sâ€"
+msgstr "è¯»å…¥æ¨¡å— %s,于行 %d 列 %d:%s"
#: fortran/module.c:845
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Module %s at line %d column %d: %s"
-msgstr "第 %2$d 行第 %3$d 字出现无效的 namespace“%1$sâ€"
+msgstr "æ¨¡å— %s ä½äºŽè¡Œ %d 列 %d:%s"
#: fortran/module.c:887
msgid "Unexpected EOF"
@@ -6625,9 +6595,8 @@ msgid "Expected string"
msgstr "需è¦å­—符串"
#: fortran/module.c:1191
-#, fuzzy
msgid "find_enum(): Enum not found"
-msgstr "找ä¸åˆ° %s。"
+msgstr "find_enum():找ä¸åˆ°æžšä¸¾"
#: fortran/module.c:1206
#, no-c-format
@@ -6635,18 +6604,16 @@ msgid "Error writing modules file: %s"
msgstr "写入模å—文件时出错:%s"
#: fortran/module.c:1565
-#, fuzzy
msgid "Expected attribute bit name"
-msgstr "属性å称ä¸å”¯ä¸€"
+msgstr "需è¦å±žæ€§ä½å"
#: fortran/module.c:2322
msgid "Expected integer string"
msgstr "需è¦æ•´æ•°å­—符串"
#: fortran/module.c:2326
-#, fuzzy
msgid "Error converting integer"
-msgstr "转æ¢ç‰ˆé¢ä¿¡æ¯æ—¶å‡ºé”™ï¼"
+msgstr "转æ¢æ•´æ•°æ—¶å‡ºé”™"
#: fortran/module.c:2349
msgid "Expected real string"
@@ -6685,19 +6652,19 @@ msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
#: fortran/module.c:3700
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Can't open module file '%s' for writing at %C: %s"
-msgstr "<qt>无法打开文件 <b>%1</b> æ¥ä¿å­˜ç»“果。</qt>"
+msgstr "ä¸èƒ½æ‰“开模å—文件‘%s’写入,在 %C 处:%s"
#: fortran/module.c:3725
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Error writing module file '%s' for writing: %s"
-msgstr "当为了写而打开文件 \"%s\" 时出现错误"
+msgstr "写入模å—文件‘%s’时出错:%s"
#: fortran/module.c:3746
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Can't open module file '%s' for reading at %C: %s"
-msgstr "%s:无法打开文件‘%s’读入:%s\n"
+msgstr "无法打开模å—文件‘%s’读å–,在 %C 处:%s"
#: fortran/module.c:3760
msgid "Unexpected end of module"
@@ -6736,7 +6703,7 @@ msgstr ""
#: fortran/options.c:336
#, no-c-format
msgid "Argument to -ffpe-trap is not valid: %s"
-msgstr ""
+msgstr "-ffpe-trap çš„å‚数无效:%s"
#: fortran/options.c:468
#, no-c-format
@@ -6754,20 +6721,20 @@ msgid "Argument to -fqkind isn't a valid real kind"
msgstr ""
#: fortran/parse.c:294
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Unclassifiable statement at %C"
-msgstr "在下个语å¥å¤„中断(&B)"
+msgstr "%C 语å¥æ— æ³•å½’ç±»"
#. Skip the bad statement label.
#: fortran/parse.c:329
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Ignoring bad statement label at %C"
-msgstr "æ ‡å·ä½äºŽå¤åˆè¯­å¥æœ«å°¾"
+msgstr "忽略 %C 处的错误语å¥æ ‡å·"
#: fortran/parse.c:340
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Ignoring statement label of zero at %C"
-msgstr "æ ‡å·ä½äºŽå¤åˆè¯­å¥æœ«å°¾"
+msgstr "忽略 %C 处的错误语å¥æ ‡å·é›¶"
#: fortran/parse.c:350
#, no-c-format
@@ -6802,7 +6769,7 @@ msgstr "行在 %C 处被截断"
#: fortran/parse.c:664
#, no-c-format
msgid "FORMAT statement at %L does not have a statement label"
-msgstr ""
+msgstr "%L 处 FORMAT 语å¥æ²¡æœ‰è¯­å¥æ ‡å·"
#: fortran/parse.c:736
msgid "arithmetic IF"
@@ -6846,9 +6813,9 @@ msgid "Unexpected %s statement at %C"
msgstr "éžé¢„期的 %s 语å¥äºŽ %C 处"
#: fortran/parse.c:1217
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s statement at %C cannot follow %s statement at %L"
-msgstr "在下个语å¥å¤„中断(&B)"
+msgstr "%s 语å¥åœ¨ %C 处ä¸èƒ½è·Ÿéš %s 语å¥åœ¨ %L 处"
#: fortran/parse.c:1234
#, no-c-format
@@ -6871,9 +6838,9 @@ msgid "PRIVATE statement at %C must precede structure components"
msgstr ""
#: fortran/parse.c:1313
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate PRIVATE statement at %C"
-msgstr "在下个语å¥å¤„中断(&B)"
+msgstr "%C 处é‡å¤çš„ PRIVATE 语å¥"
#: fortran/parse.c:1325
#, no-c-format
@@ -6886,9 +6853,9 @@ msgid "SEQUENCE attribute at %C already specified in TYPE statement"
msgstr ""
#: fortran/parse.c:1337
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate SEQUENCE statement at %C"
-msgstr "在下个语å¥å¤„中断(&B)"
+msgstr "%C 处é‡å¤çš„ SEQUENCE 语å¥"
#: fortran/parse.c:1361
#, no-c-format
@@ -6903,7 +6870,7 @@ msgstr ""
#: fortran/parse.c:1480
#, no-c-format
msgid "Unexpected %s statement in INTERFACE block at %C"
-msgstr ""
+msgstr "éžé¢„期的 %s 语å¥å‡ºçŽ°åœ¨ %C 处的 INTERFACE å—中"
#: fortran/parse.c:1507
#, no-c-format
@@ -6918,7 +6885,7 @@ msgstr ""
#: fortran/parse.c:1529
#, no-c-format
msgid "Unexpected %s statement at %C in INTERFACE body"
-msgstr ""
+msgstr "éžé¢„期的 %s 语å¥å‡ºçŽ°åœ¨ %C 处的 INTERFACE 体中"
#: fortran/parse.c:1601
#, no-c-format
@@ -6993,7 +6960,7 @@ msgstr ""
#: fortran/parse.c:2297
#, no-c-format
msgid "Unexpected %s statement in CONTAINS section at %C"
-msgstr ""
+msgstr "éžé¢„期的 %s 语å¥å‡ºçŽ°åœ¨ %C 处的 CONTAINS 段中"
#: fortran/parse.c:2382
#, no-c-format
@@ -7029,39 +6996,39 @@ msgid "Two main PROGRAMs at %L and %C"
msgstr "%L 和 %C 处有两个主 PROGRAM"
#: fortran/primary.c:89
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Missing kind-parameter at %C"
-msgstr "扩展:%C 处缺少逗å·"
+msgstr "%C 处缺少ç§åˆ«å‚æ•°"
#: fortran/primary.c:212
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Integer kind %d at %C not available"
-msgstr "integer kind=8 在指定了 -fdefault-integer-8 选项时ä¸å¯ç”¨"
+msgstr "æ•´æ•°ç§åˆ« %d 在 %C 处ä¸å¯ç”¨"
#: fortran/primary.c:220
#, no-c-format
msgid "Integer too big for its kind at %C"
-msgstr ""
+msgstr "%C 处的整数对其ç§åˆ«æ¥è¯´å¤ªå¤§"
#: fortran/primary.c:250
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Extension: Hollerith constant at %C"
-msgstr "%C 处需è¦å¸¸é‡è¡¨è¾¾å¼"
+msgstr "扩展:%C 处的è·å‹’瑞斯常é‡"
#: fortran/primary.c:262
#, no-c-format
msgid "Invalid Hollerith constant: %L must contain at least one character"
-msgstr ""
+msgstr "无效的è·å‹’瑞斯常é‡ï¼š%L 必须包å«è‡³å°‘一个字符"
#: fortran/primary.c:268
#, no-c-format
msgid "Invalid Hollerith constant: Interger kind at %L should be default"
-msgstr ""
+msgstr "无效的è·å‹’瑞斯常é‡ï¼š%L çš„æ•´æ•°ç§åˆ«åº”当是默认的"
#: fortran/primary.c:340
#, no-c-format
msgid "Extension: Hexadecimal constant at %C uses non-standard syntax."
-msgstr ""
+msgstr "扩展:%C 处的å六进制常é‡ä½¿ç”¨äº†éžæ ‡å‡†è¯­æ³•ã€‚"
#: fortran/primary.c:353
#, no-c-format
@@ -7101,7 +7068,7 @@ msgstr ""
#: fortran/primary.c:508
#, no-c-format
msgid "Missing exponent in real number at %C"
-msgstr ""
+msgstr "%C 处实数缺少指数部分"
#: fortran/primary.c:565
#, no-c-format
@@ -7114,39 +7081,39 @@ msgid "Real number at %C has a 'q' exponent and an explicit kind"
msgstr ""
#: fortran/primary.c:587
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Invalid real kind %d at %C"
-msgstr "%s:“%s†开始部份的数字无效"
+msgstr "无效的实型ç§åˆ« %d,在 %C 处"
#: fortran/primary.c:601
#, no-c-format
msgid "Real constant overflows its kind at %C"
-msgstr ""
+msgstr "%C 处实常数上溢其ç§åˆ«"
#: fortran/primary.c:606
#, no-c-format
msgid "Real constant underflows its kind at %C"
-msgstr ""
+msgstr "%C 处实常数下溢其ç§åˆ«"
#: fortran/primary.c:698
#, no-c-format
msgid "Syntax error in SUBSTRING specification at %C"
-msgstr ""
+msgstr "%C SUBSTRING 指定语法错误"
#: fortran/primary.c:930
#, no-c-format
msgid "Invalid kind %d for CHARACTER constant at %C"
-msgstr ""
+msgstr "CHARACTER 常é‡çš„ç§åˆ« %d 无效,在 %C 处"
#: fortran/primary.c:951
#, no-c-format
msgid "Unterminated character constant beginning at %C"
-msgstr ""
+msgstr "开始于 %C 的未终结的字符常é‡"
#: fortran/primary.c:1018
#, no-c-format
msgid "Bad kind for logical constant at %C"
-msgstr ""
+msgstr "%C 处逻辑常é‡çš„ç§åˆ«é”™è¯¯"
#: fortran/primary.c:1053
#, no-c-format
@@ -7181,7 +7148,7 @@ msgstr ""
#: fortran/primary.c:1461
#, no-c-format
msgid "Expected alternate return label at %C"
-msgstr ""
+msgstr "%C 处需è¦æ›¿ä»£çš„返回标å·"
#: fortran/primary.c:1480
#, no-c-format
@@ -7196,47 +7163,47 @@ msgstr "%C 处的å‚数列表语法错误"
#: fortran/primary.c:1603
#, no-c-format
msgid "Expected structure component name at %C"
-msgstr ""
+msgstr "%C 处需è¦ç»“构组件å"
#: fortran/primary.c:1841
#, no-c-format
msgid "Too many components in structure constructor at %C"
-msgstr ""
+msgstr "%C 处结构构造的组件太多"
#: fortran/primary.c:1856
#, no-c-format
msgid "Too few components in structure constructor at %C"
-msgstr ""
+msgstr "%C 处结构构造中组件太少"
#: fortran/primary.c:1874
#, no-c-format
msgid "Syntax error in structure constructor at %C"
-msgstr ""
+msgstr "%C 结构构造语法错误"
#: fortran/primary.c:1987
#, no-c-format
msgid "Unexpected use of subroutine name '%s' at %C"
-msgstr ""
+msgstr "对å­è¿›ç¨‹å‘%s’éžé¢„期的使用,在 %C 处"
#: fortran/primary.c:2018
#, no-c-format
msgid "Statement function '%s' requires argument list at %C"
-msgstr ""
+msgstr "语å¥å‡½æ•°â€˜%s’在 %C 处缺少å‚数列表"
#: fortran/primary.c:2021
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Function '%s' requires an argument list at %C"
-msgstr "“%1â€è‡³å°‘éœ€è¦ %n 个å‚数。"
+msgstr "函数‘%s’在 %C 需è¦å‚数列表"
#: fortran/primary.c:2175
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Missing argument list in function '%s' at %C"
-msgstr "‘%s’选项缺少实å‚"
+msgstr "函数‘%s’在 %C 处缺少å‚数列表"
#: fortran/primary.c:2203
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Symbol at %C is not appropriate for an expression"
-msgstr "表达å¼ä¸­æµ®ç‚¹æº¢å‡º"
+msgstr "%C 处的符å·ä¸é€‚用于表达å¼"
#: fortran/primary.c:2273
#, no-c-format
@@ -7259,14 +7226,14 @@ msgid "Dummy procedure '%s' of PURE procedure at %L must also be PURE"
msgstr ""
#: fortran/resolve.c:127
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Dummy procedure at %L not allowed in ELEMENTAL procedure"
-msgstr ""
+msgstr "åˆå§‹åŒ–ä¸å…许出现在 %C 处的 PURE 过程中"
#: fortran/resolve.c:181
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Argument '%s' of pure function '%s' at %L must be INTENT(IN)"
-msgstr ""
+msgstr "%L 定义赋值的第二个å‚数必须是 INTENT(IN)"
#: fortran/resolve.c:189
#, no-c-format
@@ -7276,7 +7243,7 @@ msgstr ""
#: fortran/resolve.c:200
#, no-c-format
msgid "Argument '%s' of elemental procedure at %L must be scalar"
-msgstr ""
+msgstr "元素过程的实å‚‘%s’在 %L 处必须是标é‡"
#: fortran/resolve.c:208
#, no-c-format
@@ -7286,7 +7253,7 @@ msgstr ""
#: fortran/resolve.c:220
#, no-c-format
msgid "Argument '%s' of statement function at %L must be scalar"
-msgstr ""
+msgstr "语å¥å‡½æ•°çš„实å‚‘%s’在 %L 处必须是标é‡"
#: fortran/resolve.c:231
#, no-c-format
@@ -7329,14 +7296,14 @@ msgid "ENTRY result %s can't be of type %s in FUNCTION %s at %L"
msgstr ""
#: fortran/resolve.c:710 fortran/resolve.c:3347 fortran/resolve.c:3998
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Label %d referenced at %L is never defined"
-msgstr "æ ‡å· %qE 在所有函数外被引用"
+msgstr "æ ‡å· %d(引用自 %L)从未被定义"
#: fortran/resolve.c:737
#, no-c-format
msgid "Statement function '%s' at %L is not allowed as an actual argument"
-msgstr ""
+msgstr "语å¥å‡½æ•°â€˜%s’在 %L 处ä¸å…许用作实å‚"
#: fortran/resolve.c:760
#, no-c-format
@@ -7364,9 +7331,9 @@ msgid "Unable to resolve the specific function '%s' at %L"
msgstr ""
#: fortran/resolve.c:1009 fortran/resolve.c:5363
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Function '%s' at %L has no IMPLICIT type"
-msgstr "符å·â€˜%s’(ä½äºŽ %L)没有 IMPLICIT 类型"
+msgstr "函数‘%s’在 %L 处没有 IMPLICIT 类型"
#: fortran/resolve.c:1128
#, no-c-format
@@ -7409,9 +7376,9 @@ msgid "Unable to resolve the specific subroutine '%s' at %L"
msgstr ""
#: fortran/resolve.c:1406
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Shapes for operands at %L and %L are not conformable"
-msgstr "shared å’Œ mdll 互ä¸å…¼å®¹"
+msgstr "%L å’Œ %L 处的æ“作数外形ä¸ç›¸å®¹"
#: fortran/resolve.c:1462
#, c-format
@@ -7463,19 +7430,19 @@ msgid "Operands of user operator '%s' at %%L are %s/%s"
msgstr "用户è¿ç®—符‘%s’(ä½äºŽ %%L)çš„æ“作数为 %s/%s"
#: fortran/resolve.c:1645
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Inconsistent ranks for operator at %L and %L"
-msgstr "ä¸€å¥ %<asm%> 中æ“作数约æŸä¸ä¸€è‡´"
+msgstr "%L å’Œ %L 处的æ“作数秩ä¸ä¸€è‡´"
#: fortran/resolve.c:1767
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Illegal stride of zero at %L"
-msgstr "%L 处 MOD 的第二个å‚数为 0"
+msgstr "%L 零间隔éžæ³•"
#: fortran/resolve.c:1788
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Array reference at %L is out of bounds"
-msgstr "对 %qD 的引用有歧义"
+msgstr "%L 处数组引用越界"
#: fortran/resolve.c:1809
#, no-c-format
@@ -7485,37 +7452,37 @@ msgstr ""
#: fortran/resolve.c:1819
#, no-c-format
msgid "Rank mismatch in array reference at %L (%d/%d)"
-msgstr ""
+msgstr "%L 处数组引用中秩ä¸åŒ¹é…(%d/%d)"
#: fortran/resolve.c:1847
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Array index at %L must be scalar"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须是一个逻辑数组"
+msgstr "%L 处数组索引必须是标é‡"
#: fortran/resolve.c:1853
#, no-c-format
msgid "Array index at %L must be of INTEGER type"
-msgstr ""
+msgstr "%L 处数组索引必须具有 INTEGER 类型"
#: fortran/resolve.c:1859
#, no-c-format
msgid "Extension: REAL array index at %L"
-msgstr ""
+msgstr "扩展:%L 处的 REAL 数组索引"
#: fortran/resolve.c:1888
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Argument dim at %L must be scalar"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)的秩必须为 %d"
+msgstr "%L 实å‚维数必须是标é‡"
#: fortran/resolve.c:1894
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Argument dim at %L must be of INTEGER type"
-msgstr "实å‚‘%s’(属于内建函数‘%s’,ä½äºŽ %L)必须具有数字类型"
+msgstr "%L 处实å‚维数必须具有 INTEGER 类型"
#: fortran/resolve.c:1996
#, no-c-format
msgid "Array index at %L is an array of rank %d"
-msgstr ""
+msgstr "%L 处数组索引是一个秩为 %d 的数组"
#: fortran/resolve.c:2034
#, no-c-format
@@ -7637,19 +7604,19 @@ msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
#: fortran/resolve.c:2965
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Expression in CASE statement at %L must be of type %s"
-msgstr "表达å¼è¯­å¥ç±»åž‹ä¸å®Œå…¨"
+msgstr "%L 处 CASE 语å¥ä¸­çš„表达å¼å¿…须具有 %s 类型"
#: fortran/resolve.c:2976
#, no-c-format
msgid "Expression in CASE statement at %L must be kind %d"
-msgstr ""
+msgstr "%L 处 CASE 语å¥ä¸­çš„表达å¼ç§ç±»å¿…须为 %d"
#: fortran/resolve.c:2988
#, no-c-format
msgid "Expression in CASE statement at %L must be scalar"
-msgstr ""
+msgstr "%L 处 CASE 语å¥ä¸­çš„表达å¼å¿…须为标é‡"
#: fortran/resolve.c:3034
#, no-c-format
@@ -7657,14 +7624,14 @@ msgid "Selection expression in computed GOTO statement at %L must be a scalar in
msgstr ""
#: fortran/resolve.c:3052
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Argument of SELECT statement at %L cannot be %s"
-msgstr "%C 处的 ENTRY 语å¥ä¸èƒ½å‡ºçŽ°åœ¨ SELECT å—中"
+msgstr "%L 处 SELECT 语å¥çš„实å‚ä¸èƒ½æ˜¯ %s"
#: fortran/resolve.c:3061
#, no-c-format
msgid "Argument of SELECT statement at %L must be a scalar expression"
-msgstr ""
+msgstr "%L 处 SELECT 语å¥ä¸­çš„实å‚必须为标é‡"
#: fortran/resolve.c:3125
#, no-c-format
@@ -7709,7 +7676,7 @@ msgstr ""
#: fortran/resolve.c:3363
#, no-c-format
msgid "Branch at %L causes an infinite loop"
-msgstr ""
+msgstr "%L 处的分支导致无穷循环"
#. still nothing, so illegal.
#: fortran/resolve.c:3393
@@ -7738,9 +7705,9 @@ msgid "Unsupported statement inside WHERE at %L"
msgstr "%L 处在 WHERE 内ä¸æ”¯æŒçš„语å¥"
#: fortran/resolve.c:3585
-#, fuzzy, no-c-format
+#, no-c-format
msgid "expresion reference type error at %L"
-msgstr "返回临时å˜é‡çš„引用"
+msgstr "%L 处表达å¼å¼•ç”¨ç±»åž‹é”™è¯¯"
#: fortran/resolve.c:3617
#, no-c-format
@@ -7748,9 +7715,9 @@ msgid "Unsupported statement while finding forall index in expression"
msgstr ""
#: fortran/resolve.c:3664
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Assignment to a FORALL index variable at %L"
-msgstr "å‘åªè¯»å˜é‡ %qs 赋值"
+msgstr "%L å¤„å‘ FORALL 索引å˜é‡èµ‹å€¼"
#: fortran/resolve.c:3672
#, no-c-format
@@ -7775,7 +7742,7 @@ msgstr ""
#: fortran/resolve.c:3870
#, no-c-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
-msgstr ""
+msgstr "%L 处的 WHERE/ELSEWHERE å­å¥éœ€è¦ä¸€ä¸ª LOGICAL 数组"
#: fortran/resolve.c:3948
#, no-c-format
@@ -7783,9 +7750,9 @@ msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
#: fortran/resolve.c:3951
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Variable '%s' has not been assigned a target label at %L"
-msgstr ""
+msgstr "å˜é‡â€˜%s’在 %L 尚未分é…到格å¼æ ‡å·"
#: fortran/resolve.c:3961
#, no-c-format
@@ -7838,14 +7805,14 @@ msgid "FORALL mask clause at %L requires a LOGICAL expression"
msgstr ""
#: fortran/resolve.c:4267
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Assumed size array at %L must be a dummy argument"
-msgstr ""
+msgstr "‘reshape’内建函数的‘shape’实å‚在 %L 处必须是大å°ä¸ºå¸¸é‡çš„数组"
#: fortran/resolve.c:4270
-#, no-c-format
+#, fuzzy, no-c-format
msgid "Assumed shape array at %L must be a dummy argument"
-msgstr ""
+msgstr "‘reshape’内建函数的‘shape’实å‚在 %L 处必须是大å°ä¸ºå¸¸é‡çš„数组"
#: fortran/resolve.c:4280
#, no-c-format
@@ -7905,7 +7872,7 @@ msgstr ""
#: fortran/resolve.c:4453
#, no-c-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
-msgstr ""
+msgstr "å¯åˆ†é…的数组‘%s’在 %L 处必须有延迟的外形"
#: fortran/resolve.c:4456
#, no-c-format
@@ -7915,42 +7882,42 @@ msgstr ""
#: fortran/resolve.c:4463
#, no-c-format
msgid "Array pointer '%s' at %L must have a deferred shape"
-msgstr ""
+msgstr "数组指针‘%s’在 %L 处必须有延迟的外形"
#: fortran/resolve.c:4474
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Array '%s' at %L cannot have a deferred shape"
-msgstr "%C 处的任何引用都ä¸èƒ½å¤šäºŽ %d ç»´"
+msgstr "数组‘%s’在 %L 处ä¸èƒ½æœ‰å»¶è¿Ÿçš„外形"
#: fortran/resolve.c:4509
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Allocatable '%s' at %L cannot have an initializer"
-msgstr "åˆå§‹å€¼è®¾å®šé¡¹æœ«å°¾æœ‰å¤šä½™çš„花括å·ç»„"
+msgstr "å¯åˆ†é…的‘%s’在 %L 处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
#: fortran/resolve.c:4512
-#, fuzzy, no-c-format
+#, no-c-format
msgid "External '%s' at %L cannot have an initializer"
-msgstr "åˆå§‹å€¼è®¾å®šé¡¹æœ«å°¾æœ‰å¤šä½™çš„花括å·ç»„"
+msgstr "外部‘%s’在 %L 处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
#: fortran/resolve.c:4515
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Dummy '%s' at %L cannot have an initializer"
-msgstr "åˆå§‹å€¼è®¾å®šé¡¹æœ«å°¾æœ‰å¤šä½™çš„花括å·ç»„"
+msgstr "哑元‘%s’在 %L 处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
#: fortran/resolve.c:4518
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
-msgstr "åˆå§‹å€¼è®¾å®šé¡¹æœ«å°¾æœ‰å¤šä½™çš„花括å·ç»„"
+msgstr "内建函数‘%s’在 %L 处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
#: fortran/resolve.c:4521
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Function result '%s' at %L cannot have an initializer"
-msgstr "å˜é‡ %qs å¯èƒ½æœªç»åˆå§‹åŒ–"
+msgstr "函数结果‘%s’在 %L 处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
#: fortran/resolve.c:4524
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Automatic array '%s' at %L cannot have an initializer"
-msgstr "ä¸èƒ½ç”¨åˆå§‹å€¼è®¾å®šé¡¹æ¥åˆå§‹åŒ–多维数组"
+msgstr "自动数组‘%s’在 %L 处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
#: fortran/resolve.c:4547
#, no-c-format
@@ -7958,9 +7925,9 @@ msgid "PRIVATE symbol '%s' cannot be member of PUBLIC namelist at %L"
msgstr ""
#: fortran/resolve.c:4559
-#, fuzzy, no-c-format
+#, no-c-format
msgid "External object '%s' at %L may not have an initializer"
-msgstr "å˜é‡ %qs å¯èƒ½æœªç»åˆå§‹åŒ–"
+msgstr "外部对象‘%s’在 %L 处ä¸èƒ½æœ‰åˆå§‹å€¼è®¾å®š"
#: fortran/resolve.c:4572
#, no-c-format
@@ -8010,7 +7977,7 @@ msgstr ""
#: fortran/resolve.c:5189
#, no-c-format
msgid "Syntax error in EQUIVALENCE statement at %L"
-msgstr ""
+msgstr "%L 处 EQUIVALENCE 语å¥è¯­æ³•é”™è¯¯"
#: fortran/resolve.c:5206
#, no-c-format
@@ -8040,12 +8007,12 @@ msgstr ""
#: fortran/resolve.c:5330
#, no-c-format
msgid "Substring at %L has length zero"
-msgstr ""
+msgstr "%L çš„å­å­—符串长度为零"
#: fortran/resolve.c:5376
-#, fuzzy, no-c-format
+#, no-c-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
-msgstr "符å·â€˜%s’(ä½äºŽ %L)没有 IMPLICIT 类型"
+msgstr "ENTRY‘%s’在 %L 处没有 IMPLICIT 类型"
#: fortran/resolve.c:5412
#, no-c-format
@@ -8053,19 +8020,19 @@ msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
#: fortran/scanner.c:928
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s:%d: file %s left but not entered"
-msgstr "%1 å·²ç»å­˜åœ¨, 但ä¸æ˜¯ä¸€ä¸ªæ™®é€šæ–‡ä»¶"
+msgstr "%s:%d: 文件 %s 被留下但未进入"
#: fortran/scanner.c:951
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s:%d: Illegal preprocessor directive"
-msgstr "C/C++ 预处ç†å™¨æ ‡å¿—(CPPFLAGS)(&P):"
+msgstr "%s:%d:无效的预包å«æŒ‡ç¤º"
#: fortran/scanner.c:1026
-#, fuzzy, no-c-format
+#, no-c-format
msgid "File '%s' is being included recursively"
-msgstr "下载中"
+msgstr "文件‘%s’被递归地包å«"
#: fortran/scanner.c:1035
#, no-c-format
@@ -8085,17 +8052,17 @@ msgstr "%s:%3d %s\n"
#: fortran/simplify.c:101
#, no-c-format
msgid "Result of %s overflows its kind at %L"
-msgstr ""
+msgstr "%s 的结果在 %L 处上溢其ç§åˆ«"
#: fortran/simplify.c:120
#, no-c-format
msgid "KIND parameter of %s at %L must be an initialization expression"
-msgstr ""
+msgstr "KIND å‚æ•° %s 在 %L 处必须是åˆå§‹åŒ–表达å¼"
#: fortran/simplify.c:130
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Invalid KIND parameter of %s at %L"
-msgstr "%s:“%s†开始部份的数字无效"
+msgstr "%s ä½äºŽ %L çš„ KIND å‚数无效"
#: fortran/simplify.c:227
#, no-c-format
@@ -8185,7 +8152,7 @@ msgstr ""
#: fortran/simplify.c:1580
#, no-c-format
msgid "Argument of INT at %L is not a valid type"
-msgstr ""
+msgstr "%L 处 INT 的实å‚类型无效"
#: fortran/simplify.c:1657
#, no-c-format
@@ -8215,7 +8182,7 @@ msgstr ""
#: fortran/simplify.c:1832
#, no-c-format
msgid "Argument of KIND at %L is a DERIVED type"
-msgstr ""
+msgstr "%L 处 KIND 的实å‚具有 DERIVED 类型"
#: fortran/simplify.c:1903
#, no-c-format
@@ -8268,19 +8235,19 @@ msgid "Invalid second argument of REPEAT at %L"
msgstr "%L 处 REPEAT 的第二个å‚数无效"
#: fortran/simplify.c:2773
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Integer too large in shape specification at %L"
-msgstr "%C 处表达å¼ä¸­æ•´æ•°å€¼å¤ªå¤§"
+msgstr "%L 处外形指定中整数太大"
#: fortran/simplify.c:2783
#, no-c-format
msgid "Too many dimensions in shape specification for RESHAPE at %L"
-msgstr ""
+msgstr "%L 为 RESHAPE 指定的维数太多"
#: fortran/simplify.c:2791
#, no-c-format
msgid "Shape specification at %L cannot be negative"
-msgstr ""
+msgstr "%L 处外形指定ä¸èƒ½ä¸ºè´Ÿæ•°"
#: fortran/simplify.c:2801
#, no-c-format
@@ -8315,7 +8282,7 @@ msgstr ""
#: fortran/simplify.c:3042
#, no-c-format
msgid "Result of SCALE overflows its kind at %L"
-msgstr ""
+msgstr "%L 处 SCALE 的结果上溢其ç§åˆ«"
#: fortran/simplify.c:3623
#, no-c-format
@@ -8325,7 +8292,7 @@ msgstr "%L 处 SQRT çš„å‚数为负"
#: fortran/symbol.c:111
#, no-c-format
msgid "Duplicate IMPLICIT NONE statement at %C"
-msgstr ""
+msgstr "%C 处 IMPLICIT NONE 语å¥é‡å¤"
#: fortran/symbol.c:151
#, no-c-format
@@ -8348,19 +8315,19 @@ msgid "Symbol '%s' at %L has no IMPLICIT type"
msgstr "符å·â€˜%s’(ä½äºŽ %L)没有 IMPLICIT 类型"
#: fortran/symbol.c:304
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s attribute not allowed in BLOCK DATA program unit at %L"
-msgstr "%J%qD ä¸èƒ½æœ‰ section 属性"
+msgstr "%s 属性在 %L 处ä¸å…许出现在 BLOCAK DATA 程åºå•å…ƒä¸­"
#: fortran/symbol.c:497 fortran/symbol.c:976
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s attribute conflicts with %s attribute at %L"
-msgstr "æ ‡å·ä¸Žâ€˜Rx’冲çª"
+msgstr "%s 属性与 %s 属性在 %L 处冲çª"
#: fortran/symbol.c:500
-#, fuzzy, no-c-format
+#, no-c-format
msgid "%s attribute conflicts with %s attribute in '%s' at %L"
-msgstr "与内建声明 %q#D 冲çª"
+msgstr "%s 属性与 %s 属性冲çªï¼Œåœ¨â€˜%s’中,ä½äºŽ %L"
#: fortran/symbol.c:542
#, no-c-format
@@ -8378,9 +8345,9 @@ msgid "Cannot change attributes of symbol at %L after it has been used"
msgstr ""
#: fortran/symbol.c:583
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate %s attribute specified at %L"
-msgstr "设定在指定的日期和时间进行æ醒。"
+msgstr "é‡å¤çš„ %s 属性在 %L 处被指定"
#: fortran/symbol.c:712
#, no-c-format
@@ -8388,14 +8355,14 @@ msgid "Cray Pointee at %L appears in multiple pointer() statements."
msgstr ""
#: fortran/symbol.c:744
-#, fuzzy, no-c-format
+#, no-c-format
msgid "SAVE attribute at %L cannot be specified in a PURE procedure"
-msgstr "%Jä¸èƒ½ä¸ºå±€éƒ¨å˜é‡æŒ‡å®š section 属性"
+msgstr "%L 处 PURE 过程ä¸èƒ½æŒ‡å®š SAVE 属性"
#: fortran/symbol.c:752
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate SAVE attribute specified at %L"
-msgstr "指定了多个函数类型属性"
+msgstr "%L 指定了é‡å¤çš„ SAVE 属性"
#: fortran/symbol.c:1006
#, no-c-format
@@ -8403,9 +8370,9 @@ msgid "%s procedure at %L is already declared as %s procedure"
msgstr ""
#: fortran/symbol.c:1041
-#, fuzzy, no-c-format
+#, no-c-format
msgid "INTENT (%s) conflicts with INTENT(%s) at %L"
-msgstr "æ ‡å·ä¸Žâ€˜Rx’冲çª"
+msgstr "INTENT (%s) 与 INTENT(%s) 在 %L 冲çª"
#: fortran/symbol.c:1064
#, no-c-format
@@ -8415,17 +8382,17 @@ msgstr ""
#: fortran/symbol.c:1084
#, no-c-format
msgid "Symbol '%s' at %L already has an explicit interface"
-msgstr ""
+msgstr "符å·â€˜%s’在 %L 处已ç»æœ‰äº†æ˜¾å¼æŽ¥å£"
#: fortran/symbol.c:1112
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Symbol '%s' at %L already has basic type of %s"
-msgstr "å­—æ¯ %c 在 %C 处已ç»æœ‰äº†ä¸€ä¸ª IMPLICIT 类型"
+msgstr "符å·â€˜%s’在 %L 处已ç»æœ‰äº†åŸºæœ¬ç±»åž‹ %s"
#: fortran/symbol.c:1124
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Symbol '%s' at %L cannot have a type"
-msgstr "符å·â€˜%s’(ä½äºŽ %L)没有 IMPLICIT 类型"
+msgstr "符å·â€˜%s’于 %L 处ä¸èƒ½æœ‰ç±»åž‹"
#: fortran/symbol.c:1262
#, no-c-format
@@ -8443,19 +8410,19 @@ msgid "Derived type '%s' at %C is being used before it is defined"
msgstr ""
#: fortran/symbol.c:1408
-#, fuzzy, no-c-format
+#, no-c-format
msgid "'%s' at %C is not a member of the '%s' structure"
-msgstr "%qD ä¸æ˜¯ %qT çš„æˆå‘˜"
+msgstr "‘%s’在 %C 处ä¸æ˜¯â€˜%s’结构的æˆå‘˜"
#: fortran/symbol.c:1414
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Component '%s' at %C is a PRIVATE component of '%s'"
-msgstr "按照原样:在行末(&A)"
+msgstr "组件‘%s’在 %C 处是‘%s’的 PRIVATE 组件"
#: fortran/symbol.c:1554
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Duplicate statement label %d at %L and %L"
-msgstr "æ ‡å·ä½äºŽå¤åˆè¯­å¥æœ«å°¾"
+msgstr "é‡å¤çš„语å¥æ ‡å· %d 出现在 %L å’Œ %L 处"
#: fortran/symbol.c:1564
#, no-c-format
@@ -8499,9 +8466,9 @@ msgid "Named COMMON block '%s' at %L shall be of the same size"
msgstr ""
#: fortran/trans-common.c:629
-#, fuzzy, no-c-format
+#, no-c-format
msgid "Bad array reference at %L"
-msgstr "虚拟数组 %s 下溢,在 %s 中,于 %s:%d"
+msgstr "%L 处数组引用错误"
#: fortran/trans-common.c:637
#, no-c-format
@@ -8547,9 +8514,8 @@ msgid "Array bound mismatch"
msgstr "数组边界ä¸åŒ¹é…"
#: fortran/trans-const.c:161
-#, fuzzy
msgid "Array reference out of bounds"
-msgstr "列数超出范围"
+msgstr "对数组的引用超出范围"
#: fortran/trans-const.c:164
msgid "Incorrect function return value"
@@ -8566,9 +8532,8 @@ msgid "storage size not constant"
msgstr "存储大å°ä¸æ˜¯å¸¸é‡"
#: fortran/trans-io.c:476
-#, fuzzy
msgid "Assigned label is not a format label"
-msgstr "文件“%1â€ä¸æ˜¯äºŒè¿›åˆ¶æ ¼å¼ã€‚"
+msgstr "赋值标å·ä¸æ˜¯æ ¼å¼æ ‡å·"
#: fortran/trans-io.c:876
#, no-c-format
@@ -8576,9 +8541,8 @@ msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers."
msgstr ""
#: fortran/trans-stmt.c:163
-#, fuzzy
msgid "Assigned label is not a target label"
-msgstr "目的打å°æœºä¸æŽ¥å—打å°ä»»åŠ¡ã€‚"
+msgstr "赋值标å·ä¸æ˜¯ç›®æ ‡æ ‡å·"
#. Check the label list.
#: fortran/trans-stmt.c:179
@@ -8588,7 +8552,7 @@ msgstr ""
#: fortran/trans-stmt.c:265
#, no-c-format
msgid "An alternate return at %L without a * dummy argument"
-msgstr ""
+msgstr "%L ä¸å¸¦ * 哑实å‚的替代返回"
#. FIXME: i18n bug here. Order of prints should not be
#. fixed.
@@ -8892,7 +8856,7 @@ msgstr " --no-assert ä¸è¯†åˆ« assert 关键字\n"
#: java/jv-scan.c:110
#, c-format
msgid " --complexity Print cyclomatic complexity of input file\n"
-msgstr ""
+msgstr " --complexity 打å°è¾“入文件的圈å¤æ‚度\n"
#: java/jv-scan.c:111
#, c-format
@@ -9175,7 +9139,7 @@ msgstr "无效的引用类型"
#: java/parse.y:3025
msgid "Constructor invocation must be first thing in a constructor"
-msgstr ""
+msgstr "构造函数调用必须是构造函数所åšçš„第一件事"
#: java/parse.y:3027
msgid "Only constructors can invoke constructors"
@@ -9269,23 +9233,20 @@ msgid "does not support multilib"
msgstr "ä¸æ”¯æŒ multilib"
#: config/s390/tpf.h:125
-#, fuzzy
msgid "static is not supported on TPF-OS"
-msgstr "堆栈é™åˆ¶åœ¨æ­¤ç›®æ ‡æœºä¸Šä¸å—支æŒ"
+msgstr "TPF-OS ä¸æ”¯æŒ static"
#: config/mips/mips.h:849 config/arc/arc.h:62
msgid "may not use both -EB and -EL"
msgstr "ä¸èƒ½åŒæ—¶ä½¿ç”¨ -EB å’Œ -EL"
#: config/lynx.h:71
-#, fuzzy
msgid "cannot use mthreads and mlegacy-threads together"
-msgstr "ä¸èƒ½åŒæ—¶ä½¿ç”¨ mthreads å’Œ mlegacy-threads。"
+msgstr "ä¸èƒ½åŒæ—¶ä½¿ç”¨ mthreads å’Œ mlegacy-threads"
#: config/lynx.h:96
-#, fuzzy
msgid "cannot use mshared and static together"
-msgstr "ä¸èƒ½åŒæ—¶ä½¿ç”¨ mthreads å’Œ mlegacy-threads。"
+msgstr "ä¸èƒ½åŒæ—¶ä½¿ç”¨ mshared å’Œ static"
#: config/mips/r3900.h:35
msgid "-mhard-float not supported"
@@ -9293,7 +9254,7 @@ msgstr "ä¸æ”¯æŒ -mhard-float"
#: config/mips/r3900.h:37
msgid "-msingle-float and -msoft-float cannot both be specified"
-msgstr ""
+msgstr "ä¸èƒ½åŒæ—¶æŒ‡å®š -msingle-float å’Œ -msoft-float"
#: java/lang-specs.h:34
msgid "-fjni and -femit-class-files are incompatible"
@@ -9324,7 +9285,6 @@ msgid "-E or -x required when input is from standard input"
msgstr "当输入æ¥è‡ªæ ‡å‡†è¾“å…¥è®¾å¤‡æ—¶ï¼Œéœ€è¦ -E 或 -x"
#: config/vax/netbsd-elf.h:42
-#, fuzzy
msgid "the -shared option is not currently supported for VAX ELF"
msgstr "-shared 选项目å‰åœ¨ VAX ELF 下ä¸å—支æŒ"
@@ -9337,9 +9297,8 @@ msgid "mno-cygwin and mno-win32 are not compatible"
msgstr "mno-cygwin å’Œ mno-win32 互ä¸å…¼å®¹"
#: java/lang.opt:66
-#, fuzzy
msgid "Warn if a deprecated compiler feature, class, method, or field is used"
-msgstr "对过时的编译器特性给出警告"
+msgstr "当使用过时的编译器特性,类,方法或字段时给出警告"
#: java/lang.opt:70
msgid "Warn if deprecated empty statements are found"
@@ -9403,7 +9362,7 @@ msgstr "å‡å®šè¿è¡Œæ—¶ä½¿ç”¨ä¸€å¼ æ•£åˆ—表完æˆä»Žå¯¹è±¡åˆ°å…¶åŒæ­¥ç»“æž„çš„
#: java/lang.opt:151
msgid "Use offset tables for virtual method calls"
-msgstr ""
+msgstr "为虚方法调用使用å移表"
#: java/lang.opt:158
msgid "Assume native functions are implemented using JNI"
@@ -9442,9 +9401,8 @@ msgid "Put MODULE files in 'directory'"
msgstr "将 MODULE 文件放入‘directory’"
#: fortran/lang.opt:42
-#, fuzzy
msgid "Warn about possible aliasing of dummy arguments"
-msgstr "å¯èƒ½ç¼ºå°‘括å·çš„情况下给出警告"
+msgstr ""
#: fortran/lang.opt:46
msgid "Warn about implicit conversion"
@@ -9455,18 +9413,16 @@ msgid "Warn about calls with implicit interface"
msgstr "对带有éšå¼æŽ¥å£çš„调用给出警告"
#: fortran/lang.opt:54
-#, fuzzy
msgid "Warn about truncated source lines"
-msgstr "使用了éžåŽŸåž‹çš„函数声明时给出莥警告"
+msgstr "对被截断的æºæ–‡ä»¶è¡Œç»™å‡ºè­¦å‘Š"
#: fortran/lang.opt:58
msgid "Warn about usage of non-standard intrinsics"
-msgstr ""
+msgstr "用到éžæ ‡å‡†çš„内建函数时给出警告"
#: fortran/lang.opt:62
-#, fuzzy
msgid "Warn about \"suspicious\" constructs"
-msgstr "对没有文档的实体给出警告"
+msgstr "对“å¯ç–‘â€çš„构造给出警告"
#: fortran/lang.opt:66
msgid "Warn about underflow of numerical constant expressions"
@@ -9486,19 +9442,19 @@ msgstr ""
#: fortran/lang.opt:82
msgid "Set the default double precision kind to an 8 byte wide type"
-msgstr "将默认åŒç²¾åº¦ç±»åž‹è®¾ä¸º 8 字节宽"
+msgstr "将默认åŒç²¾åº¦ç§åˆ«è®¾ä¸º 8 字节宽"
#: fortran/lang.opt:86
msgid "Set the default integer kind to an 8 byte wide type"
-msgstr "将默认整数类型设为 8 字节宽"
+msgstr "将默认整数ç§åˆ«è®¾ä¸º 8 字节宽"
#: fortran/lang.opt:90
msgid "Set the default real kind to an 8 byte wide type"
-msgstr "将默认实类型设为 8 字节宽"
+msgstr "将默认实型ç§åˆ«è®¾ä¸º 8 字节宽"
#: fortran/lang.opt:94
msgid "Ignore 'D' in column one in fixed form"
-msgstr ""
+msgstr "在固定格å¼ä¸­å¿½ç•¥ç¬¬ä¸€åˆ—的‘D’"
#: fortran/lang.opt:98
msgid "Treat lines with 'D' in column one as comments"
@@ -9509,9 +9465,8 @@ msgid "Allow dollar signs in entity names"
msgstr "å…许在实体å中使用美元符å·"
#: fortran/lang.opt:106
-#, fuzzy
msgid "Display the code tree after parsing"
-msgstr "显示编译器版本"
+msgstr "解æžåŽæ˜¾ç¤ºä»£ç æ ‘"
#: fortran/lang.opt:110
msgid "Use f2c calling convention"
@@ -9527,7 +9482,7 @@ msgstr "å‡å®šæºæ–‡ä»¶æ˜¯è‡ªç”±æ ¼å¼"
#: fortran/lang.opt:122
msgid "Append underscores to externally visible names"
-msgstr ""
+msgstr "为外部å¯è§çš„å字添加下划线"
#: fortran/lang.opt:126
msgid "Use the Cray Pointer extension"
@@ -9535,7 +9490,7 @@ msgstr "使用 Cray 指针扩展"
#: fortran/lang.opt:130
msgid "Append a second underscore if the name already contains an underscore"
-msgstr ""
+msgstr "当åå­—å·²ç»åŒ…å«ä¸€ä¸ªä¸‹åˆ’线时添加第二个下划线"
#: fortran/lang.opt:134
msgid "Specify that no implicit typing is allowed, unless overridden by explicit IMPLICIT statements"
@@ -9543,11 +9498,11 @@ msgstr ""
#: fortran/lang.opt:138
msgid "Allow arbitrary character line width in fixed mode"
-msgstr ""
+msgstr "在固定模å¼ä¸‹å…许任æ„的字符行宽"
#: fortran/lang.opt:142
msgid "Use n as character line width in fixed mode"
-msgstr ""
+msgstr "在固定模å¼ä¸‹ä»¥ n 作为字符行宽"
#: fortran/lang.opt:146
msgid "Maximum identifier length"
@@ -9578,9 +9533,8 @@ msgid "Set the kind for a real with the 'q' exponent to 'n'"
msgstr ""
#: fortran/lang.opt:174
-#, fuzzy
msgid "Stop on following floating point exceptions"
-msgstr "ä¸å†…è”浮点除法"
+msgstr "在以下浮点异常的情况下的åœæ­¢"
#: fortran/lang.opt:178
msgid "Conform to the ISO Fortran 95 standard"
@@ -9600,17 +9554,15 @@ msgstr "接å—一定的扩展以支æŒä¼ ç»Ÿçš„代ç "
#: fortran/lang.opt:194 c.opt:661
msgid "Use the narrowest integer type possible for enumeration types"
-msgstr ""
+msgstr "为枚举类型使用尽å¯èƒ½çª„的整数类型"
#: treelang/lang.opt:30
-#, fuzzy
msgid "Trace lexical analysis"
-msgstr "æ•°æ®ç±»åž‹åˆ†æž"
+msgstr "跟踪è¯æ³•åˆ†æž"
#: treelang/lang.opt:34
-#, fuzzy
msgid "Trace the parsing process"
-msgstr "-stop_after_process"
+msgstr "跟踪解æžè¿›ç¨‹"
#: config/alpha/alpha.opt:24 config/i386/i386.opt:186
msgid "Do not use hardware fp"
@@ -9638,7 +9590,7 @@ msgstr "生æˆç¬¦åˆ IEEE 的代ç ï¼Œä¸äº§ç”Ÿä¸ç²¾ç¡®çš„异常"
#: config/alpha/alpha.opt:51
msgid "Do not emit complex integer constants to read-only memory"
-msgstr ""
+msgstr "ä¸å°†å¤æ•´å¸¸æ•°å­˜è‡³åªè¯»å†…å­˜"
#: config/alpha/alpha.opt:55
msgid "Use VAX fp"
@@ -9681,9 +9633,8 @@ msgid "Emit direct branches to local functions"
msgstr "为局部函数生æˆç›´æŽ¥åˆ†æ”¯"
#: config/alpha/alpha.opt:95
-#, fuzzy
msgid "Emit indirect branches to local functions"
-msgstr "为局部函数生æˆç›´æŽ¥åˆ†æ”¯"
+msgstr "为局部函数生æˆé—´æŽ¥åˆ†æ”¯"
#: config/alpha/alpha.opt:99
msgid "Emit rdval instead of rduniq for thread pointer"
@@ -9739,9 +9690,8 @@ msgid "Enable label alignment optimizations"
msgstr "å¯ç”¨æ ‡å·å¯¹é½ä¼˜åŒ–"
#: config/frv/frv.opt:36
-#, fuzzy
msgid "Dynamically allocate cc registers"
-msgstr "ä¸åˆ†é… BK 寄存器"
+msgstr "动æ€åˆ†é… cc 寄存器"
#: config/frv/frv.opt:43
msgid "Set the cost of branches"
@@ -9752,9 +9702,8 @@ msgid "Enable conditional execution other than moves/scc"
msgstr ""
#: config/frv/frv.opt:51
-#, fuzzy
msgid "Change the maximum length of conditionally-executed sequences"
-msgstr "公因å¼æ¶ˆåŽ»æ—¶è€ƒè™‘的最大路径长度"
+msgstr "改å˜æ¡ä»¶æ‰§è¡Œåºåˆ—的最大长度"
#: config/frv/frv.opt:55
msgid "Change the number of temporary registers that are available to conditionally-executed sequences"
@@ -9769,18 +9718,16 @@ msgid "Set the target CPU type"
msgstr "指定目标 CPU 的类型"
#: config/frv/frv.opt:85
-#, fuzzy
msgid "Use fp double instructions"
-msgstr "使用硬件四浮点指令"
+msgstr "使用浮点åŒç²¾åº¦æŒ‡ä»¤"
#: config/frv/frv.opt:89
msgid "Change the ABI to allow double word insns"
-msgstr ""
+msgstr "æ”¹å˜ ABI 以å…许åŒå­—指令"
#: config/frv/frv.opt:93
-#, fuzzy
msgid "Enable Function Descriptor PIC mode"
-msgstr "å¯ç”¨å‡½æ•°å–æ ·"
+msgstr "å¯ç”¨å‡½æ•°æ述符 PIC 模å¼"
#: config/frv/frv.opt:97
msgid "Just use icc0/fcc0"
@@ -9812,23 +9759,20 @@ msgid "Use hardware floating point"
msgstr "使用硬件浮点å•å…ƒ"
#: config/frv/frv.opt:125
-#, fuzzy
msgid "Enable inlining of PLT in function calls"
-msgstr "‘#pragma %s’中缺少函数å,忽略"
+msgstr "为函数调用å¯ç”¨ PLT 的内è”"
#: config/frv/frv.opt:129
-#, fuzzy
msgid "Enable PIC support for building libraries"
-msgstr "å¯ç”¨å¯¹å·¨åž‹å¯¹è±¡çš„支æŒ"
+msgstr "å¯ç”¨å¯¹åº“çš„ PIC 支æŒ"
#: config/frv/frv.opt:133
msgid "Follow the EABI linkage requirements"
msgstr ""
#: config/frv/frv.opt:137
-#, fuzzy
msgid "Disallow direct calls to global functions"
-msgstr "为局部函数生æˆç›´æŽ¥åˆ†æ”¯"
+msgstr "ä¸å…许直接调用全局函数"
#: config/frv/frv.opt:141
msgid "Use media instructions"
@@ -9851,14 +9795,12 @@ msgid "Do not mark ABI switches in e_flags"
msgstr ""
#: config/frv/frv.opt:162
-#, fuzzy
msgid "Remove redundant membars"
-msgstr "删除活动视图(&R)"
+msgstr "删除冗余æˆå‘˜"
#: config/frv/frv.opt:166
-#, fuzzy
msgid "Pack VLIW instructions"
-msgstr "软件安装指å—"
+msgstr "打包 VLIW 指令"
#: config/frv/frv.opt:170
msgid "Enable setting GPRs to the result of comparisons"
@@ -9877,9 +9819,8 @@ msgid "Assume a large TLS segment"
msgstr "å‡å®šå¤§çš„线程局部存储段"
#: config/frv/frv.opt:186
-#, fuzzy
msgid "Do not assume a large TLS segment"
-msgstr "ä¸è°ƒæ•´å †æ ˆå¯¹é½"
+msgstr "ä¸å‡å®šå¤§çš„ TLS 段"
#: config/frv/frv.opt:191
msgid "Cause gas to print tomcat statistics"
@@ -9911,7 +9852,7 @@ msgstr "å¯ç”¨é“¾æŽ¥å™¨æ¾å¼›"
#: config/mn10300/mn10300.opt:41
msgid "Return pointers in both a0 and d0"
-msgstr ""
+msgstr "在 a0 和 d0 中返回指针"
#: config/s390/tpf.opt:24
msgid "Enable TPF-OS tracing code"
@@ -9936,7 +9877,7 @@ msgstr "为给定的 CPU 生æˆä»£ç "
#: config/s390/s390.opt:36
#, fuzzy
msgid "Maintain backchain pointer"
-msgstr "显示包å«é¼ æ ‡æŒ‡é’ˆ"
+msgstr "æ领 %<void *%> 指针"
#: config/s390/s390.opt:40
msgid "Additional debug prints"
@@ -9971,7 +9912,6 @@ msgid "Set the max. number of bytes which has to be left to stack size before a
msgstr ""
#: config/s390/s390.opt:72
-#, fuzzy
msgid "Emit extra code in the function prologue in order to trap if the stack size exceeds the given limit"
msgstr "在函数å‰è¨€ä¸­ç”Ÿæˆé¢å¤–代ç ä»¥æ•èŽ·å †æ ˆå¤§å°è¶Šé™"
@@ -9981,11 +9921,8 @@ msgid "Schedule code for given CPU"
msgstr "为指定的 CPU 优化代ç "
#: config/s390/s390.opt:80
-#, fuzzy
msgid "mvcle use"
-msgstr ""
-"%s:\n"
-"已使用 %d%%"
+msgstr "使用 mvcle"
#: config/s390/s390.opt:84
msgid "Warn if a function uses alloca or creates an array with dynamic size"
@@ -10025,7 +9962,7 @@ msgstr "为 GNU ld 生æˆä»£ç "
#: config/ia64/ia64.opt:19
msgid "Emit stop bits before and after volatile extended asms"
-msgstr ""
+msgstr "在 volatile 扩展汇编å—å‰åŽåŠ ä¸Šåœæ­¢ä½"
#: config/ia64/ia64.opt:23
msgid "Use in/loc/out register names"
@@ -10041,7 +9978,7 @@ msgstr "生æˆä¸ä½¿ç”¨ GP 寄存器的代ç "
#: config/ia64/ia64.opt:38
msgid "gp is constant (but save/restore gp on indirect calls)"
-msgstr ""
+msgstr "gp 是常é‡(但当间接调用时ä¿å­˜/æ¢å¤ gp)"
#: config/ia64/ia64.opt:42
msgid "Generate self-relocatable code"
@@ -10092,9 +10029,8 @@ msgid "Specify range of registers to make fixed"
msgstr ""
#: config/m32c/m32c.opt:25 config/ms1/ms1.opt:32
-#, fuzzy
msgid "Use simulator runtime"
-msgstr "使用 WindISS 仿真器"
+msgstr "使用仿真器è¿è¡Œæ—¶"
#: config/m32c/m32c.opt:29
msgid "Compile code for R8C variants"
@@ -10114,7 +10050,7 @@ msgstr "为 M32C å˜ç§ç¼–译"
#: config/m32c/m32c.opt:45
msgid "Number of memreg bytes (default: 16, range: 0..16)"
-msgstr ""
+msgstr "memreg 字节数(默认:16,范围:0..16)"
#: config/sparc/little-endian.opt:24
msgid "Generate code for little-endian"
@@ -10186,7 +10122,7 @@ msgstr ""
#: config/sparc/sparc.opt:88
msgid "Optimize tail call instructions in assembler and linker"
-msgstr ""
+msgstr "在汇编器和链接器中优化尾调用指令"
#: config/sparc/sparc.opt:92 config/rs6000/rs6000.opt:199
msgid "Use features of and schedule code for given CPU"
@@ -10218,7 +10154,7 @@ msgstr "优先使用分支而ä¸æ˜¯æ¡ä»¶æ‰§è¡Œ"
#: config/m32r/m32r.opt:44
msgid "Give branches their default cost"
-msgstr ""
+msgstr "为分支指定默认代价"
#: config/m32r/m32r.opt:48
msgid "Display compile time statistics"
@@ -10229,18 +10165,16 @@ msgid "Specify cache flush function"
msgstr "指定清空缓存的函数"
#: config/m32r/m32r.opt:56
-#, fuzzy
msgid "Specify cache flush trap number"
-msgstr "ä¸è°ƒç”¨ä»»ä½•æ¸…空缓存的陷阱"
+msgstr "指定清空缓存的陷阱å·"
#: config/m32r/m32r.opt:60
msgid "Only issue one instruction per cycle"
msgstr "æ¯å‘¨æœŸåªå‘出一æ¡æŒ‡ä»¤"
#: config/m32r/m32r.opt:64
-#, fuzzy
msgid "Allow two instructions to be issued per cycle"
-msgstr "æ¯å‘¨æœŸåªå‘出一æ¡æŒ‡ä»¤"
+msgstr "å…许æ¯å‘¨æœŸå‘出两æ¡æŒ‡ä»¤"
#: config/m32r/m32r.opt:68
msgid "Code size: small, medium or large"
@@ -10356,7 +10290,7 @@ msgstr "生æˆç›¸å¯¹ pc 的代ç "
#: config/m68k/m68k.opt:129
msgid "Use different calling convention using 'rtd'"
-msgstr ""
+msgstr "å¯ç”¨ä½¿ç”¨â€˜rtd’的ä¸åŒçš„调用约定"
#: config/m68k/m68k.opt:133
msgid "Enable separate data segment"
@@ -10664,9 +10598,8 @@ msgid "Generate fused multiply/add instructions"
msgstr "生æˆèžåˆçš„乘/加指令"
#: config/rs6000/rs6000.opt:113
-#, fuzzy
msgid "Schedule the start and end of the procedure"
-msgstr "自动更正(删除行首和行末的空白)"
+msgstr "调度过程的起始与终止"
#: config/rs6000/rs6000.opt:120
msgid "Return all structures in memory (AIX default)"
@@ -10698,7 +10631,7 @@ msgstr "在 TOC 中存放符å·+å移é‡å¸¸é‡"
#: config/rs6000/rs6000.opt:159
msgid "Use only one TOC entry per procedure"
-msgstr "为æ¯ä¸ªè¿›ç¨‹åªä½¿ç”¨ä¸€ä¸ª TOC æ¡ç›®"
+msgstr "为æ¯ä¸ªè¿‡ç¨‹åªä½¿ç”¨ä¸€ä¸ª TOC æ¡ç›®"
#: config/rs6000/rs6000.opt:163
msgid "Put everything in the regular TOC"
@@ -10722,7 +10655,7 @@ msgstr "已过时的选项。请改用 -misel/-mno-isel"
#: config/rs6000/rs6000.opt:183
msgid "Generate SPE SIMD instructions on E500"
-msgstr ""
+msgstr "在 E500 ä¸Šç”Ÿæˆ SPE SIMD 指令"
#: config/rs6000/rs6000.opt:187
msgid "Deprecated option. Use -mspe/-mno-spe instead"
@@ -10798,7 +10731,7 @@ msgstr "对é½åˆ°ä½æ®µçš„基类型"
#: config/rs6000/sysv4.opt:46 config/rs6000/sysv4.opt:50
msgid "Produce code relocatable at runtime"
-msgstr ""
+msgstr "生æˆè¿è¡Œæ—¶å¯é‡å®šä½çš„代ç "
#: config/rs6000/sysv4.opt:54 config/rs6000/sysv4.opt:58
msgid "Produce little endian code"
@@ -10848,21 +10781,19 @@ msgstr "与 libmvme.a,libc.a 和 crt0.o 链接"
#: config/rs6000/sysv4.opt:121
msgid "Set the PPC_EMB bit in the ELF flags header"
-msgstr ""
+msgstr "在 ELF 标记头中指定 PPC_EMB ä½"
#: config/rs6000/sysv4.opt:125
msgid "Use the WindISS simulator"
msgstr "使用 WindISS 仿真器"
#: config/rs6000/sysv4.opt:145
-#, fuzzy
msgid "Generate code to use a non-exec PLT and GOT"
-msgstr "为 Boehm 生æˆä»£ç "
+msgstr "生æˆçš„代ç ä½¿ç”¨ä¸å¯æ‰§è¡Œ PLT å’Œ GOT"
#: config/rs6000/sysv4.opt:149
-#, fuzzy
msgid "Generate code for old exec BSS PLT"
-msgstr "生æˆåŠ¨æ€é“¾æŽ¥åº“的代ç "
+msgstr "为旧的å¯æ‰§è¡Œ BSS PLT 生æˆä»£ç "
#: config/ms1/ms1.opt:24
msgid "Generate multiply instructions"
@@ -10870,11 +10801,11 @@ msgstr "生æˆä¹˜æ³•æŒ‡ä»¤"
#: config/ms1/ms1.opt:28
msgid "Use byte loads and stores when generating code."
-msgstr ""
+msgstr "生æˆä»£ç æ—¶ä½¿ç”¨å­—节载入和存储。"
#: config/ms1/ms1.opt:36
msgid "Do not include crt0.o in the startup files"
-msgstr ""
+msgstr "ä¸å°† crt0.o 包å«åœ¨å¯åŠ¨æ–‡ä»¶ä¸­"
#: config/ms1/ms1.opt:40 config/ms1/ms1.opt:44 config/ms1/ms1.opt:48
#: config/ms1/ms1.opt:52 config/ms1/ms1.opt:56
@@ -10919,7 +10850,7 @@ msgstr "使用除法指令"
#: config/mcore/mcore.opt:56
msgid "Inline constants if it can be done in 2 insns or less"
-msgstr ""
+msgstr "当常é‡å¯ä»¥ä¸ºä¸¤ä¸ªä»¥ä¸‹çš„指令生æˆæ—¶å†…è”常é‡"
#: config/mcore/mcore.opt:60
msgid "Generate little-endian code"
@@ -10927,7 +10858,7 @@ msgstr "生æˆä½Žä½å­—节在å‰çš„代ç "
#: config/mcore/mcore.opt:68
msgid "Use arbitrary sized immediates in bit operations"
-msgstr ""
+msgstr "在ä½æ“作中使用任æ„大å°çš„ç«‹å³æ•°"
#: config/mcore/mcore.opt:72
msgid "Prefer word accesses over byte accesses"
@@ -10946,9 +10877,8 @@ msgid "Prepend the name of the cpu to all public symbol names"
msgstr ""
#: config/arc/arc.opt:43
-#, fuzzy
msgid "Compile code for ARC variant CPU"
-msgstr "为指定的 CPU 优化代ç "
+msgstr "为 ARC å˜ç§ CPU 生æˆä»£ç "
#: config/arc/arc.opt:47
msgid "Put functions in SECTION"
@@ -11092,7 +11022,7 @@ msgstr ""
#: config/sh/sh.opt:176 config/sh/sh.opt:222
msgid "Follow Renesas (formerly Hitachi) / SuperH calling conventions"
-msgstr ""
+msgstr "é’循 Renesas(å…ˆå‰è¢«ç§°ä½œ Hitachi)/SuperH 调用约定"
#: config/sh/sh.opt:180
msgid "Increase the IEEE compliance for floating-point code"
@@ -11103,9 +11033,8 @@ msgid "Enable the use of the indexed addressing mode for SHmedia32/SHcompact"
msgstr ""
#: config/sh/sh.opt:188
-#, fuzzy
msgid "Assume symbols might be invalid"
-msgstr "å‡å®šæ‰€æœ‰ç¬¦å·éƒ½æœ‰ 32 ä½å€¼"
+msgstr "å‡å®šç¬¦å·å¯èƒ½æ— æ•ˆ"
#: config/sh/sh.opt:192
msgid "Annotate assembler instructions with estimated addresses"
@@ -11117,7 +11046,7 @@ msgstr "生æˆä½Žä½å­—节在å‰çš„代ç "
#: config/sh/sh.opt:200
msgid "Mark MAC register as call-clobbered"
-msgstr "å°† MAC 寄存器标记为原值将为调用所破åçš„"
+msgstr "将 MAC 寄存器标记为调用篡改的"
#: config/sh/sh.opt:206
msgid "Make structs a multiple of 4 bytes (warning: ABI altered)"
@@ -11220,9 +11149,8 @@ msgid "Store function names in object code"
msgstr "在目标文件中存储函数å"
#: config/arm/arm.opt:115
-#, fuzzy
msgid "Permit scheduling of a function's prologue sequence"
-msgstr "使用å ä½ç¨‹åºå®Œæˆå‡½æ•°å‰è¨€/尾声"
+msgstr "å…许调度函数å‰è¨€åºåˆ—"
#: config/arm/arm.opt:119
msgid "Do not load the PIC register in function prologues"
@@ -11245,9 +11173,8 @@ msgid "Support calls between Thumb and ARM instruction sets"
msgstr ""
#: config/arm/arm.opt:139
-#, fuzzy
msgid "Specify how to access the thread pointer"
-msgstr "指定目标架构的å称"
+msgstr "指定如何访问线程指针"
#: config/arm/arm.opt:143
msgid "Thumb: Generate (non-leaf) stack frames even if not needed"
@@ -11282,14 +11209,12 @@ msgid "Generate code for an 11/45"
msgstr "为 11/45 生æˆé™„加代ç "
#: config/pdp11/pdp11.opt:36
-#, fuzzy
msgid "Use 16-bit abs patterns"
-msgstr "使用 64 ä½æµ®ç‚¹å¯„存器"
+msgstr "使用 16 ä½ abs 模å¼"
#: config/pdp11/pdp11.opt:40
-#, fuzzy
msgid "Return floating-point results in ac0 (fr0 in Unix assembler syntax)"
-msgstr "在 ac0 中返回浮点结果"
+msgstr "在 ac0(Unix 汇编语法中的 fr0)中返回浮点结果"
#: config/pdp11/pdp11.opt:44
msgid "Do not use inline patterns for copying memory"
@@ -11336,7 +11261,6 @@ msgid "Use UNIX assembler syntax"
msgstr "使用 UNIX 汇编风格"
#: config/avr/avr.opt:24
-#, fuzzy
msgid "Use subroutines for function prologues and epilogues"
msgstr "使用å­ç¨‹åºå®Œæˆå‡½æ•°å‰è¨€/尾声"
@@ -11611,18 +11535,16 @@ msgid "Provide libraries for the simulator"
msgstr "为仿真器æ供库"
#: config/mips/mips.opt:24
-#, fuzzy
msgid "Generate code that conforms to the given ABI"
-msgstr "为给定的 CPU 生æˆä»£ç "
+msgstr "生æˆéµå¾ªç»™å®š ABI 的代ç "
#: config/mips/mips.opt:28
msgid "Use SVR4-style PIC"
msgstr "ä¸ä½¿ç”¨ SVR4 风格的 PIC"
#: config/mips/mips.opt:32
-#, fuzzy
msgid "Use PMC-style 'mad' instructions"
-msgstr "使用ä½æ®µæŒ‡ä»¤"
+msgstr "使用 PMC 风格的‘mad’指令"
#: config/mips/mips.opt:36
msgid "Generate code for the given ISA"
@@ -11637,14 +11559,12 @@ msgid "Trap on integer divide by zero"
msgstr "整数被零除时进入陷阱"
#: config/mips/mips.opt:48
-#, fuzzy
msgid "Use branch-and-break sequences to check for integer divide by zero"
-msgstr "使用断点检查整数零除异常"
+msgstr "使用分支-中断åºåˆ—æ¥æ£€æµ‹æ•´æ•°é›¶é™¤"
#: config/mips/mips.opt:52
-#, fuzzy
msgid "Use trap instructions to check for integer divide by zero"
-msgstr "使用陷阱检查整数零除异常"
+msgstr "使用陷阱指令检测整数零除"
#: config/mips/mips.opt:56
msgid "Allow hardware floating-point instructions to cover both 32-bit and 64-bit operations"
@@ -11755,9 +11675,8 @@ msgid "Don't optimize block moves"
msgstr "ä¸ä¼˜åŒ–å—移动"
#: config/mips/mips.opt:170
-#, fuzzy
msgid "Use the mips-tfile postpass"
-msgstr "使用 MIPS-3D 指令"
+msgstr "使用 mips-tfile åŽå¤„ç†"
#: config/mips/mips.opt:174
msgid "Do not use a cache-flushing function before calling stack trampolines"
@@ -11780,9 +11699,8 @@ msgid "Restrict the use of hardware floating-point instructions to 32-bit operat
msgstr ""
#: config/mips/mips.opt:194
-#, fuzzy
msgid "Prevent the use of all hardware floating-point instructions"
-msgstr "å…许使用硬件浮点指令"
+msgstr "ä¸å…许使用任何硬件浮点指令"
#: config/mips/mips.opt:198
msgid "Optimize lui/addiu address loads"
@@ -11798,7 +11716,7 @@ msgstr "为 PROCESSOR 优化输出"
#: config/mips/mips.opt:210 config/iq2000/iq2000.opt:45
msgid "Put uninitialized constants in ROM (needs -membedded-data)"
-msgstr ""
+msgstr "将未åˆå§‹åŒ–的常é‡æ”¾åœ¨ ROM 中(éœ€è¦ -membedded-data)"
#: config/mips/mips.opt:214
msgid "Perform VR4130-specific alignment optimizations"
@@ -11874,7 +11792,7 @@ msgstr "指示å¯ç”¨çš„软寄存器的数é‡"
#: config/vax/vax.opt:24 config/vax/vax.opt:28
msgid "Target DFLOAT double precision code"
-msgstr ""
+msgstr "ç”Ÿæˆ DFLOAT åŒç²¾åº¦ä»£ç "
#: config/vax/vax.opt:32 config/vax/vax.opt:36
msgid "Generate GFLOAT double precision code"
@@ -11950,7 +11868,7 @@ msgstr ""
#: config/cris/cris.opt:159
msgid "Override -mbest-lib-options"
-msgstr ""
+msgstr "覆盖 -mbest-lib-options"
#: config/cris/cris.opt:166
msgid "Generate code for the specified chip or CPU version"
@@ -11966,7 +11884,7 @@ msgstr "当堆栈框架大于指定值时给出警告"
#: config/cris/aout.opt:28
msgid "Compile for the MMU-less Etrax 100-based elinux system"
-msgstr ""
+msgstr "为没有 MMU 的基于 Etrax 100 的 elinux 系统编译"
#: config/cris/aout.opt:34
msgid "For elinux, request a specified stack-size for this program"
@@ -12030,7 +11948,7 @@ msgstr "ä¸ä½¿ç”¨ callt 指令"
#: config/v850/v850.opt:40
msgid "Reuse r30 on a per function basis"
-msgstr ""
+msgstr "为æ¯ä¸ªå‡½æ•°é‡ç”¨ r30"
#: config/v850/v850.opt:44
msgid "Support Green Hills ABI"
@@ -12038,7 +11956,7 @@ msgstr "æ”¯æŒ Green Hills ABI"
#: config/v850/v850.opt:48
msgid "Prohibit PC relative function calls"
-msgstr ""
+msgstr "ç¦æ­¢ç›¸å¯¹ PC 的函数调用"
#: config/v850/v850.opt:52
msgid "Use stubs for function prologues"
@@ -12050,7 +11968,7 @@ msgstr ""
#: config/v850/v850.opt:60
msgid "Enable the use of the short load instructions"
-msgstr ""
+msgstr "å¯ç”¨å¯¹çŸ­åŠ è½½æŒ‡ä»¤çš„使用"
#: config/v850/v850.opt:64
msgid "Same as: -mep -mprolog-function"
@@ -12082,15 +12000,15 @@ msgstr ""
#: config/mmix/mmix.opt:25
msgid "For intrinsics library: pass all parameters in registers"
-msgstr ""
+msgstr "为内建库:所有å‚数在寄存器中传递"
#: config/mmix/mmix.opt:29
msgid "Use register stack for parameters and return value"
-msgstr ""
+msgstr "使用寄存器栈传递å‚数和返回值"
#: config/mmix/mmix.opt:33
msgid "Use call-clobbered registers for parameters and return value"
-msgstr "将原值为调用破å的寄存器用于å‚数和返回值"
+msgstr "将调用篡改的寄存器用于å‚数和返回值"
#: config/mmix/mmix.opt:38
msgid "Use epsilon-respecting floating point compare instructions"
@@ -12098,11 +12016,11 @@ msgstr "使用在æ„æ— ç©·å°çš„浮点比较指令"
#: config/mmix/mmix.opt:42
msgid "Use zero-extending memory loads, not sign-extending ones"
-msgstr ""
+msgstr "使用零扩展而ä¸æ˜¯ç¬¦å·æ‰©å±•çš„内存载入"
#: config/mmix/mmix.opt:46
msgid "Generate divide results with reminder having the same sign as the divisor (not the dividend)"
-msgstr ""
+msgstr "生æˆçš„除法结果中余数符å·å°†ä¸Žé™¤æ•°è€Œä¸æ˜¯è¢«é™¤æ•°ç›¸åŒ"
#: config/mmix/mmix.opt:50
msgid "Prepend global symbols with \":\" (for use with PREFIX)"
@@ -12110,15 +12028,15 @@ msgstr "在全局符å·å‰æ·»åŠ â€œ:â€(为与 PREFIX å作)"
#: config/mmix/mmix.opt:54
msgid "Do not provide a default start-address 0x100 of the program"
-msgstr ""
+msgstr "ä¸ä¸ºç¨‹åºæä¾›é»˜è®¤çš„èµ·å§‹åœ°å€ 0x100"
#: config/mmix/mmix.opt:58
msgid "Link to emit program in ELF format (rather than mmo)"
-msgstr ""
+msgstr "é“¾æŽ¥ç”Ÿæˆ ELF è€Œéž mmo æ ¼å¼çš„程åº"
#: config/mmix/mmix.opt:62
msgid "Use P-mnemonics for branches statically predicted as taken"
-msgstr ""
+msgstr "为é™æ€é¢„测为必è¦è¿›è¡Œçš„跳转使用 P 助记符"
#: config/mmix/mmix.opt:66
msgid "Don't use P-mnemonics for branches"
@@ -12126,19 +12044,19 @@ msgstr "ä¸ä¸ºåˆ†æ”¯ä½¿ç”¨ P 助记符"
#: config/mmix/mmix.opt:80
msgid "Use addresses that allocate global registers"
-msgstr ""
+msgstr "使用分é…全局寄存器的地å€"
#: config/mmix/mmix.opt:84
msgid "Do not use addresses that allocate global registers"
-msgstr ""
+msgstr "ä¸ä½¿ç”¨åˆ†é…全局寄存器的地å€"
#: config/mmix/mmix.opt:88
msgid "Generate a single exit point for each function"
-msgstr ""
+msgstr "为æ¯ä¸ªå‡½æ•°ç”Ÿæˆå•ä¸€çš„退出点"
#: config/mmix/mmix.opt:92
msgid "Do not generate a single exit point for each function"
-msgstr ""
+msgstr "ä¸ä¸ºæ¯ä¸ªå‡½æ•°ç”Ÿæˆå•ä¸€çš„退出点"
#: config/mmix/mmix.opt:96
msgid "Set start-address of the program"
@@ -12166,7 +12084,7 @@ msgstr "为å¶å‡½æ•°(ä¸è°ƒç”¨å…¶ä»–函数的函数)忽略框架指针"
#: config/bfin/bfin.opt:28
msgid "Program is entirely located in low 64k of memory"
-msgstr ""
+msgstr "程åºå®Œå…¨ä½äºŽå†…存的低 64K"
#: config/bfin/bfin.opt:32
msgid "Work around a hardware anomaly by adding a number of NOPs before a"
@@ -12258,7 +12176,7 @@ msgstr "å°†ä¾èµ–项输出到给定文件"
#: c.opt:85
msgid "Treat missing header files as generated files"
-msgstr ""
+msgstr "将缺失的头文件看作生æˆçš„文件"
#: c.opt:89
msgid "Like -M but ignore system header files"
@@ -12371,7 +12289,7 @@ msgstr "当传递给格å¼å­—符串的实å‚太多时给出警告"
#: c.opt:202
msgid "Warn about format strings that are not literals"
-msgstr "当 format 字符串ä¸æ˜¯å­—é¢å€¼æ—¶ç»™å‡ºè­¦å‘Š"
+msgstr "当格å¼å­—符串ä¸æ˜¯å­—é¢å€¼æ—¶ç»™å‡ºè­¦å‘Š"
#: c.opt:206
msgid "Warn about possible security problems with format functions"
@@ -12466,9 +12384,8 @@ msgid "Warn about NULL being passed to argument slots marked as requiring non-NU
msgstr "当将 NULL 传递给需è¦éž NULL çš„å‚数的函数时给出警告"
#: c.opt:304
-#, fuzzy
msgid "Warn about non-normalised Unicode strings"
-msgstr "当æžæž„函数ä¸æ˜¯è™šå‡½æ•°æ—¶ç»™å‡ºè­¦å‘Š"
+msgstr "为未归一化的 Unicode 字符串给出警告"
#: c.opt:308
msgid "Warn if a C-style cast is used in a program"
@@ -12536,7 +12453,7 @@ msgstr "当é‡è½½å°†æ— ç¬¦å·æ•°æå‡ä¸ºæœ‰ç¬¦å·æ•°æ—¶ç»™å‡ºè­¦å‘Š"
#: c.opt:372
msgid "Warn about uncasted NULL used as sentinel"
-msgstr ""
+msgstr "将未作转æ¢çš„ NULL 用作哨兵时给出警告"
#: c.opt:376
msgid "Warn about unprototyped function declarations"
@@ -12580,16 +12497,15 @@ msgstr "当定义在主文件中的å®æœªè¢«ä½¿ç”¨æ—¶ç»™å‡ºè­¦å‘Š"
#: c.opt:416
msgid "Do not warn about using variadic macros when -pedantic"
-msgstr ""
+msgstr "指定 -pedantic æ—¶ä¸ä¸ºå¯å˜å‚æ•°å®ç»™å‡ºè­¦å‘Š"
#: c.opt:420
msgid "Give strings the type \"array of char\""
msgstr "令字符串类型为 char 数组"
#: c.opt:424
-#, fuzzy
msgid "Warn when a pointer differs in signedness in an assignment"
-msgstr "当é‡è½½å°†æ— ç¬¦å·æ•°æå‡ä¸ºæœ‰ç¬¦å·æ•°æ—¶ç»™å‡ºè­¦å‘Š"
+msgstr "当赋值时指针有/无符å·ä¸ä¸€è‡´æ—¶ç»™å‡ºè­¦å‘Š"
#: c.opt:428
msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)"
@@ -12601,7 +12517,7 @@ msgstr "执行类æˆå‘˜è®¿é—®æŽ§åˆ¶è¯­ä¹‰"
#: c.opt:443
msgid "Change when template instances are emitted"
-msgstr ""
+msgstr "使用ä¸åŒçš„模æ¿å®žä¾‹åŒ–实现"
#: c.opt:447
msgid "Recognize the \"asm\" keyword"
@@ -12641,7 +12557,7 @@ msgstr "å…许‘$’作为标识符的一部分"
#: c.opt:489
msgid "Generate code to check exception specifications"
-msgstr ""
+msgstr "生æˆæ£€æŸ¥å¼‚常规范的代ç "
#: c.opt:496
msgid "Convert all strings and character constants to character set <cset>"
@@ -12657,7 +12573,7 @@ msgstr "指定æºä»£ç çš„默认字符集"
#: c.opt:521
msgid "Scope of for-init-statement variables is local to the loop"
-msgstr ""
+msgstr "for 循环åˆå§‹åŒ–中定义的å˜é‡ä½œç”¨åŸŸå±€é™äºŽå¾ªçŽ¯å†…"
#: c.opt:525
msgid "Do not assume that standard C libraries and \"main\" exist"
@@ -12692,9 +12608,8 @@ msgid "Emit implicit instantiations of templates"
msgstr "å…许模æ¿éšå¼å®žä¾‹åŒ–"
#: c.opt:566
-#, fuzzy
msgid "Inject friend functions into enclosing namespace"
-msgstr "将简å•å‡½æ•°é›†æˆåˆ°å®ƒä»¬çš„调用者中"
+msgstr "å°†å‹å…ƒå‡½æ•°å£°æ˜Žè§†ä½œåŒ…å«å®ƒçš„命å空间中的有效声明"
#: c.opt:573
msgid "Don't warn about uses of Microsoft extensions"
@@ -12710,11 +12625,11 @@ msgstr "å‡å®š Objective-C 消æ¯çš„接å—者å¯èƒ½æ˜¯ nil"
#: c.opt:599
msgid "Generate special Objective-C methods to initialize/destroy non-POD C++ ivars, if needed"
-msgstr ""
+msgstr "如果需è¦ï¼Œç”Ÿæˆç‰¹æ®Šçš„ Objective-C 方法æ¥åˆå§‹åŒ–/æžæž„éžç®€å•æ—§æ•°æ® C++ å˜é‡"
#: c.opt:603
msgid "Allow fast jumps to the message dispatcher"
-msgstr ""
+msgstr "å…许快速跳转至消æ¯åˆ†å‘者"
#: c.opt:609
msgid "Enable Objective-C exception and synchronization syntax"
@@ -12722,7 +12637,7 @@ msgstr "å¯ç”¨ Objective-C 异常和åŒæ­¥è¯­æ³•"
#: c.opt:613
msgid "Enable garbage collection (GC) in Objective-C/Objective-C++ programs"
-msgstr ""
+msgstr "在 Objective-C/Objective-C++ 程åºä¸­å¯ç”¨åžƒåœ¾æ”¶é›†"
#: c.opt:618
msgid "Enable Objective-C setjmp exception handling runtime"
@@ -12742,7 +12657,7 @@ msgstr "å³ä½¿åœ¨é¢„处ç†æ—¶ä¹Ÿæœç´¢å¹¶ä½¿ç”¨ PCH 文件"
#: c.opt:637
msgid "Downgrade conformance errors to warnings"
-msgstr ""
+msgstr "将兼容性错误é™æ ¼ä¸ºè­¦å‘Š"
#: c.opt:641
msgid "Treat the input file as already preprocessed"
@@ -12750,7 +12665,7 @@ msgstr "将输入文件当作已ç»é¢„处ç†è¿‡çš„"
#: c.opt:645
msgid "Used in Fix-and-Continue mode to indicate that object files may be swapped in at runtime"
-msgstr ""
+msgstr "指定对象文件å¯èƒ½åœ¨è¿è¡Œæ—¶è¢«æ¢å…¥ä»¥å…许“修å¤å¹¶ç»§ç»­â€è°ƒè¯•æ¨¡å¼"
#: c.opt:649
msgid "Enable automatic template instantiation"
@@ -12778,16 +12693,15 @@ msgstr "使“charâ€ç±»åž‹é»˜è®¤ä¸ºæœ‰ç¬¦å·"
#: c.opt:680
msgid "Display statistics accumulated during compilation"
-msgstr ""
+msgstr "显示编译过程中累计的统计数字"
#: c.opt:687
msgid "Distance between tab stops for column reporting"
-msgstr ""
+msgstr "指定报告列å·æ—¶åˆ¶è¡¨ä½é—´çš„è·ç¦»"
#: c.opt:691
-#, fuzzy
msgid "Specify maximum template instantiation depth"
-msgstr "å¯ç”¨æ¨¡æ¿è‡ªåŠ¨å®žä¾‹åŒ–"
+msgstr "指定模æ¿å®žä¾‹åŒ–的最大深度"
#: c.opt:698
msgid "Do not generate thread-safe code for initializing local statics"
@@ -12803,11 +12717,11 @@ msgstr "使“charâ€ç±»åž‹é»˜è®¤ä¸ºæ— ç¬¦å·"
#: c.opt:710
msgid "Use __cxa_atexit to register destructors"
-msgstr ""
+msgstr "å°† __cxa_atexit è€Œéž atexit 登记为æžæž„函数"
#: c.opt:714
msgid "Marks all inlined methods as having hidden visibility"
-msgstr ""
+msgstr "将所有内è”函数标记为具有éšè—çš„å¯è§æ€§"
#: c.opt:718
msgid "Discard unused virtual functions"
@@ -12819,7 +12733,7 @@ msgstr "使用 thunk 技术实现 vtable"
#: c.opt:726
msgid "Emit common-like symbols as weak symbols"
-msgstr ""
+msgstr "将公共符å·è§†ä½œå¼±ç¬¦å·"
#: c.opt:730
msgid "Convert all wide strings and character constants to character set <cset>"
@@ -13011,7 +12925,7 @@ msgstr "当目标文件大于 <n> 字节时给出警告"
#: common.opt:98
msgid "Warn if the loop cannot be optimized due to nontrivial assumptions."
-msgstr ""
+msgstr "当循环因为ä¸å¹³å‡¡çš„å‡å®šè€Œä¸èƒ½è¢«ä¼˜åŒ–时给出警告"
#: common.opt:102
msgid "Warn about functions which might be candidates for __attribute__((noreturn))"
@@ -13099,7 +13013,7 @@ msgstr "对é½å‡½æ•°å…¥å£"
#: common.opt:224
msgid "Align labels which are only reached by jumping"
-msgstr ""
+msgstr "对é½åªèƒ½ä¸ºè·³è½¬æ‰€åˆ°è¾¾çš„æ ‡å·"
#: common.opt:231
msgid "Align all labels"
@@ -13167,7 +13081,7 @@ msgstr "ä¸å°†æœªåˆå§‹åŒ–的全局数æ®æ”¾åœ¨å…¬å…±èŠ‚中"
#: common.opt:314
msgid "Perform a register copy-propagation optimization pass"
-msgstr "进行一趟寄存器副本传播优化"
+msgstr "进行一趟寄存器副本传递优化"
#: common.opt:318
msgid "Perform cross-jumping optimization"
@@ -13183,7 +13097,7 @@ msgstr "进行 CSE 时,跟éšæ¡ä»¶è·³è½¬"
#: common.opt:330
msgid "Omit range reduction step when performing complex division"
-msgstr ""
+msgstr "当进行å¤æ•°é™¤æ³•æ—¶çœç•¥ç¼©å‡èŒƒå›´çš„步骤"
#: common.opt:334
msgid "Place data items into their own section"
@@ -13191,7 +13105,7 @@ msgstr "å°†æ¯ä¸ªæ•°æ®é¡¹åˆ†åˆ«æ”¾åœ¨å®ƒä»¬å„自的节中"
#: common.opt:340
msgid "Defer popping functions args from stack until later"
-msgstr ""
+msgstr "延迟将函数实å‚弹栈"
#: common.opt:344
msgid "Attempt to fill delay slots of branch instructions"
@@ -13227,7 +13141,7 @@ msgstr "进行 DWARF2 冗余消除"
#: common.opt:376 common.opt:380
msgid "Perform unused type elimination in debug info"
-msgstr ""
+msgstr "在调试信æ¯ä¸­è¿›è¡Œæ— ç”¨ç±»åž‹æ¶ˆé™¤"
#: common.opt:384
msgid "Enable exception handling"
@@ -13314,9 +13228,8 @@ msgid "Integrate simple functions into their callers"
msgstr "将简å•å‡½æ•°é›†æˆåˆ°å®ƒä»¬çš„调用者中"
#: common.opt:493
-#, fuzzy
msgid "Integrate functions called once into their callers"
-msgstr "将简å•å‡½æ•°é›†æˆåˆ°å®ƒä»¬çš„调用者中"
+msgstr "å°†åªè¢«è°ƒç”¨ä¸€æ¬¡çš„函数集æˆåˆ°å®ƒä»¬çš„调用者中"
#: common.opt:500
msgid "Limit the size of inlined functions to <number>"
@@ -13336,7 +13249,7 @@ msgstr "å‘现纯函数和常函数"
#: common.opt:516
msgid "Discover readonly and non addressable static variables"
-msgstr ""
+msgstr "å‘现åªè¯»å’Œä¸å¯å¯»å€é™æ€å˜é‡"
#: common.opt:520
msgid "Type based escape and alias analysis"
@@ -13347,9 +13260,8 @@ msgid "Optimize induction variables on trees"
msgstr "在树上优化归纳å˜é‡"
#: common.opt:528
-#, fuzzy
msgid "Use jump tables for sufficiently large switch statements"
-msgstr "case æ ‡å·å‡ºçŽ°åœ¨å¼€å…³è¯­å¥å¤–"
+msgstr "为足够大的 switch 语å¥ä½¿ç”¨è·³è½¬è¡¨"
#: common.opt:532
msgid "Generate code for functions even if they are fully inlined"
@@ -13361,7 +13273,7 @@ msgstr "ä¿ç•™æœªç”¨åˆ°çš„é™æ€å¸¸é‡"
#: common.opt:540
msgid "Give external symbols a leading underscore"
-msgstr ""
+msgstr "给外部符å·æ·»åŠ èµ·å§‹çš„下划线"
#: common.opt:544
msgid "Perform loop optimizations"
@@ -13377,11 +13289,11 @@ msgstr "执行内建数学函数åŽè®¾ç½® errno"
#: common.opt:556
msgid "Report on permanent memory allocation"
-msgstr ""
+msgstr "报告永久性内存分é…"
#: common.opt:563
msgid "Attempt to merge identical constants and constant variables"
-msgstr ""
+msgstr "试图åˆå¹¶ç›¸åŒçš„常é‡å’Œå¸¸å˜é‡"
#: common.opt:567
msgid "Attempt to merge identical constants across compilation units"
@@ -13393,7 +13305,7 @@ msgstr "t将诊断信æ¯é™åˆ¶åœ¨æ¯è¡Œ <æ•°å­—> 个字符æ¯è¡Œã€‚0 å–消自åŠ
#: common.opt:575
msgid "Perform SMS based modulo scheduling before the first scheduling pass"
-msgstr ""
+msgstr "在首趟调度å‰è¿›è¡ŒåŸºäºŽ SMS 的模调度"
#: common.opt:579
msgid "Move loop invariant computations out of loops"
@@ -13413,7 +13325,7 @@ msgstr ""
#: common.opt:595
msgid "Enable/Disable the traditional scheduling in loops that already passed modulo scheduling"
-msgstr ""
+msgstr "å¯ç”¨/ç¦ç”¨å·²ç»é€šè¿‡æ¨¡è°ƒåº¦çš„循环中的传统调度"
#: common.opt:599
msgid "Support synchronous non-call exceptions"
@@ -13453,7 +13365,7 @@ msgstr "å¯ç”¨æœºå™¨ç›¸å…³çš„窥孔优化"
#: common.opt:635
msgid "Enable an RTL peephole pass before sched2"
-msgstr ""
+msgstr "在 sched2 å‰è¿›è¡Œä¸€è¶Ÿ RTL 窥孔优化"
#: common.opt:639
msgid "Generate position-independent code if possible (large mode)"
@@ -13541,15 +13453,15 @@ msgstr "å¯ç”¨åŸºæœ¬å—间的调度"
#: common.opt:726
msgid "Allow speculative motion of non-loads"
-msgstr ""
+msgstr "å…许éžè½½å…¥çš„预测移动"
#: common.opt:730
msgid "Allow speculative motion of some loads"
-msgstr ""
+msgstr "å…许一些载入的预测移动"
#: common.opt:734
msgid "Allow speculative motion of more loads"
-msgstr ""
+msgstr "å…许更多载入的预测移动"
#: common.opt:738
msgid "Set the verbosity level of the scheduler"
@@ -13565,11 +13477,11 @@ msgstr ""
#: common.opt:750
msgid "Reschedule instructions before register allocation"
-msgstr ""
+msgstr "分é…寄存器å‰é‡æ–°è°ƒåº¦æŒ‡ä»¤"
#: common.opt:754
msgid "Reschedule instructions after register allocation"
-msgstr ""
+msgstr "分é…寄存器åŽé‡æ–°è°ƒåº¦æŒ‡ä»¤"
#: common.opt:760
msgid "Allow premature scheduling of queued insns"
@@ -13585,7 +13497,7 @@ msgstr ""
#: common.opt:780
msgid "Mark data as shared rather than private"
-msgstr ""
+msgstr "将数æ®æ ‡è®°ä¸ºå…±äº«çš„而ä¸æ˜¯ç§æœ‰çš„"
#: common.opt:784
msgid "Show column numbers in diagnostics, when available. Default on"
@@ -13593,21 +13505,19 @@ msgstr ""
#: common.opt:788
msgid "Disable optimizations observable by IEEE signaling NaNs"
-msgstr ""
+msgstr "ç¦ç”¨ä¸º IEEE è®¯æ¯ NaN å¯è§çš„优化"
#: common.opt:792
msgid "Convert floating point constants to single precision constants"
msgstr "将浮点常é‡è½¬æ¢ä¸ºå•ç²¾åº¦å¸¸é‡"
#: common.opt:796
-#, fuzzy
msgid "Split lifetimes of induction variables when loops are unrolled"
msgstr "展开循环时分离归纳å˜é‡çš„生存期"
#: common.opt:800
-#, fuzzy
msgid "Apply variable expansion when loops are unrolled"
-msgstr "展开循环时分离归纳å˜é‡çš„生存期"
+msgstr "展开循环时也展开å˜é‡"
#: common.opt:806
msgid "Insert stack checking code into the program"
@@ -13655,7 +13565,7 @@ msgstr "报告æ¯è¶Ÿæ±‡ç¼–的耗时"
#: common.opt:857
msgid "Set the default thread-local storage code generation model"
-msgstr ""
+msgstr "设定默认的线程局部存储代ç ç”Ÿæˆæ¨¡å¼"
#: common.opt:861
msgid "Perform superblock formation via tail duplication"
@@ -13663,7 +13573,7 @@ msgstr ""
#: common.opt:868
msgid "Assume floating-point operations can trap"
-msgstr ""
+msgstr "å‡å®šæµ®ç‚¹è¿ç®—å¯èƒ½å¼•å‘陷阱"
#: common.opt:872
msgid "Trap for signed overflow in addition, subtraction and multiplication"
@@ -13702,9 +13612,8 @@ msgid "Enable SSA dead code elimination optimization on trees"
msgstr "å¯ç”¨æ ‘上的 SSA 死代ç æ¶ˆé™¤ä¼˜åŒ–"
#: common.opt:908
-#, fuzzy
msgid "Enable dominator optimizations"
-msgstr "å¯ç”¨é“¾æŽ¥å™¨ä¼˜åŒ–"
+msgstr "å¯ç”¨ä¸»å¯¼ä¼˜åŒ–"
#: common.opt:912
msgid "Enable dead store elimination"
@@ -13724,7 +13633,7 @@ msgstr "å¯ç”¨æ ‘上的线性循环å˜æ¢"
#: common.opt:928
msgid "Create canonical induction variables in loops"
-msgstr ""
+msgstr "在循环中生æˆæ­£è§„的归纳å˜é‡"
#: common.opt:932
msgid "Enable loop optimizations on tree level"
@@ -13739,9 +13648,8 @@ msgid "Perform structural alias analysis"
msgstr ""
#: common.opt:944
-#, fuzzy
msgid "Enable SSA code sinking on trees"
-msgstr "å¯ç”¨æ ‘上的 SSA 死代ç æ¶ˆé™¤ä¼˜åŒ–"
+msgstr "å¯ç”¨æ ‘上的 SSA 代ç ä¸‹æ²‰ä¼˜åŒ–"
#: common.opt:948
msgid "Perform scalar replacement of aggregates"
@@ -13756,9 +13664,8 @@ msgid "Perform live range splitting during the SSA->normal pass"
msgstr ""
#: common.opt:960
-#, fuzzy
msgid "Perform Value Range Propagation on trees"
-msgstr "进行一趟寄存器副本传播优化"
+msgstr "进行树上的值域传递"
#: common.opt:964
msgid "Compile whole compilation unit at a time"
@@ -13809,9 +13716,8 @@ msgid "Add extra commentary to assembler output"
msgstr "为汇编输出添加é¢å¤–注释"
#: common.opt:1025
-#, fuzzy
msgid "Set the default symbol visibility"
-msgstr "设置“%sâ€ä¸ºé»˜è®¤å€¼"
+msgstr "设置默认的符å·å¯è§æ€§"
#: common.opt:1030
msgid "Use expression value profiles in optimizations"
@@ -13827,7 +13733,7 @@ msgstr "进行全程åºä¼˜åŒ–"
#: common.opt:1042
msgid "Assume signed arithmetic overflow wraps around"
-msgstr ""
+msgstr "å‡å®šæœ‰ç¬¦å·è¿ç®—溢出时回绕"
#: common.opt:1046
msgid "Put zero initialized data in the bss section"
@@ -13887,7 +13793,7 @@ msgstr "与 -pedantic 类似,但将它们视作错误"
#: common.opt:1102
msgid "Do not display functions compiled or elapsed time"
-msgstr ""
+msgstr "ä¸æ˜¾ç¤ºç¼–译的函数或é€åŽ»çš„时间"
#: common.opt:1106
msgid "Display the compiler's version"
@@ -14087,7 +13993,7 @@ msgstr "%H%D 的最åŽä¸€ä¸ªå®žå‚ä¸æ˜¯ä¸€ä¸ª 0 到 3 之间的整常é‡"
#: builtins.c:9910 builtins.c:10063 builtins.c:10128
#, gcc-internal-format
msgid "%Hcall to %D will always overflow destination buffer"
-msgstr ""
+msgstr "%H对 %D 的调用总是导致目标缓冲区溢出"
#: c-common.c:831
#, gcc-internal-format
@@ -14336,9 +14242,9 @@ msgid "%qE attribute ignored"
msgstr "%qE 属性被忽略"
#: c-common.c:4256
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE attribute have effect only on public objects"
-msgstr "%J%qE 属性åªèƒ½åº”用到函数上"
+msgstr "%qE 属性åªèƒ½åº”用到公共对象上"
#: c-common.c:4463
#, gcc-internal-format
@@ -14391,9 +14297,9 @@ msgid "section of %q+D conflicts with previous declaration"
msgstr "%q+D 的节与早先的声明冲çª"
#: c-common.c:4608
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "section attribute not allowed for %q+D"
-msgstr "%J%qD ä¸èƒ½æœ‰ section 属性"
+msgstr "%q+D ä¸èƒ½æœ‰ section 属性"
#: c-common.c:4614
#, gcc-internal-format
@@ -14416,9 +14322,9 @@ msgid "requested alignment is too large"
msgstr "è¦æ±‚的对é½è¾¹ç•Œå¤ªå¤§"
#: c-common.c:4682
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "alignment may not be specified for %q+D"
-msgstr "%Jå¯èƒ½ä¸èƒ½ä¸º %qD 指定对é½"
+msgstr "ä¸èƒ½ä¸º %q+D 指定对é½"
#: c-common.c:4720
#, gcc-internal-format
@@ -14493,32 +14399,32 @@ msgstr "矢é‡ä¸­åˆ†é‡æ•°ä¸æ˜¯ 2 çš„æŸæ¬¡æ–¹"
#: c-common.c:5207
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
-msgstr ""
+msgstr "éžç©ºçš„属性在éžåŽŸåž‹ä¸­æ²¡æœ‰å®žå‚"
#: c-common.c:5222
#, gcc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
-msgstr ""
+msgstr "éžç©ºçš„å®žå‚ %lu æ“作数å·ä¸å¯¹"
#: c-common.c:5241
#, gcc-internal-format
msgid "nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
-msgstr ""
+msgstr "éžç©ºçš„实å‚æ“作数å·è¶Šç•Œ(å®žå‚ %lu,æ“作数 %lu)"
#: c-common.c:5249
#, gcc-internal-format
msgid "nonnull argument references non-pointer operand (argument %lu, operand %lu)"
-msgstr ""
+msgstr "éžç©ºçš„å®žå‚ %lu 引用了éžæŒ‡é’ˆæ“作数 %lu"
#: c-common.c:5312 c-common.c:5335
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "not enough variable arguments to fit a sentinel"
-msgstr "给予函数的实å‚太少"
+msgstr "å˜é‡å®žå‚太少,ä¸è¶³ä»¥å¡«æ»¡ä¸€ä¸ªå“¨å…µ"
#: c-common.c:5356
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "missing sentinel in function call"
-msgstr "‘#pragma %s’中缺少函数å,忽略"
+msgstr "函数调用中缺少哨兵"
#: c-common.c:5398
#, gcc-internal-format
@@ -14541,9 +14447,9 @@ msgid "%qE attribute requires prototypes with named arguments"
msgstr "%qE 属性需è¦å¸¦æœ‰å实å‚的原型"
#: c-common.c:5520
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qE attribute only applies to variadic functions"
-msgstr "%qs 属性åªèƒ½åº”用到中断函数上"
+msgstr "%qE 属性åªèƒ½ç”¨äºŽå¸¦å¯å˜å‚数函数"
#: c-common.c:5531
#, gcc-internal-format
@@ -14566,9 +14472,9 @@ msgid "%Hignoring return value of function declared with attribute warn_unused_r
msgstr "%H忽略声明有 warn_unused_result 属性的函数的返回值"
#: c-common.c:5904 cp/typeck.c:4239
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
-msgstr "试图å–ä½æ®µç»“æž„æˆå‘˜ %qs 的地å€"
+msgstr "试图å–ä½æ®µç»“æž„æˆå‘˜ %qD 的地å€"
#: c-common.c:5951
#, gcc-internal-format
@@ -14603,9 +14509,9 @@ msgstr "æ供给函数 %qE 的实å‚太少"
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
#: c-common.c:6108 c-typeck.c:4117
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
-msgstr "%q+D çš„åŽŸåž‹å¯¹å®žå‚ %d 声明类型ä¸å…¼å®¹"
+msgstr "å®žå‚ %d(属于 %qE)类型ä¸å…¼å®¹"
#. Except for passing an argument to an unprototyped function,
#. this is a constraint violation. When passing an argument to
@@ -14616,13 +14522,13 @@ msgstr "%q+D çš„åŽŸåž‹å¯¹å®žå‚ %d 声明类型ä¸å…¼å®¹"
#: cp/typeck.c:5986 fortran/convert.c:89 treelang/tree-convert.c:79
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
-msgstr ""
+msgstr "void 值未如预期地被忽略"
#: c-convert.c:134 fortran/convert.c:122 java/typeck.c:154
#: treelang/tree-convert.c:105
#, gcc-internal-format
msgid "conversion to non-scalar type requested"
-msgstr ""
+msgstr "请求转æ¢åˆ°éžæ ‡é‡ç±»åž‹"
#: c-decl.c:564
#, gcc-internal-format
@@ -14662,7 +14568,7 @@ msgstr "未使用的å˜é‡ %q+D"
#: c-decl.c:816
#, gcc-internal-format
msgid "type of array %q+D completed incompatibly with implicit initialization"
-msgstr ""
+msgstr "数组 %q+D 类型与éšå¼åˆå§‹åŒ–ä¸å…¼å®¹"
#: c-decl.c:1050
#, gcc-internal-format
@@ -14672,7 +14578,7 @@ msgstr "带有çœç•¥å·çš„å½¢å‚列表无法与空形å‚å列表声明匹é…"
#: c-decl.c:1057
#, gcc-internal-format
msgid "an argument type that has a default promotion can%'t match an empty parameter name list declaration"
-msgstr ""
+msgstr "具有默认æå‡çš„实å‚类型ä¸èƒ½åŒ¹é…空å‚æ•°å列表声明"
#: c-decl.c:1092
#, gcc-internal-format
@@ -14917,9 +14823,9 @@ msgid "%Jjump into statement expression"
msgstr "%J跳转至语å¥è¡¨è¾¾å¼ä¸­"
#: c-decl.c:2564
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%Jjump into scope of identifier with variably modified type"
-msgstr "<qt>如果使用了 <i>long long</i> 类型则给出警告</qt>"
+msgstr "%J跳至具有å¯å˜ç±»åž‹çš„标识符的作用域中"
#: c-decl.c:2579
#, gcc-internal-format
@@ -14929,7 +14835,7 @@ msgstr "%H传统 C ä¸ä¸ºæ ‡å·æ供一个å•ç‹¬çš„命å空间,标识符 %qE
#: c-decl.c:2654
#, gcc-internal-format
msgid "%H%qE defined as wrong kind of tag"
-msgstr ""
+msgstr "%H%qE 定义为类型错误的标记"
#: c-decl.c:2869
#, gcc-internal-format
@@ -14939,12 +14845,12 @@ msgstr "未定义任何实例的无å结构/è”åˆ"
#: c-decl.c:2877
#, gcc-internal-format
msgid "empty declaration with storage class specifier does not redeclare tag"
-msgstr ""
+msgstr "带有存储类的空声明没有é‡å£°æ˜Žæ ‡è®°"
#: c-decl.c:2888
#, gcc-internal-format
msgid "empty declaration with type qualifier does not redeclare tag"
-msgstr ""
+msgstr "带有类型é™å®šçš„空声明没有é‡å£°æ˜Žæ ‡è®°"
#: c-decl.c:2909 c-decl.c:2916
#, gcc-internal-format
@@ -15063,9 +14969,9 @@ msgid "storage size of %q+D isn%'t constant"
msgstr "%q+D 的存储大å°ä¸æ˜¯å¸¸é‡"
#: c-decl.c:3432
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "ignoring asm-specifier for non-static local variable %q+D"
-msgstr "为实例å˜é‡ %qs 指定了无效的引用类型"
+msgstr "为éžé™æ€å±€éƒ¨å˜é‡ %q+D 忽略了 asm é™å®šç¬¦"
#: c-decl.c:3460 fortran/f95-lang.c:667
#, gcc-internal-format
@@ -15110,7 +15016,7 @@ msgstr "%qs 的宽度超过它自身的类型"
#: c-decl.c:3776
#, gcc-internal-format
msgid "%qs is narrower than values of its type"
-msgstr ""
+msgstr "%qs 比其类型的值è¦çª„"
#: c-decl.c:3925
#, gcc-internal-format
@@ -15388,7 +15294,7 @@ msgstr "%Jå½¢å‚ %u 类型为 void"
#: c-decl.c:4898
#, gcc-internal-format
msgid "%<void%> as only parameter may not be qualified"
-msgstr ""
+msgstr "%<void%> 作为仅有的å‚æ•°æ—¶ä¸èƒ½è¢«é™å®š"
#: c-decl.c:4902 c-decl.c:4936
#, gcc-internal-format
@@ -15440,7 +15346,7 @@ msgstr "嵌套的 %<struct %E%> é‡å®šä¹‰"
#: c-decl.c:5197 cp/decl.c:3502
#, gcc-internal-format
msgid "declaration does not declare anything"
-msgstr "声明没有声明任何东西"
+msgstr "没有声明任何东西"
#: c-decl.c:5201
#, gcc-internal-format
@@ -15495,7 +15401,7 @@ msgstr "%J对包å«å˜é•¿æ•°ç»„æˆå‘˜çš„结构的无效使用"
#: c-decl.c:5493
#, gcc-internal-format
msgid "union cannot be made transparent"
-msgstr ""
+msgstr "è”åˆä¸èƒ½æˆä¸ºé€æ˜Žçš„"
#: c-decl.c:5564
#, gcc-internal-format
@@ -15516,12 +15422,12 @@ msgstr "枚举值超过了最大整数类型å¯è¡¨ç¤ºçš„范围"
#: c-decl.c:5651
#, gcc-internal-format
msgid "specified mode too small for enumeral values"
-msgstr ""
+msgstr "指定的模å¼å¯¹æžšä¸¾å€¼æ¥è¯´å¤ªå°"
#: c-decl.c:5747
#, gcc-internal-format
msgid "enumerator value for %qE is not an integer constant"
-msgstr ""
+msgstr "%qE 的枚举值ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸é‡"
#: c-decl.c:5764
#, gcc-internal-format
@@ -15644,9 +15550,9 @@ msgid "parameter %q+D has incomplete type"
msgstr "å½¢å‚ %q+D 的类型ä¸å®Œå…¨"
#: c-decl.c:6233
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "declaration for parameter %q+D but no such parameter"
-msgstr "%q#D 的声明éšè—了一个形å‚"
+msgstr "声明的å‚æ•° %q+D ä¸å­˜åœ¨"
#: c-decl.c:6283
#, gcc-internal-format
@@ -15929,7 +15835,7 @@ msgstr "%q+F 使用过但从未定义"
#: c-format.c:97 c-format.c:206
#, gcc-internal-format
msgid "format string has invalid operand number"
-msgstr "æ ¼å¼å­—符串的æ“作数数é‡æ— æ•ˆ"
+msgstr "æ ¼å¼å­—符串的æ“作数å·æ— æ•ˆ"
#: c-format.c:114
#, gcc-internal-format
@@ -15954,7 +15860,7 @@ msgstr "%qE 是一个无法识别的格å¼å­—符串函数类型"
#: c-format.c:212
#, gcc-internal-format
msgid "%<...%> has invalid operand number"
-msgstr "%<...%> æ“作数数目ä¸å¯¹"
+msgstr "%<...%> æ“作数å·ä¸å¯¹"
#: c-format.c:219
#, gcc-internal-format
@@ -15969,32 +15875,32 @@ msgstr "函数å¯èƒ½æ˜¯ %qs format 属性的备选"
#: c-format.c:991 c-format.c:1012 c-format.c:2026
#, gcc-internal-format
msgid "missing $ operand number in format"
-msgstr "æ ¼å¼å­—符串缺少 $ æ“作数"
+msgstr "æ ¼å¼å­—符串缺少 $ æ“作数å·"
#: c-format.c:1021
#, gcc-internal-format
msgid "%s does not support %%n$ operand number formats"
-msgstr ""
+msgstr "%s ä¸æ”¯æŒ %%n$ æ“作数å·æ ¼å¼å­—符串"
#: c-format.c:1028
#, gcc-internal-format
msgid "operand number out of range in format"
-msgstr ""
+msgstr "æ ¼å¼å­—符中æ“作数å·è¶Šç•Œ"
#: c-format.c:1051
#, gcc-internal-format
msgid "format argument %d used more than once in %s format"
-msgstr ""
+msgstr "æ ¼å¼å®žå‚ %d 在 %s æ ¼å¼å­—符串中使用ä¸æ­¢ä¸€æ¬¡"
#: c-format.c:1083
#, gcc-internal-format
msgid "$ operand number used after format without operand number"
-msgstr ""
+msgstr "$ æ“作数å·åœ¨ä¸ä½¿ç”¨æ“作数å·çš„æ ¼å¼åŽè¢«ä½¿ç”¨"
#: c-format.c:1114
#, gcc-internal-format
msgid "format argument %d unused before used argument %d in $-style format"
-msgstr ""
+msgstr "æ ¼å¼å®žå‚ %d 在被使用的 $ 风格的格å¼å®žå‚ %d å‰æœªè¢«ä½¿ç”¨"
#: c-format.c:1209
#, gcc-internal-format
@@ -16014,12 +15920,12 @@ msgstr "æ ¼å¼å­—符串ä¸æ˜¯ä¸€ä¸ªå­—é¢å­—符串,没有进行实å‚类型检
#: c-format.c:1243
#, gcc-internal-format
msgid "too many arguments for format"
-msgstr "æ供给 format 的实å‚太多"
+msgstr "æ供给格å¼å­—符串的实å‚太多"
#: c-format.c:1246
#, gcc-internal-format
msgid "unused arguments in $-style format"
-msgstr ""
+msgstr "$ 风格的格å¼å­—符串中有未使用的实å‚"
#: c-format.c:1249
#, gcc-internal-format
@@ -16044,7 +15950,7 @@ msgstr "æ ¼å¼å­—符串嵌有 %<\\0%>"
#: c-format.c:1485
#, gcc-internal-format
msgid "spurious trailing %<%%%> in format"
-msgstr "format 字符串尾有å¯ç–‘çš„ %<%%%>"
+msgstr "æ ¼å¼å­—符串尾有å¯ç–‘çš„ %<%%%>"
#: c-format.c:1529 c-format.c:1774
#, gcc-internal-format
@@ -16054,7 +15960,7 @@ msgstr "æ ¼å¼å­—符串中有é‡å¤çš„ %s"
#: c-format.c:1542
#, gcc-internal-format
msgid "missing fill character at end of strfmon format"
-msgstr ""
+msgstr "strfmon æ ¼å¼å­—符串末尾缺少填充字符"
#: c-format.c:1586 c-format.c:1688 c-format.c:1973 c-format.c:2038
#, gcc-internal-format
@@ -16084,7 +15990,7 @@ msgstr "%s ä¸æ”¯æŒ %qs %s 长度修饰符"
#: c-format.c:1808
#, gcc-internal-format
msgid "conversion lacks type at end of format"
-msgstr "format 字符串末尾的转æ¢ç¼ºå°‘类型"
+msgstr "æ ¼å¼å­—符串末尾的转æ¢ç¼ºå°‘类型"
#: c-format.c:1819
#, gcc-internal-format
@@ -16127,14 +16033,14 @@ msgid "%s ignored with %s in %s format"
msgstr "%s å’Œ %s 出现在 %s æ ¼å¼å­—符串中时被忽略"
#: c-format.c:1909
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "use of %s and %s together with %<%%%c%> %s format"
-msgstr "设置端å£ã€‚åªèƒ½å’Œ -nã€-cã€å’Œ -s åŒæ—¶ä½¿ç”¨"
+msgstr "åŒæ—¶ä½¿ç”¨ %s å’Œ %s,在 %<%%%c%> %s æ ¼å¼å­—符串中"
#: c-format.c:1913
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "use of %s and %s together in %s format"
-msgstr "ä¸èƒ½åŒæ—¶ä½¿ç”¨ mthreads å’Œ mlegacy-threads。"
+msgstr "åŒæ—¶ä½¿ç”¨ %s å’Œ %s,在 %s æ ¼å¼å­—符串中"
#: c-format.c:1932
#, gcc-internal-format
@@ -16155,7 +16061,7 @@ msgstr "%<%%[%> æ ¼å¼æ²¡æœ‰ç›¸åº”çš„ %<]%>"
#: c-format.c:1966
#, gcc-internal-format
msgid "use of %qs length modifier with %qc type character"
-msgstr ""
+msgstr "将 %qs 长度修饰符和%qc 类型字符一起使用"
#: c-format.c:1988
#, gcc-internal-format
@@ -16165,12 +16071,12 @@ msgstr "%s ä¸æ”¯æŒ %<%%%s%c%> %s æ ¼å¼"
#: c-format.c:2005
#, gcc-internal-format
msgid "operand number specified with suppressed assignment"
-msgstr ""
+msgstr "为格å¼å­—符串指定的æ“作数å·å–消了赋值"
#: c-format.c:2008
#, gcc-internal-format
msgid "operand number specified for format taking no argument"
-msgstr ""
+msgstr "为格å¼å­—符串指定的æ“作数å·ä¸å¸¦å‚æ•°"
#: c-format.c:2151
#, gcc-internal-format
@@ -16190,7 +16096,7 @@ msgstr "对常é‡å¯¹è±¡çš„写æ“作(å®žå‚ %d)"
#: c-format.c:2190
#, gcc-internal-format
msgid "extra type qualifiers in format argument (argument %d)"
-msgstr ""
+msgstr "æ ¼å¼å­—ç¬¦ä¸²å®žå‚ %d 有多余的类型é™å®š"
#: c-format.c:2301
#, gcc-internal-format
@@ -16255,7 +16161,7 @@ msgstr "strftime æ ¼å¼å­—符串无法格å¼åŒ–实å‚"
#: c-lex.c:254
#, gcc-internal-format
msgid "badly nested C headers from preprocessor"
-msgstr ""
+msgstr "预处ç†å™¨ç”Ÿæˆçš„嵌套 C 头 错误"
#: c-lex.c:302
#, gcc-internal-format
@@ -16369,9 +16275,9 @@ msgid "obsolete option -I- used, please use -iquote instead"
msgstr "使用了过时的选项 -I-,请改用 -iquote"
#: c-opts.c:489
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "argument %qs to %<-Wnormalized%> not recognized"
-msgstr "语言字符串 %<\"%E\"%> ä¸å¯è¯†åˆ«"
+msgstr "å®žå‚ %qs(给予 %<-Wnormalized%>)无法识别"
#: c-opts.c:573
#, gcc-internal-format
@@ -16451,7 +16357,7 @@ msgstr "è¦ç”Ÿæˆä¾èµ–项,您必须指定 -M 或 -MM"
#: c-opts.c:1428
#, gcc-internal-format
msgid "too late for # directive to set debug directory"
-msgstr ""
+msgstr "使用 # 指示设定调试目录太迟"
#: c-parser.c:969
#, gcc-internal-format
@@ -16529,7 +16435,7 @@ msgstr "需è¦ç±»å"
#: c-parser.c:1786 c-parser.c:5514
#, gcc-internal-format
msgid "extra semicolon in struct or union specified"
-msgstr ""
+msgstr "为结åˆæˆ–结构指定了多余的分å·"
#: c-parser.c:1808
#, gcc-internal-format
@@ -16569,7 +16475,7 @@ msgstr "为ä½æ®µä½¿ç”¨ %<typeof%> "
#: c-parser.c:2242
#, gcc-internal-format
msgid "expected identifier or %<(%>"
-msgstr "需è¦æ ‡è¯†ç¬¦æˆ–%<(%>"
+msgstr "需è¦æ ‡è¯†ç¬¦æˆ– %<(%>"
#: c-parser.c:2435
#, gcc-internal-format
@@ -16688,7 +16594,7 @@ msgstr "需è¦è¡¨è¾¾å¼"
#: c-parser.c:4842
#, gcc-internal-format
msgid "braced-group within expression allowed only inside a function"
-msgstr ""
+msgstr "表达å¼ä¸­çš„花括å·ç»„åªå…许出现在函数中"
#: c-parser.c:4856
#, gcc-internal-format
@@ -16711,9 +16617,9 @@ msgid "ISO C90 forbids compound literals"
msgstr "ISO C90 ä¸å…许å¤åˆå­—é¢å€¼"
#: c-parser.c:5725
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "extra semicolon in method definition specified"
-msgstr "(%qT 的定义末尾å¯èƒ½ç¼ºå°‘一个分å·)"
+msgstr "为方法定义指定了多余的分å·"
#: c-pch.c:132
#, gcc-internal-format
@@ -16748,12 +16654,12 @@ msgstr "æ— æ³•è¯»å– %s:%m"
#: c-pch.c:452
#, gcc-internal-format
msgid "malformed #pragma GCC pch_preprocess, ignored"
-msgstr ""
+msgstr "#pragma GCC pch_preprocess æ ¼å¼ä¸å¯¹ï¼Œå·²å¿½ç•¥"
#: c-pch.c:458
#, gcc-internal-format
msgid "pch_preprocess pragma should only be used with -fpreprocessed"
-msgstr ""
+msgstr "pch_preprocess pragma åªåº”与 -fpreprocessed 并用"
#: c-pch.c:459
#, gcc-internal-format
@@ -16828,7 +16734,7 @@ msgstr "%<#pragma pack%> 末尾有垃圾字符"
#: c-pragma.c:210
#, gcc-internal-format
msgid "#pragma pack has no effect with -fpack-struct - ignored"
-msgstr ""
+msgstr "指定了 -fpack-struct 时 #pragma pack 无效 - 已忽略"
#: c-pragma.c:230
#, gcc-internal-format
@@ -16838,7 +16744,7 @@ msgstr "对é½è¾¹ç•Œå¿…须是 2 的较å°æ¬¡æ–¹ï¼Œè€Œä¸æ˜¯ %d"
#: c-pragma.c:263
#, gcc-internal-format
msgid "applying #pragma weak %q+D after first use results in unspecified behavior"
-msgstr ""
+msgstr "在第一次使用åŽåº”用 #pragma weak %q+D 导致ä¸å¯é¢„知的åŽæžœ"
#: c-pragma.c:337 c-pragma.c:342
#, gcc-internal-format
@@ -16868,12 +16774,12 @@ msgstr "#pragma redefine_extname 在此目标机上ä¸å—支æŒ"
#: c-pragma.c:442 c-pragma.c:529
#, gcc-internal-format
msgid "#pragma redefine_extname ignored due to conflict with previous rename"
-msgstr ""
+msgstr "#pragma redefine_extname 因与先å‰çš„ rename 冲çªè€Œè¢«å¿½ç•¥"
#: c-pragma.c:465
#, gcc-internal-format
msgid "#pragma redefine_extname ignored due to conflict with previous #pragma redefine_extname"
-msgstr ""
+msgstr "#pragma redefine_extname 因与先å‰çš„ #pragma redefine_extname 冲çªè€Œè¢«å¿½ç•¥"
#: c-pragma.c:484
#, gcc-internal-format
@@ -16893,12 +16799,12 @@ msgstr "#pragma extern_prefix 在此目标机上ä¸å—支æŒ"
#: c-pragma.c:520
#, gcc-internal-format
msgid "asm declaration ignored due to conflict with previous rename"
-msgstr ""
+msgstr "asm 声明因与先å‰çš„ rename 冲çªè€Œè¢«å¿½ç•¥"
#: c-pragma.c:551
#, gcc-internal-format
msgid "#pragma redefine_extname ignored due to conflict with __asm__ declaration"
-msgstr ""
+msgstr "#pragma redefine_extname 因与 __asm__ declaration 冲çªè€Œè¢«å¿½ç•¥"
#: c-pragma.c:616
#, gcc-internal-format
@@ -16989,7 +16895,7 @@ msgstr "%qT 没有å为 %qE çš„æˆå‘˜"
#: c-typeck.c:1761
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
-msgstr ""
+msgstr "在éžç»“构或è”åˆä¸­è¯·æ±‚æˆå‘˜ %qE"
#: c-typeck.c:1792
#, gcc-internal-format
@@ -17107,7 +17013,7 @@ msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将作用无符å·æ•°ä¼ é€’"
#: c-typeck.c:2407
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
-msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将作为有符å·æ•°ä¼ æ’­"
+msgstr "æ ¹æ®åŽŸåž‹ï¼Œå®žå‚ %d (%qE) 将作为有符å·æ•°ä¼ é€’"
#: c-typeck.c:2497
#, gcc-internal-format
@@ -17197,7 +17103,7 @@ msgstr "ä¸èƒ½å¯¹è¯¥ç±»åž‹çš„实å‚求共轭"
#: c-typeck.c:2748
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
-msgstr ""
+msgstr "å•ç›® ! 的实å‚类型无效"
#: c-typeck.c:2785
#, gcc-internal-format
@@ -17292,12 +17198,12 @@ msgstr "无法å–å¾—ä½æ®µ %qD 的地å€"
#: c-typeck.c:3077
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
-msgstr ""
+msgstr "嵌套函数中使用了全局寄存器å˜é‡ %qD"
#: c-typeck.c:3080
#, gcc-internal-format
msgid "register variable %qD used in nested function"
-msgstr ""
+msgstr "嵌套函数中使用了寄存器å˜é‡ %qD"
#: c-typeck.c:3085
#, gcc-internal-format
@@ -17337,7 +17243,7 @@ msgstr "æ¡ä»¶è¡¨è¾¾å¼æŒ‡é’ˆç±»åž‹ä¸åŒ¹é…"
#: c-typeck.c:3222 c-typeck.c:3232
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
-msgstr ""
+msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­æŒ‡é’ˆ/整数类型ä¸åŒ¹é…"
#: c-typeck.c:3246
#, gcc-internal-format
@@ -17372,19 +17278,19 @@ msgstr "ISO C ä¸å…许转æ¢ä¸ºè”åˆç±»åž‹"
#: c-typeck.c:3361
#, gcc-internal-format
msgid "cast to union type from type not present in union"
-msgstr ""
+msgstr "类型转æ¢çš„æºç±»åž‹æœªå‡ºçŽ°åœ¨è”åˆä¸­"
#: c-typeck.c:3407
#, gcc-internal-format
msgid "cast adds new qualifiers to function type"
-msgstr ""
+msgstr "类型转æ¢ä¸ºå‡½æ•°ç±»åž‹æ·»åŠ äº†æ–°çš„é™å®š"
#. There are qualifiers present in IN_OTYPE that are not
#. present in IN_TYPE.
#: c-typeck.c:3412
#, gcc-internal-format
msgid "cast discards qualifiers from pointer target type"
-msgstr ""
+msgstr "类型转æ¢ä¸¢å¼ƒäº†æŒ‡é’ˆç›®æ ‡ç±»åž‹çš„é™å®š"
#: c-typeck.c:3428
#, gcc-internal-format
@@ -17439,7 +17345,7 @@ msgstr "ä¸èƒ½å°†å³å€¼ä¼ é€’给引用å‚æ•°"
#: c-typeck.c:3876 c-typeck.c:4044
#, gcc-internal-format
msgid "passing argument %d of %qE makes qualified function pointer from unqualified"
-msgstr ""
+msgstr "ä¼ é€’å®žå‚ %d(属于 %qE)从未é™å®šçš„函数指针构造了é™å®šçš„函数指针"
#: c-typeck.c:3879 c-typeck.c:4047
#, gcc-internal-format
@@ -17459,17 +17365,17 @@ msgstr "返回时将未é™å®šçš„函数指针赋给é™å®šçš„函数指针"
#: c-typeck.c:3889 c-typeck.c:4011
#, gcc-internal-format
msgid "passing argument %d of %qE discards qualifiers from pointer target type"
-msgstr ""
+msgstr "ä¼ é€’å®žå‚ %d(属于 %qE)丢弃了指针目标类型的é™å®š"
#: c-typeck.c:3891 c-typeck.c:4013
#, gcc-internal-format
msgid "assignment discards qualifiers from pointer target type"
-msgstr ""
+msgstr "赋值丢弃了指针目标类型的é™å®š"
#: c-typeck.c:3893 c-typeck.c:4015
#, gcc-internal-format
msgid "initialization discards qualifiers from pointer target type"
-msgstr ""
+msgstr "åˆå§‹åŒ–丢弃了指针目标类型的é™å®š"
#: c-typeck.c:3895 c-typeck.c:4017
#, gcc-internal-format
@@ -17629,7 +17535,7 @@ msgstr "传统 C ä¸æŽ¥å—自动的èšåˆåˆå§‹åŒ–"
#: c-typeck.c:4375 c-typeck.c:4390 c-typeck.c:4405
#, gcc-internal-format
msgid "(near initialization for %qs)"
-msgstr "(é è¿‘ %qs çš„åˆå§‹åŒ–)"
+msgstr "(在 %qs çš„åˆå§‹åŒ–附近)"
#: c-typeck.c:4942 cp/decl.c:4597
#, gcc-internal-format
@@ -17652,9 +17558,9 @@ msgid "jump into statement expression"
msgstr "跳转至语å¥è¡¨è¾¾å¼ä¸­"
#: c-typeck.c:6780
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "jump into scope of identifier with variably modified type"
-msgstr "<qt>如果使用了 <i>long long</i> 类型则给出警告</qt>"
+msgstr "跳至具有å¯å˜ç±»åž‹çš„标识符的作用域中"
#: c-typeck.c:6817
#, gcc-internal-format
@@ -17692,9 +17598,9 @@ msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr "在 ISO C 中,%<long%> 开关表达å¼ä¸è¢«è½¬æ¢ä¸º %<int%>"
#: c-typeck.c:7031
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "case label in statement expression not containing enclosing switch statement"
-msgstr "%<default%> æ ‡å·å‡ºçŽ°åœ¨æ²¡æœ‰ç›¸åº” switch 语å¥çš„语å¥è¡¨è¾¾å¼ä¸­"
+msgstr "case æ ‡å·å‡ºçŽ°åœ¨æ²¡æœ‰ switch 语å¥çš„语å¥è¡¨è¾¾å¼ä¸­"
#: c-typeck.c:7034
#, gcc-internal-format
@@ -17704,12 +17610,12 @@ msgstr "%<default%> æ ‡å·å‡ºçŽ°åœ¨æ²¡æœ‰ç›¸åº” switch 语å¥çš„语å¥è¡¨è¾¾å¼ä
#: c-typeck.c:7040
#, gcc-internal-format
msgid "case label in scope of identifier with variably modified type not containing enclosing switch statement"
-msgstr ""
+msgstr "case æ ‡å·å‡ºçŽ°åœ¨æ²¡æœ‰åŒ…å«çš„ switch 语å¥çš„å¯å˜ç±»åž‹æ ‡è¯†ç¬¦ä½œç”¨åŸŸä¸­"
#: c-typeck.c:7043
#, gcc-internal-format
msgid "%<default%> label in scope of identifier with variably modified type not containing enclosing switch statement"
-msgstr ""
+msgstr "%<default%> æ ‡å·å‡ºçŽ°åœ¨æ²¡æœ‰åŒ…å«çš„ switch 语å¥çš„å¯å˜ç±»åž‹æ ‡è¯†ç¬¦çš„作用域中"
#: c-typeck.c:7047 cp/parser.c:6185
#, gcc-internal-format
@@ -17834,17 +17740,17 @@ msgstr "比较无符å·æ•°å’Œå–ååŽåˆç»æå‡çš„无符å·æ•°"
#: c-typeck.c:8340
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
-msgstr ""
+msgstr "需è¦æ ‡é‡æ—¶ä½¿ç”¨äº†ä¸èƒ½è¢«è½¬æ¢ä¸ºæŒ‡é’ˆçš„数组"
#: c-typeck.c:8344
#, gcc-internal-format
msgid "used struct type value where scalar is required"
-msgstr ""
+msgstr "需è¦æ ‡é‡æ—¶ä½¿ç”¨äº†ç»“构类型"
#: c-typeck.c:8348
#, gcc-internal-format
msgid "used union type value where scalar is required"
-msgstr ""
+msgstr "需è¦æ ‡é‡æ—¶ä½¿ç”¨äº†è”åˆç±»åž‹"
#: calls.c:1929
#, gcc-internal-format
@@ -17854,12 +17760,12 @@ msgstr "函数调用有èšåˆç±»åž‹"
#: cfgexpand.c:1558
#, gcc-internal-format
msgid "not protecting local variables: variable length buffer"
-msgstr ""
+msgstr "没有ä¿æŠ¤å±€éƒ¨å˜é‡ï¼šå¯å˜é•¿åº¦çš„缓冲区"
#: cfgexpand.c:1560
#, gcc-internal-format
msgid "not protecting function: no buffer at least %d bytes long"
-msgstr ""
+msgstr "没有ä¿æŠ¤å‡½æ•°ï¼šæ²¡æœ‰è‡³å°‘有 %d 字节长的缓冲区"
#: cfghooks.c:90
#, gcc-internal-format
@@ -17867,34 +17773,34 @@ msgid "bb %d on wrong place"
msgstr "åŸºæœ¬å— %d ä½ç½®ä¸å¯¹"
#: cfghooks.c:96
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "prev_bb of %d should be %d, not %d"
-msgstr "循环 %d 的大å°åº”该为 %d,而ä¸æ˜¯%d。"
+msgstr "%d çš„ prev_bb 应该为 %d,而ä¸æ˜¯ %d"
#: cfghooks.c:113
#, gcc-internal-format
msgid "verify_flow_info: Wrong count of block %i %i"
-msgstr ""
+msgstr "verify_flow_infoï¼šå— %i %i 计数错"
#: cfghooks.c:119
#, gcc-internal-format
msgid "verify_flow_info: Wrong frequency of block %i %i"
-msgstr ""
+msgstr "verify_flow_infoï¼šå— %i %i 频率错"
#: cfghooks.c:127
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "verify_flow_info: Duplicate edge %i->%i"
-msgstr "verify_flow_sensitive_alias_info 失败。"
+msgstr "verify_flow_info:é‡å¤çš„è¾¹ %i->%i"
#: cfghooks.c:133
#, gcc-internal-format
msgid "verify_flow_info: Wrong probability of edge %i->%i %i"
-msgstr ""
+msgstr "verify_flow_info:边 %i->%i %i 概率错"
#: cfghooks.c:139
#, gcc-internal-format
msgid "verify_flow_info: Wrong count of edge %i->%i %i"
-msgstr ""
+msgstr "verify_flow_info:边 %i->%i %i 计数错"
#: cfghooks.c:151
#, gcc-internal-format
@@ -17904,7 +17810,7 @@ msgstr ""
#: cfghooks.c:165 cfgrtl.c:2045
#, gcc-internal-format
msgid "wrong amount of branch edges after unconditional jump %i"
-msgstr ""
+msgstr "éžæ¡ä»¶è·³è½¬ %i 之åŽçš„分支边数ä¸å¯¹"
#: cfghooks.c:173 cfghooks.c:184
#, gcc-internal-format
@@ -17914,7 +17820,7 @@ msgstr ""
#: cfghooks.c:185
#, gcc-internal-format
msgid "its dest_idx should be %d, not %d"
-msgstr ""
+msgstr "它的 dest_idx 应当是 %d 而ä¸æ˜¯ %d"
#: cfghooks.c:214
#, gcc-internal-format
@@ -18077,9 +17983,9 @@ msgid "wrong single exit %d->%d recorded for loop %d"
msgstr ""
#: cfgloop.c:1244
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "right exit is %d->%d"
-msgstr "å³è¾¹ Alt 键作 Compose"
+msgstr "å³é€€å‡ºä¸º %d->%d"
#: cfgloop.c:1261
#, gcc-internal-format
@@ -18087,9 +17993,9 @@ msgid "single exit not recorded for loop %d"
msgstr ""
#: cfgloop.c:1268
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "loop %d should not have single exit (%d -> %d)"
-msgstr "循环 %d ä¸åº”当åªæœ‰å•ä¸ªå‡ºå£ (%d -> %d)。"
+msgstr "循环 %d ä¸åº”当åªæœ‰å•ä¸ªå‡ºå£ (%d -> %d)"
#: cfgrtl.c:1931
#, gcc-internal-format
@@ -18114,7 +18020,7 @@ msgstr ""
#: cfgrtl.c:1987
#, gcc-internal-format
msgid "verify_flow_info: REG_BR_PROB does not match cfg %wi %i"
-msgstr ""
+msgstr "verify_flow_info:REG_BR_PROB ä¸åŒ¹é… cfg %wi %i"
#: cfgrtl.c:2002
#, gcc-internal-format
@@ -18137,9 +18043,9 @@ msgid "fallthru edge after unconditional jump %i"
msgstr ""
#: cfgrtl.c:2051
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "wrong amount of branch edges after conditional jump %i"
-msgstr "优先使用分支而ä¸æ˜¯æ¡ä»¶æ‰§è¡Œ"
+msgstr "æ¡ä»¶è·³è½¬ %i 之åŽçš„分支边数ä¸å¯¹"
#: cfgrtl.c:2056
#, gcc-internal-format
@@ -18184,7 +18090,7 @@ msgstr ""
#: cfgrtl.c:2183
#, fuzzy, gcc-internal-format
msgid "missing barrier after block %i"
-msgstr "%qs åŽç¼ºå°‘路径"
+msgstr "%qs åŽæ–­è¨€"
#: cfgrtl.c:2196
#, gcc-internal-format
@@ -18194,7 +18100,7 @@ msgstr ""
#: cfgrtl.c:2205
#, fuzzy, gcc-internal-format
msgid "verify_flow_info: Incorrect fallthru %i->%i"
-msgstr "verify_flow_sensitive_alias_info 失败。"
+msgstr "verify_flow_info:é‡å¤çš„è¾¹ %i->%i"
#: cfgrtl.c:2224
#, gcc-internal-format
@@ -18212,9 +18118,9 @@ msgid "%D renamed after being referenced in assembly"
msgstr ""
#: cgraphunit.c:664
-#, gcc-internal-format
+#, fuzzy, gcc-internal-format
msgid "aux field set for edge %s->%s"
-msgstr ""
+msgstr "为边 %d->%d åˆå§‹åŒ– AUX 指针"
#: cgraphunit.c:670
#, gcc-internal-format
@@ -18222,34 +18128,34 @@ msgid "Execution count is negative"
msgstr "执行次数为负"
#: cgraphunit.c:677
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "caller edge count is negative"
-msgstr "å³ç§»æ¬¡æ•°ä¸ºè´Ÿ"
+msgstr "调用边计数为负"
#: cgraphunit.c:686
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "inlined_to pointer is wrong"
-msgstr "下标è¿ç®—çš„å·¦æ“作数是函数指针"
+msgstr "inlined_to pointer 错误"
#: cgraphunit.c:691
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "multiple inline callers"
msgstr "多个内è”调用者"
#: cgraphunit.c:698
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "inlined_to pointer set for noninline callers"
-msgstr "下标è¿ç®—çš„å·¦æ“作数是函数指针"
+msgstr "为éžå†…è”的调用者设定了 inlined_to pointer"
#: cgraphunit.c:704
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "inlined_to pointer is set but no predecesors found"
-msgstr "下标è¿ç®—çš„å·¦æ“作数是函数指针"
+msgstr "设定了 inlined_to 指针å´æ‰¾ä¸åˆ°å‰é©±"
#: cgraphunit.c:709
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "inlined_to pointer refers to itself"
-msgstr "下标è¿ç®—çš„å·¦æ“作数是函数指针"
+msgstr "inlined_to pointer 指å‘自身"
#: cgraphunit.c:719
#, gcc-internal-format
@@ -18282,9 +18188,9 @@ msgid "verify_cgraph_node failed"
msgstr "verify_cgraph_node 失败"
#: cgraphunit.c:1028
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "failed to reclaim unneeded function"
-msgstr "内部调用PostMessage失败. "
+msgstr "无法收回ä¸éœ€è¦çš„函数"
#: cgraphunit.c:1308
#, gcc-internal-format
@@ -18422,14 +18328,14 @@ msgid "in %s, at %s:%d"
msgstr "在 %s 中,于 %s:%d"
#: dominance.c:855
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "dominator of %d status unknown"
-msgstr "???"
+msgstr "%d 的主导者状æ€æœªçŸ¥"
#: dominance.c:857
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "dominator of %d should be %d, not %d"
-msgstr "循环 %d 的大å°åº”该为 %d,而ä¸æ˜¯%d。"
+msgstr "%d 的主导者应该为 %d,而ä¸æ˜¯ %d"
#: dominance.c:869
#, gcc-internal-format
@@ -18474,7 +18380,7 @@ msgstr ""
#: except.c:2786
#, gcc-internal-format
msgid "argument of %<__builtin_eh_return_regno%> must be constant"
-msgstr ""
+msgstr "%<__builtin_eh_return_regno%> 的实å‚必须是常é‡"
#: except.c:2917
#, gcc-internal-format
@@ -18524,7 +18430,7 @@ msgstr "堆栈é™åˆ¶åœ¨æ­¤ç›®æ ‡æœºä¸Šä¸å—支æŒ"
#: fold-const.c:3328 fold-const.c:3339
#, gcc-internal-format
msgid "comparison is always %d due to width of bit-field"
-msgstr ""
+msgstr "由于ä½æ®µå®½åº¦æ‰€é™ï¼Œæ¯”较结果永远为 %d"
#: fold-const.c:4940 fold-const.c:4955
#, gcc-internal-format
@@ -18564,12 +18470,12 @@ msgstr "%<asm%> 中ä¸å¯èƒ½çš„约æŸ"
#: function.c:3478
#, gcc-internal-format
msgid "variable %q+D might be clobbered by %<longjmp%> or %<vfork%>"
-msgstr "å˜é‡ %q+D 原先的内容å¯èƒ½ä¸º %<longjmp%> 或 %<vfork%> 所破å"
+msgstr "å˜é‡ %q+D 能为 %<longjmp%> 或 %<vfork%> 所篡改"
#: function.c:3499
#, gcc-internal-format
msgid "argument %q+D might be clobbered by %<longjmp%> or %<vfork%>"
-msgstr "å®žå‚ %q+D 原先的内容å¯èƒ½ä¸º %<longjmp%> 或 %<vfork%> 所破å"
+msgstr "å®žå‚ %q+D å¯èƒ½ä¸º %<longjmp%> 或 %<vfork%> 所篡改"
#: function.c:3894
#, gcc-internal-format
@@ -18609,7 +18515,7 @@ msgstr "警告:忽略 -pipe,因为指定了 -save-temps"
#: gcc.c:4105
#, gcc-internal-format
msgid "warning: '-x %s' after last input file has no effect"
-msgstr ""
+msgstr "警告:出现在最åŽä¸€ä¸ªè¾“入文件åŽçš„‘-x %s’ä¸èµ·ä½œç”¨"
#. Catch the case where a spec string contains something like
#. '%{foo:%*}'. i.e. there is no * in the pattern on the left
@@ -18632,12 +18538,12 @@ msgstr "spec 错误:无法识别的 spec 选项‘%c’"
#: gcc.c:6188
#, gcc-internal-format
msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC"
-msgstr ""
+msgstr "spec 失败:SYSROOT_SUFFIX_SPEC å‚数多于一个"
#: gcc.c:6211
#, gcc-internal-format
msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC"
-msgstr ""
+msgstr "spec 失败:SYSROOT_HEADERS_SUFFIX_SPEC å‚数多于一个"
#: gcc.c:6300
#, gcc-internal-format
@@ -18765,9 +18671,9 @@ msgid "command line option \"%s\" is valid for %s but not for %s"
msgstr "命令行选项“%sâ€å¯¹ %s 是有效的,但对 %s 无效"
#: opts.c:315
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "command line option %qs is not supported by this configuration"
-msgstr "%s ä¸ä¸ºè¿™ä¸ªé…置所支æŒ"
+msgstr "æ­¤é…ç½®ä¸æ”¯æŒå‘½ä»¤è¡Œé€‰é¡¹ %qs"
#: opts.c:359
#, gcc-internal-format
@@ -18822,7 +18728,7 @@ msgstr "未知的 tls-model“%sâ€"
#: opts.c:1041
#, gcc-internal-format
msgid "-f[no-]force-mem is nop and option will be removed in 4.2"
-msgstr ""
+msgstr "-f[no-]force-mem 被忽略,此选项将在 4.2 中被删除"
#: opts.c:1064
#, gcc-internal-format
@@ -18903,7 +18809,7 @@ msgstr "è¾“å‡ºçº¦æŸ %d 必须指定å•ä¸ªå¯„存器"
#: reg-stack.c:536
#, gcc-internal-format
msgid "output constraint %d cannot be specified together with \"%s\" clobber"
-msgstr ""
+msgstr "è¾“å‡ºçº¦æŸ %d ä¸èƒ½åœ¨æŒ‡å®šâ€œ%sâ€ç¯¡æ”¹æ—¶è¢«æŒ‡å®š"
#: reg-stack.c:559
#, gcc-internal-format
@@ -18934,17 +18840,17 @@ msgstr "未知的寄存器å:%s"
#: regclass.c:791
#, gcc-internal-format
msgid "global register variable follows a function definition"
-msgstr ""
+msgstr "全局寄存器å˜é‡å‡ºçŽ°åœ¨å‡½æ•°å®šä¹‰åŽ"
#: regclass.c:795
#, gcc-internal-format
msgid "register used for two global register variables"
-msgstr ""
+msgstr "寄存器用作两个全局寄存器å˜é‡"
#: regclass.c:800
#, gcc-internal-format
msgid "call-clobbered register used for global register variable"
-msgstr ""
+msgstr "调用篡改寄存器用作全局寄存器å˜é‡"
#: regrename.c:1893
#, gcc-internal-format
@@ -18999,7 +18905,7 @@ msgstr "试图å‡å°‘局部å˜é‡çš„æ•°é‡"
#: reload1.c:1894
#, gcc-internal-format
msgid "can't find a register in class %qs while reloading %<asm%>"
-msgstr ""
+msgstr "é‡æ–°åŠ è½½ %<asm%> 时在类 %qs 中找ä¸åˆ°å¯„存器"
#: reload1.c:1899
#, gcc-internal-format
@@ -19072,9 +18978,9 @@ msgid "operand constraint contains incorrectly positioned %<+%> or %<=%>"
msgstr ""
#: stmt.c:362 stmt.c:461
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<%%%> constraint used with last operand"
-msgstr "å¯åŠ¨æ—¶æ‰“开上次使用的文档(&S)"
+msgstr "%<%%%> 约æŸç”¨äºŽæœ€åŽä¸€ä¸ªæ“作数"
#: stmt.c:381
#, gcc-internal-format
@@ -19089,7 +18995,7 @@ msgstr "输入æ“作数约æŸåŒ…å« %qc"
#: stmt.c:494
#, gcc-internal-format
msgid "matching constraint references invalid operand number"
-msgstr ""
+msgstr "匹é…的约æŸå¼•ç”¨äº†æ— æ•ˆçš„æ“作数å·"
#: stmt.c:532
#, gcc-internal-format
@@ -19099,12 +19005,12 @@ msgstr "约æŸä¸­å‡ºçŽ°æ— æ•ˆçš„标点 %qc"
#: stmt.c:556
#, gcc-internal-format
msgid "matching constraint does not allow a register"
-msgstr ""
+msgstr "匹é…的约æŸä¸å…许使用寄存器"
#: stmt.c:598
#, gcc-internal-format
msgid "asm-specifier for variable %qs conflicts with asm clobber list"
-msgstr ""
+msgstr "å˜é‡ %qs çš„ asm 指定与 asm 篡改列表冲çª"
#: stmt.c:686
#, gcc-internal-format
@@ -19114,7 +19020,7 @@ msgstr "%<asm%> 中出现未知的寄存器å %qs"
#: stmt.c:694
#, gcc-internal-format
msgid "PIC register %qs clobbered in %<asm%>"
-msgstr "PIC 寄存器 %qs 的值在 %<asm%> 中被改å˜"
+msgstr "PIC 寄存器 %qs 在 %<asm%> 中被篡改"
#: stmt.c:741
#, gcc-internal-format
@@ -19139,12 +19045,12 @@ msgstr ""
#: stmt.c:1040
#, gcc-internal-format
msgid "asm clobber conflict with output operand"
-msgstr "汇编副作用æ“作数与输出æ“作数冲çª"
+msgstr "汇编篡改列表与输出æ“作数冲çª"
#: stmt.c:1045
#, gcc-internal-format
msgid "asm clobber conflict with input operand"
-msgstr "汇编副作用æ“作数与输入æ“作数冲çª"
+msgstr "汇编篡改列表与输入æ“作数冲çª"
#: stmt.c:1122
#, gcc-internal-format
@@ -19184,7 +19090,7 @@ msgstr "类型大å°ä¸èƒ½è¢«æ˜¾å¼åœ°è®¡ç®—出"
#: stor-layout.c:151
#, gcc-internal-format
msgid "variable-size type declared outside of any function"
-msgstr "å˜é•¿ç±»åž‹åœ¨æ‰€æœ‰å‡½æ•°å¤–声明"
+msgstr "å˜é•¿ç±»åž‹çš„声明出现在所有函数之外"
#: stor-layout.c:455
#, gcc-internal-format
@@ -19239,9 +19145,9 @@ msgid "packed attribute is unnecessary"
msgstr "ä¸éœ€è¦ packed 属性"
#: stor-layout.c:1835
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "alignment of array elements is greater than element size"
-msgstr "%J%qD的对é½è¦æ±‚大于目标文件的最大对é½è¾¹ç•Œã€‚使用 %d"
+msgstr "数组元素的对é½è¾¹ç•Œæ¯”元素大å°è¿˜è¦å¤§"
#: targhooks.c:98
#, gcc-internal-format
@@ -19389,14 +19295,14 @@ msgid "-ffunction-sections may affect debugging on some targets"
msgstr "-ffunction-sections 在æŸäº›ç›®æ ‡æœºä¸Šå¯èƒ½ä¼šå½±å“调试"
#: toplev.c:1779
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "-fstack-protector not supported for this target"
-msgstr "-fspeculative-prefetching 在此目标机上ä¸å—支æŒ"
+msgstr "-fstack-protector 在此目标机上ä¸å—支æŒ"
#: toplev.c:1792
#, gcc-internal-format
msgid "unwind tables currently requires a frame pointer for correctness"
-msgstr ""
+msgstr "解绕表目å‰éœ€è¦å †æ ˆæ¡†æž¶æŒ‡é’ˆæ¥ä¿è¯æ­£ç¡®æ€§"
#: toplev.c:1897
#, gcc-internal-format
@@ -19454,19 +19360,19 @@ msgid "non-boolean used in condition"
msgstr "æ¡ä»¶è¡¨è¾¾å¼ä½¿ç”¨äº†éžå¸ƒå°”值"
#: tree-cfg.c:3245
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid conditional operand"
-msgstr "无效的æ“作数代ç â€˜%c’"
+msgstr "无效的æ¡ä»¶æ“作数"
#: tree-cfg.c:3300
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid reference prefix"
msgstr "无效的引用å‰ç¼€"
#: tree-cfg.c:3365
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "is not a valid GIMPLE statement"
-msgstr "ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ GIMPLE 语å¥ã€‚"
+msgstr "ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ GIMPLE 语å¥"
#: tree-cfg.c:3385
#, gcc-internal-format
@@ -19491,7 +19397,7 @@ msgstr ""
#: tree-cfg.c:3516 tree-cfg.c:3539
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
-msgstr ""
+msgstr "对树结节的共享ä¸æ­£ç¡®"
#: tree-cfg.c:3530
#, gcc-internal-format
@@ -19499,9 +19405,9 @@ msgid "bb_for_stmt (stmt) is set to a wrong basic block"
msgstr ""
#: tree-cfg.c:3548
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "verify_stmts failed"
-msgstr "verify_stmts 失败。"
+msgstr "verify_stmts 失败"
#: tree-cfg.c:3569
#, gcc-internal-format
@@ -19534,9 +19440,9 @@ msgid "label %s has incorrect context in bb %d"
msgstr ""
#: tree-cfg.c:3636
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "control flow in the middle of basic block %d"
-msgstr "NOTE_INSN_BASIC_BLOCK %d åœ¨åŸºæœ¬å— %d 中间"
+msgstr "åŸºæœ¬å— %d 中出现æµç¨‹æŽ§åˆ¶"
#: tree-cfg.c:3646
#, gcc-internal-format
@@ -19569,9 +19475,9 @@ msgid "%<else%> label does not match edge at end of bb %d"
msgstr "%<else%> æ ‡å·åœ¨åŸºæœ¬å— %d 结尾ä¸åŒ¹é…è¾¹"
#: tree-cfg.c:3719
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "explicit goto at end of bb %d"
-msgstr "åŸºæœ¬å— %d 末尾显å¼çš„ goto\n"
+msgstr "åŸºæœ¬å— %d 末尾显å¼çš„ goto"
#: tree-cfg.c:3749
#, gcc-internal-format
@@ -19594,9 +19500,9 @@ msgid "no default case found at end of case vector"
msgstr "case 矢é‡æœ«å°¾æ²¡æœ‰é»˜è®¤ case"
#: tree-cfg.c:3807
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "extra outgoing edge %d->%d"
-msgstr "下方边缘é¢æ¿"
+msgstr "多余的出边 %d->%d"
#: tree-cfg.c:3829
#, gcc-internal-format
@@ -19629,14 +19535,14 @@ msgid "ignoring unknown option %q.*s in %<-fdump-%s%>"
msgstr ""
#: tree-eh.c:1767
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "EH edge %i->%i is missing"
-msgstr "会è¯ç›®å½•ä¸ºç©º"
+msgstr "缺少 EH 边 %i->%i"
#: tree-eh.c:1772
#, gcc-internal-format
msgid "EH edge %i->%i miss EH flag"
-msgstr ""
+msgstr "EH 边 %i->%i 缺少 EH 标记"
#. ??? might not be mistake.
#: tree-eh.c:1778
@@ -19655,9 +19561,9 @@ msgid "BB %i last statement has incorrectly set region"
msgstr ""
#: tree-eh.c:1830
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "unnecessary EH edge %i->%i"
-msgstr "下方边缘é¢æ¿"
+msgstr "ä¸éœ€è¦çš„ EH è¾¹ %i->%i"
#: tree-inline.c:1373
#, gcc-internal-format
@@ -19862,9 +19768,9 @@ msgid "incoming edge count does not match number of PHI arguments"
msgstr ""
#: tree-ssa.c:327
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "PHI argument is missing for edge %d->%d"
-msgstr "å½¢å‚ %P (属于 %q+#D)缺少默认实å‚"
+msgstr "è¾¹ %d->%d 缺少 PHI å‚æ•°"
#: tree-ssa.c:336
#, gcc-internal-format
@@ -19874,7 +19780,7 @@ msgstr ""
#: tree-ssa.c:348
#, gcc-internal-format
msgid "wrong edge %d->%d for PHI argument"
-msgstr ""
+msgstr "PHI å‚æ•°è¾¹ %d->%d 错误"
#: tree-ssa.c:397
#, gcc-internal-format
@@ -19887,9 +19793,9 @@ msgid "addressable variable that is an alias tag but is not in any alias set"
msgstr ""
#: tree-ssa.c:423
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "verify_flow_insensitive_alias_info failed"
-msgstr "verify_flow_sensitive_alias_info 失败。"
+msgstr "verify_flow_sensitive_alias_info 失败"
#: tree-ssa.c:465
#, gcc-internal-format
@@ -19907,9 +19813,9 @@ msgid "pointer escapes but its name tag is not call-clobbered"
msgstr ""
#: tree-ssa.c:489
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "verify_flow_sensitive_alias_info failed"
-msgstr "verify_flow_sensitive_alias_info 失败。"
+msgstr "verify_flow_sensitive_alias_info 失败"
#: tree-ssa.c:566
#, gcc-internal-format
@@ -19927,9 +19833,9 @@ msgid "verify_name_tags failed"
msgstr "verify_name_tags 失败"
#: tree-ssa.c:685
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "AUX pointer initialized for edge %d->%d"
-msgstr "æˆå‘˜ %qD 缺少åˆå§‹å€¼è®¾å®š"
+msgstr "为边 %d->%d åˆå§‹åŒ– AUX 指针"
#: tree-ssa.c:708
#, gcc-internal-format
@@ -19956,12 +19862,12 @@ msgstr "verify_ssa 失败"
#: tree-ssa.c:1163
#, gcc-internal-format
msgid "%H%qD is used uninitialized in this function"
-msgstr ""
+msgstr "%H此函数中的 %qD 在使用å‰æœªåˆå§‹åŒ–"
#: tree-ssa.c:1201
#, gcc-internal-format
msgid "%H%qD may be used uninitialized in this function"
-msgstr ""
+msgstr "%H此函数中的 %qD 在使用å‰å¯èƒ½æœªåˆå§‹åŒ–"
#: tree-vect-transform.c:561
#, gcc-internal-format
@@ -20023,24 +19929,24 @@ msgid "function return type cannot be function"
msgstr "函数ä¸èƒ½è¿”回函数"
#: tree.c:5997
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
-msgstr "lang_* check:在 %s 中失败,于 %s:%d"
+msgstr "树检查:%s,得到 %s 在 %s,于 %s:%d"
#: tree.c:6034
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
-msgstr "RTL 检查:需è¦ä»£ç â€˜%s’,å´å¾—到‘%s’在 %s,于 %s:%d"
+msgstr "树检查:ä¸éœ€è¦ %s,得到 %s 在 %s,于 %s:%d"
#: tree.c:6047
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
-msgstr ""
+msgstr "树检查:需è¦ç±» %qs,得到 %qs(%s) 在 %s,于 %s:%d"
#: tree.c:6072
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "tree check: expected tree that contains %qs structure, have %qs in %s, at %s:%d"
-msgstr "RTL 检查:需è¦ä»£ç â€˜%s’,å´å¾—到‘%s’在 %s,于 %s:%d"
+msgstr "树检查:需è¦åŒ…å« %qs 结构的树,得到 %s 在 %s,于 %s:%d"
#: tree.c:6086
#, gcc-internal-format
@@ -20210,7 +20116,7 @@ msgstr ""
#: varray.c:207
#, gcc-internal-format
msgid "virtual array %s[%lu]: element %lu out of bounds in %s, at %s:%d"
-msgstr ""
+msgstr "虚数组 %s[%lu]:元素 %lu 越界,在 %s 中,于 %s:%d"
#: varray.c:217
#, gcc-internal-format
@@ -20292,7 +20198,7 @@ msgstr "%<#pragma align%> æ ¼å¼é”™è¯¯ - 已忽略"
#: config/sol2-c.c:103
#, gcc-internal-format
msgid "invalid alignment for %<#pragma align%>, ignoring"
-msgstr ""
+msgstr "%<#pragma align%> 指定的对é½è¾¹ç•Œæ— æ•ˆï¼Œå¿½ç•¥"
#: config/sol2-c.c:118
#, gcc-internal-format
@@ -20340,9 +20246,9 @@ msgid "junk at end of %<#pragma fini%>"
msgstr "%<#pragma fini%> 末尾有垃圾字符"
#: config/sol2.c:54
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "ignoring %<#pragma align%> for explicitly aligned %q+D"
-msgstr "%J为显å¼å¯¹é½çš„ %<%D%> 忽略 %<#pragma align%>"
+msgstr "为显å¼å¯¹é½çš„ %q+D 忽略 %<#pragma align%>"
#. Mach-O supports 'weak imports', and 'weak definitions' in coalesced
#. sections. machopic_select_section ensures that weak variables go in
@@ -20356,9 +20262,9 @@ msgstr ""
#. No profiling.
#: config/vx-common.h:83
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "profiler support for VxWorks"
-msgstr "对 WindISS çš„å–样支æŒ"
+msgstr "对 VxWorks çš„å–样支æŒ"
#: config/windiss.h:37
#, gcc-internal-format
@@ -20442,9 +20348,9 @@ msgstr "-mmemory-latency 开关的值 %qs 错误"
#: config/alpha/alpha.c:6551 config/alpha/alpha.c:6554 config/s390/s390.c:7796
#: config/s390/s390.c:7799
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "bad builtin fcode"
-msgstr "#pragma builtin æ ¼å¼é”™è¯¯"
+msgstr "错误的内建 fcode"
#: config/arc/arc.c:390
#, gcc-internal-format
@@ -20843,9 +20749,9 @@ msgstr ""
#. We don't want to use gcc_assert for everything, as that can be
#. compiled out.
#: config/cris/cris.h:44
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "CRIS-port assertion failed: "
-msgstr "åœ¨ç«¯å£ %1 上æ供连接失败。"
+msgstr "CRIS-port 断言错误:"
#. Node: Caller Saves
#. (no definitions)
@@ -20864,9 +20770,9 @@ msgid "Profiler support for CRX"
msgstr "对 CRX çš„å–样支æŒ"
#: config/crx/crx.h:366
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "Trampoline support for CRX"
-msgstr "对 CRX çš„å–样支æŒ"
+msgstr "对 CRX 的蹦床支æŒ"
#: config/frv/frv.c:8623
#, gcc-internal-format
@@ -21031,7 +20937,7 @@ msgstr "-mbranch-cost=%d ä¸åœ¨ 0 å’Œ 5 之间"
#: config/i386/i386.c:1535
#, gcc-internal-format
msgid "-mlarge-data-threshold=%d is negative"
-msgstr ""
+msgstr "-mlarge-data-threshold=%d 为负"
#: config/i386/i386.c:1547
#, gcc-internal-format
@@ -21071,7 +20977,7 @@ msgstr "-mfpmath= 开关的值(%s)错误"
#: config/i386/i386.c:1673
#, gcc-internal-format
msgid "unwind tables currently require either a frame pointer or -maccumulate-outgoing-args for correctness"
-msgstr ""
+msgstr "解å·è¡¨ç›®å‰éœ€è¦æ¡†æž¶æŒ‡é’ˆæˆ– -maccumulate-outgoing-args æ¥ä¿è¯æ­£ç¡®æ€§"
#: config/i386/i386.c:2034 config/i386/i386.c:2076
#, gcc-internal-format
@@ -21156,7 +21062,7 @@ msgstr "扩展的寄存器没有高åŠéƒ¨åˆ†"
#: config/i386/i386.c:6938
#, gcc-internal-format
msgid "unsupported operand size for extended register"
-msgstr ""
+msgstr "扩展的寄存器ä¸æ”¯æŒçš„æ“作数大å°"
#: config/i386/i386.c:15193 config/rs6000/rs6000.c:7128
#, gcc-internal-format
@@ -21176,7 +21082,7 @@ msgstr "%qs 忽略ä¸å…¼å®¹çš„属性"
#: config/i386/winnt-cxx.c:74
#, gcc-internal-format
msgid "key method %q+D of dllimport'd class defined"
-msgstr ""
+msgstr "定义了 dllimport 的类的关键方法 %q+D"
#: config/i386/winnt-cxx.c:95 config/sh/symbian.c:173
#, gcc-internal-format
@@ -21251,7 +21157,7 @@ msgstr "%Jä¸èƒ½ä¸ºå‡½æ•°æŒ‡å®šåœ°å€åŒºåŸŸå±žæ€§"
#: config/ia64/ia64.c:5023 config/pa/pa.c:327
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
-msgstr ""
+msgstr "-mfixed-range 值必须有“寄存器1-寄存器2â€çš„å½¢å¼"
#: config/ia64/ia64.c:5050 config/pa/pa.c:354
#, gcc-internal-format
@@ -21296,29 +21202,29 @@ msgstr "PRINT_OPERAND:未知的标点‘%c’"
#: config/iq2000/iq2000.c:3056 config/mips/mips.c:5390
#: config/xtensa/xtensa.c:1627
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "PRINT_OPERAND null pointer"
-msgstr "PRINT_OPERAND_ADDRESS,空指针"
+msgstr "PRINT_OPERAND 空指针"
#: config/m32c/m32c-pragma.c:64
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "junk at end of #pragma GCC memregs [0..16]"
-msgstr "#pragma %s 末尾有垃圾字符"
+msgstr "#pragma GCC memregs [0..16] 末尾有垃圾字符"
#: config/m32c/m32c-pragma.c:71
#, gcc-internal-format
msgid "#pragma GCC memregs must precede any function decls"
-msgstr ""
+msgstr "#pragma GCC memregs 必须出现在所有函数声明之å‰"
#: config/m32c/m32c-pragma.c:82 config/m32c/m32c-pragma.c:89
#, gcc-internal-format
msgid "#pragma GCC memregs takes a number [0..16]"
-msgstr ""
+msgstr "#pragma GCC memregs éœ€è¦ [0..16] 范围内的数"
#: config/m32c/m32c.c:412
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid target memregs value '%d'"
-msgstr "无效的目标值ï¼"
+msgstr "无效的目标 memregs 值‘%d’"
#: config/m68hc11/m68hc11.c:279
#, gcc-internal-format
@@ -21338,7 +21244,7 @@ msgstr "å·²ç»ä½¿ç”¨äº† %<trap%> 属性"
#: config/m68k/m68k.c:321
#, gcc-internal-format
msgid "cannot specify both -msep-data and -mid-shared-library"
-msgstr ""
+msgstr "ä¸èƒ½åŒæ—¶æŒ‡å®š -msep-data å’Œ -mid-shared-library"
#: config/m68k/m68k.c:333
#, gcc-internal-format
@@ -21348,12 +21254,12 @@ msgstr "-fPIC ç›®å‰åœ¨ 68000 å’Œ 68010 上ä¸å—支æŒ"
#: config/m68k/m68k.c:640 config/rs6000/rs6000.c:13614
#, gcc-internal-format
msgid "stack limit expression is not supported"
-msgstr ""
+msgstr "ä¸æ”¯æŒå †æ ˆé™åˆ¶è¡¨è¾¾å¼"
#: config/mips/mips.c:4584
#, gcc-internal-format
msgid "-%s conflicts with the other architecture options, which specify a %s processor"
-msgstr ""
+msgstr "-%s 与指定了 %s 处ç†å™¨çš„其他架构选项冲çª"
#: config/mips/mips.c:4600
#, gcc-internal-format
@@ -21384,7 +21290,7 @@ msgstr "ä¸æ”¯æŒçš„组åˆï¼š%s"
#: config/mips/mips.c:4715
#, gcc-internal-format
msgid "generation of Branch Likely instructions enabled, but not supported by architecture"
-msgstr ""
+msgstr "ç”Ÿæˆ Branch Likely 指令被å¯ç”¨ï¼Œä½†å¹¶ä¸ä¸ºæž¶æž„所支æŒ"
#: config/mips/mips.c:4732
#, gcc-internal-format
@@ -21407,9 +21313,9 @@ msgid "-mips3d/-mpaired-single must be used with -mips64"
msgstr "-mips3d/-mpaired-single 必须与 -mips64 一起使用"
#: config/mips/mips.c:4816
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "-mips16 and -mdsp cannot be used together"
-msgstr "-msoft-float å’Œ -mhard_float ä¸èƒ½ä¸€èµ·ä½¿ç”¨"
+msgstr "-mips16 å’Œ -mdsp ä¸èƒ½ä¸€èµ·ä½¿ç”¨"
#: config/mips/mips.c:5327
#, gcc-internal-format
@@ -21447,9 +21353,9 @@ msgid "the cpu name must be lower case"
msgstr "cpu å必须是å°å†™"
#: config/mips/mips.c:10209
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid argument to builtin function"
-msgstr "%<__builtin_frame_address%> 的实å‚无效"
+msgstr "给内建函数的实å‚无效"
#. Output assembler code to FILE to increment profiler label # LABELNO
#. for profiling a function entry.
@@ -21510,9 +21416,9 @@ msgid "MMIX Internal: %s is not a shiftable int"
msgstr "MMIX 内部错误:%s ä¸æ˜¯ä¸€ä¸ªå¯ç§»ä½çš„æ•´æ•°"
#: config/ms1/ms1.c:315
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "info pointer NULL"
-msgstr "空指针å‚æ•°"
+msgstr "info 指针为 NULL"
#: config/pa/pa.c:459
#, gcc-internal-format
@@ -21604,14 +21510,14 @@ msgid "junk at end of #pragma longcall"
msgstr "#pragma longcall 末尾有垃圾字符"
#: config/rs6000/rs6000-c.c:2530
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "passing arg %d of %qE discards qualifiers frompointer target type"
-msgstr "传递å‚æ•° %d (属于 %qE)时将指针赋给整数,未作类型转æ¢"
+msgstr "传递å‚æ•° %d (属于 %qE)时丢弃了指针目标类型的类型é™å®š"
#: config/rs6000/rs6000-c.c:2573
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid parameter combination for AltiVec intrinsic"
-msgstr "此指令中寄存器无效"
+msgstr "对 AltiVec 内建函数æ¥è¯´æ— æ•ˆçš„å‚数组åˆ"
#: config/rs6000/rs6000.c:1250
#, gcc-internal-format
@@ -21631,7 +21537,7 @@ msgstr "未知的 -mdebug-%s 开关"
#: config/rs6000/rs6000.c:1283
#, gcc-internal-format
msgid "unknown -mtraceback arg %qs; expecting %<full%>, %<partial%> or %<none%>"
-msgstr ""
+msgstr "未知的 -mtraceback å‚æ•° %qsï¼›éœ€è¦ %<full%>ã€%<partial%> 或 %<none%>"
#: config/rs6000/rs6000.c:1324
#, gcc-internal-format
@@ -21664,9 +21570,9 @@ msgid "unknown ABI specified: '%s'"
msgstr "指定了未知的 ABI:‘%s’"
#: config/rs6000/rs6000.c:1805
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid option for -mfloat-gprs: '%s'"
-msgstr "-mfloat-gprs 的选项无效"
+msgstr "-mfloat-gprs 的选项无效:‘%s’"
#: config/rs6000/rs6000.c:1815
#, gcc-internal-format
@@ -21721,7 +21627,7 @@ msgstr "__builtin_altivec_predicate 的第一个实å‚必须是常é‡"
#: config/rs6000/rs6000.c:6738
#, gcc-internal-format
msgid "argument 1 of __builtin_altivec_predicate is out of range"
-msgstr ""
+msgstr "__builtin_altivec_predicate 的第 1 个实å‚越界"
#: config/rs6000/rs6000.c:6900
#, gcc-internal-format
@@ -21751,7 +21657,7 @@ msgstr "__builtin_spe_predicate 的第一个实å‚必须是常é‡"
#: config/rs6000/rs6000.c:7631
#, gcc-internal-format
msgid "argument 1 of __builtin_spe_predicate is out of range"
-msgstr ""
+msgstr "__builtin_spe_predicate 的第 1 个实å‚越界"
#: config/rs6000/rs6000.c:13577
#, gcc-internal-format
@@ -22021,17 +21927,17 @@ msgstr "%qs 属性的å‚æ•°ä¸æ˜¯ä¸€ä¸ªæ•´åž‹å¸¸é‡"
#: config/sh/sh.c:9655
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
-msgstr ""
+msgstr "r0 需è¦ç”¨ä½œè°ƒç”¨ç¯¡æ”¹çš„寄存器"
#: config/sh/sh.c:9676
#, gcc-internal-format
msgid "Need a second call-clobbered general purpose register"
-msgstr "需è¦å¦ä¸€ä¸ªå°†ä¸ºè°ƒç”¨æ‰€æ”¹å†™çš„通用寄存器"
+msgstr "需è¦å¦ä¸€ä¸ªè°ƒç”¨ç¯¡æ”¹çš„通用寄存器"
#: config/sh/sh.c:9684
#, gcc-internal-format
msgid "Need a call-clobbered target register"
-msgstr "需è¦ä¸€ä¸ªå°†ä¸ºè°ƒç”¨æ‰€æ”¹å†™çš„通用寄存器"
+msgstr "需è¦ä¸€ä¸ªè°ƒç”¨ç¯¡æ”¹çš„通用寄存器"
#: config/sh/symbian.c:147
#, gcc-internal-format
@@ -22060,9 +21966,9 @@ msgstr "lang_* check:在 %s 中失败,于 %s:%d"
#. FIXME
#: config/sh/netbsd-elf.h:95
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "unimplemented-shmedia profiling"
-msgstr "调试åŠæ€§èƒ½æµ‹è¯•"
+msgstr "未实现 - shmedia å–æ ·"
#. There are no delay slots on SHmedia.
#. Relaxation isn't yet supported for SHmedia
@@ -22082,7 +21988,7 @@ msgstr "å–样优化在此目标机上ä»åªå±žè¯•éªŒæ€§è´¨"
#: config/sh/sh.h:676
#, gcc-internal-format
msgid "ignoring -fschedule-insns because of exception handling bug"
-msgstr ""
+msgstr "忽略 -fschedule-insns 以绕开异常处ç†çš„缺陷"
#: config/sparc/sparc.c:635
#, gcc-internal-format
@@ -22142,12 +22048,12 @@ msgstr "__BELOW100__ 属性ä¸å…许用于自动存储类"
#: config/v850/v850-c.c:67
#, gcc-internal-format
msgid "#pragma GHS endXXXX found without previous startXXX"
-msgstr ""
+msgstr "#pragma GHS endXXXX å‰æ²¡æœ‰ startXXX"
#: config/v850/v850-c.c:70
#, gcc-internal-format
msgid "#pragma GHS endXXX does not match previous startXXX"
-msgstr ""
+msgstr "#pragma GHS endXXX 与先å‰çš„ startXXX ä¸åŒ¹é…"
#: config/v850/v850-c.c:96
#, gcc-internal-format
@@ -22262,7 +22168,7 @@ msgstr "è¦å‡†å¤‡å¤ªå¤šçš„堆栈空间:%d"
#: config/xtensa/xtensa.c:1505
#, gcc-internal-format
msgid "boolean registers required for the floating-point option"
-msgstr ""
+msgstr "浮点选项需è¦å¸ƒå°”寄存器"
#: config/xtensa/xtensa.c:1551
#, gcc-internal-format
@@ -22394,7 +22300,7 @@ msgstr "ISO C ä¸å…许çœç•¥ ?: 表达å¼ä¸­çš„第二项"
#: cp/call.c:3242
#, gcc-internal-format
msgid "%qE has type %<void%> and is not a throw-expression"
-msgstr ""
+msgstr "%qE 类型为 %<void%>,ä¸æ˜¯ä¸€ä¸ª throw 表达å¼"
#: cp/call.c:3281 cp/call.c:3491
#, gcc-internal-format
@@ -22404,7 +22310,7 @@ msgstr "?: çš„æ“作数有ä¸åŒçš„类型"
#: cp/call.c:3445
#, gcc-internal-format
msgid "enumeral mismatch in conditional expression: %qT vs %qT"
-msgstr ""
+msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­æžšä¸¾ä¸åŒ¹é…:%qT 对 %qT"
#: cp/call.c:3452
#, gcc-internal-format
@@ -22444,7 +22350,7 @@ msgstr "%q+#D 无法访问"
#: cp/call.c:4100
#, gcc-internal-format
msgid "within this context"
-msgstr "在当å‰ä¸Šä¸‹æ–‡ä¸­"
+msgstr "在此上下文中"
#: cp/call.c:4189 cp/cvt.c:264
#, gcc-internal-format
@@ -22505,7 +22411,7 @@ msgstr "ä¸èƒ½é€šè¿‡ %<...%> 接å—有éžç®€å•æ—§æ•°æ®ç±»åž‹ %q#T 的对象;
#: cp/call.c:4545
#, gcc-internal-format
msgid "the default argument for parameter %d of %qD has not yet been parsed"
-msgstr ""
+msgstr "å‚æ•° %d(属于 %qD)尚未被解æžåˆ°"
#: cp/call.c:4624
#, gcc-internal-format
@@ -22515,7 +22421,7 @@ msgstr "函数的实å‚å¯èƒ½æ˜¯ format 属性的备选"
#: cp/call.c:4761
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
-msgstr ""
+msgstr "å°† %qT 作为 %q#D çš„ %<this%> 实å‚时丢弃了类型é™å®š"
#: cp/call.c:4780
#, gcc-internal-format
@@ -22585,17 +22491,17 @@ msgstr "ä¸èƒ½å°† %qE 转æ¢ä¸º %qT"
#: cp/call.c:6488
#, gcc-internal-format
msgid "invalid initialization of non-const reference of type %qT from a temporary of type %qT"
-msgstr ""
+msgstr "将类型为 %qT çš„éž const 引用åˆå§‹åŒ–为类型为 %qT 的临时å˜é‡æ— æ•ˆ"
#: cp/call.c:6492
#, gcc-internal-format
msgid "invalid initialization of reference of type %qT from expression of type %qT"
-msgstr ""
+msgstr "将类型为 %qT 的引用åˆå§‹åŒ–为类型为 %qT 的表达å¼æ— æ•ˆ"
#: cp/class.c:277
#, gcc-internal-format
msgid "cannot convert from base %qT to derived type %qT via virtual base %qT"
-msgstr ""
+msgstr "无法从基类 %qT 转æ¢åˆ°æ´¾ç”Ÿç±» %qT,通过虚基类 %qT"
#: cp/class.c:933
#, gcc-internal-format
@@ -22751,7 +22657,7 @@ msgstr "有拷è´èµ‹å€¼è¿ç®—符的æˆå‘˜ %q+#D ä¸èƒ½ç”¨åœ¨è”åˆä¸­"
#: cp/class.c:2740
#, gcc-internal-format
msgid "multiple fields in union %qT initialized"
-msgstr ""
+msgstr "åˆå§‹åŒ–了è”åˆ %qT 中的多个字段"
#: cp/class.c:2802
#, gcc-internal-format
@@ -22826,7 +22732,7 @@ msgstr "空基类 %qT çš„å移é‡å¯èƒ½ä¸Ž ABI ä¸å…¼å®¹ï¼Œå¹¶ä¸”å¯èƒ½åœ¨ GCC
#: cp/class.c:3592
#, gcc-internal-format
msgid "class %qT will be considered nearly empty in a future version of GCC"
-msgstr ""
+msgstr "在 GCC 的未æ¥ç‰ˆæœ¬ä¸­ç±» %qT 将被看作几乎为空"
#: cp/class.c:3674
#, gcc-internal-format
@@ -22888,7 +22794,7 @@ msgstr "%q#T 有虚函数å´æ²¡æœ‰è™šæžæž„函数"
#: cp/class.c:5157
#, gcc-internal-format
msgid "trying to finish struct, but kicked out due to previous parse errors"
-msgstr ""
+msgstr "试图完æˆç»“构,但为先å‰çš„解æžé”™è¯¯æ‰€ä¸­æ–­"
#: cp/class.c:5574
#, gcc-internal-format
@@ -22898,17 +22804,17 @@ msgstr "语言字符串 %<\"%E\"%> ä¸å¯è¯†åˆ«"
#: cp/class.c:5660
#, gcc-internal-format
msgid "cannot resolve overloaded function %qD based on conversion to type %qT"
-msgstr ""
+msgstr "无法解æžé‡è½½å‡½æ•° %qD,基于å‘类型 %qT 的转æ¢"
#: cp/class.c:5787
#, gcc-internal-format
msgid "no matches converting function %qD to type %q#T"
-msgstr ""
+msgstr "没有å¯å°†å‡½æ•° %qD 转æ¢åˆ°ç±»åž‹ %q#T 的匹é…项"
#: cp/class.c:5810
#, gcc-internal-format
msgid "converting overloaded function %qD to type %q#T is ambiguous"
-msgstr ""
+msgstr "å°†é‡è½½å‡½æ•° %qD 转æ¢ä¸ºç±»åž‹ %q#T 有歧义"
#: cp/class.c:5836
#, gcc-internal-format
@@ -22928,7 +22834,7 @@ msgstr "类型信æ¯ä¸å……分"
#: cp/class.c:5901
#, gcc-internal-format
msgid "argument of type %qT does not match %qT"
-msgstr "类型为 %qT 的实å‚与 %qT ä¸åŒ¹é…"
+msgstr "实å‚类型为 %qT,与 %qT ä¸åŒ¹é…"
#: cp/class.c:6051
#, gcc-internal-format
@@ -22948,7 +22854,7 @@ msgstr "%q#D 的声明"
#: cp/class.c:6289
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
-msgstr "改å˜äº† %qD çš„æ„义,从 %q+#D"
+msgstr "改å˜äº† %qD çš„åŽŸæ„ %q+#D"
#: cp/cp-gimplify.c:120
#, gcc-internal-format
@@ -23013,7 +22919,7 @@ msgstr "需è¦æµ®ç‚¹æ•°å€¼æ—¶ä½¿ç”¨äº† %q#T"
#: cp/cvt.c:773
#, gcc-internal-format
msgid "conversion from %qT to non-scalar type %qT requested"
-msgstr ""
+msgstr "请求从 %qT 转æ¢åˆ°éžæ ‡é‡ç±»åž‹ %qT"
#: cp/cvt.c:807
#, gcc-internal-format
@@ -23023,17 +22929,17 @@ msgstr "伪æžæž„函数未被调用"
#: cp/cvt.c:866
#, gcc-internal-format
msgid "object of incomplete type %qT will not be accessed in %s"
-msgstr ""
+msgstr "具有ä¸å®Œå…¨ç±»åž‹ %qT 的对象ä¸ä¼šåœ¨ %s 中被访问"
#: cp/cvt.c:869
#, gcc-internal-format
msgid "object of type %qT will not be accessed in %s"
-msgstr ""
+msgstr "类型为 %qT 的对象ä¸ä¼šåœ¨ %s 中被访问"
#: cp/cvt.c:885
#, gcc-internal-format
msgid "object %qE of incomplete type %qT will not be accessed in %s"
-msgstr ""
+msgstr "对象 %qE 具有ä¸å®Œå…¨çš„类型 %qT,ä¸ä¼šåœ¨ %s 中被访问"
#. [over.over] enumerates the places where we can take the address
#. of an overloaded function, and this is not one of them.
@@ -23468,7 +23374,7 @@ msgstr "ISO C++ ä¸å…许将 %<%T::%D%> 定义为 %<%T::%D%>"
#: cp/decl.c:3764
#, gcc-internal-format
msgid "template header not allowed in member definition of explicitly specialized class"
-msgstr ""
+msgstr "模æ¿å¤´ä¸å…许出现在显å¼ç‰¹ä¾‹åŒ–类的æˆå‘˜å®šä¹‰ä¸­"
#: cp/decl.c:3773
#, gcc-internal-format
@@ -23656,12 +23562,12 @@ msgstr "%qD ä¸èƒ½ç”±ä¸€ä¸ªå£°æ˜Žæ—¶éžå¸¸é‡çš„表达å¼åˆå§‹åŒ–"
#: cp/decl.c:5584
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
-msgstr ""
+msgstr "其他类 %qT çš„æžæž„函数ä¸èƒ½ç”¨ä½œæˆå‘˜"
#: cp/decl.c:5586
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
-msgstr ""
+msgstr "其他类 %qT 的构造函数ä¸èƒ½ç”¨ä½œæˆå‘˜"
#: cp/decl.c:5607
#, gcc-internal-format
@@ -23702,12 +23608,12 @@ msgstr "在å‹å…ƒå£°æ˜Žä¸­å®šä¹‰æ˜¾å¼ç‰¹ä¾‹åŒ– %qD"
#: cp/decl.c:5725
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
-msgstr "在首è¦æ¨¡æ¿çš„声明中对模æ¿æ ‡è¯†ç¬¦ %qD 的使用无效"
+msgstr "在基本模æ¿çš„声明中对模æ¿æ ‡è¯†ç¬¦ %qD 的使用无效"
#: cp/decl.c:5755
#, gcc-internal-format
msgid "default arguments are not allowed in declaration of friend template specialization %qD"
-msgstr ""
+msgstr "å‹å…ƒæ¨¡æ¿ç‰¹ä¾‹åŒ– %qD 中ä¸å…许出现默认å‚æ•°"
#: cp/decl.c:5763
#, gcc-internal-format
@@ -23742,7 +23648,7 @@ msgstr "éžå±€éƒ¨å‡½æ•° %q#D 使用匿å类型"
#: cp/decl.c:5851 cp/decl.c:6121
#, gcc-internal-format
msgid "%q+#D does not refer to the unqualified type, so it is not used for linkage"
-msgstr ""
+msgstr "%q+#D 未指明éžé™å®šç±»åž‹ï¼Œæ‰€ä»¥å®ƒä¸è¢«ç”¨ä½œå¤–部链接"
#: cp/decl.c:5857
#, gcc-internal-format
@@ -23752,7 +23658,7 @@ msgstr "éžå±€éƒ¨å‡½æ•° %q#D 使用了局部类型 %qT"
#: cp/decl.c:5880
#, gcc-internal-format
msgid "%smember function %qD cannot have cv-qualifier"
-msgstr ""
+msgstr "%sæˆå‘˜å‡½æ•° %qD ä¸èƒ½æ‹¥æœ‰ cv é™å®šç¬¦"
#: cp/decl.c:5949
#, gcc-internal-format
@@ -23781,7 +23687,7 @@ msgstr "éžå±€éƒ¨å˜é‡ %q#D 使用了局部类型 %qT"
#: cp/decl.c:6244
#, gcc-internal-format
msgid "invalid in-class initialization of static data member of non-integral type %qT"
-msgstr ""
+msgstr "类中对具有éžæ•´æ•°ç±»åž‹ %qT çš„é™æ€æ•°æ®æˆå‘˜çš„åˆå§‹åŒ–无效"
#: cp/decl.c:6254
#, gcc-internal-format
@@ -23796,7 +23702,7 @@ msgstr "ISO C++ ä¸å…许åˆå§‹åŒ–æˆå‘˜å¸¸é‡ %qD,因为它有éžæ•´æ•°çš„ç±»
#: cp/decl.c:6278
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
-msgstr ""
+msgstr "数组 %qD 的大å°å…·æœ‰éžæ•´æ•°ç±»åž‹ %qT"
#: cp/decl.c:6280
#, gcc-internal-format
@@ -23826,12 +23732,12 @@ msgstr "ISO C++ ä¸å…许大å°ä¸º 0 的数组"
#: cp/decl.c:6335
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
-msgstr ""
+msgstr "数组 %qD 的大å°ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸è¡¨è¾¾å¼"
#: cp/decl.c:6338
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
-msgstr ""
+msgstr "数组大å°ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸è¡¨è¾¾å¼"
#: cp/decl.c:6343
#, gcc-internal-format
@@ -23861,12 +23767,12 @@ msgstr "创建 %s"
#: cp/decl.c:6463
#, gcc-internal-format
msgid "declaration of %qD as multidimensional array must have bounds for all dimensions except the first"
-msgstr ""
+msgstr "多维数组 %qD 的声明必须至少指定除第一维以外所有维的大å°"
#: cp/decl.c:6467
#, gcc-internal-format
msgid "multidimensional array must have bounds for all dimensions except the first"
-msgstr ""
+msgstr "声明多维数组必须至少指定除第一维以外所有维的大å°"
#: cp/decl.c:6502
#, gcc-internal-format
@@ -23921,7 +23827,7 @@ msgstr "%qD 未声明为æˆå‘˜"
#: cp/decl.c:6767
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
-msgstr ""
+msgstr "缺少声明标识符:使用了ä¿ç•™å­— %qD"
#: cp/decl.c:6856
#, gcc-internal-format
@@ -23991,7 +23897,7 @@ msgstr "%<operator %T%> 的声明中ä¸èƒ½ä½¿ç”¨é™å®šç¬¦"
#: cp/decl.c:7108 cp/typeck.c:6605
#, gcc-internal-format
msgid "ignoring %qV qualifiers added to function type %qT"
-msgstr ""
+msgstr "忽略 %qV é™å®šç¬¦ï¼Œåœ¨å‡½æ•°ç±»åž‹ %qT 上"
#: cp/decl.c:7131
#, gcc-internal-format
@@ -24132,12 +24038,12 @@ msgstr "无法声明æˆå‘˜ %<%T::%s%>,在 %qT 中"
#: cp/decl.c:7676
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
-msgstr ""
+msgstr "æ•°æ®æˆå‘˜ä¸èƒ½å…·æœ‰å¯å˜ç±»åž‹ %qT"
#: cp/decl.c:7678
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
-msgstr ""
+msgstr "å‚æ•°ä¸èƒ½å…·æœ‰å¯å˜ç±»åž‹ %qT"
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
@@ -24174,7 +24080,7 @@ msgstr "å¸¸é‡ %qs ä¸èƒ½è¢«å£°æ˜Žä¸º %<mutable%>"
#: cp/decl.c:7735
#, gcc-internal-format
msgid "%Jtypedef name may not be a nested-name-specifier"
-msgstr ""
+msgstr "%Jtypedef åä¸èƒ½æ˜¯åµŒå¥—å指定"
#: cp/decl.c:7751
#, gcc-internal-format
@@ -24184,12 +24090,12 @@ msgstr "ISO C++ ä¸å…许嵌类的类型 %qD 与其所属的类é‡å"
#: cp/decl.c:7850
#, gcc-internal-format
msgid "qualified function types cannot be used to declare %s functions"
-msgstr ""
+msgstr "é™å®šçš„函数类型ä¸èƒ½ç”¨æ¥å£°æ˜Ž %s 函数"
#: cp/decl.c:7876
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
-msgstr ""
+msgstr "为å‹å…ƒç±»å£°æ˜ŽæŒ‡å®šäº†ç±»åž‹é™å®š"
#: cp/decl.c:7881
#, gcc-internal-format
@@ -24219,7 +24125,7 @@ msgstr "试图让 %qT æˆä¸ºå…¨å±€åŸŸçš„å‹å…ƒ"
#: cp/decl.c:7919
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
-msgstr ""
+msgstr "éžæˆå‘˜å‡½æ•°ç±»åž‹ä¸Šçš„é™å®šç¬¦æ— æ•ˆ"
#: cp/decl.c:7938
#, gcc-internal-format
@@ -24250,7 +24156,7 @@ msgstr "è”åˆæˆå‘˜å‡½æ•° %qD 被声明为虚函数"
#: cp/decl.c:8041
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
-msgstr ""
+msgstr "%qD ä¸èƒ½å£°æ˜Žä¸ºè™šå‡½æ•°ï¼Œå› ä¸ºå®ƒæ€»æ˜¯é™æ€çš„"
#: cp/decl.c:8059
#, gcc-internal-format
@@ -24388,7 +24294,7 @@ msgstr "å½¢å‚ %qD 被无效地被声明为具有方法类型"
#: cp/decl.c:8643
#, gcc-internal-format
msgid "parameter %qD includes %s to array of unknown bound %qT"
-msgstr ""
+msgstr "å‚æ•° %qD 包å«äº† %s,åŽè€…指å‘有未知边界 %qT 的数组"
#. [class.copy]
#.
@@ -24433,7 +24339,7 @@ msgstr "%qD 必须是一个éžé™æ€æˆå‘˜å‡½æ•°æˆ–éžæˆå‘˜å‡½æ•°"
#: cp/decl.c:8973
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
-msgstr ""
+msgstr "%qD 的实å‚必须有类或枚举类型"
#: cp/decl.c:9014
#, gcc-internal-format
@@ -24494,7 +24400,7 @@ msgstr "%qD 带且仅带 2 个实å‚"
#: cp/decl.c:9140
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
-msgstr ""
+msgstr "用户定义的 %qD 总是计算所有两个å‚æ•°"
#: cp/decl.c:9154
#, gcc-internal-format
@@ -24551,7 +24457,7 @@ msgstr "%<%s %T%> 需è¦æ¨¡æ¿å‚æ•°"
#: cp/decl.c:9320 cp/name-lookup.c:2629
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
-msgstr ""
+msgstr "%qD 与其声明所在的类é‡å"
#: cp/decl.c:9458
#, gcc-internal-format
@@ -24615,12 +24521,12 @@ msgstr "没有一个整数类型å¯ä»¥è¡¨ç¤º %qT 的所有枚举值"
#: cp/decl.c:9972
#, gcc-internal-format
msgid "enumerator value for %qD not integer constant"
-msgstr ""
+msgstr "%qD 的枚举值ä¸æ˜¯æ•´æ•°å¸¸æ•°"
#: cp/decl.c:10000
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
-msgstr ""
+msgstr "%qD 处枚举值溢出"
#: cp/decl.c:10075
#, gcc-internal-format
@@ -24650,7 +24556,7 @@ msgstr "%qD 已在类 %qT 中定义过"
#: cp/decl.c:11255
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
-msgstr ""
+msgstr "é™æ€æˆå‘˜å‡½æ•° %q#D 的声明带有类型é™å®šç¬¦"
#: cp/decl2.c:271
#, gcc-internal-format
@@ -24675,7 +24581,7 @@ msgstr "删除数组 %q#D"
#: cp/decl2.c:421
#, gcc-internal-format
msgid "type %q#T argument given to %<delete%>, expected pointer"
-msgstr ""
+msgstr "%<delete%> çš„å‚æ•°ç±»åž‹åº”ä¸ºæŒ‡é’ˆè€Œéž %q#T"
#: cp/decl2.c:433
#, gcc-internal-format
@@ -24693,7 +24599,7 @@ msgstr "删除 %qT 未定义"
#: cp/decl2.c:477
#, gcc-internal-format
msgid "invalid declaration of member template %q#D in local class"
-msgstr ""
+msgstr "局部类中对æˆå‘˜æ¨¡æ¿ %q#D 的声明无效"
#: cp/decl2.c:486
#, gcc-internal-format
@@ -24718,7 +24624,7 @@ msgstr "Java 方法 %qD æœ‰éž Java ç±»åž‹å½¢å‚ %qT"
#: cp/decl2.c:666
#, gcc-internal-format
msgid "prototype for %q#D does not match any in class %qT"
-msgstr ""
+msgstr "%q#D 的原型ä¸åŒ¹é…ç±» %qT 中的任何一个"
#: cp/decl2.c:763
#, gcc-internal-format
@@ -24728,22 +24634,22 @@ msgstr "局部类 %q#T ä¸åº”当拥有é™æ€æ•°æ®æˆå‘˜ %q#D"
#: cp/decl2.c:771
#, gcc-internal-format
msgid "initializer invalid for static member with constructor"
-msgstr ""
+msgstr "构造函数中对é™æ€æˆå‘˜çš„åˆå§‹åŒ–无效"
#: cp/decl2.c:774
#, gcc-internal-format
msgid "(an out of class initialization is required)"
-msgstr ""
+msgstr "(需è¦ä¸€ä¸ªç±»å¤–çš„åˆå§‹åŒ–)"
#: cp/decl2.c:855
#, gcc-internal-format
msgid "member %qD conflicts with virtual function table field name"
-msgstr ""
+msgstr "æˆå‘˜ %qD 与虚函数表的字段å冲çª"
#: cp/decl2.c:874
#, gcc-internal-format
msgid "applying attributes to template parameters is not implemented"
-msgstr ""
+msgstr "将属性应用到模æ¿å‚数尚未实现"
#: cp/decl2.c:884
#, gcc-internal-format
@@ -24763,7 +24669,7 @@ msgstr "字段åˆå§‹å€¼è®¾å®šä¸æ˜¯ä¸€ä¸ªå¸¸é‡"
#: cp/decl2.c:955
#, gcc-internal-format
msgid "%<asm%> specifiers are not permitted on non-static data members"
-msgstr ""
+msgstr "%<asm%> 指定ä¸å…许用于éžé™æ€æ•°æ®æˆå‘˜"
#: cp/decl2.c:1001
#, gcc-internal-format
@@ -24870,22 +24776,22 @@ msgstr " 在抛出的表达å¼ä¸­"
#: cp/except.c:844
#, gcc-internal-format
msgid "expression %qE of abstract class type %qT cannot be used in throw-expression"
-msgstr ""
+msgstr "è¡¨è¾¾å¼ %qE 具有抽象类类型 %qT,ä¸èƒ½ç”¨äºŽ throw 表达å¼ä¸­"
#: cp/except.c:929
#, gcc-internal-format
msgid "%Hexception of type %qT will be caught"
-msgstr ""
+msgstr "%H类型为 %qT 的异常将由"
#: cp/except.c:931
#, gcc-internal-format
msgid "%H by earlier handler for %qT"
-msgstr ""
+msgstr "%H %qT å…ˆå‰çš„处ç†è€…æ•èŽ·"
#: cp/except.c:961
#, gcc-internal-format
msgid "%H%<...%> handler must be the last handler for its try block"
-msgstr ""
+msgstr "%H%<...%> 处ç†è€…必须是其 try å—中的最åŽä¸€ä¸ªå¤„ç†è€…"
#: cp/friend.c:152
#, gcc-internal-format
@@ -24954,7 +24860,7 @@ msgstr "%qT å·²ç»æ˜¯ %qT çš„å‹å…ƒ"
#: cp/friend.c:497
#, gcc-internal-format
msgid "member %qD declared as friend before type %qT defined"
-msgstr ""
+msgstr "æˆå‘˜ %qD 在类型 %qT 被定义之å‰å£°æ˜Žä¸ºå‹å…ƒ"
#: cp/friend.c:553
#, gcc-internal-format
@@ -25039,7 +24945,7 @@ msgstr "ç±» %qT 没有å为 %qD 的字段"
#: cp/init.c:914
#, gcc-internal-format
msgid "%q#D is a static data member; it can only be initialized at its definition"
-msgstr ""
+msgstr "%q#D 是一个é™æ€æ•°æ®æˆå‘˜ï¼›å®ƒåªèƒ½åœ¨å®šä¹‰æ—¶è¢«åˆå§‹åŒ–"
#: cp/init.c:921
#, gcc-internal-format
@@ -25049,12 +24955,12 @@ msgstr "%q#D ä¸æ˜¯ %qT çš„éžé™æ€æ•°æ®æˆå‘˜"
#: cp/init.c:960
#, gcc-internal-format
msgid "unnamed initializer for %qT, which has no base classes"
-msgstr ""
+msgstr "对没有基类的 %qT çš„æ— ååˆå§‹åŒ–"
#: cp/init.c:968
#, gcc-internal-format
msgid "unnamed initializer for %qT, which uses multiple inheritance"
-msgstr ""
+msgstr "对使用了多继承的 %qT çš„æ— ååˆå§‹åŒ–"
#: cp/init.c:1014
#, gcc-internal-format
@@ -25084,7 +24990,7 @@ msgstr "%qT ä¸æ˜¯ä¸€ä¸ªèšåˆç±»åž‹"
#: cp/init.c:1398
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name %<~%T%>"
-msgstr ""
+msgstr "é™å®šçš„类型 %qT ä¸åŒ¹é…æžæž„函数å %<~%T%>"
#: cp/init.c:1406
#, gcc-internal-format
@@ -25164,7 +25070,7 @@ msgstr "找ä¸åˆ°åˆé€‚çš„ %qD,在类 %qT 中"
#: cp/init.c:1963
#, gcc-internal-format
msgid "request for member %qD is ambiguous"
-msgstr ""
+msgstr "对æˆå‘˜ %qD 的请求有歧义"
#: cp/init.c:2103
#, gcc-internal-format
@@ -25199,7 +25105,7 @@ msgstr "delete 时数组大å°æœªçŸ¥"
#: cp/init.c:3064
#, gcc-internal-format
msgid "type to vector delete is neither pointer or array type"
-msgstr ""
+msgstr "çŸ¢é‡ delete 的实å‚类型既éžæŒ‡é’ˆä¹Ÿéžæ•°ç»„"
#: cp/lex.c:468
#, gcc-internal-format
@@ -25219,7 +25125,7 @@ msgstr "#pragma vtable ä¸å†å—支æŒ"
#: cp/lex.c:562
#, gcc-internal-format
msgid "#pragma implementation for %qs appears after file is included"
-msgstr ""
+msgstr "文件在 %qs çš„ #pragma implementation 出现å‰å·²è¢«åŒ…å«"
#: cp/lex.c:587
#, gcc-internal-format
@@ -25249,7 +25155,7 @@ msgstr "%qD 在此作用域中尚未声明"
#: cp/lex.c:642
#, gcc-internal-format
msgid "there are no arguments to %qD that depend on a template parameter, so a declaration of %qD must be available"
-msgstr ""
+msgstr "%qD 的实å‚ä¸ä¾èµ–模æ¿å‚数,所以 %qD 的声明必须å¯ç”¨"
#: cp/lex.c:651
#, gcc-internal-format
@@ -25259,42 +25165,42 @@ msgstr "(如果您使用 %<-fpermissive%>,G++ 会接å—您的代ç ï¼Œä½†æ˜¯å…
#: cp/mangle.c:2139
#, gcc-internal-format
msgid "call_expr cannot be mangled due to a defect in the C++ ABI"
-msgstr ""
+msgstr "由于 C++ ABI 的缺陷,call_expr ä¸èƒ½è¢«ä¿®é¥°"
#: cp/mangle.c:2147
#, gcc-internal-format
msgid "zero-operand casts cannot be mangled due to a defect in the C++ ABI"
-msgstr ""
+msgstr "由于 C++ ABI 的缺陷,零æ“作数的转æ¢ä¸èƒ½è¢«ä¿®é¥°"
#: cp/mangle.c:2197
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
-msgstr ""
+msgstr "çœç•¥çš„ %<?:%> 中æ“作数ä¸èƒ½è¢«ä¿®é¥°"
#: cp/mangle.c:2507
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
-msgstr ""
+msgstr "%qD 修饰åŽçš„å字将在 GCC 的未æ¥ç‰ˆæœ¬ä¸­æœ‰å˜åŒ–"
#: cp/method.c:457
#, gcc-internal-format
msgid "generic thunk code fails for method %q#D which uses %<...%>"
-msgstr ""
+msgstr "通用的转æ¢å±‚代ç (thunk)对使用了 %<...%> 的方法 %q#D 失效"
#: cp/method.c:693
#, gcc-internal-format
msgid "non-static const member %q#D, can't use default assignment operator"
-msgstr ""
+msgstr "éžé™æ€çš„常é‡æˆå‘˜ %q#D,ä¸èƒ½ä½¿ç”¨é»˜è®¤çš„赋值è¿ç®—符"
#: cp/method.c:699
#, gcc-internal-format
msgid "non-static reference member %q#D, can't use default assignment operator"
-msgstr ""
+msgstr "éžé™æ€çš„引用æˆå‘˜ %q#D,ä¸èƒ½ä½¿ç”¨é»˜è®¤çš„赋值è¿ç®—符"
#: cp/method.c:811
#, gcc-internal-format
msgid "%Hsynthesized method %qD first required here "
-msgstr ""
+msgstr "%H在这里第一次需è¦ç”Ÿæˆçš„方法 %qD"
#: cp/method.c:1140
#, gcc-internal-format
@@ -25325,7 +25231,7 @@ msgstr "作为 %qD"
#: cp/name-lookup.c:815
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
-msgstr ""
+msgstr "类型与先å‰çš„ %q#D 的外部声明ä¸åŒ¹é…"
#: cp/name-lookup.c:816
#, gcc-internal-format
@@ -25381,17 +25287,17 @@ msgstr " 在旧规则下匹é…æ­¤ %q+D"
#: cp/name-lookup.c:1137 cp/name-lookup.c:1145
#, gcc-internal-format
msgid "name lookup of %qD changed for new ISO %<for%> scoping"
-msgstr ""
+msgstr "在新的 ISO %<for%> 作用域中,%qD çš„å称查找有å˜åŒ–"
#: cp/name-lookup.c:1139
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
-msgstr ""
+msgstr " ä¸èƒ½åœ¨ %q+D 使用过时的绑定,因为它有æžæž„函数"
#: cp/name-lookup.c:1147
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
-msgstr ""
+msgstr " 在 %q+D 使用过时的绑定"
#: cp/name-lookup.c:1200
#, gcc-internal-format
@@ -25406,7 +25312,7 @@ msgstr "%s %s %p %d\n"
#: cp/name-lookup.c:1329
#, gcc-internal-format
msgid "XXX is_class_level != (current_scope == class_scope)\n"
-msgstr ""
+msgstr "XXX is_class_level != (current_scope == class_scope)\n"
#: cp/name-lookup.c:1887
#, gcc-internal-format
@@ -25440,12 +25346,12 @@ msgstr "%qT ä¸æ˜¯ä¸€ä¸ªå‘½å空间"
#: cp/name-lookup.c:2012
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
-msgstr ""
+msgstr "using 声明ä¸èƒ½æŒ‡å®šä¸€ä¸ªæ¨¡æ¿æ ‡è¯†ç¬¦ã€‚请å°è¯• %<using %D%>"
#: cp/name-lookup.c:2019
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
-msgstr ""
+msgstr "ä¸å…许在 using 声明中使用命å空间 %qD"
#: cp/name-lookup.c:2055
#, gcc-internal-format
@@ -25460,12 +25366,12 @@ msgstr "%qD 已在此作用域中声明过"
#: cp/name-lookup.c:2153
#, gcc-internal-format
msgid "using declaration %qD introduced ambiguous type %qT"
-msgstr ""
+msgstr "using 声明 %qD 引入了一个有歧义的类型 %qT"
#: cp/name-lookup.c:2727
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
-msgstr ""
+msgstr "在类作用域使用éžæˆå‘˜çš„ using 声明"
#: cp/name-lookup.c:2753
#, gcc-internal-format
@@ -25483,19 +25389,19 @@ msgid "%<%T::%D%> names constructor in %qT"
msgstr "%<%T::%D%> 在 %qT 内指定了构造函数"
#: cp/name-lookup.c:2779
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
-msgstr "没有与 %qD 匹é…çš„æˆå‘˜ï¼Œåœ¨ %q#T 中"
+msgstr "没有与 %<%T::%D%> 匹é…çš„æˆå‘˜ï¼Œåœ¨ %q#T 中"
#: cp/name-lookup.c:2848
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
-msgstr ""
+msgstr "%qD 的声明ä¸åœ¨åŒ…å« %qD 的命å空间中"
#: cp/name-lookup.c:2856
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
-msgstr "内建函数 %qD ä¸å…¼å®¹çš„éšå¼å£°æ˜Ž"
+msgstr "%qD 的声明中有显å¼çš„é™å®š"
#: cp/name-lookup.c:2896
#, gcc-internal-format
@@ -25505,12 +25411,12 @@ msgstr "%qD 应当已在 %qD 内部声明过"
#: cp/name-lookup.c:2958
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
-msgstr ""
+msgstr "这里ä¸å…许命å空间别å %qD,å‡å®šä¸º %qD"
#: cp/name-lookup.c:3265
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
-msgstr ""
+msgstr "强 using åªåœ¨å‘½å空间作用域有æ„义"
#: cp/name-lookup.c:3272
#, gcc-internal-format
@@ -25562,12 +25468,12 @@ msgstr " 与 %q+D 冲çª"
#: cp/name-lookup.c:5059
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
-msgstr ""
+msgstr "XXX 进入 pop_everything ()\n"
#: cp/name-lookup.c:5068
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
-msgstr ""
+msgstr "XXX 离开 pop_everything ()\n"
#: cp/parser.c:1866
#, gcc-internal-format
@@ -25592,7 +25498,7 @@ msgstr "%<::%D%> 尚未声明"
#: cp/parser.c:1921
#, gcc-internal-format
msgid "request for member %qD in non-class type %qT"
-msgstr ""
+msgstr "请求æˆå‘˜ %qD,在éžç±»ç±»åž‹ %qT 中"
#: cp/parser.c:1924
#, gcc-internal-format
@@ -25668,12 +25574,12 @@ msgstr "(也许您本æ„是想用 %<typename %T::%E%>)"
#: cp/parser.c:2116
#, gcc-internal-format
msgid "%qE in namespace %qE does not name a type"
-msgstr ""
+msgstr "%qE 在命å空间 %qE 中没有命å一个类型"
#: cp/parser.c:2119
#, gcc-internal-format
msgid "%qE in class %qT does not name a type"
-msgstr ""
+msgstr "%qE 在类 %qT 中没有命å一个类型"
#: cp/parser.c:2839
#, gcc-internal-format
@@ -25723,17 +25629,17 @@ msgstr "%qE ä¸æ˜¯ä¸€ä¸ªç±»"
#: cp/parser.c:4999
#, gcc-internal-format
msgid "array bound forbidden after parenthesized type-id"
-msgstr ""
+msgstr "括起的类型标识符åŽé¢ä¸èƒ½å‡ºçŽ°æ•°ç»„边界"
#: cp/parser.c:5000
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
-msgstr ""
+msgstr "请å°è¯•åˆ é™¤ç±»åž‹æ ‡è¯†ç¬¦ä¸¤è¾¹çš„括å·"
#: cp/parser.c:5202
#, gcc-internal-format
msgid "expression in new-declarator must have integral or enumeration type"
-msgstr ""
+msgstr "new 声明中的表达å¼å¿…须具有整数或枚举类型"
#: cp/parser.c:5391
#, gcc-internal-format
@@ -25758,7 +25664,7 @@ msgstr "多余的 %<;%>"
#: cp/parser.c:7168
#, gcc-internal-format
msgid "mixing declarations and function-definitions is forbidden"
-msgstr ""
+msgstr "ä¸èƒ½æ··åˆå£°æ˜Žå’Œå‡½æ•°å®šä¹‰"
#: cp/parser.c:7299
#, gcc-internal-format
@@ -25768,7 +25674,7 @@ msgstr "é‡å¤çš„ %<friend%>"
#: cp/parser.c:7468
#, gcc-internal-format
msgid "class definition may not be declared a friend"
-msgstr ""
+msgstr "类定义ä¸èƒ½è¢«å£°æ˜Žä¸ºå‹å…ƒ"
#: cp/parser.c:7782
#, gcc-internal-format
@@ -25778,7 +25684,7 @@ msgstr "åªæœ‰æž„造函数æ‰èƒ½æœ‰åŸºç±»åˆå§‹å€¼è®¾å®š"
#: cp/parser.c:7833
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
-msgstr ""
+msgstr "年代错误的旧å¼åŸºç±»åˆå§‹å€¼è®¾å®š"
#: cp/parser.c:7875
#, gcc-internal-format
@@ -25842,12 +25748,12 @@ msgstr "在模æ¿å¤–使用 %<typename%>"
#: cp/parser.c:10089
#, gcc-internal-format
msgid "type attributes are honored only at type definition"
-msgstr ""
+msgstr "类型属性åªåœ¨ç±»åž‹å®šä¹‰æ—¶èµ·ä½œç”¨"
#: cp/parser.c:10286
#, gcc-internal-format
msgid "%qD is not a namespace-name"
-msgstr "%qD ä¸æ˜¯ä¸€ä¸ªå‘½å空间å"
+msgstr "%qD ä¸æ˜¯ä¸€ä¸ªå‘½å空间"
#. [namespace.udecl]
#.
@@ -25855,22 +25761,22 @@ msgstr "%qD ä¸æ˜¯ä¸€ä¸ªå‘½å空间å"
#: cp/parser.c:10476
#, gcc-internal-format
msgid "a template-id may not appear in a using-declaration"
-msgstr ""
+msgstr "模æ¿æ ‡è¯†ç¬¦ä¸å…许出现在 using 声明中"
#: cp/parser.c:10806
#, gcc-internal-format
msgid "an asm-specification is not allowed on a function-definition"
-msgstr ""
+msgstr "函数定义中ä¸å…许出现 asm 指定"
#: cp/parser.c:10808
#, gcc-internal-format
msgid "attributes are not allowed on a function-definition"
-msgstr ""
+msgstr "函数定义中ä¸å…许有属性"
#: cp/parser.c:10940
#, gcc-internal-format
msgid "attributes after parenthesized initializer ignored"
-msgstr ""
+msgstr "括起的åˆå§‹å€¼è®¾å®šåŽå‡ºçŽ°çš„属性被忽略"
#: cp/parser.c:11325
#, gcc-internal-format
@@ -25905,7 +25811,7 @@ msgstr "文件在默认å‚数处结æŸ"
#: cp/parser.c:12221
#, gcc-internal-format
msgid "deprecated use of default argument for parameter of non-function"
-msgstr ""
+msgstr "为éžå‡½æ•°æŒ‡å®šé»˜è®¤å‚数的用法已过时"
#: cp/parser.c:12224
#, gcc-internal-format
@@ -25913,14 +25819,14 @@ msgid "default arguments are only permitted for function parameters"
msgstr "默认å‚æ•°åªå…许出现在函数å‚数中"
#: cp/parser.c:12984
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "invalid class name in declaration of %qD"
-msgstr "在首è¦æ¨¡æ¿çš„声明中对模æ¿æ ‡è¯†ç¬¦ %qD 的使用无效"
+msgstr "%qD 的声明中类å无效"
#: cp/parser.c:12995
#, gcc-internal-format
msgid "declaration of %qD in %qD which does not enclose %qD"
-msgstr ""
+msgstr "%qD 声明出现在 %qD 中,而åŽè€…并ä¸åŒ…å« %qD"
#: cp/parser.c:13008
#, gcc-internal-format
@@ -25930,7 +25836,7 @@ msgstr "忽略é¢å¤–çš„é™å®š"
#: cp/parser.c:13019
#, gcc-internal-format
msgid "an explicit specialization must be preceded by %<template <>%>"
-msgstr ""
+msgstr "显å¼ç‰¹ä¾‹åŒ–å‰å¿…须有 %<template <>%>"
#: cp/parser.c:13112
#, gcc-internal-format
@@ -25945,7 +25851,7 @@ msgstr "%H多余的 %<;%>"
#: cp/parser.c:13361
#, gcc-internal-format
msgid "a class-key must be used when declaring a friend"
-msgstr ""
+msgstr "声明å‹å…ƒæ—¶å¿…须使用 class 关键字"
#: cp/parser.c:13375
#, gcc-internal-format
@@ -25955,7 +25861,7 @@ msgstr "å‹å…ƒå£°æ˜Žæ²¡æœ‰æŒ‡å®šç±»æˆ–函数å"
#: cp/parser.c:13551
#, gcc-internal-format
msgid "pure-specifier on function-definition"
-msgstr ""
+msgstr "函数定义上有 pure 指定"
#: cp/parser.c:13829
#, gcc-internal-format
@@ -26016,7 +25922,7 @@ msgstr "å¯ç–‘çš„ %<>>%>,使用 %<>%> æ¥ç»“æŸæ¨¡æ¿å®žå‚列表"
#: cp/parser.c:16107
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
-msgstr ""
+msgstr "使用了 %qs 标记,在命å %q#T æ—¶"
#: cp/parser.c:16128
#, gcc-internal-format
@@ -26029,14 +25935,14 @@ msgid "%<template%> (as a disambiguator) is only allowed within templates"
msgstr "用作消歧义的 %<template%> åªèƒ½ç”¨äºŽæ¨¡æ¿å†…"
#: cp/parser.c:16382 cp/parser.c:17303 cp/parser.c:17434
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "misplaced %<@%D%> Objective-C++ construct"
-msgstr "录制å®"
+msgstr "ä½ç½®é”™è¯¯çš„ %<@%D%> Objective-C++ 构造"
#: cp/parser.c:16523
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%<@encode%> must specify a type as an argument"
-msgstr "必须将关键字(模å¼å)指定为唯一的å‚æ•°\n"
+msgstr "%<@encode%> 必须指定一个类型作为实å‚"
#: cp/parser.c:16838
#, gcc-internal-format
@@ -26066,12 +25972,12 @@ msgstr "无效的æˆå‘˜æ¨¡æ¿å£°æ˜Ž %qD"
#: cp/pt.c:574
#, gcc-internal-format
msgid "explicit specialization in non-namespace scope %qD"
-msgstr ""
+msgstr "显å¼ç‰¹ä¾‹åŒ–出现在éžå‘½å空间作用域 %qD 中"
#: cp/pt.c:585
#, gcc-internal-format
msgid "enclosing class templates are not explicitly specialized"
-msgstr ""
+msgstr "所包å«çš„类模æ¿å¹¶æœªè¢«æ˜¾å¼ç‰¹ä¾‹åŒ–"
#: cp/pt.c:669
#, gcc-internal-format
@@ -26084,9 +25990,9 @@ msgid " from definition of %q+#D"
msgstr " 从 %q+#D 的定义"
#: cp/pt.c:687
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "explicit instantiation of %qD in namespace %qD (which does not enclose namespace %qD)"
-msgstr "对éžæ¨¡æ¿ %q#D 的显å¼å®žä¾‹åŒ–"
+msgstr "%qD 的显å¼å®žä¾‹åŒ–出现在命å空间 %qD 中,而åŽè€…并ä¸åŒ…å«å‘½å空间 %qD"
#: cp/pt.c:723
#, gcc-internal-format
@@ -26121,7 +26027,7 @@ msgstr "%qD ä¸æ˜¯ä¸€ä¸ªå‡½æ•°æ¨¡æ¿"
#: cp/pt.c:1573
#, gcc-internal-format
msgid "template-id %qD for %q+D does not match any template declaration"
-msgstr ""
+msgstr "模æ¿æ ‡è¯†ç¬¦ %qD(属于 %q+D)ä¸åŒ¹é…任何模æ¿å£°æ˜Ž"
#: cp/pt.c:1581
#, gcc-internal-format
@@ -26131,19 +26037,19 @@ msgstr "有歧义的模æ¿ç‰¹ä¾‹åŒ– %qD (为 %q+D)"
#. This case handles bogus declarations like template <>
#. template <class T> void f<int>();
#: cp/pt.c:1812 cp/pt.c:1866
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "template-id %qD in declaration of primary template"
-msgstr "在首è¦æ¨¡æ¿çš„声明中对模æ¿æ ‡è¯†ç¬¦ %qD 的使用无效"
+msgstr "模æ¿æ ‡è¯†ç¬¦ %qD 出现在基本模æ¿çš„声明中"
#: cp/pt.c:1825
#, gcc-internal-format
msgid "template parameter list used in explicit instantiation"
-msgstr ""
+msgstr "显å¼åˆå§‹åŒ–中出现了模æ¿å‚数列表"
#: cp/pt.c:1831
#, gcc-internal-format
msgid "definition provided for explicit instantiation"
-msgstr ""
+msgstr "为显å¼å®žä¾‹åŒ–æ供的定义"
#: cp/pt.c:1839
#, gcc-internal-format
@@ -26168,7 +26074,7 @@ msgstr "函数模æ¿éƒ¨åˆ†ç‰¹ä¾‹åŒ– %qD 是ä¸å…许的"
#: cp/pt.c:1895
#, gcc-internal-format
msgid "default argument specified in explicit specialization"
-msgstr ""
+msgstr "显å¼ç‰¹ä¾‹åŒ–时指定了默认å‚æ•°"
#: cp/pt.c:1924
#, gcc-internal-format
@@ -26186,7 +26092,7 @@ msgstr "%qD ä¸æ˜¯ä¸€ä¸ªæ¨¡æ¿å‡½æ•°"
#: cp/pt.c:1986
#, gcc-internal-format
msgid "specialization of implicitly-declared special member function"
-msgstr ""
+msgstr "特例化了éšå¼å£°æ˜Žçš„特殊æˆå‘˜å‡½æ•°"
#: cp/pt.c:2030
#, gcc-internal-format
@@ -26206,7 +26112,7 @@ msgstr " éšè—äº†æ¨¡ç‰ˆå½¢å‚ %q+#D"
#: cp/pt.c:2658
#, gcc-internal-format
msgid "template parameters not used in partial specialization:"
-msgstr ""
+msgstr "部分特例化中未用到模æ¿å‚数:"
#: cp/pt.c:2662
#, gcc-internal-format
@@ -26216,17 +26122,17 @@ msgstr " %qD"
#: cp/pt.c:2673
#, gcc-internal-format
msgid "partial specialization %qT does not specialize any template arguments"
-msgstr ""
+msgstr "部分特例化 %qT 并未特例化任何模æ¿å‚æ•°"
#: cp/pt.c:2698
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "template argument %qE involves template parameter(s)"
-msgstr "模æ¿çš„模æ¿å½¢å‚的默认实å‚无效"
+msgstr "模æ¿å®žå‚ %qE æ··æ‚了模æ¿å½¢å‚"
#: cp/pt.c:2742
#, gcc-internal-format
msgid "type %qT of template argument %qE depends on template parameter(s)"
-msgstr ""
+msgstr "类型 %qT(属于模æ¿å®žå‚ %qE)å–决于模æ¿å‚æ•°"
#: cp/pt.c:2829
#, gcc-internal-format
@@ -26269,7 +26175,7 @@ msgstr "对éžæ¨¡æ¿ %q#D 的模æ¿å®šä¹‰"
#: cp/pt.c:3140
#, gcc-internal-format
msgid "expected %d levels of template parms for %q#D, got %d"
-msgstr ""
+msgstr "éœ€è¦ %d 级的 %q#D 模æ¿å‚数,å´ç»™å‡ºäº† %d 级"
#: cp/pt.c:3152
#, gcc-internal-format
@@ -26294,7 +26200,7 @@ msgstr "%qT ä¸æ˜¯ä¸€ä¸ªæ¨¡æ¿ç±»åž‹"
#: cp/pt.c:3267
#, gcc-internal-format
msgid "template specifiers not specified in declaration of %qD"
-msgstr ""
+msgstr "%qD 的声明中没有 template é™å®š"
#: cp/pt.c:3277
#, gcc-internal-format
@@ -26302,9 +26208,9 @@ msgid "previous declaration %q+D"
msgstr "å…ˆå‰çš„声明 %q+D"
#: cp/pt.c:3278
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "used %d template parameter(s) instead of %d"
-msgstr "没有找到“%sâ€ï¼šä½¿ç”¨â€œ%sâ€æ›¿ä»£"
+msgstr "使用了 %d 个模æ¿å‚数,而ä¸æ˜¯ %d 个"
#: cp/pt.c:3297
#, gcc-internal-format
@@ -26383,47 +26289,47 @@ msgstr "%qE ä¸æ˜¯ç±»åž‹ %qT 的有效模æ¿å®žå‚,因为它的类型是 %qT"
#: cp/pt.c:3691
#, gcc-internal-format
msgid "standard conversions are not allowed in this context"
-msgstr ""
+msgstr "此上下文中ä¸å…许标准转æ¢"
#: cp/pt.c:3860
#, gcc-internal-format
msgid "to refer to a type member of a template parameter, use %<typename %E%>"
-msgstr ""
+msgstr "需è¦ä½¿ç”¨æŸä¸ªæ¨¡æ¿å‚数的类型æˆå‘˜æ—¶ï¼Œè¯·ä½¿ç”¨ %<typename %E%>"
#: cp/pt.c:3875 cp/pt.c:3894 cp/pt.c:3934
#, gcc-internal-format
msgid "type/value mismatch at argument %d in template parameter list for %qD"
-msgstr ""
+msgstr "å®žå‚ %d 的类型/值ä¸åŒ¹é…,在 %qD 的模æ¿å‚数列表中"
#: cp/pt.c:3879
#, gcc-internal-format
msgid " expected a constant of type %qT, got %qT"
-msgstr " 需è¦ä¸€ä¸ª %qT 类型的常é‡ï¼Œå´å¾—到了 %qT"
+msgstr " 需è¦ä¸€ä¸ª %qT 类型的常é‡ï¼Œå´ç»™å‡ºäº† %qT"
#: cp/pt.c:3883
#, gcc-internal-format
msgid " expected a class template, got %qE"
-msgstr " 需è¦ä¸€ä¸ªç±»æ¨¡æ¿ï¼Œå´å¾—到了 %qE"
+msgstr " 需è¦ä¸€ä¸ªç±»æ¨¡æ¿ï¼Œå´ç»™å‡ºäº† %qE"
#: cp/pt.c:3885
#, gcc-internal-format
msgid " expected a type, got %qE"
-msgstr " 需è¦ä¸€ä¸ªç±»åž‹ï¼Œå´å¾—到了 %qE"
+msgstr " 需è¦ä¸€ä¸ªç±»åž‹ï¼Œå´ç»™å‡ºäº† %qE"
#: cp/pt.c:3898
#, gcc-internal-format
msgid " expected a type, got %qT"
-msgstr " 需è¦ä¸€ä¸ªç±»åž‹ï¼Œå´å¾—到了 %qT"
+msgstr " 需è¦ä¸€ä¸ªç±»åž‹ï¼Œå´ç»™å‡ºäº† %qT"
#: cp/pt.c:3900
#, gcc-internal-format
msgid " expected a class template, got %qT"
-msgstr " 需è¦ä¸€ä¸ªç±»æ¨¡æ¿ï¼Œå´å¾—到了 %qT"
+msgstr " 需è¦ä¸€ä¸ªç±»æ¨¡æ¿ï¼Œå´ç»™å‡ºäº† %qT"
#: cp/pt.c:3937
#, gcc-internal-format
msgid " expected a template of type %qD, got %qD"
-msgstr " 需è¦ä¸€ä¸ªç±»åž‹ä¸º %qD 的模æ¿ï¼Œå´å¾—到了 %qD"
+msgstr " 需è¦ä¸€ä¸ªç±»åž‹ä¸º %qD 的模æ¿ï¼Œå´ç»™å‡ºäº† %qD"
#: cp/pt.c:3980
#, gcc-internal-format
@@ -26433,7 +26339,7 @@ msgstr "ä¸èƒ½å°†æ¨¡æ¿å‚数从 %qE 转æ¢åˆ° %qT"
#: cp/pt.c:4019
#, gcc-internal-format
msgid "wrong number of template arguments (%d, should be %d)"
-msgstr "模æ¿å‚æ•°æ•°ç›®ä¸å¯¹(%d,应该是 %d)"
+msgstr "模æ¿å‚æ•°æ•°ç›®ä¸å¯¹(ä¸åº”是 %d 个而应是 %d 个)"
#: cp/pt.c:4023
#, gcc-internal-format
@@ -26458,12 +26364,12 @@ msgstr "对于模æ¿å£°æ˜Ž %q+D"
#: cp/pt.c:5060
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth-NN to increase the maximum) instantiating %qD"
-msgstr ""
+msgstr "模æ¿å®žä¾‹åŒ–深度超过最大值 %d(使用 use -ftemplate-depth-NN æ¥å¢žå¤§æœ€å¤§å€¼),在实例化 %qD æ—¶"
#: cp/pt.c:5506
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
-msgstr ""
+msgstr "%q#T 的类模æ¿å®žä¾‹åŒ–有歧义"
#: cp/pt.c:5512
#, gcc-internal-format
@@ -26498,7 +26404,7 @@ msgstr "函数返回了一个函数"
#: cp/pt.c:6918
#, gcc-internal-format
msgid "creating pointer to member function of non-class type %qT"
-msgstr ""
+msgstr "生æˆéžç±»ç±»åž‹ %qT çš„æˆå‘˜å‡½æ•°æŒ‡é’ˆ"
#: cp/pt.c:7099
#, gcc-internal-format
@@ -26518,12 +26424,12 @@ msgstr "å½¢æˆ %s,指å‘引用类型 %qT"
#: cp/pt.c:7355
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
-msgstr ""
+msgstr "生æˆéžç±»ç±»åž‹ %qT çš„æˆå‘˜æŒ‡é’ˆ"
#: cp/pt.c:7361
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
-msgstr ""
+msgstr "生æˆå¼•ç”¨ç±»åž‹ %qT çš„æˆå‘˜æŒ‡é’ˆ"
#: cp/pt.c:7367
#, gcc-internal-format
@@ -26538,7 +26444,7 @@ msgstr "ç”Ÿæˆ %qT 的数组"
#: cp/pt.c:7440
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
-msgstr ""
+msgstr "生æˆæŠ½è±¡ç±»åž‹ %qT 的数组"
#: cp/pt.c:7484
#, gcc-internal-format
@@ -26548,12 +26454,12 @@ msgstr "%qT ä¸æ˜¯ç±»ã€ç»“构或è”åˆç±»åž‹"
#: cp/pt.c:7519
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
-msgstr ""
+msgstr "%qT 被解æžåˆ°éžæžšä¸¾ç±»åž‹ %qT"
#: cp/pt.c:7522
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
-msgstr ""
+msgstr "%qT 被解æžåˆ°éžç±»ç±»åž‹ %qT"
#: cp/pt.c:7584
#, gcc-internal-format
@@ -26563,7 +26469,7 @@ msgstr "在模æ¿ä¸­ä½¿ç”¨ %qs"
#: cp/pt.c:7716
#, gcc-internal-format
msgid "dependent-name %qE is parsed as a non-type, but instantiation yields a type"
-msgstr ""
+msgstr "ä¾èµ–å %qE 被解æžä¸ºéžç±»åž‹ï¼Œä½†å®žä¾‹åŒ–å´äº§ç”Ÿäº†ä¸€ä¸ªç±»åž‹"
#: cp/pt.c:7718
#, gcc-internal-format
@@ -26596,9 +26502,9 @@ msgid "%qT uses local type %qT"
msgstr "%qT 使用了局部类型 %qT"
#: cp/pt.c:9105
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%qT is a variably modified type"
-msgstr "类型 %qT ä¸æ˜¯ç”±ç±»åž‹ %qT 派生的"
+msgstr "%qT 是一个å¯å˜ç±»åž‹"
#: cp/pt.c:9116
#, gcc-internal-format
@@ -26618,7 +26524,7 @@ msgstr "对éžæ¨¡æ¿ %q#D 的显å¼å®žä¾‹åŒ–"
#: cp/pt.c:11092 cp/pt.c:11142
#, gcc-internal-format
msgid "no matching template for %qD found"
-msgstr ""
+msgstr "没有找到与 %qD 匹é…的模æ¿"
#: cp/pt.c:11098
#, gcc-internal-format
@@ -26638,17 +26544,17 @@ msgstr "ISO C++ ä¸å…许在显å¼å®žä¾‹åŒ–时使用 %<extern%>"
#: cp/pt.c:11161 cp/pt.c:11254
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
-msgstr ""
+msgstr "为模æ¿å®žä¾‹åŒ–化应用了存储类型 %qD"
#: cp/pt.c:11226
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
-msgstr "éžæ¨¡æ¿ç±»åž‹ %qT 用作模æ¿"
+msgstr "显å¼å®žä¾‹åŒ–éžæ¨¡æ¿ç±»åž‹ %qT"
#: cp/pt.c:11235
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
-msgstr ""
+msgstr "%q#T 的显å¼å®žä¾‹åŒ–出现在模æ¿å®šä¹‰ä¹‹å‰"
#: cp/pt.c:11243
#, gcc-internal-format
@@ -26663,17 +26569,17 @@ msgstr "对 %q#T é‡å¤çš„显å¼å®žä¾‹åŒ–"
#: cp/pt.c:11700
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
-msgstr ""
+msgstr "显å¼å®žä¾‹åŒ– %qD 时没有å¯ç”¨çš„定义"
#: cp/pt.c:11847
#, gcc-internal-format
msgid "template instantiation depth exceeds maximum of %d instantiating %q+D, possibly from virtual table generation (use -ftemplate-depth-NN to increase the maximum)"
-msgstr ""
+msgstr "模æ¿å®žä¾‹åŒ–深度超过了最大值 %d,当实例化 %q+D 时,å¯èƒ½æ˜¯ç”±äºŽç”Ÿæˆè™šå‡½æ•°è¡¨æ‰€è‡´(使用 -ftemplate-depth-NN æ¥å¢žå¤§æœ€å¤§å€¼)"
#: cp/pt.c:12120
#, gcc-internal-format
msgid "%q#T is not a valid type for a template constant parameter"
-msgstr ""
+msgstr "%q#T ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„模æ¿å¸¸é‡å‚数类型"
#: cp/repo.c:113
#, gcc-internal-format
@@ -26681,14 +26587,14 @@ msgid "-frepo must be used with -c"
msgstr "-frepo 必须与 -c 一起使用"
#: cp/repo.c:201
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "mysterious repository information in %s"
-msgstr "在对è¯æ¡†å†…显示错误消æ¯"
+msgstr "%s 的存储信æ¯å¾ˆè¯¡å¼‚"
#: cp/repo.c:215
#, gcc-internal-format
msgid "can't create repository information file %qs"
-msgstr ""
+msgstr "无法创建存储信æ¯æ–‡ä»¶ %qs"
#: cp/rtti.c:270
#, gcc-internal-format
@@ -26703,12 +26609,12 @@ msgstr "在使用 typeid 之å‰å¿…须先 #include <typeinfo>"
#: cp/rtti.c:348
#, gcc-internal-format
msgid "cannot create type information for type %qT because its size is variable"
-msgstr ""
+msgstr "无法为类型 %qT 创建类型信æ¯ï¼Œå› ä¸ºå®ƒçš„大å°æ˜¯å¯å˜çš„"
#: cp/rtti.c:598 cp/rtti.c:612
#, gcc-internal-format
msgid "dynamic_cast of %q#D to %q#T can never succeed"
-msgstr ""
+msgstr "从 %q#D 到 %q#T 的动æ€è½¬æ¢æ°¸è¿œä¸ä¼šæˆåŠŸ"
#: cp/rtti.c:691
#, gcc-internal-format
@@ -26746,9 +26652,9 @@ msgid "conflicting return type specified for %q+#D"
msgstr "为 %q+#D 指定了冲çªçš„返回类型"
#: cp/search.c:1877
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "looser throw specifier for %q+#F"
-msgstr "为 char %qs 给定了 long 或 short"
+msgstr "æ”¾æ¾ %q+#F çš„ throw é™å®š"
#: cp/search.c:1878
#, gcc-internal-format
@@ -26770,7 +26676,7 @@ msgstr " 因为 %q+#D 已在基类中声明过"
#: cp/semantics.c:1240
#, gcc-internal-format
msgid "type of asm operand %qE could not be determined"
-msgstr ""
+msgstr "无法确定 asm æ“作数 %qE 的类型"
#: cp/semantics.c:1359
#, gcc-internal-format
@@ -26815,7 +26721,7 @@ msgstr "在顶层使用 %<this%> 无效"
#: cp/semantics.c:1942
#, gcc-internal-format
msgid "invalid qualifying scope in pseudo-destructor name"
-msgstr ""
+msgstr "伪æžæž„函数åçš„é™å®šä½œç”¨åŸŸæ— æ•ˆ"
#: cp/semantics.c:1962
#, gcc-internal-format
@@ -26865,7 +26771,7 @@ msgstr "基类 %qT 有 cv é™å®š"
#: cp/semantics.c:2375
#, gcc-internal-format
msgid "incomplete type %qT used in nested name specifier"
-msgstr ""
+msgstr "嵌套å指定中使用了ä¸å®Œå…¨çš„类型 %qT"
#: cp/semantics.c:2378
#, gcc-internal-format
@@ -26900,7 +26806,7 @@ msgstr " %q+#D 已在此声明过"
#: cp/semantics.c:2539
#, gcc-internal-format
msgid "template parameter %qD of type %qT is not allowed in an integral constant expression because it is not of integral or enumeration type"
-msgstr ""
+msgstr "模æ¿å‚æ•° %qD(类型为 %qT)ä¸å…许出现在整数表达å¼ä¸­ï¼Œå› ä¸ºå®ƒçš„类型ä¸æ˜¯æ•´æ•°æˆ–枚举"
#: cp/semantics.c:2705
#, gcc-internal-format
@@ -26915,13 +26821,13 @@ msgstr "命å空间 %qD 被用作表达å¼"
#: cp/semantics.c:2718
#, gcc-internal-format
msgid "use of class template %qT as expression"
-msgstr ""
+msgstr "å°†ç±»æ¨¡æ¿ %qT 用作表达å¼"
#. Ambiguous reference to base members.
#: cp/semantics.c:2724
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
-msgstr ""
+msgstr "在多继承网格中对 %qD 的访问有歧义"
#: cp/semantics.c:2836
#, gcc-internal-format
@@ -26931,42 +26837,42 @@ msgstr "%qE 的类型未知"
#: cp/tree.c:563
#, gcc-internal-format
msgid "%qV qualifiers cannot be applied to %qT"
-msgstr ""
+msgstr "%qV é™å®šç¬¦ä¸èƒ½åº”用到 %qT 上"
#: cp/tree.c:1782
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
-msgstr ""
+msgstr "åªèƒ½ä¸º Java 类定义应用 %qE 属性"
#: cp/tree.c:1811
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
-msgstr ""
+msgstr "åªèƒ½ä¸ºç±»å®šä¹‰åº”用 %qE 属性"
#: cp/tree.c:1817
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
-msgstr ""
+msgstr "%qE 已过时:g++ 的虚函数表现在默认与 COM 兼容"
#: cp/tree.c:1841
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
-msgstr ""
+msgstr "请求的 init_priority ä¸æ˜¯ä¸€ä¸ªæ•´æ•°å¸¸æ•°"
#: cp/tree.c:1862
#, gcc-internal-format
msgid "can only use %qE attribute on file-scope definitions of objects of class type"
-msgstr ""
+msgstr "åªèƒ½å°† %qE 属性用于æŸä¸ªç±»çš„对象的文件作用域定义"
#: cp/tree.c:1870
#, gcc-internal-format
msgid "requested init_priority is out of range"
-msgstr ""
+msgstr "请求的 init_priority 越界"
#: cp/tree.c:1880
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
-msgstr ""
+msgstr "请求的 init_priority ä¿ç•™ä¸ºå†…部使用"
#: cp/tree.c:1891
#, gcc-internal-format
@@ -26976,7 +26882,7 @@ msgstr "%qE 属性在此平å°ä¸Šä¸å—支æŒ"
#: cp/typeck.c:435 cp/typeck.c:449 cp/typeck.c:549
#, gcc-internal-format
msgid "%s between distinct pointer types %qT and %qT lacks a cast"
-msgstr ""
+msgstr "%s(在ä¸åŒçš„指针类型 %qT å’Œ %qT 之间)需è¦ä¸€ä¸ªè½¬æ¢"
#: cp/typeck.c:511
#, gcc-internal-format
@@ -26986,7 +26892,7 @@ msgstr "ISO C++ ä¸å…许在 %<void *%> 和函数指针间 %s"
#: cp/typeck.c:569
#, gcc-internal-format
msgid "%s between distinct pointer-to-member types %qT and %qT lacks a cast"
-msgstr ""
+msgstr "%s(在ä¸åŒçš„æˆå‘˜æŒ‡é’ˆç±»åž‹ %qT å’Œ %qT 之间)需è¦ä¸€ä¸ªè½¬æ¢"
#: cp/typeck.c:1258
#, gcc-internal-format
@@ -27011,12 +26917,12 @@ msgstr "对éžé™æ€æˆå‘˜å‡½æ•°çš„使用无效"
#: cp/typeck.c:1502
#, gcc-internal-format
msgid "deprecated conversion from string constant to %qT'"
-msgstr ""
+msgstr "从字符串常é‡åˆ° %qT 的转æ¢å·²è¿‡æ—¶"
#: cp/typeck.c:1613 cp/typeck.c:1961
#, gcc-internal-format
msgid "request for member %qD in %qE, which is of non-class type %qT"
-msgstr ""
+msgstr "对æˆå‘˜ %qD 的请求出现在 %qE 中,而åŽè€…具有éžç±»ç±»åž‹ %qT"
#: cp/typeck.c:1640
#, gcc-internal-format
@@ -27026,22 +26932,22 @@ msgstr "对éžé™æ€æ•°æ®æˆå‘˜ %qE 的使用无效"
#: cp/typeck.c:1692 cp/typeck.c:1720
#, gcc-internal-format
msgid "invalid access to non-static data member %qD of NULL object"
-msgstr ""
+msgstr "对 NULL 对象éžé™æ€æ•°æ®æˆå‘˜ %qD 的访问无效"
#: cp/typeck.c:1695 cp/typeck.c:1722
#, gcc-internal-format
msgid "(perhaps the %<offsetof%> macro was used incorrectly)"
-msgstr ""
+msgstr "(å¯èƒ½é”™è¯¯ä½¿ç”¨äº† %<offsetof%> å®)"
#: cp/typeck.c:1833
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
-msgstr ""
+msgstr "é™å®šçš„类型 %qT ä¸åŒ¹é…æžæž„函数å ~%qT"
#: cp/typeck.c:1839
#, gcc-internal-format
msgid "the type being destroyed is %qT, but the destructor refers to %qT"
-msgstr ""
+msgstr "被æžæž„的类型是 %qT,但æžæž„函数å´ä½¿ç”¨äº† %qT"
#: cp/typeck.c:2004
#, gcc-internal-format
@@ -27153,7 +27059,7 @@ msgstr "给予函数的实å‚太少"
#: cp/typeck.c:2886 cp/typeck.c:2896
#, gcc-internal-format
msgid "assuming cast to type %qT from overloaded function"
-msgstr ""
+msgstr "å‡å®šä»Žé‡è½½å‡½æ•°è½¬æ¢åˆ°ç±»åž‹ %qT"
#: cp/typeck.c:2964
#, gcc-internal-format
@@ -27193,7 +27099,7 @@ msgstr "ISO C++ ä¸å…许比较指针和整数的值"
#: cp/typeck.c:3240
#, gcc-internal-format
msgid "unordered comparison on non-floating point argument"
-msgstr ""
+msgstr "éžæµ®ç‚¹å®žå‚间的无效比较"
#: cp/typeck.c:3278
#, gcc-internal-format
@@ -27208,7 +27114,7 @@ msgstr "在类型 %q#T 和 %q#T 间比较"
#: cp/typeck.c:3478
#, gcc-internal-format
msgid "comparison between signed and unsigned integer expressions"
-msgstr ""
+msgstr "在有符å·å’Œæ— ç¬¦å·æ•´æ•°è¡¨è¾¾å¼é—´æ¯”较"
#. Some sort of arithmetic operation involving NULL was
#. performed. Note that pointer-difference and pointer-addition
@@ -27252,7 +27158,7 @@ msgstr " 需è¦ä¸€ä¸ªé™å®šçš„标识符"
#: cp/typeck.c:3699
#, gcc-internal-format
msgid "parenthesis around %qE cannot be used to form a pointer-to-member-function"
-msgstr ""
+msgstr "%qE 两边的括å·ä¸èƒ½ç”¨æ¥æž„造一个æˆå‘˜å‡½æ•°æŒ‡é’ˆ"
#: cp/typeck.c:3722
#, gcc-internal-format
@@ -27314,7 +27220,7 @@ msgstr "ä¸èƒ½åˆ›å»ºæŒ‡å‘引用æˆå‘˜ %qD 的指针"
#: cp/typeck.c:4393
#, gcc-internal-format
msgid "cannot take the address of %<this%>, which is an rvalue expression"
-msgstr ""
+msgstr "无法å–å³å€¼è¡¨è¾¾å¼ %<this%> 的地å€"
#: cp/typeck.c:4416
#, gcc-internal-format
@@ -27324,12 +27230,12 @@ msgstr "è¦æ±‚显å¼å¯„存器å˜é‡ %qD 的地å€ã€‚"
#: cp/typeck.c:4421
#, gcc-internal-format
msgid "address requested for %qD, which is declared %<register%>"
-msgstr ""
+msgstr "请求声明为 %<register%> çš„ %qD 的地å€"
#: cp/typeck.c:4487
#, gcc-internal-format
msgid "%s expression list treated as compound expression"
-msgstr ""
+msgstr "%s 表达å¼åˆ—表被看作å¤åˆè¡¨è¾¾å¼"
#: cp/typeck.c:4881
#, gcc-internal-format
@@ -27408,7 +27314,7 @@ msgstr " 在求 %<%Q(%#T, %#T)%> 值时"
#: cp/typeck.c:5561
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
-msgstr ""
+msgstr "å°† %qT 赋值给 %qT 时类型ä¸å…¼å®¹"
#: cp/typeck.c:5568
#, gcc-internal-format
@@ -27443,7 +27349,7 @@ msgstr "到类型 %qT 的转æ¢æ— æ•ˆï¼Œä»Žç±»åž‹ %qT"
#: cp/typeck.c:6045
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
-msgstr ""
+msgstr "ä¸èƒ½ä»Ž %qT 转æ¢åˆ° %qTï¼Œä¸ºå®žå‚ %qP(属于 %qD)"
#: cp/typeck.c:6048
#, gcc-internal-format
@@ -27490,7 +27396,7 @@ msgstr "æžæž„函数返回值"
#: cp/typeck.c:6248
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
-msgstr ""
+msgstr "ä¸èƒ½ä»Žæž„造函数的异常处ç†ä¸­è¿”回"
#. You can't return a value from a constructor.
#: cp/typeck.c:6251
@@ -27536,7 +27442,7 @@ msgstr "ä¸èƒ½å°†å­—段 %q+D 声明为具有抽象类型 %qT"
#: cp/typeck2.c:304
#, gcc-internal-format
msgid "invalid abstract return type for member function %q+#D"
-msgstr ""
+msgstr "æˆå‘˜å‡½æ•° %q+#D 的抽象返回类型无效"
#: cp/typeck2.c:306
#, gcc-internal-format
@@ -27595,9 +27501,9 @@ msgid "cannot initialize aggregate of type %qT with a compound literal"
msgstr "无法用å¤åˆå­—é¢å¸¸é‡åˆå§‹åŒ–类型为 %qT çš„èšé›†"
#: cp/typeck2.c:792 cp/typeck2.c:890
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
-msgstr "ISO C++ ä¸å…许指定元素åˆå§‹å€¼è®¾å®š"
+msgstr "ä¸å¹³å‡¡çš„代ç†åˆå§‹å€¼è®¾å®šä¸å—支æŒ"
#: cp/typeck2.c:912 cp/typeck2.c:926
#, gcc-internal-format
@@ -27632,7 +27538,7 @@ msgstr "在è”åˆåˆå§‹å€¼è®¾å®šä¸­å‡ºçŽ°äº†ç´¢å¼•å€¼è€Œä¸æ˜¯å­—段å"
#: cp/typeck2.c:998
#, gcc-internal-format
msgid "union %qT with no named members cannot be initialized"
-msgstr ""
+msgstr "ä¸å«æœ‰åæˆå‘˜çš„è”åˆ %qT ä¸èƒ½è¢«åˆå§‹åŒ–"
#: cp/typeck2.c:1145
#, gcc-internal-format
@@ -27657,17 +27563,17 @@ msgstr "%<->%> çš„å·¦æ“作数ä¸æ˜¯ä¸€ä¸ªæŒ‡é’ˆ"
#: cp/typeck2.c:1208
#, gcc-internal-format
msgid "%qE cannot be used as a member pointer, since it is of type %qT"
-msgstr ""
+msgstr "%qE ä¸èƒ½ç”¨ä½œæˆå‘˜æŒ‡é’ˆï¼Œå› ä¸ºå®ƒçš„类型为 %qT"
#: cp/typeck2.c:1217
#, gcc-internal-format
msgid "cannot apply member pointer %qE to %qE, which is of non-aggregate type %qT"
-msgstr ""
+msgstr "无法将æˆå‘˜æŒ‡é’ˆ %qE 应用到 %qE 上,因为åŽè€…的类型 %qT ä¸æ˜¯ä¸€ä¸ªèšé›†"
#: cp/typeck2.c:1239
#, gcc-internal-format
msgid "pointer to member type %qT incompatible with object type %qT"
-msgstr ""
+msgstr "æˆå‘˜æŒ‡é’ˆç±»åž‹ %qT 与对象类型 %qT ä¸å…¼å®¹"
#: cp/typeck2.c:1462
#, gcc-internal-format
@@ -27680,9 +27586,9 @@ msgid "call to function which throws incomplete type %q#T"
msgstr "调用的函数会抛出ä¸å®Œå…¨çš„类型 %q#T"
#: fortran/f95-lang.c:263
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "Unexpected type in truthvalue_conversion"
-msgstr "%s:.opd 节中æ„外的é‡å®šä½ç±»åž‹ %u"
+msgstr "truthvalue_conversion 中类型éžé¢„期"
#: fortran/f95-lang.c:316
#, gcc-internal-format
@@ -27692,12 +27598,12 @@ msgstr "ä¸èƒ½æ‰“开输入文件:%s"
#: fortran/f95-lang.c:643
#, gcc-internal-format
msgid "global register variable %qs used in nested function"
-msgstr ""
+msgstr "嵌套函数中使用了全局寄存器å˜é‡ %qs"
#: fortran/f95-lang.c:647
#, gcc-internal-format
msgid "register variable %qs used in nested function"
-msgstr ""
+msgstr "嵌套函数中使用了寄存器å˜é‡ %qs"
#: fortran/f95-lang.c:654
#, gcc-internal-format
@@ -27717,7 +27623,7 @@ msgstr "å‰ç«¯å¯èƒ½çš„程åºç¼ºé™·ï¼šæ•°ç»„构造函数未能展开"
#: fortran/trans-array.c:4172
#, gcc-internal-format
msgid "Possible frontend bug: Deferred array size without pointer or allocatable attribute."
-msgstr ""
+msgstr "å¯èƒ½çš„å‰ç«¯ç¼ºé™·ï¼šæ领数组大å°æ—¶æ²¡æœ‰æŒ‡é’ˆæˆ–å¯åˆ†é…属性。"
#: fortran/trans-array.c:4621
#, gcc-internal-format
@@ -27732,7 +27638,7 @@ msgstr ""
#: fortran/trans-decl.c:879
#, gcc-internal-format
msgid "intrinsic variable which isn't a procedure"
-msgstr ""
+msgstr "内建函数å˜é‡ä¸æ˜¯ä¸€ä¸ªè¿‡ç¨‹"
#: fortran/trans-decl.c:2250
#, gcc-internal-format
@@ -27793,7 +27699,7 @@ msgstr "real kind=8 在指定了 -fdefault-real-8 选项时ä¸å¯ç”¨"
#: fortran/trans-types.c:238
#, gcc-internal-format
msgid "Use of -fdefault-double-8 requires -fdefault-real-8"
-msgstr ""
+msgstr "使用 -fdefault-double-8 æ—¶éœ€è¦ -fdefault-real-8"
#: fortran/trans-types.c:950
#, gcc-internal-format
@@ -27815,7 +27721,7 @@ msgstr "gfc_todo:尚未实现:"
#: java/check-init.c:248
#, gcc-internal-format
msgid "Can't reassign a value to the final variable %qs"
-msgstr ""
+msgstr "ä¸èƒ½ä¸º final å˜é‡ %qs é‡æ–°èµ‹å€¼"
#: java/check-init.c:518 java/check-init.c:531
#, gcc-internal-format
@@ -27840,17 +27746,17 @@ msgstr "错误的方法签å"
#: java/class.c:802
#, gcc-internal-format
msgid "misplaced ConstantValue attribute (not in any field)"
-msgstr ""
+msgstr "ConstantValue 属性ä½ç½®é”™è¯¯(ä¸åœ¨ä»»ä½•å­—段内)"
#: java/class.c:805
#, gcc-internal-format
msgid "duplicate ConstantValue attribute for field '%s'"
-msgstr ""
+msgstr "为字段‘%s’é‡å¤æŒ‡å®šäº† ConstantValue 属性"
#: java/class.c:816
#, gcc-internal-format
msgid "ConstantValue attribute of field '%s' has wrong type"
-msgstr ""
+msgstr "字段‘%s’的 ConstantValue 属性类型错误"
#: java/class.c:1444
#, gcc-internal-format
@@ -27875,27 +27781,27 @@ msgstr "%qs 的声明éšè—了一个形å‚"
#: java/decl.c:1357
#, gcc-internal-format
msgid "declaration of %qs shadows a symbol from the parameter list"
-msgstr ""
+msgstr "对 %qs 的声明éšè—了形å‚列表中的一个符å·"
#: java/decl.c:1818
#, gcc-internal-format
msgid "In %+D: overlapped variable and exception ranges at %d"
-msgstr ""
+msgstr "在 %+D 中:é‡å çš„å˜é‡å’Œå¼‚常范围,在 %d"
#: java/decl.c:1881
#, gcc-internal-format
msgid "bad type in parameter debug info"
-msgstr ""
+msgstr "å‚数调试信æ¯ä¸­ç±»åž‹é”™è¯¯"
#: java/decl.c:1890
#, gcc-internal-format
msgid "bad PC range for debug info for local %q+D"
-msgstr ""
+msgstr "局部å˜é‡ %q+D 的调用信æ¯ä¸­ PC 范围错误"
#: java/expr.c:369
#, gcc-internal-format
msgid "need to insert runtime check for %s"
-msgstr ""
+msgstr "需è¦ä¸º %s 加入è¿è¡Œæ—¶æ£€æŸ¥"
#: java/expr.c:498 java/expr.c:545
#, gcc-internal-format
@@ -27910,7 +27816,7 @@ msgstr "堆栈下溢 - dup* æ“作"
#: java/expr.c:1651
#, gcc-internal-format
msgid "reference %qs is ambiguous: appears in interface %qs and interface %qs"
-msgstr ""
+msgstr "引用 %qs æœ‰æ­§ä¹‰ï¼šå‡ºçŽ°åœ¨æŽ¥å£ %qs å’ŒæŽ¥å£ %qs 中"
#: java/expr.c:1679
#, gcc-internal-format
@@ -27975,7 +27881,7 @@ msgstr "对 final 字段 %q+D 的赋值出现在构造函数以外"
#: java/expr.c:2887
#, gcc-internal-format
msgid "invalid PC in line number table"
-msgstr ""
+msgstr "è¡Œå·è¡¨ä¸­ PC 无效"
#: java/expr.c:2935
#, gcc-internal-format
@@ -27991,7 +27897,7 @@ msgstr "ä¸ä¼šæ‰§è¡Œåˆ°çš„字节ç ï¼Œä»Ž %d 直到方法末尾"
#: java/expr.c:3277
#, gcc-internal-format
msgid "unrecogized wide sub-instruction"
-msgstr ""
+msgstr "无法识别的宽å­æŒ‡ä»¤"
#: java/gjavah.c:718
#, gcc-internal-format
@@ -28061,7 +27967,7 @@ msgstr "%s:没有这个文件"
#: java/jcf-io.c:550
#, gcc-internal-format
msgid "source file for class %qs is newer than its matching class file. Source file %qs used instead"
-msgstr ""
+msgstr "ç±» %qs çš„æºæ–‡ä»¶æ¯”与之匹é…的类文件新。改用æºæ–‡ä»¶ %qs"
#: java/jcf-parse.c:366
#, gcc-internal-format
@@ -28071,7 +27977,7 @@ msgstr "错误的字符串常é‡"
#: java/jcf-parse.c:384
#, gcc-internal-format
msgid "bad value constant type %d, index %d"
-msgstr ""
+msgstr "常é‡å€¼é”™è¯¯ï¼Œç±»åž‹ %d,索引 %d"
#: java/jcf-parse.c:576
#, gcc-internal-format
@@ -28097,7 +28003,7 @@ msgstr "ä¸æ˜¯ä¸€ä¸ªæœ‰æ•ˆçš„ Java .class 文件。"
#: java/jcf-parse.c:765
#, gcc-internal-format
msgid "reading class %s for the second time from %s"
-msgstr ""
+msgstr "第二次读å–ç±» %s,从 %s"
#: java/jcf-parse.c:783
#, gcc-internal-format
@@ -28122,7 +28028,7 @@ msgstr "在 %qs 中å‘现的 %<java.lang.Object%> 没有特殊的零长度的 %<
#: java/jcf-parse.c:840
#, gcc-internal-format
msgid "%Hduplicate class will only be compiled once"
-msgstr ""
+msgstr "%Hé‡å¤çš„ç±»åªä¼šè¢«ç¼–译一次"
#: java/jcf-parse.c:894
#, gcc-internal-format
@@ -28197,12 +28103,12 @@ msgstr "警告:-C 忽略已ç»ç¼–译的 .class 文件"
#: java/lang.c:615
#, gcc-internal-format
msgid "can't do dependency tracking with input from stdin"
-msgstr ""
+msgstr "从标准输入输入时无法进行ä¾èµ–项跟踪"
#: java/lang.c:631
#, gcc-internal-format
msgid "couldn't determine target name for dependency tracking"
-msgstr ""
+msgstr "ä¸èƒ½ç¡®å®šä¾èµ–项跟踪的目标å"
#: java/lex.c:260
#, gcc-internal-format
@@ -28251,7 +28157,7 @@ msgstr "无法为类 %qs 定义é™æ€åˆå§‹å€¼è®¾å®šã€‚é™æ€åˆå§‹å€¼è®¾å®šåªè
#: java/parse.y:1472
#, gcc-internal-format
msgid "An empty declaration is a deprecated feature that should not be used"
-msgstr ""
+msgstr "空声明是一项已过时的特性,ä¸åº”当继续使用"
#: java/parse.y:3035
#, gcc-internal-format
@@ -28290,7 +28196,7 @@ msgstr "%s %qs 已在 %s:%d 中定义"
#: java/parse.y:3396
#, gcc-internal-format
msgid "Variable %qs is already defined in this method and was declared %<%s %s%> at line %d"
-msgstr ""
+msgstr "å˜é‡ %qs å·²ç»åœ¨æ­¤æ–¹æ³•ä¸­å®šä¹‰è¿‡ï¼Œä¸”被声明为 %<%s %s%>,于行 %d"
#: java/parse.y:3507
#, gcc-internal-format
@@ -28298,9 +28204,9 @@ msgid "Interface %qs repeated"
msgstr "æŽ¥å£ %qs é‡å¤äº†"
#: java/parse.y:3537
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "%s name %qs clashes with imported type %qs"
-msgstr "%Jå½¢å‚ %qD 声明为 void 类型"
+msgstr "%s å %qs 与引入类型 %qs 冲çª"
#: java/parse.y:3569
#, gcc-internal-format
@@ -28358,9 +28264,9 @@ msgid "Class %qs must be declared abstract to define abstract method %qs"
msgstr "ç±» %qs 必须被声明为抽象的,æ‰èƒ½å®šä¹‰çº¯è™šæ–¹æ³• %qs"
#: java/parse.y:4720
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "native method %qs can't be strictfp"
-msgstr "方法 %qs ä¸èƒ½æ˜¯ transient"
+msgstr "本地方法 %qs ä¸èƒ½æ˜¯ strictfp"
#: java/parse.y:4724
#, gcc-internal-format
@@ -28520,12 +28426,12 @@ msgstr "import 时找ä¸åˆ°ç±»æˆ–æŽ¥å£ %qs"
#: java/parse.y:7055
#, gcc-internal-format
msgid "malformed .zip archive in CLASSPATH: %s"
-msgstr ""
+msgstr "CLASSPATH 中的 .zip 归档格å¼é”™è¯¯ï¼š%s"
#: java/parse.y:7126
#, gcc-internal-format
msgid "Can't find default package %qs. Check the CLASSPATH environment variable and the access to the archives"
-msgstr ""
+msgstr "找ä¸åˆ°é»˜è®¤åŒ… %qs。检查 CLASSPATH 环境å˜é‡å’Œå¯¹å½’档的访问æƒé™"
#: java/parse.y:7131
#, gcc-internal-format
@@ -28540,7 +28446,7 @@ msgstr "类型 %qs å¯èƒ½ä¹Ÿåœ¨åŒ… %qs 中被定义"
#: java/parse.y:7372
#, gcc-internal-format
msgid "Nested %s %s is %s; cannot be accessed from here"
-msgstr ""
+msgstr "嵌套的 %s %s 是 %sï¼›ä¸èƒ½ä»Žè¿™é‡Œè®¿é—®"
#: java/parse.y:7410
#, gcc-internal-format
@@ -28575,12 +28481,12 @@ msgstr "未定义的å˜é‡ %qs"
#: java/parse.y:9651
#, gcc-internal-format
msgid "Can't make a static reference to nonstatic variable %qs in class %qs"
-msgstr ""
+msgstr "ä¸èƒ½ç”Ÿæˆå¯¹éžé™æ€å˜é‡ %qs(在类 %qs 中)çš„é™æ€å¼•ç”¨"
#: java/parse.y:9852 java/parse.y:10706
#, gcc-internal-format
msgid "No enclosing instance for inner class %qs is in scope%s"
-msgstr ""
+msgstr "没有包å«å†…部类 %qs 的实例,在 %s 作用域中"
#: java/parse.y:9971 java/parse.y:12415
#, gcc-internal-format
@@ -28595,7 +28501,7 @@ msgstr "在基类构造函数被调用之å‰ä¸èƒ½å¼•ç”¨ %<this%>"
#: java/parse.y:9993
#, gcc-internal-format
msgid "Can't use variable %<%s.this%>: type %qs isn't an outer type of type %qs"
-msgstr ""
+msgstr "ä¸èƒ½ä½¿ç”¨å˜é‡ %<%s.this%>:类型 %qs ä¸æ˜¯ç±»åž‹ %qs 的外部类型"
#: java/parse.y:10026
#, gcc-internal-format
@@ -28620,7 +28526,7 @@ msgstr "ä¸èƒ½å°†ç±»åž‹ %qs 用作é™å®šç¬¦"
#: java/parse.y:10181
#, gcc-internal-format
msgid "Attempt to reference field %qs in %<%s %s%>"
-msgstr ""
+msgstr "试图引用字段 %qs,在 %<%s %s%> 中"
#: java/parse.y:10212
#, gcc-internal-format
@@ -28630,7 +28536,7 @@ msgstr "å˜é‡ %qs 未在类型 %qs 中定义"
#: java/parse.y:10304
#, gcc-internal-format
msgid "Attempt to reference field %<new%> in a %qs"
-msgstr ""
+msgstr "试图引用字段 %<new%>,在一个 %qs 中"
#: java/parse.y:10441
#, gcc-internal-format
@@ -28650,12 +28556,12 @@ msgstr "ä¸èƒ½ä¸ºåŽŸå§‹ç±»åž‹ %qs 调用方法"
#: java/parse.y:10557
#, gcc-internal-format
msgid "Can't make static reference to method %qs in interface %qs"
-msgstr ""
+msgstr "ä¸èƒ½ç”Ÿæˆå¯¹æ–¹æ³• %qs(åœ¨æŽ¥å£ %qs 中)çš„é™æ€å¼•ç”¨"
#: java/parse.y:10571 java/parse.y:10909
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "Can't make static reference to method %<%s %s%> in class %qs"
-msgstr "%qD ä¸èƒ½æ˜¯ä¸€ä¸ªæ–¹æ³• -- ä¸åœ¨ç±»ä¸­"
+msgstr "ä¸èƒ½ç”Ÿæˆå¯¹æ–¹æ³• %<%s %s%> çš„é™æ€å¼•ç”¨ï¼Œåœ¨ç±» %qs 中"
#: java/parse.y:10613
#, gcc-internal-format
@@ -28675,7 +28581,7 @@ msgstr "ç±» %qs 是抽象类。它ä¸èƒ½è¢«å®žä¾‹åŒ–"
#: java/parse.y:10668
#, gcc-internal-format
msgid "No method named %qs in scope"
-msgstr ""
+msgstr "作用域中没有å为 %qs 的方法"
#: java/parse.y:10781
#, gcc-internal-format
@@ -28745,7 +28651,7 @@ msgstr "与 %s 的类型ä¸å…¼å®¹ã€‚需è¦æ˜¾å¼åœ°å°† %qs 转æ¢ä¸º %qs"
#: java/parse.y:13099
#, gcc-internal-format
msgid "Constant expression %qs too wide for narrowing primitive conversion to %qs"
-msgstr ""
+msgstr "常é‡è¡¨è¾¾å¼ %qs å¯¹äºŽå‘ %qs 的原语转æ¢æ¥è¯´å¤ªå®½"
#: java/parse.y:13390
#, gcc-internal-format
@@ -28755,17 +28661,17 @@ msgstr "未注册的è¿ç®—符 %s"
#: java/parse.y:13539
#, gcc-internal-format
msgid "Evaluating this expression will result in an arithmetic exception being thrown"
-msgstr ""
+msgstr "计算此表达å¼å°†ä¼šå¯¼è‡´æŠ›å‡ºç®—术异常"
#: java/parse.y:13621
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "Incompatible type for %qs. Explicit cast needed to convert shift distance from %qs to integral"
-msgstr "%qs 的类型ä¸å…¼å®¹ã€‚需è¦æ˜¾å¼åœ°å°† %qs 转æ¢ä¸ºæ•´æ•°ç±»åž‹"
+msgstr "%qs 的类型ä¸å…¼å®¹ã€‚需è¦æ˜¾å¼åœ°å°†ç§»ä½è·ç¦»ä»Ž %qs 转æ¢ä¸ºæ•´æ•°ç±»åž‹"
#: java/parse.y:13626
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "Incompatible type for %qs. Can't convert shift distance from %qs to integral"
-msgstr "%qs 的类型ä¸å…¼å®¹ã€‚ä¸èƒ½å°† %qs 转æ¢ä¸ºæ•´æ•°ç±»åž‹"
+msgstr "%qs 的类型ä¸å…¼å®¹ã€‚ä¸èƒ½å°†ç§»ä½è·ç¦»ä»Ž %qs 转æ¢ä¸ºæ•´æ•°"
#: java/parse.y:13700
#, gcc-internal-format
@@ -28775,7 +28681,7 @@ msgstr "å®žå‚ %qs 无效,对 %<instanceof%> æ¥è¯´"
#: java/parse.y:13727
#, gcc-internal-format
msgid "Impossible for %qs to be instance of %qs"
-msgstr ""
+msgstr "%qs ä¸å¯èƒ½æ˜¯ %qs 的实例"
#: java/parse.y:13858
#, gcc-internal-format
@@ -28987,7 +28893,7 @@ msgstr "PC=%d 处校验错:%s"
#: java/verify-glue.c:473
#, gcc-internal-format
msgid "bad pc in exception_table"
-msgstr ""
+msgstr "异常表中 PC 错误"
#: java/parse.h:129
#, gcc-internal-format
@@ -29073,14 +28979,14 @@ msgid "distinct Objective-C type in return"
msgstr "返回独一无二的 Objective-C 类型"
#: objc/objc-act.c:1190
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "passing argument %d of %qE from distinct Objective-C type"
-msgstr "传递å‚æ•° %d (属于 %qE)时将整数赋给指针,未作类型转æ¢"
+msgstr "从ä¸åŒçš„ Objective-C 类型传递å‚æ•° %d (属于 %qE)"
#: objc/objc-act.c:1345
#, gcc-internal-format
msgid "statically allocated instance of Objective-C class %qs"
-msgstr ""
+msgstr "é™æ€åˆ†é…çš„ Objective-C ç±» %qs 的实例"
#: objc/objc-act.c:1416
#, gcc-internal-format
@@ -29101,17 +29007,17 @@ msgstr "找ä¸åˆ° %qs 的接å£å£°æ˜Ž"
#: objc/objc-act.c:1909
#, gcc-internal-format
msgid "interface %qs does not have valid constant string layout"
-msgstr ""
+msgstr "æŽ¥å£ %qs 常é‡å­—符串布局无效"
#: objc/objc-act.c:1914
#, gcc-internal-format
msgid "cannot find reference tag for class %qs"
-msgstr ""
+msgstr "找ä¸åˆ°ç±» %qs 的引用标记"
#: objc/objc-act.c:2539
#, gcc-internal-format
msgid "%Hcreating selector for nonexistent method %qE"
-msgstr ""
+msgstr "%H为ä¸å­˜åœ¨çš„方法 %qE 创建选择å­"
#: objc/objc-act.c:2741
#, gcc-internal-format
@@ -29122,7 +29028,7 @@ msgstr "%qs ä¸æ˜¯ä¸€ä¸ª Objective-C ç±»å或别å"
#: objc/objc-act.c:7745 objc/objc-act.c:7775
#, gcc-internal-format
msgid "Objective-C declarations may only appear in global scope"
-msgstr ""
+msgstr "Objective-C 声明åªèƒ½å‡ºçŽ°åœ¨å…¨å±€ä½œç”¨åŸŸä¸­"
#: objc/objc-act.c:2872
#, gcc-internal-format
@@ -29142,27 +29048,27 @@ msgstr "%qs 被é‡æ–°å£°æ˜Žä¸ºä¸åŒæ„义的符å·"
#: objc/objc-act.c:3192
#, gcc-internal-format
msgid "strong-cast assignment has been intercepted"
-msgstr ""
+msgstr "强转æ¢çš„赋值被打断"
#: objc/objc-act.c:3234
#, gcc-internal-format
msgid "strong-cast may possibly be needed"
-msgstr ""
+msgstr "å¯èƒ½éœ€è¦å¼ºç±»åž‹è½¬æ¢"
#: objc/objc-act.c:3244
-#, fuzzy, gcc-internal-format
+#, gcc-internal-format
msgid "instance variable assignment has been intercepted"
-msgstr "实例å˜é‡ %qs 大å°æœªçŸ¥"
+msgstr "实例å˜é‡çš„赋值被打断"
#: objc/objc-act.c:3263
#, gcc-internal-format
msgid "pointer arithmetic for garbage-collected objects not allowed"
-msgstr ""
+msgstr "ä¸å…许在被垃圾收集的对象上进行指针算术è¿ç®—"
#: objc/objc-act.c:3269
#, gcc-internal-format
msgid "global/static variable assignment has been intercepted"
-msgstr ""
+msgstr "全局/é™æ€å˜é‡èµ‹å€¼å·²è¢«æ‰“æ–­"
#: objc/objc-act.c:3452
#, gcc-internal-format
@@ -29172,7 +29078,7 @@ msgstr "使用 %<-fobjc-exceptions%> æ¥å¯ç”¨ Objective-C 异常语法"
#: objc/objc-act.c:3794
#, gcc-internal-format
msgid "@catch parameter is not a known Objective-C class type"
-msgstr ""
+msgstr "@catch å‚æ•°ä¸æ˜¯ä¸€ä¸ªå·²çŸ¥çš„ Objective-C 类类型"
#: objc/objc-act.c:3810
#, gcc-internal-format
@@ -29192,7 +29098,7 @@ msgstr "%<@try%> 缺少对应的 %<@catch%> 或 %<@finally%>"
#: objc/objc-act.c:3913
#, gcc-internal-format
msgid "%<@throw%> (rethrow) used outside of a @catch block"
-msgstr ""
+msgstr "在 @catch å—外使用 %<@throw%> (rethrow)"
#: objc/objc-act.c:4311
#, gcc-internal-format
@@ -29257,7 +29163,7 @@ msgstr "(消æ¯ç¼ºå°‘匹é…的方法签å"
#: objc/objc-act.c:6436
#, gcc-internal-format
msgid "will be assumed to return %<id%> and accept"
-msgstr ""
+msgstr "将被å‡å®šä¸ºè¿”回 %<id%> 并接å—"
#: objc/objc-act.c:6437
#, gcc-internal-format
@@ -29348,7 +29254,7 @@ msgstr "实例å˜é‡ %qs 被声明为ç§æœ‰çš„"
#: objc/objc-act.c:7220
#, gcc-internal-format
msgid "instance variable %qs is %s; this will be a hard error in the future"
-msgstr ""
+msgstr "实例å˜é‡ %qs 是 %s;这在将æ¥ä¼šæ˜¯ä¸€ä¸ªä¸¥é‡çš„错误"
#: objc/objc-act.c:7227
#, gcc-internal-format
@@ -29383,7 +29289,7 @@ msgstr "实现上下文中缺少 %<@end%> "
#: objc/objc-act.c:7469
#, gcc-internal-format
msgid "cannot find interface declaration for %qs, superclass of %qs"
-msgstr ""
+msgstr "找ä¸åˆ° %qs,%qs 的超类的接å£å£°æ˜Ž"
#: objc/objc-act.c:7499
#, gcc-internal-format
@@ -29429,7 +29335,7 @@ msgstr "[super ...] 必须出现在方法上下文中"
#: objc/objc-act.c:8780
#, gcc-internal-format
msgid "method possibly missing a [super dealloc] call"
-msgstr ""
+msgstr "方法å¯èƒ½ç¼ºå°‘一个 [super dealloc] 调用"
#: objc/objc-act.c:9408
#, gcc-internal-format
diff --git a/gcc/regrename.c b/gcc/regrename.c
index 06b1c5b7480..2d07484859f 100644
--- a/gcc/regrename.c
+++ b/gcc/regrename.c
@@ -1408,7 +1408,7 @@ replace_oldest_value_reg (rtx *loc, enum reg_class cl, rtx insn,
fprintf (dump_file, "insn %u: replaced reg %u with %u\n",
INSN_UID (insn), REGNO (*loc), REGNO (new));
- *loc = new;
+ validate_change (insn, loc, new, 1);
return true;
}
return false;
@@ -1574,8 +1574,9 @@ copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd)
for (insn = BB_HEAD (bb); ; insn = NEXT_INSN (insn))
{
int n_ops, i, alt, predicated;
- bool is_asm;
+ bool is_asm, any_replacements;
rtx set;
+ bool replaced[MAX_RECOG_OPERANDS];
if (! INSN_P (insn))
{
@@ -1687,11 +1688,13 @@ copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd)
}
no_move_special_case:
+ any_replacements = false;
+
/* For each input operand, replace a hard register with the
eldest live copy that's in an appropriate register class. */
for (i = 0; i < n_ops; i++)
{
- bool replaced = false;
+ replaced[i] = false;
/* Don't scan match_operand here, since we've no reg class
information to pass down. Any operands that we could
@@ -1708,37 +1711,57 @@ copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd)
if (recog_data.operand_type[i] == OP_IN)
{
if (recog_op_alt[i][alt].is_address)
- replaced
+ replaced[i]
= replace_oldest_value_addr (recog_data.operand_loc[i],
recog_op_alt[i][alt].cl,
VOIDmode, insn, vd);
else if (REG_P (recog_data.operand[i]))
- replaced
+ replaced[i]
= replace_oldest_value_reg (recog_data.operand_loc[i],
recog_op_alt[i][alt].cl,
insn, vd);
else if (MEM_P (recog_data.operand[i]))
- replaced = replace_oldest_value_mem (recog_data.operand[i],
- insn, vd);
+ replaced[i] = replace_oldest_value_mem (recog_data.operand[i],
+ insn, vd);
}
else if (MEM_P (recog_data.operand[i]))
- replaced = replace_oldest_value_mem (recog_data.operand[i],
- insn, vd);
+ replaced[i] = replace_oldest_value_mem (recog_data.operand[i],
+ insn, vd);
/* If we performed any replacement, update match_dups. */
- if (replaced)
+ if (replaced[i])
{
int j;
rtx new;
- changed = true;
-
new = *recog_data.operand_loc[i];
recog_data.operand[i] = new;
for (j = 0; j < recog_data.n_dups; j++)
if (recog_data.dup_num[j] == i)
- *recog_data.dup_loc[j] = new;
+ validate_change (insn, recog_data.dup_loc[j], new, 1);
+
+ any_replacements = true;
+ }
+ }
+
+ if (any_replacements)
+ {
+ if (! apply_change_group ())
+ {
+ for (i = 0; i < n_ops; i++)
+ if (replaced[i])
+ {
+ rtx old = *recog_data.operand_loc[i];
+ recog_data.operand[i] = old;
+ }
+
+ if (dump_file)
+ fprintf (dump_file,
+ "insn %u: reg replacements not verified\n",
+ INSN_UID (insn));
}
+ else
+ changed = true;
}
did_replacement:
diff --git a/gcc/reload.c b/gcc/reload.c
index 78bd4adc2b9..5cf2377aaf9 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -5970,7 +5970,7 @@ find_reloads_subreg_address (rtx x, int force_replace, int opnum,
/* If this was a paradoxical subreg that we replaced, the
resulting memory must be sufficiently aligned to allow
us to widen the mode of the memory. */
- if (outer_size > inner_size && STRICT_ALIGNMENT)
+ if (outer_size > inner_size)
{
rtx base;
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 7a43e049b59..185e3f23eb1 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -3232,8 +3232,8 @@ eliminate_regs_in_insn (rtx insn, int replace)
|| GET_CODE (SET_SRC (old_set)) == PLUS))
{
int new_icode = recog (PATTERN (insn), insn, 0);
- if (new_icode < 0)
- INSN_CODE (insn) = icode;
+ if (new_icode >= 0)
+ INSN_CODE (insn) = new_icode;
}
}
diff --git a/gcc/stmt.c b/gcc/stmt.c
index ad75392010b..02ec490d928 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -2104,10 +2104,12 @@ add_case_node (struct case_node *head, tree type, tree low, tree high,
}
- /* Add this label to the chain. */
+ /* Add this label to the chain. Make sure to drop overflow flags. */
r = ggc_alloc (sizeof (struct case_node));
- r->low = low;
- r->high = high;
+ r->low = build_int_cst_wide (TREE_TYPE (low), TREE_INT_CST_LOW (low),
+ TREE_INT_CST_HIGH (low));
+ r->high = build_int_cst_wide (TREE_TYPE (high), TREE_INT_CST_LOW (high),
+ TREE_INT_CST_HIGH (high));
r->code_label = label;
r->parent = r->left = NULL;
r->right = head;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7a03466c5fb..4d1def018df 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,241 @@
+2006-01-04 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/24782
+ * g++.dg/parse/access9.C: New test.
+ * g++.dg/tc1/dr52.C: Tweak error markers.
+
+2006-01-04 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/other/i386-2.C: New test.
+
+ PR target/25554
+ * gcc.c-torture/compile/20051228-1.c: New test.
+
+ PR c/25559
+ * gcc.dg/pr25559.c: New test.
+
+2006-01-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/25492
+ * g++.dg/lookup/friend9.C: New test.
+
+ PR c++/25625
+ * g++.dg/template/repo5.C: New test.
+
+2006-01-03 Richard Guenther <rguenther@suse.de>
+
+ PR c/25183
+ * gcc.dg/torture/pr25183.c: New testcase.
+
+2006-01-02 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/25635
+ * g++.dg/parse/operator6.C: New test.
+
+ PR c++/25637
+ * g++.dg/parse/error29.C: New test.
+
+ PR c++/25638
+ * g++.dg/parse/dtor6.C: New test.
+
+ PR c++/25633
+ * g++.dg/parse/ctor3.C: New test.
+
+ PR c++/25634
+ * g++.dg/template/class3.C: New test.
+
+2006-01-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ * g++.dg/lookup/using12.C: Tighten error marker.
+
+2006-01-02 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ * g++.dg/other/friend4.C: New test.
+
+2005-12-28 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/25419
+ * gfortran.dg/comma.f: New test.
+
+2005-12-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/25550
+ * gfortran.dg/endfile.f: New test.
+
+2005-12-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/25139
+ * gfortran.dg/backspace_2.f: New test.
+
+2006-01-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/25294
+ * gcc.dg/pragma-pack-3.c: New test.
+ * g++.dg/parse/pragma3.C: New test.
+
+2005-12-31 Steven G. Kargl <kargls@comcast.net>
+
+ PR fortran/25106
+ PR fortran/25055
+ * gfortran.dg/label_1.f90: New test.
+
+2005-12-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR middle-end/24827
+ * gcc.dg/attr-weakref-1.c: Skip test on hppa*-*-hpux*.
+
+2005-12-30 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ PR testsuite/25214
+ * gcc.target/i386/local2.c: Skip if ilp32 and -fpic/-fpic.
+
+2005-12-30 Erik Edelmann <eedelman@gcc.gnu.org>
+
+ PR fortran/22607
+ * gfortran-dg/pure_byref_3.f90: New.
+
+ fortran/PR 25396
+ * gfortran.dg/userdef_operator_1.f90: New.
+
+2005-12-30 Hans-Peter Nilsson <hp@axis.com>
+
+ * g++.old-deja/g++.other/comdat5.C: Gate on target fpic.
+
+2005-12-29 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/25532
+ *gfortran.dg/host_used_types_1.f90: New test. Check that host
+ associated derived type components of derived types are
+ properly declared in contained procedures.
+
+2005-12-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * g++.dg/rtti/tinfo1.C: Scan for ".global" also.
+
+ PR testsuite/25442
+ * gcc.dg/ipa/ipa-1.c, gcc.dg/ipa/ipa-2.c, gcc.dg/ipa/ipa-3.c,
+ gcc.dg/ipa/ipa-4.c, gcc.dg/ipa/ipa-5.c: Skip if -fpic/-fPIC.
+
+ PR testsuite/25441
+ * gcc.dg/pr23911.c: Make test variable static.
+
+ PR testsuite/25444
+ * gcc.dg/tree-ssa/pr14841.c: Likewise.
+
+2005-12-26 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/23172
+ * g++.dg/ext/complit4.C: New test.
+
+ PR c++/25417
+ * g++.dg/ext/complit5.C: Likewise.
+
+2005-12-26 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/25439
+ * g++.dg/parse/crash17.C: Adjust error markers.
+ * g++.dg/template/error20.C: New test.
+
+2005-12-26 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/20889
+ * gfortran.dg/pointer_component_type_1.f90: New test.
+
+ PR fortran/25018
+ * gfortran.dg/initialization_1.f90: New test.
+ * gfortran.dg/enum_5.f90: Change dg-error to new message.
+ * gfortran.dg/g77/980616-0.f: The same.
+
+ PR fortran/19362
+ PR fortran/20244
+ PR fortran/20864
+ PR fortran/25391
+ * gfortran.dg/used_dummy_types_1.f90: New test.
+ * gfortran.dg/used_dummy_types_2.f90: New test.
+ * gfortran.dg/used_dummy_types_3.f90: New test.
+ * gfortran.dg/used_dummy_types_4.f90: New test.
+ * gfortran.dg/used_dummy_types_5.f90: New test.
+
+ PR fortran/23152
+ * gfortran.dg/namelist_use.f90: Add trap for warning on NAMELIST
+ group already being USE associated.
+ * gfortran.dg/assumed_shape_nml.f90: New test.
+ * gfortran.dg/assumed_size_nml.f90: New test.
+
+ PR fortran/20862
+ PR fortran/25053
+ PR fortran/25063
+ PR fortran/25064
+ PR fortran/25066
+ PR fortran/25067
+ PR fortran/25068
+ PR fortran/25307
+ * gfortran.dg/io_constraints_1.f90: New test.
+ * gfortran.dg/io_constraints_1.f90: New test.
+ * gfortran.dg/iostat_3.f90: Change wording of warning.
+ * gfortran.dg/g77/19981216-0.f: the same.
+
+2005-12-24 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
+
+ PR fortran/18990
+ * gfortran.dg/der_charlen_1.f90: New.
+
+2005-12-24 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/23171
+ * g++.dg/opt/init1.C: New test.
+
+2005-12-23 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/24671
+ * g++.dg/template/sfinae3.C: New test.
+
+2005-12-23 Ulrich Weigand <uweigand@de.ibm.com>
+
+ PR rtl-optimization/21041
+ * gcc.dg/pr21041.c: New test.
+
+2005-12-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR target/25005
+ * g++.dg/opt/pr25005.C: New test.
+
+2005-12-22 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/25369
+ * g++.dg/template/ptrmem16.C: New test.
+
+2005-12-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/25307
+ * gfortran.dg/list_read_5.f90: New test.
+
+2005-12-23 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/25432
+ * gcc.c-torture/compile/20051216-1.c: New test.
+
+ PR objc/25328
+ * objc/execute/pr25328.m: New test.
+
+2005-12-22 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/25364
+ * g++.dg/template/call4.C: New test.
+
+2005-12-22 Paul Brook <paul@codesourcery.com>
+
+ * gcc.dg/weak/typeof-2.c: Skip assembly test on m68k.
+
+2005-12-22 Paul Brook <paul@codesourcery.com>
+
+ * gcc.dg/tree-ssa/loop-1.c: Look for jump/branch on m68k.
+
+2005-12-22 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR tree-opt/25513
+ * gcc.c-torture/compile/pr25513.c: New test.
+
2005-12-22 Steven G. Kargl <kargls@comcast.net>
* Finishing committing the last commit.
diff --git a/gcc/testsuite/g++.dg/ext/complit4.C b/gcc/testsuite/g++.dg/ext/complit4.C
new file mode 100644
index 00000000000..1448e7a66b3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/complit4.C
@@ -0,0 +1,10 @@
+// PR c++/23172
+// { dg-do run }
+// { dg-options "" }
+
+int i = (int) {7};
+
+int main () {
+ if (i != 7)
+ return 1;
+}
diff --git a/gcc/testsuite/g++.dg/ext/complit5.C b/gcc/testsuite/g++.dg/ext/complit5.C
new file mode 100644
index 00000000000..c406c998046
--- /dev/null
+++ b/gcc/testsuite/g++.dg/ext/complit5.C
@@ -0,0 +1,12 @@
+// PR c++/25417
+// { dg-options "" }
+
+struct object {
+ int a;
+ int b;
+};
+
+void f (int c, int d)
+{
+ object o = ((object){ a : c, b : d});
+}
diff --git a/gcc/testsuite/g++.dg/lookup/friend9.C b/gcc/testsuite/g++.dg/lookup/friend9.C
new file mode 100644
index 00000000000..caf685c3ece
--- /dev/null
+++ b/gcc/testsuite/g++.dg/lookup/friend9.C
@@ -0,0 +1,23 @@
+// PR c++/25492
+
+class Base {
+public:
+ class Nested {};
+};
+
+class Derived:public Base {
+public:
+ class Nested {
+ public:
+ void m();
+ };
+ class AnotherNested {
+ friend class Nested;
+ AnotherNested() {}
+ };
+};
+
+void Derived::Nested::m() {
+ Derived::AnotherNested instance;
+
+}
diff --git a/gcc/testsuite/g++.dg/lookup/using12.C b/gcc/testsuite/g++.dg/lookup/using12.C
index 030385581a5..4aa5ce68180 100644
--- a/gcc/testsuite/g++.dg/lookup/using12.C
+++ b/gcc/testsuite/g++.dg/lookup/using12.C
@@ -1,4 +1,4 @@
// PR c++/16707
int i;
-using N::i; // { dg-error "declared|expected" }
+using N::i; // { dg-error "'N' has not been declared" }
diff --git a/gcc/testsuite/g++.dg/opt/init1.C b/gcc/testsuite/g++.dg/opt/init1.C
new file mode 100644
index 00000000000..d9a139e72a8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/init1.C
@@ -0,0 +1,4 @@
+// PR c++/23171
+// { dg-options "-O" }
+
+int *p = (int*)(int[1]){0};
diff --git a/gcc/testsuite/g++.dg/opt/pr25005.C b/gcc/testsuite/g++.dg/opt/pr25005.C
new file mode 100644
index 00000000000..f62f8a2bcee
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/pr25005.C
@@ -0,0 +1,34 @@
+// PR target/25005
+// { dg-options "-O2 -funroll-loops" }
+// { dg-do compile }
+
+inline void *operator new (__SIZE_TYPE__, void *__p) throw() { return __p; }
+
+struct M { ~M() { } };
+
+struct P
+{
+ P () { v[0] = 0; v[1] = 0; v[2] = 0; }
+ P (const P &x) { for (int i = 0; i < 3; ++i) v[i] = x.v[i]; }
+ double v[3];
+};
+
+struct V : public M
+{
+ V (const P *x, const P *y)
+ {
+ P *b = this->a = ::new P[2];
+ for (; x != y; ++x, ++b)
+ ::new (b) P(*x);
+ }
+ P *a;
+};
+
+void bar (const V &);
+
+void
+foo ()
+{
+ const P d[2] = { P(), P() };
+ bar (V (&d[0], &d[2]));
+}
diff --git a/gcc/testsuite/g++.dg/other/friend4.C b/gcc/testsuite/g++.dg/other/friend4.C
new file mode 100644
index 00000000000..537643df954
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/friend4.C
@@ -0,0 +1,8 @@
+// Origin: Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+// Misleading diagnostic
+
+struct A
+{
+ friend void A::foo(); // { dg-error "implicitly friends" }
+ friend A::~A(); // { dg-error "implicitly friends" }
+};
diff --git a/gcc/testsuite/g++.dg/other/i386-2.C b/gcc/testsuite/g++.dg/other/i386-2.C
new file mode 100644
index 00000000000..b988f9d93da
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/i386-2.C
@@ -0,0 +1,12 @@
+/* Test that {,x,e,p}mmintrin.h and mm_malloc.h are
+ usable with -pedantic-errors. */
+/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
+/* { dg-options "-pedantic-errors -msse3" } */
+
+#include <mmintrin.h>
+#include <xmmintrin.h>
+#include <emmintrin.h>
+#include <pmmintrin.h>
+#include <mm_malloc.h>
+
+int dummy;
diff --git a/gcc/testsuite/g++.dg/parse/access9.C b/gcc/testsuite/g++.dg/parse/access9.C
new file mode 100644
index 00000000000..2c29016b047
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/access9.C
@@ -0,0 +1,5 @@
+// PR c++/24782
+
+class Foo { public: typedef int type1; };
+class Bar { private: typedef Foo type2; }; // { dg-error "private" }
+void g(Bar::type2::type1) {} // { dg-error "context" }
diff --git a/gcc/testsuite/g++.dg/parse/crash17.C b/gcc/testsuite/g++.dg/parse/crash17.C
index bdc66399f27..e50f07af4a8 100644
--- a/gcc/testsuite/g++.dg/parse/crash17.C
+++ b/gcc/testsuite/g++.dg/parse/crash17.C
@@ -5,5 +5,5 @@ template <typename> class allocator;
template<typename T> class vector {
// With the dg-error on the next line, we are really just trying to
// check that the message is not an ICE message.
- typedef typename allocator<T> allocator_type; // { dg-error "expected|forbids" }
+ typedef typename allocator<T> allocator_type; // { dg-error "expected|invalid" }
};
diff --git a/gcc/testsuite/g++.dg/parse/ctor3.C b/gcc/testsuite/g++.dg/parse/ctor3.C
new file mode 100644
index 00000000000..193ffae24fe
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/ctor3.C
@@ -0,0 +1,8 @@
+// PR c++/25633
+
+struct A {};
+
+struct B : A
+{
+ B() : A {} // { dg-error "expected" }
+};
diff --git a/gcc/testsuite/g++.dg/parse/dtor6.C b/gcc/testsuite/g++.dg/parse/dtor6.C
new file mode 100644
index 00000000000..3333161c399
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/dtor6.C
@@ -0,0 +1,8 @@
+// PR c++/25638
+
+struct A { ~A(); }; // { dg-error "candidate" }
+
+struct B : A
+{
+ template<int> friend A::~A(); // { dg-error "match" }
+};
diff --git a/gcc/testsuite/g++.dg/parse/error29.C b/gcc/testsuite/g++.dg/parse/error29.C
new file mode 100644
index 00000000000..b50b275a9e6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/error29.C
@@ -0,0 +1,12 @@
+// PR c++/25637
+
+struct A {
+ void foo();
+ A();
+ void operator delete(void *);
+};
+struct B {
+ friend void A::foo() {} // { dg-error "define" }
+ friend void A::operator delete(void*) {} // { dg-error "define" }
+ friend A::A() {} // { dg-error "define" }
+};
diff --git a/gcc/testsuite/g++.dg/parse/operator6.C b/gcc/testsuite/g++.dg/parse/operator6.C
new file mode 100644
index 00000000000..e58a3a682c3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/operator6.C
@@ -0,0 +1,5 @@
+// PR c++/25635
+
+struct A {};
+
+A::operator int(); // { dg-error "class" }
diff --git a/gcc/testsuite/g++.dg/parse/pragma3.C b/gcc/testsuite/g++.dg/parse/pragma3.C
new file mode 100644
index 00000000000..36d7a8c6284
--- /dev/null
+++ b/gcc/testsuite/g++.dg/parse/pragma3.C
@@ -0,0 +1,26 @@
+// PR c++/25294
+// { dg-do run }
+
+extern "C" void abort (void);
+
+struct S
+{
+ char a[3];
+#pragma pack(1) /* A block comment
+ that ends on the next line. */
+ struct T
+ {
+ char b;
+ int c;
+ } d;
+#pragma pack /*/ */ () // C++ comment
+ int e;
+} s;
+
+int
+main ()
+{
+ if (sizeof (int) == 4 && sizeof (s) != 12)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/g++.dg/rtti/tinfo1.C b/gcc/testsuite/g++.dg/rtti/tinfo1.C
index 037ee35fc8f..bd379aacef3 100644
--- a/gcc/testsuite/g++.dg/rtti/tinfo1.C
+++ b/gcc/testsuite/g++.dg/rtti/tinfo1.C
@@ -1,7 +1,7 @@
// Test if a local definition is in a linkonce/comdat section.
// { dg-do compile }
// { dg-final { scan-assembler "_ZTIP9CTemplateIhE\[: \t\n\]" } }
-// { dg-final { scan-assembler-not ".globl\[ \]+_ZTIP9CTemplateIhE" } }
+// { dg-final { scan-assembler-not "(.globl|.global)\[ \]+_ZTIP9CTemplateIhE" } }
// { dg-final { scan-assembler-not ".section\[^\n\r\]*_ZTIP9CTemplateIhE\[^\n\r\]*" } }
diff --git a/gcc/testsuite/g++.dg/tc1/dr52.C b/gcc/testsuite/g++.dg/tc1/dr52.C
index b0896d73fa7..4f4015dc958 100644
--- a/gcc/testsuite/g++.dg/tc1/dr52.C
+++ b/gcc/testsuite/g++.dg/tc1/dr52.C
@@ -17,7 +17,7 @@ struct B1 : B {};
struct B2 : B {};
struct C
-{
+{ // { dg-error "C" }
void foo(void);
};
@@ -29,6 +29,6 @@ public:
void bar(void)
{
this->B::foo(); // { dg-error "" }
- this->C::foo(); // { dg-error "" }
+ this->C::foo(); // { dg-error "inaccessible|context" }
}
};
diff --git a/gcc/testsuite/g++.dg/template/call4.C b/gcc/testsuite/g++.dg/template/call4.C
new file mode 100644
index 00000000000..1f7eb4c8208
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/call4.C
@@ -0,0 +1,21 @@
+// PR c++/25364
+
+class OFX_PropertySuiteV1
+{
+ static int propGetDouble ();
+};
+template<int dimension,
+ class T,
+ int (*PROPGET)()
+ >
+struct OFX_AnimatedNumberParam
+{
+ virtual int paramSetValueAtTime()
+ {
+ return PROPGET();
+ }
+};
+void f()
+{
+ new OFX_AnimatedNumberParam<2,double,OFX_PropertySuiteV1::propGetDouble>();
+}
diff --git a/gcc/testsuite/g++.dg/template/class3.C b/gcc/testsuite/g++.dg/template/class3.C
new file mode 100644
index 00000000000..44a02a60bd5
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/class3.C
@@ -0,0 +1,2 @@
+// PR c++/25634
+template<int> template<int> struct A; // { dg-error "too many" }
diff --git a/gcc/testsuite/g++.dg/template/error20.C b/gcc/testsuite/g++.dg/template/error20.C
new file mode 100644
index 00000000000..f81378fdb61
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/error20.C
@@ -0,0 +1,4 @@
+// PR c++/25439
+
+template<int> struct A;
+template<> int A<0>; // { dg-error "invalid" }
diff --git a/gcc/testsuite/g++.dg/template/ptrmem16.C b/gcc/testsuite/g++.dg/template/ptrmem16.C
new file mode 100644
index 00000000000..caf5dd0f227
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/ptrmem16.C
@@ -0,0 +1,22 @@
+// PR c++/25369
+// { dg-do link }
+
+template <typename> struct A
+{
+ void foo() {}
+};
+
+void bar(void (A<int>::*)()) {}
+
+template <int> void baz()
+{
+ bar(&A<int>::foo);
+}
+
+int main()
+{
+ baz<0>();
+ return 0;
+}
+
+
diff --git a/gcc/testsuite/g++.dg/template/repo5.C b/gcc/testsuite/g++.dg/template/repo5.C
new file mode 100644
index 00000000000..5b76f43f733
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/repo5.C
@@ -0,0 +1,11 @@
+// PR c++/25625
+// { dg-options "-frepo" }
+
+template< typename T, T N > struct integral_c {
+ static const T value = N;
+ typedef integral_c< T, value + 1 > next;
+};
+template< typename T, T N > T const integral_c< T, N >::value;
+integral_c<int,0> a;
+
+int main () {}
diff --git a/gcc/testsuite/g++.dg/template/sfinae3.C b/gcc/testsuite/g++.dg/template/sfinae3.C
new file mode 100644
index 00000000000..8d141ea0ad1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/sfinae3.C
@@ -0,0 +1,17 @@
+// PR c++/24671
+// { dg-options "" }
+
+template<typename> struct A
+{
+ typedef int X;
+ static const int i = 0;
+};
+
+template<typename> struct B
+{
+ B(const B&); // { dg-error "candidate" }
+ typedef typename A<char[A<B>::i]>::X Y;
+ template<typename T> B(T, Y); // { dg-error "call" }
+};
+
+B<int> b(0,0);
diff --git a/gcc/testsuite/g++.old-deja/g++.other/comdat5.C b/gcc/testsuite/g++.old-deja/g++.other/comdat5.C
index 7301e541fc7..5c2baa389e2 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/comdat5.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/comdat5.C
@@ -1,5 +1,5 @@
// PR target/17828
-// { dg-do link }
+// { dg-do link { target fpic } }
// { dg-additional-sources " comdat5-aux.cc" }
// { dg-options "-O2 -fPIC" }
diff --git a/gcc/testsuite/gcc.c-torture/compile/20051216-1.c b/gcc/testsuite/gcc.c-torture/compile/20051216-1.c
new file mode 100644
index 00000000000..ed6ac723069
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20051216-1.c
@@ -0,0 +1,131 @@
+/* PR rtl-optimization/25432 */
+
+void *malloc (__SIZE_TYPE__);
+void *realloc (void *, __SIZE_TYPE__);
+
+struct A { double x, y; };
+struct B { double x0, y0, x1, y1; };
+struct C { int n_points; int dir; struct B bbox; struct A *points; };
+struct D { int n_segs; struct C segs[1]; };
+
+void foo (int, int, int *, int, int *, struct A **, int *, int *,
+ struct D *, int *, struct D **, int *, int **);
+int baz (struct A, struct A, struct A, struct A);
+
+static void
+bar (struct D *svp, int *n_points_max,
+ struct A p, int *seg_map, int *active_segs, int i)
+{
+ int asi, n_points;
+ struct C *seg;
+
+ asi = seg_map[active_segs[i]];
+ seg = &svp->segs[asi];
+ n_points = seg->n_points;
+ seg->points = ((struct A *)
+ realloc (seg->points, (n_points_max[asi] <<= 1) * sizeof (struct A)));
+ seg->points[n_points] = p;
+ seg->bbox.y1 = p.y;
+ seg->n_points++;
+}
+
+struct D *
+test (struct D *vp)
+{
+ int *active_segs, n_active_segs, *cursor, seg_idx;
+ double y, share_x;
+ int tmp1, tmp2, asi, i, j, *n_ips, *n_ips_max, n_segs_max;
+ struct A **ips, p_curs, *pts;
+ struct D *new_vp;
+ int *n_points_max, *seg_map, first_share;
+
+ n_segs_max = 16;
+ new_vp = (struct D *) malloc (sizeof (struct D) +
+ (n_segs_max - 1) * sizeof (struct C));
+ new_vp->n_segs = 0;
+
+ if (vp->n_segs == 0)
+ return new_vp;
+
+ active_segs = ((int *) malloc ((vp->n_segs) * sizeof (int)));
+ cursor = ((int *) malloc ((vp->n_segs) * sizeof (int)));
+
+ seg_map = ((int *) malloc ((vp->n_segs) * sizeof (int)));
+ n_ips = ((int *) malloc ((vp->n_segs) * sizeof (int)));
+ n_ips_max = ((int *) malloc ((vp->n_segs) * sizeof (int)));
+ ips = ((struct A * *) malloc ((vp->n_segs) * sizeof (struct A *)));
+
+ n_points_max = ((int *) malloc ((n_segs_max) * sizeof (int)));
+
+ n_active_segs = 0;
+ seg_idx = 0;
+ y = vp->segs[0].points[0].y;
+ while (seg_idx < vp->n_segs || n_active_segs > 0)
+ {
+ for (i = 0; i < n_active_segs; i++)
+ {
+ asi = active_segs[i];
+ if (vp->segs[asi].n_points - 1 == cursor[asi] &&
+ vp->segs[asi].points[cursor[asi]].y == y)
+ i--;
+ }
+
+ while (seg_idx < vp->n_segs && y == vp->segs[seg_idx].points[0].y)
+ {
+ cursor[seg_idx] = 0;
+ n_ips[seg_idx] = 1;
+ n_ips_max[seg_idx] = 2;
+ ips[seg_idx] =
+ ((struct A *) malloc ((n_ips_max[seg_idx]) * sizeof (struct A)));
+ ips[seg_idx][0] = vp->segs[seg_idx].points[0];
+ pts = ((struct A *) malloc ((16) * sizeof (struct A)));
+ pts[0] = vp->segs[seg_idx].points[0];
+ tmp1 = seg_idx;
+ for (j = i; j < n_active_segs; j++)
+ {
+ tmp2 = active_segs[j];
+ active_segs[j] = tmp1;
+ tmp1 = tmp2;
+ }
+ active_segs[n_active_segs] = tmp1;
+ n_active_segs++;
+ seg_idx++;
+ }
+ first_share = -1;
+ share_x = 0;
+
+ for (i = 0; i < n_active_segs; i++)
+ {
+ asi = active_segs[i];
+ p_curs = ips[asi][1];
+ if (p_curs.y == y)
+ {
+ bar (new_vp, n_points_max,
+ p_curs, seg_map, active_segs, i);
+
+ n_ips[asi]--;
+ for (j = 0; j < n_ips[asi]; j++)
+ ips[asi][j] = ips[asi][j + 1];
+
+ if (first_share < 0 || p_curs.x != share_x)
+ {
+ foo (first_share, i,
+ active_segs, n_active_segs,
+ cursor, ips, n_ips, n_ips_max, vp, seg_map,
+ &new_vp, &n_segs_max, &n_points_max);
+ first_share = i;
+ share_x = p_curs.x;
+ }
+ }
+ else
+ {
+ foo (first_share, i,
+ active_segs, n_active_segs,
+ cursor, ips, n_ips, n_ips_max, vp, seg_map,
+ &new_vp, &n_segs_max, &n_points_max);
+ first_share = -1;
+ }
+ }
+ }
+ return new_vp;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20051228-1.c b/gcc/testsuite/gcc.c-torture/compile/20051228-1.c
new file mode 100644
index 00000000000..e997ae3946b
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20051228-1.c
@@ -0,0 +1,10 @@
+/* PR target/25554 */
+/* Bitwise shift with negative shift count has undefined behavior,
+ but we shouldn't ICE on it. */
+
+void
+foo (long x)
+{
+ if (((x >> -2) & 1) != 0)
+ bar ();
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr25513.c b/gcc/testsuite/gcc.c-torture/compile/pr25513.c
new file mode 100644
index 00000000000..d2aa591fe21
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr25513.c
@@ -0,0 +1,9 @@
+int f(void)
+{
+ static _Complex double t;
+ int i, j;
+ for(i = 0;i<2;i++)
+ for(j = 0;j<2;j++)
+ t = .5 * 1.0;
+ return t;
+}
diff --git a/gcc/testsuite/gcc.dg/attr-weakref-1.c b/gcc/testsuite/gcc.dg/attr-weakref-1.c
index c47ce1e569b..46158bb1095 100644
--- a/gcc/testsuite/gcc.dg/attr-weakref-1.c
+++ b/gcc/testsuite/gcc.dg/attr-weakref-1.c
@@ -1,5 +1,9 @@
// { dg-do run }
// { dg-require-weak "" }
+// This test requires support for undefined weak symbols. This support
+// is not available on hppa*-*-hpux*. The test is skipped rather than
+// xfailed to suppress the warning that would otherwise arise.
+// { dg-skip-if "" { "hppa*-*-hpux*" } "*" { "" } }
// { dg-options "-O2" }
// { dg-additional-sources "attr-weakref-1a.c" }
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-1.c b/gcc/testsuite/gcc.dg/ipa/ipa-1.c
index d8f737a380c..cdac76e701a 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-1.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-1.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp" } */
+/* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
#include <stdio.h>
int g (int b, int c)
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-2.c b/gcc/testsuite/gcc.dg/ipa/ipa-2.c
index e614b595119..6255e5c1f45 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-2.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-2.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp" } */
+/* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
#include <stdio.h>
int g (int b, int c)
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-3.c b/gcc/testsuite/gcc.dg/ipa/ipa-3.c
index b4bf394b4e0..5abe16ea7cd 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-3.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-3.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp" } */
+/* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
/* Double constants. */
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-4.c b/gcc/testsuite/gcc.dg/ipa/ipa-4.c
index edb15a81b8b..ffb1e838ece 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-4.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-4.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp" } */
+/* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
#include <stdio.h>
int g (int b, int c)
diff --git a/gcc/testsuite/gcc.dg/ipa/ipa-5.c b/gcc/testsuite/gcc.dg/ipa/ipa-5.c
index efb08da3004..c99079de694 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipa-5.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipa-5.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O3 -fipa-cp -fdump-ipa-cp" } */
+/* { dg-skip-if "PR 25442" { "*-*-*" } { "-fpic" "-fPIC" } { "" } } */
/* Float & short constants. */
diff --git a/gcc/testsuite/gcc.dg/pr21041.c b/gcc/testsuite/gcc.dg/pr21041.c
new file mode 100644
index 00000000000..34ed14d1e8b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr21041.c
@@ -0,0 +1,42 @@
+
+/* { dg-do compile { target fpic } } */
+/* { dg-options "-O2 -fPIC" } */
+
+struct args
+{
+ short int matrix[8][8];
+ char **current;
+};
+
+int test (struct args *args, char *init, int a, int b)
+{
+ int i, j, k;
+
+ if (!args || a > b || a < 0)
+ return -1;
+
+ for (i = 0; i < 2; i++)
+ {
+ char *dest = *args->current;
+ char *p = dest;
+
+ for (j = 0; j < 8; j++)
+ *p++ = *init++;
+
+ for (k = 0; k < 8; k++)
+ {
+ short int *blockvals = &args->matrix[k][0];
+ dest[0] += blockvals[0];
+ dest[1] += blockvals[1];
+ dest[2] += blockvals[2];
+ dest[3] += blockvals[3];
+ dest[4] += blockvals[4];
+ dest[5] += blockvals[5];
+ dest[6] += blockvals[6];
+ dest[7] += blockvals[7];
+ }
+ }
+
+ return 1;
+}
+
diff --git a/gcc/testsuite/gcc.dg/pr23911.c b/gcc/testsuite/gcc.dg/pr23911.c
index 1003075b39d..9c8fad341ba 100644
--- a/gcc/testsuite/gcc.dg/pr23911.c
+++ b/gcc/testsuite/gcc.dg/pr23911.c
@@ -4,7 +4,7 @@
/* { dg-options "-O2 -fdump-tree-store_ccp" } */
double _Complex *a;
-const double _Complex b[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
+static const double _Complex b[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
void
test (void)
diff --git a/gcc/testsuite/gcc.dg/pr25559.c b/gcc/testsuite/gcc.dg/pr25559.c
new file mode 100644
index 00000000000..7879a1558b6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr25559.c
@@ -0,0 +1,10 @@
+/* PR c/25559 */
+/* { dg-do compile } */
+
+#define vs(n) __attribute__((vector_size (n)))
+int vs (-1) a; /* { dg-warning "attribute ignored" } */
+int vs (0) b; /* { dg-error "zero vector size" } */
+int vs (1) c; /* { dg-error "multiple of component size" } */
+int vs (sizeof (int) / 2) d; /* { dg-error "multiple of component size" } */
+int vs (sizeof (int)) e;
+int vs (sizeof (int) * 2) f;
diff --git a/gcc/testsuite/gcc.dg/pragma-pack-3.c b/gcc/testsuite/gcc.dg/pragma-pack-3.c
new file mode 100644
index 00000000000..e276bd007fe
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pragma-pack-3.c
@@ -0,0 +1,27 @@
+/* PR c++/25294 */
+/* { dg-options "-std=gnu99" } */
+/* { dg-do run } */
+
+extern void abort (void);
+
+struct S
+{
+ char a[3];
+#pragma pack(1) /* A block comment
+ that ends on the next line. */
+ struct T
+ {
+ char b;
+ int c;
+ } d;
+#pragma pack /*/ */ () // C++ comment
+ int e;
+} s;
+
+int
+main ()
+{
+ if (sizeof (int) == 4 && sizeof (s) != 12)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr25183.c b/gcc/testsuite/gcc.dg/torture/pr25183.c
new file mode 100644
index 00000000000..a6c624cf472
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr25183.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "-pedantic" } */
+
+enum err {
+ err_IO = 0x8a450000, /* { dg-warning "int" } */
+ err_NM,
+ err_EOF,
+ err_SE,
+ err_PT
+};
+static enum err E_;
+int error()
+{
+ switch (E_) {
+ case err_IO : break; /* { dg-warning "overflow" } */
+ case err_NM : break; /* { dg-warning "overflow" } */
+ case err_EOF : break; /* { dg-warning "overflow" } */
+ case err_SE : break; /* { dg-warning "overflow" } */
+ case err_PT : break; /* { dg-warning "overflow" } */
+ default : return 0;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c b/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
index 1e144fdc082..011e55bbfbc 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
@@ -35,11 +35,13 @@ void xxx(void)
and to do the actual call - bsr is only generated by link time
relaxation. */
/* CRIS keeps the address in a register. */
+/* m68k sometimes puts the address in a register, depending on CPU and PIC. */
-/* { dg-final { scan-assembler-times "foo" 5 { xfail hppa*-*-* ia64*-*-* sh*-*-* cris-*-* } } } */
+/* { dg-final { scan-assembler-times "foo" 5 { xfail hppa*-*-* ia64*-*-* sh*-*-* cris-*-* m68k-*-* } } } */
/* { dg-final { scan-assembler-times "foo,%r" 5 { target hppa*-*-* } } } */
/* { dg-final { scan-assembler-times "= foo" 5 { target ia64*-*-* } } } */
/* { dg-final { scan-assembler-times "jsr|blink\ttr?,r18" 5 { target sh*-*-* } } } */
/* { dg-final { scan-assembler-times "Jsr \\\$r" 5 { target cris-*-* } } } */
+/* { dg-final { scan-assembler-times "\[jb\]sr" 5 { target m68k-*-* } } } */
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr14841.c b/gcc/testsuite/gcc.dg/tree-ssa/pr14841.c
index 4f9c759da90..05ceeb279e9 100644
--- a/gcc/testsuite/gcc.dg/tree-ssa/pr14841.c
+++ b/gcc/testsuite/gcc.dg/tree-ssa/pr14841.c
@@ -10,7 +10,7 @@ struct car {
int tire_pressure[4];
};
-const struct car cars[] = {
+static const struct car cars[] = {
{ 75, { 10, 20, 30, 40 } },
{ 35, { 12, 34, 56, 78 } },
{ 40, { 19, 28, 37, 46 } }
diff --git a/gcc/testsuite/gcc.dg/weak/typeof-2.c b/gcc/testsuite/gcc.dg/weak/typeof-2.c
index 53bb0ebfe54..9fbfaf0f140 100644
--- a/gcc/testsuite/gcc.dg/weak/typeof-2.c
+++ b/gcc/testsuite/gcc.dg/weak/typeof-2.c
@@ -37,4 +37,6 @@ int bar3 (int x)
// { dg-final { if [string match s390*-*-* $target_triplet ] {return} } }
// Likewise for CRIS targets.
// { dg-final { if [string match cris-*-* $target_triplet ] {return} } }
+// Likewise for m68k targets.
+// { dg-final { if [string match m68k-*-* $target_triplet ] {return} } }
// { dg-final { scan-assembler "baz3.*baz3.*baz3.*baz3.*baz3.*baz3" } }
diff --git a/gcc/testsuite/gcc.target/i386/local2.c b/gcc/testsuite/gcc.target/i386/local2.c
index 2225aeea0d9..28c89d9ce91 100644
--- a/gcc/testsuite/gcc.target/i386/local2.c
+++ b/gcc/testsuite/gcc.target/i386/local2.c
@@ -1,5 +1,6 @@
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-O2 -funit-at-a-time -fomit-frame-pointer" } */
+/* { dg-skip-if "PR 25214" { ilp32 } { "-fpic" "-fPIC" } { "" } } */
/* { dg-final { scan-assembler-not "sub\[^\\n\]*sp" } } */
static __attribute__ ((noinline)) q ();
diff --git a/gcc/testsuite/gfortran.dg/assumed_shape_nml.f90 b/gcc/testsuite/gfortran.dg/assumed_shape_nml.f90
new file mode 100644
index 00000000000..c2a8808ee8e
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_shape_nml.f90
@@ -0,0 +1,17 @@
+! { dg-do compile }
+! One of two tests for the fix of PR23152 - There used to be
+! no warning for assumed shape arrays in namelists.
+!
+! Conributed by Paul Thomas <pault@gcc.gnu.org>
+!
+program assumed_shape_nml
+ real, dimension (10) :: z
+ z = 42.0
+ call foo (z)
+contains
+ subroutine foo (y)
+ real, DIMENSION (1:) :: y
+ namelist /mynml/ y ! { dg-warning "is an extension" }
+ write (*, mynml)
+ end subroutine foo
+end program assumed_shape_nml
diff --git a/gcc/testsuite/gfortran.dg/assumed_size_nml.f90 b/gcc/testsuite/gfortran.dg/assumed_size_nml.f90
new file mode 100644
index 00000000000..76d51483394
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/assumed_size_nml.f90
@@ -0,0 +1,17 @@
+! { dg-do compile }
+! One of two tests for the fix of PR23152 - An ICE would
+! ensue from assumed shape arrays in namelists.
+!
+! Conributed by Paul Thomas <pault@gcc.gnu.org>
+!
+program assumed_size_nml
+ real, dimension (10) :: z
+ z = 42.0
+ call foo (z)
+contains
+ subroutine foo (y)
+ real, DIMENSION (*) :: y
+ namelist /mynml/ y ! { dg-error "is not allowed" }
+ write (6, mynml)
+ end subroutine foo
+end program assumed_size_nml \ No newline at end of file
diff --git a/gcc/testsuite/gfortran.dg/backspace_2.f b/gcc/testsuite/gfortran.dg/backspace_2.f
new file mode 100644
index 00000000000..4291e0463e1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/backspace_2.f
@@ -0,0 +1,21 @@
+! { dg-do run }
+! PR25139 Repeated backspaces and reads.
+! Derived from example given in PR by Dale Ranta and FX Coudert
+! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ integer dat(5)
+ dat = (/ 0, 0, 0, 0, 1 /)
+ write(11) dat,dat,dat,dat
+ rewind 11
+ write(11) dat
+ read(11,end=1008) dat
+ call abort()
+ 1008 continue
+ backspace 11
+ write(11) dat
+ read(11,end=1011) dat
+ call abort()
+ 1011 continue
+ backspace 11
+ backspace 11
+ end
+
diff --git a/gcc/testsuite/gfortran.dg/comma.f b/gcc/testsuite/gfortran.dg/comma.f
new file mode 100644
index 00000000000..d4976935381
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/comma.f
@@ -0,0 +1,18 @@
+! { dg-do run }
+! PR25419 Default input with commas.
+! Derived from example given in PR.
+! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ stuff = 1
+ stuff2 = 2
+ write(11,'(a)') ",,"
+ rewind(11)
+ read(11,*)stuff, stuff2
+ if (stuff.ne.1.0) call abort()
+ if (stuff2.ne.2.0) call abort()
+ rewind (11)
+ write(11,'(a)') ","
+ rewind(11)
+ read(11,*)stuff
+ if (stuff.ne.1.0) call abort()
+ end
+
diff --git a/gcc/testsuite/gfortran.dg/der_charlen_1.f90 b/gcc/testsuite/gfortran.dg/der_charlen_1.f90
new file mode 100644
index 00000000000..9f394c73f25
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/der_charlen_1.f90
@@ -0,0 +1,24 @@
+! { dg-do compile }
+! PR 18990
+! we used to ICE on these examples
+module core
+ type, public :: T
+ character(len=I) :: str ! { dg-error "needs to be a constant specification expression" }
+ end type T
+ private
+CONTAINS
+ subroutine FOO(X)
+ type(T), intent(in) :: X
+ end subroutine
+end module core
+
+module another_core
+ type :: T
+ character(len=*) :: s ! { dg-error "needs to be a constant specification expr" }
+ end type T
+ private
+CONTAINS
+ subroutine FOO(X)
+ type(T), intent(in) :: X
+ end subroutine
+end module another_core
diff --git a/gcc/testsuite/gfortran.dg/endfile.f b/gcc/testsuite/gfortran.dg/endfile.f
new file mode 100644
index 00000000000..6ece5459fa3
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/endfile.f
@@ -0,0 +1,18 @@
+! { dg-do run }
+! PR25550 file data corrupted after reading end of file.
+! Derived from example given in PR from Dale Ranta.
+! Contributed by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ integer data
+ data=-1
+ open(unit=11,status='scratch',form='unformatted')
+ write(11)data
+ read(11,end=1000 )data
+ call abort()
+ 1000 continue
+ rewind (11)
+ read(11)data
+ 1001 continue
+ if(data.ne.-1) call abort
+ end
+
+
diff --git a/gcc/testsuite/gfortran.dg/enum_5.f90 b/gcc/testsuite/gfortran.dg/enum_5.f90
index a095cfe1bf3..9ff2efa9c5a 100644
--- a/gcc/testsuite/gfortran.dg/enum_5.f90
+++ b/gcc/testsuite/gfortran.dg/enum_5.f90
@@ -6,7 +6,7 @@ program main
integer :: i = 1
enum, bind (c) ! { dg-warning "New in Fortran 2003" }
- enumerator :: red, black = i ! { dg-error "cannot appear" }
+ enumerator :: red, black = i ! { dg-error "is a variable" }
enumerator :: blue = 1
end enum junk ! { dg-error "Syntax error" }
diff --git a/gcc/testsuite/gfortran.dg/g77/19981216-0.f b/gcc/testsuite/gfortran.dg/g77/19981216-0.f
index 1e5db3c3b5c..f5457cfef08 100644
--- a/gcc/testsuite/gfortran.dg/g77/19981216-0.f
+++ b/gcc/testsuite/gfortran.dg/g77/19981216-0.f
@@ -29,7 +29,7 @@ c { dg-do compile }
name = 'blah'
open(unit=8,status='unknown',file=name,form='formatted',
- F iostat=ios)
+ F iostat=ios) ! { dg-warning "Fortran 95 requires default INTEGER" }
END
* -------------------------------------------
diff --git a/gcc/testsuite/gfortran.dg/g77/980616-0.f b/gcc/testsuite/gfortran.dg/g77/980616-0.f
index 75bd05e93ad..069b611eb14 100644
--- a/gcc/testsuite/gfortran.dg/g77/980616-0.f
+++ b/gcc/testsuite/gfortran.dg/g77/980616-0.f
@@ -5,6 +5,6 @@ c { dg-do compile }
* Date: Mon, 15 Jun 1998 21:54:32 -0500
* From: Ian A Watson <WATSON_IAN_A@lilly.com>
* Subject: Mangler Crash
- EQUIVALENCE(I,glerf(P)) ! { dg-error "cannot appear" "cannot appear" }
+ EQUIVALENCE(I,glerf(P)) ! { dg-error "is a variable" "is a variable" }
COMMON /foo/ glerf(3)
c { dg-error "end of file" "end of file" { target *-*-* } 0 }
diff --git a/gcc/testsuite/gfortran.dg/host_used_types_1.f90 b/gcc/testsuite/gfortran.dg/host_used_types_1.f90
new file mode 100644
index 00000000000..89da583a406
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/host_used_types_1.f90
@@ -0,0 +1,40 @@
+! { dg-do compile }
+! Tests the fix for PR25532, which was a regression introduced by
+! the fix for PR20244.
+!
+! Contributed by Erik Edelmann <eedelman@gcc.gnu.org>
+module ModelParams
+ implicit none
+
+ type ReionizationParams
+ real :: fraction
+ end type ReionizationParams
+
+ type CAMBparams
+ type(ReionizationParams) :: Reion
+ end type CAMBparams
+
+ type(CAMBparams) CP
+end module ModelParams
+
+
+module ThermoData
+ use ModelParams
+ implicit none
+
+contains
+
+ subroutine inithermo()
+ use ModelParams
+ if (0 < CP%Reion%fraction) then
+ end if
+ end subroutine inithermo
+
+! The bug expressed itself in this subroutine because the component type
+! information was not being copied from the parent namespace.
+ subroutine SetTimeSteps
+ if (0 < CP%Reion%fraction) then
+ end if
+ end subroutine SetTimeSteps
+
+end module ThermoData \ No newline at end of file
diff --git a/gcc/testsuite/gfortran.dg/initialization_1.f90 b/gcc/testsuite/gfortran.dg/initialization_1.f90
new file mode 100644
index 00000000000..8ec34c0f4c1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/initialization_1.f90
@@ -0,0 +1,38 @@
+!==================initialization_1.f90======================
+!
+! { dg-do compile }
+! Tests fix for PR25018 in which an ICE resulted from using a
+! variable in a parameter initialization expression. In the course
+! of developing the fix, various other constraints and limitations
+! were tested.
+!
+! Contributed by Paul Thomas <pault@gcc.gnu.org>
+!
+module const
+! The next line is the original error
+ real(8), parameter :: g = - sqrt(2._8) * Gf ! { dg-error "not been declared or is a variable" }
+contains
+ subroutine foo(ch1, x, y)
+ character(*) :: ch1
+
+! This is OK because it is a restricted expression.
+ character(len(ch1)) :: ch2
+
+ real(8) :: x (1:2, *)
+ real(8) :: y (0:,:)
+
+! However, this gives a warning because it is an initialization expression.
+ integer :: l1 = len (ch1) ! { dg-warning "assumed character length variable" }
+
+! Dependence on upper bound of final dimension of assumed size array knocks these out.
+ integer :: m1 = size (x, 2) ! { dg-error "not a valid dimension index" }
+ integer :: m2(2) = shape (x) ! { dg-error "assumed size array" }
+
+! These are warnings because they are gfortran extensions.
+ integer :: m3 = size (x, 1) ! { dg-warning "Evaluation of nonstandard initialization" }
+ integer :: m4(2) = shape (z) ! { dg-warning "Evaluation of nonstandard initialization" }
+
+! This does not depend on non-constant properties.
+ real(8) :: big = huge (x)
+ end subroutine foo
+end module const
diff --git a/gcc/testsuite/gfortran.dg/io_constraints_1.f90 b/gcc/testsuite/gfortran.dg/io_constraints_1.f90
new file mode 100644
index 00000000000..fa4c973dd34
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/io_constraints_1.f90
@@ -0,0 +1,78 @@
+! { dg-do compile }
+! Part I of the test of the IO constraints patch, which fixes PRs:
+! PRs 25053, 25063, 25064, 25066, 25067, 25068, 25069, 25307 and 20862.
+!
+! Contributed by Paul Thomas <pault@gcc.gnu.org>
+!
+module fails
+
+ 2000 format (1h , 2i6) ! { dg-error "Format statement in module" }
+
+end module fails
+
+module global
+
+ integer :: modvar
+ namelist /NL/ modvar
+
+contains
+
+ subroutine foo (i)
+ integer :: i
+ write (*, 100) i
+ 100 format (1h , "i=", i6) ! This is OK.
+ end subroutine foo
+
+end module global
+
+ use global
+ integer :: a,b, c(20)
+ integer(8) :: ierr
+ character*80 :: buffer(3)
+
+! Appending to a USE associated namelist is an extension.
+
+ NAMELIST /NL/ a,b ! { dg-warning "already is USE associated" }
+
+ a=1 ; b=2
+
+!9.2.2.1:
+ write(c, *) a, b ! { dg-error "array" }
+!Was correctly picked up before patch.
+ write(buffer((/3,1,2/)), *) a, b ! { dg-error "vector subscript" }
+
+!9.2.2.2 and one of 9.4.1
+!________________________
+
+ write(6, NML=NL, FMT = '(i6)') ! { dg-error "group name and format" }
+ write(6, NML=NL, FMT = 200) ! { dg-error "group name and format" }
+
+!9.4.1
+!_____
+!
+
+! R912
+!Was correctly picked up before patch.
+ write(6, NML=NL, iostat = ierr) ! { dg-warning "requires default INTEGER" }
+ READ(1, fmt='(i6)', advance='NO', size = ierr) ! { dg-warning "requires default INTEGER" }
+
+! Constraints
+!Was correctly picked up before patch.
+ write(1, fmt='(i6)', end = 100) a ! { dg-error "END tag" }
+!Was correctly picked up before patch.
+ write(1, fmt='(i6)', eor = 100) a ! { dg-error "EOR tag" }
+!Was correctly picked up before patch.
+ write(1, fmt='(i6)', size = b) a ! { dg-error "SIZE=specifier not allowed" }
+
+
+ READ(1, fmt='(i6)', end = 900) a ! { dg-error "not defined" }
+ READ(1, fmt='(i6)', eor = 900, advance='NO') a ! { dg-error "not defined" }
+ READ(1, fmt='(i6)', ERR = 900) a ! { dg-error "not defined" }
+
+!Was correctly picked up before patch.
+ READ(1, fmt=800) a ! { dg-error "not defined" }
+
+
+100 continue
+200 format (2i6)
+ END
diff --git a/gcc/testsuite/gfortran.dg/io_constraints_2.f90 b/gcc/testsuite/gfortran.dg/io_constraints_2.f90
new file mode 100644
index 00000000000..8100a4d3690
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/io_constraints_2.f90
@@ -0,0 +1,69 @@
+! { dg-do compile }
+! Part II of the test of the IO constraints patch, which fixes PRs:
+! PRs 25053, 25063, 25064, 25066, 25067, 25068, 25069, 25307 and 20862.
+!
+! Contributed by Paul Thomas <pault@gcc.gnu.org>
+!
+
+module global
+
+ integer :: modvar
+ namelist /NL/ modvar
+
+contains
+
+ subroutine foo (i)
+ integer :: i
+ write (*, 100) i
+ 100 format (1h , "i=", i6) ! This is OK.
+ end subroutine foo
+
+end module global
+
+ use global
+ integer :: a,b, c(20)
+ integer(8) :: ierr
+ character*80 :: buffer(3)
+
+
+! Appending to a USE associated namelist is an extension.
+
+ NAMELIST /NL/ a,b ! { dg-warning "already is USE associated" }
+
+ a=1 ; b=2
+
+ write(*, NML=NL) z ! { dg-error "followed by IO-list" }
+!Was correctly picked up before patch.
+ print NL, z ! { dg-error "followed by IO-list" }
+!
+! Not allowed with internal unit
+!Was correctly picked up before patch.
+ write(buffer, NML=NL) ! { dg-error "incompatible with namelist" }
+!Was correctly picked up before patch.
+ write(buffer, fmt='(i6)', REC=10) a ! { dg-error "REC tag" }
+ write(buffer, fmt='(i6)', END=10) a ! { dg-error "END tag" }
+
+! Not allowed with REC= specifier
+!Was correctly picked up before patch.
+ read(10, REC=10, END=100) ! { dg-error "END tag is not allowed" }
+ write(*, *, REC=10) ! { dg-error "FMT=" }
+
+! Not allowed with an ADVANCE=specifier
+ READ(buffer, fmt='(i6)', advance='YES') a ! { dg-error "internal file" }
+ READ(1, NML=NL, advance='YES') ! { dg-error "NAMELIST IO is not allowed" }
+
+ write(1, fmt='(i6)', advance='YES', size = c(1)) a ! { dg-error "output" }
+ write(1, fmt='(i6)', advance='YES', eor = 100) a ! { dg-error "output" }
+
+ read(1, fmt='(i6)', advance='YES', size = c(1)) a ! { dg-error "ADVANCE = 'NO'" }
+ read(1, fmt='(i6)', advance='YES', eor = 100) a ! { dg-error "ADVANCE = 'NO'" }
+
+ READ(1, fmt='(i6)', advance='NO', size = buffer) a ! { dg-error "INTEGER" }
+!Was correctly picked up before patch. -correct syntax error
+ READ(1, fmt='(i6)', advance='YES', size = 10) a ! { dg-error "Syntax error" }
+
+ READ(1, fmt='(i6)', advance='MAYBE') ! { dg-error "YES or NO" }
+
+100 continue
+200 format (2i6)
+ END
diff --git a/gcc/testsuite/gfortran.dg/label_1.f90 b/gcc/testsuite/gfortran.dg/label_1.f90
new file mode 100644
index 00000000000..149c79f1029
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/label_1.f90
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! Test the fix for PR 25106 and 25055.
+
+program a
+0056780 continue ! { dg-error "Too many digits" }
+0 continue ! { dg-error "Statement label at" }
+ stop 001234 ! { dg-error "Too many digits" }
+end program a
+
+
diff --git a/gcc/testsuite/gfortran.dg/list_read_5.f90 b/gcc/testsuite/gfortran.dg/list_read_5.f90
new file mode 100644
index 00000000000..f69d1f3ccff
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/list_read_5.f90
@@ -0,0 +1,38 @@
+! { dg-do run }
+! PR25307 Check handling of end-of-file conditions for list directed reads.
+! Prepared by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+program pr25307
+ character(len=10) :: str
+ character(len=10) :: a(5)
+ a=""
+ a(1)="123"
+ a(3)="234"
+ str = '123'
+! Check internal unit
+ i = 0
+ j = 0
+ read( str, *, end=10 ) i,j
+ call abort()
+10 continue
+ if (i.ne.123) call abort()
+ if (j.ne.0) call abort()
+! Check file unit
+ i = 0
+ write(10,'(a)') "123"
+ rewind(10)
+ read(10, *, end=20) i,j
+ call abort()
+20 continue
+ if (i.ne.123) call abort()
+ if (j.ne.0) call abort()
+! Check internal array unit
+ i = 0
+ j = 0
+ k = 0
+ read(a(1:5:2),*, end=30)i,j,k
+ call abort()
+30 continue
+ if (i.ne.123) call abort()
+ if (j.ne.234) call abort()
+ if (k.ne.0) call abort()
+end program pr25307
diff --git a/gcc/testsuite/gfortran.dg/namelist_use.f90 b/gcc/testsuite/gfortran.dg/namelist_use.f90
index 871e529a1a4..531ee1b3999 100644
--- a/gcc/testsuite/gfortran.dg/namelist_use.f90
+++ b/gcc/testsuite/gfortran.dg/namelist_use.f90
@@ -15,7 +15,8 @@ end module global
program namelist_use
use global
real :: rrr
- namelist /nml2/ ii, rrr ! Concatenate use and host associated variables.
+! Concatenating use and host associated variables is an extension.
+ namelist /nml2/ ii, rrr ! { dg-warning "already is USE associated" }
open (10, status="scratch")
write (10,*) "&NML1 aa='lmno' ii=1 rr=2.5 /"
write (10,*) "&NML2 aa='pqrs' ii=2 rrr=3.5 /"
diff --git a/gcc/testsuite/gfortran.dg/pointer_component_type_1.f90 b/gcc/testsuite/gfortran.dg/pointer_component_type_1.f90
new file mode 100644
index 00000000000..2fb128854db
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pointer_component_type_1.f90
@@ -0,0 +1,31 @@
+! { dg-do compile }
+! This checks the fix for PR20889 in wrong pointer types in derived
+! type constructors would either give no message or would segfault.
+!
+! Contributed by Joost VandVondele <jv244@cam.ac.uk>
+!==============
+ TYPE TEST
+ REAL, POINTER :: A
+ END TYPE
+
+ TYPE TEST1
+ REAL :: A
+ END TYPE
+
+ INTEGER, POINTER :: IP
+ real, POINTER :: RP
+ TYPE(TEST) :: DD
+ TYPE(TEST1) :: EE
+! Next line is the original => gave no warning/error.
+ DD=TEST(NULL(IP)) ! { dg-error "INTEGER but should be REAL" }
+! Would segfault here.
+ DD=TEST(IP) ! { dg-error "INTEGER but should be REAL" }
+! Check right target type is OK.
+ DD=TEST(NULL(RP))
+!
+ DD=TEST(NULL())
+! Check non-pointer is OK.
+ EE= TEST1(1)
+! Test attempted conversion from character to real.
+ EE= TEST1("e") ! { dg-error "convert CHARACTER" }
+END \ No newline at end of file
diff --git a/gcc/testsuite/gfortran.dg/pure_byref_3.f90 b/gcc/testsuite/gfortran.dg/pure_byref_3.f90
new file mode 100644
index 00000000000..cb2644ff898
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pure_byref_3.f90
@@ -0,0 +1,33 @@
+! { dg-do run }
+! PR 22607: External/module pure return-by-reference functions
+
+pure function hoj()
+ integer :: hoj(3)
+ hoj = (/1, 2, 3/)
+end function hoj
+
+module huj_mod
+contains
+ pure function huj()
+ integer :: huj(3)
+ huj = (/1, 2, 3/)
+ end function huj
+end module huj_mod
+
+program pure_byref_3
+ use huj_mod
+ implicit none
+
+ interface
+ pure function hoj()
+ integer :: hoj(3)
+ end function hoj
+ end interface
+ integer :: a(3)
+
+ a = huj()
+ if (.not. all(a == (/1, 2, 3/))) call abort()
+
+ a = hoj()
+ if (.not. all(a == (/1, 2, 3/))) call abort()
+end program pure_byref_3
diff --git a/gcc/testsuite/gfortran.dg/used_dummy_types_1.f90 b/gcc/testsuite/gfortran.dg/used_dummy_types_1.f90
new file mode 100644
index 00000000000..9d034a680da
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/used_dummy_types_1.f90
@@ -0,0 +1,36 @@
+! { dg-do run }
+! This checks the fix for PR20244 in which USE association
+! of derived types would cause an ICE, if the derived type
+! was also available by host association. This occurred
+! because the backend declarations were different.
+!
+! Contributed by Paul Thomas <pault@gcc.gnu.org>
+!==============
+module mtyp
+ type t1
+ integer::a
+ end type t1
+end module mtyp
+!==============
+module atest
+ use mtyp
+ type(t1)::ze
+contains
+ subroutine test(ze_in )
+ use mtyp
+ implicit none
+ type(t1)::ze_in
+ ze_in = ze
+ end subroutine test
+ subroutine init( )
+ implicit none
+ ze = t1 (42)
+ end subroutine init
+end module atest
+!==============
+ use atest
+ type(t1) :: res = t1 (0)
+ call init ()
+ call test (res)
+ if (res%a.ne.42) call abort
+end \ No newline at end of file
diff --git a/gcc/testsuite/gfortran.dg/used_dummy_types_2.f90 b/gcc/testsuite/gfortran.dg/used_dummy_types_2.f90
new file mode 100644
index 00000000000..f12d2864d0b
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/used_dummy_types_2.f90
@@ -0,0 +1,32 @@
+! { dg-do compile }
+! This tests that the fix for PR25391 also fixes PR20244. If
+! the USE mod1 in subroutine foo were deleted, the code would
+! compile fine. With the USE statement, the compiler would
+! make new TYPEs for T1 and T2 and bomb out in fold-convert.
+! This is a slightly more elaborate test than
+! used_dummy_types_1.f90 and came from the PR.
+!
+! Contributed by Jakub Jelinek <jakubcc.gnu.org>
+module mod1
+ type t1
+ real :: f1
+ end type t1
+ type t2
+ type(t1), pointer :: f2(:)
+ real, pointer :: f3(:,:)
+ end type t2
+end module mod1
+
+module mod2
+ use mod1
+ type(t1), pointer, save :: v(:)
+contains
+ subroutine foo (x)
+ use mod1
+ implicit none
+ type(t2) :: x
+ integer :: d
+ d = size (x%f3, 2)
+ v = x%f2(:)
+ end subroutine foo
+end module mod2
diff --git a/gcc/testsuite/gfortran.dg/used_dummy_types_3.f90 b/gcc/testsuite/gfortran.dg/used_dummy_types_3.f90
new file mode 100644
index 00000000000..b252e45471f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/used_dummy_types_3.f90
@@ -0,0 +1,36 @@
+! { dg-do compile }
+! This checks the fix for PR20864 in which same name, USE associated
+! derived types from different modules, with private components were
+! not recognised to be different.
+!
+! Contributed by Joost VandVondele <jv244@cam.ac.uk>
+!==============
+ MODULE T1
+ TYPE data_type
+ SEQUENCE
+ ! private causes the types in T1 and T2 to be different 4.4.2
+ PRIVATE
+ INTEGER :: I
+ END TYPE
+ END MODULE
+
+ MODULE T2
+ TYPE data_type
+ SEQUENCE
+ PRIVATE
+ INTEGER :: I
+ END TYPE
+
+ CONTAINS
+
+ SUBROUTINE TEST(x)
+ TYPE(data_type) :: x
+ END SUBROUTINE TEST
+ END MODULE
+
+ USE T1
+ USE T2 , ONLY : TEST
+ TYPE(data_type) :: x
+ CALL TEST(x) ! { dg-error "Type/rank mismatch in argument" }
+ END
+
diff --git a/gcc/testsuite/gfortran.dg/used_dummy_types_4.f90 b/gcc/testsuite/gfortran.dg/used_dummy_types_4.f90
new file mode 100644
index 00000000000..98b5905d478
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/used_dummy_types_4.f90
@@ -0,0 +1,101 @@
+! { dg-do compile }
+! This checks the fix for PR19362 in which types from different scopes
+! that are the same, according to 4.4.2, would generate an ICE if one
+! were assigned to the other. As well as the test itself, various
+! other requirements of 4.4.2 are tested here.
+!
+! Contributed by Paul Thomas <pault@gcc.gnu.org>
+!==============
+module global
+
+ TYPE :: seq_type1
+ sequence
+ integer :: i
+ end type seq_type1
+
+ TYPE :: nonseq_type1
+ integer :: i
+ end type nonseq_type1
+ type (nonseq_type1) :: ns1
+
+end module global
+
+! Host types with local name != true name
+ use global, only: seq_type2=>seq_type1, nonseq_type2=>nonseq_type1, ns1
+ type (nonseq_type2) :: ns2
+
+! Host non-sequence types
+ type :: different_type
+ integer :: i
+ end type different_type
+ type (different_type) :: dt1
+
+ type :: same_type
+ integer :: i
+ end type same_type
+ type (same_type) :: st1
+
+ real :: seq_type1
+
+! Provide a reference to dt1.
+ dt1 = different_type (42)
+! These share a type declaration.
+ ns2 = ns1
+! USE associated seq_type1 is renamed.
+ seq_type1 = 1.0
+
+! These are different.
+ st1 = dt ! { dg-error "convert REAL" }
+
+ call foo (st1) ! { dg-error "Type/rank mismatch in argument" }
+
+contains
+
+ subroutine foo (st2)
+
+! Contained type with local name != true name.
+! This is the same as seq_type2 in the host.
+ use global, only: seq_type3=>seq_type1
+
+! This local declaration is the same as seq_type3 and seq_type2.
+ TYPE :: seq_type1
+ sequence
+ integer :: i
+ end type seq_type1
+
+! Host association of renamed type.
+ type (seq_type2) :: x
+! Locally declared version of the same thing.
+ type (seq_type1) :: y
+! USE associated renamed type.
+ type (seq_type3) :: z
+
+! Contained type that is different to that in the host.
+ type :: different_type
+ complex :: z
+ end type different_type
+
+ type :: same_type
+ integer :: i
+ end type same_type
+
+ type (different_type) :: b
+ type (same_type) :: st2
+
+! Error because these are not the same.
+ b = dt1 ! { dg-error "convert TYPE" }
+
+! Error in spite of the name - these are non-sequence types and are NOT
+! the same.
+ st1 = st2 ! { dg-error "convert TYPE" }
+
+ b%z = (2.0,-1.0)
+
+! Check that the references that are correct actually work. These test the
+! fix for PR19362.
+ x = seq_type1 (1)
+ y = x
+ y = seq_type3 (99)
+ end subroutine foo
+END
+
diff --git a/gcc/testsuite/gfortran.dg/used_dummy_types_5.f90 b/gcc/testsuite/gfortran.dg/used_dummy_types_5.f90
new file mode 100644
index 00000000000..a79f7221310
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/used_dummy_types_5.f90
@@ -0,0 +1,85 @@
+! { dg-do compile }
+! This checks that the fix for PR19362 has not broken gfortran
+! in respect of.references allowed by 4.4.2.
+!
+! Contributed by Paul Thomas <pault@gcc.gnu.org>
+!==============
+module global
+
+ TYPE :: seq_type1
+ sequence
+ integer :: i
+ end type seq_type1
+
+ TYPE :: nonseq_type1
+ integer :: i = 44
+ end type nonseq_type1
+ type (nonseq_type1) :: ns1
+
+end module global
+
+ use global, only: seq_type2=>seq_type1, nonseq_type1, ns1
+
+! Host non-sequence types
+ type :: different_type
+ integer :: i
+ end type different_type
+
+ type :: same_type
+ sequence
+ integer :: i
+ end type same_type
+
+ type (seq_type2) :: t1
+ type (different_type) :: dt1
+
+ type (nonseq_type1) :: ns2
+ type (same_type) :: st1
+ real seq_type1
+
+ t1 = seq_type2 (42)
+ dt1 = different_type (43)
+ ns2 = ns1
+ seq_type1 =1.0e32
+ st1%i = 45
+
+ call foo (t1)
+
+contains
+
+ subroutine foo (x)
+
+ use global, only: seq_type3=>seq_type1
+
+ TYPE :: seq_type1
+ sequence
+ integer :: i
+ end type seq_type1
+
+ type :: different_type
+ complex :: z
+ end type different_type
+
+ type :: same_type
+ sequence
+ integer :: i
+ end type same_type
+! Host association of renamed type.
+ type (seq_type2) :: x
+! Locally declared version of the same thing.
+ type (seq_type1) :: y
+! USE associated renamed type.
+ type (seq_type3) :: z
+
+
+ type (different_type) :: dt2
+ type (same_type) :: st2
+
+ dt2%z = (2.0,-1.0)
+ y = seq_type2 (46)
+ z = seq_type3 (47)
+ st2 = st1
+ print *, x, y, z, dt2, st2, ns2, ns1
+ end subroutine foo
+END
+
diff --git a/gcc/testsuite/gfortran.dg/userdef_operator_1.f90 b/gcc/testsuite/gfortran.dg/userdef_operator_1.f90
new file mode 100644
index 00000000000..5bf99d04acd
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/userdef_operator_1.f90
@@ -0,0 +1,35 @@
+! { dg-do compile }
+! Testcase from PR 25396: User defined operators returning arrays.
+module geometry
+
+ implicit none
+
+ interface operator(.cross.)
+ module procedure cross
+ end interface
+
+contains
+
+ ! Cross product between two 3d vectors.
+ pure function cross(a, b)
+ real, dimension(3), intent(in) :: a,b
+ real, dimension(3) :: cross
+
+ cross = (/ a(2) * b(3) - a(3) * b(2), &
+ a(3) * b(1) - a(1) * b(3), &
+ a(1) * b(2) - a(2) * b(1) /)
+ end function cross
+
+end module geometry
+
+program opshape
+ use geometry
+
+ implicit none
+
+ real :: t(3,3), a
+
+ a = dot_product (t(:,1), t(:,2) .cross. t(:,3))
+
+end program opshape
+
diff --git a/gcc/testsuite/objc/execute/pr25328.m b/gcc/testsuite/objc/execute/pr25328.m
new file mode 100644
index 00000000000..7b850235391
--- /dev/null
+++ b/gcc/testsuite/objc/execute/pr25328.m
@@ -0,0 +1,11 @@
+/* PR objc/25328 */
+
+int
+main ()
+{
+ int status = 0;
+ char msg[100] = "";
+ if (__builtin_strcmp (msg, ""))
+ status = 200;
+ return status;
+}
diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c
index 9fc48d5cbe8..e7a038227a9 100644
--- a/gcc/tree-dfa.c
+++ b/gcc/tree-dfa.c
@@ -210,6 +210,10 @@ tree
make_rename_temp (tree type, const char *prefix)
{
tree t = create_tmp_var (type, prefix);
+
+ if (TREE_CODE (type) == COMPLEX_TYPE)
+ DECL_COMPLEX_GIMPLE_REG_P (t) = 1;
+
if (referenced_vars)
{
add_referenced_tmp_var (t);
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 724ef428449..f52e6b40dba 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -3674,18 +3674,24 @@ initializer_constant_valid_p (tree value, tree endtype)
case ADDR_EXPR:
case FDESC_EXPR:
value = staticp (TREE_OPERAND (value, 0));
- /* "&(*a).f" is like unto pointer arithmetic. If "a" turns out to
- be a constant, this is old-skool offsetof-like nonsense. */
- if (value
- && TREE_CODE (value) == INDIRECT_REF
- && TREE_CONSTANT (TREE_OPERAND (value, 0)))
- return null_pointer_node;
- /* Taking the address of a nested function involves a trampoline. */
- if (value
- && TREE_CODE (value) == FUNCTION_DECL
- && ((decl_function_context (value) && !DECL_NO_STATIC_CHAIN (value))
- || DECL_DLLIMPORT_P (value)))
- return NULL_TREE;
+ if (value)
+ {
+ /* "&(*a).f" is like unto pointer arithmetic. If "a" turns out to
+ be a constant, this is old-skool offsetof-like nonsense. */
+ if (TREE_CODE (value) == INDIRECT_REF
+ && TREE_CONSTANT (TREE_OPERAND (value, 0)))
+ return null_pointer_node;
+ /* Taking the address of a nested function involves a trampoline. */
+ if (TREE_CODE (value) == FUNCTION_DECL
+ && ((decl_function_context (value)
+ && !DECL_NO_STATIC_CHAIN (value))
+ || DECL_DLLIMPORT_P (value)))
+ return NULL_TREE;
+ /* "&{...}" requires a temporary to hold the constructed
+ object. */
+ if (TREE_CODE (value) == CONSTRUCTOR)
+ return NULL_TREE;
+ }
return value;
case VIEW_CONVERT_EXPR:
diff --git a/gcc/version.c b/gcc/version.c
index 8829bbf9d17..e62d6f415d5 100644
--- a/gcc/version.c
+++ b/gcc/version.c
@@ -8,7 +8,7 @@
in parentheses. You may also wish to include a number indicating
the revision of your modified compiler. */
-#define VERSUFFIX " (Red Hat 4.1.0-0.11)"
+#define VERSUFFIX " (Red Hat 4.1.0-0.13)"
/* This is the location of the online document giving instructions for
reporting bugs. If you distribute a modified version of GCC,
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index 312cb9899ef..586947039ee 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,10 @@
+2006-01-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/25294
+ * directives.c (do_pragma): If pragma line ends with multi-line
+ block comment, end the saved deferred pragma string before that
+ comment. Handle embedded '\0' chars on the pragma line.
+
2005-11-14 Gerald Pfeifer <gerald@pfeifer.com>
Ian Lance Taylor <ian@airs.com>
diff --git a/libcpp/directives.c b/libcpp/directives.c
index 0eea67d133c..0fb04ba11a7 100644
--- a/libcpp/directives.c
+++ b/libcpp/directives.c
@@ -1,6 +1,7 @@
/* CPP Library. (Directive handling.)
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
Contributed by Per Bothner, 1994-95.
Based on CCCP program by Paul Rubin, June 1986
Adapted to ANSI C, Richard Stallman, Jan 1987
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 51c92858e3c..1e2ebbd934e 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,32 @@
+2005-12-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/25594
+ PR libgfortran/25419
+ * io/list_read.c (list_formatted_read_scalar): Test for comma to return
+ a null value (default). Revert patch of 25419 on 2005-12-28.
+
+2005-12-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/25550
+ * io/file_pos.c (st_rewind): Reset bytes left so no error occurs in
+ next_record_r.
+
+2005-12-31 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/25139
+ * io/unix.c (fd_truncate): Set s->active to zero.
+ PR libgfortran/25510
+ * libgfortran.h: Add ERROR_INTERNAL and ERROR_INTERNAL_UNIT.
+ * runtime/error.c (translate_error): Add messages for new errors.
+ * io/list_read.c (next_char): Use new errors.
+ * io/transfer.c (next_record_r) (next_record_w): Use new errors.
+
+2005-12-22 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/25307
+ * io/list_read.c (next_char): Handle end-of-file conditions for
+ internal units and add support for internal character array units.
+
2005-12-20 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/25463
diff --git a/libgfortran/io/file_pos.c b/libgfortran/io/file_pos.c
index 3d7dd9ab8b6..d9ac1e7f7ed 100644
--- a/libgfortran/io/file_pos.c
+++ b/libgfortran/io/file_pos.c
@@ -255,6 +255,7 @@ st_rewind (st_parameter_filepos *fpp)
u->endfile = NO_ENDFILE;
u->current_record = 0;
+ u->bytes_left = 0;
test_endfile (u);
}
/* Update position for INQUIRE. */
diff --git a/libgfortran/io/list_read.c b/libgfortran/io/list_read.c
index 3988e3f00d8..c89b0f45a51 100644
--- a/libgfortran/io/list_read.c
+++ b/libgfortran/io/list_read.c
@@ -121,6 +121,7 @@ static char
next_char (st_parameter_dt *dtp)
{
int length;
+ gfc_offset record;
char c, *p;
if (dtp->u.p.last_char != '\0')
@@ -133,26 +134,64 @@ next_char (st_parameter_dt *dtp)
length = 1;
- p = salloc_r (dtp->u.p.current_unit->s, &length);
- if (p == NULL)
+ /* Handle the end-of-record condition for internal array unit */
+ if (is_array_io(dtp) && dtp->u.p.current_unit->bytes_left == 0)
{
- generate_error (&dtp->common, ERROR_OS, NULL);
- return '\0';
+ c = '\n';
+ record = next_array_record (dtp, dtp->u.p.current_unit->ls);
+
+ /* Check for "end-of-file condition */
+ if (record == 0)
+ longjmp (*dtp->u.p.eof_jump, 1);
+
+ record *= dtp->u.p.current_unit->recl;
+
+ if (sseek (dtp->u.p.current_unit->s, record) == FAILURE)
+ longjmp (*dtp->u.p.eof_jump, 1);
+
+ dtp->u.p.current_unit->bytes_left = dtp->u.p.current_unit->recl;
+ goto done;
}
- if (length == 0)
+ /* Get the next character and handle end-of-record conditions */
+ p = salloc_r (dtp->u.p.current_unit->s, &length);
+
+ if (is_internal_unit(dtp))
{
- /* For internal files return a newline instead of signalling EOF. */
- /* ??? This isn't quite right, but we don't handle internal files
- with multiple records. */
- if (is_internal_unit (dtp))
- c = '\n';
+ if (is_array_io(dtp))
+ {
+ /* End of record is handled in the next pass through, above. The
+ check for NULL here is cautionary. */
+ if (p == NULL)
+ {
+ generate_error (&dtp->common, ERROR_INTERNAL_UNIT, NULL);
+ return '\0';
+ }
+
+ dtp->u.p.current_unit->bytes_left--;
+ c = *p;
+ }
else
- longjmp (*dtp->u.p.eof_jump, 1);
+ {
+ if (p == NULL)
+ longjmp (*dtp->u.p.eof_jump, 1);
+ if (length == 0)
+ c = '\n';
+ else
+ c = *p;
+ }
}
else
- c = *p;
-
+ {
+ if (p == NULL)
+ {
+ generate_error (&dtp->common, ERROR_OS, NULL);
+ return '\0';
+ }
+ if (length == 0)
+ longjmp (*dtp->u.p.eof_jump, 1);
+ c = *p;
+ }
done:
dtp->u.p.at_eol = (c == '\n' || c == '\r');
return c;
@@ -1314,9 +1353,15 @@ list_formatted_read_scalar (st_parameter_dt *dtp, bt type, void *p, int kind,
{ /* Found a null value. */
eat_separator (dtp);
dtp->u.p.repeat_count = 0;
+
+ /* eat_separator sets this flag if the separator was a comma */
+ if (dtp->u.p.comma_flag)
+ goto cleanup;
+
+ /* eat_separator sets this flag if the separator was a \n or \r */
if (dtp->u.p.at_eol)
finish_separator (dtp);
- else
+ else
goto cleanup;
}
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 7ad1fffc68d..2c12294398e 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -1702,7 +1702,7 @@ next_record_r (st_parameter_dt *dtp)
record = record * dtp->u.p.current_unit->recl;
if (sseek (dtp->u.p.current_unit->s, record) == FAILURE)
{
- generate_error (&dtp->common, ERROR_OS, NULL);
+ generate_error (&dtp->common, ERROR_INTERNAL_UNIT, NULL);
break;
}
dtp->u.p.current_unit->bytes_left = dtp->u.p.current_unit->recl;
@@ -1863,7 +1863,10 @@ next_record_w (st_parameter_dt *dtp, int done)
record = record * dtp->u.p.current_unit->recl;
if (sseek (dtp->u.p.current_unit->s, record) == FAILURE)
- goto io_error;
+ {
+ generate_error (&dtp->common, ERROR_INTERNAL_UNIT, NULL);
+ return;
+ }
dtp->u.p.current_unit->bytes_left = dtp->u.p.current_unit->recl;
}
diff --git a/libgfortran/io/unix.c b/libgfortran/io/unix.c
index 6750b6f6142..237f09e9930 100644
--- a/libgfortran/io/unix.c
+++ b/libgfortran/io/unix.c
@@ -601,7 +601,7 @@ fd_truncate (unix_stream * s)
}
s->physical_offset = s->file_length = s->logical_offset;
-
+ s->active = 0;
return SUCCESS;
}
diff --git a/libgfortran/libgfortran.h b/libgfortran/libgfortran.h
index aacc7b8c8c5..b64b60b1894 100644
--- a/libgfortran/libgfortran.h
+++ b/libgfortran/libgfortran.h
@@ -407,6 +407,8 @@ typedef enum
ERROR_BAD_US,
ERROR_READ_VALUE,
ERROR_READ_OVERFLOW,
+ ERROR_INTERNAL,
+ ERROR_INTERNAL_UNIT,
ERROR_LAST /* Not a real error, the last error # + 1. */
}
error_codes;
diff --git a/libgfortran/runtime/error.c b/libgfortran/runtime/error.c
index 7f85b5ceb3a..2d3c0689adc 100644
--- a/libgfortran/runtime/error.c
+++ b/libgfortran/runtime/error.c
@@ -423,6 +423,14 @@ translate_error (int code)
p = "Numeric overflow on read";
break;
+ case ERROR_INTERNAL:
+ p = "Internal error in run-time library";
+ break;
+
+ case ERROR_INTERNAL_UNIT:
+ p = "Internal unit I/O error";
+ break;
+
default:
p = "Unknown error code";
break;
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 81ff3c8fb49..6d6bef554cd 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,54 @@
+2006-01-04 Krister Walfridsson <cato@df.lth.se>
+
+ * posix-threads.cc (_Jv_InitThreads): #ifdef PTHREAD_STACK_MIN
+
+2006-01-04 Tom Tromey <tromey@redhat.com>
+
+ * java/lang/Class.h (_Jv_CopyClassesToSystemLoader): Updated.
+ * java/lang/natClassLoader.cc (_Jv_CopyClassesToSystemLoader):
+ Changed argument type. Use SystemClassLoader.addClass.
+ * gnu/gcj/runtime/SystemClassLoader.java (addClass): New method.
+
+2005-12-24 David Daney <ddaney@avtrex.com>
+ Tom Tromey <tromey@redhat.com>
+
+ PR libgcj/9715, PR libgcj/19132:
+ * java/nio/charset/Charset.java (charsetForName): Try default
+ provider first.
+ (availableCharsets): Re-merged.
+ (providers2): Likewise.
+ (defaultCharset): Likewise.
+ * sources.am, Makefile.in: Rebuilt.
+ * gnu/java/nio/charset/Provider.java: Removed.
+ * java/io/OutputStreamWriter.java
+ (OutputStreamWriter(OutputStream,Charset)): New constructor.
+ (OutputStreamWriter(OutputStream,CharsetEncoder)): Likewise.
+ * java/io/InputStreamReader.java
+ (InputStreamReader(InputStream,CharsetDecoder)): New constructor.
+ (InputStreamReader(InputStream,Charset)): Likewise.
+ * gnu/gcj/convert/BytesToUnicode.java (getDecoder): Try a
+ BytesToCharsetAdaptor.
+ * gnu/gcj/convert/UnicodeToBytes.java (getEncoder): Try a
+ CharsetToBytesAdaptor.
+ * gnu/gcj/convert/CharsetToBytesAdaptor.java: New file.
+ * gnu/gcj/convert/BytesToCharsetAdaptor.java: New file.
+ * mauve-libgcj: Remove getEncoding exclusion.
+
+2005-12-28 Anthony Green <green@redhat.com>
+
+ * gnu/java/net/natPlainSocketImplWin32.cc (connect): Same
+ as previous patch, but for win32.
+
+2005-12-28 Anthony Green <green@redhat.com>
+
+ * gnu/java/net/natPlainSocketImplPosix.cc (connect): Record
+ address and port before attempting anything.
+
+2005-12-28 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ * sysdep/pa/locks.h (compare_and_swap): Add ldcw semaphore to make
+ operation atomic.
+
2005-12-22 Tom Tromey <tromey@redhat.com>
* java/lang/natClassLoader.cc (_Jv_NewArrayClass): Don't
diff --git a/libjava/Makefile.in b/libjava/Makefile.in
index 1223452a6dd..16f6aeab537 100644
--- a/libjava/Makefile.in
+++ b/libjava/Makefile.in
@@ -1138,7 +1138,9 @@ gnu/gcj/RawDataManaged.java
gnu_gcj_header_files = $(patsubst %.java,%.h,$(gnu_gcj_source_files))
gnu_gcj_convert_source_files = \
+gnu/gcj/convert/BytesToCharsetAdaptor.java \
gnu/gcj/convert/BytesToUnicode.java \
+gnu/gcj/convert/CharsetToBytesAdaptor.java \
gnu/gcj/convert/Convert.java \
gnu/gcj/convert/IOConverter.java \
gnu/gcj/convert/Input_8859_1.java \
@@ -1712,7 +1714,7 @@ classpath/gnu/java/nio/charset/MacRomania.java \
classpath/gnu/java/nio/charset/MacSymbol.java \
classpath/gnu/java/nio/charset/MacThai.java \
classpath/gnu/java/nio/charset/MacTurkish.java \
-gnu/java/nio/charset/Provider.java \
+classpath/gnu/java/nio/charset/Provider.java \
classpath/gnu/java/nio/charset/US_ASCII.java \
classpath/gnu/java/nio/charset/UTF_16.java \
classpath/gnu/java/nio/charset/UTF_16BE.java \
diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog
index 125388f5d6f..85df787cc4d 100644
--- a/libjava/classpath/ChangeLog
+++ b/libjava/classpath/ChangeLog
@@ -1,3 +1,19 @@
+2005-12-27 Tom Tromey <tromey@redhat.com>
+
+ * gnu/java/nio/SelectorImpl.java: Added import.
+
+2005-12-26 Anthony Green <green@redhat.com>
+
+ * java/net/Socket.java (connect): Don't close the socket on
+ exceptions.
+
+ * gnu/java/nio/SocketChannelImpl.java (read): Compute the right amount
+ of data to read (dst.remaining()).
+ * gnu/java/nio/DatagramChannelImpl.java (receive): Ditto.
+
+ * gnu/java/nio/SelectorImpl.java (select): Handle OP_CONNECT
+ properly.
+
2005-11-17 Roman Kennke <kennke@aicas.com>
* javax/swing/JEditorPane.java
diff --git a/libjava/classpath/gnu/java/nio/DatagramChannelImpl.java b/libjava/classpath/gnu/java/nio/DatagramChannelImpl.java
index 51c7031fe69..4687bf3f59e 100644
--- a/libjava/classpath/gnu/java/nio/DatagramChannelImpl.java
+++ b/libjava/classpath/gnu/java/nio/DatagramChannelImpl.java
@@ -201,7 +201,7 @@ public final class DatagramChannelImpl extends DatagramChannel
try
{
DatagramPacket packet;
- int len = dst.capacity() - dst.position();
+ int len = dst.remaining();
if (dst.hasArray())
{
diff --git a/libjava/classpath/gnu/java/nio/SelectorImpl.java b/libjava/classpath/gnu/java/nio/SelectorImpl.java
index dcafedeb8bb..e10f7157443 100644
--- a/libjava/classpath/gnu/java/nio/SelectorImpl.java
+++ b/libjava/classpath/gnu/java/nio/SelectorImpl.java
@@ -43,6 +43,7 @@ import java.nio.channels.ClosedSelectorException;
import java.nio.channels.SelectableChannel;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
+import java.nio.channels.SocketChannel;
import java.nio.channels.spi.AbstractSelectableChannel;
import java.nio.channels.spi.AbstractSelector;
import java.nio.channels.spi.SelectorProvider;
@@ -284,19 +285,18 @@ public class SelectorImpl extends AbstractSelector
// Set new ready write ops
for (int i = 0; i < write.length; i++)
{
- if (key.getNativeFD() == write[i])
- {
- ops = ops | SelectionKey.OP_WRITE;
-
- // if (key.channel ().isConnected ())
- // {
- // ops = ops | SelectionKey.OP_WRITE;
- // }
- // else
- // {
- // ops = ops | SelectionKey.OP_CONNECT;
- // }
- }
+ if (key.getNativeFD() == write[i])
+ {
+ if (key.channel() instanceof SocketChannel)
+ {
+ if (((SocketChannel) key.channel ()).isConnected ())
+ ops = ops | SelectionKey.OP_WRITE;
+ else
+ ops = ops | SelectionKey.OP_CONNECT;
+ }
+ else
+ ops = ops | SelectionKey.OP_WRITE;
+ }
}
// FIXME: We dont handle exceptional file descriptors yet.
diff --git a/libjava/classpath/gnu/java/nio/SocketChannelImpl.java b/libjava/classpath/gnu/java/nio/SocketChannelImpl.java
index fcddbd6c351..680eba2f92b 100644
--- a/libjava/classpath/gnu/java/nio/SocketChannelImpl.java
+++ b/libjava/classpath/gnu/java/nio/SocketChannelImpl.java
@@ -220,7 +220,7 @@ public final class SocketChannelImpl extends SocketChannel
int offset = 0;
InputStream input = socket.getInputStream();
int available = input.available();
- int len = dst.capacity() - dst.position();
+ int len = dst.remaining();
if ((! isBlocking()) && available == 0)
return 0;
diff --git a/libjava/classpath/java/net/Socket.java b/libjava/classpath/java/net/Socket.java
index 0ff6e6ea032..b2249ffaa0d 100644
--- a/libjava/classpath/java/net/Socket.java
+++ b/libjava/classpath/java/net/Socket.java
@@ -437,25 +437,7 @@ public class Socket
if (! isBound())
bind(null);
- try
- {
- getImpl().connect(endpoint, timeout);
- }
- catch (IOException exception)
- {
- close();
- throw exception;
- }
- catch (RuntimeException exception)
- {
- close();
- throw exception;
- }
- catch (Error error)
- {
- close();
- throw error;
- }
+ getImpl().connect(endpoint, timeout);
}
/**
diff --git a/libjava/gnu/gcj/convert/BytesToCharsetAdaptor.java b/libjava/gnu/gcj/convert/BytesToCharsetAdaptor.java
new file mode 100644
index 00000000000..78ba848e118
--- /dev/null
+++ b/libjava/gnu/gcj/convert/BytesToCharsetAdaptor.java
@@ -0,0 +1,90 @@
+/* Copyright (C) 2005 Free Software Foundation
+
+This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package gnu.gcj.convert;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
+import java.nio.charset.CodingErrorAction;
+import java.nio.charset.CoderResult;
+import gnu.java.nio.charset.EncodingHelper;
+
+/**
+ * Adaptor class that allow any {@link Charset} to be used
+ * as a BytesToUnicode converter.
+ */
+public class BytesToCharsetAdaptor extends BytesToUnicode
+{
+ /**
+ * The CharsetDecoder that does all the work.
+ */
+ private final CharsetDecoder decoder;
+
+ /**
+ * ByteBuffer wrapper for this.buf.
+ */
+ private ByteBuffer inBuf;
+
+ /**
+ * Create a new BytesToCharsetAdaptor for the given Charset.
+ *
+ * @param cs the Charset.
+ */
+ public BytesToCharsetAdaptor(Charset cs)
+ {
+ this(cs.newDecoder());
+ }
+
+ /**
+ * Create a new BytesToCharsetAdaptor for the given CharsetDecoder.
+ *
+ * @param dec the CharsetDecoder.
+ */
+ public BytesToCharsetAdaptor(CharsetDecoder dec)
+ {
+ decoder = dec;
+ // Use default replacments on bad input so that we don't have to
+ // deal with errors.
+ decoder.onMalformedInput(CodingErrorAction.REPLACE);
+ decoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+ }
+
+ /**
+ * Return the decoder's name. The backing Charset's name is
+ * returned.
+ *
+ * @return The name.
+ */
+ public String getName()
+ {
+ return EncodingHelper.getOldCanonical(decoder.charset().name());
+ }
+
+ public int read(char[] outbuffer, int outpos, int count)
+ {
+ if (inBuf == null || ! inBuf.hasArray() || inBuf.array() != inbuffer)
+ inBuf = ByteBuffer.wrap(inbuffer);
+ inBuf.limit(inpos + inlength);
+ inBuf.position(inpos);
+
+ CharBuffer outBuf = CharBuffer.wrap(outbuffer, outpos, count);
+ decoder.decode(inBuf, outBuf, false);
+
+ // Update this.inpos to reflect the bytes consumed.
+ inpos = inBuf.position();
+ // Return the number of characters that were written to outbuffer.
+ return outBuf.position() - outpos;
+ }
+
+ // These aren't cached.
+ public void done()
+ {
+ }
+}
diff --git a/libjava/gnu/gcj/convert/BytesToUnicode.java b/libjava/gnu/gcj/convert/BytesToUnicode.java
index f33720aa227..e3afe3ee97b 100644
--- a/libjava/gnu/gcj/convert/BytesToUnicode.java
+++ b/libjava/gnu/gcj/convert/BytesToUnicode.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2001 Free Software Foundation
+/* Copyright (C) 1999, 2000, 2001, 2005 Free Software Foundation
This file is part of libgcj.
@@ -8,6 +8,8 @@ details. */
package gnu.gcj.convert;
+import java.nio.charset.Charset;
+
public abstract class BytesToUnicode extends IOConverter
{
/** Buffer to read bytes from.
@@ -104,11 +106,20 @@ public abstract class BytesToUnicode extends IOConverter
try
{
// We pass the original name to iconv and let it handle
- // its own aliasing.
+ // its own aliasing. Note that we intentionally prefer
+ // iconv over nio.
return new Input_iconv (encoding);
}
catch (Throwable _)
{
+ // Ignore, and try the next method.
+ }
+ try
+ {
+ return new BytesToCharsetAdaptor(Charset.forName(encoding));
+ }
+ catch (Throwable _)
+ {
throw new java.io.UnsupportedEncodingException(encoding
+ " (" + ex + ')');
}
diff --git a/libjava/gnu/gcj/convert/CharsetToBytesAdaptor.java b/libjava/gnu/gcj/convert/CharsetToBytesAdaptor.java
new file mode 100644
index 00000000000..4e9bcd5b461
--- /dev/null
+++ b/libjava/gnu/gcj/convert/CharsetToBytesAdaptor.java
@@ -0,0 +1,150 @@
+/* Copyright (C) 2005, 2006 Free Software Foundation
+
+This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+package gnu.gcj.convert;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
+import java.nio.charset.CodingErrorAction;
+import java.nio.charset.CoderResult;
+import gnu.java.nio.charset.EncodingHelper;
+
+/**
+ * Adaptor class that allow any {@link Charset} to be used
+ * as a UnicodeToBytes converter.
+ */
+public class CharsetToBytesAdaptor extends UnicodeToBytes
+{
+ /**
+ * The CharsetEncoder that does all the work.
+ */
+ private final CharsetEncoder encoder;
+
+ /**
+ * ByteBuffer wrapper for this.buf.
+ */
+ private ByteBuffer outBuf;
+
+ /**
+ * True if we've told the CharsetEncoder that there are no more
+ * characters available.
+ */
+ private boolean closedEncoder;
+
+ /**
+ * True if we're finished.
+ */
+ private boolean finished;
+
+ /**
+ * Create a new CharsetToBytesAdaptor for the given Charset.
+ *
+ * @param cs The Charset.
+ */
+ public CharsetToBytesAdaptor(Charset cs)
+ {
+ this(cs.newEncoder());
+ }
+
+ /**
+ * Create a new CharsetToBytesAdaptor for the given CharsetEncoder.
+ *
+ * @param enc The CharsetEncoder.
+ */
+ public CharsetToBytesAdaptor(CharsetEncoder enc)
+ {
+ encoder = enc;
+ // Use default replacments on bad input so that we don't have to
+ // deal with errors.
+ encoder.onMalformedInput(CodingErrorAction.REPLACE);
+ encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);
+ }
+
+ /**
+ * Return the encoder's name. The backing Charset's name is
+ * returned.
+ *
+ * @return The name.
+ */
+ public String getName()
+ {
+ return EncodingHelper.getOldCanonical(encoder.charset().name());
+ }
+
+ public int write (char[] inbuffer, int inpos, int inlength)
+ {
+ // Wrap the char array so it can be used by the encoder.
+ CharBuffer b = CharBuffer.wrap(inbuffer, inpos, inlength);
+ write(b);
+ return b.position() - inpos; // Number of chars consumed.
+ }
+
+ public int write (String str, int inpos, int inlength, char work)
+ {
+ // Wrap the String so it can be used by the encoder.
+ CharBuffer b = CharBuffer.wrap(str, inpos, inlength);
+ write(b);
+ return b.position() - inpos; // Number of chars consumed.
+ }
+
+ /**
+ * Encode as much of inBuf as will fit in buf. The number of
+ * chars consumed is reflected by the new position of inBuf. The
+ * output is put in buf and count is incremented by the number of
+ * bytes written.
+ *
+ * @param inBuf The input.
+ */
+ private void write(CharBuffer inBuf)
+ {
+ // Reuse existing outBuf if it is still wrapping the same array
+ // it was created with.
+ if (outBuf == null || !outBuf.hasArray() || outBuf.array() != buf)
+ outBuf = ByteBuffer.wrap(buf);
+
+ // Set the current position.
+ outBuf.position(count);
+
+ // If we've already said that there is no more input available,
+ // then we simply try to flush again.
+ if (closedEncoder)
+ {
+ CoderResult result = encoder.flush(outBuf);
+ if (result == CoderResult.UNDERFLOW)
+ finished = true;
+ }
+ else
+ {
+ // Do the conversion. If there are no characters to write,
+ // then we are finished.
+ closedEncoder = ! inBuf.hasRemaining();
+ encoder.encode(inBuf, outBuf, closedEncoder);
+ }
+
+ // Mark the new end of buf.
+ count = outBuf.position();
+ }
+
+ /**
+ * Check for cached output in the converter.
+ *
+ * @return true if there is cached output that has not been
+ * written to buf.
+ */
+ public boolean havePendingBytes()
+ {
+ return ! finished;
+ }
+
+ // These aren't cached.
+ public void done()
+ {
+ }
+}
diff --git a/libjava/gnu/gcj/convert/UnicodeToBytes.java b/libjava/gnu/gcj/convert/UnicodeToBytes.java
index b1432586ce5..8522bec117a 100644
--- a/libjava/gnu/gcj/convert/UnicodeToBytes.java
+++ b/libjava/gnu/gcj/convert/UnicodeToBytes.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2000, 2001, 2003 Free Software Foundation
+/* Copyright (C) 1999, 2000, 2001, 2003, 2005 Free Software Foundation
This file is part of libgcj.
@@ -8,6 +8,8 @@ details. */
package gnu.gcj.convert;
+import java.nio.charset.Charset;
+
public abstract class UnicodeToBytes extends IOConverter
{
/** Buffer to emit bytes to.
@@ -99,10 +101,22 @@ public abstract class UnicodeToBytes extends IOConverter
catch (Throwable ex)
{
try
- {
+ {
// We pass the original name to iconv and let it handle
- // its own aliasing.
+ // its own aliasing. Note that we intentionally prefer
+ // iconv over nio.
return new Output_iconv (encoding);
+ }
+ catch (Throwable _)
+ {
+ // Ignore, and try the next method.
+ }
+ try
+ {
+ // Try using finding java.nio.charset.Charset and using
+ // the adaptor. Use the original name as Charsets have
+ // their own canonical names.
+ return new CharsetToBytesAdaptor(Charset.forName(encoding));
}
catch (Throwable _)
{
diff --git a/libjava/gnu/gcj/runtime/SystemClassLoader.java b/libjava/gnu/gcj/runtime/SystemClassLoader.java
index 1bb5ef94212..efd33230fbe 100644
--- a/libjava/gnu/gcj/runtime/SystemClassLoader.java
+++ b/libjava/gnu/gcj/runtime/SystemClassLoader.java
@@ -1,4 +1,4 @@
-/* Copyright (C) 2005 Free Software Foundation
+/* Copyright (C) 2005, 2006 Free Software Foundation
This file is part of libgcj.
@@ -21,6 +21,25 @@ public final class SystemClassLoader extends URLClassLoader
super(new URL[0], parent);
}
+ // This is called to register a native class which was linked into
+ // the application but which is registered with the system class
+ // loader after the VM is initialized.
+ void addClass(Class klass)
+ {
+ String packageName = null;
+ String className = klass.getName();
+ int lastDot = className.lastIndexOf('.');
+ if (lastDot != -1)
+ packageName = className.substring(0, lastDot);
+ if (packageName != null && getPackage(packageName) == null)
+ {
+ // Should have some way to store this information in a
+ // precompiled manifest.
+ definePackage(packageName, null, null, null, null, null, null, null);
+ }
+ loadedClasses.put(className, klass);
+ }
+
// We add the URLs to the system class loader late. The reason for
// this is that during bootstrap we don't want to parse URLs or
// create URL connections, since that will result in circularities
diff --git a/libjava/gnu/java/net/natPlainSocketImplPosix.cc b/libjava/gnu/java/net/natPlainSocketImplPosix.cc
index 643f4e4909a..be9437cd7db 100644
--- a/libjava/gnu/java/net/natPlainSocketImplPosix.cc
+++ b/libjava/gnu/java/net/natPlainSocketImplPosix.cc
@@ -142,6 +142,15 @@ gnu::java::net::PlainSocketImpl::connect (::java::net::SocketAddress *addr,
::java::net::InetAddress *host = tmp->getAddress();
jint rport = tmp->getPort();
+ // Set the SocketImpl's address and port fields before we try to
+ // connect. Note that the fact that these are set doesn't imply
+ // that we're actually connected to anything. We need to record
+ // this data before we attempt the connect, since non-blocking
+ // SocketChannels will use this and almost certainly throw timeout
+ // exceptions.
+ address = host;
+ port = rport;
+
union SockAddr u;
socklen_t addrlen = sizeof(u);
jbyteArray haddress = host->addr;
@@ -197,9 +206,6 @@ gnu::java::net::PlainSocketImpl::connect (::java::net::SocketAddress *addr,
goto error;
}
- address = host;
- port = rport;
-
// A bind may not have been done on this socket; if so, set localport now.
if (localport == 0)
{
diff --git a/libjava/gnu/java/net/natPlainSocketImplWin32.cc b/libjava/gnu/java/net/natPlainSocketImplWin32.cc
index 48c7171c7c1..f54edb54630 100644
--- a/libjava/gnu/java/net/natPlainSocketImplWin32.cc
+++ b/libjava/gnu/java/net/natPlainSocketImplWin32.cc
@@ -133,6 +133,15 @@ gnu::java::net::PlainSocketImpl::connect (::java::net::SocketAddress *addr,
::java::net::InetAddress *host = tmp->getAddress();
jint rport = tmp->getPort();
+ // Set the SocketImpl's address and port fields before we try to
+ // connect. Note that the fact that these are set doesn't imply
+ // that we're actually connected to anything. We need to record
+ // this data before we attempt the connect, since non-blocking
+ // SocketChannels will use this and almost certainly throw timeout
+ // exceptions.
+ address = host;
+ port = rport;
+
union SockAddr u;
socklen_t addrlen = sizeof(u);
jbyteArray haddress = host->addr;
@@ -208,9 +217,6 @@ gnu::java::net::PlainSocketImpl::connect (::java::net::SocketAddress *addr,
throwConnectException();
}
- address = host;
- port = rport;
-
// A bind may not have been done on this socket; if so, set localport now.
if (localport == 0)
{
diff --git a/libjava/gnu/java/nio/charset/Provider.java b/libjava/gnu/java/nio/charset/Provider.java
deleted file mode 100644
index 586a09e1a1b..00000000000
--- a/libjava/gnu/java/nio/charset/Provider.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/* Provider.java --
- Copyright (C) 2002, 2005 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.java.nio.charset;
-
-import java.nio.charset.Charset;
-import java.nio.charset.spi.CharsetProvider;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-
-/**
- * Charset provider for the required charsets. Used by
- * {@link Charset#charsetForName} and * {@link Charset#availableCharsets}.
- *
- * @author Jesse Rosenstock
- * @author Robert Schuster (thebohemian@gmx.net)
- * @see Charset
- */
-public final class Provider extends CharsetProvider
-{
- private static Provider singleton;
-
- static
- {
- synchronized (Provider.class)
- {
- singleton = null;
- }
- }
-
- /**
- * Map from charset name to charset canonical name. The strings
- * are all lower-case to allow case-insensitive retrieval of
- * Charset instances.
- */
- private final HashMap canonicalNames;
-
- /**
- * Map from lower-case canonical name to Charset.
- * TODO: We may want to use soft references. We would then need to keep
- * track of the class name to regenerate the object.
- */
- private final HashMap charsets;
-
- private Provider ()
- {
- canonicalNames = new HashMap ();
- charsets = new HashMap ();
-
- // US-ASCII aka ISO646-US
- addCharset (new US_ASCII ());
-
- // ISO-8859-1 aka ISO-LATIN-1
- addCharset (new ISO_8859_1 ());
-
- // UTF-8
- addCharset (new UTF_8 ());
-
- // UTF-16BE
- addCharset (new UTF_16BE ());
-
- // UTF-16LE
- addCharset (new UTF_16LE ());
-
- // UTF-16
- addCharset (new UTF_16 ());
- }
-
- public Iterator charsets ()
- {
- return Collections.unmodifiableCollection (charsets.values ())
- .iterator ();
- }
-
- /**
- * Returns a Charset instance by converting the given
- * name to lower-case, looking up the canonical charset
- * name and finally looking up the Charset with that name.
- *
- * <p>The lookup is therefore case-insensitive.</p>
- *
- * @returns The Charset having <code>charsetName</code>
- * as its alias or null if no such Charset exist.
- */
- public Charset charsetForName (String charsetName)
- {
- return (Charset) charsets.get(canonicalNames.get(charsetName.toLowerCase()));
- }
-
- /**
- * Puts a Charset under its canonical name into the 'charsets' map.
- * Then puts a mapping from all its alias names to the canonical name.
- *
- * <p>All names are converted to lower-case</p>.
- *
- * @param cs
- */
- private void addCharset (Charset cs)
- {
- String canonicalName = cs.name().toLowerCase();
- charsets.put (canonicalName, cs);
-
- /* Adds a mapping between the canonical name
- * itself making a lookup using that name
- * no special case.
- */
- canonicalNames.put(canonicalName, canonicalName);
-
- for (Iterator i = cs.aliases ().iterator (); i.hasNext (); )
- canonicalNames.put (((String) i.next()).toLowerCase(), canonicalName);
- }
-
- public static synchronized Provider provider ()
- {
- if (singleton == null)
- singleton = new Provider ();
- return singleton;
- }
-}
diff --git a/libjava/java/io/InputStreamReader.java b/libjava/java/io/InputStreamReader.java
index e55f1352caa..91568c5cc50 100644
--- a/libjava/java/io/InputStreamReader.java
+++ b/libjava/java/io/InputStreamReader.java
@@ -39,6 +39,8 @@ exception statement from your version. */
package java.io;
import gnu.gcj.convert.*;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetDecoder;
/**
* This class reads characters from a byte input stream. The characters
@@ -131,6 +133,25 @@ public class InputStreamReader extends Reader
this(in, BytesToUnicode.getDecoder(encoding_name));
}
+ /**
+ * Creates an InputStreamReader that uses a decoder of the given
+ * charset to decode the bytes in the InputStream into
+ * characters.
+ */
+ public InputStreamReader(InputStream in, Charset charset)
+ {
+ this(in, new BytesToCharsetAdaptor(charset));
+ }
+
+ /**
+ * Creates an InputStreamReader that uses the given charset decoder
+ * to decode the bytes in the InputStream into characters.
+ */
+ public InputStreamReader(InputStream in, CharsetDecoder decoder)
+ {
+ this(in, new BytesToCharsetAdaptor(decoder));
+ }
+
private InputStreamReader(InputStream in, BytesToUnicode decoder)
{
// FIXME: someone could pass in a BufferedInputStream whose buffer
diff --git a/libjava/java/io/OutputStreamWriter.java b/libjava/java/io/OutputStreamWriter.java
index 8b7beeb497b..90ecd9f0bc3 100644
--- a/libjava/java/io/OutputStreamWriter.java
+++ b/libjava/java/io/OutputStreamWriter.java
@@ -39,6 +39,9 @@ exception statement from your version. */
package java.io;
import gnu.gcj.convert.UnicodeToBytes;
+import gnu.gcj.convert.CharsetToBytesAdaptor;
+import java.nio.charset.Charset;
+import java.nio.charset.CharsetEncoder;
/**
* This class writes characters to an output stream that is byte oriented
@@ -129,6 +132,31 @@ public class OutputStreamWriter extends Writer
}
/**
+ * This method initializes a new instance of <code>OutputStreamWriter</code>
+ * to write to the specified stream using a given <code>Charset</code>.
+ *
+ * @param out The <code>OutputStream</code> to write to
+ * @param cs The <code>Charset</code> of the encoding to use
+ */
+ public OutputStreamWriter(OutputStream out, Charset cs)
+ {
+ this(out, new CharsetToBytesAdaptor(cs));
+ }
+
+ /**
+ * This method initializes a new instance of <code>OutputStreamWriter</code>
+ * to write to the specified stream using a given
+ * <code>CharsetEncoder</code>.
+ *
+ * @param out The <code>OutputStream</code> to write to
+ * @param enc The <code>CharsetEncoder</code> to encode the output with
+ */
+ public OutputStreamWriter(OutputStream out, CharsetEncoder enc)
+ {
+ this(out, new CharsetToBytesAdaptor(enc));
+ }
+
+ /**
* This method closes this stream, and the underlying
* <code>OutputStream</code>
*
diff --git a/libjava/java/lang/Class.h b/libjava/java/lang/Class.h
index a2ec357f770..1c14df3a9c3 100644
--- a/libjava/java/lang/Class.h
+++ b/libjava/java/lang/Class.h
@@ -1,6 +1,6 @@
// Class.h - Header file for java.lang.Class. -*- c++ -*-
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation
This file is part of libgcj.
@@ -22,6 +22,21 @@ details. */
#include <java/security/ProtectionDomain.h>
#include <java/lang/Package.h>
+// Avoid including SystemClassLoader.h.
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace gcj
+ {
+ namespace runtime
+ {
+ class SystemClassLoader;
+ }
+ }
+ }
+}
+
// We declare these here to avoid including gcj/cni.h.
extern "C" void _Jv_InitClass (jclass klass);
extern "C" void _Jv_RegisterClasses (const jclass *classes);
@@ -237,7 +252,7 @@ jclass _Jv_GetArrayClass (jclass klass, java::lang::ClassLoader *loader);
jboolean _Jv_IsInterpretedClass (jclass);
jboolean _Jv_IsBinaryCompatibilityABI (jclass);
-void _Jv_CopyClassesToSystemLoader (java::lang::ClassLoader *);
+void _Jv_CopyClassesToSystemLoader (gnu::gcj::runtime::SystemClassLoader *);
#ifdef INTERPRETER
void _Jv_InitField (jobject, jclass, int);
@@ -498,7 +513,7 @@ private:
friend void *::_Jv_ResolvePoolEntry (jclass this_class, jint index);
- friend void ::_Jv_CopyClassesToSystemLoader (java::lang::ClassLoader *);
+ friend void ::_Jv_CopyClassesToSystemLoader (gnu::gcj::runtime::SystemClassLoader *);
// Chain for class pool. This also doubles as the ABI version
// number. It is only used for this purpose at class registration
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc
index cfb061291a7..797005b54c7 100644
--- a/libjava/java/lang/natClassLoader.cc
+++ b/libjava/java/lang/natClassLoader.cc
@@ -1,6 +1,6 @@
// natClassLoader.cc - Implementation of java.lang.ClassLoader native methods.
-/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation
+/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation
This file is part of libgcj.
@@ -43,6 +43,7 @@ details. */
#include <java/lang/Cloneable.h>
#include <java/util/HashMap.h>
#include <gnu/gcj/runtime/BootClassLoader.h>
+#include <gnu/gcj/runtime/SystemClassLoader.h>
// Size of local hash table.
#define HASH_LEN 1013
@@ -253,14 +254,14 @@ _Jv_RegisterClass (jclass klass)
// This is used during initialization to register all compiled-in
// classes that are not part of the core with the system class loader.
void
-_Jv_CopyClassesToSystemLoader (java::lang::ClassLoader *loader)
+_Jv_CopyClassesToSystemLoader (gnu::gcj::runtime::SystemClassLoader *loader)
{
for (jclass klass = system_class_list;
klass;
klass = klass->next_or_version)
{
klass->loader = loader;
- loader->loadedClasses->put(klass->name->toString(), klass);
+ loader->addClass(klass);
}
system_class_list = SYSTEM_LOADER_INITIALIZED;
}
diff --git a/libjava/java/nio/charset/Charset.java b/libjava/java/nio/charset/Charset.java
index 14b6db83b0f..48093bc9d3d 100644
--- a/libjava/java/nio/charset/Charset.java
+++ b/libjava/java/nio/charset/Charset.java
@@ -38,6 +38,8 @@ exception statement from your version. */
package java.nio.charset;
+import gnu.classpath.ServiceFactory;
+import gnu.classpath.SystemProperties;
import gnu.java.nio.charset.Provider;
import java.io.BufferedReader;
@@ -116,6 +118,53 @@ public abstract class Charset implements Comparable
}
}
+ /**
+ * Returns the system default charset.
+ *
+ * This may be set by the user or VM with the file.encoding
+ * property.
+ *
+ * @since 1.5
+ */
+ public static Charset defaultCharset()
+ {
+ String encoding;
+
+ try
+ {
+ encoding = SystemProperties.getProperty("file.encoding");
+ }
+ catch(SecurityException e)
+ {
+ // Use fallback.
+ encoding = "ISO-8859-1";
+ }
+ catch(IllegalArgumentException e)
+ {
+ // Use fallback.
+ encoding = "ISO-8859-1";
+ }
+
+ try
+ {
+ return forName(encoding);
+ }
+ catch(UnsupportedCharsetException e)
+ {
+ // Ignore.
+ }
+ catch(IllegalCharsetNameException e)
+ {
+ // Ignore.
+ }
+ catch(IllegalArgumentException e)
+ {
+ // Ignore.
+ }
+
+ throw new IllegalStateException("Can't get default charset!");
+ }
+
public static boolean isSupported (String charsetName)
{
return charsetForName (charsetName) != null;
@@ -155,13 +204,19 @@ public abstract class Charset implements Comparable
private static Charset charsetForName(String charsetName)
{
checkName (charsetName);
- Charset cs = null;
- CharsetProvider[] providers = providers2();
- for (int i = 0; i < providers.length; i++)
+ // Try the default provider first
+ // (so we don't need to load external providers unless really necessary)
+ // if it is an exotic charset try loading the external providers.
+ Charset cs = provider().charsetForName(charsetName);
+ if (cs == null)
{
- cs = providers[i].charsetForName(charsetName);
- if (cs != null)
- break;
+ CharsetProvider[] providers = providers2();
+ for (int i = 0; i < providers.length; i++)
+ {
+ cs = providers[i].charsetForName(charsetName);
+ if (cs != null)
+ break;
+ }
}
return cs;
}
@@ -169,6 +224,11 @@ public abstract class Charset implements Comparable
public static SortedMap availableCharsets()
{
TreeMap charsets = new TreeMap(String.CASE_INSENSITIVE_ORDER);
+ for (Iterator i = provider().charsets(); i.hasNext(); )
+ {
+ Charset cs = (Charset) i.next();
+ charsets.put(cs.name(), cs);
+ }
CharsetProvider[] providers = providers2();
for (int j = 0; j < providers.length; j++)
@@ -206,7 +266,7 @@ public abstract class Charset implements Comparable
/**
* We need to support multiple providers, reading them from
* java.nio.charset.spi.CharsetProvider in the resource directory
- * META-INF/services.
+ * META-INF/services. This returns the "extra" charset providers.
*/
private static CharsetProvider[] providers2()
{
@@ -214,24 +274,10 @@ public abstract class Charset implements Comparable
{
try
{
- Enumeration en = ClassLoader.getSystemResources
- ("META-INF/services/java.nio.charset.spi.CharsetProvider");
+ Iterator i = ServiceFactory.lookupProviders(CharsetProvider.class);
LinkedHashSet set = new LinkedHashSet();
- set.add(provider());
- while (en.hasMoreElements())
- {
- BufferedReader rdr = new BufferedReader(new InputStreamReader
- (((URL) (en.nextElement())).openStream()));
- while (true)
- {
- String s = rdr.readLine();
- if (s == null)
- break;
- CharsetProvider p =
- (CharsetProvider) ((Class.forName(s)).newInstance());
- set.add(p);
- }
- }
+ while (i.hasNext())
+ set.add(i.next());
providers = new CharsetProvider[set.size()];
set.toArray(providers);
diff --git a/libjava/mauve-libgcj b/libjava/mauve-libgcj
index 76c18f2d92b..4d4cf5bc16a 100644
--- a/libjava/mauve-libgcj
+++ b/libjava/mauve-libgcj
@@ -23,4 +23,3 @@ JDBC2.0
!java.awt.event.MouseEvent.modifiersEx
!org.omg.
!javax.rmi
-!java.io.InputStreamReader.getEncoding
diff --git a/libjava/posix-threads.cc b/libjava/posix-threads.cc
index 042370fc379..6ef50bda8e4 100644
--- a/libjava/posix-threads.cc
+++ b/libjava/posix-threads.cc
@@ -338,8 +338,10 @@ _Jv_InitThreads (void)
// Bigger default on 64-bit systems.
min_ss *= 2;
+#ifdef PTHREAD_STACK_MIN
if (min_ss < PTHREAD_STACK_MIN)
min_ss = PTHREAD_STACK_MIN;
+#endif
if (gcj::stack_size > 0 && gcj::stack_size < min_ss)
gcj::stack_size = min_ss;
diff --git a/libjava/sources.am b/libjava/sources.am
index 4cd7e49d8fe..d976154598b 100644
--- a/libjava/sources.am
+++ b/libjava/sources.am
@@ -497,7 +497,9 @@ gnu/gcj.list: $(gnu_gcj_source_files)
gnu_gcj_convert_source_files = \
+gnu/gcj/convert/BytesToCharsetAdaptor.java \
gnu/gcj/convert/BytesToUnicode.java \
+gnu/gcj/convert/CharsetToBytesAdaptor.java \
gnu/gcj/convert/Convert.java \
gnu/gcj/convert/IOConverter.java \
gnu/gcj/convert/Input_8859_1.java \
@@ -1350,7 +1352,7 @@ classpath/gnu/java/nio/charset/MacRomania.java \
classpath/gnu/java/nio/charset/MacSymbol.java \
classpath/gnu/java/nio/charset/MacThai.java \
classpath/gnu/java/nio/charset/MacTurkish.java \
-gnu/java/nio/charset/Provider.java \
+classpath/gnu/java/nio/charset/Provider.java \
classpath/gnu/java/nio/charset/US_ASCII.java \
classpath/gnu/java/nio/charset/UTF_16.java \
classpath/gnu/java/nio/charset/UTF_16BE.java \
diff --git a/libjava/sysdep/pa/locks.h b/libjava/sysdep/pa/locks.h
index 3f24afc5669..4edc2d71626 100644
--- a/libjava/sysdep/pa/locks.h
+++ b/libjava/sysdep/pa/locks.h
@@ -1,6 +1,6 @@
-// locks.h - Thread synchronization primitives. PARISC implementation.
+// locks.h - Thread synchronization primitives. PA-RISC implementation.
-/* Copyright (C) 2002 Free Software Foundation
+/* Copyright (C) 2002, 2005 Free Software Foundation
This file is part of libgcj.
@@ -11,30 +11,62 @@ details. */
#ifndef __SYSDEP_LOCKS_H__
#define __SYSDEP_LOCKS_H__
-typedef size_t obj_addr_t; /* Integer type big enough for object */
- /* address. */
+// Integer type big enough for object address.
+typedef size_t obj_addr_t;
-// Atomically replace *addr by new_val if it was initially equal to old.
-// Return true if the comparison succeeded.
+template<int _Inst>
+ struct _pa_jv_cas_lock
+ {
+ static volatile int _S_pa_jv_cas_lock;
+ };
+
+template<int _Inst>
+volatile int
+_pa_jv_cas_lock<_Inst>::_S_pa_jv_cas_lock __attribute__ ((aligned (16))) = 1;
+
+// Because of the lack of weak support when using the hpux som
+// linker, we explicitly instantiate the atomicity lock.
+template volatile int _pa_jv_cas_lock<0>::_S_pa_jv_cas_lock;
+
+// Atomically replace *addr by new_val if it was initially equal to old_val.
+// Return true if the comparison is successful.
// Assumed to have acquire semantics, i.e. later memory operations
// cannot execute before the compare_and_swap finishes.
+// The following implementation is atomic but it can deadlock
+// (e.g., if a thread dies holding the lock).
inline static bool
+__attribute__ ((__unused__))
compare_and_swap(volatile obj_addr_t *addr,
- obj_addr_t old,
+ obj_addr_t old_val,
obj_addr_t new_val)
{
- /* FIXME: not atomic */
- obj_addr_t prev;
+ bool result;
+ int tmp;
+ volatile int& lock = _pa_jv_cas_lock<0>::_S_pa_jv_cas_lock;
- if ((prev = *addr) == old)
- {
- *addr = new_val;
- return true;
- }
+ __asm__ __volatile__ ("ldcw 0(%1),%0\n\t"
+ "cmpib,<>,n 0,%0,.+20\n\t"
+ "ldw 0(%1),%0\n\t"
+ "cmpib,= 0,%0,.-4\n\t"
+ "nop\n\t"
+ "b,n .-20"
+ : "=&r" (tmp)
+ : "r" (&lock)
+ : "memory");
+
+ if (*addr != old_val)
+ result = false;
else
{
- return false;
+ *addr = new_val;
+ result = true;
}
+
+ /* Reset lock with PA 2.0 "ordered" store. */
+ __asm__ __volatile__ ("stw,ma %1,0(%0)"
+ : : "r" (&lock), "r" (tmp) : "memory");
+
+ return result;
}
// Set *addr to new_val with release semantics, i.e. making sure
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 88f09b539bb..43dc2a6f770 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,147 @@
+2006-01-03 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/27_io/basic_stringstream/str/char/1.cc: Initialize vars.
+ * testsuite/27_io/basic_stringstream/str/wchar_t/1.cc: Likewise.
+ * testsuite/27_io/basic_istringstream/str/char/1.cc: Likewise, tidy.
+ * testsuite/27_io/basic_istringstream/str/wchar_t/1.cc: Likewise.
+
+2005-12-28 Paolo Carlini <pcarlini@suse.de>
+
+ * testsuite/25_algorithms/heap/heap.cc (test01): Always enable
+ complexity checks.
+ * testsuite/18_support/numeric_limits/specialization.cc: Avoid
+ unused parameter warning.
+ * testsuite/18_support/numeric_limits/traps.cc: Acoid unused variable
+ warning.
+ * testsuite/ext/malloc_allocator/deallocate_global.cc: Fix format
+ string.
+ * testsuite/ext/malloc_allocator/deallocate_local.cc: Likewise.
+ * testsuite/ext/array_allocator/2.cc: Remove unused variable.
+ * testsuite/tr1/3_function_objects/mem_fn.cc: Avoid unused variable
+ warnings.
+ * testsuite/tr1/6_containers/unordered/instantiate/set.cc: Just
+ instantiate.
+ * testsuite/tr1/6_containers/unordered/instantiate/map.cc: Likewise.
+ * testsuite/tr1/6_containers/unordered/instantiate/hash.cc: Likewise.
+ * testsuite/tr1/6_containers/unordered/instantiate/multiset.cc:
+ Likewise.
+ * testsuite/tr1/6_containers/unordered/instantiate/multimap.cc:
+ Likewise.
+ * testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc:
+ Avoid unused variable warnings.
+ * testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc:
+ Likewise.
+ * testsuite/thread/18185.cc: Likewise.
+ * testsuite/27_io/ios_base/storage/11584.cc: Likewise; avoid comparison
+ between signed and unsigned warning.
+ * testsuite/27_io/types/1.cc: Avoid unused variable warnings.
+ * testsuite/testsuite_allocator.h (check_new): Likewise.
+ (check_deallocate_null): Adjust return type.
+ * testsuite/testsuite_hooks.h (bitmask_operators): Avoid unused
+ variable warnings.
+ * testsuite/21_strings/c_strings/wchar_t/24559.cc: Avoid unused
+ variable warning.
+
+2005-12-28 Chris Jefferson <chris@bubblescope.net>
+
+ * testsuite/tr1/6_containers/unordered/insert/multiset_range.cc
+ (test01): Add static cast.
+ * testsuite/tr1/6_containers/unordered/insert/set_range.cc
+ (test01): Likewise.
+ * testsuite/testsuite_allocator.h (check_deallocate_null): Return
+ true.
+ * testsuite/testsuite_hooks.h (operator==(NonDefaultConstructible,
+ NonDefaultConstructible), operator<(NonDefaultConstructible,
+ NonDefaultConstrictible)): Avoid unused parameter warning.
+
+2005-12-26 Chris Jefferson <chris@bubblescope.net>
+
+ * include/ext/mt_allocator.h (__mt_alloc::__mt_alloc): Remove
+ name of unused parameter.
+ * include/bits/stream_iterator.h (istream_iterator::istream_iterator):
+ Construct _M_value.
+ * include/debug/functions.h (__check_valid_range): Add
+ __attribute__((unused)).
+ * include/tr1/hashtable (hashtable::end): Remove name of unused
+ parameter.
+ * include/tr1/tuple_iterate.h (tuple::tuple): Likewise.
+ (tuple::operator=): Add __attribute__((unused)).
+ * include/tr1/functional (Fnv_hash<4>::hash): Add static_cast.
+ (Fnv_hash<8>::hash): Likewise.
+
+ * testsuite/25_algorithms/iter_swap/20577.cc (swap): Remove name of
+ unused parameter.
+ * testsuite/25_algorithms/unique_copy/check_type.cc (S2::S2,X2::X2):
+ Likewise.
+ * testsuite/22_locale/ctype/narrow/char/19955.cc (do_narrow): Likewise.
+ * testsuite/22_locale/ctype/is/char/9858.cc (Derived::do_is,
+ Derived::do_scan_is, Derived::do_scan_not, Derived2::do_is,
+ Derived2::do_scan_is, Derived2::do_scan_not): Likewise.
+ * testsuite/22_locale/time_put/put/wchar_t/12439_1.cc (TP::do_put):
+ Likewise.
+ * testsuite/22_locale/time_put/put/wchar_t/12439_3.cc (TP::do_put):
+ Likewise.
+ * testsuite/22_locale/time_put/put/char/12439_1.cc (TP::do_put):
+ Likewise.
+ * testsuite/22_locale/time_put/put/char/12439_3.cc (TP::do_put):
+ Likewise.
+ * testsuite/testsuite_io.h (fail_num_get::do_get, fail_num_put::do_put):
+ Likewise.
+ * testsuite/25_algorithms/find/17441.cc (find): Likewise.
+ * testsuite/23_containers/vector/cons/clear_allocator.cc
+ (clear_alloc::clear_alloc): Likewise.
+ * testsuite/23_containers/vector/bool/clear_allocator.cc
+ (clear_alloc::clear_alloc): Likewise.
+ * testsuite/23_containers/list/cons/clear_allocator.cc
+ (clear_alloc::clear_alloc): Likewise.
+ * testsuite/23_containers/set/modifiers/16728.cc (test_container):
+ Likewise.
+ * testsuite/27_io/basic_ios/cons/char/3.cc (char_traits::to_char_type,
+ to_int_type): Likewise.
+ * testsuite/27_io/basic_filebuf/imbue/12206.cc (codecvt::do_out, do_in,
+ do_unshift, do_length): Likewise.
+ * testsuite/21_strings/basic_string/capacity/1.cc
+ (operator==(A<T>,A<T>), operator<(A<T>,A<T>),
+ char_traits::to_char_type, char_traits::to_int_type): Likewise
+ * testsuite/testsuite_character.h (ctype::do_is, ctype::do_scan_is,
+ ctype::do_scan_not, do_toupper, do_tolower): Likewise.
+ * testsuite/25_algorithms/replace_copy/check_type.cc (Z::operator=):
+ Add missing return statement.
+ * testsuite/25_algorithms/replace_copy_if/check_type.cc (Z::operator=):
+ Likewise.
+ * testsuite/testsuite_iterators.h (output_iterator_wrapper::operator=,
+ random_access_iterator_wrapper::operator==): Likewise.
+ * testsuite/20_util/functional/binders/1.cc (s::f_int_int_const,
+ s::f_int_int, s::f_int_void_const, s::f_int_void): Likewise.
+ * testsuite/27_io/types/1.cc (test01): Likewise.
+ * testsuite/27_io/basic_ostream/write/wchar_t/1.cc (test01): Likewise.
+ * testsuite/27_io/basic_ostream/write/char/1.cc (test01): Likewise.
+ * testsuite/21_strings/c_strings/wchar_t/24559.cc (main): Likewise.
+ * testsuite/27_io/basic_istream/ignore/wchar_t/2.cc (check): Add static
+ cast.
+ * testsuite/27_io/basic_istream/ignore/char/2.cc (check): Likewise.
+ * testsuite/27_io/basic_istream/getline/wchar_t/5.cc (check): Likewise.
+ * testsuite/27_io/basic_istream/getline/char/5.cc (check): Likewise.
+ * testsuite/testsuite_allocator.h (check_new): Likewise.
+ (check_deallocate_null): Add missing return value.
+ * testsuite/ext/pool_allocator/allocate_chunk.cc (test01):
+ Make variable unsigned.
+ * testsuite/26_numerics/valarray/valarray_subset_assignment.cc
+ (check_array): Likewise.
+ (main): Removed unused variable.
+ * testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc (test05):
+ Removed unused variable.
+ * testsuite/27_io/basic_ostream/flush/wchar_t/1.cc (test01): Likewise.
+ * testsuite/27_io/basic_ostream/flush/char/1.cc (test01): Likewise.
+ * testsuite/27_io/basic_ostream/endl/wchar_t/1.cc (test01): Likewise.
+ * testsuite/27_io/basic_ostream/endl/char/1.cc (test01): Likewise.
+ * testsuite/27_io/basic_ostream/ends/wchar_t/1.cc (test01): Likewise.
+ * testsuite/27_io/basic_ostream/ends/char/1.cc (test01): Likewise.
+ * testsuite/tr1/2_general_utilities/memory/shared_ptr/
+ assign/shared_ptr.cc (test01): Correct return type.
+ * testsuite/27_io/basic_filebuf/close/char/2.cc (test_02):
+ Add default value to close_num.
+
2005-12-16 Paolo Carlini <pcarlini@suse.de>
* testsuite/tr1/4_metaprogramming/type_properties/is_empty/is_empty.cc:
diff --git a/libstdc++-v3/include/bits/stream_iterator.h b/libstdc++-v3/include/bits/stream_iterator.h
index c247868fa77..4745e76f288 100644
--- a/libstdc++-v3/include/bits/stream_iterator.h
+++ b/libstdc++-v3/include/bits/stream_iterator.h
@@ -60,7 +60,7 @@ namespace std
public:
/// Construct end of input stream iterator.
istream_iterator()
- : _M_stream(0), _M_ok(false) {}
+ : _M_stream(0), _M_value(), _M_ok(false) {}
/// Construct start of input stream iterator.
istream_iterator(istream_type& __s)
diff --git a/libstdc++-v3/include/debug/functions.h b/libstdc++-v3/include/debug/functions.h
index 744071120cc..6a0d892127b 100644
--- a/libstdc++-v3/include/debug/functions.h
+++ b/libstdc++-v3/include/debug/functions.h
@@ -151,7 +151,8 @@ namespace __gnu_debug
template<typename _InputIterator>
inline _InputIterator
__check_valid_range(const _InputIterator& __first,
- const _InputIterator& __last)
+ const _InputIterator& __last
+ __attribute__((__unused__)))
{
_GLIBCXX_DEBUG_ASSERT(__gnu_debug::__valid_range(__first, __last));
return __first;
@@ -160,7 +161,8 @@ namespace __gnu_debug
/** Checks that __s is non-NULL or __n == 0, and then returns __s. */
template<typename _CharT, typename _Integer>
inline const _CharT*
- __check_string(const _CharT* __s, const _Integer& __n)
+ __check_string(const _CharT* __s,
+ const _Integer& __n __attribute__((__unused__)))
{
#ifdef _GLIBCXX_DEBUG_PEDANTIC
_GLIBCXX_DEBUG_ASSERT(__s != 0 || __n == 0);
diff --git a/libstdc++-v3/include/ext/mt_allocator.h b/libstdc++-v3/include/ext/mt_allocator.h
index 014e62a57c1..cdfbb177439 100644
--- a/libstdc++-v3/include/ext/mt_allocator.h
+++ b/libstdc++-v3/include/ext/mt_allocator.h
@@ -631,7 +631,7 @@ namespace __gnu_cxx
__mt_alloc(const __mt_alloc&) throw() { }
template<typename _Tp1, typename _Poolp1>
- __mt_alloc(const __mt_alloc<_Tp1, _Poolp1>& obj) throw() { }
+ __mt_alloc(const __mt_alloc<_Tp1, _Poolp1>&) throw() { }
~__mt_alloc() throw() { }
diff --git a/libstdc++-v3/include/tr1/functional b/libstdc++-v3/include/tr1/functional
index 9672da8fe7c..3775438ccc6 100644
--- a/libstdc++-v3/include/tr1/functional
+++ b/libstdc++-v3/include/tr1/functional
@@ -1156,7 +1156,7 @@ namespace tr1
static std::size_t
hash(const char* first, std::size_t length)
{
- std::size_t result = 2166136261UL;
+ std::size_t result = static_cast<std::size_t>(2166136261UL);
for (; length > 0; --length)
{
result ^= (std::size_t)*first++;
@@ -1172,7 +1172,7 @@ namespace tr1
static std::size_t
hash(const char* first, std::size_t length)
{
- std::size_t result = 14695981039346656037ULL;
+ std::size_t result = static_cast<std::size_t>(14695981039346656037ULL);
for (; length > 0; --length)
{
result ^= (std::size_t)*first++;
diff --git a/libstdc++-v3/include/tr1/hashtable b/libstdc++-v3/include/tr1/hashtable
index 0add0e3a966..4e2b16d8f4b 100644
--- a/libstdc++-v3/include/tr1/hashtable
+++ b/libstdc++-v3/include/tr1/hashtable
@@ -1103,7 +1103,7 @@ namespace tr1
{ return local_iterator(m_buckets[n]); }
local_iterator
- end(size_type n)
+ end(size_type)
{ return local_iterator(0); }
const_local_iterator
@@ -1111,7 +1111,7 @@ namespace tr1
{ return const_local_iterator(m_buckets[n]); }
const_local_iterator
- end(size_type n) const
+ end(size_type) const
{ return const_local_iterator(0); }
float
diff --git a/libstdc++-v3/include/tr1/tuple_iterate.h b/libstdc++-v3/include/tr1/tuple_iterate.h
index 4ae56615ea9..320073bda52 100644
--- a/libstdc++-v3/include/tr1/tuple_iterate.h
+++ b/libstdc++-v3/include/tr1/tuple_iterate.h
@@ -93,13 +93,13 @@ template<_GLIBCXX_TEMPLATE_PARAMS>
#else
- tuple(const tuple& __in)
+ tuple(const tuple&)
{ }
#endif
tuple&
- operator=(const tuple& __in)
+ operator=(const tuple& __in __attribute__((__unused__)) )
{
_GLIBCXX_TUPLE_ASSIGN
return *this;
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/specialization.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/specialization.cc
index 815b7f5505c..0a1c8fec353 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/specialization.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/specialization.cc
@@ -3,7 +3,7 @@
// 1999-08-23 bkoz
-// Copyright (C) 1999, 2001, 2002, 2003, 2004 Free Software Foundation
+// Copyright (C) 1999, 2001, 2002, 2003, 2004, 2005 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -41,7 +41,7 @@ template<typename T>
struct B
{
- B(int i = 0) { }
+ B(int = 0) { }
};
diff --git a/libstdc++-v3/testsuite/18_support/numeric_limits/traps.cc b/libstdc++-v3/testsuite/18_support/numeric_limits/traps.cc
index e9bdd84e4b3..197a2518943 100644
--- a/libstdc++-v3/testsuite/18_support/numeric_limits/traps.cc
+++ b/libstdc++-v3/testsuite/18_support/numeric_limits/traps.cc
@@ -26,14 +26,14 @@
template<typename T>
void
- test_traps()
+ test_traps(T r = T(0))
{
typedef T value_type;
volatile value_type i(5);
volatile value_type j(0);
if (!std::numeric_limits<value_type>::traps)
- value_type r = i/j;
+ r = i / j;
}
// libstdc++/22203
diff --git a/libstdc++-v3/testsuite/20_util/functional/binders/1.cc b/libstdc++-v3/testsuite/20_util/functional/binders/1.cc
index 040125128d2..2d374e60fb0 100644
--- a/libstdc++-v3/testsuite/20_util/functional/binders/1.cc
+++ b/libstdc++-v3/testsuite/20_util/functional/binders/1.cc
@@ -27,12 +27,12 @@ struct s
{
void f_void_int_const(int) const {}
void f_void_int(int) {}
- int f_int_int_const(int) const {}
- int f_int_int(int) {}
+ int f_int_int_const(int) const { return 1; }
+ int f_int_int(int) {return 1; }
void f_void_void_const() const {}
void f_void_void() {}
- int f_int_void_const() const {}
- int f_int_void() {}
+ int f_int_void_const() const { return 1; }
+ int f_int_void() { return 1; }
};
void test01(s& a)
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc
index 18fd730dcc5..3ea346996c3 100644
--- a/libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc
@@ -28,11 +28,11 @@ template<typename T>
template<typename T>
bool
- operator==(const A<T>& a, const A<T>& b) { return true; }
+ operator==(const A<T>&, const A<T>&) { return true; }
template<typename T>
bool
- operator<(const A<T>& a, const A<T>& b) { return true; }
+ operator<(const A<T>&, const A<T>&) { return true; }
struct B { };
@@ -104,11 +104,11 @@ namespace std
}
static char_type
- to_char_type(const int_type& __c)
+ to_char_type(const int_type&)
{ return char_type(); }
static int_type
- to_int_type(const char_type& __c) { return int_type(); }
+ to_int_type(const char_type&) { return int_type(); }
static bool
eq_int_type(const int_type& __c1, const int_type& __c2)
diff --git a/libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/24559.cc b/libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/24559.cc
index 26f03267855..9e2a17dea30 100644
--- a/libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/24559.cc
+++ b/libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/24559.cc
@@ -23,10 +23,10 @@
// { dg-do compile }
// libstdc++/24559
+void test01(wchar_t* (*) (wchar_t *, const wchar_t*)) { }
+
int main()
{
- typedef wchar_t* (*pf)(wchar_t *, const wchar_t*);
- pf p1 = std::wcspbrk;
-
+ test01(std::wcspbrk);
return 0;
}
diff --git a/libstdc++-v3/testsuite/22_locale/ctype/is/char/9858.cc b/libstdc++-v3/testsuite/22_locale/ctype/is/char/9858.cc
index 905ea42b30c..3af6372e0c5 100644
--- a/libstdc++-v3/testsuite/22_locale/ctype/is/char/9858.cc
+++ b/libstdc++-v3/testsuite/22_locale/ctype/is/char/9858.cc
@@ -39,15 +39,15 @@ public:
do_is(mask, char_type) const { return true; }
const char_type*
- do_is(const char_type* lo, const char_type* hi, mask* vec) const
+ do_is(const char_type*, const char_type* hi, mask*) const
{ return hi; }
const char_type*
- do_scan_is(mask m, const char_type* lo, const char_type* hi) const
+ do_scan_is(mask, const char_type*, const char_type* hi) const
{ return hi; }
const char_type*
- do_scan_not(mask m, const char_type* lo, const char_type* hi) const
+ do_scan_not(mask, const char_type*, const char_type* hi) const
{ return hi; }
};
@@ -58,15 +58,15 @@ public:
do_is(mask, char_type) const { called = 1; return true; }
const char_type*
- do_is(const char_type* lo, const char_type* hi, mask* vec) const
+ do_is(const char_type*, const char_type* hi, mask*) const
{ called = 5; return hi; }
const char_type*
- do_scan_is(mask m, const char_type* lo, const char_type* hi) const
+ do_scan_is(mask, const char_type*, const char_type* hi) const
{ called = 10; return hi; }
const char_type*
- do_scan_not(mask m, const char_type* lo, const char_type* hi) const
+ do_scan_not(mask, const char_type*, const char_type* hi) const
{ called = 15; return hi; }
};
diff --git a/libstdc++-v3/testsuite/22_locale/ctype/narrow/char/19955.cc b/libstdc++-v3/testsuite/22_locale/ctype/narrow/char/19955.cc
index 396fc03d5e0..9f944cc1dfb 100644
--- a/libstdc++-v3/testsuite/22_locale/ctype/narrow/char/19955.cc
+++ b/libstdc++-v3/testsuite/22_locale/ctype/narrow/char/19955.cc
@@ -36,7 +36,7 @@ class Ctype1
protected:
const char*
do_narrow(const char* lo, const char* hi,
- char dflt, char* to) const
+ char, char* to) const
{
for (int i = 0; lo != hi; ++lo, ++to, ++i)
*to = *lo + i;
diff --git a/libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_1.cc b/libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_1.cc
index ec1f26da5d2..4680c7aecfa 100644
--- a/libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_1.cc
+++ b/libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_1.cc
@@ -31,7 +31,7 @@ public:
protected:
iter_type do_put(iter_type s, std::ios_base&, char_type fill,
- const std::tm* t, char format, char modifier) const
+ const std::tm*, char, char) const
{
fill_chars.push_back(fill);
return s;
diff --git a/libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_3.cc b/libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_3.cc
index 80d5dbba24c..4408565350e 100644
--- a/libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_3.cc
+++ b/libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_3.cc
@@ -29,8 +29,8 @@ public:
mutable std::string format_chars;
protected:
- iter_type do_put(iter_type s, std::ios_base&, char_type fill,
- const std::tm* t, char format, char modifier) const
+ iter_type do_put(iter_type s, std::ios_base&, char_type,
+ const std::tm*, char format, char) const
{
format_chars.push_back(format);
return s;
diff --git a/libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_1.cc b/libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_1.cc
index 8d7d96ea1df..7ef4643875b 100644
--- a/libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_1.cc
+++ b/libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_1.cc
@@ -31,7 +31,7 @@ public:
protected:
iter_type do_put(iter_type s, std::ios_base&, char_type fill,
- const std::tm* t, char format, char modifier) const
+ const std::tm*, char, char) const
{
fill_chars.push_back(fill);
return s;
diff --git a/libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_3.cc b/libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_3.cc
index 696b900fa48..82601e82959 100644
--- a/libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_3.cc
+++ b/libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_3.cc
@@ -29,8 +29,8 @@ public:
mutable std::string format_chars;
protected:
- iter_type do_put(iter_type s, std::ios_base&, char_type fill,
- const std::tm* t, char format, char modifier) const
+ iter_type do_put(iter_type s, std::ios_base&, char_type,
+ const std::tm*, char format, char) const
{
format_chars.push_back(format);
return s;
diff --git a/libstdc++-v3/testsuite/23_containers/deque/cons/clear_allocator.cc b/libstdc++-v3/testsuite/23_containers/deque/cons/clear_allocator.cc
index a523098d583..863688f1cae 100644
--- a/libstdc++-v3/testsuite/23_containers/deque/cons/clear_allocator.cc
+++ b/libstdc++-v3/testsuite/23_containers/deque/cons/clear_allocator.cc
@@ -37,11 +37,11 @@ template<typename T>
clear_alloc() throw()
{ }
- clear_alloc(clear_alloc const& _wa) throw()
+ clear_alloc(clear_alloc const&) throw() : new_allocator<T>()
{ }
template<typename T1>
- clear_alloc(clear_alloc<T1> const& _wa) throw()
+ clear_alloc(clear_alloc<T1> const&) throw()
{ }
virtual ~clear_alloc() throw()
diff --git a/libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.cc b/libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.cc
index 0d951570551..0a62618ef78 100644
--- a/libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.cc
+++ b/libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.cc
@@ -37,11 +37,11 @@ template<typename T>
clear_alloc() throw()
{ }
- clear_alloc(clear_alloc const& _wa) throw()
+ clear_alloc(clear_alloc const&) throw() : new_allocator<T>()
{ }
template<typename T1>
- clear_alloc(clear_alloc<T1> const& _wa) throw()
+ clear_alloc(clear_alloc<T1> const&) throw()
{ }
virtual ~clear_alloc() throw()
diff --git a/libstdc++-v3/testsuite/23_containers/set/modifiers/16728.cc b/libstdc++-v3/testsuite/23_containers/set/modifiers/16728.cc
index 1571edebb48..2120f5bbff7 100644
--- a/libstdc++-v3/testsuite/23_containers/set/modifiers/16728.cc
+++ b/libstdc++-v3/testsuite/23_containers/set/modifiers/16728.cc
@@ -75,7 +75,7 @@ template<typename Container>
template<typename Container>
void
- test_container(Container obj, bool run_threaded = false)
+ test_container(Container, bool run_threaded = false)
{
do_loop<Container>();
std::ostringstream comment;
diff --git a/libstdc++-v3/testsuite/23_containers/vector/bool/clear_allocator.cc b/libstdc++-v3/testsuite/23_containers/vector/bool/clear_allocator.cc
index 43601910b4f..bbb6523808f 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/bool/clear_allocator.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/bool/clear_allocator.cc
@@ -37,11 +37,11 @@ template<typename T>
clear_alloc() throw()
{ }
- clear_alloc(clear_alloc const& _wa) throw()
+ clear_alloc(clear_alloc const&) throw() : new_allocator<T>()
{ }
template<typename T1>
- clear_alloc(clear_alloc<T1> const& _wa) throw()
+ clear_alloc(clear_alloc<T1> const&) throw()
{ }
virtual ~clear_alloc() throw()
diff --git a/libstdc++-v3/testsuite/23_containers/vector/cons/clear_allocator.cc b/libstdc++-v3/testsuite/23_containers/vector/cons/clear_allocator.cc
index 232fd34fb74..787d2c09abb 100644
--- a/libstdc++-v3/testsuite/23_containers/vector/cons/clear_allocator.cc
+++ b/libstdc++-v3/testsuite/23_containers/vector/cons/clear_allocator.cc
@@ -37,11 +37,11 @@ template<typename T>
clear_alloc() throw()
{ }
- clear_alloc(clear_alloc const& _wa) throw()
+ clear_alloc(clear_alloc const&) throw() : new_allocator<T>()
{ }
template<typename T1>
- clear_alloc(clear_alloc<T1> const& _wa) throw()
+ clear_alloc(clear_alloc<T1> const&) throw()
{ }
virtual ~clear_alloc() throw()
diff --git a/libstdc++-v3/testsuite/25_algorithms/find/17441.cc b/libstdc++-v3/testsuite/25_algorithms/find/17441.cc
index 95a6db0864f..3d4b9066e7c 100644
--- a/libstdc++-v3/testsuite/25_algorithms/find/17441.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/find/17441.cc
@@ -24,8 +24,8 @@ using namespace std;
template<typename InputIterator, typename Tp>
InputIterator
- find(InputIterator first, InputIterator last,
- const Tp& val, input_iterator_tag)
+ find(InputIterator first, InputIterator,
+ const Tp&, input_iterator_tag)
{ return first; }
// libstdc++/17441
diff --git a/libstdc++-v3/testsuite/25_algorithms/heap/heap.cc b/libstdc++-v3/testsuite/25_algorithms/heap/heap.cc
index 6fbd3ed4c06..ba916a8f01e 100644
--- a/libstdc++-v3/testsuite/25_algorithms/heap/heap.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/heap/heap.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2001 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -19,7 +19,6 @@
// 25.3.6 Heap operations [lib.alg.heap.operations]
#include <algorithm>
-//#include <cmath>
#include <testsuite_hooks.h>
bool test __attribute__((unused)) = true;
@@ -29,24 +28,24 @@ const int B[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
const int C[] = {17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
const int N = sizeof(A) / sizeof(int);
-// This functor has the equivalent functionality of std::geater<>,
+// This functor has the equivalent functionality of std::greater<>,
// but there is no dependency on <functional> and it also tracks the
// number of invocations since creation.
class Gt
{
public:
- static int count() { return itsCount; }
- static void reset() { itsCount = 0; }
-
- bool
- operator()(const int& x, const int& y)
- {
- ++itsCount;
- return x > y;
- }
+ static int count() { return itsCount; }
+ static void reset() { itsCount = 0; }
+
+ bool
+ operator()(const int& x, const int& y)
+ {
+ ++itsCount;
+ return x > y;
+ }
private:
- static int itsCount;
+ static int itsCount;
};
int Gt::itsCount = 0;
@@ -57,27 +56,27 @@ int Gt::itsCount = 0;
void
test01()
{
- // sort array s1 using push_heap/pop_heap
- int s1[N];
- std::copy(A, A + N, s1);
- VERIFY(std::equal(s1, s1 + N, A));
-
- for (int i = 2; i <= N; ++i) {
- std::push_heap(s1, s1 + i);
- }
- for (int i = N; i >= 2; --i) {
- std::pop_heap(s1, s1 + i);
- }
- VERIFY(std::equal(s1, s1 + N, B));
-
- // sort array s2 using make_heap/sort_heap
- int s2[N];
- std::copy(A, A + N, s2);
- VERIFY(std::equal(s2, s2 + N, A));
-
- std::make_heap(s2, s2 + N);
- std::sort_heap(s2, s2 + N);
- VERIFY(std::equal(s2, s2 + N, B));
+ // sort array s1 using push_heap/pop_heap
+ int s1[N];
+ std::copy(A, A + N, s1);
+ VERIFY(std::equal(s1, s1 + N, A));
+
+ for (int i = 2; i <= N; ++i)
+ std::push_heap(s1, s1 + i);
+
+ for (int i = N; i >= 2; --i)
+ std::pop_heap(s1, s1 + i);
+
+ VERIFY(std::equal(s1, s1 + N, B));
+
+ // sort array s2 using make_heap/sort_heap
+ int s2[N];
+ std::copy(A, A + N, s2);
+ VERIFY(std::equal(s2, s2 + N, A));
+
+ std::make_heap(s2, s2 + N);
+ std::sort_heap(s2, s2 + N);
+ VERIFY(std::equal(s2, s2 + N, B));
}
// Perform same tests as above but with the comparison predicate
@@ -85,49 +84,43 @@ test01()
void
test02()
{
- Gt gt;
+ Gt gt;
// const int logN = static_cast<int>(std::log(static_cast<double>(N)) + 0.5);
- const int logN = 3;
-
- int s1[N];
- std::copy(A, A + N, s1);
- VERIFY(std::equal(s1, s1 + N, A));
-
- for (int i = 2; i <= N; ++i) {
- std::push_heap(s1, s1 + i, gt);
-#ifndef _GLIBCXX_DEBUG
- VERIFY(gt.count() <= logN);
-#endif
- gt.reset();
+ const int logN = 3;
+
+ int s1[N];
+ std::copy(A, A + N, s1);
+ VERIFY(std::equal(s1, s1 + N, A));
+
+ for (int i = 2; i <= N; ++i)
+ {
+ std::push_heap(s1, s1 + i, gt);
+ VERIFY(gt.count() <= logN);
+ gt.reset();
}
- for (int i = N; i >= 2; --i) {
- std::pop_heap(s1, s1 + i, gt);
-#ifndef _GLIBCXX_DEBUG
- VERIFY(gt.count() <= 2 * logN);
-#endif
- gt.reset();
+ for (int i = N; i >= 2; --i)
+ {
+ std::pop_heap(s1, s1 + i, gt);
+ VERIFY(gt.count() <= 2 * logN);
+ gt.reset();
}
- VERIFY(std::equal(s1, s1 + N, C));
-
- // sort array s2 using make_heap/sort_heap
- int s2[N];
- std::copy(A, A + N, s2);
- VERIFY(std::equal(s2, s2 + N, A));
-
- std::make_heap(s2, s2 + N, gt);
-#ifndef _GLIBCXX_DEBUG
- VERIFY(gt.count() <= 3 * N);
-#endif
- gt.reset();
-
- std::sort_heap(s2, s2 + N, gt);
-#ifndef _GLIBCXX_DEBUG
- VERIFY(gt.count() <= N * logN);
-#endif
-
- VERIFY(std::equal(s2, s2 + N, C));
+ VERIFY(std::equal(s1, s1 + N, C));
+
+ // sort array s2 using make_heap/sort_heap
+ int s2[N];
+ std::copy(A, A + N, s2);
+ VERIFY(std::equal(s2, s2 + N, A));
+
+ std::make_heap(s2, s2 + N, gt);
+ VERIFY(gt.count() <= 3 * N);
+ gt.reset();
+
+ std::sort_heap(s2, s2 + N, gt);
+ VERIFY(gt.count() <= N * logN);
+
+ VERIFY(std::equal(s2, s2 + N, C));
}
int
@@ -135,6 +128,5 @@ main()
{
test01();
test02();
-
return 0;
}
diff --git a/libstdc++-v3/testsuite/25_algorithms/iter_swap/20577.cc b/libstdc++-v3/testsuite/25_algorithms/iter_swap/20577.cc
index e21f512d784..01d9628edb8 100644
--- a/libstdc++-v3/testsuite/25_algorithms/iter_swap/20577.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/iter_swap/20577.cc
@@ -47,7 +47,7 @@ test2()
int int_swap_count;
struct X {};
-void swap(X& i, X& j)
+void swap(X&, X&)
{ ++int_swap_count; }
void
diff --git a/libstdc++-v3/testsuite/25_algorithms/replace_copy/check_type.cc b/libstdc++-v3/testsuite/25_algorithms/replace_copy/check_type.cc
index fbaa5ec4d54..efdc14796cd 100644
--- a/libstdc++-v3/testsuite/25_algorithms/replace_copy/check_type.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/replace_copy/check_type.cc
@@ -34,11 +34,11 @@ struct Z
{
Z&
operator=(const X&)
- { }
+ { return *this; }
Z&
operator=(const Y&)
- { }
+ { return *this; }
};
bool
diff --git a/libstdc++-v3/testsuite/25_algorithms/replace_copy_if/check_type.cc b/libstdc++-v3/testsuite/25_algorithms/replace_copy_if/check_type.cc
index 6191abb0ee3..f95e2b9c8b1 100644
--- a/libstdc++-v3/testsuite/25_algorithms/replace_copy_if/check_type.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/replace_copy_if/check_type.cc
@@ -34,11 +34,11 @@ struct Z
{
Z&
operator=(const X&)
- { }
+ { return *this; }
Z&
operator=(const Y&)
- { }
+ { return *this; }
};
bool
diff --git a/libstdc++-v3/testsuite/25_algorithms/unique_copy/check_type.cc b/libstdc++-v3/testsuite/25_algorithms/unique_copy/check_type.cc
index 5433b77d118..1fe11b18940 100644
--- a/libstdc++-v3/testsuite/25_algorithms/unique_copy/check_type.cc
+++ b/libstdc++-v3/testsuite/25_algorithms/unique_copy/check_type.cc
@@ -30,7 +30,7 @@ struct S1 { };
struct S2
{
- S2(const S1& s1) {}
+ S2(const S1&) {}
};
bool
@@ -40,7 +40,7 @@ struct X1 { };
struct X2
{
- X2(const X1& x1) {}
+ X2(const X1&) {}
};
bool
diff --git a/libstdc++-v3/testsuite/26_numerics/valarray/valarray_subset_assignment.cc b/libstdc++-v3/testsuite/26_numerics/valarray/valarray_subset_assignment.cc
index d5f0fa27a87..4ce22afb31a 100644
--- a/libstdc++-v3/testsuite/26_numerics/valarray/valarray_subset_assignment.cc
+++ b/libstdc++-v3/testsuite/26_numerics/valarray/valarray_subset_assignment.cc
@@ -35,14 +35,13 @@
bool check_array(std::valarray<double>& a, double b[])
{
- for (int i=0; i < a.size(); i++)
+ for (unsigned int i=0; i < a.size(); i++)
if (a[i] != b[i]) return false;
return true;
}
int main()
{
- double dvar = 1.0;
std::valarray<double> val_d(10); // 0 1 2 3 4 5 6 7 8 9
std::valarray<double> val_d1(10); // 10 9 8 7 6 5 4 3 2 1
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/2.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/2.cc
index 3af0a735c90..f96e041ecbb 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/2.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/2.cc
@@ -43,7 +43,7 @@ const char name_02[] = "filebuf_virtuals-2.txt"; // empty file, need to create
void test_02()
{
bool test __attribute__((unused)) = true;
- int close_num;
+ int close_num = 0;
// read (ext)
FILE* f2 = fopen(name_01, "r");
diff --git a/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/12206.cc b/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/12206.cc
index 44c51b978e1..721e0333840 100644
--- a/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/12206.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/12206.cc
@@ -65,21 +65,21 @@ namespace std
static locale::id id;
protected:
- virtual result do_out(mbstate_t&, const Char* from,
- const Char* from_end,
- const Char*& from_next, char* to,
- char* to_limit, char*& to_next) const
+ virtual result do_out(mbstate_t&, const Char*,
+ const Char*,
+ const Char*&, char*,
+ char*, char*&) const
{ return ok; }
- virtual result do_in(mbstate_t&, const char* from,
- const char* from_end,
- const char*& from_next, Char* to,
- Char* to_limit, Char*& to_next) const
+ virtual result do_in(mbstate_t&, const char*,
+ const char*,
+ const char*&, Char*,
+ Char*, Char*&) const
{ return ok; }
- virtual result do_unshift(mbstate_t&, char* to, char*,
- char*& to_next) const
+ virtual result do_unshift(mbstate_t&, char*, char*,
+ char*&) const
{ return noconv; }
- virtual int do_length(mbstate_t&, const char* from,
- const char* from_end, size_t max) const
+ virtual int do_length(mbstate_t&, const char*,
+ const char*, size_t) const
{ return 1; }
virtual int do_encoding() const throw()
{ return 1; }
diff --git a/libstdc++-v3/testsuite/27_io/basic_ios/cons/char/3.cc b/libstdc++-v3/testsuite/27_io/basic_ios/cons/char/3.cc
index 90e76001a20..d55d6ad46c7 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ios/cons/char/3.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ios/cons/char/3.cc
@@ -100,11 +100,11 @@ namespace std
}
static char_type
- to_char_type(const int_type& __c)
+ to_char_type(const int_type&)
{ return char_type(); }
static int_type
- to_int_type(const char_type& __c) { return int_type(); }
+ to_int_type(const char_type&) { return int_type(); }
static bool
eq_int_type(const int_type& __c1, const int_type& __c2)
diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/getline/char/5.cc b/libstdc++-v3/testsuite/27_io/basic_istream/getline/char/5.cc
index e2cb0b9d647..dccaa9f938b 100644
--- a/libstdc++-v3/testsuite/27_io/basic_istream/getline/char/5.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_istream/getline/char/5.cc
@@ -49,7 +49,8 @@ void check(istream& stream, const string& str, unsigned nchunks, char delim)
while (stream.getline(buf, sizeof(buf), delim))
{
index_new = str.find(delim, index);
- VERIFY( stream.gcount() == index_new - index + 1 );
+ VERIFY( static_cast<string::size_type>(stream.gcount()) ==
+ index_new - index + 1 );
VERIFY( !str.compare(index, index_new - index, buf) );
index = index_new + 1;
++n;
diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc b/libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc
index 3417b60699e..19cd94ff4a4 100644
--- a/libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc
@@ -51,7 +51,8 @@ check(wistream& stream, const wstring& str, unsigned nchunks, wchar_t delim)
while (stream.getline(buf, sizeof(buf) / sizeof(wchar_t), delim))
{
index_new = str.find(delim, index);
- VERIFY( stream.gcount() == index_new - index + 1 );
+ VERIFY( static_cast<string::size_type>(stream.gcount()) ==
+ index_new - index + 1 );
VERIFY( !str.compare(index, index_new - index, buf) );
index = index_new + 1;
++n;
diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc b/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc
index b903b1b4304..1ed3a8435e3 100644
--- a/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc
@@ -49,7 +49,8 @@ void check(istream& stream, const string& str, unsigned nchunks, char delim)
while (stream.ignore(numeric_limits<streamsize>::max(), delim).good())
{
index_new = str.find(delim, index);
- VERIFY( stream.gcount() == index_new - index + 1 );
+ VERIFY( static_cast<string::size_type>(stream.gcount()) ==
+ index_new - index + 1 );
index = index_new + 1;
++n;
}
diff --git a/libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/2.cc b/libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/2.cc
index 4b84af64d8e..0107f87dcef 100644
--- a/libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/2.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/2.cc
@@ -51,7 +51,8 @@ check(wistream& stream, const wstring& str, unsigned nchunks, wchar_t delim)
while (stream.ignore(numeric_limits<streamsize>::max(), delim).good())
{
index_new = str.find(delim, index);
- VERIFY( stream.gcount() == index_new - index + 1 );
+ VERIFY( static_cast<string::size_type>(stream.gcount()) ==
+ index_new - index + 1 );
index = index_new + 1;
++n;
}
diff --git a/libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/1.cc
index ced7600be9f..e062c0c637f 100644
--- a/libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/1.cc
@@ -1,6 +1,7 @@
// 2000-01-10 bkoz
-// Copyright (C) 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
+// Copyright (C) 2000, 2001, 2003, 2004, 2005, 2006
+// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -31,10 +32,9 @@ void test01()
const std::string str01 = "123";
std::string str02;
const int i01 = 123;
- int a,b;
+ int a = 0, b = 0;
- std::ios_base::iostate state1, state2, statefail, stateeof;
- statefail = std::ios_base::failbit;
+ std::ios_base::iostate state1, state2, stateeof;
stateeof = std::ios_base::eofbit;
// string str() const
diff --git a/libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/1.cc b/libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/1.cc
index d0b90545da1..c231f1dd6d7 100644
--- a/libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/1.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2004 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -29,10 +29,9 @@ void test01()
const std::wstring str01 = L"123";
std::wstring str02;
const int i01 = 123;
- int a, b;
+ int a = 0, b = 0;
- std::ios_base::iostate state1, state2, statefail, stateeof;
- statefail = std::ios_base::failbit;
+ std::ios_base::iostate state1, state2, stateeof;
stateeof = std::ios_base::eofbit;
// string str() const
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/endl/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/endl/char/1.cc
index 2c547bda57e..8c14a5d47c7 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/endl/char/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/endl/char/1.cc
@@ -28,7 +28,6 @@ void test01(void)
{
bool test __attribute__((unused)) = true;
- const char str_lit01[] = " venice ";
const std::string str01(" santa barbara ");
std::string str04;
std::string str05;
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/endl/wchar_t/1.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/endl/wchar_t/1.cc
index d6de23b6835..2214a7216bb 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/endl/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/endl/wchar_t/1.cc
@@ -26,7 +26,6 @@ void test01(void)
{
bool test __attribute__((unused)) = true;
- const wchar_t str_lit01[] = L" venice ";
const std::wstring str01(L" santa barbara ");
std::wstring str04;
std::wstring str05;
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/1.cc
index ce64d6963ef..88ace74a7fa 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/1.cc
@@ -28,7 +28,6 @@ void test01(void)
{
bool test __attribute__((unused)) = true;
- const char str_lit01[] = " venice ";
const std::string str01(" santa barbara ");
std::string str04;
std::string str05;
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/1.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/1.cc
index 55eeb564553..babae552737 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/1.cc
@@ -26,7 +26,6 @@ void test01(void)
{
bool test __attribute__((unused)) = true;
- const wchar_t str_lit01[] = L" venice ";
const std::wstring str01(L" santa barbara ");
std::wstring str04;
std::wstring str05;
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/1.cc
index d73b2223ab2..5ca3a2cb953 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/1.cc
@@ -28,7 +28,6 @@ void test01(void)
{
bool test __attribute__((unused)) = true;
- const char str_lit01[] = " venice ";
const std::string str01(" santa barbara ");
std::string str04;
std::string str05;
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/1.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/1.cc
index 49551112aab..34847e5b54c 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/1.cc
@@ -26,7 +26,6 @@ void test01(void)
{
bool test __attribute__((unused)) = true;
- const wchar_t str_lit01[] = L" venice ";
const std::wstring str01(L" santa barbara ");
std::wstring str04;
std::wstring str05;
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/write/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/write/char/1.cc
index b91a09e78e5..7ac042e92c9 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/write/char/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/write/char/1.cc
@@ -42,8 +42,8 @@ protected:
void test01()
{
- bool test = true;
-
+ bool test __attribute__((unused)) = true;
+
Buf buf;
std::ostream os(&buf);
diff --git a/libstdc++-v3/testsuite/27_io/basic_ostream/write/wchar_t/1.cc b/libstdc++-v3/testsuite/27_io/basic_ostream/write/wchar_t/1.cc
index a7dc0539b15..c0d317e4e14 100644
--- a/libstdc++-v3/testsuite/27_io/basic_ostream/write/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_ostream/write/wchar_t/1.cc
@@ -40,8 +40,8 @@ protected:
void test01()
{
- bool test = true;
-
+ bool test __attribute__((unused)) = true;
+
Buf buf;
std::wostream os(&buf);
diff --git a/libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc
index 38d310fdf8f..6ea710bab39 100644
--- a/libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc
@@ -39,7 +39,7 @@ void test05()
typedef size_t size_type;
bool test __attribute__((unused)) = true;
- std::streamoff strmof_1, strmof_2;
+ std::streamoff strmof_1;
testbuf sb01;
// int in_avail()
diff --git a/libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc b/libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc
index faf7e79b9db..d25c9c25e1c 100644
--- a/libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc
@@ -39,7 +39,7 @@ void test05()
typedef size_t size_type;
bool test __attribute__((unused)) = true;
- std::streamoff strmof_1, strmof_2;
+ std::streamoff strmof_1;
testbuf sb01;
// int in_avail()
diff --git a/libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/1.cc b/libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/1.cc
index 37112cc8418..aaee938e67a 100644
--- a/libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/1.cc
@@ -1,6 +1,7 @@
// 2001-05-24 Benjamin Kosnik <bkoz@redhat.com>
-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
+// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -31,7 +32,7 @@ void test01()
const std::string str01 = "123";
std::string str02;
const int i01 = 123;
- int a,b;
+ int a = 0, b = 0;
std::ios_base::iostate state1, state2, stateeof;
stateeof = std::ios_base::eofbit;
diff --git a/libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/1.cc b/libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/1.cc
index f5be647e71d..d56345b5141 100644
--- a/libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/1.cc
+++ b/libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/1.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2004 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -29,7 +29,7 @@ void test01()
const std::wstring str01 = L"123";
std::wstring str02;
const int i01 = 123;
- int a,b;
+ int a = 0, b = 0;
std::ios_base::iostate state1, state2, stateeof;
stateeof = std::ios_base::eofbit;
diff --git a/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc b/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
index a97f2f789cd..06eae990c80 100644
--- a/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
+++ b/libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
@@ -1,6 +1,6 @@
// 2004-01-25 jlquinn@gcc.gnu.org
-// Copyright (C) 2004 Free Software Foundation
+// Copyright (C) 2004, 2005 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -42,21 +42,22 @@ void operator delete[] (void *p) throw() { operator delete(p); }
int main ()
{
bool test __attribute__((unused)) = true;
- const int i = std::ios::xalloc ();
+ const int i = std::ios::xalloc();
+ VERIFY( i >= 0 );
new_fails = 1;
// Successive accesses to failure storage clears to zero.
- std::cout.iword(100) = 0xdeadbeef;
- VERIFY(std::cout.iword(100) == 0);
+ std::cout.iword(100) = 69;
+ VERIFY( std::cout.iword(100) == 0 );
// Access to pword failure storage shouldn't clear iword pword storage.
long& lr = std::cout.iword(100);
- lr = 0xdeadbeef;
+ lr = 69;
void* pv = std::cout.pword(100);
- VERIFY(pv == 0);
- VERIFY(lr == 0xdeadbeef);
+ VERIFY( pv == 0 );
+ VERIFY( lr == 69 );
return 0;
}
diff --git a/libstdc++-v3/testsuite/27_io/types/1.cc b/libstdc++-v3/testsuite/27_io/types/1.cc
index 276c99c7fd3..59965c820ab 100644
--- a/libstdc++-v3/testsuite/27_io/types/1.cc
+++ b/libstdc++-v3/testsuite/27_io/types/1.cc
@@ -1,4 +1,4 @@
-// Copyright (C) 2002, 2004 Free Software Foundation
+// Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -25,8 +25,8 @@
// Annex D, deprecated.
void test01()
{
- std::ios_base::streampos spos;
- std::ios_base::streamoff soff;
+ typedef std::ios_base::streampos streampos_type;
+ typedef std::ios_base::streamoff streamoff_type;
}
int main(void)
diff --git a/libstdc++-v3/testsuite/ext/array_allocator/2.cc b/libstdc++-v3/testsuite/ext/array_allocator/2.cc
index 79f8c539913..6ec4a1771ee 100644
--- a/libstdc++-v3/testsuite/ext/array_allocator/2.cc
+++ b/libstdc++-v3/testsuite/ext/array_allocator/2.cc
@@ -1,7 +1,7 @@
// Expected execution error for PR19495.
// { dg-do run { xfail powerpc*-*-linux* } }
-// Copyright (C) 2004 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -47,7 +47,6 @@ void test01()
typedef __gnu_cxx::array_allocator<char_type, array_type> allocator_type;
typedef basic_string<char_type, traits_type, allocator_type> string_type;
- size_t index = array_type::_S_index;
allocator_type a(&extern_array);
string_type s(a);
diff --git a/libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_global.cc b/libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_global.cc
index 7e670f0c4cf..97604735f20 100644
--- a/libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_global.cc
+++ b/libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_global.cc
@@ -1,5 +1,5 @@
//
-// Copyright (C) 2004 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -57,7 +57,8 @@ void operator delete(void* p) throw()
if (count == 0)
printf("All memory released \n");
else
- printf("%u allocations to be released \n", count);
+ printf("%lu allocations to be released \n",
+ static_cast<unsigned long>(count));
free(p);
}
diff --git a/libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_local.cc b/libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_local.cc
index 175a833fbc5..aafffae9d70 100644
--- a/libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_local.cc
+++ b/libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_local.cc
@@ -1,5 +1,5 @@
//
-// Copyright (C) 2004 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -44,7 +44,8 @@ void operator delete(void* p) throw()
if (alloc_cnt == 0)
printf("All memory released \n");
else
- printf("%u allocations to be released \n", alloc_cnt);
+ printf("%lu allocations to be released \n",
+ static_cast<unsigned long>(alloc_cnt));
free(p);
}
diff --git a/libstdc++-v3/testsuite/ext/pool_allocator/allocate_chunk.cc b/libstdc++-v3/testsuite/ext/pool_allocator/allocate_chunk.cc
index 64afd99a3c1..1d72d5d604d 100644
--- a/libstdc++-v3/testsuite/ext/pool_allocator/allocate_chunk.cc
+++ b/libstdc++-v3/testsuite/ext/pool_allocator/allocate_chunk.cc
@@ -53,7 +53,7 @@ void test01()
// The constant 20 comes from __pool_alloc_base::_M_refill. See
// also __pool_alloc_base::_M_allocate_chunk.
__pool_alloc<small> alloc_small;
- for (int i = 0; i < 20 * sizeof(big) / sizeof(small) + 1; ++i)
+ for (unsigned int i = 0; i < 20 * sizeof(big) / sizeof(small) + 1; ++i)
alloc_small.allocate(1);
}
diff --git a/libstdc++-v3/testsuite/testsuite_allocator.h b/libstdc++-v3/testsuite/testsuite_allocator.h
index f71a07927da..a159f5900e4 100644
--- a/libstdc++-v3/testsuite/testsuite_allocator.h
+++ b/libstdc++-v3/testsuite/testsuite_allocator.h
@@ -1,7 +1,7 @@
// -*- C++ -*-
// Testing allocator for the C++ library testsuite.
//
-// Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+// Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -184,7 +184,7 @@ namespace __gnu_test
check_new(Alloc a = Alloc())
{
bool test __attribute__((unused)) = true;
- typename Alloc::pointer p = a.allocate(10);
+ a.allocate(10);
test &= ( new_called == uses_global_new );
return test;
}
@@ -208,6 +208,7 @@ namespace __gnu_test
Alloc a;
a.deallocate(NULL, 1);
a.deallocate(NULL, 10);
+ return true;
}
template<typename Alloc>
diff --git a/libstdc++-v3/testsuite/testsuite_character.h b/libstdc++-v3/testsuite/testsuite_character.h
index 3d6a3f2d1c2..5ff4dd3e0c7 100644
--- a/libstdc++-v3/testsuite/testsuite_character.h
+++ b/libstdc++-v3/testsuite/testsuite_character.h
@@ -322,7 +322,7 @@ namespace std
{ }
virtual bool
- do_is(mask m, char_type c) const
+ do_is(mask, char_type) const
{ return false; }
virtual const char_type*
@@ -333,11 +333,11 @@ namespace std
}
virtual const char_type*
- do_scan_is(mask m, const char_type* low, const char_type* high) const
+ do_scan_is(mask, const char_type*, const char_type* high) const
{ return high; }
virtual const char_type*
- do_scan_not(mask m, const char_type* low, const char_type* high) const
+ do_scan_not(mask, const char_type* low, const char_type*) const
{ return low; }
virtual char_type
@@ -345,7 +345,7 @@ namespace std
{ return c; }
virtual const char_type*
- do_toupper(char_type* low, const char_type* high) const
+ do_toupper(char_type*, const char_type* high) const
{ return high; }
virtual char_type
@@ -353,7 +353,7 @@ namespace std
{ return c; }
virtual const char_type*
- do_tolower(char_type* low, const char_type* high) const
+ do_tolower(char_type*, const char_type* high) const
{ return high; }
virtual char_type
diff --git a/libstdc++-v3/testsuite/testsuite_hooks.h b/libstdc++-v3/testsuite/testsuite_hooks.h
index 8a5276f50c2..38b80630fc2 100644
--- a/libstdc++-v3/testsuite/testsuite_hooks.h
+++ b/libstdc++-v3/testsuite/testsuite_hooks.h
@@ -104,10 +104,9 @@ namespace __gnu_test
// bitmask_operators
template<typename bitmask_type>
void
- bitmask_operators()
+ bitmask_operators(bitmask_type a = bitmask_type(),
+ bitmask_type b = bitmask_type())
{
- bitmask_type a;
- bitmask_type b;
a | b;
a & b;
a ^ b;
@@ -168,13 +167,13 @@ namespace __gnu_test
};
inline bool
- operator==(const NonDefaultConstructible& lhs,
- const NonDefaultConstructible& rhs)
+ operator==(const NonDefaultConstructible&,
+ const NonDefaultConstructible&)
{ return false; }
inline bool
- operator<(const NonDefaultConstructible& lhs,
- const NonDefaultConstructible& rhs)
+ operator<(const NonDefaultConstructible&,
+ const NonDefaultConstructible&)
{ return false; }
diff --git a/libstdc++-v3/testsuite/testsuite_io.h b/libstdc++-v3/testsuite/testsuite_io.h
index fe8827ca164..e6f1c03d622 100644
--- a/libstdc++-v3/testsuite/testsuite_io.h
+++ b/libstdc++-v3/testsuite/testsuite_io.h
@@ -214,7 +214,7 @@ namespace __gnu_test
protected:
iter_type
- do_get(iter_type a, iter_type, ios_base&, ios_base::iostate&, bool&) const
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const
{ throw facet_error(); return iter_type(); }
virtual iter_type
@@ -222,49 +222,49 @@ namespace __gnu_test
{ throw facet_error(); return iter_type(); }
virtual iter_type
- do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
unsigned short&) const
{ throw facet_error(); return iter_type(); }
virtual iter_type
- do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
unsigned int&) const
{ throw facet_error(); return iter_type(); }
virtual iter_type
- do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
unsigned long&) const
{ throw facet_error(); return iter_type(); }
#ifdef _GLIBCXX_USE_LONG_LONG
virtual iter_type
- do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
long long&) const
{ throw facet_error(); return iter_type(); }
virtual iter_type
- do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
unsigned long long&) const
{ throw facet_error(); return iter_type(); }
#endif
virtual iter_type
- do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
float&) const
{ throw facet_error(); return iter_type(); }
virtual iter_type
- do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
double&) const
{ throw facet_error(); return iter_type(); }
virtual iter_type
- do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
long double&) const
{ throw facet_error(); return iter_type(); }
virtual iter_type
- do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&,
void*&) const
{ throw facet_error(); return iter_type(); }
};
@@ -284,37 +284,37 @@ namespace __gnu_test
protected:
iter_type
- do_put(iter_type, ios_base&, char_type __fill, bool __v) const
+ do_put(iter_type, ios_base&, char_type, bool) const
{ throw facet_error(); return iter_type(NULL); }
virtual iter_type
- do_put(iter_type, ios_base&, char_type __fill, long __v) const
+ do_put(iter_type, ios_base&, char_type, long) const
{ throw facet_error(); return iter_type(NULL); }
virtual iter_type
- do_put(iter_type, ios_base&, char_type __fill, unsigned long) const
+ do_put(iter_type, ios_base&, char_type, unsigned long) const
{ throw facet_error(); return iter_type(NULL); }
#ifdef _GLIBCXX_USE_LONG_LONG
virtual iter_type
- do_put(iter_type, ios_base&, char_type __fill, long long __v) const
+ do_put(iter_type, ios_base&, char_type, long long) const
{ throw facet_error(); return iter_type(NULL); }
virtual iter_type
- do_put(iter_type, ios_base&, char_type __fill, unsigned long long) const
+ do_put(iter_type, ios_base&, char_type, unsigned long long) const
{ throw facet_error(); return iter_type(NULL); }
#endif
virtual iter_type
- do_put(iter_type, ios_base&, char_type __fill, double __v) const
+ do_put(iter_type, ios_base&, char_type, double) const
{ throw facet_error(); return iter_type(NULL); }
virtual iter_type
- do_put(iter_type, ios_base&, char_type __fill, long double __v) const
+ do_put(iter_type, ios_base&, char_type, long double) const
{ throw facet_error(); return iter_type(NULL); }
virtual iter_type
- do_put(iter_type, ios_base&, char_type __fill, const void* __v) const
+ do_put(iter_type, ios_base&, char_type, const void*) const
{ throw facet_error(); return iter_type(NULL); }
};
diff --git a/libstdc++-v3/testsuite/testsuite_iterators.h b/libstdc++-v3/testsuite/testsuite_iterators.h
index ef8bff4a3a6..7119783c93b 100644
--- a/libstdc++-v3/testsuite/testsuite_iterators.h
+++ b/libstdc++-v3/testsuite/testsuite_iterators.h
@@ -144,6 +144,7 @@ namespace __gnu_test
{
ptr = in.ptr;
SharedInfo = in.SharedInfo;
+ return *this;
}
output_iterator_wrapper&
@@ -394,6 +395,7 @@ namespace __gnu_test
{
this->ptr = in.ptr;
this->SharedInfo = in.SharedInfo;
+ return *this;
}
random_access_iterator_wrapper&
diff --git a/libstdc++-v3/testsuite/thread/18185.cc b/libstdc++-v3/testsuite/thread/18185.cc
index 9c2d4adc9d2..4ec6a6d0b3b 100644
--- a/libstdc++-v3/testsuite/thread/18185.cc
+++ b/libstdc++-v3/testsuite/thread/18185.cc
@@ -1,5 +1,5 @@
//
-// Copyright (C) 2004 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -25,8 +25,8 @@
#include <string>
#include <pthread.h>
-static void *
-foo (void *p)
+static void*
+foo (void*)
{
typedef std::char_traits<char> traits_type;
typedef __gnu_cxx::new_allocator<char> allocator_type;
@@ -47,7 +47,7 @@ int
main ()
{
pthread_t t;
- int j = pthread_create (&t, 0, foo, 0);
- int i = pthread_join (t, 0);
+ pthread_create (&t, 0, foo, 0);
+ pthread_join (t, 0);
return 0;
}
diff --git a/libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/assign.cc b/libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/assign.cc
index 17181e58a56..93f90ce57ea 100644
--- a/libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/assign.cc
+++ b/libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/assign.cc
@@ -44,7 +44,7 @@ struct reset_count_struct
// 2.2.3.3 shared_ptr assignment [tr.util.smartptr.shared.assign]
// Assignment from shared_ptr<Y>
-int
+void
test01()
{
reset_count_struct __attribute__((unused)) reset;
diff --git a/libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/shared_ptr.cc b/libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/shared_ptr.cc
index 90765aa5d2c..90ab7eec03f 100644
--- a/libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/shared_ptr.cc
+++ b/libstdc++-v3/testsuite/tr1/2_general_utilities/memory/shared_ptr/assign/shared_ptr.cc
@@ -57,7 +57,7 @@ struct reset_count_struct
// 2.2.3.3 shared_ptr assignment [tr.util.smartptr.shared.assign]
// Assignment from shared_ptr<Y>
-int
+void
test01()
{
reset_count_struct __attribute__((unused)) reset;
diff --git a/libstdc++-v3/testsuite/tr1/3_function_objects/mem_fn.cc b/libstdc++-v3/testsuite/tr1/3_function_objects/mem_fn.cc
index 74caeef88ab..2f780c1a994 100644
--- a/libstdc++-v3/testsuite/tr1/3_function_objects/mem_fn.cc
+++ b/libstdc++-v3/testsuite/tr1/3_function_objects/mem_fn.cc
@@ -39,7 +39,7 @@ struct dumb_ptr
};
// Test mem_fn with a data member
-void test01()
+void test01(int r = 0)
{
using std::tr1::mem_fn;
@@ -69,6 +69,9 @@ void test01()
const int& bypc = mem_fn(&X::bar)(ypc);
const int& byd = mem_fn(&X::bar)(yd);
const int& bydc = mem_fn(&X::bar)(ydc);
+
+ // Avoid unused variable warnings.
+ r = bx + bxc + bxp + bxpc + bxd + bxdc + by + byc + byp + bypc + byd + bydc;
}
int main()
diff --git a/libstdc++-v3/testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc b/libstdc++-v3/testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc
index a6ebca06691..1c6c8edd670 100644
--- a/libstdc++-v3/testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc
+++ b/libstdc++-v3/testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc
@@ -2,7 +2,7 @@
// 2004-10-20 Benjamin Kosnik <bkoz@redhat.com>
//
-// Copyright (C) 2004 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -31,6 +31,8 @@ test01()
array_type a = { 0, 1, 2, 3, 4 };
array_type b = { 0, 1, 2, 3 };
+
+ a = b;
}
int main()
diff --git a/libstdc++-v3/testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc b/libstdc++-v3/testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc
index 47252457859..75b3e97720e 100644
--- a/libstdc++-v3/testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc
+++ b/libstdc++-v3/testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc
@@ -1,6 +1,6 @@
// 2004-10-20 Benjamin Kosnik <bkoz@redhat.com>
//
-// Copyright (C) 2004 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -38,6 +38,7 @@ test01()
// 3
// begin() == end()
+ VERIFY( a.begin() == a.end() );
VERIFY( b.begin() == b.end() );
// 4: ?
diff --git a/libstdc++-v3/testsuite/tr1/6_containers/unordered/insert/multiset_range.cc b/libstdc++-v3/testsuite/tr1/6_containers/unordered/insert/multiset_range.cc
index ab543e481bd..a83fce3cd61 100644
--- a/libstdc++-v3/testsuite/tr1/6_containers/unordered/insert/multiset_range.cc
+++ b/libstdc++-v3/testsuite/tr1/6_containers/unordered/insert/multiset_range.cc
@@ -27,7 +27,7 @@
#include <iterator>
#include <algorithm>
#include <tr1/unordered_set>
-#include "testsuite_hooks.h"
+#include <testsuite_hooks.h>
bool test __attribute__((unused)) = true;
@@ -42,7 +42,7 @@ void test01()
"magenta", "yellow", "orange", "pink", "gray" };
s.insert(A+0, A+N);
- VERIFY(s.size() == N);
+ VERIFY(s.size() == static_cast<unsigned int>(N));
VERIFY(std::distance(s.begin(), s.end()) == N);
for (int i = 0; i < N; ++i) {
@@ -62,7 +62,7 @@ void test02()
const int A[N] = { 3, 7, 4, 8, 2, 4, 6, 7 };
s.insert(A+0, A+N);
- VERIFY(s.size() == N);
+ VERIFY(s.size() == static_cast<unsigned int>(N));
VERIFY(std::distance(s.begin(), s.end()) == N);
VERIFY(std::count(s.begin(), s.end(), 2) == 1);
diff --git a/libstdc++-v3/testsuite/tr1/6_containers/unordered/insert/set_range.cc b/libstdc++-v3/testsuite/tr1/6_containers/unordered/insert/set_range.cc
index 24f973846b1..bfa4f73b1b2 100644
--- a/libstdc++-v3/testsuite/tr1/6_containers/unordered/insert/set_range.cc
+++ b/libstdc++-v3/testsuite/tr1/6_containers/unordered/insert/set_range.cc
@@ -27,7 +27,7 @@
#include <iterator>
#include <algorithm>
#include <tr1/unordered_set>
-#include "testsuite_hooks.h"
+#include <testsuite_hooks.h>
bool test __attribute__((unused)) = true;
@@ -42,7 +42,7 @@ void test01()
"magenta", "yellow", "orange", "pink", "gray" };
s.insert(A+0, A+N);
- VERIFY(s.size() == N);
+ VERIFY(s.size() == static_cast<unsigned int>(N));
VERIFY(std::distance(s.begin(), s.end()) == N);
for (int i = 0; i < N; ++i) {
diff --git a/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/hash.cc b/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/hash.cc
index da4515160a5..382d69f715c 100644
--- a/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/hash.cc
+++ b/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/hash.cc
@@ -1,6 +1,6 @@
// { dg-do compile }
-// 2005-2-17 Matt Austern <austern@apple.com>
+// 2005-02-17 Matt Austern <austern@apple.com>
//
// Copyright (C) 2005 Free Software Foundation, Inc.
//
@@ -25,30 +25,27 @@
#include <string>
#include <tr1/functional>
-int main()
-{
- using namespace std::tr1;
+using namespace std::tr1;
- // Verify that we can instantiate hash for every required type.
-
- hash<bool> hb;
- hash<char> hc;
- hash<signed char> hsc;
- hash<unsigned char> huc;
- hash<short> hs;
- hash<int> hi;
- hash<long> hl;
- hash<unsigned short> hus;
- hash<unsigned int> hui;
- hash<unsigned long> hul;
- hash<float> hf;
- hash<double> hd;
- hash<long double> hld;
- hash<void*> hp;
- hash<std::string> hstr;
+// Verify that we can instantiate hash for every required type.
+template class hash<bool>;
+template class hash<char>;
+template class hash<signed char>;
+template class hash<unsigned char>;
+template class hash<short>;
+template class hash<int>;
+template class hash<long>;
+template class hash<unsigned short>;
+template class hash<unsigned int>;
+template class hash<unsigned long>;
+template class hash<float>;
+template class hash<double>;
+template class hash<long double>;
+template class hash<void*>;
+template class hash<std::string>;
#ifdef _GLIBCXX_USE_WCHAR_T
- hash<wchar_t> hw;
- hash<std::wstring> hwstr;
+template class hash<wchar_t>;
+template class hash<std::wstring>;
#endif
-}
+
diff --git a/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/map.cc b/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/map.cc
index adb2913c9a3..cb1cf2fc98e 100644
--- a/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/map.cc
+++ b/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/map.cc
@@ -1,8 +1,8 @@
// { dg-do compile }
-// 2005-2-17 Matt Austern <austern@apple.com>
+// 2005-02-17 Matt Austern <austern@apple.com>
//
-// Copyright (C) 2004 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
@@ -25,13 +25,10 @@
#include <string>
#include <tr1/unordered_map>
-int main()
-{
- using namespace std;
- using namespace std::tr1;
+using namespace std;
+using namespace std::tr1;
- unordered_map<string, float> m1;
- unordered_map<string, float,
- hash<string>, equal_to<string>,
- allocator<pair<const string, float> >, true> s2;
-}
+template class unordered_map<string, float>;
+template class unordered_map<string, float,
+ hash<string>, equal_to<string>,
+ allocator<pair<const string, float> >, true>;
diff --git a/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/multimap.cc b/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/multimap.cc
index 9225d7974e9..73282612951 100644
--- a/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/multimap.cc
+++ b/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/multimap.cc
@@ -1,6 +1,6 @@
// { dg-do compile }
-// 2005-2-17 Matt Austern <austern@apple.com>
+// 2005-02-17 Matt Austern <austern@apple.com>
//
// Copyright (C) 2005 Free Software Foundation, Inc.
//
@@ -25,13 +25,10 @@
#include <string>
#include <tr1/unordered_map>
-int main()
-{
- using namespace std;
- using namespace std::tr1;
+using namespace std;
+using namespace std::tr1;
- unordered_multimap<string, float> m1;
- unordered_multimap<string, float,
- hash<string>, equal_to<string>,
- allocator<pair<const string, float> >, true> s2;
-}
+template class unordered_multimap<string, float>;
+template class unordered_multimap<string, float,
+ hash<string>, equal_to<string>,
+ allocator<pair<const string, float> >, true>;
diff --git a/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/multiset.cc b/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/multiset.cc
index ce138c340bb..e022e8bd856 100644
--- a/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/multiset.cc
+++ b/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/multiset.cc
@@ -1,6 +1,6 @@
// { dg-do compile }
-// 2005-2-17 Matt Austern <austern@apple.com>
+// 2005-02-17 Matt Austern <austern@apple.com>
//
// Copyright (C) 2005 Free Software Foundation, Inc.
//
@@ -24,11 +24,9 @@
#include <tr1/unordered_set>
-int main()
-{
- using namespace std;
- using namespace std::tr1;
+using namespace std;
+using namespace std::tr1;
- unordered_multiset<int> s1;
- unordered_multiset<int, hash<int>, equal_to<int>, allocator<int>, true> s2;
-}
+template class unordered_multiset<int>;
+template class unordered_multiset<int, hash<int>, equal_to<int>,
+ allocator<int>, true>;
diff --git a/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/set.cc b/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/set.cc
index 32bde7165f5..9bb892eccd6 100644
--- a/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/set.cc
+++ b/libstdc++-v3/testsuite/tr1/6_containers/unordered/instantiate/set.cc
@@ -1,6 +1,6 @@
// { dg-do compile }
-// 2005-2-17 Matt Austern <austern@apple.com>
+// 2005-02-17 Matt Austern <austern@apple.com>
//
// Copyright (C) 2005 Free Software Foundation, Inc.
//
@@ -24,11 +24,9 @@
#include <tr1/unordered_set>
-int main()
-{
- using namespace std;
- using namespace std::tr1;
+using namespace std;
+using namespace std::tr1;
- unordered_set<int> s1;
- unordered_set<int, hash<int>, equal_to<int>, allocator<int>, true> s2;
-}
+template class unordered_set<int>;
+template class unordered_set<int, hash<int>, equal_to<int>,
+ allocator<int>, true>;