diff options
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>; |