Merge branches/gcc-4_9-branch rev 211054
authoryroux <yroux@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 12 Jun 2014 09:05:08 +0000 (09:05 +0000)
committeryroux <yroux@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 12 Jun 2014 09:05:08 +0000 (09:05 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/linaro/gcc-4_9-branch@211495 138bc75d-0d04-0410-961f-82ee72b054a4

185 files changed:
gcc/ChangeLog
gcc/DATESTAMP
gcc/ada/ChangeLog
gcc/ada/gcc-interface/decl.c
gcc/ada/gcc-interface/utils.c
gcc/c-family/ChangeLog
gcc/c-family/c-opts.c
gcc/c/ChangeLog
gcc/c/c-array-notation.c
gcc/cgraph.h
gcc/config.in
gcc/config/aarch64/arm_neon.h
gcc/config/alpha/alpha.c
gcc/config/arm/aout.h
gcc/config/arm/arm-cores.def
gcc/config/arm/arm-opts.h
gcc/config/arm/arm.c
gcc/config/arm/arm.h
gcc/config/arm/arm.md
gcc/config/arm/bpabi.h
gcc/config/arm/elf.h
gcc/config/arm/linux-elf.h
gcc/config/arm/linux-gas.h
gcc/config/arm/netbsd-elf.h
gcc/config/arm/uclinux-eabi.h
gcc/config/arm/uclinux-elf.h
gcc/config/arm/vxworks.h
gcc/config/avr/avr-mcus.def
gcc/config/avr/avr.c
gcc/config/avr/avr.md
gcc/config/dbx.h
gcc/config/i386/i386.c
gcc/config/i386/i386.md
gcc/config/initfini-array.h
gcc/config/msp430/msp430.c
gcc/config/msp430/msp430.h
gcc/config/msp430/msp430.md
gcc/config/msp430/predicates.md
gcc/config/newlib-stdint.h
gcc/config/rs6000/htm.md
gcc/config/rs6000/htmxlintrin.h
gcc/config/rs6000/rs6000-builtin.def
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h
gcc/config/rs6000/rs6000.md
gcc/config/rtems.h
gcc/config/sol2-clearcap.map [new file with mode: 0644]
gcc/config/sol2-clearcapv2.map [new file with mode: 0644]
gcc/config/sol2.h
gcc/config/sol2.opt
gcc/config/sparc/sparc-protos.h
gcc/config/sparc/sparc.c
gcc/config/sparc/sparc.md
gcc/config/t-sol2
gcc/config/v850/rtems.h
gcc/config/v850/v850-opts.h
gcc/config/v850/v850.h
gcc/configure
gcc/configure.ac
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/lambda.c
gcc/cp/parser.c
gcc/cp/pt.c
gcc/doc/extend.texi
gcc/doc/invoke.texi
gcc/doc/sourcebuild.texi
gcc/double-int.c
gcc/fold-const.c
gcc/fortran/ChangeLog
gcc/fortran/frontend-passes.c
gcc/fortran/intrinsic.texi
gcc/go/gofrontend/types.cc
gcc/go/gofrontend/types.h
gcc/graphite-scop-detection.c
gcc/ipa-devirt.c
gcc/ipa-inline-transform.c
gcc/ipa-inline.c
gcc/ipa-inline.h
gcc/ipa-prop.c
gcc/ipa.c
gcc/ira-costs.c
gcc/lra-eliminations.c
gcc/lto/ChangeLog
gcc/lto/lto-symtab.c
gcc/omp-low.c
gcc/opts.c
gcc/po/ChangeLog
gcc/po/zh_CN.po
gcc/symtab.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/cilk-plus/AN/pr61191.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_sync.cc [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this18.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/nsdmi-template10.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/nsdmi-template9.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp0x/sfinae50.C [new file with mode: 0644]
gcc/testsuite/g++.dg/init/copy7.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ipa/devirt-11.C
gcc/testsuite/g++.dg/ipa/devirt-31.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ipa/pr61085.C [new file with mode: 0644]
gcc/testsuite/g++.dg/pr60969.C [new file with mode: 0644]
gcc/testsuite/g++.dg/torture/pr60854.C [new file with mode: 0644]
gcc/testsuite/g++.dg/tree-ssa/pr61009.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/graphite/pr60979.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr61045.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr61060.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr61158.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr57864.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/pr61010.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/unused-8b.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect.exp
gcc/testsuite/gcc.target/avr/pr60991.c [new file with mode: 0644]
gcc/testsuite/gcc.target/avr/torture/pr61055.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/clearcap.map [deleted file]
gcc/testsuite/gcc.target/i386/clearcapv2.map [deleted file]
gcc/testsuite/gcc.target/i386/i386.exp
gcc/testsuite/gcc.target/i386/pr60902.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/htm-ttest.c [new file with mode: 0644]
gcc/testsuite/gcc.target/powerpc/pack02.c
gcc/testsuite/gcc.target/powerpc/pack03.c
gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
gcc/testsuite/gfortran.dg/associate_16.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/list_read_13.f [new file with mode: 0644]
gcc/testsuite/gnat.dg/aliasing1.adb
gcc/testsuite/gnat.dg/enum3.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/overflow_fixed.adb [new file with mode: 0644]
gcc/testsuite/lib/clearcap.exp [new file with mode: 0644]
gcc/testsuite/lib/target-supports.exp
gcc/tree-inline.c
gcc/tree-ssa-threadedge.c
gcc/tree-streamer-in.c
gcc/varpool.c
libbacktrace/ChangeLog
libbacktrace/mmap.c
libgcc/ChangeLog
libgcc/config/arm/bpabi-lib.h
libgcc/config/arm/sfp-machine.h
libgcc/config/msp430/t-msp430
libgcc/config/t-slibgcc-sld
libgfortran/ChangeLog
libgfortran/intrinsics/ctime.c
libgfortran/io/list_read.c
libgfortran/io/unix.c
libgo/config.h.in
libgo/configure
libgo/configure.ac
libgo/mksysinfo.sh
libgo/runtime/proc.c
libgomp/ChangeLog
libgomp/libgomp.texi
libgomp/testsuite/libgomp.c++/simd-9.C [new file with mode: 0644]
libitm/ChangeLog
libitm/acinclude.m4
libitm/clearcap.map [deleted file]
libitm/configure
libstdc++-v3/ChangeLog
libstdc++-v3/doc/html/faq.html
libstdc++-v3/doc/xml/faq.xml
libstdc++-v3/include/bits/hashtable.h
libstdc++-v3/include/bits/regex_automaton.tcc
libstdc++-v3/include/bits/stl_iterator.h
libstdc++-v3/include/bits/stl_tree.h
libstdc++-v3/include/bits/stl_vector.h
libstdc++-v3/include/bits/vector.tcc
libstdc++-v3/include/debug/vector
libstdc++-v3/include/std/functional
libstdc++-v3/include/std/future
libstdc++-v3/include/std/iostream
libstdc++-v3/include/tr2/bool_set
libstdc++-v3/scripts/run_doxygen
libstdc++-v3/src/c++98/ios_init.cc
libstdc++-v3/testsuite/20_util/function/60594.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/set/cons/61023.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_set/61143.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/swap.cc [new file with mode: 0644]
libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
libstdc++-v3/testsuite/30_threads/promise/60966.cc [new file with mode: 0644]
lto-plugin/ChangeLog
lto-plugin/configure
lto-plugin/configure.ac

index 6ea494b..b3d8033 100644 (file)
@@ -1,3 +1,441 @@
+2014-05-29  Uros Bizjak  <ubizjak@gmail.com>
+
+       Backport from mainline
+       2014-05-26  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/61271
+       * config/i386/i386.c (ix86_rtx_costs)
+       <case CONST_INT, case CONST, case LABEL_REF, case SYMBOL_REF>:
+       Fix condition.
+
+2014-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+       Backport from mainline
+       2014-05-27  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * double-int.c (div_and_round_double) <ROUND_DIV_EXPR>: Use the proper
+       predicate to detect a negative quotient.
+
+2014-05-28  Richard Biener  <rguenther@suse.de>
+
+       Backport from mainline
+       2014-05-28  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/61045
+       * fold-const.c (fold_comparison): When folding
+       X +- C1 CMP Y +- C2 to X CMP Y +- C2 +- C1 also ensure
+       the sign of the remaining constant operand stays the same.
+
+       2014-05-05  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/61010
+       * fold-const.c (fold_binary_loc): Consistently avoid
+       canonicalizing X & CST away from a CST that is the mask
+       of a mode.
+
+       2014-04-28  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/60979
+       * graphite-scop-detection.c (scopdet_basic_block_info): Reject
+       SCOPs that end in a block with a successor with abnormal
+       predecessors.
+
+2014-05-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * configure.ac ($gcc_cv_ld_clearcap): New test.
+       * configure: Regenerate.
+       * config.in: Regenerate.
+       * config/sol2.opt (mclear-hwcap): New option.
+       * config/sol2.h (LINK_CLEARCAP_SPEC): Define.
+       * config/sol2-clearcap.map: Moved here from
+       testsuite/gcc.target/i386/clearcap.map.
+       * config/sol2-clearcapv2.map: Move here from
+       gcc.target/i386/clearcapv2.map.
+       * config/t-sol2 (install): Depend on install-clearcap-map.
+       (install-clearcap-map): New target.
+       * doc/invoke.texi (Option Summary, Solaris 2 Options): Document
+       -mclear-hwcap.
+
+2014-05-28  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR libgcc/61152
+       * config/dbx.h (License): Add Runtime Library Exception.
+       * config/newlib-stdint.h (License): Same.
+       * config/rtems.h (License): Same
+       * config/initfini-array.h (License): Same
+       * config/v850/v850.h (License): Same.
+       * config/v850/v850-opts.h (License): Same
+       * config/v850/rtems.h (License): Same.
+
+2014-05-28  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/61044
+       * doc/extend.texi (Local Labels): Note that label differences are
+       not supported for AVR.
+
+2014-05-27  Georg-Johann Lay  <avr@gjlay.de>
+
+       Backport from 2014-05-12 mainline r210322.
+       Backport from 2014-05-27 mainline r210959, r210969.
+
+       PR libgcc/61152
+       * config/arm/arm.h (License): Add GCC Runtime Library Exception.
+       * config/arm/arm-cores.def (License): Same.
+       * config/arm/arm-opts.h (License): Same.
+       * config/arm/aout.h (License): Same.
+       * config/arm/bpabi.h (License): Same.
+       * config/arm/elf.h (License): Same.
+       * config/arm/linux-elf.h (License): Same.
+       * config/arm/linux-gas.h (License): Same.
+       * config/arm/netbsd-elf.h (License): Same.
+       * config/arm/uclinux-eabi.h (License): Same.
+       * config/arm/uclinux-elf.h (License): Same.
+       * config/arm/vxworks.h (License): Same.
+
+2014-05-26  Michael Tautschnig  <mt@debian.org>
+
+       PR target/61249
+       * doc/extend.texi (X86 Built-in Functions): Fix parameter lists of
+       __builtin_ia32_vfrczs[sd] and __builtin_ia32_mpsadbw256.
+
+2014-05-22  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR rtl-optimization/61215
+       * lra-elelimination.c (lra_eliminate_regs_1): Don't use
+       simplify_gen_subreg until final substitution.
+
+2014-05-23  Alan Modra  <amodra@gmail.com>
+
+       PR target/61231
+       * config/rs6000/rs6000.c (mem_operand_gpr): Handle SImode.
+       * config/rs6000/rs6000.md (extendsidi2_lfiwax, extendsidi2_nocell):
+       Use "Y" constraint rather than "m".
+
+2014-05-22  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR rtl-optimization/60969
+       * ira-costs.c (record_reg_classes): Process NO_REGS for matching
+       constraints.  Set up mem cost for NO_REGS case.
+
+2014-05-22  Peter Bergner  <bergner@vnet.ibm.com>
+
+       * config/rs6000/htm.md (ttest): Use correct shift value to get CR0.
+
+2014-05-22  Richard Earnshaw  <rearnsha@arm.com>
+
+       PR target/61208
+       * arm.md (arm_cmpdi_unsigned): Fix length calculation for Thumb2.
+
+2014-05-22  Nick Clifton  <nickc@redhat.com>
+
+       * config/msp430/msp430.h (ASM_SPEC): Add spaces after inserted options.
+
+2014-05-22  Jakub Jelinek  <jakub@redhat.com>
+
+       * tree-streamer-in.c (unpack_ts_real_cst_value_fields): Make sure
+       all padding bits in REAL_VALUE_TYPE are cleared.
+
+2014-05-21  Guozhi Wei  <carrot@google.com>
+
+       PR target/61202
+       * config/aarch64/arm_neon.h (vqdmulh_n_s16): Change the last operand's
+       constraint.
+       (vqdmulhq_n_s16): Likewise.
+
+2014-05-21  Martin Jambor  <mjambor@suse.cz>
+
+       * doc/invoke.texi (Optimize Options): Document parameters
+       ipa-cp-eval-threshold, ipa-max-agg-items, ipa-cp-loop-hint-bonus and
+       ipa-cp-array-index-hint-bonus.
+
+2014-05-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/61252
+       * omp-low.c (handle_simd_reference): New function.
+       (lower_rec_input_clauses): Use it.  Defer adding reference
+       initialization even for reduction without placeholder if in simd,
+       handle it properly later on.
+
+2014-05-20  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR bootstrap/60984
+       * ipa-inline-transform.c (inline_call): Use add CALLEE_REMOVED
+       parameter.
+       * ipa-inline.c (inline_to_all_callers): If callee was removed; return.
+       (ipa_inline): Loop inline_to_all_callers until no more aliases
+       are removed.
+
+2014-05-20  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR lto/60820
+       * varpool.c (varpool_remove_node): Do not alter decls when streaming.
+
+2014-05-20  DJ Delorie  <dj@redhat.com>
+
+       * config/msp430/msp430.md (split): Don't allow subregs when
+       splitting SImode adds.
+       (andneghi): Fix subtraction logic.
+       * config/msp430/predicates.md (msp430_nonsubreg_or_imm_operand): New.
+
+2014-05-20  Nick Clifton  <nickc@redhat.com>
+
+       * config/msp430/msp430.c (TARGET_GIMPLIFY_VA_ARG_EXPR): Define.
+       (msp430_gimplify_va_arg_expr): New function.
+       (msp430_print_operand): Handle (CONST (ZERO_EXTRACT)).
+
+       * config/msp430/msp430.md (zero_extendpsisi2): Use + constraint on
+       operand 0 in order to prevent confusion about the number of
+       registers involved.
+
+2014-05-20  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * config/arm/arm.md (arith_shiftsi): Do not predicate for
+       arm_restrict_it.
+
+2014-05-19  Richard Earnshaw  <rearnsha@arm.com>
+
+       * arm.c (thumb1_reorg): When scanning backwards skip anything
+       that's not a proper insn.
+
+2014-05-17  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa.c (symtab_remove_unreachable_nodes): Remove
+       symbol from comdat group if its body was eliminated.
+       (comdat_can_be_unshared_p_1): Static symbols can always be privatized.
+       * symtab.c (symtab_remove_from_same_comdat_group): Break out from ...
+       (symtab_unregister_node): ... this one.
+       (verify_symtab_base): More strict checking of comdats.
+       * cgraph.h (symtab_remove_from_same_comdat_group): Declare.
+
+2014-05-17  Jan Hubicka  <hubicka@ucw.cz>
+
+       * opts.c (common_handle_option): Disable -fipa-reference coorectly
+       with -fuse-profile.
+
+2014-05-17  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/60854
+       * ipa.c (symtab_remove_unreachable_nodes): Mark targets of
+       external aliases alive, too.
+
+2014-05-17  Uros Bizjak  <ubizjak@gmail.com>
+
+       * doc/invoke.texi (free): Mention Alpha.  Also enabled at -Os.
+
+2014-05-17  Uros Bizjak  <ubizjak@gmail.com>
+
+       Backport from mainline
+       2014-04-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR target/60969
+       * config/i386/i386.md (*movsf_internal): Set MODE to SI for
+       alternative 12.
+
+2014-05-16  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR rtl-optimization/60969
+       * ira-costs.c (record_reg_classes): Allow only memory for pseudo.
+       Calculate costs for this case.
+
+2014-05-15  Peter Bergner  <bergner@vnet.ibm.com>
+
+       PR target/61193
+       * config/rs6000/htmxlintrin.h (_HTM_TBEGIN_STARTED): New define.
+       (__TM_simple_begin): Use it.
+       (__TM_begin): Likewise.
+
+2014-05-15  Martin Jambor  <mjambor@suse.cz>
+
+       PR ipa/61085
+       * ipa-prop.c (update_indirect_edges_after_inlining): Check
+       type_preserved flag when the indirect edge is polymorphic.
+
+2014-05-15  Martin Jambor  <mjambor@suse.cz>
+
+       PR ipa/60897
+       * ipa-prop.c (ipa_modify_formal_parameters): Reset DECL_LANG_SPECIFIC.
+
+2014-05-15  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/61158
+       * fold-const.c (fold_binary_loc): If X is zero-extended and
+       shiftc >= prec, make sure zerobits is all ones instead of
+       invoking undefined behavior.
+
+2014-05-14  Cary Coutant  <ccoutant@google.com>
+
+       PR debug/61013
+       * opts.c (common_handle_option): Don't special-case "-g".
+       (set_debug_level): Default to at least level 2 with "-g".
+
+2014-05-14  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/sparc/sparc-protos.h (sparc_absnegfloat_split_legitimate):
+       Delete.
+       * config/sparc/sparc.c (sparc_absnegfloat_split_legitimate): Likewise.
+       * config/sparc/sparc.md (fptype_ut699): New attribute.
+       (in_branch_delay): Return false if -mfix-ut699 is specified and
+       fptype_ut699 is set to single.
+       (truncdfsf2): Add fptype_ut699 attribute.
+       (fix_truncdfsi2): Likewise.
+       (floatsisf2): Change fptype attribute.
+       (fix_truncsfsi2): Likewise.
+       (negtf2_notv9): Delete.
+       (negtf2_v9): Likewise.
+       (negtf2_hq): New instruction.
+       (negtf2): New instruction and splitter.
+       (negdf2_notv9): Rewrite.
+       (abstf2_notv9): Delete.
+       (abstf2_hq_v9): Likewise.
+       (abstf2_v9): Likewise.
+       (abstf2_hq): New instruction.
+       (abstf2): New instruction and splitter.
+       (absdf2_notv9): Rewrite.
+
+2014-05-14  Matthias Klose  <doko@ubuntu.com>
+
+       Revert:
+       2014-05-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+                   Matthias Klose  <doko@ubuntu.com>
+
+       PR driver/61106
+       * optc-gen.awk: Fix option handling for -Wunused-parameter.
+
+2014-05-13  Peter Bergner  <bergner@vnet.ibm.com>
+
+       * doc/sourcebuild.texi: (dfp_hw): Document.
+       (p8vector_hw): Likewise.
+       (powerpc_eabi_ok): Likewise.
+       (powerpc_elfv2): Likewise.
+       (powerpc_htm_ok): Likewise.
+       (ppc_recip_hw): Likewise.
+       (vsx_hw): Likewise.
+
+2014-05-13  Jeff Law  <law@redhat.com>
+
+       Backports fromm mainline:
+
+       2014-05-08  Jeff Law  <law@redhat.com>
+
+       PR tree-optimization/61009
+       * tree-ssa-threadedge.c (thread_through_normal_block): Return a
+       tri-state rather than a boolean.  When a block is too big to
+       thread through, inform caller via negative return value.
+       (thread_across_edge): If a block was too big for normal threading,
+       then it's too big for a joiner too, so remove temporary equivalences
+       and return immediately.
+
+       2014-04-28  Jeff Law  <law@redhat.com>
+
+       PR tree-optimization/60902
+       * tree-ssa-threadedge.c
+       (record_temporary_equivalences_from_stmts_at_dest): Only iterate
+       over real defs when invalidating outputs from statements that do not
+       produce useful outputs for threading.
+
+       2014-04-23  Jeff Law  <law@redhat.com>
+
+       PR tree-optimization/60902
+       * tree-ssa-threadedge.c
+       (record_temporary_equivalences_from_stmts_at_dest): Make sure to
+       invalidate outputs from statements that do not produce useful
+       outputs for threading.
+
+2014-05-13  Richard Biener  <rguenther@suse.de>
+
+       PR ipa/60973
+       * tree-inline.c (remap_gimple_stmt): Clear tail call flag,
+       it needs revisiting whether the call still may be tail-called.
+
+2014-05-13  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/61060
+       * config/i386/i386.c (ix86_expand_set_or_movmem): If count_exp
+       is const0_rtx, return immediately.  Don't test count == 0 when
+       it is always true.
+
+2014-05-12  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
+
+       Backport from mainline
+       2014-05-12  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
+
+       PR target/60991
+       * config/avr/avr.c (avr_out_store_psi): Use correct constant
+       to restore Y.
+
+2014-05-09  Uros Bizjak  <ubizjak@gmail.com>
+
+       Backport from mainline
+       2014-05-08  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/61092
+       * config/alpha/alpha.c: Include gimple-iterator.h.
+       (alpha_gimple_fold_builtin): New function.  Move
+       ALPHA_BUILTIN_UMULH folding from ...
+       (alpha_fold_builtin): ... here.
+       (TARGET_GIMPLE_FOLD_BUILTIN): New define.
+
+2014-05-09  Pitchumani Sivanupandi  <Pitchumani.S@atmel.com>
+
+       Backport from 2014-04-16 trunk r209446
+       2014-04-16  Pitchumani Sivanupandi  <Pitchumani.S@atmel.com>
+
+       * config/avr/avr-mcus.def: Correct typo for atxmega256a3bu macro.
+
+2014-05-09  Georg-Johann Lay  <avr@gjlay.de>
+
+       Backport from 2014-05-09 trunk r210267
+
+       PR target/61055
+       * config/avr/avr.md (cc): Add new attribute set_vzn.
+       (addqi3, addqq3, adduqq3, subqi3, subqq3, subuqq3, negqi2) [cc]:
+       Set cc insn attribute to set_vzn instead of set_zn for alternatives
+       with INC, DEC or NEG.
+       * config/avr/avr.c (avr_notice_update_cc): Handle SET_VZN.
+       (avr_out_plus_1): ADIW sets cc0 to CC_SET_CZN.
+       INC, DEC and ADD+ADC set cc0 to CC_CLOBBER.
+
+2014-05-08  Manuel López-Ibáñez  <manu@gcc.gnu.org>
+           Matthias Klose  <doko@ubuntu.com>
+
+       PR driver/61106
+       * optc-gen.awk: Fix option handling for -Wunused-parameter.
+
+2014-05-08  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR target/59952
+       * config/i386/i386.c (PTA_HASWELL): Remove PTA_RTM.
+
+2014-05-05  Marek Polacek  <polacek@redhat.com>
+
+       Back port from mainline
+       2014-05-05  Marek Polacek  <polacek@redhat.com>
+
+       PR driver/61065
+       * opts.c (common_handle_option): Call error_at instead of warning_at.
+
+2014-05-04  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/60965
+       * ipa-devirt.c (get_class_context): Allow POD to change to non-POD.
+
+2014-05-04  Peter Bergner  <bergner@vnet.ibm.com>
+
+       * config/rs6000/rs6000.h (RS6000_BTM_HARD_FLOAT): New define.
+       (RS6000_BTM_COMMON): Add RS6000_BTM_HARD_FLOAT.
+       (TARGET_EXTRA_BUILTINS): Add TARGET_HARD_FLOAT.
+       * config/rs6000/rs6000-builtin.def (BU_MISC_1):
+       Use RS6000_BTM_HARD_FLOAT.
+       (BU_MISC_2): Likewise.
+       * config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Handle
+       RS6000_BTM_HARD_FLOAT.
+       (rs6000_option_override_internal): Enforce -mhard-float if -mhard-dfp
+       is explicitly used.
+       (rs6000_invalid_builtin): Add hard floating builtin support.
+       (rs6000_expand_builtin): Relax the gcc_assert to allow the new
+       hard float builtins.
+       (rs6000_builtin_mask_names): Add RS6000_BTM_HARD_FLOAT.
+
 2014-05-03  Joey Ye  <joey.ye@arm.com>
 
        Backport from mainline r209463
index d43065a..7b43bbd 100644 (file)
@@ -1 +1 @@
-20140505
+20140529
index b4d3e77..f979c34 100644 (file)
@@ -1,3 +1,59 @@
+2014-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+
+       Backport from mainline
+       2014-04-22  Richard Henderson  <rth@redhat.com>
+
+       * init.c [__linux__] (HAVE_GNAT_ALTERNATE_STACK): New define.
+       (__gnat_alternate_stack): Enable for all linux except ia64.
+
+2014-05-18  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * utils.c (gnat_write_global_declarations): Adjust the flags put on
+       dummy_global.
+
+2014-05-18  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Do not
+       consider that regular packed arrays can never be superflat.
+
+2014-05-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+       Backport from mainline
+       2014-04-28  Richard Henderson  <rth@redhat.com>
+
+       * gcc-interface/Makefile.in: Support aarch64-linux.
+
+       2014-04-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * exp_dbug.ads (Get_External_Name): Add 'False' default to Has_Suffix,
+       add 'Suffix' parameter and adjust comment.
+       (Get_External_Name_With_Suffix): Delete.
+       * exp_dbug.adb (Get_External_Name_With_Suffix): Merge into...
+       (Get_External_Name): ...here.  Add 'False' default to Has_Suffix, add
+       'Suffix' parameter.
+       (Get_Encoded_Name): Remove 2nd argument in call to Get_External_Name.
+       Call Get_External_Name instead of Get_External_Name_With_Suffix.
+       (Get_Secondary_DT_External_Name): Likewise.
+       * exp_cg.adb (Write_Call_Info): Likewise.
+       * exp_disp.adb (Export_DT): Likewise.
+       (Import_DT): Likewise.
+       * comperr.ads (Compiler_Abort): Remove Code parameter and add From_GCC
+       parameter with False default.
+       * comperr.adb (Compiler_Abort): Likewise.  Adjust accordingly.
+       * types.h (Fat_Pointer): Rename into...
+       (String_Pointer): ...this.  Add comment on interfacing rules.
+       * fe.h (Compiler_Abort): Adjust for above renaming.
+       (Error_Msg_N): Likewise.
+       (Error_Msg_NE): Likewise.
+       (Get_External_Name): Likewise.  Add third parameter.
+       (Get_External_Name_With_Suffix): Delete.
+       * gcc-interface/decl.c (STDCALL_PREFIX): Define.
+       (create_concat_name): Adjust call to Get_External_Name, remove call to
+       Get_External_Name_With_Suffix, use STDCALL_PREFIX, adjust for renaming.
+       * gcc-interface/trans.c (post_error): Likewise.
+       (post_error_ne): Likewise.
+       * gcc-interface/misc.c (internal_error_function): Likewise.
+
 2014-04-22  Release Manager
 
        * GCC 4.9.0 released.
index b18b2f7..52452ce 100644 (file)
@@ -2435,8 +2435,10 @@ gnat_to_gnu_entity (Entity_Id gnat_entity, tree gnu_expr, int definition)
                 we can just use the high bound of the index type.  */
              else if ((Nkind (gnat_index) == N_Range
                        && cannot_be_superflat_p (gnat_index))
-                      /* Packed Array Types are never superflat.  */
-                      || Is_Packed_Array_Type (gnat_entity))
+                      /* Bit-Packed Array Types are never superflat.  */
+                      || (Is_Packed_Array_Type (gnat_entity)
+                          && Is_Bit_Packed_Array
+                             (Original_Array_Type (gnat_entity))))
                gnu_high = gnu_max;
 
              /* Otherwise, if the high bound is constant but the low bound is
index 014fe36..15b7236 100644 (file)
@@ -5662,9 +5662,10 @@ gnat_write_global_declarations (void)
       dummy_global
        = build_decl (BUILTINS_LOCATION, VAR_DECL, get_identifier (label),
                      void_type_node);
+      DECL_HARD_REGISTER (dummy_global) = 1;
       TREE_STATIC (dummy_global) = 1;
-      TREE_ASM_WRITTEN (dummy_global) = 1;
       node = varpool_node_for_decl (dummy_global);
+      node->definition = 1;
       node->force_output = 1;
 
       while (!types_used_by_cur_var_decl->is_empty ())
index 3600df7..4f277de 100644 (file)
@@ -1,3 +1,9 @@
+2014-05-06  Richard Biener  <rguenther@suse.de>
+
+       * c-opts.c (c_common_post_options): For -freestanding,
+       -fno-hosted and -fno-builtin disable pattern recognition
+       if not enabled explicitely.
+
 2014-04-22  Richard Biener  <rguenther@suse.de>
 
        Backport from mainline
index e162e49..29e9a35 100644 (file)
@@ -851,6 +851,12 @@ c_common_post_options (const char **pfilename)
   if (flag_objc_exceptions && !flag_objc_sjlj_exceptions)
     flag_exceptions = 1;
 
+  /* If -ffreestanding, -fno-hosted or -fno-builtin then disable
+     pattern recognition.  */
+  if (!global_options_set.x_flag_tree_loop_distribute_patterns
+      && flag_no_builtin)
+    flag_tree_loop_distribute_patterns = 0;
+
   /* -Woverlength-strings is off by default, but is enabled by -Wpedantic.
      It is never enabled in C++, as the minimum limit is not normative
      in that standard.  */
index 5f4a207..847b51e 100644 (file)
@@ -1,3 +1,9 @@
+2014-05-26  Igor Zamyatin  <igor.zamyatin@intel.com>
+
+       PR c/61191
+       * c-array-notation.c (fix_builtin_array_notation_fn): Check invalid
+       function parameters.
+
 2014-04-24  Jakub Jelinek  <jakub@redhat.com>
 
        * c-parser.c (c_parser_omp_atomic): Allow seq_cst before
index 0ac6ba8..127f9a1 100644 (file)
@@ -229,6 +229,8 @@ fix_builtin_array_notation_fn (tree an_builtin_fn, tree *new_var)
   /* Fully fold any EXCESSIVE_PRECISION EXPR that can occur in the function
      parameter.  */
   func_parm = c_fully_fold (func_parm, false, NULL);
+  if (func_parm == error_mark_node)
+    return error_mark_node;
   
   location = EXPR_LOCATION (an_builtin_fn);
   
index 15310d8..6c3be6d 100644 (file)
@@ -723,6 +723,7 @@ enum symbol_partitioning_class
 /* In symtab.c  */
 void symtab_register_node (symtab_node *);
 void symtab_unregister_node (symtab_node *);
+void symtab_remove_from_same_comdat_group (symtab_node *);
 void symtab_remove_node (symtab_node *);
 symtab_node *symtab_get_node (const_tree);
 symtab_node *symtab_node_for_asm (const_tree asmname);
index af02866..1e85325 100644 (file)
 #endif
 
 
+/* Define if the linker supports clearing hardware capabilities via mapfile.
+   */
+#ifndef USED_FOR_TARGET
+#undef HAVE_LD_CLEARCAP
+#endif
+
+
 /* Define if your linker supports --demangle option. */
 #ifndef USED_FOR_TARGET
 #undef HAVE_LD_DEMANGLE
index 747a292..b03d114 100644 (file)
@@ -10111,7 +10111,7 @@ vqdmulh_n_s16 (int16x4_t a, int16_t b)
   int16x4_t result;
   __asm__ ("sqdmulh %0.4h,%1.4h,%2.h[0]"
            : "=w"(result)
-           : "w"(a), "w"(b)
+           : "w"(a), "x"(b)
            : /* No clobbers */);
   return result;
 }
@@ -10133,7 +10133,7 @@ vqdmulhq_n_s16 (int16x8_t a, int16_t b)
   int16x8_t result;
   __asm__ ("sqdmulh %0.8h,%1.8h,%2.h[0]"
            : "=w"(result)
-           : "w"(a), "w"(b)
+           : "w"(a), "x"(b)
            : /* No clobbers */);
   return result;
 }
index df4cc1b..dc07a02 100644 (file)
@@ -62,6 +62,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "gimple-expr.h"
 #include "is-a.h"
 #include "gimple.h"
+#include "gimple-iterator.h"
 #include "gimplify.h"
 #include "gimple-ssa.h"
 #include "stringpool.h"
@@ -7042,9 +7043,6 @@ alpha_fold_builtin (tree fndecl, int n_args, tree *op,
     case ALPHA_BUILTIN_MSKQH:
       return alpha_fold_builtin_mskxx (op, opint, op_const, 0xff, true);
 
-    case ALPHA_BUILTIN_UMULH:
-      return fold_build2 (MULT_HIGHPART_EXPR, alpha_dimode_u, op[0], op[1]);
-
     case ALPHA_BUILTIN_ZAP:
       opint[1] ^= 0xff;
       /* FALLTHRU */
@@ -7094,6 +7092,49 @@ alpha_fold_builtin (tree fndecl, int n_args, tree *op,
       return NULL;
     }
 }
+
+bool
+alpha_gimple_fold_builtin (gimple_stmt_iterator *gsi)
+{
+  bool changed = false;
+  gimple stmt = gsi_stmt (*gsi);
+  tree call = gimple_call_fn (stmt);
+  gimple new_stmt = NULL;
+
+  if (call)
+    {
+      tree fndecl = gimple_call_fndecl (stmt);
+
+      if (fndecl)
+       {
+         tree arg0, arg1;
+
+         switch (DECL_FUNCTION_CODE (fndecl))
+           {
+           case ALPHA_BUILTIN_UMULH:
+             arg0 = gimple_call_arg (stmt, 0);
+             arg1 = gimple_call_arg (stmt, 1);
+
+             new_stmt
+               = gimple_build_assign_with_ops (MULT_HIGHPART_EXPR,
+                                               gimple_call_lhs (stmt),
+                                               arg0,
+                                               arg1);
+             break;
+           default:
+             break;
+           }
+       }
+    }
+
+  if (new_stmt)
+    {
+      gsi_replace (gsi, new_stmt, true);
+      changed = true;
+    }
+
+  return changed;
+}
 \f
 /* This page contains routines that are used to determine what the function
    prologue and epilogue code will do and write them out.  */
@@ -9790,6 +9831,8 @@ alpha_canonicalize_comparison (int *code, rtx *op0, rtx *op1,
 #define TARGET_EXPAND_BUILTIN alpha_expand_builtin
 #undef  TARGET_FOLD_BUILTIN
 #define TARGET_FOLD_BUILTIN alpha_fold_builtin
+#undef  TARGET_GIMPLE_FOLD_BUILTIN
+#define TARGET_GIMPLE_FOLD_BUILTIN alpha_gimple_fold_builtin
 
 #undef TARGET_FUNCTION_OK_FOR_SIBCALL
 #define TARGET_FUNCTION_OK_FOR_SIBCALL alpha_function_ok_for_sibcall
index 51d32a9..c8f4e45 100644 (file)
    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 #ifndef ASM_APP_ON
index 42f00b4..56041ec 100644 (file)
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 /* Before using #include to read this file, define a macro:
index a839397..2190294 100644 (file)
    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 #ifndef ARM_OPTS_H
index 91e326e..fbd029b 100644 (file)
@@ -16716,7 +16716,7 @@ thumb1_reorg (void)
       rtx prev, insn = BB_END (bb);
       bool insn_clobbered = false;
 
-      while (insn != BB_HEAD (bb) && DEBUG_INSN_P (insn))
+      while (insn != BB_HEAD (bb) && !NONDEBUG_INSN_P (insn))
        insn = PREV_INSN (insn);
 
       /* Find the last cbranchsi4_insn in basic block BB.  */
index 597e69c..c60d9a4 100644 (file)
    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 #ifndef GCC_ARM_H
index 4b81ee2..0284f95 100644 (file)
 
 (define_insn_and_split "*arm_cmpdi_unsigned"
   [(set (reg:CC_CZ CC_REGNUM)
-        (compare:CC_CZ (match_operand:DI 0 "s_register_operand" "l,r,r")
-                       (match_operand:DI 1 "arm_di_operand"     "Py,r,rDi")))]
+        (compare:CC_CZ (match_operand:DI 0 "s_register_operand" "l,r,r,r")
+                       (match_operand:DI 1 "arm_di_operand"     "Py,r,Di,rDi")))]
 
   "TARGET_32BIT"
   "#"   ; "cmp\\t%R0, %R1\;it eq\;cmpeq\\t%Q0, %Q1"
     operands[1] = gen_lowpart (SImode, operands[1]);
   }
   [(set_attr "conds" "set")
-   (set_attr "enabled_for_depr_it" "yes,yes,no")
-   (set_attr "arch" "t2,t2,*")
-   (set_attr "length" "6,6,8")
+   (set_attr "enabled_for_depr_it" "yes,yes,no,*")
+   (set_attr "arch" "t2,t2,t2,a")
+   (set_attr "length" "6,6,10,8")
    (set_attr "type" "multiple")]
 )
 
   "TARGET_32BIT"
   "%i1%?\\t%0, %2, %4%S3"
   [(set_attr "predicable" "yes")
+   (set_attr "predicable_short_it" "no")
    (set_attr "shift" "4")
    (set_attr "arch" "a,t2,t2,a")
    ;; Thumb2 doesn't allow the stack pointer to be used for 
index bc223f8..7a576ac 100644 (file)
    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 /* Use the AAPCS ABI by default.  */
index 2ac8c8d..f14c766 100644 (file)
    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 #ifndef OBJECT_FORMAT_ELF
index 5dc3328..2bf361a 100644 (file)
    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 /* elfos.h should have already been included.  Now just override
index 52a739c..1dd0437 100644 (file)
    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 /* This is how we tell the assembler that a symbol is weak.
index 9deda96..645551f 100644 (file)
    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 /* Run-time Target Specification.  */
index b5055ce..4d57d13 100644 (file)
    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 /* Override settings that are different to the uclinux-elf or
index 5cd4fe5..43edba7 100644 (file)
    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 /* We don't want a PLT.  */
index 8bef16b..faf8472 100644 (file)
@@ -17,8 +17,13 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 
index 3cf2fcd..483a303 100644 (file)
@@ -291,7 +291,7 @@ AVR_MCU ("atxmega192a3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega192A3__
 AVR_MCU ("atxmega192d3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega192D3__",     0x2000, 4, "x192d3")
 AVR_MCU ("atxmega256a3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256A3__",     0x2000, 5, "x256a3")
 AVR_MCU ("atxmega256a3b",    ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256A3B__",    0x2000, 5, "x256a3b")
-AVR_MCU ("atxmega256a3bu",   ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega258A3BU__",   0x2000, 5, "x256a3bu")
+AVR_MCU ("atxmega256a3bu",   ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256A3BU__",   0x2000, 5, "x256a3bu")
 AVR_MCU ("atxmega256d3",     ARCH_AVRXMEGA6, AVR_ISA_NONE, "__AVR_ATxmega256D3__",     0x2000, 5, "x256d3")
 AVR_MCU ("atxmega128a3u",    ARCH_AVRXMEGA6, AVR_ISA_RMW, "__AVR_ATxmega128A3U__",    0x2000, 3, "x128a3u")
 AVR_MCU ("atxmega128b1",     ARCH_AVRXMEGA6, AVR_ISA_RMW,  "__AVR_ATxmega128B1__",     0x2000, 3, "x128b1")
index 99644ec..fa979df 100644 (file)
@@ -2353,6 +2353,12 @@ avr_notice_update_cc (rtx body ATTRIBUTE_UNUSED, rtx insn)
         }
       break;
 
+    case CC_SET_VZN:
+      /* Insn like INC, DEC, NEG that set Z,N,V.  We currently don't make use
+         of this combination, cf. also PR61055.  */
+      CC_STATUS_INIT;
+      break;
+
     case CC_SET_CZN:
       /* Insn sets the Z,N,C flags of CC to recog_operand[0].
          The V flag may or may not be known but that's ok because
@@ -3987,7 +3993,7 @@ avr_out_store_psi (rtx insn, rtx *op, int *plen)
                                 "std Y+61,%A1"    CR_TAB
                                 "std Y+62,%B1"    CR_TAB
                                 "std Y+63,%C1"    CR_TAB
-                                "sbiw r28,%o0-60", op, plen, -5);
+                                "sbiw r28,%o0-61", op, plen, -5);
 
           return avr_asm_len ("subi r28,lo8(-%o0)" CR_TAB
                               "sbci r29,hi8(-%o0)" CR_TAB
@@ -6284,7 +6290,7 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc,
 
   if (REG_P (xop[2]))
     {
-      *pcc = MINUS == code ? (int) CC_SET_CZN : (int) CC_SET_N;
+      *pcc = MINUS == code ? (int) CC_SET_CZN : (int) CC_CLOBBER;
 
       for (i = 0; i < n_bytes; i++)
         {
@@ -6393,7 +6399,7 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc,
                                op, plen, 1);
 
                   if (n_bytes == 2 && PLUS == code)
-                    *pcc = CC_SET_ZN;
+                    *pcc = CC_SET_CZN;
                 }
 
               i++;
@@ -6416,6 +6422,7 @@ avr_out_plus_1 (rtx *xop, int *plen, enum rtx_code code, int *pcc,
         {
           avr_asm_len ((code == PLUS) ^ (val8 == 1) ? "dec %0" : "inc %0",
                        op, plen, 1);
+          *pcc = CC_CLOBBER;
           break;
         }
 
index d7baa4a..2c59bf3 100644 (file)
@@ -90,7 +90,7 @@
 (include "constraints.md")
 
 ;; Condition code settings.
-(define_attr "cc" "none,set_czn,set_zn,set_n,compare,clobber,
+(define_attr "cc" "none,set_czn,set_zn,set_vzn,set_n,compare,clobber,
                    plus,ldi"
   (const_string "none"))
 
        inc %0\;inc %0
        dec %0\;dec %0"
   [(set_attr "length" "1,1,1,1,2,2")
-   (set_attr "cc" "set_czn,set_czn,set_zn,set_zn,set_zn,set_zn")])
+   (set_attr "cc" "set_czn,set_czn,set_vzn,set_vzn,set_vzn,set_vzn")])
 
 ;; "addhi3"
 ;; "addhq3" "adduhq3"
        dec %0\;dec %0
        inc %0\;inc %0"
   [(set_attr "length" "1,1,1,1,2,2")
-   (set_attr "cc" "set_czn,set_czn,set_zn,set_zn,set_zn,set_zn")])
+   (set_attr "cc" "set_czn,set_czn,set_vzn,set_vzn,set_vzn,set_vzn")])
 
 ;; "subhi3"
 ;; "subhq3" "subuhq3"
   ""
   "neg %0"
   [(set_attr "length" "1")
-   (set_attr "cc" "set_zn")])
+   (set_attr "cc" "set_vzn")])
 
 (define_insn "*negqihi2"
   [(set (match_operand:HI 0 "register_operand"                        "=r")
index 1b68bcd..8173bb0 100644 (file)
@@ -13,8 +13,13 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 /* This file causes gcc to prefer using DBX (stabs) debugging
index ef18f24..2d4a280 100644 (file)
@@ -3128,7 +3128,7 @@ ix86_option_override_internal (bool main_args_p,
   (PTA_SANDYBRIDGE | PTA_FSGSBASE | PTA_RDRND | PTA_F16C)
 #define PTA_HASWELL \
   (PTA_IVYBRIDGE | PTA_AVX2 | PTA_BMI | PTA_BMI2 | PTA_LZCNT \
-   | PTA_FMA | PTA_MOVBE | PTA_RTM | PTA_HLE)
+   | PTA_FMA | PTA_MOVBE | PTA_HLE)
 #define PTA_BROADWELL \
   (PTA_HASWELL | PTA_ADX | PTA_PRFCHW | PTA_RDSEED)
 #define PTA_BONNELL \
@@ -24151,8 +24151,13 @@ ix86_expand_set_or_movmem (rtx dst, rtx src, rtx count_exp, rtx val_exp,
     align = MEM_ALIGN (dst) / BITS_PER_UNIT;
 
   if (CONST_INT_P (count_exp))
-    min_size = max_size = probable_max_size = count = expected_size
-      = INTVAL (count_exp);
+    {
+      min_size = max_size = probable_max_size = count = expected_size
+       = INTVAL (count_exp);
+      /* When COUNT is 0, there is nothing to do.  */
+      if (!count)
+       return true;
+    }
   else
     {
       if (min_size_exp)
@@ -24161,7 +24166,7 @@ ix86_expand_set_or_movmem (rtx dst, rtx src, rtx count_exp, rtx val_exp,
        max_size = INTVAL (max_size_exp);
       if (probable_max_size_exp)
        probable_max_size = INTVAL (probable_max_size_exp);
-      if (CONST_INT_P (expected_size_exp) && count == 0)
+      if (CONST_INT_P (expected_size_exp))
        expected_size = INTVAL (expected_size_exp);
      }
 
@@ -37797,10 +37802,10 @@ ix86_rtx_costs (rtx x, int code_i, int outer_code_i, int opno, int *total,
       else if (TARGET_64BIT && !x86_64_zext_immediate_operand (x, VOIDmode))
        *total = 2;
       else if (flag_pic && SYMBOLIC_CONST (x)
-              && (!TARGET_64BIT
-                  || (!GET_CODE (x) != LABEL_REF
-                      && (GET_CODE (x) != SYMBOL_REF
-                          || !SYMBOL_REF_LOCAL_P (x)))))
+              && !(TARGET_64BIT
+                   && (GET_CODE (x) == LABEL_REF
+                       || (GET_CODE (x) == SYMBOL_REF
+                           && SYMBOL_REF_LOCAL_P (x)))))
        *total = 1;
       else
        *total = 0;
index 9f103cf..fde0a93 100644 (file)
        (const_string "1")
        (const_string "*")))
    (set (attr "mode")
-        (cond [(eq_attr "alternative" "3,4,9,10,13,14,15")
+        (cond [(eq_attr "alternative" "3,4,9,10,12,13,14,15")
                 (const_string "SI")
               (eq_attr "alternative" "11")
                 (const_string "DI")
index f7ae836..67e66f6 100644 (file)
    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 #ifdef HAVE_INITFINI_ARRAY_SUPPORT
index c844aa2..9eb1409 100644 (file)
@@ -730,6 +730,97 @@ msp430_get_raw_result_mode (int regno ATTRIBUTE_UNUSED)
 {
   return Pmode;
 }
+
+#undef  TARGET_GIMPLIFY_VA_ARG_EXPR
+#define TARGET_GIMPLIFY_VA_ARG_EXPR msp430_gimplify_va_arg_expr
+
+#include "gimplify.h"
+#include "gimple-expr.h"
+
+static tree
+msp430_gimplify_va_arg_expr (tree valist, tree type, gimple_seq *pre_p,
+                         gimple_seq *post_p)
+{
+  tree addr, t, type_size, rounded_size, valist_tmp;
+  unsigned HOST_WIDE_INT align, boundary;
+  bool indirect;
+
+  indirect = pass_by_reference (NULL, TYPE_MODE (type), type, false);
+  if (indirect)
+    type = build_pointer_type (type);
+
+  align = PARM_BOUNDARY / BITS_PER_UNIT;
+  boundary = targetm.calls.function_arg_boundary (TYPE_MODE (type), type);
+
+  /* When we align parameter on stack for caller, if the parameter
+     alignment is beyond MAX_SUPPORTED_STACK_ALIGNMENT, it will be
+     aligned at MAX_SUPPORTED_STACK_ALIGNMENT.  We will match callee
+     here with caller.  */
+  if (boundary > MAX_SUPPORTED_STACK_ALIGNMENT)
+    boundary = MAX_SUPPORTED_STACK_ALIGNMENT;
+
+  boundary /= BITS_PER_UNIT;
+
+  /* Hoist the valist value into a temporary for the moment.  */
+  valist_tmp = get_initialized_tmp_var (valist, pre_p, NULL);
+
+  /* va_list pointer is aligned to PARM_BOUNDARY.  If argument actually
+     requires greater alignment, we must perform dynamic alignment.  */
+  if (boundary > align
+      && !integer_zerop (TYPE_SIZE (type)))
+    {
+      /* FIXME: This is where this function diverts from targhooks.c:
+        std_gimplify_va_arg_expr().  It works, but I do not know why...  */
+      if (! POINTER_TYPE_P (type))
+       {
+         t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist_tmp,
+                     fold_build_pointer_plus_hwi (valist_tmp, boundary - 1));
+         gimplify_and_add (t, pre_p);
+
+         t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist_tmp,
+                     fold_build2 (BIT_AND_EXPR, TREE_TYPE (valist),
+                                  valist_tmp,
+                                  build_int_cst (TREE_TYPE (valist), -boundary)));
+         gimplify_and_add (t, pre_p);
+       }
+    }
+  else
+    boundary = align;
+
+  /* If the actual alignment is less than the alignment of the type,
+     adjust the type accordingly so that we don't assume strict alignment
+     when dereferencing the pointer.  */
+  boundary *= BITS_PER_UNIT;
+  if (boundary < TYPE_ALIGN (type))
+    {
+      type = build_variant_type_copy (type);
+      TYPE_ALIGN (type) = boundary;
+    }
+
+  /* Compute the rounded size of the type.  */
+  type_size = size_in_bytes (type);
+  rounded_size = round_up (type_size, align);
+
+  /* Reduce rounded_size so it's sharable with the postqueue.  */
+  gimplify_expr (&rounded_size, pre_p, post_p, is_gimple_val, fb_rvalue);
+
+  /* Get AP.  */
+  addr = valist_tmp;
+
+  /* Compute new value for AP.  */
+  t = fold_build_pointer_plus (valist_tmp, rounded_size);
+  t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist, t);
+  gimplify_and_add (t, pre_p);
+
+  addr = fold_convert (build_pointer_type (type), addr);
+
+  if (indirect)
+    addr = build_va_arg_indirect_ref (addr);
+
+  addr = build_va_arg_indirect_ref (addr);
+
+  return addr;
+}
 \f
 /* Addressing Modes */
 
@@ -2185,8 +2276,32 @@ msp430_print_operand (FILE * file, rtx op, int letter)
       msp430_print_operand_addr (file, addr);
       break;
 
-    case CONST_INT:
     case CONST:
+      if (GET_CODE (XEXP (op, 0)) == ZERO_EXTRACT)
+       {
+         op = XEXP (op, 0);
+         switch (INTVAL (XEXP (op, 2)))
+           {
+           case 0:
+             fprintf (file, "#lo (");
+             msp430_print_operand_raw (file, XEXP (op, 0));
+             fprintf (file, ")");
+             break;
+         
+           case 16:
+             fprintf (file, "#hi (");
+             msp430_print_operand_raw (file, XEXP (op, 0));
+             fprintf (file, ")");
+             break;
+
+           default:
+             output_operand_lossage ("invalid zero extract");
+             break;
+           }
+         break;
+       }
+      /* Fall through.  */
+    case CONST_INT:
     case SYMBOL_REF:
     case LABEL_REF:
       if (letter == 0)
index 65d6ad6..044e558 100644 (file)
@@ -55,8 +55,8 @@ extern bool msp430x;
   "%{mcpu=*:-mcpu=%*}%{!mcpu=*:%{mmcu=*:-mmcu=%*}} " /* Pass the CPU type on to the assembler.  */ \
   "%{mrelax=-mQ} " /* Pass the relax option on to the assembler.  */ \
   "%{mlarge:-ml} " /* Tell the assembler if we are building for the LARGE pointer model.  */ \
-  "%{!msim:-md} %{msim:%{mlarge:-md}}" /* Copy data from ROM to RAM if necessary.  */ \
-  "%{ffunction-sections:-gdwarf-sections}" /* If function sections are being created then create DWARF line number sections as well.  */
+  "%{!msim:-md} %{msim:%{mlarge:-md}} " /* Copy data from ROM to RAM if necessary.  */ \
+  "%{ffunction-sections:-gdwarf-sections} " /* If function sections are being created then create DWARF line number sections as well.  */
 
 /* Enable linker section garbage collection by default, unless we
    are creating a relocatable binary (gc does not work) or debugging
index 74a98b4..b5114f9 100644 (file)
 ; halves.
 (define_split
   [(set (match_operand:SI          0 "msp430_nonsubreg_operand")
-       (plus:SI (match_operand:SI 1 "nonimmediate_operand")
-                (match_operand:SI 2 "general_operand")))
+       (plus:SI (match_operand:SI 1 "msp430_nonsubreg_operand")
+                (match_operand:SI 2 "msp430_nonsubreg_or_imm_operand")))
    ]
   ""
   [(parallel [(set (match_operand:HI 3 "nonimmediate_operand" "=&rm")
 ; when the PSI value is negative..
 ;
 ; Note: using PUSHM.A #1 is two bytes smaller than using PUSHX.A....
+;
+; Note: We use a + constraint on operand 0 as otherwise GCC gets confused
+; about extending a single PSI mode register into a pair of SImode registers
+; with the same starting register.  It thinks that the upper register of
+; the pair is unused and so it can clobber it.  Try compiling 20050826-2.c
+; at -O2 to see this.
 
 (define_insn "zero_extendpsisi2"
-  [(set (match_operand:SI                  0 "register_operand" "=r")
+  [(set (match_operand:SI                  0 "register_operand" "+r")
        (zero_extend:SI (match_operand:PSI 1 "register_operand" "r")))]
   ""
   "*
   ""
   "*
     if (REGNO (operands[0]) != REGNO (operands[1]))
-      return \"MOV.W\t%1, %0 { SUB.W\t#0, %0 { AND.W\t%2, %0\";
+      return \"MOV.W\t%1, %0 { INV.W\t%0 { INC.W\t%0 { AND.W\t%2, %0\";
     else
-      return \"SUB.W\t#0, %0 { AND.W\t%2, %0\";
+      return \"INV.W\t%0 { INC.W\t%0 { AND.W\t%2, %0\";
   "
   )
 
index 9a8e2da..94a628c 100644 (file)
 (define_predicate "msp430_nonsubreg_operand"
   (match_code "reg,mem"))
 
+(define_predicate "msp430_nonsubreg_or_imm_operand"
+  (ior (match_operand 0 "msp430_nonsubreg_operand")
+       (match_operand 0 "immediate_operand")))
+
 ; TRUE for constants which are bit positions for zero_extract
 (define_predicate "msp430_bitpos"
   (and (match_code "const_int")
index f4a78a5..47445e4 100644 (file)
@@ -13,8 +13,13 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 /* newlib uses 32-bit long in certain cases for all non-SPU
index 9dbb499..ca7f7fd 100644 (file)
                             (const_int 0)]
                            UNSPECV_HTM_TABORTWCI))
    (set (subreg:CC (match_dup 2) 0) (match_dup 1))
-   (set (match_dup 3) (lshiftrt:SI (match_dup 2) (const_int 24)))
+   (set (match_dup 3) (lshiftrt:SI (match_dup 2) (const_int 28)))
    (parallel [(set (match_operand:SI 0 "int_reg_operand" "")
                   (and:SI (match_dup 3) (const_int 15)))
               (clobber (scratch:CC))])]
index 38dc066..bf7fe3a 100644 (file)
@@ -46,12 +46,17 @@ extern "C" {
 
 typedef char TM_buff_type[16];
 
+/* Compatibility macro with s390.  This macro can be used to determine
+   whether a transaction was successfully started from the __TM_begin()
+   and __TM_simple_begin() intrinsic functions below.  */
+#define _HTM_TBEGIN_STARTED     1
+
 extern __inline long
 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
 __TM_simple_begin (void)
 {
   if (__builtin_expect (__builtin_tbegin (0), 1))
-    return 1;
+    return _HTM_TBEGIN_STARTED;
   return 0;
 }
 
@@ -61,7 +66,7 @@ __TM_begin (void* const TM_buff)
 {
   *_TEXASRL_PTR (TM_buff) = 0;
   if (__builtin_expect (__builtin_tbegin (0), 1))
-    return 1;
+    return _HTM_TBEGIN_STARTED;
 #ifdef __powerpc64__
   *_TEXASR_PTR (TM_buff) = __builtin_get_texasr ();
 #else
index 16793f5..8e15bdf 100644 (file)
 #define BU_MISC_1(ENUM, NAME, ATTR, ICODE)                             \
   RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM,             /* ENUM */      \
                    "__builtin_" NAME,                  /* NAME */      \
-                   RS6000_BTM_ALWAYS,                  /* MASK */      \
+                   RS6000_BTM_HARD_FLOAT,              /* MASK */      \
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
                     | RS6000_BTC_UNARY),                               \
                    CODE_FOR_ ## ICODE)                 /* ICODE */
 #define BU_MISC_2(ENUM, NAME, ATTR, ICODE)                             \
   RS6000_BUILTIN_2 (MISC_BUILTIN_ ## ENUM,             /* ENUM */      \
                    "__builtin_" NAME,                  /* NAME */      \
-                   RS6000_BTM_ALWAYS,                  /* MASK */      \
+                   RS6000_BTM_HARD_FLOAT,              /* MASK */      \
                    (RS6000_BTC_ ## ATTR                /* ATTR */      \
                     | RS6000_BTC_BINARY),                              \
                    CODE_FOR_ ## ICODE)                 /* ICODE */
index f4b34a2..fcb884f 100644 (file)
@@ -3036,7 +3036,8 @@ rs6000_builtin_mask_calculate (void)
          | ((TARGET_P8_VECTOR)             ? RS6000_BTM_P8_VECTOR : 0)
          | ((TARGET_CRYPTO)                ? RS6000_BTM_CRYPTO    : 0)
          | ((TARGET_HTM)                   ? RS6000_BTM_HTM       : 0)
-         | ((TARGET_DFP)                   ? RS6000_BTM_DFP       : 0));
+         | ((TARGET_DFP)                   ? RS6000_BTM_DFP       : 0)
+         | ((TARGET_HARD_FLOAT)            ? RS6000_BTM_HARD_FLOAT : 0));
 }
 
 /* Override command line options.  Mostly we process the processor type and
@@ -3393,6 +3394,13 @@ rs6000_option_override_internal (bool global_init_p)
       rs6000_isa_flags &= ~OPTION_MASK_VSX_TIMODE;
     }
 
+  if (TARGET_DFP && !TARGET_HARD_FLOAT)
+    {
+      if (rs6000_isa_flags_explicit & OPTION_MASK_DFP)
+       error ("-mhard-dfp requires -mhard-float");
+      rs6000_isa_flags &= ~OPTION_MASK_DFP;
+    }
+
   /* The quad memory instructions only works in 64-bit mode. In 32-bit mode,
      silently turn off quad memory mode.  */
   if ((TARGET_QUAD_MEMORY || TARGET_QUAD_MEMORY_ATOMIC) && !TARGET_POWERPC64)
@@ -6110,7 +6118,8 @@ mem_operand_gpr (rtx op, enum machine_mode mode)
     return false;
 
   extra = GET_MODE_SIZE (mode) - UNITS_PER_WORD;
-  gcc_assert (extra >= 0);
+  if (extra < 0)
+    extra = 0;
 
   if (GET_CODE (addr) == LO_SUM)
     /* For lo_sum addresses, we must allow any offset except one that
@@ -13556,6 +13565,8 @@ rs6000_invalid_builtin (enum rs6000_builtins fncode)
     error ("Builtin function %s requires the -mhard-dfp option", name);
   else if ((fnmask & RS6000_BTM_P8_VECTOR) != 0)
     error ("Builtin function %s requires the -mpower8-vector option", name);
+  else if ((fnmask & RS6000_BTM_HARD_FLOAT) != 0)
+    error ("Builtin function %s requires the -mhard-float option", name);
   else
     error ("Builtin function %s is not supported with the current options",
           name);
@@ -13744,7 +13755,10 @@ rs6000_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
        return ret;
     }  
 
-  gcc_assert (TARGET_ALTIVEC || TARGET_VSX || TARGET_SPE || TARGET_PAIRED_FLOAT);
+  unsigned attr = rs6000_builtin_info[uns_fcode].attr & RS6000_BTC_TYPE_MASK;
+  gcc_assert (attr == RS6000_BTC_UNARY
+             || attr == RS6000_BTC_BINARY
+             || attr == RS6000_BTC_TERNARY);
 
   /* Handle simple unary operations.  */
   d = bdesc_1arg;
@@ -31299,6 +31313,7 @@ static struct rs6000_opt_mask const rs6000_builtin_mask_names[] =
   { "crypto",           RS6000_BTM_CRYPTO,     false, false },
   { "htm",              RS6000_BTM_HTM,        false, false },
   { "hard-dfp",                 RS6000_BTM_DFP,        false, false },
+  { "hard-float",       RS6000_BTM_HARD_FLOAT, false, false },
 };
 
 /* Option variables that we want to support inside attribute((target)) and
index 5a96beb..21330dc 100644 (file)
@@ -624,7 +624,8 @@ extern int rs6000_vector_align[];
                                      || TARGET_CMPB      /* ISA 2.05 */ \
                                      || TARGET_POPCNTD   /* ISA 2.06 */ \
                                      || TARGET_ALTIVEC                  \
-                                     || TARGET_VSX)))
+                                     || TARGET_VSX                      \
+                                     || TARGET_HARD_FLOAT)))
 
 /* E500 cores only support plain "sync", not lwsync.  */
 #define TARGET_NO_LWSYNC (rs6000_cpu == PROCESSOR_PPC8540 \
@@ -2517,6 +2518,7 @@ extern int frame_pointer_needed;
 #define RS6000_BTM_POPCNTD     MASK_POPCNTD    /* Target supports ISA 2.06.  */
 #define RS6000_BTM_CELL                MASK_FPRND      /* Target is cell powerpc.  */
 #define RS6000_BTM_DFP         MASK_DFP        /* Decimal floating point.  */
+#define RS6000_BTM_HARD_FLOAT  MASK_SOFT_FLOAT /* Hardware floating point.  */
 
 #define RS6000_BTM_COMMON      (RS6000_BTM_ALTIVEC                     \
                                 | RS6000_BTM_VSX                       \
@@ -2529,7 +2531,8 @@ extern int frame_pointer_needed;
                                 | RS6000_BTM_HTM                       \
                                 | RS6000_BTM_POPCNTD                   \
                                 | RS6000_BTM_CELL                      \
-                                | RS6000_BTM_DFP)
+                                | RS6000_BTM_DFP                       \
+                                | RS6000_BTM_HARD_FLOAT)
 
 /* Define builtin enum index.  */
 
index e853bc4..d737195 100644 (file)
 
 (define_insn "*extendsidi2_lfiwax"
   [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r,??wm,!wl,!wu")
-       (sign_extend:DI (match_operand:SI 1 "lwa_operand" "m,r,r,Z,Z")))]
+       (sign_extend:DI (match_operand:SI 1 "lwa_operand" "Y,r,r,Z,Z")))]
   "TARGET_POWERPC64 && TARGET_LFIWAX"
   "@
    lwa%U1%X1 %0,%1
 
 (define_insn "*extendsidi2_nocell"
   [(set (match_operand:DI 0 "gpc_reg_operand" "=r,r")
-       (sign_extend:DI (match_operand:SI 1 "lwa_operand" "m,r")))]
+       (sign_extend:DI (match_operand:SI 1 "lwa_operand" "Y,r")))]
   "TARGET_POWERPC64 && rs6000_gen_cell_microcode && !TARGET_LFIWAX"
   "@
    lwa%U1%X1 %0,%1
index 3da27c5..f14aed3 100644 (file)
@@ -13,8 +13,13 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
+Under Section 7 of GPL version 3, you are granted additional
+permissions described in the GCC Runtime Library Exception, version
+3.1, as published by the Free Software Foundation.
+
+You should have received a copy of the GNU General Public License and
+a copy of the GCC Runtime Library Exception along with this program;
+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 <http://www.gnu.org/licenses/>.  */
 
 /* The system headers under RTEMS are C++-aware.  */
diff --git a/gcc/config/sol2-clearcap.map b/gcc/config/sol2-clearcap.map
new file mode 100644 (file)
index 0000000..2d880c9
--- /dev/null
@@ -0,0 +1,2 @@
+# Clear all hardware capabilities emitted by Sun as.
+hwcap_1 = V0x0 OVERRIDE;
diff --git a/gcc/config/sol2-clearcapv2.map b/gcc/config/sol2-clearcapv2.map
new file mode 100644 (file)
index 0000000..3c0cace
--- /dev/null
@@ -0,0 +1,7 @@
+# Clear all hardware capabilities emitted by Sun as.
+#
+# Uses mapfile v2 syntax which is the only way to clear AT_SUN_CAP_HW2 flags.
+$mapfile_version 2
+CAPABILITY {
+  HW = ;
+};
index 2a657db..cab7e6b 100644 (file)
@@ -183,12 +183,21 @@ along with GCC; see the file COPYING3.  If not see
 #define LINK_LIBGCC_MAPFILE_SPEC ""
 #endif
 
+/* Clear hardware capabilities, either explicitly or with OpenMP:
+   #pragma openmp declare simd creates clones for SSE2, AVX, and AVX2.  */
+#ifdef HAVE_LD_CLEARCAP
+#define LINK_CLEARCAP_SPEC " %{mclear-hwcap|fopenmp*:-M %sclearcap.map}"
+#else
+#define LINK_CLEARCAP_SPEC ""
+#endif
+
 #undef  LINK_SPEC
 #define LINK_SPEC \
   "%{h*} %{v:-V} \
    %{!shared:%{!static:%{rdynamic: " RDYNAMIC_SPEC "}}} \
    %{static:-dn -Bstatic} \
-   %{shared:-G -dy %{!mimpure-text:-z text}} " LINK_LIBGCC_MAPFILE_SPEC " \
+   %{shared:-G -dy %{!mimpure-text:-z text}} " \
+   LINK_LIBGCC_MAPFILE_SPEC LINK_CLEARCAP_SPEC " \
    %{symbolic:-Bsymbolic -G -dy -z text} \
    %(link_arch) \
    %{Qy:} %{!Qn:-Qy}"
index a5ae7c5..16a3e5f 100644 (file)
@@ -27,6 +27,10 @@ Driver Joined
 Ym,
 Driver Joined
 
+mclear-hwcap
+Target Report
+Clear hardware capabilities when linking
+
 mimpure-text
 Target Report
 Pass -z text to linker
index 1d63e46..ee2091b 100644 (file)
@@ -69,7 +69,6 @@ extern bool sparc_expand_move (enum machine_mode, rtx *);
 extern void sparc_emit_set_symbolic_const64 (rtx, rtx, rtx);
 extern int sparc_splitdi_legitimate (rtx, rtx);
 extern int sparc_split_regreg_legitimate (rtx, rtx);
-extern int sparc_absnegfloat_split_legitimate (rtx, rtx);
 extern const char *output_ubranch (rtx, rtx);
 extern const char *output_cbranch (rtx, rtx, int, int, int, rtx);
 extern const char *output_return (rtx);
index f52b976..5b00cca 100644 (file)
@@ -8539,22 +8539,6 @@ sparc_split_regreg_legitimate (rtx reg1, rtx reg2)
   return 0;
 }
 
-/* Return 1 if x and y are some kind of REG and they refer to
-   different hard registers.  This test is guaranteed to be
-   run after reload.  */
-
-int
-sparc_absnegfloat_split_legitimate (rtx x, rtx y)
-{
-  if (GET_CODE (x) != REG)
-    return 0;
-  if (GET_CODE (y) != REG)
-    return 0;
-  if (REGNO (x) == REGNO (y))
-    return 0;
-  return 1;
-}
-
 /* Return 1 if REGNO (reg1) is even and REGNO (reg1) == REGNO (reg2) - 1.
    This makes them candidates for using ldd and std insns.
 
index e2a4669..76c3315 100644 (file)
 (define_attr "fptype" "single,double"
   (const_string "single"))
 
+;; FP precision specific to the UT699.
+(define_attr "fptype_ut699" "none,single"
+  (const_string "none"))
+
 ;; UltraSPARC-III integer load type.
 (define_attr "us3load_type" "2cycle,3cycle"
   (const_string "2cycle"))
           (const_string "false")
         (and (eq_attr "fix_ut699" "true")
              (and (eq_attr "type" "fpload,fp,fpmove,fpmul,fpdivs,fpsqrts")
-                  (eq_attr "fptype" "single")))
+                  (ior (eq_attr "fptype" "single")
+                       (eq_attr "fptype_ut699" "single"))))
           (const_string "false")
         (eq_attr "length" "1")
           (const_string "true")
   "TARGET_FPU"
   "fdtos\t%1, %0"
   [(set_attr "type" "fp")
-   (set_attr "fptype" "double")])
+   (set_attr "fptype" "double")
+   (set_attr "fptype_ut699" "single")])
 
 (define_expand "trunctfsf2"
   [(set (match_operand:SF 0 "register_operand" "")
   "TARGET_FPU"
   "fitos\t%1, %0"
   [(set_attr "type" "fp")
-   (set_attr "fptype" "double")])
+   (set_attr "fptype" "single")])
 
 (define_insn "floatsidf2"
   [(set (match_operand:DF 0 "register_operand" "=e")
   "TARGET_FPU"
   "fstoi\t%1, %0"
   [(set_attr "type" "fp")
-   (set_attr "fptype" "double")])
+   (set_attr "fptype" "single")])
 
 (define_insn "fix_truncdfsi2"
   [(set (match_operand:SI 0 "register_operand" "=f")
   "TARGET_FPU"
   "fdtoi\t%1, %0"
   [(set_attr "type" "fp")
-   (set_attr "fptype" "double")])
+   (set_attr "fptype" "double")
+   (set_attr "fptype_ut699" "single")])
 
 (define_expand "fix_trunctfsi2"
   [(set (match_operand:SI 0 "register_operand" "")
   [(set_attr "type" "fpdivs")])
 
 (define_expand "negtf2"
-  [(set (match_operand:TF 0 "register_operand" "=e,e")
-       (neg:TF (match_operand:TF 1 "register_operand" "0,e")))]
+  [(set (match_operand:TF 0 "register_operand" "")
+       (neg:TF (match_operand:TF 1 "register_operand" "")))]
   "TARGET_FPU"
   "")
 
-(define_insn_and_split "*negtf2_notv9"
-  [(set (match_operand:TF 0 "register_operand" "=e,e")
-       (neg:TF (match_operand:TF 1 "register_operand" "0,e")))]
-  ; We don't use quad float insns here so we don't need TARGET_HARD_QUAD.
-  "TARGET_FPU
-   && ! TARGET_V9"
-  "@
-  fnegs\t%0, %0
-  #"
-  "&& reload_completed
-   && sparc_absnegfloat_split_legitimate (operands[0], operands[1])"
-  [(set (match_dup 2) (neg:SF (match_dup 3)))
-   (set (match_dup 4) (match_dup 5))
-   (set (match_dup 6) (match_dup 7))]
-  "operands[2] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]));
-   operands[3] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]));
-   operands[4] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]) + 1);
-   operands[5] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]) + 1);
-   operands[6] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]) + 2);
-   operands[7] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]) + 2);"
-  [(set_attr "type" "fpmove,*")
-   (set_attr "length" "*,2")])
-
-(define_insn_and_split "*negtf2_v9"
-  [(set (match_operand:TF 0 "register_operand" "=e,e")
-       (neg:TF (match_operand:TF 1 "register_operand" "0,e")))]
-  ; We don't use quad float insns here so we don't need TARGET_HARD_QUAD.
-  "TARGET_FPU && TARGET_V9"
-  "@
-  fnegd\t%0, %0
-  #"
-  "&& reload_completed
-   && sparc_absnegfloat_split_legitimate (operands[0], operands[1])"
-  [(set (match_dup 2) (neg:DF (match_dup 3)))
-   (set (match_dup 4) (match_dup 5))]
-  "operands[2] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]));
-   operands[3] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]));
-   operands[4] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]) + 2);
-   operands[5] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]) + 2);"
-  [(set_attr "type" "fpmove,*")
-   (set_attr "length" "*,2")
-   (set_attr "fptype" "double")])
+(define_insn "*negtf2_hq"
+  [(set (match_operand:TF 0 "register_operand" "=e")
+       (neg:TF (match_operand:TF 1 "register_operand" "e")))]
+  "TARGET_FPU && TARGET_HARD_QUAD"
+  "fnegq\t%1, %0"
+  [(set_attr "type" "fpmove")])
+
+(define_insn_and_split "*negtf2"
+  [(set (match_operand:TF 0 "register_operand" "=e")
+       (neg:TF (match_operand:TF 1 "register_operand" "e")))]
+  "TARGET_FPU && !TARGET_HARD_QUAD"
+  "#"
+  "&& reload_completed"
+  [(clobber (const_int 0))]
+{
+  rtx set_dest = operands[0];
+  rtx set_src = operands[1];
+  rtx dest1, dest2;
+  rtx src1, src2;
+
+  dest1 = gen_df_reg (set_dest, 0);
+  dest2 = gen_df_reg (set_dest, 1);
+  src1 = gen_df_reg (set_src, 0);
+  src2 = gen_df_reg (set_src, 1);
+
+  /* Now emit using the real source and destination we found, swapping
+     the order if we detect overlap.  */
+  if (reg_overlap_mentioned_p (dest1, src2))
+    {
+      emit_insn (gen_movdf (dest2, src2));
+      emit_insn (gen_negdf2 (dest1, src1));
+    }
+  else
+    {
+      emit_insn (gen_negdf2 (dest1, src1));
+      if (REGNO (dest2) != REGNO (src2))
+       emit_insn (gen_movdf (dest2, src2));
+    }
+  DONE;
+}
+  [(set_attr "length" "2")])
 
 (define_expand "negdf2"
   [(set (match_operand:DF 0 "register_operand" "")
   "")
 
 (define_insn_and_split "*negdf2_notv9"
-  [(set (match_operand:DF 0 "register_operand" "=e,e")
-       (neg:DF (match_operand:DF 1 "register_operand" "0,e")))]
-  "TARGET_FPU && ! TARGET_V9"
-  "@
-  fnegs\t%0, %0
-  #"
-  "&& reload_completed
-   && sparc_absnegfloat_split_legitimate (operands[0], operands[1])"
-  [(set (match_dup 2) (neg:SF (match_dup 3)))
-   (set (match_dup 4) (match_dup 5))]
-  "operands[2] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]));
-   operands[3] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]));
-   operands[4] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]) + 1);
-   operands[5] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]) + 1);"
-  [(set_attr "type" "fpmove,*")
-   (set_attr "length" "*,2")])
+  [(set (match_operand:DF 0 "register_operand" "=e")
+       (neg:DF (match_operand:DF 1 "register_operand" "e")))]
+  "TARGET_FPU && !TARGET_V9"
+  "#"
+  "&& reload_completed"
+  [(clobber (const_int 0))]
+{
+  rtx set_dest = operands[0];
+  rtx set_src = operands[1];
+  rtx dest1, dest2;
+  rtx src1, src2;
+
+  dest1 = gen_highpart (SFmode, set_dest);
+  dest2 = gen_lowpart (SFmode, set_dest);
+  src1 = gen_highpart (SFmode, set_src);
+  src2 = gen_lowpart (SFmode, set_src);
+
+  /* Now emit using the real source and destination we found, swapping
+     the order if we detect overlap.  */
+  if (reg_overlap_mentioned_p (dest1, src2))
+    {
+      emit_insn (gen_movsf (dest2, src2));
+      emit_insn (gen_negsf2 (dest1, src1));
+    }
+  else
+    {
+      emit_insn (gen_negsf2 (dest1, src1));
+      if (REGNO (dest2) != REGNO (src2))
+       emit_insn (gen_movsf (dest2, src2));
+    }
+  DONE;
+}
+  [(set_attr "length" "2")])
 
 (define_insn "*negdf2_v9"
   [(set (match_operand:DF 0 "register_operand" "=e")
   "TARGET_FPU"
   "")
 
-(define_insn_and_split "*abstf2_notv9"
-  [(set (match_operand:TF 0 "register_operand" "=e,e")
-       (abs:TF (match_operand:TF 1 "register_operand" "0,e")))]
-  ; We don't use quad float insns here so we don't need TARGET_HARD_QUAD.
-  "TARGET_FPU && ! TARGET_V9"
-  "@
-  fabss\t%0, %0
-  #"
-  "&& reload_completed
-   && sparc_absnegfloat_split_legitimate (operands[0], operands[1])"
-  [(set (match_dup 2) (abs:SF (match_dup 3)))
-   (set (match_dup 4) (match_dup 5))
-   (set (match_dup 6) (match_dup 7))]
-  "operands[2] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]));
-   operands[3] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]));
-   operands[4] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]) + 1);
-   operands[5] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]) + 1);
-   operands[6] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]) + 2);
-   operands[7] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]) + 2);"
-  [(set_attr "type" "fpmove,*")
-   (set_attr "length" "*,2")])
-
-(define_insn "*abstf2_hq_v9"
-  [(set (match_operand:TF 0 "register_operand" "=e,e")
-       (abs:TF (match_operand:TF 1 "register_operand" "0,e")))]
-  "TARGET_FPU && TARGET_V9 && TARGET_HARD_QUAD"
-  "@
-  fabsd\t%0, %0
-  fabsq\t%1, %0"
-  [(set_attr "type" "fpmove")
-   (set_attr "fptype" "double,*")])
+(define_insn "*abstf2_hq"
+  [(set (match_operand:TF 0 "register_operand" "=e")
+       (abs:TF (match_operand:TF 1 "register_operand" "e")))]
+  "TARGET_FPU && TARGET_HARD_QUAD"
+  "fabsq\t%1, %0"
+  [(set_attr "type" "fpmove")])
 
-(define_insn_and_split "*abstf2_v9"
-  [(set (match_operand:TF 0 "register_operand" "=e,e")
-       (abs:TF (match_operand:TF 1 "register_operand" "0,e")))]
-  "TARGET_FPU && TARGET_V9 && !TARGET_HARD_QUAD"
-  "@
-  fabsd\t%0, %0
-  #"
-  "&& reload_completed
-   && sparc_absnegfloat_split_legitimate (operands[0], operands[1])"
-  [(set (match_dup 2) (abs:DF (match_dup 3)))
-   (set (match_dup 4) (match_dup 5))]
-  "operands[2] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]));
-   operands[3] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]));
-   operands[4] = gen_rtx_raw_REG (DFmode, REGNO (operands[0]) + 2);
-   operands[5] = gen_rtx_raw_REG (DFmode, REGNO (operands[1]) + 2);"
-  [(set_attr "type" "fpmove,*")
-   (set_attr "length" "*,2")
-   (set_attr "fptype" "double,*")])
+(define_insn_and_split "*abstf2"
+  [(set (match_operand:TF 0 "register_operand" "=e")
+       (abs:TF (match_operand:TF 1 "register_operand" "e")))]
+  "TARGET_FPU && !TARGET_HARD_QUAD"
+  "#"
+  "&& reload_completed"
+  [(clobber (const_int 0))]
+{
+  rtx set_dest = operands[0];
+  rtx set_src = operands[1];
+  rtx dest1, dest2;
+  rtx src1, src2;
+
+  dest1 = gen_df_reg (set_dest, 0);
+  dest2 = gen_df_reg (set_dest, 1);
+  src1 = gen_df_reg (set_src, 0);
+  src2 = gen_df_reg (set_src, 1);
+
+  /* Now emit using the real source and destination we found, swapping
+     the order if we detect overlap.  */
+  if (reg_overlap_mentioned_p (dest1, src2))
+    {
+      emit_insn (gen_movdf (dest2, src2));
+      emit_insn (gen_absdf2 (dest1, src1));
+    }
+  else
+    {
+      emit_insn (gen_absdf2 (dest1, src1));
+      if (REGNO (dest2) != REGNO (src2))
+       emit_insn (gen_movdf (dest2, src2));
+    }
+  DONE;
+}
+  [(set_attr "length" "2")])
 
 (define_expand "absdf2"
   [(set (match_operand:DF 0 "register_operand" "")
   "")
 
 (define_insn_and_split "*absdf2_notv9"
-  [(set (match_operand:DF 0 "register_operand" "=e,e")
-       (abs:DF (match_operand:DF 1 "register_operand" "0,e")))]
-  "TARGET_FPU && ! TARGET_V9"
-  "@
-  fabss\t%0, %0
-  #"
-  "&& reload_completed
-   && sparc_absnegfloat_split_legitimate (operands[0], operands[1])"
-  [(set (match_dup 2) (abs:SF (match_dup 3)))
-   (set (match_dup 4) (match_dup 5))]
-  "operands[2] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]));
-   operands[3] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]));
-   operands[4] = gen_rtx_raw_REG (SFmode, REGNO (operands[0]) + 1);
-   operands[5] = gen_rtx_raw_REG (SFmode, REGNO (operands[1]) + 1);"
-  [(set_attr "type" "fpmove,*")
-   (set_attr "length" "*,2")])
+  [(set (match_operand:DF 0 "register_operand" "=e")
+       (abs:DF (match_operand:DF 1 "register_operand" "e")))]
+  "TARGET_FPU && !TARGET_V9"
+  "#"
+  "&& reload_completed"
+  [(clobber (const_int 0))]
+{
+  rtx set_dest = operands[0];
+  rtx set_src = operands[1];
+  rtx dest1, dest2;
+  rtx src1, src2;
+
+  dest1 = gen_highpart (SFmode, set_dest);
+  dest2 = gen_lowpart (SFmode, set_dest);
+  src1 = gen_highpart (SFmode, set_src);
+  src2 = gen_lowpart (SFmode, set_src);
+
+  /* Now emit using the real source and destination we found, swapping
+     the order if we detect overlap.  */
+  if (reg_overlap_mentioned_p (dest1, src2))
+    {
+      emit_insn (gen_movsf (dest2, src2));
+      emit_insn (gen_abssf2 (dest1, src1));
+    }
+  else
+    {
+      emit_insn (gen_abssf2 (dest1, src1));
+      if (REGNO (dest2) != REGNO (src2))
+       emit_insn (gen_movsf (dest2, src2));
+    }
+  DONE;
+}
+  [(set_attr "length" "2")])
 
 (define_insn "*absdf2_v9"
   [(set (match_operand:DF 0 "register_operand" "=e")
index a4c4af4..25feb04 100644 (file)
@@ -35,3 +35,10 @@ sol2-stubs.o: $(srcdir)/config/sol2-stubs.c
 sol2.o: $(srcdir)/config/sol2.c
        $(COMPILE) $<
        $(POSTCOMPILE)
+
+# Install clearcap.map if present.
+install: install-clearcap-map
+
+# Ignore failures: file only exists if linker supports it.
+install-clearcap-map:
+       -$(INSTALL_DATA) clearcap.map $(DESTDIR)$(libdir)
index 01dff3e..42ebb9f 100644 (file)
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 /* Specify predefined symbols in preprocessor.  */
index a91b1b0..c3d9b7a 100644 (file)
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 #ifndef V850_OPTS_H
index 92db20a..6ccdc5d 100644 (file)
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
 
-   You should have received a copy of the GNU General Public License
-   along with GCC; see the file COPYING3.  If not see
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
+   You should have received a copy of the GNU General Public License and
+   a copy of the GCC Runtime Library Exception along with this program;
+   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 #ifndef GCC_V850_H
index 9238e8a..40b7bca 100755 (executable)
@@ -27057,6 +27057,34 @@ _ACEOF
 
 fi
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking linker mapfile support for clearing hardware capabilities" >&5
+$as_echo_n "checking linker mapfile support for clearing hardware capabilities... " >&6; }
+saved_LDFLAGS="$LDFLAGS"
+for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
+  LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+int main(void) {return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  gcc_cv_ld_clearcap=yes; break
+else
+  gcc_cv_ld_clearcap=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+done
+LDFLAGS="$saved_LDFLAGS"
+if test "x$gcc_cv_ld_clearcap" = xyes; then
+
+$as_echo "#define HAVE_LD_CLEARCAP 1" >>confdefs.h
+
+  ac_config_links="$ac_config_links clearcap.map:${srcdir}/config/$clearcap_map"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_ld_clearcap" >&5
+$as_echo "$gcc_cv_ld_clearcap" >&6; }
+
 case "$target:$tm_file" in
   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
   case "$target" in
@@ -28586,6 +28614,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 # Files that config.status was made for.
 config_files="$ac_config_files"
 config_headers="$ac_config_headers"
+config_links="$ac_config_links"
 config_commands="$ac_config_commands"
 
 _ACEOF
@@ -28615,6 +28644,9 @@ $config_files
 Configuration headers:
 $config_headers
 
+Configuration links:
+$config_links
+
 Configuration commands:
 $config_commands
 
@@ -28750,6 +28782,7 @@ do
     "as") CONFIG_FILES="$CONFIG_FILES as:exec-tool.in" ;;
     "collect-ld") CONFIG_FILES="$CONFIG_FILES collect-ld:exec-tool.in" ;;
     "nm") CONFIG_FILES="$CONFIG_FILES nm:exec-tool.in" ;;
+    "clearcap.map") CONFIG_LINKS="$CONFIG_LINKS clearcap.map:${srcdir}/config/$clearcap_map" ;;
     "$all_outputs") CONFIG_FILES="$CONFIG_FILES $all_outputs" ;;
     "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
 
@@ -28765,6 +28798,7 @@ done
 if $ac_need_defaults; then
   test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
   test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_LINKS+set}" = set || CONFIG_LINKS=$config_links
   test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
 fi
 
@@ -29086,7 +29120,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 fi # test -n "$CONFIG_HEADERS"
 
 
-eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS"
+eval set X "  :F $CONFIG_FILES  :H $CONFIG_HEADERS  :L $CONFIG_LINKS  :C $CONFIG_COMMANDS"
 shift
 for ac_tag
 do
@@ -29322,7 +29356,38 @@ $as_echo "$as_me: $ac_file is unchanged" >&6;}
       || as_fn_error "could not create -" "$LINENO" 5
   fi
  ;;
+  :L)
+  #
+  # CONFIG_LINK
+  #
+
+  if test "$ac_source" = "$ac_file" && test "$srcdir" = '.'; then
+    :
+  else
+    # Prefer the file from the source tree if names are identical.
+    if test "$ac_source" = "$ac_file" || test ! -r "$ac_source"; then
+      ac_source=$srcdir/$ac_source
+    fi
 
+    { $as_echo "$as_me:${as_lineno-$LINENO}: linking $ac_source to $ac_file" >&5
+$as_echo "$as_me: linking $ac_source to $ac_file" >&6;}
+
+    if test ! -r "$ac_source"; then
+      as_fn_error "$ac_source: file not found" "$LINENO" 5
+    fi
+    rm -f "$ac_file"
+
+    # Try a relative symlink, then a hard link, then a copy.
+    case $srcdir in
+    [\\/$]* | ?:[\\/]* ) ac_rel_source=$ac_source ;;
+       *) ac_rel_source=$ac_top_build_prefix$ac_source ;;
+    esac
+    ln -s "$ac_rel_source" "$ac_file" 2>/dev/null ||
+      ln "$ac_source" "$ac_file" 2>/dev/null ||
+      cp -p "$ac_source" "$ac_file" ||
+      as_fn_error "cannot link or copy $ac_source to $ac_file" "$LINENO" 5
+  fi
+ ;;
   :C)  { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
 $as_echo "$as_me: executing $ac_file commands" >&6;}
  ;;
index 6824f0c..96ea082 100644 (file)
@@ -4806,6 +4806,21 @@ if test x"$gcc_cv_ld_as_needed" = xyes; then
 [Define to the linker option to keep unused dependencies.])
 fi
 
+AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
+saved_LDFLAGS="$LDFLAGS"
+for clearcap_map in sol2-clearcapv2.map sol2-clearcap.map; do
+  LDFLAGS="$saved_LDFLAGS -Wl,-M,${srcdir}/config/$clearcap_map"
+  AC_LINK_IFELSE([int main(void) {return 0;}],
+    [gcc_cv_ld_clearcap=yes; break], [gcc_cv_ld_clearcap=no])
+done
+LDFLAGS="$saved_LDFLAGS"
+if test "x$gcc_cv_ld_clearcap" = xyes; then
+  AC_DEFINE([HAVE_LD_CLEARCAP], 1,
+[Define if the linker supports clearing hardware capabilities via mapfile.])
+  AC_CONFIG_LINKS([clearcap.map:${srcdir}/config/$clearcap_map])
+fi
+AC_MSG_RESULT($gcc_cv_ld_clearcap)
+
 case "$target:$tm_file" in
   powerpc64-*-freebsd* | powerpc64*-*-linux* | powerpc*-*-linux*rs6000/biarch64.h*)
   case "$target" in
index 266547e..7aeede9 100644 (file)
@@ -1,3 +1,33 @@
+2014-05-21  Igor Zamyatin  <igor.zamyatin@intel.com>
+
+       PR c/60189
+       * parser.c (cp_parser_postfix_expression): Move handling of cilk_sync
+       from here to...
+       (cp_parser_statement): ...here. Make sure only semicolon can go after
+       Cilk_sync.
+
+2014-05-13  Jason Merrill  <jason@redhat.com>
+
+       PR c++/61151
+       * lambda.c (is_this): Allow capture proxies too.
+
+       DR 5
+       PR c++/60019
+       * call.c (build_user_type_conversion_1): The copy-init temporary
+       is cv-unqualified.
+
+2014-05-07  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/61083
+       * pt.c (convert_nontype_argument): Protect all the error calls
+       with complain & tf_error.
+
+2014-05-06  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/60999
+       * pt.c (maybe_begin_member_template_processing): Use
+       uses_template_parms.
+
 2014-05-02  Jason Merrill  <jason@redhat.com>
 
        PR c++/60992
index ae0d4ff..39f910d 100644 (file)
@@ -3677,11 +3677,20 @@ build_user_type_conversion_1 (tree totype, tree expr, int flags,
       return cand;
     }
 
+  tree convtype;
+  if (!DECL_CONSTRUCTOR_P (cand->fn))
+    convtype = non_reference (TREE_TYPE (TREE_TYPE (cand->fn)));
+  else if (cand->second_conv->kind == ck_rvalue)
+    /* DR 5: [in the first step of copy-initialization]...if the function
+       is a constructor, the call initializes a temporary of the
+       cv-unqualified version of the destination type. */
+    convtype = cv_unqualified (totype);
+  else
+    convtype = totype;
   /* Build the user conversion sequence.  */
   conv = build_conv
     (ck_user,
-     (DECL_CONSTRUCTOR_P (cand->fn)
-      ? totype : non_reference (TREE_TYPE (TREE_TYPE (cand->fn)))),
+     convtype,
      build_identity_conv (TREE_TYPE (expr), expr));
   conv->cand = cand;
   if (cand->viable == -1)
index 3280644..7bd0de1 100644 (file)
@@ -204,7 +204,8 @@ lambda_function (tree lambda)
 static inline bool
 is_this (tree t)
 {
-  return (TREE_CODE (t) == PARM_DECL
+  return ((TREE_CODE (t) == PARM_DECL
+          || TREE_CODE (t) == VAR_DECL)
          && DECL_NAME (t) == this_identifier);
 }
 
index aa00a7b..06353ce 100644 (file)
@@ -5835,20 +5835,6 @@ cp_parser_postfix_expression (cp_parser *parser, bool address_p, bool cast_p,
          }
        break;
       }
-      
-    case RID_CILK_SYNC:
-      if (flag_cilkplus)
-       { 
-         tree sync_expr = build_cilk_sync ();
-         SET_EXPR_LOCATION (sync_expr, 
-                            cp_lexer_peek_token (parser->lexer)->location);
-         finish_expr_stmt (sync_expr);
-       }
-      else
-       error_at (token->location, "-fcilkplus must be enabled to use" 
-                 " %<_Cilk_sync%>");
-      cp_lexer_consume_token (parser->lexer);
-      break;
 
     case RID_BUILTIN_SHUFFLE:
       {
@@ -9400,6 +9386,24 @@ cp_parser_statement (cp_parser* parser, tree in_statement_expr,
          statement = cp_parser_jump_statement (parser);
          break;
 
+       case RID_CILK_SYNC:
+         cp_lexer_consume_token (parser->lexer);
+         if (flag_cilkplus)
+           {
+             tree sync_expr = build_cilk_sync ();
+             SET_EXPR_LOCATION (sync_expr,
+                                token->location);
+             statement = finish_expr_stmt (sync_expr);
+           }
+         else
+           {
+             error_at (token->location, "-fcilkplus must be enabled to use"
+                       " %<_Cilk_sync%>");
+             statement = error_mark_node;
+           }
+         cp_parser_require (parser, CPP_SEMICOLON, RT_SEMICOLON);
+         break;
+
          /* Objective-C++ exception-handling constructs.  */
        case RID_AT_TRY:
        case RID_AT_CATCH:
index 18389e0..3951997 100644 (file)
@@ -462,9 +462,13 @@ maybe_begin_member_template_processing (tree decl)
   bool nsdmi = TREE_CODE (decl) == FIELD_DECL;
 
   if (nsdmi)
-    decl = (CLASSTYPE_TEMPLATE_INFO (DECL_CONTEXT (decl))
-           ? CLASSTYPE_TI_TEMPLATE (DECL_CONTEXT (decl))
-           : NULL_TREE);
+    {
+      tree ctx = DECL_CONTEXT (decl);
+      decl = (CLASSTYPE_TEMPLATE_INFO (ctx)
+             /* Disregard full specializations (c++/60999).  */
+             && uses_template_parms (ctx)
+             ? CLASSTYPE_TI_TEMPLATE (ctx) : NULL_TREE);
+    }
 
   if (inline_needs_template_parms (decl, nsdmi))
     {
@@ -5817,17 +5821,18 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
        {
          if (VAR_P (expr))
            {
-             error ("%qD is not a valid template argument "
-                    "because %qD is a variable, not the address of "
-                    "a variable",
-                    expr, expr);
+             if (complain & tf_error)
+               error ("%qD is not a valid template argument "
+                      "because %qD is a variable, not the address of "
+                      "a variable", expr, expr);
              return NULL_TREE;
            }
          if (POINTER_TYPE_P (expr_type))
            {
-             error ("%qE is not a valid template argument for %qT "
-                    "because it is not the address of a variable",
-                    expr, type);
+             if (complain & tf_error)
+               error ("%qE is not a valid template argument for %qT "
+                      "because it is not the address of a variable",
+                      expr, type);
              return NULL_TREE;
            }
          /* Other values, like integer constants, might be valid
@@ -5842,23 +5847,24 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
                  ? TREE_OPERAND (expr, 0) : expr);
          if (!VAR_P (decl))
            {
-             error ("%qE is not a valid template argument of type %qT "
-                    "because %qE is not a variable",
-                    expr, type, decl);
+             if (complain & tf_error)
+               error ("%qE is not a valid template argument of type %qT "
+                      "because %qE is not a variable", expr, type, decl);
              return NULL_TREE;
            }
          else if (cxx_dialect < cxx11 && !DECL_EXTERNAL_LINKAGE_P (decl))
            {
-             error ("%qE is not a valid template argument of type %qT "
-                    "because %qD does not have external linkage",
-                    expr, type, decl);
+             if (complain & tf_error)
+               error ("%qE is not a valid template argument of type %qT "
+                      "because %qD does not have external linkage",
+                      expr, type, decl);
              return NULL_TREE;
            }
          else if (cxx_dialect >= cxx11 && decl_linkage (decl) == lk_none)
            {
-             error ("%qE is not a valid template argument of type %qT "
-                    "because %qD has no linkage",
-                    expr, type, decl);
+             if (complain & tf_error)
+               error ("%qE is not a valid template argument of type %qT "
+                      "because %qD has no linkage", expr, type, decl);
              return NULL_TREE;
            }
        }
@@ -5886,15 +5892,17 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
 
       if (!at_least_as_qualified_p (TREE_TYPE (type), expr_type))
        {
-         error ("%qE is not a valid template argument for type %qT "
-                "because of conflicts in cv-qualification", expr, type);
+         if (complain & tf_error)
+           error ("%qE is not a valid template argument for type %qT "
+                  "because of conflicts in cv-qualification", expr, type);
          return NULL_TREE;
        }
 
       if (!real_lvalue_p (expr))
        {
-         error ("%qE is not a valid template argument for type %qT "
-                "because it is not an lvalue", expr, type);
+         if (complain & tf_error)
+           error ("%qE is not a valid template argument for type %qT "
+                  "because it is not an lvalue", expr, type);
          return NULL_TREE;
        }
 
@@ -5910,26 +5918,29 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
          expr = TREE_OPERAND (expr, 0);
          if (DECL_P (expr))
            {
-             error ("%q#D is not a valid template argument for type %qT "
-                    "because a reference variable does not have a constant "
-                    "address", expr, type);
+             if (complain & tf_error)
+               error ("%q#D is not a valid template argument for type %qT "
+                      "because a reference variable does not have a constant "
+                      "address", expr, type);
              return NULL_TREE;
            }
        }
 
       if (!DECL_P (expr))
        {
-         error ("%qE is not a valid template argument for type %qT "
-                "because it is not an object with external linkage",
-                expr, type);
+         if (complain & tf_error)
+           error ("%qE is not a valid template argument for type %qT "
+                  "because it is not an object with external linkage",
+                  expr, type);
          return NULL_TREE;
        }
 
       if (!DECL_EXTERNAL_LINKAGE_P (expr))
        {
-         error ("%qE is not a valid template argument for type %qT "
-                "because object %qD has not external linkage",
-                expr, type, expr);
+         if (complain & tf_error)
+           error ("%qE is not a valid template argument for type %qT "
+                  "because object %qD has not external linkage",
+                  expr, type, expr);
          return NULL_TREE;
        }
 
@@ -5971,9 +5982,13 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
     {
       if (TREE_CODE (expr) == ADDR_EXPR)
        {
-         error ("%qE is not a valid template argument for type %qT "
-                "because it is a pointer", expr, type);
-         inform (input_location, "try using %qE instead", TREE_OPERAND (expr, 0));
+         if (complain & tf_error)
+           {
+             error ("%qE is not a valid template argument for type %qT "
+                    "because it is a pointer", expr, type);
+             inform (input_location, "try using %qE instead",
+                     TREE_OPERAND (expr, 0));
+           }
          return NULL_TREE;
        }
 
@@ -6011,13 +6026,16 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
         provide a superior diagnostic.  */
       if (!same_type_p (TREE_TYPE (expr), type))
        {
-         error ("%qE is not a valid template argument for type %qT "
-                "because it is of type %qT", expr, type,
-                TREE_TYPE (expr));
-         /* If we are just one standard conversion off, explain.  */
-         if (can_convert_standard (type, TREE_TYPE (expr), complain))
-           inform (input_location,
-                   "standard conversions are not allowed in this context");
+         if (complain & tf_error)
+           {
+             error ("%qE is not a valid template argument for type %qT "
+                    "because it is of type %qT", expr, type,
+                    TREE_TYPE (expr));
+             /* If we are just one standard conversion off, explain.  */
+             if (can_convert_standard (type, TREE_TYPE (expr), complain))
+               inform (input_location,
+                       "standard conversions are not allowed in this context");
+           }
          return NULL_TREE;
        }
     }
@@ -6040,8 +6058,9 @@ convert_nontype_argument (tree type, tree expr, tsubst_flags_t complain)
     {
       if (expr != nullptr_node)
        {
-         error ("%qE is not a valid template argument for type %qT "
-                "because it is of type %qT", expr, type, TREE_TYPE (expr));
+         if (complain & tf_error)
+           error ("%qE is not a valid template argument for type %qT "
+                  "because it is of type %qT", expr, type, TREE_TYPE (expr));
          return NULL_TREE;
        }
       return expr;
index 9780d92..23c7b49 100644 (file)
@@ -376,6 +376,8 @@ goto *(&&foo + array[i]);
 This is more friendly to code living in shared libraries, as it reduces
 the number of dynamic relocations that are needed, and by consequence,
 allows the data to be read-only.
+This alternative with label differences is not supported for the AVR target,
+please use the first approach for AVR programs.
 
 The @code{&&foo} expressions for the same label might have different
 values if the containing function is inlined or cloned.  If a program
@@ -11335,7 +11337,7 @@ used. All of them generate the machine instruction that is part of the
 name.
 
 @smallexample
-v32qi __builtin_ia32_mpsadbw256 (v32qi,v32qi,v32qi,int)
+v32qi __builtin_ia32_mpsadbw256 (v32qi,v32qi,int)
 v32qi __builtin_ia32_pabsb256 (v32qi)
 v16hi __builtin_ia32_pabsw256 (v16hi)
 v8si __builtin_ia32_pabsd256 (v8si)
@@ -11570,8 +11572,8 @@ The following built-in functions are available when @option{-mxop} is used.
 @smallexample
 v2df __builtin_ia32_vfrczpd (v2df)
 v4sf __builtin_ia32_vfrczps (v4sf)
-v2df __builtin_ia32_vfrczsd (v2df, v2df)
-v4sf __builtin_ia32_vfrczss (v4sf, v4sf)
+v2df __builtin_ia32_vfrczsd (v2df)
+v4sf __builtin_ia32_vfrczss (v4sf)
 v4df __builtin_ia32_vfrczpd256 (v4df)
 v8sf __builtin_ia32_vfrczps256 (v8sf)
 v2di __builtin_ia32_vpcmov (v2di, v2di, v2di)
index 5b7ce1a..9d8ffc0 100644 (file)
@@ -978,7 +978,7 @@ See RS/6000 and PowerPC Options.
 -mpretend-cmove -mtas}
 
 @emph{Solaris 2 Options}
-@gccoptlist{-mimpure-text  -mno-impure-text @gol
+@gccoptlist{-mclear-hwcap -mno-clear-hwcap -mimpure-text  -mno-impure-text @gol
 -pthreads -pthread}
 
 @emph{SPARC Options}
@@ -7392,7 +7392,8 @@ Attempt to remove redundant extension instructions.  This is especially
 helpful for the x86-64 architecture, which implicitly zero-extends in 64-bit
 registers after writing to their lower 32-bit half.
 
-Enabled for AArch64 and x86 at levels @option{-O2}, @option{-O3}.
+Enabled for Alpha, AArch64 and x86 at levels @option{-O2},
+@option{-O3}, @option{-Os}.
 
 @item -flive-range-shrinkage
 @opindex flive-range-shrinkage
@@ -10003,6 +10004,28 @@ parameter in order to propagate them and perform devirtualization.
 @option{ipa-cp-value-list-size} is the maximum number of values and types it
 stores per one formal parameter of a function.
 
+@item ipa-cp-eval-threshold
+IPA-CP calculates its own score of cloning profitability heuristics
+and performs those cloning opportunities with scores that exceed
+@option{ipa-cp-eval-threshold}.
+
+@item ipa-max-agg-items
+IPA-CP is also capable to propagate a number of scalar values passed
+in an aggregate. @option{ipa-max-agg-items} controls the maximum
+number of such values per one parameter.
+
+@item ipa-cp-loop-hint-bonus
+When IPA-CP determines that a cloning candidate would make the number
+of iterations of a loop known, it adds a bonus of
+@option{ipa-cp-loop-hint-bonus} bonus to the profitability score of
+the candidate.
+
+@item ipa-cp-array-index-hint-bonus
+When IPA-CP determines that a cloning candidate would make the index of
+an array access known, it adds a bonus of
+@option{ipa-cp-array-index-hint-bonus} bonus to the profitability
+score of the candidate.
+
 @item lto-partitions
 Specify desired number of partitions produced during WHOPR compilation.
 The number of partitions should exceed the number of CPUs used for compilation.
@@ -20808,6 +20831,13 @@ patterns.  This can result in faster code on the SH4 processor.
 These @samp{-m} options are supported on Solaris 2:
 
 @table @gcctabopt
+@item -mclear-hwcap
+@opindex mclear-hwcap
+@option{-mclear-hwcap} tells the compiler to remove the hardware
+capabilities generated by the Solaris assembler.  This is only necessary
+when object files use ISA extensions not supported by the current
+machine, but check at runtime whether or not to use them.
+
 @item -mimpure-text
 @opindex mimpure-text
 @option{-mimpure-text}, used in addition to @option{-shared}, tells
index 9148608..7438980 100644 (file)
@@ -1601,6 +1601,13 @@ MIPS target supports @code{-mpaired-single}.
 @subsubsection PowerPC-specific attributes
 
 @table @code
+
+@item dfp_hw
+PowerPC target supports executing hardware DFP instructions.
+
+@item p8vector_hw
+PowerPC target supports executing VSX instructions (ISA 2.07).
+
 @item powerpc64
 Test system supports executing 64-bit instructions.
 
@@ -1610,12 +1617,24 @@ PowerPC target supports AltiVec.
 @item powerpc_altivec_ok
 PowerPC target supports @code{-maltivec}.
 
+@item powerpc_eabi_ok
+PowerPC target supports @code{-meabi}.
+
+@item powerpc_elfv2
+PowerPC target supports @code{-mabi=elfv2}.
+
 @item powerpc_fprs
 PowerPC target supports floating-point registers.
 
 @item powerpc_hard_double
 PowerPC target supports hardware double-precision floating-point.
 
+@item powerpc_htm_ok
+PowerPC target supports @code{-mhtm}
+
+@item powerpc_p8vector_ok
+PowerPC target supports @code{-mpower8-vector}
+
 @item powerpc_ppu_ok
 PowerPC target supports @code{-mcpu=cell}.
 
@@ -1629,9 +1648,6 @@ PowerPC target supports PowerPC SPE.
 @item powerpc_spu
 PowerPC target supports PowerPC SPU.
 
-@item spu_auto_overlay
-SPU target has toolchain that supports automatic overlay generation.
-
 @item powerpc_vsx_ok
 PowerPC target supports @code{-mvsx}.
 
@@ -1639,8 +1655,17 @@ PowerPC target supports @code{-mvsx}.
 Including the options used to compile this particular test, the
 PowerPC target supports PowerPC 405.
 
+@item ppc_recip_hw
+PowerPC target supports executing reciprocal estimate instructions.
+
+@item spu_auto_overlay
+SPU target has toolchain that supports automatic overlay generation.
+
 @item vmx_hw
 PowerPC target supports executing AltiVec instructions.
+
+@item vsx_hw
+PowerPC target supports executing VSX instructions (ISA 2.06).
 @end table
 
 @subsubsection Other hardware attributes
index 454655d..f6e340b 100644 (file)
@@ -588,7 +588,7 @@ div_and_round_double (unsigned code, int uns,
                 == (unsigned HOST_WIDE_INT) htwice)
                && (labs_den <= ltwice)))
          {
-           if (*hquo < 0)
+           if (quo_neg)
              /* quo = quo - 1;  */
              add_double (*lquo, *hquo,
                          (HOST_WIDE_INT) -1, (HOST_WIDE_INT) -1, lquo, hquo);
index 5c2bf25..802c021 100644 (file)
@@ -9308,7 +9308,7 @@ fold_comparison (location_t loc, enum tree_code code, tree type,
   /* Transform comparisons of the form X +- C1 CMP Y +- C2 to
      X CMP Y +- C2 +- C1 for signed X, Y.  This is valid if
      the resulting offset is smaller in absolute value than the
-     original one.  */
+     original one and has the same sign.  */
   if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (arg0))
       && (TREE_CODE (arg0) == PLUS_EXPR || TREE_CODE (arg0) == MINUS_EXPR)
       && (TREE_CODE (TREE_OPERAND (arg0, 1)) == INTEGER_CST
@@ -9327,32 +9327,35 @@ fold_comparison (location_t loc, enum tree_code code, tree type,
                                      "a comparison");
 
       /* Put the constant on the side where it doesn't overflow and is
-        of lower absolute value than before.  */
+        of lower absolute value and of same sign than before.  */
       cst = int_const_binop (TREE_CODE (arg0) == TREE_CODE (arg1)
                             ? MINUS_EXPR : PLUS_EXPR,
                             const2, const1);
       if (!TREE_OVERFLOW (cst)
-         && tree_int_cst_compare (const2, cst) == tree_int_cst_sgn (const2))
+         && tree_int_cst_compare (const2, cst) == tree_int_cst_sgn (const2)
+         && tree_int_cst_sgn (cst) == tree_int_cst_sgn (const2))
        {
          fold_overflow_warning (warnmsg, WARN_STRICT_OVERFLOW_COMPARISON);
          return fold_build2_loc (loc, code, type,
-                             variable1,
-                             fold_build2_loc (loc,
-                                          TREE_CODE (arg1), TREE_TYPE (arg1),
-                                          variable2, cst));
+                                 variable1,
+                                 fold_build2_loc (loc, TREE_CODE (arg1),
+                                                  TREE_TYPE (arg1),
+                                                  variable2, cst));
        }
 
       cst = int_const_binop (TREE_CODE (arg0) == TREE_CODE (arg1)
                             ? MINUS_EXPR : PLUS_EXPR,
                             const1, const2);
       if (!TREE_OVERFLOW (cst)
-         && tree_int_cst_compare (const1, cst) == tree_int_cst_sgn (const1))
+         && tree_int_cst_compare (const1, cst) == tree_int_cst_sgn (const1)
+         && tree_int_cst_sgn (cst) == tree_int_cst_sgn (const1))
        {
          fold_overflow_warning (warnmsg, WARN_STRICT_OVERFLOW_COMPARISON);
          return fold_build2_loc (loc, code, type,
-                             fold_build2_loc (loc, TREE_CODE (arg0), TREE_TYPE (arg0),
-                                          variable1, cst),
-                             variable2);
+                                 fold_build2_loc (loc, TREE_CODE (arg0),
+                                                  TREE_TYPE (arg0),
+                                                  variable1, cst),
+                                 variable2);
        }
     }
 
@@ -11426,7 +11429,6 @@ fold_binary_loc (location_t loc,
        {
          double_int c1, c2, c3, msk;
          int width = TYPE_PRECISION (type), w;
-         bool try_simplify = true;
 
          c1 = tree_to_double_int (TREE_OPERAND (arg0, 1));
          c2 = tree_to_double_int (arg1);
@@ -11463,20 +11465,7 @@ fold_binary_loc (location_t loc,
                }
            }
 
-         /* If X is a tree of the form (Y * K1) & K2, this might conflict
-            with that optimization from the BIT_AND_EXPR optimizations.
-            This could end up in an infinite recursion.  */
-         if (TREE_CODE (TREE_OPERAND (arg0, 0)) == MULT_EXPR
-             && TREE_CODE (TREE_OPERAND (TREE_OPERAND (arg0, 0), 1))
-                           == INTEGER_CST)
-         {
-           tree t = TREE_OPERAND (TREE_OPERAND (arg0, 0), 1);
-           double_int masked = mask_with_tz (type, c3, tree_to_double_int (t));
-
-           try_simplify = (masked != c1);
-         }
-
-         if (try_simplify && c3 != c1)
+         if (c3 != c1)
            return fold_build2_loc (loc, BIT_IOR_EXPR, type,
                                    fold_build2_loc (loc, BIT_AND_EXPR, type,
                                                     TREE_OPERAND (arg0, 0),
@@ -11866,16 +11855,25 @@ fold_binary_loc (location_t loc,
          && TREE_CODE (arg0) == MULT_EXPR
          && TREE_CODE (TREE_OPERAND (arg0, 1)) == INTEGER_CST)
        {
+         double_int darg1 = tree_to_double_int (arg1);
          double_int masked
-           = mask_with_tz (type, tree_to_double_int (arg1),
+           = mask_with_tz (type, darg1,
                            tree_to_double_int (TREE_OPERAND (arg0, 1)));
 
          if (masked.is_zero ())
            return omit_two_operands_loc (loc, type, build_zero_cst (type),
                                          arg0, arg1);
-         else if (masked != tree_to_double_int (arg1))
-           return fold_build2_loc (loc, code, type, op0,
-                                   double_int_to_tree (type, masked));
+         else if (masked != darg1)
+           {
+             /* Avoid the transform if arg1 is a mask of some
+                mode which allows further optimizations.  */
+             int pop = darg1.popcount ();
+             if (!(pop >= BITS_PER_UNIT
+                   && exact_log2 (pop) != -1
+                   && double_int::mask (pop) == darg1))
+               return fold_build2_loc (loc, code, type, op0,
+                                       double_int_to_tree (type, masked));
+           }
        }
 
       /* For constants M and N, if M == (1LL << cst) - 1 && (N & M) == M,
@@ -12088,11 +12086,17 @@ fold_binary_loc (location_t loc,
                      /* See if we can shorten the right shift.  */
                      if (shiftc < prec)
                        shift_type = inner_type;
+                     /* Otherwise X >> C1 is all zeros, so we'll optimize
+                        it into (X, 0) later on by making sure zerobits
+                        is all ones.  */
                    }
                }
              zerobits = ~(unsigned HOST_WIDE_INT) 0;
-             zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc;
-             zerobits <<= prec - shiftc;
+             if (shiftc < prec)
+               {
+                 zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc;
+                 zerobits <<= prec - shiftc;
+               }
              /* For arithmetic shift if sign bit could be set, zerobits
                 can contain actually sign bits, so no transformation is
                 possible, unless MASK masks them all away.  In that
@@ -12110,7 +12114,7 @@ fold_binary_loc (location_t loc,
          /* ((X << 16) & 0xff00) is (X, 0).  */
          if ((mask & zerobits) == mask)
            return omit_one_operand_loc (loc, type,
-                                    build_int_cst (type, 0), arg0);
+                                        build_int_cst (type, 0), arg0);
 
          newmask = mask | zerobits;
          if (newmask != mask && (newmask & (newmask + 1)) == 0)
index 42f0321..15da2d6 100644 (file)
@@ -1,3 +1,20 @@
+2014-05-29  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/60834
+       Backport from mainline
+       * frontend-passes.c (in_assoc_list):  New variable.
+       (optimize_namespace):  Initialize in_assoc_list
+       (combine_array_constructor): Don't try to combine
+       assoc lists.
+       (gfc_code_walker):  Keep track of in_assoc_list.
+
+2014-05-26  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       Backport from mainline
+       PR libfortran/61310
+       * intrinsics.texi (CTIME): Remove mention of locale-dependent
+       behavior.
+
 2014-04-22  Tobias Burnus  <burnus@net-b.de>
 
        Backport from mainline
index 6c67e66..9ceca95 100644 (file)
@@ -88,6 +88,10 @@ static int doloop_size, doloop_level;
 
 struct my_struct *evec;
 
+/* Keep track of association lists.  */
+
+static bool in_assoc_list;
+
 /* Entry point - run all passes for a namespace. */
 
 void
@@ -820,6 +824,7 @@ optimize_namespace (gfc_namespace *ns)
   current_ns = ns;
   forall_level = 0;
   iterator_level = 0;
+  in_assoc_list = false;
   in_omp_workshare = false;
 
   gfc_code_walker (&ns->code, convert_do_while, dummy_expr_callback, NULL);
@@ -1054,6 +1059,11 @@ combine_array_constructor (gfc_expr *e)
   if (e->rank != 1)
     return false;
 
+  /* Don't try to combine association lists, this makes no sense
+     and leads to an ICE.  */
+  if (in_assoc_list)
+    return false;
+
   op1 = e->value.op.op1;
   op2 = e->value.op.op2;
 
@@ -1940,8 +1950,17 @@ gfc_code_walker (gfc_code **c, walk_code_fn_t codefn, walk_expr_fn_t exprfn,
 
            case EXEC_BLOCK:
              WALK_SUBCODE (co->ext.block.ns->code);
-             for (alist = co->ext.block.assoc; alist; alist = alist->next)
-               WALK_SUBEXPR (alist->target);
+             if (co->ext.block.assoc)
+               {
+                 bool saved_in_assoc_list = in_assoc_list;
+
+                 in_assoc_list = true;
+                 for (alist = co->ext.block.assoc; alist; alist = alist->next)
+                   WALK_SUBEXPR (alist->target);
+
+                 in_assoc_list = saved_in_assoc_list;
+               }
+
              break;
 
            case EXEC_DO:
index 926ffe9..efbb2f1 100644 (file)
@@ -3343,10 +3343,8 @@ end program test_cshift
 @table @asis
 @item @emph{Description}:
 @code{CTIME} converts a system time value, such as returned by
-@code{TIME8}, to a string. Unless the application has called
-@code{setlocale}, the output will be in the default locale, of length
-24 and of the form @samp{Sat Aug 19 18:13:14 1995}. In other locales,
-a longer string may result.
+@code{TIME8}, to a string. The output will be of the form @samp{Sat
+Aug 19 18:13:14 1995}.
 
 This intrinsic is provided in both subroutine and function forms; however,
 only one form can be used in any given program unit.
index 2148a1a..e79adb3 100644 (file)
@@ -8966,9 +8966,8 @@ Type::finalize_methods(Gogo* gogo, const Type* type, Location location,
                       Methods** all_methods)
 {
   *all_methods = NULL;
-  Types_seen types_seen;
-  Type::add_methods_for_type(type, NULL, 0, false, false, &types_seen,
-                            all_methods);
+  std::vector<const Named_type*> seen;
+  Type::add_methods_for_type(type, NULL, 0, false, false, &seen, all_methods);
   Type::build_stub_methods(gogo, type, *all_methods, location);
 }
 
@@ -8986,7 +8985,7 @@ Type::add_methods_for_type(const Type* type,
                           unsigned int depth,
                           bool is_embedded_pointer,
                           bool needs_stub_method,
-                          Types_seen* types_seen,
+                          std::vector<const Named_type*>* seen,
                           Methods** methods)
 {
   // Pointer types may not have methods.
@@ -8996,19 +8995,24 @@ Type::add_methods_for_type(const Type* type,
   const Named_type* nt = type->named_type();
   if (nt != NULL)
     {
-      std::pair<Types_seen::iterator, bool> ins = types_seen->insert(nt);
-      if (!ins.second)
-       return;
-    }
+      for (std::vector<const Named_type*>::const_iterator p = seen->begin();
+          p != seen->end();
+          ++p)
+       {
+         if (*p == nt)
+           return;
+       }
 
-  if (nt != NULL)
-    Type::add_local_methods_for_type(nt, field_indexes, depth,
-                                    is_embedded_pointer, needs_stub_method,
-                                    methods);
+      seen->push_back(nt);
+
+      Type::add_local_methods_for_type(nt, field_indexes, depth,
+                                      is_embedded_pointer, needs_stub_method,
+                                      methods);
+    }
 
   Type::add_embedded_methods_for_type(type, field_indexes, depth,
                                      is_embedded_pointer, needs_stub_method,
-                                     types_seen, methods);
+                                     seen, methods);
 
   // If we are called with depth > 0, then we are looking at an
   // anonymous field of a struct.  If such a field has interface type,
@@ -9017,6 +9021,9 @@ Type::add_methods_for_type(const Type* type,
   // following the usual rules for an interface type.
   if (depth > 0)
     Type::add_interface_methods_for_type(type, field_indexes, depth, methods);
+
+  if (nt != NULL)
+      seen->pop_back();
 }
 
 // Add the local methods for the named type NT to *METHODS.  The
@@ -9062,7 +9069,7 @@ Type::add_embedded_methods_for_type(const Type* type,
                                    unsigned int depth,
                                    bool is_embedded_pointer,
                                    bool needs_stub_method,
-                                   Types_seen* types_seen,
+                                   std::vector<const Named_type*>* seen,
                                    Methods** methods)
 {
   // Look for anonymous fields in TYPE.  TYPE has fields if it is a
@@ -9106,7 +9113,7 @@ Type::add_embedded_methods_for_type(const Type* type,
                                 (needs_stub_method
                                  || is_pointer
                                  || i > 0),
-                                types_seen,
+                                seen,
                                 methods);
     }
 }
index 5fda4e7..acb06ca 100644 (file)
@@ -1171,14 +1171,11 @@ class Type
   static tree
   build_receive_return_type(tree type);
 
-  // A hash table we use to avoid infinite recursion.
-  typedef Unordered_set_hash(const Named_type*, Type_hash_identical,
-                            Type_identical) Types_seen;
-
   // Add all methods for TYPE to the list of methods for THIS.
   static void
   add_methods_for_type(const Type* type, const Method::Field_indexes*,
-                      unsigned int depth, bool, bool, Types_seen*,
+                      unsigned int depth, bool, bool,
+                      std::vector<const Named_type*>*,
                       Methods**);
 
   static void
@@ -1189,7 +1186,8 @@ class Type
   static void
   add_embedded_methods_for_type(const Type* type,
                                const Method::Field_indexes*,
-                               unsigned int depth, bool, bool, Types_seen*,
+                               unsigned int depth, bool, bool,
+                               std::vector<const Named_type*>*,
                                Methods**);
 
   static void
index 821f084..635e21a 100644 (file)
@@ -474,8 +474,10 @@ scopdet_basic_block_info (basic_block bb, loop_p outermost_loop,
       result.exits = false;
 
       /* Mark bbs terminating a SESE region difficult, if they start
-        a condition.  */
-      if (!single_succ_p (bb))
+        a condition or if the block it exits to cannot be split
+        with make_forwarder_block.  */
+      if (!single_succ_p (bb)
+         || bb_has_abnormal_pred (single_succ (bb)))
        result.difficult = true;
       else
        result.exit = single_succ (bb);
index 03a6c5b..7f07d2f 100644 (file)
@@ -987,6 +987,17 @@ give_up:
   context->outer_type = expected_type;
   context->offset = 0;
   context->maybe_derived_type = true;
+  context->maybe_in_construction = true;
+  /* POD can be changed to an instance of a polymorphic type by
+     placement new.  Here we play safe and assume that any
+     non-polymorphic type is POD.  */
+  if ((TREE_CODE (type) != RECORD_TYPE
+       || !TYPE_BINFO (type)
+       || !polymorphic_type_binfo_p (TYPE_BINFO (type)))
+      && (TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST
+         || (offset + tree_to_uhwi (TYPE_SIZE (expected_type)) <=
+             tree_to_uhwi (TYPE_SIZE (type)))))
+    return true;
   return false;
 }
 
index a45aab1..6f68631 100644 (file)
@@ -214,6 +214,7 @@ clone_inlined_nodes (struct cgraph_edge *e, bool duplicate,
    it is NULL. If UPDATE_OVERALL_SUMMARY is false, do not bother to recompute overall
    size of caller after inlining. Caller is required to eventually do it via
    inline_update_overall_summary.
+   If callee_removed is non-NULL, set it to true if we removed callee node.
 
    Return true iff any new callgraph edges were discovered as a
    result of inlining.  */
@@ -221,7 +222,8 @@ clone_inlined_nodes (struct cgraph_edge *e, bool duplicate,
 bool
 inline_call (struct cgraph_edge *e, bool update_original,
             vec<cgraph_edge_p> *new_edges,
-            int *overall_size, bool update_overall_summary)
+            int *overall_size, bool update_overall_summary,
+            bool *callee_removed)
 {
   int old_size = 0, new_size = 0;
   struct cgraph_node *to = NULL;
@@ -260,6 +262,8 @@ inline_call (struct cgraph_edge *e, bool update_original,
            {
              next_alias = cgraph_alias_target (alias);
              cgraph_remove_node (alias);
+             if (callee_removed)
+               *callee_removed = true;
              alias = next_alias;
            }
          else
index 4051819..dab3adf 100644 (file)
@@ -1961,6 +1961,8 @@ static bool
 inline_to_all_callers (struct cgraph_node *node, void *data)
 {
   int *num_calls = (int *)data;
+  bool callee_removed = false;
+
   while (node->callers && !node->global.inlined_to)
     {
       struct cgraph_node *caller = node->callers->caller;
@@ -1977,7 +1979,7 @@ inline_to_all_callers (struct cgraph_node *node, void *data)
                   inline_summary (node->callers->caller)->size);
        }
 
-      inline_call (node->callers, true, NULL, NULL, true);
+      inline_call (node->callers, true, NULL, NULL, true, &callee_removed);
       if (dump_file)
        fprintf (dump_file,
                 " Inlined into %s which now has %i size\n",
@@ -1987,8 +1989,10 @@ inline_to_all_callers (struct cgraph_node *node, void *data)
        {
          if (dump_file)
            fprintf (dump_file, "New calls found; giving up.\n");
-         return true;
+         return callee_removed;
        }
+      if (callee_removed)
+       return true;
     }
   return false;
 }
@@ -2107,8 +2111,9 @@ ipa_inline (void)
              int num_calls = 0;
              cgraph_for_node_and_aliases (node, sum_callers,
                                           &num_calls, true);
-             cgraph_for_node_and_aliases (node, inline_to_all_callers,
-                                          &num_calls, true);
+             while (cgraph_for_node_and_aliases (node, inline_to_all_callers,
+                                                 &num_calls, true))
+               ;
              remove_functions = true;
            }
        }
index 8ee075f..7860dec 100644 (file)
@@ -234,7 +234,8 @@ void compute_inline_parameters (struct cgraph_node *, bool);
 bool speculation_useful_p (struct cgraph_edge *e, bool anticipate_inlining);
 
 /* In ipa-inline-transform.c  */
-bool inline_call (struct cgraph_edge *, bool, vec<cgraph_edge_p> *, int *, bool);
+bool inline_call (struct cgraph_edge *, bool, vec<cgraph_edge_p> *, int *, bool,
+                 bool *callee_removed = NULL);
 unsigned int inline_transform (struct cgraph_node *);
 void clone_inlined_nodes (struct cgraph_edge *e, bool, bool, int *,
                          int freq_scale);
index 9f144fa..9f45c76 100644 (file)
@@ -2877,16 +2877,20 @@ update_indirect_edges_after_inlining (struct cgraph_edge *cs,
       else if (jfunc->type == IPA_JF_PASS_THROUGH
               && ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR)
        {
-         if (ici->agg_contents
-             && !ipa_get_jf_pass_through_agg_preserved (jfunc))
+         if ((ici->agg_contents
+              && !ipa_get_jf_pass_through_agg_preserved (jfunc))
+             || (ici->polymorphic
+                 && !ipa_get_jf_pass_through_type_preserved (jfunc)))
            ici->param_index = -1;
          else
            ici->param_index = ipa_get_jf_pass_through_formal_id (jfunc);
        }
       else if (jfunc->type == IPA_JF_ANCESTOR)
        {
-         if (ici->agg_contents
-             && !ipa_get_jf_ancestor_agg_preserved (jfunc))
+         if ((ici->agg_contents
+              && !ipa_get_jf_ancestor_agg_preserved (jfunc))
+             || (ici->polymorphic
+                 && !ipa_get_jf_ancestor_type_preserved (jfunc)))
            ici->param_index = -1;
          else
            {
@@ -3650,6 +3654,7 @@ ipa_modify_formal_parameters (tree fndecl, ipa_parm_adjustment_vec adjustments)
 
   TREE_TYPE (fndecl) = new_type;
   DECL_VIRTUAL_P (fndecl) = 0;
+  DECL_LANG_SPECIFIC (fndecl) = NULL;
   otypes.release ();
   oparms.release ();
 }
index 26e9b03..ebaa82d 100644 (file)
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -415,7 +415,18 @@ symtab_remove_unreachable_nodes (bool before_inlining_p, FILE *file)
                          || !DECL_EXTERNAL (e->callee->decl)
                          || e->callee->alias
                          || before_inlining_p))
-                   pointer_set_insert (reachable, e->callee);
+                   {
+                     /* Be sure that we will not optimize out alias target
+                        body.  */
+                     if (DECL_EXTERNAL (e->callee->decl)
+                         && e->callee->alias
+                         && before_inlining_p)
+                       {
+                         pointer_set_insert (reachable,
+                                             cgraph_function_node (e->callee));
+                       }
+                     pointer_set_insert (reachable, e->callee);
+                   }
                  enqueue_node (e->callee, &first, reachable);
                }
 
@@ -506,6 +517,7 @@ symtab_remove_unreachable_nodes (bool before_inlining_p, FILE *file)
              if (!node->in_other_partition)
                node->local.local = false;
              cgraph_node_remove_callees (node);
+             symtab_remove_from_same_comdat_group (node);
              ipa_remove_all_references (&node->ref_list);
              changed = true;
            }
@@ -561,6 +573,8 @@ symtab_remove_unreachable_nodes (bool before_inlining_p, FILE *file)
          vnode->analyzed = false;
          vnode->aux = NULL;
 
+         symtab_remove_from_same_comdat_group (vnode);
+
          /* Keep body if it may be useful for constant folding.  */
          if ((init = ctor_for_folding (vnode->decl)) == error_mark_node)
            varpool_remove_initializer (vnode);
@@ -697,6 +711,8 @@ address_taken_from_non_vtable_p (symtab_node *node)
 static bool
 comdat_can_be_unshared_p_1 (symtab_node *node)
 {
+  if (!node->externally_visible)
+    return true;
   /* When address is taken, we don't know if equality comparison won't
      break eventually. Exception are virutal functions, C++
      constructors/destructors and vtables, where this is not possible by
index 648806b..43006f7 100644 (file)
@@ -407,6 +407,8 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
   int alt;
   int i, j, k;
   int insn_allows_mem[MAX_RECOG_OPERANDS];
+  move_table *move_in_cost, *move_out_cost;
+  short (*mem_cost)[2];
 
   for (i = 0; i < n_ops; i++)
     insn_allows_mem[i] = 0;
@@ -517,41 +519,78 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
                  bool in_p = recog_data.operand_type[i] != OP_OUT;
                  bool out_p = recog_data.operand_type[i] != OP_IN;
                  enum reg_class op_class = classes[i];
-                 move_table *move_in_cost, *move_out_cost;
 
                  ira_init_register_move_cost_if_necessary (mode);
                  if (! in_p)
                    {
                      ira_assert (out_p);
-                     move_out_cost = ira_may_move_out_cost[mode];
-                     for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                     if (op_class == NO_REGS)
                        {
-                         rclass = cost_classes[k];
-                         pp_costs[k]
-                           = move_out_cost[op_class][rclass] * frequency;
+                         mem_cost = ira_memory_move_cost[mode];
+                         for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                           {
+                             rclass = cost_classes[k];
+                             pp_costs[k] = mem_cost[rclass][0] * frequency;
+                           }
+                       }
+                     else
+                       {
+                         move_out_cost = ira_may_move_out_cost[mode];
+                         for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                           {
+                             rclass = cost_classes[k];
+                             pp_costs[k]
+                               = move_out_cost[op_class][rclass] * frequency;
+                           }
                        }
                    }
                  else if (! out_p)
                    {
                      ira_assert (in_p);
-                     move_in_cost = ira_may_move_in_cost[mode];
-                     for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                     if (op_class == NO_REGS)
                        {
-                         rclass = cost_classes[k];
-                         pp_costs[k]
-                           = move_in_cost[rclass][op_class] * frequency;
+                         mem_cost = ira_memory_move_cost[mode];
+                         for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                           {
+                             rclass = cost_classes[k];
+                             pp_costs[k] = mem_cost[rclass][1] * frequency;
+                           }
+                       }
+                     else
+                       {
+                         move_in_cost = ira_may_move_in_cost[mode];
+                         for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                           {
+                             rclass = cost_classes[k];
+                             pp_costs[k]
+                               = move_in_cost[rclass][op_class] * frequency;
+                           }
                        }
                    }
                  else
                    {
-                     move_in_cost = ira_may_move_in_cost[mode];
-                     move_out_cost = ira_may_move_out_cost[mode];
-                     for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                     if (op_class == NO_REGS)
                        {
-                         rclass = cost_classes[k];
-                         pp_costs[k] = ((move_in_cost[rclass][op_class]
-                                         + move_out_cost[op_class][rclass])
-                                        * frequency);
+                         mem_cost = ira_memory_move_cost[mode];
+                         for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                           {
+                             rclass = cost_classes[k];
+                             pp_costs[k] = ((mem_cost[rclass][0]
+                                             + mem_cost[rclass][1])
+                                            * frequency);
+                           }
+                       }
+                     else
+                       {
+                         move_in_cost = ira_may_move_in_cost[mode];
+                         move_out_cost = ira_may_move_out_cost[mode];
+                         for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                           {
+                             rclass = cost_classes[k];
+                             pp_costs[k] = ((move_in_cost[rclass][op_class]
+                                             + move_out_cost[op_class][rclass])
+                                            * frequency);
+                           }
                        }
                    }
 
@@ -762,10 +801,11 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
             into that class.  */
          if (REG_P (op) && REGNO (op) >= FIRST_PSEUDO_REGISTER)
            {
-             if (classes[i] == NO_REGS)
+             if (classes[i] == NO_REGS && ! allows_mem[i])
                {
                  /* We must always fail if the operand is a REG, but
-                    we did not find a suitable class.
+                    we did not find a suitable class and memory is
+                    not allowed.
 
                     Otherwise we may perform an uninitialized read
                     from this_op_costs after the `continue' statement
@@ -782,51 +822,94 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
                  bool in_p = recog_data.operand_type[i] != OP_OUT;
                  bool out_p = recog_data.operand_type[i] != OP_IN;
                  enum reg_class op_class = classes[i];
-                 move_table *move_in_cost, *move_out_cost;
 
                  ira_init_register_move_cost_if_necessary (mode);
                  if (! in_p)
                    {
                      ira_assert (out_p);
-                     move_out_cost = ira_may_move_out_cost[mode];
-                     for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                     if (op_class == NO_REGS)
                        {
-                         rclass = cost_classes[k];
-                         pp_costs[k]
-                           = move_out_cost[op_class][rclass] * frequency;
+                         mem_cost = ira_memory_move_cost[mode];
+                         for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                           {
+                             rclass = cost_classes[k];
+                             pp_costs[k] = mem_cost[rclass][0] * frequency;
+                           }
+                       }
+                     else
+                       {
+                         move_out_cost = ira_may_move_out_cost[mode];
+                         for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                           {
+                             rclass = cost_classes[k];
+                             pp_costs[k]
+                               = move_out_cost[op_class][rclass] * frequency;
+                           }
                        }
                    }
                  else if (! out_p)
                    {
                      ira_assert (in_p);
-                     move_in_cost = ira_may_move_in_cost[mode];
-                     for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                     if (op_class == NO_REGS)
+                       {
+                         mem_cost = ira_memory_move_cost[mode];
+                         for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                           {
+                             rclass = cost_classes[k];
+                             pp_costs[k] = mem_cost[rclass][1] * frequency;
+                           }
+                       }
+                     else
                        {
-                         rclass = cost_classes[k];
-                         pp_costs[k]
-                           = move_in_cost[rclass][op_class] * frequency;
+                         move_in_cost = ira_may_move_in_cost[mode];
+                         for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                           {
+                             rclass = cost_classes[k];
+                             pp_costs[k]
+                               = move_in_cost[rclass][op_class] * frequency;
+                           }
                        }
                    }
                  else
                    {
-                     move_in_cost = ira_may_move_in_cost[mode];
-                     move_out_cost = ira_may_move_out_cost[mode];
-                     for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                     if (op_class == NO_REGS)
                        {
-                         rclass = cost_classes[k];
-                         pp_costs[k] = ((move_in_cost[rclass][op_class]
-                                         + move_out_cost[op_class][rclass])
-                                        * frequency);
+                         mem_cost = ira_memory_move_cost[mode];
+                         for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                           {
+                             rclass = cost_classes[k];
+                             pp_costs[k] = ((mem_cost[rclass][0]
+                                             + mem_cost[rclass][1])
+                                            * frequency);
+                           }
+                       }
+                     else
+                       {
+                         move_in_cost = ira_may_move_in_cost[mode];
+                         move_out_cost = ira_may_move_out_cost[mode];
+                         for (k = cost_classes_ptr->num - 1; k >= 0; k--)
+                           {
+                             rclass = cost_classes[k];
+                             pp_costs[k] = ((move_in_cost[rclass][op_class]
+                                             + move_out_cost[op_class][rclass])
+                                            * frequency);
+                           }
                        }
                    }
 
-                 /* If the alternative actually allows memory, make
-                    things a bit cheaper since we won't need an extra
-                    insn to load it.  */
-                 pp->mem_cost
-                   = ((out_p ? ira_memory_move_cost[mode][op_class][0] : 0)
-                      + (in_p ? ira_memory_move_cost[mode][op_class][1] : 0)
-                      - allows_mem[i]) * frequency;
+                 if (op_class == NO_REGS)
+                   /* Although we don't need insn to reload from
+                      memory, still accessing memory is usually more
+                      expensive than a register.  */
+                   pp->mem_cost = frequency;
+                 else
+                   /* If the alternative actually allows memory, make
+                      things a bit cheaper since we won't need an
+                      extra insn to load it.  */
+                   pp->mem_cost
+                     = ((out_p ? ira_memory_move_cost[mode][op_class][0] : 0)
+                        + (in_p ? ira_memory_move_cost[mode][op_class][1] : 0)
+                        - allows_mem[i]) * frequency;
                  /* If we have assigned a class to this allocno in
                     our first pass, add a cost to this alternative
                     corresponding to what we would add if this
@@ -836,15 +919,28 @@ record_reg_classes (int n_alts, int n_ops, rtx *ops,
                      enum reg_class pref_class = pref[COST_INDEX (REGNO (op))];
 
                      if (pref_class == NO_REGS)
+                       {
+                         if (op_class != NO_REGS)
+                           alt_cost
+                             += ((out_p
+                                  ? ira_memory_move_cost[mode][op_class][0]
+                                  : 0)
+                                 + (in_p
+                                    ? ira_memory_move_cost[mode][op_class][1]
+                                    : 0));
+                       }
+                     else if (op_class == NO_REGS)
                        alt_cost
                          += ((out_p
-                              ? ira_memory_move_cost[mode][op_class][0] : 0)
+                              ? ira_memory_move_cost[mode][pref_class][1]
+                              : 0)
                              + (in_p
-                                ? ira_memory_move_cost[mode][op_class][1]
+                                ? ira_memory_move_cost[mode][pref_class][0]
                                 : 0));
                      else if (ira_reg_class_intersect[pref_class][op_class]
                               == NO_REGS)
-                       alt_cost += ira_register_move_cost[mode][pref_class][op_class];
+                       alt_cost += (ira_register_move_cost
+                                    [mode][pref_class][op_class]);
                    }
                }
            }
index abdf697..2787820 100644 (file)
@@ -565,6 +565,16 @@ lra_eliminate_regs_1 (rtx insn, rtx x, enum machine_mode mem_mode,
              alter_subreg (&x, false);
              return x;
            }
+         else if (! subst_p)
+           {
+             /* LRA can transform subregs itself.  So don't call
+                simplify_gen_subreg until LRA transformations are
+                finished.  Function simplify_gen_subreg can do
+                non-trivial transformations (like truncation) which
+                might make LRA work to fail.  */
+             SUBREG_REG (x) = new_rtx;
+             return x;
+           }
          else
            return simplify_gen_subreg (GET_MODE (x), new_rtx,
                                        GET_MODE (new_rtx), SUBREG_BYTE (x));
index b396e48..47a5924 100644 (file)
@@ -1,3 +1,8 @@
+2014-04-22  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR lto/61012
+       * lto-symtab.c (lto_symtab_merge_decls_1):
+
 2014-04-22  Release Manager
 
        * GCC 4.9.0 released.
index 71242c8..e77448e 100644 (file)
@@ -453,7 +453,12 @@ lto_symtab_merge_decls_1 (symtab_node *first)
      cgraph or a varpool node.  */
   if (!prevailing)
     {
-      prevailing = first;
+      for (prevailing = first;
+          prevailing; prevailing = prevailing->next_sharing_asm_name)
+       if (lto_symtab_symbol_p (prevailing))
+         break;
+      if (!prevailing)
+       return;
       /* For variables chose with a priority variant with vnode
         attached (i.e. from unit where external declaration of
         variable is actually used).
index 26e4849..99f79ba 100644 (file)
@@ -3000,6 +3000,27 @@ lower_rec_simd_input_clauses (tree new_var, omp_context *ctx, int &max_vf,
   return true;
 }
 
+/* Helper function of lower_rec_input_clauses.  For a reference
+   in simd reduction, add an underlying variable it will reference.  */
+
+static void
+handle_simd_reference (location_t loc, tree new_vard, gimple_seq *ilist)
+{
+  tree z = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (new_vard)));
+  if (TREE_CONSTANT (z))
+    {
+      const char *name = NULL;
+      if (DECL_NAME (new_vard))
+       name = IDENTIFIER_POINTER (DECL_NAME (new_vard));
+
+      z = create_tmp_var_raw (TREE_TYPE (TREE_TYPE (new_vard)), name);
+      gimple_add_tmp_var (z);
+      TREE_ADDRESSABLE (z) = 1;
+      z = build_fold_addr_expr_loc (loc, z);
+      gimplify_assign (new_vard, z, ilist);
+    }
+}
+
 /* Generate code to implement the input clauses, FIRSTPRIVATE and COPYIN,
    from the receiver (aka child) side and initializers for REFERENCE_TYPE
    private variables.  Initialization statements go in ILIST, while calls
@@ -3191,13 +3212,11 @@ lower_rec_input_clauses (tree clauses, gimple_seq *ilist, gimple_seq *dlist,
                }
              else if (TREE_CONSTANT (x))
                {
-                 /* For reduction with placeholder in SIMD loop,
-                    defer adding the initialization of the reference,
-                    because if we decide to use SIMD array for it,
-                    the initilization could cause expansion ICE.  */
-                 if (c_kind == OMP_CLAUSE_REDUCTION
-                     && OMP_CLAUSE_REDUCTION_PLACEHOLDER (c)
-                     && is_simd)
+                 /* For reduction in SIMD loop, defer adding the
+                    initialization of the reference, because if we decide
+                    to use SIMD array for it, the initilization could cause
+                    expansion ICE.  */
+                 if (c_kind == OMP_CLAUSE_REDUCTION && is_simd)
                    x = NULL_TREE;
                  else
                    {
@@ -3526,23 +3545,7 @@ lower_rec_input_clauses (tree clauses, gimple_seq *ilist, gimple_seq *dlist,
                     But if they aren't used, we need to emit the deferred
                     initialization now.  */
                  else if (is_reference (var) && is_simd)
-                   {
-                     tree z
-                       = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (new_vard)));
-                     if (TREE_CONSTANT (z))
-                       {
-                         const char *name = NULL;
-                         if (DECL_NAME (var))
-                           name = IDENTIFIER_POINTER (DECL_NAME (new_vard));
-
-                         z = create_tmp_var_raw
-                               (TREE_TYPE (TREE_TYPE (new_vard)), name);
-                         gimple_add_tmp_var (z);
-                         TREE_ADDRESSABLE (z) = 1;
-                         z = build_fold_addr_expr_loc (clause_loc, z);
-                         gimplify_assign (new_vard, z, ilist);
-                       }
-                   }
+                   handle_simd_reference (clause_loc, new_vard, ilist);
                  x = lang_hooks.decls.omp_clause_default_ctor
                                (c, new_var, unshare_expr (x));
                  if (x)
@@ -3575,6 +3578,13 @@ lower_rec_input_clauses (tree clauses, gimple_seq *ilist, gimple_seq *dlist,
                  if (code == MINUS_EXPR)
                    code = PLUS_EXPR;
 
+                 tree new_vard = new_var;
+                 if (is_simd && is_reference (var))
+                   {
+                     gcc_assert (TREE_CODE (new_var) == MEM_REF);
+                     new_vard = TREE_OPERAND (new_var, 0);
+                     gcc_assert (DECL_P (new_vard));
+                   }
                  if (is_simd
                      && lower_rec_simd_input_clauses (new_var, ctx, max_vf,
                                                       idx, lane, ivar, lvar))
@@ -3586,9 +3596,18 @@ lower_rec_input_clauses (tree clauses, gimple_seq *ilist, gimple_seq *dlist,
                      x = build2 (code, TREE_TYPE (ref), ref, ivar);
                      ref = build_outer_var_ref (var, ctx);
                      gimplify_assign (ref, x, &llist[1]);
+
+                     if (new_vard != new_var)
+                       {
+                         SET_DECL_VALUE_EXPR (new_vard,
+                                              build_fold_addr_expr (lvar));
+                         DECL_HAS_VALUE_EXPR_P (new_vard) = 1;
+                       }
                    }
                  else
                    {
+                     if (is_reference (var) && is_simd)
+                       handle_simd_reference (clause_loc, new_vard, ilist);
                      gimplify_assign (new_var, x, ilist);
                      if (is_simd)
                        {
index 3f3db1a..bbd6b9c 100644 (file)
@@ -1501,9 +1501,9 @@ common_handle_option (struct gcc_options *opts,
                }
 
            if (! found)
-             warning_at (loc, 0,
-                         "unrecognized argument to -fsanitize= option: %q.*s",
-                         (int) len, p);
+             error_at (loc,
+                       "unrecognized argument to -fsanitize= option: %q.*s",
+                       (int) len, p);
 
            if (comma == NULL)
              break;
@@ -1740,7 +1740,7 @@ common_handle_option (struct gcc_options *opts,
       /* FIXME: Instrumentation we insert makes ipa-reference bitmaps
         quadratic.  Disable the pass until better memory representation
         is done.  */
-      if (!opts_set->x_flag_ipa_reference && opts->x_in_lto_p)
+      if (!opts_set->x_flag_ipa_reference)
         opts->x_flag_ipa_reference = false;
       break;
 
@@ -1820,13 +1820,8 @@ common_handle_option (struct gcc_options *opts,
       break;
 
     case OPT_g:
-      /* -g by itself should force -g2.  */
-      if (*arg == '\0')
-       set_debug_level (NO_DEBUG, DEFAULT_GDB_EXTENSIONS, "2", opts, opts_set,
-                        loc);
-      else
-       set_debug_level (NO_DEBUG, DEFAULT_GDB_EXTENSIONS, arg, opts, opts_set,
-                        loc);
+      set_debug_level (NO_DEBUG, DEFAULT_GDB_EXTENSIONS, arg, opts, opts_set,
+                       loc);
       break;
 
     case OPT_gcoff:
@@ -2076,10 +2071,12 @@ set_debug_level (enum debug_info_type type, int extended, const char *arg,
       opts_set->x_write_symbols = type;
     }
 
-  /* A debug flag without a level defaults to level 2.  */
+  /* A debug flag without a level defaults to level 2.
+     If off or at level 1, set it to level 2, but if already
+     at level 3, don't lower it.  */ 
   if (*arg == '\0')
     {
-      if (!opts->x_debug_info_level)
+      if (opts->x_debug_info_level < DINFO_LEVEL_NORMAL)
        opts->x_debug_info_level = DINFO_LEVEL_NORMAL;
     }
   else
index d9af0fe..631f64a 100644 (file)
@@ -1,3 +1,7 @@
+2014-05-14  Joseph Myers  <joseph@codesourcery.com>
+
+       * zh_CN.po: Update.
+
 2014-05-01  Joseph Myers  <joseph@codesourcery.com>
 
        * sv.po: Update.
index 7edfcb4..e20e43f 100644 (file)
@@ -1,14 +1,14 @@
 # Simplified Chinese translation for gcc.
 # Copyright (C) 2005 Free Software Foundation, Inc.
 # This file is distributed under the same license as the gcc package.
-# Meng Jie <zuxy.meng@gmail.com>, 2005-2011.
+# Meng Jie <zuxy.meng@gmail.com>, 2005-2014.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: gcc 4.6.0\n"
+"Project-Id-Version: gcc 4.9-b20140202\n"
 "Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
 "POT-Creation-Date: 2014-02-02 17:35+0000\n"
-"PO-Revision-Date: 2011-05-19 15:04+0800\n"
+"PO-Revision-Date: 2014-05-14 14:25-0800\n"
 "Last-Translator: Meng Jie <zuxy.meng@gmail.com>\n"
 "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
 "Language: zh_CN\n"
@@ -38,7 +38,6 @@ msgstr "return 后没有屏障"
 
 #: collect2.c:1578
 #, fuzzy, c-format
-#| msgid "collect2 version %s"
 msgid "collect2 version %s\n"
 msgstr "collect2 版本 %s"
 
@@ -94,13 +93,11 @@ msgstr "常量/复制传递被禁用"
 
 #: diagnostic.c:170
 #, fuzzy, c-format
-#| msgid "%s: all warnings being treated as errors\n"
 msgid "%s: all warnings being treated as errors"
 msgstr "%s:所有的警告都被当作是错误\n"
 
 #: diagnostic.c:175
 #, fuzzy, c-format
-#| msgid "%s: some warnings being treated as errors\n"
 msgid "%s: some warnings being treated as errors"
 msgstr "%s:有些警告被当作是错误\n"
 
@@ -120,10 +117,6 @@ msgstr "编译中止因为 -fmax-errors=%u。\n"
 
 #: diagnostic.c:479
 #, fuzzy, c-format
-#| msgid ""
-#| "Please submit a full bug report,\n"
-#| "with preprocessed source if appropriate.\n"
-#| "See %s for instructions.\n"
 msgid ""
 "Please submit a full bug report,\n"
 "with preprocessed source if appropriate.\n"
@@ -134,7 +127,6 @@ msgstr ""
 
 #: diagnostic.c:485
 #, fuzzy, c-format
-#| msgid "Use fp double instructions"
 msgid "See %s for instructions.\n"
 msgstr "使用浮点双精度指令"
 
@@ -293,7 +285,6 @@ msgstr "  --target-help            显示目标机器特定的命令行选项\n"
 
 #: gcc.c:3073
 #, fuzzy
-#| msgid "  --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...]\n"
 msgid "  --help={common|optimizers|params|target|warnings|[^]{joined|separate|undocumented}}[,...]\n"
 msgstr "  --help={target|optimizers|warnings|params|[^]{joined|separate|undocumented}}[,...]\n"
 
@@ -339,9 +330,6 @@ msgstr "  -print-prog-name=<程序>  显示编译器组件 <程序> 的完整路
 
 #: gcc.c:3085
 #, fuzzy
-#| msgid ""
-#| "  -print-multi-lib         Display the mapping between command line options and\n"
-#| "                           multiple library search directories\n"
 msgid ""
 "  -print-multiarch         Display the target's normalized GNU triplet, used as\n"
 "                           a component in the library path\n"
@@ -461,13 +449,11 @@ msgstr "  -o <文件>                输出到 <文件>\n"
 
 #: gcc.c:3120
 #, fuzzy
-#| msgid "Create a position independent executable"
 msgid "  -pie                     Create a position independent executable\n"
 msgstr "生成位置无关可执行文件"
 
 #: gcc.c:3121
 #, fuzzy
-#| msgid "Create a shared library"
 msgid "  -shared                  Create a shared library\n"
 msgstr "生成一个共享库"
 
@@ -497,7 +483,6 @@ msgstr ""
 
 #: gcc.c:5402
 #, fuzzy, c-format
-#| msgid "Processing spec %c%s%c, which is '%s'\n"
 msgid "Processing spec (%s), which is '%s'\n"
 msgstr "处理 spec %c%s%c,即‘%s’\n"
 
@@ -613,9 +598,6 @@ msgstr ""
 
 #: gcov.c:472
 #, fuzzy, c-format
-#| msgid ""
-#| "Usage: gcov [OPTION]... SOURCEFILE...\n"
-#| "\n"
 msgid ""
 "Usage: gcov [OPTION]... SOURCE|OBJ...\n"
 "\n"
@@ -649,9 +631,6 @@ msgstr "  -b, --branch-probabilities      输出包含分支概率\n"
 
 #: gcov.c:477
 #, fuzzy, c-format
-#| msgid ""
-#| "  -c, --branch-counts             Given counts of branches taken\n"
-#| "                                    rather than percentages\n"
 msgid ""
 "  -c, --branch-counts             Output counts of branches taken\n"
 "                                    rather than percentages\n"
@@ -701,7 +680,6 @@ msgstr "  -p, --preserve-paths            保留所有路径名\n"
 
 #: gcov.c:488
 #, fuzzy, c-format
-#| msgid "  -a, --all-blocks                Show information for every basic block\n"
 msgid "  -r, --relative-only             Only show data for relative sources\n"
 msgstr "  -a, --all-blocks                显示每个基本块的信息\n"
 
@@ -749,25 +727,21 @@ msgstr ""
 
 #: gcov.c:794
 #, fuzzy, c-format
-#| msgid "%s:creating '%s'\n"
 msgid "Creating '%s'\n"
 msgstr "%s:正在创建‘%s’\n"
 
 #: gcov.c:797
 #, fuzzy, c-format
-#| msgid "%s:error writing output file '%s'\n"
 msgid "Error writing output file '%s'\n"
 msgstr "%s:写入输出文件‘%s’时出错\n"
 
 #: gcov.c:801
 #, fuzzy, c-format
-#| msgid "%s:could not open output file '%s'\n"
 msgid "Could not open output file '%s'\n"
 msgstr "%s:不能打开输出文件‘%s’\n"
 
 #: gcov.c:806
 #, fuzzy, c-format
-#| msgid "[Leaving %s]\n"
 msgid "Removing '%s'\n"
 msgstr "[离开 %s]\n"
 
@@ -778,13 +752,11 @@ msgstr "\n"
 
 #: gcov.c:856
 #, fuzzy, c-format
-#| msgid "%s: Cannot open output file: %s\n"
 msgid "Cannot open intermediate output file %s\n"
 msgstr "%s:无法打开输出文件:%s\n"
 
 #: gcov.c:1139
 #, fuzzy, c-format
-#| msgid "%s:source file is newer than graph file '%s'\n"
 msgid "%s:source file is newer than notes file '%s'\n"
 msgstr "%s:源文件较图文件‘%s’新\n"
 
@@ -795,13 +767,11 @@ msgstr "(每个源文件只显示一条信息)\n"
 
 #: gcov.c:1169
 #, fuzzy, c-format
-#| msgid "%s:cannot open source file\n"
 msgid "%s:cannot open notes file\n"
 msgstr "%s:无法打开源文件\n"
 
 #: gcov.c:1175
 #, fuzzy, c-format
-#| msgid "%s:not a gcov data file\n"
 msgid "%s:not a gcov notes file\n"
 msgstr "%s:不是一个 gcov 数据文件\n"
 
@@ -842,7 +812,6 @@ msgstr "%s:版本‘%.4s’,首选版本‘%.4s’\n"
 
 #: gcov.c:1417
 #, fuzzy, c-format
-#| msgid "%s:stamp mismatch with graph file\n"
 msgid "%s:stamp mismatch with notes file\n"
 msgstr "%s:时间戳与图文件不匹配\n"
 
@@ -958,7 +927,6 @@ msgstr "无条件 %2d 从未执行\n"
 
 #: gcov.c:2424
 #, fuzzy, c-format
-#| msgid "%s:cannot open source file\n"
 msgid "Cannot open source file %s\n"
 msgstr "%s:无法打开源文件\n"
 
@@ -1109,13 +1077,11 @@ msgstr "在函数%qs中"
 
 #: langhooks.c:456 cp/error.c:3131
 #, fuzzy
-#| msgid "    inlined from %qs at %s:%d:%d"
 msgid "    inlined from %qs at %r%s:%d:%d%R"
 msgstr "    内联自%qs于 %s:%d:%d"
 
 #: langhooks.c:461 cp/error.c:3136
 #, fuzzy
-#| msgid "    inlined from %qs at %s:%d"
 msgid "    inlined from %qs at %r%s:%d%R"
 msgstr "    内联自%qs于 %s:%d"
 
@@ -1419,7 +1385,6 @@ msgstr "不考虑内联函数"
 
 #: cif-code.def:43
 #, fuzzy
-#| msgid "%qE is not initialized"
 msgid "caller is not optimized"
 msgstr "%qE未经初始化"
 
@@ -1437,7 +1402,6 @@ msgstr "函数不能内联"
 
 #: cif-code.def:60
 #, fuzzy
-#| msgid "function body can be overwriten at linktime"
 msgid "function body can be overwritten at link time"
 msgstr "函数体可能在链接时被改写"
 
@@ -1499,7 +1463,6 @@ msgstr ""
 
 #: cif-code.def:113
 #, fuzzy
-#| msgid "Enable exception handling"
 msgid "non-call exception handling mismatch"
 msgstr "启用异常处理"
 
@@ -1602,7 +1565,6 @@ msgstr "早期内联器可以进行的嵌套间接内联的最大数量"
 
 #: params.def:117
 #, fuzzy
-#| msgid "Probability that COMDAT function will be shared with different compilatoin unit"
 msgid "Probability that COMDAT function will be shared with different compilation unit"
 msgstr "与其他编译单元共享 COMDAT 函数的概率"
 
@@ -1632,7 +1594,6 @@ msgstr "调度候选操作列表的最大长度"
 
 #: params.def:175
 #, fuzzy
-#| msgid "The maximum number of instructions to consider to unroll in a loop"
 msgid "The maximum number of backtrack attempts the scheduler should make when modulo scheduling a loop"
 msgstr "单个循环中考虑展开的最大指令数"
 
@@ -1719,7 +1680,6 @@ msgstr "单个循环最大的剥离数"
 
 #: params.def:300
 #, fuzzy
-#| msgid "The maximum number of iterations through CFG to extend regions"
 msgid "The maximum number of branches on the path through the peeled sequence"
 msgstr "通过 CFG 以扩展区域的最大循环次数"
 
@@ -2152,7 +2112,6 @@ msgstr "为实现跳转提示插入的 nop 的最大数(默认 2)"
 
 #: params.def:980
 #, fuzzy
-#| msgid "Maximum number of times that an insn could be scheduled"
 msgid "Maximum number of conditional store pairs that can be sunk"
 msgstr "指定一条指令最多能被调度几次"
 
@@ -2170,13 +2129,11 @@ msgstr ""
 
 #: params.def:1006
 #, fuzzy
-#| msgid "Allow branches to be packed with other instructions"
 msgid "Allow new data races on packed data loads to be introduced"
 msgstr "允许跳转与其他指令打包在一起"
 
 #: params.def:1011
 #, fuzzy
-#| msgid "Allow branches to be packed with other instructions"
 msgid "Allow new data races on packed data stores to be introduced"
 msgstr "允许跳转与其他指令打包在一起"
 
@@ -2206,31 +2163,26 @@ msgstr ""
 
 #: params.def:1054
 #, fuzzy
-#| msgid "Enable stack probing"
 msgid "Enable asan stack protection"
 msgstr "启用堆栈探测"
 
 #: params.def:1059
 #, fuzzy
-#| msgid "Enable all optional instructions"
 msgid "Enable asan globals protection"
 msgstr "启用所有可选指令"
 
 #: params.def:1064
 #, fuzzy
-#| msgid "Enable saturation instructions"
 msgid "Enable asan store operations protection"
 msgstr "启用饱和指令"
 
 #: params.def:1069
 #, fuzzy
-#| msgid "Enable all optional instructions"
 msgid "Enable asan load operations protection"
 msgstr "启用所有可选指令"
 
 #: params.def:1074 params.def:1079
 #, fuzzy
-#| msgid "Enable saturation instructions"
 msgid "Enable asan builtin functions protection"
 msgstr "启用饱和指令"
 
@@ -2510,7 +2462,6 @@ msgstr "<命令行>"
 #: config/aarch64/aarch64.c:3487 config/arm/arm.c:21114 config/arm/arm.c:21127
 #: config/nios2/nios2.c:1885
 #, fuzzy, c-format
-#| msgid "invalid operand for code '%c'"
 msgid "Unsupported operand for code '%c'"
 msgstr "代码‘%c’的操作数无效"
 
@@ -2519,7 +2470,6 @@ msgstr "代码‘%c’的操作数无效"
 #: config/aarch64/aarch64.c:3551 config/aarch64/aarch64.c:3567
 #: config/aarch64/aarch64.c:3586 config/aarch64/aarch64.c:3625
 #, fuzzy, c-format
-#| msgid "invalid operand for code '%c'"
 msgid "invalid operand for '%%%c'"
 msgstr "代码‘%c’的操作数无效"
 
@@ -2535,19 +2485,16 @@ msgstr "缺少操作数"
 
 #: config/aarch64/aarch64.c:3724
 #, fuzzy, c-format
-#| msgid "invalid insn:"
 msgid "invalid constant"
 msgstr "无效指令:"
 
 #: config/aarch64/aarch64.c:3727
 #, fuzzy, c-format
-#| msgid "invalid %%d operand"
 msgid "invalid operand"
 msgstr "无效的 %%d 操作数"
 
 #: config/aarch64/aarch64.c:3815
 #, fuzzy, c-format
-#| msgid "invalid operand code '%c'"
 msgid "invalid operand prefix '%%%c'"
 msgstr "无效的操作数代码‘%c’"
 
@@ -2637,19 +2584,16 @@ msgstr "无效的 %%xn 代码"
 
 #: config/arc/arc.c:2782
 #, fuzzy, c-format
-#| msgid "invalid operand to %%R code"
 msgid "invalid operand to %%Z code"
 msgstr "%%R 代码的操作数无效"
 
 #: config/arc/arc.c:2790
 #, fuzzy, c-format
-#| msgid "invalid operand to %%R code"
 msgid "invalid operand to %%z code"
 msgstr "%%R 代码的操作数无效"
 
 #: config/arc/arc.c:2798
 #, fuzzy, c-format
-#| msgid "invalid operand to %%R code"
 msgid "invalid operand to %%M code"
 msgstr "%%R 代码的操作数无效"
 
@@ -2675,7 +2619,6 @@ msgstr "%%V 代码的操作数无效"
 
 #: config/arc/arc.c:3099
 #, fuzzy, c-format
-#| msgid "invalid operand to %%R code"
 msgid "invalid operand to %%O code"
 msgstr "%%R 代码的操作数无效"
 
@@ -2689,7 +2632,6 @@ msgstr "无效的操作数输出代码"
 
 #: config/arc/arc.c:4676
 #, fuzzy, c-format
-#| msgid "invalid UNSPEC as operand"
 msgid "invalid UNSPEC as operand: %d"
 msgstr "无效的 UNSPEC 用作操作数"
 
@@ -2749,19 +2691,16 @@ msgstr "地址操作数需要 X、Y 或 Z 寄存器约束"
 
 #: config/avr/avr.c:2140
 #, fuzzy
-#| msgid "output operand %d must use %<&%> constraint"
 msgid "operands to %T/%t must be reg + const_int:"
 msgstr "输出操作数 %d 必须使用%<&%>约束"
 
 #: config/avr/avr.c:2180 config/avr/avr.c:2235
 #, fuzzy
-#| msgid "bad address, not (reg+disp):"
 msgid "bad address, not an I/O address:"
 msgstr "地址错误,不是(reg+disp):"
 
 #: config/avr/avr.c:2189
 #, fuzzy
-#| msgid "bad address, not a constant):"
 msgid "bad address, not a constant:"
 msgstr "错误的地址,不是一个常量):"
 
@@ -2813,7 +2752,6 @@ msgstr "编译器内部错误。不正确的移位量:"
 
 #: config/avr/avr.c:7100
 #, fuzzy
-#| msgid "invalid types in fixed-point conversion"
 msgid "unsupported fixed-point conversion"
 msgstr "整点转换中类型无效"
 
@@ -3058,25 +2996,21 @@ msgstr "无效的 UNSPEC 用作操作数"
 
 #: config/i386/i386.c:14839
 #, fuzzy, c-format
-#| msgid "invalid operand size for operand code '%c'"
 msgid "invalid operand size for operand code 'O'"
 msgstr "操作数代码‘%c’的操作数大小无效"
 
 #: config/i386/i386.c:14874
 #, fuzzy, c-format
-#| msgid "invalid operand size for operand code '%c'"
 msgid "invalid operand size for operand code 'z'"
 msgstr "操作数代码‘%c’的操作数大小无效"
 
 #: config/i386/i386.c:14944
 #, fuzzy, c-format
-#| msgid "invalid operand type used with operand code '%c'"
 msgid "invalid operand type used with operand code 'Z'"
 msgstr "操作数代码‘%c’的操作数类型无效"
 
 #: config/i386/i386.c:14949
 #, fuzzy, c-format
-#| msgid "invalid operand size for operand code '%c'"
 msgid "invalid operand size for operand code 'Z'"
 msgstr "操作数代码‘%c’的操作数大小无效"
 
@@ -3092,13 +3026,11 @@ msgstr "操作数不是一个条件码,无效的操作数代码‘D’"
 
 #: config/i386/i386.c:15115
 #, fuzzy, c-format
-#| msgid "operand is not a condition code, invalid operand code 'D'"
 msgid "operand is not a condition code, invalid operand code '%c'"
 msgstr "操作数不是一个条件码,无效的操作数代码‘D’"
 
 #: config/i386/i386.c:15128
 #, fuzzy, c-format
-#| msgid "operand is not a condition code, invalid operand code 'D'"
 msgid "operand is not an offsettable memory reference, invalid operand code 'H'"
 msgstr "操作数不是一个条件码,无效的操作数代码‘D’"
 
@@ -3127,7 +3059,6 @@ msgstr "使用本地 (MS) 位段存储方式"
 
 #: config/i386/i386-interix.h:78
 #, fuzzy
-#| msgid "Use native (MS) bitfield layout"
 msgid "Use gcc default bitfield layout"
 msgstr "使用本地 (MS) 位段存储方式"
 
@@ -3343,7 +3274,6 @@ msgstr "MMIX 内部错误:这不是一个常量:"
 
 #: config/msp430/msp430.c:2130
 #, fuzzy, c-format
-#| msgid "invalid reference prefix"
 msgid "invalid operand prefix"
 msgstr "无效的引用前缀"
 
@@ -3404,7 +3334,6 @@ msgstr "-mno-altivec 禁用了 VSX"
 
 #: config/rs6000/rs6000.c:3363
 #, fuzzy
-#| msgid "--resource requires -o"
 msgid "-mquad-memory requires 64-bit mode"
 msgstr "--resource 需要 -o"
 
@@ -3414,7 +3343,6 @@ msgstr ""
 
 #: config/rs6000/rs6000.c:3378
 #, fuzzy
-#| msgid "Generate code in little endian mode"
 msgid "-mquad-memory is not available in little endian mode"
 msgstr "生成小端在前的代码"
 
@@ -3503,13 +3431,11 @@ msgstr "传递 AltiVec 参数给无原型的函数"
 
 #: config/rs6000/rs6000.c:32382
 #, fuzzy
-#| msgid "Do not generate a single exit point for each function"
 msgid "Could not generate addis value for fusion"
 msgstr "不为每个函数生成单一的退出点"
 
 #: config/rs6000/rs6000.c:32441
 #, fuzzy
-#| msgid "unable to generate reloads for:"
 msgid "Unable to generate load offset for fusion"
 msgstr "无法生成重新载入,为:"
 
@@ -3638,13 +3564,11 @@ msgstr "无效的 %%B 操作数"
 #: config/sparc/sparc.c:8830 config/tilegx/tilegx.c:5061
 #: config/tilepro/tilepro.c:4516
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%C operand"
 msgstr "无效的 %%P 操作数"
 
 #: config/sparc/sparc.c:8847 config/tilegx/tilegx.c:5094
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%D operand"
 msgstr "无效的 %%P 操作数"
 
@@ -3700,49 +3624,41 @@ msgstr "无效的 %%d 操作数"
 
 #: config/tilegx/tilegx.c:5174
 #, fuzzy, c-format
-#| msgid "invalid %%L code"
 msgid "invalid %%H specifier"
 msgstr "无效 %%L 代码"
 
 #: config/tilegx/tilegx.c:5216 config/tilepro/tilepro.c:4530
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%h operand"
 msgstr "无效的 %%P 操作数"
 
 #: config/tilegx/tilegx.c:5228 config/tilepro/tilepro.c:4594
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%I operand"
 msgstr "无效的 %%P 操作数"
 
 #: config/tilegx/tilegx.c:5242 config/tilepro/tilepro.c:4608
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%i operand"
 msgstr "无效的 %%P 操作数"
 
 #: config/tilegx/tilegx.c:5265 config/tilepro/tilepro.c:4631
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%j operand"
 msgstr "无效的 %%P 操作数"
 
 #: config/tilegx/tilegx.c:5296
 #, fuzzy, c-format
-#| msgid "invalid %%c operand"
 msgid "invalid %%%c operand"
 msgstr "无效的 %%c 操作数"
 
 #: config/tilegx/tilegx.c:5311 config/tilepro/tilepro.c:4745
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%N operand"
 msgstr "无效的 %%P 操作数"
 
 #: config/tilegx/tilegx.c:5355
 #, fuzzy, c-format
-#| msgid "invalid operand for 'b' modifier"
 msgid "invalid operand for 'r' specifier"
 msgstr "‘b’修饰符的操作数无效"
 
@@ -3753,37 +3669,31 @@ msgstr ""
 
 #: config/tilepro/tilepro.c:4566
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%H operand"
 msgstr "无效的 %%P 操作数"
 
 #: config/tilepro/tilepro.c:4670
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%L operand"
 msgstr "无效的 %%P 操作数"
 
 #: config/tilepro/tilepro.c:4730
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%M operand"
 msgstr "无效的 %%P 操作数"
 
 #: config/tilepro/tilepro.c:4773
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%t operand"
 msgstr "无效的 %%P 操作数"
 
 #: config/tilepro/tilepro.c:4780
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%t operand '"
 msgstr "无效的 %%P 操作数"
 
 #: config/tilepro/tilepro.c:4801
 #, fuzzy, c-format
-#| msgid "invalid %%P operand"
 msgid "invalid %%r operand"
 msgstr "无效的 %%P 操作数"
 
@@ -4057,13 +3967,11 @@ msgstr "{匿名}"
 
 #: cp/error.c:1060
 #, fuzzy
-#| msgid "(anonymous)"
 msgid "(anonymous namespace)"
 msgstr "(匿名)"
 
 #: cp/error.c:1169
 #, fuzzy
-#| msgid "<template parameter error>"
 msgid "<template arguments error>"
 msgstr "<模板参数数错误>"
 
@@ -4104,7 +4012,6 @@ msgstr "<未解析>"
 
 #: cp/error.c:2616
 #, fuzzy
-#| msgid "<lambda"
 msgid "<lambda>"
 msgstr "<lambda"
 
@@ -4150,13 +4057,11 @@ msgstr "在 lambda 函数中"
 
 #: cp/error.c:3196
 #, fuzzy, c-format
-#| msgid "%s: In instantiation of %qs:\n"
 msgid "%s: In substitution of %qS:\n"
 msgstr "%s:在%qs的实例化中:\n"
 
 #: cp/error.c:3197
 #, fuzzy
-#| msgid "%s: In instantiation of %qs:\n"
 msgid "%s: In instantiation of %q#D:\n"
 msgstr "%s:在%qs的实例化中:\n"
 
@@ -4185,7 +4090,6 @@ msgstr "    内联自%qs于 %s:%d:%d"
 
 #: cp/error.c:3240
 #, fuzzy
-#| msgid "provided for %q+D"
 msgid "required from %q#D\n"
 msgstr "提供给%q+D"
 
@@ -4196,31 +4100,26 @@ msgstr "%s:%d:从此处实例化"
 
 #: cp/error.c:3248
 #, fuzzy
-#| msgid "called from here"
 msgid "required from here"
 msgstr "从此处调用"
 
 #: cp/error.c:3300
 #, fuzzy
-#| msgid "%s:%d:%d:   [ skipping %d instantiation contexts ]\n"
 msgid "%r%s:%d:%d:%R   [ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]\n"
 msgstr "%s:%d:%d:[ 跳过 %d 个实例化上下文 ]\n"
 
 #: cp/error.c:3306
 #, fuzzy
-#| msgid "%s:%d:%d:   [ skipping %d instantiation contexts ]\n"
 msgid "%r%s:%d:%R   [ skipping %d instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]\n"
 msgstr "%s:%d:%d:[ 跳过 %d 个实例化上下文 ]\n"
 
 #: cp/error.c:3371
 #, fuzzy
-#| msgid "%s:%d:%d:   in constexpr expansion of %qs"
 msgid "%r%s:%d:%d:%R   in constexpr expansion of %qs"
 msgstr "%s:%d:%d:在%qs的广义常表达式扩展中"
 
 #: cp/error.c:3375
 #, fuzzy
-#| msgid "%s:%d:   in constexpr expansion of %qs"
 msgid "%r%s:%d:%R   in constexpr expansion of %qs"
 msgstr "%s:%d:在%qs的广义常表达式扩展中"
 
@@ -4390,13 +4289,11 @@ msgstr ""
 
 #: fortran/error.c:899
 #, fuzzy
-#| msgid "Obsolescent feature: Computed GOTO at %C"
 msgid "Obsolescent feature:"
 msgstr "已过时的特性:%C处的计算转移 GOTO 语句"
 
 #: fortran/error.c:902
 #, fuzzy
-#| msgid "expected operator"
 msgid "Deleted feature:"
 msgstr "需要操作符"
 
@@ -4647,61 +4544,51 @@ msgstr "基本过程"
 
 #: fortran/resolve.c:2225
 #, fuzzy
-#| msgid "no arguments"
 msgid "allocatable argument"
 msgstr "没有参数"
 
 #: fortran/resolve.c:2230
 #, fuzzy
-#| msgid "not enough arguments"
 msgid "asynchronous argument"
 msgstr "实参太少"
 
 #: fortran/resolve.c:2235
 #, fuzzy
-#| msgid "invalid PHI argument"
 msgid "optional argument"
 msgstr "无效的 PHI 实参"
 
 #: fortran/resolve.c:2240
 #, fuzzy
-#| msgid "pointer assignment"
 msgid "pointer argument"
 msgstr "指针赋值"
 
 #: fortran/resolve.c:2245
 #, fuzzy
-#| msgid "no arguments"
 msgid "target argument"
 msgstr "没有参数"
 
 #: fortran/resolve.c:2250
 #, fuzzy
-#| msgid "invalid PHI argument"
 msgid "value argument"
 msgstr "无效的 PHI 实参"
 
 #: fortran/resolve.c:2255
 #, fuzzy
-#| msgid "no arguments"
 msgid "volatile argument"
 msgstr "没有参数"
 
 #: fortran/resolve.c:2260
 #, fuzzy
-#| msgid "mismatched arguments"
 msgid "assumed-shape argument"
 msgstr "参数不匹配"
 
 #: fortran/resolve.c:2265
 #, fuzzy
-#| msgid "mismatched arguments"
 msgid "assumed-rank argument"
 msgstr "参数不匹配"
 
 #: fortran/resolve.c:2270
 #, fuzzy
-#| msgid "array assignment"
 msgid "coarray argument"
 msgstr "数组赋值"
 
@@ -4711,7 +4598,6 @@ msgstr ""
 
 #: fortran/resolve.c:2280
 #, fuzzy
-#| msgid "no arguments"
 msgid "polymorphic argument"
 msgstr "没有参数"
 
@@ -4723,7 +4609,6 @@ msgstr ""
 #. See also TS 29113, Note 6.1.
 #: fortran/resolve.c:2292
 #, fuzzy
-#| msgid "mismatched arguments"
 msgid "assumed-type argument"
 msgstr "参数不匹配"
 
@@ -4738,13 +4623,11 @@ msgstr "%3$L 处“%1$s”分句对象“%2$s”有 ALLOCATABLE 组件"
 
 #: fortran/resolve.c:2315
 #, fuzzy
-#| msgid "'%s' at %L must have constant character length in this context"
 msgid "result with non-constant character length"
 msgstr "变量‘%s’在%L处上下文中字符长度必须为常量"
 
 #: fortran/resolve.c:2327
 #, fuzzy
-#| msgid "module procedure"
 msgid "bind(c) procedure"
 msgstr "模块过程"
 
@@ -4894,7 +4777,6 @@ msgstr "%3$s 中字符长度不相等 (%1$ld/%2$ld)"
 
 #: fortran/trans-intrinsic.c:6165
 #, fuzzy, c-format
-#| msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %lld)"
 msgid "Argument NCOPIES of REPEAT intrinsic is negative (its value is %ld)"
 msgstr "内建函数 REPEAT 的 NCOPIES 参数为负(其值是 %lld)"
 
@@ -4964,7 +4846,6 @@ msgstr ""
 
 #: go/go-backend.c:171
 #, fuzzy
-#| msgid "Memory allocation failed"
 msgid "memory allocation failed while reading export data"
 msgstr "内存分配失败"
 
@@ -5230,13 +5111,11 @@ msgstr "Ada 需要指定 -c 或 -S"
 
 #: ada/gcc-interface/lang-specs.h:52
 #, fuzzy
-#| msgid "-c or -S required for Ada"
 msgid "-c required for gnat2why"
 msgstr "Ada 需要指定 -c 或 -S"
 
 #: ada/gcc-interface/lang-specs.h:65
 #, fuzzy
-#| msgid "-c or -S required for Ada"
 msgid "-c required for gnat2scil"
 msgstr "Ada 需要指定 -c 或 -S"
 
@@ -5266,7 +5145,6 @@ msgstr "不能同时使用 -EB 和 -EL"
 
 #: config/avr/avr.h:526
 #, fuzzy
-#| msgid "-fpic is not supported"
 msgid "shared is not supported"
 msgstr "不支持 -fpic"
 
@@ -5284,7 +5162,6 @@ msgstr "-mas100-syntax 与 -gdwarf 不兼容"
 
 #: config/rx/rx.h:76
 #, fuzzy
-#| msgid "rx200 cpu does not have FPU hardware"
 msgid "rx100 cpu does not have FPU hardware"
 msgstr "RX200 CPU 没有 FPU 硬件"
 
@@ -5306,7 +5183,6 @@ msgstr "-femit-class-file 应当与 -fsyntax-only 一起使用"
 
 #: config/rs6000/freebsd64.h:161 config/rs6000/freebsd64.h:173
 #, fuzzy
-#| msgid "consider using `-pg' instead of `-p' with gprof(1) "
 msgid "consider using `-pg' instead of `-p' with gprof(1)"
 msgstr "与 gprof(1) 一起使用时请考虑使用‘-pg’以代替‘-p’"
 
@@ -5321,7 +5197,6 @@ msgstr ""
 
 #: gcc.c:731
 #, fuzzy
-#| msgid "-fdirectives-only is incompatible with -traditional"
 msgid "-fsanitize=address is incompatible with -fsanitize=thread"
 msgstr "-fdirectives-only 与 -traditional 不兼容"
 
@@ -5339,7 +5214,6 @@ msgstr "当输入来自标准输入设备时,需要 -E 或 -x"
 
 #: config/arm/arm.h:217
 #, fuzzy
-#| msgid "-msoft-float and -mhard_float may not be used together"
 msgid "-mfloat-abi=soft and -mfloat-abi=hard may not be used together"
 msgstr "-msoft-float 和 -mhard_float 不能一起使用"
 
@@ -5410,7 +5284,6 @@ msgstr "打印额外(可能您并不想要)的警告信息"
 
 #: fortran/lang.opt:242
 #, fuzzy
-#| msgid "Warn about implicit function declarations"
 msgid "Warn about function call elimination"
 msgstr "对隐式函数声明给出警告"
 
@@ -5436,13 +5309,11 @@ msgstr ""
 
 #: fortran/lang.opt:270
 #, fuzzy
-#| msgid "Warn when a register variable is declared volatile"
 msgid "Warn when a left-hand-side array variable is reallocated"
 msgstr "当一个寄存器变量被声明为 volatile 时给出警告"
 
 #: fortran/lang.opt:274
 #, fuzzy
-#| msgid "Warn when a register variable is declared volatile"
 msgid "Warn when a left-hand-side variable is reallocated"
 msgstr "当一个寄存器变量被声明为 volatile 时给出警告"
 
@@ -5473,7 +5344,6 @@ msgstr "对未使用的哑元给出警告。"
 
 #: fortran/lang.opt:306
 #, fuzzy
-#| msgid "Warn about zero-length formats"
 msgid "Warn about zero-trip DO loops"
 msgstr "对长度为 0 的格式字符串给出警告"
 
@@ -5616,7 +5486,6 @@ msgstr "-ffpe-trap=[...]\t在以下浮点异常的情况下停止"
 
 #: fortran/lang.opt:458
 #, fuzzy
-#| msgid "-ffpe-trap=[...]\tStop on following floating point exceptions"
 msgid "-ffpe-summary=[...]\tPrint summary of floating point exceptions"
 msgstr "-ffpe-trap=[...]\t在以下浮点异常的情况下停止"
 
@@ -5634,7 +5503,6 @@ msgstr "-ffree-line-length-<n>\t在自由模式下以 n 作为字符行宽"
 
 #: fortran/lang.opt:474
 #, fuzzy
-#| msgid "Enable linker optimizations"
 msgid "Enable front end optimization"
 msgstr "启用链接器优化"
 
@@ -5784,7 +5652,6 @@ msgstr "遵循 ISO Fortran 2008 标准"
 
 #: fortran/lang.opt:670
 #, fuzzy
-#| msgid "Conform to the ISO Fortran 2008 standard"
 msgid "Conform to the ISO Fortran 2008 standard including TS 29113"
 msgstr "遵循 ISO Fortran 2008 标准"
 
@@ -5937,13 +5804,11 @@ msgstr "当在 C 语言中使用了 C 与 C++ 交集以外的构造时给出警
 
 #: c-family/c.opt:296
 #, fuzzy
-#| msgid "Deprecated in favor of -std=c99"
 msgid "Deprecated in favor of -Wc++11-compat"
 msgstr "不建议使用,请改用 -std=c99"
 
 #: c-family/c.opt:300
 #, fuzzy
-#| msgid "Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 200x"
 msgid "Warn about C++ constructs whose meaning differs between ISO C++ 1998 and ISO C++ 2011"
 msgstr "当 C++ 构造的意义在 ISO C++ 1998 和 ISO C++ 200x 中不同时给出警告"
 
@@ -5989,13 +5854,11 @@ msgstr "当声明出现在语句后时给出警告"
 
 #: c-family/c.opt:344
 #, fuzzy
-#| msgid "dereferencing pointer to incomplete type"
 msgid "Warn when deleting a pointer to incomplete type"
 msgstr "提领指向不完全类型的指针"
 
 #: c-family/c.opt:348
 #, fuzzy
-#| msgid "Warn about non-virtual destructors"
 msgid "Warn about deleting polymorphic objects with non-virtual destructors"
 msgstr "当析构函数不是虚函数时给出警告"
 
@@ -6029,7 +5892,6 @@ msgstr "不建议使用此开关;请改用 -Werror=implicit-function-declarati
 
 #: c-family/c.opt:392
 #, fuzzy
-#| msgid "Warn for implicit type conversions that may change a value"
 msgid "Warn for implicit type conversions that cause loss of floating point precision"
 msgstr "当隐式类型转换可能改变值时给出警告"
 
@@ -6286,7 +6148,6 @@ msgstr "编译器将代码重新排序时给出警告"
 
 #: c-family/c.opt:673
 #, fuzzy
-#| msgid "returning reference to temporary"
 msgid "Warn about returning a pointer/reference to a local or temporary variable."
 msgstr "返回临时变量的引用"
 
@@ -6364,7 +6225,6 @@ msgstr "对不带后缀的浮点常量给出警告"
 
 #: c-family/c.opt:777
 #, fuzzy
-#| msgid "Warn about macros defined in the main file that are not used"
 msgid "Warn when typedefs locally defined in a function are not used"
 msgstr "当定义在主文件中的宏未被使用时给出警告"
 
@@ -6378,7 +6238,6 @@ msgstr "当一个带有 warn_unused_result 属性的函数的调用者未使用
 
 #: c-family/c.opt:789
 #, fuzzy
-#| msgid "Do not warn about using variadic macros when -pedantic"
 msgid "Warn about using variadic macros"
 msgstr "指定 -pedantic 时不为可变参数宏给出警告"
 
@@ -6404,13 +6263,11 @@ msgstr "在 C++ 中,非零值表示将字面字符串转换为‘char *’时
 
 #: c-family/c.opt:813
 #, fuzzy
-#| msgid "Warn when a label is unused"
 msgid "Warn when a literal '0' is used as null pointer"
 msgstr "有未使用的标号时警告"
 
 #: c-family/c.opt:817
 #, fuzzy
-#| msgid "Warn about misuses of pragmas"
 msgid "Warn about useless casts"
 msgstr "对错误使用的 pragma 加以警告"
 
@@ -6467,25 +6324,21 @@ msgstr "-fconst-string-class=<名字>\t使用名字作为常量字符串类的
 
 #: c-family/c.opt:883
 #, fuzzy
-#| msgid "-ftemplate-depth=<number>\tSpecify maximum template instantiation depth"
 msgid "-fconstexpr-depth=<number>\tSpecify maximum constexpr recursion depth"
 msgstr "-ftemplate-depth=<N>\t指定模板实例化的最大深度"
 
 #: c-family/c.opt:887
 #, fuzzy
-#| msgid "Enable traditional preprocessing"
 msgid "Emit debug annotations during preprocessing"
 msgstr "启用传统预处理"
 
 #: c-family/c.opt:891
 #, fuzzy
-#| msgid "-fno-deduce-init-list\tdisable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list"
 msgid "-fdeduce-init-list\tenable deduction of std::initializer_list for a template type parameter from a brace-enclosed initializer-list"
 msgstr "-fno-deduce-init-list\t禁用为模板类型参数从花括号中的初始值设定列表演绎 std::initializer_list"
 
 #: c-family/c.opt:895
 #, fuzzy
-#| msgid "Warn when all constructors and destructors are private"
 msgid "Factor complex constructors and destructors to favor space over speed"
 msgstr "当所有构造函数和析构函数都是私有时给出警告"
 
@@ -6632,7 +6485,6 @@ msgstr "启用 OpenMP(对 Fortran 而言也同时设定 -frecursive)"
 
 #: c-family/c.opt:1090
 #, fuzzy
-#| msgid "Unclassifiable OpenMP directive at %C"
 msgid "Enable OpenMP's SIMD directives"
 msgstr "%C处的 OpenMP 指示无法分类"
 
@@ -6710,7 +6562,6 @@ msgstr "-ftabstop=<N>\t指定报告列号时制表位间的距离"
 
 #: c-family/c.opt:1183
 #, fuzzy
-#| msgid "The maximum number of peelings of a single loop"
 msgid "Set the maximum number of template instantiation notes for a single warning or error"
 msgstr "单个循环最大的剥离数"
 
@@ -6740,7 +6591,6 @@ msgstr "在异常处理中使用 __cxa_get_exception_ptr"
 
 #: c-family/c.opt:1217
 #, fuzzy
-#| msgid "Marks all inlined methods as having hidden visibility"
 msgid "Marks all inlined functions and methods as having hidden visibility"
 msgstr "将所有内联函数标记为具有隐藏的可见性"
 
@@ -6842,37 +6692,31 @@ msgstr "包含文件时映射短文件名"
 
 #: c-family/c.opt:1344 c-family/c.opt:1348
 #, fuzzy
-#| msgid "Conform to the ISO 1998 C++ standard with GNU extensions"
 msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical corrigendum"
 msgstr "遵循 ISO 1998 C++ 标准,也支持 GNU 扩展"
 
 #: c-family/c.opt:1352
 #, fuzzy
-#| msgid "Conform to the ISO 201X C standard draft (experimental and incomplete support)"
 msgid "Conform to the ISO 2011 C++ standard (experimental and incomplete support)"
 msgstr "遵循 ISO 201X C 标准草案(试验性质的不完全支持)"
 
 #: c-family/c.opt:1356
 #, fuzzy
-#| msgid "Deprecated in favor of -std=c99"
 msgid "Deprecated in favor of -std=c++11"
 msgstr "不建议使用,请改用 -std=c99"
 
 #: c-family/c.opt:1360
 #, fuzzy
-#| msgid "Conform to the ISO 201X C standard draft (experimental and incomplete support)"
 msgid "Conform to the ISO 201y(7?) C++ draft standard (experimental and incomplete support)"
 msgstr "遵循 ISO 201X C 标准草案(试验性质的不完全支持)"
 
 #: c-family/c.opt:1364 c-family/c.opt:1450
 #, fuzzy
-#| msgid "Conform to the ISO 201X C standard draft (experimental and incomplete support)"
 msgid "Conform to the ISO 2011 C standard (experimental and incomplete support)"
 msgstr "遵循 ISO 201X C 标准草案(试验性质的不完全支持)"
 
 #: c-family/c.opt:1368
 #, fuzzy
-#| msgid "Deprecated in favor of -std=c99"
 msgid "Deprecated in favor of -std=c11"
 msgstr "不建议使用,请改用 -std=c99"
 
@@ -6890,37 +6734,31 @@ msgstr "不建议使用,请改用 -std=c99"
 
 #: c-family/c.opt:1388 c-family/c.opt:1393
 #, fuzzy
-#| msgid "Conform to the ISO 1998 C++ standard with GNU extensions"
 msgid "Conform to the ISO 1998 C++ standard revised by the 2003 technical"
 msgstr "遵循 ISO 1998 C++ 标准,也支持 GNU 扩展"
 
 #: c-family/c.opt:1398
 #, fuzzy
-#| msgid "Conform to the ISO 201X C standard draft with GNU extensions (experimental and incomplete support)"
 msgid "Conform to the ISO 2011 C++ standard with GNU extensions (experimental and incomplete support)"
 msgstr "遵循 ISO 201X C 标准草案和 GNU 扩展(试验性质的不完全支持)"
 
 #: c-family/c.opt:1402
 #, fuzzy
-#| msgid "Deprecated in favor of -std=gnu99"
 msgid "Deprecated in favor of -std=gnu++11"
 msgstr "不建议使用,请改用 -std=gnu99"
 
 #: c-family/c.opt:1406
 #, fuzzy
-#| msgid "Conform to the ISO 201X C standard draft with GNU extensions (experimental and incomplete support)"
 msgid "Conform to the ISO 201y(7?) C++ draft standard with GNU extensions (experimental and incomplete support)"
 msgstr "遵循 ISO 201X C 标准草案和 GNU 扩展(试验性质的不完全支持)"
 
 #: c-family/c.opt:1410
 #, fuzzy
-#| msgid "Conform to the ISO 201X C standard draft with GNU extensions (experimental and incomplete support)"
 msgid "Conform to the ISO 2011 C standard with GNU extensions (experimental and incomplete support)"
 msgstr "遵循 ISO 201X C 标准草案和 GNU 扩展(试验性质的不完全支持)"
 
 #: c-family/c.opt:1414
 #, fuzzy
-#| msgid "Deprecated in favor of -std=gnu99"
 msgid "Deprecated in favor of -std=gnu11"
 msgstr "不建议使用,请改用 -std=gnu99"
 
@@ -6958,7 +6796,6 @@ msgstr "不预定义系统或 GCC 特定的宏"
 
 #: ada/gcc-interface/lang.opt:61
 #, fuzzy
-#| msgid "Synonym for -Wcomment"
 msgid "Synonym of -gnatk8"
 msgstr "-Wcomment 的同义词"
 
@@ -6968,7 +6805,6 @@ msgstr ""
 
 #: ada/gcc-interface/lang.opt:73
 #, fuzzy
-#| msgid "Select code model"
 msgid "Select the runtime"
 msgstr "选择代码模型"
 
@@ -7036,7 +6872,6 @@ msgstr ""
 
 #: config/vms/vms.opt:42
 #, fuzzy, c-format
-#| msgid "unknown TLS model %qs"
 msgid "unknown pointer size model %qs"
 msgstr "未知的 TLS 模型%qs"
 
@@ -7547,7 +7382,6 @@ msgstr "假定目标 CPU 被配置为大端在前"
 
 #: config/aarch64/aarch64.opt:68
 #, fuzzy
-#| msgid "Generate code which uses hardware floating point instructions"
 msgid "Generate code which uses only the general registers"
 msgstr "生成使用硬件浮点指令的代码"
 
@@ -7558,7 +7392,6 @@ msgstr "假定目标 CPU 被配置为小端在前"
 
 #: config/aarch64/aarch64.opt:76
 #, fuzzy
-#| msgid "Select code model"
 msgid "Specify the code model"
 msgstr "选择代码模型"
 
@@ -7576,13 +7409,11 @@ msgstr ""
 
 #: config/aarch64/aarch64.opt:92
 #, fuzzy
-#| msgid "-mcpu=\tUse features of and schedule code for given CPU"
 msgid "-march=ARCH\tUse features of architecture ARCH"
 msgstr "-mcpu=\t使用指定 CPU 的特性和调度代码"
 
 #: config/aarch64/aarch64.opt:96
 #, fuzzy
-#| msgid "-mcpu=\tUse features of and schedule code for given CPU"
 msgid "-mcpu=CPU\tUse features of and optimize for CPU"
 msgstr "-mcpu=\t使用指定 CPU 的特性和调度代码"
 
@@ -7592,7 +7423,6 @@ msgstr ""
 
 #: config/aarch64/aarch64.opt:104
 #, fuzzy
-#| msgid "-mabi=ABI\tGenerate code that conforms to the given ABI"
 msgid "-mabi=ABI\tGenerate code that conforms to the specified ABI"
 msgstr "-mabi=ABI\t生成遵循给定 ABI 的代码"
 
@@ -7874,25 +7704,21 @@ msgstr ""
 
 #: config/epiphany/epiphany.opt:32
 #, fuzzy
-#| msgid "Relax branches"
 msgid "Set branch cost"
 msgstr "放宽跳转"
 
 #: config/epiphany/epiphany.opt:36
 #, fuzzy
-#| msgid "Enable all optional instructions"
 msgid "enable conditional move instruction usage."
 msgstr "启用所有可选指令"
 
 #: config/epiphany/epiphany.opt:40
 #, fuzzy
-#| msgid "The number of insns executed before prefetch is completed"
 msgid "set number of nops to emit before each insn pattern"
 msgstr "预取操作完成前执行指令的数目"
 
 #: config/epiphany/epiphany.opt:52
 #, fuzzy
-#| msgid "Use software floating point"
 msgid "Use software floating point comparisons"
 msgstr "使用软件浮点单元"
 
@@ -7918,13 +7744,11 @@ msgstr ""
 
 #: config/epiphany/epiphany.opt:76
 #, fuzzy
-#| msgid "Generate call insns as indirect calls, if necessary"
 msgid "Generate call insns as indirect calls"
 msgstr "如有必须,为调用指令生成间接调用"
 
 #: config/epiphany/epiphany.opt:80
 #, fuzzy
-#| msgid "Generate call insns as indirect calls, if necessary"
 msgid "Generate call insns as direct calls"
 msgstr "如有必须,为调用指令生成间接调用"
 
@@ -7938,7 +7762,6 @@ msgstr ""
 
 #: config/epiphany/epiphany.opt:112
 #, fuzzy
-#| msgid "Use structs on stronger alignment for double-word copies"
 msgid "Vectorize for double-word operations."
 msgstr "为结构使用更强的对齐以使用双字复制"
 
@@ -7948,7 +7771,6 @@ msgstr ""
 
 #: config/epiphany/epiphany.opt:132
 #, fuzzy
-#| msgid "Use hardware floating point conversion instructions"
 msgid "Use the floating point unit for integer add/subtract."
 msgstr "使用浮点转换指令"
 
@@ -8184,7 +8006,6 @@ msgstr "sizeof(long double) 等于 12"
 
 #: config/i386/i386.opt:190
 #, fuzzy
-#| msgid "Use 128-bit long double"
 msgid "Use 80-bit long double"
 msgstr "使用 128 位 long double"
 
@@ -8244,7 +8065,6 @@ msgstr ""
 
 #: config/i386/i386.opt:271
 #, fuzzy
-#| msgid "Use given x86-64 code model"
 msgid "Use given address mode"
 msgstr "使用给定的 x86-64 代码模式"
 
@@ -8291,19 +8111,16 @@ msgstr "不建议使用%<-mintel-syntax%>和 %<-mno-intel-syntax%>;请改用%<
 
 #: config/i386/i386.opt:369
 #, fuzzy
-#| msgid "Set 80387 floating-point precision (-mpc32, -mpc64, -mpc80)"
 msgid "Set 80387 floating-point precision to 32-bit"
 msgstr "设定 80387 浮点精度(-mpc32、-mpc64、-mpc80)"
 
 #: config/i386/i386.opt:373
 #, fuzzy
-#| msgid "Set 80387 floating-point precision (-mpc32, -mpc64, -mpc80)"
 msgid "Set 80387 floating-point precision to 64-bit"
 msgstr "设定 80387 浮点精度(-mpc32、-mpc64、-mpc80)"
 
 #: config/i386/i386.opt:377
 #, fuzzy
-#| msgid "Set 80387 floating-point precision (-mpc32, -mpc64, -mpc80)"
 msgid "Set 80387 floating-point precision to 80-bit"
 msgstr "设定 80387 浮点精度(-mpc32、-mpc64、-mpc80)"
 
@@ -8361,7 +8178,6 @@ msgstr "选择生成字符串操作的策略"
 
 #: config/i386/i386.opt:433
 #, fuzzy
-#| msgid "bad value (%s) for %sstringop-strategy=%s %s"
 msgid "Valid arguments to -mstringop-strategy=:"
 msgstr "%2$sstringop-strategy=%3$s %4$s所带参数(%1$s)不正确"
 
@@ -8425,7 +8241,6 @@ msgstr ""
 
 #: config/i386/i386.opt:543
 #, fuzzy
-#| msgid "Do dispatch scheduling if processor is bdver1 and Haifa scheduling"
 msgid "Do dispatch scheduling if processor is bdver1 or bdver2 or bdver3 or bdver4 and Haifa scheduling"
 msgstr "进行海法调度,当处理器是 bdver1 时也进行派遣调度"
 
@@ -8443,13 +8258,11 @@ msgstr "生成 64 位 x86-64 代码"
 
 #: config/i386/i386.opt:562
 #, fuzzy
-#| msgid "Generate 64bit x86-64 code"
 msgid "Generate 32bit x86-64 code"
 msgstr "生成 64 位 x86-64 代码"
 
 #: config/i386/i386.opt:566
 #, fuzzy
-#| msgid "Generate 32bit i386 code"
 msgid "Generate 16bit i386 code"
 msgstr "生成 32 位 i386 代码"
 
@@ -8503,31 +8316,26 @@ msgstr "支持 MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2 和 AVX 内建
 
 #: config/i386/i386.opt:622
 #, fuzzy
-#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation"
 msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in functions and code generation"
 msgstr "支持 MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AVX 和 FMA 内建函数及代码生成"
 
 #: config/i386/i386.opt:626
 #, fuzzy
-#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation"
 msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F built-in functions and code generation"
 msgstr "支持 MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AVX 和 FMA 内建函数及代码生成"
 
 #: config/i386/i386.opt:630
 #, fuzzy
-#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation"
 msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512PF built-in functions and code generation"
 msgstr "支持 MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AVX 和 FMA 内建函数及代码生成"
 
 #: config/i386/i386.opt:634
 #, fuzzy
-#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation"
 msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512ER built-in functions and code generation"
 msgstr "支持 MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AVX 和 FMA 内建函数及代码生成"
 
 #: config/i386/i386.opt:638
 #, fuzzy
-#| msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in functions and code generation"
 msgid "Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and AVX512CD built-in functions and code generation"
 msgstr "支持 MMX、SSE、SSE2、SSE3、SSSE3、SSE4.1、SSE4.2、AVX 和 FMA 内建函数及代码生成"
 
@@ -8565,13 +8373,11 @@ msgstr "支持 BMI 内建函数及代码生成"
 
 #: config/i386/i386.opt:674
 #, fuzzy
-#| msgid "Support BMI built-in functions and code generation"
 msgid "Support BMI2 built-in functions and code generation"
 msgstr "支持 BMI 内建函数及代码生成"
 
 #: config/i386/i386.opt:678
 #, fuzzy
-#| msgid "Support TBM built-in functions and code generation"
 msgid "Support LZCNT built-in function and code generation"
 msgstr "支持 TBM 内建函数及代码生成"
 
@@ -8581,7 +8387,6 @@ msgstr ""
 
 #: config/i386/i386.opt:686
 #, fuzzy
-#| msgid "Use SmartMIPS instructions"
 msgid "Support RDSEED instruction"
 msgstr "使用 SmartMIPS 指令"
 
@@ -8591,7 +8396,6 @@ msgstr ""
 
 #: config/i386/i386.opt:694
 #, fuzzy
-#| msgid "Support code generation of crc32 instruction."
 msgid "Support flag-preserving add-carry instructions"
 msgstr "支持生成 crc32 指令。"
 
@@ -8601,13 +8405,11 @@ msgstr ""
 
 #: config/i386/i386.opt:702
 #, fuzzy
-#| msgid "Support calls between Thumb and ARM instruction sets"
 msgid "Support XSAVE and XRSTOR instructions"
 msgstr "支持 Thumb 和 ARM 指令集间互相调用g"
 
 #: config/i386/i386.opt:706
 #, fuzzy
-#| msgid "Support MMX built-in functions"
 msgid "Support XSAVEOPT instruction"
 msgstr "支持 MMX 内建函数"
 
@@ -8637,7 +8439,6 @@ msgstr "支持 AES 内建函数及代码生成"
 
 #: config/i386/i386.opt:734
 #, fuzzy
-#| msgid "Support MMX and SSE built-in functions and code generation"
 msgid "Support SHA1 and SHA256 built-in functions and code generation"
 msgstr "支持 MMX 和 SSE 内建函数及代码生成"
 
@@ -8680,13 +8481,11 @@ msgstr ""
 
 #: config/i386/i386.opt:774
 #, fuzzy
-#| msgid "Support TBM built-in functions and code generation"
 msgid "Support RTM built-in functions and code generation"
 msgstr "支持 TBM 内建函数及代码生成"
 
 #: config/i386/i386.opt:778
 #, fuzzy
-#| msgid "Use propolice as a stack protection method"
 msgid "Use given stack-protector guard"
 msgstr "使用 propolice 来保护堆栈"
 
@@ -8805,7 +8604,6 @@ msgstr "启用后端调试"
 
 #: config/v850/v850.opt:41
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the callt instruction (default)"
 msgstr "不使用 callt 指令"
 
@@ -8871,13 +8669,11 @@ msgstr "为 v850e2v3 处理器编译"
 
 #: config/v850/v850.opt:117
 #, fuzzy
-#| msgid "Compile for the v850e processor"
 msgid "Compile for the v850e3v5 processor"
 msgstr "为 v850e 处理器编译"
 
 #: config/v850/v850.opt:124
 #, fuzzy
-#| msgid "Enable clip instructions"
 msgid "Enable v850e3v5 loop instructions"
 msgstr "启用 clip 指令"
 
@@ -8887,37 +8683,31 @@ msgstr "为 ZDA 区域合格的数据设置最大尺寸"
 
 #: config/v850/v850.opt:135
 #, fuzzy
-#| msgid "Enable the rank heuristic in the scheduler"
 msgid "Enable relaxing in the assembler"
 msgstr "在调度器中启用秩启发"
 
 #: config/v850/v850.opt:139
 #, fuzzy
-#| msgid "Prohibit PC relative function calls"
 msgid "Prohibit PC relative jumps"
 msgstr "禁止相对 PC 的函数调用"
 
 #: config/v850/v850.opt:143
 #, fuzzy
-#| msgid "Prevent the use of all hardware floating-point instructions"
 msgid "Inhibit the use of hardware floating point instructions"
 msgstr "不允许使用任何硬件浮点指令"
 
 #: config/v850/v850.opt:147
 #, fuzzy
-#| msgid "Allow the use of hardware floating-point ABI and instructions"
 msgid "Allow the use of hardware floating point instructions for V850E2V3 and up"
 msgstr "允许使用硬件浮点 ABI 和指令"
 
 #: config/v850/v850.opt:151
 #, fuzzy
-#| msgid "Enable the use of RX FPU instructions.  This is the default."
 msgid "Enable support for the RH850 ABI.  This is the default"
 msgstr "启用使用 RX FPU 指令。这是默认值。"
 
 #: config/v850/v850.opt:155
 #, fuzzy
-#| msgid "Enable support for huge objects"
 msgid "Enable support for the old GCC ABI"
 msgstr "启用对巨型对象的支持"
 
@@ -8951,13 +8741,11 @@ msgstr "假定 VxWorks vThreads 环境"
 
 #: config/cr16/cr16.opt:23
 #, fuzzy
-#| msgid "-msim\tUse simulator runtime"
 msgid "-msim   Use simulator runtime"
 msgstr "-msim\t使用仿真器运行时"
 
 #: config/cr16/cr16.opt:27
 #, fuzzy
-#| msgid "Generate bit instructions"
 msgid "Generate SBIT, CBIT instructions"
 msgstr "生成位指令"
 
@@ -8971,19 +8759,16 @@ msgstr ""
 
 #: config/cr16/cr16.opt:42
 #, fuzzy
-#| msgid "Generate code for a cpu32"
 msgid "Generate code for CR16C architecture"
 msgstr "为 cpu32 生成代码"
 
 #: config/cr16/cr16.opt:46
 #, fuzzy
-#| msgid "Generate code for GNU assembler (gas)"
 msgid "Generate code for CR16C+ architecture (Default)"
 msgstr "为 GNU 汇编器(gas)生成代码"
 
 #: config/cr16/cr16.opt:50
 #, fuzzy
-#| msgid "Pointers are 32-bit"
 msgid "Treat integers as 32-bit."
 msgstr "指针是 32 位"
 
@@ -9038,7 +8823,6 @@ msgstr ""
 
 #: config/avr/avr.opt:80
 #, fuzzy
-#| msgid "taking the address of a label is non-standard"
 msgid "Warn if the address space of an address is changed."
 msgstr "取标号的地址不符合标准"
 
@@ -9157,7 +8941,6 @@ msgstr "使用 128 位 long double"
 
 #: config/s390/s390.opt:117
 #, fuzzy
-#| msgid "Use hardware floating point instructions"
 msgid "Use hardware transactional execution instructions"
 msgstr "使用硬件浮点指令"
 
@@ -9203,7 +8986,6 @@ msgstr ""
 
 #: config/s390/s390.opt:167 config/rs6000/rs6000.opt:470
 #, fuzzy
-#| msgid "Use ROM instead of RAM"
 msgid "Use LRA instead of reload"
 msgstr "使用 ROM 而不是 RAM"
 
@@ -9217,7 +8999,6 @@ msgstr ""
 
 #: config/rl78/rl78.opt:47
 #, fuzzy
-#| msgid "Specifies the number of registers to reserve for interrupt handlers."
 msgid "Use all registers, reserving none for interrupt handlers."
 msgstr "指定保留给中断处理函数使用的寄存器的数量"
 
@@ -9227,7 +9008,6 @@ msgstr ""
 
 #: config/rl78/rl78.opt:55
 #, fuzzy
-#| msgid "Target the AM33/2.0 processor"
 msgid "Target the RL78/G10 series"
 msgstr "目标为 AM33/2.0 处理器"
 
@@ -9277,7 +9057,6 @@ msgstr "生成可重入的 PIC 代码"
 
 #: config/arm/arm.opt:90
 #, fuzzy
-#| msgid "Generate code for 32 bit addressing"
 msgid "Generate code in 32 bit ARM state."
 msgstr "为 32 位寻址生成代码"
 
@@ -9303,7 +9082,6 @@ msgstr "指定 __fp16 浮点格式"
 
 #: config/arm/arm.opt:131
 #, fuzzy
-#| msgid "invalid __fp16 format option: -mfp16-format=%s"
 msgid "Known __fp16 formats (for use with the -mfp16-format= option):"
 msgstr "无效的 __fp16 浮点选项:-mfp16-format=%s"
 
@@ -9317,7 +9095,6 @@ msgstr "如有必须,为调用指令生成间接调用"
 
 #: config/arm/arm.opt:163
 #, fuzzy
-#| msgid "Assume arguments alias no other storage"
 msgid "Assume data segments are relative to text segment."
 msgstr "假定实参不与其他存储重叠"
 
@@ -9343,7 +9120,6 @@ msgstr "为结构指定最小位对齐"
 
 #: config/arm/arm.opt:190
 #, fuzzy
-#| msgid "Generate code for GNU as"
 msgid "Generate code for Thumb state"
 msgstr "为 GNU as 生成代码"
 
@@ -9353,7 +9129,6 @@ msgstr "支持 Thumb 和 ARM 指令集间互相调用g"
 
 #: config/arm/arm.opt:198
 #, fuzzy
-#| msgid "Use given thread-local storage dialect"
 msgid "Specify thread local storage scheme"
 msgstr "使用给定的线程局部存储模式"
 
@@ -9380,7 +9155,6 @@ msgstr "为指定的处理器优化代码"
 
 #: config/arm/arm.opt:236
 #, fuzzy
-#| msgid "Assume big endian bytes, little endian words"
 msgid "Assume big endian bytes, little endian words.  This option is deprecated."
 msgstr "假定高位字节在前,低位字在前"
 
@@ -9390,7 +9164,6 @@ msgstr "使用 Neon 四字(而非双字)寄存器来进行向量化"
 
 #: config/arm/arm.opt:244
 #, fuzzy
-#| msgid "Use Neon quad-word (rather than double-word) registers for vectorization"
 msgid "Use Neon double-word (rather than quad-word) registers for vectorization"
 msgstr "使用 Neon 四字(而非双字)寄存器来进行向量化"
 
@@ -9436,7 +9209,6 @@ msgstr "不使用硬件浮点单元"
 
 #: config/sparc/sparc.opt:42
 #, fuzzy
-#| msgid "Use alternate register names"
 msgid "Use flat register window model"
 msgstr "使用另一套寄存器名"
 
@@ -9462,37 +9234,31 @@ msgstr "为 V8+ ABI 编译"
 
 #: config/sparc/sparc.opt:66
 #, fuzzy
-#| msgid "Use UltraSPARC Visual Instruction Set extensions"
 msgid "Use UltraSPARC Visual Instruction Set version 1.0 extensions"
 msgstr "使用 UltraSPARC 可视化指令集"
 
 #: config/sparc/sparc.opt:70
 #, fuzzy
-#| msgid "Use UltraSPARC Visual Instruction Set extensions"
 msgid "Use UltraSPARC Visual Instruction Set version 2.0 extensions"
 msgstr "使用 UltraSPARC 可视化指令集"
 
 #: config/sparc/sparc.opt:74
 #, fuzzy
-#| msgid "Use UltraSPARC Visual Instruction Set extensions"
 msgid "Use UltraSPARC Visual Instruction Set version 3.0 extensions"
 msgstr "使用 UltraSPARC 可视化指令集"
 
 #: config/sparc/sparc.opt:78
 #, fuzzy
-#| msgid "Use UltraSPARC Visual Instruction Set extensions"
 msgid "Use UltraSPARC Compare-and-Branch extensions"
 msgstr "使用 UltraSPARC 可视化指令集"
 
 #: config/sparc/sparc.opt:82
 #, fuzzy
-#| msgid "Use UltraSPARC Visual Instruction Set extensions"
 msgid "Use UltraSPARC Fused Multiply-Add extensions"
 msgstr "使用 UltraSPARC 可视化指令集"
 
 #: config/sparc/sparc.opt:86
 #, fuzzy
-#| msgid "Use hardware floating point instructions"
 msgid "Use UltraSPARC Population-Count instruction"
 msgstr "使用硬件浮点指令"
 
@@ -9534,7 +9300,6 @@ msgstr "使用给定的 SPARC-V9 代码模型"
 
 #: config/sparc/sparc.opt:196
 #, fuzzy
-#| msgid "-mdebug=\tEnable debug output"
 msgid "Enable debug output"
 msgstr "-mdebug=\t启用调试输出"
 
@@ -9628,13 +9393,11 @@ msgstr "使用 AltiVec 指令"
 
 #: config/rs6000/rs6000.opt:145
 #, fuzzy
-#| msgid "Generate code in little endian mode"
 msgid "Generate Altivec instructions using little-endian element order"
 msgstr "生成小端在前的代码"
 
 #: config/rs6000/rs6000.opt:149
 #, fuzzy
-#| msgid "Generate VRSAVE instructions when generating AltiVec code"
 msgid "Generate Altivec instructions using big-endian element order"
 msgstr "生成 AltiVec 代码时生成 VRSAVE 指令"
 
@@ -9741,13 +9504,11 @@ msgstr "生成 AltiVec 代码时生成 VRSAVE 指令"
 
 #: config/rs6000/rs6000.opt:322
 #, fuzzy
-#| msgid "-mvrsave=yes/no\tDeprecated option.  Use -mvrsave/-mno-vrsave instead"
 msgid "Deprecated option.  Use -mno-vrsave instead"
 msgstr "-mvrsave=yes/no\t不建议使用的选项。请改用 -mvrsave/-mno-vrsave"
 
 #: config/rs6000/rs6000.opt:326
 #, fuzzy
-#| msgid "Deprecated.  Use -Os instead"
 msgid "Deprecated option.  Use -mvrsave instead"
 msgstr "不建议使用。请改用 -Os"
 
@@ -9761,13 +9522,11 @@ msgstr "生成 isel 指令"
 
 #: config/rs6000/rs6000.opt:338
 #, fuzzy
-#| msgid "-misel=yes/no\tDeprecated option.  Use -misel/-mno-isel instead"
 msgid "Deprecated option.  Use -mno-isel instead"
 msgstr "-misel=yes/no\t不建议使用的选项。请改用 -misel/-mno-isel"
 
 #: config/rs6000/rs6000.opt:342
 #, fuzzy
-#| msgid "Deprecated.  Use -Os instead"
 msgid "Deprecated option.  Use -misel instead"
 msgstr "不建议使用。请改用 -Os"
 
@@ -9781,13 +9540,11 @@ msgstr "生成 PPC750CL 配对单精度指令"
 
 #: config/rs6000/rs6000.opt:354
 #, fuzzy
-#| msgid "-mspe=yes/no\tDeprecated option.  Use -mspe/-mno-spe instead"
 msgid "Deprecated option.  Use -mno-spe instead"
 msgstr "-mspe=yes/no\t不建议使用的选项。请改用 -mspe/-mno-spe"
 
 #: config/rs6000/rs6000.opt:358
 #, fuzzy
-#| msgid "Deprecated.  Use -Os instead"
 msgid "Deprecated option.  Use -mspe instead"
 msgstr "不建议使用。请改用 -Os"
 
@@ -9797,37 +9554,31 @@ msgstr "-mdebug=\t启用调试输出"
 
 #: config/rs6000/rs6000.opt:366
 #, fuzzy
-#| msgid "Use the Cray Pointer extension"
 msgid "Use the AltiVec ABI extensions"
 msgstr "使用 Cray 指针扩展"
 
 #: config/rs6000/rs6000.opt:370
 #, fuzzy
-#| msgid "Do not use the bit-field instructions"
 msgid "Do not use the AltiVec ABI extensions"
 msgstr "不使用位段指令"
 
 #: config/rs6000/rs6000.opt:374
 #, fuzzy
-#| msgid "Use the Cray Pointer extension"
 msgid "Use the SPE ABI extensions"
 msgstr "使用 Cray 指针扩展"
 
 #: config/rs6000/rs6000.opt:378
 #, fuzzy
-#| msgid "Do not use the bit-field instructions"
 msgid "Do not use the SPE ABI extensions"
 msgstr "不使用位段指令"
 
 #: config/rs6000/rs6000.opt:382
 #, fuzzy
-#| msgid "Use EABI"
 msgid "Use the ELFv1 ABI"
 msgstr "使用 EABI"
 
 #: config/rs6000/rs6000.opt:386
 #, fuzzy
-#| msgid "Use EABI"
 msgid "Use the ELFv2 ABI"
 msgstr "使用 EABI"
 
@@ -9947,7 +9698,6 @@ msgstr ""
 
 #: config/rs6000/rs6000.opt:554
 #, fuzzy
-#| msgid "Align destination of the string operations"
 msgid "Allow sign extension in fusion operations"
 msgstr "对齐字符串操作的目标"
 
@@ -9957,7 +9707,6 @@ msgstr ""
 
 #: config/rs6000/rs6000.opt:562
 #, fuzzy
-#| msgid "Use SmartMIPS instructions"
 msgid "Use ISA 2.07 crypto instructions"
 msgstr "使用 SmartMIPS 指令"
 
@@ -9967,13 +9716,11 @@ msgstr ""
 
 #: config/rs6000/rs6000.opt:570
 #, fuzzy
-#| msgid "Use vector/scalar (VSX) instructions"
 msgid "Use ISA 2.07 transactional memory (HTM) instructions"
 msgstr "使用向量/标量(VSX)指令"
 
 #: config/rs6000/rs6000.opt:574
 #, fuzzy
-#| msgid "Generate load/store multiple instructions"
 msgid "Generate the quad word memory instructions (lq/stq)."
 msgstr "生成加载/存储乘法指令"
 
@@ -10165,7 +9912,6 @@ msgstr ""
 
 #: config/tilepro/tilepro.opt:28 config/tilegx/tilegx.opt:26
 #, fuzzy
-#| msgid "-mcpu=\tUse features of and schedule code for given CPU"
 msgid "-mcpu=CPU\tUse features of and schedule code for given CPU"
 msgstr "-mcpu=\t使用指定 CPU 的特性和调度代码"
 
@@ -10195,7 +9941,6 @@ msgstr "启用用户自定义指令"
 
 #: config/nios2/elf.opt:26
 #, fuzzy
-#| msgid "Link with the fast floating-point library"
 msgid "Link with a limited version of the C library"
 msgstr "与快速浮点库链接"
 
@@ -10217,7 +9962,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:39
 #, fuzzy
-#| msgid "Enable clip instructions"
 msgid "Enable MUL instructions"
 msgstr "启用 clip 指令"
 
@@ -10227,19 +9971,16 @@ msgstr ""
 
 #: config/nios2/nios2.opt:47
 #, fuzzy
-#| msgid "Use the software emulation for divides (default)"
 msgid "Use table based fast divide (default at -O3)"
 msgstr "使用软件模拟除法(默认)"
 
 #: config/nios2/nios2.opt:51
 #, fuzzy
-#| msgid "Enable unaligned load/store instruction"
 msgid "All memory accesses use I/O load/store instructions"
 msgstr "启用不对齐的载入/存储指令"
 
 #: config/nios2/nios2.opt:55
 #, fuzzy
-#| msgid "Enable unaligned load/store instruction"
 msgid "Volatile memory accesses use I/O load/store instructions"
 msgstr "启用不对齐的载入/存储指令"
 
@@ -10268,7 +10009,6 @@ msgstr "大定点常量隐式截断为定点类型"
 
 #: config/nios2/nios2.opt:79
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the ftruncds custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10278,7 +10018,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:87
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fextsd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10288,19 +10027,16 @@ msgstr ""
 
 #: config/nios2/nios2.opt:95
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fixdu custom instruction"
 msgstr "不使用 callt 指令"
 
 #: config/nios2/nios2.opt:99
 #, fuzzy
-#| msgid "Enable divide and modulus instructions"
 msgid "Integer id (N) of fixdu custom instruction"
 msgstr "启用除法和求余指令"
 
 #: config/nios2/nios2.opt:103
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fixdi custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10310,7 +10046,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:111
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fixsu custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10320,7 +10055,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:119
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fixsi custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10330,31 +10064,26 @@ msgstr ""
 
 #: config/nios2/nios2.opt:127
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the floatud custom instruction"
 msgstr "不使用 callt 指令"
 
 #: config/nios2/nios2.opt:131
 #, fuzzy
-#| msgid "Enable unaligned load/store instruction"
 msgid "Integer id (N) of floatud custom instruction"
 msgstr "启用不对齐的载入/存储指令"
 
 #: config/nios2/nios2.opt:135
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the floatid custom instruction"
 msgstr "不使用 callt 指令"
 
 #: config/nios2/nios2.opt:139
 #, fuzzy
-#| msgid "Enable unaligned load/store instruction"
 msgid "Integer id (N) of floatid custom instruction"
 msgstr "启用不对齐的载入/存储指令"
 
 #: config/nios2/nios2.opt:143
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the floatus custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10364,7 +10093,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:151
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the floatis custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10374,7 +10102,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:159
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcmpned custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10384,7 +10111,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:167
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcmpeqd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10394,7 +10120,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:175
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcmpged custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10404,7 +10129,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:183
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcmpgtd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10414,7 +10138,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:191
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcmpled custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10424,7 +10147,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:199
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcmpltd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10434,7 +10156,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:207
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the flogd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10444,7 +10165,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:215
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fexpd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10454,7 +10174,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:223
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fatand custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10464,19 +10183,16 @@ msgstr ""
 
 #: config/nios2/nios2.opt:231
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the ftand custom instruction"
 msgstr "不使用 callt 指令"
 
 #: config/nios2/nios2.opt:235
 #, fuzzy
-#| msgid "Enable divide and modulus instructions"
 msgid "Integer id (N) of ftand custom instruction"
 msgstr "启用除法和求余指令"
 
 #: config/nios2/nios2.opt:239
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fsind custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10486,7 +10202,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:247
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcosd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10496,7 +10211,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:255
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fsqrtd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10506,7 +10220,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:263
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fabsd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10516,7 +10229,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:271
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fnegd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10526,7 +10238,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:279
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fmaxd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10536,7 +10247,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:287
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fmind custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10546,7 +10256,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:295
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fdivd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10556,19 +10265,16 @@ msgstr ""
 
 #: config/nios2/nios2.opt:303
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fmuld custom instruction"
 msgstr "不使用 callt 指令"
 
 #: config/nios2/nios2.opt:307
 #, fuzzy
-#| msgid "Enable divide and modulus instructions"
 msgid "Integer id (N) of fmuld custom instruction"
 msgstr "启用除法和求余指令"
 
 #: config/nios2/nios2.opt:311
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fsubd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10578,7 +10284,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:319
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the faddd custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10588,7 +10293,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:327
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcmpnes custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10598,7 +10302,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:335
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcmpeqs custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10608,7 +10311,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:343
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcmpges custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10618,7 +10320,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:351
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcmpgts custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10628,7 +10329,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:359
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcmples custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10638,7 +10338,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:367
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcmplts custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10648,7 +10347,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:375
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the flogs custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10658,7 +10356,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:383
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fexps custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10668,7 +10365,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:391
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fatans custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10678,7 +10374,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:399
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the ftans custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10688,7 +10383,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:407
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fsins custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10698,7 +10392,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:415
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fcoss custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10708,7 +10401,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:423
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fsqrts custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10718,7 +10410,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:431
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fabss custom instr"
 msgstr "不使用 callt 指令"
 
@@ -10728,7 +10419,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:439
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fnegs custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10738,7 +10428,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:447
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fmaxs custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10748,7 +10437,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:455
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fmins custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10758,7 +10446,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:463
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fdivs custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10768,19 +10455,16 @@ msgstr ""
 
 #: config/nios2/nios2.opt:471
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fmuls custom instruction"
 msgstr "不使用 callt 指令"
 
 #: config/nios2/nios2.opt:475
 #, fuzzy
-#| msgid "Enable divide and modulus instructions"
 msgid "Integer id (N) of fmuls custom instruction"
 msgstr "启用除法和求余指令"
 
 #: config/nios2/nios2.opt:479
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fsubs custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10790,7 +10474,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:487
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fadds custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10800,7 +10483,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:495
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the frdy custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10810,7 +10492,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:503
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the frdxhi custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10820,7 +10501,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:511
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the frdxlo custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10830,7 +10510,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:519
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fwry custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10840,7 +10519,6 @@ msgstr ""
 
 #: config/nios2/nios2.opt:527
 #, fuzzy
-#| msgid "Do not use the callt instruction"
 msgid "Do not use the fwrx custom instruction"
 msgstr "不使用 callt 指令"
 
@@ -10882,7 +10560,6 @@ msgstr "能被放在小内存区的全局和静态变量的最大尺寸。"
 
 #: config/rx/rx.opt:93
 #, fuzzy
-#| msgid "Generate assembler output that is compatible with the Renesas AS100 assembler.  This may restrict some of the compiler's capabilities.  The default is to generate GAS compatable syntax."
 msgid "Generate assembler output that is compatible with the Renesas AS100 assembler.  This may restrict some of the compiler's capabilities.  The default is to generate GAS compatible syntax."
 msgstr "生成与 Renesas AS100 兼容的汇编输出。这可能会限制编译器的某些功能。默认是使用与 GAS 兼容的语法。"
 
@@ -10920,7 +10597,6 @@ msgstr ""
 
 #: config/rx/rx.opt:141
 #, fuzzy
-#| msgid "Enable the use of the short load instructions"
 msgid "Enable the use of the LRA register allocator."
 msgstr "启用对短加载指令的使用"
 
@@ -10977,7 +10653,6 @@ msgstr "使用浮点双精度指令"
 
 #: config/microblaze/microblaze.opt:87
 #, fuzzy, c-format
-#| msgid "%qE is deprecated: %s"
 msgid "%qs is deprecated; use -fstack-check"
 msgstr "不建议使用%qE:%s"
 
@@ -10991,7 +10666,6 @@ msgstr "使用相对 GP 的 sdata/sbss 节"
 
 #: config/microblaze/microblaze.opt:95
 #, fuzzy, c-format
-#| msgid "-mno-clearbss is deprecated; use -fno-zero-initialized-in-bss"
 msgid "%qs is deprecated; use -fno-zero-initialized-in-bss"
 msgstr "-mno-clearbss已不建议使用;请改用 -fno-zero-initialized-in-bss"
 
@@ -11225,61 +10899,51 @@ msgstr "允许 gcc 生成 LIW 指令"
 
 #: config/mn10300/mn10300.opt:67
 #, fuzzy
-#| msgid "Allow gcc to generate LIW instructions"
 msgid "Allow gcc to generate the SETLB and Lcc instructions"
 msgstr "允许 gcc 生成 LIW 指令"
 
 #: config/nds32/nds32.opt:26
 #, fuzzy
-#| msgid "Generate code in big endian mode"
 msgid "Generate code in big-endian mode."
 msgstr "生成大端在前的代码"
 
 #: config/nds32/nds32.opt:30
 #, fuzzy
-#| msgid "Generate code in little endian mode"
 msgid "Generate code in little-endian mode."
 msgstr "生成小端在前的代码"
 
 #: config/nds32/nds32.opt:34
 #, fuzzy
-#| msgid "Reschedule instructions before register allocation"
 msgid "Use reduced-set registers for register allocation."
 msgstr "分配寄存器前重新调度指令"
 
 #: config/nds32/nds32.opt:38
 #, fuzzy
-#| msgid "Reschedule instructions before register allocation"
 msgid "Use full-set registers for register allocation."
 msgstr "分配寄存器前重新调度指令"
 
 #: config/nds32/nds32.opt:42
 #, fuzzy
-#| msgid "Generate bit instructions"
 msgid "Generate conditional move instructions."
 msgstr "生成位指令"
 
 #: config/nds32/nds32.opt:46
 #, fuzzy
-#| msgid "Generate bit instructions"
 msgid "Generate performance extension instructions."
 msgstr "生成位指令"
 
 #: config/nds32/nds32.opt:50
 #, fuzzy
-#| msgid "Generate isel instructions"
 msgid "Generate v3 push25/pop25 instructions."
 msgstr "生成 isel 指令"
 
 #: config/nds32/nds32.opt:54
 #, fuzzy
-#| msgid "Generate bit instructions"
 msgid "Generate 16-bit instructions."
 msgstr "生成位指令"
 
 #: config/nds32/nds32.opt:58
 #, fuzzy
-#| msgid "Generate isel instructions"
 msgid "Generate GP base instructions directly."
 msgstr "生成 isel 指令"
 
@@ -11293,7 +10957,6 @@ msgstr ""
 
 #: config/nds32/nds32.opt:70
 #, fuzzy
-#| msgid "Specify the name of the target architecture"
 msgid "Specify the name of the target architecture."
 msgstr "指定目标架构的名称"
 
@@ -11307,19 +10970,16 @@ msgstr ""
 
 #: config/nds32/nds32.opt:94
 #, fuzzy
-#| msgid "Run predictive commoning optimization."
 msgid "Use special directives to guide linker doing ex9 optimization."
 msgstr "启用预测公因子优化。"
 
 #: config/nds32/nds32.opt:98
 #, fuzzy
-#| msgid "Warn when all constructors and destructors are private"
 msgid "Enable constructor/destructor feature."
 msgstr "当所有构造函数和析构函数都是私有时给出警告"
 
 #: config/nds32/nds32.opt:102
 #, fuzzy
-#| msgid "Generate isel instructions"
 msgid "Guide linker to relax instructions."
 msgstr "生成 isel 指令"
 
@@ -11353,13 +11013,11 @@ msgstr ""
 
 #: config/c6x/c6x.opt:46
 #, fuzzy
-#| msgid "alias argument not a string"
 msgid "Valid arguments for the -msdata= option"
 msgstr "alias 的参数不是一个字符串"
 
 #: config/c6x/c6x.opt:59
 #, fuzzy
-#| msgid "Create a shared library"
 msgid "Compile for the DSBT shared library ABI"
 msgstr "生成一个共享库"
 
@@ -11633,7 +11291,6 @@ msgstr ""
 
 #: config/sh/sh.opt:236 config/sh/sh.opt:240
 #, fuzzy, c-format
-#| msgid "Deprecated.  This switch has no effect"
 msgid "%qs is deprecated and has no effect"
 msgstr "不建议使用。此开关不起作用。"
 
@@ -11675,7 +11332,6 @@ msgstr "遒循 Renesas(先前被称作 Hitachi)/SuperH 调用约定"
 
 #: config/sh/sh.opt:277
 #, fuzzy
-#| msgid "Increase the IEEE compliance for floating-point code"
 msgid "Increase the IEEE compliance for floating-point comparisons"
 msgstr "让浮点代码更加遵循 IEEE 标准"
 
@@ -11725,7 +11381,6 @@ msgstr ""
 
 #: config/sh/sh.opt:331
 #, fuzzy
-#| msgid "Generate code for built-in atomic operations"
 msgid "Specify the model for atomic operations"
 msgstr "为内建原子操作生成代码"
 
@@ -11751,13 +11406,11 @@ msgstr "将数据传输周围的跳转认为是条件转移。"
 
 #: config/sh/sh.opt:357
 #, fuzzy
-#| msgid "Enable the use of the short load instructions"
 msgid "Enable the use of the fsca instruction"
 msgstr "启用对短加载指令的使用"
 
 #: config/sh/sh.opt:361
 #, fuzzy
-#| msgid "Enable the use of the short load instructions"
 msgid "Enable the use of the fsrra instruction"
 msgstr "启用对短加载指令的使用"
 
@@ -11895,7 +11548,6 @@ msgstr "使用 PMC 风格的‘mad’指令"
 
 #: config/mips/mips.opt:63
 #, fuzzy
-#| msgid "Use multiply add/subtract instructions"
 msgid "Use integer madd/msub instructions"
 msgstr "使用乘加/减指令"
 
@@ -11925,7 +11577,6 @@ msgstr "-mcode-readable=SETTING\t指定何时指令允许被访问代码"
 
 #: config/mips/mips.opt:91
 #, fuzzy
-#| msgid "invalid argument %qs to -fdebug-prefix-map"
 msgid "Valid arguments to -mcode-readable=:"
 msgstr "-fdebug-prefix-map 的参数%qs无效"
 
@@ -11955,7 +11606,6 @@ msgstr "使用 MIPS-DSP REV 2指令"
 
 #: config/mips/mips.opt:146
 #, fuzzy
-#| msgid "Use the bit-field instructions"
 msgid "Use Enhanced Virtual Addressing instructions"
 msgstr "使用位段指令"
 
@@ -11969,7 +11619,6 @@ msgstr "为未被当前对象所定义的数据使用 -G"
 
 #: config/mips/mips.opt:158
 #, fuzzy
-#| msgid "Work around certain R4000 errata"
 msgid "Work around certain 24K errata"
 msgstr "为某些 R4000 缺陷提供变通"
 
@@ -11983,7 +11632,6 @@ msgstr "为某些 R4400 缺陷提供变通"
 
 #: config/mips/mips.opt:170
 #, fuzzy
-#| msgid "Work around certain R4000 errata"
 msgid "Work around certain RM7000 errata"
 msgstr "为某些 R4000 缺陷提供变通"
 
@@ -12057,13 +11705,11 @@ msgstr "允许使用硬件浮点 ABI 和指令"
 
 #: config/mips/mips.opt:252
 #, fuzzy
-#| msgid "Generate code that can be safely linked with MIPS16 code."
 msgid "Generate code that is link-compatible with MIPS16 and microMIPS code."
 msgstr "生成能与 MIPS16 代码安全链接的代码。"
 
 #: config/mips/mips.opt:256
 #, fuzzy
-#| msgid "Does nothing. Preserved for backward compatibility."
 msgid "An alias for minterlink-compressed provided for backward-compatibility."
 msgstr "不起作用。为向前兼容保留的选项。"
 
@@ -12109,7 +11755,6 @@ msgstr "不优化块移动"
 
 #: config/mips/mips.opt:300
 #, fuzzy
-#| msgid "Use SmartMIPS instructions"
 msgid "Use microMIPS instructions"
 msgstr "使用 SmartMIPS 指令"
 
@@ -12123,7 +11768,6 @@ msgstr "不允许使用任何浮点操作"
 
 #: config/mips/mips.opt:312
 #, fuzzy
-#| msgid "Use MIPS-3D instructions"
 msgid "Use MCU instructions"
 msgstr "使用 MIPS-3D 指令"
 
@@ -12214,31 +11858,26 @@ msgstr ""
 
 #: config/tilegx/tilegx.opt:37
 #, fuzzy
-#| msgid "Compile for 32-bit pointers"
 msgid "Compile with 32 bit longs and pointers."
 msgstr "为 32 位指针编译"
 
 #: config/tilegx/tilegx.opt:41
 #, fuzzy
-#| msgid "Compile for 64-bit pointers"
 msgid "Compile with 64 bit longs and pointers."
 msgstr "为 64 位指针编译"
 
 #: config/tilegx/tilegx.opt:45
 #, fuzzy
-#| msgid "Use given x86-64 code model"
 msgid "Use given TILE-Gx code model"
 msgstr "使用给定的 x86-64 代码模式"
 
 #: config/arc/arc.opt:26
 #, fuzzy
-#| msgid "Generate code in big endian mode"
 msgid "Compile code for big endian mode"
 msgstr "生成大端在前的代码"
 
 #: config/arc/arc.opt:30
 #, fuzzy
-#| msgid "Stores doubles in 32 bits.  This is the default."
 msgid "Compile code for little endian mode.  This is the default"
 msgstr "以 32 位双精度数存储。这是默认值。"
 
@@ -12284,31 +11923,26 @@ msgstr ""
 
 #: config/arc/arc.opt:80
 #, fuzzy
-#| msgid "Generate string instructions for block moves"
 msgid "Generate instructions supported by barrel shifter"
 msgstr "为块移动使用字符串指令"
 
 #: config/arc/arc.opt:84
 #, fuzzy
-#| msgid "Generate bit instructions"
 msgid "Generate norm instruction"
 msgstr "生成位指令"
 
 #: config/arc/arc.opt:88
 #, fuzzy
-#| msgid "Generate isel instructions"
 msgid "Generate swap instruction"
 msgstr "生成 isel 指令"
 
 #: config/arc/arc.opt:92
 #, fuzzy
-#| msgid "Generate load/store multiple instructions"
 msgid "Generate mul64 and mulu64 instructions"
 msgstr "生成加载/存储乘法指令"
 
 #: config/arc/arc.opt:96
 #, fuzzy
-#| msgid "Do not generate fused multiply/add instructions"
 msgid "Do not generate mpy instructions for ARC700"
 msgstr "不生成融合的乘/加指令"
 
@@ -12322,13 +11956,11 @@ msgstr ""
 
 #: config/arc/arc.opt:108
 #, fuzzy
-#| msgid "Generate call insns as indirect calls, if necessary"
 msgid "Generate call insns as register indirect calls"
 msgstr "如有必须,为调用指令生成间接调用"
 
 #: config/arc/arc.opt:112
 #, fuzzy
-#| msgid "Generate cld instruction in the function prologue."
 msgid "Do no generate BRcc instructions in arc_reorg."
 msgstr "在函数序言中生成 cld 指令"
 
@@ -12346,7 +11978,6 @@ msgstr ""
 
 #: config/arc/arc.opt:132
 #, fuzzy
-#| msgid "Generate bit instructions"
 msgid "FPX: Generate Single Precision FPX (fast) instructions."
 msgstr "生成位指令"
 
@@ -12356,13 +11987,11 @@ msgstr ""
 
 #: config/arc/arc.opt:140 config/arc/arc.opt:144
 #, fuzzy
-#| msgid "Generate bit instructions"
 msgid "FPX: Generate Double Precision FPX (compact) instructions."
 msgstr "生成位指令"
 
 #: config/arc/arc.opt:148
 #, fuzzy
-#| msgid "Generate bit instructions"
 msgid "FPX: Generate Double Precision FPX (fast) instructions."
 msgstr "生成位指令"
 
@@ -12384,7 +12013,6 @@ msgstr ""
 
 #: config/arc/arc.opt:187
 #, fuzzy
-#| msgid "Cost to assume for a multiply insn"
 msgid "Cost to assume for a multiply instruction, with 4 being equal to a normal insn."
 msgstr "为乘法指令设定的开销"
 
@@ -12406,7 +12034,6 @@ msgstr ""
 
 #: config/arc/arc.opt:215
 #, fuzzy
-#| msgid "Enable the use of the short load instructions"
 msgid "Enable the use of indexed loads"
 msgstr "启用对短加载指令的使用"
 
@@ -12416,7 +12043,6 @@ msgstr ""
 
 #: config/arc/arc.opt:223
 #, fuzzy
-#| msgid "Generate fused multiply/add instructions"
 msgid "Generate 32x16 multiply and mac instructions"
 msgstr "生成融合的乘/加指令"
 
@@ -12434,7 +12060,6 @@ msgstr ""
 
 #: config/arc/arc.opt:241
 #, fuzzy
-#| msgid "Avoid all range limits on call instructions"
 msgid "Do alignment optimizations for call instructions."
 msgstr "为调用指令避免一切范围限制"
 
@@ -12448,7 +12073,6 @@ msgstr ""
 
 #: config/arc/arc.opt:253
 #, fuzzy
-#| msgid "Enable cbranchdi4 pattern"
 msgid "Enable pre-reload use of cbranchsi pattern"
 msgstr "启用 cbranchdi4 样式"
 
@@ -12462,13 +12086,11 @@ msgstr ""
 
 #: config/arc/arc.opt:265
 #, fuzzy
-#| msgid "Enable cbranchdi4 pattern"
 msgid "Enable compact casesi pattern"
 msgstr "启用 cbranchdi4 样式"
 
 #: config/arc/arc.opt:269
 #, fuzzy
-#| msgid "Enable clip instructions"
 msgid "Enable 'q' instruction alternatives."
 msgstr "启用 clip 指令"
 
@@ -12478,25 +12100,21 @@ msgstr ""
 
 #: config/arc/arc.opt:280
 #, fuzzy
-#| msgid "Enable Plan 9 language extensions"
 msgid "Enable variable polynomial CRC extension"
 msgstr "启用九号计划语言扩展"
 
 #: config/arc/arc.opt:284
 #, fuzzy
-#| msgid "Enable Plan 9 language extensions"
 msgid "Enable DSP 3.1 Pack A extensions"
 msgstr "启用九号计划语言扩展"
 
 #: config/arc/arc.opt:288
 #, fuzzy
-#| msgid "Enable Plan 9 language extensions"
 msgid "Enable dual viterbi butterfly extension"
 msgstr "启用九号计划语言扩展"
 
 #: config/arc/arc.opt:298
 #, fuzzy
-#| msgid "Enable leading zero instructions"
 msgid "Enable Dual and Single Operand Instructions for Telephony"
 msgstr "启用前导零指令"
 
@@ -12506,19 +12124,16 @@ msgstr ""
 
 #: config/arc/arc.opt:307
 #, fuzzy
-#| msgid "Enable dead store elimination"
 msgid "Enable Locked Load/Store Conditional extension"
 msgstr "删除死存储"
 
 #: config/arc/arc.opt:311
 #, fuzzy
-#| msgid "Enable sign extend instructions"
 msgid "Enable swap byte ordering extension instruction"
 msgstr "启用符号扩展指令"
 
 #: config/arc/arc.opt:315
 #, fuzzy
-#| msgid "Enable bit manipulation instructions"
 msgid "Enable 64-bit Time-Stamp Counter extension instruction"
 msgstr "启用位操作指令"
 
@@ -12532,19 +12147,16 @@ msgstr ""
 
 #: config/arc/arc.opt:327
 #, fuzzy
-#| msgid "Pass -z text to linker"
 msgid "Pass -EB option through to linker."
 msgstr "将 -z text 传递给链接器"
 
 #: config/arc/arc.opt:331
 #, fuzzy
-#| msgid "Pass -z text to linker"
 msgid "Pass -EL option through to linker."
 msgstr "将 -z text 传递给链接器"
 
 #: config/arc/arc.opt:335
 #, fuzzy
-#| msgid "Pass -z text to linker"
 msgid "Pass -marclinux option through to linker."
 msgstr "将 -z text 传递给链接器"
 
@@ -12722,7 +12334,6 @@ msgstr "为速度优化,不严格遵守标准"
 
 #: common.opt:457
 #, fuzzy
-#| msgid "Optimize for space rather than speed"
 msgid "Optimize for debugging experience rather than speed or size"
 msgstr "为最小空间而不是最大速度优化"
 
@@ -12781,7 +12392,6 @@ msgstr "-Wframe-larger-than=<N>\t当一个函数的堆栈框架需要多于 N 
 
 #: common.opt:562
 #, fuzzy
-#| msgid "%Kattempt to free a non-heap object"
 msgid "Warn when attempting to free a non-heap object"
 msgstr "%K试图 free 一个不在堆上的对象"
 
@@ -12870,7 +12480,6 @@ msgstr "自动变量未初始化时警告"
 
 #: common.opt:660
 #, fuzzy
-#| msgid "Warn about uninitialized automatic variables"
 msgid "Warn about maybe uninitialized automatic variables"
 msgstr "自动变量未初始化时警告"
 
@@ -13007,7 +12616,6 @@ msgstr "比较几个数据依赖分析的结果。"
 
 #: common.opt:918
 #, fuzzy
-#| msgid "Check the return value of new"
 msgid "Check the return value of new in C++"
 msgstr "检查 new 的返回值"
 
@@ -13094,7 +12702,6 @@ msgstr "删除无用的空指针检查"
 
 #: common.opt:1012
 #, fuzzy
-#| msgid "Perform superblock formation via tail duplication"
 msgid "Perform speculative devirtualization"
 msgstr "通过尾复制进行超块合成"
 
@@ -13145,7 +12752,6 @@ msgstr "在调试转储中不输出地址"
 
 #: common.opt:1096
 #, fuzzy
-#| msgid "Do the full register move optimization pass"
 msgid "Dump optimization passes"
 msgstr "进行全寄存器传送优化"
 
@@ -13265,7 +12871,6 @@ msgstr "启用 Graphite 身份转换"
 
 #: common.opt:1243
 #, fuzzy
-#| msgid "Enable hoisting loads from conditional pointers."
 msgid "Enable hoisting adjacent loads to encourage generating conditional move"
 msgstr "为条件指针外提内存读取操作。"
 
@@ -13319,7 +12924,6 @@ msgstr ""
 
 #: common.opt:1303
 #, fuzzy, c-format
-#| msgid "unknown TLS model %qs"
 msgid "unknown Stack Reuse Level %qs"
 msgstr "未知的 TLS 模型%qs"
 
@@ -13346,19 +12950,16 @@ msgstr ""
 
 #: common.opt:1342
 #, fuzzy
-#| msgid "Integrate simple functions into their callers when code size is known to not growth"
 msgid "Integrate functions into their callers when code size is known not to grow"
 msgstr "在不导致代码膨胀的情况下将简单函数集成到它们的调用者中"
 
 #: common.opt:1346
 #, fuzzy
-#| msgid "Integrate functions called once into their callers"
 msgid "Integrate functions not declared \"inline\" into their callers when profitable"
 msgstr "将只被调用一次的函数集成到它们的调用者中"
 
 #: common.opt:1350
 #, fuzzy
-#| msgid "Integrate functions called once into their callers"
 msgid "Integrate functions only required by their single caller"
 msgstr "将只被调用一次的函数集成到它们的调用者中"
 
@@ -13384,7 +12985,6 @@ msgstr "-finstrument-functions-exclude-file-list=文件名,...  取样时排除
 
 #: common.opt:1377
 #, fuzzy
-#| msgid "Perform Interprocedural constant propagation"
 msgid "Perform interprocedural constant propagation"
 msgstr "进行进程间的复写传递"
 
@@ -13407,7 +13007,6 @@ msgstr "发现纯函数和常函数"
 
 #: common.opt:1397
 #, fuzzy
-#| msgid "unimplemented functionality"
 msgid "Perform Semantic function equality"
 msgstr "未实现的功能"
 
@@ -13504,7 +13103,6 @@ msgstr "报告各种链接时优化统计"
 
 #: common.opt:1521
 #, fuzzy
-#| msgid "Report various link-time optimization statistics"
 msgid "Report various link-time optimization statistics for WPA only"
 msgstr "报告各种链接时优化统计"
 
@@ -13522,7 +13120,6 @@ msgstr "报告永久性内存分配"
 
 #: common.opt:1537
 #, fuzzy
-#| msgid "Report on permanent memory allocation"
 msgid "Report on permanent memory allocation in WPA only"
 msgstr "报告永久性内存分配"
 
@@ -13576,7 +13173,6 @@ msgstr "尽可能不生成栈帧"
 
 #: common.opt:1592
 #, fuzzy
-#| msgid "Enable loop optimizations on tree level"
 msgid "Enable all optimization info dumps on stderr"
 msgstr "在树级别进行循环优化"
 
@@ -13690,13 +13286,11 @@ msgstr "为取样表达式的值插入相关代码"
 
 #: common.opt:1713
 #, fuzzy
-#| msgid "internal consistency failure"
 msgid "Report on consistency of profile"
 msgstr "内部一致性错误"
 
 #: common.opt:1717
 #, fuzzy
-#| msgid "Reorder functions to improve code placement"
 msgid "Enable function reordering that improves code placement"
 msgstr "函数重新排序以改善代码布局"
 
@@ -13714,7 +13308,6 @@ msgstr "在寄存器中返回小聚合"
 
 #: common.opt:1746
 #, fuzzy
-#| msgid "Enable register pressure sensitive insn scheduling"
 msgid "Relief of register pressure through live range shrinkage"
 msgstr "启用对寄存器压力敏感的指令调度"
 
@@ -13909,7 +13502,6 @@ msgstr "为每个函数使用堆栈保护机制"
 
 #: common.opt:1967
 #, fuzzy
-#| msgid "Use a stack protection method for every function"
 msgid "Use a smart stack protection method for certain functions"
 msgstr "为每个函数使用堆栈保护机制"
 
@@ -13986,7 +13578,6 @@ msgstr "启用树上的循环不变量转移"
 
 #: common.opt:2065
 #, fuzzy
-#| msgid "Perform variable tracking and also tag variables that are uninitialized"
 msgid "Enable coalescing of copy-related user variables that are inlined"
 msgstr "进行变量追踪并且标记未被初始化的变量"
 
@@ -14020,7 +13611,6 @@ msgstr "启用主导优化"
 
 #: common.opt:2101
 #, fuzzy
-#| msgid "Enable loop header copying on trees"
 msgid "Enable tail merging on trees"
 msgstr "启用树上的循环不变量转移"
 
@@ -14038,13 +13628,11 @@ msgstr "启用树上的完全冗余消除(FRE)"
 
 #: common.opt:2117
 #, fuzzy
-#| msgid "Enable SSA-CCP optimization on trees"
 msgid "Enable string length optimizations on trees"
 msgstr "启用树上的 SSA-CCP 优化"
 
 #: common.opt:2121
 #, fuzzy
-#| msgid "comparison with string literal results in unspecified behaviour"
 msgid "Detect paths which trigger erroneous or undefined behaviour due to"
 msgstr "与字面字符串比较的结构是不可预测的"
 
@@ -14164,13 +13752,11 @@ msgstr "仅为异常处理生成堆栈展开表"
 
 #: common.opt:2254
 #, fuzzy
-#| msgid "Use the hardware barrel shifter instead of emulation"
 msgid "Use the bfd linker instead of the default linker"
 msgstr "使用硬件桶型移位器代替仿真"
 
 #: common.opt:2258
 #, fuzzy
-#| msgid "Use the hardware barrel shifter instead of emulation"
 msgid "Use the gold linker instead of the default linker"
 msgstr "使用硬件桶型移位器代替仿真"
 
@@ -14192,7 +13778,6 @@ msgstr "进行变量追踪并且标记未被初始化的变量"
 
 #: common.opt:2296
 #, fuzzy
-#| msgid "Enable loop vectorization on trees"
 msgid "Enable vectorization on trees"
 msgstr "在树上进行循环向量化"
 
@@ -14206,7 +13791,6 @@ msgstr "在树上进行基本块向量化(SLP)"
 
 #: common.opt:2312
 #, fuzzy
-#| msgid "Enable use of cost model in vectorization"
 msgid "Specifies the cost model for vectorization"
 msgstr "启用向量化开销模型"
 
@@ -14216,19 +13800,16 @@ msgstr ""
 
 #: common.opt:2319
 #, fuzzy, c-format
-#| msgid "unknown TLS model %qs"
 msgid "unknown vectorizer cost model %qs"
 msgstr "未知的 TLS 模型%qs"
 
 #: common.opt:2332
 #, fuzzy
-#| msgid "Does nothing.  Preserved for backward compatibility."
 msgid "Enables the dynamic vectorizer cost model.  Preserved for backward compatibility."
 msgstr "不起作用。为向前兼容保留的选项。"
 
 #: common.opt:2336
 #, fuzzy
-#| msgid "Does nothing.  Preserved for backward compatibility."
 msgid "Enables the unlimited vectorizer cost model.  Preserved for backward compatibility."
 msgstr "不起作用。为向前兼容保留的选项。"
 
@@ -14255,7 +13836,6 @@ msgstr ""
 
 #: common.opt:2380
 #, fuzzy, c-format
-#| msgid "(near initialization for %qs)"
 msgid "unknown vtable verify initialization priority %qs"
 msgstr "(在%qs的初始化附近)"
 
@@ -14301,7 +13881,6 @@ msgstr "生成 COFF 格式的调试信息"
 
 #: common.opt:2433
 #, fuzzy
-#| msgid "Generate debug information in default format"
 msgid "Generate debug information in default version of DWARF format"
 msgstr "生成默认格式的调试信息"
 
@@ -14327,25 +13906,21 @@ msgstr ""
 
 #: common.opt:2457
 #, fuzzy
-#| msgid "Record gcc command line switches in the object file."
 msgid "Don't record gcc command line switches in DWARF DW_AT_producer."
 msgstr "在目标文件中记录 gcc 命令行开关。"
 
 #: common.opt:2461
 #, fuzzy
-#| msgid "Record gcc command line switches in the object file."
 msgid "Record gcc command line switches in DWARF DW_AT_producer."
 msgstr "在目标文件中记录 gcc 命令行开关。"
 
 #: common.opt:2465
 #, fuzzy
-#| msgid "Generate debug information in default format"
 msgid "Don't generate debug information in separate .dwo files"
 msgstr "生成默认格式的调试信息"
 
 #: common.opt:2469
 #, fuzzy
-#| msgid "Generate debug information in default format"
 msgid "Generate debug information in separate .dwo files"
 msgstr "生成默认格式的调试信息"
 
@@ -14387,7 +13962,6 @@ msgstr "-iplugindir=<目录>\t将目录设定为默认的插件子目录"
 
 #: common.opt:2512
 #, fuzzy
-#| msgid "-imultilib <dir>\tSet <dir> to be the multilib include subdirectory"
 msgid "-imultiarch <dir>\tSet <dir> to be the multiarch include subdirectory"
 msgstr "-imultilib <目录>\t将目录设定为 multilib 的包含子目录"
 
@@ -14450,7 +14024,6 @@ msgstr "需要数字类型"
 
 #: go/gofrontend/expressions.cc:4157
 #, fuzzy
-#| msgid "expected integer or boolean type"
 msgid "expected boolean type"
 msgstr "需要整数或布尔类型"
 
@@ -14469,7 +14042,6 @@ msgstr "需要指针"
 
 #: go/gofrontend/expressions.cc:5925
 #, fuzzy
-#| msgid "invalid comparison code in gimple cond"
 msgid "invalid comparison of nil with nil"
 msgstr "gimple 条件中比较代码无效"
 
@@ -14480,7 +14052,6 @@ msgstr "二元表达式中类型不匹配"
 
 #: go/gofrontend/expressions.cc:5969
 #, fuzzy
-#| msgid "division by zero"
 msgid "integer division by zero"
 msgstr "被零除"
 
@@ -14508,13 +14079,11 @@ msgstr "方法类型不匹配对象类型"
 
 #: go/gofrontend/expressions.cc:7156
 #, fuzzy
-#| msgid "invalid argument to built-in function"
 msgid "invalid use of %<...%> with builtin function"
 msgstr "内建函数实参无效"
 
 #: go/gofrontend/expressions.cc:7167
 #, fuzzy
-#| msgid "invalid use of template-name %qE without an argument list"
 msgid "invalid use of method value as argument of Offsetof"
 msgstr "使用模板名%qE时不带实参表无效"
 
@@ -14540,7 +14109,6 @@ msgstr "实参太多"
 
 #: go/gofrontend/expressions.cc:7271
 #, fuzzy
-#| msgid "argument must be a constant"
 msgid "argument 1 must be a map"
 msgstr "实参必须是常数"
 
@@ -14551,7 +14119,6 @@ msgstr "函数%q+#D的抽象返回类型无效"
 
 #: go/gofrontend/expressions.cc:7384
 #, fuzzy
-#| msgid "bad length when making slice"
 msgid "length required when allocating a slice"
 msgstr "生成切片时长度错误"
 
@@ -14561,7 +14128,6 @@ msgstr ""
 
 #: go/gofrontend/expressions.cc:7435
 #, fuzzy
-#| msgid "too many arguments to %qE"
 msgid "too many arguments to make"
 msgstr "%qE实参太多"
 
@@ -14603,19 +14169,16 @@ msgstr "元素类型必须一样"
 
 #: go/gofrontend/expressions.cc:8317
 #, fuzzy
-#| msgid "left argument must be a slice"
 msgid "first argument must be []byte"
 msgstr "左实参必须是一个切片"
 
 #: go/gofrontend/expressions.cc:8320
 #, fuzzy
-#| msgid "right argument must be a slice or a string"
 msgid "second argument must be slice or string"
 msgstr "右实参必须是一个切片或字符串"
 
 #: go/gofrontend/expressions.cc:8361
 #, fuzzy
-#| msgid "parameter %u has void type"
 msgid "argument 2 has invalid type"
 msgstr "第 %u 个参数类型为 void"
 
@@ -14638,7 +14201,6 @@ msgstr "需要函数"
 
 #: go/gofrontend/expressions.cc:9332
 #, fuzzy
-#| msgid "invalid use of %<this%> at top level"
 msgid "invalid use of %<...%> with non-slice"
 msgstr "在文件作用域使用%<this%>无效"
 
@@ -14648,7 +14210,6 @@ msgstr "接收器类型不兼容"
 
 #: go/gofrontend/expressions.cc:9623
 #, fuzzy
-#| msgid "invalid use of %<this%> in non-member function"
 msgid "invalid use of %<...%> calling non-variadic function"
 msgstr "在非成员函数中使用%<this%>无效"
 
@@ -14666,7 +14227,6 @@ msgstr "切片结尾必须是整数"
 
 #: go/gofrontend/expressions.cc:10474
 #, fuzzy
-#| msgid "slice end must be integer"
 msgid "slice capacity must be integer"
 msgstr "切片结尾必须是整数"
 
@@ -14741,7 +14301,6 @@ msgstr "需要行尾"
 
 #: go/gofrontend/statements.cc:2654 go/gofrontend/statements.cc:2683
 #, fuzzy
-#| msgid "not enough arguments"
 msgid "not enough arguments to return"
 msgstr "实参太少"
 
@@ -14783,49 +14342,41 @@ msgstr "右实参必须是一个切片或字符串"
 
 #: go/gofrontend/types.cc:514
 #, fuzzy
-#| msgid "invalid comparison code in gimple cond"
 msgid "invalid comparison of non-ordered type"
 msgstr "gimple 条件中比较代码无效"
 
 #: go/gofrontend/types.cc:530
 #, fuzzy
-#| msgid "duplicate class will only be compiled once"
 msgid "slice can only be compared to nil"
 msgstr "重复的类只会被编译一次"
 
 #: go/gofrontend/types.cc:532
 #, fuzzy
-#| msgid "duplicate class will only be compiled once"
 msgid "map can only be compared to nil"
 msgstr "重复的类只会被编译一次"
 
 #: go/gofrontend/types.cc:534
 #, fuzzy
-#| msgid "duplicate class will only be compiled once"
 msgid "func can only be compared to nil"
 msgstr "重复的类只会被编译一次"
 
 #: go/gofrontend/types.cc:540
 #, fuzzy, c-format
-#| msgid "invalid operand to %%R"
 msgid "invalid operation (%s)"
 msgstr "%%R 的操作数无效"
 
 #: go/gofrontend/types.cc:563
 #, fuzzy
-#| msgid "invalid comparison code in gimple cond"
 msgid "invalid comparison of non-comparable type"
 msgstr "gimple 条件中比较代码无效"
 
 #: go/gofrontend/types.cc:581
 #, fuzzy
-#| msgid "invalid comparison code in gimple cond"
 msgid "invalid comparison of non-comparable struct"
 msgstr "gimple 条件中比较代码无效"
 
 #: go/gofrontend/types.cc:592
 #, fuzzy
-#| msgid "invalid use of non-lvalue array"
 msgid "invalid comparison of non-comparable array"
 msgstr "对非左值数组的使用无效"
 
@@ -14911,13 +14462,11 @@ msgstr "缺少方法%s%s%s"
 
 #: go/gofrontend/types.cc:7240
 #, fuzzy, c-format
-#| msgid "method %s%s%s requires a pointer"
 msgid "method %s%s%s requires a pointer receiver"
 msgstr "方法%s%s%s需要一个指针"
 
 #: go/gofrontend/types.cc:7258
 #, fuzzy, c-format
-#| msgid "method %s%s%s requires a pointer"
 msgid "method %s%s%s is marked go:nointerface"
 msgstr "方法%s%s%s需要一个指针"
 
@@ -14930,7 +14479,6 @@ msgstr "%qE属性指定被忽略"
 
 #: attribs.c:450
 #, fuzzy, gcc-internal-format
-#| msgid "%qE attribute directive ignored"
 msgid "%<%E::%E%> scoped attribute directive ignored"
 msgstr "%qE属性指定被忽略"
 
@@ -14944,7 +14492,6 @@ msgstr "为%qE属性给定的实参数目错误"
 #. type.  Ignore it.
 #: attribs.c:472
 #, fuzzy, gcc-internal-format
-#| msgid "%qE attribute ignored"
 msgid "attribute ignored"
 msgstr "%qE属性被忽略"
 
@@ -15045,7 +14592,6 @@ msgstr ""
 
 #: builtins.c:5248
 #, fuzzy, gcc-internal-format
-#| msgid "invalid argument to built-in function"
 msgid "invalid memory model argument to builtin"
 msgstr "内建函数实参无效"
 
@@ -15066,13 +14612,11 @@ msgstr ""
 
 #: builtins.c:5360
 #, fuzzy, gcc-internal-format
-#| msgid "invalid use of %<auto%>"
 msgid "invalid memory model for %<__atomic_load%>"
 msgstr "错误地使用了%<auto%>"
 
 #: builtins.c:5390 builtins.c:5497
 #, fuzzy, gcc-internal-format
-#| msgid "invalid use of %<auto%>"
 msgid "invalid memory model for %<__atomic_store%>"
 msgstr "错误地使用了%<auto%>"
 
@@ -15088,13 +14632,11 @@ msgstr ""
 
 #: builtins.c:5709
 #, fuzzy, gcc-internal-format
-#| msgid "__builtin_eh_return not supported on this target"
 msgid "__builtin_thread_pointer is not supported on this target"
 msgstr "__builtin_eh_return 在此目标机上不受支持"
 
 #: builtins.c:5729
 #, fuzzy, gcc-internal-format
-#| msgid "__builtin_eh_return not supported on this target"
 msgid "__builtin_set_thread_pointer is not supported on this target"
 msgstr "__builtin_eh_return 在此目标机上不受支持"
 
@@ -15189,7 +14731,6 @@ msgstr "函数调用有聚合类型"
 
 #: calls.c:3055
 #, fuzzy, gcc-internal-format
-#| msgid "missing argument to %qs"
 msgid "passing too large argument on stack"
 msgstr "%qs缺少参数"
 
@@ -15335,7 +14876,6 @@ msgstr "verify_flow_info 失败"
 
 #: cfghooks.c:310
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%s does not support duplicate_block"
 msgid "%s does not support dump_bb_for_graph"
 msgstr "%s 不支持 duplicate_block"
 
@@ -15406,7 +14946,6 @@ msgstr "%s 不支持 make_forwarder_block"
 
 #: cfghooks.c:984
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%s does not support move_block_after"
 msgid "%s does not support force_nonfallthru"
 msgstr "%s 不支持t move_block_after"
 
@@ -15447,7 +14986,6 @@ msgstr ""
 
 #: cfgloop.c:1356
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Enable loop header copying on trees"
 msgid "loop with header %d not in loop tree"
 msgstr "启用树上的循环不变量转移"
 
@@ -15468,13 +15006,11 @@ msgstr "循环 %d 的大小应该为 %d,而不是%d"
 
 #: cfgloop.c:1395
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "bb %d do not belong to loop %d"
 msgid "bb %d does not belong to loop %d"
 msgstr "基本块 %d 不属于循环 %d"
 
 #: cfgloop.c:1407
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "size of loop %d should be %d, not %d"
 msgid "bb %d has father loop %d, should be loop %d"
 msgstr "循环 %d 的大小应该为 %d,而不是%d"
 
@@ -15595,7 +15131,6 @@ msgstr ""
 
 #: cfgrtl.c:2428
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "verify_flow_info: REG_BR_PROB does not match cfg %wi %i"
 msgid "verify_flow_info: REG_BR_PROB does not match cfg %i %i"
 msgstr "verify_flow_info:REG_BR_PROB 不匹配 cfg %wi %i"
 
@@ -15606,19 +15141,16 @@ msgstr ""
 
 #: cfgrtl.c:2454
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "fallthru edge crosses section boundary (bb %i)"
 msgid "fallthru edge crosses section boundary in bb %i"
 msgstr "直通边越过了节分界(基本块 %i)"
 
 #: cfgrtl.c:2460
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "fallthru edge crosses section boundary (bb %i)"
 msgid "EH edge crosses section boundary in bb %i"
 msgstr "直通边越过了节分界(基本块 %i)"
 
 #: cfgrtl.c:2467
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "fallthru edge crosses section boundary (bb %i)"
 msgid "No region crossing jump at section boundary in bb %i"
 msgstr "直通边越过了节分界(基本块 %i)"
 
@@ -15634,13 +15166,11 @@ msgstr ""
 
 #: cfgrtl.c:2510
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "missing REG_EH_REGION note in the end of bb %i"
 msgid "missing REG_EH_REGION note at the end of bb %i"
 msgstr "基本块 %i 结尾缺少 REG_EH_REGION 记录"
 
 #: cfgrtl.c:2515
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "too many outgoing branch edges from bb %i"
 msgid "too many exception handling edges in bb %i"
 msgstr "从基本块 %i 分出太多的分支边"
 
@@ -15651,31 +15181,26 @@ msgstr "从基本块 %i 分出太多的分支边"
 
 #: cfgrtl.c:2528
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "fallthru edge after unconditional jump %i"
 msgid "fallthru edge after unconditional jump in bb %i"
 msgstr "非条件跳转 %i 之后的直通边"
 
 #: cfgrtl.c:2533
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "wrong number of branch edges after unconditional jump %i"
 msgid "wrong number of branch edges after unconditional jump in bb %i"
 msgstr "非条件跳转 %i 之后的分支边数不对"
 
 #: cfgrtl.c:2540
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "wrong amount of branch edges after conditional jump %i"
 msgid "wrong amount of branch edges after conditional jump in bb %i"
 msgstr "条件跳转 %i 之后的分支边数不对"
 
 #: cfgrtl.c:2546
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "call edges for non-call insn in bb %i"
 msgid "abnormal call edges for non-call insn in bb %i"
 msgstr "在基本块 %i 中非调用指令的调用边"
 
 #: cfgrtl.c:2551
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "call edges for non-call insn in bb %i"
 msgid "sibcall edges for non-call insn in bb %i"
 msgstr "在基本块 %i 中非调用指令的调用边"
 
@@ -15801,7 +15326,6 @@ msgstr ""
 
 #: cgraph.c:2651
 #, fuzzy, gcc-internal-format
-#| msgid "Assume symbols might be invalid"
 msgid "local symbols must be defined"
 msgstr "假定符号可能无效"
 
@@ -15817,7 +15341,6 @@ msgstr "内联已被取地址的克隆"
 
 #: cgraph.c:2666
 #, fuzzy, gcc-internal-format
-#| msgid "inline clone is needed"
 msgid "inline clone is forced to output"
 msgstr "需要内联克隆"
 
@@ -15943,7 +15466,6 @@ msgstr "调用语句缺少 callgraph 边:"
 
 #: cgraph.c:2895
 #, fuzzy, gcc-internal-format
-#| msgid "expected statement"
 msgid "reference to dead statement"
 msgstr "需要语句"
 
@@ -15984,7 +15506,6 @@ msgstr "%qE属性被忽略,因为%qT已被定义"
 
 #: cgraphunit.c:774
 #, fuzzy, gcc-internal-format
-#| msgid "Warn when an inlined function cannot be inlined"
 msgid "always_inline function might not be inlinable"
 msgstr "当内联函数无法被内联时给出警告"
 
@@ -16010,7 +15531,6 @@ msgstr ""
 
 #: cgraphunit.c:1200
 #, fuzzy, gcc-internal-format
-#| msgid "%q+D used prior to declaration"
 msgid "%q+D aliased declaration"
 msgstr "%q+D在声明前使用"
 
@@ -16021,7 +15541,6 @@ msgstr "无法收回不需要的函数"
 
 #: cgraphunit.c:1303
 #, fuzzy, gcc-internal-format
-#| msgid "failed to reclaim unneeded function"
 msgid "failed to reclaim unneeded function in same comdat group"
 msgstr "无法收回不需要的函数"
 
@@ -16072,19 +15591,16 @@ msgstr "未知的解修饰风格‘%s’"
 
 #: collect2.c:1567 collect2.c:1750 collect2.c:1790
 #, fuzzy, gcc-internal-format
-#| msgid "fopen %s"
 msgid "fopen %s: %m"
 msgstr "fopen %s"
 
 #: collect2.c:1570 collect2.c:1755 collect2.c:1793
 #, fuzzy, gcc-internal-format
-#| msgid "fclose %s"
 msgid "fclose %s: %m"
 msgstr "fclose %s"
 
 #: collect2.c:1857
 #, fuzzy, gcc-internal-format
-#| msgid "can't get program status: %s"
 msgid "can't get program status: %m"
 msgstr "无法获取程序状态:%s"
 
@@ -16130,7 +15646,6 @@ msgstr "找不到 ‘nm’"
 
 #: collect2.c:2546
 #, fuzzy, gcc-internal-format
-#| msgid "can't open nm output"
 msgid "can't open nm output: %m"
 msgstr "无法打开 nm 的输出"
 
@@ -16151,7 +15666,6 @@ msgstr "找不到‘ldd’"
 
 #: collect2.c:2742
 #, fuzzy, gcc-internal-format
-#| msgid "can't open ldd output"
 msgid "can't open ldd output: %m"
 msgstr "无法打开 ldd 输出"
 
@@ -16247,7 +15761,6 @@ msgstr "%s 的存储信息很诡异"
 
 #: coverage.c:291
 #, fuzzy, gcc-internal-format
-#| msgid "checksum is %x instead of %x"
 msgid "checksum is (%x,%x) instead of (%x,%x)"
 msgstr "检验和是 %x 而不是 %x"
 
@@ -16273,7 +15786,6 @@ msgstr ""
 
 #: coverage.c:393
 #, fuzzy, gcc-internal-format
-#| msgid "execution counts estimated"
 msgid "execution counts estimated\n"
 msgstr "预计执行次数"
 
@@ -16374,7 +15886,6 @@ msgstr "忽略未知的选项%q.*s,在%<-fdump-%s%>中"
 
 #: dumpfile.c:862
 #, fuzzy, gcc-internal-format
-#| msgid "ignoring unknown option %q.*s in %<-fdump-%s%>"
 msgid "unknown option %q.*s in %<-fopt-info-%s%>"
 msgstr "忽略未知的选项%q.*s,在%<-fdump-%s%>中"
 
@@ -16390,7 +15901,6 @@ msgstr "多个 EH 个性需要汇编器支持 .cfi.personality 指示。"
 
 #: dwarf2out.c:11303
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "non-delegitimized UNSPEC %d found in variable location"
 msgid "non-delegitimized UNSPEC %s (%d) found in variable location"
 msgstr "变量位置处发现未被非法化的 UNSPEC %d"
 
@@ -16481,7 +15991,6 @@ msgstr "堆栈限制在此目标机上不受支持"
 
 #: expr.c:7657
 #, fuzzy, gcc-internal-format
-#| msgid "global register variable %qD used in nested function"
 msgid "local frame unavailable (naked function?)"
 msgstr "嵌套函数中使用了全局寄存器变量%qD"
 
@@ -16853,7 +16362,6 @@ msgstr "比较最终指令转储"
 
 #: gcc.c:7131
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "-fuse-linker-plugin, but "
 msgid "-fuse-linker-plugin, but %s not found"
 msgstr "使用了 -fuse-linker-plugin,但"
 
@@ -16944,7 +16452,6 @@ msgstr "%%:compare-debug-auxbase-opt 的参数未以 .gk 结尾"
 
 #: gcc.c:8636
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "too few arguments to function"
 msgid "too few arguments to %%:replace-extension"
 msgstr "给予函数的实参太少"
 
@@ -17042,13 +16549,11 @@ msgstr ""
 
 #: gimplify.c:5647
 #, fuzzy, gcc-internal-format
-#| msgid "%qE not specified in enclosing parallel"
 msgid "%qE not specified in enclosing task"
 msgstr "%qE未为在括入的并行中指定"
 
 #: gimplify.c:5653
 #, fuzzy, gcc-internal-format
-#| msgid "%qE not specified in enclosing parallel"
 msgid "%qE not specified in enclosing teams construct"
 msgstr "%qE未为在括入的并行中指定"
 
@@ -17069,7 +16574,6 @@ msgstr "括入并行"
 
 #: gimplify.c:5770 gimplify.c:5799
 #, fuzzy, gcc-internal-format
-#| msgid "iteration variable %qE should not be reduction"
 msgid "iteration variable %qE is predetermined linear"
 msgstr "迭代变量%qE不应当是 reduction"
 
@@ -17090,19 +16594,16 @@ msgstr "迭代变量%qE不应当是 reduction"
 
 #: gimplify.c:5793
 #, fuzzy, gcc-internal-format
-#| msgid "iteration variable %qE should not be firstprivate"
 msgid "iteration variable %qE should not be lastprivate"
 msgstr "迭代变量%qE不应当是 firstprivate"
 
 #: gimplify.c:5796
 #, fuzzy, gcc-internal-format
-#| msgid "iteration variable %qE should be private"
 msgid "iteration variable %qE should not be private"
 msgstr "迭代变量%qE应当是私有的"
 
 #: gimplify.c:6064
 #, fuzzy, gcc-internal-format
-#| msgid "%s variable %qE is private in outer context"
 msgid "copyprivate variable %qE is not threadprivate or private in outer context"
 msgstr "%s 变量%qE在外层上下文中是私有的"
 
@@ -17113,7 +16614,6 @@ msgstr "%s 变量%qE在外层上下文中是私有的"
 
 #: gimplify.c:8063
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<}%> before %<else%>"
 msgid "expected %<_Cilk_spawn%> before %<_Cilk_sync%>"
 msgstr "%<else%>前需要%<}%>"
 
@@ -17170,7 +16670,6 @@ msgstr "不能使用 Graphite 循环优化"
 
 #: ipa-devirt.c:302 ipa-devirt.c:337
 #, fuzzy, gcc-internal-format
-#| msgid "previous definition here"
 msgid "type %qD violates one definition rule  "
 msgstr "先前的定义在这里"
 
@@ -17212,7 +16711,6 @@ msgstr ""
 
 #: ira.c:5544
 #, fuzzy, gcc-internal-format
-#| msgid "as %qD"
 msgid "for %qD"
 msgstr "作为%qD"
 
@@ -17238,7 +16736,6 @@ msgstr ""
 
 #: lto-cgraph.c:1083
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "bytecode stream: found multiple instances of cgraph node %d"
 msgid "bytecode stream: found multiple instances of cgraph node with uid %d"
 msgstr "字节码流:找到 cgraph 节点 %d 的多个实例"
 
@@ -17312,19 +16809,16 @@ msgstr ""
 
 #: lto-streamer-in.c:824
 #, fuzzy, gcc-internal-format
-#| msgid "operand number out of range"
 msgid "Reference statement index out of range"
 msgstr "操作数号超出范围"
 
 #: lto-streamer-in.c:827
 #, fuzzy, gcc-internal-format
-#| msgid "Warn if deprecated empty statements are found"
 msgid "Reference statement index not found"
 msgstr "发现不建议使用的空语句时给出警告"
 
 #: lto-streamer-out.c:393 lto-streamer-out.c:1307
 #, fuzzy, gcc-internal-format
-#| msgid "tree code %qs is not supported in gimple streams"
 msgid "tree code %qs is not supported in LTO streams"
 msgstr "树代码%qs在 gimple 流中不被支持"
 
@@ -17370,13 +16864,11 @@ msgstr ""
 
 #: omp-low.c:2351 omp-low.c:2364
 #, fuzzy, gcc-internal-format
-#| msgid "%<#pragma omp section%> may only be used in %<#pragma omp sections%> construct"
 msgid "%<#pragma omp cancel sections%> inside %<nowait%> sections construct"
 msgstr "%<#pragma omp section%>只能用在%<#pragma omp sections%>结构中"
 
 #: omp-low.c:2378
 #, fuzzy, gcc-internal-format
-#| msgid "invalid PHI argument"
 msgid "invalid arguments"
 msgstr "无效的 PHI 实参"
 
@@ -17417,7 +16909,6 @@ msgstr "临界区域不可以被嵌套在同名的临界区域内"
 
 #: omp-low.c:2492
 #, fuzzy, gcc-internal-format
-#| msgid "master region may not be closely nested inside of work-sharing or explicit task region"
 msgid "teams construct not closely nested inside of target region"
 msgstr "主要区域不可以紧密嵌套在工作共享或显式的任务区域内"
 
@@ -17438,13 +16929,11 @@ msgstr "OpenMP 结构块入口无效"
 
 #: omp-low.c:10275
 #, fuzzy, gcc-internal-format
-#| msgid "invalid entry to OpenMP structured block"
 msgid "invalid entry to Cilk Plus structured block"
 msgstr "OpenMP 结构块入口无效"
 
 #: omp-low.c:10283
 #, fuzzy, gcc-internal-format
-#| msgid "invalid branch to/from an OpenMP structured block"
 msgid "invalid branch to/from a Cilk Plus structured block"
 msgstr "进出 OpenMP 结构块的分支无效"
 
@@ -17455,7 +16944,6 @@ msgstr "进出 OpenMP 结构块的分支无效"
 
 #: omp-low.c:10761
 #, fuzzy, gcc-internal-format
-#| msgid "ignoring duplicate directory \"%s\"\n"
 msgid "ignoring large linear step"
 msgstr "忽略重复的目录“%s”\n"
 
@@ -17558,7 +17046,6 @@ msgstr "当unit-at-a-time 被禁止时顶层重新排序必须禁止。"
 
 #: opts.c:695
 #, fuzzy, gcc-internal-format
-#| msgid "-static-libgfortran is not supported in this configuration"
 msgid "transactional memory is not supported with non-call exceptions"
 msgstr "-static-libgfortran 在此配置下不受支持"
 
@@ -17705,7 +17192,6 @@ msgstr "无效的参数%qs"
 
 #: passes.c:107
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%s does not support split_edge"
 msgid "pass %s does not support cloning"
 msgstr "%s 不支持 split_edge"
 
@@ -17721,13 +17207,11 @@ msgstr "无法识别的选项‘-%s’"
 
 #: passes.c:999
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "unknown field %qE specified in initializer"
 msgid "unknown pass %s specified in -fenable"
 msgstr "初始值设定项里有未知的字段%qE"
 
 #: passes.c:1001
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "unknown field %qE specified in initializer"
 msgid "unknown pass %s specified in -fdisable"
 msgstr "初始值设定项里有未知的字段%qE"
 
@@ -17743,19 +17227,16 @@ msgstr ""
 
 #: passes.c:1065 passes.c:1093
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "invalid floating point option: -mfpu=%s"
 msgid "Invalid range %s in option %s"
 msgstr "无效的浮点选项:-mfpu=%s"
 
 #: passes.c:1111
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "invalid storage class for function %qE"
 msgid "enable pass %s for function %s"
 msgstr "函数%qE存储类无效"
 
 #: passes.c:1122
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "invalid storage class for function %qE"
 msgid "disable pass %s for function %s"
 msgstr "函数%qE存储类无效"
 
@@ -17859,7 +17340,6 @@ msgstr "-iplugindir <目录>选项未被传递给 gcc 驱动程序"
 
 #: predict.c:2805
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Missing argument list in function '%s' at %C"
 msgid "Missing counts for called function %s/%i"
 msgstr "函数‘%s’在%C处缺少参数列表"
 
@@ -17967,13 +17447,11 @@ msgstr "全局寄存器变量出现在函数定义后"
 
 #: reginfo.c:770
 #, fuzzy, gcc-internal-format
-#| msgid "register used for two global register variables"
 msgid "register of %qD used for multiple global register variables"
 msgstr "寄存器用作两个全局寄存器变量"
 
 #: reginfo.c:773
 #, fuzzy, gcc-internal-format
-#| msgid "  conflict with %q+D"
 msgid "conflicts with %qD"
 msgstr "  与%q+D冲突"
 
@@ -18199,25 +17677,21 @@ msgstr "%D 在汇编中被引用后又被重命名"
 
 #: symtab.c:736
 #, fuzzy, gcc-internal-format
-#| msgid "function returning a function"
 msgid "function symbol is not function"
 msgstr "函数返回了一个函数"
 
 #: symtab.c:744
 #, fuzzy, gcc-internal-format
-#| msgid "array is not addressable"
 msgid "variable symbol is not variable"
 msgstr "数组不能被取指"
 
 #: symtab.c:750
 #, fuzzy, gcc-internal-format
-#| msgid "node has wrong clone list"
 msgid "node has unknown type"
 msgstr "节点的克隆列表不正确"
 
 #: symtab.c:759
 #, fuzzy, gcc-internal-format
-#| msgid "node not found in cgraph_hash"
 msgid "node not found in symtab decl hashtable"
 msgstr "cgraph_hash 中找不到节点"
 
@@ -18233,19 +17707,16 @@ msgstr ""
 
 #: symtab.c:790
 #, fuzzy, gcc-internal-format
-#| msgid "node not found in cgraph_hash"
 msgid "node not found in symtab assembler name hash"
 msgstr "cgraph_hash 中找不到节点"
 
 #: symtab.c:797
 #, fuzzy, gcc-internal-format
-#| msgid "double linked list of clones corrupted"
 msgid "double linked list of assembler names corrupted"
 msgstr "双向克隆链接列表已损坏"
 
 #: symtab.c:802
 #, fuzzy, gcc-internal-format
-#| msgid "node is in clone list but it is not clone"
 msgid "node is analyzed byt it is not a definition"
 msgstr "节点在克隆列表中,但并不是克隆"
 
@@ -18256,7 +17727,6 @@ msgstr ""
 
 #: symtab.c:813
 #, fuzzy, gcc-internal-format
-#| msgid "node is in clone list but it is not clone"
 msgid "node is alias but not definition"
 msgstr "节点在克隆列表中,但并不是克隆"
 
@@ -18272,7 +17742,6 @@ msgstr ""
 
 #: symtab.c:832
 #, fuzzy, gcc-internal-format
-#| msgid "Combining units with different profiles is not supported."
 msgid "mixing different types of symbol in same comdat groups is not supported"
 msgstr "不支持组合有不同取样信息的单元。"
 
@@ -18293,13 +17762,11 @@ msgstr ""
 
 #: symtab.c:885
 #, fuzzy, gcc-internal-format
-#| msgid "verify_cgraph_node failed"
 msgid "verify_symtab_node failed"
 msgstr "verify_cgraph_node 失败"
 
 #: symtab.c:1110
 #, fuzzy, gcc-internal-format
-#| msgid "function %q+D redeclared as inline"
 msgid "function %q+D part of alias cycle"
 msgstr "函数%q+D重声明为内联的"
 
@@ -18335,13 +17802,11 @@ msgstr "#pragma GCC target 在此目标机上不受支持"
 
 #: tlink.c:489
 #, fuzzy, gcc-internal-format
-#| msgid "removing .rpo file"
 msgid "removing .rpo file: %m"
 msgstr "删除 .rpo 文件"
 
 #: tlink.c:491
 #, fuzzy, gcc-internal-format
-#| msgid "renaming .rpo file"
 msgid "renaming .rpo file: %m"
 msgstr "重命名 .rpo 文件"
 
@@ -18382,7 +17847,6 @@ msgstr "-frecord-gcc-switches 在此目标机上不受支持"
 
 #: toplev.c:989
 #, fuzzy, gcc-internal-format
-#| msgid "-fstack-usage not supported for this target"
 msgid "stack usage computation not supported for this target"
 msgstr "-fstack-usage 在此目标机上不受支持"
 
@@ -18393,13 +17857,11 @@ msgstr ""
 
 #: toplev.c:1060
 #, fuzzy, gcc-internal-format
-#| msgid "stackframe too big: %d bytes"
 msgid "stack usage might be %wd bytes"
 msgstr "栈帧太大:%d 字节"
 
 #: toplev.c:1063
 #, fuzzy, gcc-internal-format
-#| msgid "stackframe too big: %d bytes"
 msgid "stack usage is %wd bytes"
 msgstr "栈帧太大:%d 字节"
 
@@ -18495,7 +17957,6 @@ msgstr "-fstack-protector 在此目标机上不受支持"
 
 #: toplev.c:1559
 #, fuzzy, gcc-internal-format
-#| msgid "-fdata-sections not supported for this target"
 msgid "-fsanitize=address not supported for this target"
 msgstr "-fdata-sections 在此目标机上不受支持"
 
@@ -18511,7 +17972,6 @@ msgstr "关闭 %s 时出错:%m"
 
 #: trans-mem.c:614
 #, fuzzy, gcc-internal-format
-#| msgid "invalid use of %qD in linkage specification"
 msgid "invalid volatile use of %qD inside transaction"
 msgstr "指定链接时使用%qD无效"
 
@@ -18532,7 +17992,6 @@ msgstr ""
 
 #: trans-mem.c:725
 #, fuzzy, gcc-internal-format
-#| msgid "indirect function call with a yet undetermined callee"
 msgid "unsafe indirect function call within atomic transaction"
 msgstr "间接函数调用目标未定义"
 
@@ -18548,25 +18007,21 @@ msgstr ""
 
 #: trans-mem.c:743
 #, fuzzy, gcc-internal-format
-#| msgid "indirect function call with a yet undetermined callee"
 msgid "unsafe indirect function call within %<transaction_safe%> function"
 msgstr "间接函数调用目标未定义"
 
 #: trans-mem.c:758 trans-mem.c:4721
 #, fuzzy, gcc-internal-format
-#| msgid "namespace %qD not allowed in using-declaration"
 msgid "asm not allowed in atomic transaction"
 msgstr "不允许在 using 声明中使用命名空间%qD"
 
 #: trans-mem.c:761
 #, fuzzy, gcc-internal-format
-#| msgid "attributes are not allowed on a function-definition"
 msgid "asm not allowed in %<transaction_safe%> function"
 msgstr "函数定义中不允许有属性"
 
 #: trans-mem.c:772
 #, fuzzy, gcc-internal-format
-#| msgid "Place each function into its own section"
 msgid "relaxed transaction in atomic transaction"
 msgstr "将每个函数分别放在它们各自的节中"
 
@@ -18577,7 +18032,6 @@ msgstr ""
 
 #: trans-mem.c:782
 #, fuzzy, gcc-internal-format
-#| msgid "pointer to a function used in subtraction"
 msgid "outer transaction in transaction"
 msgstr "函数指针不能相减"
 
@@ -18593,7 +18047,6 @@ msgstr ""
 
 #: trans-mem.c:4348
 #, fuzzy, gcc-internal-format
-#| msgid "attributes are not allowed on a function-definition"
 msgid "%Kasm not allowed in %<transaction_safe%> function"
 msgstr "函数定义中不允许有属性"
 
@@ -18684,7 +18137,6 @@ msgstr "非整体结果的模式精度不匹配 BIT_FIELD_REF 的字段尺寸"
 
 #: tree-cfg.c:2836
 #, fuzzy, gcc-internal-format
-#| msgid "invalid position or size operand to BIT_FIELD_REF"
 msgid "position plus size exceeds size of referenced object in BIT_FIELD_REF"
 msgstr "BIT_FIELD_REF 位置或大小操作数无效"
 
@@ -18850,31 +18302,26 @@ msgstr "gimple 比较中操作数无效"
 
 #: tree-cfg.c:3333
 #, fuzzy, gcc-internal-format
-#| msgid "type mismatch in comparison expression"
 msgid "mismatching comparison operand types"
 msgstr "比较表达式类型不匹配"
 
 #: tree-cfg.c:3347
 #, fuzzy, gcc-internal-format
-#| msgid "function returning a function"
 msgid "vector comparison returning a boolean"
 msgstr "函数返回了一个函数"
 
 #: tree-cfg.c:3361
 #, fuzzy, gcc-internal-format
-#| msgid "invalid operands in gimple comparison"
 msgid "non-vector operands in vector comparison"
 msgstr "gimple 比较中操作数无效"
 
 #: tree-cfg.c:3374
 #, fuzzy, gcc-internal-format
-#| msgid "invalid vector permutation constant"
 msgid "invalid vector comparison resulting type"
 msgstr "无效的向量置换常量"
 
 #: tree-cfg.c:3381
 #, fuzzy, gcc-internal-format
-#| msgid "Warn about comparison of different enum types"
 msgid "bogus comparison result type"
 msgstr "对不同枚举类型之间的比较给出警告"
 
@@ -18950,7 +18397,6 @@ msgstr "对浮点向量的非元素大小的向量移位"
 
 #: tree-cfg.c:3660 tree-cfg.c:3681
 #, fuzzy, gcc-internal-format
-#| msgid "type mismatch in vector shift expression"
 msgid "type mismatch in widening vector shift expression"
 msgstr "向量移位表达式类型不匹配"
 
@@ -19001,13 +18447,11 @@ msgstr "条件表达式中类型不匹配"
 
 #: tree-cfg.c:3900
 #, fuzzy, gcc-internal-format
-#| msgid "type mismatch in vector shift expression"
 msgid "type mismatch in vector permute expression"
 msgstr "向量移位表达式类型不匹配"
 
 #: tree-cfg.c:3912
 #, fuzzy, gcc-internal-format
-#| msgid "expected integer expression"
 msgid "vector types expected in vector permute expression"
 msgstr "需要整数表达式"
 
@@ -19018,7 +18462,6 @@ msgstr ""
 
 #: tree-cfg.c:3939
 #, fuzzy, gcc-internal-format
-#| msgid "invalid increment expression"
 msgid "invalid mask type in vector permute expression"
 msgstr "无效的自增语句"
 
@@ -19084,43 +18527,36 @@ msgstr "开关语句操作数无效"
 
 #: tree-cfg.c:4268
 #, fuzzy, gcc-internal-format
-#| msgid "invalid operand to switch statement"
 msgid "non-integral type switch statement"
 msgstr "开关语句操作数无效"
 
 #: tree-cfg.c:4276
 #, fuzzy, gcc-internal-format
-#| msgid "%<default%> label not within a switch statement"
 msgid "invalid default case label in switch statement"
 msgstr "%<default%>标号未出现在 switch 语句内"
 
 #: tree-cfg.c:4288
 #, fuzzy, gcc-internal-format
-#| msgid "case label not within a switch statement"
 msgid "invalid case label in switch statement"
 msgstr "case 标号出现在开关语句外"
 
 #: tree-cfg.c:4295
 #, fuzzy, gcc-internal-format
-#| msgid "invalid operand to switch statement"
 msgid "invalid case range in switch statement"
 msgstr "开关语句操作数无效"
 
 #: tree-cfg.c:4305
 #, fuzzy, gcc-internal-format
-#| msgid "case label not within a switch statement"
 msgid "type mismatch for case label in switch statement"
 msgstr "case 标号出现在开关语句外"
 
 #: tree-cfg.c:4315
 #, fuzzy, gcc-internal-format
-#| msgid "case label not within a switch statement"
 msgid "type precision mismatch in switch statement"
 msgstr "case 标号出现在开关语句外"
 
 #: tree-cfg.c:4324
 #, fuzzy, gcc-internal-format
-#| msgid "case label not within a switch statement"
 msgid "case labels not sorted in switch statement"
 msgstr "case 标号出现在开关语句外"
 
@@ -19191,7 +18627,6 @@ msgstr "gimple_bb (phi) 设置为一个错误的基本块"
 
 #: tree-cfg.c:4816
 #, fuzzy, gcc-internal-format
-#| msgid "from this location"
 msgid "PHI node with location"
 msgstr "从这个地方"
 
@@ -19327,13 +18762,11 @@ msgstr "忽略声明有 warn_unused_result 属性的函数的返回值"
 
 #: tree-diagnostic.c:203
 #, fuzzy, gcc-internal-format
-#| msgid "redefinition of %q+D"
 msgid "in definition of macro %qs"
 msgstr "%q+D重定义"
 
 #: tree-diagnostic.c:220
 #, fuzzy, gcc-internal-format
-#| msgid "%s:%d:   in constexpr expansion of %qs"
 msgid "in expansion of macro %qs"
 msgstr "%s:%d:在%qs的广义常表达式扩展中"
 
@@ -19439,7 +18872,6 @@ msgstr "函数%q+F无法被内联,因为它使用了与内联冲突的属性"
 
 #: tree-inline.c:4147
 #, fuzzy, gcc-internal-format
-#| msgid "inlining failed in call to %q+F: %s"
 msgid "inlining failed in call to always_inline %q+F: %s"
 msgstr "调用%q+F时内联失败:%s"
 
@@ -19466,7 +18898,6 @@ msgstr "未实现的功能"
 
 #: tree-ssa-loop-niter.c:2632
 #, fuzzy, gcc-internal-format
-#| msgid "operation on %qE may be undefined"
 msgid "iteration %E invokes undefined behavior"
 msgstr "%qE上的运算结果可能是未定义的"
 
@@ -19482,7 +18913,6 @@ msgstr ""
 
 #: tree-ssa-operands.c:1001
 #, fuzzy, gcc-internal-format
-#| msgid "invalid operand in return statement"
 msgid "virtual def operand missing for stmt"
 msgstr "返回语句操作数无效"
 
@@ -19503,7 +18933,6 @@ msgstr ""
 
 #: tree-ssa-operands.c:1042
 #, fuzzy, gcc-internal-format
-#| msgid "operand number missing after %%-letter"
 msgid "use operand missing for stmt"
 msgstr "%% 字母后缺少操作数号"
 
@@ -19529,13 +18958,11 @@ msgstr "此函数中的%qD在使用前可能未初始化"
 
 #: tree-ssa-uninit.c:238
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is used uninitialized in this function"
 msgid "%qE is used uninitialized in this function"
 msgstr "此函数中的%qD在使用前未初始化"
 
 #: tree-ssa-uninit.c:243
 #, fuzzy, gcc-internal-format
-#| msgid "%qD may be used uninitialized in this function"
 msgid "%qE may be used uninitialized in this function"
 msgstr "此函数中的%qD在使用前可能未初始化"
 
@@ -19676,7 +19103,6 @@ msgstr ""
 
 #: tree-streamer-out.c:510
 #, fuzzy, gcc-internal-format
-#| msgid "gimple bytecode streams do not support machine specific builtin functions on this target"
 msgid "tree bytecode streams do not support machine specific builtin functions on this target"
 msgstr "GIMPLE 字节码流在此目标机上不支持机器相关的内建函数"
 
@@ -19882,37 +19308,31 @@ msgstr "树检查:在 %4$s 中访问有 %3$d 个操作数的 omp_clause %2$s 
 
 #: tree.c:12081
 #, fuzzy
-#| msgid "%qD is deprecated (declared at %s:%d): %s"
 msgid "%qD is deprecated (declared at %r%s:%d%R): %s"
 msgstr "不建议使用%qD(声明于 %s:%d):%s"
 
 #: tree.c:12085
 #, fuzzy
-#| msgid "%qD is deprecated (declared at %s:%d)"
 msgid "%qD is deprecated (declared at %r%s:%d%R)"
 msgstr "不建议使用%qD(声明于 %s:%d)"
 
 #: tree.c:12110
 #, fuzzy
-#| msgid "%qE is deprecated (declared at %s:%d): %s"
 msgid "%qE is deprecated (declared at %r%s:%d%R): %s"
 msgstr "不建议使用%qE(声明于 %s:%d):%s"
 
 #: tree.c:12114
 #, fuzzy
-#| msgid "%qE is deprecated (declared at %s:%d)"
 msgid "%qE is deprecated (declared at %r%s:%d%R)"
 msgstr "不建议使用%qE(声明于 %s:%d)"
 
 #: tree.c:12121
 #, fuzzy
-#| msgid "type is deprecated (declared at %s:%d): %s"
 msgid "type is deprecated (declared at %r%s:%d%R): %s"
 msgstr "不建议使用类型(声明于 %s:%d):%s"
 
 #: tree.c:12125
 #, fuzzy
-#| msgid "type is deprecated (declared at %s:%d)"
 msgid "type is deprecated (declared at %r%s:%d%R)"
 msgstr "不建议使用类型(声明于 %s:%d)"
 
@@ -19968,13 +19388,11 @@ msgstr "变量跟踪大小越限"
 
 #: varasm.c:319
 #, fuzzy, gcc-internal-format
-#| msgid "%+D causes a section type conflict"
 msgid "%+D causes a section type conflict with %D"
 msgstr "%+D 导致一个节类型冲突"
 
 #: varasm.c:322
 #, fuzzy, gcc-internal-format
-#| msgid "  conflict with %q+D"
 msgid "section type conflict with %D"
 msgstr "  与%q+D冲突"
 
@@ -19985,13 +19403,11 @@ msgstr "%+D 导致一个节类型冲突"
 
 #: varasm.c:329
 #, fuzzy, gcc-internal-format
-#| msgid "%+D causes a section type conflict"
 msgid "section type conflict"
 msgstr "%+D 导致一个节类型冲突"
 
 #: varasm.c:977
 #, fuzzy, gcc-internal-format
-#| msgid "alignment of %q+D is greater than maximum object file alignment.  Using %d"
 msgid "alignment of %q+D is greater than maximum object file alignment %d"
 msgstr "%q+D的对齐要求大于目标文件的最大对齐边界。使用 %d"
 
@@ -20012,13 +19428,11 @@ msgstr "为%q+D指定的寄存器不适合此数据类型"
 
 #: varasm.c:1295
 #, fuzzy, gcc-internal-format
-#| msgid "register specified for %q+D isn%'t suitable for data type"
 msgid "the register specified for %q+D cannot be accessed by the current target"
 msgstr "为%q+D指定的寄存器不适合此数据类型"
 
 #: varasm.c:1298
 #, fuzzy, gcc-internal-format
-#| msgid "register used for two global register variables"
 msgid "the register specified for %q+D is not general enough to be used as a register variable"
 msgstr "寄存器用作两个全局寄存器变量"
 
@@ -20094,7 +19508,6 @@ msgstr "弱引用在此配置下不受支持"
 
 #: varasm.c:5600
 #, fuzzy, gcc-internal-format
-#| msgid "nested functions not supported on this target"
 msgid "ifunc is not supported on this target"
 msgstr "嵌套函数在此目标机上不受支持"
 
@@ -20141,20 +19554,17 @@ msgstr "字节码流:标记 %s 不在预期的范围[%s,%s]内"
 
 #: c-family/array-notation-common.c:70
 #, fuzzy, gcc-internal-format
-#| msgid "case label is not an integer constant expression"
 msgid "__sec_implicit_index parameter must be an integer constant expression"
 msgstr "case 标号不是一个整数常量表达式"
 
 #: c-family/array-notation-common.c:106
 #, fuzzy, gcc-internal-format
-#| msgid "type mismatch in shift expression"
 msgid "length mismatch in expression"
 msgstr "移位表达式类型不匹配"
 
 #: c-family/array-notation-common.c:278 c-family/array-notation-common.c:306
 #: c/c-array-notation.c:721 cp/cp-array-notation.c:610
 #, fuzzy, gcc-internal-format
-#| msgid "comparison between %qT and %qT"
 msgid "rank mismatch between %qE and %qE"
 msgstr "在%qT和%qT间比较"
 
@@ -20166,7 +19576,6 @@ msgstr "在%qT和%qT间比较"
 #. may lie in the original expression.
 #: c-family/array-notation-common.c:287
 #, fuzzy, gcc-internal-format
-#| msgid "type mismatch in shift expression"
 msgid "rank mismatch in expression %qE"
 msgstr "移位表达式类型不匹配"
 
@@ -20177,19 +19586,16 @@ msgstr ""
 
 #: c-family/c-cilkplus.c:39
 #, fuzzy, gcc-internal-format
-#| msgid "iteration variable %qE should be private"
 msgid "iteration variable cannot be volatile"
 msgstr "迭代变量%qE应当是私有的"
 
 #: c-family/c-cilkplus.c:82
 #, fuzzy, gcc-internal-format
-#| msgid "%qE appears more than once in data clauses"
 msgid "variable appears in more than one clause"
 msgstr "%qE在数据子句中多次出现"
 
 #: c-family/c-cilkplus.c:84
 #, fuzzy, gcc-internal-format
-#| msgid "struct defined here"
 msgid "other clause defined here"
 msgstr "结构在此定义"
 
@@ -20400,13 +19806,11 @@ msgstr "使用 -flax-vector-conversions 以允许元素类型或数量不同的
 
 #: c-family/c-common.c:2333
 #, fuzzy, gcc-internal-format
-#| msgid "the last argument must be an 8-bit immediate"
 msgid "__builtin_shuffle last argument must be an integer vector"
 msgstr "最后一个实参必须是一个 8 位立即数"
 
 #: c-family/c-common.c:2342
 #, fuzzy, gcc-internal-format
-#| msgid "%<__builtin_longjmp%> second argument must be 1"
 msgid "__builtin_shuffle arguments must be vectors"
 msgstr "%<__builtin_longjmp%>的第二个实参必须是 1"
 
@@ -20557,13 +19961,11 @@ msgstr "%<sizeof%>不能用于函数类型"
 
 #: c-family/c-common.c:4958
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C++ does not allow %<alignof%> with a non-type"
 msgid "ISO C++ does not permit %<alignof%> applied to a function type"
 msgstr "ISO C++ 不允许对非类型使用%<alignof%>"
 
 #: c-family/c-common.c:4961
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C++ does not allow %<alignof%> with a non-type"
 msgid "ISO C does not permit %<_Alignof%> applied to a function type"
 msgstr "ISO C++ 不允许对非类型使用%<alignof%>"
 
@@ -20574,13 +19976,11 @@ msgstr "%qs不能用于 void 类型"
 
 #: c-family/c-common.c:4981
 #, fuzzy, gcc-internal-format
-#| msgid "invalid application of %qs to incomplete type %qT "
 msgid "invalid application of %qs to incomplete type %qT"
 msgstr "%qs不能用于不完全的类型%qT"
 
 #: c-family/c-common.c:4989
 #, fuzzy, gcc-internal-format
-#| msgid "invalid application of %qs to incomplete type %qT "
 msgid "invalid application of %qs to array type %qT of incomplete element type"
 msgstr "%qs不能用于不完全的类型%qT"
 
@@ -20787,13 +20187,11 @@ msgstr "此目标机不支持节属性"
 
 #: c-family/c-common.c:7417
 #, fuzzy, gcc-internal-format
-#| msgid "requested alignment is not a constant"
 msgid "requested alignment is not an integer constant"
 msgstr "要求的对齐边界不是常量"
 
 #: c-family/c-common.c:7425
 #, fuzzy, gcc-internal-format
-#| msgid "requested alignment is not a power of 2"
 msgid "requested alignment is not a positive power of 2"
 msgstr "要求的对齐边界不是 2 的某次方"
 
@@ -20804,7 +20202,6 @@ msgstr "要求的对齐边界太大"
 
 #: c-family/c-common.c:7513
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "requested alignment is too large"
 msgid "requested alignment %d is larger than %d"
 msgstr "要求的对齐边界太大"
 
@@ -20921,37 +20318,31 @@ msgstr "定义之后不能设定%qE属性"
 
 #: c-family/c-common.c:8190
 #, fuzzy, gcc-internal-format
-#| msgid "%qE attribute ignored"
 msgid "%qE attribute duplicated"
 msgstr "%qE属性被忽略"
 
 #: c-family/c-common.c:8192
 #, fuzzy, gcc-internal-format
-#| msgid "%qE attribute ignored for %qE"
 msgid "%qE attribute follows %qE"
 msgstr "%qE属性为%qE所忽略"
 
 #: c-family/c-common.c:8291
 #, fuzzy, gcc-internal-format
-#| msgid "previously declared here"
 msgid "type was previously declared %qE"
 msgstr "以前在此声明过"
 
 #: c-family/c-common.c:8344
 #, fuzzy, gcc-internal-format
-#| msgid "cleanup argument not an identifier"
 msgid "%qE argument not an identifier"
 msgstr "cleanup 实参不是一个标识符"
 
 #: c-family/c-common.c:8355
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not declared in %qD"
 msgid "%qD is not compatible with %qD"
 msgstr "%qD未在%qD中声明"
 
 #: c-family/c-common.c:8358
 #, fuzzy, gcc-internal-format
-#| msgid "cleanup argument not a function"
 msgid "transaction_wrap argument is not a function"
 msgstr "cleanup 实参不是一个函数"
 
@@ -21095,7 +20486,6 @@ msgstr "给予函数%2$qE的参数%1$u不是整型常量"
 
 #: c-family/c-common.c:9343
 #, fuzzy, gcc-internal-format
-#| msgid "non-const integer argument %u in call to function %qE"
 msgid "non-integer argument 3 in call to function %qE"
 msgstr "给予函数%2$qE的参数%1$u不是整型常量"
 
@@ -21316,7 +20706,6 @@ msgstr "%<->%>参数类型无效(有%qT)"
 
 #: c-family/c-common.c:9932
 #, fuzzy, gcc-internal-format
-#| msgid "invalid type argument of %<->%> (have %qT)"
 msgid "invalid type argument of %<->*%> (have %qT)"
 msgstr "%<->%>参数类型无效(有%qT)"
 
@@ -21342,49 +20731,41 @@ msgstr "%2$qE的第 %1$d 个实参类型不兼容"
 
 #: c-family/c-common.c:10277
 #, fuzzy, gcc-internal-format
-#| msgid "not enough arguments to function %qE"
 msgid "incorrect number of arguments to function %qE"
 msgstr "提供给函数%qE的实参太少"
 
 #: c-family/c-common.c:10285
 #, fuzzy, gcc-internal-format
-#| msgid "argument %d of %qE must be an address"
 msgid "argument 1 of %qE must be a non-void pointer type"
 msgstr "%2$qE的实参 %1$d 必须是地址"
 
 #: c-family/c-common.c:10294
 #, fuzzy, gcc-internal-format
-#| msgid "%Kfirst argument of %D must be a pointer, second integer constant"
 msgid "argument 1 of %qE must be a pointer to a constant size type"
 msgstr "%K%D 的第一个实参必须是一个指针,第二个必须是整常量"
 
 #: c-family/c-common.c:10305
 #, fuzzy, gcc-internal-format
-#| msgid "%Kfirst argument of %D must be a pointer, second integer constant"
 msgid "argument 1 of %qE must be a pointer to a nonzero size object"
 msgstr "%K%D 的第一个实参必须是一个指针,第二个必须是整常量"
 
 #: c-family/c-common.c:10320
 #, fuzzy, gcc-internal-format
-#| msgid "argument %d of %qE must be an address"
 msgid "argument %d of %qE must be a pointer type"
 msgstr "%2$qE的实参 %1$d 必须是地址"
 
 #: c-family/c-common.c:10327
 #, fuzzy, gcc-internal-format
-#| msgid "Type/rank mismatch in argument '%s' at %L"
 msgid "size mismatch in argument %d of %qE"
 msgstr "%2$L处实参‘%1$s’类型/秩不匹配"
 
 #: c-family/c-common.c:10343
 #, fuzzy, gcc-internal-format
-#| msgid "incompatible type for argument %d of %qE"
 msgid "invalid memory model argument %d of %qE"
 msgstr "%2$qE的第 %1$d 个实参类型不兼容"
 
 #: c-family/c-common.c:10350
 #, fuzzy, gcc-internal-format
-#| msgid "incompatible type for argument %d of %qE"
 msgid "non-integer memory model argument %d of %qE"
 msgstr "%2$qE的第 %1$d 个实参类型不兼容"
 
@@ -21520,7 +20901,6 @@ msgstr "比较无符号数和取反后又经提升的无符号数"
 
 #: c-family/c-common.c:11454
 #, fuzzy, gcc-internal-format
-#| msgid "%q+D defined but not used"
 msgid "typedef %qD locally defined but not used"
 msgstr "%q+D定义后未使用"
 
@@ -21532,7 +20912,6 @@ msgstr "索引值越界"
 #: c-family/c-common.c:11733 c-family/c-common.c:11783
 #: c-family/c-common.c:11798 cp/call.c:4493 cp/call.c:4500
 #, fuzzy, gcc-internal-format
-#| msgid "conversion from %qT to %qT is ambiguous"
 msgid "conversion of scalar %qT to vector %qT involves truncation"
 msgstr "从%qT到%qT的转换有歧义"
 
@@ -22020,7 +21399,6 @@ msgstr "无效的自增语句"
 
 #: c-family/c-omp.c:976
 #, fuzzy, gcc-internal-format
-#| msgid "%qE is not a function name"
 msgid "%qD is not an function argument"
 msgstr "%qE不是一个函数名"
 
@@ -22091,7 +21469,6 @@ msgstr "-Wformat-security 未与 -Wformat 一起使用,已忽略"
 
 #: c-family/c-opts.c:924
 #, fuzzy, gcc-internal-format
-#| msgid "nested functions not supported on this target"
 msgid "external TLS initialization functions not supported on this target"
 msgstr "嵌套函数在此目标机上不受支持"
 
@@ -22502,19 +21879,16 @@ msgstr "不能对该类型的实参求绝对值"
 
 #: c-family/cilk.c:93 cp/parser.c:5784
 #, fuzzy, gcc-internal-format
-#| msgid "%<friend%> can only be specified inside a class"
 msgid "%<_Cilk_spawn%> may only be used inside a function"
 msgstr "%<friend%>只能在类中指定"
 
 #: c-family/cilk.c:107
 #, fuzzy, gcc-internal-format
-#| msgid "virtual functions cannot be friends"
 msgid "only function calls can be spawned"
 msgstr "虚函数不能是友元"
 
 #: c-family/cilk.c:356
 #, fuzzy, gcc-internal-format
-#| msgid "address of explicit register variable %qD requested"
 msgid "explicit register variable %qD may not be modified in spawn"
 msgstr "要求显式寄存器变量%qD的地址。"
 
@@ -22525,7 +21899,6 @@ msgstr ""
 
 #: c-family/cilk.c:436
 #, fuzzy, gcc-internal-format
-#| msgid "invalid use of %qD in linkage specification"
 msgid "invalid use of label %q+D in %<_Cilk_spawn%>"
 msgstr "指定链接时使用%qD无效"
 
@@ -22551,7 +21924,6 @@ msgstr "-mtls-size 开关的值%qs不正确"
 
 #: common/config/arc/arc-common.c:80
 #, fuzzy, gcc-internal-format
-#| msgid "multiple function type attributes specified"
 msgid "multiple -mcpu= options specified."
 msgstr "指定了多个函数类型属性"
 
@@ -22572,43 +21944,36 @@ msgstr "-mcpu=%s 芯片版本不正确"
 
 #: common/config/i386/i386-common.c:764
 #, fuzzy, gcc-internal-format
-#| msgid "%salign-loops%s is obsolete, use -falign-loops%s"
 msgid "-malign-loops is obsolete, use -falign-loops"
 msgstr "%salign-loops%s 已经过时,请使用 -falign-loops%s"
 
 #: common/config/i386/i386-common.c:766
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%salign-loops=%d%s is not between 0 and %d"
 msgid "-malign-loops=%d is not between 0 and %d"
 msgstr "%salign-loops=%d%s 不在 0 和 %d 之间"
 
 #: common/config/i386/i386-common.c:773
 #, fuzzy, gcc-internal-format
-#| msgid "%salign-jumps%s is obsolete, use -falign-jumps%s"
 msgid "-malign-jumps is obsolete, use -falign-jumps"
 msgstr "%salign-jumps%s 已经过时,请使用 -falign-jumps%s"
 
 #: common/config/i386/i386-common.c:775
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%salign-loops=%d%s is not between 0 and %d"
 msgid "-malign-jumps=%d is not between 0 and %d"
 msgstr "%salign-loops=%d%s 不在 0 和 %d 之间"
 
 #: common/config/i386/i386-common.c:783
 #, fuzzy, gcc-internal-format
-#| msgid "%salign-functions%s is obsolete, use -falign-functions%s"
 msgid "-malign-functions is obsolete, use -falign-functions"
 msgstr "%salign-functions%s 已过时,请使用 -falign-functions%s"
 
 #: common/config/i386/i386-common.c:785
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%salign-loops=%d%s is not between 0 and %d"
 msgid "-malign-functions=%d is not between 0 and %d"
 msgstr "%salign-loops=%d%s 不在 0 和 %d 之间"
 
 #: common/config/i386/i386-common.c:794
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%sbranch-cost=%d%s is not between 0 and 5"
 msgid "-mbranch-cost=%d is not between 0 and 5"
 msgstr "%sbranch-cost=%d%s不在 0 和 5 之间"
 
@@ -22664,7 +22029,6 @@ msgstr "RX200 CPU 没有 FPU 硬件"
 
 #: common/config/rx/rx-common.c:63
 #, fuzzy, gcc-internal-format
-#| msgid "the RX200 cpu does not have FPU hardware"
 msgid "the RX100 cpu does not have FPU hardware"
 msgstr "RX200 CPU 没有 FPU 硬件"
 
@@ -22680,7 +22044,6 @@ msgstr "栈大小必须刚好是 2 的某次方"
 
 #: common/config/v850/v850-common.c:47
 #, fuzzy, gcc-internal-format
-#| msgid "value passed to %<-m%s%> is too large"
 msgid "value passed in %qs is too large"
 msgstr "传递给%<-m%s%>的值太大"
 
@@ -22777,7 +22140,6 @@ msgstr "%qE 2.95 虚表兼容属性只对 C++ 类有效"
 
 #: config/darwin.c:2738
 #, fuzzy, gcc-internal-format
-#| msgid "visibility attribute not supported in this configuration; ignored"
 msgid "protected visibility attribute not supported in this configuration; ignored"
 msgstr "可见性属性在此配置下不受支持;已忽略"
 
@@ -22788,19 +22150,16 @@ msgstr "无法打开临时响应文件 %s"
 
 #: config/darwin.c:3096
 #, fuzzy, gcc-internal-format
-#| msgid "%<-fobjc-abi-version%> >= 2 is only supported on %<-m64%> targets for %<-fnext-runtime%>"
 msgid "%<-fobjc-abi-version%> >= 2 must be used for %<-m64%> targets with %<-fnext-runtime%>"
 msgstr "%<-fobjc-abi-version%> >= 2 只在%<-m64%>目标下支持%<-fnext-runtime%>"
 
 #: config/darwin.c:3100
 #, fuzzy, gcc-internal-format
-#| msgid "%<-fobjc-abi-version%> >= 2 is only supported on %<-m64%> targets for %<-fnext-runtime%>"
 msgid "%<-fobjc-abi-version%> >= 2 is not supported on %<-m32%> targets with %<-fnext-runtime%>"
 msgstr "%<-fobjc-abi-version%> >= 2 只在%<-m64%>目标下支持%<-fnext-runtime%>"
 
 #: config/darwin.c:3185
 #, fuzzy, gcc-internal-format
-#| msgid "-mdynamic-no-pic overrides -fpic or -fPIC"
 msgid "%<-mdynamic-no-pic%> overrides %<-fpic%>, %<-fPIC%>, %<-fpie%> or %<-fPIE%>"
 msgstr "-mdynamic-no-pic 覆盖了 -fpic 或 -fPIC"
 
@@ -22917,26 +22276,22 @@ msgstr "对 VxWorks 的取样支持"
 
 #: config/aarch64/aarch64-builtins.c:817
 #, fuzzy, gcc-internal-format
-#| msgid "incompatible type for argument %d of %qE"
 msgid "incompatible type for argument %d, expected %<const int%>"
 msgstr "%2$qE的第 %1$d 个实参类型不兼容"
 
 #: config/aarch64/aarch64.c:5041
 #, fuzzy, gcc-internal-format
-#| msgid "missing filename after %qs"
 msgid "missing feature modifier after %qs"
 msgstr "%qs后缺少文件名"
 
 #. Extension not found in list.
 #: config/aarch64/aarch64.c:5062
 #, fuzzy, gcc-internal-format
-#| msgid "unknown TLS model %qs"
 msgid "unknown feature modifier %qs"
 msgstr "未知的 TLS 模型%qs"
 
 #: config/aarch64/aarch64.c:5093
 #, fuzzy, gcc-internal-format
-#| msgid "missing path after %qs"
 msgid "missing arch name in -march=%qs"
 msgstr "%qs后缺少路径"
 
@@ -22948,33 +22303,28 @@ msgstr "开关 -mcpu=%s 与 -march=%s 冲突"
 #. ARCH name not found in list.
 #: config/aarch64/aarch64.c:5125
 #, fuzzy, gcc-internal-format
-#| msgid "unknown value %s for -mfpu"
 msgid "unknown value %qs for -march"
 msgstr "-mfpu 的值 %s 未知"
 
 #: config/aarch64/aarch64.c:5150
 #, fuzzy, gcc-internal-format
-#| msgid "missing path after %qs"
 msgid "missing cpu name in -mcpu=%qs"
 msgstr "%qs后缺少路径"
 
 #. CPU name not found in list.
 #: config/aarch64/aarch64.c:5174
 #, fuzzy, gcc-internal-format
-#| msgid "unknown value %s for -mfpu"
 msgid "unknown value %qs for -mcpu"
 msgstr "-mfpu 的值 %s 未知"
 
 #. CPU name not found in list.
 #: config/aarch64/aarch64.c:5198
 #, fuzzy, gcc-internal-format
-#| msgid "unknown value %s for -mfpu"
 msgid "unknown value %qs for -mtune"
 msgstr "-mfpu 的值 %s 未知"
 
 #: config/aarch64/aarch64.c:5234
 #, fuzzy, gcc-internal-format
-#| msgid "does not support multilib"
 msgid "Assembler does not support -mabi=ilp32"
 msgstr "不支持 multilib"
 
@@ -22986,19 +22336,16 @@ msgstr ""
 #: config/aarch64/aarch64.c:5611 config/aarch64/aarch64.c:5719
 #: config/aarch64/aarch64.c:5958
 #, fuzzy, gcc-internal-format
-#| msgid "Use hardware floating point instructions"
 msgid "%qs and floating point or vector arguments"
 msgstr "使用硬件浮点指令"
 
 #: config/aarch64/aarch64.c:6830
 #, fuzzy, gcc-internal-format
-#| msgid "operand number out of range"
 msgid "lane out of range"
 msgstr "操作数号超出范围"
 
 #: config/aarch64/aarch64.c:6840
 #, fuzzy, gcc-internal-format
-#| msgid "constant argument out of range for %qs"
 msgid "constant out of range"
 msgstr "常量实参超过%qs的范围"
 
@@ -23066,7 +22413,6 @@ msgstr "错误的内建 fcode"
 
 #: config/arc/arc.c:738
 #, fuzzy, gcc-internal-format
-#| msgid "-mrelax is only supported for RTP PIC"
 msgid "-mmul64 not supported for ARC700"
 msgstr "-mrelax 只在 RTP PIC 上受支持"
 
@@ -23107,7 +22453,6 @@ msgstr ""
 
 #: config/arc/arc.c:1230
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "multiple function type attributes specified"
 msgid "multiply option implies r%d is fixed"
 msgstr "指定了多个函数类型属性"
 
@@ -23131,13 +22476,11 @@ msgstr ""
 
 #: config/arc/arc.c:5373
 #, fuzzy, gcc-internal-format
-#| msgid "%<__builtin_next_arg%> called without an argument"
 msgid "__builtin_arc_aligned with non-constant alignment"
 msgstr "调用%<__builtin_next_arg%>时没有给定实参"
 
 #: config/arc/arc.c:5381
 #, fuzzy, gcc-internal-format
-#| msgid "invalid argument to %<__builtin_frame_address%>"
 msgid "invalid alignment value for __builtin_arc_aligned"
 msgstr "%<__builtin_frame_address%>的实参无效"
 
@@ -23158,7 +22501,6 @@ msgstr ""
 
 #: config/arc/arc.c:6206
 #, fuzzy, gcc-internal-format
-#| msgid "Bad address, not register:"
 msgid "insn addresses not freed"
 msgstr "错误的地址,不是寄存器:"
 
@@ -23294,7 +22636,6 @@ msgstr "AAPCS 不支持 -mcallee-super-interworking"
 
 #: config/arm/arm.c:2571
 #, fuzzy, gcc-internal-format
-#| msgid "-fPIC and -G are incompatible"
 msgid "iWMMXt and NEON are incompatible"
 msgstr "-fPIC 与 -G 互不兼容"
 
@@ -23320,13 +22661,11 @@ msgstr "-mtp=cp15 和 16 位 Thumb 不能并用"
 
 #: config/arm/arm.c:2638
 #, fuzzy, gcc-internal-format
-#| msgid "structure size boundary can only be set to %s"
 msgid "structure size boundary can only be set to 8, 32 or 64"
 msgstr "结构大小边界只能被设定为 %s"
 
 #: config/arm/arm.c:2640
 #, fuzzy, gcc-internal-format
-#| msgid "structure size boundary can only be set to %s"
 msgid "structure size boundary can only be set to 8 or 32"
 msgstr "结构大小边界只能被设定为 %s"
 
@@ -23352,7 +22691,6 @@ msgstr "‘%s’不能被用作 PIC 寄存器"
 
 #: config/arm/arm.c:2715
 #, fuzzy, gcc-internal-format
-#| msgid "target CPU does not support ARM mode"
 msgid "target CPU does not support unaligned accesses"
 msgstr "目标 CPU 不支持 ARM 模式"
 
@@ -23440,7 +22778,6 @@ msgstr "掩码必须是一个立即数"
 
 #: config/arm/arm.c:25441
 #, fuzzy, gcc-internal-format
-#| msgid "%qE attribute argument should be between 0 to 255"
 msgid "the range of mask should be in 0 to 255"
 msgstr "%qE属性的参数应当在 0 和 255 之间"
 
@@ -23566,7 +22903,6 @@ msgstr ""
 
 #: config/arm/arm.c:26165
 #, fuzzy, gcc-internal-format
-#| msgid "Unexpected end of module"
 msgid "Unexpected thumb1 far jump"
 msgstr "非预期的模块结束"
 
@@ -23582,13 +22918,11 @@ msgstr "Thumb 模式中不能编码中断服务进程"
 
 #: config/avr/avr-c.c:66 config/avr/avr-c.c:191
 #, fuzzy, gcc-internal-format
-#| msgid "%qs expects a constant argument"
 msgid "%qs expects 1 argument but %d given"
 msgstr "%qs需要一个常量实参"
 
 #: config/avr/avr-c.c:77
 #, fuzzy, gcc-internal-format
-#| msgid "%qs expects a constant argument"
 msgid "%qs expects a fixed-point value as argument"
 msgstr "%qs需要一个常量实参"
 
@@ -23599,25 +22933,21 @@ msgstr "不建议使用。此开关不起作用。"
 
 #: config/avr/avr-c.c:108 config/avr/avr-c.c:174 config/avr/avr-c.c:231
 #, fuzzy, gcc-internal-format
-#| msgid "no matching template for %qD found"
 msgid "no matching fixed-point overload found for %qs"
 msgstr "没有找到与%qD匹配的模板"
 
 #: config/avr/avr-c.c:125
 #, fuzzy, gcc-internal-format
-#| msgid "%qs expects a constant argument"
 msgid "%qs expects 2 arguments but %d given"
 msgstr "%qs需要一个常量实参"
 
 #: config/avr/avr-c.c:137 config/avr/avr-c.c:202
 #, fuzzy, gcc-internal-format
-#| msgid "%qs expects a constant argument"
 msgid "%qs expects a fixed-point value as first argument"
 msgstr "%qs需要一个常量实参"
 
 #: config/avr/avr-c.c:145
 #, fuzzy, gcc-internal-format
-#| msgid "%qs expects a constant argument"
 msgid "%qs expects an integer value as second argument"
 msgstr "%qs需要一个常量实参"
 
@@ -23633,19 +22963,16 @@ msgstr "不支持 -fPIC"
 
 #: config/avr/avr.c:322
 #, fuzzy, gcc-internal-format
-#| msgid "-fpic is not supported"
 msgid "-fpie is not supported"
 msgstr "不支持 -fpic"
 
 #: config/avr/avr.c:324
 #, fuzzy, gcc-internal-format
-#| msgid "-fPIC is not supported"
 msgid "-fPIE is not supported"
 msgstr "不支持 -fPIC"
 
 #: config/avr/avr.c:586
 #, fuzzy, gcc-internal-format
-#| msgid "-flto and -fwhopr are mutually exclusive"
 msgid "function attributes %qs, %qs and %qs are mutually exclusive"
 msgstr "-flto and -fwhopr 互斥"
 
@@ -23656,25 +22983,21 @@ msgstr "%qE属性只能用于函数"
 
 #: config/avr/avr.c:616
 #, fuzzy, gcc-internal-format
-#| msgid "%qD cannot have default arguments"
 msgid "%qs function cannot have arguments"
 msgstr "%qD不能有默认参数"
 
 #: config/avr/avr.c:619
 #, fuzzy, gcc-internal-format
-#| msgid "functions cannot return __fp16 type"
 msgid "%qs function cannot return a value"
 msgstr "函数不能返回 __fp16 类型"
 
 #: config/avr/avr.c:626
 #, fuzzy, gcc-internal-format
-#| msgid "%qs appears to be a misspelled signal handler"
 msgid "%qs appears to be a misspelled %s handler"
 msgstr "%qs似乎是一个拼写错的信号处理者"
 
 #: config/avr/avr.c:856
 #, fuzzy, gcc-internal-format
-#| msgid "'builtin_return_address' contains only 2 bytes of address"
 msgid "%<builtin_return_address%> contains only 2 bytes of address"
 msgstr "‘builtin_return_address’只包含两字节地址"
 
@@ -23690,19 +23013,16 @@ msgstr "用程序内存地址访问数据内存"
 
 #: config/avr/avr.c:2241
 #, fuzzy, gcc-internal-format
-#| msgid "accessing program  memory with data memory address"
 msgid "accessing program memory with data memory address"
 msgstr "用数据内存地址访问程序内存"
 
 #: config/avr/avr.c:2660
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Number of registers used to pass integer arguments"
 msgid "fixed register %s used to pass parameter to function"
 msgstr "用以传递整数参数的寄存器个数"
 
 #: config/avr/avr.c:2931
 #, fuzzy, gcc-internal-format
-#| msgid "conflicting named address spaces (%s vs %s)"
 msgid "writing to address space %qs not supported"
 msgstr "冲突的有名地址空间(%s和%s)"
 
@@ -23718,13 +23038,11 @@ msgstr ""
 
 #: config/avr/avr.c:8292
 #, fuzzy, gcc-internal-format
-#| msgid "pointers to disjoint address spaces used in conditional expression"
 msgid "pointer targeting address space %qs must be const in %qT"
 msgstr "条件表达式中使用了指向不相交地址空间的指针"
 
 #: config/avr/avr.c:8295
 #, fuzzy, gcc-internal-format
-#| msgid "pointers to disjoint address spaces used in conditional expression"
 msgid "pointer targeting address space %qs must be const in %s %q+D"
 msgstr "条件表达式中使用了指向不相交地址空间的指针"
 
@@ -23745,7 +23063,6 @@ msgstr "只有未初始化的变量才能放在 .noinit 节中"
 
 #: config/avr/avr.c:8597
 #, fuzzy, gcc-internal-format
-#| msgid "only initialized variables can be placed into program memory area"
 msgid "uninitialized variable %q+D put into program memory area"
 msgstr "只有初始化的变量才能放入程序内存区"
 
@@ -23756,19 +23073,16 @@ msgstr "MCU%qs只支持汇编器"
 
 #: config/avr/avr.c:11101
 #, fuzzy, gcc-internal-format
-#| msgid "Conversion from %s to %s at %L"
 msgid "conversion from address space %qs to address space %qs"
 msgstr "从 %s 转换到 %s,位于 %L"
 
 #: config/avr/avr.c:12048
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Unexpected end of module in string constant"
 msgid "%s expects a compile time integer constant"
 msgstr "字符串常量中出现非预期的模块结束"
 
 #: config/avr/avr.c:12062
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%qs expects a constant argument"
 msgid "%s expects a compile time long integer constant as first argument"
 msgstr "%qs需要一个常量实参"
 
@@ -23855,7 +23169,6 @@ msgstr "不能为局部变量指定%qE属性"
 
 #: config/c6x/c6x.c:238
 #, fuzzy, gcc-internal-format
-#| msgid "-fPIC and -fpic are not supported for this target"
 msgid "-fpic and -fPIC not supported without -mdsbt on this target"
 msgstr "-fPIC 和 -fpic 不被此目标所支持"
 
@@ -23871,7 +23184,6 @@ msgstr ""
 
 #: config/cr16/cr16.c:299
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "invalid thread pointer option: -mtp=%s"
 msgid "invalid data model option -mdata-model=%s"
 msgstr "无效的线程指钟选项:-mtp=%s"
 
@@ -24020,13 +23332,11 @@ msgstr ""
 
 #: config/epiphany/epiphany.c:1468
 #, fuzzy, gcc-internal-format
-#| msgid "stack size must be an exact power of 2"
 msgid "stack_offset must be at least 4"
 msgstr "栈大小必须刚好是 2 的某次方"
 
 #: config/epiphany/epiphany.c:1470
 #, fuzzy, gcc-internal-format
-#| msgid "stack size must be an exact power of 2"
 msgid "stack_offset must be a multiple of 4"
 msgstr "栈大小必须刚好是 2 的某次方"
 
@@ -24092,7 +23402,6 @@ msgstr "此内建函数只在 fr450 上可用"
 
 #: config/h8300/h8300.c:324
 #, fuzzy, gcc-internal-format
-#| msgid "-f%s not supported: ignored"
 msgid "-msx is not supported in coff"
 msgstr "-f%s 不受支持:已忽略"
 
@@ -24103,25 +23412,21 @@ msgstr "-ms2600 未与 -ms 一起使用"
 
 #: config/h8300/h8300.c:352
 #, fuzzy, gcc-internal-format
-#| msgid "-mn is used without -mh or -ms"
 msgid "-mn is used without -mh or -ms or -msx"
 msgstr "-mn 未与 -mh 或 -ms 一起使用"
 
 #: config/h8300/h8300.c:358
 #, fuzzy, gcc-internal-format
-#| msgid "-ms2600 is used without -ms"
 msgid "-mexr is used without -ms"
 msgstr "-ms2600 未与 -ms 一起使用"
 
 #: config/h8300/h8300.c:364
 #, fuzzy, gcc-internal-format
-#| msgid "%<__int128%> is not supported for this target"
 msgid "-mint32 is not supported for H8300 and H8300L targets"
 msgstr "%<__int128%>在此目标机上不受支持"
 
 #: config/h8300/h8300.c:370
 #, fuzzy, gcc-internal-format
-#| msgid "-mn is used without -mh or -ms"
 msgid "-mexr is used without -ms or -msx"
 msgstr "-mn 未与 -mh 或 -ms 一起使用"
 
@@ -24142,7 +23447,6 @@ msgstr "不能在 PCH 文件中设定位置:%m"
 
 #: config/i386/i386.c:2911
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "-Werror=%s: no option -%s"
 msgid "wrong arg %s to option %s"
 msgstr "-Werror=%s:没有选项 -%s"
 
@@ -24153,13 +23457,11 @@ msgstr ""
 
 #: config/i386/i386.c:2929
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "register name not specified for %q+D"
 msgid "wrong stringop strategy name %s specified for option %s"
 msgstr "%q+D的寄存器名无效"
 
 #: config/i386/i386.c:2943
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "alignment may not be specified for %q+D"
 msgid "unknown alignment %s specified for option %s"
 msgstr "不能为%q+D指定对齐"
 
@@ -24170,13 +23472,11 @@ msgstr ""
 
 #: config/i386/i386.c:2962
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "no class name specified with %qs"
 msgid "too many size ranges specified in option %s"
 msgstr "%qs没有指定类名"
 
 #: config/i386/i386.c:3016
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Unknown argument list function at %L"
 msgid "Unknown parameter to option -mtune-ctrl: %s"
 msgstr "%L处参数列表函数未知"
 
@@ -24193,7 +23493,6 @@ msgstr ""
 
 #: config/i386/i386.c:3424
 #, fuzzy, gcc-internal-format
-#| msgid "code model %qs not supported in the %s bit mode"
 msgid "address mode %qs not supported in the %s bit mode"
 msgstr "代码模式%qs在 %s 位模式下不受支持"
 
@@ -24205,7 +23504,6 @@ msgstr "代码模式%qs在 %s 位模式下不受支持"
 
 #: config/i386/i386.c:3462 config/i386/i386.c:3474
 #, fuzzy, gcc-internal-format
-#| msgid "code model %qs not supported in the %s bit mode"
 msgid "code model %qs not supported in x32 mode"
 msgstr "代码模式%qs在 %s 位模式下不受支持"
 
@@ -24216,7 +23514,6 @@ msgstr "代码模式 %s 在 PIC 模式下不受支持"
 
 #: config/i386/i386.c:3517
 #, fuzzy, gcc-internal-format
-#| msgid "-m%s not supported in this configuration"
 msgid "-masm=intel not supported in this configuration"
 msgstr "-m%s 在此配置下不受支持"
 
@@ -24237,7 +23534,6 @@ msgstr "generic 只能用在%stune%s %s中"
 
 #: config/i386/i386.c:3678
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "generic CPU can be used only for %stune=%s %s"
 msgid "intel CPU can be used only for %stune=%s %s"
 msgstr "generic 只能用在%stune%s %s中"
 
@@ -24253,13 +23549,11 @@ msgstr "%2$stune=%3$s%4$s所带参数(%1$s)不正确"
 
 #: config/i386/i386.c:3777
 #, fuzzy, gcc-internal-format
-#| msgid "%sregparm%s is ignored in 64-bit mode"
 msgid "-mregparm is ignored in 64-bit mode"
 msgstr "%sregparm%s 在 64 位模式下被忽略"
 
 #: config/i386/i386.c:3780
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%sregparm=%d%s is not between 0 and %d"
 msgid "-mregparm=%d is not between 0 and %d"
 msgstr "%sregparm=%d%s 不在 0 和 %d 之间"
 
@@ -24270,13 +23564,11 @@ msgstr "%srtd%s 在 64 位模式下被忽略"
 
 #: config/i386/i386.c:3900
 #, fuzzy, gcc-internal-format
-#| msgid "%spreferred-stack-boundary%s is not supported for this target"
 msgid "-mpreferred-stack-boundary is not supported for this target"
 msgstr "%spreferred-stack-boundary%s 在此目标机上不被支持"
 
 #: config/i386/i386.c:3903
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%spreferred-stack-boundary=%d%s is not between %d and %d"
 msgid "-mpreferred-stack-boundary=%d is not between %d and %d"
 msgstr "%spreferred-stack-boundary=%d%s 不在 %d 和 %d 之间"
 
@@ -24308,7 +23600,7 @@ msgstr "堆栈探针目前需要框架指针或 %saccumulate-outgoing-args%s 来
 #: config/i386/i386.c:4108
 #, gcc-internal-format
 msgid "-mfentry isn%'t supported for 32-bit in combination with -fpic"
-msgstr "-mfentry 在 32 位下不能和 -pic 同时使用"
+msgstr "-mfentry 在 32 位下不能和 -fpic 同时使用"
 
 #: config/i386/i386.c:4115
 #, gcc-internal-format
@@ -24422,7 +23714,6 @@ msgstr "没有启用 AVX,却出现了 AVX 向量实参,这改变了 ABI"
 
 #: config/i386/i386.c:6236
 #, fuzzy, gcc-internal-format
-#| msgid "AVX vector argument without AVX enabled changes the ABI"
 msgid "AVX vector return without AVX enabled changes the ABI"
 msgstr "没有启用 AVX,却出现了 AVX 向量实参,这改变了 ABI"
 
@@ -24515,7 +23806,6 @@ msgstr "扩展的寄存器不支持的操作数大小"
 
 #: config/i386/i386.c:14881
 #, fuzzy, gcc-internal-format
-#| msgid "non-integer operand used with operand code '%c'"
 msgid "non-integer operand used with operand code 'z'"
 msgstr "非整数操作数使用了操作数代码‘%c’"
 
@@ -24541,7 +23831,6 @@ msgstr ""
 
 #: config/i386/i386.c:31750 config/i386/i386.c:32198
 #, fuzzy, gcc-internal-format
-#| msgid "static linking is not supported"
 msgid "Virtual function multiversioning not supported"
 msgstr "不支持静态链接"
 
@@ -24552,25 +23841,21 @@ msgstr ""
 
 #: config/i386/i386.c:31818
 #, fuzzy, gcc-internal-format
-#| msgid "previous declaration of %q+D"
 msgid "previous declaration of %D"
 msgstr "%q+D的前一个声明"
 
 #: config/i386/i386.c:32037
 #, fuzzy, gcc-internal-format
-#| msgid "nested functions not supported on this target"
 msgid "multiversioning needs ifunc which is not supported on this target"
 msgstr "嵌套函数在此目标机上不受支持"
 
 #: config/i386/i386.c:32405
 #, fuzzy, gcc-internal-format
-#| msgid "argument to %qs must be a 2-bit unsigned literal"
 msgid "Parameter to builtin must be a string constant or literal"
 msgstr "%qs的实参必须是一个 2 位无符号字面常量"
 
 #: config/i386/i386.c:32430 config/i386/i386.c:32480
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Argument to -ffpe-trap is not valid: %s"
 msgid "Parameter to builtin not valid: %s"
 msgstr "-ffpe-trap 的参数无效:%s"
 
@@ -24581,25 +23866,21 @@ msgstr "最后一个实参必须是一个 2 位立即数"
 
 #: config/i386/i386.c:33287
 #, fuzzy, gcc-internal-format
-#| msgid "the fifth argument must be a 8-bit immediate"
 msgid "the fifth argument must be an 8-bit immediate"
 msgstr "第五个实参必须是一个 8 位立即数"
 
 #: config/i386/i386.c:33382
 #, fuzzy, gcc-internal-format
-#| msgid "the third argument must be a 8-bit immediate"
 msgid "the third argument must be an 8-bit immediate"
 msgstr "第三个实参必须是一个 8 位立即数"
 
 #: config/i386/i386.c:33967
 #, fuzzy, gcc-internal-format
-#| msgid "the last argument must be a 1-bit immediate"
 msgid "the last argument must be an 1-bit immediate"
 msgstr "最后一个实参必须是一个 1 位立即数"
 
 #: config/i386/i386.c:33974
 #, fuzzy, gcc-internal-format
-#| msgid "the last argument must be a 32-bit immediate"
 msgid "the last argument must be a 3-bit immediate"
 msgstr "最后一个参数必须是一个 32 位立即数"
 
@@ -24630,37 +23911,31 @@ msgstr "最后一个实参必须是一个 8 位立即数"
 
 #: config/i386/i386.c:34214
 #, fuzzy, gcc-internal-format
-#| msgid "argument must be a constant"
 msgid "the third argument must be comparison constant"
 msgstr "实参必须是常数"
 
 #: config/i386/i386.c:34219
 #, fuzzy, gcc-internal-format
-#| msgid "incorrect sharing of tree nodes"
 msgid "incorect comparison mode"
 msgstr "对树结节的共享不正确"
 
 #: config/i386/i386.c:34225 config/i386/i386.c:34421
 #, fuzzy, gcc-internal-format
-#| msgid "incorrect sharing of tree nodes"
 msgid "incorrect rounding operand"
 msgstr "对树结节的共享不正确"
 
 #: config/i386/i386.c:34403
 #, fuzzy, gcc-internal-format
-#| msgid "the last argument must be a 4-bit immediate"
 msgid "the immediate argument must be a 4-bit immediate"
 msgstr "最后一个实参必须是一个 4 位立即数"
 
 #: config/i386/i386.c:34409
 #, fuzzy, gcc-internal-format
-#| msgid "the last argument must be a 5-bit immediate"
 msgid "the immediate argument must be a 5-bit immediate"
 msgstr "最后一个实参必须是一个 5 位立即数"
 
 #: config/i386/i386.c:34412
 #, fuzzy, gcc-internal-format
-#| msgid "the last argument must be an 8-bit immediate"
 msgid "the immediate argument must be an 8-bit immediate"
 msgstr "最后一个实参必须是一个 8 位立即数"
 
@@ -24691,25 +23966,21 @@ msgstr "最后一个实参必须是一个立即数"
 
 #: config/i386/i386.c:35816 config/i386/i386.c:35964
 #, fuzzy, gcc-internal-format
-#| msgid "the last argument must be a 4-bit immediate"
 msgid "the last argument must be scale 1, 2, 4, 8"
 msgstr "最后一个实参必须是一个 4 位立即数"
 
 #: config/i386/i386.c:36016
 #, fuzzy, gcc-internal-format
-#| msgid "left argument must be a slice"
 msgid "the forth argument must be scale 1, 2, 4, 8"
 msgstr "左实参必须是一个切片"
 
 #: config/i386/i386.c:36022
 #, fuzzy, gcc-internal-format
-#| msgid "the last argument must be a 4-bit immediate"
 msgid "the last argument must be hint 0 or 1"
 msgstr "最后一个实参必须是一个 4 位立即数"
 
 #: config/i386/i386.c:36041
 #, fuzzy, gcc-internal-format
-#| msgid "the last argument must be an 8-bit immediate"
 msgid "the xabort's argument must be an 8-bit immediate"
 msgstr "最后一个实参必须是一个 8 位立即数"
 
@@ -24735,7 +24006,6 @@ msgstr "%qE不兼容的属性已被忽略"
 
 #: config/i386/i386.c:46439
 #, fuzzy, gcc-internal-format
-#| msgid "Unknown architecture '%s'"
 msgid "Unknown architecture specific memory model"
 msgstr "未知的架构‘%s’"
 
@@ -24751,7 +24021,6 @@ msgstr ""
 
 #: config/i386/i386.c:46476
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "unsupported ELF file class"
 msgid "unsupported simdlen %d"
 msgstr "不支持的 ELF 文件类"
 
@@ -24955,7 +24224,6 @@ msgstr "不支持 -falign-loops=%d"
 
 #: config/m68k/m68k.c:624
 #, fuzzy, gcc-internal-format
-#| msgid "stack limits not supported on this target"
 msgid "-fstack-limit- options are not supported on this cpu"
 msgstr "堆栈限制在此目标机上不受支持"
 
@@ -25240,7 +24508,6 @@ msgstr "非预期的 %d 字节 cop 指令"
 
 #: config/microblaze/microblaze.c:1679
 #, fuzzy, gcc-internal-format
-#| msgid "-fPIC and -fpic are not supported for this target"
 msgid "-fPIC/-fpic not supported for this target"
 msgstr "-fPIC 和 -fpic 不被此目标所支持"
 
@@ -25276,7 +24543,6 @@ msgstr "%qs属性只能应用于函数"
 
 #: config/mips/mips.c:1427 config/mips/mips.c:1433
 #, fuzzy, gcc-internal-format
-#| msgid "%qE cannot have both %<mips16%> and %<nomips16%> attributes"
 msgid "%qE cannot have both %qs and %qs attributes"
 msgstr "%qE不能同时有%<mips16%>和%<nomips16%>属性"
 
@@ -25385,7 +24651,6 @@ msgstr "%<-mgp32%>和%<-mfp64%>只有当使用 o32 ABI 时才能一起使用"
 
 #: config/mips/mips.c:17050 config/mips/mips.c:17052 config/mips/mips.c:17065
 #, fuzzy, gcc-internal-format
-#| msgid "assert: %s is assign compatible with %s"
 msgid "%qs is incompatible with %qs"
 msgstr "assert:%s 与 %s 赋值兼容"
 
@@ -25396,7 +24661,6 @@ msgstr "assert:%s 与 %s 赋值兼容"
 #. an error.
 #: config/mips/mips.c:17059
 #, fuzzy, gcc-internal-format
-#| msgid "assert: %s is assign compatible with %s"
 msgid "the combination of %qs and %qs is incompatible with %qs"
 msgstr "assert:%s 与 %s 赋值兼容"
 
@@ -25407,13 +24671,11 @@ msgstr "%qs架构不支持 Branch-Likely 指令"
 
 #: config/mips/mips.c:17120
 #, fuzzy, gcc-internal-format
-#| msgid "the %qs architecture does not support the synci instruction"
 msgid "the %qs architecture does not support madd or msub instructions"
 msgstr "%qs架构不支持 synci 指令"
 
 #: config/mips/mips.c:17134
 #, fuzzy, gcc-internal-format
-#| msgid "Generate position-independent code if possible (large mode)"
 msgid "cannot generate position-independent code for %qs"
 msgstr "尽可能生成与位置无关的代码(大模式)"
 
@@ -25530,19 +24792,16 @@ msgstr ""
 
 #: config/msp430/msp430.c:1102
 #, fuzzy, gcc-internal-format
-#| msgid "invalid argument of %qE attribute"
 msgid "unrecognised interrupt vector argument of %qE attribute"
 msgstr "属性%qE的参数无效"
 
 #: config/msp430/msp430.c:1111
 #, fuzzy, gcc-internal-format
-#| msgid "argument %d of %qE must be in the range %d...%d"
 msgid "numeric argument of %qE attribute must be in range 0..63"
 msgstr "%2$qE的第 %1$d 个参数必须是在 %3$d 和 %4$d 之间"
 
 #: config/msp430/msp430.c:1117
 #, fuzzy, gcc-internal-format
-#| msgid "argument of %qE attribute is not a string constant"
 msgid "argument of %qE attribute is not a string constant or number"
 msgstr "%qE属性的实参不是一个字符串常量"
 
@@ -25564,13 +24823,11 @@ msgstr "给予函数的实参太少"
 
 #: config/nds32/nds32.c:1213
 #, fuzzy, gcc-internal-format
-#| msgid "multiple function type attributes specified"
 msgid "multiple nested types attributes to function %qD"
 msgstr "指定了多个函数类型属性"
 
 #: config/nds32/nds32.c:1225
 #, fuzzy, gcc-internal-format
-#| msgid "multiple interrupt attributes not allowed"
 msgid "multiple interrupt attributes to function %qD"
 msgstr "不允许多个中断属性"
 
@@ -25581,44 +24838,37 @@ msgstr "不允许多个中断属性"
 #: config/nds32/nds32.c:3007 config/nds32/nds32.c:3013
 #: config/nds32/nds32.c:3045
 #, fuzzy, gcc-internal-format
-#| msgid "nested functions not supported on this target"
 msgid "a nested function is not supported for reduced registers"
 msgstr "嵌套函数在此目标机上不受支持"
 
 #. The enum index value for array size is out of range.
 #: config/nds32/nds32.c:2848
 #, fuzzy, gcc-internal-format
-#| msgid "invalid register in the instruction"
 msgid "intrinsic register index is out of range"
 msgstr "此指令中寄存器无效"
 
 #: config/nds32/nds32.c:3153
 #, fuzzy, gcc-internal-format
-#| msgid "invalid type for iteration variable %qE"
 msgid "invalid id value for interrupt/exception attribute"
 msgstr "迭代变量%qE类型无效"
 
 #: config/nds32/nds32.c:3181
 #, fuzzy, gcc-internal-format
-#| msgid "invalid argument of %qs attribute"
 msgid "invalid id value for reset attribute"
 msgstr "属性%qs的参数无效"
 
 #: config/nds32/nds32.c:3197
 #, fuzzy, gcc-internal-format
-#| msgid "invalid argument of %qs attribute"
 msgid "invalid nmi function for reset attribute"
 msgstr "属性%qs的参数无效"
 
 #: config/nds32/nds32.c:3210
 #, fuzzy, gcc-internal-format
-#| msgid "invalid argument of %qs attribute"
 msgid "invalid warm function for reset attribute"
 msgstr "属性%qs的参数无效"
 
 #: config/nds32/nds32.c:3284
 #, fuzzy, gcc-internal-format
-#| msgid "%s does not support split_block"
 msgid "not support -fpic"
 msgstr "%s 不支持 split_block"
 
@@ -25629,7 +24879,6 @@ msgstr ""
 
 #: config/nios2/nios2.c:794
 #, fuzzy, gcc-internal-format
-#| msgid "target attribute or pragma changes double precision floating point"
 msgid "switch %<-mcustom-%s%> is required for double precision floating point"
 msgstr "目标属性或 pragma 改变了双精度浮点数"
 
@@ -25675,7 +24924,6 @@ msgstr ""
 
 #: config/nios2/nios2.c:2598
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "invalid argument to built-in function"
 msgid "invalid argument to built-in function %s"
 msgstr "内建函数实参无效"
 
@@ -25686,7 +24934,6 @@ msgstr ""
 
 #: config/nios2/nios2.c:2743
 #, fuzzy, gcc-internal-format
-#| msgid "switch -mcpu=%s conflicts with -march=%s switch"
 msgid "switch %<-mcustom-%s%> conflicts with switch %<-mcustom-%s%>"
 msgstr "开关 -mcpu=%s 与 -march=%s 冲突"
 
@@ -25707,7 +24954,6 @@ msgstr ""
 
 #: config/nios2/nios2.c:2899
 #, fuzzy, gcc-internal-format
-#| msgid "%s only accepts 2 arguments"
 msgid "%<no-custom-%s%> does not accept arguments"
 msgstr "%s 只接受 2 个参数"
 
@@ -25728,7 +24974,6 @@ msgstr ""
 
 #: config/nios2/nios2.c:2943
 #, fuzzy, gcc-internal-format
-#| msgid "type of %qE is unknown"
 msgid "%<%s%> is unknown"
 msgstr "%qE的类型未知"
 
@@ -25979,13 +25224,11 @@ msgstr "-malign-power 在 64 位 Darwin 下不受支持;它与已安装的 C 
 
 #: config/rs6000/rs6000.c:3173
 #, fuzzy, gcc-internal-format
-#| msgid "not configured for ABI: '%s'"
 msgid "not configured for SPE ABI"
 msgstr "没有为此 ABI 配置:‘%s’"
 
 #: config/rs6000/rs6000.c:3178
 #, fuzzy, gcc-internal-format
-#| msgid "Do not use PowerPC instruction set"
 msgid "not configured for SPE instruction set"
 msgstr "不使用 PowerPC 指令集"
 
@@ -26021,7 +25264,6 @@ msgstr ""
 
 #: config/rs6000/rs6000.c:3333
 #, fuzzy, gcc-internal-format
-#| msgid "--resource requires -o"
 msgid "-mdirect-move requires -mvsx"
 msgstr "--resource 需要 -o"
 
@@ -26032,13 +25274,11 @@ msgstr ""
 
 #: config/rs6000/rs6000.c:3347
 #, fuzzy, gcc-internal-format
-#| msgid "--resource requires -o"
 msgid "-mpower8-vector requires -mvsx"
 msgstr "--resource 需要 -o"
 
 #: config/rs6000/rs6000.c:3354
 #, fuzzy, gcc-internal-format
-#| msgid "--resource requires -o"
 msgid "-mvsx-timode requires -mvsx"
 msgstr "--resource 需要 -o"
 
@@ -26099,7 +25339,6 @@ msgstr "内部错误:对 %s 的内建函数已经处理过。"
 
 #: config/rs6000/rs6000.c:11517
 #, fuzzy, gcc-internal-format
-#| msgid "argument 1 must be a 5-bit signed literal"
 msgid "argument 1 must be an 8-bit field value"
 msgstr "实参 1 必须是一个 5 位有符号字面值"
 
@@ -26125,13 +25364,11 @@ msgstr "__builtin_altivec_predicate 的第 1 个实参越界"
 
 #: config/rs6000/rs6000.c:12074
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "argument 2 must be a 5-bit unsigned literal"
 msgid "argument %d must be an unsigned literal"
 msgstr "实参 2 必须是一个 5 位无符号字面值"
 
 #: config/rs6000/rs6000.c:12076
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "argument 1 of __builtin_spe_predicate is out of range"
 msgid "argument %d is an unsigned literal that is out of range"
 msgstr "__builtin_spe_predicate 的第 1 个实参越界"
 
@@ -26152,13 +25389,11 @@ msgstr "实参 2 必须是一个 1 位无符号字面值"
 
 #: config/rs6000/rs6000.c:12246
 #, fuzzy, gcc-internal-format
-#| msgid "number must be 0 or 1"
 msgid "argument 2 must be 0 or 1"
 msgstr "数字必须是 0 或 1"
 
 #: config/rs6000/rs6000.c:12254
 #, fuzzy, gcc-internal-format
-#| msgid "argument %d of %qE must be in the range %d...%d"
 msgid "argument 3 must be in the range 0..15"
 msgstr "%2$qE的第 %1$d 个参数必须是在 %3$d 和 %4$d 之间"
 
@@ -26199,7 +25434,6 @@ msgstr "__builtin_spe_predicate 的第 1 个实参越界"
 
 #: config/rs6000/rs6000.c:13239
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "this builtin function is only available on the fr450"
 msgid "Builtin function %s is only valid for the cell processor"
 msgstr "此内建函数只在 fr450 上可用"
 
@@ -26464,19 +25698,16 @@ msgstr "-fdirectives-only 与 -traditional 不兼容"
 
 #: config/rs6000/e500.h:37
 #, fuzzy, gcc-internal-format
-#| msgid "AltiVec and E500 instructions cannot coexist"
 msgid "AltiVec and SPE instructions cannot coexist"
 msgstr "AltiVec 和 E500 指令不能共存"
 
 #: config/rs6000/e500.h:39
 #, fuzzy, gcc-internal-format
-#| msgid "VSX and E500 instructions cannot coexist"
 msgid "VSX and SPE instructions cannot coexist"
 msgstr "VSX 和 E500 指令不能共存"
 
 #: config/rs6000/e500.h:41
 #, fuzzy, gcc-internal-format
-#| msgid "64-bit E500 not supported"
 msgid "64-bit SPE not supported"
 msgstr "不支持 64 位 E500"
 
@@ -26492,7 +25723,6 @@ msgstr "-m64 需要 PowerPC64 CPU"
 
 #: config/rs6000/linux64.h:116
 #, fuzzy, gcc-internal-format
-#| msgid "-mas100-syntax is incompatible with -gdwarf"
 msgid "-mcall-aixdesc incompatible with -mabi=elfv2"
 msgstr "-mas100-syntax 与 -gdwarf 不兼容"
 
@@ -26550,13 +25780,11 @@ msgstr "-m%s 在此配置下不受支持"
 
 #: config/rx/rx.c:644
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "unreocgnized control register number: %d - using 'psw'"
 msgid "unrecognized control register number: %d - using 'psw'"
 msgstr "无法识别的控制寄存器号:%d - 使用‘psw’"
 
 #: config/rx/rx.c:1380
 #, fuzzy, gcc-internal-format
-#| msgid "multiple interrupt attributes not allowed"
 msgid "multiple fast interrupt routines seen: %qE and %qE"
 msgstr "不允许多个中断属性"
 
@@ -26577,13 +25805,11 @@ msgstr "RX FPU  指令不支持 NaN 和无限"
 
 #: config/s390/s390.c:479
 #, fuzzy, gcc-internal-format
-#| msgid "argument of %qE attribute is not a string constant"
 msgid "requested %qE attribute is not a non-negative integer constant or too large (max. %d)"
 msgstr "%qE属性的实参不是一个字符串常量"
 
 #: config/s390/s390.c:1712
 #, fuzzy, gcc-internal-format
-#| msgid "argument to %qE attribute larger than %d"
 msgid "argument to %qs is too large (max. %d)"
 msgstr "%qE属性的实参大于 %d"
 
@@ -26634,13 +25860,11 @@ msgstr "-mstack-guard 意味着使用 -mstack-size"
 
 #: config/s390/s390.c:5480
 #, fuzzy, gcc-internal-format
-#| msgid "function %q+D redeclared with attribute noinline"
 msgid "function %qE with the %qs attribute is not hotpatchable"
 msgstr "函数%q+D重声明为带有不可内联属性"
 
 #: config/s390/s390.c:5521
 #, fuzzy, gcc-internal-format
-#| msgid "ms_hook_prologue is not compatible with nested function"
 msgid "hotpatch_prologue is not compatible with nested function"
 msgstr "ms_hook_prologue 与嵌套函数不兼容"
 
@@ -26661,7 +25885,6 @@ msgstr ""
 
 #: config/s390/s390.c:9019
 #, fuzzy, gcc-internal-format
-#| msgid "frame size of %qs is "
 msgid "frame size of %qs is %wd bytes"
 msgstr "%qs的框架大小是"
 
@@ -26770,7 +25993,6 @@ msgstr "32 位系统不支持 -mcmodel="
 
 #: config/sparc/sparc.c:1298
 #, fuzzy, gcc-internal-format
-#| msgid "-fdata-sections not supported for this target"
 msgid "-fcall-saved-REG is not supported for out registers"
 msgstr "-fdata-sections 在此目标机上不受支持"
 
@@ -26856,13 +26078,11 @@ msgstr "__BELOW100__ 属性不允许用于自动存储类"
 
 #: config/tilegx/tilegx.c:3512 config/tilepro/tilepro.c:3118
 #, fuzzy, gcc-internal-format
-#| msgid "bad builtin code"
 msgid "bad builtin icode"
 msgstr "错误的内建代码"
 
 #: config/tilegx/tilegx.c:3553 config/tilepro/tilepro.c:3144
 #, fuzzy, gcc-internal-format
-#| msgid "mask must be an immediate"
 msgid "operand must be an immediate of the right size"
 msgstr "掩码必须是一个立即数"
 
@@ -26983,19 +26203,16 @@ msgstr "要准备太多的堆栈空间:%d"
 
 #: config/vms/vms-c.c:44
 #, fuzzy, gcc-internal-format
-#| msgid "junk at end of #pragma ghs starttda"
 msgid "junk at end of #pragma __nostandard"
 msgstr "#pragma ghs starttda 末尾有垃圾字符"
 
 #: config/vms/vms-c.c:55
 #, fuzzy, gcc-internal-format
-#| msgid "junk at end of #pragma %s"
 msgid "junk at end of #pragma __standard"
 msgstr "#pragma %s 末尾有垃圾字符"
 
 #: config/vms/vms-c.c:80
 #, fuzzy, gcc-internal-format
-#| msgid "malformed %<#pragma align%>, ignoring"
 msgid "malformed '#pragma member_alignment', ignoring"
 msgstr "%<#pragma align%>格式错误 - 已忽略"
 
@@ -27006,25 +26223,21 @@ msgstr ""
 
 #: config/vms/vms-c.c:100
 #, fuzzy, gcc-internal-format
-#| msgid "malformed %<#pragma align%>"
 msgid "malformed '#pragma member_alignment'"
 msgstr "%<#pragma align%>格式错误"
 
 #: config/vms/vms-c.c:134
 #, fuzzy, gcc-internal-format
-#| msgid "invalid alignment for %<#pragma align%>, ignoring"
 msgid "unhandled alignment for '#pragma nomember_alignment'"
 msgstr "%<#pragma align%>指定的对齐边界无效,忽略"
 
 #: config/vms/vms-c.c:147
 #, fuzzy, gcc-internal-format
-#| msgid "junk at end of '#pragma options'"
 msgid "garbage at end of '#pragma nomember_alignment'"
 msgstr "‘#pragma options’末尾有垃圾字符"
 
 #: config/vms/vms-c.c:202
 #, fuzzy, gcc-internal-format
-#| msgid "malformed '#pragma options', ignoring"
 msgid "malformed '#pragma extern_model', ignoring"
 msgstr "‘#pragma options’格式错误 - 已忽略"
 
@@ -27040,31 +26253,26 @@ msgstr ""
 
 #: config/vms/vms-c.c:234
 #, fuzzy, gcc-internal-format
-#| msgid "junk at end of %<#pragma extern_prefix%>"
 msgid "junk at end of '#pragma extern_model'"
 msgstr "%<#pragma extern_prefix%>末尾有垃圾字符"
 
 #: config/vms/vms-c.c:248
 #, fuzzy, gcc-internal-format
-#| msgid "malformed %<#pragma message%>, ignored"
 msgid "vms '#pragma __message' is ignored"
 msgstr "%<#pragma message%>格式错误,已忽略"
 
 #: config/vms/vms-c.c:273 config/vms/vms-c.c:279
 #, fuzzy, gcc-internal-format
-#| msgid "malformed #pragma extern_prefix, ignored"
 msgid "malformed '#pragma __extern_prefix', ignoring"
 msgstr "#pragma extern_prefix 格式错误,已忽略"
 
 #: config/vms/vms-c.c:312 config/vms/vms-c.c:332
 #, fuzzy, gcc-internal-format
-#| msgid "malformed %<#pragma %s%>, ignored"
 msgid "malformed %<#pragma %s%>, ignoring"
 msgstr "%<#pragma %s%>格式错误,已忽略"
 
 #: config/vms/vms-c.c:328
 #, fuzzy, gcc-internal-format
-#| msgid "invalid constant in %<#pragma pack%> - ignored"
 msgid "invalid constant in %<#pragma %s%>"
 msgstr "%<#pragma pack%>中有无效常量 - 已忽略"
 
@@ -27146,31 +26354,26 @@ msgstr ""
 
 #: c/c-array-notation.c:708 c/c-array-notation.c:714
 #, fuzzy, gcc-internal-format
-#| msgid "%qD cannot be declared as constexpr"
 msgid "%qE cannot be scalar when %qE is not"
 msgstr "%qD不能被声明为广义常表达式"
 
 #: c/c-array-notation.c:776 cp/cp-array-notation.c:658
 #, fuzzy, gcc-internal-format
-#| msgid "type mismatch between an SSA_NAME and its symbol"
 msgid "length mismatch between LHS and RHS"
 msgstr "SSA_NAME 和其符号间类型不匹配"
 
 #: c/c-array-notation.c:1323 cp/cp-array-notation.c:1407
 #, fuzzy, gcc-internal-format
-#| msgid "array subscript is not an integer"
 msgid "start-index of array notation triplet is not an integer"
 msgstr "数组下标不是一个整数"
 
 #: c/c-array-notation.c:1328 cp/cp-array-notation.c:1412
 #, fuzzy, gcc-internal-format
-#| msgid "array subscript is not an integer"
 msgid "length of array notation triplet is not an integer"
 msgstr "数组下标不是一个整数"
 
 #: c/c-array-notation.c:1335 cp/cp-array-notation.c:1417
 #, fuzzy, gcc-internal-format
-#| msgid "array subscript is not an integer"
 msgid "stride of array notation triplet is not an integer"
 msgstr "数组下标不是一个整数"
 
@@ -27593,7 +26796,6 @@ msgstr "带有类型限定的空声明没有重声明标记"
 
 #: c/c-decl.c:3755
 #, fuzzy, gcc-internal-format
-#| msgid "empty declaration with type qualifier does not redeclare tag"
 msgid "empty declaration with %<_Alignas%> does not redeclare tag"
 msgstr "带有类型限定的空声明没有重声明标记"
 
@@ -27609,7 +26811,6 @@ msgstr "%<inline%>用于空声明中"
 
 #: c/c-decl.c:3799
 #, fuzzy, gcc-internal-format
-#| msgid "%<inline%> in empty declaration"
 msgid "%<_Noreturn%> in empty declaration"
 msgstr "%<inline%>用于空声明中"
 
@@ -27630,7 +26831,6 @@ msgstr "空声明中指定存储类无用"
 
 #: c/c-decl.c:3824
 #, fuzzy, gcc-internal-format
-#| msgid "useless type name in empty declaration"
 msgid "useless %qs in empty declaration"
 msgstr "空声明中类型名无用"
 
@@ -27641,7 +26841,6 @@ msgstr "空声明中类型限定无用"
 
 #: c/c-decl.c:3844
 #, fuzzy, gcc-internal-format
-#| msgid "useless %<__thread%> in empty declaration"
 msgid "useless %<_Alignas%> in empty declaration"
 msgstr "空声明中%<__thread%>无用"
 
@@ -27890,7 +27089,6 @@ msgstr "重复的%<volatile%>"
 
 #: c/c-decl.c:5147
 #, fuzzy, gcc-internal-format
-#| msgid "duplicate %<restrict%>"
 msgid "duplicate %<_Atomic%>"
 msgstr "重复的%<restrict%>"
 
@@ -27921,7 +27119,6 @@ msgstr "函数声明定义为%<typedef%>"
 
 #: c/c-decl.c:5190
 #, fuzzy, gcc-internal-format
-#| msgid "function definition declared %<auto%>"
 msgid "function definition declared %qs"
 msgstr "函数声明定义为%<auto%>"
 
@@ -27977,7 +27174,6 @@ msgstr "嵌套函数%qE被声明为%<extern%>"
 
 #: c/c-decl.c:5259
 #, fuzzy, gcc-internal-format
-#| msgid "function-scope %qE implicitly auto and declared %<__thread%>"
 msgid "function-scope %qE implicitly auto and declared %qs"
 msgstr "函数作用域的%qE隐式为 auto,却被声明为%<__thread%>"
 
@@ -28103,7 +27299,6 @@ msgstr "忽略函数返回类型的类型限定"
 #: c/c-decl.c:5754 c/c-decl.c:5952 c/c-decl.c:6005 c/c-decl.c:6078
 #: c/c-decl.c:6179 c/c-parser.c:2401
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C forbids qualified function types"
 msgid "%<_Atomic%>-qualified function type"
 msgstr "ISO C 不允许使用 const 或 volatile 限定函数类型"
 
@@ -28149,55 +27344,46 @@ msgstr "为结构字段指定了%qs"
 
 #: c/c-decl.c:5880
 #, fuzzy, gcc-internal-format
-#| msgid "bit-field %qs has invalid type"
 msgid "bit-field %qE has atomic type"
 msgstr "位段%qs类型无效"
 
 #: c/c-decl.c:5882
 #, fuzzy, gcc-internal-format
-#| msgid "bit-field %qs has invalid type"
 msgid "bit-field has atomic type"
 msgstr "位段%qs类型无效"
 
 #: c/c-decl.c:5891
 #, fuzzy, gcc-internal-format
-#| msgid "alignment may not be specified for %q+D"
 msgid "alignment specified for typedef %qE"
 msgstr "不能为%q+D指定对齐"
 
 #: c/c-decl.c:5893
 #, fuzzy, gcc-internal-format
-#| msgid "%qs specified for parameter %qE"
 msgid "alignment specified for %<register%> object %qE"
 msgstr "为形参%2$qE指定了%1$qs"
 
 #: c/c-decl.c:5898
 #, fuzzy, gcc-internal-format
-#| msgid "%qs specified for parameter %qE"
 msgid "alignment specified for parameter %qE"
 msgstr "为形参%2$qE指定了%1$qs"
 
 #: c/c-decl.c:5900
 #, fuzzy, gcc-internal-format
-#| msgid "%qs specified for unnamed parameter"
 msgid "alignment specified for unnamed parameter"
 msgstr "为无名形参指定了%qs"
 
 #: c/c-decl.c:5905
 #, fuzzy, gcc-internal-format
-#| msgid "alignment may not be specified for %q+D"
 msgid "alignment specified for bit-field %qE"
 msgstr "不能为%q+D指定对齐"
 
 #: c/c-decl.c:5907
 #, fuzzy, gcc-internal-format
-#| msgid "%qs specified for unnamed parameter"
 msgid "alignment specified for unnamed bit-field"
 msgstr "为无名形参指定了%qs"
 
 #: c/c-decl.c:5910
 #, fuzzy, gcc-internal-format
-#| msgid "assignment of function %qD"
 msgid "alignment specified for function %qE"
 msgstr "向函数%qD赋值"
 
@@ -28218,7 +27404,6 @@ msgstr "typedef%q+D声明为%<inline%>"
 
 #: c/c-decl.c:5968
 #, fuzzy, gcc-internal-format
-#| msgid "typedef %q+D declared %<inline%>"
 msgid "typedef %q+D declared %<_Noreturn%>"
 msgstr "typedef%q+D声明为%<inline%>"
 
@@ -28250,7 +27435,6 @@ msgstr "形参%q+D声明为%<inline%>"
 
 #: c/c-decl.c:6111
 #, fuzzy, gcc-internal-format
-#| msgid "parameter %q+D declared %<inline%>"
 msgid "parameter %q+D declared %<_Noreturn%>"
 msgstr "形参%q+D声明为%<inline%>"
 
@@ -28281,19 +27465,16 @@ msgstr "不能内联%<main%>函数"
 
 #: c/c-decl.c:6223
 #, fuzzy, gcc-internal-format
-#| msgid "%qE initialized and declared %<extern%>"
 msgid "%<main%> declared %<_Noreturn%>"
 msgstr "%qE已初始化,却又被声明为%<extern%>"
 
 #: c/c-decl.c:6236
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C99 does not support %<_Static_assert%>"
 msgid "ISO C99 does not support %<_Noreturn%>"
 msgstr "ISO C90 不支持%<_Static_assert%>"
 
 #: c/c-decl.c:6239
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C90 does not support %<long long%>"
 msgid "ISO C90 does not support %<_Noreturn%>"
 msgstr "ISO C90 不支持%<long long%>"
 
@@ -28309,7 +27490,6 @@ msgstr "变量%q+D声明为%<inline%>"
 
 #: c/c-decl.c:6280
 #, fuzzy, gcc-internal-format
-#| msgid "variable %q+D declared %<inline%>"
 msgid "variable %q+D declared %<_Noreturn%>"
 msgstr "变量%q+D声明为%<inline%>"
 
@@ -28482,7 +27662,6 @@ msgstr "可变数组是结构中的唯一成员"
 
 #: c/c-decl.c:7352 cp/class.c:6386
 #, fuzzy, gcc-internal-format
-#| msgid "size of array %qE is too large"
 msgid "type %qT is too large"
 msgstr "数组%qE太大"
 
@@ -28682,13 +27861,11 @@ msgstr "形参%qD被设定但未被使用"
 #. allow it.
 #: c/c-decl.c:8697
 #, fuzzy, gcc-internal-format
-#| msgid "%<for%> loop initial declarations are only allowed in C99 mode"
 msgid "%<for%> loop initial declarations are only allowed in C99 or C11 mode"
 msgstr "只允许在 C99 模式下使用%<for%>循环初始化声明"
 
 #: c/c-decl.c:8702
 #, fuzzy, gcc-internal-format
-#| msgid "use option -std=c99 or -std=gnu99 to compile your code"
 msgid "use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code"
 msgstr "使用 -std=c99 或 -std=gnu99 来编译您的代码"
 
@@ -28799,31 +27976,26 @@ msgstr "%qE没有出现在声明的开头"
 
 #: c/c-decl.c:9862
 #, fuzzy, gcc-internal-format
-#| msgid "%<__thread%> used with %<auto%>"
 msgid "%qE used with %<auto%>"
 msgstr "%<__thread%>与%<auto%>一起使用"
 
 #: c/c-decl.c:9864
 #, fuzzy, gcc-internal-format
-#| msgid "%<__thread%> used with %<register%>"
 msgid "%qE used with %<register%>"
 msgstr "%<__thread%>与%<register%>一起使用"
 
 #: c/c-decl.c:9866
 #, fuzzy, gcc-internal-format
-#| msgid "%<__thread%> used with %<typedef%>"
 msgid "%qE used with %<typedef%>"
 msgstr "%<__thread%>与%<typedef%>一起使用"
 
 #: c/c-decl.c:9880 c/c-parser.c:6560
 #, fuzzy, gcc-internal-format
-#| msgid "%s does not support %s"
 msgid "ISO C99 does not support %qE"
 msgstr "%s 不支持 %s"
 
 #: c/c-decl.c:9883 c/c-parser.c:6563
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C90 does not support %<long long%>"
 msgid "ISO C90 does not support %qE"
 msgstr "ISO C90 不支持%<long long%>"
 
@@ -28849,7 +28021,6 @@ msgstr "声明指定了多个存储类"
 
 #: c/c-decl.c:9933
 #, fuzzy, gcc-internal-format
-#| msgid "%qs must be used with %qs"
 msgid "%qs used with %qE"
 msgstr "%qs必须与%qs一起使用"
 
@@ -28906,7 +28077,6 @@ msgstr "需要指定声明"
 
 #: c/c-parser.c:1535
 #, fuzzy, gcc-internal-format
-#| msgid "%<inline%> in empty declaration"
 msgid "%<__auto_type%> in empty declaration"
 msgstr "%<inline%>用于空声明中"
 
@@ -28942,13 +28112,11 @@ msgstr "数据定义时没有类型或存储类"
 
 #: c/c-parser.c:1706
 #, fuzzy, gcc-internal-format
-#| msgid "%<typeof%> applied to a bit-field"
 msgid "%<__auto_type%> used with a bit-field initializer"
 msgstr "为位段使用%<typeof%>"
 
 #: c/c-parser.c:1778 c/c-parser.c:1863
 #, fuzzy, gcc-internal-format
-#| msgid "%<auto%> in file-scope empty declaration"
 msgid "%<__auto_type%> requires an initialized data declaration"
 msgstr "文件作用域中出现%<auto%>空声明"
 
@@ -29022,19 +28190,16 @@ msgstr ""
 
 #: c/c-parser.c:2372
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C99 does not support %<_Static_assert%>"
 msgid "ISO C99 does not support the %<_Atomic%> qualifier"
 msgstr "ISO C90 不支持%<_Static_assert%>"
 
 #: c/c-parser.c:2375
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C90 does not support %<_Static_assert%>"
 msgid "ISO C90 does not support the %<_Atomic%> qualifier"
 msgstr "ISO C90 不支持%<_Static_assert%>"
 
 #: c/c-parser.c:2403
 #, fuzzy, gcc-internal-format
-#| msgid "%<typeof%> applied to a bit-field"
 msgid "%<_Atomic%> applied to a qualified type"
 msgstr "为位段使用%<typeof%>"
 
@@ -29109,13 +28274,11 @@ msgstr "为位段使用%<typeof%>"
 
 #: c/c-parser.c:3049
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C90 does not support %<long long%>"
 msgid "ISO C99 does not support %<_Alignas%>"
 msgstr "ISO C90 不支持%<long long%>"
 
 #: c/c-parser.c:3052
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C90 does not support %<long long%>"
 msgid "ISO C90 does not support %<_Alignas%>"
 msgstr "ISO C90 不支持%<long long%>"
 
@@ -29126,7 +28289,6 @@ msgstr "需要标识符或%<(%>"
 
 #: c/c-parser.c:3349 c/c-parser.c:3378
 #, fuzzy, gcc-internal-format
-#| msgid "Warn for obsolescent usage in a declaration"
 msgid "array notations cannot be used in declaration"
 msgstr "对声明中的过时用法给出警告"
 
@@ -29306,37 +28468,31 @@ msgstr "对位段使用%<sizeof%>"
 
 #: c/c-parser.c:6616
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C++ does not allow %<alignof%> with a non-type"
 msgid "ISO C does not allow %<%E (expression)%>"
 msgstr "ISO C++ 不允许对非类型使用%<alignof%>"
 
 #: c/c-parser.c:6643
 #, fuzzy, gcc-internal-format
-#| msgid "cannot take address of bit-field %qD"
 msgid "cannot take address of %qs"
 msgstr "无法取得位段%qD的地址"
 
 #: c/c-parser.c:6727
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C99 does not support %<_Static_assert%>"
 msgid "ISO C99 does not support %<_Generic%>"
 msgstr "ISO C90 不支持%<_Static_assert%>"
 
 #: c/c-parser.c:6730
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C90 does not support %<_Static_assert%>"
 msgid "ISO C90 does not support %<_Generic%>"
 msgstr "ISO C90 不支持%<_Static_assert%>"
 
 #: c/c-parser.c:6797
 #, fuzzy, gcc-internal-format
-#| msgid "cast specifies function type"
 msgid "%<_Generic%> association has function type"
 msgstr "类型转换指定了函数类型"
 
 #: c/c-parser.c:6800
 #, fuzzy, gcc-internal-format
-#| msgid "expression statement has incomplete type"
 msgid "%<_Generic%> association has incomplete type"
 msgstr "表达式语句类型不完全"
 
@@ -29352,7 +28508,6 @@ msgstr ""
 
 #: c/c-parser.c:6829
 #, fuzzy, gcc-internal-format
-#| msgid "originally defined here"
 msgid "original %<default%> is here"
 msgstr "原先在这里定义"
 
@@ -29368,7 +28523,6 @@ msgstr "指针目标类型在 C++ 中不兼容"
 
 #: c/c-parser.c:6861
 #, fuzzy, gcc-internal-format
-#| msgid "Generate load/store multiple instructions"
 msgid "%<_Generic> selector matches multiple associations"
 msgstr "生成加载/存储乘法指令"
 
@@ -29399,7 +28553,6 @@ msgstr "ISO C 不允许在表达式中使用花括号组"
 
 #: c/c-parser.c:7265
 #, fuzzy, gcc-internal-format
-#| msgid "wrong number of arguments to function %<__builtin_next_arg%>"
 msgid "wrong number of arguments to %<__builtin_choose_expr%>"
 msgstr "给函数%<__builtin_next_arg%>的参数数目不对"
 
@@ -29410,7 +28563,6 @@ msgstr "%<__builtin_choose_expr%>的第一个实参不是一个常量"
 
 #: c/c-parser.c:7347
 #, fuzzy, gcc-internal-format
-#| msgid "wrong number of arguments to function %<__builtin_next_arg%>"
 msgid "wrong number of arguments to %<__builtin_complex%>"
 msgstr "给函数%<__builtin_next_arg%>的参数数目不对"
 
@@ -29421,13 +28573,11 @@ msgstr ""
 
 #: c/c-parser.c:7378
 #, fuzzy, gcc-internal-format
-#| msgid "%<__builtin_longjmp%> second argument must be 1"
 msgid "%<__builtin_complex%> operands of different types"
 msgstr "%<__builtin_longjmp%>的第二个实参必须是 1"
 
 #: c/c-parser.c:7424 cp/parser.c:5861
 #, fuzzy, gcc-internal-format
-#| msgid "wrong number of arguments to function %<__builtin_next_arg%>"
 msgid "wrong number of arguments to %<__builtin_shuffle%>"
 msgstr "给函数%<__builtin_next_arg%>的参数数目不对"
 
@@ -29538,19 +28688,16 @@ msgstr "%<#pragma omp taskwait%>只能用在复合语句中"
 
 #: c/c-parser.c:9422 cp/parser.c:31380
 #, fuzzy, gcc-internal-format
-#| msgid "%<#pragma omp taskwait%> may only be used in compound statements"
 msgid "%<#pragma omp taskyield%> may only be used in compound statements"
 msgstr "%<#pragma omp taskwait%>只能用在复合语句中"
 
 #: c/c-parser.c:9433 cp/parser.c:31396
 #, fuzzy, gcc-internal-format
-#| msgid "%<#pragma omp barrier%> may only be used in compound statements"
 msgid "%<#pragma omp cancel%> may only be used in compound statements"
 msgstr "%<#pragma omp barrier%>只能用在复合语句中"
 
 #: c/c-parser.c:9444 cp/parser.c:31412
 #, fuzzy, gcc-internal-format
-#| msgid "%<#pragma omp taskwait%> may only be used in compound statements"
 msgid "%<#pragma omp cancellation point%> may only be used in compound statements"
 msgstr "%<#pragma omp taskwait%>只能用在复合语句中"
 
@@ -29561,7 +28708,6 @@ msgstr "%<#pragma omp section%>只能用在%<#pragma omp sections%>结构中"
 
 #: c/c-parser.c:9479 cp/parser.c:31468
 #, fuzzy, gcc-internal-format
-#| msgid "for statement expected"
 msgid "for, while or do statement expected"
 msgstr "需要 for 语句"
 
@@ -29598,7 +28744,6 @@ msgstr "%<num_threads%>值必须为正"
 
 #: c/c-parser.c:10195
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, or %<||%>"
 msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or %<max%>"
 msgstr "需要%<+%>、%<*%>、%<-%>、%<&%>、%<^%>、%<|%>、%<&&%>或%<||%>"
 
@@ -29619,19 +28764,16 @@ msgstr "无效的调度类型"
 
 #: c/c-parser.c:10410
 #, fuzzy, gcc-internal-format
-#| msgid "%<num_threads%> value must be positive"
 msgid "%<num_teams%> value must be positive"
 msgstr "%<num_threads%>值必须为正"
 
 #: c/c-parser.c:10454
 #, fuzzy, gcc-internal-format
-#| msgid "%<num_threads%> value must be positive"
 msgid "%<thread_limit%> value must be positive"
 msgstr "%<num_threads%>值必须为正"
 
 #: c/c-parser.c:10496 cp/semantics.c:5589
 #, fuzzy, gcc-internal-format
-#| msgid "%Hcollapse argument needs positive constant integer expression"
 msgid "%<aligned%> clause alignment expression must be positive constant integer expression"
 msgstr "%H折叠变量需要正整常数表达式"
 
@@ -29642,49 +28784,41 @@ msgstr ""
 
 #: c/c-parser.c:10538
 #, fuzzy, gcc-internal-format
-#| msgid "schedule chunk size expression must be integral"
 msgid "%<linear%> clause step expression must be integral"
 msgstr "调度块大小表达式必须为整型"
 
 #: c/c-parser.c:10575
 #, fuzzy, gcc-internal-format
-#| msgid "%Hcollapse argument needs positive constant integer expression"
 msgid "%<safelen%> clause expression must be positive constant integer expression"
 msgstr "%H折叠变量需要正整常数表达式"
 
 #: c/c-parser.c:10611
 #, fuzzy, gcc-internal-format
-#| msgid "%Hcollapse argument needs positive constant integer expression"
 msgid "%<simdlen%> clause expression must be positive constant integer expression"
 msgstr "%H折叠变量需要正整常数表达式"
 
 #: c/c-parser.c:10673 cp/parser.c:27875 cp/parser.c:28058
 #, fuzzy, gcc-internal-format
-#| msgid "invalid schedule kind"
 msgid "invalid depend kind"
 msgstr "无效的调度类型"
 
 #: c/c-parser.c:10710 cp/parser.c:27915
 #, fuzzy, gcc-internal-format
-#| msgid "invalid mask"
 msgid "invalid map kind"
 msgstr "无效掩码"
 
 #: c/c-parser.c:10775 cp/parser.c:28005
 #, fuzzy, gcc-internal-format
-#| msgid "invalid schedule kind"
 msgid "invalid dist_schedule kind"
 msgstr "无效的调度类型"
 
 #: c/c-parser.c:10844
 #, fuzzy, gcc-internal-format
-#| msgid "invalid schedule kind"
 msgid "invalid proc_bind kind"
 msgstr "无效的调度类型"
 
 #: c/c-parser.c:10999 cp/parser.c:28194
 #, fuzzy, gcc-internal-format
-#| msgid "%qs must be used with %qs"
 msgid "%qs must be the first clause of %qs"
 msgstr "%qs必须与%qs一起使用"
 
@@ -29700,7 +28834,6 @@ msgstr "%qs对%qs而言无效"
 
 #: c/c-parser.c:11459 cp/parser.c:28653 cp/parser.c:28679
 #, fuzzy, gcc-internal-format
-#| msgid "invalid operator for %<#pragma omp atomic%>"
 msgid "invalid form of %<#pragma omp atomic%>"
 msgstr "%<#pragma omp atomic%>运算符无效"
 
@@ -29746,19 +28879,16 @@ msgstr "迭代变量%qD不应当是 firstprivate"
 
 #: c/c-parser.c:12219 cp/parser.c:29731
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<operator%>"
 msgid "expected %<for%> after %qs"
 msgstr "需要%<operator%>"
 
 #: c/c-parser.c:12411 cp/parser.c:29918
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<using%>"
 msgid "expected %<point%>"
 msgstr "需要%<using%>"
 
 #: c/c-parser.c:12615 cp/parser.c:30140
 #, fuzzy, gcc-internal-format
-#| msgid "%<#pragma omp taskwait%> may only be used in compound statements"
 msgid "%<#pragma omp target update%> may only be used in compound statements"
 msgstr "%<#pragma omp taskwait%>只能用在复合语句中"
 
@@ -29774,7 +28904,6 @@ msgstr ""
 
 #: c/c-parser.c:12817 c/c-parser.c:12845
 #, fuzzy, gcc-internal-format
-#| msgid "%<#pragma align%> must appear before the declaration of %D, ignoring"
 msgid "%<#pragma omp declare simd%> must be followed by function declaration or definition"
 msgstr "%<#pragma align%>必须出现在 %D 的声明之前,忽略"
 
@@ -29795,19 +28924,16 @@ msgstr ""
 
 #: c/c-parser.c:12983 cp/parser.c:30450
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<try%>"
 msgid "expected %<target%>"
 msgstr "需要%<try%>"
 
 #: c/c-parser.c:12990 cp/parser.c:30457
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<decltype%>"
 msgid "expected %<declare%>"
 msgstr "需要%<decltype%>"
 
 #: c/c-parser.c:12996 cp/parser.c:30464
 #, fuzzy, gcc-internal-format
-#| msgid "%<#pragma GCC pop_options%> without a corresponding %<#pragma GCC push_options%>"
 msgid "%<#pragma omp end declare target%> without corresponding %<#pragma omp declare target%>"
 msgstr "%<#pragma GCC pop_options%>缺少相应的%<#pragma GCC push_options%>"
 
@@ -29818,7 +28944,6 @@ msgstr "Objective-C 声明只能出现在全局作用域中"
 
 #: c/c-parser.c:13074
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, or %<||%>"
 msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%>, %<min%> or identifier"
 msgstr "需要%<+%>、%<*%>、%<-%>、%<&%>、%<^%>、%<|%>、%<&&%>或%<||%>"
 
@@ -29844,19 +28969,16 @@ msgstr ""
 
 #: c/c-parser.c:13125
 #, fuzzy, gcc-internal-format
-#| msgid "previous declaration"
 msgid "previous %<#pragma omp declare reduction%>"
 msgstr "上一个声明"
 
 #: c/c-parser.c:13242
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<(%> or end of line"
 msgid "expected %<omp_priv%> or function-name"
 msgstr "需要%<(%>或行尾"
 
 #: c/c-parser.c:13253
 #, fuzzy, gcc-internal-format
-#| msgid "expected function"
 msgid "expected function-name %<(%>"
 msgstr "需要函数"
 
@@ -29867,7 +28989,6 @@ msgstr ""
 
 #: c/c-parser.c:13388 cp/parser.c:30900
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<#pragma omp section%> or %<}%>"
 msgid "expected %<simd%> or %<reduction%> or %<target%>"
 msgstr "需要%<#pragma omp section%>或%<}%>"
 
@@ -29898,31 +29019,26 @@ msgstr ""
 
 #: c/c-parser.c:13536
 #, fuzzy, gcc-internal-format
-#| msgid "#pragma GCC optimize is not allowed inside functions"
 msgid "pragma simd must be inside a function"
 msgstr "#pragma GCC optimize 不允许用在函数中"
 
 #: c/c-parser.c:13580 cp/parser.c:31586
 #, fuzzy, gcc-internal-format
-#| msgid "selector must be an integer constant in the range 0..%wi"
 msgid "vectorlength must be an integer constant"
 msgstr "选择子必须是 0 到 %wi 间的整常量"
 
 #: c/c-parser.c:13582 cp/parser.c:31589
 #, fuzzy, gcc-internal-format
-#| msgid "stack size must be an exact power of 2"
 msgid "vectorlength must be a power of 2"
 msgstr "栈大小必须刚好是 2 的某次方"
 
 #: c/c-parser.c:13665 cp/parser.c:31696
 #, fuzzy, gcc-internal-format
-#| msgid "selector must be an integer constant in the range 0..%wi"
 msgid "step size must be an integer constant expression or an integer variable"
 msgstr "选择子必须是 0 到 %wi 间的整常量"
 
 #: c/c-parser.c:13764 cp/parser.c:31789
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<#pragma omp%> clause"
 msgid "expected %<#pragma simd%> clause"
 msgstr "需要%<#pragma omp%>子句"
 
@@ -29953,7 +29069,6 @@ msgstr ""
 
 #: c/c-parser.c:14059 cp/parser.c:6263
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<:%> or %<::%>"
 msgid "expected %<:%> or numeral"
 msgstr "需要%<:%>或%<::%>"
 
@@ -29964,7 +29079,6 @@ msgstr ""
 
 #: c/c-parser.c:14077 c/c-parser.c:14120
 #, fuzzy, gcc-internal-format
-#| msgid "new cannot be applied to a function type"
 msgid "array notations cannot be used with function type"
 msgstr "new 不能用于函数类型"
 
@@ -29980,7 +29094,6 @@ msgstr ""
 
 #: c/c-parser.c:14148 c/c-parser.c:14151
 #, fuzzy, gcc-internal-format
-#| msgid "expected boolean expression"
 msgid "expected array notation expression"
 msgstr "需要布尔表达式"
 
@@ -30062,7 +29175,6 @@ msgstr "在指向不完全类型的指针上执行算术运算"
 
 #: c/c-typeck.c:1832
 #, fuzzy, gcc-internal-format
-#| msgid "defining a type in a compound literal is invalid in C++"
 msgid "converting an array compound literal to a pointer is ill-formed in C++"
 msgstr "C++ 不允许在组合字面常量中定义类型"
 
@@ -30088,7 +29200,6 @@ msgstr "提领%<void *%>指针"
 
 #: c/c-typeck.c:2434
 #, fuzzy, gcc-internal-format
-#| msgid "alignment of array elements is greater than element size"
 msgid "rank of the array's index is greater than 1"
 msgstr "数组元素的对齐边界比元素大小还要大"
 
@@ -30129,19 +29240,16 @@ msgstr "在此声明"
 
 #: c/c-typeck.c:2881
 #, fuzzy, gcc-internal-format
-#| msgid "called object %qE is not a function"
 msgid "called object %qE is not a function or function pointer"
 msgstr "被调用的对象%qE不是一个函数"
 
 #: c/c-typeck.c:2886
 #, fuzzy, gcc-internal-format
-#| msgid "called object %qE is not a function"
 msgid "called object %qD is not a function or function pointer"
 msgstr "被调用的对象%qE不是一个函数"
 
 #: c/c-typeck.c:2892
 #, fuzzy, gcc-internal-format
-#| msgid "called object %qE is not a function"
 msgid "called object is not a function or function pointer"
 msgstr "被调用的对象%qE不是一个函数"
 
@@ -30250,7 +29358,6 @@ msgstr "函数指针不能相减"
 
 #: c/c-typeck.c:3515 cp/typeck.c:5054
 #, fuzzy, gcc-internal-format
-#| msgid "arithmetic on pointer to an incomplete type"
 msgid "arithmetic on pointer to an empty aggregate"
 msgstr "在指向不完全类型的指针上执行算术运算"
 
@@ -30366,7 +29473,6 @@ msgstr "条件表达式中指针/整数类型不匹配"
 
 #: c/c-typeck.c:4725 cp/typeck.c:6204
 #, fuzzy, gcc-internal-format
-#| msgid "a function call cannot appear in a constant-expression"
 msgid "spawned function call cannot be part of a comma expression"
 msgstr "函数调用不能出现在常量表达式中"
 
@@ -30377,7 +29483,6 @@ msgstr "逗号表达式的左操作数不起作用"
 
 #: c/c-typeck.c:4777 c/c-typeck.c:9666
 #, fuzzy, gcc-internal-format
-#| msgid "left-hand operand of comma expression has no effect"
 msgid "right-hand operand of comma expression has no effect"
 msgstr "逗号表达式的左操作数不起作用"
 
@@ -30473,7 +29578,6 @@ msgstr "C++ 禁止在类型转换中定义类型"
 
 #: c/c-typeck.c:5214
 #, fuzzy, gcc-internal-format
-#| msgid "assignment suppression"
 msgid "assignment to expression with array type"
 msgstr "取消赋值"
 
@@ -30819,7 +29923,6 @@ msgstr "在嵌套的上下文中初始化可变数组成员"
 
 #: c/c-typeck.c:7436
 #, fuzzy, gcc-internal-format
-#| msgid "missing initializer for member %qD"
 msgid "missing initializer for field %qD of %qT"
 msgstr "成员%qD缺少初始值设定"
 
@@ -30945,7 +30048,6 @@ msgstr ""
 
 #: c/c-typeck.c:9139 cp/typeck.c:8333
 #, fuzzy, gcc-internal-format
-#| msgid "Logical range in CASE statement at %L is not allowed"
 msgid "use of %<_Cilk_spawn%> in a return statement is not allowed"
 msgstr "%L处 CASE 语句中的逻辑范围是不被允许的"
 
@@ -31031,13 +30133,11 @@ msgstr "OpenMP for 循环中使用了 break 语句"
 
 #: c/c-typeck.c:9621
 #, fuzzy, gcc-internal-format
-#| msgid "break statement not within loop or switch"
 msgid "break statement within %<#pragma simd%> loop body"
 msgstr "break 语句不在循环或开关语句内"
 
 #: c/c-typeck.c:9623 cp/parser.c:10656
 #, fuzzy, gcc-internal-format
-#| msgid "continue statement not within a loop"
 msgid "continue statement within %<#pragma simd%> loop body"
 msgstr "continue 语句出现在循环以外"
 
@@ -31053,7 +30153,6 @@ msgstr "表达式语句类型不完全"
 
 #: c/c-typeck.c:10464 c/c-typeck.c:10601 cp/typeck.c:4570
 #, fuzzy, gcc-internal-format
-#| msgid "Warn about comparison of different enum types"
 msgid "comparing vectors with different element types"
 msgstr "对不同枚举类型之间的比较给出警告"
 
@@ -31140,7 +30239,6 @@ msgstr "需要标量时使用了联合类型"
 
 #: c/c-typeck.c:11053
 #, fuzzy, gcc-internal-format
-#| msgid "used struct type value where scalar is required"
 msgid "used vector type where scalar is required"
 msgstr "需要标量时使用了结构类型"
 
@@ -31156,33 +30254,28 @@ msgstr ""
 
 #: c/c-typeck.c:11269 cp/semantics.c:4222 cp/semantics.c:5655
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not a variable in clause %qs"
 msgid "%qD is not a variable in %qs clause"
 msgstr "%qD在子句%qs中不是一个变量"
 
 #: c/c-typeck.c:11273 c/c-typeck.c:12044 cp/semantics.c:4226
 #: cp/semantics.c:5658
 #, fuzzy, gcc-internal-format
-#| msgid "%qE is not a variable in clause %qs"
 msgid "%qE is not a variable in %qs clause"
 msgstr "%qE在子句%qs中不是一个变量"
 
 #: c/c-typeck.c:11281 c/c-typeck.c:12051 cp/semantics.c:4234
 #: cp/semantics.c:5664
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not a variable in clause %qs"
 msgid "%qD is threadprivate variable in %qs clause"
 msgstr "%qD在子句%qs中不是一个变量"
 
 #: c/c-typeck.c:11303 cp/semantics.c:4260
 #, fuzzy, gcc-internal-format
-#| msgid "size in array new must have integral type"
 msgid "low bound %qE of array section does not have integral type"
 msgstr "数组 new 的大小必须有整数类型"
 
 #: c/c-typeck.c:11310 cp/semantics.c:4267
 #, fuzzy, gcc-internal-format
-#| msgid "size in array new must have integral type"
 msgid "length %qE of array section does not have integral type"
 msgstr "数组 new 的大小必须有整数类型"
 
@@ -31198,7 +30291,6 @@ msgstr ""
 
 #: c/c-typeck.c:11359 cp/semantics.c:4316
 #, fuzzy, gcc-internal-format
-#| msgid "variable length array is used"
 msgid "negative length in array section in %qs clause"
 msgstr "使用了变长数组"
 
@@ -31219,14 +30311,12 @@ msgstr ""
 
 #: c/c-typeck.c:11447 cp/semantics.c:4404
 #, fuzzy, gcc-internal-format
-#| msgid "for increment expression has no effect"
 msgid "for pointer type length expression must be specified"
 msgstr "for 循环増量表达式不起作用"
 
 #: c/c-typeck.c:11456 c/c-typeck.c:11571 cp/semantics.c:4413
 #: cp/semantics.c:4524
 #, fuzzy, gcc-internal-format
-#| msgid "Copy array sections into a contiguous block on procedure entry"
 msgid "array section is not contiguous in %qs clause"
 msgstr "在过程入口处将数组段复制到一个连续的块中"
 
@@ -31282,25 +30372,21 @@ msgstr "%qE在子句%<lastprivate%>中不是一个变量"
 
 #: c/c-typeck.c:11975 cp/semantics.c:5545
 #, fuzzy, gcc-internal-format
-#| msgid "%qE is not a variable in clause %qs"
 msgid "%qE is not a variable in %<aligned%> clause"
 msgstr "%qE在子句%qs中不是一个变量"
 
 #: c/c-typeck.c:11982
 #, fuzzy, gcc-internal-format
-#| msgid "type to vector delete is neither pointer or array type"
 msgid "%qE in %<aligned%> clause is neither a pointer nor an array"
 msgstr "向量 delete 的实参类型既非指针也非数组"
 
 #: c/c-typeck.c:11989
 #, fuzzy, gcc-internal-format
-#| msgid "%qE appears more than once in data clauses"
 msgid "%qE appears more than once in %<aligned%> clauses"
 msgstr "%qE在数据子句中多次出现"
 
 #: c/c-typeck.c:12010 cp/semantics.c:5615
 #, fuzzy, gcc-internal-format
-#| msgid "%qE is not a variable in clause %qs"
 msgid "%qE is not a variable in %<depend%> clause"
 msgstr "%qE在子句%qs中不是一个变量"
 
@@ -31311,31 +30397,26 @@ msgstr "在 %L 处的推迟数组“%1$s”在初始化表达式中不被允许"
 
 #: c/c-typeck.c:12062 cp/semantics.c:5680
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not a variable in clause %qs"
 msgid "%qD does not have a mappable type in %qs clause"
 msgstr "%qD在子句%qs中不是一个变量"
 
 #: c/c-typeck.c:12069 cp/semantics.c:5687
 #, fuzzy, gcc-internal-format
-#| msgid "%qD appears more than once in data clauses"
 msgid "%qD appears more than once in motion clauses"
 msgstr "%qD在数据子句中多次出现"
 
 #: c/c-typeck.c:12071 cp/semantics.c:5689
 #, fuzzy, gcc-internal-format
-#| msgid "%qD appears more than once in data clauses"
 msgid "%qD appears more than once in map clauses"
 msgstr "%qD在数据子句中多次出现"
 
 #: c/c-typeck.c:12084 cp/semantics.c:5703
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not a variable in clause %qs"
 msgid "%qD is not an argument in %<uniform%> clause"
 msgstr "%qD在子句%qs中不是一个变量"
 
 #: c/c-typeck.c:12087 cp/semantics.c:5705
 #, fuzzy, gcc-internal-format
-#| msgid "%qE is not a variable in clause %qs"
 msgid "%qE is not an argument in %<uniform%> clause"
 msgstr "%qE在子句%qs中不是一个变量"
 
@@ -31424,7 +30505,6 @@ msgstr ""
 #. Re-run template unification with diagnostics.
 #: cp/call.c:3279
 #, fuzzy, gcc-internal-format
-#| msgid "template argument %d is invalid"
 msgid "  template argument deduction/substitution failed:"
 msgstr "模板第 %d 个参数无效"
 
@@ -31472,25 +30552,21 @@ msgstr "对%<(%T) (%A)%>的调用有歧义"
 
 #: cp/call.c:4245
 #, fuzzy, gcc-internal-format
-#| msgid "ambiguous overload for %qs in %<%s %E%>"
 msgid "ambiguous overload for "
 msgstr "%qs在%<%s %E%>中的重载有歧义"
 
 #: cp/call.c:4246
 #, fuzzy, gcc-internal-format
-#| msgid "no match for %qs in %<%s %E%>"
 msgid "no match for "
 msgstr "%qs在%<%s %E%>中没有匹配"
 
 #: cp/call.c:4249
 #, fuzzy, gcc-internal-format
-#| msgid "invalid operands to binary %s (have %qT and %qT)"
 msgid " (operand types are %qT, %qT, and %qT)"
 msgstr "双目运算符 %s 操作数(%qT和%qT)无效"
 
 #: cp/call.c:4251
 #, fuzzy, gcc-internal-format
-#| msgid "invalid operands to binary %s (have %qT and %qT)"
 msgid " (operand types are %qT and %qT)"
 msgstr "双目运算符 %s 操作数(%qT和%qT)无效"
 
@@ -31501,61 +30577,51 @@ msgstr ""
 
 #: cp/call.c:4273
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<operator%>"
 msgid "ternary %<operator?:%>"
 msgstr "需要%<operator%>"
 
 #: cp/call.c:4277
 #, fuzzy, gcc-internal-format
-#| msgid "no match for ternary %<operator?:%> in %<%E ? %E : %E%>"
 msgid "ternary %<operator?:%> in %<%E ? %E : %E%>"
 msgstr "三元%<operator?:%>在%<%E ? %E : %E%>中没有匹配"
 
 #: cp/call.c:4286 cp/call.c:4317 cp/call.c:4326
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<operator%>"
 msgid "%<operator%s%>"
 msgstr "需要%<operator%>"
 
 #: cp/call.c:4289
 #, fuzzy, gcc-internal-format
-#| msgid "no match for %<operator%s%> in %<%E%s%>"
 msgid "%<operator%s%> in %<%E%s%>"
 msgstr "%<operator%s%>在%<%E%s%>中没有匹配"
 
 #: cp/call.c:4296
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<operator%>"
 msgid "%<operator[]%>"
 msgstr "需要%<operator%>"
 
 #: cp/call.c:4299
 #, fuzzy, gcc-internal-format
-#| msgid "no match for %<operator[]%> in %<%E[%E]%>"
 msgid "%<operator[]%> in %<%E[%E]%>"
 msgstr "%<operator[]%>在%<%E[%E]%>中没有匹配"
 
 #: cp/call.c:4307
 #, fuzzy, gcc-internal-format
-#| msgid "%s"
 msgid "%qs"
 msgstr "%s"
 
 #: cp/call.c:4310
 #, fuzzy, gcc-internal-format
-#| msgid "no match for %qs in %<%s %E%>"
 msgid "%qs in %<%s %E%>"
 msgstr "%qs在%<%s %E%>中没有匹配"
 
 #: cp/call.c:4320
 #, fuzzy, gcc-internal-format
-#| msgid "no match for %<operator%s%> in %<%E %s %E%>"
 msgid "%<operator%s%> in %<%E %s %E%>"
 msgstr "%<operator%s%>在%<%E %s %E%>中没有匹配"
 
 #: cp/call.c:4329
 #, fuzzy, gcc-internal-format
-#| msgid "no match for %<operator%s%> in %<%s%E%>"
 msgid "%<operator%s%> in %<%s%E%>"
 msgstr "%<operator%s%>在%<%s%E%>中没有匹配"
 
@@ -31571,7 +30637,6 @@ msgstr ""
 
 #: cp/call.c:4554
 #, fuzzy, gcc-internal-format
-#| msgid "enumeral mismatch in conditional expression: %qT vs %qT"
 msgid "incompatible vector types in conditional expression: %qT, %qT and %qT"
 msgstr "条件表达式中枚举不匹配:%qT对%qT"
 
@@ -31672,7 +30737,6 @@ msgstr "将%<false%>转换为指向%2$qD的实参 %1$P 的指针类型"
 
 #: cp/call.c:5883
 #, fuzzy, gcc-internal-format
-#| msgid "converting %<false%> to pointer type for argument %P of %qD"
 msgid "converting %<false%> to pointer type %qT"
 msgstr "将%<false%>转换为指向%2$qD的实参 %1$P 的指针类型"
 
@@ -31683,7 +30747,6 @@ msgstr "%qT的初始值设定周围花括号太多"
 
 #: cp/call.c:5940
 #, fuzzy, gcc-internal-format
-#| msgid "invalid conversion from %qT to %qT"
 msgid "invalid user-defined conversion from %qT to %qT"
 msgstr "从类型%qT到类型%qT的转换无效"
 
@@ -31694,7 +30757,6 @@ msgstr "从类型%qT到类型%qT的转换无效"
 
 #: cp/call.c:5975
 #, fuzzy, gcc-internal-format
-#| msgid "  initializing argument %P of %qD"
 msgid "initializing argument %P of %qD"
 msgstr "  初始化%2$qD的实参 %1$P"
 
@@ -31705,7 +30767,6 @@ msgstr "从初始化列表转换为%qT将使用显式构造函数%qD"
 
 #: cp/call.c:6080 cp/call.c:6219
 #, fuzzy, gcc-internal-format
-#| msgid "  initializing argument %P of %q+D"
 msgid "initializing argument %P of %q+D"
 msgstr "以初始化%2$q+D的实参 %1$P"
 
@@ -31736,7 +30797,6 @@ msgstr "无法将右值%qE绑定到%qT"
 
 #: cp/call.c:6370 cp/cvt.c:1720
 #, fuzzy, gcc-internal-format
-#| msgid "class %qT will be considered nearly empty in a future version of GCC"
 msgid "scoped enum %qT will not promote to an integral type in a future version of GCC"
 msgstr "在 GCC 的未来版本中类%qT将被看作几乎为空"
 
@@ -31758,7 +30818,6 @@ msgstr "递归计算%q#D的默认参数"
 
 #: cp/call.c:6507
 #, fuzzy, gcc-internal-format
-#| msgid "the default argument for parameter %d of %qD has not yet been parsed"
 msgid "call to %qD uses the default argument for parameter %P, which is not yet defined"
 msgstr "%2$qD的第 %1$d 个形参的默认实参尚未被解析到"
 
@@ -31769,7 +30828,6 @@ msgstr "函数的实参可能是 format 属性的备选"
 
 #: cp/call.c:6668
 #, fuzzy, gcc-internal-format
-#| msgid "defaulted function %q+D with default argument"
 msgid "use of multiversioned function without a default"
 msgstr "默认化函数%q+D有默认参数"
 
@@ -31820,7 +30878,6 @@ msgstr "不能直接调用构造函数%<%T::%D%>"
 
 #: cp/call.c:7662
 #, fuzzy, gcc-internal-format
-#| msgid "  for a function-style cast, remove the redundant %<::%D%>"
 msgid "for a function-style cast, remove the redundant %<::%D%>"
 msgstr "对于函数类型的类型转换,移除冗余的%<::%D%>"
 
@@ -31891,7 +30948,6 @@ msgstr "ISO C++ 认为有歧义,尽管第一个备选的最差类型转换要
 
 #: cp/call.c:9075
 #, fuzzy, gcc-internal-format
-#| msgid "could not convert %qE to %qT"
 msgid "could not convert %qE from %qT to %qT"
 msgstr "不能将%qE转换为%qT"
 
@@ -31912,25 +30968,21 @@ msgstr "将类型为%qT的引用初始化为类型为%qT的表达式无效"
 
 #: cp/class.c:302
 #, fuzzy, gcc-internal-format
-#| msgid "cannot convert from base %qT to derived type %qT via virtual base %qT"
 msgid "cannot convert from pointer to base class %qT to pointer to derived class %qT because the base is virtual"
 msgstr "无法从基类%qT转换到派生类%qT,通过虚基类%qT"
 
 #: cp/class.c:306
 #, fuzzy, gcc-internal-format
-#| msgid "cannot convert from base %qT to derived type %qT via virtual base %qT"
 msgid "cannot convert from base class %qT to derived class %qT because the base is virtual"
 msgstr "无法从基类%qT转换到派生类%qT,通过虚基类%qT"
 
 #: cp/class.c:313
 #, fuzzy, gcc-internal-format
-#| msgid "cannot convert from base %qT to derived type %qT via virtual base %qT"
 msgid "cannot convert from pointer to base class %qT to pointer to derived class %qT via virtual base %qT"
 msgstr "无法从基类%qT转换到派生类%qT,通过虚基类%qT"
 
 #: cp/class.c:318
 #, fuzzy, gcc-internal-format
-#| msgid "cannot convert from base %qT to derived type %qT via virtual base %qT"
 msgid "cannot convert from base class %qT to derived class %qT via virtual base %qT"
 msgstr "无法从基类%qT转换到派生类%qT,通过虚基类%qT"
 
@@ -31946,13 +30998,11 @@ msgstr "Java 类%qT不能有隐式的不平凡的析构函数"
 
 #: cp/class.c:1159
 #, fuzzy, gcc-internal-format
-#| msgid "    inlined from %qs"
 msgid "%q#D inherited from %qT"
 msgstr "    内联自%qs"
 
 #: cp/class.c:1162
 #, fuzzy, gcc-internal-format
-#| msgid "conflicts with previous declaration here"
 msgid "conflicts with version inherited from %qT"
 msgstr "与先前此处的声明冲突"
 
@@ -31998,7 +31048,6 @@ msgstr ""
 
 #: cp/class.c:1389 cp/class.c:1399
 #, fuzzy, gcc-internal-format
-#| msgid "%qD declared here"
 msgid "%qT declared here"
 msgstr "%qD在此声明"
 
@@ -32009,7 +31058,6 @@ msgstr ""
 
 #: cp/class.c:1508
 #, fuzzy, gcc-internal-format
-#| msgid "cannot convert from base %qT to derived type %qT via virtual base %qT"
 msgid "cannot derive from %<final%> base %qT in derived type %qT"
 msgstr "无法从基类%qT转换到派生类%qT,通过虚基类%qT"
 
@@ -32040,7 +31088,6 @@ msgstr "%qD的最终重载在%qT中不唯一"
 
 #: cp/class.c:2753
 #, fuzzy, gcc-internal-format
-#| msgid "%q+D defined but not used"
 msgid "%q+#D marked final, but is not virtual"
 msgstr "%q+D定义后未使用"
 
@@ -32177,13 +31224,11 @@ msgstr "为非紧实的非简单旧数据字段%q+#D忽略 packed 属性"
 
 #: cp/class.c:3594
 #, fuzzy, gcc-internal-format
-#| msgid "non-member %qs cannot be declared %<mutable%>"
 msgid "member %q+D cannot be declared both %<const%> and %<mutable%>"
 msgstr "非成员%qs不能被声明为%<mutable%>"
 
 #: cp/class.c:3600
 #, fuzzy, gcc-internal-format
-#| msgid "non-member %qs cannot be declared %<mutable%>"
 msgid "member %q+D cannot be declared as a %<mutable%> reference"
 msgstr "非成员%qs不能被声明为%<mutable%>"
 
@@ -32244,13 +31289,11 @@ msgstr "%3$L处 CLASS 变量‘%2$s’的类型‘%1$s’不能被扩展"
 
 #: cp/class.c:5393
 #, fuzzy, gcc-internal-format
-#| msgid "%q#T is not a class"
 msgid "%q+T is not literal because:"
 msgstr "%q#T不是一个类"
 
 #: cp/class.c:5395
 #, fuzzy, gcc-internal-format
-#| msgid "base class %q#T has a non-virtual destructor"
 msgid "  %q+T has a non-trivial destructor"
 msgstr "基类%q#T有一个非虚析构函数"
 
@@ -32266,7 +31309,6 @@ msgstr "%3$L处 CLASS 变量‘%2$s’的类型‘%1$s’不能被扩展"
 
 #: cp/class.c:5450
 #, fuzzy, gcc-internal-format
-#| msgid "non-static data member %qD has Java class type"
 msgid "  non-static data member %q+D has non-literal type"
 msgstr "非静态数据成员%qD具有 Java 类类型"
 
@@ -32339,7 +31381,6 @@ msgstr "%q#T有虚函数和可访问的非虚拟析构函数"
 
 #: cp/class.c:6643
 #, fuzzy, gcc-internal-format
-#| msgid "type %qT does not have a known size"
 msgid "type transparent %q#T does not have any fields"
 msgstr "类型%qT大小未知"
 
@@ -32350,7 +31391,6 @@ msgstr ""
 
 #: cp/class.c:6653
 #, fuzzy, gcc-internal-format
-#| msgid "type %qE has virtual member functions"
 msgid "type transparent class %qT has virtual functions"
 msgstr "类型%qE有虚成员函数"
 
@@ -32421,7 +31461,6 @@ msgstr "改变了%qD的原意%q+#D"
 
 #: cp/cp-array-notation.c:605
 #, fuzzy, gcc-internal-format
-#| msgid "%qD cannot be declared as constexpr"
 msgid "%qD cannot be scalar when %qD is not"
 msgstr "%qD不能被声明为广义常表达式"
 
@@ -32463,7 +31502,6 @@ msgstr ""
 
 #: cp/cp-array-notation.c:1422
 #, fuzzy, gcc-internal-format
-#| msgid "new cannot be applied to a function type"
 msgid "array notation cannot be used with function type"
 msgstr "new 不能用于函数类型"
 
@@ -32484,13 +31522,11 @@ msgstr ""
 
 #: cp/cp-cilkplus.c:53
 #, fuzzy, gcc-internal-format
-#| msgid "statement-expressions are not allowed outside functions nor in template-argument lists"
 msgid "throw expressions are not allowed inside loops marked with pragma simd"
 msgstr "语句表达式只能用于函数或模板实参列表内"
 
 #: cp/cp-cilkplus.c:60
 #, fuzzy, gcc-internal-format
-#| msgid "%s statement is not allowed inside of BLOCK at %C"
 msgid "try statements are not allowed inside loops marked with #pragma simd"
 msgstr "%s 语句不能用在%C处 BLOCK 内"
 
@@ -32561,7 +31597,6 @@ msgstr "不应使用%q#T而应使用%qT"
 
 #: cp/cvt.c:780
 #, fuzzy, gcc-internal-format
-#| msgid "could not convert %qE to %qT"
 msgid "could not convert %qE from %<void%> to %<bool%>"
 msgstr "不能将%qE转换为%qT"
 
@@ -32822,7 +31857,6 @@ msgstr "将 NULL 转换为非指针类型"
 
 #: cp/cvt.c:1644
 #, fuzzy, gcc-internal-format
-#| msgid "could not convert template argument %qE to %qT"
 msgid "default type conversion can't deduce template argument for %qD"
 msgstr "不能将模板参数从%qE转换到%qT"
 
@@ -32894,7 +31928,6 @@ msgstr "函数%q+D重声明为内联的"
 
 #: cp/decl.c:1304
 #, fuzzy, gcc-internal-format
-#| msgid "previous declaration of %q+D with attribute noinline"
 msgid "previous declaration of %qD with attribute noinline"
 msgstr "先前%q+D的声明带有 noinline 属性"
 
@@ -32905,7 +31938,6 @@ msgstr "函数%q+D重声明为带有不可内联属性"
 
 #: cp/decl.c:1314
 #, fuzzy, gcc-internal-format
-#| msgid "previous declaration of %q+D was inline"
 msgid "previous declaration of %qD was inline"
 msgstr "%q+D先前被声明为内联的"
 
@@ -32926,25 +31958,21 @@ msgstr "库函数%q#D重声明为非函数%q#D"
 
 #: cp/decl.c:1349
 #, fuzzy, gcc-internal-format
-#| msgid "conflicts with built-in declaration %q#D"
 msgid "declaration of %q#D conflicts with built-in declaration %q#D"
 msgstr "与内建声明%q#D冲突"
 
 #: cp/decl.c:1357
 #, fuzzy, gcc-internal-format
-#| msgid "declaration of %qD shadows a global declaration"
 msgid "redeclaration of %<pragma omp declare reduction%>"
 msgstr "%qD的声明隐藏了一个全局声明"
 
 #: cp/decl.c:1359
 #, fuzzy, gcc-internal-format
-#| msgid "previous non-function declaration %q+#D"
 msgid "previous %<pragma omp declare reduction%> declaration"
 msgstr "先前对于%q+#D的非函数声明"
 
 #: cp/decl.c:1410
 #, fuzzy, gcc-internal-format
-#| msgid "ambiguates built-in declaration %q#D"
 msgid "new declaration %q#D ambiguates built-in declaration %q#D"
 msgstr "使内建声明%q#D出现歧义"
 
@@ -32955,37 +31983,31 @@ msgstr "%q#D被重新声明为不同意义的符号"
 
 #: cp/decl.c:1505 cp/decl.c:1526 cp/decl.c:1553
 #, fuzzy, gcc-internal-format
-#| msgid "previous declaration %q+D"
 msgid "previous declaration %q#D"
 msgstr "先前的声明%q+D"
 
 #: cp/decl.c:1524
 #, fuzzy, gcc-internal-format
-#| msgid "declaration of template %q#D"
 msgid "conflicting declaration of template %q#D"
 msgstr "模板声明%q#D"
 
 #: cp/decl.c:1540
 #, fuzzy, gcc-internal-format
-#| msgid "ambiguates old declaration %q+#D"
 msgid "ambiguating new declaration %q#D"
 msgstr "使旧的声明%q+#D出现歧义"
 
 #: cp/decl.c:1542 cp/decl.c:1565
 #, fuzzy, gcc-internal-format
-#| msgid "global declaration %q+#D"
 msgid "old declaration %q#D"
 msgstr "全局声明%q+#D"
 
 #: cp/decl.c:1550
 #, fuzzy, gcc-internal-format
-#| msgid "conflicting declaration %q#D"
 msgid "conflicting declaration of C function %q#D"
 msgstr "相互冲突的声明%q#D"
 
 #: cp/decl.c:1563
 #, fuzzy, gcc-internal-format
-#| msgid "ambiguates old declaration %q+#D"
 msgid "ambiguating new declaration of %q#D"
 msgstr "使旧的声明%q+#D出现歧义"
 
@@ -32996,7 +32018,6 @@ msgstr "相互冲突的声明%q#D"
 
 #: cp/decl.c:1575
 #, fuzzy, gcc-internal-format
-#| msgid "previous declaration of %q+#D"
 msgid "previous declaration as %q#D"
 msgstr "%q+#D的前一个声明"
 
@@ -33009,13 +32030,11 @@ msgstr "%q+#D的前一个声明"
 #. of the program.
 #: cp/decl.c:1627
 #, fuzzy, gcc-internal-format
-#| msgid "conflicting declaration %q#D"
 msgid "conflicting declaration of namespace %qD"
 msgstr "相互冲突的声明%q#D"
 
 #: cp/decl.c:1629
 #, fuzzy, gcc-internal-format
-#| msgid "previous declaration of namespace %q+D here"
 msgid "previous declaration of namespace %qD here"
 msgstr "命名空间%q+D早先的声明在这里"
 
@@ -33026,37 +32045,31 @@ msgstr "%q+#D已在此定义过"
 
 #: cp/decl.c:1642 cp/name-lookup.c:1152 cp/name-lookup.c:1175
 #, fuzzy, gcc-internal-format
-#| msgid "previously declared here"
 msgid "%q+#D previously declared here"
 msgstr "以前在此声明过"
 
 #: cp/decl.c:1652
 #, fuzzy, gcc-internal-format
-#| msgid "prototype for %q+#D"
 msgid "prototype specified for %q#D"
 msgstr "%q+#D的原型"
 
 #: cp/decl.c:1654
 #, fuzzy, gcc-internal-format
-#| msgid "follows non-prototype definition here"
 msgid "previous non-prototype definition here"
 msgstr "出现在此处的非原型定义之后"
 
 #: cp/decl.c:1693
 #, fuzzy, gcc-internal-format
-#| msgid "conflicts with new declaration with %qL linkage"
 msgid "conflicting declaration of %q#D with %qL linkage"
 msgstr "与带有%qL链接的新声明冲突"
 
 #: cp/decl.c:1696
 #, fuzzy, gcc-internal-format
-#| msgid "previous declaration of %q+#D with %qL linkage"
 msgid "previous declaration with %qL linkage"
 msgstr "%q+#D的早先声明有%qL链接"
 
 #: cp/decl.c:1723
 #, fuzzy, gcc-internal-format
-#| msgid "redeclaration of friend %q#D may not have default template arguments"
 msgid "redeclaration of %q#D may not have default arguments"
 msgstr "友元%q#D的重声明不能有默认模板参数"
 
@@ -33067,7 +32080,6 @@ msgstr "为%2$q#D的第 %1$d 个形参指定了默认实参"
 
 #: cp/decl.c:1741 cp/decl.c:1749
 #, fuzzy, gcc-internal-format
-#| msgid "after previous specification in %q+#D"
 msgid "previous specification in %q#D here"
 msgstr "但先前在%q+#D中已有指定"
 
@@ -33078,7 +32090,6 @@ msgstr "同一作用域中%qD冗余的重声明"
 
 #: cp/decl.c:1815 cp/decl.c:1825
 #, fuzzy, gcc-internal-format
-#| msgid "previous declaration of %q+D"
 msgid "previous declaration of %qD"
 msgstr "%q+D的前一个声明"
 
@@ -33243,7 +32254,6 @@ msgstr "没有名为%q#T的类模板,在%q#T中 "
 
 #: cp/decl.c:3395
 #, fuzzy, gcc-internal-format
-#| msgid "no class template named %q#T in %q#T"
 msgid "no type named %q#T in %q#T"
 msgstr "没有名为%q#T的类模板,在%q#T中 "
 
@@ -33299,13 +32309,11 @@ msgstr "有拷贝赋值运算符的成员%q+#D不能用在联合中"
 
 #: cp/decl.c:4246
 #, fuzzy, gcc-internal-format
-#| msgid "attribute ignored in declaration of %q+#T"
 msgid "attribute ignored in declaration of %q#T"
 msgstr "属性于%q+#T的声明中被忽略"
 
 #: cp/decl.c:4249
 #, fuzzy, gcc-internal-format
-#| msgid "attribute for %q+#T must follow the %qs keyword"
 msgid "attribute for %q#T must follow the %qs keyword"
 msgstr "%q+#T的属性必须跟在%qs关键字后面"
 
@@ -33321,7 +32329,6 @@ msgstr "对 C++ 内建类型%qT的重声明"
 
 #: cp/decl.c:4294
 #, fuzzy, gcc-internal-format
-#| msgid "%qs can only be specified for functions"
 msgid "%<auto%> can only be specified for variables or function declarations"
 msgstr "只能为函数指定%qs"
 
@@ -33372,13 +32379,11 @@ msgstr "%<constexpr%>不能被用作类型声明"
 
 #: cp/decl.c:4378
 #, fuzzy, gcc-internal-format
-#| msgid "attributes ignored on template instantiation"
 msgid "attribute ignored in explicit instantiation %q#T"
 msgstr "属性在模板实例化上被忽略"
 
 #: cp/decl.c:4381
 #, fuzzy, gcc-internal-format
-#| msgid "%qE attribute can only be applied to class definitions"
 msgid "no attribute can be applied to an explicit instantiation"
 msgstr "只能为类定义应用%qE属性"
 
@@ -33543,7 +32548,6 @@ msgstr "%qT的初始值设定必须在花括号内"
 
 #: cp/decl.c:5260
 #, fuzzy, gcc-internal-format
-#| msgid "name %qD used in a GNU-style designated initializer for an array"
 msgid "%<[%E] =%> used in a GNU-style designated initializer for class %qT"
 msgstr "名字%qD用在 GNU 风格的数组指定元素初始值设定中"
 
@@ -33590,7 +32594,6 @@ msgstr "变长复合字面值"
 
 #: cp/decl.c:5632
 #, fuzzy, gcc-internal-format
-#| msgid "%qD has incomplete type"
 msgid "%q#D has incomplete type"
 msgstr "%qD类型不完全"
 
@@ -33666,19 +32669,16 @@ msgstr ""
 
 #: cp/decl.c:7176
 #, fuzzy, gcc-internal-format
-#| msgid "initializer fails to determine size of %qD"
 msgid "initializer fails to determine size of %qT"
 msgstr "初始值设定无法决定%qD的大小"
 
 #: cp/decl.c:7180
 #, fuzzy, gcc-internal-format
-#| msgid "array size missing in %qD"
 msgid "array size missing in %qT"
 msgstr "%qD缺少数组大小"
 
 #: cp/decl.c:7183
 #, fuzzy, gcc-internal-format
-#| msgid "zero-size array %qD"
 msgid "zero-size array %qT"
 msgstr "大小为 0 的数组%qD"
 
@@ -33795,7 +32795,6 @@ msgstr "%<inline%>不允许用于友元模板特例化%qD的声明"
 
 #: cp/decl.c:7499
 #, fuzzy, gcc-internal-format
-#| msgid "%<inline%> is not allowed in declaration of friend template specialization %qD"
 msgid "%<constexpr%> is not allowed in declaration of friend template specialization %qD"
 msgstr "%<inline%>不允许用于友元模板特例化%qD的声明"
 
@@ -33811,7 +32810,6 @@ msgstr "不能将%<::main%>声明为 inline"
 
 #: cp/decl.c:7547
 #, fuzzy, gcc-internal-format
-#| msgid "cannot declare %<::main%> to be inline"
 msgid "cannot declare %<::main%> to be constexpr"
 msgstr "不能将%<::main%>声明为 inline"
 
@@ -33847,19 +32845,16 @@ msgstr "非成员函数%qD不能拥有 cv 限定符"
 
 #: cp/decl.c:7620
 #, fuzzy, gcc-internal-format
-#| msgid "static member function %qD cannot have cv-qualifier"
 msgid "static member function %qD cannot have ref-qualifier"
 msgstr "成员函数%qD不能拥有 cv 限定符"
 
 #: cp/decl.c:7621
 #, fuzzy, gcc-internal-format
-#| msgid "non-member function %qD cannot have cv-qualifier"
 msgid "non-member function %qD cannot have ref-qualifier"
 msgstr "非成员函数%qD不能拥有 cv 限定符"
 
 #: cp/decl.c:7638
 #, fuzzy, gcc-internal-format
-#| msgid "template with C linkage"
 msgid "literal operator with C linkage"
 msgstr "模板有 C 链接"
 
@@ -33880,7 +32875,6 @@ msgstr ""
 
 #: cp/decl.c:7667
 #, fuzzy, gcc-internal-format
-#| msgid "%qD must be a nonstatic member function"
 msgid "%qD must be a non-member function"
 msgstr "%qD必须是一个非静态的成员函数"
 
@@ -33896,13 +32890,11 @@ msgstr "隐式声明的%qD的定义"
 
 #: cp/decl.c:7792
 #, fuzzy, gcc-internal-format
-#| msgid "definition of implicitly-declared %qD"
 msgid "definition of explicitly-defaulted %q+D"
 msgstr "隐式声明的%qD的定义"
 
 #: cp/decl.c:7793
 #, fuzzy, gcc-internal-format
-#| msgid "%q+#D previously defined here"
 msgid "%q+#D explicitly defaulted here"
 msgstr "%q+#D已在此定义过"
 
@@ -34017,7 +33009,6 @@ msgstr "数组维数溢出"
 
 #: cp/decl.c:8522
 #, fuzzy, gcc-internal-format
-#| msgid "declaration of %qD as array of void"
 msgid "declaration of %qD as array of %<auto%>"
 msgstr "%qD声明为 void 的数组"
 
@@ -34073,7 +33064,6 @@ msgstr "声明多维数组必须至少指定除第一维以外所有维的大小
 
 #: cp/decl.c:8578
 #, fuzzy, gcc-internal-format
-#| msgid "creating array of functions"
 msgid "array of array of runtime bound"
 msgstr "创建函数的数组"
 
@@ -34144,13 +33134,11 @@ msgstr "函数定义未声明形参"
 
 #: cp/decl.c:9014
 #, fuzzy, gcc-internal-format
-#| msgid "template declaration of %<typedef%>"
 msgid "declaration of %qD as %<typedef%>"
 msgstr "%<typedef%>的模板声明"
 
 #: cp/decl.c:9019
 #, fuzzy, gcc-internal-format
-#| msgid "declaration of %q+D shadows a parameter"
 msgid "declaration of %qD as parameter"
 msgstr "%q+D的声明隐藏了一个形参"
 
@@ -34326,25 +33314,21 @@ msgstr "%qs声明为返回一个数组的函数"
 
 #: cp/decl.c:9608
 #, fuzzy, gcc-internal-format
-#| msgid "%qs function uses %<auto%> type specifier without late return type"
 msgid "%qs function uses %<auto%> type specifier without trailing return type"
 msgstr "%qs函数使用了%<auto%>类型限定却没有迟返回类型"
 
 #: cp/decl.c:9611
 #, fuzzy, gcc-internal-format
-#| msgid "scoped enums only available with -std=c++0x or -std=gnu++0x"
 msgid "deduced return type only available with -std=c++1y or -std=gnu++1y"
 msgstr "带作用域的枚举只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/decl.c:9616
 #, fuzzy, gcc-internal-format
-#| msgid "virtual functions cannot be friends"
 msgid "virtual function cannot have deduced return type"
 msgstr "虚函数不能是友元"
 
 #: cp/decl.c:9621
 #, fuzzy, gcc-internal-format
-#| msgid "%qs function with late return type has %qT as its type rather than plain %<auto%>"
 msgid "%qs function with trailing return type has %qT as its type rather than plain %<auto%>"
 msgstr "%qs函数使用迟返回类型%qT作为它的类型,而不是%<auto%>"
 
@@ -34357,7 +33341,6 @@ msgstr "可变参数模板只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/decl.c:9635
 #, fuzzy, gcc-internal-format
-#| msgid "%qs function with late return type not declared with %<auto%> type specifier"
 msgid "%qs function with trailing return type not declared with %<auto%> type specifier"
 msgstr "%qs函数使用了迟返回类型却未用%<auto%>类型限定声明"
 
@@ -34368,7 +33351,6 @@ msgstr "析构函数不能是静态成员函数"
 
 #: cp/decl.c:9670
 #, fuzzy, gcc-internal-format
-#| msgid "destructor cannot be static member function"
 msgid "constructor cannot be static member function"
 msgstr "析构函数不能是静态成员函数"
 
@@ -34379,13 +33361,11 @@ msgstr "析构函数不能被 cv 限定"
 
 #: cp/decl.c:9675
 #, fuzzy, gcc-internal-format
-#| msgid "destructors may not be cv-qualified"
 msgid "constructors may not be cv-qualified"
 msgstr "析构函数不能被 cv 限定"
 
 #: cp/decl.c:9683
 #, fuzzy, gcc-internal-format
-#| msgid "destructors may not be cv-qualified"
 msgid "destructors may not be ref-qualified"
 msgstr "析构函数不能被 cv 限定"
 
@@ -34447,13 +33427,11 @@ msgstr "不能声明指向限定函数类型%qT的指针"
 
 #: cp/decl.c:9829
 #, fuzzy, gcc-internal-format
-#| msgid "Array reference out of bounds"
 msgid "reference to array of runtime bound"
 msgstr "对数组的引用超出范围"
 
 #: cp/decl.c:9830
 #, fuzzy, gcc-internal-format
-#| msgid "pointer to a function used in subtraction"
 msgid "pointer to array of runtime bound"
 msgstr "函数指针不能相减"
 
@@ -34489,7 +33467,6 @@ msgstr "无法定义成员函数%<%T::%s%>,在%<%T%>中"
 
 #: cp/decl.c:10028
 #, fuzzy, gcc-internal-format
-#| msgid "cannot define member function %<%T::%s%> within %<%T%>"
 msgid "cannot declare member function %<%T::%s%> within %<%T%>"
 msgstr "无法定义成员函数%<%T::%s%>,在%<%T%>中"
 
@@ -34557,13 +33534,11 @@ msgstr "函数%qs不能被声明为%<mutable%>"
 
 #: cp/decl.c:10170
 #, fuzzy, gcc-internal-format
-#| msgid "parameter declared %<auto%>"
 msgid "typedef declared %<auto%>"
 msgstr "形参声明为%<auto%>"
 
 #: cp/decl.c:10176
 #, fuzzy, gcc-internal-format
-#| msgid "creating array of functions"
 msgid "typedef naming array of runtime bound"
 msgstr "创建函数的数组"
 
@@ -34624,7 +33599,6 @@ msgstr "不能在参数声明中使用%<::%>"
 
 #: cp/decl.c:10420
 #, fuzzy, gcc-internal-format
-#| msgid "%<this%> may not be used in this context"
 msgid "%<auto%> parameter not permitted in this context"
 msgstr "%<this%>不能用在此上下文中"
 
@@ -34635,7 +33609,6 @@ msgstr "形参声明为%<auto%>"
 
 #: cp/decl.c:10465
 #, fuzzy, gcc-internal-format
-#| msgid "non-static data member %qE declared %<constexpr%>"
 msgid "non-static data member declared %<auto%>"
 msgstr "非静态数据成员%qE被声明为%<constexpr%>"
 
@@ -34682,7 +33655,6 @@ msgstr "在构造函数%qD中的友元声明需要限定名"
 
 #: cp/decl.c:10608
 #, fuzzy, gcc-internal-format
-#| msgid "field %qD has incomplete type"
 msgid "field %qD has incomplete type %qT"
 msgstr "字段%qD类型不完全"
 
@@ -34723,13 +33695,11 @@ msgstr "函数%qs的存储类%<__thread%>无效"
 
 #: cp/decl.c:10747
 #, fuzzy, gcc-internal-format
-#| msgid "storage class %<__thread%> invalid for function %qs"
 msgid "storage class %<thread_local%> invalid for function %qs"
 msgstr "函数%qs的存储类%<__thread%>无效"
 
 #: cp/decl.c:10752
 #, fuzzy, gcc-internal-format
-#| msgid "an asm-specification is not allowed on a function-definition"
 msgid "virt-specifiers in %qs not allowed outside a class definition"
 msgstr "函数定义中不允许出现 asm 指定"
 
@@ -34755,7 +33725,6 @@ msgstr "%qs定义在在非类作用域中"
 
 #: cp/decl.c:10783
 #, fuzzy, gcc-internal-format
-#| msgid "%qs defined in a non-class scope"
 msgid "%qs declared in a non-class scope"
 msgstr "%qs定义在在非类作用域中"
 
@@ -34802,7 +33771,6 @@ msgstr "%qs既有%<extern%>又有初始值设定"
 
 #: cp/decl.c:11032
 #, fuzzy, gcc-internal-format
-#| msgid "default argument %qE uses local variable %qD"
 msgid "default argument %qE uses %qD"
 msgstr "默认实参%qE使用了局部变量%qD"
 
@@ -34984,7 +33952,6 @@ msgstr "使用模板类型形参%qT,在%qs后"
 
 #: cp/decl.c:11915
 #, fuzzy, gcc-internal-format
-#| msgid "ambiguous template specialization %qD for %q+D"
 msgid "using alias template specialization %qT after %qs"
 msgstr "有歧义的模板特例化%qD(为%q+D)"
 
@@ -34995,7 +33962,6 @@ msgstr "使用 typedef 名%qD,在%qs后"
 
 #: cp/decl.c:11920
 #, fuzzy, gcc-internal-format
-#| msgid "%q+D has a previous declaration here"
 msgid "%qD has a previous declaration here"
 msgstr "%q+D先前在此处有过声明"
 
@@ -35123,7 +34089,6 @@ msgstr "%qD的枚举值不是一个整数常量"
 
 #: cp/decl.c:12928
 #, fuzzy, gcc-internal-format
-#| msgid "integer constant is too large for %<unsigned long%> type"
 msgid "incremented enumerator value is too large for %<unsigned long%>"
 msgstr "对%<unsigned long%>类型而言整数常量太大"
 
@@ -35134,7 +34099,6 @@ msgstr "%qD处枚举值溢出"
 
 #: cp/decl.c:12960
 #, fuzzy, gcc-internal-format
-#| msgid "enumerator value %E is too large for underlying type %<%T%>"
 msgid "enumerator value %E is outside the range of underlying type %<%T%>"
 msgstr "枚举值 %E 对其类型%<%T%>而言太大了"
 
@@ -35170,13 +34134,11 @@ msgstr "形参%qD被声明为 void"
 
 #: cp/decl.c:13960
 #, fuzzy, gcc-internal-format
-#| msgid "no return statement in function returning non-void"
 msgid "no return statements in function returning %qT"
 msgstr "在有返回值的函数中未发现 return 语句"
 
 #: cp/decl.c:13962 cp/typeck.c:8384
 #, fuzzy, gcc-internal-format
-#| msgid "function return types not compatible due to %<volatile%>"
 msgid "only plain %<auto%> return type can be deduced to %<void%>"
 msgstr "由于%<volatile%>,函数返回类型不兼容"
 
@@ -35197,7 +34159,6 @@ msgstr "%qD已在类%qT中定义过"
 
 #: cp/decl.c:14531 cp/decl2.c:4673
 #, fuzzy, gcc-internal-format
-#| msgid "type of %qD defaults to %<int%>"
 msgid "use of %qD before deduction of %<auto%>"
 msgstr "%qD的类型默认为%<int%>"
 
@@ -35218,7 +34179,6 @@ msgstr "%<%T[%T]%>用作数组下标类型无效"
 
 #: cp/decl2.c:449
 #, fuzzy, gcc-internal-format
-#| msgid "deleting array %q#D"
 msgid "deleting array %q#E"
 msgstr "删除数组%q#D"
 
@@ -35337,7 +34297,6 @@ msgstr "位段%qD非整型"
 
 #: cp/decl2.c:1388
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not a static data member of a class template"
 msgid "%q+D static data member inside of declare target directive"
 msgstr "%qD不是类模板的非静态数据成员"
 
@@ -35444,43 +34403,36 @@ msgstr "with"
 
 #: cp/error.c:3474
 #, fuzzy, gcc-internal-format
-#| msgid "extended initializer lists only available with -std=c++0x or -std=gnu++0x"
 msgid "extended initializer lists only available with -std=c++11 or -std=gnu++11"
 msgstr "扩展初始值设定列表只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/error.c:3479
 #, fuzzy, gcc-internal-format
-#| msgid "explicit conversion operators only available with -std=c++0x or -std=gnu++0x"
 msgid "explicit conversion operators only available with -std=c++11 or -std=gnu++11"
 msgstr "显式转换运算符只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/error.c:3484
 #, fuzzy, gcc-internal-format
-#| msgid "variadic templates only available with -std=c++0x or -std=gnu++0x"
 msgid "variadic templates only available with -std=c++11 or -std=gnu++11"
 msgstr "可变参数模板只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/error.c:3489
 #, fuzzy, gcc-internal-format
-#| msgid "lambda expressions only available with -std=c++0x or -std=gnu++0x"
 msgid "lambda expressions only available with -std=c++11 or -std=gnu++11"
 msgstr "Lambda 表达式只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/error.c:3494
 #, fuzzy, gcc-internal-format
-#| msgid "C++0x auto only available with -std=c++0x or -std=gnu++0x"
 msgid "C++11 auto only available with -std=c++11 or -std=gnu++11"
 msgstr "C++0x auto 只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/error.c:3498
 #, fuzzy, gcc-internal-format
-#| msgid "scoped enums only available with -std=c++0x or -std=gnu++0x"
 msgid "scoped enums only available with -std=c++11 or -std=gnu++11"
 msgstr "带作用域的枚举只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/error.c:3502
 #, fuzzy, gcc-internal-format
-#| msgid "defaulted and deleted functions only available with -std=c++0x or -std=gnu++0x"
 msgid "defaulted and deleted functions only available with -std=c++11 or -std=gnu++11"
 msgstr "默认化和被删除的函数只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
@@ -35491,25 +34443,21 @@ msgstr "可变参数模板只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/error.c:3512
 #, fuzzy, gcc-internal-format
-#| msgid "explicit conversion operators only available with -std=c++0x or -std=gnu++0x"
 msgid "override controls (override/final) only available with -std=c++11 or -std=gnu++11"
 msgstr "显式转换运算符只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/error.c:3517
 #, fuzzy, gcc-internal-format
-#| msgid "extended initializer lists only available with -std=c++0x or -std=gnu++0x"
 msgid "non-static data member initializers only available with -std=c++11 or -std=gnu++11"
 msgstr "扩展初始值设定列表只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/error.c:3522
 #, fuzzy, gcc-internal-format
-#| msgid "extended initializer lists only available with -std=c++0x or -std=gnu++0x"
 msgid "user-defined literals only available with -std=c++11 or -std=gnu++11"
 msgstr "扩展初始值设定列表只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/error.c:3527
 #, fuzzy, gcc-internal-format
-#| msgid "explicit conversion operators only available with -std=c++0x or -std=gnu++0x"
 msgid "delegating constructors only available with -std=c++11 or -std=gnu++11"
 msgstr "显式转换运算符只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
@@ -35520,13 +34468,11 @@ msgstr "可变参数模板只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/error.c:3537
 #, fuzzy, gcc-internal-format
-#| msgid "C++0x auto only available with -std=c++0x or -std=gnu++0x"
 msgid "c++11 attributes only available with -std=c++11 or -std=gnu++11"
 msgstr "C++0x auto 只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/error.c:3542
 #, fuzzy, gcc-internal-format
-#| msgid "scoped enums only available with -std=c++0x or -std=gnu++0x"
 msgid "ref-qualifiers only available with -std=c++11 or -std=gnu++11"
 msgstr "带作用域的枚举只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
@@ -35599,19 +34545,16 @@ msgstr "  在抛出的表达式中"
 
 #: cp/except.c:987
 #, fuzzy, gcc-internal-format
-#| msgid "cannot declare parameter %q+D to be of abstract type %qT"
 msgid "cannot declare catch parameter to be of rvalue reference type %qT"
 msgstr "不能将形参%q+D声明为具有抽象类型%qT"
 
 #: cp/except.c:994
 #, fuzzy, gcc-internal-format
-#| msgid "cannot create type information for type %qT because it involves types of variable size"
 msgid "cannot throw expression of type %qT because it involves types of variable size"
 msgstr "无法为类型%qT创建类型信息,因为它的大小是可变的"
 
 #: cp/except.c:997
 #, fuzzy, gcc-internal-format
-#| msgid "cannot create type information for type %qT because it involves types of variable size"
 msgid "cannot catch type %qT because it involves types of variable size"
 msgstr "无法为类型%qT创建类型信息,因为它的大小是可变的"
 
@@ -35726,7 +34669,6 @@ msgstr "(如果这不是您原来的想法,请确定此函数模板已经声
 
 #: cp/init.c:378
 #, fuzzy, gcc-internal-format
-#| msgid "invalid application of %qs to incomplete type %qT "
 msgid "value-initialization of incomplete type %qT"
 msgstr "%qs不能用于不完全的类型%qT"
 
@@ -35737,13 +34679,11 @@ msgstr "形参%qD包含了指向具有未知边界数组%qT的指针"
 
 #: cp/init.c:482
 #, fuzzy, gcc-internal-format
-#| msgid "value-initialization of reference"
 msgid "value-initialization of function type %qT"
 msgstr "引用被值所初始化"
 
 #: cp/init.c:488
 #, fuzzy, gcc-internal-format
-#| msgid "value-initialization of reference"
 msgid "value-initialization of reference type %qT"
 msgstr "引用被值所初始化"
 
@@ -35759,7 +34699,6 @@ msgstr "%qD应该在成员初始化列表中被初始化"
 
 #: cp/init.c:585
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is used uninitialized in this function"
 msgid "%qD is initialized with itself"
 msgstr "此函数中的%qD在使用前未初始化"
 
@@ -35910,7 +34849,6 @@ msgstr "未初始化的引用成员%qD"
 
 #: cp/init.c:2147
 #, fuzzy, gcc-internal-format
-#| msgid "uninitialized reference member in %q#T"
 msgid "uninitialized reference member in base %q#T of %q#T"
 msgstr "%q#T中有未初始化的引用成员"
 
@@ -35936,25 +34874,21 @@ msgstr "%q#T中有未初始化的引用成员"
 
 #: cp/init.c:2317
 #, fuzzy, gcc-internal-format
-#| msgid "integer overflow in expression"
 msgid "integer overflow in array size"
 msgstr "整数溢出"
 
 #: cp/init.c:2327
 #, fuzzy, gcc-internal-format
-#| msgid "Variable '%s' at %L in this context must be constant"
 msgid "array size in operator new must be constant"
 msgstr "变量‘%s’在%L处上下文中必须是常量"
 
 #: cp/init.c:2341
 #, fuzzy, gcc-internal-format
-#| msgid "variably modified field at file scope"
 msgid "variably modified type not allowed in operator new"
 msgstr "文件域中的动态可变字段"
 
 #: cp/init.c:2355
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C does not support saturating types"
 msgid "ISO C++ does not support variable-length array types"
 msgstr "ISO C 不支持饱和类型"
 
@@ -35970,7 +34904,6 @@ msgstr "%<new%>%q#T时常量未初始化"
 
 #: cp/init.c:2477
 #, fuzzy, gcc-internal-format
-#| msgid "not a valid Java .class file"
 msgid "%qT isn%'t a valid Java class type"
 msgstr "不是一个有效的 Java .class 文件。"
 
@@ -35996,7 +34929,6 @@ msgstr "对成员%qD的请求有歧义"
 
 #: cp/init.c:2775
 #, fuzzy, gcc-internal-format
-#| msgid "attributes after parenthesized initializer ignored"
 msgid "parenthesized initializer in array new"
 msgstr "括起的初始值设定后出现的属性被忽略"
 
@@ -36027,7 +34959,6 @@ msgstr "%qT中找不到%<class$%>"
 
 #: cp/init.c:3158
 #, fuzzy, gcc-internal-format
-#| msgid "possible problem detected in invocation of delete operator:"
 msgid "possible problem detected in invocation of delete [] operator:"
 msgstr "检测到调用 delete 运算符时可能出现的问题:"
 
@@ -36088,7 +35019,6 @@ msgstr ""
 
 #: cp/lambda.c:477
 #, fuzzy, gcc-internal-format
-#| msgid "compound literal has variable size"
 msgid "because the array element type %qT has variable size"
 msgstr "复合字面值有可变的大小"
 
@@ -36099,7 +35029,6 @@ msgstr "无法通过引用捕获%qE"
 
 #: cp/lambda.c:514
 #, fuzzy, gcc-internal-format
-#| msgid "already captured %<this%> in lambda expression"
 msgid "already captured %qD in lambda expression"
 msgstr "已经在 Lambda 表达式中捕获了%<this%>"
 
@@ -36170,7 +35099,6 @@ msgstr "修饰 typeof,请改用 decltype"
 
 #: cp/mangle.c:2116
 #, fuzzy, gcc-internal-format
-#| msgid "mangling unknown fixed point type"
 msgid "mangling __underlying_type"
 msgstr "修饰未知的定点类型"
 
@@ -36206,7 +35134,6 @@ msgstr "%qD修饰后的名字将在 GCC 的未来版本中有变化"
 
 #: cp/mangle.c:3500
 #, fuzzy, gcc-internal-format
-#| msgid "-fabi-version=4 (or =0) avoids this error with a change in vector mangling"
 msgid "-fabi-version=6 (or =0) avoids this error with a change in mangling"
 msgstr "-fabi-version=4 (or =0) 可以改变向量修饰来避免这个错误"
 
@@ -36237,13 +35164,11 @@ msgstr "未初始化的成员%qD具有%<const%>类型%qT"
 
 #: cp/method.c:1010
 #, fuzzy, gcc-internal-format
-#| msgid "a destructor cannot be %<constexpr%>"
 msgid "defaulted constructor calls non-constexpr %q+D"
 msgstr "析构函数不能是%<constexpr%>"
 
 #: cp/method.c:1071
 #, fuzzy, gcc-internal-format
-#| msgid "uninitialized const %qD is invalid in C++"
 msgid "initializer for %q+#D is invalid"
 msgstr "未初始化的常量%qD在C++中是无效的"
 
@@ -36264,7 +35189,6 @@ msgstr ""
 
 #: cp/method.c:1128
 #, fuzzy, gcc-internal-format
-#| msgid "non-static data member %qD has Java class type"
 msgid "copying non-static data member %q#D of rvalue reference type"
 msgstr "非静态数据成员%qD具有 Java 类类型"
 
@@ -36315,7 +35239,6 @@ msgstr "不匹配%qD预期的签名"
 
 #: cp/method.c:1814
 #, fuzzy, gcc-internal-format
-#| msgid "function %q+D defaulted on its first declaration must not have an exception-specification"
 msgid "function %q+D defaulted on its redeclaration with an exception-specification that differs from the implicit declaration %q#D"
 msgstr "首次声明时被默认化的函数%q+D不可以指定异常"
 
@@ -36326,7 +35249,6 @@ msgstr ""
 
 #: cp/method.c:1860
 #, fuzzy, gcc-internal-format
-#| msgid "%qD cannot be defaulted"
 msgid "a template cannot be defaulted"
 msgstr "%qD不能被默认化"
 
@@ -36347,13 +35269,11 @@ msgstr "由于隐式的虚析构函数,类%qT的 vtable 布局可能与 ABI 
 
 #: cp/name-lookup.c:567
 #, fuzzy, gcc-internal-format
-#| msgid "%q#D conflicts with previous using declaration %q#D"
 msgid "%q#D conflicts with a previous declaration"
 msgstr "%q#D与先前的 using 声明%q#D冲突"
 
 #: cp/name-lookup.c:569
 #, fuzzy, gcc-internal-format
-#| msgid "previous declaration %q+D"
 msgid "previous declaration %q+#D"
 msgstr "先前的声明%q+D"
 
@@ -36420,7 +35340,6 @@ msgstr "%q#D的声明隐藏了一个形参"
 
 #: cp/name-lookup.c:1189
 #, fuzzy, gcc-internal-format
-#| msgid "declaration of %q+D shadows a parameter"
 msgid "declaration of %qD shadows a lambda capture"
 msgstr "%q+D的声明隐藏了一个形参"
 
@@ -36629,7 +35548,6 @@ msgstr "%qD做了多次复本"
 
 #: cp/parser.c:792
 #, fuzzy, gcc-internal-format
-#| msgid "identifier %qE will become a keyword in C++0x"
 msgid "identifier %qE is a keyword in C++11"
 msgstr "标志符%qE将会成为 C++0x 的一个关键字"
 
@@ -36730,7 +35648,6 @@ msgstr "%qT不是一个模板"
 
 #: cp/parser.c:2719
 #, fuzzy, gcc-internal-format
-#| msgid "%qE is not a template"
 msgid "%qE is not a class template"
 msgstr "%qE不是一个模板"
 
@@ -36811,7 +35728,6 @@ msgstr "%qD不能出现在常量表达式中"
 
 #: cp/parser.c:2809
 #, fuzzy, gcc-internal-format
-#| msgid "a function call cannot appear in a constant-expression"
 msgid "a transaction expression cannot appear in a constant-expression"
 msgstr "函数调用不能出现在常量表达式中"
 
@@ -36844,7 +35760,6 @@ msgstr "%qE不是一个类型名"
 
 #: cp/parser.c:2903
 #, fuzzy, gcc-internal-format
-#| msgid "C++0x %<constexpr%> only available with -std=c++0x or -std=gnu++0x"
 msgid "C++11 %<constexpr%> only available with -std=c++11 or -std=gnu++11"
 msgstr "C++0x %<constexpr%>只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
@@ -36855,7 +35770,6 @@ msgstr "(也许您本意是想用%<typename %T::%E%>)"
 
 #: cp/parser.c:2948
 #, fuzzy, gcc-internal-format
-#| msgid "%qE in namespace %qE does not name a type"
 msgid "%qE in namespace %qE does not name a template type"
 msgstr "%qE不是命名空间%qE中的一个类型名"
 
@@ -36882,13 +35796,11 @@ msgstr "%<%T::%E%>之前需要%<typename%>,因为%qT是一个有依赖的作
 
 #: cp/parser.c:2974
 #, fuzzy, gcc-internal-format
-#| msgid "%qE in class %qT does not name a type"
 msgid "%qE in %q#T does not name a template type"
 msgstr "%qE不是类%qT中的一个类型名"
 
 #: cp/parser.c:2978
 #, fuzzy, gcc-internal-format
-#| msgid "%qE in class %qT does not name a type"
 msgid "%qE in %q#T does not name a type"
 msgstr "%qE不是类%qT中的一个类型名"
 
@@ -36914,25 +35826,21 @@ msgstr ""
 
 #: cp/parser.c:3867
 #, fuzzy, gcc-internal-format
-#| msgid "floating constant exceeds range of %qT"
 msgid "integer literal exceeds range of %qT type"
 msgstr "浮点常量超出%qT的范围"
 
 #: cp/parser.c:3873
 #, fuzzy, gcc-internal-format
-#| msgid "floating constant exceeds range of %qT"
 msgid "floating literal exceeds range of %qT type"
 msgstr "浮点常量超出%qT的范围"
 
 #: cp/parser.c:3877
 #, fuzzy, gcc-internal-format
-#| msgid "floating constant truncated to zero"
 msgid "floating literal truncated to zero"
 msgstr "浮点常量向零截断"
 
 #: cp/parser.c:3920
 #, fuzzy, gcc-internal-format
-#| msgid "unable to find a register to spill in class %qs"
 msgid "unable to find numeric literal operator %qD"
 msgstr "在类%qs中找不到可溢出的寄存器"
 
@@ -36943,7 +35851,6 @@ msgstr ""
 
 #: cp/parser.c:3969
 #, fuzzy, gcc-internal-format
-#| msgid "unable to find a register to spill in class %qs"
 msgid "unable to find string literal operator %qD"
 msgstr "在类%qs中找不到可溢出的寄存器"
 
@@ -37004,7 +35911,6 @@ msgstr "%<~%>前的作用域%qT不是一个类名"
 
 #: cp/parser.c:4935 cp/parser.c:6785
 #, fuzzy, gcc-internal-format
-#| msgid "C++0x auto only available with -std=c++0x or -std=gnu++0x"
 msgid "%<~auto%> only available with -std=c++1y or -std=gnu++1y"
 msgstr "C++0x auto 只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
@@ -37035,7 +35941,6 @@ msgstr "嵌套名指定中使用了不完全的类型%qT"
 
 #: cp/parser.c:5276
 #, fuzzy, gcc-internal-format
-#| msgid "%qT resolves to %qT, which is not an enumeration type"
 msgid "decltype evaluates to %qT, which is not a class or enumeration type"
 msgstr "%qT被解析到非枚举类型%qT"
 
@@ -37076,7 +35981,6 @@ msgstr ""
 
 #: cp/parser.c:6368
 #, fuzzy, gcc-internal-format
-#| msgid "-client_name not allowed with -dynamiclib"
 msgid "braced list index is not allowed with array notation"
 msgstr "-client_name 不能和 -dynamiclib 一起使用"
 
@@ -37092,7 +35996,6 @@ msgstr "错误地使用了%qD"
 
 #: cp/parser.c:6558
 #, fuzzy, gcc-internal-format
-#| msgid "%<%D::%D%> is not a member of %qT"
 msgid "%<%D::%D%> is not a class member"
 msgstr "%<%D::%D%>不是%qT的成员"
 
@@ -37113,7 +36016,6 @@ msgstr "类型不能定义在%<decltype%>中"
 
 #: cp/parser.c:7262
 #, fuzzy, gcc-internal-format
-#| msgid "types may not be defined in a new-type-id"
 msgid "types may not be defined in a new-expression"
 msgstr "类型不能定义在 new-type-id 中"
 
@@ -37144,7 +36046,6 @@ msgstr "使用旧式的类型转换"
 
 #: cp/parser.c:7891
 #, fuzzy, gcc-internal-format
-#| msgid "%<>>%> operator will be treated as two right angle brackets in C++0x"
 msgid "%<>>%> operator is treated as two right angle brackets in C++11"
 msgstr "%<>>%>运算符在 C++0x 中将被认为是两个右尖括号"
 
@@ -37175,7 +36076,6 @@ msgstr ""
 
 #: cp/parser.c:8901
 #, fuzzy, gcc-internal-format
-#| msgid "lambda expressions only available with -std=c++0x or -std=gnu++0x"
 msgid "lambda capture initializers only available with -std=c++1y or -std=gnu++1y"
 msgstr "Lambda 表达式只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
@@ -37186,13 +36086,11 @@ msgstr ""
 
 #: cp/parser.c:8931
 #, fuzzy, gcc-internal-format
-#| msgid "increment of read-only variable %qD"
 msgid "capture of non-variable %qD "
 msgstr "令只读变量%qD自增"
 
 #: cp/parser.c:8933 cp/parser.c:8942 cp/semantics.c:3237
 #, fuzzy, gcc-internal-format
-#| msgid "%q+D declared here"
 msgid "%q+#D declared here"
 msgstr "%q+D已在此声明过"
 
@@ -37213,7 +36111,6 @@ msgstr ""
 
 #: cp/parser.c:9027
 #, fuzzy, gcc-internal-format
-#| msgid "variadic templates only available with -std=c++0x or -std=gnu++0x"
 msgid "lambda templates are only available with -std=c++1y or -std=gnu++1y"
 msgstr "可变参数模板只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
@@ -37224,7 +36121,6 @@ msgstr "为 lambda 形参指定了默认参数"
 
 #: cp/parser.c:9485
 #, fuzzy, gcc-internal-format
-#| msgid "attributes after parenthesized initializer ignored"
 msgid "attributes at the beginning of statement are ignored"
 msgstr "括起的初始值设定后出现的属性被忽略"
 
@@ -37250,7 +36146,6 @@ msgstr "%<%T::%D%>命名了一个构造函数而非类型"
 
 #: cp/parser.c:9692
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not a constexpr function"
 msgid "compound-statement in constexpr function"
 msgstr "%qD不是一个广义常函数"
 
@@ -37266,7 +36161,6 @@ msgstr "类型不能定义在条件表达式中"
 
 #: cp/parser.c:10305
 #, fuzzy, gcc-internal-format
-#| msgid "expression statement has incomplete type"
 msgid "range-based %<for%> expression of type %qT has incomplete type"
 msgstr "表达式语句类型不完全"
 
@@ -37292,13 +36186,11 @@ msgstr "需要循环语句"
 
 #: cp/parser.c:10568
 #, fuzzy, gcc-internal-format
-#| msgid "range-based-for loops are not allowed in C++98 mode"
 msgid "range-based %<for%> loops are not allowed in C++98 mode"
 msgstr "C++98 模式下不允许使用基于范围的 for 循环"
 
 #: cp/parser.c:10642
 #, fuzzy, gcc-internal-format
-#| msgid "break statement used with OpenMP for loop"
 msgid "break statement used with Cilk Plus for loop"
 msgstr "OpenMP for 循环中使用了 break 语句"
 
@@ -37337,7 +36229,6 @@ msgstr "%<friend%>用在类外"
 #. we're complaining about C++0x compatibility.
 #: cp/parser.c:11485
 #, fuzzy, gcc-internal-format
-#| msgid "%<auto%> will change meaning in C++0x; please remove it"
 msgid "%<auto%> changes meaning in C++11; please remove it"
 msgstr "%<auto%>的语义在 C++0x 中将被改变;请考虑删除它"
 
@@ -37368,7 +36259,6 @@ msgstr "类型不能定义在%<decltype%>中"
 
 #: cp/parser.c:12122
 #, fuzzy, gcc-internal-format
-#| msgid "types may not be defined in a new-type-id"
 msgid "types may not be defined in a conversion-type-id"
 msgstr "类型不能定义在 new-type-id 中"
 
@@ -37379,7 +36269,6 @@ msgstr "在转换运算符中使用%<auto%>无效"
 
 #: cp/parser.c:12153
 #, fuzzy, gcc-internal-format
-#| msgid "invalid use of %<auto%> in conversion operator"
 msgid "use of %<auto%> in member template conversion operator can never be deduced"
 msgstr "在转换运算符中使用%<auto%>无效"
 
@@ -37395,7 +36284,6 @@ msgstr "无法从成员%<%D%>中扩展初始值"
 
 #: cp/parser.c:12276
 #, fuzzy, gcc-internal-format
-#| msgid "static declaration of %q+D follows non-static declaration"
 msgid "mem-initializer for %qD follows constructor delegation"
 msgstr "对%qD的静态声明出现在非静态声明之后"
 
@@ -37421,7 +36309,6 @@ msgstr "二元操作中中操作数无效"
 
 #: cp/parser.c:12737 cp/parser.c:12784
 #, fuzzy, gcc-internal-format
-#| msgid "expected a string after %<#pragma message%>"
 msgid "expected empty string after %<operator%> keyword"
 msgstr "%<#pragma message%>后需要一个字符串"
 
@@ -37432,7 +36319,6 @@ msgstr ""
 
 #: cp/parser.c:12761
 #, fuzzy, gcc-internal-format
-#| msgid "expected identifier"
 msgid "expected suffix identifier"
 msgstr "需要标识符"
 
@@ -37484,7 +36370,6 @@ msgstr "%<<:%>是%<[%>的另一种拼法。请在%<<%>和%<::%>间加上空格"
 
 #: cp/parser.c:13403
 #, fuzzy, gcc-internal-format
-#| msgid "(if you use %<-fpermissive%> G++ will accept your code)"
 msgid "(if you use %<-fpermissive%> or %<-std=c++11%>, or %<-std=gnu++11%> G++ will accept your code)"
 msgstr "(如果您使用%<-fpermissive%>G++ 会接受您的代码)"
 
@@ -37547,19 +36432,16 @@ msgstr "需要类型限定"
 
 #: cp/parser.c:14510
 #, fuzzy, gcc-internal-format
-#| msgid "defaulted and deleted functions only available with -std=c++0x or -std=gnu++0x"
 msgid "use of %<auto%> in lambda parameter declaration only available with -std=c++1y or -std=gnu++1y"
 msgstr "默认化和被删除的函数只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/parser.c:14516
 #, fuzzy, gcc-internal-format
-#| msgid "defaulted and deleted functions only available with -std=c++0x or -std=gnu++0x"
 msgid "use of %<auto%> in parameter declaration only available with -std=c++1y or -std=gnu++1y"
 msgstr "默认化和被删除的函数只在 -std=c++0x 或 -std=gnu++0x 下可用"
 
 #: cp/parser.c:14521
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C forbids forward parameter declarations"
 msgid "ISO C++ forbids use of %<auto%> in parameter declaration"
 msgstr "ISO C 不允许前向参数声明"
 
@@ -37640,7 +36522,6 @@ msgstr "%q#T多次定义"
 
 #: cp/parser.c:15524
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C++ forbids incrementing an enum"
 msgid "ISO C++ forbids empty anonymous enum"
 msgstr "ISO C++ 不允许枚举自增"
 
@@ -37681,7 +36562,6 @@ msgstr ""
 
 #: cp/parser.c:16101
 #, fuzzy, gcc-internal-format
-#| msgid "types may not be defined in exception-declarations"
 msgid "types may not be defined in alias template declarations"
 msgstr "类型不能定义在异常声明中"
 
@@ -37764,7 +36644,6 @@ msgstr "无效的声明"
 #. function.
 #: cp/parser.c:17476
 #, fuzzy, gcc-internal-format
-#| msgid "invalid type in declaration"
 msgid "qualified-id in declaration"
 msgstr "声明中有无效类型"
 
@@ -37780,7 +36659,6 @@ msgstr "%qD是一个命名空间"
 
 #: cp/parser.c:17605
 #, fuzzy, gcc-internal-format
-#| msgid "creating pointer to member of non-class type %qT"
 msgid "cannot form pointer to member of non-class %q#T"
 msgstr "生成非类类型%qT的成员指针"
 
@@ -37796,13 +36674,11 @@ msgstr "重复的 cv 限定"
 
 #: cp/parser.c:17739
 #, fuzzy, gcc-internal-format
-#| msgid "duplicate cv-qualifier"
 msgid "multiple ref-qualifiers"
 msgstr "重复的 cv 限定"
 
 #: cp/parser.c:17797
 #, fuzzy, gcc-internal-format
-#| msgid "duplicate cv-qualifier"
 msgid "duplicate virt-specifier"
 msgstr "重复的 cv 限定"
 
@@ -37843,13 +36719,11 @@ msgstr "默认参数只允许出现在函数参数中"
 
 #: cp/parser.c:18594
 #, fuzzy, gcc-internal-format
-#| msgid "%H%sparameter pack %qD cannot have a default argument"
 msgid "parameter pack %qD cannot have a default argument"
 msgstr "%H%s模板参数包%qD不能有默认参数"
 
 #: cp/parser.c:18602
 #, fuzzy, gcc-internal-format
-#| msgid "%H%sparameter pack cannot have a default argument"
 msgid "parameter pack cannot have a default argument"
 msgstr "%H%s模板参数包不能有默认参数"
 
@@ -37860,7 +36734,6 @@ msgstr "ISO C++ 不允许指定元素初始值设定"
 
 #: cp/parser.c:18907
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C++ does not allow designated initializers"
 msgid "ISO C++ does not allow C99 designated initializers"
 msgstr "ISO C++ 不允许指定元素初始值设定"
 
@@ -37891,7 +36764,6 @@ msgstr "需要%<{%>或%<:%>"
 
 #: cp/parser.c:19667
 #, fuzzy, gcc-internal-format
-#| msgid "cannot find file for class %s"
 msgid "cannot specify %<override%> for a class"
 msgstr "无法为类 %s 找到文件"
 
@@ -37942,7 +36814,6 @@ msgstr "需要类名"
 
 #: cp/parser.c:20181
 #, fuzzy, gcc-internal-format
-#| msgid "a class-key must be used when declaring a friend"
 msgid "in C++03 a class-key must be used when declaring a friend"
 msgstr "声明友元时必须使用 class 关键字"
 
@@ -38018,7 +36889,6 @@ msgstr "类型不能定义在异常声明中"
 
 #: cp/parser.c:21749
 #, fuzzy, gcc-internal-format
-#| msgid "expected identifier or %<(%>"
 msgid "expected an identifier for the attribute name"
 msgstr "需要标识符或%<(%>"
 
@@ -38113,13 +36983,11 @@ msgstr "ISO C++ 1998 不支持%<long long%>"
 
 #: cp/parser.c:24031
 #, fuzzy, gcc-internal-format
-#| msgid "both %<_Sat%> and %<char%> in declaration specifiers"
 msgid "both %<__thread%> and %<thread_local%> specified"
 msgstr "声明中同时使用了%<_Sat%>和%<char%>"
 
 #: cp/parser.c:24033
 #, fuzzy, gcc-internal-format
-#| msgid "duplicate %qE"
 msgid "duplicate %qD"
 msgstr "重复的%qE"
 
@@ -38225,13 +37093,11 @@ msgstr "需要%<@throw%>"
 
 #: cp/parser.c:24157
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<static_assert%>"
 msgid "expected %<__transaction_atomic%>"
 msgstr "需要%<static_assert%>"
 
 #: cp/parser.c:24160
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<static_assert%>"
 msgid "expected %<__transaction_relaxed%>"
 msgstr "需要%<static_assert%>"
 
@@ -38272,7 +37138,6 @@ msgstr "使用了%qs标记,在命名%q#T时"
 
 #: cp/parser.c:24488
 #, fuzzy, gcc-internal-format
-#| msgid "previously declared here"
 msgid "%q#T was previously declared here"
 msgstr "以前在此声明过"
 
@@ -38283,7 +37148,6 @@ msgstr "%qD重声明时有不同的可访问性"
 
 #: cp/parser.c:24528
 #, fuzzy, gcc-internal-format
-#| msgid "%<template%> (as a disambiguator) is only allowed within templates"
 msgid "in C++98 %<template%> (as a disambiguator) is only allowed within templates"
 msgstr "用作消歧义的%<template%>只能用于模板内"
 
@@ -38354,7 +37218,6 @@ msgstr "%q+D的抽象类型无效"
 
 #: cp/parser.c:27475
 #, fuzzy, gcc-internal-format
-#| msgid "invalid initializer"
 msgid "invalid reduction-identifier"
 msgstr "无效的初始值设定"
 
@@ -38365,7 +37228,6 @@ msgstr "括起的初始化不允许使用在 OpenMP %<for%>循环中"
 
 #: cp/parser.c:29045
 #, fuzzy, gcc-internal-format
-#| msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
 msgid "parenthesized initialization is not allowed in for-loop"
 msgstr "括起的初始化不允许使用在 OpenMP %<for%>循环中"
 
@@ -38381,13 +37243,11 @@ msgstr "循环折叠得不够"
 
 #: cp/parser.c:30334
 #, fuzzy, gcc-internal-format
-#| msgid "attributes are not allowed on a function-definition"
 msgid "vector attribute not immediately followed by a single function declaration or definition"
 msgstr "函数定义中不允许有属性"
 
 #: cp/parser.c:30561
 #, fuzzy, gcc-internal-format
-#| msgid "invalid initializer"
 msgid "invalid initializer clause"
 msgstr "无效的初始值设定"
 
@@ -38403,13 +37263,11 @@ msgstr ""
 
 #: cp/parser.c:30678
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, or %<||%>"
 msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, %<||%> or identifier"
 msgstr "需要%<+%>、%<*%>、%<-%>、%<&%>、%<^%>、%<|%>、%<&&%>或%<||%>"
 
 #: cp/parser.c:30697
 #, fuzzy, gcc-internal-format
-#| msgid "new types may not be defined in a return type"
 msgid "types may not be defined in declare reduction type list"
 msgstr "不能在返回类型中定义新类型"
 
@@ -38450,7 +37308,6 @@ msgstr "%<#pragma GCC pch_preprocess%>末尾有垃圾字符"
 
 #: cp/parser.c:31479
 #, fuzzy, gcc-internal-format
-#| msgid "#pragma GCC optimize is not allowed inside functions"
 msgid "%<#pragma simd%> must be inside a function"
 msgstr "#pragma GCC optimize 不允许用在函数中"
 
@@ -38461,19 +37318,16 @@ msgstr "模块间优化未为 C++ 实现"
 
 #: cp/parser.c:31650
 #, fuzzy, gcc-internal-format
-#| msgid "Expected variable name at %C"
 msgid "expected variable-name"
 msgstr "在%C处需要变量名"
 
 #: cp/parser.c:31714
 #, fuzzy, gcc-internal-format
-#| msgid "expected %<,%> or %<)%>"
 msgid "expected %<,%> or %<)%> after %qE"
 msgstr "需要 %<,%> 或 %<)%>"
 
 #: cp/parser.c:31996
 #, fuzzy, gcc-internal-format
-#| msgid "templates may not be %<virtual%>"
 msgid "implicit templates may not be %<virtual%>"
 msgstr "模板不能是%<virtual%>的"
 
@@ -38524,7 +37378,6 @@ msgstr "类名隐藏了模板的模板形参%qD"
 
 #: cp/pt.c:831
 #, fuzzy, gcc-internal-format
-#| msgid "declaration of template %q#D"
 msgid "specialization of alias template %qD"
 msgstr "模板声明%q#D"
 
@@ -38562,13 +37415,11 @@ msgstr "%qD的特例化在实例化之后"
 
 #: cp/pt.c:1769
 #, fuzzy, gcc-internal-format
-#| msgid "candidate is: %+#D"
 msgid "candidate is: %#D"
 msgstr "备选为:%+#D"
 
 #: cp/pt.c:1776 cp/semantics.c:4775
 #, fuzzy, gcc-internal-format
-#| msgid "%s %+#D"
 msgid "%s %#D"
 msgstr "%s %+#D"
 
@@ -38599,7 +37450,6 @@ msgstr "%qD不是类模板的非静态数据成员"
 
 #: cp/pt.c:2299
 #, fuzzy, gcc-internal-format
-#| msgid "wrong number of template arguments (%d, should be %d)"
 msgid "too many template headers for %D (should be %d)"
 msgstr "模板参数数目不对(不应是 %d 个而应是 %d 个)"
 
@@ -38735,7 +37585,6 @@ msgstr ""
 
 #: cp/pt.c:4159
 #, fuzzy, gcc-internal-format
-#| msgid "previously declared here"
 msgid "primary template here"
 msgstr "以前在此声明过"
 
@@ -38792,7 +37641,6 @@ msgstr "默认参数不能用在函数模板友元重声明中"
 
 #: cp/pt.c:4478
 #, fuzzy, gcc-internal-format
-#| msgid "default template arguments may not be used in function templates without -std=c++0x or -std=gnu++0x"
 msgid "default template arguments may not be used in function templates without -std=c++11 or -std=gnu++11"
 msgstr "只有指定了 -std=c++0x 或 -std=gnu++0x 时才能在函数模板中使用默认参数"
 
@@ -38914,19 +37762,16 @@ msgstr "它必须是一个具有外部链接函数的地址"
 
 #: cp/pt.c:5229
 #, fuzzy, gcc-internal-format
-#| msgid "it must be the address of a function with external linkage"
 msgid "it must be the name of a function with external linkage"
 msgstr "它必须是一个具有外部链接函数的地址"
 
 #: cp/pt.c:5237
 #, fuzzy, gcc-internal-format
-#| msgid "%qE is not a valid template argument for type %qT because object %qD has not external linkage"
 msgid "%qE is not a valid template argument for type %qT because %qD has no linkage"
 msgstr "%qE不是类型%qT的有效模板实参,因为对象%qD没有外部链接"
 
 #: cp/pt.c:5241
 #, fuzzy, gcc-internal-format
-#| msgid "%qE is not a valid template argument of type %qT because %qD does not have external linkage"
 msgid "%qE is not a valid template argument for type %qT because %qD does not have external linkage"
 msgstr "%qE不是类型%qT的有效模板实参,因为函数%qD没有外部链接"
 
@@ -38937,7 +37782,6 @@ msgstr "它必须是格式为‘&X::Y’的成员指针"
 
 #: cp/pt.c:5318
 #, fuzzy, gcc-internal-format
-#| msgid "got %d template parameters for %q#D"
 msgid "  couldn't deduce template parameter %qD"
 msgstr "得到 %d 个模板参数,为%q#D"
 
@@ -38948,31 +37792,26 @@ msgstr ""
 
 #: cp/pt.c:5342
 #, fuzzy, gcc-internal-format
-#| msgid "comparison between types %qT and %qT"
 msgid "  mismatched types %qT and %qT"
 msgstr "在类型%qT和%qT间比较"
 
 #: cp/pt.c:5351
 #, fuzzy, gcc-internal-format
-#| msgid "template parameter pack %qD cannot have a default argument"
 msgid "  template parameter %qD is not a parameter pack, but argument %qD is"
 msgstr "模板参数包%qD不能有默认参数"
 
 #: cp/pt.c:5362
 #, fuzzy, gcc-internal-format
-#| msgid "template arguments to %qD do not match original template %qD"
 msgid "  template argument %qE does not match pointer-to-member constant %qE"
 msgstr "给%qD的模板实参不匹配原先的模板%qD"
 
 #: cp/pt.c:5372
 #, fuzzy, gcc-internal-format
-#| msgid "%qs is not valid for %qs"
 msgid "  %qE is not equivalent to %qE"
 msgstr "%qs对%qs而言无效"
 
 #: cp/pt.c:5381
 #, fuzzy, gcc-internal-format
-#| msgid "inconsistent deduction for %qT: %qT and then %qT"
 msgid "  inconsistent parameter pack deduction with %qT and %qT"
 msgstr "对%qT不一致的演绎:先是%qT然后是%qT"
 
@@ -38988,31 +37827,26 @@ msgstr ""
 
 #: cp/pt.c:5408
 #, fuzzy, gcc-internal-format
-#| msgid "partial specialization %qT does not specialize any template arguments"
 msgid "  variable-sized array type %qT is not a valid template argument"
 msgstr "部分特例化%qT并未特例化任何模板参数"
 
 #: cp/pt.c:5419
 #, fuzzy, gcc-internal-format
-#| msgid "%qE is not a valid template argument for type %qT"
 msgid "  member function type %qT is not a valid template argument"
 msgstr "%qE不是类型%qT的有效模板参数"
 
 #: cp/pt.c:5453
 #, fuzzy, gcc-internal-format
-#| msgid "cannot convert type %qT to type %qT"
 msgid "  cannot convert %qE (type %qT) to type %qT"
 msgstr "不能将类型%qT转换为类型%qT"
 
 #: cp/pt.c:5466
 #, fuzzy, gcc-internal-format
-#| msgid "%qT is an ambiguous base of %qT"
 msgid "  %qT is an ambiguous base class of %qT"
 msgstr "%qT是%qT的有歧义的基类"
 
 #: cp/pt.c:5470
 #, fuzzy, gcc-internal-format
-#| msgid "type %qT is not derived from type %qT"
 msgid "  %qT is not derived from %qT"
 msgstr "类型%qT不是由类型%qT派生的"
 
@@ -39023,13 +37857,11 @@ msgstr ""
 
 #: cp/pt.c:5491
 #, fuzzy, gcc-internal-format
-#| msgid "cannot decrement a pointer to incomplete type %qT"
 msgid "  can't deduce a template for %qT from non-template type %qT"
 msgstr "指向不完全类型%qT的指针不能自减"
 
 #: cp/pt.c:5501
 #, fuzzy, gcc-internal-format
-#| msgid "template arguments to %qD do not match original template %qD"
 msgid "  template argument %qE does not match %qD"
 msgstr "给%qD的模板实参不匹配原先的模板%qD"
 
@@ -39055,7 +37887,6 @@ msgstr "%qD不是一个有效模板实参,因为%qD是一个变量,而非变
 
 #: cp/pt.c:5747
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not a valid template argument because %qD is a variable, not the address of a variable"
 msgid "%qE is not a valid template argument for %qT because it is not the address of a variable"
 msgstr "%qD不是一个有效模板实参,因为%qD是一个变量,而非变量的地址"
 
@@ -39071,7 +37902,6 @@ msgstr "%qE不是类型%qT的有效模板实参,因为函数%qD没有外部链
 
 #: cp/pt.c:5778
 #, fuzzy, gcc-internal-format
-#| msgid "%qE is not a valid template argument of type %qT because %qE is not a variable"
 msgid "%qE is not a valid template argument of type %qT because %qD has no linkage"
 msgstr "%qE不是类型%qT的有效模板实参,因为%qE不是一个变量"
 
@@ -39132,7 +37962,6 @@ msgstr "注入的类名%qD被用作模板的模板参数"
 
 #: cp/pt.c:6336
 #, fuzzy, gcc-internal-format
-#| msgid "invalid use of destructor %qD as a type"
 msgid "invalid use of destructor %qE as a type"
 msgstr "将析构函数%qD用作类型无效"
 
@@ -39210,13 +38039,11 @@ msgstr "提供给%q+D"
 
 #: cp/pt.c:6754
 #, fuzzy, gcc-internal-format
-#| msgid "default argument for template parameter for class enclosing %qD"
 msgid "pack expansion argument for non-pack parameter %qD of alias template %qD"
 msgstr "包含%qD的类的模板参数有默认参数"
 
 #: cp/pt.c:7085
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not a function template"
 msgid "%q#D is not a function template"
 msgstr "%qD不是一个函数模板"
 
@@ -39232,7 +38059,6 @@ msgstr "对于模板声明%q+D"
 
 #: cp/pt.c:8088
 #, fuzzy
-#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
 msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) substituting %qS"
 msgstr "在实例化%2$qD时模板实例化深度超过最大值 %1$d(使用 use -ftemplate-depth= 来增大最大值)"
 
@@ -39253,7 +38079,6 @@ msgstr "展开%<%E%>时参数包长度不匹配"
 
 #: cp/pt.c:10108
 #, fuzzy, gcc-internal-format
-#| msgid "redefinition of default argument for %q#D"
 msgid "  when instantiating default argument for call to %D"
 msgstr "重定义%q#D的默认参数"
 
@@ -39317,25 +38142,21 @@ msgstr "生成指向引用类型%qT的引用"
 
 #: cp/pt.c:11791
 #, fuzzy, gcc-internal-format
-#| msgid "cannot declare pointer to qualified function type %qT"
 msgid "forming pointer to qualified function type %qT"
 msgstr "不能声明指向限定函数类型%qT的指针"
 
 #: cp/pt.c:11794
 #, fuzzy, gcc-internal-format
-#| msgid "cannot declare reference to qualified function type %qT"
 msgid "forming reference to qualified function type %qT"
 msgstr "不能声明指向限定函数类型%qT的引用"
 
 #: cp/pt.c:11831
 #, fuzzy, gcc-internal-format
-#| msgid "cannot declare reference to qualified function type %qT"
 msgid "cannot declare reference to array of runtime bound"
 msgstr "不能声明指向限定函数类型%qT的引用"
 
 #: cp/pt.c:11832
 #, fuzzy, gcc-internal-format
-#| msgid "cannot declare pointer to %q#T member"
 msgid "cannot declare pointer to array of runtime bound"
 msgstr "无法声明指向%q#T成员的指针"
 
@@ -39426,13 +38247,11 @@ msgstr ""
 
 #: cp/pt.c:14567
 #, fuzzy, gcc-internal-format
-#| msgid "%<%T::%E%> is not a type"
 msgid "use %<%T::%D%> instead"
 msgstr "%<%T::%E%>不是一个类型"
 
 #: cp/pt.c:14571
 #, fuzzy, gcc-internal-format
-#| msgid "%qE undeclared here (not in a function)"
 msgid "%q+D declared here, later in the translation unit"
 msgstr "%qE未声明(不在函数内)"
 
@@ -39518,7 +38337,6 @@ msgstr "为模板实例化化应用了存储类型%qD"
 
 #: cp/pt.c:18935
 #, fuzzy, gcc-internal-format
-#| msgid "explicit instantiation of non-template %q#D"
 msgid "explicit instantiation of non-class template %qD"
 msgstr "对非模板%q#D的显式实例化"
 
@@ -39561,13 +38379,11 @@ msgstr "在实例化%2$q+D时模板实例化深度超过了最大值 %1$d,可
 
 #: cp/pt.c:20137
 #, fuzzy, gcc-internal-format
-#| msgid "invalid use of template type parameter %qT"
 msgid "invalid template non-type parameter"
 msgstr "对模板类型参数%qT的使用无效"
 
 #: cp/pt.c:20139
 #, fuzzy, gcc-internal-format
-#| msgid "%q#T is not a valid type for a template constant parameter"
 msgid "%q#T is not a valid type for a template non-type parameter"
 msgstr "%q#T不是一个有效的模板常量参数类型"
 
@@ -39583,7 +38399,6 @@ msgstr ""
 
 #: cp/pt.c:21484
 #, fuzzy, gcc-internal-format
-#| msgid "unable to deduce %qT from %qE"
 msgid "unable to deduce lambda return type from %qE"
 msgstr "无法从%2$qE推导出%1$qT"
 
@@ -39629,7 +38444,6 @@ msgstr "在使用 typeid 之前必须先 #include <typeinfo>"
 
 #: cp/rtti.c:399
 #, fuzzy, gcc-internal-format
-#| msgid "creating array of functions"
 msgid "typeid of array of runtime bound"
 msgstr "创建函数的数组"
 
@@ -39640,7 +38454,6 @@ msgstr "无法为类型%qT创建类型信息,因为它的大小是可变的"
 
 #: cp/rtti.c:491
 #, fuzzy, gcc-internal-format
-#| msgid "cannot declare pointer to qualified function type %qT"
 msgid "typeid of qualified function type %qT"
 msgstr "不能声明指向限定函数类型%qT的指针"
 
@@ -39671,7 +38484,6 @@ msgstr "%qT是%qT不可访问的基类"
 
 #: cp/search.c:1899
 #, fuzzy, gcc-internal-format
-#| msgid "invalid covariant return type for %q+#D"
 msgid "invalid covariant return type for %q#D"
 msgstr "%q+#D的协变返回类型无效"
 
@@ -39727,13 +38539,11 @@ msgstr "隐藏了被删除的函数%q+D"
 
 #: cp/search.c:1966
 #, fuzzy, gcc-internal-format
-#| msgid "virtual non-class function %qs"
 msgid "virtual function %q+D"
 msgstr "虚函数%qs不是类成员"
 
 #: cp/search.c:1967
 #, fuzzy, gcc-internal-format
-#| msgid "overriding deleted function %q+D"
 msgid "overriding final function %q+D"
 msgstr "隐藏了被删除的函数%q+D"
 
@@ -39851,7 +38661,6 @@ msgstr "无效的基类"
 
 #: cp/semantics.c:3218
 #, fuzzy, gcc-internal-format
-#| msgid "protected member %q+#D in anonymous union"
 msgid "cannot capture member %qD of anonymous union"
 msgstr "匿名联合中出现保护成员%q+#D"
 
@@ -39862,13 +38671,11 @@ msgstr "%qD未被捕获"
 
 #: cp/semantics.c:3235
 #, fuzzy, gcc-internal-format
-#| msgid "use of %<auto%> variable from containing function"
 msgid "use of local variable with automatic storage from containing function"
 msgstr "在包含函数中使用%<auto%>变量"
 
 #: cp/semantics.c:3236
 #, fuzzy, gcc-internal-format
-#| msgid "use of %<auto%> variable from containing function"
 msgid "use of parameter from containing function"
 msgstr "在包含函数中使用%<auto%>变量"
 
@@ -39910,14 +38717,12 @@ msgstr "%qE的类型未知"
 
 #: cp/semantics.c:3622
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not an enumerator-name"
 msgid "%qT is not an enumeration type"
 msgstr "%qD不是一个枚举名"
 
 #. Parameter packs can only be used in templates
 #: cp/semantics.c:3771
 #, fuzzy, gcc-internal-format
-#| msgid "storage class specifiers invalid in parameter declarations"
 msgid "Parameter pack __bases only valid in template declaration"
 msgstr "为形参声明指定了无效的存储类"
 
@@ -39938,7 +38743,6 @@ msgstr "不能为成员函数%qD应用%<offsetof%>"
 
 #: cp/semantics.c:4772
 #, fuzzy, gcc-internal-format
-#| msgid "reference to %qD is ambiguous"
 msgid "user defined reduction lookup is ambiguous"
 msgstr "对%qD的引用有歧义"
 
@@ -39959,7 +38763,6 @@ msgstr ""
 
 #: cp/semantics.c:5267
 #, fuzzy, gcc-internal-format
-#| msgid "num_threads expression must be integral"
 msgid "linear step expression must be integral"
 msgstr "num_threads 表达式必须是整型的"
 
@@ -39995,43 +38798,36 @@ msgstr "调度块大小表达式必须为整型"
 
 #: cp/semantics.c:5434
 #, fuzzy, gcc-internal-format
-#| msgid "num_threads expression must be integral"
 msgid "%qs length expression must be integral"
 msgstr "num_threads 表达式必须是整型的"
 
 #: cp/semantics.c:5447
 #, fuzzy, gcc-internal-format
-#| msgid "%Hcollapse argument needs positive constant integer expression"
 msgid "%qs length expression must be positive constant integer expression"
 msgstr "%H折叠变量需要正整常数表达式"
 
 #: cp/semantics.c:5464
 #, fuzzy, gcc-internal-format
-#| msgid "num_threads expression must be integral"
 msgid "%<num_teams%> expression must be integral"
 msgstr "num_threads 表达式必须是整型的"
 
 #: cp/semantics.c:5483
 #, fuzzy, gcc-internal-format
-#| msgid "num_threads expression must be integral"
 msgid "%<thread_limit%> expression must be integral"
 msgstr "num_threads 表达式必须是整型的"
 
 #: cp/semantics.c:5502
 #, fuzzy, gcc-internal-format
-#| msgid "slice end must be integer"
 msgid "%<device%> id must be integral"
 msgstr "切片结尾必须是整数"
 
 #: cp/semantics.c:5523
 #, fuzzy, gcc-internal-format
-#| msgid "schedule chunk size expression must be integral"
 msgid "%<dist_schedule%> chunk size expression must be integral"
 msgstr "调度块大小表达式必须为整型"
 
 #: cp/semantics.c:5543
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not a variable in clause %qs"
 msgid "%qD is not a variable in %<aligned%> clause"
 msgstr "%qD在子句%qs中不是一个变量"
 
@@ -40042,19 +38838,16 @@ msgstr ""
 
 #: cp/semantics.c:5563
 #, fuzzy, gcc-internal-format
-#| msgid "%qD appears more than once in data clauses"
 msgid "%qD appears more than once in %<aligned%> clauses"
 msgstr "%qD在数据子句中多次出现"
 
 #: cp/semantics.c:5576
 #, fuzzy, gcc-internal-format
-#| msgid "schedule chunk size expression must be integral"
 msgid "%<aligned%> clause alignment expression must be integral"
 msgstr "调度块大小表达式必须为整型"
 
 #: cp/semantics.c:5613
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not a variable in clause %qs"
 msgid "%qD is not a variable in %<depend%> clause"
 msgstr "%qD在子句%qs中不是一个变量"
 
@@ -40091,7 +38884,6 @@ msgstr ""
 #. Report the error.
 #: cp/semantics.c:6870
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "static assertion failed: %E"
 msgid "static assertion failed: %s"
 msgstr "静态断言错误:%E"
 
@@ -40137,7 +38929,6 @@ msgstr "函数%2$qD的返回值类型%1$qT不是一个字面类型"
 
 #: cp/semantics.c:7494
 #, fuzzy, gcc-internal-format
-#| msgid "%q#T is not a class"
 msgid "%q#T has virtual base classes"
 msgstr "%q#T不是一个类"
 
@@ -40168,7 +38959,6 @@ msgstr "返回语句转换无效"
 
 #: cp/semantics.c:8033
 #, fuzzy, gcc-internal-format
-#| msgid "%qD is not a constexpr function"
 msgid "%q+D is not usable as a constexpr function because:"
 msgstr "%qD不是一个广义常函数"
 
@@ -40179,14 +38969,12 @@ msgstr "友元声明没有指定类或函数名"
 
 #: cp/semantics.c:8382 cp/semantics.c:10054
 #, fuzzy, gcc-internal-format
-#| msgid "call to non-function %qD"
 msgid "call to non-constexpr function %qD"
 msgstr "调用非函数的%qD"
 
 #. The definition of fun was somehow unsuitable.
 #: cp/semantics.c:8416
 #, fuzzy, gcc-internal-format
-#| msgid "%qE is not a constant expression"
 msgid "%qD called in a constant expression"
 msgstr "%qE不是一个常量表达式"
 
@@ -40202,7 +38990,6 @@ msgstr "调用存在循环依赖"
 
 #: cp/semantics.c:8462
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "template instantiation depth exceeds maximum of %d (use -ftemplate-depth= to increase the maximum) instantiating %qD"
 msgid "constexpr evaluation depth exceeds maximum of %d (use -fconstexpr-depth= to increase the maximum)"
 msgstr "在实例化%2$qD时模板实例化深度超过最大值 %1$d(使用 use -ftemplate-depth= 来增大最大值)"
 
@@ -40218,7 +39005,6 @@ msgstr "数组下标越界"
 
 #: cp/semantics.c:8682
 #, fuzzy, gcc-internal-format
-#| msgid "Expected array subscript at %C"
 msgid "negative array subscript"
 msgstr "%C处需要数组下标"
 
@@ -40284,13 +39070,11 @@ msgstr "%qE的枚举值不是一个整数常量"
 
 #: cp/semantics.c:9492 cp/semantics.c:10361
 #, fuzzy, gcc-internal-format
-#| msgid "enumeral and non-enumeral type in conditional expression"
 msgid "temporary of non-literal type %qT in a constant expression"
 msgstr "枚举和非枚举类型一起出现在条件表达式中"
 
 #: cp/semantics.c:9735 cp/semantics.c:10146
 #, fuzzy, gcc-internal-format
-#| msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
 msgid "reinterpret_cast from integer to pointer"
 msgstr "从类型%qT到类型%qT的 reinterpret_cast 丢失了限定符"
 
@@ -40331,7 +39115,6 @@ msgstr ""
 
 #: cp/semantics.c:10200
 #, fuzzy, gcc-internal-format
-#| msgid "%qE is not a constant expression"
 msgid "use of %<this%> in a constant expression"
 msgstr "%qE不是一个常量表达式"
 
@@ -40352,7 +39135,6 @@ msgstr "整型表达式%qE不是常量"
 
 #: cp/semantics.c:10336
 #, fuzzy, gcc-internal-format
-#| msgid "Bad type in constant expression"
 msgid "cast to non-integral type %qT in a constant expression"
 msgstr "常量表达式中类型错误"
 
@@ -40423,43 +39205,36 @@ msgstr "%qE属性在此平台上不受支持"
 
 #: cp/tree.c:3333
 #, fuzzy, gcc-internal-format
-#| msgid "declaration of %qD as member of %qT"
 msgid "redeclaration of %qD adds abi tag %E"
 msgstr "%qD声明为%qT的一个成员"
 
 #: cp/tree.c:3339
 #, fuzzy, gcc-internal-format
-#| msgid "previous declaration %q+#D here"
 msgid "previous declaration here"
 msgstr "与此处早先的声明%q+#D冲突"
 
 #: cp/tree.c:3356
 #, fuzzy, gcc-internal-format
-#| msgid "%qE attribute ignored on non-class types"
 msgid "%qE attribute applied to non-class, non-enum type %qT"
 msgstr "%qE属性在不是类的类型上被忽略"
 
 #: cp/tree.c:3362
 #, fuzzy, gcc-internal-format
-#| msgid "ignoring attributes applied to %qT after definition"
 msgid "%qE attribute applied to %qT after its definition"
 msgstr "忽略在其定义之后为%qT应用的属性"
 
 #: cp/tree.c:3384
 #, fuzzy, gcc-internal-format
-#| msgid "%qE attribute applies only to functions"
 msgid "%qE attribute applied to non-function %qD"
 msgstr "%qE属性只能用于函数"
 
 #: cp/tree.c:3389
 #, fuzzy, gcc-internal-format
-#| msgid "%qE attribute applies only to functions"
 msgid "%qE attribute applied to extern \"C\" function %qD"
 msgstr "%qE属性只能用于函数"
 
 #: cp/tree.c:4093
 #, fuzzy, gcc-internal-format
-#| msgid "array bound is not an integer constant"
 msgid "zero as null pointer constant"
 msgstr "数组边界不是一个整数常量"
 
@@ -40530,7 +39305,6 @@ msgstr "%qs用于成员函数无效"
 
 #: cp/typeck.c:1559
 #, fuzzy, gcc-internal-format
-#| msgid "creating array of functions"
 msgid "taking sizeof array of runtime bound"
 msgstr "创建函数的数组"
 
@@ -40561,7 +39335,6 @@ msgstr "对非静态成员函数的使用无效"
 
 #: cp/typeck.c:1961
 #, fuzzy, gcc-internal-format
-#| msgid "taking address of temporary"
 msgid "taking address of temporary array"
 msgstr "取临时变量的地址"
 
@@ -40572,7 +39345,6 @@ msgstr "不建议使用从字符串常量到%qT的转换"
 
 #: cp/typeck.c:2248 cp/typeck.c:2658
 #, fuzzy, gcc-internal-format
-#| msgid "request for member %qD in %qE, which is of non-class type %qT"
 msgid "request for member %qD in %qE, which is of pointer type %qT (maybe you meant to use %<->%> ?)"
 msgstr "对成员%qD的请求出现在%qE中,而后者具有非类类型%qT"
 
@@ -40663,7 +39435,6 @@ msgstr "数组引用缺少下标"
 
 #: cp/typeck.c:3029
 #, fuzzy, gcc-internal-format
-#| msgid "alignment of array elements is greater than element size"
 msgid "rank of the array%'s index is greater than 1"
 msgstr "数组元素的对齐边界比元素大小还要大"
 
@@ -40704,13 +39475,11 @@ msgstr "%qE不能用作函数"
 
 #: cp/typeck.c:3486
 #, fuzzy, gcc-internal-format
-#| msgid "%qE cannot be used as a function"
 msgid "%qD cannot be used as a function"
 msgstr "%qE不能用作函数"
 
 #: cp/typeck.c:3489
 #, fuzzy, gcc-internal-format
-#| msgid "%qE cannot be used as a function"
 msgid "expression cannot be used as a function"
 msgstr "%qE不能用作函数"
 
@@ -40821,13 +39590,11 @@ msgstr "ISO C++ 不允许比较指针和整数的值"
 
 #: cp/typeck.c:4572 cp/typeck.c:4584
 #, fuzzy, gcc-internal-format
-#| msgid "comparison between %qT and %qT"
 msgid "operand types are %qT and %qT"
 msgstr "在%qT和%qT间比较"
 
 #: cp/typeck.c:4596
 #, fuzzy, gcc-internal-format
-#| msgid "could not find interface for class %qE"
 msgid "could not find an integer type of the same size as %qT"
 msgstr "找不到类%qE的接口"
 
@@ -40925,7 +39692,6 @@ msgstr "不能创建指向引用成员%qD的指针"
 
 #: cp/typeck.c:5473
 #, fuzzy, gcc-internal-format
-#| msgid "taking address of expression of type %<void%>"
 msgid "taking address of array of runtime bound"
 msgstr "取一个类型为%<void%>的表达式的地址"
 
@@ -40981,7 +39747,6 @@ msgstr "请求声明为%<register%>的%qD的地址"
 
 #: cp/typeck.c:6077
 #, fuzzy, gcc-internal-format
-#| msgid "initializer for %qT must be brace-enclosed"
 msgid "list-initializer for non-class type must not be parenthesized"
 msgstr "%qT的初始值设定必须在花括号内"
 
@@ -41027,7 +39792,6 @@ msgstr "从类型%qT到类型%qT的 reinterpret_cast 丢失了限定符"
 
 #: cp/typeck.c:6296
 #, fuzzy, gcc-internal-format
-#| msgid "invalid cast to function type %qT"
 msgid "useless cast to type %qT"
 msgstr "向函数类型%qT的转换无效"
 
@@ -41058,7 +39822,6 @@ msgstr "从%qT到%qT的转换增大了目标类型的对齐需求"
 
 #: cp/typeck.c:6850
 #, fuzzy, gcc-internal-format
-#| msgid "ISO C++ forbids casting between pointer-to-function and pointer-to-object"
 msgid "casting between pointer-to-function and pointer-to-object is conditionally-supported"
 msgstr "ISO C++ 不允许在函数指针和对象指针间进行转换"
 
@@ -41253,7 +40016,6 @@ msgstr "在返回%qT的函数中,返回语句不带返回值"
 
 #: cp/typeck.c:8390
 #, fuzzy, gcc-internal-format
-#| msgid "<brace-enclosed initializer list>"
 msgid "returning initializer list"
 msgstr "<花括号内的初始值列表>"
 
@@ -41335,7 +40097,6 @@ msgstr "不能将形参%q+D声明为具有抽象类型%qT"
 
 #: cp/typeck2.c:333
 #, fuzzy, gcc-internal-format
-#| msgid "cannot declare parameter %q+D to be of abstract type %qT"
 msgid "cannot declare parameter to be of abstract type %qT"
 msgstr "不能将形参%q+D声明为具有抽象类型%qT"
 
@@ -41372,37 +40133,31 @@ msgstr "生成抽象类型%qT的数组"
 
 #: cp/typeck2.c:356
 #, fuzzy, gcc-internal-format
-#| msgid "invalid cast to function type %qT"
 msgid "invalid cast to abstract class type %qT"
 msgstr "向函数类型%qT的转换无效"
 
 #: cp/typeck2.c:359
 #, fuzzy, gcc-internal-format
-#| msgid "invalid cast of an rvalue expression of type %qT to type %qT"
 msgid "invalid new-expression of abstract class type %qT"
 msgstr "从具有类型%qT的右值表达式到类型%qT中的转换无效"
 
 #: cp/typeck2.c:362
 #, fuzzy, gcc-internal-format
-#| msgid "invalid parameter type %qT"
 msgid "invalid abstract return type %qT"
 msgstr "无效的参数类型%qT"
 
 #: cp/typeck2.c:365
 #, fuzzy, gcc-internal-format
-#| msgid "invalid parameter type %qT"
 msgid "invalid abstract parameter type %qT"
 msgstr "无效的参数类型%qT"
 
 #: cp/typeck2.c:368
 #, fuzzy, gcc-internal-format
-#| msgid "expression %qE of abstract class type %qT cannot be used in throw-expression"
 msgid "expression of abstract class type %qT cannot be used in throw-expression"
 msgstr "表达式%qE具有抽象类类型%qT,不能用于 throw 表达式中"
 
 #: cp/typeck2.c:372
 #, fuzzy, gcc-internal-format
-#| msgid "cannot declare parameter %q+D to be of abstract type %qT"
 msgid "cannot declare catch parameter to be of abstract class type %qT"
 msgstr "不能将形参%q+D声明为具有抽象类型%qT"
 
@@ -41448,7 +40203,6 @@ msgstr "对%qT的使用非法"
 
 #: cp/typeck2.c:501
 #, fuzzy, gcc-internal-format
-#| msgid "invalid use of member (did you forget the %<&%> ?)"
 msgid "invalid use of member function (did you forget the %<()%> ?)"
 msgstr "对成员的使用无效(您是否遗忘了%<&%>?)"
 
@@ -41474,7 +40228,6 @@ msgstr "对依赖类型%qT的使用无效"
 
 #: cp/typeck2.c:534
 #, fuzzy, gcc-internal-format
-#| msgid "<brace-enclosed initializer list>"
 msgid "invalid use of brace-enclosed initializer list"
 msgstr "<花括号内的初始值列表>"
 
@@ -41510,7 +40263,6 @@ msgstr "在 {} 内将%qE从%qT转换为较窄的类型%qT"
 
 #: cp/typeck2.c:922
 #, fuzzy, gcc-internal-format
-#| msgid "narrowing conversion of %qE from %qT to %qT inside { }"
 msgid "narrowing conversion of %qE from %qT to %qT inside { } is ill-formed in C++11"
 msgstr "在 {} 内将%qE从%qT转换为较窄的类型%qT"
 
@@ -41606,19 +40358,16 @@ msgstr "成员指针类型%qT与对象类型%qT不兼容"
 
 #: cp/typeck2.c:1759
 #, fuzzy, gcc-internal-format
-#| msgid "pointer to member function used in arithmetic"
 msgid "pointer-to-member-function type %qT requires an rvalue"
 msgstr "在算术表达式中使用了成员指针"
 
 #: cp/typeck2.c:1766
 #, fuzzy, gcc-internal-format
-#| msgid "pointer to member function used in arithmetic"
 msgid "pointer-to-member-function type %qT requires an lvalue"
 msgstr "在算术表达式中使用了成员指针"
 
 #: cp/typeck2.c:1807
 #, fuzzy, gcc-internal-format
-#| msgid "invalid cast to function type %qT"
 msgid "functional cast to array type %qT"
 msgstr "向函数类型%qT的转换无效"
 
@@ -41659,7 +40408,6 @@ msgstr "在%L处把一个无穷大或非数转换为 INTEGER"
 
 #: fortran/arith.c:904 fortran/arith.c:929
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Noninteger exponent in an initialization expression at %L"
 msgid "Noninteger exponent in an initialization expression at %L"
 msgstr "Fortran 2003:%L处初始化表达式中非整数指数"
 
@@ -41833,7 +40581,6 @@ msgstr "%C处数组规格中有多于 %d 的维数"
 
 #: fortran/array.c:578
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Array specification at %C has more than %d dimensions"
 msgid "Array specification at %C with more than 7 dimensions"
 msgstr "%C处数组规格中有多于 %d 的维数"
 
@@ -41864,13 +40611,11 @@ msgstr "%C处数组构造语法错误"
 
 #: fortran/array.c:1060
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: [...] style array constructors at %C"
 msgid "[...] style array constructors at %C"
 msgstr "Fortran 2003:%C处 [...] 风格的数组构造"
 
 #: fortran/array.c:1082
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Array constructor including type specification at %C"
 msgid "Array constructor including type specification at %C"
 msgstr "Fortran 2003:%C处包含类型规格的数组构造"
 
@@ -42074,7 +40819,6 @@ msgstr "%4$L处‘%3$s’内建函数的‘%1$s’和‘%2$s’实参类型必
 #: fortran/check.c:868 fortran/check.c:1807 fortran/check.c:1933
 #: fortran/check.c:2007 fortran/check.c:2427
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Different type kinds at %L"
 msgid "Different type kinds at %L"
 msgstr "扩展:%L处类型种别不同"
 
@@ -42085,7 +40829,6 @@ msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须是一个 POINTER"
 
 #: fortran/check.c:913 fortran/check.c:949 fortran/check.c:2945
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "'%s' argument of '%s' intrinsic at %L must be of kind %d"
 msgid "'%s' argument of '%s' intrinsic at %L shall not be coindexed"
 msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须具有种别 %4$d"
 
@@ -42121,19 +40864,16 @@ msgstr "‘%s’的实参在%L处必须是一个指针"
 
 #: fortran/check.c:1030
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "'%s' and '%s' arguments of '%s' intrinsic at %L must have the same type"
 msgid "ATOM and VALUE argument of the %s intrinsic function shall have the same type at %L"
 msgstr "%4$L处‘%3$s’内建函数的‘%1$s’和‘%2$s’实参类型必须相同"
 
 #: fortran/check.c:1048
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "'%s' argument of '%s' intrinsic at %L must be default real"
 msgid "ATOM argument of the %s intrinsic function at %L shall be definable"
 msgstr "%3$L处内建函数‘%2$s’的‘%1$s’实参类型必须为默认实型"
 
 #: fortran/check.c:1065
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "'%s' argument of '%s' intrinsic at %L must be default real"
 msgid "VALUE argument of the %s intrinsic function at %L shall be definable"
 msgstr "%3$L处内建函数‘%2$s’的‘%1$s’实参类型必须为默认实型"
 
@@ -42162,7 +40902,6 @@ msgstr ""
 #: fortran/check.c:3609 fortran/check.c:3664 fortran/check.c:4620
 #: fortran/check.c:4749
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: '%s' intrinsic with KIND argument at %L"
 msgid "'%s' intrinsic with KIND argument at %L"
 msgstr "Fortran 2003:%2$L处的‘%1$s’内建函数有 KIND 实参"
 
@@ -42203,7 +40942,6 @@ msgstr "%2$L处 %1$s 内建函数缺少实参"
 
 #: fortran/check.c:1739
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2008: COMPLEX argument '%s' argument of '%s' intrinsic at %L"
 msgid "COMPLEX argument '%s' argument of '%s' intrinsic at %L"
 msgstr "Fortran 2008:%3$L处的‘%2$s’内建函数有 COMPLEX 参数‘%1$s’"
 
@@ -42239,19 +40977,16 @@ msgstr "%2$L处的内建函数‘%1$s’必须至少有两个实参"
 
 #: fortran/check.c:2384
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "'%s' argument of '%s' intrinsic at %L is empty"
 msgid "Missing '%s' argument to the %s intrinsic at %L"
 msgstr "%3$L处内建‘%2$s’内建函数的‘%1$s’实参为空"
 
 #: fortran/check.c:2399
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "arguments '%s' and '%s' for intrinsic %s"
 msgid "Duplicate argument '%s' at %L to intrinsic %s"
 msgstr "‘%s’和‘%s’用作内建函数‘%s’的参数"
 
 #: fortran/check.c:2404
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "arguments '%s' and '%s' for intrinsic %s"
 msgid "Unknown argument '%s' at %L to intrinsic %s"
 msgstr "‘%s’和‘%s’用作内建函数‘%s’的参数"
 
@@ -42262,7 +40997,6 @@ msgstr "%3$L处内建函数‘%2$s’的实参‘a%1$d’必须是 %4$s(%5$d)"
 
 #: fortran/check.c:2464
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: '%s' intrinsic with CHARACTER argument at %L"
 msgid "'%s' intrinsic with CHARACTER argument at %L"
 msgstr "Fortran 2003:%2$L处的‘%1$s’内建函数有 CHARACTER 实参"
 
@@ -42298,13 +41032,11 @@ msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须为整数型或实
 
 #: fortran/check.c:2815
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Second argument of NEAREST at %L shall not be zero"
 msgid "The FROM argument to MOVE_ALLOC at %L shall not be coindexed"
 msgstr "%L处 NEAREST 的第二个参数不能为 0"
 
 #: fortran/check.c:2826
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Second argument of NEAREST at %L shall not be zero"
 msgid "The TO argument to MOVE_ALLOC at %L shall not be coindexed"
 msgstr "%L处 NEAREST 的第二个参数不能为 0"
 
@@ -42315,25 +41047,21 @@ msgstr ""
 
 #: fortran/check.c:2844
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "the '%s' and '%s' arguments of '%s' intrinsic at %L must have the same rank %d/%d"
 msgid "The FROM and TO arguments of the MOVE_ALLOC intrinsic at %L must have the same rank %d/%d"
 msgstr "%4$L处‘%3$s’内建函数的‘%1$s’和‘%2$s’实参必须有相同的秩 %5$d/%6$d"
 
 #: fortran/check.c:2853
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "the '%s' and '%s' arguments of '%s' intrinsic at %L must have the same rank %d/%d"
 msgid "The FROM and TO arguments of the MOVE_ALLOC intrinsic at %L must have the same corank %d/%d"
 msgstr "%4$L处‘%3$s’内建函数的‘%1$s’和‘%2$s’实参必须有相同的秩 %5$d/%6$d"
 
 #: fortran/check.c:2880
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Second argument of NEAREST at %L shall not be zero"
 msgid "Argument 'S' of NEAREST at %L shall not be zero"
 msgstr "%L处 NEAREST 的第二个参数不能为 0"
 
 #: fortran/check.c:2930
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "'%s' argument of '%s' intrinsic at %L must be ALLOCATABLE"
 msgid "'%s' argument of '%s' intrinsic at %L must be a POINTER, ALLOCATABLE or procedure pointer"
 msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须为 ALLOCATABLE"
 
@@ -42364,7 +41092,6 @@ msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须是‘%4$s’的
 
 #: fortran/check.c:3150
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "'%s' argument of '%s' intrinsic at %L must be a variable"
 msgid "The argument of the RANK intrinsic at %L must be a data object"
 msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须是一个变量"
 
@@ -42410,7 +41137,6 @@ msgstr "若没有填充,%L处内建 ESHAPE 源中没有足够的元素去与
 
 #: fortran/check.c:3408 fortran/check.c:3427
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "'%s' argument of '%s' intrinsic at %L must be %s"
 msgid "'%s' argument of '%s' intrinsic at %L cannot be of type %s"
 msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须是 %4$s"
 
@@ -42436,19 +41162,16 @@ msgstr "‘shape’内建函数的‘source’实参在%L处不能是假定大
 
 #: fortran/check.c:3679 fortran/check.c:5705
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "'%s' argument of '%s' intrinsic at %L must be a scalar"
 msgid "'%s' argument of '%s' intrinsic at %L shall not be a procedure"
 msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’必须是一个标量"
 
 #: fortran/check.c:3687 fortran/check.c:3826 fortran/check.c:5697
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "'%s' argument of '%s' intrinsic at %L cannot be INTENT(IN)"
 msgid "'%s' argument of '%s' intrinsic at %L shall not be TYPE(*)"
 msgstr "%3$L处内建函数‘%2$s’的实参‘%1$s’不能是 INTENT(IN)"
 
 #: fortran/check.c:3698 fortran/check.c:3838
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "'source' argument of 'shape' intrinsic at %L must not be an assumed size array"
 msgid "'%s' argument of '%s' intrinsic at %L shall not be an assumed-size array"
 msgstr "‘shape’内建函数的‘source’实参在%L处不能是假定大小的数组"
 
@@ -42474,7 +41197,6 @@ msgstr ""
 
 #: fortran/check.c:3906
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Argument dim at %L must be scalar"
 msgid "Argument FPTR at %L to C_F_POINTER must be a pointer"
 msgstr "%L 实参维数必须是标量"
 
@@ -42540,7 +41262,6 @@ msgstr "%L处数据传输元素不能有 POINTER 组件"
 
 #: fortran/check.c:4036
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Function result '%s' at %L has no IMPLICIT type"
 msgid "Function result '%s' at %L is invalid as X argument to C_FUNLOC"
 msgstr "%2$L处的函数返回值‘%1$s’处没有隐式类型"
 
@@ -42551,7 +41272,6 @@ msgstr ""
 
 #: fortran/check.c:4050
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "User operator procedure '%s' at %L must be a FUNCTION"
 msgid "Noninteroperable procedure at %L to C_FUNLOC"
 msgstr "%2$L处的用户运算符‘%1$s’必须是一个 FUNCTION"
 
@@ -42567,7 +41287,6 @@ msgstr "‘%s’的实参在%L处必须是一个指针"
 
 #: fortran/check.c:4081
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Component at %C must have the POINTER attribute"
 msgid "Argument X at %L to C_LOC shall have either the POINTER or the TARGET attribute"
 msgstr "%C处的组件必须有 POINTER 属性"
 
@@ -42730,7 +41449,6 @@ msgstr "%L处数据元素高于数组上限"
 
 #: fortran/data.c:327 fortran/data.c:493
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: re-initialization of '%s' at %L"
 msgid "re-initialization of '%s' at %L"
 msgstr "扩展:‘%s’重初始化于 %L"
 
@@ -42741,7 +41459,6 @@ msgstr "%2$C处主机相关的变量‘%1$s’不能出现在 DATA 语句中"
 
 #: fortran/decl.c:271
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: initialization of common block variable '%s' in DATA statement at %C"
 msgid "initialization of common block variable '%s' in DATA statement at %C"
 msgstr "扩展:DATA 语句中对公共块变量‘%s’在%C处初始化"
 
@@ -42787,7 +41504,6 @@ msgstr "%C处函数参数属性中有冲突"
 
 #: fortran/decl.c:752
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Obsolescent feature: Old-style character length at %C"
 msgid "Old-style character length at %C"
 msgstr "已过时:%C处的旧式字符长度"
 
@@ -42823,13 +41539,11 @@ msgstr "%2$L 处类型“%1$s”是去到 BIND(C) 过程“%3$s”的参数,
 
 #: fortran/decl.c:1032
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %L is a parameter to the BIND(C) procedure '%s' but may not be C interoperable"
 msgid "Variable '%s' at %L is a dummy argument to the BIND(C) procedure '%s' but is not C interoperable because it is polymorphic"
 msgstr "%2$L处变量‘%1$s’是 BIND(C) 过程‘%3$s’的参数,但它不能与 C 互操作"
 
 #: fortran/decl.c:1038
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %L is a parameter to the BIND(C) procedure '%s' but may not be C interoperable"
 msgid "Variable '%s' at %L is a dummy argument of the BIND(C) procedure '%s' but may not be C interoperable"
 msgstr "%2$L处变量‘%1$s’是 BIND(C) 过程‘%3$s’的参数,但它不能与 C 互操作"
 
@@ -42840,37 +41554,31 @@ msgstr "%2$L处字符参数‘%1$s’长度必须为 1,因为过程‘%3$s’
 
 #: fortran/decl.c:1066
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %L cannot have the ALLOCATABLE attribute because procedure '%s' is BIND(C)"
 msgid "Variable '%s' at %L with ALLOCATABLE attribute in procedure '%s' with BIND(C)"
 msgstr "%2$L处变量‘%1$s’不能有 ALLOCATABLE 属性,因为过程‘%3$s’是 BIND(C)"
 
 #: fortran/decl.c:1074
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %L cannot have the POINTER attribute because procedure '%s' is BIND(C)"
 msgid "Variable '%s' at %L with POINTER attribute in procedure '%s' with BIND(C)"
 msgstr "%2$L处变量‘%1$s’不能有 POINTER 属性,因为过程‘%3$s’是 BIND(C)"
 
 #: fortran/decl.c:1083
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %L cannot have the ALLOCATABLE attribute because procedure '%s' is BIND(C)"
 msgid "Scalar variable '%s' at %L with POINTER or ALLOCATABLE in procedure '%s' with BIND(C) is not yet supported"
 msgstr "%2$L处变量‘%1$s’不能有 ALLOCATABLE 属性,因为过程‘%3$s’是 BIND(C)"
 
 #: fortran/decl.c:1092
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %L cannot have the OPTIONAL attribute because procedure '%s' is BIND(C)"
 msgid "Variable '%s' at %L cannot have both the OPTIONAL and the VALUE attribute because procedure '%s' is BIND(C)"
 msgstr "%2$L处变量‘%1$s’不能有 OPTIONAL 属性,因为过程‘%3$s’是 BIND(C)"
 
 #: fortran/decl.c:1099
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %L cannot have the OPTIONAL attribute because procedure '%s' is BIND(C)"
 msgid "Variable '%s' at %L with OPTIONAL attribute in procedure '%s' which is BIND(C)"
 msgstr "%2$L处变量‘%1$s’不能有 OPTIONAL 属性,因为过程‘%3$s’是 BIND(C)"
 
 #: fortran/decl.c:1110
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' at %L because the procedure is BIND(C)"
 msgid "Assumed-shape array '%s' at %L as dummy argument to the BIND(C) procedure '%s' at %L"
 msgstr "%2$L处假定外形数组‘%1$s’不能是%4$L处过程‘%3$s’的参数,因为该过程是 BIND(C)"
 
@@ -42946,7 +41654,6 @@ msgstr "%C处的 NULL() 初始化有歧义"
 
 #: fortran/decl.c:1724
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "NULL() initialization at %C is ambiguous"
 msgid "NULL() initialization at %C may not have MOLD"
 msgstr "%C处的 NULL() 初始化有歧义"
 
@@ -42987,7 +41694,6 @@ msgstr "%C处 Cray 指针重复指定了数组"
 
 #: fortran/decl.c:2003
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Old-style initialization at %C"
 msgid "Old-style initialization at %C"
 msgstr "扩展:%C处旧式的初始化"
 
@@ -43068,7 +41774,6 @@ msgstr "%C处 CHARACTER 声明语法错误"
 
 #: fortran/decl.c:2597
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: BYTE type at %C"
 msgid "BYTE type at %C"
 msgstr "扩展:%C处的 BYTE 类型"
 
@@ -43079,7 +41784,6 @@ msgstr "%C处使用到的 BYTE 类型在目标机上不可用"
 
 #: fortran/decl.c:2624
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "By-value argument at %L is not allowed in this context"
 msgid "Assumed type at %C is not allowed for components"
 msgstr "%L处上下文中不允许使用按值传递的实参"
 
@@ -43101,7 +41805,6 @@ msgstr "扩展:‘%s’重初始化于 %L"
 
 #: fortran/decl.c:2780
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: CLASS statement at %C"
 msgid "CLASS statement at %C"
 msgstr "Fortran 2003:%C处的 CLASS 语句"
 
@@ -43138,7 +41841,6 @@ msgstr "%C处 IMPORT 语句只允许出现在接口体中"
 
 #: fortran/decl.c:3171
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Empty IMPLICIT statement at %C"
 msgid "IMPORT statement at %C"
 msgstr "%C处 IMPLICIT 语句为空"
 
@@ -43179,7 +41881,6 @@ msgstr "重复的 %s 属性,位于 %L"
 
 #: fortran/decl.c:3667
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: ALLOCATABLE attribute at %C in a TYPE definition"
 msgid "ALLOCATABLE attribute at %C in a TYPE definition"
 msgstr "Fortran 2003:%C处的 ALLOCATABLE 属性出现在 TYPE 定义中"
 
@@ -43190,7 +41891,6 @@ msgstr "%L处的属性不允许出现在 TYPE 定义中"
 
 #: fortran/decl.c:3694
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Attribute %s at %L in a TYPE definition"
 msgid "Attribute %s at %L in a TYPE definition"
 msgstr "Fortran 2003:属性 %s 在%L处出现在 TYPE 定义中"
 
@@ -43201,7 +41901,6 @@ msgstr "%2$L处的 %1$s 属性不允许出现在模块规格说明以外"
 
 #: fortran/decl.c:3718
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: ASYNCHRONOUS attribute at %C"
 msgid "ASYNCHRONOUS attribute at %C"
 msgstr "Fortran 2003:%C处的 ASYNCHRONOUS 属性"
 
@@ -43217,19 +41916,16 @@ msgstr "%C处的 PROTECTED 仅允许出现在模块规格说明部分内"
 
 #: fortran/decl.c:3780
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: PROTECTED attribute at %C"
 msgid "PROTECTED attribute at %C"
 msgstr "Fortran 2003:%C处的 PROTECT 属性"
 
 #: fortran/decl.c:3809
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: VALUE attribute at %C"
 msgid "VALUE attribute at %C"
 msgstr "Fortran 2003:%C处的 VALUE 属性"
 
 #: fortran/decl.c:3816
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: VOLATILE attribute at %C"
 msgid "VOLATILE attribute at %C"
 msgstr "Fortran 2003:%C处的 VOLATILE 属性"
 
@@ -43302,7 +41998,6 @@ msgstr "%C处的属性规格说明语句缺少实体或公共块名"
 
 #: fortran/decl.c:4212
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Empty IMPLICIT statement at %C"
 msgid "BIND(C) statement at %C"
 msgstr "%C处 IMPLICIT 语句为空"
 
@@ -43328,7 +42023,6 @@ msgstr ""
 
 #: fortran/decl.c:4475 fortran/primary.c:1717
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Expected alternate return label at %C"
 msgid "Alternate-return argument at %C"
 msgstr "%C处需要替代的返回标号"
 
@@ -43359,7 +42053,6 @@ msgstr "%C处的函数声明后有非预期的垃圾字符"
 
 #: fortran/decl.c:4687 fortran/decl.c:5753
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2008: BIND(C) attribute at %L may not be specified for an internal procedure"
 msgid "BIND(C) attribute at %L may not be specified for an internal procedure"
 msgstr "Fortran 2008:%L处的 BIND(C)属性对于内部过程不可以指定"
 
@@ -43400,7 +42093,6 @@ msgstr "%C处需要 NOPASS 或显式接口"
 
 #: fortran/decl.c:5031
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Procedure pointer component at %C"
 msgid "Procedure pointer component at %C"
 msgstr "Fortran 2003:%C处的过程指针组件"
 
@@ -43416,13 +42108,11 @@ msgstr "%C处的 PROCEDURE 必须在一个泛型接口内"
 
 #: fortran/decl.c:5130 fortran/decl.c:7325
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Syntax error in PROCEDURE statement at %C"
 msgid "double colon in MODULE PROCEDURE statement at %L"
 msgstr "%C处 PROCEDURE 语句语法错误"
 
 #: fortran/decl.c:5199
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: PROCEDURE statement at %C"
 msgid "PROCEDURE statement at %C"
 msgstr "Fortran 2003:%C处的 PROCEDURE 语句"
 
@@ -43440,7 +42130,6 @@ msgstr "%L处的 BIND(C) 属性只能用于变量或公共块"
 
 #: fortran/decl.c:5440
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Empty IMPLICIT statement at %C"
 msgid "ENTRY statement at %C"
 msgstr "%C处 IMPLICIT 语句为空"
 
@@ -43562,13 +42251,11 @@ msgstr "需要 %s 语句在%L处"
 
 #: fortran/decl.c:6144
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Expecting %s statement at %C"
 msgid "Expecting %s statement at %L"
 msgstr "需要 %s 语句,于 %C"
 
 #: fortran/decl.c:6162
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Expected block name of '%s' in %s statement at %C"
 msgid "Expected block name of '%s' in %s statement at %L"
 msgstr "需要块名‘%s’在‘%s’表达式中,于 %C"
 
@@ -43674,7 +42361,6 @@ msgstr "%2$C处的 .%1$s. 运算符的访问规格说明已经被指定"
 
 #: fortran/decl.c:6834
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: PROTECTED statement at %C"
 msgid "PROTECTED statement at %C"
 msgstr "Fortran 2003:%C处的 PROTECTED 语句"
 
@@ -43740,7 +42426,6 @@ msgstr "VALUE 不能用在%C处 BLOCK 内"
 
 #: fortran/decl.c:7128
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: VALUE statement at %C"
 msgid "VALUE statement at %C"
 msgstr "Fortran 2003:%C处的 VALUE 语句"
 
@@ -43751,7 +42436,6 @@ msgstr "%C处 VALUE 语句语法错误"
 
 #: fortran/decl.c:7177
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: VOLATILE statement at %C"
 msgid "VOLATILE statement at %C"
 msgstr "Fortran 2003:%C处的 VOLATILE 语句"
 
@@ -43767,7 +42451,6 @@ msgstr "%C处的 VOLATILE 语句语法错误"
 
 #: fortran/decl.c:7236
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: ASYNCHRONOUS statement at %C"
 msgid "ASYNCHRONOUS statement at %C"
 msgstr "Fortran 2003:%C处的 ASYNCHRONOUS 语句"
 
@@ -43793,7 +42476,6 @@ msgstr "%C处 TYPE 定义中的歧义符号"
 
 #: fortran/decl.c:7416
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Symbol '%s' at %C has already been host associated"
 msgid "Symbol '%s' at %C has not been previously defined"
 msgstr "%2$C处符号‘%1$s’已经与主机相关联"
 
@@ -43824,7 +42506,6 @@ msgstr "%C处的派生类型在模块规格说明部分内只能是 PUBLIC"
 
 #: fortran/decl.c:7492
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "ABSTRACT type '%s' used at %L"
 msgid "ABSTRACT type at %C"
 msgstr "%2$L处使用了 ABSTRACT 类型‘%1$s’"
 
@@ -43855,7 +42536,6 @@ msgstr "%C处 Cray 指针不能指向假定外形数组"
 
 #: fortran/decl.c:7722
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: ENUM and ENUMERATOR at %C"
 msgid "ENUM and ENUMERATOR at %C"
 msgstr "Fortran 2003:%C处的 ENUM 和 ENUMERATOR"
 
@@ -44171,7 +42851,6 @@ msgstr "%2$L处的转换内建函数‘%1$s’不允许用在初始化表达式
 
 #: fortran/expr.c:2414
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Evaluation of nonstandard initialization expression at %L"
 msgid "Evaluation of nonstandard initialization expression at %L"
 msgstr "扩展:%L处求非标量初始化表达式的值"
 
@@ -44302,19 +42981,16 @@ msgstr "%L处赋值右手边出现 NULL"
 
 #: fortran/expr.c:3161
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "POINTER valued function appears on right-hand side of assignment at %L"
 msgid "POINTER-valued function appears on right-hand side of assignment at %L"
 msgstr "%L处赋值右手边出现值为 POINTER 的函数"
 
 #: fortran/expr.c:3171
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
 msgid "BOZ literal at %L used to initialize non-integer variable '%s'"
 msgstr "扩展:%L处 BOZ 字面值被用来初始化非整数变量‘%s’"
 
 #: fortran/expr.c:3176 fortran/resolve.c:9062
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
 msgid "BOZ literal at %L outside a DATA statement and outside INT/REAL/DBLE/CMPLX"
 msgstr "扩展:在 %L处的 BOZ 字面值在一个 DATA 语句之外并且也在 INT/REAL/DBLE/CMPLX 之外"
 
@@ -44375,7 +43051,6 @@ msgstr "%2$L处‘%1$s’需要边界规格"
 
 #: fortran/expr.c:3343
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Bounds specification for '%s' in pointer assignment at %L"
 msgid "Bounds specification for '%s' in pointer assignment at %L"
 msgstr "Fortran 2003:%2$L处指针赋值语句中‘%1$s’的边界规格"
 
@@ -44406,7 +43081,6 @@ msgstr "%L处过程指针赋值非法"
 
 #: fortran/expr.c:3445
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Statement function '%s' is invalid in procedure pointer assignment at %L"
 msgid "Function result '%s' is invalid as proc-target in procedure pointer assignment at %L"
 msgstr "语句函数‘%s’在%L处的过程指针赋值中是非法的"
 
@@ -44427,13 +43101,11 @@ msgstr "内部过程‘%s’在%L处的过程指针赋值中是非法的"
 
 #: fortran/expr.c:3477
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Internal procedure '%s' is invalid in procedure pointer assignment at %L"
 msgid "Intrinsic '%s' at %L is invalid in procedure pointer assignment"
 msgstr "内部过程‘%s’在%L处的过程指针赋值中是非法的"
 
 #: fortran/expr.c:3485
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Internal procedure '%s' is invalid in procedure pointer assignment at %L"
 msgid "Nonintrinsic elemental procedure '%s' is invalid in procedure pointer assignment at %L"
 msgstr "内部过程‘%s’在%L处的过程指针赋值中是非法的"
 
@@ -44444,7 +43116,6 @@ msgstr "%L处过程指针赋值不匹配:调用约定不匹配"
 
 #: fortran/expr.c:3564 fortran/expr.c:3571 fortran/resolve.c:2430
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "NOPASS or explicit interface required at %C"
 msgid "Explicit interface required for '%s' at %L: %s"
 msgstr "%C处需要 NOPASS 或显式接口"
 
@@ -44632,31 +43303,26 @@ msgstr "在%L处建立临时数组"
 
 #: fortran/frontend-passes.c:562 fortran/frontend-passes.c:565
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Return value of function '%s' at %L not set"
 msgid "Removing call to function '%s' at %L"
 msgstr "%2$L处函数‘%1$s’的返回值没有设置"
 
 #: fortran/frontend-passes.c:1668
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %C cannot be redefined inside loop beginning at %L"
 msgid "Variable '%s' at %L set to undefined value inside loop  beginning at %L as INTENT(OUT) argument to subroutine '%s'"
 msgstr "变量‘%s’(位于 %C)不能在从 %L 开始的循环的内部重定义"
 
 #: fortran/frontend-passes.c:1674
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %C cannot be redefined inside loop beginning at %L"
 msgid "Variable '%s' at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to subroutine '%s'"
 msgstr "变量‘%s’(位于 %C)不能在从 %L 开始的循环的内部重定义"
 
 #: fortran/frontend-passes.c:1738
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %C cannot be redefined inside loop beginning at %L"
 msgid "Variable '%s' at %L set to undefined value inside loop beginning at %L as INTENT(OUT) argument to function '%s'"
 msgstr "变量‘%s’(位于 %C)不能在从 %L 开始的循环的内部重定义"
 
 #: fortran/frontend-passes.c:1744
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %C cannot be redefined inside loop beginning at %L"
 msgid "Variable '%s' at %L not definable inside loop beginning at %L as INTENT(INOUT) argument to function '%s'"
 msgstr "变量‘%s’(位于 %C)不能在从 %L 开始的循环的内部重定义"
 
@@ -44687,7 +43353,6 @@ msgstr "哑过程‘%s’在%C处不能有泛型接口"
 
 #: fortran/interface.c:254
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: ABSTRACT INTERFACE at %C"
 msgid "ABSTRACT INTERFACE at %C"
 msgstr "Fortran 2003:%C处的 ABSTRACT INTERFACE"
 
@@ -44803,7 +43468,6 @@ msgstr ""
 
 #: fortran/interface.c:1590
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Cray pointee '%s' in %s clause at %L"
 msgid "Internal procedure '%s' in %s at %L"
 msgstr "%3$L处 %2$s 分句中 的Cray 指针目标‘%1$s’"
 
@@ -44824,7 +43488,6 @@ msgstr "%2$L处的‘%1$s’并非一个模块过程"
 
 #: fortran/interface.c:1893
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Assumed shape array at %L must be a dummy argument"
 msgid "The assumed-rank array at %L requires that the dummy argument '%s' has assumed-rank"
 msgstr "%L处假定外形的数组必须是一个虚参"
 
@@ -44865,7 +43528,6 @@ msgstr "%2$L处实参‘%1$s’类型不匹配;将 %3$s 传递给 %4$s"
 
 #: fortran/interface.c:2007
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Assumed-shape actual argument at %L is incompatible with the non-assumed-shape dummy argument '%s' due to VOLATILE attribute"
 msgid "Assumed-type actual argument at %L requires that dummy argument '%s' is of assumed type"
 msgstr "%L处假定外形的实参由于 VOLATILE 属性而与非假定外形虚参‘%s’不兼容"
 
@@ -45051,7 +43713,6 @@ msgstr ""
 
 #: fortran/interface.c:2843
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Actual argument for '%s' must be a pointer at %L"
 msgid "Actual CLASS array argument for '%s' must be a full array at %L"
 msgstr "‘%s’的实参在%L处必须是一个指针"
 
@@ -45142,7 +43803,6 @@ msgstr "%2$L处过程‘%1$s’的关键字参数要求显式的接口"
 
 #: fortran/interface.c:3298
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Symbol '%s' at %L already has an explicit interface"
 msgid "Assumed-type argument %s at %L requires an explicit interface"
 msgstr "符号‘%s’在%L处已经有了显式接口"
 
@@ -45158,7 +43818,6 @@ msgstr ""
 
 #: fortran/interface.c:3328
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Keyword argument requires explicit interface for procedure '%s' at %L"
 msgid "Assumed-rank argument requires an explicit interface at %L"
 msgstr "%2$L处过程‘%1$s’的关键字参数要求显式的接口"
 
@@ -45179,7 +43838,6 @@ msgstr ""
 
 #: fortran/interface.c:3902
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Entity '%s' at %C is already present in the interface"
 msgid "Entity '%s' at %L is already present in the interface"
 msgstr "%2$C处实体‘%1$s’已经出现在接口中"
 
@@ -45225,7 +43883,6 @@ msgstr "%2$L处的‘%1$s’覆盖了一个 FUNCTION 因此也必须是 FUNCTION
 
 #: fortran/interface.c:4184
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Interface mismatch in dummy procedure '%s' at %L: %s"
 msgid "Result mismatch for the overriding procedure '%s' at %L: %s"
 msgstr "哑过程‘%s’接口在%L处不匹配:%s"
 
@@ -45241,7 +43898,6 @@ msgstr "%3$L处‘%2$s’的虚参‘%1$s’应该命名为‘%4$s’以匹配
 
 #: fortran/interface.c:4236
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Interface mismatch in dummy procedure '%s' at %L: %s"
 msgid "Argument mismatch for the overriding procedure '%s' at %L: %s"
 msgstr "哑过程‘%s’接口在%L处不匹配:%s"
 
@@ -45267,31 +43923,26 @@ msgstr "%2$L处的‘%1$s’的传递对象虚参必须与被覆盖的过程传
 
 #: fortran/intrinsic.c:196
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "NULL pointer at %L is not permitted as actual argument of '%s' intrinsic function"
 msgid "Variable with NO_ARG_CHECK attribute at %L is only permitted as argument to the intrinsic functions C_LOC and PRESENT"
 msgstr "%L 的 NULL 指针不能用作内建函数‘%s’的实参"
 
 #: fortran/intrinsic.c:210
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "NULL pointer at %L is not permitted as actual argument of '%s' intrinsic function"
 msgid "Assumed-type argument at %L is not permitted as actual argument to the intrinsic %s"
 msgstr "%L 的 NULL 指针不能用作内建函数‘%s’的实参"
 
 #: fortran/intrinsic.c:217
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "NULL pointer at %L is not permitted as actual argument of '%s' intrinsic function"
 msgid "Assumed-type argument at %L is only permitted as first actual argument to the intrinsic %s"
 msgstr "%L 的 NULL 指针不能用作内建函数‘%s’的实参"
 
 #: fortran/intrinsic.c:224
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "NULL pointer at %L is not permitted as actual argument of '%s' intrinsic function"
 msgid "Assumed-rank argument at %L is only permitted as actual argument to intrinsic inquiry functions"
 msgstr "%L 的 NULL 指针不能用作内建函数‘%s’的实参"
 
 #: fortran/intrinsic.c:231
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "NULL pointer at %L is not permitted as actual argument of '%s' intrinsic function"
 msgid "Assumed-rank argument at %L is only permitted as first actual argument to the intrinsic inquiry function %s"
 msgstr "%L 的 NULL 指针不能用作内建函数‘%s’的实参"
 
@@ -45342,19 +43993,16 @@ msgstr "%3$L处使用了内建的‘%1$s’(是 %2$s)"
 
 #: fortran/intrinsic.c:4255
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Function '%s' as initialization expression at %L"
 msgid "Function '%s' as initialization expression at %L"
 msgstr "Fortran 2003:函数‘%s’在%L处用作初始化表达式"
 
 #: fortran/intrinsic.c:4331
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Elemental function as initialization expression with non-integer/non-character arguments at %L"
 msgid "Elemental function as initialization expression with non-integer/non-character arguments at %L"
 msgstr "Fortran 2003:作为初始表达式的基本函数在%L处使用了非整数或非字符的参数"
 
 #: fortran/intrinsic.c:4402
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Subroutine call to intrinsic '%s' at %L is not PURE"
 msgid "Subroutine call to intrinsic '%s' in DO CONCURRENT block at %L is not PURE"
 msgstr "在%2$L处调用内建‘%1$s’的子例程不是 PURE"
 
@@ -45395,25 +44043,21 @@ msgstr "扩展:%C处格式中的制表符"
 
 #: fortran/io.c:455
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: DP format specifier not allowed at %C"
 msgid "DP format specifier not allowed at %C"
 msgstr "Fortran 2003:不允许在%C处使用 DP 格式限定符"
 
 #: fortran/io.c:462
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: DC format specifier not allowed at %C"
 msgid "DC format specifier not allowed at %C"
 msgstr "Fortran 2003:不允许在%C处使用 DC 格式限定符"
 
 #: fortran/io.c:651
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: X descriptor requires leading space count at %L"
 msgid "X descriptor requires leading space count at %L"
 msgstr "扩展:X 描述符在%L需要前导空格数量"
 
 #: fortran/io.c:680
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: $ descriptor at %L"
 msgid "$ descriptor at %L"
 msgstr "扩展:%L处的 $ 描述符"
 
@@ -45429,7 +44073,6 @@ msgstr "扩展:%L处的 L 描述符后缺少正的宽度"
 
 #: fortran/io.c:826
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2008: 'G0' in format at %L"
 msgid "'G0' in format at %L"
 msgstr "Fortran 2008:%L处格式中的‘G0’"
 
@@ -45455,7 +44098,6 @@ msgstr "%L处的 H 格式限定符已在 Fortran 95 中被删除"
 
 #: fortran/io.c:1059 fortran/io.c:1121
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Missing comma at %L"
 msgid "Missing comma at %L"
 msgstr "扩展:%L处缺少逗号"
 
@@ -45511,13 +44153,11 @@ msgstr "%L处 FORMAT 标记中的常量表达式默认类型必须为 CHARACTER"
 
 #: fortran/io.c:1399
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "FORMAT tag at %L must be of type CHARACTER or INTEGER"
 msgid "FORMAT tag at %L must be of type default-kind CHARACTER or of INTEGER"
 msgstr "%L处 FORMAT 标记必须具有类型 CHARACTER 或 INTEGER"
 
 #: fortran/io.c:1405
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Deleted feature: ASSIGNED variable in FORMAT tag at %L"
 msgid "ASSIGNED variable in FORMAT tag at %L"
 msgstr "已删除的特性:%L处 FORMAT 标记中有 ASSIGNED 变量"
 
@@ -45533,7 +44173,6 @@ msgstr "%2$L处的 FORMAT 标记中的标量‘%1$s’不是一个 ASSIGNED 变
 
 #: fortran/io.c:1429
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Non-character in FORMAT tag at %L"
 msgid "Non-character in FORMAT tag at %L"
 msgstr "扩展:%L处的 FORMAT 标记中有非字符"
 
@@ -45559,7 +44198,6 @@ msgstr "%s 标记在%L处必须具有类型 %s"
 
 #: fortran/io.c:1482
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Concat operator at %L must concatenate strings of the same kind"
 msgid "%s tag at %L must be a character string of default kind"
 msgstr "%L处的毗连运算符必须毗连同一种别的字符串"
 
@@ -45570,7 +44208,6 @@ msgstr "%s 标记在%L处必须是标量"
 
 #: fortran/io.c:1495
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: IOMSG tag at %L"
 msgid "IOMSG tag at %L"
 msgstr "Fortran 2003:%L处的 IOMSG 标记"
 
@@ -45586,13 +44223,11 @@ msgstr "Fortran 95 在%2$L处的 %1$s 标记中需要默认的 INTEGER"
 
 #: fortran/io.c:1516
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "UNIT not specified at %L"
 msgid "NEWUNIT specifier at %L"
 msgstr "%L没有指定 UNIT"
 
 #: fortran/io.c:1534
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: CONVERT tag at %L"
 msgid "CONVERT tag at %L"
 msgstr "扩展:%L处的 CONVERT 标记"
 
@@ -45603,7 +44238,6 @@ msgstr "Fortran 2003:%3$C 处 %2$s 语句中的 %1$s 限定符值为‘%4$s’
 
 #: fortran/io.c:1727 fortran/io.c:1754
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%s specifier in %s statement at %C has invalid value '%s'"
 msgid "%s specifier in %s statement at %C has value '%s'"
 msgstr "为%3$C处 %2$s 语句中 %1$s 指定了非法的值‘%4$s’"
 
@@ -45639,37 +44273,31 @@ msgstr "%L处的 INQUIRE 语句需要 FILE 或 UNIT 限定符"
 
 #: fortran/io.c:1889
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: ASYNCHRONOUS= at %C not allowed in Fortran 95"
 msgid "ASYNCHRONOUS= at %C not allowed in Fortran 95"
 msgstr "Fortran 2003:%C处的 ASYNCHRONOUS= 不允许用在 Fortran 95 中"
 
 #: fortran/io.c:1907 fortran/io.c:3350
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: BLANK= at %C not allowed in Fortran 95"
 msgid "BLANK= at %C not allowed in Fortran 95"
 msgstr "Fortran 2003:%C处的 BLANK= 不允许用在 Fortran 95 中"
 
 #: fortran/io.c:1925 fortran/io.c:3329
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: DECIMAL= at %C not allowed in Fortran 95"
 msgid "DECIMAL= at %C not allowed in Fortran 95"
 msgstr "Fortran 2003:%C处的 DECIMAL= 不允许用在 Fortran 95 中"
 
 #: fortran/io.c:1957
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: ENCODING= at %C not allowed in Fortran 95"
 msgid "ENCODING= at %C not allowed in Fortran 95"
 msgstr "Fortran 2003:%C处的 ENCODING= 不允许用在 Fortran 95 中"
 
 #: fortran/io.c:2008 fortran/io.c:3392
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: ROUND= at %C not allowed in Fortran 95"
 msgid "ROUND= at %C not allowed in Fortran 95"
 msgstr "Fortran 2003:%C处的 ROUND= 不允许用在 Fortran 95 中"
 
 #: fortran/io.c:2028
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: SIGN= at %C not allowed in Fortran 95"
 msgid "SIGN= at %C not allowed in Fortran 95"
 msgstr "Fortran 2003:%C处的 SIGN= 不允许用在 Fortran 95 中"
 
@@ -45680,7 +44308,6 @@ msgstr "CLOSE 语句不允许出现在%C处的 PURE 过程中"
 
 #: fortran/io.c:2301
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
 msgid "CLOSE statement at %L requires a UNIT number"
 msgstr "ASSIGNED GOTO 语句在%L处需要一个 INTEGER 变量"
 
@@ -45701,7 +44328,6 @@ msgstr "%L处的语句中 UNIT 数必须为非负的数"
 
 #: fortran/io.c:2474
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: FLUSH statement at %C"
 msgid "FLUSH statement at %C"
 msgstr "Fortran 2003:%C处的 FLUSH 语句"
 
@@ -45767,7 +44393,6 @@ msgstr ""
 
 #: fortran/io.c:2904
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Comma before i/o item list at %L"
 msgid "Comma before i/o item list at %L"
 msgstr "扩展:%L处 i/o 项目列表前的逗号"
 
@@ -45814,7 +44439,6 @@ msgstr "%s 语句在%C处语法错误"
 
 #: fortran/io.c:3246
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Internal file at %L with namelist"
 msgid "Internal file at %L with namelist"
 msgstr "Fortran 2003:%L处内部文件有名字列表"
 
@@ -45825,13 +44449,11 @@ msgstr "必须为%L处的 ASYNCHRONOUS= 指定一个初始化表达式"
 
 #: fortran/io.c:3371
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: PAD= at %C not allowed in Fortran 95"
 msgid "PAD= at %C not allowed in Fortran 95"
 msgstr "Fortran 2003:%C处的 PAD= 不允许用在 Fortran 95 中"
 
 #: fortran/io.c:3437
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: DELIM= at %C not allowed in Fortran 95"
 msgid "DELIM= at %C not allowed in Fortran 95"
 msgstr "Fortran 2003:%C处的 DELIM= 不允许用在 Fortran 95 中"
 
@@ -45877,7 +44499,6 @@ msgstr "%L处的 INQUIRE 语句需要带有 ID= 指定的 PENDING="
 
 #: fortran/io.c:4188
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: WAIT at %C not allowed in Fortran 95"
 msgid "WAIT at %C not allowed in Fortran 95"
 msgstr "Fortran 2003:%C处的 WAIT 不允许用在 Fortran 95 中"
 
@@ -45933,7 +44554,6 @@ msgstr "%C 的名字太长"
 
 #: fortran/match.c:560
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Invalid character '$' at %C. Use -fdollar-ok to allow it as an extension"
 msgid "Invalid character '$' at %L. Use -fdollar-ok to allow it as an extension"
 msgstr "%C处无效的字符‘$’。使用 -fdollar-ok 以允许它作为一个扩展"
 
@@ -45974,7 +44594,6 @@ msgstr "%C处 PROGRAM 语句格式无效"
 
 #: fortran/match.c:1395 fortran/match.c:1475
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Obsolescent feature: Arithmetic IF statement at %C"
 msgid "Arithmetic IF statement at %C"
 msgstr "已过时的特性:%C处的算术 IF 语句"
 
@@ -46186,7 +44805,6 @@ msgstr "%C处 Cray 指针必须是一个整数"
 
 #: fortran/match.c:2766
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Unexpected CASE statement at %C"
 msgid "PAUSE statement at %C"
 msgstr "%C处非预期的 CASE 语句"
 
@@ -46224,19 +44842,16 @@ msgstr "%L有多余的 ERRMSG 标记"
 
 #: fortran/match.c:2907
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Redundant SOURCE tag found at %L "
 msgid "Redundant ACQUIRED_LOCK tag found at %L "
 msgstr "%L有多余的 SOURCE 标记"
 
 #: fortran/match.c:2972
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Empty IMPLICIT statement at %C"
 msgid "LOCK statement at %C"
 msgstr "%C处 IMPLICIT 语句为空"
 
 #: fortran/match.c:2982
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Empty IMPLICIT statement at %C"
 msgid "UNLOCK statement at %C"
 msgstr "%C处 IMPLICIT 语句为空"
 
@@ -46262,13 +44877,11 @@ msgstr "PRINT 语句不允许出现在%C处的 PURE 过程中"
 
 #: fortran/match.c:3211
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Deleted feature: ASSIGN statement at %C"
 msgid "ASSIGN statement at %C"
 msgstr "已删除的特性:%C处的 ASSIGN 语句"
 
 #: fortran/match.c:3255
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Deleted feature: Assigned GOTO statement at %C"
 msgid "Assigned GOTO statement at %C"
 msgstr "已删除的特性:%C处赋值 GOTO 语句"
 
@@ -46279,7 +44892,6 @@ msgstr "%C处 GOTO 中的语句标号列表不能为空"
 
 #: fortran/match.c:3360
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Obsolescent feature: Computed GOTO at %C"
 msgid "Computed GOTO at %C"
 msgstr "已过时的特性:%C处的计算转移 GOTO 语句"
 
@@ -46290,7 +44902,6 @@ msgstr "%C处指定 TYPE IS 语法错误"
 
 #: fortran/match.c:3442
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: typespec in ALLOCATE at %L"
 msgid "typespec in ALLOCATE at %L"
 msgstr "Fortran 2003:%L处 ALLOCATE 中有 typespec"
 
@@ -46331,13 +44942,11 @@ msgstr "%C处可分配标量的外形规格说明"
 
 #: fortran/match.c:3607
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: ERRMSG tag at %L"
 msgid "ERRMSG tag at %L"
 msgstr "Fortran 2003:%L处的 ERRMSG 标记"
 
 #: fortran/match.c:3630
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: SOURCE tag at %L"
 msgid "SOURCE tag at %L"
 msgstr "Fortran 2003:%L处的 SOURCE 标记"
 
@@ -46353,7 +44962,6 @@ msgstr "%L处的 SOURCE 标记与%L处的类型指定冲突"
 
 #: fortran/match.c:3649
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "SOURCE tag at %L requires only a single entity in the allocation-list"
 msgid "SOURCE tag at %L with more than a single allocate object"
 msgstr "%L处的 SOURCE 标记在分配列表中只需要一个单独的实体"
 
@@ -46409,13 +45017,11 @@ msgstr ""
 
 #: fortran/match.c:3906
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Allocate-object at %C is not a nonprocedure pointer or an allocatable variable"
 msgid "Allocate-object at %C is not a nonprocedure pointer nor an allocatable variable"
 msgstr "%C处的分配对象不是一个非过程指针或可分配的变量"
 
 #: fortran/match.c:3943
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: ERRMSG at %L"
 msgid "ERRMSG at %L"
 msgstr "Fortran 2003:%L处的 ERRMSG"
 
@@ -46436,7 +45042,6 @@ msgstr "%C处的替代 RETURN 语句只允许出现在 SUBROUTINE 中"
 
 #: fortran/match.c:4046
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: RETURN statement in main program at %C"
 msgid "RETURN statement in main program at %C"
 msgstr "扩展:%C处 RETURN 语句出现在主程序中"
 
@@ -46545,7 +45150,6 @@ msgstr "%L处的语句函数是递归的"
 
 #: fortran/match.c:4941
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Statement function at %L is recursive"
 msgid "Statement function at %C"
 msgstr "%L处的语句函数是递归的"
 
@@ -46561,7 +45165,6 @@ msgstr "%2$C处需要 SELECT 构造的块名‘%1$s’"
 
 #: fortran/match.c:5339
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Syntax error in PROTECTED statement at %C"
 msgid "parse error in SELECT TYPE statement at %C"
 msgstr "%C处 PROTECTED 语句语法错误"
 
@@ -46638,7 +45241,6 @@ msgstr "扩展:%C处单目运算符出现在算术运算符之后"
 
 #: fortran/module.c:527
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: module nature in USE statement at %C"
 msgid "module nature in USE statement at %C"
 msgstr "Fortran 2003:%C处的 USE 语句中模块本性"
 
@@ -46654,7 +45256,6 @@ msgstr "%C处在模块本性后需要“::”"
 
 #: fortran/module.c:562
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: \"USE :: module\" at %C"
 msgid "\"USE :: module\" at %C"
 msgstr "Fortran 2003:%C处的“USE :: module”"
 
@@ -46665,7 +45266,6 @@ msgstr "%C处的 USE 语句缺少泛型规格"
 
 #: fortran/module.c:629
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Renaming operators in USE statements at %C"
 msgid "Renaming operators in USE statements at %C"
 msgstr "Fortran 2003:%C处的 USE 语句中更名运算符"
 
@@ -46701,7 +45301,6 @@ msgstr "名字列表 %s 不能为对 %s 的 USE 关联来更名"
 
 #: fortran/module.c:4494
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Name '%s' at %C is an ambiguous reference to '%s' from current program unit"
 msgid "'%s' of module '%s', imported at %C, is also the name of the current program unit"
 msgstr "%2$C处的名字‘%1$s’是从当前程序单元对‘%3$s’有歧义的引用"
 
@@ -46778,13 +45377,11 @@ msgstr "%2$L处引用的符号‘%1$s’在内建模块 ISO_FORTRAN_ENV 中找
 
 #: fortran/module.c:6307
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
 msgid "ISO_FORTRAN_ENV intrinsic module at %C"
 msgstr "Fortran 2003:%C 处的 ISO_FORTRAN_ENV 内建模块"
 
 #: fortran/module.c:6319
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: ISO_C_BINDING module at %C"
 msgid "ISO_C_BINDING module at %C"
 msgstr "Fortran 2003:%C处的 ISO_C_BINDING 模块"
 
@@ -46805,7 +45402,6 @@ msgstr "%2$C处对非内建模块‘%1$s’的使用与之前对内建模块名
 
 #: fortran/module.c:6368
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "File '%s' opened at %C is not a GFORTRAN module file"
 msgid "File '%s' opened at %C is not a GNU Fortran module file"
 msgstr "%2$C处打开的文件的‘%1$s’并非一个 GFORTRAN 模块文件"
 
@@ -46906,7 +45502,6 @@ msgstr "%L处的 IF 分句需要一个标量 LOGICAL 表达式"
 
 #: fortran/openmp.c:824
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "IF clause at %L requires a scalar LOGICAL expression"
 msgid "FINAL clause at %L requires a scalar LOGICAL expression"
 msgstr "%L处的 IF 分句需要一个标量 LOGICAL 表达式"
 
@@ -47023,25 +45618,21 @@ msgstr "%L处 !$OMP ATOMIC 语句必须设定一个内建类型的标量值"
 
 #: fortran/openmp.c:1189
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L"
 msgid "!$OMP ATOMIC READ statement must read from a scalar variable of intrinsic type at %L"
 msgstr "%L处 !$OMP ATOMIC 语句必须设定一个内建类型的标量值"
 
 #: fortran/openmp.c:1194
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "expr in !$OMP ATOMIC assignment var = var op expr must be scalar and cannot reference var at %L"
 msgid "expr in !$OMP ATOMIC WRITE assignment var = expr must be scalar and cannot reference var at %L"
 msgstr "%L处 !$OMP ATOMIC 赋值“变量 = 变量 运算符 表达式”中的“表达式”必须是标量并且不能引用“变量”"
 
 #: fortran/openmp.c:1216 fortran/openmp.c:1486
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L"
 msgid "!$OMP ATOMIC CAPTURE capture statement must read from a scalar variable of intrinsic type at %L"
 msgstr "%L处 !$OMP ATOMIC 语句必须设定一个内建类型的标量值"
 
 #: fortran/openmp.c:1231
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L"
 msgid "!$OMP ATOMIC CAPTURE update statement must set a scalar variable of intrinsic type at %L"
 msgstr "%L处 !$OMP ATOMIC 语句必须设定一个内建类型的标量值"
 
@@ -47052,7 +45643,6 @@ msgstr ""
 
 #: fortran/openmp.c:1282
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "!$OMP ATOMIC assignment operator must be +, *, -, /, .AND., .OR., .EQV. or .NEQV. at %L"
 msgid "!$OMP ATOMIC assignment operator must be binary +, *, -, /, .AND., .OR., .EQV. or .NEQV. at %L"
 msgstr "%L处 !$OMP ATOMIC 赋值运算符必须是 +、*、-、/、.AND.、.OR.、.EQV. 或 .NEQV."
 
@@ -47103,7 +45693,6 @@ msgstr "%L处 !$OMP ATOMIC 赋值的右手边必须有一个运算符或内建
 
 #: fortran/openmp.c:1464
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "!$OMP ATOMIC statement must set a scalar variable of intrinsic type at %L"
 msgid "!$OMP ATOMIC CAPTURE capture statement must set a scalar variable of intrinsic type at %L"
 msgstr "%L处 !$OMP ATOMIC 语句必须设定一个内建类型的标量值"
 
@@ -47199,7 +45788,6 @@ msgstr "-ffpe-trap 的参数无效:%s"
 
 #: fortran/options.c:564
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Argument to -ffpe-trap is not valid: %s"
 msgid "Argument to -ffpe-summary is not valid: %s"
 msgstr "-ffpe-trap 的参数无效:%s"
 
@@ -47340,25 +45928,21 @@ msgstr "%C处 TYPE 中的组件必须先于 CONTAINS"
 
 #: fortran/parse.c:1987
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003:  Type-bound procedure at %C"
 msgid "Type-bound procedure at %C"
 msgstr "Fortran 2003:%C处的类型限定过程"
 
 #: fortran/parse.c:1995
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Junk after GENERIC binding at %C"
 msgid "GENERIC binding at %C"
 msgstr "%C 处的泛型绑定后有垃圾字符"
 
 #: fortran/parse.c:2003
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003:  FINAL procedure declaration at %C"
 msgid "FINAL procedure declaration at %C"
 msgstr "Fortran 2003:%C处的的 FINAL 过程声明"
 
 #: fortran/parse.c:2015
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2008: Derived type definition at %C with empty CONTAINS section"
 msgid "Derived type definition at %C with empty CONTAINS section"
 msgstr "Fortran 2008:%C的派生类型定义有空的 CONTAINS 节"
 
@@ -47394,7 +45978,6 @@ msgstr "%C处的 FINAL 声明必须在 CONTAINS 内"
 
 #: fortran/parse.c:2119
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Derived type definition at %C without components"
 msgid "Derived type definition at %C without components"
 msgstr "Fortran 2003:%C处的派生类型定义没有组件"
 
@@ -47420,7 +46003,6 @@ msgstr "%C处重复的 SEQUENCE 语句"
 
 #: fortran/parse.c:2173
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003:  CONTAINS block in derived type definition at %C"
 msgid "CONTAINS block in derived type definition at %C"
 msgstr "Fortran 2003:%C处的派生类型定义中的 CONTAINS 块"
 
@@ -47436,7 +46018,6 @@ msgstr ""
 
 #: fortran/parse.c:2272
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Allocatable component of structure at %C must have a deferred shape"
 msgid "Allocatable component %s at %L of type LOCK_TYPE must have a codimension"
 msgstr "%C处可分配的组件必须有延迟的外形"
 
@@ -47487,7 +46068,6 @@ msgstr "%s 语句不能用在%C处 BLOCK 内"
 
 #: fortran/parse.c:2653
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%s statement is not allowed inside of BLOCK at %C"
 msgid "%s statement is not allowed inside of BLOCK DATA at %C"
 msgstr "%s 语句不能用在%C处 BLOCK 内"
 
@@ -47568,7 +46148,6 @@ msgstr "%C处 ENDDO 中的语句标号与 DO 标号不匹配"
 
 #: fortran/parse.c:3372
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2008: BLOCK construct at %C"
 msgid "BLOCK construct at %C"
 msgstr "Fortran 2008:%C处的 BLOCK 结构"
 
@@ -47604,7 +46183,6 @@ msgstr "%2$C处的 %1$s 语句不能终止一个不成块的 DO 循环"
 
 #: fortran/parse.c:3863
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "FORMAT statement at %L does not have a statement label"
 msgid "DATA statement at %C after the first executable statement"
 msgstr "%L处 FORMAT 语句没有语句标号"
 
@@ -47620,7 +46198,6 @@ msgstr "非预期的 %s 语句出现在%C处的 CONTAINS 段中"
 
 #: fortran/parse.c:4135
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2008: CONTAINS statement without FUNCTION or SUBROUTINE statement at %C"
 msgid "CONTAINS statement without FUNCTION or SUBROUTINE statement at %C"
 msgstr "Fortran 2008:%C处 CONTAINS 语句没有 FUNCTION 或 SUBROUTINE 语句"
 
@@ -47631,7 +46208,6 @@ msgstr "%C处的 CONTAINS 语句已经在包含的程序单元中"
 
 #: fortran/parse.c:4263
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Global name '%s' at %L is already being used as a %s at %L"
 msgid "Global binding name '%s' at %L is already being used as a %s at %L"
 msgstr "%2$L处的名字‘%1$s’已经在%4$L处被用作 %3$s"
 
@@ -47680,7 +46256,6 @@ msgstr "%C整数相对其种别而言太大。这一检查可用 -fno-range-chec
 
 #: fortran/primary.c:270
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Hollerith constant at %C"
 msgid "Hollerith constant at %C"
 msgstr "扩展:%C处的荷勒瑞斯常量"
 
@@ -47701,7 +46276,6 @@ msgstr "%L处无效的荷勒瑞斯常量包含一个宽字符"
 
 #: fortran/primary.c:393
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Hexadecimal constant at %C uses non-standard syntax"
 msgid "Hexadecimal constant at %C uses non-standard syntax"
 msgstr "扩展:%C处的十六进制常量使用了非标准语法"
 
@@ -47717,7 +46291,6 @@ msgstr "%C处的 BOZ 常量中有非法字符"
 
 #: fortran/primary.c:431
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: BOZ constant at %C uses non-standard postfix syntax"
 msgid "BOZ constant at %C uses non-standard postfix syntax"
 msgstr "扩展:%C处的 BOZ 常量使用了非标准的后序语法。"
 
@@ -47728,7 +46301,6 @@ msgstr "%2$C处的整数对其种别 %1$i 来说太大"
 
 #: fortran/primary.c:467
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: BOZ used outside a DATA statement at %C"
 msgid "BOZ used outside a DATA statement at %C"
 msgstr "Fortran 2003:%C处的 BOZ 用在了 DATA 语句之外"
 
@@ -47739,7 +46311,6 @@ msgstr ""
 
 #: fortran/primary.c:561
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Hollerith constant at %C"
 msgid "Extension: exponent-letter 'q' in real-literal-constant at %C"
 msgstr "扩展:%C处的荷勒瑞斯常量"
 
@@ -47755,13 +46326,11 @@ msgstr "%C处的实数有一个‘d’指数和一个显式的种别"
 
 #: fortran/primary.c:663
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Real number at %C has a 'd' exponent and an explicit kind"
 msgid "Real number at %C has a 'q' exponent and an explicit kind"
 msgstr "%C处的实数有一个‘d’指数和一个显式的种别"
 
 #: fortran/primary.c:677
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Invalid initializer %s in Data statement at %C"
 msgid "Invalid exponent-letter 'q' in real-literal-constant at %C"
 msgstr "%2$C处 DATA 语句初始值设定 %1$s 无效"
 
@@ -47822,7 +46391,6 @@ msgstr "%C处标量 PARAMETER 要求复数常量"
 
 #: fortran/primary.c:1216
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Expected PARAMETER symbol in complex constant at %C"
 msgid "PARAMETER symbol in complex constant at %C"
 msgstr "%C处复数常量中需要 PARAMETER 符号"
 
@@ -47843,7 +46411,6 @@ msgstr "关键字‘%s’在%C处已经出现在当前实参列表中"
 
 #: fortran/primary.c:1645
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Unknown argument list function at %L"
 msgid "argument list function at %C"
 msgstr "%L处参数列表函数未知"
 
@@ -47874,13 +46441,11 @@ msgstr "在 %2$L 处的函数“%1$s”是 INTRINSIC,但不是与一个内建
 
 #: fortran/primary.c:1915
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Symbol '%s' at %L has no IMPLICIT type"
 msgid "Symbol '%s' at %C has no IMPLICIT type"
 msgstr "%2$L处的符号‘%1$s’没有隐式类型"
 
 #: fortran/primary.c:1921
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Unexpected character in variable list at %C"
 msgid "Unexpected '%%' for nonderived-type variable '%s' at %C"
 msgstr "%C处变量列表中有非预期的垃圾字符"
 
@@ -47906,7 +46471,6 @@ msgstr "Fortran 2003:%C处的过程指针组件"
 
 #: fortran/primary.c:2363
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Structure constructor with missing optional arguments at %C"
 msgid "Structure constructor with missing optional arguments at %C"
 msgstr "Fortran 2003:%C处的结构构造函数丢失可选的参数"
 
@@ -47917,31 +46481,26 @@ msgstr "%2$C处结构构造函数中没有组件‘%1$s’的初始值设定!"
 
 #: fortran/primary.c:2418
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Can't construct ABSTRACT type '%s' at %C"
 msgid "Can't construct ABSTRACT type '%s' at %L"
 msgstr "%2$C处无法构建 ABSTRACT 类型‘%1$s’"
 
 #: fortran/primary.c:2438
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Structure constructor with named arguments at %C"
 msgid "Structure constructor with named arguments at %C"
 msgstr "Fortran 2003:%C处的结构构造函数有有名的参数"
 
 #: fortran/primary.c:2453
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Component initializer without name after component named %s at %C!"
 msgid "Component initializer without name after component named %s at %L!"
 msgstr "%2$C处名为 %1$s 的组件之后的组件初始值设定没有名字!"
 
 #: fortran/primary.c:2458
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Too many components in structure constructor at %C!"
 msgid "Too many components in structure constructor at %L!"
 msgstr "%C处结构构造函数中组件太多!"
 
 #: fortran/primary.c:2495
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Component '%s' is initialized twice in the structure constructor at %C!"
 msgid "Component '%s' is initialized twice in the structure constructor at %L!"
 msgstr "%2$C处结构构造函数中组件‘%1$s’被初始化两次!"
 
@@ -48012,31 +46571,26 @@ msgstr "%2$L处使用了 ABSTRACT 类型‘%1$s’"
 
 #: fortran/resolve.c:145
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Interface '%s', used by procedure '%s' at %L, is declared in a later PROCEDURE statement"
 msgid "Interface '%s' at %L is declared in a later PROCEDURE statement"
 msgstr "为过程‘%2$s’在%3$L处使用的接口‘%1$s’是在之后的 PROCEDURE 语句中声明的"
 
 #: fortran/resolve.c:158
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Interface '%s' at %C may not be generic"
 msgid "Interface '%s' at %L may not be generic"
 msgstr "%2$C处的接口‘%1$s’不能是泛型"
 
 #: fortran/resolve.c:165
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Interface '%s' at %C may not be a statement function"
 msgid "Interface '%s' at %L may not be a statement function"
 msgstr "%2$C处的接口‘%1$s’不能是个语句函数"
 
 #: fortran/resolve.c:174
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Intrinsic procedure '%s' not allowed in PROCEDURE statement at %C"
 msgid "Intrinsic procedure '%s' not allowed in PROCEDURE statement at %L"
 msgstr "内建过程‘%s’不允许在 %C 的 PROCEDURE 语句中"
 
 #: fortran/resolve.c:180
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Interface '%s' of procedure '%s' at %L must be explicit"
 msgid "Interface '%s' at %L must be explicit"
 msgstr "%3$L处过程‘%2$s’的接口‘%1$s’必须是显式的"
 
@@ -48057,7 +46611,6 @@ msgstr "函数‘%s’中的替代返回限定符在%L处不被允许"
 
 #: fortran/resolve.c:311
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Keyword argument '%s' at %L is not in the procedure"
 msgid "Self-referential argument '%s' at %L is not allowed"
 msgstr "%2$L处关键字实参‘%1$s’不在过程里"
 
@@ -48148,7 +46701,6 @@ msgstr "%2$L处函数‘%1$s’有不匹配的数组规格说明"
 
 #: fortran/resolve.c:788
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: Function %s at %L with entries returning variables of different string lengths"
 msgid "Function %s at %L with entries returning variables of different string lengths"
 msgstr "扩展:%2$L处函数 %1$s 有返回不同字符串长度的变量的表项"
 
@@ -48219,7 +46771,6 @@ msgstr ""
 
 #: fortran/resolve.c:1001
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "COMMON block '%s' at %L is used as PARAMETER at %L"
 msgid "COMMON block '%s' at %L uses the same global identifier as entity at %L"
 msgstr "%2$L处的 COMMON 块‘%1$s’在%3$L处被用作 PARAMETER"
 
@@ -48240,7 +46791,6 @@ msgstr "%2$L处的 COMMON 块‘%1$s’在%3$L处被用作 PARAMETER"
 
 #: fortran/resolve.c:1056
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %L cannot have both the POINTER and BIND(C) attributes"
 msgid "COMMON block '%s' at %L can not have the EXTERNAL attribute"
 msgstr "%2$L处变量‘%1$s’不能既有 POINTER 又有 BIND(C) 属性"
 
@@ -48251,31 +46801,26 @@ msgstr "%2$L处的 COMMON 块‘%1$s’也是一个内建过程"
 
 #: fortran/resolve.c:1064
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: COMMON block '%s' at %L that is also a function result"
 msgid "COMMON block '%s' at %L that is also a function result"
 msgstr "Fortran 2003:%2$L处的 COMMON 块‘%1$s’也是一个函数返回值"
 
 #: fortran/resolve.c:1069
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: COMMON block '%s' at %L that is also a global procedure"
 msgid "COMMON block '%s' at %L that is also a global procedure"
 msgstr "Fortran 2003:%2$L处的 COMMON 块‘%1$s’也是一个全局过程"
 
 #: fortran/resolve.c:1152
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "The rank of the element in the derived type constructor at %L does not match that of the component (%d/%d)"
 msgid "The rank of the element in the structure constructor at %L does not match that of the component (%d/%d)"
 msgstr "%L处的派生类型构造函数中元素的秩与该组件(%d/%d)的不匹配"
 
 #: fortran/resolve.c:1173
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "The element in the derived type constructor at %L, for pointer component '%s', is %s but should be %s"
 msgid "The element in the structure constructor at %L, for pointer component '%s', is %s but should be %s"
 msgstr "%L处指针组件‘%s’的派生类型构造函数中的元素是 %s 但应该是 %s"
 
 #: fortran/resolve.c:1258
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "The NULL in the derived type constructor at %L is being applied to component '%s', which is neither a POINTER nor ALLOCATABLE"
 msgid "The NULL in the structure constructor at %L is being applied to component '%s', which is neither a POINTER nor ALLOCATABLE"
 msgstr "%L处派生类型构造函数中的 NULL 被用在既不是一个指针也不是 ALLOCATABLE 的组件‘%s’上"
 
@@ -48286,7 +46831,6 @@ msgstr "%C处结构构造函数中组件太多!"
 
 #: fortran/resolve.c:1308
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "The element in the derived type constructor at %L, for pointer component '%s' should be a POINTER or a TARGET"
 msgid "The element in the structure constructor at %L, for pointer component '%s' should be a POINTER or a TARGET"
 msgstr "%L处指针组件‘%s’的派生类型构造函数中的元素应该是 POINTER 或 TARGET"
 
@@ -48297,7 +46841,6 @@ msgstr "%2$L处‘%1$s’的传递对象虚参不能是 ALLOCATABLE"
 
 #: fortran/resolve.c:1336
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Invalid expression in the derived type constructor for pointer component '%s' at %L in PURE procedure"
 msgid "Invalid expression in the structure constructor for pointer component '%s' at %L in PURE procedure"
 msgstr "%2$L处指针组件‘%1$s’的派生类型构造函数中表达式无效"
 
@@ -48418,7 +46961,6 @@ msgstr "函数不能返回函数"
 
 #: fortran/resolve.c:2442
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Interface mismatch in dummy procedure '%s' at %L: %s"
 msgid "Interface mismatch in global procedure '%s' at %L: %s "
 msgstr "哑过程‘%s’接口在%L处不匹配:%s"
 
@@ -48470,13 +47012,11 @@ msgstr "%2$L处用户定义的非 ELEMENTAL 函数‘%1$s’不容许出现在 W
 
 #: fortran/resolve.c:2990
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "reference to non-PURE function '%s' at %L inside a FORALL %s"
 msgid "Reference to non-PURE function '%s' at %L inside a FORALL %s"
 msgstr "%2$L处对非 PURE 函数‘%1$s’的引用出现在 FORALL %3$s 中"
 
 #: fortran/resolve.c:2997
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "reference to non-PURE function '%s' at %L inside a FORALL %s"
 msgid "Reference to non-PURE function '%s' at %L inside a DO CONCURRENT %s"
 msgstr "%2$L处对非 PURE 函数‘%1$s’的引用出现在 FORALL %3$s 中"
 
@@ -48502,7 +47042,6 @@ msgstr "%2$L处 FORALL 块内对‘%1$s’子例程的调用不是 PURE"
 
 #: fortran/resolve.c:3069
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Subroutine call to '%s' in FORALL block at %L is not PURE"
 msgid "Subroutine call to '%s' in DO CONCURRENT block at %L is not PURE"
 msgstr "%2$L处 FORALL 块内对‘%1$s’子例程的调用不是 PURE"
 
@@ -48628,7 +47167,6 @@ msgstr "%L处数组索引必须具有 INTEGER 类型而不是 %s"
 
 #: fortran/resolve.c:4129
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Extension: REAL array index at %L"
 msgid "REAL array index at %L"
 msgstr "扩展:%L处的 REAL 数组索引"
 
@@ -48704,7 +47242,6 @@ msgstr ""
 
 #: fortran/resolve.c:4766
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Assumed shape array at %L must be a dummy argument"
 msgid "Assumed-type variable %s at %L may only be used as actual argument"
 msgstr "%L处假定外形的数组必须是一个虚参"
 
@@ -48719,7 +47256,6 @@ msgstr ""
 
 #: fortran/resolve.c:4791
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Assumed shape array at %L must be a dummy argument"
 msgid "Assumed-rank variable %s at %L may only be used as actual argument"
 msgstr "%L处假定外形的数组必须是一个虚参"
 
@@ -48825,7 +47361,6 @@ msgstr "%L处的 DO 循环中的步进表达式不能为零"
 
 #: fortran/resolve.c:6292
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "DO loop at %L will be executed zero times"
 msgid "DO loop at %L will be executed zero times (use -Wno-zerotrip to suppress)"
 msgstr "%L处的 DO 循环会被执行零次"
 
@@ -49070,7 +47605,6 @@ msgstr "%2$L处派生类型‘%1$s’必须是‘%3$s’的一个扩展"
 
 #: fortran/resolve.c:7966
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Unexpected use of subroutine name '%s' at %C"
 msgid "Unexpected intrinsic type '%s' at %L"
 msgstr "对子进程名‘%s’非预期的使用,在%C处"
 
@@ -49086,7 +47620,6 @@ msgstr "%L处 SELECT TYPE 语句中有双重的 CLASS IS 块"
 
 #: fortran/resolve.c:8256
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Invalid context for NULL() pointer at %%L"
 msgid "Invalid context for NULL () intrinsic at %L"
 msgstr "%%L处 NULL() 指针上下文无效"
 
@@ -49098,7 +47631,6 @@ msgstr ""
 
 #: fortran/resolve.c:8296
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Data transfer element at %L cannot have POINTER components"
 msgid "Data transfer element at %L cannot have POINTER components unless it is processed by a defined input/output procedure"
 msgstr "%L处数据传输元素不能有 POINTER 组件"
 
@@ -49109,7 +47641,6 @@ msgstr "%L处数据传输元素不能有 POINTER 组件"
 
 #: fortran/resolve.c:8312
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Data transfer element at %L cannot have ALLOCATABLE components"
 msgid "Data transfer element at %L cannot have ALLOCATABLE components unless it is processed by a defined input/output procedure"
 msgstr "%L处数据传输元素不能有 ALLOCATABLE 组件"
 
@@ -49125,7 +47656,6 @@ msgstr "%L处数据传输元素不能是对一个假定大小数组的全引用"
 
 #: fortran/resolve.c:8388
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Stat-variable at %L must be a scalar INTEGER variable"
 msgid "Lock variable at %L must be a scalar of type LOCK_TYPE"
 msgstr "%L处 stat 变量必须是一个标量 INTEGER 变量"
 
@@ -49251,7 +47781,6 @@ msgstr ""
 
 #: fortran/resolve.c:9196
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Assignment to a FORALL index variable at %L"
 msgid "Assignment to an allocatable polymorphic variable at %L"
 msgstr "%L处向 FORALL 索引变量赋值"
 
@@ -49318,7 +47847,6 @@ msgstr "%L处的 FORMALL 掩码子句需要一个 LOGICAL 表达式"
 
 #: fortran/resolve.c:10180
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
 msgid "Variable %s with binding label %s at %L uses the same global identifier as entity at %L"
 msgstr "%2$L处的绑定标号‘%1$s’与 %4$L 处的全局实体‘%3$s’冲突"
 
@@ -49334,7 +47862,6 @@ msgstr ""
 #. multiple checks for the same procedure.
 #: fortran/resolve.c:10210
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
 msgid "Procedure %s with binding label %s at %L uses the same global identifier as entity at %L"
 msgstr "%2$L处的绑定标号‘%1$s’与 %4$L 处的全局实体‘%3$s’冲突"
 
@@ -49350,7 +47877,6 @@ msgstr "%L处字符串太长"
 
 #: fortran/resolve.c:10628
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Allocatable array '%s' at %L must have a deferred shape"
 msgid "Allocatable array '%s' at %L must have a deferred shape or assumed rank"
 msgstr "可分配的数组‘%s’在%L处必须有延迟的外形"
 
@@ -49361,7 +47887,6 @@ msgstr "%2$L处标量对象‘%1$s’不能为 ALLOCATABLE"
 
 #: fortran/resolve.c:10640
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Array pointer '%s' at %L must have a deferred shape"
 msgid "Array pointer '%s' at %L must have a deferred shape or assumed rank"
 msgstr "数组指针‘%s’在%L处必须有延迟的外形"
 
@@ -49387,7 +47912,6 @@ msgstr "‘%s’在%L处不能是主机相关的,因为它被在%L处声明的
 
 #: fortran/resolve.c:10730
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2008: Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
 msgid "Implied SAVE for module variable '%s' at %L, needed due to the default initialization"
 msgstr "Fortran 2008:%2$L处模块变量‘%1$s’隐含使用了 SAVE,因为默认初始化有此需求"
 
@@ -49415,7 +47939,6 @@ msgstr "变量‘%s’在%L处上下文中字符长度必须为常量"
 
 #: fortran/resolve.c:10830
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "'%s' at %L must have constant character length in this context"
 msgid "COMMON variable '%s' at %L must have constant character length"
 msgstr "变量‘%s’在%L处上下文中字符长度必须为常量"
 
@@ -49456,13 +47979,11 @@ msgstr "%2$L处有字符值的语句函数‘%1$s’必须有常量长度"
 
 #: fortran/resolve.c:10958
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
 msgid "'%s' is of a PRIVATE type and cannot be a dummy argument of '%s', which is PUBLIC at %L"
 msgstr "Fortran 2003:%3$L处‘%1$s’是 PRIVATE 类型因而不能是 PUBLIC 类型‘%2$s’的虚参"
 
 #: fortran/resolve.c:10980 fortran/resolve.c:11004
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
 msgid "Procedure '%s' in PUBLIC interface '%s' at %L takes dummy arguments of '%s' which is PRIVATE"
 msgstr "Fortran 2003: %3$L处 PUBLIC 接口‘%2$s’中的过程‘%1$s’有 PRIVATE 的虚参‘%4$s’"
 
@@ -49508,19 +48029,16 @@ msgstr "CHARACTER(*) 函数‘%s’在%L处不能是递归的"
 
 #: fortran/resolve.c:11093
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "CHARACTER(*) function '%s' at %L cannot be pure"
 msgid "CHARACTER(*) function '%s' at %L"
 msgstr "CHARACTER(*) 函数‘%s’在%L处不能为纯函数"
 
 #: fortran/resolve.c:11102
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Procedure pointer component '%s' with PASS at %L must have at least one argument"
 msgid "Procedure pointer '%s' at %L shall not be elemental"
 msgstr "%2$L处的具有 PASS 的过程指针组件‘%1$s’必须至少有一个实参"
 
 #: fortran/resolve.c:11108
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Dummy procedure '%s' at %C cannot have a generic interface"
 msgid "Dummy procedure '%s' at %L shall not be elemental"
 msgstr "哑过程‘%s’在%C处不能有泛型接口"
 
@@ -49766,7 +48284,6 @@ msgstr ""
 
 #: fortran/resolve.c:12356
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
 msgid "the component '%s' is a PRIVATE type and cannot be a component of '%s', which is PUBLIC at %L"
 msgstr "Fortran 2003:%3$L处组合‘%1$s’是一个 PRIVATE 类型,因此不能是 PUBLIC‘%2$s’的组合"
 
@@ -49792,7 +48309,6 @@ msgstr "%2$L处具有 CLASS 的组件‘%1$s’必须是可分配的或指针"
 
 #: fortran/resolve.c:12484
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Component '%s' of '%s' at %L has the same name as an inherited type-bound procedure"
 msgid "Generic name '%s' of function '%s' at %L being the same name as derived type at %L"
 msgstr "%3$L处‘%2$s’的组件‘%1$s’与一个继承的类型限定过程同名"
 
@@ -49895,7 +48411,6 @@ msgstr "%L处假定外形的数组必须是一个虚参"
 
 #: fortran/resolve.c:12900
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Assumed shape array at %L must be a dummy argument"
 msgid "Assumed-rank array at %L must be a dummy argument"
 msgstr "%L处假定外形的数组必须是一个虚参"
 
@@ -49941,13 +48456,11 @@ msgstr ""
 
 #: fortran/resolve.c:12990
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %L cannot have both the ALLOCATABLE and BIND(C) attributes"
 msgid "Variable %s at %L with NO_ARG_CHECK attribute may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attribute"
 msgstr "%2$L处变量‘%1$s’不能既有 ALLOCATABLE 又有 BIND(C) 属性"
 
 #: fortran/resolve.c:12998
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %L cannot have both the POINTER and BIND(C) attributes"
 msgid "Variable %s at %L with NO_ARG_CHECK attribute may not have the INTENT(OUT) attribute"
 msgstr "%2$L处变量‘%1$s’不能既有 POINTER 又有 BIND(C) 属性"
 
@@ -49958,19 +48471,16 @@ msgstr ""
 
 #: fortran/resolve.c:13025
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Assumed shape array '%s' at %L is not permitted in an initialization expression"
 msgid "Assumed type of variable %s at %L is only permitted for dummy variables"
 msgstr "%2$L处假定外形数组‘%1$s’不能用在初始化表达式中"
 
 #: fortran/resolve.c:13032
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %L cannot have both the ALLOCATABLE and BIND(C) attributes"
 msgid "Assumed-type variable %s at %L may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attribute"
 msgstr "%2$L处变量‘%1$s’不能既有 ALLOCATABLE 又有 BIND(C) 属性"
 
 #: fortran/resolve.c:13039
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Variable '%s' at %L cannot have both the POINTER and BIND(C) attributes"
 msgid "Assumed-type variable %s at %L may not have the INTENT(OUT) attribute"
 msgstr "%2$L处变量‘%1$s’不能既有 POINTER 又有 BIND(C) 属性"
 
@@ -49986,7 +48496,6 @@ msgstr "%2$L处变量‘%1$s’不能是 BIND(C) 因为它既不是一个 COMMON
 
 #: fortran/resolve.c:13151
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
 msgid "PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
 msgstr "Fortran 2003:%3$L处 PUBLIC %1$s‘%2$s’具有 PRIVATE 派生类型‘%4$s’"
 
@@ -50002,7 +48511,6 @@ msgstr "%2$L处INTENT(OUT) 虚参‘%1$s’是 ASSUMED SIZE,所以不能有一
 
 #: fortran/resolve.c:13196
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)"
 msgid "Dummy argument '%s' at %L of LOCK_TYPE shall not be INTENT(OUT)"
 msgstr "%2$L处的‘%1$s’虚参不能是 INTENT(OUT)"
 
@@ -50178,7 +48686,6 @@ msgstr "%L 的子字符串长度为零"
 
 #: fortran/resolve.c:14338
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
 msgid "PUBLIC function '%s' at %L of PRIVATE type '%s'"
 msgstr "Fortran 2003:%2$L处 PRIVATE 类型‘%3$s’的 PUBLIC 函数‘%1$s’"
 
@@ -50224,19 +48731,16 @@ msgstr "%2$L处 PURE 过程中包含的过程‘%1$s’必须也是 PURE"
 
 #: fortran/scanner.c:327
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "ignoring duplicate directory \"%s\"\n"
 msgid "Include directory \"%s\": %s"
 msgstr "忽略重复的目录“%s”\n"
 
 #: fortran/scanner.c:333
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "ignoring nonexistent directory \"%s\"\n"
 msgid "Nonexistent include directory \"%s\""
 msgstr "忽略不存在的目录“%s”\n"
 
 #: fortran/scanner.c:339
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%qD is not a type"
 msgid "\"%s\" is not a directory"
 msgstr "%qD不是一个类型"
 
@@ -50536,7 +49040,6 @@ msgstr "%2$L 处的对象“%1$s”对于成分的默认初始化必须有 SAVE
 
 #: fortran/symbol.c:474
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: Procedure pointer at %C"
 msgid "Procedure pointer at %C"
 msgstr "Fortran 2003:%C处的过程指针"
 
@@ -50562,13 +49065,11 @@ msgstr "%s 属性与 %s 属性冲突,在‘%s’中,位于 %L"
 
 #: fortran/symbol.c:767
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%s attribute conflicts with %s attribute at %L"
 msgid "%s attribute with %s attribute at %L"
 msgstr "%s 属性与 %s 属性在%L处冲突"
 
 #: fortran/symbol.c:773
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "%s attribute conflicts with %s attribute in '%s' at %L"
 msgid "%s attribute with %s attribute in '%s' at %L"
 msgstr "%s 属性与 %s 属性冲突,在‘%s’中,位于 %L"
 
@@ -50664,7 +49165,6 @@ msgstr "%L处指定了重复的 BIND 属性"
 
 #: fortran/symbol.c:1590
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: BIND(C) at %L"
 msgid "BIND(C) at %L"
 msgstr "Fortran 2003:%L处的 BIND(C)"
 
@@ -50675,7 +49175,6 @@ msgstr "%L处指定了重复的 EXTENDS 属性"
 
 #: fortran/symbol.c:1610
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Fortran 2003: EXTENDS at %L"
 msgid "EXTENDS at %L"
 msgstr "Fortran 2003:%L处的 EXTENDS"
 
@@ -50771,7 +49270,6 @@ msgstr "%2$C处的标号 %1$d 先前用作分支目标"
 
 #: fortran/symbol.c:2270
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Expected terminating name at %C"
 msgid "Shared DO termination label %d at %C"
 msgstr "%C处需要结束名"
 
@@ -50868,7 +49366,6 @@ msgstr "走过错误的表达式类型(%d)"
 
 #: fortran/trans-common.c:400
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Named COMMON block '%s' at %L shall be of the same size"
 msgid "Named COMMON block '%s' at %L shall be of the same size as elsewhere (%lu vs %lu bytes)"
 msgstr "%2$L处的 COMMON 块‘%1$s’应该有同样的大小"
 
@@ -50920,13 +49417,11 @@ msgstr "%2$L处的 COMMON‘%1$s’并不存在"
 
 #: fortran/trans-common.c:1167
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "COMMON '%s' at %L requires %d bytes of padding at start; reorder elements or use -fno-align-commons"
 msgid "COMMON '%s' at %L requires %d bytes of padding; reorder elements or use -fno-align-commons"
 msgstr "%2$L处的 COMMON‘%1$s’需要 %3$d 字节填充在开始处;重排序元素或使用 -fno-align-commons"
 
 #: fortran/trans-common.c:1171
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "COMMON at %L requires %d bytes of padding at start; reorder elements or use -fno-align-commons"
 msgid "COMMON at %L requires %d bytes of padding; reorder elements or use -fno-align-commons"
 msgstr "%L处的 COMMON 需要 %d 字节填充在开始处;重排序元素或使用 -fno-align-commons"
 
@@ -50967,7 +49462,6 @@ msgstr "模块变量 %s 的后端声明已存在"
 
 #: fortran/trans-decl.c:4257
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Unused variable '%s' declared at %L"
 msgid "Unused PRIVATE module variable '%s' declared at %L"
 msgstr "%2$L处声明了未使用的变量‘%1$s’"
 
@@ -50988,7 +49482,6 @@ msgstr "%2$L处声明了未使用的虚参‘%1$s’"
 
 #: fortran/trans-decl.c:4837
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Unused variable '%s' declared at %L"
 msgid "Unused module variable '%s' which has been explicitly imported at %L"
 msgstr "%2$L处声明了未使用的变量‘%1$s’"
 
@@ -51004,7 +49497,6 @@ msgstr "%2$L处声明了未使用的参数‘%1$s’"
 
 #: fortran/trans-decl.c:4896
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Unused parameter '%s' declared at %L"
 msgid "Unused parameter '%s' which has been explicitly imported at %L"
 msgstr "%2$L处声明了未使用的参数‘%1$s’"
 
@@ -51066,37 +49558,31 @@ msgstr ""
 
 #: fortran/trans-types.c:496
 #, fuzzy, gcc-internal-format
-#| msgid "integer kind=8 not available for -fdefault-integer-8 option"
 msgid "INTEGER(KIND=8) is not available for -fdefault-integer-8 option"
 msgstr "integer kind=8 在指定了 -fdefault-integer-8 选项时不可用"
 
 #: fortran/trans-types.c:504
 #, fuzzy, gcc-internal-format
-#| msgid "integer kind=8 not available for -fdefault-integer-8 option"
 msgid "INTEGER(KIND=8) is not available for -finteger-4-integer-8 option"
 msgstr "integer kind=8 在指定了 -fdefault-integer-8 选项时不可用"
 
 #: fortran/trans-types.c:522
 #, fuzzy, gcc-internal-format
-#| msgid "real kind=8 not available for -fdefault-real-8 option"
 msgid "REAL(KIND=8) is not available for -fdefault-real-8 option"
 msgstr "real kind=8 在指定了 -fdefault-real-8 选项时不可用"
 
 #: fortran/trans-types.c:529
 #, fuzzy, gcc-internal-format
-#| msgid "real kind=8 not available for -fdefault-real-8 option"
 msgid "REAL(KIND=8) is not available for -freal-4-real-8 option"
 msgstr "real kind=8 在指定了 -fdefault-real-8 选项时不可用"
 
 #: fortran/trans-types.c:536
 #, fuzzy, gcc-internal-format
-#| msgid "real kind=8 not available for -fdefault-real-8 option"
 msgid "REAL(KIND=10) is not available for -freal-4-real-10 option"
 msgstr "real kind=8 在指定了 -fdefault-real-8 选项时不可用"
 
 #: fortran/trans-types.c:543
 #, fuzzy, gcc-internal-format
-#| msgid "real kind=8 not available for -fdefault-real-8 option"
 msgid "REAL(KIND=16) is not available for -freal-4-real-16 option"
 msgstr "real kind=8 在指定了 -fdefault-real-8 选项时不可用"
 
@@ -51107,25 +49593,21 @@ msgstr "使用 -fdefault-double-8 时需要 -fdefault-real-8"
 
 #: fortran/trans-types.c:566
 #, fuzzy, gcc-internal-format
-#| msgid "real kind=8 not available for -fdefault-real-8 option"
 msgid "REAL(KIND=4) is not available for -freal-8-real-4 option"
 msgstr "real kind=8 在指定了 -fdefault-real-8 选项时不可用"
 
 #: fortran/trans-types.c:573
 #, fuzzy, gcc-internal-format
-#| msgid "real kind=8 not available for -fdefault-real-8 option"
 msgid "REAL(KIND=10) is not available for -freal-8-real-10 option"
 msgstr "real kind=8 在指定了 -fdefault-real-8 选项时不可用"
 
 #: fortran/trans-types.c:580
 #, fuzzy, gcc-internal-format
-#| msgid "real kind=8 not available for -fdefault-real-8 option"
 msgid "REAL(KIND=10) is not available for -freal-8-real-16 option"
 msgstr "real kind=8 在指定了 -fdefault-real-8 选项时不可用"
 
 #: fortran/trans-types.c:1458
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "Array element size too big"
 msgid "Array element size too big at %C"
 msgstr "数组元素太大"
 
@@ -51272,7 +49754,6 @@ msgstr "不会执行到的字节码,从 %d 直到方法末尾"
 #. duplicate code from LOAD macro
 #: java/expr.c:3549
 #, fuzzy, gcc-internal-format
-#| msgid "unrecogized wide sub-instruction"
 msgid "unrecognized wide sub-instruction"
 msgstr "无法识别的宽子指令"
 
@@ -51570,19 +50051,16 @@ msgstr "不能读取 ELF 头:%s"
 
 #: lto/lto.c:2302
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "cannot open %s"
 msgid "Cannot open %s"
 msgstr "不能打开 %s"
 
 #: lto/lto.c:2323
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "cannot open %s"
 msgid "Cannot map %s"
 msgstr "不能打开 %s"
 
 #: lto/lto.c:2334
 #, fuzzy, gcc-internal-format, gfc-internal-format
-#| msgid "cannot open %s"
 msgid "Cannot read %s"
 msgstr "不能打开 %s"
 
@@ -52006,7 +50484,6 @@ msgstr "全局/静态变量赋值已被打断"
 
 #: objc/objc-act.c:3964 objc/objc-act.c:3992 objc/objc-act.c:4048
 #, fuzzy, gcc-internal-format
-#| msgid "unused variable %q+D"
 msgid "duplicate instance variable %q+D"
 msgstr "未使用的变量%q+D"
 
@@ -52125,7 +50602,6 @@ msgstr "也找到了%<%c%s%>"
 #. rtype is an IDENTIFIER_NODE at this point.
 #: objc/objc-act.c:5398 objc/objc-act.c:5532
 #, fuzzy, gcc-internal-format
-#| msgid "definition of protocol %qE not found"
 msgid "@interface of class %qE not found"
 msgstr "找不到协议%qE的方法定义"
 
index 4db4870..288821d 100644 (file)
@@ -323,16 +323,11 @@ symtab_insert_node_to_hashtable (symtab_node *node)
   *slot = node;
 }
 
-/* Remove node from symbol table.  This function is not used directly, but via
-   cgraph/varpool node removal routines.  */
+/* Remove NODE from same comdat group.   */
 
 void
-symtab_unregister_node (symtab_node *node)
+symtab_remove_from_same_comdat_group (symtab_node *node)
 {
-  void **slot;
-  ipa_remove_all_references (&node->ref_list);
-  ipa_remove_all_referring (&node->ref_list);
-
   if (node->same_comdat_group)
     {
       symtab_node *prev;
@@ -346,6 +341,19 @@ symtab_unregister_node (symtab_node *node)
        prev->same_comdat_group = node->same_comdat_group;
       node->same_comdat_group = NULL;
     }
+}
+
+/* Remove node from symbol table.  This function is not used directly, but via
+   cgraph/varpool node removal routines.  */
+
+void
+symtab_unregister_node (symtab_node *node)
+{
+  void **slot;
+  ipa_remove_all_references (&node->ref_list);
+  ipa_remove_all_referring (&node->ref_list);
+
+  symtab_remove_from_same_comdat_group (node);
 
   if (node->previous)
     node->previous->next = node->next;
@@ -829,6 +837,16 @@ verify_symtab_base (symtab_node *node)
          error ("non-DECL_ONE_ONLY node in a same_comdat_group list");
          error_found = true;
        }
+      if (DECL_COMDAT_GROUP (n->decl) != DECL_COMDAT_GROUP (node->same_comdat_group->decl))
+       {
+         error ("same_comdat_group list across different groups");
+         error_found = true;
+       }
+      if (!n->definition)
+       {
+         error ("Node has same_comdat_group but it is not a definition");
+         error_found = true;
+       }
       if (n->type != node->type)
        {
          error ("mixing different types of symbol in same comdat groups is not supported");
index 1591a08..a0504fe 100644 (file)
@@ -1,3 +1,193 @@
+2014-05-29  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/60834
+       Backport from mainline
+       * gfortran.dg/associate_16.f90:  New test.
+
+2014-05-28  Eric Botcazou  <ebotcazou@adacore.com>
+
+       Backport from mainline
+       2014-05-27  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat.dg/overflow_fixed.adb: New test.
+
+2014-05-28  Richard Biener  <rguenther@suse.de>
+
+       Backport from mainline
+       2014-05-28  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/61045
+       * gcc.dg/pr61045.c: New testcase.
+
+       2014-05-05  Richard Biener  <rguenther@suse.de>
+
+       PR middle-end/61010
+       * gcc.dg/torture/pr61010.c: New testcase.
+
+       2014-04-28  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/60979
+       * gcc.dg/graphite/pr60979.c: New testcase.
+
+2014-05-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * lib/clearcap.exp: New file.
+       * gcc.dg/vect/vect.exp: Load clearcap.exp.
+       Remove clearcap_ldflags handling.
+       Call clearcap-init, clearcap-finish.
+       * gcc.target/i386/i386.exp: Likewise.
+       * gcc.target/i386/clearcap.map: Move to ../config/sol2-clearcap.map.
+       * gcc.target/i386/clearcapv2.map: Move to
+       ../config/sol2-clearcapv2.map.
+       * gcc.target/x86_64/abi/avx/abi-avx.exp: Likewise.
+       * gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: Likewise.
+
+2014-05-27  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat.dg/aliasing1.adb (dg-final): Robustify pattern matching.
+
+2014-05-26  Uros Bizjak  <ubizjak@gmail.com>
+
+       * c-c++-common/cilk-plus/AN/pr61191.c: Fix dg-error directives.
+
+2014-05-26  Igor Zamyatin  <igor.zamyatin@intel.com>
+
+       PR c/61191
+       * c-c++-common/cilk-plus/AN/pr61191.c: Check for correct handling of
+       the case with syntax error.
+
+2014-05-22  Peter Bergner  <bergner@vnet.ibm.com>
+
+       * gcc.target/powerpc/htm-ttest.c: New test.
+
+2014-05-21  Igor Zamyatin  <igor.zamyatin@intel.com>
+
+       PR c++/60189
+       * c-c++-common/cilk-plus/CK/invalid_sync.cc: New test.
+
+2014-05-18  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR middle-end/58094
+       * g++.dg/ipa/devirt-11.C: Be lax about number of devirtualizations.
+
+2014-05-18  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gnat.dg/enum3.adb: New test.
+
+2014-04-16  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/60854
+       * g++.dg/torture/pr60854.C: New testcase.
+
+2014-05-17  Uros Bizjak  <ubizjak@gmail.com>
+
+       * g++.dg/pr60969.C: Compile for all ilp32 x86 targets.
+       (dg-options): Add -mfpmath=387.
+       (dg-final): Check that no MMX registers are used.
+
+2014-05-16  Vladimir Makarov  <vmakarov@redhat.com>
+
+       PR rtl-optimization/60969
+       * g++.dg/pr60969.C: New.
+
+2014-05-15  Martin Jambor  <mjambor@suse.cz>
+
+       PR ipa/61085
+       * g++.dg/ipa/pr61085.C: New test.
+
+2014-05-15  Jakub Jelinek  <jakub@redhat.com>
+
+       PR tree-optimization/61158
+       * gcc.dg/pr61158.c: New test.
+
+2014-05-14  Matthias Klose  <doko@ubuntu.com>
+
+       PR driver/61106
+       * gcc-dg/unused-8a.c: Remove.
+
+2014-05-13  Peter Bergner  <bergner@vnet.ibm.com>
+
+       * lib/target-support.exp (check_dfp_hw_available): New function.
+       (is-effective-target): Check $arg for dfp_hw.
+       (is-effective-target-keyword): Likewise.
+       * gcc.target/powerpc/pack03.c: (dg-require-effective-target):
+       Change target to dfp_hw.
+
+2014-05-13  Jeff Law  <law@redhat.com>
+
+       Backports from mainline
+
+       2014-05-08  Jeff Law  <law@redhat.com>
+
+       PR tree-optimization/61009
+       * g++.dg/tree-ssa/pr61009.C: New test.
+
+       2014-04-23  Jeff Law  <law@redhat.com>
+
+       PR tree-optimization/60902
+       * gcc.target/i386/pr60902.c: New test.
+
+2014-05-13  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/61060
+       * gcc.dg/pr61060.c: New test.
+
+2014-05-12  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
+
+       Backport from mainline
+       2014-05-12  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>
+
+       PR target/60991
+       * gcc.target/avr/pr60991.c: New testcase.
+
+2014-05-10  Jerry DeLisle  <jvdelisle@gcc.gnu>
+
+       Backport from trunk.
+       PR libfortran/61049
+       * gfortran.dg/list_read_13.f: New test.
+
+2014-05-09  Georg-Johann Lay  <avr@gjlay.de>
+
+       Backport from 2014-05-09 trunk r210267
+
+       PR target/61055
+       * gcc.target/avr/torture/pr61055.c: New test.
+
+2014-05-08  Matthias Klose  <doko@ubuntu.com>
+
+       PR driver/61106
+       * gcc-dg/unused-8a.c: New.
+       * gcc-dg/unused-8b.c: Likewise.
+
+2014-05-07  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/61083
+       * g++.dg/cpp0x/sfinae50.C: New.
+
+2014-05-07  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/57864
+       * gcc.dg/torture/pr57864.c: New testcase.
+
+2014-05-06  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/60999
+       * g++.dg/cpp0x/nsdmi-template9.C: New.
+       * g++.dg/cpp0x/nsdmi-template10.C: Likewise.
+
+2014-05-04  Jan Hubicka  <hubicka@ucw.cz>
+
+       PR ipa/60965
+       * g++.dg/ipa/devirt-31.C: New testcase.
+       * g++.dg/ipa/devirt-11.C: Adjust testcase.
+
+2014-05-04  Peter Bergner  <bergner@vnet.ibm.com>
+
+       * gcc.target/powerpc/pack02.c (dg-options): Add -mhard-float.
+       (dg-require-effective-target): Change target to powerpc_fprs.
+       * gcc.target/powerpc/pack03.c (dg-options): Add -mhard-dfp.
+       (dg-require-effective-target): Change target to dfprt.
+
 2014-05-02  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        PR tree-optimization/60930
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61191.c b/gcc/testsuite/c-c++-common/cilk-plus/AN/pr61191.c
new file mode 100644 (file)
index 0000000..deb8392
--- /dev/null
@@ -0,0 +1,10 @@
+/* PR c/61191 */
+/* { dg-do compile } */
+/* { dg-options "-fcilkplus" } */
+
+double f(double * A, double * B)
+{
+  return __sec_reduce_add((B[0:500])(; /* { dg-error "called object" "" { target c } } */
+/* { dg-error "expected expression before ';' token" "" { target c } 7 } */
+/* { dg-error "expected primary-expression before ';' token" "" { target c++ } 7 } */
+} /* { dg-error "expected" "" { target c } } */
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_sync.cc b/gcc/testsuite/c-c++-common/cilk-plus/CK/invalid_sync.cc
new file mode 100644 (file)
index 0000000..cf1caf1
--- /dev/null
@@ -0,0 +1,9 @@
+/* PR c/60189 */
+/* { dg-do compile } */
+/* { dg-options "-fcilkplus" } */
+
+int main (void)
+{
+    _Cilk_sync return; /* { dg-error " expected ';' before 'return'" } */
+    return 0;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this18.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this18.C
new file mode 100644 (file)
index 0000000..fec2da6
--- /dev/null
@@ -0,0 +1,30 @@
+// PR c++/61151
+// { dg-do compile { target c++11 } }
+
+struct B
+{
+  void foo () {}
+};
+
+template <class>
+struct A
+{
+  template <class> void bar ();
+  B a;
+};
+
+template <class T>
+template <class U>
+void
+A<T>::bar ()
+{
+  auto f = [this] () { auto g = [=] () { a.foo (); }; g (); };
+  f ();
+}
+
+int
+main ()
+{
+  A<int> a;
+  a.bar <int> ();
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-template10.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-template10.C
new file mode 100644 (file)
index 0000000..4a8c87e
--- /dev/null
@@ -0,0 +1,14 @@
+// PR c++/60999
+// { dg-do compile { target c++11 } }
+
+struct B
+{
+  template<int N, int M>
+  struct A;
+
+  template<int M>
+  struct A<1, M>
+  {
+    int X = M;
+  };
+};
diff --git a/gcc/testsuite/g++.dg/cpp0x/nsdmi-template9.C b/gcc/testsuite/g++.dg/cpp0x/nsdmi-template9.C
new file mode 100644 (file)
index 0000000..0cfbb90
--- /dev/null
@@ -0,0 +1,16 @@
+// PR c++/60999
+// { dg-do compile { target c++11 } }
+
+template <typename A>
+struct foo
+{
+};
+  
+template<>
+struct foo<int>
+{
+  static constexpr int code = 42;
+  unsigned int bar = static_cast<unsigned int>(code);
+};
+  
+foo<int> a;
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae50.C b/gcc/testsuite/g++.dg/cpp0x/sfinae50.C
new file mode 100644 (file)
index 0000000..e8d90ca
--- /dev/null
@@ -0,0 +1,41 @@
+// PR c++/61083
+// { dg-do compile { target c++11 } }
+
+template<typename T> T declval();
+
+template<typename T, typename U>
+struct is_same {
+  static const bool value = false;
+};
+
+template<typename T>
+struct is_same<T, T> {
+  static const bool value = true;
+};
+
+struct true_type {};
+struct false_type {};
+
+template <typename T>
+struct is_foo {
+private:
+  template<typename U, U> struct helper {};
+
+  template <typename Z> static auto
+  test(Z z) -> decltype(helper<void (Z::*)() const, &Z::foo>(), true_type());
+
+  template <typename> static auto test(...) -> false_type;
+
+public:
+  enum { value = is_same<decltype(test<T>(declval<T>())), true_type>::value };
+};
+
+struct A { 
+  int foo();
+  void foo() const; 
+};
+
+struct A1 : public A {};
+
+static_assert (is_foo<A>::value == 1, "");
+static_assert (is_foo<A1>::value == 0, "");
diff --git a/gcc/testsuite/g++.dg/init/copy7.C b/gcc/testsuite/g++.dg/init/copy7.C
new file mode 100644 (file)
index 0000000..655fae2
--- /dev/null
@@ -0,0 +1,9 @@
+// CWG 5
+
+struct C { };
+C c;
+struct A {
+  A(const A&);
+  A(const C&);
+};
+const volatile A a = c;    // Okay
index d30d56c..2b6bdcb 100644 (file)
@@ -45,5 +45,5 @@ bar ()
 /* While inlining function called once we should devirtualize a new call to fn2
    and two to fn3. While doing so the new symbol for fn2 needs to be
    introduced.  */
-/* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 3 "inline"  } } */
+/* { dg-final { scan-ipa-dump "Discovered a virtual call to a known target" "inline"  } } */
 /* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/g++.dg/ipa/devirt-31.C b/gcc/testsuite/g++.dg/ipa/devirt-31.C
new file mode 100644 (file)
index 0000000..64c44ba
--- /dev/null
@@ -0,0 +1,23 @@
+/* { dg-options "-O2 -std=c++11 -fdump-ipa-inline"  } */
+#include <new>
+
+class EmbeddedObject {
+public:
+  virtual int val() { return 2; }
+};
+
+class Container {
+  alignas(EmbeddedObject) char buffer[sizeof(EmbeddedObject)];
+public:
+  EmbeddedObject *obj() { return (EmbeddedObject*)buffer; }
+  Container() { new (buffer) EmbeddedObject(); }
+};
+
+Container o;
+
+int main()
+{
+  __builtin_printf("%d\n", o.obj()->val());
+}
+/* { dg-final { scan-ipa-dump-not "__builtin_unreachable"  "inline"  } } */
+/* { dg-final { cleanup-ipa-dump "inline" } } */
diff --git a/gcc/testsuite/g++.dg/ipa/pr61085.C b/gcc/testsuite/g++.dg/ipa/pr61085.C
new file mode 100644 (file)
index 0000000..531f59d
--- /dev/null
@@ -0,0 +1,33 @@
+/* { dg-do run } */
+/* { dg-options "-O2 -fno-early-inlining" } */
+
+struct A {};
+struct B : virtual A {
+  unsigned m_i;
+  B() : m_i () {}
+  virtual A *m_virt ()
+  {
+    return 0;
+  }
+  ~B ()
+  {
+    m_foo ();
+    while (m_i)
+      ;
+  }
+  void m_foo ()
+  {
+    m_virt ();
+  }
+};
+
+class C : B {
+  A *m_virt () {
+    __builtin_abort ();
+  }
+};
+
+int main ()
+{
+  C c;
+}
diff --git a/gcc/testsuite/g++.dg/pr60969.C b/gcc/testsuite/g++.dg/pr60969.C
new file mode 100644 (file)
index 0000000..bea0801
--- /dev/null
@@ -0,0 +1,32 @@
+/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
+/* { dg-options "-O2 -ftree-vectorize -march=pentium4 -mfpmath=387" } */
+
+struct A
+{
+  float f, g, h, k;
+  A () {}
+  A (float v0, float x, float y) : f(v0), g(x), h(y), k(0.0f) {}
+  A bar (A &a, float t) { return A (f + a.f * t, g + a.g * t, h + a.h * t); }
+};
+
+A
+baz (A &x, A &y, float t)
+{
+  return x.bar (y, t);
+}
+
+A *
+foo (A &s, A &t, A &u, A &v, int y, int z)
+{
+  A *x = new A[y * z];
+  for (int i = 0; i < 7; i++)
+    {
+      A s = baz (s, u, i / (float) z);
+      A t = baz (t, v, i / (float) z);
+      for (int j = 0; j < 7; j++)
+        x[i * y + j] = baz (s, t, j / (float) y);
+    }
+  return x;
+}
+
+/* { dg-final { scan-assembler-not "%mm" } } */
diff --git a/gcc/testsuite/g++.dg/torture/pr60854.C b/gcc/testsuite/g++.dg/torture/pr60854.C
new file mode 100644 (file)
index 0000000..fa4b2e7
--- /dev/null
@@ -0,0 +1,13 @@
+template <typename T>
+class MyClass
+{
+public:
+  __attribute__ ((__always_inline__)) inline MyClass () { ; }
+};
+
+extern template class MyClass<double>;
+
+void Func()
+{
+  MyClass<double> x;
+}
diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr61009.C b/gcc/testsuite/g++.dg/tree-ssa/pr61009.C
new file mode 100644 (file)
index 0000000..4e7bb1a
--- /dev/null
@@ -0,0 +1,53 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fno-tree-vrp -std=c++11 -fno-strict-aliasing -fdump-tree-dom1" } */
+
+#include <stdio.h>
+struct Field {
+ virtual int Compare(void*, void*);
+};
+extern int NKF, NR;
+extern int idxs[];
+extern Field* the_field;
+extern int *incs;
+extern char** fptrs;
+inline int doCmp(int this_row_offset, int field_idx) {
+ void *p = fptrs[field_idx] + this_row_offset * incs[field_idx];
+ return the_field->Compare(p,0);
+}
+bool  Test(void) {
+
+ int row_offset = 0;
+
+ for (; row_offset < NR; ++row_offset) {
+
+   bool is_different = false;
+   for (int j = 0; j < NKF ; ++j) {
+     int field_idx = idxs[j];
+     int cmp = doCmp(row_offset, field_idx);
+     fprintf (stderr, "cmp=%d\n",cmp);
+
+     if (cmp == 0) {
+       continue;
+     }
+     if (cmp > 0) {
+       is_different = true;
+       break;
+     } else {
+       fprintf (stderr, "Incorrect\n");
+       return false;
+     }
+   }
+   if (!is_different) {
+
+     return false;
+   }
+ }
+
+ return true;
+}
+
+// The block ending with cmp == 0 should not be threaded.  ie,
+// there should be a single == 0 comparison in the dump file.
+
+// { dg-final { scan-tree-dump-times "== 0" 1 "dom1" } }
+// { dg-final { cleanup-tree-dump "dom1" } }
diff --git a/gcc/testsuite/gcc.dg/graphite/pr60979.c b/gcc/testsuite/gcc.dg/graphite/pr60979.c
new file mode 100644 (file)
index 0000000..0004a51
--- /dev/null
@@ -0,0 +1,37 @@
+/* { dg-options "-O -fgraphite-identity" } */
+
+#include <setjmp.h>
+
+struct x;
+
+typedef struct x **(*a)(struct x *);
+
+struct x {
+    union {
+       struct {
+           union {
+               a *i;
+           } l;
+           int s;
+       } y;
+    } e;
+};
+
+jmp_buf c;
+
+void
+b(struct x *r)
+{
+  int f;
+  static int w = 0;
+  volatile jmp_buf m;
+  f = (*(((struct x *)r)->e.y.l.i[2]((struct x *)r)))->e.y.s;
+  if (w++ != 0)
+    __builtin_memcpy((char *)m, (const char *)c, sizeof(jmp_buf));
+  if (setjmp (c) == 0) {
+      int z;
+      for (z = 0; z < 0; ++z)
+       ;
+  }
+  d((const char *)m);
+}
diff --git a/gcc/testsuite/gcc.dg/pr61045.c b/gcc/testsuite/gcc.dg/pr61045.c
new file mode 100644 (file)
index 0000000..1808cdc
--- /dev/null
@@ -0,0 +1,12 @@
+/* { dg-do run } */
+/* { dg-options "-fstrict-overflow" } */
+
+int main ()
+{
+  int a = 0;
+  int b = __INT_MAX__;
+  int t = (a - 2) > (b - 1);
+  if (t != 0)
+    __builtin_abort();
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/pr61060.c b/gcc/testsuite/gcc.dg/pr61060.c
new file mode 100644 (file)
index 0000000..d2a1365
--- /dev/null
@@ -0,0 +1,19 @@
+/* PR target/61060 */
+/* { dg-do compile } */
+/* { dg-options "-O0 -ftree-ter" } */
+
+typedef __SIZE_TYPE__ size_t;
+
+extern inline __attribute__ ((gnu_inline, always_inline, artificial))
+void *memset (void *dest, int ch, size_t len)
+{
+  return __builtin_memset (dest, ch, len);
+}
+
+char buf[10];
+
+void
+foo (void)
+{
+  memset (buf, sizeof (buf), 0);
+}
diff --git a/gcc/testsuite/gcc.dg/pr61158.c b/gcc/testsuite/gcc.dg/pr61158.c
new file mode 100644 (file)
index 0000000..d0ba7f3
--- /dev/null
@@ -0,0 +1,12 @@
+/* PR tree-optimization/61158 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-original" } */
+
+unsigned long long
+foo (unsigned int x)
+{
+  return ((unsigned long long) x & 0x00ff000000000000ULL) >> 40;
+}
+
+/* { dg-final { scan-tree-dump "return 0;" "original" { target { ilp32 || lp64 } } } } */
+/* { dg-final { cleanup-tree-dump "original" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/pr57864.c b/gcc/testsuite/gcc.dg/torture/pr57864.c
new file mode 100644 (file)
index 0000000..93962c2
--- /dev/null
@@ -0,0 +1,37 @@
+/* { dg-do compile } */
+
+union U {
+    double val;
+    union U *ptr;
+};
+
+union U *d;
+double a;
+int b;
+int c;
+
+static void fn1(union U *p1, int p2, _Bool p3)
+{
+    union U *e;
+
+    if (p2 == 0)
+       a = ((union U*)((unsigned long)p1 & ~1))->val;
+
+    if (b) {
+       e = p1;
+    } else if (c) {
+       e = ((union U*)((unsigned long)p1 & ~1))->ptr;
+       d = e;
+    } else {
+       e = 0;
+       d = ((union U*)0)->ptr;
+    }
+
+    fn1 (e, 0, 0);
+    fn1 (0, 0, p3);
+}
+
+void fn2 (void)
+{
+  fn1 (0, 0, 0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr61010.c b/gcc/testsuite/gcc.dg/torture/pr61010.c
new file mode 100644 (file)
index 0000000..ed56539
--- /dev/null
@@ -0,0 +1,8 @@
+/* { dg-do compile } */
+
+int main (void)
+{
+  int a = 0;
+  unsigned b = (a * 64 & 192) | 63U;
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/unused-8b.c b/gcc/testsuite/gcc.dg/unused-8b.c
new file mode 100644 (file)
index 0000000..5b4b894
--- /dev/null
@@ -0,0 +1,4 @@
+/* { dg-do compile } */
+/* { dg-options "-Wall -Wno-unused -Wextra" } */
+
+void foo(int x) { }
index fa11e7e..e8d866b 100644 (file)
@@ -18,6 +18,7 @@
 
 # Load support procs.
 load_lib gcc-dg.exp
+load_lib clearcap.exp
 
 # Set up flags used for tests that don't specify options.
 global DEFAULT_VECTCFLAGS
@@ -41,30 +42,9 @@ if ![check_vect_support_and_set_flags] {
 # These flags are used for all targets.
 lappend DEFAULT_VECTCFLAGS "-ftree-vectorize" "-fno-vect-cost-model" "-fno-common"
 
-# If the linker used understands -M <mapfile>, pass it to clear hardware
-# capabilities set by the Sun assembler.
-# Try mapfile syntax v2 first which is the only way to clear hwcap_2 flags.
-set clearcap_ldflags "-Wl,-M,$srcdir/gcc.target/i386/clearcapv2.map"
-
-if ![check_no_compiler_messages mapfilev2 executable {
-    int main (void) { return 0; }
-} $clearcap_ldflags ] {
-    # If this doesn't work, fall back to the less capable v1 syntax.
-    set clearcap_ldflags "-Wl,-M,$srcdir/gcc.target/i386/clearcap.map"
-
-    if ![check_no_compiler_messages mapfile executable {
-       int main (void) { return 0; }
-    } $clearcap_ldflags ] {
-       unset clearcap_ldflags
-    }
-}
-
-if [info exists clearcap_ldflags] {
-    lappend DEFAULT_VECTCFLAGS $clearcap_ldflags
-}
-
 # Initialize `dg'.
 dg-init
+clearcap-init
 
 global VEC_FLAGS
 set VEC_FLAGS $DEFAULT_VECTCFLAGS
@@ -308,4 +288,5 @@ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/no-tree-sra-bb-slp-*.\[cS\]]
 set dg-do-what-default ${save-dg-do-what-default}
 
 # All done.
+clearcap-finish
 dg-finish
diff --git a/gcc/testsuite/gcc.target/avr/pr60991.c b/gcc/testsuite/gcc.target/avr/pr60991.c
new file mode 100644 (file)
index 0000000..a09f42a
--- /dev/null
@@ -0,0 +1,21 @@
+/* { dg-do run } */
+/* { dg-options "-O1" } */
+
+/* This testcase (simplified from the original bug report) exposes 
+   PR60991. The code generated for writing the __int24 value corrupts
+   the frame pointer if the offset is <= 63 + MAX_LD_OFFSET */
+
+#include <stdlib.h>
+
+int main(void)
+{
+    volatile char junk[62];
+    junk[0] = 5;
+    volatile __int24 staticConfig = 0;
+
+    if (junk[0] != 5)
+      abort();
+
+    exit(0);
+    return 0;
+}
diff --git a/gcc/testsuite/gcc.target/avr/torture/pr61055.c b/gcc/testsuite/gcc.target/avr/torture/pr61055.c
new file mode 100644 (file)
index 0000000..9dd1f42
--- /dev/null
@@ -0,0 +1,88 @@
+/* { dg-do run } */
+/* { dg-options { -fno-peephole2 } } */
+
+#include <stdlib.h>
+
+typedef __UINT16_TYPE__ uint16_t;
+typedef __INT16_TYPE__  int16_t;
+typedef __UINT8_TYPE__  uint8_t;
+
+uint8_t __attribute__((noinline,noclone))
+fun_inc (uint8_t c0)
+{
+  register uint8_t c asm ("r15") = c0;
+
+  /* Force target value into R15 (lower register)  */
+  asm ("" : "+l" (c));
+
+  c++;
+  if (c >= 0x80)
+    c = 0;
+  
+  asm ("" : "+l" (c));
+
+  return c;
+}
+
+uint8_t __attribute__((noinline,noclone))
+fun_dec (uint8_t c0)
+{
+  register uint8_t c asm ("r15") = c0;
+
+  /* Force target value into R15 (lower register)  */
+  asm ("" : "+l" (c));
+
+  c--;
+  if (c < 0x80)
+    c = 0;
+  
+  asm ("" : "+l" (c));
+
+  return c;
+}
+
+
+uint8_t __attribute__((noinline,noclone))
+fun_neg (uint8_t c0)
+{
+  register uint8_t c asm ("r15") = c0;
+
+  c = -c;
+  if (c >= 0x80)
+    c = 0;
+
+  return c;
+}
+
+uint16_t __attribute__((noinline,noclone))
+fun_adiw (uint16_t c0)
+{
+  register uint16_t c asm ("r24") = c0;
+
+  /* Force target value into R24 (for ADIW) */
+  asm ("" : "+r" (c));
+
+  c += 2;
+  if (c >= 0x8000)
+    c = 0;
+
+  asm ("" : "+r" (c));
+  
+  return c;
+}
+
+
+int main()
+{
+  if (fun_inc (0x7f) != 0)
+    abort();
+  
+  if (fun_neg (0x80) != 0)
+    abort();
+  
+  if (fun_adiw (0x7ffe) != 0)
+    abort();
+
+  exit (0);
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/clearcap.map b/gcc/testsuite/gcc.target/i386/clearcap.map
deleted file mode 100644 (file)
index 147f922..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# clear all hardware capabilities emitted by Sun as: the tests here
-# guard against execution at runtime
-hwcap_1 = V0x0 OVERRIDE;
diff --git a/gcc/testsuite/gcc.target/i386/clearcapv2.map b/gcc/testsuite/gcc.target/i386/clearcapv2.map
deleted file mode 100644 (file)
index 95cb14c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-# clear all hardware capabilities emitted by Sun as: the tests here
-# guard against execution at runtime
-# uses mapfile v2 syntax which is the only way to clear AT_SUN_CAP_HW2 flags
-$mapfile_version 2
-CAPABILITY {
-  HW = ;
-};
index 080e302..d9b36cd 100644 (file)
@@ -23,6 +23,7 @@ if { ![istarget i?86*-*-*] && ![istarget x86_64-*-*] } then {
 
 # Load support procs.
 load_lib gcc-dg.exp
+load_lib clearcap.exp
 
 # Return 1 if attribute ms_hook_prologue is supported.
 proc check_effective_target_ms_hook_prologue { } {
@@ -307,39 +308,6 @@ proc check_effective_target_sha { } {
     } "-O2 -msha" ]
 }
 
-# If the linker used understands -M <mapfile>, pass it to clear hardware
-# capabilities set by the Sun assembler.
-# Try mapfile syntax v2 first which is the only way to clear hwcap_2 flags.
-set clearcap_ldflags "-Wl,-M,$srcdir/$subdir/clearcapv2.map"
-
-if ![check_no_compiler_messages mapfilev2 executable {
-    int main (void) { return 0; }
-} $clearcap_ldflags ] {
-    # If this doesn't work, fall back to the less capable v1 syntax.
-    set clearcap_ldflags "-Wl,-M,$srcdir/$subdir/clearcap.map"
-
-    if ![check_no_compiler_messages mapfile executable {
-       int main (void) { return 0; }
-    } $clearcap_ldflags ] {
-       unset clearcap_ldflags
-    }
-}
-
-if [info exists clearcap_ldflags] {
-  if { [info procs gcc_target_compile] != [list] \
-       && [info procs saved_gcc_target_compile] == [list] } {
-    rename gcc_target_compile saved_gcc_target_compile
-
-    proc gcc_target_compile { source dest type options } {
-      global clearcap_ldflags
-      # Always pass -Wl,-M,<mapfile>, but don't let it show up in gcc.sum.
-      lappend options "additional_flags=$clearcap_ldflags"
-
-      return [saved_gcc_target_compile $source $dest $type $options]
-    }
-  }
-}
-
 # If a testcase doesn't have special options, use these.
 global DEFAULT_CFLAGS
 if ![info exists DEFAULT_CFLAGS] then {
@@ -348,6 +316,7 @@ if ![info exists DEFAULT_CFLAGS] then {
 
 # Initialize `dg'.
 dg-init
+clearcap-init
 
 # Special case compilation of vect-args.c so we don't have to
 # replicate it 10 times.
@@ -367,4 +336,5 @@ set tests [prune $tests $srcdir/$subdir/vect-args.c]
 dg-runtest $tests "" $DEFAULT_CFLAGS
 
 # All done.
+clearcap-finish
 dg-finish
diff --git a/gcc/testsuite/gcc.target/i386/pr60902.c b/gcc/testsuite/gcc.target/i386/pr60902.c
new file mode 100644 (file)
index 0000000..b81dcd7
--- /dev/null
@@ -0,0 +1,32 @@
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+extern void abort ();
+extern void exit (int);
+
+int x;
+
+foo()
+{
+  static int count;
+  count++;
+  if (count > 1)
+    abort ();
+}
+
+static inline int
+frob ()
+{
+  int a;
+  __asm__ ("mov %1, %0\n\t" : "=r" (a) : "m" (x));
+  x++;
+  return a;
+}
+
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 10 && frob () == 0; i++)
+    foo();
+  exit (0);
+}
diff --git a/gcc/testsuite/gcc.target/powerpc/htm-ttest.c b/gcc/testsuite/gcc.target/powerpc/htm-ttest.c
new file mode 100644 (file)
index 0000000..29cbd5b
--- /dev/null
@@ -0,0 +1,14 @@
+/* { dg-do compile { target { powerpc*-*-* } } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-require-effective-target powerpc_htm_ok } */
+/* { dg-options "-O2 -mhtm" } */
+
+/* { dg-final { scan-assembler "rlwinm r?\[0-9\]+,r?\[0-9\]+,3,30,31" { target { ilp32 } } } } */
+/* { dg-final { scan-assembler "rldicl r?\[0-9\]+,r?\[0-9\]+,35,62" { target { lp64 } } } } */
+
+#include <htmintrin.h>
+long
+ttest (void)
+{
+  return _HTM_STATE(__builtin_ttest());
+}
index 74b6cd0..584d6c2 100644 (file)
@@ -1,8 +1,8 @@
 /* { dg-do run { target { powerpc*-*-linux* } } } */
 /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
 /* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
-/* { dg-require-effective-target vsx_hw } */
-/* { dg-options "-O2" } */
+/* { dg-require-effective-target powerpc_fprs } */
+/* { dg-options "-O2 -mhard-float" } */
 
 #include <stddef.h>
 #include <stdlib.h>
index 59f0e74..dfaf2ef 100644 (file)
@@ -1,8 +1,8 @@
 /* { dg-do run { target { powerpc*-*-linux* } } } */
 /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
 /* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
-/* { dg-require-effective-target vsx_hw } */
-/* { dg-options "-O2" } */
+/* { dg-require-effective-target dfp_hw } */
+/* { dg-options "-O2 -mhard-dfp" } */
 
 #include <stddef.h>
 #include <stdlib.h>
index d6fc187..624b7ea 100644 (file)
@@ -20,6 +20,7 @@
 load_lib c-torture.exp
 load_lib target-supports.exp
 load_lib torture-options.exp
+load_lib clearcap.exp
 
 if { (![istarget x86_64-*-*] && ![istarget i?86-*-*])
      || ![is-effective-target lp64]
@@ -28,20 +29,10 @@ if { (![istarget x86_64-*-*] && ![istarget i?86-*-*])
 }
 
 
-# If the linker used understands -M <mapfile>, pass it to clear hardware
-# capabilities set by the Sun assembler.
-set flags ""
-set clearcap_ldflags "-Wl,-M,$srcdir/gcc.target/i386/clearcap.map"
-
-if [check_no_compiler_messages mapfile executable {
-       int main (void) { return 0; }
-  } $clearcap_ldflags ] {
-  set flags $clearcap_ldflags
-}
-
 torture-init
+clearcap-init
 set-torture-options $C_TORTURE_OPTIONS
-set additional_flags "-W -Wall -mavx $flags"
+set additional_flags "-W -Wall -mavx"
 
 foreach src [lsort [glob -nocomplain $srcdir/$subdir/test_*.c]] {
     if {[runtest_file_p $runtests $src]} {
@@ -58,4 +49,5 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/test_*.c]] {
     }
 }
 
+clearcap-finish
 torture-finish
index cef6fa1..f8f991e 100644 (file)
@@ -20,6 +20,7 @@
 load_lib c-torture.exp
 load_lib target-supports.exp
 load_lib torture-options.exp
+load_lib clearcap.exp
 
 if { (![istarget x86_64-*-*] && ![istarget i?86-*-*])
      || ![is-effective-target lp64]
@@ -28,20 +29,10 @@ if { (![istarget x86_64-*-*] && ![istarget i?86-*-*])
 }
 
 
-# If the linker used understands -M <mapfile>, pass it to clear hardware
-# capabilities set by the Sun assembler.
-set flags ""
-set clearcap_ldflags "-Wl,-M,$srcdir/gcc.target/i386/clearcap.map"
-
-if [check_no_compiler_messages mapfile executable {
-       int main (void) { return 0; }
-  } $clearcap_ldflags ] {
-  set flags $clearcap_ldflags
-}
-
 torture-init
+clearcap-init
 set-torture-options $C_TORTURE_OPTIONS
-set additional_flags "-W -Wall -mavx512f $flags"
+set additional_flags "-W -Wall -mavx512f"
 
 foreach src [lsort [glob -nocomplain $srcdir/$subdir/test_*.c]] {
     if {[runtest_file_p $runtests $src]} {
@@ -58,4 +49,5 @@ foreach src [lsort [glob -nocomplain $srcdir/$subdir/test_*.c]] {
     }
 }
 
+clearcap-finish
 torture-finish
diff --git a/gcc/testsuite/gfortran.dg/associate_16.f90 b/gcc/testsuite/gfortran.dg/associate_16.f90
new file mode 100644 (file)
index 0000000..9129388
--- /dev/null
@@ -0,0 +1,23 @@
+! { dg-do compile }
+! PR 60834 - this used to ICE.
+
+module m
+  implicit none
+  type :: t
+    real :: diffusion=1.
+  end type
+contains
+  subroutine solve(this, x)
+    class(t), intent(in) :: this
+    real, intent(in) :: x(:)
+    integer :: i
+    integer, parameter :: n(1:5)=[(i,i=1, 5)]
+
+    associate( nu=>this%diffusion)
+      associate( exponential=>exp(-(x(i)-n) ))
+        do i = 1, size(x)
+        end do
+      end associate
+    end associate
+  end subroutine solve
+end module m
diff --git a/gcc/testsuite/gfortran.dg/list_read_13.f b/gcc/testsuite/gfortran.dg/list_read_13.f
new file mode 100644 (file)
index 0000000..0f8efd8
--- /dev/null
@@ -0,0 +1,13 @@
+c { dg-do run }
+c PR61049, reduced test case by  Dominique d'Humieres
+      character(len=30) :: buff = ", (2.0, 3.0),,6.0D0, 2*,"
+      DOUBLE PRECISION AVD, BVD, CVD, DVCORR 
+      COMPLEX AVC, BVC, CVC, ZVCORR
+      
+      read(buff, *, err=10)  AVD, AVC, BVC, BVD, CVC, CVD
+      goto 20
+ 10   call abort
+ 20   continue       
+      end
+    
+  
index b2b7d12..bffc422 100644 (file)
@@ -18,5 +18,5 @@ package body Aliasing1 is
 
 end Aliasing1;
 
--- { dg-final { scan-tree-dump-not "__gnat_rcheck" "optimized" } }
+-- { dg-final { scan-tree-dump-not "gnat_rcheck" "optimized" } }
 -- { dg-final { cleanup-tree-dump "optimized" } }
diff --git a/gcc/testsuite/gnat.dg/enum3.adb b/gcc/testsuite/gnat.dg/enum3.adb
new file mode 100644 (file)
index 0000000..1cb6c4b
--- /dev/null
@@ -0,0 +1,23 @@
+-- { dg-do run }
+
+procedure Enum3 is
+   type Enum is (Aaa, Bbb, Ccc);
+   for Enum use (1,2,4);
+begin
+   for Lo in Enum loop
+      for Hi in Enum loop
+         declare
+            subtype S is Enum range Lo .. Hi;
+            type Vector is array (S) of Integer;
+            Vec : Vector;
+         begin
+            for I in S loop
+               Vec (I) := 0;
+            end loop;
+            if Vec /= (S => 0) then
+               raise Program_Error;
+            end if;
+         end;
+      end loop;
+   end loop;
+end;
diff --git a/gcc/testsuite/gnat.dg/overflow_fixed.adb b/gcc/testsuite/gnat.dg/overflow_fixed.adb
new file mode 100644 (file)
index 0000000..6ece515
--- /dev/null
@@ -0,0 +1,19 @@
+-- { dg-do run }
+-- { dg-options "-gnato -O" }
+
+procedure Overflow_Fixed is
+
+  type Unsigned_8_Bit is mod 2**8;
+
+  procedure Fixed_To_Eight (Value : Duration) is
+    Item : Unsigned_8_Bit;
+  begin
+    Item := Unsigned_8_Bit(Value);
+    raise Program_Error;
+  exception
+    when Constraint_Error => null; -- expected case
+  end;
+
+begin
+  Fixed_To_Eight (-0.5);
+end;
diff --git a/gcc/testsuite/lib/clearcap.exp b/gcc/testsuite/lib/clearcap.exp
new file mode 100644 (file)
index 0000000..044881f
--- /dev/null
@@ -0,0 +1,58 @@
+# Copyright (C) 2014 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# Clear hardware capabilities on Solaris.
+if [istarget *-*-solaris2*] {
+    set clearcap_ldflags "-mclear-hwcap"
+}
+
+#
+# clearcap-init -- called at the start of each subdir of tests
+#
+
+proc clearcap-init { args } {
+    global TEST_ALWAYS_FLAGS
+    global ALWAYS_CXXFLAGS
+    global clearcap_saved_TEST_ALWAYS_FLAGS
+    global clearcap_ldflags
+
+    if [info exists TEST_ALWAYS_FLAGS] {
+       set clearcap_saved_TEST_ALWAYS_FLAGS $TEST_ALWAYS_FLAGS
+    }
+    if [info exists clearcap_ldflags] {
+       if [info exists ALWAYS_CXXFLAGS] {
+           set ALWAYS_CXXFLAGS [concat "{ldflags=$clearcap_ldflags}" $ALWAYS_CXXFLAGS]
+       } else {
+           append TEST_ALWAYS_FLAGS " $clearcap_ldflags"
+       }
+    }
+    return 0
+}
+
+#
+# clearcap-finish -- called at the start of each subdir of tests
+#
+
+proc clearcap-finish { args } {
+    global TEST_ALWAYS_FLAGS
+    global clearcap_saved_TEST_ALWAYS_FLAGS
+
+    if [info exists clearcap_saved_TEST_ALWAYS_FLAGS] {
+       set TEST_ALWAYS_FLAGS $clearcap_saved_TEST_ALWAYS_FLAGS
+    } else {
+       unset TEST_ALWAYS_FLAGS
+    }
+}
index 57b10d0..7d296d9 100644 (file)
@@ -1956,6 +1956,32 @@ proc check_effective_target_dfprt { } {
     }]
 }
 
+# Return 1 if the target supports executing DFP hardware instructions,
+# 0 otherwise.  Cache the result.
+
+proc check_dfp_hw_available { } {
+    return [check_cached_effective_target dfp_hw_available {
+       # For now, disable on Darwin
+       if { [istarget powerpc-*-eabi] || [istarget powerpc*-*-eabispe] || [istarget *-*-darwin*]} {
+           expr 0
+       } else {
+           check_runtime_nocache dfp_hw_available {
+               volatile _Decimal64 r;
+               volatile _Decimal64 a = 4.0DD;
+               volatile _Decimal64 b = 2.0DD;
+               int main()
+               {
+                 asm volatile ("dadd %0,%1,%2" : "=d" (r) : "d" (a), "d" (b));
+                 asm volatile ("dsub %0,%1,%2" : "=d" (r) : "d" (a), "d" (b));
+                 asm volatile ("dmul %0,%1,%2" : "=d" (r) : "d" (a), "d" (b));
+                 asm volatile ("ddiv %0,%1,%2" : "=d" (r) : "d" (a), "d" (b));
+                 return 0;
+               }
+           } "-mcpu=power6 -mhard-float"
+       }
+    }]
+}
+
 # Return 1 if the target supports compiling and assembling UCN, 0 otherwise.
 
 proc check_effective_target_ucn_nocache { } {
@@ -4919,6 +4945,7 @@ proc is-effective-target { arg } {
          "vsx_hw"         { set selected [check_vsx_hw_available] }
          "p8vector_hw"    { set selected [check_p8vector_hw_available] }
          "ppc_recip_hw"   { set selected [check_ppc_recip_hw_available] }
+         "dfp_hw"         { set selected [check_dfp_hw_available] }
          "named_sections" { set selected [check_named_sections_available] }
          "gc_sections"    { set selected [check_gc_sections_available] }
          "cxa_atexit"     { set selected [check_cxa_atexit_available] }
@@ -4941,6 +4968,7 @@ proc is-effective-target-keyword { arg } {
          "vsx_hw"         { return 1 }
          "p8vector_hw"    { return 1 }
          "ppc_recip_hw"   { return 1 }
+         "dfp_hw"         { return 1 }
          "named_sections" { return 1 }
          "gc_sections"    { return 1 }
          "cxa_atexit"     { return 1 }
index c63b670..04d099f 100644 (file)
@@ -1485,6 +1485,11 @@ remap_gimple_stmt (gimple stmt, copy_body_data *id)
       /* Create a new deep copy of the statement.  */
       copy = gimple_copy (stmt);
 
+      /* Clear flags that need revisiting.  */
+      if (is_gimple_call (copy)
+         && gimple_call_tail_p (copy))
+       gimple_call_set_tail (copy, false);
+
       /* Remap the region numbers for __builtin_eh_{pointer,filter},
         RESX and EH_DISPATCH.  */
       if (id->eh_map)
index c447b72..8e628d5 100644 (file)
@@ -387,7 +387,34 @@ record_temporary_equivalences_from_stmts_at_dest (edge e,
           && (gimple_code (stmt) != GIMPLE_CALL
               || gimple_call_lhs (stmt) == NULL_TREE
               || TREE_CODE (gimple_call_lhs (stmt)) != SSA_NAME))
-       continue;
+       {
+         /* STMT might still have DEFS and we need to invalidate any known
+            equivalences for them.
+
+            Consider if STMT is a GIMPLE_ASM with one or more outputs that
+            feeds a conditional inside a loop.  We might derive an equivalence
+            due to the conditional.  */
+         tree op;
+         ssa_op_iter iter;
+
+         if (backedge_seen)
+           FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_DEF)
+             {
+               /* This call only invalidates equivalences created by
+                  PHI nodes.  This is by design to keep the cost of
+                  of invalidation reasonable.  */
+               invalidate_equivalences (op, stack, src_map, dst_map);
+
+               /* However, conditionals can imply values for real
+                  operands as well.  And those won't be recorded in the
+                  maps.  In fact, those equivalences may be recorded totally
+                  outside the threading code.  We can just create a new
+                  temporary NULL equivalence here.  */
+               record_temporary_equivalence (op, NULL_TREE, stack);
+             }
+
+         continue;
+       }
 
       /* The result of __builtin_object_size depends on all the arguments
         of a phi node. Temporarily using only one edge produces invalid
@@ -939,9 +966,14 @@ thread_around_empty_blocks (edge taken_edge,
    SIMPLIFY is a pass-specific function used to simplify statements.
 
    Our caller is responsible for restoring the state of the expression
-   and const_and_copies stacks.  */
+   and const_and_copies stacks.
 
-static bool
+   Positive return value is success.  Zero return value is failure, but
+   the block can still be duplicated as a joiner in a jump thread path,
+   negative indicates the block should not be duplicated and thus is not
+   suitable for a joiner in a jump threading path.  */
+
+static int
 thread_through_normal_block (edge e,
                             gimple dummy_cond,
                             bool handle_dominating_asserts,
@@ -963,7 +995,7 @@ thread_through_normal_block (edge e,
   /* PHIs create temporary equivalences.  */
   if (!record_temporary_equivalences_from_phis (e, stack, *backedge_seen_p,
                                                src_map, dst_map))
-    return false;
+    return 0;
 
   /* Now walk each statement recording any context sensitive
      temporary equivalences we can detect.  */
@@ -971,8 +1003,16 @@ thread_through_normal_block (edge e,
     = record_temporary_equivalences_from_stmts_at_dest (e, stack, simplify,
                                                        *backedge_seen_p,
                                                        src_map, dst_map);
+
+  /* If we didn't look at all the statements, the most likely reason is
+     there were too many and thus duplicating this block is not profitable.
+
+     Also note if we do not look at all the statements, then we may not
+     have invalidated equivalences that are no longer valid if we threaded
+     around a loop.  Thus we must signal to our caller that this block
+     is not suitable for use as a joiner in a threading path.  */
   if (!stmt)
-    return false;
+    return -1;
 
   /* If we stopped at a COND_EXPR or SWITCH_EXPR, see if we know which arm
      will be taken.  */
@@ -996,7 +1036,7 @@ thread_through_normal_block (edge e,
          if (dest == NULL
              || dest == e->dest
              || bitmap_bit_p (visited, dest->index))
-           return false;
+           return 0;
 
          /* Only push the EDGE_START_JUMP_THREAD marker if this is
             first edge on the path.  */
@@ -1030,10 +1070,10 @@ thread_through_normal_block (edge e,
                                      visited,
                                      path,
                                      backedge_seen_p);
-         return true;
+         return 1;
        }
     }
-  return false;
+  return 0;
 }
 
 /* We are exiting E->src, see if E->dest ends with a conditional
@@ -1085,9 +1125,12 @@ thread_across_edge (gimple dummy_cond,
   if (backedge_seen)
     simplify = dummy_simplify;
 
-  if (thread_through_normal_block (e, dummy_cond, handle_dominating_asserts,
-                                  stack, simplify, path, visited,
-                                  &backedge_seen, src_map, dst_map))
+  int threaded = thread_through_normal_block (e, dummy_cond,
+                                             handle_dominating_asserts,
+                                             stack, simplify, path,
+                                             visited, &backedge_seen,
+                                             src_map, dst_map);
+  if (threaded > 0)
     {
       propagate_threaded_block_debug_into (path->last ()->e->dest,
                                           e->dest);
@@ -1100,10 +1143,27 @@ thread_across_edge (gimple dummy_cond,
     }
   else
     {
-      /* There should be no edges on the path, so no need to walk through
-        the vector entries.  */
+      /* Negative and zero return values indicate no threading was possible,
+        thus there should be no edges on the thread path and no need to walk
+        through the vector entries.  */
       gcc_assert (path->length () == 0);
       path->release ();
+
+      /* A negative status indicates the target block was deemed too big to
+        duplicate.  Just quit now rather than trying to use the block as
+        a joiner in a jump threading path.
+
+        This prevents unnecessary code growth, but more importantly if we
+        do not look at all the statements in the block, then we may have
+        missed some invalidations if we had traversed a backedge!  */
+      if (threaded < 0)
+       {
+         BITMAP_FREE (visited);
+         BITMAP_FREE (src_map);
+         BITMAP_FREE (dst_map);
+         remove_temporary_equivalences (stack);
+         return;
+       }
     }
 
  /* We were unable to determine what out edge from E->dest is taken.  However,
@@ -1185,7 +1245,7 @@ thread_across_edge (gimple dummy_cond,
                                               handle_dominating_asserts,
                                               stack, simplify, path, visited,
                                               &backedge_seen,
-                                              src_map, dst_map);
+                                              src_map, dst_map) > 0;
 
        /* If we were able to thread through a successor of E->dest, then
           record the jump threading opportunity.  */
index b02bb6b..1839f57 100644 (file)
@@ -167,6 +167,9 @@ unpack_ts_real_cst_value_fields (struct bitpack_d *bp, tree expr)
   REAL_VALUE_TYPE r;
   REAL_VALUE_TYPE *rp;
 
+  /* Clear all bits of the real value type so that we can later do
+     bitwise comparisons to see if two values are the same.  */
+  memset (&r, 0, sizeof r);
   r.cl = (unsigned) bp_unpack_value (bp, 2);
   r.decimal = (unsigned) bp_unpack_value (bp, 1);
   r.sign = (unsigned) bp_unpack_value (bp, 1);
index acb5221..b5493ab 100644 (file)
@@ -166,7 +166,9 @@ varpool_remove_node (varpool_node *node)
   /* Because we remove references from external functions before final compilation,
      we may end up removing useful constructors.
      FIXME: We probably want to trace boundaries better.  */
-  if ((init = ctor_for_folding (node->decl)) == error_mark_node)
+  if (cgraph_state == CGRAPH_LTO_STREAMING)
+    ;
+  else if ((init = ctor_for_folding (node->decl)) == error_mark_node)
     varpool_remove_initializer (node);
   else
     DECL_INITIAL (node->decl) = init;
index 5dfe80b..8bcc677 100644 (file)
@@ -1,3 +1,12 @@
+2014-05-08  Ian Lance Taylor  <iant@google.com>
+
+       Backport from mainline:
+       * mmap.c (backtrace_free): If freeing a large aligned block of
+       memory, call munmap rather than holding onto it.
+       (backtrace_vector_grow): When growing a vector, double the number
+       of pages requested.  When releasing the old version of a grown
+       vector, pass the correct size to backtrace_free.
+
 2014-04-22  Release Manager
 
        * GCC 4.9.0 released.
index b530e38..5a9f629 100644 (file)
@@ -164,6 +164,26 @@ backtrace_free (struct backtrace_state *state, void *addr, size_t size,
 {
   int locked;
 
+  /* If we are freeing a large aligned block, just release it back to
+     the system.  This case arises when growing a vector for a large
+     binary with lots of debug info.  Calling munmap here may cause us
+     to call mmap again if there is also a large shared library; we
+     just live with that.  */
+  if (size >= 16 * 4096)
+    {
+      size_t pagesize;
+
+      pagesize = getpagesize ();
+      if (((uintptr_t) addr & (pagesize - 1)) == 0
+         && (size & (pagesize - 1)) == 0)
+       {
+         /* If munmap fails for some reason, just add the block to
+            the freelist.  */
+         if (munmap (addr, size) == 0)
+           return;
+       }
+    }
+
   /* If we can acquire the lock, add the new space to the free list.
      If we can't acquire the lock, just leak the memory.
      __sync_lock_test_and_set returns the old state of the lock, so we
@@ -209,14 +229,18 @@ backtrace_vector_grow (struct backtrace_state *state,size_t size,
            alc = pagesize;
        }
       else
-       alc = (alc + pagesize - 1) & ~ (pagesize - 1);
+       {
+         alc *= 2;
+         alc = (alc + pagesize - 1) & ~ (pagesize - 1);
+       }
       base = backtrace_alloc (state, alc, error_callback, data);
       if (base == NULL)
        return NULL;
       if (vec->base != NULL)
        {
          memcpy (base, vec->base, vec->size);
-         backtrace_free (state, vec->base, vec->alc, error_callback, data);
+         backtrace_free (state, vec->base, vec->size + vec->alc,
+                         error_callback, data);
        }
       vec->base = base;
       vec->alc = alc - vec->size;
index 57a8371..7439942 100644 (file)
@@ -1,3 +1,33 @@
+2014-05-27  Georg-Johann Lay  <avr@gjlay.de>
+
+       Backport from 2014-05-27 mainline r210322.
+
+       PR libgcc/61152
+       * config/arm/bpabi-lib.h (License): Add GCC Runtime Library Exception.
+
+2014-05-22  Nick Clifton  <nickc@redhat.com>
+
+       * config/msp430/t-msp430 (HOST_LIBGCC2_CFLAGS): Add
+       -mhwmult=none.
+
+2014-05-21  Maciej W. Rozycki  <macro@codesourcery.com>
+
+       Backport from mainline
+       2014-05-21  Maciej W. Rozycki  <macro@codesourcery.com>
+
+       PR libgcc/60166
+       * config/arm/sfp-machine.h (_FP_NANFRAC_H, _FP_NANFRAC_S)
+       (_FP_NANFRAC_D, _FP_NANSIGN_Q): Set the quiet bit.
+
+2014-05-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       Backport from mainline
+       2014-05-08  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       PR libgcc/61097
+       * config/t-slibgcc-sld: Only build and install libgcc-unwind.map
+       if --enable-shared.
+
 2014-04-30  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
        Work around for current cygwin32 build problems.
index 193cc56..d6e7796 100644 (file)
    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
    License for more details.
 
+   Under Section 7 of GPL version 3, you are granted additional
+   permissions described in the GCC Runtime Library Exception, version
+   3.1, as published by the Free Software Foundation.
+
    You should have received a copy of the GNU General Public License and
    a copy of the GCC Runtime Library Exception along with this program;
    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
index 4f2b15d..b7b5171 100644 (file)
@@ -21,10 +21,10 @@ typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__)));
 
 /* According to RTABI, QNAN is only with the most significant bit of the
    significand set, and all other significand bits zero.  */
-#define _FP_NANFRAC_H          0
-#define _FP_NANFRAC_S          0
-#define _FP_NANFRAC_D          0, 0
-#define _FP_NANFRAC_Q          0, 0, 0, 0
+#define _FP_NANFRAC_H          _FP_QNANBIT_H
+#define _FP_NANFRAC_S          _FP_QNANBIT_S
+#define _FP_NANFRAC_D          _FP_QNANBIT_D, 0
+#define _FP_NANFRAC_Q          _FP_QNANBIT_Q, 0, 0, 0
 #define _FP_NANSIGN_H          0
 #define _FP_NANSIGN_S          0
 #define _FP_NANSIGN_D          0
index 7a7b680..f82c123 100644 (file)
@@ -42,7 +42,7 @@ LIB2ADD = \
        $(srcdir)/config/msp430/floathisf.c \
        $(srcdir)/config/msp430/cmpd.c
 
-HOST_LIBGCC2_CFLAGS += -Os -ffunction-sections -fdata-sections
+HOST_LIBGCC2_CFLAGS += -Os -ffunction-sections -fdata-sections -mhwmult=none
 
 # Local Variables:
 # mode: Makefile
index ec6e5db..0b95391 100644 (file)
@@ -4,6 +4,8 @@
 SHLIB_LDFLAGS = -Wl,-h,$(SHLIB_SONAME) -Wl,-z,text -Wl,-z,defs \
        -Wl,-M,$(SHLIB_MAP)
 
+ifeq ($(enable_shared),yes)
+
 # Linker mapfile to enforce direct binding to libgcc_s unwinder
 # (PR target/59788).
 libgcc-unwind.map: libgcc-std.ver
@@ -26,3 +28,5 @@ install-libgcc-unwind-map: libgcc-unwind.map
        $(INSTALL_DATA) $< $(DESTDIR)$(slibdir)
 
 install: install-libgcc-unwind-map
+
+endif
index 91d283d..9f6304d 100644 (file)
@@ -1,3 +1,28 @@
+2014-05-26  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       Backport from mainline
+       PR libfortran/61310
+       * intrinsics/ctime.c (strctime): Rename to gf_ctime, use snprintf
+       instead of strftime.
+       (fdate): Use gf_ctime.
+       (fdate_sub): Likewise.
+       (ctime): Likewise.
+       (ctime_sub): Likewise.
+
+2014-05-16  Janne Blomqvist  <jb@gcc.gnu.org>
+
+       Backport from trunk:
+       PR libfortran/61187
+       * io/unix.c (raw_close): Check if s->fd is -1.
+       (fd_to_stream): Check return value of fstat(), handle error.
+
+2014-05-10  Jerry DeLisle  <jvdelisle@gcc.gnu>
+
+       Backport from Trunk.
+       PR libfortran/61049
+       * io/list_read.c (list_formatted_read_scalar): Use eat_separator
+       and delete extraneous code.
+
 2014-04-22  Release Manager
 
        * GCC 4.9.0 released.
index db41f02..9cda39b 100644 (file)
@@ -31,31 +31,53 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include <string.h>
 
 
-/* strftime-like function that fills a C string with %c format which
-   is identical to ctime in the default locale. As ctime and ctime_r
-   are poorly specified and their usage not recommended, the
-   implementation instead uses strftime.  */
-
-static size_t
-strctime (char *s, size_t max, const time_t *timep)
+/* Maximum space a ctime-like string might need. A "normal" ctime
+   string is 26 bytes, and in our case 24 bytes as we don't include
+   the trailing newline and null. However, the longest possible year
+   number is -2,147,481,748 (1900 - 2,147,483,648, since tm_year is a
+   32-bit signed integer) so an extra 7 bytes are needed. */
+#define CTIME_BUFSZ 31
+
+
+/* Thread-safe ctime-like function that fills a Fortran
+   string. ctime_r is a portability headache and marked as obsolescent
+   in POSIX 2008, which recommends strftime in its place. However,
+   strftime(..., "%c",...)  doesn't produce ctime-like output on
+   MinGW, so do it manually with snprintf.  */
+
+static int
+gf_ctime (char *s, size_t max, const time_t timev)
 {
   struct tm ltm;
   int failed;
+  char buf[CTIME_BUFSZ + 1];
   /* Some targets provide a localtime_r based on a draft of the POSIX
      standard where the return type is int rather than the
      standardized struct tm*.  */
-  __builtin_choose_expr (__builtin_classify_type (localtime_r (timep, &ltm)) 
+  __builtin_choose_expr (__builtin_classify_type (localtime_r (&timev, &ltm)) 
                         == 5,
-                        failed = localtime_r (timep, &ltm) == NULL,
-                        failed = localtime_r (timep, &ltm) != 0);
+                        failed = localtime_r (&timev, &ltm) == NULL,
+                        failed = localtime_r (&timev, &ltm) != 0);
   if (failed)
-    return 0;
-  return strftime (s, max, "%c", &ltm);
+    goto blank;
+  int n = snprintf (buf, sizeof (buf), 
+                   "%3.3s %3.3s%3d %.2d:%.2d:%.2d %d",
+                   "SunMonTueWedThuFriSat" + ltm.tm_wday * 3,
+                   "JanFebMarAprMayJunJulAugSepOctNovDec" + ltm.tm_mon * 3,
+                   ltm.tm_mday, ltm.tm_hour, ltm.tm_min, ltm.tm_sec, 
+                   1900 + ltm.tm_year);
+  if (n < 0)
+    goto blank;
+  if ((size_t) n <= max)
+    {
+      cf_strcpy (s, max, buf);
+      return n;
+    }
+ blank:
+  memset (s, ' ', max);
+  return 0;
 }
 
-/* In the default locale, the date and time representation fits in 26
-   bytes. However, other locales might need more space.  */
-#define CSZ 100
 
 extern void fdate (char **, gfc_charlen_type *);
 export_proto(fdate);
@@ -64,8 +86,8 @@ void
 fdate (char ** date, gfc_charlen_type * date_len)
 {
   time_t now = time(NULL);
-  *date = xmalloc (CSZ);
-  *date_len = strctime (*date, CSZ, &now);
+  *date = xmalloc (CTIME_BUFSZ);
+  *date_len = gf_ctime (*date, CTIME_BUFSZ, now);
 }
 
 
@@ -76,10 +98,7 @@ void
 fdate_sub (char * date, gfc_charlen_type date_len)
 {
   time_t now = time(NULL);
-  char *s = xmalloc (date_len + 1);
-  size_t n = strctime (s, date_len + 1, &now);
-  fstrcpy (date, date_len, s, n);
-  free (s);
+  gf_ctime (date, date_len, now);
 }
 
 
@@ -91,8 +110,8 @@ void
 PREFIX(ctime) (char ** date, gfc_charlen_type * date_len, GFC_INTEGER_8 t)
 {
   time_t now = t;
-  *date = xmalloc (CSZ);
-  *date_len = strctime (*date, CSZ, &now);
+  *date = xmalloc (CTIME_BUFSZ);
+  *date_len = gf_ctime (*date, CTIME_BUFSZ, now);
 }
 
 
@@ -103,8 +122,5 @@ void
 ctime_sub (GFC_INTEGER_8 * t, char * date, gfc_charlen_type date_len)
 {
   time_t now = *t;
-  char *s = xmalloc (date_len + 1);
-  size_t n = strctime (s, date_len + 1, &now);
-  fstrcpy (date, date_len, s, n);
-  free (s);
+  gf_ctime (date, date_len, now);
 }
index 625ba0c..2e739f2 100644 (file)
@@ -1923,20 +1923,9 @@ list_formatted_read_scalar (st_parameter_dt *dtp, bt type, void *p,
        }
       if (is_separator (c))
        {
-         /* Found a null value. Do not use eat_separator here otherwise
-            we will do an extra read from stdin.  */
+         /* Found a null value.  */
          dtp->u.p.repeat_count = 0;
-
-         /* Set comma_flag.  */
-         if ((c == ';' 
-             && dtp->u.p.current_unit->decimal_status == DECIMAL_COMMA)
-             ||
-             (c == ','
-             && dtp->u.p.current_unit->decimal_status == DECIMAL_POINT))
-           {
-             dtp->u.p.comma_flag = 1;
-             goto cleanup;
-           }
+         eat_separator (dtp);
 
          /* Set end-of-line flag.  */
          if (c == '\n' || c == '\r')
@@ -1951,7 +1940,6 @@ list_formatted_read_scalar (st_parameter_dt *dtp, bt type, void *p,
          else
            goto cleanup;
        }
-
     }
   else
     {
index 34c2d0c..76ed84e 100644 (file)
@@ -412,7 +412,9 @@ raw_close (unix_stream * s)
 {
   int retval;
   
-  if (s->fd != STDOUT_FILENO
+  if (s->fd == -1)
+    retval = -1;
+  else if (s->fd != STDOUT_FILENO
       && s->fd != STDERR_FILENO
       && s->fd != STDIN_FILENO)
     retval = close (s->fd);
@@ -1003,7 +1005,15 @@ fd_to_stream (int fd, bool unformatted)
 
   /* Get the current length of the file. */
 
-  fstat (fd, &statbuf);
+  if (fstat (fd, &statbuf) == -1)
+    {
+      s->st_dev = s->st_ino = -1;
+      s->file_length = 0;
+      if (errno == EBADF)
+       s->fd = -1;
+      raw_init (s);
+      return (stream *) s;
+    }
 
   s->st_dev = statbuf.st_dev;
   s->st_ino = statbuf.st_ino;
index 7385435..2ee0cfc 100644 (file)
 /* Define to 1 if you have the `renameat' function. */
 #undef HAVE_RENAMEAT
 
+/* Define to 1 if you have the <sched.h> header file. */
+#undef HAVE_SCHED_H
+
 /* Define to 1 if you have the `sem_timedwait' function. */
 #undef HAVE_SEM_TIMEDWAIT
 
index f4b8c10..1223204 100755 (executable)
@@ -14627,7 +14627,7 @@ no)
   ;;
 esac
 
-for ac_header in sys/file.h sys/mman.h syscall.h sys/epoll.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/reboot.h netinet/icmp6.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h
+for ac_header in sched.h sys/file.h sys/mman.h syscall.h sys/epoll.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/reboot.h netinet/icmp6.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h
 do :
   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
 ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
index 4480261..754e190 100644 (file)
@@ -480,7 +480,7 @@ no)
   ;;
 esac
 
-AC_CHECK_HEADERS(sys/file.h sys/mman.h syscall.h sys/epoll.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/reboot.h netinet/icmp6.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h)
+AC_CHECK_HEADERS(sched.h sys/file.h sys/mman.h syscall.h sys/epoll.h sys/inotify.h sys/ptrace.h sys/syscall.h sys/user.h sys/utsname.h sys/select.h sys/socket.h net/if.h net/if_arp.h net/route.h netpacket/packet.h sys/prctl.h sys/mount.h sys/vfs.h sys/statfs.h sys/timex.h sys/sysinfo.h utime.h linux/ether.h linux/fs.h linux/reboot.h netinet/icmp6.h netinet/in_syst.h netinet/ip.h netinet/ip_mroute.h netinet/if_ether.h)
 
 AC_CHECK_HEADERS([linux/filter.h linux/if_addr.h linux/if_ether.h linux/if_tun.h linux/netlink.h linux/rtnetlink.h], [], [],
 [#ifdef HAVE_SYS_SOCKET_H
index 025729c..bb6abfd 100755 (executable)
@@ -163,6 +163,9 @@ cat > sysinfo.c <<EOF
 #if defined(HAVE_NETINET_ICMP6_H)
 #include <netinet/icmp6.h>
 #endif
+#if defined(HAVE_SCHED_H)
+#include <sched.h>
+#endif
 
 /* Constants that may only be defined as expressions on some systems,
    expressions too complex for -fdump-go-spec to handle.  These are
@@ -177,6 +180,18 @@ enum {
 #ifdef TIOCSCTTY
   TIOCSCTTY_val = TIOCSCTTY,
 #endif
+#ifdef TIOCGPTN
+  TIOCGPTN_val = TIOCGPTN,
+#endif
+#ifdef TIOCSPTLCK
+  TIOCSPTLCK_val = TIOCSPTLCK,
+#endif
+#ifdef TIOCGDEV
+  TIOCGDEV_val = TIOCGDEV,
+#endif
+#ifdef TIOCSIG
+  TIOCSIG_val = TIOCSIG,
+#endif
 };
 EOF
 
@@ -775,6 +790,26 @@ if ! grep '^const TIOCSCTTY' ${OUT} >/dev/null 2>&1; then
     echo 'const TIOCSCTTY = _TIOCSCTTY_val' >> ${OUT}
   fi
 fi
+if ! grep '^const TIOCGPTN' ${OUT} >/dev/null 2>&1; then
+  if grep '^const _TIOCGPTN_val' ${OUT} >/dev/null 2>&1; then
+    echo 'const TIOCGPTN = _TIOCGPTN_val' >> ${OUT}
+  fi
+fi
+if ! grep '^const TIOCSPTLCK' ${OUT} >/dev/null 2>&1; then
+  if grep '^const _TIOCSPTLCK_val' ${OUT} >/dev/null 2>&1; then
+    echo 'const TIOCSPTLCK = _TIOCSPTLCK_val' >> ${OUT}
+  fi
+fi
+if ! grep '^const TIOCGDEV' ${OUT} >/dev/null 2>&1; then
+  if grep '^const _TIOCGDEV_val' ${OUT} >/dev/null 2>&1; then
+    echo 'const TIOCGDEV = _TIOCGDEV_val' >> ${OUT}
+  fi
+fi
+if ! grep '^const TIOCSIG' ${OUT} >/dev/null 2>&1; then
+  if grep '^const _TIOCSIG_val' ${OUT} >/dev/null 2>&1; then
+    echo 'const TIOCSIG = _TIOCSIG_val' >> ${OUT}
+  fi
+fi
 
 # The ioctl flags for terminal control
 grep '^const _TC[GS]ET' gen-sysinfo.go | \
@@ -1130,6 +1165,10 @@ grep '^type _inotify_event ' gen-sysinfo.go | \
       -e 's/\[0\]byte/[0]int8/' \
     >> ${OUT}
 
+# The GNU/Linux CLONE flags.
+grep '^const _CLONE_' gen-sysinfo.go | \
+  sed -e 's/^\(const \)_\(CLONE_[^= ]*\)\(.*\)$/\1\2 = _\2/' >> ${OUT}
+
 # The Solaris 11 Update 1 _zone_net_addr_t struct.
 grep '^type _zone_net_addr_t ' gen-sysinfo.go | \
     sed -e 's/_in6_addr/[16]byte/' \
index 1bc0876..30516ad 100644 (file)
@@ -1117,7 +1117,8 @@ runtime_needm(void)
        if(runtime_needextram) {
                // Can happen if C/C++ code calls Go from a global ctor.
                // Can not throw, because scheduler is not initialized yet.
-               runtime_write(2, "fatal error: cgo callback before cgo call\n",
+               int rv __attribute__((unused));
+               rv = runtime_write(2, "fatal error: cgo callback before cgo call\n",
                        sizeof("fatal error: cgo callback before cgo call\n")-1);
                runtime_exit(1);
        }
index 819bfa1..1f14a8d 100644 (file)
@@ -1,3 +1,14 @@
+2014-05-21  Jakub Jelinek  <jakub@redhat.com>
+
+       PR middle-end/61252
+       * testsuite/libgomp.c++/simd-9.C: New test.
+
+2014-05-18  Uros Bizjak  <ubizjak@gmail.com>
+
+       * libgomp.texi (Runitme Library Routines): Remove multiple @menu.
+       (Environment Variables) Move OMP_PROC_BIND and OMP_STACKSIZE node
+       texts according to their @menu entry positions.
+
 2014-05-02  Jakub Jelinek  <jakub@redhat.com>
 
        * testsuite/libgomp.c/simd-10.c: New test.
index 8461c5b..254be57 100644 (file)
@@ -130,10 +130,10 @@ The runtime routines described here are defined by Section 3 of the OpenMP
 specification in version 4.0.  The routines are structured in following
 three parts:
 
+@menu
 Control threads, processors and the parallel environment.  They have C
 linkage, and do not throw exceptions.
 
-@menu
 * omp_get_active_level::        Number of active parallel regions
 * omp_get_ancestor_thread_num:: Ancestor thread ID
 * omp_get_cancellation::        Whether cancellation support is enabled
@@ -162,11 +162,9 @@ linkage, and do not throw exceptions.
 * omp_set_nested::              Enable/disable nested parallel regions
 * omp_set_num_threads::         Set upper team size limit
 * omp_set_schedule::            Set the runtime scheduling method
-@end menu
 
 Initialize, set, test, unset and destroy simple and nested locks.
 
-@menu
 * omp_init_lock::            Initialize simple lock
 * omp_set_lock::             Wait for and set simple lock
 * omp_test_lock::            Test and set simple lock if available
@@ -177,11 +175,9 @@ Initialize, set, test, unset and destroy simple and nested locks.
 * omp_test_nest_lock::       Test and set nested lock if available
 * omp_unset_nest_lock::      Unset nested lock
 * omp_destroy_nest_lock::    Destroy nested lock
-@end menu
 
 Portable, thread-based, wall clock timer.
 
-@menu
 * omp_get_wtick::            Get timer precision.
 * omp_get_wtime::            Elapsed wall clock time.
 @end menu
@@ -1448,6 +1444,33 @@ level.  If undefined one thread per CPU is used.
 
 
 
+@node OMP_PROC_BIND
+@section @env{OMP_PROC_BIND} -- Whether theads may be moved between CPUs
+@cindex Environment Variable
+@table @asis
+@item @emph{Description}:
+Specifies whether threads may be moved between processors.  If set to
+@code{TRUE}, OpenMP theads should not be moved; if set to @code{FALSE}
+they may be moved.  Alternatively, a comma separated list with the
+values @code{MASTER}, @code{CLOSE} and @code{SPREAD} can be used to specify
+the thread affinity policy for the corresponding nesting level.  With
+@code{MASTER} the worker threads are in the same place partition as the
+master thread.  With @code{CLOSE} those are kept close to the master thread
+in contiguous place partitions.  And with @code{SPREAD} a sparse distribution
+across the place partitions is used.
+
+When undefined, @env{OMP_PROC_BIND} defaults to @code{TRUE} when
+@env{OMP_PLACES} or @env{GOMP_CPU_AFFINITY} is set and @code{FALSE} otherwise.
+
+@item @emph{See also}:
+@ref{OMP_PLACES}, @ref{GOMP_CPU_AFFINITY}, @ref{omp_get_proc_bind}
+
+@item @emph{Reference}:
+@uref{http://www.openmp.org/, OpenMP specification v4.0}, Section 4.4
+@end table
+
+
+
 @node OMP_PLACES
 @section @env{OMP_PLACES} -- Specifies on which CPUs the theads should be placed
 @cindex Environment Variable
@@ -1490,29 +1513,22 @@ between CPUs following no placement policy.
 
 
 
-@node OMP_PROC_BIND
-@section @env{OMP_PROC_BIND} -- Whether theads may be moved between CPUs
+@node OMP_STACKSIZE
+@section @env{OMP_STACKSIZE} -- Set default thread stack size
 @cindex Environment Variable
 @table @asis
 @item @emph{Description}:
-Specifies whether threads may be moved between processors.  If set to
-@code{TRUE}, OpenMP theads should not be moved; if set to @code{FALSE}
-they may be moved.  Alternatively, a comma separated list with the
-values @code{MASTER}, @code{CLOSE} and @code{SPREAD} can be used to specify
-the thread affinity policy for the corresponding nesting level.  With
-@code{MASTER} the worker threads are in the same place partition as the
-master thread.  With @code{CLOSE} those are kept close to the master thread
-in contiguous place partitions.  And with @code{SPREAD} a sparse distribution
-across the place partitions is used.
-
-When undefined, @env{OMP_PROC_BIND} defaults to @code{TRUE} when
-@env{OMP_PLACES} or @env{GOMP_CPU_AFFINITY} is set and @code{FALSE} otherwise.
-
-@item @emph{See also}:
-@ref{OMP_PLACES}, @ref{GOMP_CPU_AFFINITY}, @ref{omp_get_proc_bind}
+Set the default thread stack size in kilobytes, unless the number
+is suffixed by @code{B}, @code{K}, @code{M} or @code{G}, in which
+case the size is, respectively, in bytes, kilobytes, megabytes
+or gigabytes.  This is different from @code{pthread_attr_setstacksize}
+which gets the number of bytes as an argument.  If the stack size cannot
+be set due to system constraints, an error is reported and the initial
+stack size is left unchanged.  If undefined, the stack size is system
+dependent.
 
-@item @emph{Reference}:
-@uref{http://www.openmp.org/, OpenMP specification v4.0}, Section 4.4
+@item @emph{Reference}: 
+@uref{http://www.openmp.org/, OpenMP specification v4.0}, Section 4.7
 @end table
 
 
@@ -1538,26 +1554,6 @@ dynamic scheduling and a chunk size of 1 is used.
 
 
 
-@node OMP_STACKSIZE
-@section @env{OMP_STACKSIZE} -- Set default thread stack size
-@cindex Environment Variable
-@table @asis
-@item @emph{Description}:
-Set the default thread stack size in kilobytes, unless the number
-is suffixed by @code{B}, @code{K}, @code{M} or @code{G}, in which
-case the size is, respectively, in bytes, kilobytes, megabytes
-or gigabytes.  This is different from @code{pthread_attr_setstacksize}
-which gets the number of bytes as an argument.  If the stack size cannot
-be set due to system constraints, an error is reported and the initial
-stack size is left unchanged.  If undefined, the stack size is system
-dependent.
-
-@item @emph{Reference}: 
-@uref{http://www.openmp.org/, OpenMP specification v4.0}, Section 4.7
-@end table
-
-
-
 @node OMP_THREAD_LIMIT
 @section @env{OMP_THREAD_LIMIT} -- Set the maximum number of threads
 @cindex Environment Variable
diff --git a/libgomp/testsuite/libgomp.c++/simd-9.C b/libgomp/testsuite/libgomp.c++/simd-9.C
new file mode 100644 (file)
index 0000000..3c567b3
--- /dev/null
@@ -0,0 +1,52 @@
+// { dg-do run }
+// { dg-options "-O2" }
+// { dg-additional-options "-msse2" { target sse2_runtime } }
+// { dg-additional-options "-mavx" { target avx_runtime } }
+
+extern "C" void abort ();
+int a[1024] __attribute__((aligned (32))) = { 1 };
+#pragma omp declare reduction (foo:int:omp_out += omp_in) \
+                   initializer (omp_priv = 0)
+
+__attribute__((noinline, noclone)) void
+foo (int &u, int &v)
+{
+  int i;
+  #pragma omp simd aligned(a : 32) reduction(foo:u) reduction(+:v)
+  for (i = 0; i < 1024; i++)
+    {
+      int x = a[i];
+      u += x;
+      v += x;
+    }
+}
+
+__attribute__((noinline, noclone)) void
+bar (int &u, int &v)
+{
+  int i;
+  #pragma omp simd aligned(a : 32) reduction(foo:u) reduction(+:v) \
+                  safelen(1)
+  for (i = 0; i < 1024; i++)
+    {
+      int x = a[i];
+      u += x;
+      v += x;
+    }
+}
+
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 1024; i++)
+    a[i] = (i & 31) + (i / 128);
+  int u = 0, v = 0;
+  foo (u, v);
+  if (u != 19456 || v != 19456)
+    abort ();
+  u = 0; v = 0;
+  bar (u, v);
+  if (u != 19456 || v != 19456)
+    abort ();
+}
index 9bd84a5..5c1b352 100644 (file)
@@ -1,3 +1,10 @@
+2014-05-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * acinclude.m4 (LIBITM_CHECK_LINKER_HWCAP): Check for
+       -mclear-hwcap instead.
+       * configure: Regenerate.
+       * clearcap.map: Remove.
+
 2014-04-22  Release Manager
 
        * GCC 4.9.0 released.
index ca7e0a9..a82f6d6 100644 (file)
@@ -301,10 +301,10 @@ AC_DEFUN([LIBITM_CHECK_LINKER_FEATURES], [
 
 dnl
 dnl Check if the linker used supports linker maps to clear hardware
-dnl capabilities.  This is only supported by Sun ld at the moment.
+dnl capabilities.  This is only supported on Solaris at the moment.
 dnl
 dnl Defines:
-dnl  HWCAP_LDFLAGS='-Wl,-M,clearcap.map' if possible
+dnl  HWCAP_LDFLAGS=-mclear-hwcap if possible
 dnl  LD (as a side effect of testing)
 dnl
 AC_DEFUN([LIBITM_CHECK_LINKER_HWCAP], [
@@ -312,12 +312,12 @@ AC_DEFUN([LIBITM_CHECK_LINKER_HWCAP], [
   AC_REQUIRE([AC_PROG_LD])
 
   ac_save_LDFLAGS="$LDFLAGS"
-  LDFLAGS="$LFLAGS -Wl,-M,$srcdir/clearcap.map"
+  LDFLAGS="$LFLAGS -mclear-hwcap"
 
-  AC_MSG_CHECKING([for ld that supports -Wl,-M,mapfile])
+  AC_MSG_CHECKING([for -mclear-hwcap])
   AC_TRY_LINK([], [return 0;], [ac_hwcap_ldflags=yes],[ac_hwcap_ldflags=no])
   if test "$ac_hwcap_ldflags" = "yes"; then
-    HWCAP_LDFLAGS="-Wl,-M,$srcdir/clearcap.map $HWCAP_LDFLAGS"
+    HWCAP_LDFLAGS="-mclear-hwcap $HWCAP_LDFLAGS"
   fi
   AC_MSG_RESULT($ac_hwcap_ldflags)
 
diff --git a/libitm/clearcap.map b/libitm/clearcap.map
deleted file mode 100644 (file)
index bd8189b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Clear hardware capabilities emitted by Sun as: calls to the x86_avx.c
-# functions are only emitted with -mavx.
-#
-# The v1 mapfile syntax has no support for clearing specific capabilities,
-# so clear everything.
-#
-hwcap_1 = V0x0 OVERRIDE;
-#
-# If we can assume mapfile v2 syntax, we can specificially clear AVX.
-#
-#$mapfile_version 2
-#CAPABILITY {
-#      HW -= AVX;
-#};
index 031c19c..ce6d50a 100644 (file)
@@ -16739,10 +16739,10 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
   ac_save_LDFLAGS="$LDFLAGS"
-  LDFLAGS="$LFLAGS -Wl,-M,$srcdir/clearcap.map"
+  LDFLAGS="$LFLAGS -mclear-hwcap"
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld that supports -Wl,-M,mapfile" >&5
-$as_echo_n "checking for ld that supports -Wl,-M,mapfile... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -mclear-hwcap" >&5
+$as_echo_n "checking for -mclear-hwcap... " >&6; }
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -16762,7 +16762,7 @@ fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
   if test "$ac_hwcap_ldflags" = "yes"; then
-    HWCAP_LDFLAGS="-Wl,-M,$srcdir/clearcap.map $HWCAP_LDFLAGS"
+    HWCAP_LDFLAGS="-mclear-hwcap $HWCAP_LDFLAGS"
   fi
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_hwcap_ldflags" >&5
 $as_echo "$ac_hwcap_ldflags" >&6; }
index 12e6b5c..31b4ab4 100644 (file)
@@ -1,3 +1,78 @@
+2014-05-29  Jonathan Wakely  <jwakely@redhat.com>
+
+       * include/tr2/bool_set: Use UTF-8 for accented characters.
+       * scripts/run_doxygen: Handle Doxygen 1.8.x change.
+
+2014-05-27  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR libstdc++/61329
+       * include/bits/regex_automaton.tcc (_State_base::_M_print): Add
+       inline specifier.
+       (_State_base::_M_dot): Likewise.
+
+2014-05-23  François Dumont  <fdumont@gcc.gnu.org>
+
+       PR libstdc++/61143
+       * include/bits/hashtable.h: Fix move semantic to leave hashtable in a
+       usable state.
+       * testsuite/23_containers/unordered_set/61143.cc: New.
+       * testsuite/23_containers/unordered_set/modifiers/swap.cc: New.
+
+2014-05-17  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR libstdc++/60966
+       * include/std/future (__future_base::_State_baseV2::_M_set_result):
+       Signal condition variable after call_once returns.
+       (__future_base::_State_baseV2::_M_do_set): Do not signal here.
+       (promise::set_value, promise::set_exception): Increment the reference
+       count on the shared state until the function returns.
+       * testsuite/30_threads/promise/60966.cc: New.
+
+2014-05-08  Joshua Gay  <jgay@gnu.org>
+
+       PR libstdc++/61117
+       * doc/xml/faq.xml (faq.license.what_restrictions): Replace "open
+       source" with "free software".
+       * doc/html/faq.html: Likewise.
+
+2014-05-08  Jonathan Wakely  <jwakely@redhat.com>
+
+       * include/std/iostream: Fix URL in comment.
+       * src/c++98/ios_init.cc: Fix path in comment.
+
+2014-05-07  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR libstdc++/61023
+       * include/bits/stl_tree.h (_Rb_tree::_M_move_assign): Copy the
+       comparison function.
+       * testsuite/23_containers/set/cons/61023.cc: New.
+
+       PR libstdc++/61086
+       * include/bits/stl_iterator.h (__normal_iterator::_M_const_cast):
+       Remove.
+       * include/bits/stl_vector.h (vector::insert, vector::erase): Use
+       arithmetic to obtain a mutable iterator from const_iterator.
+       * include/bits/vector.tcc (vector::insert): Likewise.
+       * include/debug/vector (vector::erase): Likewise.
+       * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
+       Adjust dg-error line number.
+       * testsuite/23_containers/vector/requirements/dr438/
+       constructor_1_neg.cc: Likewise.
+       * testsuite/23_containers/vector/requirements/dr438/
+       constructor_2_neg.cc: Likewise.
+       * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc:
+       Likewise.
+
+2014-05-06  Jonathan Wakely  <jwakely@redhat.com>
+
+       Backport from mainline
+       2014-04-15  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR libstdc++/60594
+       * include/std/functional (function::_Callable): Exclude own type
+       from the callable checks.
+       * testsuite/20_util/function/60594.cc: New.
+
 2014-05-02  Jonathan Wakely  <jwakely@redhat.com>
 
        PR libstdc++/59476
index 2e0f3e2..81b295f 100644 (file)
     </p></td></tr><tr class="question"><td align="left" valign="top"><a id="faq.license.what_restrictions"></a><a id="q-license.what_restrictions"></a><p><strong>2.4.</strong></p></td><td align="left" valign="top"><p>
       I see. So, what restrictions are there on programs that use the library?
     </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-license.what_restrictions"></a></td><td align="left" valign="top"><p>
-      None.  We encourage such programs to be released as open source,
+      None.  We encourage such programs to be released as free software,
      but we won't punish you or sue you if you choose otherwise.
     </p></td></tr><tr class="toc"><td align="left" valign="top" colspan="2"><dl><dt>3.1. <a href="faq.html#faq.how_to_install">How do I install libstdc++?
     </a></dt><dt>3.2. <a href="faq.html#faq.how_to_get_sources">How does one get current libstdc++ sources?
index 3a2fbad..69e2f90 100644 (file)
   </question>
   <answer xml:id="a-license.what_restrictions">
     <para>
-      None.  We encourage such programs to be released as open source,
+      None.  We encourage such programs to be released as free software,
      but we won't punish you or sue you if you choose otherwise.
     </para> 
   </answer>
index 22e17d2..9b6394c 100644 (file)
@@ -316,14 +316,49 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       size_type                        _M_element_count;
       _RehashPolicy            _M_rehash_policy;
 
+      // A single bucket used when only need for 1 bucket. Especially
+      // interesting in move semantic to leave hashtable with only 1 buckets
+      // which is not allocated so that we can have those operations noexcept
+      // qualified.
+      // Note that we can't leave hashtable with 0 bucket without adding
+      // numerous checks in the code to avoid 0 modulus.
+      __bucket_type            _M_single_bucket;
+
+      bool
+      _M_uses_single_bucket(__bucket_type* __bkts) const
+      { return __builtin_expect(_M_buckets == &_M_single_bucket, false); }
+
+      bool
+      _M_uses_single_bucket() const
+      { return _M_uses_single_bucket(_M_buckets); }
+
       __hashtable_alloc&
       _M_base_alloc() { return *this; }
 
-      using __hashtable_alloc::_M_deallocate_buckets;
+      __bucket_type*
+      _M_allocate_buckets(size_type __n)
+      {
+       if (__builtin_expect(__n == 1, false))
+         {
+           _M_single_bucket = nullptr;
+           return &_M_single_bucket;
+         }
+
+       return __hashtable_alloc::_M_allocate_buckets(__n);
+      }
+
+      void
+      _M_deallocate_buckets(__bucket_type* __bkts, size_type __n)
+      {
+       if (_M_uses_single_bucket(__bkts))
+         return;
+
+       __hashtable_alloc::_M_deallocate_buckets(__bkts, __n);
+      }
 
       void
       _M_deallocate_buckets()
-      { this->_M_deallocate_buckets(_M_buckets, _M_bucket_count); }
+      { _M_deallocate_buckets(_M_buckets, _M_bucket_count); }
 
       // Gets bucket begin, deals with the fact that non-empty buckets contain
       // their before begin node.
@@ -703,11 +738,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       size_type
       erase(const key_type& __k)
-      {
-       if (__builtin_expect(_M_bucket_count == 0, false))
-         return 0;
-       return _M_erase(__unique_keys(), __k);
-      }
+      { return _M_erase(__unique_keys(), __k); }
 
       iterator
       erase(const_iterator, const_iterator);
@@ -768,7 +799,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       _M_rehash_policy()
     {
       _M_bucket_count = _M_rehash_policy._M_next_bkt(__bucket_hint);
-      _M_buckets = this->_M_allocate_buckets(_M_bucket_count);
+      _M_buckets = _M_allocate_buckets(_M_bucket_count);
     }
 
   template<typename _Key, typename _Value,
@@ -796,7 +827,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            std::max(_M_rehash_policy._M_bkt_for_elements(__nb_elems),
                     __bucket_hint));
 
-       _M_buckets = this->_M_allocate_buckets(_M_bucket_count);
+       _M_buckets = _M_allocate_buckets(_M_bucket_count);
        __try
          {
            for (; __f != __l; ++__f)
@@ -833,9 +864,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
              {
                // Replacement allocator cannot free existing storage.
                this->_M_deallocate_nodes(_M_begin());
-               if (__builtin_expect(_M_bucket_count != 0, true))
-                 _M_deallocate_buckets();
-               _M_reset();
+               _M_before_begin._M_nxt = nullptr;
+               _M_deallocate_buckets();
+               _M_buckets = nullptr;
                std::__alloc_on_copy(__this_alloc, __that_alloc);
                __hashtable_base::operator=(__ht);
                _M_bucket_count = __ht._M_bucket_count;
@@ -867,7 +898,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        if (_M_bucket_count != __ht._M_bucket_count)
          {
            __former_buckets = _M_buckets;
-           _M_buckets = this->_M_allocate_buckets(__ht._M_bucket_count);
+           _M_buckets = _M_allocate_buckets(__ht._M_bucket_count);
            _M_bucket_count = __ht._M_bucket_count;
          }
        else
@@ -885,8 +916,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                      [&__roan](const __node_type* __n)
                      { return __roan(__n->_M_v()); });
            if (__former_buckets)
-             this->_M_deallocate_buckets(__former_buckets,
-                                         __former_bucket_count);
+             _M_deallocate_buckets(__former_buckets, __former_bucket_count);
          }
        __catch(...)
          {
@@ -917,7 +947,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       {
        __bucket_type* __buckets = nullptr;
        if (!_M_buckets)
-         _M_buckets = __buckets = this->_M_allocate_buckets(_M_bucket_count);
+         _M_buckets = __buckets = _M_allocate_buckets(_M_bucket_count);
 
        __try
          {
@@ -964,8 +994,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     _M_reset() noexcept
     {
       _M_rehash_policy._M_reset();
-      _M_bucket_count = 0;
-      _M_buckets = nullptr;
+      _M_bucket_count = 1;
+      _M_single_bucket = nullptr;
+      _M_buckets = &_M_single_bucket;
       _M_before_begin._M_nxt = nullptr;
       _M_element_count = 0;
     }
@@ -980,12 +1011,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     _M_move_assign(_Hashtable&& __ht, std::true_type)
     {
       this->_M_deallocate_nodes(_M_begin());
-      if (__builtin_expect(_M_bucket_count != 0, true))
-       _M_deallocate_buckets();
-
+      _M_deallocate_buckets();
       __hashtable_base::operator=(std::move(__ht));
       _M_rehash_policy = __ht._M_rehash_policy;
-      _M_buckets = __ht._M_buckets;
+      if (!__ht._M_uses_single_bucket())
+       _M_buckets = __ht._M_buckets;
+      else
+       {
+         _M_buckets = &_M_single_bucket;
+         _M_single_bucket = __ht._M_single_bucket;
+       }
       _M_bucket_count = __ht._M_bucket_count;
       _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt;
       _M_element_count = __ht._M_element_count;
@@ -1019,7 +1054,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
          if (_M_bucket_count != __ht._M_bucket_count)
            {
              __former_buckets = _M_buckets;
-             _M_buckets = this->_M_allocate_buckets(__ht._M_bucket_count);
+             _M_buckets = _M_allocate_buckets(__ht._M_bucket_count);
              _M_bucket_count = __ht._M_bucket_count;
            }
          else
@@ -1093,10 +1128,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       _M_element_count(__ht._M_element_count),
       _M_rehash_policy(__ht._M_rehash_policy)
     {
+      // Update, if necessary, buckets if __ht is using its single bucket.
+      if (__ht._M_uses_single_bucket())
+       {
+         _M_buckets = &_M_single_bucket;
+         _M_single_bucket = __ht._M_single_bucket;
+       }
+
       // Update, if necessary, bucket pointing to before begin that hasn't
       // moved.
       if (_M_begin())
        _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin;
+
       __ht._M_reset();
     }
 
@@ -1139,7 +1182,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     {
       if (__ht._M_node_allocator() == this->_M_node_allocator())
        {
-         _M_buckets = __ht._M_buckets;
+         if (__ht._M_uses_single_bucket())
+           {
+             _M_buckets = &_M_single_bucket;
+             _M_single_bucket = __ht._M_single_bucket;
+           }
+         else
+           _M_buckets = __ht._M_buckets;
+
          _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt;
          // Update, if necessary, bucket pointing to before begin that hasn't
          // moved.
@@ -1189,15 +1239,34 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
       std::__alloc_on_swap(this->_M_node_allocator(), __x._M_node_allocator());
       std::swap(_M_rehash_policy, __x._M_rehash_policy);
-      std::swap(_M_buckets, __x._M_buckets);
+
+      // Deal properly with potentially moved instances.
+      if (this->_M_uses_single_bucket())
+       {
+         if (!__x._M_uses_single_bucket())
+           {
+             _M_buckets = __x._M_buckets;
+             __x._M_buckets = &__x._M_single_bucket;
+           }
+       }
+      else if (__x._M_uses_single_bucket())
+       {
+         __x._M_buckets = _M_buckets;
+         _M_buckets = &_M_single_bucket;
+       }       
+      else
+       std::swap(_M_buckets, __x._M_buckets);
+
       std::swap(_M_bucket_count, __x._M_bucket_count);
       std::swap(_M_before_begin._M_nxt, __x._M_before_begin._M_nxt);
       std::swap(_M_element_count, __x._M_element_count);
+      std::swap(_M_single_bucket, __x._M_single_bucket);
 
       // Fix buckets containing the _M_before_begin pointers that can't be
       // swapped.
       if (_M_begin())
        _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin;
+
       if (__x._M_begin())
        __x._M_buckets[__x._M_bucket_index(__x._M_begin())]
          = &__x._M_before_begin;
@@ -1230,9 +1299,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
               _H1, _H2, _Hash, _RehashPolicy, _Traits>::
     find(const key_type& __k)
     {
-      if (__builtin_expect(_M_bucket_count == 0, false))
-       return end();
-
       __hash_code __code = this->_M_hash_code(__k);
       std::size_t __n = _M_bucket_index(__k, __code);
       __node_type* __p = _M_find_node(__n, __k, __code);
@@ -1250,9 +1316,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
               _H1, _H2, _Hash, _RehashPolicy, _Traits>::
     find(const key_type& __k) const
     {
-      if (__builtin_expect(_M_bucket_count == 0, false))
-       return end();
-      
       __hash_code __code = this->_M_hash_code(__k);
       std::size_t __n = _M_bucket_index(__k, __code);
       __node_type* __p = _M_find_node(__n, __k, __code);
@@ -1270,9 +1333,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
               _H1, _H2, _Hash, _RehashPolicy, _Traits>::
     count(const key_type& __k) const
     {
-      if (__builtin_expect(_M_bucket_count == 0, false))
-       return 0;
-
       __hash_code __code = this->_M_hash_code(__k);
       std::size_t __n = _M_bucket_index(__k, __code);
       __node_type* __p = _M_bucket_begin(__n);
@@ -1287,7 +1347,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
          else if (__result)
            // All equivalent values are next to each other, if we
            // found a non-equivalent value after an equivalent one it
-           // means that we won't find any more equivalent values.
+           // means that we won't find any new equivalent value.
            break;
          if (!__p->_M_nxt || _M_bucket_index(__p->_M_next()) != __n)
            break;
@@ -1311,9 +1371,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
               _H1, _H2, _Hash, _RehashPolicy, _Traits>::
     equal_range(const key_type& __k)
     {
-      if (__builtin_expect(_M_bucket_count == 0, false))
-       return std::make_pair(end(), end());
-
       __hash_code __code = this->_M_hash_code(__k);
       std::size_t __n = _M_bucket_index(__k, __code);
       __node_type* __p = _M_find_node(__n, __k, __code);
@@ -1347,9 +1404,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
               _H1, _H2, _Hash, _RehashPolicy, _Traits>::
     equal_range(const key_type& __k) const
     {
-      if (__builtin_expect(_M_bucket_count == 0, false))
-       return std::make_pair(end(), end());
-       
       __hash_code __code = this->_M_hash_code(__k);
       std::size_t __n = _M_bucket_index(__k, __code);
       __node_type* __p = _M_find_node(__n, __k, __code);
@@ -1944,7 +1998,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
               _H1, _H2, _Hash, _RehashPolicy, _Traits>::
     _M_rehash_aux(size_type __n, std::true_type)
     {
-      __bucket_type* __new_buckets = this->_M_allocate_buckets(__n);
+      __bucket_type* __new_buckets = _M_allocate_buckets(__n);
       __node_type* __p = _M_begin();
       _M_before_begin._M_nxt = nullptr;
       std::size_t __bbegin_bkt = 0;
@@ -1969,8 +2023,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
          __p = __next;
        }
 
-      if (__builtin_expect(_M_bucket_count != 0, true))
-       _M_deallocate_buckets();
+      _M_deallocate_buckets();
       _M_bucket_count = __n;
       _M_buckets = __new_buckets;
     }
@@ -1986,7 +2039,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
               _H1, _H2, _Hash, _RehashPolicy, _Traits>::
     _M_rehash_aux(size_type __n, std::false_type)
     {
-      __bucket_type* __new_buckets = this->_M_allocate_buckets(__n);
+      __bucket_type* __new_buckets = _M_allocate_buckets(__n);
 
       __node_type* __p = _M_begin();
       _M_before_begin._M_nxt = nullptr;
@@ -2060,8 +2113,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
            __new_buckets[__next_bkt] = __prev_p;
        }
 
-      if (__builtin_expect(_M_bucket_count != 0, true))
-       _M_deallocate_buckets();
+      _M_deallocate_buckets();
       _M_bucket_count = __n;
       _M_buckets = __new_buckets;
     }
index 759b053..1a5bf08 100644 (file)
@@ -35,7 +35,7 @@ namespace __detail
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #ifdef _GLIBCXX_DEBUG
-  std::ostream&
+  inline std::ostream&
   _State_base::_M_print(std::ostream& ostr) const
   {
     switch (_M_opcode)
@@ -66,7 +66,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   }
 
   // Prints graphviz dot commands for state.
-  std::ostream&
+  inline std::ostream&
   _State_base::_M_dot(std::ostream& __ostr, _StateIdT __id) const
   {
     switch (_M_opcode)
index 1d2a524..aa3581e 100644 (file)
@@ -736,21 +736,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                      _Container>::__type>& __i) _GLIBCXX_NOEXCEPT
         : _M_current(__i.base()) { }
 
-#if __cplusplus >= 201103L
-      __normal_iterator<typename _Container::pointer, _Container>
-      _M_const_cast() const noexcept
-      {
-       using _PTraits = std::pointer_traits<typename _Container::pointer>;
-       return __normal_iterator<typename _Container::pointer, _Container>
-         (_PTraits::pointer_to(const_cast<typename _PTraits::element_type&>
-                               (*_M_current)));
-      }
-#else
-      __normal_iterator
-      _M_const_cast() const
-      { return *this; }
-#endif
-
       // Forward iterator requirements
       reference
       operator*() const _GLIBCXX_NOEXCEPT
index 4bc3c60..cac917e 100644 (file)
@@ -1073,6 +1073,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
     _M_move_assign(_Rb_tree& __x)
     {
+      _M_impl._M_key_compare = __x._M_impl._M_key_compare;
       if (_Alloc_traits::_S_propagate_on_move_assign()
          || _Alloc_traits::_S_always_equal()
          || _M_get_Node_allocator() == __x._M_get_Node_allocator())
index 7e52fde..c33e2c6 100644 (file)
@@ -1051,7 +1051,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       insert(const_iterator __position, size_type __n, const value_type& __x)
       {
        difference_type __offset = __position - cbegin();
-       _M_fill_insert(__position._M_const_cast(), __n, __x);
+       _M_fill_insert(begin() + __offset, __n, __x);
        return begin() + __offset;
       }
 #else
@@ -1096,7 +1096,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
               _InputIterator __last)
         {
          difference_type __offset = __position - cbegin();
-         _M_insert_dispatch(__position._M_const_cast(),
+         _M_insert_dispatch(begin() + __offset,
                             __first, __last, __false_type());
          return begin() + __offset;
        }
@@ -1144,10 +1144,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       iterator
 #if __cplusplus >= 201103L
       erase(const_iterator __position)
+      { return _M_erase(begin() + (__position - cbegin())); }
 #else
       erase(iterator __position)
+      { return _M_erase(__position); }
 #endif
-      { return _M_erase(__position._M_const_cast()); }
 
       /**
        *  @brief  Remove a range of elements.
@@ -1170,10 +1171,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       iterator
 #if __cplusplus >= 201103L
       erase(const_iterator __first, const_iterator __last)
+      {
+       const auto __beg = begin();
+       const auto __cbeg = cbegin();
+       return _M_erase(__beg + (__first - __cbeg), __beg + (__last - __cbeg));
+      }
 #else
       erase(iterator __first, iterator __last)
+      { return _M_erase(__first, __last); }
 #endif
-      { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); }
 
       /**
        *  @brief  Swaps data with another %vector.
index 1eff514..c937b38 100644 (file)
@@ -121,14 +121,17 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
       else
        {
 #if __cplusplus >= 201103L
+         const auto __pos = begin() + (__position - cbegin());
          if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
            {
              _Tp __x_copy = __x;
-             _M_insert_aux(__position._M_const_cast(), std::move(__x_copy));
+             _M_insert_aux(__pos, std::move(__x_copy));
            }
          else
+           _M_insert_aux(__pos, __x);
+#else
+           _M_insert_aux(__position, __x);
 #endif
-           _M_insert_aux(__position._M_const_cast(), __x);
        }
       return iterator(this->_M_impl._M_start + __n);
     }
@@ -307,7 +310,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
            ++this->_M_impl._M_finish;
          }
        else
-         _M_insert_aux(__position._M_const_cast(),
+         _M_insert_aux(begin() + (__position - cbegin()),
                        std::forward<_Args>(__args)...);
        return iterator(this->_M_impl._M_start + __n);
       }
index 2e9cd65..f7f54ee 100644 (file)
@@ -602,7 +602,7 @@ namespace __debug
          }
        else
 #if __cplusplus >= 201103L
-         return iterator(__first.base()._M_const_cast(), this);
+         return begin() + (__first.base() - cbegin().base());
 #else
          return __first;
 #endif
index 5a987d9..0e80fa3 100644 (file)
@@ -2149,8 +2149,15 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type)
        using _Invoke = decltype(__callable_functor(std::declval<_Functor&>())
                                 (std::declval<_ArgTypes>()...) );
 
+      // Used so the return type convertibility checks aren't done when
+      // performing overload resolution for copy construction/assignment.
+      template<typename _Tp>
+       using _NotSelf = __not_<is_same<_Tp, function>>;
+
       template<typename _Functor>
-       using _Callable = __check_func_return_type<_Invoke<_Functor>, _Res>;
+       using _Callable
+         = __and_<_NotSelf<_Functor>,
+                  __check_func_return_type<_Invoke<_Functor>, _Res>>;
 
       template<typename _Cond, typename _Tp>
        using _Requires = typename enable_if<_Cond::value, _Tp>::type;
@@ -2291,7 +2298,7 @@ _GLIBCXX_HAS_NESTED_TYPE(result_type)
        *  reference_wrapper<F>, this function will not throw.
        */
       template<typename _Functor>
-       _Requires<_Callable<_Functor>, function&>
+       _Requires<_Callable<typename decay<_Functor>::type>, function&>
        operator=(_Functor&& __f)
        {
          function(std::forward<_Functor>(__f)).swap(*this);
index 717ce71..998e90a 100644 (file)
@@ -365,12 +365,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       void
       _M_set_result(function<_Ptr_type()> __res, bool __ignore_failure = false)
       {
-        bool __set = __ignore_failure;
+        bool __set = false;
         // all calls to this function are serialized,
         // side-effects of invoking __res only happen once
         call_once(_M_once, &_State_baseV2::_M_do_set, this, ref(__res),
             ref(__set));
-        if (!__set)
+       if (__set)
+         _M_cond.notify_all();
+       else if (!__ignore_failure)
           __throw_future_error(int(future_errc::promise_already_satisfied));
       }
 
@@ -485,7 +487,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
           lock_guard<mutex> __lock(_M_mutex);
           _M_result.swap(__res);
         }
-        _M_cond.notify_all();
         __set = true;
       }
 
@@ -495,6 +496,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       virtual void _M_complete_async() { }
 
       // Return true if state contains a deferred function.
+      // Caller must own _M_mutex.
       virtual bool _M_has_deferred() const { return false; }
     };
 
@@ -1007,22 +1009,25 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       void
       set_value(const _Res& __r)
       {
+       auto __future = _M_future;
         auto __setter = _State::__setter(this, __r);
-        _M_future->_M_set_result(std::move(__setter));
+        __future->_M_set_result(std::move(__setter));
       }
 
       void
       set_value(_Res&& __r)
       {
+       auto __future = _M_future;
         auto __setter = _State::__setter(this, std::move(__r));
-        _M_future->_M_set_result(std::move(__setter));
+        __future->_M_set_result(std::move(__setter));
       }
 
       void
       set_exception(exception_ptr __p)
       {
+       auto __future = _M_future;
         auto __setter = _State::__setter(__p, this);
-        _M_future->_M_set_result(std::move(__setter));
+        __future->_M_set_result(std::move(__setter));
       }
     };
 
@@ -1105,15 +1110,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       void
       set_value(_Res& __r)
       {
+       auto __future = _M_future;
         auto __setter = _State::__setter(this, __r);
-        _M_future->_M_set_result(std::move(__setter));
+        __future->_M_set_result(std::move(__setter));
       }
 
       void
       set_exception(exception_ptr __p)
       {
+       auto __future = _M_future;
         auto __setter = _State::__setter(__p, this);
-        _M_future->_M_set_result(std::move(__setter));
+        __future->_M_set_result(std::move(__setter));
       }
     };
 
@@ -1190,8 +1197,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       void
       set_exception(exception_ptr __p)
       {
+       auto __future = _M_future;
         auto __setter = _State::__setter(__p, this);
-        _M_future->_M_set_result(std::move(__setter));
+        __future->_M_set_result(std::move(__setter));
       }
     };
 
@@ -1217,8 +1225,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   inline void
   promise<void>::set_value()
   {
+    auto __future = _M_future;
     auto __setter = _State::__setter(this);
-    _M_future->_M_set_result(std::move(__setter));
+    __future->_M_set_result(std::move(__setter));
   }
 
 
index 85d2b95..5c10869 100644 (file)
@@ -48,13 +48,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *
    *  The &lt;iostream&gt; header declares the eight <em>standard stream
    *  objects</em>.  For other declarations, see
-   *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt11ch24.html
+   *  http://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html
    *  and the @link iosfwd I/O forward declarations @endlink
    *
    *  They are required by default to cooperate with the global C
    *  library's @c FILE streams, and to be available during program
-   *  startup and termination. For more information, see the HOWTO
-   *  linked to above.
+   *  startup and termination. For more information, see the section of the
+   *  manual linked to above.
   */
   //@{
   extern istream cin;          /// Linked to standard input
index d97714c..34e58f4 100644 (file)
@@ -44,7 +44,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
    *  bool_set
    *
    *  See N2136, Bool_set: multi-valued logic
-   *  by Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion.
+   *  by Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion.
    *
    *  The implicit conversion to bool is slippery!  I may use the new
    *  explicit conversion.  This has been specialized in the language
index c81bc18..8f59936 100644 (file)
@@ -193,8 +193,15 @@ fi
 if $do_latex; then
     cd ${outdir}/${mode}
 
-    # Also drop in the header file and style sheet
-    doxygen -w latex header.tex doxygen.sty
+    # Grrr, Doxygen 1.8.x changed the -w latex options.
+    need_footer=`doxygen -h | sed -n -e '/-w latex/s=.*footer.*=true=p'`
+
+    # Also drop in the header file (maybe footer file) and style sheet
+    if $need_footer; then
+      doxygen -w latex header.tex footer.tex doxygen.sty
+    else
+      doxygen -w latex header.tex doxygen.sty
+    fi
     
     echo ::
     echo :: LaTeX pages begin with
index d8d2a0d..b5c14f2 100644 (file)
@@ -37,7 +37,7 @@ namespace __gnu_internal _GLIBCXX_VISIBILITY(hidden)
 {
   using namespace __gnu_cxx;
 
-  // Extern declarations for global objects in src/globals.cc.
+  // Extern declarations for global objects in src/c++98/globals.cc.
   extern stdio_sync_filebuf<char> buf_cout_sync;
   extern stdio_sync_filebuf<char> buf_cin_sync;
   extern stdio_sync_filebuf<char> buf_cerr_sync;
diff --git a/libstdc++-v3/testsuite/20_util/function/60594.cc b/libstdc++-v3/testsuite/20_util/function/60594.cc
new file mode 100644 (file)
index 0000000..be80b3f
--- /dev/null
@@ -0,0 +1,36 @@
+// { dg-options "-std=gnu++11" }
+// { dg-do compile }
+
+// Copyright (C) 2011-2014 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+// libstdc++/60594
+
+#include <functional>
+#include <type_traits>
+struct bar;
+using F = std::function<bar()>;
+// check for copy constructible and assignable while 'bar' is incomplete
+constexpr int c = std::is_copy_constructible<F>::value;
+constexpr int a = std::is_copy_assignable<F>::value;
+struct bar { };
+bar func();
+void test()
+{
+  F g{ &func };
+  g = func;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/set/cons/61023.cc b/libstdc++-v3/testsuite/23_containers/set/cons/61023.cc
new file mode 100644 (file)
index 0000000..087b9cc
--- /dev/null
@@ -0,0 +1,56 @@
+// { dg-options "-std=gnu++11" }
+
+// Copyright (C) 2014 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+#include <set>
+#include <stdexcept>
+
+struct Comparator
+{
+  Comparator() : valid(false) { }
+  explicit Comparator(bool) : valid(true) { }
+
+  bool operator()(int i, int j) const
+  {
+    if (!valid)
+      throw std::logic_error("Comparator is invalid");
+    return i < j;
+  }
+
+private:
+  bool valid;
+};
+
+int main()
+{
+  using test_type = std::set<int, Comparator>;
+
+  Comparator cmp{true};
+
+  test_type good{cmp};
+
+  test_type s1;
+  s1 = good;             // copy-assign
+  s1.insert(1);
+  s1.insert(2);
+
+  test_type s2;
+  s2 = std::move(good);  // move-assign
+  s2.insert(1);
+  s2.insert(2);
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/61143.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/61143.cc
new file mode 100644 (file)
index 0000000..b946425
--- /dev/null
@@ -0,0 +1,38 @@
+// { dg-options "-std=gnu++11" }
+
+// Copyright (C) 2014 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+// libstdc++/61143
+
+#include <unordered_set>
+
+void test01()
+{
+  std::unordered_set<int> us1, us2;
+  us1.insert(1);
+
+  us2 = std::move(us1);
+
+  us1.insert(1);
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/swap.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/swap.cc
new file mode 100644 (file)
index 0000000..d03fd1d
--- /dev/null
@@ -0,0 +1,65 @@
+// Copyright (C) 2014 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+// { dg-options "-std=gnu++11" }
+
+#include <unordered_set>
+#include <testsuite_hooks.h>
+
+void test01()
+{
+  bool test __attribute__((unused)) = true;
+  std::unordered_set<int> us1 { 0, 1 };
+  {
+    std::unordered_set<int> us2(std::move(us1));
+
+    us1.swap(us2);
+
+    VERIFY( us1.find(0) != us1.end() );
+
+    us1.insert(2);
+
+    VERIFY( us1.size() == 3 );
+
+    us2.swap(us1);
+
+    VERIFY( us2.size() == 3 );
+    VERIFY( us2.find(2) != us2.end() );
+
+    us1 = { 3, 4, 5 };
+
+    VERIFY( us1.size() == 3 );
+    VERIFY( us1.bucket_count() >= 3 );
+
+    std::unordered_set<int> us3(std::move(us1));
+    us3 = std::move(us2);
+
+    us1.swap(us2);
+
+    VERIFY( us1.empty() );
+    VERIFY( us2.empty() );
+  }
+
+  us1 = { 0, 1 };
+  VERIFY( us1.size() == 2 );
+}
+
+int main()
+{
+  test01();
+  return 0;
+}
index 191fbc7..655c7e8 100644 (file)
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1320 }
+// { dg-error "no matching" "" { target *-*-* } 1326 }
 
 #include <vector>
 
index 8818a88..d938aa2 100644 (file)
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1246 }
+// { dg-error "no matching" "" { target *-*-* } 1252 }
 
 #include <vector>
 
index 09499bc..f888285 100644 (file)
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1246 }
+// { dg-error "no matching" "" { target *-*-* } 1252 }
 
 #include <vector>
 #include <utility>
index 674e3b5..316249b 100644 (file)
@@ -18,7 +18,7 @@
 // <http://www.gnu.org/licenses/>.
 
 // { dg-do compile }
-// { dg-error "no matching" "" { target *-*-* } 1361 }
+// { dg-error "no matching" "" { target *-*-* } 1367 }
 
 #include <vector>
 
diff --git a/libstdc++-v3/testsuite/30_threads/promise/60966.cc b/libstdc++-v3/testsuite/30_threads/promise/60966.cc
new file mode 100644 (file)
index 0000000..269268b
--- /dev/null
@@ -0,0 +1,67 @@
+// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-gnu* *-*-solaris* *-*-cygwin *-*-darwin* powerpc-ibm-aix* } }
+// { dg-options " -std=gnu++11 -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-gnu* powerpc-ibm-aix* } }
+// { dg-options " -std=gnu++11 -pthreads" { target *-*-solaris* } }
+// { dg-options " -std=gnu++11 " { target *-*-cygwin *-*-darwin* } }
+// { dg-require-cstdint "" }
+// { dg-require-gthreads "" }
+// { dg-require-atomic-builtins "" }
+
+// Copyright (C) 2014 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+// libstdc++/60966
+// This test hangs if std::promise::~promise() destroys the
+// shared state before std::promise::set_value() finishes using it.
+
+#include <future>
+#include <thread>
+#include <vector>
+
+const int THREADS = 10;
+
+void run_task(std::promise<void>* pr)
+{
+  std::this_thread::sleep_for(std::chrono::milliseconds(100));
+  pr->set_value();
+}
+
+int main()
+{
+  std::vector<std::promise<void>*> tasks(THREADS);
+  std::vector<std::thread> threads(THREADS);
+  std::vector<std::future<void>> futures(THREADS);
+
+  for (int i = 0; i < THREADS; ++i)
+  {
+    std::promise<void>* task = new std::promise<void>;
+    tasks[i] = task;
+    futures[i] = task->get_future();
+    threads[i] = std::thread(run_task, task);
+  }
+
+  for (int i = 0; i < THREADS; ++i)
+  {
+    // the temporary future releases the state as soon as wait() returns
+    std::future<void>(std::move(futures[i])).wait();
+    // state is ready, should now be safe to delete promise, so it
+    // releases the shared state too
+    delete tasks[i];
+  }
+
+  for (auto& t : threads)
+    t.join();
+}
index af21cf8..6dfaee2 100644 (file)
@@ -1,3 +1,9 @@
+2014-05-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       PR lto/60981
+       * configure.ac: Check for -static-libgcc.
+       * configure: Regenerate.
+
 2014-04-22  Release Manager
 
        * GCC 4.9.0 released.
index 2fc8383..a579b99 100755 (executable)
@@ -4087,8 +4087,32 @@ fi
   done
 CFLAGS="$save_CFLAGS"
 
+
+# Check whether -static-libgcc is supported.
+saved_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS -static-libgcc"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -static-libgcc" >&5
+$as_echo_n "checking for -static-libgcc... " >&6; }
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+  int main() {}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  have_static_libgcc=yes
+else
+  have_static_libgcc=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_static_libgcc" >&5
+$as_echo "$have_static_libgcc" >&6; };
+LDFLAGS="$saved_LDFLAGS"
 # Need -Wc to get it through libtool.
-if test "x$GCC" = xyes; then ac_lto_plugin_ldflags="-Wc,-static-libgcc"; fi
+if test "x$have_static_libgcc" = xyes; then
+   ac_lto_plugin_ldflags="-Wc,-static-libgcc"
+fi
+
 
 case `pwd` in
   *\ * | *\    *)
@@ -10562,7 +10586,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 10565 "configure"
+#line 10589 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10668,7 +10692,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 10671 "configure"
+#line 10695 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
index 4003ae6..a5f1774 100644 (file)
@@ -7,9 +7,21 @@ AM_MAINTAINER_MODE
 AC_PROG_CC
 AC_SYS_LARGEFILE
 ACX_PROG_CC_WARNING_OPTS([-Wall], [ac_lto_plugin_warn_cflags])
+
+# Check whether -static-libgcc is supported.
+saved_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS -static-libgcc"
+AC_MSG_CHECKING([for -static-libgcc])
+AC_LINK_IFELSE([
+  int main() {}], [have_static_libgcc=yes], [have_static_libgcc=no])
+AC_MSG_RESULT($have_static_libgcc); 
+LDFLAGS="$saved_LDFLAGS"
 # Need -Wc to get it through libtool.
-if test "x$GCC" = xyes; then ac_lto_plugin_ldflags="-Wc,-static-libgcc"; fi
+if test "x$have_static_libgcc" = xyes; then
+   ac_lto_plugin_ldflags="-Wc,-static-libgcc"
+fi
 AC_SUBST(ac_lto_plugin_ldflags)
+
 AM_PROG_LIBTOOL
 ACX_LT_HOST_FLAGS
 AC_SUBST(target_noncanonical)