aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2009-05-11 07:56:52 +0000
committerPaolo Bonzini <bonzini@gnu.org>2009-05-11 07:56:52 +0000
commite9341300e5c5e5839d8c2170513a6c08dbb13068 (patch)
tree249b465b87e69f6eac915fe31be1961a40356b8b
parent7a0b179b3e9be8831081770a4a766ccf98146522 (diff)
parenta2a80d1d18605c11862e80677ef958970ecdbe95 (diff)
Merge trunk up to revision 147359.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/cond-optab@147360 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog485
-rw-r--r--gcc/ChangeLog.cond-optab4
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/Makefile.in6
-rw-r--r--gcc/basic-block.h16
-rw-r--r--gcc/c-common.c12
-rw-r--r--gcc/c-common.h5
-rw-r--r--gcc/c-cppbuiltin.c13
-rw-r--r--gcc/c-decl.c230
-rw-r--r--gcc/c-lex.c16
-rw-r--r--gcc/c-parser.c76
-rw-r--r--gcc/c-pragma.c113
-rw-r--r--gcc/c-pretty-print.c24
-rw-r--r--gcc/c-tree.h16
-rw-r--r--gcc/c-typeck.c113
-rw-r--r--gcc/c.opt4
-rw-r--r--gcc/cgraph.c413
-rw-r--r--gcc/cgraph.h72
-rw-r--r--gcc/cgraphbuild.c13
-rw-r--r--gcc/cgraphunit.c254
-rw-r--r--gcc/combine.c4
-rw-r--r--gcc/config/arc/arc.c10
-rw-r--r--gcc/config/arm/arm.c22
-rw-r--r--gcc/config/avr/avr.c12
-rw-r--r--gcc/config/bfin/bfin.c20
-rw-r--r--gcc/config/darwin.c14
-rw-r--r--gcc/config/h8300/h8300.c14
-rw-r--r--gcc/config/i386/i386.c33
-rw-r--r--gcc/config/i386/winnt.c10
-rw-r--r--gcc/config/ia64/ia64.c8
-rw-r--r--gcc/config/m32c/m32c.c18
-rw-r--r--gcc/config/m68hc11/m68hc11.c12
-rw-r--r--gcc/config/m68k/m68k.c4
-rw-r--r--gcc/config/mcore/mcore.c8
-rw-r--r--gcc/config/mips/mips.c16
-rw-r--r--gcc/config/picochip/libgccExtras/divmod15.asm2
-rw-r--r--gcc/config/picochip/picochip.h1
-rw-r--r--gcc/config/rs6000/rs6000-c.c4
-rw-r--r--gcc/config/rs6000/rs6000.c10
-rw-r--r--gcc/config/rs6000/rs6000.md2
-rw-r--r--gcc/config/sh/sh.c49
-rw-r--r--gcc/config/sh/symbian.c8
-rw-r--r--gcc/config/spu/spu.c7
-rw-r--r--gcc/config/stormy16/stormy16.c6
-rw-r--r--gcc/config/v850/v850-c.c10
-rw-r--r--gcc/config/v850/v850.c6
-rw-r--r--gcc/cp/ChangeLog92
-rw-r--r--gcc/cp/call.c12
-rw-r--r--gcc/cp/cp-tree.h5
-rw-r--r--gcc/cp/cxx-pretty-print.c10
-rw-r--r--gcc/cp/decl.c14
-rw-r--r--gcc/cp/decl2.c4
-rw-r--r--gcc/cp/error.c100
-rw-r--r--gcc/cp/parser.c4
-rw-r--r--gcc/cp/semantics.c21
-rw-r--r--gcc/cp/tree.c24
-rw-r--r--gcc/cp/typeck.c4
-rw-r--r--gcc/cse.c15
-rw-r--r--gcc/df-problems.c115
-rw-r--r--gcc/df.h2
-rw-r--r--gcc/doc/extend.texi19
-rw-r--r--gcc/doc/invoke.texi75
-rw-r--r--gcc/dojump.c9
-rw-r--r--gcc/except.c112
-rw-r--r--gcc/except.h34
-rw-r--r--gcc/fold-const.c7
-rw-r--r--gcc/fortran/ChangeLog63
-rw-r--r--gcc/fortran/error.c1
-rw-r--r--gcc/fortran/gfortran.h39
-rw-r--r--gcc/fortran/gfortran.texi47
-rw-r--r--gcc/fortran/intrinsic.c18
-rw-r--r--gcc/fortran/invoke.texi3
-rw-r--r--gcc/fortran/module.c22
-rw-r--r--gcc/fortran/parse.c17
-rw-r--r--gcc/fortran/trans-array.c9
-rw-r--r--gcc/fortran/trans-expr.c42
-rw-r--r--gcc/fortran/trans-stmt.c61
-rw-r--r--gcc/fortran/trans-stmt.h2
-rw-r--r--gcc/fortran/trans.c9
-rw-r--r--gcc/fortran/trans.h3
-rw-r--r--gcc/fwprop.c125
-rw-r--r--gcc/gcc.c4
-rw-r--r--gcc/genrecog.c22
-rw-r--r--gcc/ggc-page.c12
-rw-r--r--gcc/ipa-cp.c214
-rw-r--r--gcc/ipa-inline.c2
-rw-r--r--gcc/ipa-prop.c2
-rw-r--r--gcc/ipa-prop.h14
-rw-r--r--gcc/ipa-struct-reorg.c5
-rw-r--r--gcc/ipa.c129
-rw-r--r--gcc/loop-invariant.c37
-rw-r--r--gcc/matrix-reorg.c14
-rw-r--r--gcc/objc/ChangeLog42
-rw-r--r--gcc/objc/objc-act.c364
-rw-r--r--gcc/objcp/ChangeLog6
-rw-r--r--gcc/objcp/objcp-decl.h6
-rw-r--r--gcc/opts.c23
-rw-r--r--gcc/passes.c2
-rw-r--r--gcc/po/ChangeLog4
-rw-r--r--gcc/po/gcc.pot8489
-rw-r--r--gcc/pretty-print.c11
-rw-r--r--gcc/pretty-print.h12
-rw-r--r--gcc/regcprop.c1005
-rw-r--r--gcc/regmove.c9
-rw-r--r--gcc/sched-int.h32
-rw-r--r--gcc/target.h20
-rw-r--r--gcc/testsuite/ChangeLog189
-rw-r--r--gcc/testsuite/g++.dg/cpp/pragma-float-const-decimal64-1.C5
-rw-r--r--gcc/testsuite/g++.dg/eh/nested-try.C25
-rw-r--r--gcc/testsuite/g++.dg/torture/pr40081.C16
-rw-r--r--gcc/testsuite/g++.dg/warn/deprecated-6.C110
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr40057.c37
-rw-r--r--gcc/testsuite/gcc.dg/Wcxx-compat-7.c35
-rw-r--r--gcc/testsuite/gcc.dg/Wcxx-compat-8.c43
-rw-r--r--gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c17
-rw-r--r--gcc/testsuite/gcc.dg/c99-tag-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/cpp/pragma-float-const-decimal64-1.c5
-rw-r--r--gcc/testsuite/gcc.dg/deprecated-4.c88
-rw-r--r--gcc/testsuite/gcc.dg/deprecated-5.c7
-rw-r--r--gcc/testsuite/gcc.dg/deprecated-6.c11
-rw-r--r--gcc/testsuite/gcc.dg/dfp/float-constant-double.c21
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-1.c85
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-2.c86
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-3.c83
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-4.c46
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-5.c46
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-6.c46
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-7.c39
-rw-r--r--gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-8.c174
-rw-r--r--gcc/testsuite/gcc.dg/pr17188-1.c10
-rw-r--r--gcc/testsuite/gcc.dg/pr39084.c2
-rw-r--r--gcc/testsuite/gcc.dg/pr40031.c9
-rw-r--r--gcc/testsuite/gcc.dg/torture/complex-sign-add.c53
-rw-r--r--gcc/testsuite/gcc.dg/torture/complex-sign-mixed-add.c53
-rw-r--r--gcc/testsuite/gcc.dg/torture/complex-sign-mixed-div.c45
-rw-r--r--gcc/testsuite/gcc.dg/torture/complex-sign-mixed-mul.c53
-rw-r--r--gcc/testsuite/gcc.dg/torture/complex-sign-mixed-sub.c53
-rw-r--r--gcc/testsuite/gcc.dg/torture/complex-sign-mul-minus-one.c61
-rw-r--r--gcc/testsuite/gcc.dg/torture/complex-sign-mul-one.c61
-rw-r--r--gcc/testsuite/gcc.dg/torture/complex-sign-mul.c53
-rw-r--r--gcc/testsuite/gcc.dg/torture/complex-sign-sub.c53
-rw-r--r--gcc/testsuite/gcc.dg/torture/complex-sign.h74
-rw-r--r--gcc/testsuite/gcc.dg/vect/Os-vect-95.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr20122.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr36493.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr37385.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-7.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-9.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-35.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-40.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-42.c10
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-44.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-46.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-48.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-52.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-54.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-56.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-58.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-60.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-74.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-75.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-76.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-77-global.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-77.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-78-global.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-78.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-80.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-85.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-87.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-88.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-92.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-93.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-95.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-97.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-complex-1.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-complex-4.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-complex-5.c10
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c12
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-1.c6
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-1a.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-2.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-2a.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-2b.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-2c.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-2d.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-3.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-3a.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-3b.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-3c.c2
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-5.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-outer-6.c8
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-shift-2.c189
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-widen-mult-s16.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-widen-mult-s8.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c4
-rw-r--r--gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c4
-rw-r--r--gcc/testsuite/gfortran.dg/array_constructor_31.f9010
-rw-r--r--gcc/testsuite/gfortran.dg/chmod_1.f903
-rw-r--r--gcc/testsuite/gfortran.dg/chmod_2.f903
-rw-r--r--gcc/testsuite/gfortran.dg/chmod_3.f903
-rw-r--r--gcc/testsuite/gfortran.dg/dependency_23.f901
-rw-r--r--gcc/testsuite/gfortran.dg/dependency_24.f9081
-rw-r--r--gcc/testsuite/gfortran.dg/intrinsic_3.f9040
-rw-r--r--gcc/testsuite/gfortran.dg/open_errors.f903
-rw-r--r--gcc/toplev.c78
-rw-r--r--gcc/toplev.h2
-rw-r--r--gcc/tree-cfg.c2
-rw-r--r--gcc/tree-complex.c5
-rw-r--r--gcc/tree-eh.c51
-rw-r--r--gcc/tree-inline.c244
-rw-r--r--gcc/tree-inline.h26
-rw-r--r--gcc/tree-pass.h17
-rw-r--r--gcc/tree-pretty-print.c1
-rw-r--r--gcc/tree-scalar-evolution.c8
-rw-r--r--gcc/tree-sra.c4
-rw-r--r--gcc/tree-vect-stmts.c15
-rw-r--r--libcpp/ChangeLog22
-rw-r--r--libcpp/directives.c18
-rw-r--r--libcpp/expr.c12
-rw-r--r--libcpp/include/cpplib.h30
-rw-r--r--libcpp/lex.c47
-rw-r--r--libcpp/macro.c26
-rw-r--r--libgfortran/ChangeLog96
-rw-r--r--libgfortran/io/transfer.c2
-rw-r--r--libgfortran/runtime/string.c5
-rw-r--r--libstdc++-v3/ChangeLog16
-rw-r--r--libstdc++-v3/config/abi/pre/gnu.ver4
-rw-r--r--libstdc++-v3/include/ext/throw_allocator.h309
-rw-r--r--libstdc++-v3/src/Makefile.am1
-rw-r--r--libstdc++-v3/src/Makefile.in20
-rw-r--r--libstdc++-v3/src/throw_allocator.cc95
264 files changed, 11576 insertions, 5903 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3e25e4445ec..e1c13f5884b 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,7 +1,488 @@
+2009-05-10 Ian Lance Taylor <iant@google.com>
+
+ * basic-block.h (enum profile_status): Break out of struct
+ control_flow_graph.
+ * cgraph.h (struct inline_summary): Break out of struct
+ cgraph_local_info.
+ * cgraphunit.c (enum cgraph_order_sort_kind): New enum, broken out
+ of struct cgraph_order_sort.
+ * combine.c (enum undo_kind): New enum, broken out of struct
+ undo.
+ * cse.c (struct branch_path): Break out of struct
+ cse_basic_block_data.
+ * except.h (enum eh_region_type): Break out of struct eh_region.
+ * gcc.c (enum add_del): Break out of struct modify_target.
+ * genrecog.c (enum decision_type): Break out of struct
+ decision_test.
+ * ggc-page.c (struct ggc_pch_ondisk): Break out of struct
+ ggc_pch_data.
+ * matrix-reorg.c (struct free_info): Break out of struct
+ matrix_info.
+ * regmove.c (enum match_use): New enum, broken out of struct
+ match.
+ * sched-int.h (enum post_call_group): New enum, broken out of
+ struct deps.
+ (struct deps_reg): Break out of struct deps.
+ * target.h (struct asm_int_op): Break out of struct gcc_target.
+ * tree-eh.c (struct goto_queue_node): Break out of struct
+ leh_tf_state.
+ * tree-inline.h (enum copy_body_cge_which): Break out of
+ copy_body_data.
+ * tree-pass.h (enum opt_pass_type): Break out of struct opt_pass.
+
+ * c-decl.c (in_struct, struct_types): New static variables.
+ (pushtag): Add loc parameter. Change all callers.
+ (lookup_tag): Add ploc parameter. Change all callers.
+ (check_compound_literal_type): New function.
+ (parser_xref_tag): Add loc parameter. Change all callers. If
+ -Wc++-compat, warn about struct/union/enum types defined within a
+ struct or union.
+ (start_struct): Add enclosing_in_struct, enclosing_struct_types,
+ and loc parameters. Change all callers. Change error calls to
+ error_at, using loc. For a redefinition, if the location of the
+ original definition is known, report it. Set in_struct and
+ struct_types. If -Wc++-compat warn if in sizeof, typeof, or
+ alignof.
+ (finish_struct): Add new parameters enclosing_in_struct and
+ enclosing_struct_types. Change all callers. Set
+ C_TYPE_DEFINED_IN_STRUCT for all struct/union/enum types defined
+ in the struct. If in a struct, add this struct to struct_types.
+ (start_enum): Add loc parameter. Change all callers. Use
+ error_at for errors, using loc. For a redefinition, if the
+ location of the original definition is known, report it. If in a
+ struct, add this enum type to struct_types. If -Wc++-compat warn
+ if in sizeof, typeof, or alignof.
+ * c-parser.c (disable_extension_diagnostics): Disable
+ -Wc++-compat.
+ (enable_extension_diagnostics): Reenable -Wc++-compat if
+ appropriate.
+ (c_parser_enum_specifier): Get enum location for start_enum.
+ (c_parser_struct_or_union_specifier): Get struct location for
+ start_struct. Save in_struct and struct_types status between
+ start_struct and finish_struct.
+ (c_parser_cast_expression): Get location of cast.
+ (c_parser_alignof_expression): Get location of type.
+ (c_parser_postfix_expression): Likewise.
+ (c_parser_postfix_expression_after_paren_type): Add type_loc
+ parameter. Change all callers. Call
+ check_compound_literal_type. Use type_loc for error about
+ variable size type.
+ * c-typeck.c (build_external_ref): If -Wc++-compat, warn about a
+ use of an enum constant from an enum type defined in a struct or
+ union.
+ (c_cast_expr): Add loc parameter. Change all callers. If
+ -Wc++-compat, warn about defining a type in a cast.
+ * c-tree.h (C_TYPE_DEFINED_IN_STRUCT): Define.
+ (start_enum, start_struct, finish_struct): Update declarations.
+ (parser_xref_tag, c_cast_expr): Update declarations.
+ (check_compound_literal_type): Declare.
+
+2009-05-11 Ben Elliston <bje@au.ibm.com>
+
+ * config/rs6000/rs6000-c.c (altivec_categorize_keyword): Update
+ for recent libcpp interface change.
+ (rs6000_macro_to_expand): Likewise.
+
+2009-05-10 Michael Matz <matz@suse.de>
+
+ PR target/40031
+ * config/arm/arm.c (require_pic_register): Emit on entry edge,
+ not at entry of function.
+
+2009-05-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/40081
+ Revert
+ * tree-sra.c (instantiate_element): Instantiate scalar replacements
+ using the main variant of the element type. Do not fiddle with
+ TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
+
+ * tree-sra.c (sra_type_can_be_decomposed_p): Do not decompose
+ structs with volatile fields.
+
+2009-05-10 Jan Hubicka <jh@suse.cz>
+
+ * tree-inline.c (delete_unreachable_blocks_update_callgraph): Declare.
+ (estimate_move_cost): Assert that it does not get called for VOID_TYPE_P.
+ (estimate_num_insns): Skip VOID types in argument handling.
+ (optimize_inline_calls): Delete unreachable blocks and verify that
+ callgraph is valid.
+
+2009-05-10 Jan Hubicka <jh@suse.cz>
+
+ * cgraphbuild.c (record_reference): Use cgraph_mark_address_taken_node.
+ * cgraph.c (cgraph_mark_address_taken_node): New function.
+ (dump_cgraph_node): Dump new flag.
+ * cgraph.h (struct cgraph_node): Add address_taken.
+ (cgraph_mark_address_taken_node): New function.
+ * ipa.c (cgraph_postorder): Prioritize functions with address taken
+ since new direct calls can be born.
+
+2009-05-10 Joseph Myers <joseph@codesourcery.com>
+
+ * c-lex.c (c_lex_with_flags): Expect cpp_hashnode in
+ tok->val.node.node.
+
+2009-05-10 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/40084
+ * cgraph.c (cgraph_update_edges_for_call_stmt_node): Take old_call
+ argument; rewrite.
+ (cgraph_update_edges_for_call_stmt): Take old_decl argument.
+ * cgraph.h (cgraph_update_edges_for_call_stmt): Update prototype.
+ * tree-inline.c (copy_bb): Set frequency correctly.
+ (fold_marked_statements): Update call to
+ cgraph_update_edges_for_call_stmt.
+
+2009-05-10 Joseph Myers <joseph@codesourcery.com>
+
+ * config/arc/arc.c (arc_handle_interrupt_attribute): Use %qE for
+ identifiers in diagnostics.
+ * config/arm/arm.c (arm_handle_fndecl_attribute,
+ arm_handle_isr_attribute): Likewise.
+ * config/avr/avr.c (avr_handle_progmem_attribute,
+ avr_handle_fndecl_attribute, avr_handle_fntype_attribute):
+ Likewise.
+ * config/bfin/bfin.c (handle_int_attribute,
+ bfin_handle_longcall_attribute, bfin_handle_l1_text_attribute,
+ bfin_handle_l1_data_attribute, bfin_handle_longcall_attribute,
+ bfin_handle_l1_text_attribute, bfin_handle_l1_data_attribute):
+ Likewise.
+ * config/darwin.c (darwin_handle_kext_attribute,
+ darwin_handle_weak_import_attribute): Likewise.
+ * config/h8300/h8300.c (h8300_handle_fndecl_attribute,
+ h8300_handle_eightbit_data_attribute,
+ h8300_handle_tiny_data_attribute): Likewise.
+ * config/i386/i386.c (ix86_handle_cconv_attribute,
+ ix86_handle_abi_attribute, ix86_handle_struct_attribute):
+ Likewise.
+ * config/i386/winnt.c (ix86_handle_shared_attribute,
+ ix86_handle_selectany_attribute): Likewise.
+ * config/ia64/ia64.c (ia64_handle_model_attribute): Likewise.
+ * config/m32c/m32c.c (function_vector_handler): Likewise.
+ * config/m68hc11/m68hc11.c (m68hc11_handle_page0_attribute,
+ m68hc11_handle_fntype_attribute): Likewise.
+ * config/m68k/m68k.c (m68k_handle_fndecl_attribute): Likewise.
+ * config/mcore/mcore.c (mcore_handle_naked_attribute): Likewise.
+ * config/mips/mips.c (mips_insert_attributes,
+ mips_merge_decl_attributes, mips_expand_builtin): Likewise.
+ * config/rs6000/rs6000.c (rs6000_handle_longcall_attribute,
+ rs6000_handle_struct_attribute): Likewise.
+ * config/sh/sh.c (sh_insert_attributes,
+ sh_handle_resbank_handler_attribute,
+ sh_handle_interrupt_handler_attribute,
+ sh2a_handle_function_vector_handler_attribute,
+ sh_handle_sp_switch_attribute, sh_handle_trap_exit_attribute):
+ Likewise.
+ * config/sh/symbian.c (sh_symbian_mark_dllimport): Likewise.
+ * config/spu/spu.c (spu_handle_fndecl_attribute,
+ spu_handle_vector_attribute): Likewise.
+ * config/stormy16/stormy16.c
+ (xstormy16_handle_interrupt_attribute): Likewise.
+ * config/v850/v850-c.c (ghs_pragma_section): Likewise.
+ * config/v850/v850.c (v850_handle_interrupt_attribute): Likewise.
+
+2009-05-10 Joseph Myers <joseph@codesourcery.com>
+
+ * pretty-print.h (struct pretty_print_info): Add
+ translate_identifiers.
+ (pp_translate_identifiers): New.
+ (pp_identifier): Only conditionally translate identifier to locale
+ character set.
+ * pretty-print.c (pp_construct): Set pp_translate_identifiers.
+ (pp_base_tree_identifier): Only conditionally translate identifier
+ to locale character set.
+ * c-pretty-print.c (M_): Define.
+ (pp_c_type_specifier, pp_c_primary_expression): Mark English
+ fragments for conditional translation with M_.
+ * tree-pretty-print.c (maybe_init_pretty_print): Disable
+ identifier translation.
+
+2009-05-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/40081
+ * tree-sra.c (instantiate_element): Instantiate scalar replacements
+ using the main variant of the element type. Do not fiddle with
+ TREE_THIS_VOLATILE or TREE_SIDE_EFFECTS.
+
+2009-05-09 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/40080
+ * cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
+ indirect calls; verify cgraph afterwards.
+
+2009-05-09 Jan Hubicka <jh@suse.cz>
+
+ PR bootstrap/40082
+ * ipa.c (update_inlined_to_pointer): New function.
+ (cgraph_remove_unreachable_nodes): Use it.
+
+2009-05-09 Jan Hubicka <jh@suse.cz>
+
+ * tree-eh.c (struct leh_state): Remove prev_try.
+ (lower_try_finally, lower_catch, lower_eh_filter, lower_cleanup): Do
+ not track prev_try.
+ * except.c (gen_eh_region_cleanup, duplicate_eh_regions,
+ copy_eh_region_1, copy_eh_region, redirect_eh_edge_to_label,
+ remove_eh_handler_and_replace, foreach_reachable_handler,
+ verify_eh_region, verify_eh_tree): Remove tracking of prev_try pointer.
+ * except.h (struct eh_region): Remove eh_region_u_cleanup.
+ (gen_eh_region_cleanup): Update prototype.
+
+2009-05-09 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/40043
+ * except.c (copy_eh_region): Always set prev_try.
+ (redirect_eh_edge_to_label): Find outer try.
+ (foreach_reachable_handler): When looking for prev try
+ handle case where previous try is not going to be taken.
+
+2009-05-07 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR tree-optimization/40049
+ * tree-vect-stmts.c (vectorizable_operation): If the machine has
+ only vector/vector shifts, convert the type of the constant to the
+ appropriate type to avoid building incorrect trees, which
+ eventually have problems with garbage collection.
+
+2009-05-08 Joseph Myers <joseph@codesourcery.com>
+
+ * fold-const.c (fold_binary): Do not fold multiplication by 1 or
+ -1 for complex floating-point types if honoring signed zeros.
+
+2009-05-08 Jan Hubicka <jh@suse.cz>
+
+ * cgraphbuild.c (compute_call_stmt_bb_frequency): Accept function
+ argument; handle correctly when profile is absent.
+ (build_cgraph_edges): Update.
+ (rebuild_cgraph_edges): Update.
+ * cgraph.c: Do not include varray.h.
+ (cgraph_set_call_stmt_including_clones): New function.
+ (cgraph_create_edge_including_clones): Likewise
+ (cgraph_update_edges_for_call_stmt_node): New static cfunction.
+ (cgraph_update_edges_for_call_stmt): Handle clones.
+ (cgraph_remove_node): Handle clone tree.
+ (cgraph_remove_node_and_inline_clones): New function.
+ (dump_cgraph_node): Dump clone tree.
+ (cgraph_clone_node): Handle clone tree.
+ (clone_function_name): Bring here from tree-inline.c.
+ (cgraph_create_virtual_clone): New function.
+ * cgraph.h (ipa_replace_map): Move here from ipa.h.
+ (cgraph_clone_info): New function.
+ (strut cgraph_node): Add clone_info and new clone tree pointers.
+ (cgraph_remove_node_and_inline_clones,
+ cgraph_set_call_stmt_including_clones,
+ cgraph_create_edge_including_clones,
+ cgraph_create_virtual_clone): Declare.
+ (cgraph_function_versioning): Use VEC argument.
+ (compute_call_stmt_bb_frequency): Update prototype.
+ (cgraph_materialize_all_clones): New function.
+ * ipa-cp.c (ipcp_update_cloned_node): Remove.
+ (ipcp_create_replace_map): Update to VECtors.
+ (ipcp_update_callgraph): Use virtual clones.
+ (ipcp_update_bb_counts, ipcp_update_edges_counts): Remove.
+ (ipcp_update_profiling): Do not update local profiling.
+ (ipcp_insert_stage): Use VECtors and virtual clones.
+ * cgraphunit.c (verify_cgraph_node): Verify clone tree.
+ (clone_of_p): New function.
+ (cgraph_preserve_function_body_p): Use clone tree.
+ (cgraph_optimize): Materialize clones.
+ (cgraph_function_versioning): Update for VECtors.
+ (save_inline_function_body): Use clone tree.
+ (cgraph_materialize_clone): New function.
+ (cgraph_materialize_all_clones): Likewise.
+ * ipa-inline.c (cgraph_default_inline_p): Use analyzed flags.
+ * ipa.c: Include gimple.h.
+ (cgraph_remove_unreachable_nodes): Use clone tree.
+ * ipa-prop.c (ipa_note_param_call): Update call to
+ compute_call_stmt_bb_frequencycall.
+ * ipa-prop.h (ipa_replace_map): Move to cgraph.h.
+ * tree-inline.c: Do not include varray.h or gt-tree-inline.h.
+ (copy_bb): Handle updating of clone tree; add new edge when new call
+ appears.
+ (expand_call_inline): Be strict about every call having edge.
+ (clone_fn_id_num, clone_function_name): Move to cgraph.c.
+ (delete_unreachable_blocks_update_callgraph): New function.
+ (tree_function_versioning): Use VECtors; always remove unreachable
+ blocks and fold conditionals.
+ * tree-inline.h: Do not include varray.h.
+ (tree_function_versioning): Remove.
+ * Makefile.in (GTFILES): Remove tree-inline.c
+ * passes.c (do_per_function): Do only functions having body.
+ * ipa-struct-reorg.c (do_reorg_1, collect_data_accesses): Handle clone
+ tree.
+
+2009-05-08 H.J. Lu <hongjiu.lu@intel.com>
+ Andrew Morrow <acm@google.com>
+
+ PR c/36892
+ * c-common.c (c_common_attribute_table): Permit deprecated
+ attribute to take an optional argument.
+ (handle_deprecated_attribute): If the optional argument to
+ __attribute__((deprecated)) is not a string ignore the attribute
+ and emit a warning.
+
+ * c-decl.c (grokdeclarator): Updated warn_deprecated_use call.
+ * c-typeck.c (build_component_ref): Likewise.
+ (build_external_ref): Likewise.
+
+ * toplev.c (warn_deprecated_use): Add an attribute argument.
+ Emit the message associated with __attribute__((deprecated)).
+
+ * toplev.h (warn_deprecated_use): Updated.
+
+ * doc/extend.texi: Document new optional parameter to
+ __attribute__((deprecated))
+
+2009-05-08 Michael Eager <eager@eagercon.com>
+
+ * config/rs6000/rs6000.md (*movdf_softfloat32): replace
+ !TARGET_DOUBLE_FLOAT with TARGET_SINGLE_FLOAT.
+
+2009-05-08 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/40062
+ * tree-scalar-evolution.c (follow_ssa_edge_in_condition_phi):
+ Avoid exponential behavior.
+
+2009-05-08 Paolo Bonzini <bonzini@gnu.org>
+
+ PR rtl-optimization/33928
+ PR 26854
+ * fwprop.c (use_def_ref, get_def_for_use, bitmap_only_bit_bitween,
+ process_uses, build_single_def_use_links): New.
+ (update_df): Update use_def_ref.
+ (forward_propagate_into): Use get_def_for_use instead of use-def
+ chains.
+ (fwprop_init): Call build_single_def_use_links and let it initialize
+ dataflow.
+ (fwprop_done): Free use_def_ref.
+ (fwprop_addr): Eliminate duplicate call to df_set_flags.
+ * df-problems.c (df_rd_simulate_artificial_defs_at_top,
+ df_rd_simulate_one_insn): New.
+ (df_rd_bb_local_compute_process_def): Update head comment.
+ (df_chain_create_bb): Use the new RD simulation functions.
+ * df.h (df_rd_simulate_artificial_defs_at_top,
+ df_rd_simulate_one_insn): New.
+ * opts.c (decode_options): Enable fwprop at -O1.
+ * doc/invoke.texi (-fforward-propagate): Document this.
+
+2009-05-08 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/24581
+ * c-typeck.c (build_binary_op): Handle arithmetic between one real
+ and one complex operand specially.
+ * tree-complex.c (some_nonzerop): Do not identify a real value as
+ zero if flag_signed_zeros.
+
+2009-05-08 Paolo Bonzini <bonzini@gnu.org>
+
+ PR rtl-optimization/33928
+ * loop-invariant.c (record_use): Fix && vs. || mishap.
+
+2009-05-08 Paolo Bonzini <bonzini@gnu.org>
+
+ PR rtl-optimization/33928
+ * loop-invariant.c (struct use): Add addr_use_p.
+ (struct def): Add n_addr_uses.
+ (struct invariant): Add cheap_address.
+ (create_new_invariant): Set cheap_address.
+ (record_use): Accept df_ref. Set addr_use_p and update n_addr_uses.
+ (record_uses): Pass df_ref to record_use.
+ (get_inv_cost): Do not add inv->cost to comp_cost for cheap addresses
+ used only as such.
+
+2009-05-08 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ * config/sh/sh.c: Do not include c-pragma.h.
+
+2009-05-07 Andrew Pinski <andrew_pinski@playstation.sony.com>
+
+ * config/spu/spu.c: Remove include of c-common.h.
+
+2009-05-07 Janis Johnson <janis187@us.ibm.com>
+
+ PR c/39037
+ * c-common.h (mark_valid_location_for_stdc_pragma,
+ valid_location_for_stdc_pragma_p, set_float_const_decimal64,
+ clear_float_const_decimal64, float_const_decimal64_p): New.
+ * c.opt (Wunsuffixed-float-constants): New.
+ * c-lex.c (interpret_float): Use pragma FLOAT_CONST_DECIMAL64 for
+ unsuffixed float constant, handle new warning.
+ * c-cppbuiltin.c (c_cpp_builtins): Use cast for double constants.
+ * c-decl.c (c_scope): New flag float_const_decimal64.
+ (set_float_const_decimal64, clear_float_const_decimal64,
+ float_const_decimal64_p): New.
+ (push_scope): Set new flag.
+ * c-parser.c (c_parser_translation_unit): Mark when it's valid
+ to use STDC pragmas.
+ (c_parser_external_declaration): Ditto.
+ (c_parser_compound_statement_nostart): Ditto.
+ * c-pragma.c (valid_location_for_stdc_pragma,
+ mark_valid_location_for_stdc_pragma,
+ valid_location_for_stdc_pragma_p, handle_stdc_pragma,
+ handle_pragma_float_const_decimal64): New.
+ (init_pragma): Register new pragma FLOAT_CONST_DECIMAL64.
+ * cp/semantics.c (valid_location_for_stdc_pragma_p,
+ set_float_const_decimal64, clear_float_const_decimal64,
+ float_const_decimal64_p): New dummy functions.
+ * doc/extend.texi (Decimal Float): Remove statement that the
+ pragma, and suffix for double constants, are not supported.
+ * doc/invoke.texi (Warning Options): List new option.
+ (-Wunsuffixed-float-constants): New.
+
+2009-05-08 Steven Bosscher <steven@gcc.gnu.org>
+
+ * config/i386/i386.c: Do not include c-common.h.
+
+2009-05-07 Mark Heffernan <meheff@google.com>
+
+ * doc/invoke.texi (Debugging Options): Document change of debugging
+ dump location.
+ * opts.c (decode_options): Make dump_base_name relative to
+ aux_base_name directory.
+
+2009-05-07 Hariharan Sandanagobalane <hariharan@picochip.com>
+
+ * config/picochip/picochip.h (NO_DOLLAR_IN_LABEL): Added.
+ * config/picochip/libgccExtras/divmod15.asm : Removed redefiniton.
+
+2009-05-07 Rafael Avila de Espindola <espindola@google.com>
+
+ * Makefile.in (install-plugin): Simplify a bit.
+
+2009-05-07 Paolo Bonzini <bonzini@gnu.org>
+
+ * Makefile.in (OBJS-common): Add regcprop.o.
+ (regcprop.o): New.
+ * timevar.def (TV_CPROP_REGISTERS): New.
+ * regrename.c (regrename_optimize): Return 0.
+ (rest_of_handle_regrename): Delete.
+ (pass_rename_registers): Point to regrename_optimize.
+ (struct value_data_entry, struct value_data,
+ kill_value_one_regno, kill_value_regno, kill_value,
+ set_value_regno, init_value_data, kill_clobbered_value,
+ kill_set_value, kill_autoinc_value, copy_value,
+ mode_change_ok, maybe_mode_change, find_oldest_value_reg,
+ replace_oldest_value_reg, replace_oldest_value_addr,
+ replace_oldest_value_mem, copyprop_hardreg_forward_1,
+ debug_value_data, validate_value_data): Move...
+ * regcprop.c: ... here.
+ (rest_of_handle_cprop): Delete.
+ (pass_cprop_hardreg): Point to copyprop_hardreg_forward.
+
+2009-05-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/40057
+ * dojump.c (prefer_and_bit_test): Use immed_double_const instead of
+ GEN_INT for 1 << bitnum.
+ (do_jump) <case BIT_AND_EXPR>: Use build_int_cst_wide_type instead of
+ build_int_cst_type.
+
2009-05-07 Uros Bizjak <ubizjak@gmail.com>
* doc/md.texi (Standard Pattern Names For Generation) [sync_nand]:
- Remove wrong description of "nand" functionality.
+ Remove wrong description of "nand" operation.
2009-05-06 Richard Guenther <rguenther@suse.de>
Adam Nemet <anemet@caviumnetworks.com>
@@ -217,7 +698,7 @@
2009-05-04 Paolo Bonzini <bonzini@gnu.org>
- * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
+ * doc/tm.texi (LEGITIMIZE_ADDRESS): Revise documentation.
* gcc/defaults.h (LEGITIMIZE_ADDRESS): Delete.
* gcc/explow.c (memory_address): Use target hook.
* gcc/targhooks.c (default_legitimize_address): New.
diff --git a/gcc/ChangeLog.cond-optab b/gcc/ChangeLog.cond-optab
index 7bd54387baa..49030f527f4 100644
--- a/gcc/ChangeLog.cond-optab
+++ b/gcc/ChangeLog.cond-optab
@@ -1,3 +1,7 @@
+2009-05-11 Paolo Bonzini <bonzini@gnu.org>
+
+ * Merge trunk up to revision 147359.
+
2009-04-28 Paolo Bonzini <bonzini@gnu.org>
* Merge trunk up to revision 147237.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 10430dd8eb8..88a3462552b 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20090507
+20090511
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 556bfe37482..9a4d62b007a 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -3342,7 +3342,7 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
$(srcdir)/tree-ssa-propagate.c \
$(srcdir)/tree-phinodes.c \
$(srcdir)/ipa-reference.c \
- $(srcdir)/tree-ssa-structalias.c $(srcdir)/tree-inline.c \
+ $(srcdir)/tree-ssa-structalias.c \
$(srcdir)/tree-ssa-alias.h \
@all_gtfiles@
@@ -4017,6 +4017,7 @@ install-plugin: installdirs
# other files are flattened to a single directory.
$(mkinstalldirs) $(DESTDIR)$(plugin_includedir)
headers=`echo $(PLUGIN_HEADERS) | tr ' ' '\n' | sort -u`; \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \
for file in $$headers; do \
if [ -f $$file ] ; then \
path=$$file; \
@@ -4025,8 +4026,7 @@ install-plugin: installdirs
else continue; \
fi; \
case $$path in \
- "$(srcdir)"*/config/* | "$(srcdir)"/*.def ) \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`; \
+ "$(srcdir)"/config/* | "$(srcdir)"/*.def ) \
base=`echo "$$path" | sed -e "s|$$srcdirstrip/||"`;; \
*) base=`basename $$path` ;; \
esac; \
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 3f7e872374c..41d9f9514cb 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -1,6 +1,6 @@
/* Define control and data flow tables, and regsets.
Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of GCC.
@@ -356,6 +356,14 @@ enum dom_state
DOM_OK /* Everything is ok. */
};
+/* What sort of profiling information we have. */
+enum profile_status
+{
+ PROFILE_ABSENT,
+ PROFILE_GUESSED,
+ PROFILE_READ
+};
+
/* A structure to group all the per-function control flow graph data.
The x_* prefixing is necessary because otherwise references to the
fields of this struct are interpreted as the defines for backward
@@ -382,11 +390,7 @@ struct GTY(()) control_flow_graph {
only used for the gimple CFG. */
VEC(basic_block,gc) *x_label_to_block_map;
- enum profile_status {
- PROFILE_ABSENT,
- PROFILE_GUESSED,
- PROFILE_READ
- } x_profile_status;
+ enum profile_status x_profile_status;
/* Whether the dominators and the postdominators are available. */
enum dom_state x_dom_computed[2];
diff --git a/gcc/c-common.c b/gcc/c-common.c
index 9fa3b96aa61..df6673c000c 100644
--- a/gcc/c-common.c
+++ b/gcc/c-common.c
@@ -954,7 +954,7 @@ const struct attribute_spec c_common_attribute_table[] =
to prevent its usage in source code. */
{ "no vops", 0, 0, true, false, false,
handle_novops_attribute },
- { "deprecated", 0, 0, false, false, false,
+ { "deprecated", 0, 1, false, false, false,
handle_deprecated_attribute },
{ "vector_size", 1, 1, false, true, false,
handle_vector_size_attribute },
@@ -7179,13 +7179,21 @@ handle_novops_attribute (tree *node, tree ARG_UNUSED (name),
static tree
handle_deprecated_attribute (tree *node, tree name,
- tree ARG_UNUSED (args), int flags,
+ tree args, int flags,
bool *no_add_attrs)
{
tree type = NULL_TREE;
int warn = 0;
tree what = NULL_TREE;
+ if (!args)
+ *no_add_attrs = true;
+ else if (TREE_CODE (TREE_VALUE (args)) != STRING_CST)
+ {
+ error ("deprecated message is not a string");
+ *no_add_attrs = true;
+ }
+
if (DECL_P (*node))
{
tree decl = *node;
diff --git a/gcc/c-common.h b/gcc/c-common.h
index 14448800ce0..250a7ff74fa 100644
--- a/gcc/c-common.h
+++ b/gcc/c-common.h
@@ -809,6 +809,11 @@ extern void warn_logical_operator (location_t, enum tree_code,
extern void check_main_parameter_types (tree decl);
extern bool c_determine_visibility (tree);
extern bool same_scalar_type_ignoring_signedness (tree, tree);
+extern void mark_valid_location_for_stdc_pragma (bool);
+extern bool valid_location_for_stdc_pragma_p (void);
+extern void set_float_const_decimal64 (void);
+extern void clear_float_const_decimal64 (void);
+extern bool float_const_decimal64_p (void);
#define c_sizeof(T) c_sizeof_or_alignof_type (T, true, 1)
#define c_alignof(T) c_sizeof_or_alignof_type (T, false, 1)
diff --git a/gcc/c-cppbuiltin.c b/gcc/c-cppbuiltin.c
index 8b776b15dbc..921addbccf0 100644
--- a/gcc/c-cppbuiltin.c
+++ b/gcc/c-cppbuiltin.c
@@ -619,14 +619,11 @@ c_cpp_builtins (cpp_reader *pfile)
TARGET_DEC_EVAL_METHOD);
builtin_define_float_constants ("FLT", "F", "%s", float_type_node);
- /* Cast the double precision constants when single precision constants are
- specified. The correct result is computed by the compiler when using
- macros that include a cast. This has the side-effect of making the value
- unusable in const expressions. */
- if (flag_single_precision_constant)
- builtin_define_float_constants ("DBL", "L", "((double)%s)", double_type_node);
- else
- builtin_define_float_constants ("DBL", "", "%s", double_type_node);
+ /* Cast the double precision constants. This is needed when single
+ precision constants are specified or when pragma FLOAT_CONST_DECIMAL64
+ is used. The correct result is computed by the compiler when using
+ macros that include a cast. */
+ builtin_define_float_constants ("DBL", "L", "((double)%s)", double_type_node);
builtin_define_float_constants ("LDBL", "L", "%s", long_double_type_node);
/* For decfloat.h. */
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 85c4d6bf02d..a9929c1a85c 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -126,6 +126,15 @@ static GTY(()) struct stmt_tree_s c_stmt_tree;
tree c_break_label;
tree c_cont_label;
+/* True if we are currently parsing the fields of a struct or
+ union. */
+
+static bool in_struct;
+
+/* A list of types defined in the current struct or union. */
+
+static VEC(tree,heap) *struct_types;
+
/* Linked list of TRANSLATION_UNIT_DECLS for the translation units
included in this invocation. Note that the current translation
unit is not included in this list. */
@@ -342,6 +351,9 @@ struct GTY((chain_next ("%h.outer"))) c_scope {
/* True means make a BLOCK for this scope no matter what. */
BOOL_BITFIELD keep : 1;
+
+ /* True means that an unsuffixed float constant is _Decimal64. */
+ BOOL_BITFIELD float_const_decimal64 : 1;
};
/* The scope currently in effect. */
@@ -674,6 +686,30 @@ keep_next_level (void)
keep_next_level_flag = true;
}
+/* Set the flag for the FLOAT_CONST_DECIMAL64 pragma being ON. */
+
+void
+set_float_const_decimal64 (void)
+{
+ current_scope->float_const_decimal64 = true;
+}
+
+/* Clear the flag for the FLOAT_CONST_DECIMAL64 pragma. */
+
+void
+clear_float_const_decimal64 (void)
+{
+ current_scope->float_const_decimal64 = false;
+}
+
+/* Return nonzero if an unsuffixed float constant is _Decimal64. */
+
+bool
+float_const_decimal64_p (void)
+{
+ return current_scope->float_const_decimal64;
+}
+
/* Identify this scope as currently being filled with parameters. */
void
@@ -705,6 +741,13 @@ push_scope (void)
keep_next_level_flag = false;
next_is_function_body = false;
+
+ /* The FLOAT_CONST_DECIMAL64 pragma applies to nested scopes. */
+ if (current_scope->outer)
+ current_scope->float_const_decimal64
+ = current_scope->outer->float_const_decimal64;
+ else
+ current_scope->float_const_decimal64 = false;
}
else
{
@@ -717,6 +760,12 @@ push_scope (void)
else
scope = GGC_CNEW (struct c_scope);
+ /* The FLOAT_CONST_DECIMAL64 pragma applies to nested scopes. */
+ if (current_scope)
+ scope->float_const_decimal64 = current_scope->float_const_decimal64;
+ else
+ scope->float_const_decimal64 = false;
+
scope->keep = keep_next_level_flag;
scope->outer = current_scope;
scope->depth = current_scope ? (current_scope->depth + 1) : 0;
@@ -1046,13 +1095,12 @@ pop_file_scope (void)
In that case, the TYPE_SIZE will be zero. */
static void
-pushtag (tree name, tree type)
+pushtag (tree name, tree type, location_t loc)
{
/* Record the identifier as the type's name if it has none. */
if (name && !TYPE_NAME (type))
TYPE_NAME (type) = name;
- bind (name, type, current_scope, /*invisible=*/false, /*nested=*/false,
- UNKNOWN_LOCATION);
+ bind (name, type, current_scope, /*invisible=*/false, /*nested=*/false, loc);
/* Create a fake NULL-named TYPE_DECL node whose TREE_TYPE will be the
tagged type we just added to the current scope. This fake
@@ -2685,10 +2733,13 @@ define_label (location_t location, tree name)
If THISLEVEL_ONLY is nonzero, searches only the current_scope.
CODE says which kind of type the caller wants;
it is RECORD_TYPE or UNION_TYPE or ENUMERAL_TYPE.
+ If PLOC is not NULL and this returns non-null, it sets *PLOC to the
+ location where the tag was defined.
If the wrong kind of type is found, an error is reported. */
static tree
-lookup_tag (enum tree_code code, tree name, int thislevel_only)
+lookup_tag (enum tree_code code, tree name, int thislevel_only,
+ location_t *ploc)
{
struct c_binding *b = I_TAG_BINDING (name);
int thislevel = 0;
@@ -2725,6 +2776,10 @@ lookup_tag (enum tree_code code, tree name, int thislevel_only)
if (thislevel)
pending_xref_error ();
}
+
+ if (ploc != NULL)
+ *ploc = b->locus;
+
return b->decl;
}
@@ -2997,12 +3052,12 @@ shadow_tag_warned (const struct c_declspecs *declspecs, int warned)
else
{
pending_invalid_xref = 0;
- t = lookup_tag (code, name, 1);
+ t = lookup_tag (code, name, 1, NULL);
if (t == 0)
{
t = make_node (code);
- pushtag (name, t);
+ pushtag (name, t, input_location);
}
}
}
@@ -3857,6 +3912,17 @@ build_compound_literal (tree type, tree init, bool non_const)
return complit;
}
+
+/* Check the type of a compound literal. Here we just check that it
+ is valid for C++. */
+
+void
+check_compound_literal_type (struct c_type_name *type_name, location_t loc)
+{
+ if (warn_cxx_compat && type_name->specs->tag_defined_p)
+ warning_at (loc, OPT_Wc___compat,
+ "defining a type in a compound literal is invalid in C++");
+}
/* Determine whether TYPE is a structure with a flexible array member,
or a union containing such a structure (possibly recursively). */
@@ -4180,7 +4246,7 @@ grokdeclarator (const struct c_declarator *declarator,
decl_context = PARM;
if (declspecs->deprecated_p && deprecated_state != DEPRECATED_SUPPRESS)
- warn_deprecated_use (declspecs->type);
+ warn_deprecated_use (declspecs->type, declspecs->decl_attr);
if ((decl_context == NORMAL || decl_context == FIELD)
&& current_scope == file_scope
@@ -5515,10 +5581,11 @@ get_parm_info (bool ellipsis)
Return a c_typespec structure for the type specifier. */
struct c_typespec
-parser_xref_tag (enum tree_code code, tree name)
+parser_xref_tag (enum tree_code code, tree name, location_t loc)
{
struct c_typespec ret;
tree ref;
+ location_t refloc;
ret.expr = NULL_TREE;
ret.expr_const_operands = true;
@@ -5526,7 +5593,7 @@ parser_xref_tag (enum tree_code code, tree name)
/* If a cross reference is requested, look up the type
already defined for this tag and return it. */
- ref = lookup_tag (code, name, 0);
+ ref = lookup_tag (code, name, 0, &refloc);
/* If this is the right type of tag, return what we found.
(This reference will be shadowed by shadow_tag later if appropriate.)
If this is the wrong type of tag, do not return it. If it was the
@@ -5541,6 +5608,35 @@ parser_xref_tag (enum tree_code code, tree name)
ret.kind = (ref ? ctsk_tagref : ctsk_tagfirstref);
if (ref && TREE_CODE (ref) == code)
{
+ if (C_TYPE_DEFINED_IN_STRUCT (ref)
+ && loc != UNKNOWN_LOCATION
+ && warn_cxx_compat)
+ {
+ switch (code)
+ {
+ case ENUMERAL_TYPE:
+ warning_at (loc, OPT_Wc___compat,
+ ("enum type defined in struct or union "
+ "is not visible in C++"));
+ inform (refloc, "enum type defined here");
+ break;
+ case RECORD_TYPE:
+ warning_at (loc, OPT_Wc___compat,
+ ("struct defined in struct or union "
+ "is not visible in C++"));
+ inform (refloc, "struct defined here");
+ break;
+ case UNION_TYPE:
+ warning_at (loc, OPT_Wc___compat,
+ ("union defined in struct or union "
+ "is not visible in C++"));
+ inform (refloc, "union defined here");
+ break;
+ default:
+ gcc_unreachable();
+ }
+ }
+
ret.spec = ref;
return ret;
}
@@ -5564,7 +5660,7 @@ parser_xref_tag (enum tree_code code, tree name)
TYPE_MAX_VALUE (ref) = TYPE_MAX_VALUE (unsigned_type_node);
}
- pushtag (name, ref);
+ pushtag (name, ref, loc);
ret.spec = ref;
return ret;
@@ -5577,40 +5673,53 @@ parser_xref_tag (enum tree_code code, tree name)
tree
xref_tag (enum tree_code code, tree name)
{
- return parser_xref_tag (code, name).spec;
+ return parser_xref_tag (code, name, UNKNOWN_LOCATION).spec;
}
/* Make sure that the tag NAME is defined *in the current scope*
at least as a forward reference.
- CODE says which kind of tag NAME ought to be. */
+ CODE says which kind of tag NAME ought to be.
+
+ This stores the current value of the file static IN_STRUCT in
+ *ENCLOSING_IN_STRUCT, and sets IN_STRUCT to true. Similarly, this
+ sets STRUCT_TYPES in *ENCLOSING_STRUCT_TYPES, and sets STRUCT_TYPES
+ to an empty vector. The old values are restored in
+ finish_struct. */
tree
-start_struct (enum tree_code code, tree name)
+start_struct (enum tree_code code, tree name, bool *enclosing_in_struct,
+ VEC(tree,heap) **enclosing_struct_types, location_t loc)
{
/* If there is already a tag defined at this scope
(as a forward reference), just return it. */
- tree ref = 0;
+ tree ref = NULL_TREE;
+ location_t refloc = UNKNOWN_LOCATION;
- if (name != 0)
- ref = lookup_tag (code, name, 1);
+ if (name != NULL_TREE)
+ ref = lookup_tag (code, name, 1, &refloc);
if (ref && TREE_CODE (ref) == code)
{
if (TYPE_SIZE (ref))
{
if (code == UNION_TYPE)
- error ("redefinition of %<union %E%>", name);
+ error_at (loc, "redefinition of %<union %E%>", name);
else
- error ("redefinition of %<struct %E%>", name);
+ error_at (loc, "redefinition of %<struct %E%>", name);
+ if (refloc != UNKNOWN_LOCATION)
+ inform (refloc, "originally defined here");
/* Don't create structures using a name already in use. */
ref = NULL_TREE;
}
else if (C_TYPE_BEING_DEFINED (ref))
{
if (code == UNION_TYPE)
- error ("nested redefinition of %<union %E%>", name);
+ error_at (loc, "nested redefinition of %<union %E%>", name);
else
- error ("nested redefinition of %<struct %E%>", name);
+ error_at (loc, "nested redefinition of %<struct %E%>", name);
+ /* Don't bother to report "originally defined here" for a
+ nested redefinition; the original definition should be
+ obvious. */
/* Don't create structures that contain themselves. */
ref = NULL_TREE;
}
@@ -5621,11 +5730,28 @@ start_struct (enum tree_code code, tree name)
if (ref == NULL_TREE || TREE_CODE (ref) != code)
{
ref = make_node (code);
- pushtag (name, ref);
+ pushtag (name, ref, loc);
}
C_TYPE_BEING_DEFINED (ref) = 1;
TYPE_PACKED (ref) = flag_pack_struct;
+
+ *enclosing_in_struct = in_struct;
+ *enclosing_struct_types = struct_types;
+ in_struct = true;
+ struct_types = VEC_alloc(tree, heap, 0);
+
+ /* FIXME: This will issue a warning for a use of a type defined
+ within a statement expr used within sizeof, et. al. This is not
+ terribly serious as C++ doesn't permit statement exprs within
+ sizeof anyhow. */
+ if (warn_cxx_compat && (in_sizeof || in_typeof || in_alignof))
+ warning_at (loc, OPT_Wc___compat,
+ "defining type in %qs expression is invalid in C++",
+ (in_sizeof
+ ? "sizeof"
+ : (in_typeof ? "typeof" : "alignof")));
+
return ref;
}
@@ -5763,14 +5889,22 @@ detect_field_duplicates (tree fieldlist)
/* Fill in the fields of a RECORD_TYPE or UNION_TYPE node, T.
FIELDLIST is a chain of FIELD_DECL nodes for the fields.
- ATTRIBUTES are attributes to be applied to the structure. */
+ ATTRIBUTES are attributes to be applied to the structure.
+
+ ENCLOSING_IN_STRUCT is the value of IN_STRUCT, and
+ ENCLOSING_STRUCT_TYPES is the value of STRUCT_TYPES, when the
+ struct was started. This sets the C_TYPE_DEFINED_IN_STRUCT flag
+ for any type defined in the current struct. */
tree
-finish_struct (tree t, tree fieldlist, tree attributes)
+finish_struct (tree t, tree fieldlist, tree attributes,
+ bool enclosing_in_struct,
+ VEC(tree,heap) *enclosing_struct_types)
{
tree x;
bool toplevel = file_scope == current_scope;
int saw_named_field;
+ unsigned int ix;
/* If this type was previously laid out as a forward reference,
make sure we lay it out again. */
@@ -6023,6 +6157,24 @@ finish_struct (tree t, tree fieldlist, tree attributes)
if (cur_stmt_list && variably_modified_type_p (t, NULL_TREE))
add_stmt (build_stmt (DECL_EXPR, build_decl (TYPE_DECL, NULL, t)));
+ /* Set the C_TYPE_DEFINED_IN_STRUCT flag for each type defined in
+ the current struct. We do this now at the end of the struct
+ because the flag is used to issue visibility warnings when using
+ -Wc++-compat, and we only want to issue those warnings if the
+ type is referenced outside of the struct declaration. */
+ for (ix = 0; VEC_iterate (tree, struct_types, ix, x); ++ix)
+ C_TYPE_DEFINED_IN_STRUCT (x) = 1;
+
+ VEC_free (tree, heap, struct_types);
+
+ in_struct = enclosing_in_struct;
+ struct_types = enclosing_struct_types;
+
+ /* If this struct is defined inside a struct, add it to
+ STRUCT_TYPES. */
+ if (in_struct && !in_sizeof && !in_typeof && !in_alignof)
+ VEC_safe_push (tree, heap, struct_types, t);
+
return t;
}
@@ -6043,32 +6195,35 @@ layout_array_type (tree t)
may be used to declare the individual values as they are read. */
tree
-start_enum (struct c_enum_contents *the_enum, tree name)
+start_enum (struct c_enum_contents *the_enum, tree name, location_t loc)
{
- tree enumtype = 0;
+ tree enumtype = NULL_TREE;
+ location_t enumloc = UNKNOWN_LOCATION;
/* If this is the real definition for a previous forward reference,
fill in the contents in the same object that used to be the
forward reference. */
- if (name != 0)
- enumtype = lookup_tag (ENUMERAL_TYPE, name, 1);
+ if (name != NULL_TREE)
+ enumtype = lookup_tag (ENUMERAL_TYPE, name, 1, &enumloc);
if (enumtype == 0 || TREE_CODE (enumtype) != ENUMERAL_TYPE)
{
enumtype = make_node (ENUMERAL_TYPE);
- pushtag (name, enumtype);
+ pushtag (name, enumtype, loc);
}
if (C_TYPE_BEING_DEFINED (enumtype))
- error ("nested redefinition of %<enum %E%>", name);
+ error_at (loc, "nested redefinition of %<enum %E%>", name);
C_TYPE_BEING_DEFINED (enumtype) = 1;
if (TYPE_VALUES (enumtype) != 0)
{
/* This enum is a named one that has been declared already. */
- error ("redeclaration of %<enum %E%>", name);
+ error_at (loc, "redeclaration of %<enum %E%>", name);
+ if (enumloc != UNKNOWN_LOCATION)
+ inform (enumloc, "originally defined here");
/* Completely replace its old definition.
The old enumerators remain defined, however. */
@@ -6081,6 +6236,16 @@ start_enum (struct c_enum_contents *the_enum, tree name)
if (flag_short_enums)
TYPE_PACKED (enumtype) = 1;
+ /* FIXME: This will issue a warning for a use of a type defined
+ within sizeof in a statement expr. This is not terribly serious
+ as C++ doesn't permit statement exprs within sizeof anyhow. */
+ if (warn_cxx_compat && (in_sizeof || in_typeof || in_alignof))
+ warning_at (loc, OPT_Wc___compat,
+ "defining type in %qs expression is invalid in C++",
+ (in_sizeof
+ ? "sizeof"
+ : (in_typeof ? "typeof" : "alignof")));
+
return enumtype;
}
@@ -6220,6 +6385,11 @@ finish_enum (tree enumtype, tree values, tree attributes)
/* Finish debugging output for this type. */
rest_of_type_compilation (enumtype, toplevel);
+ /* If this enum is defined inside a struct, add it to
+ STRUCT_TYPES. */
+ if (in_struct && !in_sizeof && !in_typeof && !in_alignof)
+ VEC_safe_push (tree, heap, struct_types, enumtype);
+
return enumtype;
}
diff --git a/gcc/c-lex.c b/gcc/c-lex.c
index df6354843bf..66df4c40f7b 100644
--- a/gcc/c-lex.c
+++ b/gcc/c-lex.c
@@ -313,7 +313,7 @@ c_lex_with_flags (tree *value, location_t *loc, unsigned char *cpp_flags,
goto retry;
case CPP_NAME:
- *value = HT_IDENT_TO_GCC_IDENT (HT_NODE (tok->val.node));
+ *value = HT_IDENT_TO_GCC_IDENT (HT_NODE (tok->val.node.node));
break;
case CPP_NUMBER:
@@ -369,7 +369,7 @@ c_lex_with_flags (tree *value, location_t *loc, unsigned char *cpp_flags,
break;
case CPP_NAME:
- *value = HT_IDENT_TO_GCC_IDENT (HT_NODE (tok->val.node));
+ *value = HT_IDENT_TO_GCC_IDENT (HT_NODE (tok->val.node.node));
if (objc_is_reserved_word (*value))
{
type = CPP_AT_NAME;
@@ -617,11 +617,21 @@ interpret_float (const cpp_token *token, unsigned int flags)
char *copy;
size_t copylen;
- /* Default (no suffix) is double. */
+ /* Default (no suffix) depends on whether the FLOAT_CONST_DECIMAL64
+ pragma has been used and is either double or _Decimal64. Types
+ that are not allowed with decimal float default to double. */
if (flags & CPP_N_DEFAULT)
{
flags ^= CPP_N_DEFAULT;
flags |= CPP_N_MEDIUM;
+
+ if (((flags & CPP_N_HEX) == 0) && ((flags & CPP_N_IMAGINARY) == 0))
+ {
+ warning (OPT_Wunsuffixed_float_constants,
+ "unsuffixed float constant");
+ if (float_const_decimal64_p ())
+ flags |= CPP_N_DFLOAT;
+ }
}
/* Decode _Fract and _Accum. */
diff --git a/gcc/c-parser.c b/gcc/c-parser.c
index 6c839e9104c..beda817c202 100644
--- a/gcc/c-parser.c
+++ b/gcc/c-parser.c
@@ -820,12 +820,14 @@ disable_extension_diagnostics (void)
| (warn_pointer_arith << 1)
| (warn_traditional << 2)
| (flag_iso << 3)
- | (warn_long_long << 4));
+ | (warn_long_long << 4)
+ | (warn_cxx_compat << 5));
cpp_opts->pedantic = pedantic = 0;
warn_pointer_arith = 0;
cpp_opts->warn_traditional = warn_traditional = 0;
flag_iso = 0;
cpp_opts->warn_long_long = warn_long_long = 0;
+ warn_cxx_compat = 0;
return ret;
}
@@ -840,6 +842,7 @@ restore_extension_diagnostics (int flags)
cpp_opts->warn_traditional = warn_traditional = (flags >> 2) & 1;
flag_iso = (flags >> 3) & 1;
cpp_opts->warn_long_long = warn_long_long = (flags >> 4) & 1;
+ warn_cxx_compat = (flags >> 5) & 1;
}
/* Possibly kinds of declarator to parse. */
@@ -910,7 +913,8 @@ static struct c_expr c_parser_sizeof_expression (c_parser *);
static struct c_expr c_parser_alignof_expression (c_parser *);
static struct c_expr c_parser_postfix_expression (c_parser *);
static struct c_expr c_parser_postfix_expression_after_paren_type (c_parser *,
- struct c_type_name *);
+ struct c_type_name *,
+ location_t);
static struct c_expr c_parser_postfix_expression_after_primary (c_parser *,
struct c_expr);
static struct c_expr c_parser_expression (c_parser *);
@@ -976,6 +980,7 @@ c_parser_translation_unit (c_parser *parser)
else
{
void *obstack_position = obstack_alloc (&parser_obstack, 0);
+ mark_valid_location_for_stdc_pragma (false);
do
{
ggc_collect ();
@@ -1060,7 +1065,9 @@ c_parser_external_declaration (c_parser *parser)
c_parser_consume_token (parser);
break;
case CPP_PRAGMA:
+ mark_valid_location_for_stdc_pragma (true);
c_parser_pragma (parser, pragma_external);
+ mark_valid_location_for_stdc_pragma (false);
break;
case CPP_PLUS:
case CPP_MINUS:
@@ -1617,8 +1624,10 @@ c_parser_enum_specifier (c_parser *parser)
struct c_typespec ret;
tree attrs;
tree ident = NULL_TREE;
+ location_t enum_loc;
location_t ident_loc = UNKNOWN_LOCATION; /* Quiet warning. */
gcc_assert (c_parser_next_token_is_keyword (parser, RID_ENUM));
+ enum_loc = c_parser_peek_token (parser)->location;
c_parser_consume_token (parser);
attrs = c_parser_attributes (parser);
/* Set the location in case we create a decl now. */
@@ -1627,13 +1636,14 @@ c_parser_enum_specifier (c_parser *parser)
{
ident = c_parser_peek_token (parser)->value;
ident_loc = c_parser_peek_token (parser)->location;
+ enum_loc = ident_loc;
c_parser_consume_token (parser);
}
if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
{
/* Parse an enum definition. */
struct c_enum_contents the_enum;
- tree type = start_enum (&the_enum, ident);
+ tree type = start_enum (&the_enum, ident, enum_loc);
tree postfix_attrs;
/* We chain the enumerators in reverse order, then put them in
forward order at the end. */
@@ -1712,7 +1722,7 @@ c_parser_enum_specifier (c_parser *parser)
ret.expr_const_operands = true;
return ret;
}
- ret = parser_xref_tag (ENUMERAL_TYPE, ident);
+ ret = parser_xref_tag (ENUMERAL_TYPE, ident, ident_loc);
/* In ISO C, enumerated types can be referred to only if already
defined. */
if (pedantic && !COMPLETE_TYPE_P (ret.spec))
@@ -1769,6 +1779,8 @@ c_parser_struct_or_union_specifier (c_parser *parser)
struct c_typespec ret;
tree attrs;
tree ident = NULL_TREE;
+ location_t struct_loc;
+ location_t ident_loc = UNKNOWN_LOCATION;
enum tree_code code;
switch (c_parser_peek_token (parser)->keyword)
{
@@ -1781,6 +1793,7 @@ c_parser_struct_or_union_specifier (c_parser *parser)
default:
gcc_unreachable ();
}
+ struct_loc = c_parser_peek_token (parser)->location;
c_parser_consume_token (parser);
attrs = c_parser_attributes (parser);
/* Set the location in case we create a decl now. */
@@ -1788,13 +1801,18 @@ c_parser_struct_or_union_specifier (c_parser *parser)
if (c_parser_next_token_is (parser, CPP_NAME))
{
ident = c_parser_peek_token (parser)->value;
+ ident_loc = c_parser_peek_token (parser)->location;
+ struct_loc = ident_loc;
c_parser_consume_token (parser);
}
if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
{
/* Parse a struct or union definition. Start the scope of the
tag before parsing components. */
- tree type = start_struct (code, ident);
+ bool in_struct;
+ VEC(tree,heap) *struct_types;
+ tree type = start_struct (code, ident, &in_struct, &struct_types,
+ struct_loc);
tree postfix_attrs;
/* We chain the components in reverse order, then put them in
forward order at the end. Each struct-declaration may
@@ -1884,7 +1902,8 @@ c_parser_struct_or_union_specifier (c_parser *parser)
}
postfix_attrs = c_parser_attributes (parser);
ret.spec = finish_struct (type, nreverse (contents),
- chainon (attrs, postfix_attrs));
+ chainon (attrs, postfix_attrs),
+ in_struct, struct_types);
ret.kind = ctsk_tagdef;
ret.expr = NULL_TREE;
ret.expr_const_operands = true;
@@ -1899,7 +1918,7 @@ c_parser_struct_or_union_specifier (c_parser *parser)
ret.expr_const_operands = true;
return ret;
}
- ret = parser_xref_tag (code, ident);
+ ret = parser_xref_tag (code, ident, ident_loc);
return ret;
}
@@ -3350,17 +3369,20 @@ c_parser_compound_statement_nostart (c_parser *parser)
{
bool last_stmt = false;
bool last_label = false;
+ bool save_valid_for_pragma = valid_location_for_stdc_pragma_p ();
location_t label_loc = UNKNOWN_LOCATION; /* Quiet warning. */
if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE))
{
c_parser_consume_token (parser);
return;
}
+ mark_valid_location_for_stdc_pragma (true);
if (c_parser_next_token_is_keyword (parser, RID_LABEL))
{
location_t err_loc = c_parser_peek_token (parser)->location;
/* Read zero or more forward-declarations for labels that nested
functions can jump to. */
+ mark_valid_location_for_stdc_pragma (false);
while (c_parser_next_token_is_keyword (parser, RID_LABEL))
{
c_parser_consume_token (parser);
@@ -3391,6 +3413,7 @@ c_parser_compound_statement_nostart (c_parser *parser)
/* We must now have at least one statement, label or declaration. */
if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE))
{
+ mark_valid_location_for_stdc_pragma (save_valid_for_pragma);
c_parser_error (parser, "expected declaration or statement");
c_parser_consume_token (parser);
return;
@@ -3409,12 +3432,14 @@ c_parser_compound_statement_nostart (c_parser *parser)
label_loc = c_parser_peek_token (parser)->location;
last_label = true;
last_stmt = false;
+ mark_valid_location_for_stdc_pragma (false);
c_parser_label (parser);
}
else if (!last_label
&& c_parser_next_token_starts_declspecs (parser))
{
last_label = false;
+ mark_valid_location_for_stdc_pragma (false);
c_parser_declaration_or_fndef (parser, true, true, true, true);
if (last_stmt)
pedwarn_c90 (loc,
@@ -3441,6 +3466,7 @@ c_parser_compound_statement_nostart (c_parser *parser)
ext = disable_extension_diagnostics ();
c_parser_consume_token (parser);
last_label = false;
+ mark_valid_location_for_stdc_pragma (false);
c_parser_declaration_or_fndef (parser, true, true, true, true);
/* Following the old parser, __extension__ does not
disable this diagnostic. */
@@ -3467,6 +3493,7 @@ c_parser_compound_statement_nostart (c_parser *parser)
}
else if (c_parser_next_token_is (parser, CPP_EOF))
{
+ mark_valid_location_for_stdc_pragma (save_valid_for_pragma);
c_parser_error (parser, "expected declaration or statement");
return;
}
@@ -3474,6 +3501,7 @@ c_parser_compound_statement_nostart (c_parser *parser)
{
if (parser->in_if_block)
{
+ mark_valid_location_for_stdc_pragma (save_valid_for_pragma);
error_at (loc, """expected %<}%> before %<else%>");
return;
}
@@ -3489,6 +3517,7 @@ c_parser_compound_statement_nostart (c_parser *parser)
statement:
last_label = false;
last_stmt = true;
+ mark_valid_location_for_stdc_pragma (false);
c_parser_statement_after_labels (parser);
}
@@ -3497,6 +3526,8 @@ c_parser_compound_statement_nostart (c_parser *parser)
if (last_label)
error_at (label_loc, "label at end of compound statement");
c_parser_consume_token (parser);
+ /* Restore the value we started with. */
+ mark_valid_location_for_stdc_pragma (save_valid_for_pragma);
}
/* Parse a label (C90 6.6.1, C99 6.8.1).
@@ -4828,10 +4859,12 @@ c_parser_cast_expression (c_parser *parser, struct c_expr *after)
if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
&& c_token_starts_typename (c_parser_peek_2nd_token (parser)))
{
+ location_t loc;
struct c_type_name *type_name;
struct c_expr ret;
struct c_expr expr;
c_parser_consume_token (parser);
+ loc = c_parser_peek_token (parser)->location;
type_name = c_parser_type_name (parser);
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>");
if (type_name == NULL)
@@ -4846,11 +4879,11 @@ c_parser_cast_expression (c_parser *parser, struct c_expr *after)
used_types_insert (type_name->specs->type);
if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
- return c_parser_postfix_expression_after_paren_type (parser,
- type_name);
+ return c_parser_postfix_expression_after_paren_type (parser, type_name,
+ loc);
expr = c_parser_cast_expression (parser, NULL);
expr = default_function_array_conversion (expr);
- ret.value = c_cast_expr (type_name, expr.value);
+ ret.value = c_cast_expr (type_name, expr.value, loc);
ret.original_code = ERROR_MARK;
ret.original_type = NULL;
return ret;
@@ -5021,7 +5054,8 @@ c_parser_sizeof_expression (c_parser *parser)
if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
{
expr = c_parser_postfix_expression_after_paren_type (parser,
- type_name);
+ type_name,
+ expr_loc);
goto sizeof_expr;
}
/* sizeof ( type-name ). */
@@ -5058,9 +5092,11 @@ c_parser_alignof_expression (c_parser *parser)
{
/* Either __alignof__ ( type-name ) or __alignof__
unary-expression starting with a compound literal. */
+ location_t loc;
struct c_type_name *type_name;
struct c_expr ret;
c_parser_consume_token (parser);
+ loc = c_parser_peek_token (parser)->location;
type_name = c_parser_type_name (parser);
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, "expected %<)%>");
if (type_name == NULL)
@@ -5076,7 +5112,8 @@ c_parser_alignof_expression (c_parser *parser)
if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
{
expr = c_parser_postfix_expression_after_paren_type (parser,
- type_name);
+ type_name,
+ loc);
goto alignof_expr;
}
/* alignof ( type-name ). */
@@ -5247,8 +5284,10 @@ c_parser_postfix_expression (c_parser *parser)
than going directly to
c_parser_postfix_expression_after_paren_type from
elsewhere? */
+ location_t loc;
struct c_type_name *type_name;
c_parser_consume_token (parser);
+ loc = c_parser_peek_token (parser)->location;
type_name = c_parser_type_name (parser);
c_parser_skip_until_found (parser, CPP_CLOSE_PAREN,
"expected %<)%>");
@@ -5258,7 +5297,8 @@ c_parser_postfix_expression (c_parser *parser)
}
else
expr = c_parser_postfix_expression_after_paren_type (parser,
- type_name);
+ type_name,
+ loc);
}
else
{
@@ -5576,11 +5616,14 @@ c_parser_postfix_expression (c_parser *parser)
possible to tell until after the type name whether a cast
expression has a cast or a compound literal, or whether the operand
of sizeof is a parenthesized type name or starts with a compound
- literal. */
+ literal. TYPE_LOC is the location where TYPE_NAME starts--the
+ location of the first token after the parentheses around the type
+ name. */
static struct c_expr
c_parser_postfix_expression_after_paren_type (c_parser *parser,
- struct c_type_name *type_name)
+ struct c_type_name *type_name,
+ location_t type_loc)
{
tree type;
struct c_expr init;
@@ -5589,12 +5632,13 @@ c_parser_postfix_expression_after_paren_type (c_parser *parser,
location_t start_loc;
tree type_expr = NULL_TREE;
bool type_expr_const = true;
+ check_compound_literal_type (type_name, type_loc);
start_init (NULL_TREE, NULL, 0);
type = groktypename (type_name, &type_expr, &type_expr_const);
start_loc = c_parser_peek_token (parser)->location;
if (type != error_mark_node && C_TYPE_VARIABLE_SIZE (type))
{
- error_at (start_loc, "compound literal has variable size");
+ error_at (type_loc, "compound literal has variable size");
type = error_mark_node;
}
init = c_parser_braced_init (parser, type, false);
diff --git a/gcc/c-pragma.c b/gcc/c-pragma.c
index 64a224f4a28..bd71d1d79e8 100644
--- a/gcc/c-pragma.c
+++ b/gcc/c-pragma.c
@@ -1162,6 +1162,116 @@ handle_pragma_message (cpp_reader *ARG_UNUSED(dummy))
inform (input_location, "#pragma message: %s", TREE_STRING_POINTER (message));
}
+/* Mark whether the current location is valid for a STDC pragma. */
+
+static bool valid_location_for_stdc_pragma;
+
+void
+mark_valid_location_for_stdc_pragma (bool flag)
+{
+ valid_location_for_stdc_pragma = flag;
+}
+
+/* Return true if the current location is valid for a STDC pragma. */
+
+bool
+valid_location_for_stdc_pragma_p (void)
+{
+ return valid_location_for_stdc_pragma;
+}
+
+enum pragma_switch_t { ON, OFF, DEFAULT, BAD };
+
+/* A STDC pragma must appear outside of external declarations or
+ preceding all explicit declarations and statements inside a compound
+ statement; its behavior is undefined if used in any other context.
+ It takes a switch of ON, OFF, or DEFAULT. */
+
+static enum pragma_switch_t
+handle_stdc_pragma (const char *pname)
+{
+ const char *arg;
+ tree t;
+ enum pragma_switch_t ret;
+
+ if (!valid_location_for_stdc_pragma_p ())
+ {
+ warning (OPT_Wpragmas, "invalid location for %<pragma %s%>, ignored",
+ pname);
+ return BAD;
+ }
+
+ if (pragma_lex (&t) != CPP_NAME)
+ {
+ warning (OPT_Wpragmas, "malformed %<#pragma %s%>, ignored", pname);
+ return BAD;
+ }
+
+ arg = IDENTIFIER_POINTER (t);
+
+ if (!strcmp (arg, "ON"))
+ ret = ON;
+ else if (!strcmp (arg, "OFF"))
+ ret = OFF;
+ else if (!strcmp (arg, "DEFAULT"))
+ ret = DEFAULT;
+ else
+ {
+ warning (OPT_Wpragmas, "malformed %<#pragma %s%>, ignored", pname);
+ return BAD;
+ }
+
+ if (pragma_lex (&t) != CPP_EOF)
+ {
+ warning (OPT_Wpragmas, "junk at end of %<#pragma %s%>", pname);
+ return BAD;
+ }
+
+ return ret;
+}
+
+/* #pragma STDC FLOAT_CONST_DECIMAL64 ON
+ #pragma STDC FLOAT_CONST_DECIMAL64 OFF
+ #pragma STDC FLOAT_CONST_DECIMAL64 DEFAULT */
+
+static void
+handle_pragma_float_const_decimal64 (cpp_reader *ARG_UNUSED (dummy))
+{
+ if (c_dialect_cxx ())
+ {
+ if (warn_unknown_pragmas > in_system_header)
+ warning (OPT_Wunknown_pragmas,
+ "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported"
+ " for C++");
+ return;
+ }
+
+ if (!targetm.decimal_float_supported_p ())
+ {
+ if (warn_unknown_pragmas > in_system_header)
+ warning (OPT_Wunknown_pragmas,
+ "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported"
+ " on this target");
+ return;
+ }
+
+ pedwarn (input_location, OPT_pedantic,
+ "ISO C does not support %<#pragma STDC FLOAT_CONST_DECIMAL64%>");
+
+ switch (handle_stdc_pragma ("STDC FLOAT_CONST_DECIMAL64"))
+ {
+ case ON:
+ set_float_const_decimal64 ();
+ break;
+ case OFF:
+ case DEFAULT:
+ clear_float_const_decimal64 ();
+ break;
+ case BAD:
+ break;
+ }
+}
+
/* A vector of registered pragma callbacks. */
DEF_VEC_O (pragma_handler);
@@ -1330,6 +1440,9 @@ init_pragma (void)
c_register_pragma ("GCC", "pop_options", handle_pragma_pop_options);
c_register_pragma ("GCC", "reset_options", handle_pragma_reset_options);
+ c_register_pragma ("STDC", "FLOAT_CONST_DECIMAL64",
+ handle_pragma_float_const_decimal64);
+
c_register_pragma_with_expansion (0, "redefine_extname", handle_pragma_redefine_extname);
c_register_pragma (0, "extern_prefix", handle_pragma_extern_prefix);
diff --git a/gcc/c-pretty-print.c b/gcc/c-pretty-print.c
index efd15ac9b26..f9694bfc080 100644
--- a/gcc/c-pretty-print.c
+++ b/gcc/c-pretty-print.c
@@ -31,6 +31,10 @@ along with GCC; see the file COPYING3. If not see
#include "tree-iterator.h"
#include "diagnostic.h"
+/* Translate if being used for diagnostics, but not for dump files or
+ __PRETTY_FUNCTION. */
+#define M_(msgid) (pp_translate_identifiers (pp) ? _(msgid) : (msgid))
+
/* The pretty-printer code is primarily designed to closely follow
(GNU) C and C++ grammars. That is to be contrasted with spaghetti
codes we used to have in the past. Following a structured
@@ -307,7 +311,7 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t)
switch (code)
{
case ERROR_MARK:
- pp_c_ws_string (pp, _("<type-error>"));
+ pp_c_ws_string (pp, M_("<type-error>"));
break;
case IDENTIFIER_NODE:
@@ -346,14 +350,14 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t)
{
case INTEGER_TYPE:
pp_string (pp, (TYPE_UNSIGNED (t)
- ? _("<unnamed-unsigned:")
- : _("<unnamed-signed:")));
+ ? M_("<unnamed-unsigned:")
+ : M_("<unnamed-signed:")));
break;
case REAL_TYPE:
- pp_string (pp, _("<unnamed-float:"));
+ pp_string (pp, M_("<unnamed-float:"));
break;
case FIXED_POINT_TYPE:
- pp_string (pp, _("<unnamed-fixed:"));
+ pp_string (pp, M_("<unnamed-fixed:"));
break;
default:
gcc_unreachable ();
@@ -368,7 +372,7 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t)
if (DECL_NAME (t))
pp_id_expression (pp, t);
else
- pp_c_ws_string (pp, _("<typedef-error>"));
+ pp_c_ws_string (pp, M_("<typedef-error>"));
break;
case UNION_TYPE:
@@ -381,12 +385,12 @@ pp_c_type_specifier (c_pretty_printer *pp, tree t)
else if (code == ENUMERAL_TYPE)
pp_c_ws_string (pp, "enum");
else
- pp_c_ws_string (pp, _("<tag-error>"));
+ pp_c_ws_string (pp, M_("<tag-error>"));
if (TYPE_NAME (t))
pp_id_expression (pp, TYPE_NAME (t));
else
- pp_c_ws_string (pp, _("<anonymous>"));
+ pp_c_ws_string (pp, M_("<anonymous>"));
break;
default:
@@ -1119,11 +1123,11 @@ pp_c_primary_expression (c_pretty_printer *pp, tree e)
break;
case ERROR_MARK:
- pp_c_ws_string (pp, _("<erroneous-expression>"));
+ pp_c_ws_string (pp, M_("<erroneous-expression>"));
break;
case RESULT_DECL:
- pp_c_ws_string (pp, _("<return-value>"));
+ pp_c_ws_string (pp, M_("<return-value>"));
break;
case INTEGER_CST:
diff --git a/gcc/c-tree.h b/gcc/c-tree.h
index 0bfcdfe387a..6062d59982d 100644
--- a/gcc/c-tree.h
+++ b/gcc/c-tree.h
@@ -73,6 +73,10 @@ struct GTY(()) lang_type {
#define C_TYPE_VARIABLE_SIZE(TYPE) TYPE_LANG_FLAG_1 (TYPE)
#define C_DECL_VARIABLE_SIZE(TYPE) DECL_LANG_FLAG_0 (TYPE)
+/* Record whether a type is defined inside a struct or union type.
+ This is used for -Wc++-compat. */
+#define C_TYPE_DEFINED_IN_STRUCT(TYPE) TYPE_LANG_FLAG_2 (TYPE)
+
/* Record whether a typedef for type `int' was actually `signed int'. */
#define C_TYPEDEF_EXPLICITLY_SIGNED(EXP) DECL_LANG_FLAG_1 (EXP)
@@ -514,7 +518,7 @@ extern void c_maybe_initialize_eh (void);
extern void finish_decl (tree, tree, tree, tree);
extern tree finish_enum (tree, tree, tree);
extern void finish_function (void);
-extern tree finish_struct (tree, tree, tree);
+extern tree finish_struct (tree, tree, tree, bool, VEC(tree,heap) *);
extern struct c_arg_info *get_parm_info (bool);
extern tree grokfield (location_t, struct c_declarator *,
struct c_declspecs *, tree, tree *);
@@ -532,15 +536,16 @@ extern tree c_builtin_function (tree);
extern tree c_builtin_function_ext_scope (tree);
extern void shadow_tag (const struct c_declspecs *);
extern void shadow_tag_warned (const struct c_declspecs *, int);
-extern tree start_enum (struct c_enum_contents *, tree);
+extern tree start_enum (struct c_enum_contents *, tree, location_t);
extern int start_function (struct c_declspecs *, struct c_declarator *, tree);
extern tree start_decl (struct c_declarator *, struct c_declspecs *, bool,
tree);
-extern tree start_struct (enum tree_code, tree);
+extern tree start_struct (enum tree_code, tree, bool *, VEC(tree,heap) **,
+ location_t);
extern void store_parm_decls (void);
extern void store_parm_decls_from (struct c_arg_info *);
extern tree xref_tag (enum tree_code, tree);
-extern struct c_typespec parser_xref_tag (enum tree_code, tree);
+extern struct c_typespec parser_xref_tag (enum tree_code, tree, location_t);
extern int c_expand_decl (tree);
extern struct c_parm *build_c_parm (struct c_declspecs *, tree,
struct c_declarator *);
@@ -604,7 +609,7 @@ extern struct c_expr parser_build_binary_op (location_t,
struct c_expr);
extern tree build_conditional_expr (tree, bool, tree, tree);
extern tree build_compound_expr (tree, tree);
-extern tree c_cast_expr (struct c_type_name *, tree);
+extern tree c_cast_expr (struct c_type_name *, tree, location_t);
extern tree build_c_cast (tree, tree);
extern void store_init_value (tree, tree, tree);
extern void error_init (const char *);
@@ -619,6 +624,7 @@ extern void set_init_index (tree, tree);
extern void set_init_label (tree);
extern void process_init_element (struct c_expr, bool);
extern tree build_compound_literal (tree, tree, bool);
+extern void check_compound_literal_type (struct c_type_name *, location_t);
extern tree c_start_case (tree);
extern void c_finish_case (tree);
extern tree build_asm_expr (tree, tree, tree, tree, bool);
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index bef5e3814f2..f1dc7a34c59 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -1964,7 +1964,7 @@ build_component_ref (tree datum, tree component)
TREE_THIS_VOLATILE (ref) = 1;
if (TREE_DEPRECATED (subdatum))
- warn_deprecated_use (subdatum);
+ warn_deprecated_use (subdatum, NULL_TREE);
datum = ref;
@@ -2225,7 +2225,7 @@ build_external_ref (tree id, int fun, location_t loc, tree *type)
return error_mark_node;
if (TREE_DEPRECATED (ref))
- warn_deprecated_use (ref);
+ warn_deprecated_use (ref, NULL_TREE);
/* Recursive call does not count as usage. */
if (ref != current_function_decl)
@@ -2246,6 +2246,17 @@ build_external_ref (tree id, int fun, location_t loc, tree *type)
if (TREE_CODE (ref) == CONST_DECL)
{
used_types_insert (TREE_TYPE (ref));
+
+ if (warn_cxx_compat
+ && TREE_CODE (TREE_TYPE (ref)) == ENUMERAL_TYPE
+ && C_TYPE_DEFINED_IN_STRUCT (TREE_TYPE (ref)))
+ {
+ warning_at (loc, OPT_Wc___compat,
+ ("enum constant defined in struct or union "
+ "is not visible in C++"));
+ inform (DECL_SOURCE_LOCATION (ref), "enum constant defined here");
+ }
+
ref = DECL_INITIAL (ref);
TREE_CONSTANT (ref) = 1;
}
@@ -4262,7 +4273,7 @@ build_c_cast (tree type, tree expr)
/* Interpret a cast of expression EXPR to type TYPE. */
tree
-c_cast_expr (struct c_type_name *type_name, tree expr)
+c_cast_expr (struct c_type_name *type_name, tree expr, location_t loc)
{
tree type;
tree type_expr = NULL_TREE;
@@ -4283,6 +4294,15 @@ c_cast_expr (struct c_type_name *type_name, tree expr)
ret = build2 (C_MAYBE_CONST_EXPR, TREE_TYPE (ret), type_expr, ret);
C_MAYBE_CONST_EXPR_NON_CONST (ret) = !type_expr_const;
}
+
+ if (CAN_HAVE_LOCATION_P (ret) && !EXPR_HAS_LOCATION (ret))
+ SET_EXPR_LOCATION (ret, loc);
+
+ /* C++ does not permits types to be defined in a cast. */
+ if (warn_cxx_compat && type_name->specs->tag_defined_p)
+ warning_at (loc, OPT_Wc___compat,
+ "defining a type in a cast is invalid in C++");
+
return ret;
}
@@ -9246,7 +9266,9 @@ build_binary_op (location_t location, enum tree_code code,
(code1 == INTEGER_TYPE || code1 == REAL_TYPE || code1 == COMPLEX_TYPE
|| code1 == FIXED_POINT_TYPE || code1 == VECTOR_TYPE))
{
- int none_complex = (code0 != COMPLEX_TYPE && code1 != COMPLEX_TYPE);
+ bool first_complex = (code0 == COMPLEX_TYPE);
+ bool second_complex = (code1 == COMPLEX_TYPE);
+ int none_complex = (!first_complex && !second_complex);
if (shorten || common || short_compare)
{
@@ -9255,6 +9277,89 @@ build_binary_op (location_t location, enum tree_code code,
return error_mark_node;
}
+ if (first_complex != second_complex
+ && (code == PLUS_EXPR
+ || code == MINUS_EXPR
+ || code == MULT_EXPR
+ || (code == TRUNC_DIV_EXPR && first_complex))
+ && TREE_CODE (TREE_TYPE (result_type)) == REAL_TYPE
+ && flag_signed_zeros)
+ {
+ /* An operation on mixed real/complex operands must be
+ handled specially, but the language-independent code can
+ more easily optimize the plain complex arithmetic if
+ -fno-signed-zeros. */
+ tree real_type = TREE_TYPE (result_type);
+ tree real, imag;
+ if (type0 != orig_type0 || type1 != orig_type1)
+ {
+ gcc_assert (may_need_excess_precision && common);
+ real_result_type = c_common_type (orig_type0, orig_type1);
+ }
+ if (first_complex)
+ {
+ if (TREE_TYPE (op0) != result_type)
+ op0 = convert_and_check (result_type, op0);
+ if (TREE_TYPE (op1) != real_type)
+ op1 = convert_and_check (real_type, op1);
+ }
+ else
+ {
+ if (TREE_TYPE (op0) != real_type)
+ op0 = convert_and_check (real_type, op0);
+ if (TREE_TYPE (op1) != result_type)
+ op1 = convert_and_check (result_type, op1);
+ }
+ if (TREE_CODE (op0) == ERROR_MARK || TREE_CODE (op1) == ERROR_MARK)
+ return error_mark_node;
+ if (first_complex)
+ {
+ op0 = c_save_expr (op0);
+ real = build_unary_op (EXPR_LOCATION (orig_op0), REALPART_EXPR,
+ op0, 1);
+ imag = build_unary_op (EXPR_LOCATION (orig_op0), IMAGPART_EXPR,
+ op0, 1);
+ switch (code)
+ {
+ case MULT_EXPR:
+ case TRUNC_DIV_EXPR:
+ imag = build2 (resultcode, real_type, imag, op1);
+ /* Fall through. */
+ case PLUS_EXPR:
+ case MINUS_EXPR:
+ real = build2 (resultcode, real_type, real, op1);
+ break;
+ default:
+ gcc_unreachable();
+ }
+ }
+ else
+ {
+ op1 = c_save_expr (op1);
+ real = build_unary_op (EXPR_LOCATION (orig_op1), REALPART_EXPR,
+ op1, 1);
+ imag = build_unary_op (EXPR_LOCATION (orig_op1), IMAGPART_EXPR,
+ op1, 1);
+ switch (code)
+ {
+ case MULT_EXPR:
+ imag = build2 (resultcode, real_type, op0, imag);
+ /* Fall through. */
+ case PLUS_EXPR:
+ real = build2 (resultcode, real_type, op0, real);
+ break;
+ case MINUS_EXPR:
+ real = build2 (resultcode, real_type, op0, real);
+ imag = build1 (NEGATE_EXPR, real_type, imag);
+ break;
+ default:
+ gcc_unreachable();
+ }
+ }
+ ret = build2 (COMPLEX_EXPR, result_type, real, imag);
+ goto return_build_binary_op;
+ }
+
/* For certain operations (which identify themselves by shorten != 0)
if both args were extended from the same smaller type,
do the arithmetic in that type and then extend.
diff --git a/gcc/c.opt b/gcc/c.opt
index 7f71699faa7..fc34ff57f78 100644
--- a/gcc/c.opt
+++ b/gcc/c.opt
@@ -476,6 +476,10 @@ Wunknown-pragmas
C ObjC C++ ObjC++ Warning
Warn about unrecognized pragmas
+Wunsuffixed-float-constants
+C ObjC Var(warn_unsuffixed_float_constants) Warning
+Warn about unsuffixed float constants
+
Wunused-macros
C ObjC C++ ObjC++ Warning
Warn about macros defined in the main file that are not used
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index ce696e211b6..60ff1685dc9 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -78,7 +78,6 @@ The callgraph:
#include "target.h"
#include "basic-block.h"
#include "cgraph.h"
-#include "varray.h"
#include "output.h"
#include "intl.h"
#include "gimple.h"
@@ -628,7 +627,7 @@ cgraph_edge (struct cgraph_node *node, gimple call_stmt)
}
-/* Change field call_smt of edge E to NEW_STMT. */
+/* Change field call_stmt of edge E to NEW_STMT. */
void
cgraph_set_call_stmt (struct cgraph_edge *e, gimple new_stmt)
@@ -655,6 +654,79 @@ cgraph_set_call_stmt (struct cgraph_edge *e, gimple new_stmt)
}
}
+/* Like cgraph_set_call_stmt but walk the clone tree and update all clones sharing
+ same function body. */
+
+void
+cgraph_set_call_stmt_including_clones (struct cgraph_node *orig,
+ gimple old_stmt, gimple new_stmt)
+{
+ struct cgraph_node *node;
+ struct cgraph_edge *edge = cgraph_edge (orig, old_stmt);
+
+ if (edge)
+ cgraph_set_call_stmt (edge, new_stmt);
+ if (orig->clones)
+ for (node = orig->clones; node != orig;)
+ {
+ struct cgraph_edge *edge = cgraph_edge (node, old_stmt);
+ if (edge)
+ cgraph_set_call_stmt (edge, new_stmt);
+ if (node->clones)
+ node = node->clones;
+ else if (node->next_sibling_clone)
+ node = node->next_sibling_clone;
+ else
+ {
+ while (node != orig && !node->next_sibling_clone)
+ node = node->clone_of;
+ if (node != orig)
+ node = node->next_sibling_clone;
+ }
+ }
+}
+
+/* Like cgraph_create_edge walk the clone tree and update all clones sharing
+ same function body.
+
+ TODO: COUNT and LOOP_DEPTH should be properly distributed based on relative
+ frequencies of the clones.
+ */
+
+void
+cgraph_create_edge_including_clones (struct cgraph_node *orig, struct cgraph_node *callee,
+ gimple stmt, gcov_type count, int freq,
+ int loop_depth,
+ cgraph_inline_failed_t reason)
+{
+ struct cgraph_node *node;
+
+ cgraph_create_edge (orig, callee, stmt, count, freq, loop_depth)->inline_failed =
+ reason;
+
+ if (orig->clones)
+ for (node = orig->clones; node != orig;)
+ {
+ /* It is possible that we already constant propagated into the clone
+ and turned indirect call into dirrect call. */
+ if (!cgraph_edge (node, stmt))
+ cgraph_create_edge (node, callee, stmt, count, freq,
+ loop_depth)->inline_failed = reason;
+
+ if (node->clones)
+ node = node->clones;
+ else if (node->next_sibling_clone)
+ node = node->next_sibling_clone;
+ else
+ {
+ while (node != orig && !node->next_sibling_clone)
+ node = node->clone_of;
+ if (node != orig)
+ node = node->next_sibling_clone;
+ }
+ }
+}
+
/* Give initial reasons why inlining would fail on EDGE. This gets either
nullified or usually overwritten by more precise reasons later. */
@@ -826,48 +898,93 @@ cgraph_redirect_edge_callee (struct cgraph_edge *e, struct cgraph_node *n)
/* Update or remove the corresponding cgraph edge if a GIMPLE_CALL
- OLD_STMT changed into NEW_STMT. */
+ OLD_STMT changed into NEW_STMT. OLD_CALL is gimple_call_fndecl
+ of OLD_STMT if it was previously call statement. */
-void
-cgraph_update_edges_for_call_stmt (gimple old_stmt, gimple new_stmt)
+static void
+cgraph_update_edges_for_call_stmt_node (struct cgraph_node *node,
+ gimple old_stmt, tree old_call, gimple new_stmt)
{
- tree new_call = (is_gimple_call (new_stmt)) ? gimple_call_fn (new_stmt) : 0;
- tree old_call = (is_gimple_call (old_stmt)) ? gimple_call_fn (old_stmt) : 0;
- struct cgraph_node *node = cgraph_node (cfun->decl);
+ tree new_call = (is_gimple_call (new_stmt)) ? gimple_call_fndecl (new_stmt) : 0;
+ /* We are seeing indirect calls, then there is nothing to update. */
+ if (!new_call && !old_call)
+ return;
+ /* See if we turned indirect call into direct call or folded call to one builtin
+ into different bultin. */
if (old_call != new_call)
{
struct cgraph_edge *e = cgraph_edge (node, old_stmt);
struct cgraph_edge *ne = NULL;
- tree new_decl;
+ gcov_type count;
+ int frequency;
+ int loop_nest;
if (e)
{
- gcov_type count = e->count;
- int frequency = e->frequency;
- int loop_nest = e->loop_nest;
-
+ /* See if the call is already there. It might be because of indirect
+ inlining already found it. */
+ if (new_call && e->callee->decl == new_call)
+ return;
+
+ /* Otherwise remove edge and create new one; we can't simply redirect
+ since function has changed, so inline plan and other information
+ attached to edge is invalid. */
cgraph_remove_edge (e);
- if (new_call)
- {
- new_decl = gimple_call_fndecl (new_stmt);
- if (new_decl)
- {
- ne = cgraph_create_edge (node, cgraph_node (new_decl),
- new_stmt, count, frequency,
- loop_nest);
- gcc_assert (ne->inline_failed);
- }
- }
+ count = e->count;
+ frequency = e->frequency;
+ loop_nest = e->loop_nest;
+ }
+ else
+ {
+ /* We are seeing new direct call; compute profile info based on BB. */
+ basic_block bb = gimple_bb (new_stmt);
+ count = bb->count;
+ frequency = compute_call_stmt_bb_frequency (current_function_decl,
+ bb);
+ loop_nest = bb->loop_depth;
+ }
+
+ if (new_call)
+ {
+ ne = cgraph_create_edge (node, cgraph_node (new_call),
+ new_stmt, count, frequency,
+ loop_nest);
+ gcc_assert (ne->inline_failed);
}
}
+ /* We only updated the call stmt; update pointer in cgraph edge.. */
else if (old_stmt != new_stmt)
- {
- struct cgraph_edge *e = cgraph_edge (node, old_stmt);
+ cgraph_set_call_stmt (cgraph_edge (node, old_stmt), new_stmt);
+}
- if (e)
- cgraph_set_call_stmt (e, new_stmt);
- }
+/* Update or remove the corresponding cgraph edge if a GIMPLE_CALL
+ OLD_STMT changed into NEW_STMT. OLD_DECL is gimple_call_fndecl
+ of OLD_STMT before it was updated (updating can happen inplace). */
+
+void
+cgraph_update_edges_for_call_stmt (gimple old_stmt, tree old_decl, gimple new_stmt)
+{
+ struct cgraph_node *orig = cgraph_node (cfun->decl);
+ struct cgraph_node *node;
+
+ cgraph_update_edges_for_call_stmt_node (orig, old_stmt, old_decl, new_stmt);
+ if (orig->clones)
+ for (node = orig->clones; node != orig;)
+ {
+ cgraph_update_edges_for_call_stmt_node (node, old_stmt, old_decl, new_stmt);
+ if (node->clones)
+ node = node->clones;
+ else if (node->next_sibling_clone)
+ node = node->next_sibling_clone;
+ else
+ {
+ while (node != orig && !node->next_sibling_clone)
+ node = node->clone_of;
+ if (node != orig)
+ node = node->next_sibling_clone;
+ }
+ }
}
@@ -998,24 +1115,100 @@ cgraph_remove_node (struct cgraph_node *node)
slot = htab_find_slot (cgraph_hash, node, NO_INSERT);
if (*slot == node)
{
- if (node->next_clone)
- {
- struct cgraph_node *new_node = node->next_clone;
+ struct cgraph_node *next_inline_clone;
- *slot = new_node;
- node->next_clone->prev_clone = NULL;
- }
+ for (next_inline_clone = node->clones;
+ next_inline_clone && next_inline_clone->decl != node->decl;
+ next_inline_clone = next_inline_clone->next_sibling_clone)
+ ;
+
+ /* If there is inline clone of the node being removed, we need
+ to put it into the position of removed node and reorganize all
+ other clones to be based on it. */
+ if (next_inline_clone)
+ {
+ struct cgraph_node *n;
+ struct cgraph_node *new_clones;
+
+ *slot = next_inline_clone;
+
+ /* Unlink inline clone from the list of clones of removed node. */
+ if (next_inline_clone->next_sibling_clone)
+ next_inline_clone->next_sibling_clone->prev_sibling_clone
+ = next_inline_clone->prev_sibling_clone;
+ if (next_inline_clone->prev_sibling_clone)
+ {
+ next_inline_clone->prev_sibling_clone->next_sibling_clone
+ = next_inline_clone->next_sibling_clone;
+ }
+ else
+ node->clones = next_inline_clone->next_sibling_clone;
+
+ new_clones = node->clones;
+ node->clones = NULL;
+
+ /* Copy clone info. */
+ next_inline_clone->clone = node->clone;
+
+ /* Now place it into clone tree at same level at NODE. */
+ next_inline_clone->clone_of = node->clone_of;
+ next_inline_clone->prev_sibling_clone = NULL;
+ next_inline_clone->next_sibling_clone = NULL;
+ if (node->clone_of)
+ {
+ next_inline_clone->next_sibling_clone = node->clone_of->clones;
+ node->clone_of->clones = next_inline_clone;
+ }
+
+ /* Merge the clone list. */
+ if (new_clones)
+ {
+ if (!next_inline_clone->clones)
+ next_inline_clone->clones = new_clones;
+ else
+ {
+ n = next_inline_clone->clones;
+ while (n->next_sibling_clone)
+ n = n->next_sibling_clone;
+ n->next_sibling_clone = new_clones;
+ new_clones->prev_sibling_clone = n;
+ }
+ }
+
+ /* Update clone_of pointers. */
+ n = new_clones;
+ while (n)
+ {
+ n->clone_of = next_inline_clone;
+ n = n->next_sibling_clone;
+ }
+ }
else
{
htab_clear_slot (cgraph_hash, slot);
kill_body = true;
}
+
}
else
+ gcc_assert (node->clone_of);
+ if (node->prev_sibling_clone)
+ node->prev_sibling_clone->next_sibling_clone = node->next_sibling_clone;
+ else if (node->clone_of)
+ node->clone_of->clones = node->next_sibling_clone;
+ if (node->next_sibling_clone)
+ node->next_sibling_clone->prev_sibling_clone = node->prev_sibling_clone;
+ if (node->clones)
{
- node->prev_clone->next_clone = node->next_clone;
- if (node->next_clone)
- node->next_clone->prev_clone = node->prev_clone;
+ struct cgraph_node *n;
+
+ for (n = node->clones; n->next_sibling_clone; n = n->next_sibling_clone)
+ n->clone_of = node->clone_of;
+ n->clone_of = node->clone_of;
+ n->next_sibling_clone = node->clone_of->clones;
+ if (node->clone_of->clones)
+ node->clone_of->clones->prev_sibling_clone = n;
+ node->clone_of->clones = node->clones;
}
/* While all the clones are removed after being proceeded, the function
@@ -1025,7 +1218,7 @@ cgraph_remove_node (struct cgraph_node *node)
if (!kill_body && *slot)
{
struct cgraph_node *n = (struct cgraph_node *) *slot;
- if (!n->next_clone && !n->global.inlined_to
+ if (!n->clones && !n->clone_of && !n->global.inlined_to
&& (cgraph_global_info_ready
&& (TREE_ASM_WRITTEN (n->decl) || DECL_EXTERNAL (n->decl))))
kill_body = true;
@@ -1059,6 +1252,21 @@ cgraph_remove_node (struct cgraph_node *node)
free_nodes = node;
}
+/* Remove the node from cgraph. */
+
+void
+cgraph_remove_node_and_inline_clones (struct cgraph_node *node)
+{
+ struct cgraph_edge *e, *next;
+ for (e = node->callees; e; e = next)
+ {
+ next = e->next_callee;
+ if (!e->inline_failed)
+ cgraph_remove_node_and_inline_clones (e->callee);
+ }
+ cgraph_remove_node (node);
+}
+
/* Notify finalize_compilation_unit that given node is reachable. */
void
@@ -1085,6 +1293,15 @@ cgraph_mark_needed_node (struct cgraph_node *node)
cgraph_mark_reachable_node (node);
}
+/* Likewise indicate that a node is having address taken. */
+
+void
+cgraph_mark_address_taken_node (struct cgraph_node *node)
+{
+ node->address_taken = 1;
+ cgraph_mark_needed_node (node);
+}
+
/* Return local info for the compiled function. */
struct cgraph_local_info *
@@ -1166,6 +1383,10 @@ dump_cgraph_node (FILE *f, struct cgraph_node *node)
fprintf (f, " (inline copy in %s/%i)",
cgraph_node_name (node->global.inlined_to),
node->global.inlined_to->uid);
+ if (node->clone_of)
+ fprintf (f, " (clone of %s/%i)",
+ cgraph_node_name (node->clone_of),
+ node->clone_of->uid);
if (cgraph_function_flags_ready)
fprintf (f, " availability:%s",
cgraph_availability_names [cgraph_function_body_availability (node)]);
@@ -1185,6 +1406,8 @@ dump_cgraph_node (FILE *f, struct cgraph_node *node)
fprintf (f, " nested in: %s", cgraph_node_name (node->origin));
if (node->needed)
fprintf (f, " needed");
+ if (node->address_taken)
+ fprintf (f, " address_taken");
else if (node->reachable)
fprintf (f, " reachable");
if (gimple_has_body_p (node->decl))
@@ -1382,6 +1605,7 @@ cgraph_clone_node (struct cgraph_node *n, gcov_type count, int freq,
new_node->global = n->global;
new_node->rtl = n->rtl;
new_node->count = count;
+ new_node->clone = n->clone;
if (n->count)
{
if (new_node->count > n->count)
@@ -1402,16 +1626,117 @@ cgraph_clone_node (struct cgraph_node *n, gcov_type count, int freq,
cgraph_clone_edge (e, new_node, e->call_stmt, count_scale, freq, loop_nest,
update_original);
- new_node->next_clone = n->next_clone;
- new_node->prev_clone = n;
- n->next_clone = new_node;
- if (new_node->next_clone)
- new_node->next_clone->prev_clone = new_node;
+ new_node->next_sibling_clone = n->clones;
+ if (n->clones)
+ n->clones->prev_sibling_clone = new_node;
+ n->clones = new_node;
+ new_node->clone_of = n;
cgraph_call_node_duplication_hooks (n, new_node);
return new_node;
}
+/* Create a new name for omp child function. Returns an identifier. */
+
+static GTY(()) unsigned int clone_fn_id_num;
+
+static tree
+clone_function_name (tree decl)
+{
+ tree name = DECL_ASSEMBLER_NAME (decl);
+ size_t len = IDENTIFIER_LENGTH (name);
+ char *tmp_name, *prefix;
+
+ prefix = XALLOCAVEC (char, len + strlen ("_clone") + 1);
+ memcpy (prefix, IDENTIFIER_POINTER (name), len);
+ strcpy (prefix + len, "_clone");
+#ifndef NO_DOT_IN_LABEL
+ prefix[len] = '.';
+#elif !defined NO_DOLLAR_IN_LABEL
+ prefix[len] = '$';
+#endif
+ ASM_FORMAT_PRIVATE_NAME (tmp_name, prefix, clone_fn_id_num++);
+ return get_identifier (tmp_name);
+}
+
+/* Create callgraph node clone with new declaration. The actual body will
+ be copied later at compilation stage.
+
+ TODO: after merging in ipa-sra use function call notes instead of args_to_skip
+ bitmap interface.
+ */
+struct cgraph_node *
+cgraph_create_virtual_clone (struct cgraph_node *old_node,
+ VEC(cgraph_edge_p,heap) *redirect_callers,
+ VEC(ipa_replace_map_p,gc) *tree_map,
+ bitmap args_to_skip)
+{
+ tree old_decl = old_node->decl;
+ struct cgraph_node *new_node = NULL;
+ tree new_decl;
+ struct cgraph_node key, **slot;
+ unsigned i;
+ struct cgraph_edge *e;
+
+ gcc_assert (tree_versionable_function_p (old_decl));
+
+ /* Make a new FUNCTION_DECL tree node */
+ if (!args_to_skip)
+ new_decl = copy_node (old_decl);
+ else
+ new_decl = build_function_decl_skip_args (old_decl, args_to_skip);
+ DECL_STRUCT_FUNCTION (new_decl) = NULL;
+
+ /* Generate a new name for the new version. */
+ DECL_NAME (new_decl) = clone_function_name (old_decl);
+ SET_DECL_ASSEMBLER_NAME (new_decl, DECL_NAME (new_decl));
+ SET_DECL_RTL (new_decl, NULL);
+
+ new_node = cgraph_clone_node (old_node, old_node->count,
+ CGRAPH_FREQ_BASE, 0, false);
+ new_node->decl = new_decl;
+ /* Update the properties.
+ Make clone visible only within this translation unit. Make sure
+ that is not weak also.
+ ??? We cannot use COMDAT linkage because there is no
+ ABI support for this. */
+ DECL_EXTERNAL (new_node->decl) = 0;
+ DECL_ONE_ONLY (new_node->decl) = 0;
+ TREE_PUBLIC (new_node->decl) = 0;
+ DECL_COMDAT (new_node->decl) = 0;
+ DECL_WEAK (new_node->decl) = 0;
+ new_node->clone.tree_map = tree_map;
+ new_node->clone.args_to_skip = args_to_skip;
+ new_node->local.externally_visible = 0;
+ new_node->local.local = 1;
+ new_node->lowered = true;
+ new_node->reachable = true;
+
+ key.decl = new_decl;
+ slot = (struct cgraph_node **) htab_find_slot (cgraph_hash, &key, INSERT);
+ gcc_assert (!*slot);
+ *slot = new_node;
+ if (assembler_name_hash)
+ {
+ void **aslot;
+ tree name = DECL_ASSEMBLER_NAME (new_decl);
+
+ aslot = htab_find_slot_with_hash (assembler_name_hash, name,
+ decl_assembler_name_hash (name),
+ INSERT);
+ gcc_assert (!*aslot);
+ *aslot = new_node;
+ }
+ for (i = 0; VEC_iterate (cgraph_edge_p, redirect_callers, i, e); i++)
+ {
+ /* Redirect calls to the old version node to point to its new
+ version. */
+ cgraph_redirect_edge_callee (e, new_node);
+ }
+
+ return new_node;
+}
+
/* NODE is no longer nested function; update cgraph accordingly. */
void
cgraph_unnest_node (struct cgraph_node *node)
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index b100fa6ddc4..58ae06852cf 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -1,5 +1,5 @@
/* Callgraph handling code.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
Contributed by Jan Hubicka
@@ -48,17 +48,22 @@ enum availability
extern const char * const cgraph_availability_names[];
+/* Function inlining information. */
+
+struct GTY(()) inline_summary
+{
+ /* Estimated stack frame consumption by the function. */
+ HOST_WIDE_INT estimated_self_stack_size;
+
+ /* Size of the function before inlining. */
+ int self_insns;
+};
+
/* Information about the function collected locally.
Available after function is analyzed. */
struct GTY(()) cgraph_local_info {
- struct inline_summary {
- /* Estimated stack frame consumption by the function. */
- HOST_WIDE_INT estimated_self_stack_size;
-
- /* Size of the function before inlining. */
- int self_insns;
- } inline_summary;
+ struct inline_summary inline_summary;
/* Set when function function is visible in current compilation unit only
and its address is never taken. */
@@ -119,6 +124,29 @@ struct GTY(()) cgraph_rtl_info {
unsigned int preferred_incoming_stack_boundary;
};
+/* Represent which DECL tree (or reference to such tree)
+ will be replaced by another tree while versioning. */
+struct GTY(()) ipa_replace_map
+{
+ /* The tree that will be replaced. */
+ tree old_tree;
+ /* The new (replacing) tree. */
+ tree new_tree;
+ /* True when a substitution should be done, false otherwise. */
+ bool replace_p;
+ /* True when we replace a reference to old_tree. */
+ bool ref_p;
+};
+typedef struct ipa_replace_map *ipa_replace_map_p;
+DEF_VEC_P(ipa_replace_map_p);
+DEF_VEC_ALLOC_P(ipa_replace_map_p,gc);
+
+struct GTY(()) cgraph_clone_info
+{
+ VEC(ipa_replace_map_p,gc)* tree_map;
+ bitmap args_to_skip;
+};
+
/* The cgraph data structure.
Each function decl has assigned cgraph_node listing callees and callers. */
@@ -137,8 +165,10 @@ struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) cgraph_node {
/* Pointer to the next function in cgraph_nodes_queue. */
struct cgraph_node *next_needed;
/* Pointer to the next clone. */
- struct cgraph_node *next_clone;
- struct cgraph_node *prev_clone;
+ struct cgraph_node *next_sibling_clone;
+ struct cgraph_node *prev_sibling_clone;
+ struct cgraph_node *clones;
+ struct cgraph_node *clone_of;
/* For functions with many calls sites it holds map from call expression
to the edge to speed up cgraph_edge function. */
htab_t GTY((param_is (struct cgraph_edge))) call_site_hash;
@@ -148,6 +178,7 @@ struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) cgraph_node {
struct cgraph_local_info local;
struct cgraph_global_info global;
struct cgraph_rtl_info rtl;
+ struct cgraph_clone_info clone;
/* Expected number of executions: calculated in profile.c. */
gcov_type count;
@@ -163,6 +194,8 @@ struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) cgraph_node {
/* Set when function must be output - it is externally visible
or its address is taken. */
unsigned needed : 1;
+ /* Set when function has address taken. */
+ unsigned address_taken : 1;
/* Set when decl is an abstract function pointed to by the
ABSTRACT_DECL_ORIGIN of a reachable function. */
unsigned abstract_and_needed : 1;
@@ -344,6 +377,7 @@ void debug_cgraph_node (struct cgraph_node *);
void cgraph_insert_node_to_hashtable (struct cgraph_node *node);
void cgraph_remove_edge (struct cgraph_edge *);
void cgraph_remove_node (struct cgraph_node *);
+void cgraph_remove_node_and_inline_clones (struct cgraph_node *);
void cgraph_release_function_body (struct cgraph_node *);
void cgraph_node_remove_callees (struct cgraph_node *node);
struct cgraph_edge *cgraph_create_edge (struct cgraph_node *,
@@ -353,7 +387,12 @@ struct cgraph_node *cgraph_node (tree);
struct cgraph_node *cgraph_node_for_asm (tree asmname);
struct cgraph_edge *cgraph_edge (struct cgraph_node *, gimple);
void cgraph_set_call_stmt (struct cgraph_edge *, gimple);
-void cgraph_update_edges_for_call_stmt (gimple, gimple);
+void cgraph_set_call_stmt_including_clones (struct cgraph_node *, gimple, gimple);
+void cgraph_create_edge_including_clones (struct cgraph_node *,
+ struct cgraph_node *,
+ gimple, gcov_type, int, int,
+ cgraph_inline_failed_t);
+void cgraph_update_edges_for_call_stmt (gimple, tree, gimple);
struct cgraph_local_info *cgraph_local_info (tree);
struct cgraph_global_info *cgraph_global_info (tree);
struct cgraph_rtl_info *cgraph_rtl_info (tree);
@@ -374,6 +413,10 @@ void cgraph_unnest_node (struct cgraph_node *);
enum availability cgraph_function_body_availability (struct cgraph_node *);
void cgraph_add_new_function (tree, bool);
const char* cgraph_inline_failed_string (cgraph_inline_failed_t);
+struct cgraph_node * cgraph_create_virtual_clone (struct cgraph_node *old_node,
+ VEC(cgraph_edge_p,heap)*,
+ VEC(ipa_replace_map_p,gc)* tree_map,
+ bitmap args_to_skip);
/* In cgraphunit.c */
void cgraph_finalize_function (tree, bool);
@@ -381,6 +424,7 @@ void cgraph_mark_if_needed (tree);
void cgraph_finalize_compilation_unit (void);
void cgraph_optimize (void);
void cgraph_mark_needed_node (struct cgraph_node *);
+void cgraph_mark_address_taken_node (struct cgraph_node *);
void cgraph_mark_reachable_node (struct cgraph_node *);
bool cgraph_inline_p (struct cgraph_edge *, cgraph_inline_failed_t *reason);
bool cgraph_preserve_function_body_p (tree);
@@ -391,8 +435,9 @@ void cgraph_reset_static_var_maps (void);
void init_cgraph (void);
struct cgraph_node *cgraph_function_versioning (struct cgraph_node *,
VEC(cgraph_edge_p,heap)*,
- varray_type,
+ VEC(ipa_replace_map_p,gc)*,
bitmap);
+void tree_function_versioning (tree, tree, VEC (ipa_replace_map_p,gc)*, bool, bitmap);
void cgraph_analyze_function (struct cgraph_node *);
struct cgraph_node *save_inline_function_body (struct cgraph_node *);
void record_references_in_initializer (tree);
@@ -421,10 +466,11 @@ struct cgraph_2edge_hook_list *cgraph_add_edge_duplication_hook (cgraph_2edge_ho
void cgraph_remove_edge_duplication_hook (struct cgraph_2edge_hook_list *);
struct cgraph_2node_hook_list *cgraph_add_node_duplication_hook (cgraph_2node_hook, void *);
void cgraph_remove_node_duplication_hook (struct cgraph_2node_hook_list *);
+void cgraph_materialize_all_clones (void);
/* In cgraphbuild.c */
unsigned int rebuild_cgraph_edges (void);
-int compute_call_stmt_bb_frequency (basic_block bb);
+int compute_call_stmt_bb_frequency (tree, basic_block bb);
/* In ipa.c */
bool cgraph_remove_unreachable_nodes (bool, FILE *);
diff --git a/gcc/cgraphbuild.c b/gcc/cgraphbuild.c
index f244a1e315d..a7a8bd2b314 100644
--- a/gcc/cgraphbuild.c
+++ b/gcc/cgraphbuild.c
@@ -58,7 +58,7 @@ record_reference (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
functions reachable unconditionally. */
decl = TREE_OPERAND (*tp, 0);
if (TREE_CODE (decl) == FUNCTION_DECL)
- cgraph_mark_needed_node (cgraph_node (decl));
+ cgraph_mark_address_taken_node (cgraph_node (decl));
break;
default:
@@ -81,11 +81,14 @@ record_reference (tree *tp, int *walk_subtrees, void *data ATTRIBUTE_UNUSED)
/* Computes the frequency of the call statement so that it can be stored in
cgraph_edge. BB is the basic block of the call statement. */
int
-compute_call_stmt_bb_frequency (basic_block bb)
+compute_call_stmt_bb_frequency (tree decl, basic_block bb)
{
int entry_freq = ENTRY_BLOCK_PTR->frequency;
int freq = bb->frequency;
+ if (profile_status_for_function (DECL_STRUCT_FUNCTION (decl)) == PROFILE_ABSENT)
+ return CGRAPH_FREQ_BASE;
+
if (!entry_freq)
entry_freq = 1, freq++;
@@ -121,7 +124,7 @@ build_cgraph_edges (void)
size_t i;
size_t n = gimple_call_num_args (stmt);
cgraph_create_edge (node, cgraph_node (decl), stmt,
- bb->count, compute_call_stmt_bb_frequency (bb),
+ bb->count, compute_call_stmt_bb_frequency (current_function_decl, bb),
bb->loop_depth);
for (i = 0; i < n; i++)
walk_tree (gimple_call_arg_ptr (stmt, i), record_reference,
@@ -224,7 +227,9 @@ rebuild_cgraph_edges (void)
if (is_gimple_call (stmt) && (decl = gimple_call_fndecl (stmt)))
cgraph_create_edge (node, cgraph_node (decl), stmt,
- bb->count, compute_call_stmt_bb_frequency (bb),
+ bb->count,
+ compute_call_stmt_bb_frequency
+ (current_function_decl, bb),
bb->loop_depth);
}
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 9b7ca8c9b84..a73eabc44e3 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -548,12 +548,20 @@ cgraph_mark_if_needed (tree decl)
cgraph_mark_needed_node (node);
}
+/* Return TRUE if NODE2 is equivalent to NODE or its clone. */
+static bool
+clone_of_p (struct cgraph_node *node, struct cgraph_node *node2)
+{
+ while (node != node2 && node2)
+ node2 = node2->clone_of;
+ return node2 != NULL;
+}
+
/* Verify cgraph nodes of given cgraph node. */
void
verify_cgraph_node (struct cgraph_node *node)
{
struct cgraph_edge *e;
- struct cgraph_node *main_clone;
struct function *this_cfun = DECL_STRUCT_FUNCTION (node->decl);
struct function *saved_cfun = cfun;
basic_block this_block;
@@ -629,17 +637,53 @@ verify_cgraph_node (struct cgraph_node *node)
error_found = true;
}
- for (main_clone = cgraph_node (node->decl); main_clone;
- main_clone = main_clone->next_clone)
- if (main_clone == node)
- break;
if (!cgraph_node (node->decl))
{
error ("node not found in cgraph_hash");
error_found = true;
}
- if (node->analyzed
+ if (node->clone_of)
+ {
+ struct cgraph_node *n;
+ for (n = node->clone_of->clones; n; n = n->next_sibling_clone)
+ if (n == node)
+ break;
+ if (!n)
+ {
+ error ("node has wrong clone_of");
+ error_found = true;
+ }
+ }
+ if (node->clones)
+ {
+ struct cgraph_node *n;
+ for (n = node->clones; n; n = n->next_sibling_clone)
+ if (n->clone_of != node)
+ break;
+ if (n)
+ {
+ error ("node has wrong clone list");
+ error_found = true;
+ }
+ }
+ if ((node->prev_sibling_clone || node->next_sibling_clone) && !node->clone_of)
+ {
+ error ("node is in clone list but it is not clone");
+ error_found = true;
+ }
+ if (!node->prev_sibling_clone && node->clone_of && node->clone_of->clones != node)
+ {
+ error ("node has wrong prev_clone pointer");
+ error_found = true;
+ }
+ if (node->prev_sibling_clone && node->prev_sibling_clone->next_sibling_clone != node)
+ {
+ error ("double linked list of clones corrupted");
+ error_found = true;
+ }
+
+ if (node->analyzed && gimple_has_body_p (node->decl)
&& !TREE_ASM_WRITTEN (node->decl)
&& (!DECL_EXTERNAL (node->decl) || node->global.inlined_to))
{
@@ -668,8 +712,8 @@ verify_cgraph_node (struct cgraph_node *node)
debug_gimple_stmt (stmt);
error_found = true;
}
- if (e->callee->decl != cgraph_node (decl)->decl
- && e->inline_failed)
+ if (!clone_of_p (cgraph_node (decl), e->callee)
+ && !e->callee->global.inlined_to)
{
error ("edge points to wrong declaration:");
debug_tree (e->callee->decl);
@@ -1118,9 +1162,17 @@ cgraph_expand_all_functions (void)
/* This is used to sort the node types by the cgraph order number. */
+enum cgraph_order_sort_kind
+{
+ ORDER_UNDEFINED = 0,
+ ORDER_FUNCTION,
+ ORDER_VAR,
+ ORDER_ASM
+};
+
struct cgraph_order_sort
{
- enum { ORDER_UNDEFINED = 0, ORDER_FUNCTION, ORDER_VAR, ORDER_ASM } kind;
+ enum cgraph_order_sort_kind kind;
union
{
struct cgraph_node *f;
@@ -1227,9 +1279,9 @@ cgraph_preserve_function_body_p (tree decl)
gcc_assert (cgraph_global_info_ready);
/* Look if there is any clone around. */
- for (node = cgraph_node (decl); node; node = node->next_clone)
- if (node->global.inlined_to)
- return true;
+ node = cgraph_node (decl);
+ if (node->clones)
+ return true;
return false;
}
@@ -1312,6 +1364,7 @@ cgraph_optimize (void)
verify_cgraph ();
#endif
+ cgraph_materialize_all_clones ();
cgraph_mark_functions_to_output ();
cgraph_state = CGRAPH_STATE_EXPANSION;
@@ -1528,7 +1581,7 @@ cgraph_copy_node_for_versioning (struct cgraph_node *old_version,
struct cgraph_node *
cgraph_function_versioning (struct cgraph_node *old_version_node,
VEC(cgraph_edge_p,heap) *redirect_callers,
- varray_type tree_map,
+ VEC (ipa_replace_map_p,gc)* tree_map,
bitmap args_to_skip)
{
tree old_decl = old_version_node->decl;
@@ -1581,19 +1634,50 @@ cgraph_function_versioning (struct cgraph_node *old_version_node,
struct cgraph_node *
save_inline_function_body (struct cgraph_node *node)
{
- struct cgraph_node *first_clone;
+ struct cgraph_node *first_clone, *n;
gcc_assert (node == cgraph_node (node->decl));
cgraph_lower_function (node);
- first_clone = node->next_clone;
+ first_clone = node->clones;
first_clone->decl = copy_node (node->decl);
- node->next_clone = NULL;
- first_clone->prev_clone = NULL;
cgraph_insert_node_to_hashtable (first_clone);
gcc_assert (first_clone == cgraph_node (first_clone->decl));
+ if (first_clone->next_sibling_clone)
+ {
+ for (n = first_clone->next_sibling_clone; n->next_sibling_clone; n = n->next_sibling_clone)
+ n->clone_of = first_clone;
+ n->clone_of = first_clone;
+ n->next_sibling_clone = first_clone->clones;
+ if (first_clone->clones)
+ first_clone->clones->prev_sibling_clone = n;
+ first_clone->clones = first_clone->next_sibling_clone;
+ first_clone->next_sibling_clone->prev_sibling_clone = NULL;
+ first_clone->next_sibling_clone = NULL;
+ gcc_assert (!first_clone->prev_sibling_clone);
+ }
+ first_clone->clone_of = NULL;
+ node->clones = NULL;
+
+ if (first_clone->clones)
+ for (n = first_clone->clones; n != first_clone;)
+ {
+ gcc_assert (n->decl == node->decl);
+ n->decl = first_clone->decl;
+ if (n->clones)
+ n = n->clones;
+ else if (n->next_sibling_clone)
+ n = n->next_sibling_clone;
+ else
+ {
+ while (n != first_clone && !n->next_sibling_clone)
+ n = n->clone_of;
+ if (n != first_clone)
+ n = n->next_sibling_clone;
+ }
+ }
/* Copy the OLD_VERSION_NODE function tree to the new version. */
tree_function_versioning (node->decl, first_clone->decl, NULL, true, NULL);
@@ -1603,12 +1687,144 @@ save_inline_function_body (struct cgraph_node *node)
TREE_PUBLIC (first_clone->decl) = 0;
DECL_COMDAT (first_clone->decl) = 0;
- for (node = first_clone->next_clone; node; node = node->next_clone)
- node->decl = first_clone->decl;
#ifdef ENABLE_CHECKING
verify_cgraph_node (first_clone);
#endif
return first_clone;
}
+/* Given virtual clone, turn it into actual clone. */
+static void
+cgraph_materialize_clone (struct cgraph_node *node)
+{
+ bitmap_obstack_initialize (NULL);
+ /* Copy the OLD_VERSION_NODE function tree to the new version. */
+ tree_function_versioning (node->clone_of->decl, node->decl,
+ node->clone.tree_map, true,
+ node->clone.args_to_skip);
+
+ /* Function is no longer clone. */
+ if (node->next_sibling_clone)
+ node->next_sibling_clone->prev_sibling_clone = node->prev_sibling_clone;
+ if (node->prev_sibling_clone)
+ node->prev_sibling_clone->next_sibling_clone = node->next_sibling_clone;
+ else
+ node->clone_of->clones = node->next_sibling_clone;
+ node->next_sibling_clone = NULL;
+ node->prev_sibling_clone = NULL;
+ node->clone_of = NULL;
+ bitmap_obstack_release (NULL);
+}
+
+/* Once all functions from compilation unit are in memory, produce all clones
+ and update all calls.
+ We might also do this on demand if we don't want to bring all functions to
+ memory prior compilation, but current WHOPR implementation does that and it is
+ is bit easier to keep everything right in this order. */
+void
+cgraph_materialize_all_clones (void)
+{
+ struct cgraph_node *node;
+ bool stabilized = false;
+
+ if (cgraph_dump_file)
+ fprintf (cgraph_dump_file, "Materializing clones\n");
+#ifdef ENABLE_CHECKING
+ verify_cgraph ();
+#endif
+
+ /* We can also do topological order, but number of iterations should be
+ bounded by number of IPA passes since single IPA pass is probably not
+ going to create clones of clones it created itself. */
+ while (!stabilized)
+ {
+ stabilized = true;
+ for (node = cgraph_nodes; node; node = node->next)
+ {
+ if (node->clone_of && node->decl != node->clone_of->decl
+ && !gimple_has_body_p (node->decl))
+ {
+ if (gimple_has_body_p (node->clone_of->decl))
+ {
+ if (cgraph_dump_file)
+ fprintf (cgraph_dump_file, " clonning %s to %s",
+ cgraph_node_name (node->clone_of),
+ cgraph_node_name (node));
+ cgraph_materialize_clone (node);
+ }
+ else
+ stabilized = false;
+ }
+ }
+ }
+ if (cgraph_dump_file)
+ fprintf (cgraph_dump_file, "Updating call sites\n");
+ for (node = cgraph_nodes; node; node = node->next)
+ if (node->analyzed && gimple_has_body_p (node->decl)
+ && (!node->clone_of || node->clone_of->decl != node->decl))
+ {
+ struct cgraph_edge *e;
+
+ current_function_decl = node->decl;
+ push_cfun (DECL_STRUCT_FUNCTION (node->decl));
+ for (e = node->callees; e; e = e->next_callee)
+ {
+ tree decl = gimple_call_fndecl (e->call_stmt);
+ /* When function gets inlined, indirect inlining might've invented
+ new edge for orginally indirect stmt. Since we are not
+ preserving clones in the original form, we must not update here
+ since other inline clones don't need to contain call to the same
+ call. Inliner will do the substitution for us later. */
+ if (decl && decl != e->callee->decl)
+ {
+ gimple new_stmt;
+ gimple_stmt_iterator gsi;
+
+ if (cgraph_dump_file)
+ {
+ fprintf (cgraph_dump_file, "updating call of %s in %s:",
+ cgraph_node_name (node),
+ cgraph_node_name (e->callee));
+ print_gimple_stmt (cgraph_dump_file, e->call_stmt, 0, dump_flags);
+ }
+
+ if (e->callee->clone.args_to_skip)
+ new_stmt = gimple_call_copy_skip_args (e->call_stmt,
+ e->callee->clone.args_to_skip);
+ else
+ new_stmt = e->call_stmt;
+ if (gimple_vdef (new_stmt)
+ && TREE_CODE (gimple_vdef (new_stmt)) == SSA_NAME)
+ SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt;
+ gimple_call_set_fndecl (new_stmt, e->callee->decl);
+
+ gsi = gsi_for_stmt (e->call_stmt);
+ gsi_replace (&gsi, new_stmt, true);
+
+ /* Update EH information too, just in case. */
+ if (!stmt_could_throw_p (new_stmt)
+ && lookup_stmt_eh_region (new_stmt))
+ remove_stmt_from_eh_region (new_stmt);
+
+ cgraph_set_call_stmt_including_clones (node, e->call_stmt, new_stmt);
+
+ if (cgraph_dump_file)
+ {
+ fprintf (cgraph_dump_file, " updated to:");
+ print_gimple_stmt (cgraph_dump_file, e->call_stmt, 0, dump_flags);
+ }
+ }
+ }
+ pop_cfun ();
+ current_function_decl = NULL;
+#ifdef ENABLE_CHECKING
+ verify_cgraph_node (node);
+#endif
+ }
+#ifdef ENABLE_CHECKING
+ verify_cgraph ();
+#endif
+ cgraph_remove_unreachable_nodes (false, cgraph_dump_file);
+}
+
#include "gt-cgraphunit.h"
diff --git a/gcc/combine.c b/gcc/combine.c
index a471940d49c..7cdf396a66c 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -342,10 +342,12 @@ static int nonzero_sign_valid;
/* Record one modification to rtl structure
to be undone by storing old_contents into *where. */
+enum undo_kind { UNDO_RTX, UNDO_INT, UNDO_MODE };
+
struct undo
{
struct undo *next;
- enum { UNDO_RTX, UNDO_INT, UNDO_MODE } kind;
+ enum undo_kind kind;
union { rtx r; int i; enum machine_mode m; } old_contents;
union { rtx *r; int *i; } where;
};
diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c
index 0016cb67993..1f456b63cd7 100644
--- a/gcc/config/arc/arc.c
+++ b/gcc/config/arc/arc.c
@@ -1,6 +1,6 @@
/* Subroutines used for code generation on the Argonaut ARC cpu.
Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
- 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of GCC.
@@ -385,16 +385,16 @@ arc_handle_interrupt_attribute (tree *node ATTRIBUTE_UNUSED,
if (TREE_CODE (value) != STRING_CST)
{
warning (OPT_Wattributes,
- "argument of %qs attribute is not a string constant",
- IDENTIFIER_POINTER (name));
+ "argument of %qE attribute is not a string constant",
+ name);
*no_add_attrs = true;
}
else if (strcmp (TREE_STRING_POINTER (value), "ilink1")
&& strcmp (TREE_STRING_POINTER (value), "ilink2"))
{
warning (OPT_Wattributes,
- "argument of %qs attribute is not \"ilink1\" or \"ilink2\"",
- IDENTIFIER_POINTER (name));
+ "argument of %qE attribute is not \"ilink1\" or \"ilink2\"",
+ name);
*no_add_attrs = true;
}
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index bd4ded50dd5..18e009d1368 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -3260,8 +3260,8 @@ arm_handle_fndecl_attribute (tree *node, tree name, tree args ATTRIBUTE_UNUSED,
{
if (TREE_CODE (*node) != FUNCTION_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
@@ -3278,8 +3278,8 @@ arm_handle_isr_attribute (tree *node, tree name, tree args, int flags,
{
if (TREE_CODE (*node) != FUNCTION_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
/* FIXME: the argument if any is checked for type attributes;
@@ -3292,8 +3292,8 @@ arm_handle_isr_attribute (tree *node, tree name, tree args, int flags,
{
if (arm_isr_value (args) == ARM_FT_UNKNOWN)
{
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
*no_add_attrs = true;
}
}
@@ -3320,8 +3320,8 @@ arm_handle_isr_attribute (tree *node, tree name, tree args, int flags,
}
else
{
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
}
}
}
@@ -3592,7 +3592,11 @@ require_pic_register (void)
seq = get_insns ();
end_sequence ();
- emit_insn_after (seq, entry_of_function ());
+ /* We can be called during expansion of PHI nodes, where
+ we can't yet emit instructions directly in the final
+ insn stream. Queue the insns on the entry edge, they will
+ be committed after everything else is expanded. */
+ insert_insn_on_edge (seq, single_succ_edge (ENTRY_BLOCK_PTR));
}
}
}
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index 9676711bfa3..4811b92637f 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -4804,8 +4804,8 @@ avr_handle_progmem_attribute (tree *node, tree name,
}
else
{
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
*no_add_attrs = true;
}
}
@@ -4824,8 +4824,8 @@ avr_handle_fndecl_attribute (tree *node, tree name,
{
if (TREE_CODE (*node) != FUNCTION_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
@@ -4840,8 +4840,8 @@ avr_handle_fntype_attribute (tree *node, tree name,
{
if (TREE_CODE (*node) != FUNCTION_TYPE)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c
index 1d5a03e72bd..ac237d73bd2 100644
--- a/gcc/config/bfin/bfin.c
+++ b/gcc/config/bfin/bfin.c
@@ -5263,8 +5263,8 @@ handle_int_attribute (tree *node, tree name,
if (TREE_CODE (x) != FUNCTION_TYPE)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
else if (funkind (x) != SUBROUTINE)
@@ -5324,8 +5324,8 @@ bfin_handle_longcall_attribute (tree *node, tree name,
&& TREE_CODE (*node) != FIELD_DECL
&& TREE_CODE (*node) != TYPE_DECL)
{
- warning (OPT_Wattributes, "`%s' attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
@@ -5353,8 +5353,8 @@ bfin_handle_l1_text_attribute (tree *node, tree name, tree ARG_UNUSED (args),
if (TREE_CODE (decl) != FUNCTION_DECL)
{
- error ("`%s' attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ error ("%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
@@ -5385,15 +5385,15 @@ bfin_handle_l1_data_attribute (tree *node, tree name, tree ARG_UNUSED (args),
if (TREE_CODE (decl) != VAR_DECL)
{
- error ("`%s' attribute only applies to variables",
- IDENTIFIER_POINTER (name));
+ error ("%qE attribute only applies to variables",
+ name);
*no_add_attrs = true;
}
else if (current_function_decl != NULL_TREE
&& !TREE_STATIC (decl))
{
- error ("`%s' attribute cannot be specified for local variables",
- IDENTIFIER_POINTER (name));
+ error ("%qE attribute cannot be specified for local variables",
+ name);
*no_add_attrs = true;
}
else
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 88d032f2ef6..c8bb508e8aa 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -1,6 +1,6 @@
/* Functions for generic Darwin as target machine for GNU C compiler.
Copyright (C) 1989, 1990, 1991, 1992, 1993, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008
+ 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
Contributed by Apple Computer Inc.
@@ -1407,15 +1407,15 @@ darwin_handle_kext_attribute (tree *node, tree name,
/* APPLE KEXT stuff -- only applies with pure static C++ code. */
if (! TARGET_KEXTABI)
{
- warning (0, "%<%s%> 2.95 vtable-compatibility attribute applies "
- "only when compiling a kext", IDENTIFIER_POINTER (name));
+ warning (0, "%qE 2.95 vtable-compatibility attribute applies "
+ "only when compiling a kext", name);
*no_add_attrs = true;
}
else if (TREE_CODE (*node) != RECORD_TYPE)
{
- warning (0, "%<%s%> 2.95 vtable-compatibility attribute applies "
- "only to C++ classes", IDENTIFIER_POINTER (name));
+ warning (0, "%qE 2.95 vtable-compatibility attribute applies "
+ "only to C++ classes", name);
*no_add_attrs = true;
}
@@ -1434,8 +1434,8 @@ darwin_handle_weak_import_attribute (tree *node, tree name,
{
if (TREE_CODE (*node) != FUNCTION_DECL && TREE_CODE (*node) != VAR_DECL)
{
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
*no_add_attrs = true;
}
else
diff --git a/gcc/config/h8300/h8300.c b/gcc/config/h8300/h8300.c
index 57d18057e72..9946d28078f 100644
--- a/gcc/config/h8300/h8300.c
+++ b/gcc/config/h8300/h8300.c
@@ -1,6 +1,6 @@
/* Subroutines for insn-output.c for Renesas H8/300.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
Contributed by Steve Chamberlain (sac@cygnus.com),
Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
@@ -5287,8 +5287,8 @@ h8300_handle_fndecl_attribute (tree *node, tree name,
{
if (TREE_CODE (*node) != FUNCTION_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
@@ -5311,8 +5311,8 @@ h8300_handle_eightbit_data_attribute (tree *node, tree name,
}
else
{
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
*no_add_attrs = true;
}
@@ -5335,8 +5335,8 @@ h8300_handle_tiny_data_attribute (tree *node, tree name,
}
else
{
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
*no_add_attrs = true;
}
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 90784d2f9b9..bb013a144f6 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -35,7 +35,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-codes.h"
#include "insn-attr.h"
#include "flags.h"
-#include "c-common.h"
#include "except.h"
#include "function.h"
#include "recog.h"
@@ -4246,8 +4245,8 @@ ix86_handle_cconv_attribute (tree *node, tree name,
&& TREE_CODE (*node) != FIELD_DECL
&& TREE_CODE (*node) != TYPE_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
return NULL_TREE;
}
@@ -4266,14 +4265,14 @@ ix86_handle_cconv_attribute (tree *node, tree name,
if (TREE_CODE (cst) != INTEGER_CST)
{
warning (OPT_Wattributes,
- "%qs attribute requires an integer constant argument",
- IDENTIFIER_POINTER (name));
+ "%qE attribute requires an integer constant argument",
+ name);
*no_add_attrs = true;
}
else if (compare_tree_int (cst, REGPARM_MAX) > 0)
{
- warning (OPT_Wattributes, "argument to %qs attribute larger than %d",
- IDENTIFIER_POINTER (name), REGPARM_MAX);
+ warning (OPT_Wattributes, "argument to %qE attribute larger than %d",
+ name, REGPARM_MAX);
*no_add_attrs = true;
}
@@ -4284,8 +4283,8 @@ ix86_handle_cconv_attribute (tree *node, tree name,
{
/* Do not warn when emulating the MS ABI. */
if (TREE_CODE (*node) != FUNCTION_TYPE || ix86_function_type_abi (*node)!=MS_ABI)
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
*no_add_attrs = true;
return NULL_TREE;
}
@@ -26838,15 +26837,15 @@ ix86_handle_abi_attribute (tree *node, tree name,
&& TREE_CODE (*node) != FIELD_DECL
&& TREE_CODE (*node) != TYPE_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
return NULL_TREE;
}
if (!TARGET_64BIT)
{
- warning (OPT_Wattributes, "%qs attribute only available for 64-bit",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only available for 64-bit",
+ name);
*no_add_attrs = true;
return NULL_TREE;
}
@@ -26893,8 +26892,8 @@ ix86_handle_struct_attribute (tree *node, tree name,
if (!(type && (TREE_CODE (*type) == RECORD_TYPE
|| TREE_CODE (*type) == UNION_TYPE)))
{
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
*no_add_attrs = true;
}
@@ -26903,8 +26902,8 @@ ix86_handle_struct_attribute (tree *node, tree name,
|| ((is_attribute_p ("gcc_struct", name)
&& lookup_attribute ("ms_struct", TYPE_ATTRIBUTES (*type)))))
{
- warning (OPT_Wattributes, "%qs incompatible attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE incompatible attribute ignored",
+ name);
*no_add_attrs = true;
}
diff --git a/gcc/config/i386/winnt.c b/gcc/config/i386/winnt.c
index 62ac279ccd4..3d88517c234 100644
--- a/gcc/config/i386/winnt.c
+++ b/gcc/config/i386/winnt.c
@@ -1,7 +1,7 @@
/* Subroutines for insn-output.c for Windows NT.
Contributed by Douglas Rupp (drupp@cs.washington.edu)
Copyright (C) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is part of GCC.
@@ -56,8 +56,8 @@ ix86_handle_shared_attribute (tree *node, tree name,
{
if (TREE_CODE (*node) != VAR_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to variables",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to variables",
+ name);
*no_add_attrs = true;
}
@@ -78,8 +78,8 @@ ix86_handle_selectany_attribute (tree *node, tree name,
initialization later in encode_section_info. */
if (TREE_CODE (*node) != VAR_DECL || !TREE_PUBLIC (*node))
{
- error ("%qs attribute applies only to initialized variables"
- " with external linkage", IDENTIFIER_POINTER (name));
+ error ("%qE attribute applies only to initialized variables"
+ " with external linkage", name);
*no_add_attrs = true;
}
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 279672f45aa..1f433a6fb0f 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -581,8 +581,8 @@ ia64_handle_model_attribute (tree *node, tree name, tree args,
}
else
{
- warning (OPT_Wattributes, "invalid argument of %qs attribute",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "invalid argument of %qE attribute",
+ name);
*no_add_attrs = true;
}
@@ -613,8 +613,8 @@ ia64_handle_model_attribute (tree *node, tree name, tree args,
break;
default:
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
*no_add_attrs = true;
break;
}
diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c
index ad1007c5fee..17d5dd32ebc 100644
--- a/gcc/config/m32c/m32c.c
+++ b/gcc/config/m32c/m32c.c
@@ -1,5 +1,5 @@
/* Target Code for R8C/M16C/M32C
- Copyright (C) 2005, 2006, 2007, 2008
+ Copyright (C) 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
Contributed by Red Hat.
@@ -2774,24 +2774,24 @@ function_vector_handler (tree * node ATTRIBUTE_UNUSED,
{
/* The attribute is not supported for R8C target. */
warning (OPT_Wattributes,
- "`%s' attribute is not supported for R8C target",
- IDENTIFIER_POINTER (name));
+ "%qE attribute is not supported for R8C target",
+ name);
*no_add_attrs = true;
}
else if (TREE_CODE (*node) != FUNCTION_DECL)
{
/* The attribute must be applied to functions only. */
warning (OPT_Wattributes,
- "`%s' attribute applies only to functions",
- IDENTIFIER_POINTER (name));
+ "%qE attribute applies only to functions",
+ name);
*no_add_attrs = true;
}
else if (TREE_CODE (TREE_VALUE (args)) != INTEGER_CST)
{
/* The argument must be a constant integer. */
warning (OPT_Wattributes,
- "`%s' attribute argument not an integer constant",
- IDENTIFIER_POINTER (name));
+ "%qE attribute argument not an integer constant",
+ name);
*no_add_attrs = true;
}
else if (TREE_INT_CST_LOW (TREE_VALUE (args)) < 18
@@ -2799,8 +2799,8 @@ function_vector_handler (tree * node ATTRIBUTE_UNUSED,
{
/* The argument value must be between 18 to 255. */
warning (OPT_Wattributes,
- "`%s' attribute argument should be between 18 to 255",
- IDENTIFIER_POINTER (name));
+ "%qE attribute argument should be between 18 to 255",
+ name);
*no_add_attrs = true;
}
return NULL_TREE;
diff --git a/gcc/config/m68hc11/m68hc11.c b/gcc/config/m68hc11/m68hc11.c
index 703b0697af1..024e55de476 100644
--- a/gcc/config/m68hc11/m68hc11.c
+++ b/gcc/config/m68hc11/m68hc11.c
@@ -1,6 +1,6 @@
/* Subroutines for code generation on Motorola 68HC11 and 68HC12.
- Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
- Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+ 2009 Free Software Foundation, Inc.
Contributed by Stephane Carrez (stcarrez@nerim.fr)
This file is part of GCC.
@@ -1103,8 +1103,8 @@ m68hc11_handle_page0_attribute (tree *node, tree name,
}
else
{
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
*no_add_attrs = true;
}
@@ -1140,8 +1140,8 @@ m68hc11_handle_fntype_attribute (tree *node, tree name,
&& TREE_CODE (*node) != FIELD_DECL
&& TREE_CODE (*node) != TYPE_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
diff --git a/gcc/config/m68k/m68k.c b/gcc/config/m68k/m68k.c
index 5cee73f6639..1b5c83bb414 100644
--- a/gcc/config/m68k/m68k.c
+++ b/gcc/config/m68k/m68k.c
@@ -776,8 +776,8 @@ m68k_handle_fndecl_attribute (tree *node, tree name,
{
if (TREE_CODE (*node) != FUNCTION_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
diff --git a/gcc/config/mcore/mcore.c b/gcc/config/mcore/mcore.c
index 0a5310fcda9..472bb75562a 100644
--- a/gcc/config/mcore/mcore.c
+++ b/gcc/config/mcore/mcore.c
@@ -1,6 +1,6 @@
/* Output routines for Motorola MCore processor
- Copyright (C) 1993, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
- Free Software Foundation, Inc.
+ Copyright (C) 1993, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008,
+ 2009 Free Software Foundation, Inc.
This file is part of GCC.
@@ -3027,8 +3027,8 @@ mcore_handle_naked_attribute (tree * node, tree name, tree args ATTRIBUTE_UNUSED
}
else
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 4472cd16b87..9d712d2f096 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -1289,9 +1289,9 @@ mips_insert_attributes (tree decl, tree *attributes)
{
/* DECL cannot be simultaneously "mips16" and "nomips16". */
if (mips16_p && nomips16_p)
- error ("%qs cannot have both %<mips16%> and "
+ error ("%qE cannot have both %<mips16%> and "
"%<nomips16%> attributes",
- IDENTIFIER_POINTER (DECL_NAME (decl)));
+ DECL_NAME (decl));
}
else if (TARGET_FLIP_MIPS16 && !DECL_ARTIFICIAL (decl))
{
@@ -1311,11 +1311,11 @@ mips_merge_decl_attributes (tree olddecl, tree newdecl)
{
/* The decls' "mips16" and "nomips16" attributes must match exactly. */
if (mips_mips16_decl_p (olddecl) != mips_mips16_decl_p (newdecl))
- error ("%qs redeclared with conflicting %qs attributes",
- IDENTIFIER_POINTER (DECL_NAME (newdecl)), "mips16");
+ error ("%qE redeclared with conflicting %qs attributes",
+ DECL_NAME (newdecl), "mips16");
if (mips_nomips16_decl_p (olddecl) != mips_nomips16_decl_p (newdecl))
- error ("%qs redeclared with conflicting %qs attributes",
- IDENTIFIER_POINTER (DECL_NAME (newdecl)), "nomips16");
+ error ("%qE redeclared with conflicting %qs attributes",
+ DECL_NAME (newdecl), "nomips16");
return merge_attributes (DECL_ATTRIBUTES (olddecl),
DECL_ATTRIBUTES (newdecl));
@@ -12372,8 +12372,8 @@ mips_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
gcc_assert (avail != 0);
if (TARGET_MIPS16)
{
- error ("built-in function %qs not supported for MIPS16",
- IDENTIFIER_POINTER (DECL_NAME (fndecl)));
+ error ("built-in function %qE not supported for MIPS16",
+ DECL_NAME (fndecl));
return ignore ? const0_rtx : CONST0_RTX (mode);
}
switch (d->builtin_type)
diff --git a/gcc/config/picochip/libgccExtras/divmod15.asm b/gcc/config/picochip/libgccExtras/divmod15.asm
index 777adf27968..b477e03a011 100644
--- a/gcc/config/picochip/libgccExtras/divmod15.asm
+++ b/gcc/config/picochip/libgccExtras/divmod15.asm
@@ -33,8 +33,6 @@ _picoMark_FUNCTION_BEGIN=
// picoChip Function Prologue : &__divmod15 = 0 bytes
-__divmod15:
-
// The picoChip instruction set has a divstep instruction which
// is used to perform one iteration of a binary division algorithm.
// The instruction allows 16-bit signed division to be implemented.
diff --git a/gcc/config/picochip/picochip.h b/gcc/config/picochip/picochip.h
index 7c32ebeec42..a3263d02e02 100644
--- a/gcc/config/picochip/picochip.h
+++ b/gcc/config/picochip/picochip.h
@@ -729,6 +729,7 @@ enum picochip_builtins
PICOCHIP_BUILTIN_HALT
};
+#define NO_DOLLAR_IN_LABEL 1
#define NO_DOT_IN_LABEL 1
/* The assembler does support LEB128, despite the auto-configure test
diff --git a/gcc/config/rs6000/rs6000-c.c b/gcc/config/rs6000/rs6000-c.c
index 7ebc14cb1fc..c7adcdb5e04 100644
--- a/gcc/config/rs6000/rs6000-c.c
+++ b/gcc/config/rs6000/rs6000-c.c
@@ -100,7 +100,7 @@ altivec_categorize_keyword (const cpp_token *tok)
{
if (tok->type == CPP_NAME)
{
- cpp_hashnode *ident = tok->val.node;
+ cpp_hashnode *ident = tok->val.node.node;
if (ident == C_CPP_HASHNODE (vector_keyword))
return C_CPP_HASHNODE (__vector_keyword);
@@ -150,7 +150,7 @@ init_vector_keywords (void)
static cpp_hashnode *
rs6000_macro_to_expand (cpp_reader *pfile, const cpp_token *tok)
{
- cpp_hashnode *expand_this = tok->val.node;
+ cpp_hashnode *expand_this = tok->val.node.node;
cpp_hashnode *ident;
ident = altivec_categorize_keyword (tok);
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index a5823a0cc2a..2d34b14f63f 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -20636,8 +20636,8 @@ rs6000_handle_longcall_attribute (tree *node, tree name,
&& TREE_CODE (*node) != FIELD_DECL
&& TREE_CODE (*node) != TYPE_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
@@ -20710,7 +20710,7 @@ rs6000_handle_struct_attribute (tree *node, tree name,
if (!(type && (TREE_CODE (*type) == RECORD_TYPE
|| TREE_CODE (*type) == UNION_TYPE)))
{
- warning (OPT_Wattributes, "%qs attribute ignored", IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored", name);
*no_add_attrs = true;
}
@@ -20719,8 +20719,8 @@ rs6000_handle_struct_attribute (tree *node, tree name,
|| ((is_attribute_p ("gcc_struct", name)
&& lookup_attribute ("ms_struct", TYPE_ATTRIBUTES (*type)))))
{
- warning (OPT_Wattributes, "%qs incompatible attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE incompatible attribute ignored",
+ name);
*no_add_attrs = true;
}
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index fe64f3720c5..9d4a96051b7 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -8595,7 +8595,7 @@
[(set (match_operand:DF 0 "nonimmediate_operand" "=r,r,m,r,r,r")
(match_operand:DF 1 "input_operand" "r,m,r,G,H,F"))]
"! TARGET_POWERPC64
- && ((TARGET_FPRS && !TARGET_DOUBLE_FLOAT)
+ && ((TARGET_FPRS && TARGET_SINGLE_FLOAT)
|| TARGET_SOFT_FLOAT || TARGET_E500_SINGLE)
&& (gpc_reg_operand (operands[0], DFmode)
|| gpc_reg_operand (operands[1], DFmode))"
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index cad00e4d87f..e25cd42e871 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -37,7 +37,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-attr.h"
#include "toplev.h"
#include "recog.h"
-#include "c-pragma.h"
#include "integrate.h"
#include "dwarf2.h"
#include "tm_p.h"
@@ -8196,8 +8195,8 @@ sh_insert_attributes (tree node, tree *attributes)
|| is_attribute_p ("nosave_low_regs", TREE_PURPOSE (attrs))
|| is_attribute_p ("resbank", TREE_PURPOSE (attrs)))
warning (OPT_Wattributes,
- "%qs attribute only applies to interrupt functions",
- IDENTIFIER_POINTER (TREE_PURPOSE (attrs)));
+ "%qE attribute only applies to interrupt functions",
+ TREE_PURPOSE (attrs));
else
{
*tail = tree_cons (TREE_PURPOSE (attrs), NULL_TREE,
@@ -8279,14 +8278,14 @@ sh_handle_resbank_handler_attribute (tree * node, tree name,
{
if (!TARGET_SH2A)
{
- warning (OPT_Wattributes, "%qs attribute is supported only for SH2A",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute is supported only for SH2A",
+ name);
*no_add_attrs = true;
}
if (TREE_CODE (*node) != FUNCTION_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
@@ -8303,8 +8302,8 @@ sh_handle_interrupt_handler_attribute (tree *node, tree name,
{
if (TREE_CODE (*node) != FUNCTION_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
else if (TARGET_SHCOMPACT)
@@ -8326,30 +8325,30 @@ sh2a_handle_function_vector_handler_attribute (tree * node, tree name,
{
if (!TARGET_SH2A)
{
- warning (OPT_Wattributes, "%qs attribute only applies to SH2A",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to SH2A",
+ name);
*no_add_attrs = true;
}
else if (TREE_CODE (*node) != FUNCTION_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
else if (TREE_CODE (TREE_VALUE (args)) != INTEGER_CST)
{
/* The argument must be a constant integer. */
warning (OPT_Wattributes,
- "`%s' attribute argument not an integer constant",
- IDENTIFIER_POINTER (name));
+ "%qE attribute argument not an integer constant",
+ name);
*no_add_attrs = true;
}
else if (TREE_INT_CST_LOW (TREE_VALUE (args)) > 255)
{
/* The argument value must be between 0 to 255. */
warning (OPT_Wattributes,
- "`%s' attribute argument should be between 0 to 255",
- IDENTIFIER_POINTER (name));
+ "%qE attribute argument should be between 0 to 255",
+ name);
*no_add_attrs = true;
}
return NULL_TREE;
@@ -8414,15 +8413,15 @@ sh_handle_sp_switch_attribute (tree *node, tree name, tree args,
{
if (TREE_CODE (*node) != FUNCTION_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
else if (TREE_CODE (TREE_VALUE (args)) != STRING_CST)
{
/* The argument must be a constant string. */
- warning (OPT_Wattributes, "%qs attribute argument not a string constant",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute argument not a string constant",
+ name);
*no_add_attrs = true;
}
@@ -8437,8 +8436,8 @@ sh_handle_trap_exit_attribute (tree *node, tree name, tree args,
{
if (TREE_CODE (*node) != FUNCTION_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
/* The argument specifies a trap number to be used in a trapa instruction
@@ -8446,8 +8445,8 @@ sh_handle_trap_exit_attribute (tree *node, tree name, tree args,
else if (TREE_CODE (TREE_VALUE (args)) != INTEGER_CST)
{
/* The argument must be a constant integer. */
- warning (OPT_Wattributes, "%qs attribute argument not an "
- "integer constant", IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute argument not an "
+ "integer constant", name);
*no_add_attrs = true;
}
diff --git a/gcc/config/sh/symbian.c b/gcc/config/sh/symbian.c
index 15932dc7a41..f32adf9717f 100644
--- a/gcc/config/sh/symbian.c
+++ b/gcc/config/sh/symbian.c
@@ -269,8 +269,8 @@ sh_symbian_mark_dllimport (tree decl)
if (sh_symbian_dllexport_name_p (oldname))
{
- error ("%qs declared as both exported to and imported from a DLL",
- IDENTIFIER_POINTER (DECL_NAME (decl)));
+ error ("%qE declared as both exported to and imported from a DLL",
+ DECL_NAME (decl));
}
else if (sh_symbian_dllimport_name_p (oldname))
{
@@ -502,8 +502,8 @@ sh_symbian_handle_dll_attribute (tree *pnode, tree name, tree args,
&& ( TREE_CODE (node) == VAR_DECL
|| TREE_CODE (node) == FUNCTION_DECL))
{
- error ("external linkage required for symbol %q+D because of %qs attribute",
- node, IDENTIFIER_POINTER (name));
+ error ("external linkage required for symbol %q+D because of %qE attribute",
+ node, name);
*no_add_attrs = true;
}
diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c
index c089e0369e1..f73bb217605 100644
--- a/gcc/config/spu/spu.c
+++ b/gcc/config/spu/spu.c
@@ -48,7 +48,6 @@
#include "sched-int.h"
#include "params.h"
#include "assert.h"
-#include "c-common.h"
#include "machmode.h"
#include "gimple.h"
#include "tm-constrs.h"
@@ -3725,8 +3724,8 @@ spu_handle_fndecl_attribute (tree * node,
{
if (TREE_CODE (*node) != FUNCTION_DECL)
{
- warning (0, "`%s' attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (0, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
@@ -3783,7 +3782,7 @@ spu_handle_vector_attribute (tree * node, tree name,
*no_add_attrs = true; /* No need to hang on to the attribute. */
if (!result)
- warning (0, "`%s' attribute ignored", IDENTIFIER_POINTER (name));
+ warning (0, "%qE attribute ignored", name);
else
*node = lang_hooks.types.reconstruct_complex_type (*node, result);
diff --git a/gcc/config/stormy16/stormy16.c b/gcc/config/stormy16/stormy16.c
index f8bb0789708..4d04cae95d9 100644
--- a/gcc/config/stormy16/stormy16.c
+++ b/gcc/config/stormy16/stormy16.c
@@ -1,6 +1,6 @@
/* Xstormy16 target functions.
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008 Free Software Foundation, Inc.
+ 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Contributed by Red Hat, Inc.
This file is part of GCC.
@@ -2212,8 +2212,8 @@ xstormy16_handle_interrupt_attribute (tree *node, tree name,
{
if (TREE_CODE (*node) != FUNCTION_TYPE)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
diff --git a/gcc/config/v850/v850-c.c b/gcc/config/v850/v850-c.c
index dc0082cf6ef..718eb82441e 100644
--- a/gcc/config/v850/v850-c.c
+++ b/gcc/config/v850/v850-c.c
@@ -1,5 +1,5 @@
/* v850 specific, C compiler specific functions.
- Copyright (C) 2000, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2000, 2007, 2009 Free Software Foundation, Inc.
Contributed by Jeff Law (law@cygnus.com).
This file is part of GCC.
@@ -121,6 +121,7 @@ ghs_pragma_section (cpp_reader * pfile ATTRIBUTE_UNUSED)
{
tree x;
enum cpp_ttype type;
+ tree sect_ident;
const char *sect, *alias;
enum GHS_section_kind kind;
@@ -129,7 +130,10 @@ ghs_pragma_section (cpp_reader * pfile ATTRIBUTE_UNUSED)
if (type == CPP_EOF && !repeat)
goto reset;
else if (type == CPP_NAME)
- sect = IDENTIFIER_POINTER (x);
+ {
+ sect_ident = x;
+ sect = IDENTIFIER_POINTER (sect_ident);
+ }
else
goto bad;
repeat = 0;
@@ -162,7 +166,7 @@ ghs_pragma_section (cpp_reader * pfile ATTRIBUTE_UNUSED)
else if (streq (sect, "zbss")) kind = GHS_SECTION_KIND_ZDATA;
else
{
- warning (0, "unrecognized section name \"%s\"", sect);
+ warning (0, "unrecognized section name %qE", sect_ident);
return;
}
diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c
index 406dc94ea65..f9e8a7dd8b0 100644
--- a/gcc/config/v850/v850.c
+++ b/gcc/config/v850/v850.c
@@ -1,6 +1,6 @@
/* Subroutines for insn-output.c for NEC V850 series
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008 Free Software Foundation, Inc.
+ 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Contributed by Jeff Law (law@cygnus.com).
This file is part of GCC.
@@ -2050,8 +2050,8 @@ v850_handle_interrupt_attribute (tree * node,
{
if (TREE_CODE (*node) != FUNCTION_DECL)
{
- warning (OPT_Wattributes, "%qs attribute only applies to functions",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute only applies to functions",
+ name);
*no_add_attrs = true;
}
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index ca9c05af9f8..602b152f3c6 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,55 @@
+2009-05-10 Jan Hubicka <jh@suse.cz>
+
+ * decl2.c (cxx_callgraph_analyze_expr): Use
+ cgraph_mark_address_taken.
+
+2009-05-10 Joseph Myers <joseph@codesourcery.com>
+
+ * call.c (name_as_c_string): Call type_as_string_translate.
+ Translate identifiers to locale character set.
+ * cp-tree.h (lang_decl_name): Update prototype.
+ (type_as_string_translate, decl_as_string_translate,
+ cxx_printable_name_translate): Declare.
+ * cxx-pretty-print.c (M_): Define.
+ (pp_cxx_unqualified_id, pp_cxx_canonical_template_parameter): Mark
+ English fragments for conditional translation with M_.
+ * decl.c (grokdeclarator): Translate identifiers to locale
+ character set for diagnostics.
+ * error.c (M_): Define.
+ (dump_template_bindings, dump_type, dump_aggr_type,
+ dump_type_prefix, dump_global_iord, dump_simple_decl, dump_decl,
+ dump_function_decl, dump_template_parms, dump_expr,
+ dump_binary_op, op_to_string, assop_to_string): Mark English
+ fragments for conditional translation with M_.
+ (type_as_string): Disable translation of identifiers.
+ (type_as_string_translate): New.
+ (expr_as_string): Disable translation of identifiers.
+ (decl_as_string): Disable translation of identifiers.
+ (decl_as_string_translate): New.
+ (lang_decl_name): Add parameter translate.
+ (args_to_string): Call type_as_string_translate.
+ (cp_print_error_function): Call cxx_printable_name_translate.
+ (print_instantiation_full_context,
+ print_instantiation_partial_context): Call
+ decl_as_string_translate.
+ * parser.c (cp_lexer_get_preprocessor_token): Use %qE for
+ identifier in diagnostic.
+ * tree.c (cxx_printable_name): Change to
+ cxx_printable_name_internal. Add parameter translate.
+ (cxx_printable_name, cxx_printable_name_translate): New wrappers
+ round cxx_printable_name_internal.
+
+2009-05-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR c/36892
+ * call.c (build_call_a): Updated warn_deprecated_use call.
+ (build_over_call): Likewise.
+ * decl.c (grokdeclarator): Likewise.
+ (grokparms): Likewise.
+ * semantics.c (finish_id_expression): Likewise.
+ * typeck.c (build_class_member_access_expr): Likewise.
+ (finish_class_member_access_expr): Likewise.
+
2009-05-06 Dodji Seketeli <dodji@redhat.com>
PR c++/17395
@@ -7,23 +59,23 @@
2009-05-05 Shujing Zhao <pearly.zhao@oracle.com>
* cp-tree.h:
- (opname_tab, assignop_tab, update_member_visibility, yyerror, yyhook,
- mangle_compound_literal): Remove unused declarations.
- (build_vfield_ref, cxx_print_statistics, clone_function_decl,
- adjust_clone_args, maybe_push_cleanup_level, pushtag, make_anon_name,
- pushdecl_top_level_maybe_friend, pushdecl_top_level_and_finish,
- check_for_out_of_scope_variable, print_other_binding_stack,
- maybe_push_decl, cxx_mark_addressable, force_target_expr,
- build_target_expr_with_type, finish_case_label,
- cxx_maybe_build_cleanup, begin_eh_spec_block, finish_eh_spec_block,
- check_template_keyword, cxx_omp_predetermined_sharing,
- cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
- cxx_omp_clause_assign_op, cxx_omp_clause_dtor, cxx_omp_finish_clause,
- cxx_omp_privatize_by_reference): Rearrange the declarations line to
- match the comment that indicates the .c file which the functions are
- defined.
- (cxx_print_xnode, cxx_print_decl, cxx_print_type,
- cxx_print_identifier, cxx_print_error_function, pushdecl): Add comment.
+ (opname_tab, assignop_tab, update_member_visibility, yyerror, yyhook,
+ mangle_compound_literal): Remove unused declarations.
+ (build_vfield_ref, cxx_print_statistics, clone_function_decl,
+ adjust_clone_args, maybe_push_cleanup_level, pushtag, make_anon_name,
+ pushdecl_top_level_maybe_friend, pushdecl_top_level_and_finish,
+ check_for_out_of_scope_variable, print_other_binding_stack,
+ maybe_push_decl, cxx_mark_addressable, force_target_expr,
+ build_target_expr_with_type, finish_case_label,
+ cxx_maybe_build_cleanup, begin_eh_spec_block, finish_eh_spec_block,
+ check_template_keyword, cxx_omp_predetermined_sharing,
+ cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
+ cxx_omp_clause_assign_op, cxx_omp_clause_dtor, cxx_omp_finish_clause,
+ cxx_omp_privatize_by_reference): Rearrange the declarations line to
+ match the comment that indicates the .c file which the functions are
+ defined.
+ (cxx_print_xnode, cxx_print_decl, cxx_print_type,
+ cxx_print_identifier, cxx_print_error_function, pushdecl): Add comment.
2009-05-05 Nathan Sidwell <nathan@codesourcery.com>
@@ -821,9 +873,9 @@
2009-02-01 Paolo Carlini <paolo.carlini@oracle.com>
- PR c++/39053
- * parser.c (cp_parser_pure_specifier): If there are no tokens left
- do not call cp_lexer_consume_token.
+ PR c++/39053
+ * parser.c (cp_parser_pure_specifier): If there are no tokens left
+ do not call cp_lexer_consume_token.
2009-01-30 Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index ca45bee5bd8..ee13ba2a414 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -342,7 +342,7 @@ build_call_a (tree function, int n, tree *argarray)
current_function_returns_abnormally = 1;
if (decl && TREE_DEPRECATED (decl))
- warn_deprecated_use (decl);
+ warn_deprecated_use (decl, NULL_TREE);
require_complete_eh_spec_types (fntype, decl);
if (decl && DECL_CONSTRUCTOR_P (decl))
@@ -5457,7 +5457,7 @@ build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
/* Warn about deprecated virtual functions now, since we're about
to throw away the decl. */
if (TREE_DEPRECATED (fn))
- warn_deprecated_use (fn);
+ warn_deprecated_use (fn, NULL_TREE);
argarray[0] = build_base_path (PLUS_EXPR, argarray[0], binfo, 1);
if (TREE_SIDE_EFFECTS (argarray[0]))
@@ -5731,7 +5731,7 @@ name_as_c_string (tree name, tree type, bool *free_p)
if (IDENTIFIER_CTOR_OR_DTOR_P (name))
{
pretty_name
- = CONST_CAST (char *, IDENTIFIER_POINTER (constructor_name (type)));
+ = CONST_CAST (char *, identifier_to_locale (IDENTIFIER_POINTER (constructor_name (type))));
/* For a destructor, add the '~'. */
if (name == complete_dtor_identifier
|| name == base_dtor_identifier
@@ -5745,14 +5745,14 @@ name_as_c_string (tree name, tree type, bool *free_p)
else if (IDENTIFIER_TYPENAME_P (name))
{
pretty_name = concat ("operator ",
- type_as_string (TREE_TYPE (name),
- TFF_PLAIN_IDENTIFIER),
+ type_as_string_translate (TREE_TYPE (name),
+ TFF_PLAIN_IDENTIFIER),
NULL);
/* Remember that we need to free the memory allocated. */
*free_p = true;
}
else
- pretty_name = CONST_CAST (char *, IDENTIFIER_POINTER (name));
+ pretty_name = CONST_CAST (char *, identifier_to_locale (IDENTIFIER_POINTER (name)));
return pretty_name;
}
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index ae93e66366a..0ea2d8623f6 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -4422,9 +4422,11 @@ extern int parm_index (tree);
/* in error.c */
extern void init_error (void);
extern const char *type_as_string (tree, int);
+extern const char *type_as_string_translate (tree, int);
extern const char *decl_as_string (tree, int);
+extern const char *decl_as_string_translate (tree, int);
extern const char *expr_as_string (tree, int);
-extern const char *lang_decl_name (tree, int);
+extern const char *lang_decl_name (tree, int, bool);
extern const char *language_to_string (enum languages);
extern const char *class_key_or_enum_as_string (tree);
extern void print_instantiation_context (void);
@@ -4839,6 +4841,7 @@ extern tree get_first_fn (tree);
extern tree ovl_cons (tree, tree);
extern tree build_overload (tree, tree);
extern const char *cxx_printable_name (tree, int);
+extern const char *cxx_printable_name_translate (tree, int);
extern tree build_exception_variant (tree, tree);
extern tree bind_template_template_parm (tree, tree);
extern tree array_type_nelts_total (tree);
diff --git a/gcc/cp/cxx-pretty-print.c b/gcc/cp/cxx-pretty-print.c
index 2edffd37548..b8732896aa4 100644
--- a/gcc/cp/cxx-pretty-print.c
+++ b/gcc/cp/cxx-pretty-print.c
@@ -29,6 +29,10 @@ along with GCC; see the file COPYING3. If not see
#include "cp-tree.h"
#include "toplev.h"
+/* Translate if being used for diagnostics, but not for dump files or
+ __PRETTY_FUNCTION. */
+#define M_(msgid) (pp_translate_identifiers (pp) ? _(msgid) : (msgid))
+
static void pp_cxx_unqualified_id (cxx_pretty_printer *, tree);
static void pp_cxx_nested_name_specifier (cxx_pretty_printer *, tree);
static void pp_cxx_qualified_id (cxx_pretty_printer *, tree);
@@ -147,7 +151,7 @@ pp_cxx_unqualified_id (cxx_pretty_printer *pp, tree t)
switch (code)
{
case RESULT_DECL:
- pp_cxx_ws_string (pp, _("<return-value>"));
+ pp_cxx_ws_string (pp, M_("<return-value>"));
break;
case OVERLOAD:
@@ -166,7 +170,7 @@ pp_cxx_unqualified_id (cxx_pretty_printer *pp, tree t)
case IDENTIFIER_NODE:
if (t == NULL)
- pp_cxx_ws_string (pp, _("<unnamed>"));
+ pp_cxx_ws_string (pp, M_("<unnamed>"));
else if (IDENTIFIER_TYPENAME_P (t))
pp_cxx_conversion_function_id (pp, t);
else
@@ -2048,7 +2052,7 @@ pp_cxx_canonical_template_parameter (cxx_pretty_printer *pp, tree parm)
parm = TEMPLATE_TYPE_PARM_INDEX (parm);
pp_cxx_begin_template_argument_list (pp);
- pp_cxx_ws_string (pp, _("template-parameter-"));
+ pp_cxx_ws_string (pp, M_("template-parameter-"));
pp_wide_integer (pp, TEMPLATE_PARM_LEVEL (parm));
pp_minus (pp);
pp_wide_integer (pp, TEMPLATE_PARM_IDX (parm) + 1);
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index e06dce2719a..fd944f713db 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -7701,7 +7701,7 @@ grokdeclarator (const cp_declarator *declarator,
type = TREE_OPERAND (decl, 0);
if (TYPE_P (type))
type = constructor_name (type);
- name = IDENTIFIER_POINTER (type);
+ name = identifier_to_locale (IDENTIFIER_POINTER (type));
dname = decl;
}
break;
@@ -7727,10 +7727,10 @@ grokdeclarator (const cp_declarator *declarator,
{
error ("declarator-id missing; using reserved word %qD",
dname);
- name = IDENTIFIER_POINTER (dname);
+ name = identifier_to_locale (IDENTIFIER_POINTER (dname));
}
else if (!IDENTIFIER_TYPENAME_P (dname))
- name = IDENTIFIER_POINTER (dname);
+ name = identifier_to_locale (IDENTIFIER_POINTER (dname));
else
{
gcc_assert (flags == NO_SPECIAL);
@@ -7738,7 +7738,7 @@ grokdeclarator (const cp_declarator *declarator,
ctor_return_type = TREE_TYPE (dname);
sfk = sfk_conversion;
if (is_typename_at_global_scope (dname))
- name = IDENTIFIER_POINTER (dname);
+ name = identifier_to_locale (IDENTIFIER_POINTER (dname));
else
name = "<invalid operator>";
}
@@ -7835,7 +7835,7 @@ grokdeclarator (const cp_declarator *declarator,
suppress reports of deprecated items. */
if (type && TREE_DEPRECATED (type)
&& deprecated_state != DEPRECATED_SUPPRESS)
- warn_deprecated_use (type);
+ warn_deprecated_use (type, NULL_TREE);
if (type && TREE_CODE (type) == TYPE_DECL)
{
typedef_decl = type;
@@ -7843,7 +7843,7 @@ grokdeclarator (const cp_declarator *declarator,
if (TREE_DEPRECATED (type)
&& DECL_ARTIFICIAL (typedef_decl)
&& deprecated_state != DEPRECATED_SUPPRESS)
- warn_deprecated_use (type);
+ warn_deprecated_use (type, NULL_TREE);
}
/* No type at all: default to `int', and set DEFAULTED_INT
because it was not a user-defined typedef. */
@@ -9697,7 +9697,7 @@ grokparms (tree parmlist, tree *parms)
{
tree deptype = type_is_deprecated (type);
if (deptype)
- warn_deprecated_use (deptype);
+ warn_deprecated_use (deptype, NULL_TREE);
}
/* Top-level qualifiers on the parameters are
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c
index 8196b54f4dd..1f8e848bf2e 100644
--- a/gcc/cp/decl2.c
+++ b/gcc/cp/decl2.c
@@ -3250,11 +3250,11 @@ cxx_callgraph_analyze_expr (tree *tp, int *walk_subtrees ATTRIBUTE_UNUSED)
{
case PTRMEM_CST:
if (TYPE_PTRMEMFUNC_P (TREE_TYPE (t)))
- cgraph_mark_needed_node (cgraph_node (PTRMEM_CST_MEMBER (t)));
+ cgraph_mark_address_taken_node (cgraph_node (PTRMEM_CST_MEMBER (t)));
break;
case BASELINK:
if (TREE_CODE (BASELINK_FUNCTIONS (t)) == FUNCTION_DECL)
- cgraph_mark_needed_node (cgraph_node (BASELINK_FUNCTIONS (t)));
+ cgraph_mark_address_taken_node (cgraph_node (BASELINK_FUNCTIONS (t)));
break;
case VAR_DECL:
if (DECL_VTABLE_OR_VTT_P (t))
diff --git a/gcc/cp/error.c b/gcc/cp/error.c
index 13b32ad1850..3c7a8d5c58e 100644
--- a/gcc/cp/error.c
+++ b/gcc/cp/error.c
@@ -41,6 +41,10 @@ along with GCC; see the file COPYING3. If not see
static cxx_pretty_printer scratch_pretty_printer;
#define cxx_pp (&scratch_pretty_printer)
+/* Translate if being used for diagnostics, but not for dump files or
+ __PRETTY_FUNCTION. */
+#define M_(msgid) (pp_translate_identifiers (cxx_pp) ? _(msgid) : (msgid))
+
# define NEXT_CODE(T) (TREE_CODE (TREE_TYPE (T)))
static const char *args_to_string (tree, int);
@@ -298,7 +302,7 @@ dump_template_bindings (tree parms, tree args, VEC(tree,gc)* typenames)
if (arg)
dump_template_argument (arg, TFF_PLAIN_IDENTIFIER);
else
- pp_string (cxx_pp, _("<missing>"));
+ pp_string (cxx_pp, M_("<missing>"));
++arg_idx;
need_comma = 1;
@@ -339,9 +343,9 @@ dump_type (tree t, int flags)
{
case UNKNOWN_TYPE:
if (t == init_list_type_node)
- pp_string (cxx_pp, _("<brace-enclosed initializer list>"));
+ pp_string (cxx_pp, M_("<brace-enclosed initializer list>"));
else
- pp_string (cxx_pp, _("<unresolved overloaded function type>"));
+ pp_string (cxx_pp, M_("<unresolved overloaded function type>"));
break;
case TREE_LIST:
@@ -481,7 +485,7 @@ dump_type (tree t, int flags)
/* Fall through to error. */
case ERROR_MARK:
- pp_string (cxx_pp, _("<type error>"));
+ pp_string (cxx_pp, M_("<type error>"));
break;
}
}
@@ -578,9 +582,9 @@ dump_aggr_type (tree t, int flags)
if (name == 0 || ANON_AGGRNAME_P (name))
{
if (flags & TFF_CLASS_KEY_OR_ENUM)
- pp_string (cxx_pp, _("<anonymous>"));
+ pp_string (cxx_pp, M_("<anonymous>"));
else
- pp_printf (pp_base (cxx_pp), _("<anonymous %s>"), variety);
+ pp_printf (pp_base (cxx_pp), M_("<anonymous %s>"), variety);
}
else
pp_cxx_tree_identifier (cxx_pp, name);
@@ -702,7 +706,7 @@ dump_type_prefix (tree t, int flags)
pp_unsupported_tree (cxx_pp, t);
/* fall through. */
case ERROR_MARK:
- pp_string (cxx_pp, _("<typeprefixerror>"));
+ pp_string (cxx_pp, M_("<typeprefixerror>"));
break;
}
}
@@ -812,9 +816,9 @@ dump_global_iord (tree t)
const char *p = NULL;
if (DECL_GLOBAL_CTOR_P (t))
- p = _("(static initializers for %s)");
+ p = M_("(static initializers for %s)");
else if (DECL_GLOBAL_DTOR_P (t))
- p = _("(static destructors for %s)");
+ p = M_("(static destructors for %s)");
else
gcc_unreachable ();
@@ -841,7 +845,7 @@ dump_simple_decl (tree t, tree type, int flags)
if (DECL_NAME (t))
dump_decl (DECL_NAME (t), flags);
else
- pp_string (cxx_pp, _("<anonymous>"));
+ pp_string (cxx_pp, M_("<anonymous>"));
if (flags & TFF_DECL_SPECIFIERS)
dump_type_suffix (type, flags);
}
@@ -884,7 +888,7 @@ dump_decl (tree t, int flags)
case VAR_DECL:
if (DECL_NAME (t) && VTABLE_NAME_P (DECL_NAME (t)))
{
- pp_string (cxx_pp, _("vtable for "));
+ pp_string (cxx_pp, M_("vtable for "));
gcc_assert (TYPE_P (DECL_CONTEXT (t)));
dump_type (DECL_CONTEXT (t), flags);
break;
@@ -896,7 +900,7 @@ dump_decl (tree t, int flags)
break;
case RESULT_DECL:
- pp_string (cxx_pp, _("<return value> "));
+ pp_string (cxx_pp, M_("<return value> "));
dump_simple_decl (t, TREE_TYPE (t), flags);
break;
@@ -909,7 +913,7 @@ dump_decl (tree t, int flags)
dump_scope (CP_DECL_CONTEXT (t), flags);
flags &= ~TFF_UNQUALIFIED_NAME;
if (DECL_NAME (t) == NULL_TREE)
- pp_string (cxx_pp, _("<unnamed>"));
+ pp_string (cxx_pp, M_("<unnamed>"));
else
pp_cxx_tree_identifier (cxx_pp, DECL_NAME (t));
}
@@ -983,7 +987,7 @@ dump_decl (tree t, int flags)
case FUNCTION_DECL:
if (! DECL_LANG_SPECIFIC (t))
- pp_string (cxx_pp, _("<built-in>"));
+ pp_string (cxx_pp, M_("<built-in>"));
else if (DECL_GLOBAL_CTOR_P (t) || DECL_GLOBAL_DTOR_P (t))
dump_global_iord (t);
else
@@ -1022,7 +1026,7 @@ dump_decl (tree t, int flags)
else if (DECL_INITIAL (t))
dump_expr (DECL_INITIAL (t), flags | TFF_EXPR_IN_PARENS);
else
- pp_string (cxx_pp, _("<enumerator>"));
+ pp_string (cxx_pp, M_("<enumerator>"));
break;
case USING_DECL:
@@ -1062,7 +1066,7 @@ dump_decl (tree t, int flags)
/* Fall through to error. */
case ERROR_MARK:
- pp_string (cxx_pp, _("<declaration error>"));
+ pp_string (cxx_pp, M_("<declaration error>"));
break;
}
}
@@ -1292,7 +1296,7 @@ dump_function_decl (tree t, int flags)
{
pp_cxx_whitespace (cxx_pp);
pp_cxx_left_bracket (cxx_pp);
- pp_cxx_ws_string (cxx_pp, _("with"));
+ pp_cxx_ws_string (cxx_pp, M_("with"));
pp_cxx_whitespace (cxx_pp);
dump_template_bindings (template_parms, template_args, typenames);
pp_cxx_right_bracket (cxx_pp);
@@ -1457,7 +1461,7 @@ dump_template_parms (tree info, int primary, int flags)
pp_separate_with_comma (cxx_pp);
if (!arg)
- pp_string (cxx_pp, _("<template parameter error>"));
+ pp_string (cxx_pp, M_("<template parameter error>"));
else
dump_template_argument (arg, flags);
}
@@ -1477,7 +1481,7 @@ dump_template_parms (tree info, int primary, int flags)
if (TREE_VEC_ELT (parms, ix) == error_mark_node)
{
- pp_string (cxx_pp, _("<template parameter error>"));
+ pp_string (cxx_pp, M_("<template parameter error>"));
continue;
}
@@ -1603,7 +1607,7 @@ dump_expr (tree t, int flags)
if (STATEMENT_CLASS_P (t))
{
- pp_cxx_ws_string (cxx_pp, _("<statement>"));
+ pp_cxx_ws_string (cxx_pp, M_("<statement>"));
return;
}
@@ -1632,7 +1636,7 @@ dump_expr (tree t, int flags)
case THROW_EXPR:
/* While waiting for caret diagnostics, avoid printing
__cxa_allocate_exception, __cxa_throw, and the like. */
- pp_cxx_ws_string (cxx_pp, _("<throw-expression>"));
+ pp_cxx_ws_string (cxx_pp, M_("<throw-expression>"));
break;
case PTRMEM_CST:
@@ -2078,7 +2082,7 @@ dump_expr (tree t, int flags)
break;
case DEFAULT_ARG:
- pp_string (cxx_pp, _("<unparsed>"));
+ pp_string (cxx_pp, M_("<unparsed>"));
break;
case TRY_CATCH_EXPR:
@@ -2224,7 +2228,7 @@ dump_expr (tree t, int flags)
pp_unsupported_tree (cxx_pp, t);
/* fall through to ERROR_MARK... */
case ERROR_MARK:
- pp_string (cxx_pp, _("<expression error>"));
+ pp_string (cxx_pp, M_("<expression error>"));
break;
}
}
@@ -2238,7 +2242,7 @@ dump_binary_op (const char *opstring, tree t, int flags)
if (opstring)
pp_cxx_ws_string (cxx_pp, opstring);
else
- pp_string (cxx_pp, _("<unknown operator>"));
+ pp_string (cxx_pp, M_("<unknown operator>"));
pp_cxx_whitespace (cxx_pp);
dump_expr (TREE_OPERAND (t, 1), flags | TFF_EXPR_IN_PARENS);
pp_cxx_right_paren (cxx_pp);
@@ -2273,6 +2277,15 @@ const char *
type_as_string (tree typ, int flags)
{
reinit_cxx_pp ();
+ pp_translate_identifiers (cxx_pp) = false;
+ dump_type (typ, flags);
+ return pp_formatted_text (cxx_pp);
+}
+
+const char *
+type_as_string_translate (tree typ, int flags)
+{
+ reinit_cxx_pp ();
dump_type (typ, flags);
return pp_formatted_text (cxx_pp);
}
@@ -2281,6 +2294,7 @@ const char *
expr_as_string (tree decl, int flags)
{
reinit_cxx_pp ();
+ pp_translate_identifiers (cxx_pp) = false;
dump_expr (decl, flags);
return pp_formatted_text (cxx_pp);
}
@@ -2289,6 +2303,15 @@ const char *
decl_as_string (tree decl, int flags)
{
reinit_cxx_pp ();
+ pp_translate_identifiers (cxx_pp) = false;
+ dump_decl (decl, flags);
+ return pp_formatted_text (cxx_pp);
+}
+
+const char *
+decl_as_string_translate (tree decl, int flags)
+{
+ reinit_cxx_pp ();
dump_decl (decl, flags);
return pp_formatted_text (cxx_pp);
}
@@ -2296,12 +2319,15 @@ decl_as_string (tree decl, int flags)
/* Generate the three forms of printable names for cxx_printable_name. */
const char *
-lang_decl_name (tree decl, int v)
+lang_decl_name (tree decl, int v, bool translate)
{
if (v >= 2)
- return decl_as_string (decl, TFF_DECL_SPECIFIERS);
+ return (translate
+ ? decl_as_string_translate (decl, TFF_DECL_SPECIFIERS)
+ : decl_as_string (decl, TFF_DECL_SPECIFIERS));
reinit_cxx_pp ();
+ pp_translate_identifiers (cxx_pp) = translate;
if (v == 1 && DECL_CLASS_SCOPE_P (decl))
{
dump_type (CP_DECL_CONTEXT (decl), TFF_PLAIN_IDENTIFIER);
@@ -2420,7 +2446,7 @@ static const char *
op_to_string (enum tree_code p)
{
tree id = operator_name_info[(int) p].identifier;
- return id ? IDENTIFIER_POINTER (id) : _("<unknown>");
+ return id ? IDENTIFIER_POINTER (id) : M_("<unknown>");
}
static const char *
@@ -2440,7 +2466,7 @@ static const char *
assop_to_string (enum tree_code p)
{
tree id = assignment_operator_name_info[(int) p].identifier;
- return id ? IDENTIFIER_POINTER (id) : _("{unknown}");
+ return id ? IDENTIFIER_POINTER (id) : M_("{unknown}");
}
static const char *
@@ -2454,7 +2480,7 @@ args_to_string (tree p, int verbose)
return "";
if (TYPE_P (TREE_VALUE (p)))
- return type_as_string (p, flags);
+ return type_as_string_translate (p, flags);
reinit_cxx_pp ();
for (; p; p = TREE_CHAIN (p))
@@ -2541,7 +2567,7 @@ cp_print_error_function (diagnostic_context *context,
fndecl = current_function_decl;
pp_printf (context->printer, function_category (fndecl),
- cxx_printable_name (fndecl, 2));
+ cxx_printable_name_translate (fndecl, 2));
while (abstract_origin)
{
@@ -2592,18 +2618,18 @@ cp_print_error_function (diagnostic_context *context,
if (flag_show_column && s.column != 0)
pp_printf (context->printer,
_(" inlined from %qs at %s:%d:%d"),
- cxx_printable_name (fndecl, 2),
+ cxx_printable_name_translate (fndecl, 2),
s.file, s.line, s.column);
else
pp_printf (context->printer,
_(" inlined from %qs at %s:%d"),
- cxx_printable_name (fndecl, 2),
+ cxx_printable_name_translate (fndecl, 2),
s.file, s.line);
}
else
pp_printf (context->printer, _(" inlined from %qs"),
- cxx_printable_name (fndecl, 2));
+ cxx_printable_name_translate (fndecl, 2));
}
}
pp_base_character (context->printer, ':');
@@ -2662,8 +2688,8 @@ print_instantiation_full_context (diagnostic_context *context)
pp_verbatim (context->printer,
_("%s: In instantiation of %qs:\n"),
LOCATION_FILE (location),
- decl_as_string (p->decl,
- TFF_DECL_SPECIFIERS | TFF_RETURN_TYPE));
+ decl_as_string_translate (p->decl,
+ TFF_DECL_SPECIFIERS | TFF_RETURN_TYPE));
location = p->locus;
p = p->next;
@@ -2686,8 +2712,8 @@ print_instantiation_partial_context (diagnostic_context *context,
break;
pp_verbatim (context->printer, _("%s:%d: instantiated from %qs\n"),
xloc.file, xloc.line,
- decl_as_string (t->decl,
- TFF_DECL_SPECIFIERS | TFF_RETURN_TYPE));
+ decl_as_string_translate (t->decl,
+ TFF_DECL_SPECIFIERS | TFF_RETURN_TYPE));
loc = t->locus;
}
pp_verbatim (context->printer, _("%s:%d: instantiated from here"),
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index c691ef24ff6..1fc9469fcdf 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -428,8 +428,8 @@ cp_lexer_get_preprocessor_token (cp_lexer *lexer, cp_token *token)
/* Warn about the C++0x keyword (but still treat it as
an identifier). */
warning (OPT_Wc__0x_compat,
- "identifier %<%s%> will become a keyword in C++0x",
- IDENTIFIER_POINTER (token->u.value));
+ "identifier %qE will become a keyword in C++0x",
+ token->u.value);
/* Clear out the C_RID_CODE so we don't warn about this
particular identifier-turned-keyword again. */
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index dd84891d73b..8c0a1e510ce 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -3038,7 +3038,7 @@ finish_id_expression (tree id_expression,
}
if (TREE_DEPRECATED (decl))
- warn_deprecated_use (decl);
+ warn_deprecated_use (decl, NULL_TREE);
return decl;
}
@@ -5050,4 +5050,23 @@ finish_trait_expr (cp_trait_kind kind, tree type1, tree type2)
? boolean_true_node : boolean_false_node);
}
+/* Do-nothing variants of functions to handle pragma FLOAT_CONST_DECIMAL64,
+ which is ignored for C++. */
+
+void
+set_float_const_decimal64 (void)
+{
+}
+
+void
+clear_float_const_decimal64 (void)
+{
+}
+
+bool
+float_const_decimal64_p (void)
+{
+ return 0;
+}
+
#include "gt-cp-semantics.h"
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index c95c11c4dde..9cc767da07c 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -1238,11 +1238,12 @@ build_overload (tree decl, tree chain)
#define PRINT_RING_SIZE 4
-const char *
-cxx_printable_name (tree decl, int v)
+static const char *
+cxx_printable_name_internal (tree decl, int v, bool translate)
{
static unsigned int uid_ring[PRINT_RING_SIZE];
static char *print_ring[PRINT_RING_SIZE];
+ static bool trans_ring[PRINT_RING_SIZE];
static int ring_counter;
int i;
@@ -1250,11 +1251,11 @@ cxx_printable_name (tree decl, int v)
if (v < 2
|| TREE_CODE (decl) != FUNCTION_DECL
|| DECL_LANG_SPECIFIC (decl) == 0)
- return lang_decl_name (decl, v);
+ return lang_decl_name (decl, v, translate);
/* See if this print name is lying around. */
for (i = 0; i < PRINT_RING_SIZE; i++)
- if (uid_ring[i] == DECL_UID (decl))
+ if (uid_ring[i] == DECL_UID (decl) && translate == trans_ring[i])
/* yes, so return it. */
return print_ring[i];
@@ -1273,10 +1274,23 @@ cxx_printable_name (tree decl, int v)
if (print_ring[ring_counter])
free (print_ring[ring_counter]);
- print_ring[ring_counter] = xstrdup (lang_decl_name (decl, v));
+ print_ring[ring_counter] = xstrdup (lang_decl_name (decl, v, translate));
uid_ring[ring_counter] = DECL_UID (decl);
+ trans_ring[ring_counter] = translate;
return print_ring[ring_counter];
}
+
+const char *
+cxx_printable_name (tree decl, int v)
+{
+ return cxx_printable_name_internal (decl, v, false);
+}
+
+const char *
+cxx_printable_name_translate (tree decl, int v)
+{
+ return cxx_printable_name_internal (decl, v, true);
+}
/* Build the FUNCTION_TYPE or METHOD_TYPE which may throw exceptions
listed in RAISES. */
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index e34d942a06c..4486b9065a1 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -1909,7 +1909,7 @@ build_class_member_access_expr (tree object, tree member,
member_scope = DECL_CLASS_CONTEXT (member);
mark_used (member);
if (TREE_DEPRECATED (member))
- warn_deprecated_use (member);
+ warn_deprecated_use (member, NULL_TREE);
}
else
member_scope = BINFO_TYPE (BASELINK_ACCESS_BINFO (member));
@@ -2369,7 +2369,7 @@ finish_class_member_access_expr (tree object, tree name, bool template_p,
}
if (TREE_DEPRECATED (member))
- warn_deprecated_use (member);
+ warn_deprecated_use (member, NULL_TREE);
if (template_p)
check_template_keyword (member);
diff --git a/gcc/cse.c b/gcc/cse.c
index 2b814937535..a697ed428e0 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -517,6 +517,14 @@ static struct table_elt *free_element_chain;
static int constant_pool_entries_cost;
static int constant_pool_entries_regcost;
+/* Trace a patch through the CFG. */
+
+struct branch_path
+{
+ /* The basic block for this path entry. */
+ basic_block bb;
+};
+
/* This data describes a block that will be processed by
cse_extended_basic_block. */
@@ -527,11 +535,7 @@ struct cse_basic_block_data
/* Size of current branch path, if any. */
int path_size;
/* Current path, indicating which basic_blocks will be processed. */
- struct branch_path
- {
- /* The basic block for this path entry. */
- basic_block bb;
- } *path;
+ struct branch_path *path;
};
@@ -7058,4 +7062,3 @@ struct rtl_opt_pass pass_cse_after_global_opts =
TODO_verify_flow /* todo_flags_finish */
}
};
-
diff --git a/gcc/df-problems.c b/gcc/df-problems.c
index a4853273214..f48da9bc8dc 100644
--- a/gcc/df-problems.c
+++ b/gcc/df-problems.c
@@ -316,7 +316,61 @@ df_rd_alloc (bitmap all_blocks)
}
-/* Process a list of DEFs for df_rd_bb_local_compute. */
+/* Add the effect of the top artificial defs of BB to the reaching definitions
+ bitmap LOCAL_RD. */
+
+void
+df_rd_simulate_artificial_defs_at_top (basic_block bb, bitmap local_rd)
+{
+ int bb_index = bb->index;
+ df_ref *def_rec;
+ for (def_rec = df_get_artificial_defs (bb_index); *def_rec; def_rec++)
+ {
+ df_ref def = *def_rec;
+ if (DF_REF_FLAGS (def) & DF_REF_AT_TOP)
+ {
+ unsigned int dregno = DF_REF_REGNO (def);
+ if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL)))
+ bitmap_clear_range (local_rd,
+ DF_DEFS_BEGIN (dregno),
+ DF_DEFS_COUNT (dregno));
+ bitmap_set_bit (local_rd, DF_REF_ID (def));
+ }
+ }
+}
+
+/* Add the effect of the defs of INSN to the reaching definitions bitmap
+ LOCAL_RD. */
+
+void
+df_rd_simulate_one_insn (basic_block bb ATTRIBUTE_UNUSED, rtx insn,
+ bitmap local_rd)
+{
+ unsigned uid = INSN_UID (insn);
+ df_ref *def_rec;
+
+ for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++)
+ {
+ df_ref def = *def_rec;
+ unsigned int dregno = DF_REF_REGNO (def);
+ if ((!(df->changeable_flags & DF_NO_HARD_REGS))
+ || (dregno >= FIRST_PSEUDO_REGISTER))
+ {
+ if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL)))
+ bitmap_clear_range (local_rd,
+ DF_DEFS_BEGIN (dregno),
+ DF_DEFS_COUNT (dregno));
+ if (!(DF_REF_FLAGS (def)
+ & (DF_REF_MUST_CLOBBER | DF_REF_MAY_CLOBBER)))
+ bitmap_set_bit (local_rd, DF_REF_ID (def));
+ }
+ }
+}
+
+/* Process a list of DEFs for df_rd_bb_local_compute. This is a bit
+ more complicated than just simulating, because we must produce the
+ gen and kill sets and hence deal with the two possible representations
+ of kill sets. */
static void
df_rd_bb_local_compute_process_def (struct df_rd_bb_info *bb_info,
@@ -2076,7 +2130,6 @@ df_chain_create_bb (unsigned int bb_index)
struct df_rd_bb_info *bb_info = df_rd_get_bb_info (bb_index);
rtx insn;
bitmap cpy = BITMAP_ALLOC (NULL);
- df_ref *def_rec;
bitmap_copy (cpy, bb_info->in);
bitmap_set_bit (df_chain->out_of_date_transfer_functions, bb_index);
@@ -2095,57 +2148,23 @@ df_chain_create_bb (unsigned int bb_index)
DF_REF_AT_TOP);
#endif
- for (def_rec = df_get_artificial_defs (bb_index); *def_rec; def_rec++)
- {
- df_ref def = *def_rec;
- if (DF_REF_FLAGS (def) & DF_REF_AT_TOP)
- {
- unsigned int dregno = DF_REF_REGNO (def);
- if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL)))
- bitmap_clear_range (cpy,
- DF_DEFS_BEGIN (dregno),
- DF_DEFS_COUNT (dregno));
- bitmap_set_bit (cpy, DF_REF_ID (def));
- }
- }
+ df_rd_simulate_artificial_defs_at_top (bb, cpy);
/* Process the regular instructions next. */
FOR_BB_INSNS (bb, insn)
- {
- df_ref *def_rec;
- unsigned int uid = INSN_UID (insn);
-
- if (!INSN_P (insn))
- continue;
-
- /* Now scan the uses and link them up with the defs that remain
- in the cpy vector. */
-
- df_chain_create_bb_process_use (cpy, DF_INSN_UID_USES (uid), 0);
-
- if (df->changeable_flags & DF_EQ_NOTES)
- df_chain_create_bb_process_use (cpy, DF_INSN_UID_EQ_USES (uid), 0);
+ if (INSN_P (insn))
+ {
+ unsigned int uid = INSN_UID (insn);
+ /* First scan the uses and link them up with the defs that remain
+ in the cpy vector. */
+ df_chain_create_bb_process_use (cpy, DF_INSN_UID_USES (uid), 0);
+ if (df->changeable_flags & DF_EQ_NOTES)
+ df_chain_create_bb_process_use (cpy, DF_INSN_UID_EQ_USES (uid), 0);
- /* Since we are going forwards, process the defs second. This
- pass only changes the bits in cpy. */
- for (def_rec = DF_INSN_UID_DEFS (uid); *def_rec; def_rec++)
- {
- df_ref def = *def_rec;
- unsigned int dregno = DF_REF_REGNO (def);
- if ((!(df->changeable_flags & DF_NO_HARD_REGS))
- || (dregno >= FIRST_PSEUDO_REGISTER))
- {
- if (!(DF_REF_FLAGS (def) & (DF_REF_PARTIAL | DF_REF_CONDITIONAL)))
- bitmap_clear_range (cpy,
- DF_DEFS_BEGIN (dregno),
- DF_DEFS_COUNT (dregno));
- if (!(DF_REF_FLAGS (def)
- & (DF_REF_MUST_CLOBBER | DF_REF_MAY_CLOBBER)))
- bitmap_set_bit (cpy, DF_REF_ID (def));
- }
- }
- }
+ /* Since we are going forwards, process the defs second. */
+ df_rd_simulate_one_insn (bb, insn, cpy);
+ }
/* Create the chains for the artificial uses of the hard registers
at the end of the block. */
diff --git a/gcc/df.h b/gcc/df.h
index ab3a661bbc1..f8084e022d0 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -939,6 +939,8 @@ extern void df_grow_bb_info (struct dataflow *);
extern void df_chain_dump (struct df_link *, FILE *);
extern void df_print_bb_index (basic_block bb, FILE *file);
extern void df_rd_add_problem (void);
+extern void df_rd_simulate_artificial_defs_at_top (basic_block, bitmap);
+extern void df_rd_simulate_one_insn (basic_block, rtx, bitmap);
extern void df_lr_add_problem (void);
extern void df_lr_verify_transfer_functions (void);
extern void df_live_verify_transfer_functions (void);
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 4e06be3daca..6b626e2add7 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -958,10 +958,6 @@ is incomplete:
@itemize @bullet
@item
-Pragma @code{FLOAT_CONST_DECIMAL64} is not supported, nor is the @samp{d}
-suffix for literal constants of type @code{double}.
-
-@item
When the value of a decimal floating type cannot be represented in the
integer type to which it is being converted, the result is undefined
rather than the result value specified by the draft technical report.
@@ -2069,6 +2065,7 @@ objects (@pxref{C++ Attributes}).
These attributes are not currently implemented for Objective-C@.
@item deprecated
+@itemx deprecated (@var{msg})
@cindex @code{deprecated} attribute.
The @code{deprecated} attribute results in a warning if the function
is used anywhere in the source file. This is useful when identifying
@@ -2084,7 +2081,9 @@ int old_fn ();
int (*fn_ptr)() = old_fn;
@end smallexample
-results in a warning on line 3 but not line 2.
+results in a warning on line 3 but not line 2. The optional msg
+argument, which must be a string, will be printed in the warning if
+present.
The @code{deprecated} attribute can also be used for variables and
types (@pxref{Variable Attributes}, @pxref{Type Attributes}.)
@@ -3849,6 +3848,7 @@ These attributes override the default chosen by the
@option{-fno-common} and @option{-fcommon} flags respectively.
@item deprecated
+@itemx deprecated (@var{msg})
@cindex @code{deprecated} attribute
The @code{deprecated} attribute results in a warning if the variable
is used anywhere in the source file. This is useful when identifying
@@ -3864,7 +3864,9 @@ extern int old_var;
int new_fn () @{ return old_var; @}
@end smallexample
-results in a warning on line 3 but not line 2.
+results in a warning on line 3 but not line 2. The optional msg
+argument, which must be a string, will be printed in the warning if
+present.
The @code{deprecated} attribute can also be used for functions and
types (@pxref{Function Attributes}, @pxref{Type Attributes}.)
@@ -4494,6 +4496,7 @@ not referenced, but contain constructors and destructors that have
nontrivial bookkeeping functions.
@item deprecated
+@itemx deprecated (@var{msg})
The @code{deprecated} attribute results in a warning if the type
is used anywhere in the source file. This is useful when identifying
types that are expected to be removed in a future version of a program.
@@ -4516,7 +4519,9 @@ T3 z __attribute__ ((deprecated));
results in a warning on line 2 and 3 but not lines 4, 5, or 6. No
warning is issued for line 4 because T2 is not explicitly
deprecated. Line 5 has no warning because T3 is explicitly
-deprecated. Similarly for line 6.
+deprecated. Similarly for line 6. The optional msg
+argument, which must be a string, will be printed in the warning if
+present.
The @code{deprecated} attribute can also be used for functions and
variables (@pxref{Function Attributes}, @pxref{Variable Attributes}.)
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 0021e800916..763654685bf 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -259,8 +259,8 @@ Objective-C and Objective-C++ Dialects}.
-Wswitch -Wswitch-default -Wswitch-enum -Wsync-nand @gol
-Wsystem-headers -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized @gol
-Wunknown-pragmas -Wno-pragmas -Wunreachable-code @gol
--Wunused -Wunused-function -Wunused-label -Wunused-parameter @gol
--Wunused-value -Wunused-variable @gol
+-Wunsuffixed-float-constants -Wunused -Wunused-function @gol
+-Wunused-label -Wunused-parameter -Wunused-value -Wunused-variable @gol
-Wvariadic-macros -Wvla @gol
-Wvolatile-register-var -Wwrite-strings}
@@ -4218,6 +4218,15 @@ minimum maximum, so we do not diagnose overlength strings in C++@.
This option is implied by @option{-pedantic}, and can be disabled with
@option{-Wno-overlength-strings}.
+
+@item -Wunsuffixed-float-constants
+@opindex Wunsuffixed-float-constants
+
+GCC will issue a warning for any floating constant that does not have
+a suffix. When used together with @option{-Wsystem-headers} it will
+warn about such constants in system header files. This can be useful
+when preparing code to use with the @code{FLOAT_CONST_DECIMAL64} pragma
+from the decimal floating-point extension to C99.
@end table
@node Debugging Options
@@ -4585,13 +4594,14 @@ and dbg_cnt(tail_call) will return false always.
@itemx -fdump-rtl-@var{pass}
@opindex d
Says to make debugging dumps during compilation at times specified by
-@var{letters}. This is used for debugging the RTL-based passes of the
-compiler. The file names for most of the dumps are made by appending a
-pass number and a word to the @var{dumpname}. @var{dumpname} is generated
-from the name of the output file, if explicitly specified and it is not
-an executable, otherwise it is the basename of the source file. These
-switches may have different effects when @option{-E} is used for
-preprocessing.
+@var{letters}. This is used for debugging the RTL-based passes of the
+compiler. The file names for most of the dumps are made by appending
+a pass number and a word to the @var{dumpname}, and the files are
+created in the directory of the output file. @var{dumpname} is
+generated from the name of the output file, if explicitly specified
+and it is not an executable, otherwise it is the basename of the
+source file. These switches may have different effects when
+@option{-E} is used for preprocessing.
Debug dumps can be enabled with a @option{-fdump-rtl} switch or some
@option{-d} option @var{letters}. Here are the possible
@@ -4919,7 +4929,8 @@ invocations with different options, in particular with and without
@opindex fdump-translation-unit
Dump a representation of the tree structure for the entire translation
unit to a file. The file name is made by appending @file{.tu} to the
-source file name. If the @samp{-@var{options}} form is used, @var{options}
+source file name, and the file is created in the same directory as the
+output file. If the @samp{-@var{options}} form is used, @var{options}
controls the details of the dump as described for the
@option{-fdump-tree} options.
@@ -4927,16 +4938,19 @@ controls the details of the dump as described for the
@itemx -fdump-class-hierarchy-@var{options} @r{(C++ only)}
@opindex fdump-class-hierarchy
Dump a representation of each class's hierarchy and virtual function
-table layout to a file. The file name is made by appending @file{.class}
-to the source file name. If the @samp{-@var{options}} form is used,
-@var{options} controls the details of the dump as described for the
-@option{-fdump-tree} options.
+table layout to a file. The file name is made by appending
+@file{.class} to the source file name, and the file is created in the
+same directory as the output file. If the @samp{-@var{options}} form
+is used, @var{options} controls the details of the dump as described
+for the @option{-fdump-tree} options.
@item -fdump-ipa-@var{switch}
@opindex fdump-ipa
Control the dumping at various stages of inter-procedural analysis
-language tree to a file. The file name is generated by appending a switch
-specific suffix to the source file name. The following dumps are possible:
+language tree to a file. The file name is generated by appending a
+switch specific suffix to the source file name, and the file is created
+in the same directory as the output file. The following dumps are
+possible:
@table @samp
@item all
@@ -4954,22 +4968,25 @@ Dump after function inlining.
@item -fdump-statistics-@var{option}
@opindex -fdump-statistics
Enable and control dumping of pass statistics in a separate file. The
-file name is generated by appending a suffix ending in @samp{.statistics}
-to the source file name. If the @samp{-@var{option}} form is used,
-@samp{-stats} will cause counters to be summed over the whole compilation unit
-while @samp{-details} will dump every event as the passes generate them.
-The default with no option is to sum counters for each function compiled.
+file name is generated by appending a suffix ending in
+@samp{.statistics} to the source file name, and the file is created in
+the same directory as the output file. If the @samp{-@var{option}}
+form is used, @samp{-stats} will cause counters to be summed over the
+whole compilation unit while @samp{-details} will dump every event as
+the passes generate them. The default with no option is to sum
+counters for each function compiled.
@item -fdump-tree-@var{switch}
@itemx -fdump-tree-@var{switch}-@var{options}
@opindex fdump-tree
Control the dumping at various stages of processing the intermediate
-language tree to a file. The file name is generated by appending a switch
-specific suffix to the source file name. If the @samp{-@var{options}}
-form is used, @var{options} is a list of @samp{-} separated options that
-control the details of the dump. Not all options are applicable to all
-dumps, those which are not meaningful will be ignored. The following
-options are available
+language tree to a file. The file name is generated by appending a
+switch specific suffix to the source file name, and the file is
+created in the same directory as the output file. If the
+@samp{-@var{options}} form is used, @var{options} is a list of
+@samp{-} separated options that control the details of the dump. Not
+all options are applicable to all dumps, those which are not
+meaningful will be ignored. The following options are available
@table @samp
@item address
@@ -5537,8 +5554,8 @@ instructions and checks if the result can be simplified. If loop unrolling
is active, two passes are performed and the second is scheduled after
loop unrolling.
-This option is enabled by default at optimization levels @option{-O2},
-@option{-O3}, @option{-Os}.
+This option is enabled by default at optimization levels @option{-O},
+@option{-O2}, @option{-O3}, @option{-Os}.
@item -fomit-frame-pointer
@opindex fomit-frame-pointer
diff --git a/gcc/dojump.c b/gcc/dojump.c
index eb0649737c6..76f62c62eba 100644
--- a/gcc/dojump.c
+++ b/gcc/dojump.c
@@ -141,7 +141,8 @@ prefer_and_bit_test (enum machine_mode mode, int bitnum)
}
/* Fill in the integers. */
- XEXP (and_test, 1) = GEN_INT ((unsigned HOST_WIDE_INT) 1 << bitnum);
+ XEXP (and_test, 1)
+ = immed_double_const ((unsigned HOST_WIDE_INT) 1 << bitnum, 0, mode);
XEXP (XEXP (shift_test, 0), 1) = GEN_INT (bitnum);
return (rtx_cost (and_test, IF_THEN_ELSE, optimize_insn_for_speed_p ())
@@ -474,10 +475,10 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label)
&& prefer_and_bit_test (TYPE_MODE (argtype),
TREE_INT_CST_LOW (shift)))
{
- HOST_WIDE_INT mask = (HOST_WIDE_INT) 1
- << TREE_INT_CST_LOW (shift);
+ unsigned HOST_WIDE_INT mask
+ = (unsigned HOST_WIDE_INT) 1 << TREE_INT_CST_LOW (shift);
do_jump (build2 (BIT_AND_EXPR, argtype, arg,
- build_int_cst_type (argtype, mask)),
+ build_int_cst_wide_type (argtype, mask, 0)),
clr_label, set_label);
break;
}
diff --git a/gcc/except.c b/gcc/except.c
index 3ba3b67a197..a33f3096fbf 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -338,10 +338,9 @@ gen_eh_region (enum eh_region_type type, struct eh_region *outer)
}
struct eh_region *
-gen_eh_region_cleanup (struct eh_region *outer, struct eh_region *prev_try)
+gen_eh_region_cleanup (struct eh_region *outer)
{
struct eh_region *cleanup = gen_eh_region (ERT_CLEANUP, outer);
- cleanup->u.cleanup.prev_try = prev_try;
return cleanup;
}
@@ -1183,8 +1182,8 @@ duplicate_eh_regions_1 (eh_region old, eh_region outer, int eh_offset)
return ret;
}
-/* Return prev_try pointers catch subregions of R should
- point to. */
+/* Look for first outer region of R (or R itself) that is
+ TRY region. Return NULL if none. */
static struct eh_region *
find_prev_try (struct eh_region * r)
@@ -1208,7 +1207,7 @@ int
duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map,
void *data, int copy_region, int outer_region)
{
- eh_region cur, prev_try, old_prev_try, outer, *splice;
+ eh_region cur, outer, *splice;
int i, min_region, max_region, eh_offset, cfun_last_region_number;
int num_regions;
@@ -1228,14 +1227,12 @@ duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map,
max_region = 0;
cur = VEC_index (eh_region, ifun->eh->region_array, copy_region);
- old_prev_try = find_prev_try (cur);
duplicate_eh_regions_0 (cur, &min_region, &max_region);
}
else
{
min_region = 1;
max_region = ifun->eh->last_region_number;
- old_prev_try = NULL;
}
num_regions = max_region - min_region + 1;
cfun_last_region_number = cfun->eh->last_region_number;
@@ -1302,12 +1299,6 @@ duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map,
if (cur && cur->tree_label)
cur->tree_label = map (cur->tree_label, data);
- /* Search for the containing ERT_TRY region to fix up
- the prev_try short-cuts for ERT_CLEANUP regions. */
- prev_try = NULL;
- if (outer_region > 0)
- prev_try = find_prev_try (VEC_index (eh_region, cfun->eh->region_array, outer_region));
-
/* Remap all of the internal catch and cleanup linkages. Since we
duplicate entire subtrees, all of the referenced regions will have
been copied too. And since we renumbered them as a block, a simple
@@ -1354,13 +1345,6 @@ duplicate_eh_regions (struct function *ifun, duplicate_eh_regions_map map,
REMAP (cur->u.eh_catch.prev_catch);
break;
- case ERT_CLEANUP:
- if (cur->u.cleanup.prev_try != old_prev_try)
- REMAP (cur->u.cleanup.prev_try);
- else
- cur->u.cleanup.prev_try = prev_try;
- break;
-
default:
break;
}
@@ -1394,14 +1378,10 @@ copy_eh_region_1 (struct eh_region *old, struct eh_region *new_outer)
/* Return new copy of eh region OLD inside region NEW_OUTER.
- Copy whole catch-try chain if neccesary and update cleanup region prev_try
- pointers.
-
- PREV_TRY_MAP points to outer TRY region if it was copied in trace already. */
+ Copy whole catch-try chain if neccesary. */
static struct eh_region *
-copy_eh_region (struct eh_region *old, struct eh_region *new_outer,
- struct eh_region *prev_try_map)
+copy_eh_region (struct eh_region *old, struct eh_region *new_outer)
{
struct eh_region *r, *n, *old_try, *new_try, *ret = NULL;
VEC(eh_region,heap) *catch_list = NULL;
@@ -1410,11 +1390,6 @@ copy_eh_region (struct eh_region *old, struct eh_region *new_outer,
{
gcc_assert (old->type != ERT_TRY);
r = copy_eh_region_1 (old, new_outer);
- if (r->type == ERT_CLEANUP && prev_try_map)
- {
- gcc_assert (r->u.cleanup.prev_try);
- r->u.cleanup.prev_try = prev_try_map;
- }
return r;
}
@@ -1477,7 +1452,7 @@ struct eh_region *
redirect_eh_edge_to_label (edge e, tree new_dest_label, bool is_resx,
bool inlinable_call, int region_number)
{
- struct eh_region *outer, *prev_try_map = NULL;
+ struct eh_region *outer;
struct eh_region *region;
VEC (eh_region, heap) * trace = NULL;
int i;
@@ -1547,7 +1522,7 @@ redirect_eh_edge_to_label (edge e, tree new_dest_label, bool is_resx,
gcc_assert (!outer || old->outer != outer->outer);
/* Copy region and update label. */
- r = copy_eh_region (old, outer, prev_try_map);
+ r = copy_eh_region (old, outer);
VEC_replace (eh_region, trace, i, r);
if (r->tree_label && label_to_block (r->tree_label) == old_bb)
{
@@ -1587,14 +1562,11 @@ redirect_eh_edge_to_label (edge e, tree new_dest_label, bool is_resx,
}
}
- /* Cleanup regions points to outer TRY blocks. */
- if (r->type == ERT_TRY)
- prev_try_map = r;
outer = r;
}
if (is_resx || region->type == ERT_THROW)
- r = copy_eh_region (region, outer, prev_try_map);
+ r = copy_eh_region (region, outer);
}
VEC_free (eh_region, heap, trace);
@@ -2673,32 +2645,6 @@ remove_eh_handler_and_replace (struct eh_region *region,
outer = region->outer;
- /* When we are moving the region in EH tree, update prev_try pointers. */
- if ((outer != replace || region->type == ERT_TRY) && region->inner)
- {
- struct eh_region *prev_try = find_prev_try (replace);
- p = region->inner;
- while (p != region)
- {
- if (p->type == ERT_CLEANUP)
- p->u.cleanup.prev_try = prev_try;
- if (p->type != ERT_TRY
- && p->type != ERT_MUST_NOT_THROW
- && (p->type != ERT_ALLOWED_EXCEPTIONS
- || p->u.allowed.type_list)
- && p->inner)
- p = p->inner;
- else if (p->next_peer)
- p = p->next_peer;
- else
- {
- while (p != region && !p->next_peer)
- p = p->outer;
- if (p != region)
- p = p->next_peer;
- }
- }
- }
/* For the benefit of efficiently handling REG_EH_REGION notes,
replace this region in the region array with its containing
region. Note that previous region deletions may result in
@@ -3120,8 +3066,20 @@ foreach_reachable_handler (int region_number, bool is_resx, bool inlinable_call,
to the next outer cleanup region, so the flow graph will be
accurate. */
if (region->type == ERT_CLEANUP)
- region = region->u.cleanup.prev_try;
- else
+ {
+ enum reachable_code code = RNL_NOT_CAUGHT;
+ region = find_prev_try (region->outer);
+ /* Continue looking for outer TRY region until we find one
+ that might cath something. */
+ while (region
+ && (code = reachable_next_level (region, type_thrown, &info,
+ inlinable_call || is_resx))
+ == RNL_NOT_CAUGHT)
+ region = find_prev_try (region->outer);
+ if (code >= RNL_CAUGHT)
+ break;
+ }
+ if (region)
region = region->outer;
}
}
@@ -4418,9 +4376,6 @@ dump_eh_tree (FILE * out, struct function *fun)
switch (i->type)
{
case ERT_CLEANUP:
- if (i->u.cleanup.prev_try)
- fprintf (out, " prev try:%i",
- i->u.cleanup.prev_try->region_number);
break;
case ERT_TRY:
@@ -4500,21 +4455,13 @@ debug_eh_tree (struct function *fn)
/* Verify EH region invariants. */
static bool
-verify_eh_region (struct eh_region *region, struct eh_region *prev_try)
+verify_eh_region (struct eh_region *region)
{
bool found = false;
if (!region)
return false;
switch (region->type)
{
- case ERT_CLEANUP:
- if (region->u.cleanup.prev_try != prev_try)
- {
- error ("Wrong prev_try pointer in EH region %i",
- region->region_number);
- found = true;
- }
- break;
case ERT_TRY:
{
struct eh_region *c, *prev = NULL;
@@ -4561,6 +4508,7 @@ verify_eh_region (struct eh_region *region, struct eh_region *prev_try)
found = true;
}
break;
+ case ERT_CLEANUP:
case ERT_ALLOWED_EXCEPTIONS:
case ERT_MUST_NOT_THROW:
case ERT_THROW:
@@ -4568,14 +4516,8 @@ verify_eh_region (struct eh_region *region, struct eh_region *prev_try)
case ERT_UNKNOWN:
gcc_unreachable ();
}
- if (region->type == ERT_TRY)
- prev_try = region;
- else if (region->type == ERT_MUST_NOT_THROW
- || (region->type == ERT_ALLOWED_EXCEPTIONS
- && !region->u.allowed.type_list))
- prev_try = NULL;
for (region = region->inner; region; region = region->next_peer)
- found |= verify_eh_region (region, prev_try);
+ found |= verify_eh_region (region);
return found;
}
@@ -4659,7 +4601,7 @@ verify_eh_tree (struct function *fun)
}
if (!err)
for (i = fun->eh->region_tree; i; i = i->next_peer)
- err |= verify_eh_region (i, NULL);
+ err |= verify_eh_region (i);
if (err)
{
diff --git a/gcc/except.h b/gcc/except.h
index 50d6b314efd..70506d3a8c5 100644
--- a/gcc/except.h
+++ b/gcc/except.h
@@ -1,6 +1,6 @@
/* Exception Handling interface routines.
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2007, 2008 Free Software Foundation, Inc.
+ 2007, 2008, 2009 Free Software Foundation, Inc.
Contributed by Mike Stump <mrs@cygnus.com>.
This file is part of GCC.
@@ -24,6 +24,18 @@ along with GCC; see the file COPYING3. If not see
struct function;
+/* The type of an exception region. */
+enum eh_region_type
+{
+ ERT_UNKNOWN = 0,
+ ERT_CLEANUP,
+ ERT_TRY,
+ ERT_CATCH,
+ ERT_ALLOWED_EXCEPTIONS,
+ ERT_MUST_NOT_THROW,
+ ERT_THROW
+};
+
/* Describes one exception region. */
struct GTY(()) eh_region
{
@@ -45,16 +57,7 @@ struct GTY(()) eh_region
bitmap aka;
/* Each region does exactly one thing. */
- enum eh_region_type
- {
- ERT_UNKNOWN = 0,
- ERT_CLEANUP,
- ERT_TRY,
- ERT_CATCH,
- ERT_ALLOWED_EXCEPTIONS,
- ERT_MUST_NOT_THROW,
- ERT_THROW
- } type;
+ enum eh_region_type type;
/* Holds the action to perform based on the preceding type. */
union eh_region_u {
@@ -85,12 +88,6 @@ struct GTY(()) eh_region
struct eh_region_u_throw {
tree type;
} GTY ((tag ("ERT_THROW"))) eh_throw;
-
- /* Retain the cleanup expression even after expansion so that
- we can match up fixup regions. */
- struct eh_region_u_cleanup {
- struct eh_region *prev_try;
- } GTY ((tag ("ERT_CLEANUP"))) cleanup;
} GTY ((desc ("%0.type"))) u;
/* Entry point for this region's handler before landing pads are built. */
@@ -185,8 +182,7 @@ extern int duplicate_eh_regions (struct function *, duplicate_eh_regions_map,
extern void sjlj_emit_function_exit_after (rtx);
extern void default_init_unwind_resume_libfunc (void);
-extern struct eh_region *gen_eh_region_cleanup (struct eh_region *,
- struct eh_region *);
+extern struct eh_region *gen_eh_region_cleanup (struct eh_region *);
extern struct eh_region *gen_eh_region_try (struct eh_region *);
extern struct eh_region *gen_eh_region_catch (struct eh_region *, tree);
extern struct eh_region *gen_eh_region_allowed (struct eh_region *, tree);
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 14b9f100b51..fb590492fb4 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -10647,13 +10647,18 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
&& !HONOR_SIGNED_ZEROS (TYPE_MODE (TREE_TYPE (arg0)))
&& real_zerop (arg1))
return omit_one_operand (type, arg1, arg0);
- /* In IEEE floating point, x*1 is not equivalent to x for snans. */
+ /* In IEEE floating point, x*1 is not equivalent to x for snans.
+ Likewise for complex arithmetic with signed zeros. */
if (!HONOR_SNANS (TYPE_MODE (TREE_TYPE (arg0)))
+ && (!HONOR_SIGNED_ZEROS (TYPE_MODE (TREE_TYPE (arg0)))
+ || !COMPLEX_FLOAT_TYPE_P (TREE_TYPE (arg0)))
&& real_onep (arg1))
return non_lvalue (fold_convert (type, arg0));
/* Transform x * -1.0 into -x. */
if (!HONOR_SNANS (TYPE_MODE (TREE_TYPE (arg0)))
+ && (!HONOR_SIGNED_ZEROS (TYPE_MODE (TREE_TYPE (arg0)))
+ || !COMPLEX_FLOAT_TYPE_P (TREE_TYPE (arg0)))
&& real_minus_onep (arg1))
return fold_convert (type, negate_expr (arg0));
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 2bb9a540fc4..97f56b20141 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,66 @@
+2009-05-10 Ian Lance Taylor <iant@google.com>
+
+ * gfortran.h (enum gfc_omp_sched_kind): New enum, broken out of
+ gfc_omp_clauses.
+ (enum gfc_omp_default_sharing): Likewise.
+ * module.c (enum gfc_rsym_state): New enum, broken out of
+ pointer_info.
+ (enum gfc_wsym_state): Likewise.
+ * parse.c (enum state_order): New enum, broken out of st_state.
+
+2009-05-10 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/40018
+ * trans-array.c (gfc_trans_array_constructor_value): Fold
+ convert numeric constants.
+ (gfc_build_constant_array_constructor): The same.
+
+2009-05-10 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/38863
+ * trans-expr.c (gfc_conv_operator_assign): Remove function.
+ * trans.h : Remove prototype for gfc_conv_operator_assign.
+ * trans-stmt.c (gfc_conv_elemental_dependencies): Initialize
+ derivde types with intent(out).
+ (gfc_trans_call): Add mask, count1 and invert arguments. Add
+ code to use mask for WHERE assignments.
+ (gfc_trans_forall_1): Use new arguments for gfc_trans_call.
+ (gfc_trans_where_assign): The gfc_symbol argument is replaced
+ by the corresponding code. If this has a resolved_sym, then
+ gfc_trans_call is called. The call to gfc_conv_operator_assign
+ is removed.
+ (gfc_trans_where_2): Change the last argument in the call to
+ gfc_trans_where_assign.
+ * trans-stmt.h : Modify prototype for gfc_trans_call.
+ * trans.c (gfc_trans_code): Use new args for gfc_trans_call.
+
+2009-05-08 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/39876
+ * intrinsic.c (gfc_is_intrinsic): Do not add the EXTERNAL attribute if
+ the symbol is a module procedure.
+
+2009-05-08 Tobias Burnus <burnus@net-b.de>
+
+ * invoke.texi: Add do/recursion to the -fcheck= summary.
+
+2009-05-07 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR fortran/38830
+ * gfortran.texi: Document that we don't support variable FORMAT
+ expressions.
+
+2009-05-07 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR fortran/39576
+ * error.c (error_print): Add missing break statement.
+
+2009-05-07 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR fortran/36382
+ * invoke.texi: Document that -fdollar-ok does not allow $ to be
+ used in IMPLICIT statement.
+
2009-05-06 Janus Weil <janus@gcc.gnu.org>
Paul Thomas <pault@gcc.gnu.org>
diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c
index 29efbd1fee0..7cb23dd70e6 100644
--- a/gcc/fortran/error.c
+++ b/gcc/fortran/error.c
@@ -533,6 +533,7 @@ error_print (const char *type, const char *format0, va_list argp)
case 'u':
arg[pos].type = TYPE_UINTEGER;
+ break;
case 'l':
c = *format++;
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index afd3edbf292..fad49c4e7cd 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -931,29 +931,34 @@ enum
/* Because a symbol can belong to multiple namelists, they must be
linked externally to the symbol itself. */
+
+enum gfc_omp_sched_kind
+{
+ OMP_SCHED_NONE,
+ OMP_SCHED_STATIC,
+ OMP_SCHED_DYNAMIC,
+ OMP_SCHED_GUIDED,
+ OMP_SCHED_RUNTIME,
+ OMP_SCHED_AUTO
+};
+
+enum gfc_omp_default_sharing
+{
+ OMP_DEFAULT_UNKNOWN,
+ OMP_DEFAULT_NONE,
+ OMP_DEFAULT_PRIVATE,
+ OMP_DEFAULT_SHARED,
+ OMP_DEFAULT_FIRSTPRIVATE
+};
+
typedef struct gfc_omp_clauses
{
struct gfc_expr *if_expr;
struct gfc_expr *num_threads;
gfc_namelist *lists[OMP_LIST_NUM];
- enum
- {
- OMP_SCHED_NONE,
- OMP_SCHED_STATIC,
- OMP_SCHED_DYNAMIC,
- OMP_SCHED_GUIDED,
- OMP_SCHED_RUNTIME,
- OMP_SCHED_AUTO
- } sched_kind;
+ enum gfc_omp_sched_kind sched_kind;
struct gfc_expr *chunk_size;
- enum
- {
- OMP_DEFAULT_UNKNOWN,
- OMP_DEFAULT_NONE,
- OMP_DEFAULT_PRIVATE,
- OMP_DEFAULT_SHARED,
- OMP_DEFAULT_FIRSTPRIVATE
- } default_sharing;
+ enum gfc_omp_default_sharing default_sharing;
int collapse;
bool nowait, ordered, untied;
}
diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi
index af1d2961085..b7c8b82537c 100644
--- a/gcc/fortran/gfortran.texi
+++ b/gcc/fortran/gfortran.texi
@@ -1641,7 +1641,7 @@ code that uses them running with the GNU Fortran compiler.
* STRUCTURE and RECORD::
@c * UNION and MAP::
* ENCODE and DECODE statements::
-@c * Expressions in FORMAT statements::
+* Variable FORMAT expressions::
@c * Q edit descriptor::
@c * AUTOMATIC statement::
@c * TYPE and ACCEPT I/O Statements::
@@ -1779,6 +1779,51 @@ c ... Code that sets A, B and C
@end smallexample
+@node Variable FORMAT expressions
+@subsection Variable @code{FORMAT} expressions
+@cindex @code{FORMAT}
+
+A variable @code{FORMAT} expression is format statement which includes
+angle brackets enclosing a Fortran expression: @code{FORMAT(I<N>)}. GNU
+Fortran does not support this legacy extension. The effect of variable
+format expressions can be reproduced by using the more powerful (and
+standard) combination of internal output and string formats. For example,
+replace a code fragment like this:
+
+@smallexample
+ WRITE(6,20) INT1
+ 20 FORMAT(I<N+1>)
+@end smallexample
+
+@noindent
+with the following:
+
+@smallexample
+c Variable declaration
+ CHARACTER(LEN=20) F
+c
+c Other code here...
+c
+ WRITE(FMT,'("(I", I0, ")")') N+1
+ WRITE(6,FM) INT1
+@end smallexample
+
+@noindent
+or with:
+
+@smallexample
+c Variable declaration
+ CHARACTER(LEN=20) FMT
+c
+c Other code here...
+c
+ WRITE(FMT,*) N+1
+ WRITE(6,"(I" // ADJUSTL(FMT) // ")") INT1
+@end smallexample
+
+
+
+
@c ---------------------------------------------------------------------
@c Intrinsic Procedures
@c ---------------------------------------------------------------------
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
index 7676fa221e5..ca125a36335 100644
--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -836,13 +836,17 @@ gfc_is_intrinsic (gfc_symbol* sym, int subroutine_flag, locus loc)
/* See if this intrinsic is allowed in the current standard. */
if (gfc_check_intrinsic_standard (isym, &symstd, false, loc) == FAILURE)
{
- if (gfc_option.warn_intrinsics_std)
- gfc_warning_now ("The intrinsic '%s' at %L is not included in the"
- " selected standard but %s and '%s' will be treated as"
- " if declared EXTERNAL. Use an appropriate -std=*"
- " option or define -fall-intrinsics to allow this"
- " intrinsic.", sym->name, &loc, symstd, sym->name);
- sym->attr.external = 1;
+ if (sym->attr.proc == PROC_UNKNOWN)
+ {
+ if (gfc_option.warn_intrinsics_std)
+ gfc_warning_now ("The intrinsic '%s' at %L is not included in the"
+ " selected standard but %s and '%s' will be"
+ " treated as if declared EXTERNAL. Use an"
+ " appropriate -std=* option or define"
+ " -fall-intrinsics to allow this intrinsic.",
+ sym->name, &loc, symstd, sym->name);
+ gfc_add_external (&sym->attr, &loc);
+ }
return false;
}
diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi
index 8c9bfced1a5..c471521bd1c 100644
--- a/gcc/fortran/invoke.texi
+++ b/gcc/fortran/invoke.texi
@@ -166,7 +166,7 @@ and warnings}.
@gccoptlist{-fno-automatic -ff2c -fno-underscoring @gol
-fwhole-file -fsecond-underscore @gol
-fbounds-check -fcheck-array-temporaries -fmax-array-constructor =@var{n} @gol
--fcheck=@var{<all|bounds|array-temps>}
+-fcheck=@var{<all|array-temps|bounds|do|recursion>}
-fmax-stack-var-size=@var{n} @gol
-fpack-derived -frepack-arrays -fshort-enums -fexternal-blas @gol
-fblas-matmul-limit=@var{n} -frecursive -finit-local-zero @gol
@@ -259,6 +259,7 @@ the default width of @code{DOUBLE PRECISION} to 16 bytes if possible, unless
Allow @samp{$} as a valid non-first character in a symbol name. Symbols
that start with @samp{$} are rejected since it is unclear which rules to
apply to implicit typing as different vendors implement different rules.
+Using @samp{$} in @code{IMPLICIT} statements is also rejected.
@item -fbackslash
@opindex @code{backslash}
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index 7f4dba5dcee..4221c04573c 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -119,6 +119,20 @@ fixup_t;
/* Structure for holding extra info needed for pointers being read. */
+enum gfc_rsym_state
+{
+ UNUSED,
+ NEEDED,
+ USED
+};
+
+enum gfc_wsym_state
+{
+ UNREFERENCED = 0,
+ NEEDS_WRITE,
+ WRITTEN
+};
+
typedef struct pointer_info
{
BBT_HEADER (pointer_info);
@@ -138,9 +152,7 @@ typedef struct pointer_info
{
gfc_symbol *sym;
char true_name[GFC_MAX_SYMBOL_LEN + 1], module[GFC_MAX_SYMBOL_LEN + 1];
- enum
- { UNUSED, NEEDED, USED }
- state;
+ enum gfc_rsym_state state;
int ns, referenced, renamed;
module_locus where;
fixup_t *stfixup;
@@ -152,9 +164,7 @@ typedef struct pointer_info
struct
{
gfc_symbol *sym;
- enum
- { UNREFERENCED = 0, NEEDS_WRITE, WRITTEN }
- state;
+ enum gfc_wsym_state state;
}
wsym;
}
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index 59296b104fa..d387f543c94 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -1580,13 +1580,20 @@ unexpected_statement (gfc_statement st)
*/
+enum state_order
+{
+ ORDER_START,
+ ORDER_USE,
+ ORDER_IMPORT,
+ ORDER_IMPLICIT_NONE,
+ ORDER_IMPLICIT,
+ ORDER_SPEC,
+ ORDER_EXEC
+};
+
typedef struct
{
- enum
- { ORDER_START, ORDER_USE, ORDER_IMPORT, ORDER_IMPLICIT_NONE,
- ORDER_IMPLICIT, ORDER_SPEC, ORDER_EXEC
- }
- state;
+ enum state_order state;
gfc_statement last_statement;
locus where;
}
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index 47f4e0ce5b2..71db46d18b2 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -1263,10 +1263,11 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type,
gfc_init_se (&se, NULL);
gfc_conv_constant (&se, p->expr);
+ if (c->expr->ts.type != BT_CHARACTER)
+ se.expr = fold_convert (type, se.expr);
/* For constant character array constructors we build
an array of pointers. */
- if (p->expr->ts.type == BT_CHARACTER
- && POINTER_TYPE_P (type))
+ else if (POINTER_TYPE_P (type))
se.expr = gfc_build_addr_expr
(gfc_get_pchar_type (p->expr->ts.kind),
se.expr);
@@ -1620,7 +1621,9 @@ gfc_build_constant_array_constructor (gfc_expr * expr, tree type)
{
gfc_init_se (&se, NULL);
gfc_conv_constant (&se, c->expr);
- if (c->expr->ts.type == BT_CHARACTER && POINTER_TYPE_P (type))
+ if (c->expr->ts.type != BT_CHARACTER)
+ se.expr = fold_convert (type, se.expr);
+ else if (POINTER_TYPE_P (type))
se.expr = gfc_build_addr_expr (gfc_get_pchar_type (c->expr->ts.kind),
se.expr);
list = tree_cons (build_int_cst (gfc_array_index_type, nelem),
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 280a1922a8b..14f64c96ab8 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -1529,48 +1529,6 @@ conv_function_val (gfc_se * se, gfc_symbol * sym, gfc_expr * expr)
}
-/* Translate the call for an elemental subroutine call used in an operator
- assignment. This is a simplified version of gfc_conv_procedure_call. */
-
-tree
-gfc_conv_operator_assign (gfc_se *lse, gfc_se *rse, gfc_symbol *sym)
-{
- tree args;
- tree tmp;
- gfc_se se;
- stmtblock_t block;
-
- /* Only elemental subroutines with two arguments. */
- gcc_assert (sym->attr.elemental && sym->attr.subroutine);
- gcc_assert (sym->formal->next->next == NULL);
-
- gfc_init_block (&block);
-
- gfc_add_block_to_block (&block, &lse->pre);
- gfc_add_block_to_block (&block, &rse->pre);
-
- /* Build the argument list for the call, including hidden string lengths. */
- args = gfc_chainon_list (NULL_TREE, gfc_build_addr_expr (NULL_TREE, lse->expr));
- args = gfc_chainon_list (args, gfc_build_addr_expr (NULL_TREE, rse->expr));
- if (lse->string_length != NULL_TREE)
- args = gfc_chainon_list (args, lse->string_length);
- if (rse->string_length != NULL_TREE)
- args = gfc_chainon_list (args, rse->string_length);
-
- /* Build the function call. */
- gfc_init_se (&se, NULL);
- conv_function_val (&se, sym, NULL);
- tmp = TREE_TYPE (TREE_TYPE (TREE_TYPE (se.expr)));
- tmp = build_call_list (tmp, se.expr, args);
- gfc_add_expr_to_block (&block, tmp);
-
- gfc_add_block_to_block (&block, &lse->post);
- gfc_add_block_to_block (&block, &rse->post);
-
- return gfc_finish_block (&block);
-}
-
-
/* Initialize MAPPING. */
void
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c
index d695759477a..9bad071cd37 100644
--- a/gcc/fortran/trans-stmt.c
+++ b/gcc/fortran/trans-stmt.c
@@ -270,9 +270,11 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse,
gfc_conv_expr_descriptor (&parmse, e, gfc_walk_expr (e));
gfc_add_block_to_block (&se->pre, &parmse.pre);
- /* If we've got INTENT(INOUT), initialize the array temporary with
- a copy of the values. */
- if (fsym->attr.intent == INTENT_INOUT)
+ /* If we've got INTENT(INOUT) or a derived type with INTENT(OUT),
+ initialize the array temporary with a copy of the values. */
+ if (fsym->attr.intent == INTENT_INOUT
+ || (fsym->ts.type ==BT_DERIVED
+ && fsym->attr.intent == INTENT_OUT))
initial = parmse.expr;
else
initial = NULL_TREE;
@@ -332,12 +334,16 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse,
/* Translate the CALL statement. Builds a call to an F95 subroutine. */
tree
-gfc_trans_call (gfc_code * code, bool dependency_check)
+gfc_trans_call (gfc_code * code, bool dependency_check,
+ tree mask, tree count1, bool invert)
{
gfc_se se;
gfc_ss * ss;
int has_alternate_specifier;
gfc_dep_check check_variable;
+ tree index = NULL_TREE;
+ tree maskexpr = NULL_TREE;
+ tree tmp;
/* A CALL starts a new block because the actual arguments may have to
be evaluated first. */
@@ -429,10 +435,32 @@ gfc_trans_call (gfc_code * code, bool dependency_check)
gfc_start_scalarized_body (&loop, &body);
gfc_init_block (&block);
+ if (mask && count1)
+ {
+ /* Form the mask expression according to the mask. */
+ index = count1;
+ maskexpr = gfc_build_array_ref (mask, index, NULL);
+ if (invert)
+ maskexpr = fold_build1 (TRUTH_NOT_EXPR, TREE_TYPE (maskexpr),
+ maskexpr);
+ }
+
/* Add the subroutine call to the block. */
- gfc_conv_procedure_call (&loopse, code->resolved_sym, code->ext.actual,
- code->expr, NULL_TREE);
- gfc_add_expr_to_block (&loopse.pre, loopse.expr);
+ gfc_conv_procedure_call (&loopse, code->resolved_sym,
+ code->ext.actual, code->expr,
+ NULL_TREE);
+
+ if (mask && count1)
+ {
+ tmp = build3_v (COND_EXPR, maskexpr, loopse.expr,
+ build_empty_stmt ());
+ gfc_add_expr_to_block (&loopse.pre, tmp);
+ tmp = fold_build2 (PLUS_EXPR, gfc_array_index_type,
+ count1, gfc_index_one_node);
+ gfc_add_modify (&loopse.pre, count1, tmp);
+ }
+ else
+ gfc_add_expr_to_block (&loopse.pre, loopse.expr);
gfc_add_block_to_block (&block, &loopse.pre);
gfc_add_block_to_block (&block, &loopse.post);
@@ -3028,7 +3056,7 @@ gfc_trans_forall_1 (gfc_code * code, forall_info * nested_forall_info)
/* Explicit subroutine calls are prevented by the frontend but interface
assignments can legitimately produce them. */
case EXEC_ASSIGN_CALL:
- assign = gfc_trans_call (c, true);
+ assign = gfc_trans_call (c, true, NULL_TREE, NULL_TREE, false);
tmp = gfc_trans_nested_forall_loop (nested_forall_info, assign, 1);
gfc_add_expr_to_block (&block, tmp);
break;
@@ -3223,7 +3251,7 @@ static tree
gfc_trans_where_assign (gfc_expr *expr1, gfc_expr *expr2,
tree mask, bool invert,
tree count1, tree count2,
- gfc_symbol *sym)
+ gfc_code *cnext)
{
gfc_se lse;
gfc_se rse;
@@ -3237,6 +3265,10 @@ gfc_trans_where_assign (gfc_expr *expr1, gfc_expr *expr2,
stmtblock_t body;
tree index, maskexpr;
+ /* A defined assignment. */
+ if (cnext && cnext->resolved_sym)
+ return gfc_trans_call (cnext, true, mask, count1, invert);
+
#if 0
/* TODO: handle this special case.
Special case a single function returning an array. */
@@ -3338,11 +3370,8 @@ gfc_trans_where_assign (gfc_expr *expr1, gfc_expr *expr2,
maskexpr = fold_build1 (TRUTH_NOT_EXPR, TREE_TYPE (maskexpr), maskexpr);
/* Use the scalar assignment as is. */
- if (sym == NULL)
- tmp = gfc_trans_scalar_assign (&lse, &rse, expr1->ts,
- loop.temp_ss != NULL, false);
- else
- tmp = gfc_conv_operator_assign (&lse, &rse, sym);
+ tmp = gfc_trans_scalar_assign (&lse, &rse, expr1->ts,
+ loop.temp_ss != NULL, false);
tmp = build3_v (COND_EXPR, maskexpr, tmp, build_empty_stmt ());
@@ -3609,7 +3638,7 @@ gfc_trans_where_2 (gfc_code * code, tree mask, bool invert,
tmp = gfc_trans_where_assign (expr1, expr2,
cmask, invert,
count1, count2,
- cnext->resolved_sym);
+ cnext);
tmp = gfc_trans_nested_forall_loop (nested_forall_info,
tmp, 1);
@@ -3627,7 +3656,7 @@ gfc_trans_where_2 (gfc_code * code, tree mask, bool invert,
tmp = gfc_trans_where_assign (expr1, expr2,
cmask, invert,
count1, count2,
- cnext->resolved_sym);
+ cnext);
gfc_add_expr_to_block (block, tmp);
}
diff --git a/gcc/fortran/trans-stmt.h b/gcc/fortran/trans-stmt.h
index ff8a8384a4c..0b167b9f6fe 100644
--- a/gcc/fortran/trans-stmt.h
+++ b/gcc/fortran/trans-stmt.h
@@ -40,7 +40,7 @@ tree gfc_trans_goto (gfc_code *);
tree gfc_trans_entry (gfc_code *);
tree gfc_trans_pause (gfc_code *);
tree gfc_trans_stop (gfc_code *);
-tree gfc_trans_call (gfc_code *, bool);
+tree gfc_trans_call (gfc_code *, bool, tree, tree, bool);
tree gfc_trans_return (gfc_code *);
tree gfc_trans_if (gfc_code *);
tree gfc_trans_arithmetic_if (gfc_code *);
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 54d40d7c3e3..28cb60ab2ef 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -1111,16 +1111,19 @@ gfc_trans_code (gfc_code * code)
if (code->resolved_isym
&& code->resolved_isym->id == GFC_ISYM_MVBITS)
is_mvbits = true;
- res = gfc_trans_call (code, is_mvbits);
+ res = gfc_trans_call (code, is_mvbits, NULL_TREE,
+ NULL_TREE, false);
}
break;
case EXEC_CALL_PPC:
- res = gfc_trans_call (code, false);
+ res = gfc_trans_call (code, false, NULL_TREE,
+ NULL_TREE, false);
break;
case EXEC_ASSIGN_CALL:
- res = gfc_trans_call (code, true);
+ res = gfc_trans_call (code, true, NULL_TREE,
+ NULL_TREE, false);
break;
case EXEC_RETURN:
diff --git a/gcc/fortran/trans.h b/gcc/fortran/trans.h
index c75f40eb6fe..4846af245fd 100644
--- a/gcc/fortran/trans.h
+++ b/gcc/fortran/trans.h
@@ -310,9 +310,6 @@ void gfc_conv_intrinsic_function (gfc_se *, gfc_expr *);
/* Does an intrinsic map directly to an external library call. */
int gfc_is_intrinsic_libcall (gfc_expr *);
-/* Used to call the elemental subroutines used in operator assignments. */
-tree gfc_conv_operator_assign (gfc_se *, gfc_se *, gfc_symbol *);
-
/* Used to call ordinary functions/subroutines
and procedure pointer components. */
int gfc_conv_procedure_call (gfc_se *, gfc_symbol *, gfc_actual_arglist *,
diff --git a/gcc/fwprop.c b/gcc/fwprop.c
index 11c948f2127..669d03cc066 100644
--- a/gcc/fwprop.c
+++ b/gcc/fwprop.c
@@ -105,6 +105,111 @@ along with GCC; see the file COPYING3. If not see
static int num_changes;
+DEF_VEC_P(df_ref);
+DEF_VEC_ALLOC_P(df_ref,heap);
+VEC(df_ref,heap) *use_def_ref;
+
+
+/* Return the only def in USE's use-def chain, or NULL if there is
+ more than one def in the chain. */
+
+static inline df_ref
+get_def_for_use (df_ref use)
+{
+ return VEC_index (df_ref, use_def_ref, DF_REF_ID (use));
+}
+
+
+/* Return the only bit between FIRST and LAST that is set in B,
+ or -1 if there are zero or more than one such bits. */
+
+static inline int
+bitmap_only_bit_between (const_bitmap b, unsigned first, unsigned last)
+{
+ bitmap_iterator bi;
+ unsigned bit, bit2;
+
+ if (last < first)
+ return -1;
+
+ bmp_iter_set_init (&bi, b, first, &bit);
+ if (bmp_iter_set (&bi, &bit) && bit <= last)
+ {
+ bit2 = bit;
+ bmp_iter_next (&bi, &bit2);
+ if (!bmp_iter_set (&bi, &bit2) || bit2 > last)
+ return bit;
+ }
+ return -1;
+}
+
+
+/* Fill the use_def_ref vector with values for the uses in USE_REC,
+ taking reaching definitions info from LOCAL_RD. TOP_FLAG says
+ which artificials uses should be used, when USE_REC is an
+ artificial use vector. */
+
+static void
+process_uses (bitmap local_rd, df_ref *use_rec, int top_flag)
+{
+ df_ref use;
+ while ((use = *use_rec++) != NULL)
+ if (top_flag == (DF_REF_FLAGS (use) & DF_REF_AT_TOP))
+ {
+ unsigned int uregno = DF_REF_REGNO (use);
+ unsigned int first = DF_DEFS_BEGIN (uregno);
+ unsigned int last = first + DF_DEFS_COUNT (uregno) - 1;
+ int defno = bitmap_only_bit_between (local_rd, first, last);
+ df_ref def = (defno == -1) ? NULL : DF_DEFS_GET (defno);
+
+ VEC_replace (df_ref, use_def_ref, DF_REF_ID (use), def);
+ }
+}
+
+
+/* Do dataflow analysis and use reaching definitions to build
+ a vector holding the reaching definitions of uses that have a
+ single RD. */
+
+static void
+build_single_def_use_links (void)
+{
+ basic_block bb;
+ bitmap local_rd = BITMAP_ALLOC (NULL);
+
+ /* We use reaching definitions to compute our restricted use-def chains. */
+ df_set_flags (DF_EQ_NOTES);
+ df_rd_add_problem ();
+ df_analyze ();
+ df_maybe_reorganize_use_refs (DF_REF_ORDER_BY_INSN_WITH_NOTES);
+
+ use_def_ref = VEC_alloc (df_ref, heap, DF_USES_TABLE_SIZE ());
+ VEC_safe_grow (df_ref, heap, use_def_ref, DF_USES_TABLE_SIZE ());
+
+ FOR_EACH_BB (bb)
+ {
+ int bb_index = bb->index;
+ struct df_rd_bb_info *bb_info = df_rd_get_bb_info (bb_index);
+ rtx insn;
+
+ bitmap_copy (local_rd, bb_info->in);
+ process_uses (local_rd, df_get_artificial_uses (bb_index), DF_REF_AT_TOP);
+
+ df_rd_simulate_artificial_defs_at_top (bb, local_rd);
+ FOR_BB_INSNS (bb, insn)
+ if (INSN_P (insn))
+ {
+ unsigned int uid = INSN_UID (insn);
+ process_uses (local_rd, DF_INSN_UID_USES (uid), 0);
+ process_uses (local_rd, DF_INSN_UID_EQ_USES (uid), 0);
+ df_rd_simulate_one_insn (bb, insn, local_rd);
+ }
+
+ process_uses (local_rd, df_get_artificial_uses (bb_index), 0);
+ }
+
+ BITMAP_FREE (local_rd);
+}
/* Do not try to replace constant addresses or addresses of local and
argument slots. These MEM expressions are made only once and inserted
@@ -716,7 +821,8 @@ update_df (rtx insn, rtx *loc, df_ref *use_rec, enum df_ref_type type,
width, offset, mode);
/* Set up the use-def chain. */
- df_chain_copy (new_use, DF_REF_CHAIN (orig_use));
+ gcc_assert (DF_REF_ID (new_use) == (int) VEC_length (df_ref, use_def_ref));
+ VEC_safe_push (df_ref, heap, use_def_ref, get_def_for_use (orig_use));
changed = true;
}
if (changed)
@@ -1035,7 +1141,6 @@ forward_propagate_and_simplify (df_ref use, rtx def_insn, rtx def_set)
static void
forward_propagate_into (df_ref use)
{
- struct df_link *defs;
df_ref def;
rtx def_insn, def_set, use_insn;
rtx parent;
@@ -1046,11 +1151,9 @@ forward_propagate_into (df_ref use)
return;
/* Only consider uses that have a single definition. */
- defs = DF_REF_CHAIN (use);
- if (!defs || defs->next)
+ def = get_def_for_use (use);
+ if (!def)
return;
-
- def = defs->ref;
if (DF_REF_FLAGS (def) & DF_REF_READ_WRITE)
return;
if (DF_REF_IS_ARTIFICIAL (def))
@@ -1096,12 +1199,7 @@ fwprop_init (void)
insns (sadly) if we are not working in cfglayout mode. */
loop_optimizer_init (0);
- /* Now set up the dataflow problem (we only want use-def chains) and
- put the dataflow solver to work. */
- df_set_flags (DF_EQ_NOTES);
- df_chain_add_problem (DF_UD_CHAIN);
- df_analyze ();
- df_maybe_reorganize_use_refs (DF_REF_ORDER_BY_INSN_WITH_NOTES);
+ build_single_def_use_links ();
df_set_flags (DF_DEFER_INSN_RESCAN);
}
@@ -1110,6 +1208,7 @@ fwprop_done (void)
{
loop_optimizer_finalize ();
+ VEC_free (df_ref, heap, use_def_ref);
free_dominance_info (CDI_DOMINATORS);
cleanup_cfg (0);
delete_trivially_dead_insns (get_insns (), max_reg_num ());
@@ -1187,8 +1286,6 @@ fwprop_addr (void)
/* Go through all the uses. update_df will create new ones at the
end, and we'll go through them as well. */
- df_set_flags (DF_DEFER_INSN_RESCAN);
-
for (i = 0; i < DF_USES_TABLE_SIZE (); i++)
{
df_ref use = DF_USES_GET (i);
diff --git a/gcc/gcc.c b/gcc/gcc.c
index e89f3994adc..9168a3423d0 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -268,10 +268,12 @@ static const char *cross_compile = "0";
switch. The only case we support now is simply appending or deleting a
string to or from the end of the first part of the configuration name. */
+enum add_del {ADD, DELETE};
+
static const struct modify_target
{
const char *const sw;
- const enum add_del {ADD, DELETE} add_del;
+ const enum add_del add_del;
const char *const str;
}
modify_target[] = MODIFY_TARGET_NAME;
diff --git a/gcc/genrecog.c b/gcc/genrecog.c
index b52baca038e..9abb13fd75c 100644
--- a/gcc/genrecog.c
+++ b/gcc/genrecog.c
@@ -71,6 +71,17 @@ struct decision_head
struct decision *last;
};
+/* These types are roughly in the order in which we'd like to test them. */
+enum decision_type
+{
+ DT_num_insns,
+ DT_mode, DT_code, DT_veclen,
+ DT_elt_zero_int, DT_elt_one_int, DT_elt_zero_wide, DT_elt_zero_wide_safe,
+ DT_const_int,
+ DT_veclen_ge, DT_dup, DT_pred, DT_c_test,
+ DT_accept_op, DT_accept_insn
+};
+
/* A single test. The two accept types aren't tests per-se, but
their equality (or lack thereof) does affect tree merging so
it is convenient to keep them here. */
@@ -80,16 +91,7 @@ struct decision_test
/* A linked list through the tests attached to a node. */
struct decision_test *next;
- /* These types are roughly in the order in which we'd like to test them. */
- enum decision_type
- {
- DT_num_insns,
- DT_mode, DT_code, DT_veclen,
- DT_elt_zero_int, DT_elt_one_int, DT_elt_zero_wide, DT_elt_zero_wide_safe,
- DT_const_int,
- DT_veclen_ge, DT_dup, DT_pred, DT_c_test,
- DT_accept_op, DT_accept_insn
- } type;
+ enum decision_type type;
union
{
diff --git a/gcc/ggc-page.c b/gcc/ggc-page.c
index 0afe0d815dd..41cbd44c585 100644
--- a/gcc/ggc-page.c
+++ b/gcc/ggc-page.c
@@ -1,5 +1,5 @@
/* "Bag-of-pages" garbage collector for the GNU compiler.
- Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
@@ -2063,12 +2063,14 @@ ggc_print_statistics (void)
#endif
}
+struct ggc_pch_ondisk
+{
+ unsigned totals[NUM_ORDERS];
+};
+
struct ggc_pch_data
{
- struct ggc_pch_ondisk
- {
- unsigned totals[NUM_ORDERS];
- } d;
+ struct ggc_pch_ondisk d;
size_t base[NUM_ORDERS];
size_t written[NUM_ORDERS];
};
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 21dd8871e0a..d6390b089a9 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -186,34 +186,6 @@ ipcp_analyze_node (struct cgraph_node *node)
ipa_detect_param_modifications (node);
}
-/* Recompute all local information since node might've got new
- direct calls after cloning. */
-static void
-ipcp_update_cloned_node (struct cgraph_node *new_node)
-{
- /* We might've introduced new direct calls. */
- push_cfun (DECL_STRUCT_FUNCTION (new_node->decl));
- current_function_decl = new_node->decl;
- rebuild_cgraph_edges ();
-
- /* Indirect inlinng rely on fact that we've already analyzed
- the body.. */
- if (flag_indirect_inlining)
- {
- struct cgraph_edge *cs;
-
- ipcp_analyze_node (new_node);
-
- for (cs = new_node->callees; cs; cs = cs->next_callee)
- {
- ipa_count_arguments (cs);
- ipa_compute_jump_functions (cs);
- }
- }
- pop_cfun ();
- current_function_decl = NULL;
-}
-
/* Return scale for NODE. */
static inline gcov_type
ipcp_get_node_scale (struct cgraph_node *node)
@@ -756,98 +728,6 @@ ipcp_print_call_profile_counts (FILE * f)
}
}
-/* Print all counts and probabilities of cfg edges of all functions. */
-static void
-ipcp_print_edge_profiles (FILE * f)
-{
- struct cgraph_node *node;
- basic_block bb;
- edge_iterator ei;
- edge e;
-
- for (node = cgraph_nodes; node; node = node->next)
- {
- fprintf (f, "function %s: \n", cgraph_node_name (node));
- if (node->analyzed)
- {
- bb =
- ENTRY_BLOCK_PTR_FOR_FUNCTION (DECL_STRUCT_FUNCTION (node->decl));
- fprintf (f, "ENTRY: ");
- fprintf (f, " " HOST_WIDE_INT_PRINT_DEC
- " %d\n", (HOST_WIDE_INT) bb->count, bb->frequency);
-
- if (bb->succs)
- FOR_EACH_EDGE (e, ei, bb->succs)
- {
- if (e->dest ==
- EXIT_BLOCK_PTR_FOR_FUNCTION (DECL_STRUCT_FUNCTION
- (node->decl)))
- fprintf (f, "edge ENTRY -> EXIT, Count");
- else
- fprintf (f, "edge ENTRY -> %d, Count", e->dest->index);
- fprintf (f, " " HOST_WIDE_INT_PRINT_DEC
- " Prob %d\n", (HOST_WIDE_INT) e->count,
- e->probability);
- }
- FOR_EACH_BB_FN (bb, DECL_STRUCT_FUNCTION (node->decl))
- {
- fprintf (f, "bb[%d]: ", bb->index);
- fprintf (f, " " HOST_WIDE_INT_PRINT_DEC
- " %d\n", (HOST_WIDE_INT) bb->count, bb->frequency);
- FOR_EACH_EDGE (e, ei, bb->succs)
- {
- if (e->dest ==
- EXIT_BLOCK_PTR_FOR_FUNCTION (DECL_STRUCT_FUNCTION
- (node->decl)))
- fprintf (f, "edge %d -> EXIT, Count", e->src->index);
- else
- fprintf (f, "edge %d -> %d, Count", e->src->index,
- e->dest->index);
- fprintf (f, " " HOST_WIDE_INT_PRINT_DEC " Prob %d\n",
- (HOST_WIDE_INT) e->count, e->probability);
- }
- }
- }
- }
-}
-
-/* Print counts and frequencies for all basic blocks of all functions. */
-static void
-ipcp_print_bb_profiles (FILE * f)
-{
- basic_block bb;
- struct cgraph_node *node;
-
- for (node = cgraph_nodes; node; node = node->next)
- {
- fprintf (f, "function %s: \n", cgraph_node_name (node));
- if (node->analyzed)
- {
- bb =
- ENTRY_BLOCK_PTR_FOR_FUNCTION (DECL_STRUCT_FUNCTION (node->decl));
- fprintf (f, "ENTRY: Count");
- fprintf (f, " " HOST_WIDE_INT_PRINT_DEC
- " Frequency %d\n", (HOST_WIDE_INT) bb->count,
- bb->frequency);
-
- FOR_EACH_BB_FN (bb, DECL_STRUCT_FUNCTION (node->decl))
- {
- fprintf (f, "bb[%d]: Count", bb->index);
- fprintf (f, " " HOST_WIDE_INT_PRINT_DEC
- " Frequency %d\n", (HOST_WIDE_INT) bb->count,
- bb->frequency);
- }
- bb =
- EXIT_BLOCK_PTR_FOR_FUNCTION (DECL_STRUCT_FUNCTION (node->decl));
- fprintf (f, "EXIT: Count");
- fprintf (f, " " HOST_WIDE_INT_PRINT_DEC
- " Frequency %d\n", (HOST_WIDE_INT) bb->count,
- bb->frequency);
-
- }
- }
-}
-
/* Print profile info for all functions. */
static void
ipcp_print_profile_data (FILE * f)
@@ -856,10 +736,6 @@ ipcp_print_profile_data (FILE * f)
ipcp_print_func_profile_counts (f);
fprintf (f, "\nCS COUNTS stage:\n");
ipcp_print_call_profile_counts (f);
- fprintf (f, "\nBB COUNTS and FREQUENCIES :\n");
- ipcp_print_bb_profiles (f);
- fprintf (f, "\nCFG EDGES COUNTS and PROBABILITIES :\n");
- ipcp_print_edge_profiles (f);
}
/* Build and initialize ipa_replace_map struct according to LAT. This struct is
@@ -872,7 +748,7 @@ ipcp_create_replace_map (tree parm_tree, struct ipcp_lattice *lat)
struct ipa_replace_map *replace_map;
tree const_val;
- replace_map = XCNEW (struct ipa_replace_map);
+ replace_map = GGC_NEW (struct ipa_replace_map);
const_val = build_const_val (lat, TREE_TYPE (parm_tree));
if (dump_file)
{
@@ -959,25 +835,7 @@ ipcp_update_callgraph (void)
for (cs = node->callers; cs; cs = next)
{
next = cs->next_caller;
- if (ipcp_node_is_clone (cs->caller) || !ipcp_need_redirect_p (cs))
- {
- gimple new_stmt;
- gimple_stmt_iterator gsi;
-
- current_function_decl = cs->caller->decl;
- push_cfun (DECL_STRUCT_FUNCTION (cs->caller->decl));
-
- new_stmt = gimple_call_copy_skip_args (cs->call_stmt,
- args_to_skip);
- if (gimple_vdef (new_stmt))
- SSA_NAME_DEF_STMT (gimple_vdef (new_stmt)) = new_stmt;
- gsi = gsi_for_stmt (cs->call_stmt);
- gsi_replace (&gsi, new_stmt, true);
- cgraph_set_call_stmt (cs, new_stmt);
- pop_cfun ();
- current_function_decl = NULL;
- }
- else
+ if (!ipcp_node_is_clone (cs->caller) && ipcp_need_redirect_p (cs))
{
cgraph_redirect_edge_callee (cs, orig_node);
gimple_call_set_fndecl (cs->call_stmt, orig_node->decl);
@@ -986,29 +844,6 @@ ipcp_update_callgraph (void)
}
}
-/* Update all cfg basic blocks in NODE according to SCALE. */
-static void
-ipcp_update_bb_counts (struct cgraph_node *node, gcov_type scale)
-{
- basic_block bb;
-
- FOR_ALL_BB_FN (bb, DECL_STRUCT_FUNCTION (node->decl))
- bb->count = bb->count * scale / REG_BR_PROB_BASE;
-}
-
-/* Update all cfg edges in NODE according to SCALE. */
-static void
-ipcp_update_edges_counts (struct cgraph_node *node, gcov_type scale)
-{
- basic_block bb;
- edge_iterator ei;
- edge e;
-
- FOR_ALL_BB_FN (bb, DECL_STRUCT_FUNCTION (node->decl))
- FOR_EACH_EDGE (e, ei, bb->succs)
- e->count = e->count * scale / REG_BR_PROB_BASE;
-}
-
/* Update profiling info for versioned functions and the functions they were
versioned from. */
static void
@@ -1032,10 +867,6 @@ ipcp_update_profiling (void)
cs->count = cs->count * scale / REG_BR_PROB_BASE;
for (cs = orig_node->callees; cs; cs = cs->next_callee)
cs->count = cs->count * scale_complement / REG_BR_PROB_BASE;
- ipcp_update_bb_counts (node, scale);
- ipcp_update_bb_counts (orig_node, scale_complement);
- ipcp_update_edges_counts (node, scale);
- ipcp_update_edges_counts (orig_node, scale_complement);
}
}
}
@@ -1160,13 +991,13 @@ ipcp_insert_stage (void)
struct cgraph_node *node, *node1 = NULL;
int i;
VEC (cgraph_edge_p, heap) * redirect_callers;
- varray_type replace_trees;
+ VEC (ipa_replace_map_p,gc)* replace_trees;
int node_callers, count;
tree parm_tree;
struct ipa_replace_map *replace_param;
fibheap_t heap;
- long overall_insns = 0, new_insns = 0;
- long max_new_insns;
+ long overall_size = 0, new_size = 0;
+ long max_new_size;
ipa_check_create_node_params ();
ipa_check_create_edge_args ();
@@ -1180,13 +1011,13 @@ ipcp_insert_stage (void)
{
if (node->count > max_count)
max_count = node->count;
- overall_insns += node->local.inline_summary.self_insns;
+ overall_size += node->local.inline_summary.self_insns;
}
- max_new_insns = overall_insns;
- if (max_new_insns < PARAM_VALUE (PARAM_LARGE_UNIT_INSNS))
- max_new_insns = PARAM_VALUE (PARAM_LARGE_UNIT_INSNS);
- max_new_insns = max_new_insns * PARAM_VALUE (PARAM_IPCP_UNIT_GROWTH) / 100 + 1;
+ max_new_size = overall_size;
+ if (max_new_size < PARAM_VALUE (PARAM_LARGE_UNIT_INSNS))
+ max_new_size = PARAM_VALUE (PARAM_LARGE_UNIT_INSNS);
+ max_new_size = max_new_size * PARAM_VALUE (PARAM_IPCP_UNIT_GROWTH) / 100 + 1;
/* First collect all functions we proved to have constant arguments to heap. */
heap = fibheap_new ();
@@ -1220,7 +1051,7 @@ ipcp_insert_stage (void)
growth = ipcp_estimate_growth (node);
- if (new_insns + growth > max_new_insns)
+ if (new_size + growth > max_new_size)
break;
if (growth
&& optimize_function_for_size_p (DECL_STRUCT_FUNCTION (node->decl)))
@@ -1230,7 +1061,7 @@ ipcp_insert_stage (void)
continue;
}
- new_insns += growth;
+ new_size += growth;
/* Look if original function becomes dead after clonning. */
for (cs = node->callers; cs != NULL; cs = cs->next_caller)
@@ -1242,9 +1073,8 @@ ipcp_insert_stage (void)
info = IPA_NODE_REF (node);
count = ipa_get_param_count (info);
- VARRAY_GENERIC_PTR_INIT (replace_trees, ipcp_const_param_count (node),
- "replace_trees");
- args_to_skip = BITMAP_ALLOC (NULL);
+ replace_trees = VEC_alloc (ipa_replace_map_p, gc, 1);
+ args_to_skip = BITMAP_GGC_ALLOC ();
for (i = 0; i < count; i++)
{
struct ipcp_lattice *lat = ipcp_get_lattice (info, i);
@@ -1263,7 +1093,7 @@ ipcp_insert_stage (void)
{
replace_param =
ipcp_create_replace_map (parm_tree, lat);
- VARRAY_PUSH_GENERIC_PTR (replace_trees, replace_param);
+ VEC_safe_push (ipa_replace_map_p, gc, replace_trees, replace_param);
bitmap_set_bit (args_to_skip, i);
}
}
@@ -1279,20 +1109,20 @@ ipcp_insert_stage (void)
/* Redirecting all the callers of the node to the
new versioned node. */
node1 =
- cgraph_function_versioning (node, redirect_callers, replace_trees,
- args_to_skip);
- BITMAP_FREE (args_to_skip);
+ cgraph_create_virtual_clone (node, redirect_callers, replace_trees,
+ args_to_skip);
+ args_to_skip = NULL;
VEC_free (cgraph_edge_p, heap, redirect_callers);
- VARRAY_CLEAR (replace_trees);
+ replace_trees = NULL;
+
if (node1 == NULL)
continue;
if (dump_file)
fprintf (dump_file, "versioned function %s with growth %i, overall %i\n",
- cgraph_node_name (node), (int)growth, (int)new_insns);
+ cgraph_node_name (node), (int)growth, (int)new_size);
ipcp_init_cloned_node (node, node1);
- /* We've possibly introduced direct calls. */
- ipcp_update_cloned_node (node1);
+ /* TODO: We can use indirect inlning info to produce new calls. */
if (dump_file)
dump_function_to_file (node1->decl, dump_file, dump_flags);
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index 15612193ace..99640bfdb55 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -433,7 +433,7 @@ cgraph_default_inline_p (struct cgraph_node *n, cgraph_inline_failed_t *reason)
return false;
}
- if (!DECL_STRUCT_FUNCTION (decl)->cfg)
+ if (!n->analyzed)
{
if (reason)
*reason = CIF_BODY_NOT_AVAILABLE;
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index 88047e476b3..f4fa37d5a05 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -653,7 +653,7 @@ ipa_note_param_call (struct ipa_node_params *info, int formal_id,
note->formal_id = formal_id;
note->stmt = stmt;
note->count = bb->count;
- note->frequency = compute_call_stmt_bb_frequency (bb);
+ note->frequency = compute_call_stmt_bb_frequency (current_function_decl, bb);
note->next = info->param_calls;
info->param_calls = note;
diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h
index 5943a2af6f4..c4c1ccc162a 100644
--- a/gcc/ipa-prop.h
+++ b/gcc/ipa-prop.h
@@ -99,20 +99,6 @@ struct ipcp_lattice
tree constant;
};
-/* Represent which DECL tree (or reference to such tree)
- will be replaced by another tree while versioning. */
-struct ipa_replace_map
-{
- /* The tree that will be replaced. */
- tree old_tree;
- /* The new (replacing) tree. */
- tree new_tree;
- /* True when a substitution should be done, false otherwise. */
- bool replace_p;
- /* True when we replace a reference to old_tree. */
- bool ref_p;
-};
-
/* Each instance of the following structure describes a statement that calls a
function parameter. Those referring to statements within the same function
are linked in a list. */
diff --git a/gcc/ipa-struct-reorg.c b/gcc/ipa-struct-reorg.c
index 5b1670e0de1..6468d77f06a 100644
--- a/gcc/ipa-struct-reorg.c
+++ b/gcc/ipa-struct-reorg.c
@@ -3641,7 +3641,7 @@ do_reorg_1 (void)
bitmap_obstack_initialize (NULL);
for (node = cgraph_nodes; node; node = node->next)
- if (node->analyzed && node->decl && !node->next_clone)
+ if (node->analyzed && node->decl)
{
push_cfun (DECL_STRUCT_FUNCTION (node->decl));
current_function_decl = node->decl;
@@ -3809,8 +3809,7 @@ collect_data_accesses (void)
{
struct function *func = DECL_STRUCT_FUNCTION (c_node->decl);
- if (!c_node->next_clone)
- collect_accesses_in_func (func);
+ collect_accesses_in_func (func);
exclude_alloc_and_field_accs (c_node);
}
}
diff --git a/gcc/ipa.c b/gcc/ipa.c
index b486b93d34c..fb3c74992f6 100644
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -25,6 +25,7 @@ along with GCC; see the file COPYING3. If not see
#include "cgraph.h"
#include "tree-pass.h"
#include "timevar.h"
+#include "gimple.h"
#include "ggc.h"
/* Fill array order with all nodes with output flag set in the reverse
@@ -37,6 +38,7 @@ cgraph_postorder (struct cgraph_node **order)
int stack_size = 0;
int order_pos = 0;
struct cgraph_edge *edge, last;
+ int pass;
struct cgraph_node **stack =
XCNEWVEC (struct cgraph_node *, cgraph_n_nodes);
@@ -47,50 +49,67 @@ cgraph_postorder (struct cgraph_node **order)
right through inline functions. */
for (node = cgraph_nodes; node; node = node->next)
node->aux = NULL;
- for (node = cgraph_nodes; node; node = node->next)
- if (!node->aux)
- {
- node2 = node;
- if (!node->callers)
- node->aux = &last;
- else
- node->aux = node->callers;
- while (node2)
- {
- while (node2->aux != &last)
- {
- edge = (struct cgraph_edge *) node2->aux;
- if (edge->next_caller)
- node2->aux = edge->next_caller;
- else
- node2->aux = &last;
- if (!edge->caller->aux)
- {
- if (!edge->caller->callers)
- edge->caller->aux = &last;
- else
- edge->caller->aux = edge->caller->callers;
- stack[stack_size++] = node2;
- node2 = edge->caller;
- break;
- }
- }
- if (node2->aux == &last)
- {
- order[order_pos++] = node2;
- if (stack_size)
- node2 = stack[--stack_size];
- else
- node2 = NULL;
- }
- }
- }
+ for (pass = 0; pass < 2; pass++)
+ for (node = cgraph_nodes; node; node = node->next)
+ if (!node->aux
+ && (pass || (node->needed && !node->address_taken)))
+ {
+ node2 = node;
+ if (!node->callers)
+ node->aux = &last;
+ else
+ node->aux = node->callers;
+ while (node2)
+ {
+ while (node2->aux != &last)
+ {
+ edge = (struct cgraph_edge *) node2->aux;
+ if (edge->next_caller)
+ node2->aux = edge->next_caller;
+ else
+ node2->aux = &last;
+ if (!edge->caller->aux)
+ {
+ if (!edge->caller->callers)
+ edge->caller->aux = &last;
+ else
+ edge->caller->aux = edge->caller->callers;
+ stack[stack_size++] = node2;
+ node2 = edge->caller;
+ break;
+ }
+ }
+ if (node2->aux == &last)
+ {
+ order[order_pos++] = node2;
+ if (stack_size)
+ node2 = stack[--stack_size];
+ else
+ node2 = NULL;
+ }
+ }
+ }
free (stack);
for (node = cgraph_nodes; node; node = node->next)
node->aux = NULL;
return order_pos;
}
+/* Look for all functions inlined to NODE and update their inlined_to pointers
+ to INLINED_TO. */
+
+static void
+update_inlined_to_pointer (struct cgraph_node *node, struct cgraph_node *inlined_to)
+{
+ struct cgraph_edge *e;
+ for (e = node->callees; e; e = e->next_callee)
+ if (e->callee->global.inlined_to)
+ {
+ e->callee->global.inlined_to = inlined_to;
+ update_inlined_to_pointer (e->callee, inlined_to);
+ }
+}
+
/* Perform reachability analysis and reclaim all unreachable nodes.
If BEFORE_INLINING_P is true this function is called before inlining
decisions has been made. If BEFORE_INLINING_P is false this function also
@@ -143,6 +162,12 @@ cgraph_remove_unreachable_nodes (bool before_inlining_p, FILE *file)
e->callee->aux = first;
first = e->callee;
}
+ while (node->clone_of && !node->clone_of->aux && !gimple_has_body_p (node->decl))
+ {
+ node = node->clone_of;
+ node->aux = first;
+ first = node;
+ }
}
/* Remove unreachable nodes. Extern inline functions need special care;
@@ -168,25 +193,29 @@ cgraph_remove_unreachable_nodes (bool before_inlining_p, FILE *file)
{
struct cgraph_edge *e;
+ /* See if there is reachable caller. */
for (e = node->callers; e; e = e->next_caller)
if (e->caller->aux)
break;
+
+ /* If so, we need to keep node in the callgraph. */
if (e || node->needed)
{
struct cgraph_node *clone;
- for (clone = node->next_clone; clone;
- clone = clone->next_clone)
+ /* If there are still clones, we must keep body around.
+ Otherwise we can just remove the body but keep the clone. */
+ for (clone = node->clones; clone;
+ clone = clone->next_sibling_clone)
if (clone->aux)
break;
if (!clone)
{
cgraph_release_function_body (node);
+ cgraph_node_remove_callees (node);
node->analyzed = false;
+ node->local.inlinable = false;
}
- cgraph_node_remove_callees (node);
- node->analyzed = false;
- node->local.inlinable = false;
}
else
cgraph_remove_node (node);
@@ -195,7 +224,19 @@ cgraph_remove_unreachable_nodes (bool before_inlining_p, FILE *file)
}
}
for (node = cgraph_nodes; node; node = node->next)
- node->aux = NULL;
+ {
+ /* Inline clones might be kept around so their materializing allows further
+ cloning. If the function the clone is inlined into is removed, we need
+ to turn it into normal cone. */
+ if (node->global.inlined_to
+ && !node->callers)
+ {
+ gcc_assert (node->clones);
+ node->global.inlined_to = NULL;
+ update_inlined_to_pointer (node, node);
+ }
+ node->aux = NULL;
+ }
#ifdef ENABLE_CHECKING
verify_cgraph ();
#endif
diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c
index 82e18297e20..8c1e0e6202d 100644
--- a/gcc/loop-invariant.c
+++ b/gcc/loop-invariant.c
@@ -71,7 +71,7 @@ struct use
{
rtx *pos; /* Position of the use. */
rtx insn; /* The insn in that the use occurs. */
-
+ unsigned addr_use_p; /* Whether the use occurs in an address. */
struct use *next; /* Next use in the list. */
};
@@ -82,6 +82,7 @@ struct def
struct use *uses; /* The list of uses that are uniquely reached
by it. */
unsigned n_uses; /* Number of such uses. */
+ unsigned n_addr_uses; /* Number of uses in addresses. */
unsigned invno; /* The corresponding invariant. */
};
@@ -111,6 +112,9 @@ struct invariant
/* Whether to move the invariant. */
bool move;
+ /* Whether the invariant is cheap when used as an address. */
+ bool cheap_address;
+
/* Cost of the invariant. */
unsigned cost;
@@ -679,9 +683,16 @@ create_new_invariant (struct def *def, rtx insn, bitmap depends_on,
/* If the set is simple, usually by moving it we move the whole store out of
the loop. Otherwise we save only cost of the computation. */
if (def)
- inv->cost = rtx_cost (set, SET, speed);
+ {
+ inv->cost = rtx_cost (set, SET, speed);
+ inv->cheap_address = address_cost (SET_SRC (set), word_mode,
+ speed) < COSTS_N_INSNS (1);
+ }
else
- inv->cost = rtx_cost (SET_SRC (set), SET, speed);
+ {
+ inv->cost = rtx_cost (SET_SRC (set), SET, speed);
+ inv->cheap_address = false;
+ }
inv->move = false;
inv->reg = NULL_RTX;
@@ -708,17 +719,19 @@ create_new_invariant (struct def *def, rtx insn, bitmap depends_on,
/* Record USE at DEF. */
static void
-record_use (struct def *def, rtx *use, rtx insn)
+record_use (struct def *def, df_ref use)
{
struct use *u = XNEW (struct use);
- gcc_assert (REG_P (*use));
-
- u->pos = use;
- u->insn = insn;
+ u->pos = DF_REF_REAL_LOC (use);
+ u->insn = DF_REF_INSN (use);
+ u->addr_use_p = (DF_REF_TYPE (use) == DF_REF_REG_MEM_LOAD
+ || DF_REF_TYPE (use) == DF_REF_REG_MEM_STORE);
u->next = def->uses;
def->uses = u;
def->n_uses++;
+ if (u->addr_use_p)
+ def->n_addr_uses++;
}
/* Finds the invariants USE depends on and store them to the DEPENDS_ON
@@ -865,14 +878,14 @@ record_uses (rtx insn)
df_ref use = *use_rec;
inv = invariant_for_use (use);
if (inv)
- record_use (inv->def, DF_REF_REAL_LOC (use), DF_REF_INSN (use));
+ record_use (inv->def, use);
}
for (use_rec = DF_INSN_INFO_EQ_USES (insn_info); *use_rec; use_rec++)
{
df_ref use = *use_rec;
inv = invariant_for_use (use);
if (inv)
- record_use (inv->def, DF_REF_REAL_LOC (use), DF_REF_INSN (use));
+ record_use (inv->def, use);
}
}
@@ -992,7 +1005,9 @@ get_inv_cost (struct invariant *inv, int *comp_cost, unsigned *regs_needed)
inv->stamp = actual_stamp;
(*regs_needed)++;
- (*comp_cost) += inv->cost;
+ if (!inv->cheap_address
+ || inv->def->n_addr_uses < inv->def->n_uses)
+ (*comp_cost) += inv->cost;
#ifdef STACK_REGS
{
diff --git a/gcc/matrix-reorg.c b/gcc/matrix-reorg.c
index 9c5369417f2..7b8de0b8909 100644
--- a/gcc/matrix-reorg.c
+++ b/gcc/matrix-reorg.c
@@ -243,6 +243,14 @@ typedef struct access_site_info *access_site_info_p;
DEF_VEC_P (access_site_info_p);
DEF_VEC_ALLOC_P (access_site_info_p, heap);
+/* Calls to free when flattening a matrix. */
+
+struct free_info
+{
+ gimple stmt;
+ tree func;
+};
+
/* Information about matrix to flatten. */
struct matrix_info
{
@@ -275,11 +283,7 @@ struct matrix_info
tree allocation_function_decl;
/* The calls to free for each level of indirection. */
- struct free_info
- {
- gimple stmt;
- tree func;
- } *free_stmts;
+ struct free_info *free_stmts;
/* An array which holds for each dimension its size. where
dimension 0 is the outer most (one that contains all the others).
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index 5f5a4787caf..a1f0f242b4c 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,45 @@
+2009-05-10 Ian Lance Taylor <iant@google.com>
+
+ * objc-act.c (objc_building_struct): New static variable.
+ (objc_in_struct, objc_struct_types): New static variables.
+ (objc_start_struct, objc_finish_struct): New static functions.
+ (generate_struct_by_value_array): Call objc_start_struct instead
+ of start_struct, and call objc_finish_struct instead of
+ finish_struct.
+ (objc_build_struct, build_objc_symtab_template): Likewise.
+ (build_module_descriptor): Likewise.
+ (build_next_objc_exception_stuff): Likewise.
+ (build_protocol_template): Likewise.
+ (build_method_prototype_list_template): Likewise.
+ (build_method_prototype_template): Likewise.
+ (build_category_template, build_selector_template): Likewise.
+ (build_class_template, build_super_template): Likewise.
+ (build_ivar_template, build_ivar_list_template): Likewise.
+ (build_method_list_template): Likewise.
+ (build_method_template): Likewise.
+
+2009-05-10 Joseph Myers <joseph@codesourcery.com>
+
+ * objc-act.c: Include intl.h.
+ (objc_lookup_protocol): Use complete sentences for diagnostics
+ with %qE for identifiers and translating results of
+ gen_type_name_0 to locale character set.
+ (objc_check_decl, check_protocol_recursively,
+ lookup_and_install_protocols, objc_build_string_object,
+ objc_get_class_reference, objc_declare_alias, objc_declare_class,
+ objc_get_class_ivars, error_with_ivar, check_duplicates,
+ objc_finish_message_expr, objc_build_protocol_expr,
+ objc_build_selector_expr, build_ivar_reference, objc_add_method,
+ add_category, add_instance_variable, objc_is_public,
+ check_methods, check_methods_accessible, check_protocol,
+ start_class, finish_class, start_protocol, really_start_method,
+ get_super_receiver, objc_lookup_ivar): Use %E and %qE for
+ identifiers in diagnostics. Translate generated text to locale
+ character set as needed.
+ (check_protocol, check_protocols): Change name parameter to type
+ tree.
+ (lang_report_error_function): Remove.
+
2009-04-27 Ian Lance Taylor <iant@google.com>
* objc-act.c (objc_gimplify_expr): Add casts to enum type.
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index 741e344fd74..9bf7d3f0912 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -69,6 +69,7 @@ along with GCC; see the file COPYING3. If not see
#include "debug.h"
#include "target.h"
#include "diagnostic.h"
+#include "intl.h"
#include "cgraph.h"
#include "tree-iterator.h"
#include "libfuncs.h"
@@ -415,6 +416,35 @@ FILE *gen_declaration_file;
static int generating_instance_variables = 0;
+/* For building an objc struct. These may not be used when this file
+ is compiled as part of obj-c++. */
+
+static bool objc_building_struct;
+static bool objc_in_struct ATTRIBUTE_UNUSED;
+static VEC(tree,heap) *objc_struct_types ATTRIBUTE_UNUSED;
+
+/* Start building a struct for objc. */
+
+static tree
+objc_start_struct (tree name)
+{
+ gcc_assert (!objc_building_struct);
+ objc_building_struct = true;
+ return start_struct (RECORD_TYPE, name, &objc_in_struct, &objc_struct_types,
+ UNKNOWN_LOCATION);
+}
+
+/* Finish building a struct for objc. */
+
+static tree
+objc_finish_struct (tree type, tree fieldlist)
+{
+ gcc_assert (objc_building_struct);
+ objc_building_struct = false;
+ return finish_struct (type, fieldlist, NULL_TREE, objc_in_struct,
+ objc_struct_types);
+}
+
/* Some platforms pass small structures through registers versus
through an invisible pointer. Determine at what size structure is
the transition point between the two possibilities. */
@@ -434,7 +464,7 @@ generate_struct_by_value_array (void)
char buffer[5];
/* Create an unnamed struct that has `i' character components */
- type = start_struct (RECORD_TYPE, NULL_TREE);
+ type = objc_start_struct (NULL_TREE);
strcpy (buffer, "c1");
field_decl = create_field_decl (char_type_node,
@@ -448,7 +478,7 @@ generate_struct_by_value_array (void)
buffer);
chainon (field_decl_chain, field_decl);
}
- finish_struct (type, field_decl_chain, NULL_TREE);
+ objc_finish_struct (type, field_decl_chain);
aggregate_in_mem[i] = aggregate_value_p (type, 0);
if (!aggregate_in_mem[i])
@@ -788,7 +818,7 @@ static tree
objc_build_struct (tree klass, tree fields, tree super_name)
{
tree name = CLASS_NAME (klass);
- tree s = start_struct (RECORD_TYPE, name);
+ tree s = objc_start_struct (name);
tree super = (super_name ? xref_tag (RECORD_TYPE, super_name) : NULL_TREE);
tree t, objc_info = NULL_TREE;
@@ -849,7 +879,7 @@ objc_build_struct (tree klass, tree fields, tree super_name)
INIT_TYPE_OBJC_INFO (s);
TYPE_OBJC_INTERFACE (s) = klass;
- s = finish_struct (s, fields, NULL_TREE);
+ s = objc_finish_struct (s, fields);
for (t = TYPE_NEXT_VARIANT (s); t;
t = TYPE_NEXT_VARIANT (t), objc_info = TREE_CHAIN (objc_info))
@@ -980,17 +1010,17 @@ objc_lookup_protocol (tree proto, tree cls, tree typ, bool warn)
if (warn)
{
- strcpy (errbuf, class_type ? "class \'" : "type \'");
+ *errbuf = 0;
gen_type_name_0 (class_type ? typ : TYPE_POINTER_TO (typ));
- strcat (errbuf, "\' does not ");
/* NB: Types 'id' and 'Class' cannot reasonably be described as
"implementing" a given protocol, since they do not have an
implementation. */
- strcat (errbuf, class_type ? "implement" : "conform to");
- strcat (errbuf, " the \'");
- strcat (errbuf, IDENTIFIER_POINTER (PROTOCOL_NAME (proto)));
- strcat (errbuf, "\' protocol");
- warning (0, errbuf);
+ if (class_type)
+ warning (0, "class %qs does not implement the %qE protocol",
+ identifier_to_locale (errbuf), PROTOCOL_NAME (proto));
+ else
+ warning (0, "type %qs does not conform to the %qE protocol",
+ identifier_to_locale (errbuf), PROTOCOL_NAME (proto));
}
return false;
@@ -1338,8 +1368,8 @@ objc_check_decl (tree decl)
if (TREE_CODE (type) != RECORD_TYPE)
return;
if (OBJC_TYPE_NAME (type) && (type = objc_is_class_name (OBJC_TYPE_NAME (type))))
- error ("statically allocated instance of Objective-C class %qs",
- IDENTIFIER_POINTER (type));
+ error ("statically allocated instance of Objective-C class %qE",
+ type);
}
/* Construct a PROTOCOLS-qualified variant of INTERFACE, where INTERFACE may
@@ -1415,8 +1445,8 @@ check_protocol_recursively (tree proto, tree list)
pp = lookup_protocol (pp);
if (pp == proto)
- fatal_error ("protocol %qs has circular dependency",
- IDENTIFIER_POINTER (PROTOCOL_NAME (pp)));
+ fatal_error ("protocol %qE has circular dependency",
+ PROTOCOL_NAME (pp));
if (pp)
check_protocol_recursively (proto, PROTOCOL_LIST (pp));
}
@@ -1440,8 +1470,8 @@ lookup_and_install_protocols (tree protocols)
return_value = chainon (return_value,
build_tree_list (NULL_TREE, p));
else if (ident != error_mark_node)
- error ("cannot find protocol declaration for %qs",
- IDENTIFIER_POINTER (ident));
+ error ("cannot find protocol declaration for %qE",
+ ident);
}
return return_value;
@@ -1904,17 +1934,17 @@ objc_build_string_object (tree string)
if (!constant_string_class
|| !(constant_string_type
= CLASS_STATIC_TEMPLATE (constant_string_class)))
- error ("cannot find interface declaration for %qs",
- IDENTIFIER_POINTER (constant_string_id));
+ error ("cannot find interface declaration for %qE",
+ constant_string_id);
/* The NSConstantString/NXConstantString ivar layout is now known. */
else if (!check_string_class_template ())
- error ("interface %qs does not have valid constant string layout",
- IDENTIFIER_POINTER (constant_string_id));
+ error ("interface %qE does not have valid constant string layout",
+ constant_string_id);
/* For the NeXT runtime, we can generate a literal reference
to the string class, don't need to run a constructor. */
else if (flag_next_runtime && !setup_string_decl ())
- error ("cannot find reference tag for class %qs",
- IDENTIFIER_POINTER (constant_string_id));
+ error ("cannot find reference tag for class %qE",
+ constant_string_id);
else
{
string_layout_checked = 1; /* Success! */
@@ -2057,8 +2087,7 @@ build_objc_symtab_template (void)
{
tree field_decl, field_decl_chain;
- objc_symtab_template
- = start_struct (RECORD_TYPE, get_identifier (UTAG_SYMTAB));
+ objc_symtab_template = objc_start_struct (get_identifier (UTAG_SYMTAB));
/* long sel_ref_cnt; */
field_decl = create_field_decl (long_integer_type_node, "sel_ref_cnt");
@@ -2092,7 +2121,7 @@ build_objc_symtab_template (void)
chainon (field_decl_chain, field_decl);
}
- finish_struct (objc_symtab_template, field_decl_chain, NULL_TREE);
+ objc_finish_struct (objc_symtab_template, field_decl_chain);
}
/* Create the initial value for the `defs' field of _objc_symtab.
@@ -2292,8 +2321,7 @@ build_module_descriptor (void)
push_lang_context (lang_name_c); /* extern "C" */
#endif
- objc_module_template
- = start_struct (RECORD_TYPE, get_identifier (UTAG_MODULE));
+ objc_module_template = objc_start_struct (get_identifier (UTAG_MODULE));
/* long version; */
field_decl = create_field_decl (long_integer_type_node, "version");
@@ -2315,7 +2343,7 @@ build_module_descriptor (void)
"symtab");
chainon (field_decl_chain, field_decl);
- finish_struct (objc_module_template, field_decl_chain, NULL_TREE);
+ objc_finish_struct (objc_module_template, field_decl_chain);
/* Create an instance of "_objc_module". */
UOBJC_MODULES_decl = start_var_decl (objc_module_template, "_OBJC_MODULES");
@@ -2753,8 +2781,8 @@ objc_get_class_reference (tree ident)
if (local_scope || !(ident = objc_is_class_name (ident)))
{
- error ("%qs is not an Objective-C class name or alias",
- IDENTIFIER_POINTER (orig_ident));
+ error ("%qE is not an Objective-C class name or alias",
+ orig_ident);
return error_mark_node;
}
@@ -2886,9 +2914,9 @@ objc_declare_alias (tree alias_ident, tree class_ident)
#endif /* OBJCPLUS */
if (!(underlying_class = objc_is_class_name (class_ident)))
- warning (0, "cannot find class %qs", IDENTIFIER_POINTER (class_ident));
+ warning (0, "cannot find class %qE", class_ident);
else if (objc_is_class_name (alias_ident))
- warning (0, "class %qs already exists", IDENTIFIER_POINTER (alias_ident));
+ warning (0, "class %qE already exists", alias_ident);
else
{
/* Implement @compatibility_alias as a typedef. */
@@ -2932,8 +2960,8 @@ objc_declare_class (tree ident_list)
if (!TYPE_HAS_OBJC_INFO (type)
|| !TYPE_OBJC_INTERFACE (type))
{
- error ("%qs redeclared as different kind of symbol",
- IDENTIFIER_POINTER (ident));
+ error ("%qE redeclared as different kind of symbol",
+ ident);
error ("previous declaration of %q+D",
record);
}
@@ -3354,8 +3382,8 @@ objc_get_class_ivars (tree class_name)
if (interface)
return get_class_ivars (interface, true);
- error ("cannot find interface declaration for %qs",
- IDENTIFIER_POINTER (class_name));
+ error ("cannot find interface declaration for %qE",
+ class_name);
return error_mark_node;
}
@@ -3993,7 +4021,7 @@ build_next_objc_exception_stuff (void)
tree field_decl, field_decl_chain, index, temp_type;
objc_exception_data_template
- = start_struct (RECORD_TYPE, get_identifier (UTAG_EXCDATA));
+ = objc_start_struct (get_identifier (UTAG_EXCDATA));
/* int buf[OBJC_JBLEN]; */
@@ -4009,7 +4037,7 @@ build_next_objc_exception_stuff (void)
"pointers");
chainon (field_decl_chain, field_decl);
- finish_struct (objc_exception_data_template, field_decl_chain, NULL_TREE);
+ objc_finish_struct (objc_exception_data_template, field_decl_chain);
/* int _setjmp(...); */
/* If the user includes <setjmp.h>, this shall be superseded by
@@ -4156,8 +4184,7 @@ build_protocol_template (void)
{
tree field_decl, field_decl_chain;
- objc_protocol_template = start_struct (RECORD_TYPE,
- get_identifier (UTAG_PROTOCOL));
+ objc_protocol_template = objc_start_struct (get_identifier (UTAG_PROTOCOL));
/* struct _objc_class *isa; */
field_decl = create_field_decl (build_pointer_type
@@ -4187,7 +4214,7 @@ build_protocol_template (void)
"class_methods");
chainon (field_decl_chain, field_decl);
- finish_struct (objc_protocol_template, field_decl_chain, NULL_TREE);
+ objc_finish_struct (objc_protocol_template, field_decl_chain);
}
static tree
@@ -4237,7 +4264,7 @@ build_method_prototype_list_template (tree list_type, int size)
/* Generate an unnamed struct definition. */
- objc_ivar_list_record = start_struct (RECORD_TYPE, NULL_TREE);
+ objc_ivar_list_record = objc_start_struct (NULL_TREE);
/* int method_count; */
field_decl = create_field_decl (integer_type_node, "method_count");
@@ -4251,7 +4278,7 @@ build_method_prototype_list_template (tree list_type, int size)
"method_list");
chainon (field_decl_chain, field_decl);
- finish_struct (objc_ivar_list_record, field_decl_chain, NULL_TREE);
+ objc_finish_struct (objc_ivar_list_record, field_decl_chain);
return objc_ivar_list_record;
}
@@ -4262,8 +4289,7 @@ build_method_prototype_template (void)
tree proto_record;
tree field_decl, field_decl_chain;
- proto_record
- = start_struct (RECORD_TYPE, get_identifier (UTAG_METHOD_PROTOTYPE));
+ proto_record = objc_start_struct (get_identifier (UTAG_METHOD_PROTOTYPE));
/* SEL _cmd; */
field_decl = create_field_decl (objc_selector_type, "_cmd");
@@ -4273,7 +4299,7 @@ build_method_prototype_template (void)
field_decl = create_field_decl (string_type_node, "method_types");
chainon (field_decl_chain, field_decl);
- finish_struct (proto_record, field_decl_chain, NULL_TREE);
+ objc_finish_struct (proto_record, field_decl_chain);
return proto_record;
}
@@ -4758,8 +4784,7 @@ build_category_template (void)
{
tree field_decl, field_decl_chain;
- objc_category_template = start_struct (RECORD_TYPE,
- get_identifier (UTAG_CATEGORY));
+ objc_category_template = objc_start_struct (get_identifier (UTAG_CATEGORY));
/* char *category_name; */
field_decl = create_field_decl (string_type_node, "category_name");
@@ -4786,7 +4811,7 @@ build_category_template (void)
"protocol_list");
chainon (field_decl_chain, field_decl);
- finish_struct (objc_category_template, field_decl_chain, NULL_TREE);
+ objc_finish_struct (objc_category_template, field_decl_chain);
}
/* struct _objc_selector {
@@ -4797,11 +4822,9 @@ build_category_template (void)
static void
build_selector_template (void)
{
-
tree field_decl, field_decl_chain;
- objc_selector_template
- = start_struct (RECORD_TYPE, get_identifier (UTAG_SELECTOR));
+ objc_selector_template = objc_start_struct (get_identifier (UTAG_SELECTOR));
/* SEL sel_id; */
field_decl = create_field_decl (objc_selector_type, "sel_id");
@@ -4811,7 +4834,7 @@ build_selector_template (void)
field_decl = create_field_decl (string_type_node, "sel_type");
chainon (field_decl_chain, field_decl);
- finish_struct (objc_selector_template, field_decl_chain, NULL_TREE);
+ objc_finish_struct (objc_selector_template, field_decl_chain);
}
/* struct _objc_class {
@@ -4847,8 +4870,7 @@ build_class_template (void)
{
tree field_decl, field_decl_chain;
- objc_class_template
- = start_struct (RECORD_TYPE, get_identifier (UTAG_CLASS));
+ objc_class_template = objc_start_struct (get_identifier (UTAG_CLASS));
/* struct _objc_class *isa; */
field_decl = create_field_decl (build_pointer_type (objc_class_template),
@@ -4941,7 +4963,7 @@ build_class_template (void)
"gc_object_type");
chainon (field_decl_chain, field_decl);
- finish_struct (objc_class_template, field_decl_chain, NULL_TREE);
+ objc_finish_struct (objc_class_template, field_decl_chain);
}
/* Generate appropriate forward declarations for an implementation. */
@@ -4970,7 +4992,7 @@ static void
error_with_ivar (const char *message, tree decl)
{
error ("%J%s %qs", decl,
- message, gen_declaration (decl));
+ message, identifier_to_locale (gen_declaration (decl)));
}
@@ -5042,7 +5064,7 @@ build_super_template (void)
{
tree field_decl, field_decl_chain;
- objc_super_template = start_struct (RECORD_TYPE, get_identifier (UTAG_SUPER));
+ objc_super_template = objc_start_struct (get_identifier (UTAG_SUPER));
/* struct _objc_object *self; */
field_decl = create_field_decl (objc_object_type, "self");
@@ -5053,7 +5075,7 @@ build_super_template (void)
"super_class");
chainon (field_decl_chain, field_decl);
- finish_struct (objc_super_template, field_decl_chain, NULL_TREE);
+ objc_finish_struct (objc_super_template, field_decl_chain);
}
/* struct _objc_ivar {
@@ -5069,7 +5091,7 @@ build_ivar_template (void)
tree field_decl, field_decl_chain;
objc_ivar_id = get_identifier (UTAG_IVAR);
- objc_ivar_record = start_struct (RECORD_TYPE, objc_ivar_id);
+ objc_ivar_record = objc_start_struct (objc_ivar_id);
/* char *ivar_name; */
field_decl = create_field_decl (string_type_node, "ivar_name");
@@ -5083,7 +5105,7 @@ build_ivar_template (void)
field_decl = create_field_decl (integer_type_node, "ivar_offset");
chainon (field_decl_chain, field_decl);
- finish_struct (objc_ivar_record, field_decl_chain, NULL_TREE);
+ objc_finish_struct (objc_ivar_record, field_decl_chain);
return objc_ivar_record;
}
@@ -5099,7 +5121,7 @@ build_ivar_list_template (tree list_type, int size)
tree objc_ivar_list_record;
tree field_decl, field_decl_chain;
- objc_ivar_list_record = start_struct (RECORD_TYPE, NULL_TREE);
+ objc_ivar_list_record = objc_start_struct (NULL_TREE);
/* int ivar_count; */
field_decl = create_field_decl (integer_type_node, "ivar_count");
@@ -5113,7 +5135,7 @@ build_ivar_list_template (tree list_type, int size)
"ivar_list");
chainon (field_decl_chain, field_decl);
- finish_struct (objc_ivar_list_record, field_decl_chain, NULL_TREE);
+ objc_finish_struct (objc_ivar_list_record, field_decl_chain);
return objc_ivar_list_record;
}
@@ -5130,7 +5152,7 @@ build_method_list_template (tree list_type, int size)
tree objc_ivar_list_record;
tree field_decl, field_decl_chain;
- objc_ivar_list_record = start_struct (RECORD_TYPE, NULL_TREE);
+ objc_ivar_list_record = objc_start_struct (NULL_TREE);
/* struct _objc__method_prototype_list *method_next; */
field_decl = create_field_decl (objc_method_proto_list_ptr,
@@ -5149,7 +5171,7 @@ build_method_list_template (tree list_type, int size)
"method_list");
chainon (field_decl_chain, field_decl);
- finish_struct (objc_ivar_list_record, field_decl_chain, NULL_TREE);
+ objc_finish_struct (objc_ivar_list_record, field_decl_chain);
return objc_ivar_list_record;
}
@@ -5337,7 +5359,7 @@ build_method_template (void)
tree _SLT_record;
tree field_decl, field_decl_chain;
- _SLT_record = start_struct (RECORD_TYPE, get_identifier (UTAG_METHOD));
+ _SLT_record = objc_start_struct (get_identifier (UTAG_METHOD));
/* SEL _cmd; */
field_decl = create_field_decl (objc_selector_type, "_cmd");
@@ -5352,7 +5374,7 @@ build_method_template (void)
"_imp");
chainon (field_decl_chain, field_decl);
- finish_struct (_SLT_record, field_decl_chain, NULL_TREE);
+ objc_finish_struct (_SLT_record, field_decl_chain);
return _SLT_record;
}
@@ -6103,23 +6125,23 @@ check_duplicates (hash hsh, int methods, int is_class)
{
bool type = TREE_CODE (meth) == INSTANCE_METHOD_DECL;
- warning (0, "multiple methods named %<%c%s%> found",
+ warning (0, "multiple methods named %<%c%E%> found",
(is_class ? '+' : '-'),
- IDENTIFIER_POINTER (METHOD_SEL_NAME (meth)));
+ METHOD_SEL_NAME (meth));
inform (0, "%Jusing %<%c%s%>", meth,
(type ? '-' : '+'),
- gen_method_decl (meth));
+ identifier_to_locale (gen_method_decl (meth)));
}
else
{
bool type = TREE_CODE (meth) == INSTANCE_METHOD_DECL;
- warning (0, "multiple selectors named %<%c%s%> found",
+ warning (0, "multiple selectors named %<%c%E%> found",
(is_class ? '+' : '-'),
- IDENTIFIER_POINTER (METHOD_SEL_NAME (meth)));
+ METHOD_SEL_NAME (meth));
inform (0, "%Jfound %<%c%s%>", meth,
(type ? '-' : '+'),
- gen_method_decl (meth));
+ identifier_to_locale (gen_method_decl (meth)));
}
for (loop = hsh->list; loop; loop = loop->next)
@@ -6128,7 +6150,7 @@ check_duplicates (hash hsh, int methods, int is_class)
inform (0, "%Jalso found %<%c%s%>", loop->value,
(type ? '-' : '+'),
- gen_method_decl (loop->value));
+ identifier_to_locale (gen_method_decl (loop->value)));
}
}
}
@@ -6340,8 +6362,8 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params)
{
if (!CLASS_SUPER_NAME (implementation_template))
{
- error ("no super class declared in @interface for %qs",
- IDENTIFIER_POINTER (CLASS_NAME (implementation_template)));
+ error ("no super class declared in @interface for %qE",
+ CLASS_NAME (implementation_template));
return error_mark_node;
}
rtype = lookup_interface (CLASS_SUPER_NAME (implementation_template));
@@ -6378,9 +6400,8 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params)
= lookup_method_in_protocol_list (rprotos, sel_name, 0);
if (method_prototype)
- warning (0, "found %<-%s%> instead of %<+%s%> in protocol(s)",
- IDENTIFIER_POINTER (sel_name),
- IDENTIFIER_POINTER (sel_name));
+ warning (0, "found %<-%E%> instead of %<+%E%> in protocol(s)",
+ sel_name, sel_name);
}
}
}
@@ -6438,7 +6459,7 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params)
else
{
warning (0, "invalid receiver type %qs",
- gen_type_name (orig_rtype));
+ identifier_to_locale (gen_type_name (orig_rtype)));
/* After issuing the "invalid receiver" warning, perform method
lookup as if we were messaging 'id'. */
rtype = rprotos = NULL_TREE;
@@ -6452,9 +6473,9 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params)
if (!method_prototype)
{
if (rprotos)
- warning (0, "%<%c%s%> not found in protocol(s)",
+ warning (0, "%<%c%E%> not found in protocol(s)",
(class_tree ? '+' : '-'),
- IDENTIFIER_POINTER (sel_name));
+ sel_name);
if (!rtype)
method_prototype
@@ -6466,17 +6487,17 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params)
static bool warn_missing_methods = false;
if (rtype)
- warning (0, "%qs may not respond to %<%c%s%>",
- IDENTIFIER_POINTER (OBJC_TYPE_NAME (rtype)),
+ warning (0, "%qE may not respond to %<%c%E%>",
+ OBJC_TYPE_NAME (rtype),
(class_tree ? '+' : '-'),
- IDENTIFIER_POINTER (sel_name));
+ sel_name);
/* If we are messaging an 'id' or 'Class' object and made it here,
then we have failed to find _any_ instance or class method,
respectively. */
else
- warning (0, "no %<%c%s%> method found",
+ warning (0, "no %<%c%E%> method found",
(class_tree ? '+' : '-'),
- IDENTIFIER_POINTER (sel_name));
+ sel_name);
if (!warn_missing_methods)
{
@@ -6616,8 +6637,8 @@ objc_build_protocol_expr (tree protoname)
if (!p)
{
- error ("cannot find protocol declaration for %qs",
- IDENTIFIER_POINTER (protoname));
+ error ("cannot find protocol declaration for %qE",
+ protoname);
return error_mark_node;
}
@@ -6716,7 +6737,7 @@ objc_build_selector_expr (tree selnamelist)
/* If still not found, print out a warning. */
if (!hsh)
{
- warning (0, "undeclared selector %qs", IDENTIFIER_POINTER (selname));
+ warning (0, "undeclared selector %qE", selname);
}
}
@@ -6758,8 +6779,8 @@ build_ivar_reference (tree id)
to an instance variable. It's better to catch the cases
where this is done unknowingly than to support the above
paradigm. */
- warning (0, "instance variable %qs accessed in class method",
- IDENTIFIER_POINTER (id));
+ warning (0, "instance variable %qE accessed in class method",
+ id);
self_decl = convert (objc_instance_type, self_decl); /* cast */
}
@@ -6992,9 +7013,9 @@ objc_add_method (tree klass, tree method, int is_class)
if ((TREE_CODE (klass) == CLASS_INTERFACE_TYPE
|| TREE_CODE (klass) == CATEGORY_INTERFACE_TYPE)
&& !comp_proto_with_proto (method, mth, 1))
- error ("duplicate declaration of method %<%c%s%>",
+ error ("duplicate declaration of method %<%c%E%>",
is_class ? '+' : '-',
- IDENTIFIER_POINTER (METHOD_SEL_NAME (mth)));
+ METHOD_SEL_NAME (mth));
}
if (is_class)
@@ -7053,9 +7074,9 @@ add_category (tree klass, tree category)
if (cat)
{
- warning (0, "duplicate interface declaration for category %<%s(%s)%>",
- IDENTIFIER_POINTER (CLASS_NAME (klass)),
- IDENTIFIER_POINTER (CLASS_SUPER_NAME (category)));
+ warning (0, "duplicate interface declaration for category %<%E(%E)%>",
+ CLASS_NAME (klass),
+ CLASS_SUPER_NAME (category));
}
else
{
@@ -7074,8 +7095,8 @@ add_instance_variable (tree klass, int visibility, tree field_decl)
{
tree field_type = TREE_TYPE (field_decl);
const char *ivar_name = DECL_NAME (field_decl)
- ? IDENTIFIER_POINTER (DECL_NAME (field_decl))
- : "<unnamed>";
+ ? identifier_to_locale (IDENTIFIER_POINTER (DECL_NAME (field_decl)))
+ : _("<unnamed>");
#ifdef OBJCPLUS
if (TREE_CODE (field_type) == REFERENCE_TYPE)
@@ -7106,7 +7127,7 @@ add_instance_variable (tree klass, int visibility, tree field_decl)
|| TYPE_HAS_NONTRIVIAL_DESTRUCTOR (field_type)
|| TYPE_POLYMORPHIC_P (field_type)))
{
- const char *type_name = IDENTIFIER_POINTER (OBJC_TYPE_NAME (field_type));
+ tree type_name = OBJC_TYPE_NAME (field_type);
if (flag_objc_call_cxx_cdtors)
{
@@ -7116,13 +7137,13 @@ add_instance_variable (tree klass, int visibility, tree field_decl)
if (TYPE_NEEDS_CONSTRUCTING (field_type)
&& !TYPE_HAS_DEFAULT_CONSTRUCTOR (field_type))
{
- warning (0, "type %qs has no default constructor to call",
+ warning (0, "type %qE has no default constructor to call",
type_name);
/* If we cannot call a constructor, we should also avoid
calling the destructor, for symmetry. */
if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (field_type))
- warning (0, "destructor for %qs shall not be run either",
+ warning (0, "destructor for %qE shall not be run either",
type_name);
}
}
@@ -7134,8 +7155,8 @@ add_instance_variable (tree klass, int visibility, tree field_decl)
{
/* Vtable pointers are Real Bad(tm), since Obj-C cannot
initialize them. */
- error ("type %qs has virtual member functions", type_name);
- error ("illegal aggregate type %qs specified "
+ error ("type %qE has virtual member functions", type_name);
+ error ("illegal aggregate type %qE specified "
"for instance variable %qs",
type_name, ivar_name);
/* Return class as is without adding this ivar. */
@@ -7145,9 +7166,9 @@ add_instance_variable (tree klass, int visibility, tree field_decl)
/* User-defined constructors and destructors are not known to Obj-C
and hence will not be called. This may or may not be a problem. */
if (TYPE_NEEDS_CONSTRUCTING (field_type))
- warning (0, "type %qs has a user-defined constructor", type_name);
+ warning (0, "type %qE has a user-defined constructor", type_name);
if (TYPE_HAS_NONTRIVIAL_DESTRUCTOR (field_type))
- warning (0, "type %qs has a user-defined destructor", type_name);
+ warning (0, "type %qE has a user-defined destructor", type_name);
if (!warn_cxx_ivars)
{
@@ -7231,8 +7252,8 @@ objc_is_public (tree expr, tree identifier)
if (!klass)
{
- error ("cannot find interface declaration for %qs",
- IDENTIFIER_POINTER (OBJC_TYPE_NAME (basetype)));
+ error ("cannot find interface declaration for %qE",
+ OBJC_TYPE_NAME (basetype));
return 0;
}
@@ -7260,8 +7281,8 @@ objc_is_public (tree expr, tree identifier)
int priv = is_private (decl);
if (priv)
- error ("instance variable %qs is declared private",
- IDENTIFIER_POINTER (DECL_NAME (decl)));
+ error ("instance variable %qE is declared private",
+ DECL_NAME (decl));
return !priv;
}
@@ -7271,15 +7292,15 @@ objc_is_public (tree expr, tree identifier)
non-@public ivars. We will let this slide for now... */
if (!objc_method_context)
{
- warning (0, "instance variable %qs is %s; "
+ warning (0, "instance variable %qE is %s; "
"this will be a hard error in the future",
- IDENTIFIER_POINTER (identifier),
+ identifier,
TREE_PRIVATE (decl) ? "@private" : "@protected");
return 1;
}
- error ("instance variable %qs is declared %s",
- IDENTIFIER_POINTER (identifier),
+ error ("instance variable %qE is declared %s",
+ identifier,
TREE_PRIVATE (decl) ? "private" : "protected");
return 0;
}
@@ -7304,17 +7325,17 @@ check_methods (tree chain, tree list, int mtype)
{
if (TREE_CODE (objc_implementation_context)
== CLASS_IMPLEMENTATION_TYPE)
- warning (0, "incomplete implementation of class %qs",
- IDENTIFIER_POINTER (CLASS_NAME (objc_implementation_context)));
+ warning (0, "incomplete implementation of class %qE",
+ CLASS_NAME (objc_implementation_context));
else if (TREE_CODE (objc_implementation_context)
== CATEGORY_IMPLEMENTATION_TYPE)
- warning (0, "incomplete implementation of category %qs",
- IDENTIFIER_POINTER (CLASS_SUPER_NAME (objc_implementation_context)));
+ warning (0, "incomplete implementation of category %qE",
+ CLASS_SUPER_NAME (objc_implementation_context));
first = 0;
}
- warning (0, "method definition for %<%c%s%> not found",
- mtype, IDENTIFIER_POINTER (METHOD_SEL_NAME (chain)));
+ warning (0, "method definition for %<%c%E%> not found",
+ mtype, METHOD_SEL_NAME (chain));
}
chain = TREE_CHAIN (chain);
@@ -7392,18 +7413,16 @@ check_methods_accessible (tree chain, tree context, int mtype)
{
if (TREE_CODE (objc_implementation_context)
== CLASS_IMPLEMENTATION_TYPE)
- warning (0, "incomplete implementation of class %qs",
- IDENTIFIER_POINTER
- (CLASS_NAME (objc_implementation_context)));
+ warning (0, "incomplete implementation of class %qE",
+ CLASS_NAME (objc_implementation_context));
else if (TREE_CODE (objc_implementation_context)
== CATEGORY_IMPLEMENTATION_TYPE)
- warning (0, "incomplete implementation of category %qs",
- IDENTIFIER_POINTER
- (CLASS_SUPER_NAME (objc_implementation_context)));
+ warning (0, "incomplete implementation of category %qE",
+ CLASS_SUPER_NAME (objc_implementation_context));
first = 0;
}
- warning (0, "method definition for %<%c%s%> not found",
- mtype, IDENTIFIER_POINTER (METHOD_SEL_NAME (chain)));
+ warning (0, "method definition for %<%c%E%> not found",
+ mtype, METHOD_SEL_NAME (chain));
}
chain = TREE_CHAIN (chain); /* next method... */
@@ -7416,7 +7435,7 @@ check_methods_accessible (tree chain, tree context, int mtype)
with any protocols that P inherits. */
static void
-check_protocol (tree p, const char *type, const char *name)
+check_protocol (tree p, const char *type, tree name)
{
if (TREE_CODE (p) == PROTOCOL_INTERFACE_TYPE)
{
@@ -7443,8 +7462,8 @@ check_protocol (tree p, const char *type, const char *name)
}
if (!f1 || !f2)
- warning (0, "%s %qs does not fully implement the %qs protocol",
- type, name, IDENTIFIER_POINTER (PROTOCOL_NAME (p)));
+ warning (0, "%s %qE does not fully implement the %qE protocol",
+ type, name, PROTOCOL_NAME (p));
}
/* Check protocols recursively. */
@@ -7472,7 +7491,7 @@ check_protocol (tree p, const char *type, const char *name)
in PROTO_LIST. */
static void
-check_protocols (tree proto_list, const char *type, const char *name)
+check_protocols (tree proto_list, const char *type, tree name)
{
for ( ; proto_list; proto_list = TREE_CHAIN (proto_list))
{
@@ -7520,9 +7539,9 @@ start_class (enum tree_code code, tree class_name, tree super_name,
if (!super || !lookup_interface (super))
{
- error ("cannot find interface declaration for %qs, superclass of %qs",
- IDENTIFIER_POINTER (super ? super : super_name),
- IDENTIFIER_POINTER (class_name));
+ error ("cannot find interface declaration for %qE, superclass of %qE",
+ super ? super : super_name,
+ class_name);
super_name = NULL_TREE;
}
else
@@ -7536,8 +7555,8 @@ start_class (enum tree_code code, tree class_name, tree super_name,
if (! objc_is_class_name (class_name)
&& (decl = lookup_name (class_name)))
{
- error ("%qs redeclared as different kind of symbol",
- IDENTIFIER_POINTER (class_name));
+ error ("%qE redeclared as different kind of symbol",
+ class_name);
error ("previous declaration of %q+D",
decl);
}
@@ -7550,8 +7569,8 @@ start_class (enum tree_code code, tree class_name, tree super_name,
for (chain = implemented_classes; chain; chain = TREE_CHAIN (chain))
if (TREE_VALUE (chain) == class_name)
{
- error ("reimplementation of class %qs",
- IDENTIFIER_POINTER (class_name));
+ error ("reimplementation of class %qE",
+ class_name);
return error_mark_node;
}
implemented_classes = tree_cons (NULL_TREE, class_name,
@@ -7567,8 +7586,8 @@ start_class (enum tree_code code, tree class_name, tree super_name,
if (!(implementation_template = lookup_interface (class_name)))
{
- warning (0, "cannot find interface declaration for %qs",
- IDENTIFIER_POINTER (class_name));
+ warning (0, "cannot find interface declaration for %qE",
+ class_name);
add_class (implementation_template = objc_implementation_context,
class_name);
}
@@ -7580,11 +7599,12 @@ start_class (enum tree_code code, tree class_name, tree super_name,
&& (super_name != CLASS_SUPER_NAME (implementation_template)))
{
tree previous_name = CLASS_SUPER_NAME (implementation_template);
- const char *const name =
- previous_name ? IDENTIFIER_POINTER (previous_name) : "";
- error ("conflicting super class name %qs",
- IDENTIFIER_POINTER (super_name));
- error ("previous declaration of %qs", name);
+ error ("conflicting super class name %qE",
+ super_name);
+ if (previous_name)
+ error ("previous declaration of %qE", previous_name);
+ else
+ error ("previous declaration");
}
else if (! super_name)
@@ -7598,11 +7618,11 @@ start_class (enum tree_code code, tree class_name, tree super_name,
{
if (lookup_interface (class_name))
#ifdef OBJCPLUS
- error ("duplicate interface declaration for class %qs",
+ error ("duplicate interface declaration for class %qE",
#else
- warning (0, "duplicate interface declaration for class %qs",
+ warning (0, "duplicate interface declaration for class %qE",
#endif
- IDENTIFIER_POINTER (class_name));
+ class_name);
else
add_class (klass, class_name);
@@ -7621,8 +7641,8 @@ start_class (enum tree_code code, tree class_name, tree super_name,
if (!(class_category_is_assoc_with = lookup_interface (class_name)))
{
- error ("cannot find interface declaration for %qs",
- IDENTIFIER_POINTER (class_name));
+ error ("cannot find interface declaration for %qE",
+ class_name);
exit (FATAL_EXIT_CODE);
}
else
@@ -7646,8 +7666,8 @@ start_class (enum tree_code code, tree class_name, tree super_name,
if (!(implementation_template = lookup_interface (class_name)))
{
- error ("cannot find interface declaration for %qs",
- IDENTIFIER_POINTER (class_name));
+ error ("cannot find interface declaration for %qE",
+ class_name);
exit (FATAL_EXIT_CODE);
}
}
@@ -7741,7 +7761,7 @@ finish_class (tree klass)
if (CLASS_PROTOCOL_LIST (implementation_template))
check_protocols (CLASS_PROTOCOL_LIST (implementation_template),
"class",
- IDENTIFIER_POINTER (CLASS_NAME (objc_implementation_context)));
+ CLASS_NAME (objc_implementation_context));
}
}
@@ -7760,7 +7780,7 @@ finish_class (tree klass)
if (CLASS_PROTOCOL_LIST (category))
check_protocols (CLASS_PROTOCOL_LIST (category),
"category",
- IDENTIFIER_POINTER (CLASS_SUPER_NAME (objc_implementation_context)));
+ CLASS_SUPER_NAME (objc_implementation_context));
}
}
}
@@ -7854,8 +7874,8 @@ start_protocol (enum tree_code code, tree name, tree list)
}
else
{
- warning (0, "duplicate declaration for protocol %qs",
- IDENTIFIER_POINTER (name));
+ warning (0, "duplicate declaration for protocol %qE",
+ name);
}
return protocol;
}
@@ -8684,10 +8704,10 @@ really_start_method (tree method,
warning (0, "%Jconflicting types for %<%c%s%>", method,
(type ? '-' : '+'),
- gen_method_decl (method));
+ identifier_to_locale (gen_method_decl (method)));
inform (0, "%Jprevious declaration of %<%c%s%>", proto,
(type ? '-' : '+'),
- gen_method_decl (proto));
+ identifier_to_locale (gen_method_decl (proto)));
}
}
else
@@ -8771,8 +8791,8 @@ get_super_receiver (void)
/* Barf if super used in a category of Object. */
if (!super_name)
{
- error ("no super class declared in interface for %qs",
- IDENTIFIER_POINTER (CLASS_NAME (implementation_template)));
+ error ("no super class declared in interface for %qE",
+ CLASS_NAME (implementation_template));
return error_mark_node;
}
@@ -8866,22 +8886,6 @@ objc_finish_method_definition (tree fndecl)
warning (0, "method possibly missing a [super dealloc] call");
}
-#if 0
-int
-lang_report_error_function (tree decl)
-{
- if (objc_method_context)
- {
- fprintf (stderr, "In method %qs\n",
- IDENTIFIER_POINTER (METHOD_SEL_NAME (objc_method_context)));
- return 1;
- }
-
- else
- return 0;
-}
-#endif
-
/* Given a tree DECL node, produce a printable description of it in the given
buffer, overwriting the buffer. */
@@ -9493,8 +9497,8 @@ objc_lookup_ivar (tree other, tree id)
&& !DECL_FILE_SCOPE_P (other))
#endif
{
- warning (0, "local declaration of %qs hides instance variable",
- IDENTIFIER_POINTER (id));
+ warning (0, "local declaration of %qE hides instance variable",
+ id);
return other;
}
diff --git a/gcc/objcp/ChangeLog b/gcc/objcp/ChangeLog
index fdf60362df8..4a4067d3bd7 100644
--- a/gcc/objcp/ChangeLog
+++ b/gcc/objcp/ChangeLog
@@ -1,3 +1,9 @@
+2009-05-10 Ian Lance Taylor <iant@google.com>
+
+ * objcp-decl.h (start_struct): Add three new, ignored, macro
+ parameters.
+ (finish_struct): Add two new, ignored, macro parameters.
+
2009-04-21 Joseph Myers <joseph@codesourcery.com>
* ChangeLog: Add copyright and license notices.
diff --git a/gcc/objcp/objcp-decl.h b/gcc/objcp/objcp-decl.h
index ece888f5b1f..3f6c4321e7f 100644
--- a/gcc/objcp/objcp-decl.h
+++ b/gcc/objcp/objcp-decl.h
@@ -1,6 +1,6 @@
/* Process the ObjC-specific declarations and variables for
the Objective-C++ compiler.
- Copyright (C) 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
Contributed by Ziemowit Laski <zlaski@apple.com>
This file is part of GCC.
@@ -37,9 +37,9 @@ extern tree objcp_end_compound_stmt (tree, int);
invoke the original C++ functions if needed). */
#ifdef OBJCP_REMAP_FUNCTIONS
-#define start_struct(code, name) \
+#define start_struct(code, name, in_struct, struct_types, loc) \
objcp_start_struct (code, name)
-#define finish_struct(t, fieldlist, attributes) \
+#define finish_struct(t, fieldlist, attributes, in_struct, struct_types) \
objcp_finish_struct (t, fieldlist, attributes)
#define finish_function() \
objcp_finish_function ()
diff --git a/gcc/opts.c b/gcc/opts.c
index 1170967b949..818acdf8f65 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -848,6 +848,7 @@ decode_options (unsigned int argc, const char **argv)
#endif
flag_guess_branch_prob = opt1;
flag_cprop_registers = opt1;
+ flag_forward_propagate = opt1;
flag_if_conversion = opt1;
flag_if_conversion2 = opt1;
flag_ipa_pure_const = opt1;
@@ -873,7 +874,6 @@ decode_options (unsigned int argc, const char **argv)
flag_thread_jumps = opt2;
flag_crossjumping = opt2;
flag_optimize_sibling_calls = opt2;
- flag_forward_propagate = opt2;
flag_cse_follow_jumps = opt2;
flag_gcse = opt2;
flag_expensive_optimizations = opt2;
@@ -961,6 +961,27 @@ decode_options (unsigned int argc, const char **argv)
handle_options (argc, argv, lang_mask);
+ /* Make DUMP_BASE_NAME relative to the AUX_BASE_NAME directory,
+ typically the directory to contain the object file. */
+ if (aux_base_name && ! IS_ABSOLUTE_PATH (dump_base_name))
+ {
+ const char *aux_base;
+
+ base_of_path (aux_base_name, &aux_base);
+ if (aux_base_name != aux_base)
+ {
+ int dir_len = aux_base - aux_base_name;
+ char *new_dump_base_name =
+ XNEWVEC (char, strlen(dump_base_name) + dir_len + 1);
+
+ /* Copy directory component from AUX_BASE_NAME. */
+ memcpy (new_dump_base_name, aux_base_name, dir_len);
+ /* Append existing DUMP_BASE_NAME. */
+ strcpy (new_dump_base_name + dir_len, dump_base_name);
+ dump_base_name = new_dump_base_name;
+ }
+ }
+
/* Handle related options for unit-at-a-time, toplevel-reorder, and
section-anchors. */
if (!flag_unit_at_a_time)
diff --git a/gcc/passes.c b/gcc/passes.c
index 312dfa9db72..7a39ac70bc1 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -846,7 +846,7 @@ do_per_function (void (*callback) (void *data), void *data)
{
struct cgraph_node *node;
for (node = cgraph_nodes; node; node = node->next)
- if (node->analyzed)
+ if (node->analyzed && gimple_has_body_p (node->decl))
{
push_cfun (DECL_STRUCT_FUNCTION (node->decl));
current_function_decl = node->decl;
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index c0690b8c0af..ac565e50fa4 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,3 +1,7 @@
+2009-05-10 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.pot: Regenerate.
+
2009-04-22 Joseph Myers <joseph@codesourcery.com>
* gcc.pot: Regenerate.
diff --git a/gcc/po/gcc.pot b/gcc/po/gcc.pot
index a876a6c39de..c3f85328bd8 100644
--- a/gcc/po/gcc.pot
+++ b/gcc/po/gcc.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://gcc.gnu.org/bugs.html\n"
-"POT-Creation-Date: 2009-04-22 16:20+0000\n"
+"POT-Creation-Date: 2009-05-10 10:32+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,7 +16,8 @@ msgstr ""
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: c-decl.c:3830
+#: c-decl.c:3944 c-pretty-print.c:393 c-typeck.c:5151 toplev.c:1597
+#: cp/error.c:585 cp/error.c:848
msgid "<anonymous>"
msgstr ""
@@ -277,66 +278,106 @@ msgstr ""
msgid "field precision"
msgstr ""
-#: c-opts.c:1497 fortran/cpp.c:552
+#: c-objc-common.c:164
+msgid "({anonymous})"
+msgstr ""
+
+#: c-opts.c:1490 cp/error.c:990 fortran/cpp.c:552
msgid "<built-in>"
msgstr ""
#. Handle deferred options from command-line.
-#: c-opts.c:1515 fortran/cpp.c:557
+#: c-opts.c:1508 fortran/cpp.c:557
msgid "<command-line>"
msgstr ""
-#: c-typeck.c:5258
+#: c-pretty-print.c:314
+msgid "<type-error>"
+msgstr ""
+
+#: c-pretty-print.c:353
+msgid "<unnamed-unsigned:"
+msgstr ""
+
+#: c-pretty-print.c:354
+msgid "<unnamed-signed:"
+msgstr ""
+
+#: c-pretty-print.c:357
+msgid "<unnamed-float:"
+msgstr ""
+
+#: c-pretty-print.c:360
+msgid "<unnamed-fixed:"
+msgstr ""
+
+#: c-pretty-print.c:375
+msgid "<typedef-error>"
+msgstr ""
+
+#: c-pretty-print.c:388
+msgid "<tag-error>"
+msgstr ""
+
+#: c-pretty-print.c:1126
+msgid "<erroneous-expression>"
+msgstr ""
+
+#: c-pretty-print.c:1130 cp/cxx-pretty-print.c:154
+msgid "<return-value>"
+msgstr ""
+
+#: c-typeck.c:5268
msgid "array initialized from parenthesized string constant"
msgstr ""
-#: c-typeck.c:5328 c-typeck.c:6187
+#: c-typeck.c:5338 c-typeck.c:6197
msgid "initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:5338 cp/typeck2.c:757
+#: c-typeck.c:5348 cp/typeck2.c:756
#, gcc-internal-format
msgid "char-array initialized from wide string"
msgstr ""
-#: c-typeck.c:5346
+#: c-typeck.c:5356
msgid "wide character array initialized from non-wide string"
msgstr ""
-#: c-typeck.c:5352
+#: c-typeck.c:5362
msgid "wide character array initialized from incompatible wide string"
msgstr ""
-#: c-typeck.c:5370 cp/typeck2.c:785
+#: c-typeck.c:5380 cp/typeck2.c:784
#, gcc-internal-format
msgid "initializer-string for array of chars is too long"
msgstr ""
-#: c-typeck.c:5376
+#: c-typeck.c:5386
msgid "array of inappropriate type initialized from string constant"
msgstr ""
#. ??? This should not be an error when inlining calls to
#. unprototyped functions.
-#: c-typeck.c:5443 c-typeck.c:4917 cp/typeck.c:1645
+#: c-typeck.c:5453 c-typeck.c:4925 cp/typeck.c:1645
#, gcc-internal-format
msgid "invalid use of non-lvalue array"
msgstr ""
-#: c-typeck.c:5469
+#: c-typeck.c:5479
msgid "array initialized from non-constant array expression"
msgstr ""
-#: c-typeck.c:5483 c-typeck.c:5486 c-typeck.c:5494 c-typeck.c:5532
-#: c-typeck.c:6968
+#: c-typeck.c:5493 c-typeck.c:5496 c-typeck.c:5504 c-typeck.c:5542
+#: c-typeck.c:6996
msgid "initializer element is not constant"
msgstr ""
-#: c-typeck.c:5499 c-typeck.c:5544 c-typeck.c:6978
+#: c-typeck.c:5509 c-typeck.c:5554 c-typeck.c:7006
msgid "initializer element is not a constant expression"
msgstr ""
-#: c-typeck.c:5539 c-typeck.c:6973
+#: c-typeck.c:5549 c-typeck.c:7001
#, gcc-internal-format
msgid "initializer element is not computable at load time"
msgstr ""
@@ -345,124 +386,137 @@ msgstr ""
#. of VLAs themselves count as VLAs, it does not make
#. sense to permit them to be initialized given that
#. ordinary VLAs may not be initialized.
-#: c-typeck.c:5553 c-decl.c:3224 c-decl.c:3239
+#: c-typeck.c:5563 c-decl.c:3337 c-decl.c:3352
#, gcc-internal-format
msgid "variable-sized object may not be initialized"
msgstr ""
-#: c-typeck.c:5557
+#: c-typeck.c:5567
msgid "invalid initializer"
msgstr ""
-#: c-typeck.c:6044
+#: c-typeck.c:5776
+msgid "(anonymous)"
+msgstr ""
+
+#: c-typeck.c:6054
msgid "extra brace group at end of initializer"
msgstr ""
-#: c-typeck.c:6065
+#: c-typeck.c:6075
msgid "missing braces around initializer"
msgstr ""
-#: c-typeck.c:6126
+#: c-typeck.c:6136
msgid "braces around scalar initializer"
msgstr ""
-#: c-typeck.c:6184
+#: c-typeck.c:6194
msgid "initialization of flexible array member in a nested context"
msgstr ""
-#: c-typeck.c:6215
+#: c-typeck.c:6225
msgid "missing initializer"
msgstr ""
-#: c-typeck.c:6237
+#: c-typeck.c:6247
msgid "empty scalar initializer"
msgstr ""
-#: c-typeck.c:6242
+#: c-typeck.c:6252
msgid "extra elements in scalar initializer"
msgstr ""
-#: c-typeck.c:6350 c-typeck.c:6410
+#: c-typeck.c:6360 c-typeck.c:6438
msgid "array index in non-array initializer"
msgstr ""
-#: c-typeck.c:6355 c-typeck.c:6466
+#: c-typeck.c:6365 c-typeck.c:6494
msgid "field name not in record or union initializer"
msgstr ""
-#: c-typeck.c:6401
+#: c-typeck.c:6411
msgid "array index in initializer not of integer type"
msgstr ""
-#: c-typeck.c:6406 c-typeck.c:6408
+#: c-typeck.c:6420 c-typeck.c:6429
+msgid "array index in initializer is not an integer constant expression"
+msgstr ""
+
+#: c-typeck.c:6434 c-typeck.c:6436
msgid "nonconstant array index in initializer"
msgstr ""
-#: c-typeck.c:6412 c-typeck.c:6415
+#: c-typeck.c:6440 c-typeck.c:6443
msgid "array index in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:6429
+#: c-typeck.c:6457
msgid "empty index range in initializer"
msgstr ""
-#: c-typeck.c:6438
+#: c-typeck.c:6466
msgid "array index range in initializer exceeds array bounds"
msgstr ""
-#: c-typeck.c:6521 c-typeck.c:6548 c-typeck.c:7049
+#: c-typeck.c:6549 c-typeck.c:6576 c-typeck.c:7095
msgid "initialized field with side-effects overwritten"
msgstr ""
-#: c-typeck.c:6523 c-typeck.c:6550 c-typeck.c:7051
+#: c-typeck.c:6551 c-typeck.c:6578 c-typeck.c:7097
msgid "initialized field overwritten"
msgstr ""
-#: c-typeck.c:7266
+#: c-typeck.c:7023 c-typeck.c:4574
+#, gcc-internal-format
+msgid "enum conversion in initialization is invalid in C++"
+msgstr ""
+
+#: c-typeck.c:7312
msgid "excess elements in char array initializer"
msgstr ""
-#: c-typeck.c:7273 c-typeck.c:7331
+#: c-typeck.c:7319 c-typeck.c:7378
msgid "excess elements in struct initializer"
msgstr ""
-#: c-typeck.c:7346
+#: c-typeck.c:7393
msgid "non-static initialization of a flexible array member"
msgstr ""
-#: c-typeck.c:7416
+#: c-typeck.c:7463
msgid "excess elements in union initializer"
msgstr ""
-#: c-typeck.c:7505
+#: c-typeck.c:7552
msgid "excess elements in array initializer"
msgstr ""
-#: c-typeck.c:7537
+#: c-typeck.c:7584
msgid "excess elements in vector initializer"
msgstr ""
-#: c-typeck.c:7563
+#: c-typeck.c:7614
msgid "excess elements in scalar initializer"
msgstr ""
-#: cfgrtl.c:1898
+#: cfgrtl.c:1941
msgid "flow control insn inside a basic block"
msgstr ""
-#: cfgrtl.c:2027
+#: cfgrtl.c:2070
msgid "wrong insn in the fallthru edge"
msgstr ""
-#: cfgrtl.c:2083
+#: cfgrtl.c:2126
msgid "insn outside basic block"
msgstr ""
-#: cfgrtl.c:2090
+#: cfgrtl.c:2133
msgid "return not followed by barrier"
msgstr ""
-#: collect2.c:396 gcc.c:7139
+#: collect2.c:396 gcc.c:7153
#, c-format
msgid "internal gcc abort in %s, at %s:%d"
msgstr ""
@@ -532,7 +586,7 @@ msgstr ""
msgid "cannot find '%s'"
msgstr ""
-#: collect2.c:1641 collect2.c:2132 collect2.c:2287 gcc.c:3007
+#: collect2.c:1641 collect2.c:2132 collect2.c:2287 gcc.c:3021
#, c-format
msgid "pex_init failed"
msgstr ""
@@ -699,118 +753,118 @@ msgstr ""
#. handle them.
#. We can't handle floating point constants;
#. PRINT_OPERAND must handle them.
-#: final.c:3503 vmsdbgout.c:488 config/i386/i386.c:10283
+#: final.c:3503 vmsdbgout.c:488 config/i386/i386.c:10285
#: config/pdp11/pdp11.c:1677
#, c-format
msgid "floating constant misused"
msgstr ""
-#: final.c:3565 vmsdbgout.c:545 config/i386/i386.c:10370
+#: final.c:3565 vmsdbgout.c:545 config/i386/i386.c:10372
#: config/pdp11/pdp11.c:1724
#, c-format
msgid "invalid expression as operand"
msgstr ""
-#: gcc.c:1729
+#: gcc.c:1736
#, c-format
msgid "Using built-in specs.\n"
msgstr ""
-#: gcc.c:1907
+#: gcc.c:1921
#, c-format
msgid ""
"Setting spec %s to '%s'\n"
"\n"
msgstr ""
-#: gcc.c:2022
+#: gcc.c:2036
#, c-format
msgid "Reading specs from %s\n"
msgstr ""
-#: gcc.c:2118 gcc.c:2137
+#: gcc.c:2132 gcc.c:2151
#, c-format
msgid "specs %%include syntax malformed after %ld characters"
msgstr ""
-#: gcc.c:2145
+#: gcc.c:2159
#, c-format
msgid "could not find specs file %s\n"
msgstr ""
-#: gcc.c:2162 gcc.c:2170 gcc.c:2179 gcc.c:2188
+#: gcc.c:2176 gcc.c:2184 gcc.c:2193 gcc.c:2202
#, c-format
msgid "specs %%rename syntax malformed after %ld characters"
msgstr ""
-#: gcc.c:2197
+#: gcc.c:2211
#, c-format
msgid "specs %s spec was not found to be renamed"
msgstr ""
-#: gcc.c:2204
+#: gcc.c:2218
#, c-format
msgid "%s: attempt to rename spec '%s' to already defined spec '%s'"
msgstr ""
-#: gcc.c:2209
+#: gcc.c:2223
#, c-format
msgid "rename spec %s to %s\n"
msgstr ""
-#: gcc.c:2211
+#: gcc.c:2225
#, c-format
msgid ""
"spec is '%s'\n"
"\n"
msgstr ""
-#: gcc.c:2224
+#: gcc.c:2238
#, c-format
msgid "specs unknown %% command after %ld characters"
msgstr ""
-#: gcc.c:2235 gcc.c:2248
+#: gcc.c:2249 gcc.c:2262
#, c-format
msgid "specs file malformed after %ld characters"
msgstr ""
-#: gcc.c:2300
+#: gcc.c:2314
#, c-format
msgid "spec file has no spec for linking"
msgstr ""
-#: gcc.c:2628 gcc.c:4940
+#: gcc.c:2642 gcc.c:4954
#, c-format
msgid "%s\n"
msgstr ""
-#: gcc.c:2829
+#: gcc.c:2843
#, c-format
msgid "system path '%s' is not absolute"
msgstr ""
-#: gcc.c:2901
+#: gcc.c:2915
#, c-format
msgid "-pipe not supported"
msgstr ""
-#: gcc.c:2963
+#: gcc.c:2977
#, c-format
msgid ""
"\n"
"Go ahead? (y or n) "
msgstr ""
-#: gcc.c:3046
+#: gcc.c:3060
msgid "failed to get exit status"
msgstr ""
-#: gcc.c:3052
+#: gcc.c:3066
msgid "failed to get process times"
msgstr ""
-#: gcc.c:3078
+#: gcc.c:3092
#, c-format
msgid ""
"Internal error: %s (program %s)\n"
@@ -818,225 +872,225 @@ msgid ""
"See %s for instructions."
msgstr ""
-#: gcc.c:3104
+#: gcc.c:3118
#, c-format
msgid "# %s %.2f %.2f\n"
msgstr ""
-#: gcc.c:3238
+#: gcc.c:3252
#, c-format
msgid "Usage: %s [options] file...\n"
msgstr ""
-#: gcc.c:3239
+#: gcc.c:3253
msgid "Options:\n"
msgstr ""
-#: gcc.c:3241
+#: gcc.c:3255
msgid " -pass-exit-codes Exit with highest error code from a phase\n"
msgstr ""
-#: gcc.c:3242
+#: gcc.c:3256
msgid " --help Display this information\n"
msgstr ""
-#: gcc.c:3243
+#: gcc.c:3257
msgid ""
" --target-help Display target specific command line options\n"
msgstr ""
-#: gcc.c:3244
+#: gcc.c:3258
msgid ""
" --help={target|optimizers|warnings|params|[^]{joined|separate|"
"undocumented}}[,...]\n"
msgstr ""
-#: gcc.c:3245
+#: gcc.c:3259
msgid ""
" Display specific types of command line options\n"
msgstr ""
-#: gcc.c:3247
+#: gcc.c:3261
msgid " (Use '-v --help' to display command line options of sub-processes)\n"
msgstr ""
-#: gcc.c:3248
+#: gcc.c:3262
msgid " --version Display compiler version information\n"
msgstr ""
-#: gcc.c:3249
+#: gcc.c:3263
msgid " -dumpspecs Display all of the built in spec strings\n"
msgstr ""
-#: gcc.c:3250
+#: gcc.c:3264
msgid " -dumpversion Display the version of the compiler\n"
msgstr ""
-#: gcc.c:3251
+#: gcc.c:3265
msgid " -dumpmachine Display the compiler's target processor\n"
msgstr ""
-#: gcc.c:3252
+#: gcc.c:3266
msgid ""
" -print-search-dirs Display the directories in the compiler's search "
"path\n"
msgstr ""
-#: gcc.c:3253
+#: gcc.c:3267
msgid ""
" -print-libgcc-file-name Display the name of the compiler's companion "
"library\n"
msgstr ""
-#: gcc.c:3254
+#: gcc.c:3268
msgid " -print-file-name=<lib> Display the full path to library <lib>\n"
msgstr ""
-#: gcc.c:3255
+#: gcc.c:3269
msgid ""
" -print-prog-name=<prog> Display the full path to compiler component "
"<prog>\n"
msgstr ""
-#: gcc.c:3256
+#: gcc.c:3270
msgid ""
" -print-multi-directory Display the root directory for versions of "
"libgcc\n"
msgstr ""
-#: gcc.c:3257
+#: gcc.c:3271
msgid ""
" -print-multi-lib Display the mapping between command line options "
"and\n"
" multiple library search directories\n"
msgstr ""
-#: gcc.c:3260
+#: gcc.c:3274
msgid " -print-multi-os-directory Display the relative path to OS libraries\n"
msgstr ""
-#: gcc.c:3261
+#: gcc.c:3275
msgid " -print-sysroot Display the target libraries directory\n"
msgstr ""
-#: gcc.c:3262
+#: gcc.c:3276
msgid ""
" -print-sysroot-headers-suffix Display the sysroot suffix used to find "
"headers\n"
msgstr ""
-#: gcc.c:3263
+#: gcc.c:3277
msgid ""
" -Wa,<options> Pass comma-separated <options> on to the "
"assembler\n"
msgstr ""
-#: gcc.c:3264
+#: gcc.c:3278
msgid ""
" -Wp,<options> Pass comma-separated <options> on to the "
"preprocessor\n"
msgstr ""
-#: gcc.c:3265
+#: gcc.c:3279
msgid ""
" -Wl,<options> Pass comma-separated <options> on to the linker\n"
msgstr ""
-#: gcc.c:3266
+#: gcc.c:3280
msgid " -Xassembler <arg> Pass <arg> on to the assembler\n"
msgstr ""
-#: gcc.c:3267
+#: gcc.c:3281
msgid " -Xpreprocessor <arg> Pass <arg> on to the preprocessor\n"
msgstr ""
-#: gcc.c:3268
+#: gcc.c:3282
msgid " -Xlinker <arg> Pass <arg> on to the linker\n"
msgstr ""
-#: gcc.c:3269
+#: gcc.c:3283
msgid ""
" -combine Pass multiple source files to compiler at once\n"
msgstr ""
-#: gcc.c:3270
+#: gcc.c:3284
msgid " -save-temps Do not delete intermediate files\n"
msgstr ""
-#: gcc.c:3271
+#: gcc.c:3285
msgid " -save-temps=<arg> Do not delete intermediate files\n"
msgstr ""
-#: gcc.c:3272
+#: gcc.c:3286
msgid " -pipe Use pipes rather than intermediate files\n"
msgstr ""
-#: gcc.c:3273
+#: gcc.c:3287
msgid " -time Time the execution of each subprocess\n"
msgstr ""
-#: gcc.c:3274
+#: gcc.c:3288
msgid ""
" -specs=<file> Override built-in specs with the contents of "
"<file>\n"
msgstr ""
-#: gcc.c:3275
+#: gcc.c:3289
msgid ""
" -std=<standard> Assume that the input sources are for <standard>\n"
msgstr ""
-#: gcc.c:3276
+#: gcc.c:3290
msgid ""
" --sysroot=<directory> Use <directory> as the root directory for "
"headers\n"
" and libraries\n"
msgstr ""
-#: gcc.c:3279
+#: gcc.c:3293
msgid ""
" -B <directory> Add <directory> to the compiler's search paths\n"
msgstr ""
-#: gcc.c:3280
+#: gcc.c:3294
msgid " -b <machine> Run gcc for target <machine>, if installed\n"
msgstr ""
-#: gcc.c:3281
+#: gcc.c:3295
msgid ""
" -V <version> Run gcc version number <version>, if installed\n"
msgstr ""
-#: gcc.c:3282
+#: gcc.c:3296
msgid ""
" -v Display the programs invoked by the compiler\n"
msgstr ""
-#: gcc.c:3283
+#: gcc.c:3297
msgid ""
" -### Like -v but options quoted and commands not "
"executed\n"
msgstr ""
-#: gcc.c:3284
+#: gcc.c:3298
msgid ""
" -E Preprocess only; do not compile, assemble or "
"link\n"
msgstr ""
-#: gcc.c:3285
+#: gcc.c:3299
msgid " -S Compile only; do not assemble or link\n"
msgstr ""
-#: gcc.c:3286
+#: gcc.c:3300
msgid " -c Compile and assemble, but do not link\n"
msgstr ""
-#: gcc.c:3287
+#: gcc.c:3301
msgid " -o <file> Place the output into <file>\n"
msgstr ""
-#: gcc.c:3288
+#: gcc.c:3302
msgid ""
" -x <language> Specify the language of the following input "
"files\n"
@@ -1047,7 +1101,7 @@ msgid ""
"extension\n"
msgstr ""
-#: gcc.c:3295
+#: gcc.c:3309
#, c-format
msgid ""
"\n"
@@ -1056,201 +1110,201 @@ msgid ""
" other options on to these processes the -W<letter> options must be used.\n"
msgstr ""
-#: gcc.c:3425
+#: gcc.c:3439
#, c-format
msgid "'-%c' option must have argument"
msgstr ""
-#: gcc.c:3451
+#: gcc.c:3465
#, c-format
msgid "couldn't run '%s': %s"
msgstr ""
-#: gcc.c:3453
+#: gcc.c:3467
#, c-format
msgid "couldn't run '%s': %s: %s"
msgstr ""
-#: gcc.c:3778
+#: gcc.c:3792
#, c-format
msgid "argument to '-Xlinker' is missing"
msgstr ""
-#: gcc.c:3786
+#: gcc.c:3800
#, c-format
msgid "argument to '-Xpreprocessor' is missing"
msgstr ""
-#: gcc.c:3793
+#: gcc.c:3807
#, c-format
msgid "argument to '-Xassembler' is missing"
msgstr ""
-#: gcc.c:3800
+#: gcc.c:3814
#, c-format
msgid "argument to '-l' is missing"
msgstr ""
-#: gcc.c:3821
+#: gcc.c:3835
#, c-format
msgid "'%s' is an unknown -save-temps option"
msgstr ""
-#: gcc.c:3832
+#: gcc.c:3846
#, c-format
msgid "argument to '-specs' is missing"
msgstr ""
-#: gcc.c:3846
+#: gcc.c:3860
#, c-format
msgid "argument to '-specs=' is missing"
msgstr ""
-#: gcc.c:3868
+#: gcc.c:3882
#, c-format
msgid "argument to '-wrapper' is missing"
msgstr ""
-#: gcc.c:3896
+#: gcc.c:3910
#, c-format
msgid "'-%c' must come at the start of the command line"
msgstr ""
-#: gcc.c:3905
+#: gcc.c:3919
#, c-format
msgid "argument to '-B' is missing"
msgstr ""
-#: gcc.c:4280
+#: gcc.c:4294
#, c-format
msgid "argument to '-x' is missing"
msgstr ""
-#: gcc.c:4308
+#: gcc.c:4322
#, c-format
msgid "argument to '-%s' is missing"
msgstr ""
-#: gcc.c:4681
+#: gcc.c:4695
#, c-format
msgid "switch '%s' does not start with '-'"
msgstr ""
-#: gcc.c:4756
+#: gcc.c:4770
#, c-format
msgid "could not open temporary response file %s"
msgstr ""
-#: gcc.c:4762
+#: gcc.c:4776
#, c-format
msgid "could not write to temporary response file %s"
msgstr ""
-#: gcc.c:4768
+#: gcc.c:4782
#, c-format
msgid "could not close temporary response file %s"
msgstr ""
-#: gcc.c:4868
+#: gcc.c:4882
#, c-format
msgid "spec '%s' invalid"
msgstr ""
-#: gcc.c:5013
+#: gcc.c:5027
#, c-format
msgid "spec '%s' has invalid '%%0%c'"
msgstr ""
-#: gcc.c:5312
+#: gcc.c:5326
#, c-format
msgid "spec '%s' has invalid '%%W%c"
msgstr ""
-#: gcc.c:5332
+#: gcc.c:5346
#, c-format
msgid "spec '%s' has invalid '%%x%c'"
msgstr ""
-#: gcc.c:5554
+#: gcc.c:5568
#, c-format
msgid "Processing spec %c%s%c, which is '%s'\n"
msgstr ""
-#: gcc.c:5678
+#: gcc.c:5692
#, c-format
msgid "unknown spec function '%s'"
msgstr ""
-#: gcc.c:5697
+#: gcc.c:5711
#, c-format
msgid "error in args to spec function '%s'"
msgstr ""
-#: gcc.c:5745
+#: gcc.c:5759
#, c-format
msgid "malformed spec function name"
msgstr ""
#. )
-#: gcc.c:5748
+#: gcc.c:5762
#, c-format
msgid "no arguments for spec function"
msgstr ""
-#: gcc.c:5767
+#: gcc.c:5781
#, c-format
msgid "malformed spec function arguments"
msgstr ""
-#: gcc.c:6013
+#: gcc.c:6027
#, c-format
msgid "braced spec '%s' is invalid at '%c'"
msgstr ""
-#: gcc.c:6101
+#: gcc.c:6115
#, c-format
msgid "braced spec body '%s' is invalid"
msgstr ""
-#: gcc.c:6630
+#: gcc.c:6644
#, c-format
msgid "install: %s%s\n"
msgstr ""
-#: gcc.c:6633
+#: gcc.c:6647
#, c-format
msgid "programs: %s\n"
msgstr ""
-#: gcc.c:6635
+#: gcc.c:6649
#, c-format
msgid "libraries: %s\n"
msgstr ""
#. The error status indicates that only one set of fixed
#. headers should be built.
-#: gcc.c:6701
+#: gcc.c:6715
#, c-format
msgid "not configured with sysroot headers suffix"
msgstr ""
-#: gcc.c:6710
+#: gcc.c:6724
#, c-format
msgid ""
"\n"
"For bug reporting instructions, please see:\n"
msgstr ""
-#: gcc.c:6726
+#: gcc.c:6740
#, c-format
msgid "%s %s%s\n"
msgstr ""
-#: gcc.c:6729 gcov.c:430 fortran/gfortranspec.c:383 java/jcf-dump.c:1170
+#: gcc.c:6743 gcov.c:430 fortran/gfortranspec.c:383 java/jcf-dump.c:1170
msgid "(C)"
msgstr ""
-#: gcc.c:6730 java/jcf-dump.c:1171
+#: gcc.c:6744 java/jcf-dump.c:1171
#, c-format
msgid ""
"This is free software; see the source for copying conditions. There is NO\n"
@@ -1258,47 +1312,47 @@ msgid ""
"\n"
msgstr ""
-#: gcc.c:6747
+#: gcc.c:6761
#, c-format
msgid "Target: %s\n"
msgstr ""
-#: gcc.c:6748
+#: gcc.c:6762
#, c-format
msgid "Configured with: %s\n"
msgstr ""
-#: gcc.c:6762
+#: gcc.c:6776
#, c-format
msgid "Thread model: %s\n"
msgstr ""
-#: gcc.c:6773
+#: gcc.c:6787
#, c-format
msgid "gcc version %s %s\n"
msgstr ""
-#: gcc.c:6775
+#: gcc.c:6789
#, c-format
msgid "gcc driver version %s %sexecuting gcc version %s\n"
msgstr ""
-#: gcc.c:6783
+#: gcc.c:6797
#, c-format
msgid "no input files"
msgstr ""
-#: gcc.c:6832
+#: gcc.c:6846
#, c-format
msgid "cannot specify -o with -c or -S with multiple files"
msgstr ""
-#: gcc.c:6866
+#: gcc.c:6880
#, c-format
msgid "spec '%s' is invalid"
msgstr ""
-#: gcc.c:7002
+#: gcc.c:7016
#, c-format
msgid ""
"\n"
@@ -1307,59 +1361,59 @@ msgid ""
"\n"
msgstr ""
-#: gcc.c:7003
+#: gcc.c:7017
#, c-format
msgid ""
"Use \"-Wl,OPTION\" to pass \"OPTION\" to the linker.\n"
"\n"
msgstr ""
-#: gcc.c:7355
+#: gcc.c:7369
#, c-format
msgid "multilib spec '%s' is invalid"
msgstr ""
-#: gcc.c:7546
+#: gcc.c:7560
#, c-format
msgid "multilib exclusions '%s' is invalid"
msgstr ""
-#: gcc.c:7604 gcc.c:7745
+#: gcc.c:7618 gcc.c:7759
#, c-format
msgid "multilib select '%s' is invalid"
msgstr ""
-#: gcc.c:7783
+#: gcc.c:7797
#, c-format
msgid "multilib exclusion '%s' is invalid"
msgstr ""
-#: gcc.c:7989
+#: gcc.c:8003
#, c-format
msgid "environment variable \"%s\" not defined"
msgstr ""
-#: gcc.c:8080 gcc.c:8085
+#: gcc.c:8094 gcc.c:8099
#, c-format
msgid "invalid version number `%s'"
msgstr ""
-#: gcc.c:8128
+#: gcc.c:8142
#, c-format
msgid "too few arguments to %%:version-compare"
msgstr ""
-#: gcc.c:8134
+#: gcc.c:8148
#, c-format
msgid "too many arguments to %%:version-compare"
msgstr ""
-#: gcc.c:8175
+#: gcc.c:8189
#, c-format
msgid "unknown operator '%s' in %%:version-compare"
msgstr ""
-#: gcc.c:8209
+#: gcc.c:8223
#, c-format
msgid ""
"Assembler options\n"
@@ -1367,7 +1421,7 @@ msgid ""
"\n"
msgstr ""
-#: gcc.c:8210
+#: gcc.c:8224
#, c-format
msgid ""
"Use \"-Wa,OPTION\" to pass \"OPTION\" to the assembler.\n"
@@ -1669,12 +1723,16 @@ msgstr ""
msgid "%s:cannot open source file\n"
msgstr ""
-#: gcse.c:699
+#: gcse.c:3944
+msgid "PRE disabled"
+msgstr ""
+
+#: gcse.c:4425
msgid "GCSE disabled"
msgstr ""
-#: gcse.c:6506
-msgid "jump bypassing disabled"
+#: gcse.c:4942
+msgid "const/copy propagation disabled"
msgstr ""
#: incpath.c:76
@@ -1708,12 +1766,12 @@ msgid "End of search list.\n"
msgstr ""
#. Opening quotation mark.
-#: intl.c:58
+#: intl.c:64
msgid "`"
msgstr ""
#. Closing quotation mark.
-#: intl.c:61
+#: intl.c:67
msgid "'"
msgstr ""
@@ -1721,127 +1779,128 @@ msgstr ""
msgid "At top level:"
msgstr ""
-#: langhooks.c:382
+#: langhooks.c:382 cp/error.c:2661
#, c-format
msgid "In member function %qs"
msgstr ""
-#: langhooks.c:386
+#: langhooks.c:386 cp/error.c:2664
#, c-format
msgid "In function %qs"
msgstr ""
-#: langhooks.c:437
+#: langhooks.c:437 cp/error.c:2620
#, c-format
msgid " inlined from %qs at %s:%d:%d"
msgstr ""
-#: langhooks.c:442
+#: langhooks.c:442 cp/error.c:2625
#, c-format
msgid " inlined from %qs at %s:%d"
msgstr ""
-#: langhooks.c:448
+#: langhooks.c:448 cp/error.c:2631
#, c-format
msgid " inlined from %qs"
msgstr ""
-#: loop-iv.c:2942 tree-ssa-loop-niter.c:1871
+#: loop-iv.c:2965 tree-ssa-loop-niter.c:1871
msgid "assuming that the loop is not infinite"
msgstr ""
-#: loop-iv.c:2943 tree-ssa-loop-niter.c:1872
+#: loop-iv.c:2966 tree-ssa-loop-niter.c:1872
msgid "cannot optimize possibly infinite loops"
msgstr ""
-#: loop-iv.c:2951 tree-ssa-loop-niter.c:1876
+#: loop-iv.c:2974 tree-ssa-loop-niter.c:1876
msgid "assuming that the loop counter does not overflow"
msgstr ""
-#: loop-iv.c:2952 tree-ssa-loop-niter.c:1877
+#: loop-iv.c:2975 tree-ssa-loop-niter.c:1877
msgid "cannot optimize loop, the loop counter may overflow"
msgstr ""
-#: opts.c:343
+#. What to print when a switch has no documentation.
+#: opts.c:339
msgid "This switch lacks documentation"
msgstr ""
-#: opts.c:1252
+#: opts.c:1265
msgid "[enabled]"
msgstr ""
-#: opts.c:1252
+#: opts.c:1265
msgid "[disabled]"
msgstr ""
-#: opts.c:1267
+#: opts.c:1280
#, c-format
msgid " No options with the desired characteristics were found\n"
msgstr ""
-#: opts.c:1276
+#: opts.c:1289
#, c-format
msgid ""
" None found. Use --help=%s to show *all* the options supported by the %s "
"front-end\n"
msgstr ""
-#: opts.c:1282
+#: opts.c:1295
#, c-format
msgid ""
" All options with the desired characteristics have already been displayed\n"
msgstr ""
-#: opts.c:1336
+#: opts.c:1349
msgid "The following options are target specific"
msgstr ""
-#: opts.c:1339
+#: opts.c:1352
msgid "The following options control compiler warning messages"
msgstr ""
-#: opts.c:1342
+#: opts.c:1355
msgid "The following options control optimizations"
msgstr ""
-#: opts.c:1345 opts.c:1384
+#: opts.c:1358 opts.c:1397
msgid "The following options are language-independent"
msgstr ""
-#: opts.c:1348
+#: opts.c:1361
msgid "The --param option recognizes the following as parameters"
msgstr ""
-#: opts.c:1354
+#: opts.c:1367
msgid "The following options are specific to just the language "
msgstr ""
-#: opts.c:1356
+#: opts.c:1369
msgid "The following options are supported by the language "
msgstr ""
-#: opts.c:1367
+#: opts.c:1380
msgid "The following options are not documented"
msgstr ""
-#: opts.c:1369
+#: opts.c:1382
msgid "The following options take separate arguments"
msgstr ""
-#: opts.c:1371
+#: opts.c:1384
msgid "The following options take joined arguments"
msgstr ""
-#: opts.c:1382
+#: opts.c:1395
msgid "The following options are language-related"
msgstr ""
-#: opts.c:1542
+#: opts.c:1555
#, c-format
msgid "warning: --help argument %.*s is ambiguous, please be more specific\n"
msgstr ""
-#: opts.c:1550
+#: opts.c:1563
#, c-format
msgid "warning: unrecognized argument to --help= option: %.*s\n"
msgstr ""
@@ -1860,11 +1919,11 @@ msgid "could not find a spill register"
msgstr ""
#. It's the compiler's fault.
-#: reload1.c:7576
+#: reload1.c:7597
msgid "VOIDmode on an output"
msgstr ""
-#: reload1.c:8331
+#: reload1.c:8352
msgid "Failure trying to reload:"
msgstr ""
@@ -1922,70 +1981,70 @@ msgstr ""
msgid "collect: relinking\n"
msgstr ""
-#: toplev.c:604
+#: toplev.c:606
#, c-format
msgid "unrecoverable error"
msgstr ""
-#: toplev.c:1112
+#: toplev.c:1168
#, c-format
msgid ""
"%s%s%s %sversion %s (%s)\n"
"%s\tcompiled by GNU C version %s, "
msgstr ""
-#: toplev.c:1114
+#: toplev.c:1170
#, c-format
msgid "%s%s%s %sversion %s (%s) compiled by CC, "
msgstr ""
-#: toplev.c:1118
+#: toplev.c:1174
#, c-format
msgid "GMP version %s, MPFR version %s.\n"
msgstr ""
-#: toplev.c:1120
+#: toplev.c:1176
#, c-format
msgid "%s%swarning: %s header version %s differs from library version %s.\n"
msgstr ""
-#: toplev.c:1122
+#: toplev.c:1178
#, c-format
msgid ""
"%s%sGGC heuristics: --param ggc-min-expand=%d --param ggc-min-heapsize=%d\n"
msgstr ""
-#: toplev.c:1276
+#: toplev.c:1336
msgid "options passed: "
msgstr ""
-#: toplev.c:1310
+#: toplev.c:1370
msgid "options enabled: "
msgstr ""
-#: toplev.c:1445
+#: toplev.c:1505
#, c-format
msgid "created and used with differing settings of '%s'"
msgstr ""
-#: toplev.c:1447
+#: toplev.c:1507
msgid "out of memory"
msgstr ""
-#: toplev.c:1462
+#: toplev.c:1522
msgid "created and used with different settings of -fpic"
msgstr ""
-#: toplev.c:1464
+#: toplev.c:1524
msgid "created and used with different settings of -fpie"
msgstr ""
-#: tree-vrp.c:6501
+#: tree-vrp.c:6517
msgid ""
"assuming signed overflow does not occur when simplifying && or || to & or |"
msgstr ""
-#: tree-vrp.c:6505
+#: tree-vrp.c:6521
msgid ""
"assuming signed overflow does not occur when simplifying ==, != or ! to "
"identity or ^"
@@ -2635,102 +2694,102 @@ msgstr ""
msgid "max basic blocks number in loop for loop invariant motion"
msgstr ""
-#: config/alpha/alpha.c:5039
+#: config/alpha/alpha.c:5054
#, c-format
msgid "invalid %%H value"
msgstr ""
-#: config/alpha/alpha.c:5060 config/bfin/bfin.c:1646
+#: config/alpha/alpha.c:5075 config/bfin/bfin.c:1631
#, c-format
msgid "invalid %%J value"
msgstr ""
-#: config/alpha/alpha.c:5090 config/ia64/ia64.c:4744
+#: config/alpha/alpha.c:5105 config/ia64/ia64.c:4765
#, c-format
msgid "invalid %%r value"
msgstr ""
-#: config/alpha/alpha.c:5100 config/ia64/ia64.c:4698
-#: config/rs6000/rs6000.c:12243 config/xtensa/xtensa.c:2238
+#: config/alpha/alpha.c:5115 config/ia64/ia64.c:4719
+#: config/rs6000/rs6000.c:12250 config/xtensa/xtensa.c:2242
#, c-format
msgid "invalid %%R value"
msgstr ""
-#: config/alpha/alpha.c:5106 config/rs6000/rs6000.c:12162
-#: config/xtensa/xtensa.c:2205
+#: config/alpha/alpha.c:5121 config/rs6000/rs6000.c:12169
+#: config/xtensa/xtensa.c:2209
#, c-format
msgid "invalid %%N value"
msgstr ""
-#: config/alpha/alpha.c:5114 config/rs6000/rs6000.c:12190
+#: config/alpha/alpha.c:5129 config/rs6000/rs6000.c:12197
#, c-format
msgid "invalid %%P value"
msgstr ""
-#: config/alpha/alpha.c:5122
+#: config/alpha/alpha.c:5137
#, c-format
msgid "invalid %%h value"
msgstr ""
-#: config/alpha/alpha.c:5130 config/xtensa/xtensa.c:2231
+#: config/alpha/alpha.c:5145 config/xtensa/xtensa.c:2235
#, c-format
msgid "invalid %%L value"
msgstr ""
-#: config/alpha/alpha.c:5169 config/rs6000/rs6000.c:12144
+#: config/alpha/alpha.c:5184 config/rs6000/rs6000.c:12151
#, c-format
msgid "invalid %%m value"
msgstr ""
-#: config/alpha/alpha.c:5177 config/rs6000/rs6000.c:12152
+#: config/alpha/alpha.c:5192 config/rs6000/rs6000.c:12159
#, c-format
msgid "invalid %%M value"
msgstr ""
-#: config/alpha/alpha.c:5221
+#: config/alpha/alpha.c:5236
#, c-format
msgid "invalid %%U value"
msgstr ""
-#: config/alpha/alpha.c:5233 config/alpha/alpha.c:5247
-#: config/rs6000/rs6000.c:12251
+#: config/alpha/alpha.c:5248 config/alpha/alpha.c:5262
+#: config/rs6000/rs6000.c:12258
#, c-format
msgid "invalid %%s value"
msgstr ""
-#: config/alpha/alpha.c:5270
+#: config/alpha/alpha.c:5285
#, c-format
msgid "invalid %%C value"
msgstr ""
-#: config/alpha/alpha.c:5307 config/rs6000/rs6000.c:11979
-#: config/rs6000/rs6000.c:11998
+#: config/alpha/alpha.c:5322 config/rs6000/rs6000.c:11986
+#: config/rs6000/rs6000.c:12005
#, c-format
msgid "invalid %%E value"
msgstr ""
-#: config/alpha/alpha.c:5332 config/alpha/alpha.c:5380
+#: config/alpha/alpha.c:5347 config/alpha/alpha.c:5395
#, c-format
msgid "unknown relocation unspec"
msgstr ""
-#: config/alpha/alpha.c:5341 config/crx/crx.c:1081
-#: config/rs6000/rs6000.c:12582 config/spu/spu.c:1540
+#: config/alpha/alpha.c:5356 config/crx/crx.c:1081
+#: config/rs6000/rs6000.c:12589 config/spu/spu.c:1614
#, c-format
msgid "invalid %%xn code"
msgstr ""
-#: config/arc/arc.c:1729 config/m32r/m32r.c:1806
+#: config/arc/arc.c:1729 config/m32r/m32r.c:1820
#, c-format
msgid "invalid operand to %%R code"
msgstr ""
-#: config/arc/arc.c:1761 config/m32r/m32r.c:1829
+#: config/arc/arc.c:1761 config/m32r/m32r.c:1843
#, c-format
msgid "invalid operand to %%H/%%L code"
msgstr ""
-#: config/arc/arc.c:1783 config/m32r/m32r.c:1900
+#: config/arc/arc.c:1783 config/m32r/m32r.c:1914
#, c-format
msgid "invalid operand to %%U code"
msgstr ""
@@ -2742,105 +2801,105 @@ msgstr ""
#. Unknown flag.
#. Undocumented flag.
-#: config/arc/arc.c:1801 config/m32r/m32r.c:1927 config/sparc/sparc.c:7044
+#: config/arc/arc.c:1801 config/m32r/m32r.c:1941 config/sparc/sparc.c:7048
#, c-format
msgid "invalid operand output code"
msgstr ""
-#: config/arm/arm.c:13318 config/arm/arm.c:13336
+#: config/arm/arm.c:13323 config/arm/arm.c:13341
#, c-format
msgid "predicated Thumb instruction"
msgstr ""
-#: config/arm/arm.c:13324
+#: config/arm/arm.c:13329
#, c-format
msgid "predicated instruction in conditional sequence"
msgstr ""
-#: config/arm/arm.c:13494
+#: config/arm/arm.c:13499
#, c-format
msgid "invalid shift operand"
msgstr ""
-#: config/arm/arm.c:13541 config/arm/arm.c:13551 config/arm/arm.c:13561
-#: config/arm/arm.c:13571 config/arm/arm.c:13581 config/arm/arm.c:13620
-#: config/arm/arm.c:13638 config/arm/arm.c:13673 config/arm/arm.c:13692
-#: config/arm/arm.c:13707 config/arm/arm.c:13735 config/arm/arm.c:13742
-#: config/arm/arm.c:13750 config/arm/arm.c:13771 config/arm/arm.c:13778
-#: config/bfin/bfin.c:1659 config/bfin/bfin.c:1666 config/bfin/bfin.c:1673
-#: config/bfin/bfin.c:1680 config/bfin/bfin.c:1689 config/bfin/bfin.c:1696
-#: config/bfin/bfin.c:1703 config/bfin/bfin.c:1710
+#: config/arm/arm.c:13546 config/arm/arm.c:13556 config/arm/arm.c:13566
+#: config/arm/arm.c:13576 config/arm/arm.c:13586 config/arm/arm.c:13625
+#: config/arm/arm.c:13643 config/arm/arm.c:13678 config/arm/arm.c:13697
+#: config/arm/arm.c:13712 config/arm/arm.c:13740 config/arm/arm.c:13747
+#: config/arm/arm.c:13755 config/arm/arm.c:13776 config/arm/arm.c:13783
+#: config/bfin/bfin.c:1644 config/bfin/bfin.c:1651 config/bfin/bfin.c:1658
+#: config/bfin/bfin.c:1665 config/bfin/bfin.c:1674 config/bfin/bfin.c:1681
+#: config/bfin/bfin.c:1688 config/bfin/bfin.c:1695
#, c-format
msgid "invalid operand for code '%c'"
msgstr ""
-#: config/arm/arm.c:13633
+#: config/arm/arm.c:13638
#, c-format
msgid "instruction never executed"
msgstr ""
-#: config/arm/arm.c:13845
+#: config/arm/arm.c:13850
#, c-format
msgid "missing operand"
msgstr ""
-#: config/avr/avr.c:1194
+#: config/avr/avr.c:1212
#, c-format
msgid "address operand requires constraint for X, Y, or Z register"
msgstr ""
-#: config/avr/avr.c:1306
+#: config/avr/avr.c:1324
msgid "bad address, not (reg+disp):"
msgstr ""
-#: config/avr/avr.c:1313
+#: config/avr/avr.c:1331
msgid "bad address, not post_inc or pre_dec:"
msgstr ""
-#: config/avr/avr.c:1324
+#: config/avr/avr.c:1342
msgid "internal compiler error. Bad address:"
msgstr ""
-#: config/avr/avr.c:1337
+#: config/avr/avr.c:1355
msgid "internal compiler error. Unknown mode:"
msgstr ""
-#: config/avr/avr.c:1932 config/avr/avr.c:2620
+#: config/avr/avr.c:1950 config/avr/avr.c:2638
msgid "invalid insn:"
msgstr ""
-#: config/avr/avr.c:1971 config/avr/avr.c:2057 config/avr/avr.c:2106
-#: config/avr/avr.c:2134 config/avr/avr.c:2229 config/avr/avr.c:2398
-#: config/avr/avr.c:2659 config/avr/avr.c:2771
+#: config/avr/avr.c:1989 config/avr/avr.c:2075 config/avr/avr.c:2124
+#: config/avr/avr.c:2152 config/avr/avr.c:2247 config/avr/avr.c:2416
+#: config/avr/avr.c:2677 config/avr/avr.c:2789
msgid "incorrect insn:"
msgstr ""
-#: config/avr/avr.c:2153 config/avr/avr.c:2314 config/avr/avr.c:2469
-#: config/avr/avr.c:2837
+#: config/avr/avr.c:2171 config/avr/avr.c:2332 config/avr/avr.c:2487
+#: config/avr/avr.c:2855
msgid "unknown move insn:"
msgstr ""
-#: config/avr/avr.c:3067
+#: config/avr/avr.c:3085
msgid "bad shift insn:"
msgstr ""
-#: config/avr/avr.c:3183 config/avr/avr.c:3603 config/avr/avr.c:3961
+#: config/avr/avr.c:3201 config/avr/avr.c:3621 config/avr/avr.c:3979
msgid "internal compiler error. Incorrect shift:"
msgstr ""
-#: config/bfin/bfin.c:1608
+#: config/bfin/bfin.c:1593
#, c-format
msgid "invalid %%j value"
msgstr ""
-#: config/bfin/bfin.c:1801
+#: config/bfin/bfin.c:1786
#, c-format
msgid "invalid const_double operand"
msgstr ""
-#: config/cris/cris.c:504 c-typeck.c:5207 c-typeck.c:5223 c-typeck.c:5240
-#: final.c:3010 final.c:3012 gcc.c:4926 loop-iv.c:2944 loop-iv.c:2953
-#: rtl-error.c:105 toplev.c:608 tree-ssa-loop-niter.c:1882 cp/typeck.c:4743
+#: config/cris/cris.c:504 c-typeck.c:5217 c-typeck.c:5233 c-typeck.c:5250
+#: final.c:3010 final.c:3012 gcc.c:4940 loop-iv.c:2967 loop-iv.c:2976
+#: rtl-error.c:105 toplev.c:610 tree-ssa-loop-niter.c:1882 cp/typeck.c:4743
#: java/expr.c:411
#, gcc-internal-format
msgid "%s"
@@ -2983,81 +3042,81 @@ msgstr ""
msgid "fr30_print_operand: unhandled MEM"
msgstr ""
-#: config/frv/frv.c:2552
+#: config/frv/frv.c:2589
msgid "bad insn to frv_print_operand_address:"
msgstr ""
-#: config/frv/frv.c:2563
+#: config/frv/frv.c:2600
msgid "bad register to frv_print_operand_memory_reference_reg:"
msgstr ""
-#: config/frv/frv.c:2602 config/frv/frv.c:2612 config/frv/frv.c:2621
-#: config/frv/frv.c:2642 config/frv/frv.c:2647
+#: config/frv/frv.c:2639 config/frv/frv.c:2649 config/frv/frv.c:2658
+#: config/frv/frv.c:2679 config/frv/frv.c:2684
msgid "bad insn to frv_print_operand_memory_reference:"
msgstr ""
-#: config/frv/frv.c:2733
+#: config/frv/frv.c:2770
#, c-format
msgid "bad condition code"
msgstr ""
-#: config/frv/frv.c:2808
+#: config/frv/frv.c:2845
msgid "bad insn in frv_print_operand, bad const_double"
msgstr ""
-#: config/frv/frv.c:2869
+#: config/frv/frv.c:2906
msgid "bad insn to frv_print_operand, 'e' modifier:"
msgstr ""
-#: config/frv/frv.c:2877
+#: config/frv/frv.c:2914
msgid "bad insn to frv_print_operand, 'F' modifier:"
msgstr ""
-#: config/frv/frv.c:2893
+#: config/frv/frv.c:2930
msgid "bad insn to frv_print_operand, 'f' modifier:"
msgstr ""
-#: config/frv/frv.c:2907
+#: config/frv/frv.c:2944
msgid "bad insn to frv_print_operand, 'g' modifier:"
msgstr ""
-#: config/frv/frv.c:2955
+#: config/frv/frv.c:2992
msgid "bad insn to frv_print_operand, 'L' modifier:"
msgstr ""
-#: config/frv/frv.c:2968
+#: config/frv/frv.c:3005
msgid "bad insn to frv_print_operand, 'M/N' modifier:"
msgstr ""
-#: config/frv/frv.c:2989
+#: config/frv/frv.c:3026
msgid "bad insn to frv_print_operand, 'O' modifier:"
msgstr ""
-#: config/frv/frv.c:3007
+#: config/frv/frv.c:3044
msgid "bad insn to frv_print_operand, P modifier:"
msgstr ""
-#: config/frv/frv.c:3027
+#: config/frv/frv.c:3064
msgid "bad insn in frv_print_operand, z case"
msgstr ""
-#: config/frv/frv.c:3058
+#: config/frv/frv.c:3095
msgid "bad insn in frv_print_operand, 0 case"
msgstr ""
-#: config/frv/frv.c:3063
+#: config/frv/frv.c:3100
msgid "frv_print_operand: unknown code"
msgstr ""
-#: config/frv/frv.c:4432
+#: config/frv/frv.c:4469
msgid "bad output_move_single operand"
msgstr ""
-#: config/frv/frv.c:4559
+#: config/frv/frv.c:4596
msgid "bad output_move_double operand"
msgstr ""
-#: config/frv/frv.c:4701
+#: config/frv/frv.c:4738
msgid "bad output_condmove_single operand"
msgstr ""
@@ -3075,51 +3134,61 @@ msgstr ""
msgid " (frv)"
msgstr ""
-#: config/i386/i386.c:10364
+#: config/i386/i386.c:10366
#, c-format
msgid "invalid UNSPEC as operand"
msgstr ""
-#: config/i386/i386.c:11089 config/i386/i386.c:11128 config/i386/i386.c:11302
+#: config/i386/i386.c:10980 config/i386/i386.c:11055
+#, c-format
+msgid "invalid operand size for operand code '%c'"
+msgstr ""
+
+#: config/i386/i386.c:11050
+#, c-format
+msgid "invalid operand type used with operand code '%c'"
+msgstr ""
+
+#: config/i386/i386.c:11130 config/i386/i386.c:11169 config/i386/i386.c:11343
#, c-format
msgid "operand is not a condition code, invalid operand code 'D'"
msgstr ""
-#: config/i386/i386.c:11153
+#: config/i386/i386.c:11194
#, c-format
msgid ""
"operand is neither a constant nor a condition code, invalid operand code 'C'"
msgstr ""
-#: config/i386/i386.c:11163
+#: config/i386/i386.c:11204
#, c-format
msgid ""
"operand is neither a constant nor a condition code, invalid operand code 'F'"
msgstr ""
-#: config/i386/i386.c:11181
+#: config/i386/i386.c:11222
#, c-format
msgid ""
"operand is neither a constant nor a condition code, invalid operand code 'c'"
msgstr ""
-#: config/i386/i386.c:11191
+#: config/i386/i386.c:11232
#, c-format
msgid ""
"operand is neither a constant nor a condition code, invalid operand code 'f'"
msgstr ""
-#: config/i386/i386.c:11316
+#: config/i386/i386.c:11357
#, c-format
msgid "invalid operand code '%c'"
msgstr ""
-#: config/i386/i386.c:11365
+#: config/i386/i386.c:11406
#, c-format
msgid "invalid constraints for operand"
msgstr ""
-#: config/i386/i386.c:19347
+#: config/i386/i386.c:19388
msgid "unknown insn mode"
msgstr ""
@@ -3140,133 +3209,138 @@ msgstr ""
msgid "environment variable DJGPP points to corrupt file '%s'"
msgstr ""
-#: config/ia64/ia64.c:4796
+#: config/ia64/ia64.c:4647
+#, c-format
+msgid "invalid %%G mode"
+msgstr ""
+
+#: config/ia64/ia64.c:4817
#, c-format
msgid "ia64_print_operand: unknown code"
msgstr ""
-#: config/ia64/ia64.c:10474
+#: config/ia64/ia64.c:10495
msgid "invalid conversion from %<__fpreg%>"
msgstr ""
-#: config/ia64/ia64.c:10477
+#: config/ia64/ia64.c:10498
msgid "invalid conversion to %<__fpreg%>"
msgstr ""
-#: config/ia64/ia64.c:10490 config/ia64/ia64.c:10501
+#: config/ia64/ia64.c:10511 config/ia64/ia64.c:10522
msgid "invalid operation on %<__fpreg%>"
msgstr ""
-#: config/iq2000/iq2000.c:3122
+#: config/iq2000/iq2000.c:3137
#, c-format
msgid "invalid %%P operand"
msgstr ""
-#: config/iq2000/iq2000.c:3130 config/rs6000/rs6000.c:12180
+#: config/iq2000/iq2000.c:3145 config/rs6000/rs6000.c:12187
#, c-format
msgid "invalid %%p value"
msgstr ""
-#: config/iq2000/iq2000.c:3186
+#: config/iq2000/iq2000.c:3201
#, c-format
msgid "invalid use of %%d, %%x, or %%X"
msgstr ""
-#: config/m32r/m32r.c:1776
+#: config/m32r/m32r.c:1790
#, c-format
msgid "invalid operand to %%s code"
msgstr ""
-#: config/m32r/m32r.c:1783
+#: config/m32r/m32r.c:1797
#, c-format
msgid "invalid operand to %%p code"
msgstr ""
-#: config/m32r/m32r.c:1838
+#: config/m32r/m32r.c:1852
msgid "bad insn for 'A'"
msgstr ""
-#: config/m32r/m32r.c:1885
+#: config/m32r/m32r.c:1899
#, c-format
msgid "invalid operand to %%T/%%B code"
msgstr ""
-#: config/m32r/m32r.c:1908
+#: config/m32r/m32r.c:1922
#, c-format
msgid "invalid operand to %%N code"
msgstr ""
-#: config/m32r/m32r.c:1941
+#: config/m32r/m32r.c:1955
msgid "pre-increment address is not a register"
msgstr ""
-#: config/m32r/m32r.c:1948
+#: config/m32r/m32r.c:1962
msgid "pre-decrement address is not a register"
msgstr ""
-#: config/m32r/m32r.c:1955
+#: config/m32r/m32r.c:1969
msgid "post-increment address is not a register"
msgstr ""
-#: config/m32r/m32r.c:2031 config/m32r/m32r.c:2045
-#: config/rs6000/rs6000.c:20950
+#: config/m32r/m32r.c:2045 config/m32r/m32r.c:2059
+#: config/rs6000/rs6000.c:20957
msgid "bad address"
msgstr ""
-#: config/m32r/m32r.c:2050
+#: config/m32r/m32r.c:2064
msgid "lo_sum not of register"
msgstr ""
#. !!!! SCz wrong here.
-#: config/m68hc11/m68hc11.c:3189 config/m68hc11/m68hc11.c:3567
+#: config/m68hc11/m68hc11.c:3181 config/m68hc11/m68hc11.c:3559
msgid "move insn not handled"
msgstr ""
-#: config/m68hc11/m68hc11.c:3413 config/m68hc11/m68hc11.c:3497
-#: config/m68hc11/m68hc11.c:3770
+#: config/m68hc11/m68hc11.c:3405 config/m68hc11/m68hc11.c:3489
+#: config/m68hc11/m68hc11.c:3762
msgid "invalid register in the move instruction"
msgstr ""
-#: config/m68hc11/m68hc11.c:3447
+#: config/m68hc11/m68hc11.c:3439
msgid "invalid operand in the instruction"
msgstr ""
-#: config/m68hc11/m68hc11.c:3744
+#: config/m68hc11/m68hc11.c:3736
msgid "invalid register in the instruction"
msgstr ""
-#: config/m68hc11/m68hc11.c:3777
+#: config/m68hc11/m68hc11.c:3769
msgid "operand 1 must be a hard register"
msgstr ""
-#: config/m68hc11/m68hc11.c:3791
+#: config/m68hc11/m68hc11.c:3783
msgid "invalid rotate insn"
msgstr ""
-#: config/m68hc11/m68hc11.c:4215
+#: config/m68hc11/m68hc11.c:4207
msgid "registers IX, IY and Z used in the same INSN"
msgstr ""
-#: config/m68hc11/m68hc11.c:4548 config/m68hc11/m68hc11.c:4848
+#: config/m68hc11/m68hc11.c:4540 config/m68hc11/m68hc11.c:4840
msgid "cannot do z-register replacement"
msgstr ""
-#: config/m68hc11/m68hc11.c:4911
+#: config/m68hc11/m68hc11.c:4903
msgid "invalid Z register replacement for insn"
msgstr ""
-#: config/mips/mips.c:7134 config/mips/mips.c:7155 config/mips/mips.c:7267
+#: config/mips/mips.c:7131 config/mips/mips.c:7152 config/mips/mips.c:7264
#, c-format
msgid "'%%%c' is not a valid operand prefix"
msgstr ""
-#: config/mips/mips.c:7204 config/mips/mips.c:7211 config/mips/mips.c:7218
-#: config/mips/mips.c:7225 config/mips/mips.c:7285
+#: config/mips/mips.c:7201 config/mips/mips.c:7208 config/mips/mips.c:7215
+#: config/mips/mips.c:7222 config/mips/mips.c:7282
#, c-format
msgid "invalid use of '%%%c'"
msgstr ""
-#: config/mips/mips.c:7537
+#: config/mips/mips.c:7534
msgid "mips_debugger_offset called with non stack/frame/arg pointer"
msgstr ""
@@ -3337,77 +3411,77 @@ msgstr ""
msgid "Try running '%s' in the shell to raise its limit.\n"
msgstr ""
-#: config/rs6000/rs6000.c:12007
+#: config/rs6000/rs6000.c:12014
#, c-format
msgid "invalid %%f value"
msgstr ""
-#: config/rs6000/rs6000.c:12016
+#: config/rs6000/rs6000.c:12023
#, c-format
msgid "invalid %%F value"
msgstr ""
-#: config/rs6000/rs6000.c:12025
+#: config/rs6000/rs6000.c:12032
#, c-format
msgid "invalid %%G value"
msgstr ""
-#: config/rs6000/rs6000.c:12060
+#: config/rs6000/rs6000.c:12067
#, c-format
msgid "invalid %%j code"
msgstr ""
-#: config/rs6000/rs6000.c:12070
+#: config/rs6000/rs6000.c:12077
#, c-format
msgid "invalid %%J code"
msgstr ""
-#: config/rs6000/rs6000.c:12080
+#: config/rs6000/rs6000.c:12087
#, c-format
msgid "invalid %%k value"
msgstr ""
-#: config/rs6000/rs6000.c:12100 config/xtensa/xtensa.c:2224
+#: config/rs6000/rs6000.c:12107 config/xtensa/xtensa.c:2228
#, c-format
msgid "invalid %%K value"
msgstr ""
-#: config/rs6000/rs6000.c:12170
+#: config/rs6000/rs6000.c:12177
#, c-format
msgid "invalid %%O value"
msgstr ""
-#: config/rs6000/rs6000.c:12217
+#: config/rs6000/rs6000.c:12224
#, c-format
msgid "invalid %%q value"
msgstr ""
-#: config/rs6000/rs6000.c:12261
+#: config/rs6000/rs6000.c:12268
#, c-format
msgid "invalid %%S value"
msgstr ""
-#: config/rs6000/rs6000.c:12301
+#: config/rs6000/rs6000.c:12308
#, c-format
msgid "invalid %%T value"
msgstr ""
-#: config/rs6000/rs6000.c:12311
+#: config/rs6000/rs6000.c:12318
#, c-format
msgid "invalid %%u value"
msgstr ""
-#: config/rs6000/rs6000.c:12320 config/xtensa/xtensa.c:2194
+#: config/rs6000/rs6000.c:12327 config/xtensa/xtensa.c:2198
#, c-format
msgid "invalid %%v value"
msgstr ""
-#: config/rs6000/rs6000.c:12541
+#: config/rs6000/rs6000.c:12548
#, c-format
msgid "invalid %%y value, try using the 'Z' constraint"
msgstr ""
-#: config/rs6000/rs6000.c:22818
+#: config/rs6000/rs6000.c:22826
msgid "AltiVec argument passed to unprototyped function"
msgstr ""
@@ -3420,75 +3494,75 @@ msgstr ""
msgid "UNKNOWN in print_operand !?"
msgstr ""
-#: config/score/score3.c:1265 config/score/score3.c:1285
-#: config/score/score7.c:1256
+#: config/score/score3.c:1262 config/score/score3.c:1282
+#: config/score/score7.c:1253
#, c-format
msgid "invalid operand for code: '%c'"
msgstr ""
-#: config/sh/sh.c:782
+#: config/sh/sh.c:785
#, c-format
msgid "invalid operand to %%R"
msgstr ""
-#: config/sh/sh.c:809
+#: config/sh/sh.c:812
#, c-format
msgid "invalid operand to %%S"
msgstr ""
-#: config/sh/sh.c:8394
+#: config/sh/sh.c:8384
msgid "created and used with different architectures / ABIs"
msgstr ""
-#: config/sh/sh.c:8396
+#: config/sh/sh.c:8386
msgid "created and used with different ABIs"
msgstr ""
-#: config/sh/sh.c:8398
+#: config/sh/sh.c:8388
msgid "created and used with different endianness"
msgstr ""
-#: config/sparc/sparc.c:6852 config/sparc/sparc.c:6858
+#: config/sparc/sparc.c:6856 config/sparc/sparc.c:6862
#, c-format
msgid "invalid %%Y operand"
msgstr ""
-#: config/sparc/sparc.c:6928
+#: config/sparc/sparc.c:6932
#, c-format
msgid "invalid %%A operand"
msgstr ""
-#: config/sparc/sparc.c:6938
+#: config/sparc/sparc.c:6942
#, c-format
msgid "invalid %%B operand"
msgstr ""
-#: config/sparc/sparc.c:6977
+#: config/sparc/sparc.c:6981
#, c-format
msgid "invalid %%c operand"
msgstr ""
-#: config/sparc/sparc.c:6999
+#: config/sparc/sparc.c:7003
#, c-format
msgid "invalid %%d operand"
msgstr ""
-#: config/sparc/sparc.c:7016
+#: config/sparc/sparc.c:7020
#, c-format
msgid "invalid %%f operand"
msgstr ""
-#: config/sparc/sparc.c:7030
+#: config/sparc/sparc.c:7034
#, c-format
msgid "invalid %%s operand"
msgstr ""
-#: config/sparc/sparc.c:7084
+#: config/sparc/sparc.c:7088
#, c-format
msgid "long long constant not a valid immediate operand"
msgstr ""
-#: config/sparc/sparc.c:7087
+#: config/sparc/sparc.c:7091
#, c-format
msgid "floating point constant not a valid immediate operand"
msgstr ""
@@ -3540,44 +3614,44 @@ msgstr ""
msgid "illegal operand detected"
msgstr ""
-#: config/xtensa/xtensa.c:692 config/xtensa/xtensa.c:724
-#: config/xtensa/xtensa.c:733
+#: config/xtensa/xtensa.c:696 config/xtensa/xtensa.c:728
+#: config/xtensa/xtensa.c:737
msgid "bad test"
msgstr ""
-#: config/xtensa/xtensa.c:2182
+#: config/xtensa/xtensa.c:2186
#, c-format
msgid "invalid %%D value"
msgstr ""
-#: config/xtensa/xtensa.c:2219
+#: config/xtensa/xtensa.c:2223
msgid "invalid mask"
msgstr ""
-#: config/xtensa/xtensa.c:2245
+#: config/xtensa/xtensa.c:2249
#, c-format
msgid "invalid %%x value"
msgstr ""
-#: config/xtensa/xtensa.c:2252
+#: config/xtensa/xtensa.c:2256
#, c-format
msgid "invalid %%d value"
msgstr ""
-#: config/xtensa/xtensa.c:2273 config/xtensa/xtensa.c:2283
+#: config/xtensa/xtensa.c:2277 config/xtensa/xtensa.c:2287
#, c-format
msgid "invalid %%t/%%b value"
msgstr ""
-#: config/xtensa/xtensa.c:2325
+#: config/xtensa/xtensa.c:2329
msgid "invalid address"
msgstr ""
-#: config/xtensa/xtensa.c:2350
+#: config/xtensa/xtensa.c:2354
msgid "no register in address"
msgstr ""
-#: config/xtensa/xtensa.c:2358
+#: config/xtensa/xtensa.c:2362
msgid "address offset not a constant"
msgstr ""
@@ -3585,14 +3659,22 @@ msgstr ""
msgid "candidates are:"
msgstr ""
-#: cp/call.c:6892
+#: cp/call.c:6904
msgid "candidate 1:"
msgstr ""
-#: cp/call.c:6893
+#: cp/call.c:6905
msgid "candidate 2:"
msgstr ""
+#: cp/cxx-pretty-print.c:173 cp/error.c:916 objc/objc-act.c:7078
+msgid "<unnamed>"
+msgstr ""
+
+#: cp/cxx-pretty-print.c:2055
+msgid "template-parameter-"
+msgstr ""
+
#: cp/decl2.c:676
msgid "candidates are: %+#D"
msgstr ""
@@ -3601,6 +3683,134 @@ msgstr ""
msgid "candidate is: %+#D"
msgstr ""
+#: cp/error.c:305
+msgid "<missing>"
+msgstr ""
+
+#: cp/error.c:346
+msgid "<brace-enclosed initializer list>"
+msgstr ""
+
+#: cp/error.c:348
+msgid "<unresolved overloaded function type>"
+msgstr ""
+
+#: cp/error.c:488
+msgid "<type error>"
+msgstr ""
+
+#: cp/error.c:587
+#, c-format
+msgid "<anonymous %s>"
+msgstr ""
+
+#: cp/error.c:709
+msgid "<typeprefixerror>"
+msgstr ""
+
+#: cp/error.c:819
+#, c-format
+msgid "(static initializers for %s)"
+msgstr ""
+
+#: cp/error.c:821
+#, c-format
+msgid "(static destructors for %s)"
+msgstr ""
+
+#: cp/error.c:891
+msgid "vtable for "
+msgstr ""
+
+#: cp/error.c:903
+msgid "<return value> "
+msgstr ""
+
+#: cp/error.c:1029
+msgid "<enumerator>"
+msgstr ""
+
+#: cp/error.c:1069
+msgid "<declaration error>"
+msgstr ""
+
+#: cp/error.c:1299
+msgid "with"
+msgstr ""
+
+#: cp/error.c:1464 cp/error.c:1484
+msgid "<template parameter error>"
+msgstr ""
+
+#: cp/error.c:1610
+msgid "<statement>"
+msgstr ""
+
+#. While waiting for caret diagnostics, avoid printing
+#. __cxa_allocate_exception, __cxa_throw, and the like.
+#: cp/error.c:1639
+msgid "<throw-expression>"
+msgstr ""
+
+#: cp/error.c:2085
+msgid "<unparsed>"
+msgstr ""
+
+#: cp/error.c:2231
+msgid "<expression error>"
+msgstr ""
+
+#: cp/error.c:2245
+msgid "<unknown operator>"
+msgstr ""
+
+#: cp/error.c:2449
+msgid "<unknown>"
+msgstr ""
+
+#: cp/error.c:2469
+msgid "{unknown}"
+msgstr ""
+
+#: cp/error.c:2551
+msgid "At global scope:"
+msgstr ""
+
+#: cp/error.c:2653
+#, c-format
+msgid "In static member function %qs"
+msgstr ""
+
+#: cp/error.c:2655
+#, c-format
+msgid "In copy constructor %qs"
+msgstr ""
+
+#: cp/error.c:2657
+#, c-format
+msgid "In constructor %qs"
+msgstr ""
+
+#: cp/error.c:2659
+#, c-format
+msgid "In destructor %qs"
+msgstr ""
+
+#: cp/error.c:2689
+#, c-format
+msgid "%s: In instantiation of %qs:\n"
+msgstr ""
+
+#: cp/error.c:2713
+#, c-format
+msgid "%s:%d: instantiated from %qs\n"
+msgstr ""
+
+#: cp/error.c:2719
+#, c-format
+msgid "%s:%d: instantiated from here"
+msgstr ""
+
#: cp/g++spec.c:254 java/jvspec.c:406
#, c-format
msgid "argument to '%s' missing\n"
@@ -4180,7 +4390,7 @@ msgstr ""
msgid "'%s' argument of '%s' intrinsic at %L must be INTEGER or LOGICAL"
msgstr ""
-#: fortran/cpp.c:381 c-opts.c:906
+#: fortran/cpp.c:381 c-opts.c:902
#, gcc-internal-format
msgid "output filename specified twice"
msgstr ""
@@ -4225,7 +4435,7 @@ msgstr ""
msgid "Data element above array upper bound at %L"
msgstr ""
-#: fortran/data.c:432
+#: fortran/data.c:436
#, no-c-format
msgid "Extension: re-initialization of '%s' at %L"
msgstr ""
@@ -4426,7 +4636,7 @@ msgstr ""
msgid "NULL() initialization at %C is ambiguous"
msgstr ""
-#: fortran/decl.c:1646 fortran/decl.c:5633
+#: fortran/decl.c:1646 fortran/decl.c:5778
#, no-c-format
msgid "Duplicate array spec for Cray pointee at %C"
msgstr ""
@@ -4446,17 +4656,17 @@ msgstr ""
msgid "Extension: Old-style initialization at %C"
msgstr ""
-#: fortran/decl.c:1764 fortran/decl.c:4316
+#: fortran/decl.c:1764 fortran/decl.c:4330
#, no-c-format
msgid "Initialization at %C isn't for a pointer variable"
msgstr ""
-#: fortran/decl.c:1772 fortran/decl.c:4324
+#: fortran/decl.c:1772 fortran/decl.c:4338 fortran/decl.c:4480
#, no-c-format
msgid "Pointer initialization requires a NULL() at %C"
msgstr ""
-#: fortran/decl.c:1778 fortran/decl.c:4330
+#: fortran/decl.c:1778 fortran/decl.c:4344 fortran/decl.c:4485
#, no-c-format
msgid "Initialization of pointer at %C is not allowed in a PURE procedure"
msgstr ""
@@ -4466,7 +4676,7 @@ msgstr ""
msgid "Pointer initialization at %C requires '=>', not '='"
msgstr ""
-#: fortran/decl.c:1800 fortran/decl.c:6719
+#: fortran/decl.c:1800 fortran/decl.c:6864
#, no-c-format
msgid "Expected an initialization expression at %C"
msgstr ""
@@ -4629,7 +4839,7 @@ msgid ""
"module"
msgstr ""
-#: fortran/decl.c:3201 fortran/decl.c:5873
+#: fortran/decl.c:3201 fortran/decl.c:6018
#, no-c-format
msgid "PROTECTED at %C only allowed in specification part of a module"
msgstr ""
@@ -4766,642 +4976,661 @@ msgstr ""
msgid "Unexpected junk after function declaration at %C"
msgstr ""
-#: fortran/decl.c:4068 fortran/decl.c:4957
+#: fortran/decl.c:4068 fortran/decl.c:5102
#, no-c-format
msgid ""
"Fortran 2008: BIND(C) attribute at %L may not be specified for an internal "
"procedure"
msgstr ""
-#: fortran/decl.c:4202
+#: fortran/decl.c:4196
#, no-c-format
msgid "Interface '%s' at %C may not be generic"
msgstr ""
-#: fortran/decl.c:4207
+#: fortran/decl.c:4202
#, no-c-format
msgid "Interface '%s' at %C may not be a statement function"
msgstr ""
-#: fortran/decl.c:4220
+#: fortran/decl.c:4215
#, no-c-format
msgid "Intrinsic procedure '%s' not allowed in PROCEDURE statement at %C"
msgstr ""
-#: fortran/decl.c:4256
+#: fortran/decl.c:4270
#, no-c-format
msgid "BIND(C) attribute at %C requires an interface with BIND(C)"
msgstr ""
-#: fortran/decl.c:4263
+#: fortran/decl.c:4277
#, no-c-format
msgid "BIND(C) procedure with NAME may not have POINTER attribute at %C"
msgstr ""
-#: fortran/decl.c:4269
+#: fortran/decl.c:4283
#, no-c-format
msgid "Dummy procedure at %C may not have BIND(C) attribute with NAME"
msgstr ""
-#: fortran/decl.c:4292
+#: fortran/decl.c:4306
#, no-c-format
msgid "Procedure '%s' at %L already has basic type of %s"
msgstr ""
-#: fortran/decl.c:4353 fortran/decl.c:4401
+#: fortran/decl.c:4367 fortran/decl.c:4547
#, no-c-format
msgid "Syntax error in PROCEDURE statement at %C"
msgstr ""
-#: fortran/decl.c:4375
+#: fortran/decl.c:4410
#, no-c-format
-msgid "PROCEDURE at %C must be in a generic interface"
+msgid "Procedure Pointer Component with PASS at %C not yet implemented"
msgstr ""
-#: fortran/decl.c:4428
+#: fortran/decl.c:4424 fortran/decl.c:7246
#, no-c-format
-msgid ""
-"Fortran 2003: Procedure components at %C are not yet implemented in gfortran"
+msgid "Expected '::' after binding-attributes at %C"
+msgstr ""
+
+#: fortran/decl.c:4431
+#, no-c-format
+msgid "NOPASS or explicit interface required at %C"
msgstr ""
-#: fortran/decl.c:4441
+#: fortran/decl.c:4504
+#, no-c-format
+msgid "Syntax error in procedure pointer component at %C"
+msgstr ""
+
+#: fortran/decl.c:4521
+#, no-c-format
+msgid "PROCEDURE at %C must be in a generic interface"
+msgstr ""
+
+#: fortran/decl.c:4586
#, no-c-format
msgid "Fortran 2003: PROCEDURE statement at %C"
msgstr ""
-#: fortran/decl.c:4509
+#: fortran/decl.c:4654
#, no-c-format
msgid "Expected formal argument list in function definition at %C"
msgstr ""
-#: fortran/decl.c:4533 fortran/decl.c:4537 fortran/decl.c:4739
-#: fortran/decl.c:4743 fortran/decl.c:4925 fortran/decl.c:4929
-#: fortran/symbol.c:1472
+#: fortran/decl.c:4678 fortran/decl.c:4682 fortran/decl.c:4884
+#: fortran/decl.c:4888 fortran/decl.c:5070 fortran/decl.c:5074
+#: fortran/symbol.c:1484
#, no-c-format
msgid "BIND(C) attribute at %L can only be used for variables or common blocks"
msgstr ""
-#: fortran/decl.c:4569
+#: fortran/decl.c:4714
#, no-c-format
msgid "Function '%s' at %C already has a type of %s"
msgstr ""
-#: fortran/decl.c:4661
+#: fortran/decl.c:4806
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a PROGRAM"
msgstr ""
-#: fortran/decl.c:4664
+#: fortran/decl.c:4809
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a MODULE"
msgstr ""
-#: fortran/decl.c:4667
+#: fortran/decl.c:4812
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a BLOCK DATA"
msgstr ""
-#: fortran/decl.c:4671
+#: fortran/decl.c:4816
#, no-c-format
msgid "ENTRY statement at %C cannot appear within an INTERFACE"
msgstr ""
-#: fortran/decl.c:4675
+#: fortran/decl.c:4820
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a DERIVED TYPE block"
msgstr ""
-#: fortran/decl.c:4679
+#: fortran/decl.c:4824
#, no-c-format
msgid "ENTRY statement at %C cannot appear within an IF-THEN block"
msgstr ""
-#: fortran/decl.c:4683
+#: fortran/decl.c:4828
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a DO block"
msgstr ""
-#: fortran/decl.c:4687
+#: fortran/decl.c:4832
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a SELECT block"
msgstr ""
-#: fortran/decl.c:4691
+#: fortran/decl.c:4836
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a FORALL block"
msgstr ""
-#: fortran/decl.c:4695
+#: fortran/decl.c:4840
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a WHERE block"
msgstr ""
-#: fortran/decl.c:4699
+#: fortran/decl.c:4844
#, no-c-format
msgid "ENTRY statement at %C cannot appear within a contained subprogram"
msgstr ""
-#: fortran/decl.c:4717
+#: fortran/decl.c:4862
#, no-c-format
msgid "ENTRY statement at %C cannot appear in a contained procedure"
msgstr ""
-#: fortran/decl.c:4771 fortran/decl.c:4965
+#: fortran/decl.c:4916 fortran/decl.c:5110
#, no-c-format
msgid "Missing required parentheses before BIND(C) at %C"
msgstr ""
-#: fortran/decl.c:5027 fortran/decl.c:5043
+#: fortran/decl.c:5172 fortran/decl.c:5188
#, no-c-format
msgid "Syntax error in NAME= specifier for binding label at %C"
msgstr ""
-#: fortran/decl.c:5058
+#: fortran/decl.c:5203
#, no-c-format
msgid "Missing closing quote '\"' for binding label at %C"
msgstr ""
-#: fortran/decl.c:5067
+#: fortran/decl.c:5212
#, no-c-format
msgid "Missing closing quote ''' for binding label at %C"
msgstr ""
-#: fortran/decl.c:5077
+#: fortran/decl.c:5222
#, no-c-format
msgid "Missing closing paren for binding label at %C"
msgstr ""
-#: fortran/decl.c:5083
+#: fortran/decl.c:5228
#, no-c-format
msgid "No binding name is allowed in BIND(C) at %C"
msgstr ""
-#: fortran/decl.c:5089
+#: fortran/decl.c:5234
#, no-c-format
msgid "For dummy procedure %s, no binding name is allowed in BIND(C) at %C"
msgstr ""
-#: fortran/decl.c:5120
+#: fortran/decl.c:5265
#, no-c-format
msgid "NAME not allowed on BIND(C) for ABSTRACT INTERFACE at %C"
msgstr ""
-#: fortran/decl.c:5293
+#: fortran/decl.c:5438
#, no-c-format
msgid "Unexpected END statement at %C"
msgstr ""
#. We would have required END [something].
-#: fortran/decl.c:5302
+#: fortran/decl.c:5447
#, no-c-format
msgid "%s statement expected at %L"
msgstr ""
-#: fortran/decl.c:5313
+#: fortran/decl.c:5458
#, no-c-format
msgid "Expecting %s statement at %C"
msgstr ""
-#: fortran/decl.c:5328
+#: fortran/decl.c:5473
#, no-c-format
msgid "Expected block name of '%s' in %s statement at %C"
msgstr ""
-#: fortran/decl.c:5345
+#: fortran/decl.c:5490
#, no-c-format
msgid "Expected terminating name at %C"
msgstr ""
-#: fortran/decl.c:5354 fortran/decl.c:5362
+#: fortran/decl.c:5499 fortran/decl.c:5507
#, no-c-format
msgid "Expected label '%s' for %s statement at %C"
msgstr ""
-#: fortran/decl.c:5417
+#: fortran/decl.c:5562
#, no-c-format
msgid "Missing array specification at %L in DIMENSION statement"
msgstr ""
-#: fortran/decl.c:5425
+#: fortran/decl.c:5570
#, no-c-format
msgid "Dimensions specified for %s at %L after its initialisation"
msgstr ""
-#: fortran/decl.c:5434
+#: fortran/decl.c:5579
#, no-c-format
msgid "Array specification must be deferred at %L"
msgstr ""
-#: fortran/decl.c:5513
+#: fortran/decl.c:5658
#, no-c-format
msgid "Unexpected character in variable list at %C"
msgstr ""
-#: fortran/decl.c:5550
+#: fortran/decl.c:5695
#, no-c-format
msgid "Expected '(' at %C"
msgstr ""
-#: fortran/decl.c:5564 fortran/decl.c:5604
+#: fortran/decl.c:5709 fortran/decl.c:5749
#, no-c-format
msgid "Expected variable name at %C"
msgstr ""
-#: fortran/decl.c:5580
+#: fortran/decl.c:5725
#, no-c-format
msgid "Cray pointer at %C must be an integer"
msgstr ""
-#: fortran/decl.c:5584
+#: fortran/decl.c:5729
#, no-c-format
msgid ""
"Cray pointer at %C has %d bytes of precision; memory addresses require %d "
"bytes"
msgstr ""
-#: fortran/decl.c:5590
+#: fortran/decl.c:5735
#, no-c-format
msgid "Expected \",\" at %C"
msgstr ""
-#: fortran/decl.c:5653
+#: fortran/decl.c:5798
#, no-c-format
msgid "Expected \")\" at %C"
msgstr ""
-#: fortran/decl.c:5665
+#: fortran/decl.c:5810
#, no-c-format
msgid "Expected \",\" or end of statement at %C"
msgstr ""
-#: fortran/decl.c:5729
+#: fortran/decl.c:5874
#, no-c-format
msgid "Cray pointer declaration at %C requires -fcray-pointer flag"
msgstr ""
-#: fortran/decl.c:5824
+#: fortran/decl.c:5969
#, no-c-format
msgid ""
"Access specification of the %s operator at %C has already been specified"
msgstr ""
-#: fortran/decl.c:5841
+#: fortran/decl.c:5986
#, no-c-format
msgid ""
"Access specification of the .%s. operator at %C has already been specified"
msgstr ""
-#: fortran/decl.c:5879
+#: fortran/decl.c:6024
#, no-c-format
msgid "Fortran 2003: PROTECTED statement at %C"
msgstr ""
-#: fortran/decl.c:5919
+#: fortran/decl.c:6064
#, no-c-format
msgid "Syntax error in PROTECTED statement at %C"
msgstr ""
-#: fortran/decl.c:5943
+#: fortran/decl.c:6088
#, no-c-format
msgid ""
"PRIVATE statement at %C is only allowed in the specification part of a module"
msgstr ""
-#: fortran/decl.c:5980
+#: fortran/decl.c:6125
#, no-c-format
msgid ""
"PUBLIC statement at %C is only allowed in the specification part of a module"
msgstr ""
-#: fortran/decl.c:6007
+#: fortran/decl.c:6152
#, no-c-format
msgid "Expected variable name at %C in PARAMETER statement"
msgstr ""
-#: fortran/decl.c:6014
+#: fortran/decl.c:6159
#, no-c-format
msgid "Expected = sign in PARAMETER statement at %C"
msgstr ""
-#: fortran/decl.c:6020
+#: fortran/decl.c:6165
#, no-c-format
msgid "Expected expression at %C in PARAMETER statement"
msgstr ""
-#: fortran/decl.c:6040
+#: fortran/decl.c:6185
#, no-c-format
msgid "Initializing already initialized variable at %C"
msgstr ""
-#: fortran/decl.c:6102
+#: fortran/decl.c:6247
#, no-c-format
msgid "Unexpected characters in PARAMETER statement at %C"
msgstr ""
-#: fortran/decl.c:6126
+#: fortran/decl.c:6271
#, no-c-format
msgid "Blanket SAVE statement at %C follows previous SAVE statement"
msgstr ""
-#: fortran/decl.c:6138
+#: fortran/decl.c:6283
#, no-c-format
msgid "SAVE statement at %C follows blanket SAVE statement"
msgstr ""
-#: fortran/decl.c:6185
+#: fortran/decl.c:6330
#, no-c-format
msgid "Syntax error in SAVE statement at %C"
msgstr ""
-#: fortran/decl.c:6196
+#: fortran/decl.c:6341
#, no-c-format
msgid "Fortran 2003: VALUE statement at %C"
msgstr ""
-#: fortran/decl.c:6236
+#: fortran/decl.c:6381
#, no-c-format
msgid "Syntax error in VALUE statement at %C"
msgstr ""
-#: fortran/decl.c:6247
+#: fortran/decl.c:6392
#, no-c-format
msgid "Fortran 2003: VOLATILE statement at %C"
msgstr ""
-#: fortran/decl.c:6289
+#: fortran/decl.c:6434
#, no-c-format
msgid "Syntax error in VOLATILE statement at %C"
msgstr ""
-#: fortran/decl.c:6312
+#: fortran/decl.c:6457
#, no-c-format
msgid "MODULE PROCEDURE at %C must be in a generic module interface"
msgstr ""
-#: fortran/decl.c:6394
+#: fortran/decl.c:6539
#, no-c-format
msgid "Ambiguous symbol in TYPE definition at %C"
msgstr ""
-#: fortran/decl.c:6400
+#: fortran/decl.c:6545
#, no-c-format
msgid "No such symbol in TYPE definition at %C"
msgstr ""
-#: fortran/decl.c:6406
+#: fortran/decl.c:6551
#, no-c-format
msgid "'%s' in EXTENDS expression at %C is not a derived type"
msgstr ""
-#: fortran/decl.c:6413
+#: fortran/decl.c:6558
#, no-c-format
msgid "'%s' cannot be extended at %C because it is BIND(C)"
msgstr ""
-#: fortran/decl.c:6420
+#: fortran/decl.c:6565
#, no-c-format
msgid "'%s' cannot be extended at %C because it is a SEQUENCE type"
msgstr ""
-#: fortran/decl.c:6443
+#: fortran/decl.c:6588
#, no-c-format
msgid ""
"Derived type at %C can only be PRIVATE in the specification part of a module"
msgstr ""
-#: fortran/decl.c:6455
+#: fortran/decl.c:6600
#, no-c-format
msgid ""
"Derived type at %C can only be PUBLIC in the specification part of a module"
msgstr ""
-#: fortran/decl.c:6476
+#: fortran/decl.c:6621
#, no-c-format
msgid "Fortran 2003: ABSTRACT type at %C"
msgstr ""
-#: fortran/decl.c:6540
+#: fortran/decl.c:6685
#, no-c-format
msgid "Expected :: in TYPE definition at %C"
msgstr ""
-#: fortran/decl.c:6551
+#: fortran/decl.c:6696
#, no-c-format
msgid "Type name '%s' at %C cannot be the same as an intrinsic type"
msgstr ""
-#: fortran/decl.c:6561
+#: fortran/decl.c:6706
#, no-c-format
msgid "Derived type name '%s' at %C already has a basic type of %s"
msgstr ""
-#: fortran/decl.c:6577
+#: fortran/decl.c:6722
#, no-c-format
msgid "Derived type definition of '%s' at %C has already been defined"
msgstr ""
-#: fortran/decl.c:6644
+#: fortran/decl.c:6789
#, no-c-format
msgid "Cray Pointee at %C cannot be assumed shape array"
msgstr ""
-#: fortran/decl.c:6664
+#: fortran/decl.c:6809
#, no-c-format
msgid "Fortran 2003: ENUM and ENUMERATOR at %C"
msgstr ""
-#: fortran/decl.c:6736
+#: fortran/decl.c:6881
#, no-c-format
msgid "ENUMERATOR %L not initialized with integer expression"
msgstr ""
-#: fortran/decl.c:6785
+#: fortran/decl.c:6930
#, no-c-format
msgid "ENUM definition statement expected before %C"
msgstr ""
-#: fortran/decl.c:6818
+#: fortran/decl.c:6963
#, no-c-format
msgid "Syntax error in ENUMERATOR definition at %C"
msgstr ""
-#: fortran/decl.c:6865 fortran/decl.c:6880
+#: fortran/decl.c:7011 fortran/decl.c:7026
#, no-c-format
msgid "Duplicate access-specifier at %C"
msgstr ""
-#: fortran/decl.c:6900
+#: fortran/decl.c:7046
#, no-c-format
msgid "Binding attributes already specify passing, illegal NOPASS at %C"
msgstr ""
-#: fortran/decl.c:6918
+#: fortran/decl.c:7066
#, no-c-format
-msgid "Duplicate NON_OVERRIDABLE at %C"
+msgid "Binding attributes already specify passing, illegal PASS at %C"
msgstr ""
-#: fortran/decl.c:6934
+#: fortran/decl.c:7093
#, no-c-format
-msgid "Duplicate DEFERRED at %C"
+msgid "Duplicate POINTER attribute at %C"
msgstr ""
-#: fortran/decl.c:6952
+#: fortran/decl.c:7112
#, no-c-format
-msgid "Binding attributes already specify passing, illegal PASS at %C"
+msgid "Duplicate NON_OVERRIDABLE at %C"
msgstr ""
-#: fortran/decl.c:6973
+#: fortran/decl.c:7128
+#, no-c-format
+msgid "Duplicate DEFERRED at %C"
+msgstr ""
+
+#: fortran/decl.c:7141
#, no-c-format
msgid "Expected access-specifier at %C"
msgstr ""
-#: fortran/decl.c:6975
+#: fortran/decl.c:7143
#, no-c-format
msgid "Expected binding attribute at %C"
msgstr ""
-#: fortran/decl.c:6983
+#: fortran/decl.c:7151
#, no-c-format
msgid "NON_OVERRIDABLE and DEFERRED can't both appear at %C"
msgstr ""
-#: fortran/decl.c:7027
+#: fortran/decl.c:7160
+#, no-c-format
+msgid "POINTER attribute is required for procedure pointer component at %C"
+msgstr ""
+
+#: fortran/decl.c:7202
#, no-c-format
msgid "Interface-name expected after '(' at %C"
msgstr ""
-#: fortran/decl.c:7033
+#: fortran/decl.c:7208
#, no-c-format
msgid "')' expected at %C"
msgstr ""
-#: fortran/decl.c:7055
+#: fortran/decl.c:7230
#, no-c-format
msgid "Interface must be specified for DEFERRED binding at %C"
msgstr ""
-#: fortran/decl.c:7060
+#: fortran/decl.c:7235
#, no-c-format
msgid "PROCEDURE(interface) at %C should be declared DEFERRED"
msgstr ""
-#: fortran/decl.c:7071
-#, no-c-format
-msgid "Expected '::' after binding-attributes at %C"
-msgstr ""
-
-#: fortran/decl.c:7081
+#: fortran/decl.c:7256
#, no-c-format
msgid "Expected binding name at %C"
msgstr ""
-#: fortran/decl.c:7093
+#: fortran/decl.c:7268
#, no-c-format
msgid "'=> target' is invalid for DEFERRED binding at %C"
msgstr ""
-#: fortran/decl.c:7099
+#: fortran/decl.c:7274
#, no-c-format
msgid "'::' needed in PROCEDURE binding with explicit target at %C"
msgstr ""
-#: fortran/decl.c:7109
+#: fortran/decl.c:7284
#, no-c-format
msgid "Expected binding target after '=>' at %C"
msgstr ""
-#: fortran/decl.c:7121
+#: fortran/decl.c:7296
#, no-c-format
msgid "Junk after PROCEDURE declaration at %C"
msgstr ""
-#: fortran/decl.c:7136
+#: fortran/decl.c:7311
#, no-c-format
msgid "Type '%s' containing DEFERRED binding at %C is not ABSTRACT"
msgstr ""
-#: fortran/decl.c:7147
+#: fortran/decl.c:7322
#, no-c-format
msgid ""
"There's already a procedure with binding name '%s' for the derived type '%s' "
"at %C"
msgstr ""
-#: fortran/decl.c:7180
+#: fortran/decl.c:7360
#, no-c-format
msgid "GENERIC at %C must be inside a derived-type CONTAINS"
msgstr ""
-#: fortran/decl.c:7197
+#: fortran/decl.c:7377
#, no-c-format
msgid "Expected '::' at %C"
msgstr ""
-#: fortran/decl.c:7207
+#: fortran/decl.c:7387
#, no-c-format
msgid "Expected generic name at %C"
msgstr ""
-#: fortran/decl.c:7218
+#: fortran/decl.c:7401
#, no-c-format
msgid ""
"There's already a non-generic procedure with binding name '%s' for the "
"derived type '%s' at %C"
msgstr ""
-#: fortran/decl.c:7227
+#: fortran/decl.c:7409
#, no-c-format
msgid "Binding at %C must have the same access as already defined binding '%s'"
msgstr ""
-#: fortran/decl.c:7255
+#: fortran/decl.c:7437
#, no-c-format
msgid "Expected specific binding name at %C"
msgstr ""
-#: fortran/decl.c:7266
+#: fortran/decl.c:7447
#, no-c-format
msgid "'%s' already defined as specific binding for the generic '%s' at %C"
msgstr ""
-#: fortran/decl.c:7284
+#: fortran/decl.c:7463
#, no-c-format
msgid "Junk after GENERIC binding at %C"
msgstr ""
-#: fortran/decl.c:7309
+#: fortran/decl.c:7488
#, no-c-format
msgid "FINAL declaration at %C must be inside a derived type CONTAINS section"
msgstr ""
-#: fortran/decl.c:7320
+#: fortran/decl.c:7499
#, no-c-format
msgid ""
"Derived type declaration with FINAL at %C must be in the specification part "
"of a MODULE"
msgstr ""
-#: fortran/decl.c:7342
+#: fortran/decl.c:7521
#, no-c-format
msgid "Empty FINAL at %C"
msgstr ""
-#: fortran/decl.c:7349
+#: fortran/decl.c:7528
#, no-c-format
msgid "Expected module procedure name at %C"
msgstr ""
-#: fortran/decl.c:7359
+#: fortran/decl.c:7538
#, no-c-format
msgid "Expected ',' at %C"
msgstr ""
-#: fortran/decl.c:7365
+#: fortran/decl.c:7544
#, no-c-format
msgid "Unknown procedure name \"%s\" at %C"
msgstr ""
-#: fortran/decl.c:7379
+#: fortran/decl.c:7558
#, no-c-format
msgid "'%s' at %C is already defined as FINAL procedure!"
msgstr ""
@@ -5427,403 +5656,415 @@ msgstr ""
msgid "<During initialization>\n"
msgstr ""
-#: fortran/error.c:715
+#: fortran/error.c:716
#, no-c-format
msgid "Error count reached limit of %d."
msgstr ""
-#: fortran/error.c:734 fortran/error.c:788 fortran/error.c:825
+#: fortran/error.c:735 fortran/error.c:789 fortran/error.c:826
msgid "Warning:"
msgstr ""
-#: fortran/error.c:790 fortran/error.c:873 fortran/error.c:899
+#: fortran/error.c:791 fortran/error.c:874 fortran/error.c:900
msgid "Error:"
msgstr ""
-#: fortran/error.c:923
+#: fortran/error.c:924
msgid "Fatal Error:"
msgstr ""
-#: fortran/error.c:942
+#: fortran/error.c:943
#, no-c-format
msgid "Internal Error at (1):"
msgstr ""
-#: fortran/expr.c:256
+#: fortran/expr.c:257
#, c-format
msgid "Constant expression required at %C"
msgstr ""
-#: fortran/expr.c:259
+#: fortran/expr.c:260
#, c-format
msgid "Integer expression required at %C"
msgstr ""
-#: fortran/expr.c:264
+#: fortran/expr.c:265
#, c-format
msgid "Integer value too large in expression at %C"
msgstr ""
-#: fortran/expr.c:1056
+#: fortran/expr.c:1058
#, no-c-format
msgid "Index in dimension %d is out of bounds at %L"
msgstr ""
-#: fortran/expr.c:1232 fortran/expr.c:1283
+#: fortran/expr.c:1234 fortran/expr.c:1285
#, no-c-format
msgid "index in dimension %d is out of bounds at %L"
msgstr ""
-#: fortran/expr.c:1885
+#: fortran/expr.c:1888
#, no-c-format
msgid "elemental function arguments at %C are not compliant"
msgstr ""
-#: fortran/expr.c:1929
+#: fortran/expr.c:1932
#, no-c-format
msgid "Numeric or CHARACTER operands are required in expression at %L"
msgstr ""
-#: fortran/expr.c:1954
+#: fortran/expr.c:1957
#, no-c-format
msgid ""
"Concatenation operator in expression at %L must have two CHARACTER operands"
msgstr ""
-#: fortran/expr.c:1961
+#: fortran/expr.c:1964
#, no-c-format
msgid "Concat operator at %L must concatenate strings of the same kind"
msgstr ""
-#: fortran/expr.c:1971
+#: fortran/expr.c:1974
#, no-c-format
msgid ".NOT. operator in expression at %L must have a LOGICAL operand"
msgstr ""
-#: fortran/expr.c:1987
+#: fortran/expr.c:1990
#, no-c-format
msgid "LOGICAL operands are required in expression at %L"
msgstr ""
-#: fortran/expr.c:1998
+#: fortran/expr.c:2001
#, no-c-format
msgid "Only intrinsic operators can be used in expression at %L"
msgstr ""
-#: fortran/expr.c:2006
+#: fortran/expr.c:2009
#, no-c-format
msgid "Numeric operands are required in expression at %L"
msgstr ""
-#: fortran/expr.c:2099
+#: fortran/expr.c:2102
#, no-c-format
msgid "Assumed character length variable '%s' in constant expression at %L"
msgstr ""
-#: fortran/expr.c:2150 fortran/expr.c:2156
+#: fortran/expr.c:2153 fortran/expr.c:2159
#, no-c-format
msgid ""
"transformational intrinsic '%s' at %L is not permitted in an initialization "
"expression"
msgstr ""
-#: fortran/expr.c:2188
+#: fortran/expr.c:2191
#, no-c-format
msgid "Extension: Evaluation of nonstandard initialization expression at %L"
msgstr ""
-#: fortran/expr.c:2245
+#: fortran/expr.c:2248
#, no-c-format
msgid ""
"Function '%s' in initialization expression at %L must be an intrinsic or a "
"specification function"
msgstr ""
-#: fortran/expr.c:2257
+#: fortran/expr.c:2260
#, no-c-format
msgid ""
"Intrinsic function '%s' at %L is not permitted in an initialization "
"expression"
msgstr ""
-#: fortran/expr.c:2289
+#: fortran/expr.c:2292
#, no-c-format
msgid "PARAMETER '%s' is used at %L before its definition is complete"
msgstr ""
-#: fortran/expr.c:2309
+#: fortran/expr.c:2312
#, no-c-format
msgid ""
"Assumed size array '%s' at %L is not permitted in an initialization "
"expression"
msgstr ""
-#: fortran/expr.c:2315
+#: fortran/expr.c:2318
#, no-c-format
msgid ""
"Assumed shape array '%s' at %L is not permitted in an initialization "
"expression"
msgstr ""
-#: fortran/expr.c:2321
+#: fortran/expr.c:2324
#, no-c-format
msgid ""
"Deferred array '%s' at %L is not permitted in an initialization expression"
msgstr ""
-#: fortran/expr.c:2327
+#: fortran/expr.c:2330
#, no-c-format
msgid ""
"Array '%s' at %L is a variable, which does not reduce to a constant "
"expression"
msgstr ""
-#: fortran/expr.c:2337
+#: fortran/expr.c:2340
#, no-c-format
msgid ""
"Parameter '%s' at %L has not been declared or is a variable, which does not "
"reduce to a constant expression"
msgstr ""
-#: fortran/expr.c:2413
+#: fortran/expr.c:2416
#, no-c-format
msgid "Initialization expression didn't reduce %C"
msgstr ""
-#: fortran/expr.c:2492
+#: fortran/expr.c:2495
#, no-c-format
msgid "Specification function '%s' at %L cannot be a statement function"
msgstr ""
-#: fortran/expr.c:2499
+#: fortran/expr.c:2502
#, no-c-format
msgid "Specification function '%s' at %L cannot be an internal function"
msgstr ""
-#: fortran/expr.c:2506
+#: fortran/expr.c:2509
#, no-c-format
msgid "Specification function '%s' at %L must be PURE"
msgstr ""
-#: fortran/expr.c:2513
+#: fortran/expr.c:2516
#, no-c-format
msgid "Specification function '%s' at %L cannot be RECURSIVE"
msgstr ""
-#: fortran/expr.c:2647
+#: fortran/expr.c:2650
#, no-c-format
msgid "Dummy argument '%s' not allowed in expression at %L"
msgstr ""
-#: fortran/expr.c:2654
+#: fortran/expr.c:2657
#, no-c-format
msgid "Dummy argument '%s' at %L cannot be OPTIONAL"
msgstr ""
-#: fortran/expr.c:2661
+#: fortran/expr.c:2664
#, no-c-format
msgid "Dummy argument '%s' at %L cannot be INTENT(OUT)"
msgstr ""
-#: fortran/expr.c:2692
+#: fortran/expr.c:2695
#, no-c-format
msgid "Variable '%s' cannot appear in the expression at %L"
msgstr ""
-#: fortran/expr.c:2742
+#: fortran/expr.c:2745
#, no-c-format
msgid "Expression at %L must be of INTEGER type, found %s"
msgstr ""
-#: fortran/expr.c:2752
+#: fortran/expr.c:2755
#, no-c-format
msgid "Function '%s' at %L must be PURE"
msgstr ""
-#: fortran/expr.c:2761
+#: fortran/expr.c:2764
#, no-c-format
msgid "Expression at %L must be scalar"
msgstr ""
-#: fortran/expr.c:2788
+#: fortran/expr.c:2791
#, no-c-format
msgid "Incompatible ranks in %s (%d and %d) at %L"
msgstr ""
-#: fortran/expr.c:2802
+#: fortran/expr.c:2805
#, no-c-format
msgid "Different shape for %s at %L on dimension %d (%d and %d)"
msgstr ""
-#: fortran/expr.c:2848 fortran/expr.c:3105
+#: fortran/expr.c:2851 fortran/expr.c:3111
#, no-c-format
msgid "Cannot assign to INTENT(IN) variable '%s' at %L"
msgstr ""
-#: fortran/expr.c:2900
+#: fortran/expr.c:2903
#, no-c-format
msgid "'%s' at %L is not a VALUE"
msgstr ""
-#: fortran/expr.c:2907
+#: fortran/expr.c:2910
#, no-c-format
msgid "Incompatible ranks %d and %d in assignment at %L"
msgstr ""
-#: fortran/expr.c:2914
+#: fortran/expr.c:2917
#, no-c-format
msgid "Variable type is UNKNOWN in assignment at %L"
msgstr ""
-#: fortran/expr.c:2926
+#: fortran/expr.c:2929
#, no-c-format
msgid "NULL appears on right-hand side in assignment at %L"
msgstr ""
-#: fortran/expr.c:2937
+#: fortran/expr.c:2940
#, no-c-format
msgid "Vector assignment to assumed-size Cray Pointee at %L is illegal"
msgstr ""
-#: fortran/expr.c:2946
+#: fortran/expr.c:2949
#, no-c-format
msgid "POINTER valued function appears on right-hand side of assignment at %L"
msgstr ""
-#: fortran/expr.c:2951
+#: fortran/expr.c:2954
msgid "array assignment"
msgstr ""
-#: fortran/expr.c:2956
+#: fortran/expr.c:2959
#, no-c-format
msgid ""
"Extension: BOZ literal at %L used to initialize non-integer variable '%s'"
msgstr ""
-#: fortran/expr.c:2962 fortran/resolve.c:6658
+#: fortran/expr.c:2965 fortran/resolve.c:6726
#, no-c-format
msgid ""
"Extension: BOZ literal at %L outside a DATA statement and outside INT/REAL/"
"DBLE/CMPLX"
msgstr ""
-#: fortran/expr.c:2972 fortran/resolve.c:6668
+#: fortran/expr.c:2975 fortran/resolve.c:6736
#, no-c-format
msgid "BOZ literal at %L is bitwise transferred non-integer symbol '%s'"
msgstr ""
-#: fortran/expr.c:2980 fortran/resolve.c:6677
+#: fortran/expr.c:2983 fortran/resolve.c:6745
#, no-c-format
msgid ""
"Arithmetic underflow of bit-wise transferred BOZ at %L. This check can be "
"disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:2984 fortran/resolve.c:6681
+#: fortran/expr.c:2987 fortran/resolve.c:6749
#, no-c-format
msgid ""
"Arithmetic overflow of bit-wise transferred BOZ at %L. This check can be "
"disabled with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:2988 fortran/resolve.c:6685
+#: fortran/expr.c:2991 fortran/resolve.c:6753
#, no-c-format
msgid ""
"Arithmetic NaN of bit-wise transferred BOZ at %L. This check can be disabled "
"with the option -fno-range-check"
msgstr ""
-#: fortran/expr.c:3010
+#: fortran/expr.c:3013
#, no-c-format
msgid ""
"Incompatible types in DATA statement at %L; attempted conversion of %s to %s"
msgstr ""
-#: fortran/expr.c:3046
+#: fortran/expr.c:3049
#, no-c-format
msgid "Pointer assignment target is not a POINTER at %L"
msgstr ""
-#: fortran/expr.c:3055
+#: fortran/expr.c:3058
#, no-c-format
msgid ""
"'%s' in the pointer assignment at %L cannot be an l-value since it is a "
"procedure"
msgstr ""
-#: fortran/expr.c:3083
+#: fortran/expr.c:3089
#, no-c-format
msgid "Expected bounds specification for '%s' at %L"
msgstr ""
-#: fortran/expr.c:3088
+#: fortran/expr.c:3094
#, no-c-format
msgid "Fortran 2003: Bounds specification for '%s' in pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3094
+#: fortran/expr.c:3100
#, no-c-format
msgid "Pointer bounds remapping at %L is not yet implemented in gfortran"
msgstr ""
-#: fortran/expr.c:3112
+#: fortran/expr.c:3118
#, no-c-format
msgid "Pointer assignment to non-POINTER at %L"
msgstr ""
-#: fortran/expr.c:3121
+#: fortran/expr.c:3127
#, no-c-format
msgid "Bad pointer object in PURE procedure at %L"
msgstr ""
-#: fortran/expr.c:3140
+#: fortran/expr.c:3147
#, no-c-format
msgid "Invalid procedure pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3146
+#: fortran/expr.c:3153
#, no-c-format
msgid ""
"Abstract interface '%s' is invalid in procedure pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3155
+#: fortran/expr.c:3163
+#, no-c-format
+msgid ""
+"Statement function '%s' is invalid in procedure pointer assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3169
+#, no-c-format
+msgid ""
+"Internal procedure '%s' is invalid in procedure pointer assignment at %L"
+msgstr ""
+
+#: fortran/expr.c:3181
#, no-c-format
msgid "Interfaces don't match in procedure pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3164
+#: fortran/expr.c:3190
#, no-c-format
msgid ""
"Different types in pointer assignment at %L; attempted assignment of %s to %s"
msgstr ""
-#: fortran/expr.c:3172
+#: fortran/expr.c:3198
#, no-c-format
msgid "Different kind type parameters in pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3179
+#: fortran/expr.c:3205
#, no-c-format
msgid "Different ranks in pointer assignment at %L"
msgstr ""
-#: fortran/expr.c:3201
+#: fortran/expr.c:3227
#, no-c-format
msgid "Pointer assignment target is neither TARGET nor POINTER at %L"
msgstr ""
-#: fortran/expr.c:3208
+#: fortran/expr.c:3234
#, no-c-format
msgid "Bad target in pointer assignment in PURE procedure at %L"
msgstr ""
-#: fortran/expr.c:3214
+#: fortran/expr.c:3240
#, no-c-format
msgid "Pointer assignment with vector subscript on rhs at %L"
msgstr ""
-#: fortran/expr.c:3222
+#: fortran/expr.c:3248
#, no-c-format
msgid "Pointer assignment target has PROTECTED attribute at %L"
msgstr ""
@@ -5962,12 +6203,12 @@ msgstr ""
msgid "Second argument of defined assignment at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:660 fortran/resolve.c:10585
+#: fortran/interface.c:660 fortran/resolve.c:10741
#, no-c-format
msgid "First argument of operator interface at %L must be INTENT(IN)"
msgstr ""
-#: fortran/interface.c:664 fortran/resolve.c:10597
+#: fortran/interface.c:664 fortran/resolve.c:10753
#, no-c-format
msgid "Second argument of operator interface at %L must be INTENT(IN)"
msgstr ""
@@ -6041,7 +6282,7 @@ msgstr ""
msgid "More actual than formal arguments in procedure call at %L"
msgstr ""
-#: fortran/interface.c:1798 fortran/interface.c:2030
+#: fortran/interface.c:1798 fortran/interface.c:2031
#, no-c-format
msgid "Missing alternate return spec in subroutine call at %L"
msgstr ""
@@ -6079,51 +6320,51 @@ msgid ""
"at %L"
msgstr ""
-#: fortran/interface.c:1870
+#: fortran/interface.c:1871
#, no-c-format
msgid "Expected a procedure pointer for argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:1882
+#: fortran/interface.c:1883
#, no-c-format
msgid "Expected a procedure for argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:1892
+#: fortran/interface.c:1893
#, no-c-format
msgid "Expected a PURE procedure for argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:1906
+#: fortran/interface.c:1907
#, no-c-format
msgid "Actual argument for '%s' cannot be an assumed-size array at %L"
msgstr ""
-#: fortran/interface.c:1915
+#: fortran/interface.c:1916
#, no-c-format
msgid "Actual argument for '%s' must be a pointer at %L"
msgstr ""
-#: fortran/interface.c:1924
+#: fortran/interface.c:1925
#, no-c-format
msgid "Actual argument for '%s' must be ALLOCATABLE at %L"
msgstr ""
-#: fortran/interface.c:1937
+#: fortran/interface.c:1938
#, no-c-format
msgid ""
"Actual argument at %L must be definable as the dummy argument '%s' is INTENT "
"= OUT/INOUT"
msgstr ""
-#: fortran/interface.c:1946
+#: fortran/interface.c:1947
#, no-c-format
msgid ""
"Actual argument at %L is use-associated with PROTECTED attribute and dummy "
"argument '%s' is INTENT = OUT/INOUT"
msgstr ""
-#: fortran/interface.c:1959
+#: fortran/interface.c:1960
#, no-c-format
msgid ""
"Array-section actual argument with vector subscripts at %L is incompatible "
@@ -6131,80 +6372,80 @@ msgid ""
"'%s'"
msgstr ""
-#: fortran/interface.c:1976
+#: fortran/interface.c:1977
#, no-c-format
msgid ""
"Assumed-shape actual argument at %L is incompatible with the non-assumed-"
"shape dummy argument '%s' due to VOLATILE attribute"
msgstr ""
-#: fortran/interface.c:1988
+#: fortran/interface.c:1989
#, no-c-format
msgid ""
"Array-section actual argument at %L is incompatible with the non-assumed-"
"shape dummy argument '%s' due to VOLATILE attribute"
msgstr ""
-#: fortran/interface.c:2007
+#: fortran/interface.c:2008
#, no-c-format
msgid ""
"Pointer-array actual argument at %L requires an assumed-shape or pointer-"
"array dummy argument '%s' due to VOLATILE attribute"
msgstr ""
-#: fortran/interface.c:2037
+#: fortran/interface.c:2038
#, no-c-format
msgid "Missing actual argument for argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:2223
+#: fortran/interface.c:2224
#, no-c-format
msgid ""
"Same actual argument associated with INTENT(%s) argument '%s' and INTENT(%s) "
"argument '%s' at %L"
msgstr ""
-#: fortran/interface.c:2279
+#: fortran/interface.c:2280
#, no-c-format
msgid ""
"Procedure argument at %L is INTENT(IN) while interface specifies INTENT(%s)"
msgstr ""
-#: fortran/interface.c:2289
+#: fortran/interface.c:2290
#, no-c-format
msgid ""
"Procedure argument at %L is local to a PURE procedure and is passed to an "
"INTENT(%s) argument"
msgstr ""
-#: fortran/interface.c:2297
+#: fortran/interface.c:2298
#, no-c-format
msgid ""
"Procedure argument at %L is local to a PURE procedure and has the POINTER "
"attribute"
msgstr ""
-#: fortran/interface.c:2323
+#: fortran/interface.c:2324
#, no-c-format
msgid "Procedure '%s' called with an implicit interface at %L"
msgstr ""
-#: fortran/interface.c:2334
+#: fortran/interface.c:2335
#, no-c-format
msgid "Keyword argument requires explicit interface for procedure '%s' at %L"
msgstr ""
-#: fortran/interface.c:2569
+#: fortran/interface.c:2570
#, no-c-format
msgid "Function '%s' called in lieu of an operator at %L must be PURE"
msgstr ""
-#: fortran/interface.c:2649
+#: fortran/interface.c:2650
#, no-c-format
msgid "Entity '%s' at %C is already present in the interface"
msgstr ""
-#: fortran/intrinsic.c:840
+#: fortran/intrinsic.c:842
#, no-c-format
msgid ""
"The intrinsic '%s' at %L is not included in the selected standard but %s and "
@@ -6212,88 +6453,88 @@ msgid ""
"option or define -fall-intrinsics to allow this intrinsic."
msgstr ""
-#: fortran/intrinsic.c:3079
+#: fortran/intrinsic.c:3083
#, no-c-format
msgid "Too many arguments in call to '%s' at %L"
msgstr ""
-#: fortran/intrinsic.c:3094
+#: fortran/intrinsic.c:3098
#, no-c-format
msgid ""
"The argument list functions %%VAL, %%LOC or %%REF are not allowed in this "
"context at %L"
msgstr ""
-#: fortran/intrinsic.c:3097
+#: fortran/intrinsic.c:3101
#, no-c-format
msgid "Can't find keyword named '%s' in call to '%s' at %L"
msgstr ""
-#: fortran/intrinsic.c:3104
+#: fortran/intrinsic.c:3108
#, no-c-format
msgid "Argument '%s' is appears twice in call to '%s' at %L"
msgstr ""
-#: fortran/intrinsic.c:3118
+#: fortran/intrinsic.c:3122
#, no-c-format
msgid "Missing actual argument '%s' in call to '%s' at %L"
msgstr ""
-#: fortran/intrinsic.c:3133
+#: fortran/intrinsic.c:3137
#, no-c-format
msgid "ALTERNATE RETURN not permitted at %L"
msgstr ""
-#: fortran/intrinsic.c:3190
+#: fortran/intrinsic.c:3194
#, no-c-format
msgid "Type of argument '%s' in call to '%s' at %L should be %s, not %s"
msgstr ""
-#: fortran/intrinsic.c:3556
+#: fortran/intrinsic.c:3560
#, no-c-format
msgid "Intrinsic '%s' (is %s) is used at %L"
msgstr ""
-#: fortran/intrinsic.c:3620
+#: fortran/intrinsic.c:3624
#, no-c-format
msgid "Fortran 2003: Function '%s' as initialization expression at %L"
msgstr ""
-#: fortran/intrinsic.c:3696
+#: fortran/intrinsic.c:3700
#, no-c-format
msgid ""
"Fortran 2003: Elemental function as initialization expression with non-"
"integer/non-character arguments at %L"
msgstr ""
-#: fortran/intrinsic.c:3757
+#: fortran/intrinsic.c:3761
#, no-c-format
msgid "Subroutine call to intrinsic '%s' at %L is not PURE"
msgstr ""
-#: fortran/intrinsic.c:3829
+#: fortran/intrinsic.c:3833
#, no-c-format
msgid "Extension: Conversion from %s to %s at %L"
msgstr ""
-#: fortran/intrinsic.c:3832
+#: fortran/intrinsic.c:3836
#, no-c-format
msgid "Conversion from %s to %s at %L"
msgstr ""
-#: fortran/intrinsic.c:3879
+#: fortran/intrinsic.c:3883
#, no-c-format
msgid "Can't convert %s to %s at %L"
msgstr ""
-#: fortran/intrinsic.c:3975
+#: fortran/intrinsic.c:3979
#, no-c-format
msgid ""
"'%s' declared at %L may shadow the intrinsic of the same name. In order to "
"call the intrinsic, explicit INTRINSIC declarations may be required."
msgstr ""
-#: fortran/intrinsic.c:3980
+#: fortran/intrinsic.c:3984
#, no-c-format
msgid ""
"'%s' declared at %L is also the name of an intrinsic. It can only be called "
@@ -6572,7 +6813,7 @@ msgstr ""
msgid "CLOSE statement not allowed in PURE procedure at %C"
msgstr ""
-#: fortran/io.c:2152 fortran/match.c:1948
+#: fortran/io.c:2152 fortran/match.c:1949
#, no-c-format
msgid "%s statement not allowed in PURE procedure at %C"
msgstr ""
@@ -6690,7 +6931,7 @@ msgid "Cannot write to internal file unit '%s' at %C inside a PURE procedure"
msgstr ""
#. A general purpose syntax error.
-#: fortran/io.c:2874 fortran/io.c:3481 fortran/gfortran.h:2220
+#: fortran/io.c:2874 fortran/io.c:3481 fortran/gfortran.h:2232
#, no-c-format
msgid "Syntax error in %s statement at %C"
msgstr ""
@@ -6744,7 +6985,7 @@ msgstr ""
msgid "IOLENGTH tag invalid in INQUIRE statement at %C"
msgstr ""
-#: fortran/io.c:3708 fortran/trans-io.c:1178
+#: fortran/io.c:3708 fortran/trans-io.c:1176
#, no-c-format
msgid "INQUIRE statement at %L cannot contain both FILE and UNIT specifiers"
msgstr ""
@@ -6856,174 +7097,174 @@ msgstr ""
msgid "Invalid form of PROGRAM statement at %C"
msgstr ""
-#: fortran/match.c:1385 fortran/match.c:1466
+#: fortran/match.c:1386 fortran/match.c:1467
#, no-c-format
msgid "Obsolescent: arithmetic IF statement at %C"
msgstr ""
-#: fortran/match.c:1441
+#: fortran/match.c:1442
#, no-c-format
msgid "Syntax error in IF-expression at %C"
msgstr ""
-#: fortran/match.c:1452
+#: fortran/match.c:1453
#, no-c-format
msgid "Block label not appropriate for arithmetic IF statement at %C"
msgstr ""
-#: fortran/match.c:1490
+#: fortran/match.c:1491
#, no-c-format
msgid "Block label is not appropriate for IF statement at %C"
msgstr ""
-#: fortran/match.c:1570 fortran/primary.c:2916
+#: fortran/match.c:1571 fortran/primary.c:2931
#, no-c-format
msgid "Cannot assign to a named constant at %C"
msgstr ""
-#: fortran/match.c:1580
+#: fortran/match.c:1581
#, no-c-format
msgid "Unclassifiable statement in IF-clause at %C"
msgstr ""
-#: fortran/match.c:1587
+#: fortran/match.c:1588
#, no-c-format
msgid "Syntax error in IF-clause at %C"
msgstr ""
-#: fortran/match.c:1631
+#: fortran/match.c:1632
#, no-c-format
msgid "Unexpected junk after ELSE statement at %C"
msgstr ""
-#: fortran/match.c:1637 fortran/match.c:1672
+#: fortran/match.c:1638 fortran/match.c:1673
#, no-c-format
msgid "Label '%s' at %C doesn't match IF label '%s'"
msgstr ""
-#: fortran/match.c:1666
+#: fortran/match.c:1667
#, no-c-format
msgid "Unexpected junk after ELSE IF statement at %C"
msgstr ""
-#: fortran/match.c:1834
+#: fortran/match.c:1835
#, no-c-format
msgid "Name '%s' in %s statement at %C is not a loop name"
msgstr ""
-#: fortran/match.c:1850
+#: fortran/match.c:1851
#, no-c-format
msgid "%s statement at %C is not within a loop"
msgstr ""
-#: fortran/match.c:1853
+#: fortran/match.c:1854
#, no-c-format
msgid "%s statement at %C is not within loop '%s'"
msgstr ""
-#: fortran/match.c:1861
+#: fortran/match.c:1862
#, no-c-format
msgid "%s statement at %C leaving OpenMP structured block"
msgstr ""
-#: fortran/match.c:1874
+#: fortran/match.c:1875
#, no-c-format
msgid "EXIT statement at %C terminating !$OMP DO loop"
msgstr ""
-#: fortran/match.c:1926
+#: fortran/match.c:1927
#, no-c-format
msgid "Too many digits in STOP code at %C"
msgstr ""
-#: fortran/match.c:1979
+#: fortran/match.c:1980
#, no-c-format
msgid "Deleted feature: PAUSE statement at %C"
msgstr ""
-#: fortran/match.c:2027
+#: fortran/match.c:2028
#, no-c-format
msgid "Deleted feature: ASSIGN statement at %C"
msgstr ""
-#: fortran/match.c:2073
+#: fortran/match.c:2074
#, no-c-format
msgid "Deleted feature: Assigned GOTO statement at %C"
msgstr ""
-#: fortran/match.c:2120 fortran/match.c:2172
+#: fortran/match.c:2121 fortran/match.c:2173
#, no-c-format
msgid "Statement label list in GOTO at %C cannot be empty"
msgstr ""
-#: fortran/match.c:2257
+#: fortran/match.c:2258
#, no-c-format
msgid "Bad allocate-object at %C for a PURE procedure"
msgstr ""
-#: fortran/match.c:2273 fortran/match.c:2475
+#: fortran/match.c:2274 fortran/match.c:2476
#, no-c-format
msgid ""
"Allocate-object at %C is not a nonprocedure pointer or an allocatable "
"variable"
msgstr ""
-#: fortran/match.c:2290 fortran/match.c:2492
+#: fortran/match.c:2291 fortran/match.c:2493
#, no-c-format
msgid "Redundant STAT tag found at %L "
msgstr ""
-#: fortran/match.c:2310 fortran/match.c:2512
+#: fortran/match.c:2311 fortran/match.c:2513
#, no-c-format
msgid "Fortran 2003: ERRMSG at %L"
msgstr ""
-#: fortran/match.c:2316 fortran/match.c:2518
+#: fortran/match.c:2317 fortran/match.c:2519
#, no-c-format
msgid "Redundant ERRMSG tag found at %L "
msgstr ""
-#: fortran/match.c:2384
+#: fortran/match.c:2385
#, no-c-format
msgid "Illegal variable in NULLIFY at %C for a PURE procedure"
msgstr ""
-#: fortran/match.c:2462
+#: fortran/match.c:2463
#, no-c-format
msgid "Illegal allocate-object at %C for a PURE procedure"
msgstr ""
-#: fortran/match.c:2572
+#: fortran/match.c:2573
#, no-c-format
msgid "Alternate RETURN statement at %C is only allowed within a SUBROUTINE"
msgstr ""
-#: fortran/match.c:2603
+#: fortran/match.c:2604
#, no-c-format
msgid "Extension: RETURN statement in main program at %C"
msgstr ""
-#: fortran/match.c:2634
+#: fortran/match.c:2635
#, no-c-format
msgid "Expected component reference at %C"
msgstr ""
-#: fortran/match.c:2640
+#: fortran/match.c:2641
#, no-c-format
msgid "Junk after CALL at %C"
msgstr ""
-#: fortran/match.c:2646
+#: fortran/match.c:2651
#, no-c-format
-msgid "Expected type-bound procedure reference at %C"
+msgid "Expected type-bound procedure or procedure pointer component at %C"
msgstr ""
-#: fortran/match.c:2864
+#: fortran/match.c:2868
#, no-c-format
msgid "Syntax error in common block name at %C"
msgstr ""
-#: fortran/match.c:2900
+#: fortran/match.c:2904
#, no-c-format
msgid "Symbol '%s' at %C is already an external symbol that is not COMMON"
msgstr ""
@@ -7031,131 +7272,131 @@ msgstr ""
#. If we find an error, just print it and continue,
#. cause it's just semantic, and we can see if there
#. are more errors.
-#: fortran/match.c:2959
+#: fortran/match.c:2963
#, no-c-format
msgid ""
"Variable '%s' at %L in common block '%s' at %C must be declared with a C "
"interoperable kind since common block '%s' is bind(c)"
msgstr ""
-#: fortran/match.c:2968
+#: fortran/match.c:2972
#, no-c-format
msgid ""
"Variable '%s' in common block '%s' at %C can not be bind(c) since it is not "
"global"
msgstr ""
-#: fortran/match.c:2975
+#: fortran/match.c:2979
#, no-c-format
msgid "Symbol '%s' at %C is already in a COMMON block"
msgstr ""
-#: fortran/match.c:2983
+#: fortran/match.c:2987
#, no-c-format
msgid "Initialized symbol '%s' at %C can only be COMMON in BLOCK DATA"
msgstr ""
-#: fortran/match.c:3010
+#: fortran/match.c:3014
#, no-c-format
msgid "Array specification for symbol '%s' in COMMON at %C must be explicit"
msgstr ""
-#: fortran/match.c:3020
+#: fortran/match.c:3024
#, no-c-format
msgid "Symbol '%s' in COMMON at %C cannot be a POINTER array"
msgstr ""
-#: fortran/match.c:3052
+#: fortran/match.c:3056
#, no-c-format
msgid ""
"Symbol '%s', in COMMON block '%s' at %C is being indirectly equivalenced to "
"another COMMON block '%s'"
msgstr ""
-#: fortran/match.c:3160
+#: fortran/match.c:3164
#, no-c-format
msgid "Namelist group name '%s' at %C already has a basic type of %s"
msgstr ""
-#: fortran/match.c:3168
+#: fortran/match.c:3172
#, no-c-format
msgid ""
"Namelist group name '%s' at %C already is USE associated and cannot be "
"respecified."
msgstr ""
-#: fortran/match.c:3195
+#: fortran/match.c:3199
#, no-c-format
msgid "Assumed size array '%s' in namelist '%s' at %C is not allowed"
msgstr ""
-#: fortran/match.c:3202
+#: fortran/match.c:3206
#, no-c-format
msgid "Assumed character length '%s' in namelist '%s' at %C is not allowed"
msgstr ""
-#: fortran/match.c:3329
+#: fortran/match.c:3333
#, no-c-format
msgid "Derived type component %C is not a permitted EQUIVALENCE member"
msgstr ""
-#: fortran/match.c:3337
+#: fortran/match.c:3341
#, no-c-format
msgid "Array reference in EQUIVALENCE at %C cannot be an array section"
msgstr ""
-#: fortran/match.c:3365
+#: fortran/match.c:3369
#, no-c-format
msgid "EQUIVALENCE at %C requires two or more objects"
msgstr ""
-#: fortran/match.c:3379
+#: fortran/match.c:3383
#, no-c-format
msgid ""
"Attempt to indirectly overlap COMMON blocks %s and %s by EQUIVALENCE at %C"
msgstr ""
-#: fortran/match.c:3505
+#: fortran/match.c:3509
#, no-c-format
msgid "Statement function at %L is recursive"
msgstr ""
-#: fortran/match.c:3593
+#: fortran/match.c:3597
#, no-c-format
msgid "Expected initialization expression in CASE at %C"
msgstr ""
-#: fortran/match.c:3616
+#: fortran/match.c:3620
#, no-c-format
msgid "Expected the name of the SELECT CASE construct at %C"
msgstr ""
-#: fortran/match.c:3628
+#: fortran/match.c:3632
#, no-c-format
msgid "Expected case name of '%s' at %C"
msgstr ""
-#: fortran/match.c:3672
+#: fortran/match.c:3676
#, no-c-format
msgid "Unexpected CASE statement at %C"
msgstr ""
-#: fortran/match.c:3724
+#: fortran/match.c:3728
#, no-c-format
msgid "Syntax error in CASE-specification at %C"
msgstr ""
-#: fortran/match.c:3844
+#: fortran/match.c:3848
#, no-c-format
msgid "ELSEWHERE statement at %C not enclosed in WHERE block"
msgstr ""
-#: fortran/match.c:3882
+#: fortran/match.c:3886
#, no-c-format
msgid "Label '%s' at %C doesn't match WHERE label '%s'"
msgstr ""
-#: fortran/match.c:3982
+#: fortran/match.c:3986
#, no-c-format
msgid "Syntax error in FORALL iterator at %C"
msgstr ""
@@ -7327,150 +7568,150 @@ msgstr ""
msgid "Bad type in constant expression"
msgstr ""
-#: fortran/module.c:3078
+#: fortran/module.c:3079
#, no-c-format
msgid "Namelist %s cannot be renamed by USE association to %s"
msgstr ""
-#: fortran/module.c:4258
+#: fortran/module.c:4261
#, no-c-format
msgid "Symbol '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4265
+#: fortran/module.c:4268
#, no-c-format
msgid "User operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4270
+#: fortran/module.c:4273
#, no-c-format
msgid "Intrinsic operator '%s' referenced at %L not found in module '%s'"
msgstr ""
-#: fortran/module.c:4833
+#: fortran/module.c:4836
#, no-c-format
msgid "Can't open module file '%s' for writing at %C: %s"
msgstr ""
-#: fortran/module.c:4871
+#: fortran/module.c:4874
#, no-c-format
msgid "Error writing module file '%s' for writing: %s"
msgstr ""
-#: fortran/module.c:4880
+#: fortran/module.c:4883
#, no-c-format
msgid "Can't delete module file '%s': %s"
msgstr ""
-#: fortran/module.c:4883
+#: fortran/module.c:4886
#, no-c-format
msgid "Can't rename module file '%s' to '%s': %s"
msgstr ""
-#: fortran/module.c:4889
+#: fortran/module.c:4892
#, no-c-format
msgid "Can't delete temporary module file '%s': %s"
msgstr ""
-#: fortran/module.c:4909 fortran/module.c:4991
+#: fortran/module.c:4912 fortran/module.c:4994
#, no-c-format
msgid ""
"Symbol '%s' referenced at %L does not exist in intrinsic module "
"ISO_C_BINDING."
msgstr ""
-#: fortran/module.c:5026
+#: fortran/module.c:5029
#, no-c-format
msgid ""
"Symbol '%s' referenced at %L not found in intrinsic module ISO_C_BINDING"
msgstr ""
-#: fortran/module.c:5048
+#: fortran/module.c:5051
#, no-c-format
msgid "Symbol '%s' already declared"
msgstr ""
-#: fortran/module.c:5103
+#: fortran/module.c:5106
#, no-c-format
msgid ""
"Use of intrinsic module '%s' at %C conflicts with non-intrinsic module name "
"used previously"
msgstr ""
-#: fortran/module.c:5116
+#: fortran/module.c:5119
#, no-c-format
msgid ""
"Symbol '%s' referenced at %L does not exist in intrinsic module "
"ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:5124
+#: fortran/module.c:5127
#, no-c-format
msgid ""
"Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module "
"ISO_FORTRAN_ENV at %L is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5152
+#: fortran/module.c:5155
#, no-c-format
msgid ""
"Use of the NUMERIC_STORAGE_SIZE named constant from intrinsic module "
"ISO_FORTRAN_ENV at %C is incompatible with option %s"
msgstr ""
-#: fortran/module.c:5168
+#: fortran/module.c:5171
#, no-c-format
msgid ""
"Symbol '%s' referenced at %L not found in intrinsic module ISO_FORTRAN_ENV"
msgstr ""
-#: fortran/module.c:5202
+#: fortran/module.c:5205
#, no-c-format
msgid "Fortran 2003: ISO_FORTRAN_ENV intrinsic module at %C"
msgstr ""
-#: fortran/module.c:5210
+#: fortran/module.c:5213
#, no-c-format
msgid "Fortran 2003: ISO_C_BINDING module at %C"
msgstr ""
-#: fortran/module.c:5220
+#: fortran/module.c:5223
#, no-c-format
msgid "Can't find an intrinsic module named '%s' at %C"
msgstr ""
-#: fortran/module.c:5225
+#: fortran/module.c:5228
#, no-c-format
msgid "Can't open module file '%s' for reading at %C: %s"
msgstr ""
-#: fortran/module.c:5233
+#: fortran/module.c:5236
#, no-c-format
msgid ""
"Use of non-intrinsic module '%s' at %C conflicts with intrinsic module name "
"used previously"
msgstr ""
-#: fortran/module.c:5248
+#: fortran/module.c:5251
msgid "Unexpected end of module"
msgstr ""
-#: fortran/module.c:5253
+#: fortran/module.c:5256
#, no-c-format
msgid "File '%s' opened at %C is not a GFORTRAN module file"
msgstr ""
-#: fortran/module.c:5260
+#: fortran/module.c:5263
#, no-c-format
msgid "Parse error when checking module version for file '%s' opened at %C"
msgstr ""
-#: fortran/module.c:5265
+#: fortran/module.c:5268
#, no-c-format
msgid "Wrong module version '%s' (expected '"
msgstr ""
-#: fortran/module.c:5278
+#: fortran/module.c:5281
#, no-c-format
msgid "Can't USE the same module we're building!"
msgstr ""
@@ -7505,7 +7746,7 @@ msgstr ""
msgid "Syntax error in !$OMP THREADPRIVATE list at %C"
msgstr ""
-#: fortran/openmp.c:759 fortran/resolve.c:6567 fortran/resolve.c:6921
+#: fortran/openmp.c:759 fortran/resolve.c:6635 fortran/resolve.c:6989
#, no-c-format
msgid "IF clause at %L requires a scalar LOGICAL expression"
msgstr ""
@@ -7958,7 +8199,7 @@ msgstr ""
msgid "Fortran 2008: Derived type definition at %C with empty CONTAINS section"
msgstr ""
-#: fortran/parse.c:1800 fortran/parse.c:1911
+#: fortran/parse.c:1800 fortran/parse.c:1907
#, no-c-format
msgid "PRIVATE statement in TYPE at %C must be inside a MODULE"
msgstr ""
@@ -7968,7 +8209,7 @@ msgstr ""
msgid "PRIVATE statement at %C must precede procedure bindings"
msgstr ""
-#: fortran/parse.c:1816 fortran/parse.c:1927
+#: fortran/parse.c:1816 fortran/parse.c:1923
#, no-c-format
msgid "Duplicate PRIVATE statement at %C"
msgstr ""
@@ -7983,206 +8224,201 @@ msgstr ""
msgid "Already inside a CONTAINS block at %C"
msgstr ""
-#: fortran/parse.c:1886
-#, no-c-format
-msgid "PROCEDURE binding at %C must be inside CONTAINS"
-msgstr ""
-
-#: fortran/parse.c:1891
+#: fortran/parse.c:1887
#, no-c-format
msgid "FINAL declaration at %C must be inside CONTAINS"
msgstr ""
-#: fortran/parse.c:1900
+#: fortran/parse.c:1896
#, no-c-format
msgid "Fortran 2003: Derived type definition at %C without components"
msgstr ""
-#: fortran/parse.c:1919
+#: fortran/parse.c:1915
#, no-c-format
msgid "PRIVATE statement at %C must precede structure components"
msgstr ""
-#: fortran/parse.c:1940
+#: fortran/parse.c:1936
#, no-c-format
msgid "SEQUENCE statement at %C must precede structure components"
msgstr ""
-#: fortran/parse.c:1947
+#: fortran/parse.c:1943
#, no-c-format
msgid "SEQUENCE attribute at %C already specified in TYPE statement"
msgstr ""
-#: fortran/parse.c:1952
+#: fortran/parse.c:1948
#, no-c-format
msgid "Duplicate SEQUENCE statement at %C"
msgstr ""
-#: fortran/parse.c:1963
+#: fortran/parse.c:1959
#, no-c-format
msgid "Fortran 2003: CONTAINS block in derived type definition at %C"
msgstr ""
-#: fortran/parse.c:2045
+#: fortran/parse.c:2047
#, no-c-format
msgid "ENUM declaration at %C has no ENUMERATORS"
msgstr ""
-#: fortran/parse.c:2131
+#: fortran/parse.c:2133
#, no-c-format
msgid "Unexpected %s statement in INTERFACE block at %C"
msgstr ""
-#: fortran/parse.c:2157
+#: fortran/parse.c:2159
#, no-c-format
msgid "SUBROUTINE at %C does not belong in a generic function interface"
msgstr ""
-#: fortran/parse.c:2161
+#: fortran/parse.c:2163
#, no-c-format
msgid "FUNCTION at %C does not belong in a generic subroutine interface"
msgstr ""
-#: fortran/parse.c:2171
+#: fortran/parse.c:2173
#, no-c-format
msgid ""
"Name '%s' of ABSTRACT INTERFACE at %C cannot be the same as an intrinsic type"
msgstr ""
-#: fortran/parse.c:2202
+#: fortran/parse.c:2204
#, no-c-format
msgid "Unexpected %s statement at %C in INTERFACE body"
msgstr ""
-#: fortran/parse.c:2220
+#: fortran/parse.c:2222
#, no-c-format
msgid ""
"INTERFACE procedure '%s' at %L has the same name as the enclosing procedure"
msgstr ""
-#: fortran/parse.c:2406
+#: fortran/parse.c:2408
#, no-c-format
msgid "%s statement must appear in a MODULE"
msgstr ""
-#: fortran/parse.c:2413
+#: fortran/parse.c:2415
#, no-c-format
msgid "%s statement at %C follows another accessibility specification"
msgstr ""
-#: fortran/parse.c:2463
+#: fortran/parse.c:2465
#, no-c-format
msgid "Bad kind expression for function '%s' at %L"
msgstr ""
-#: fortran/parse.c:2467
+#: fortran/parse.c:2469
#, no-c-format
msgid "The type for function '%s' at %L is not accessible"
msgstr ""
-#: fortran/parse.c:2525
+#: fortran/parse.c:2527
#, no-c-format
msgid "ELSEWHERE statement at %C follows previous unmasked ELSEWHERE"
msgstr ""
-#: fortran/parse.c:2546
+#: fortran/parse.c:2548
#, no-c-format
msgid "Unexpected %s statement in WHERE block at %C"
msgstr ""
-#: fortran/parse.c:2605
+#: fortran/parse.c:2607
#, no-c-format
msgid "Unexpected %s statement in FORALL block at %C"
msgstr ""
-#: fortran/parse.c:2656
+#: fortran/parse.c:2658
#, no-c-format
msgid "ELSE IF statement at %C cannot follow ELSE statement at %L"
msgstr ""
-#: fortran/parse.c:2674
+#: fortran/parse.c:2676
#, no-c-format
msgid "Duplicate ELSE statements at %L and %C"
msgstr ""
-#: fortran/parse.c:2735
+#: fortran/parse.c:2737
#, no-c-format
msgid "Expected a CASE or END SELECT statement following SELECT CASE at %C"
msgstr ""
-#: fortran/parse.c:2793
+#: fortran/parse.c:2795
#, no-c-format
msgid "Variable '%s' at %C cannot be redefined inside loop beginning at %L"
msgstr ""
-#: fortran/parse.c:2826
+#: fortran/parse.c:2828
#, no-c-format
msgid "End of nonblock DO statement at %C is within another block"
msgstr ""
-#: fortran/parse.c:2835
+#: fortran/parse.c:2837
#, no-c-format
msgid "End of nonblock DO statement at %C is interwoven with another DO loop"
msgstr ""
-#: fortran/parse.c:2884
+#: fortran/parse.c:2886
#, no-c-format
msgid "Statement label in ENDDO at %C doesn't match DO label"
msgstr ""
-#: fortran/parse.c:2900
+#: fortran/parse.c:2902
#, no-c-format
msgid "Named block DO at %L requires matching ENDDO name"
msgstr ""
-#: fortran/parse.c:3159
+#: fortran/parse.c:3161
#, no-c-format
msgid "Name after !$omp critical and !$omp end critical does not match at %C"
msgstr ""
-#: fortran/parse.c:3215
+#: fortran/parse.c:3217
#, no-c-format
msgid "%s statement at %C cannot terminate a non-block DO loop"
msgstr ""
-#: fortran/parse.c:3402
+#: fortran/parse.c:3404
#, no-c-format
msgid "Contained procedure '%s' at %C is already ambiguous"
msgstr ""
-#: fortran/parse.c:3452
+#: fortran/parse.c:3454
#, no-c-format
msgid "Unexpected %s statement in CONTAINS section at %C"
msgstr ""
-#: fortran/parse.c:3476
+#: fortran/parse.c:3478
#, no-c-format
msgid ""
"Fortran 2008: CONTAINS statement without FUNCTION or SUBROUTINE statement at "
"%C"
msgstr ""
-#: fortran/parse.c:3547
+#: fortran/parse.c:3549
#, no-c-format
msgid "CONTAINS statement at %C is already in a contained program unit"
msgstr ""
-#: fortran/parse.c:3596
+#: fortran/parse.c:3598
#, no-c-format
msgid "Global name '%s' at %L is already being used as a %s at %L"
msgstr ""
-#: fortran/parse.c:3617
+#: fortran/parse.c:3619
#, no-c-format
msgid "Blank BLOCK DATA at %C conflicts with prior BLOCK DATA at %L"
msgstr ""
-#: fortran/parse.c:3643
+#: fortran/parse.c:3645
#, no-c-format
msgid "Unexpected %s statement in BLOCK DATA at %C"
msgstr ""
-#: fortran/parse.c:3686
+#: fortran/parse.c:3688
#, no-c-format
msgid "Unexpected %s statement in MODULE at %C"
msgstr ""
@@ -8190,7 +8426,7 @@ msgstr ""
#. If we see a duplicate main program, shut down. If the second
#. instance is an implied main program, i.e. data decls or executable
#. statements, we're in for lots of errors.
-#: fortran/parse.c:3934
+#: fortran/parse.c:3936
#, no-c-format
msgid "Two main PROGRAMs at %L and %C"
msgstr ""
@@ -8368,113 +8604,113 @@ msgstr ""
msgid "Syntax error in argument list at %C"
msgstr ""
-#: fortran/primary.c:1772
+#: fortran/primary.c:1775
#, no-c-format
msgid "Expected structure component name at %C"
msgstr ""
-#: fortran/primary.c:1809
+#: fortran/primary.c:1812
#, no-c-format
msgid "Expected argument list at %C"
msgstr ""
-#: fortran/primary.c:2103
+#: fortran/primary.c:2118
#, no-c-format
msgid ""
"Fortran 2003: Structure constructor with missing optional arguments at %C"
msgstr ""
-#: fortran/primary.c:2111
+#: fortran/primary.c:2126
#, no-c-format
msgid ""
"No initializer for component '%s' given in the structure constructor at %C!"
msgstr ""
-#: fortran/primary.c:2167
+#: fortran/primary.c:2182
#, no-c-format
msgid "Can't construct ABSTRACT type '%s' at %C"
msgstr ""
-#: fortran/primary.c:2195
+#: fortran/primary.c:2210
#, no-c-format
msgid "Fortran 2003: Structure constructor with named arguments at %C"
msgstr ""
-#: fortran/primary.c:2210
+#: fortran/primary.c:2225
#, no-c-format
msgid "Component initializer without name after component named %s at %C!"
msgstr ""
-#: fortran/primary.c:2213
+#: fortran/primary.c:2228
#, no-c-format
msgid "Too many components in structure constructor at %C!"
msgstr ""
-#: fortran/primary.c:2246
+#: fortran/primary.c:2261
#, no-c-format
msgid "Component '%s' is initialized twice in the structure constructor at %C!"
msgstr ""
-#: fortran/primary.c:2302
+#: fortran/primary.c:2317
#, no-c-format
msgid ""
"component '%s' at %L has already been set by a parent derived type "
"constructor"
msgstr ""
-#: fortran/primary.c:2325
+#: fortran/primary.c:2340
#, no-c-format
msgid "Syntax error in structure constructor at %C"
msgstr ""
-#: fortran/primary.c:2441
+#: fortran/primary.c:2456
#, no-c-format
msgid ""
"'%s' at %C is the name of a recursive function and so refers to the result "
"variable. Use an explicit RESULT variable for direct recursion (12.5.2.1)"
msgstr ""
-#: fortran/primary.c:2562
+#: fortran/primary.c:2577
#, no-c-format
msgid "Unexpected use of subroutine name '%s' at %C"
msgstr ""
-#: fortran/primary.c:2593
+#: fortran/primary.c:2608
#, no-c-format
msgid "Statement function '%s' requires argument list at %C"
msgstr ""
-#: fortran/primary.c:2596
+#: fortran/primary.c:2611
#, no-c-format
msgid "Function '%s' requires an argument list at %C"
msgstr ""
-#: fortran/primary.c:2643
+#: fortran/primary.c:2658
#, no-c-format
msgid "Missing argument to '%s' at %C"
msgstr ""
-#: fortran/primary.c:2784
+#: fortran/primary.c:2799
#, no-c-format
msgid "Missing argument list in function '%s' at %C"
msgstr ""
-#: fortran/primary.c:2812
+#: fortran/primary.c:2827
#, no-c-format
msgid "Symbol at %C is not appropriate for an expression"
msgstr ""
-#: fortran/primary.c:2880
+#: fortran/primary.c:2895
#, no-c-format
msgid "Assigning to PROTECTED variable at %C"
msgstr ""
-#: fortran/primary.c:2914
+#: fortran/primary.c:2929
#, no-c-format
msgid "Named constant at %C in an EQUIVALENCE"
msgstr ""
-#: fortran/primary.c:2950
+#: fortran/primary.c:2965
#, no-c-format
msgid "'%s' at %C is not a variable"
msgstr ""
@@ -8510,7 +8746,7 @@ msgstr ""
msgid "Dummy procedure at %L not allowed in ELEMENTAL procedure"
msgstr ""
-#: fortran/resolve.c:201 fortran/resolve.c:1325
+#: fortran/resolve.c:201 fortran/resolve.c:1334
#, no-c-format
msgid ""
"Unable to find a specific INTRINSIC procedure for the reference '%s' at %L"
@@ -8686,97 +8922,97 @@ msgid ""
"s', is %s but should be %s"
msgstr ""
-#: fortran/resolve.c:884
+#: fortran/resolve.c:885
#, no-c-format
msgid ""
"The NULL in the derived type constructor at %L is being applied to component "
"'%s', which is neither a POINTER nor ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:898
+#: fortran/resolve.c:899
#, no-c-format
msgid ""
"The element in the derived type constructor at %L, for pointer component '%"
"s' should be a POINTER or a TARGET"
msgstr ""
-#: fortran/resolve.c:1019
+#: fortran/resolve.c:1020
#, no-c-format
msgid ""
"The upper bound in the last dimension must appear in the reference to the "
"assumed size array '%s' at %L"
msgstr ""
-#: fortran/resolve.c:1081
+#: fortran/resolve.c:1082
#, no-c-format
msgid "'%s' at %L is ambiguous"
msgstr ""
-#: fortran/resolve.c:1085
+#: fortran/resolve.c:1086
#, no-c-format
msgid "GENERIC procedure '%s' is not allowed as an actual argument at %L"
msgstr ""
-#: fortran/resolve.c:1196
+#: fortran/resolve.c:1197
#, no-c-format
msgid ""
"Non-RECURSIVE procedure '%s' at %L is possibly calling itself recursively. "
"Declare it RECURSIVE or use -frecursive"
msgstr ""
-#: fortran/resolve.c:1229 fortran/resolve.c:6146 fortran/resolve.c:6886
+#: fortran/resolve.c:1231 fortran/resolve.c:6214 fortran/resolve.c:6954
#, no-c-format
msgid "Label %d referenced at %L is never defined"
msgstr ""
-#: fortran/resolve.c:1274
+#: fortran/resolve.c:1283
#, no-c-format
msgid "Statement function '%s' at %L is not allowed as an actual argument"
msgstr ""
-#: fortran/resolve.c:1282
+#: fortran/resolve.c:1291
#, no-c-format
msgid "Intrinsic '%s' at %L is not allowed as an actual argument"
msgstr ""
-#: fortran/resolve.c:1289
+#: fortran/resolve.c:1298
#, no-c-format
msgid "Internal procedure '%s' is not allowed as an actual argument at %L"
msgstr ""
-#: fortran/resolve.c:1295
+#: fortran/resolve.c:1304
#, no-c-format
msgid ""
"ELEMENTAL non-INTRINSIC procedure '%s' is not allowed as an actual argument "
"at %L"
msgstr ""
-#: fortran/resolve.c:1347
+#: fortran/resolve.c:1356
#, no-c-format
msgid "Symbol '%s' at %L is ambiguous"
msgstr ""
-#: fortran/resolve.c:1398
+#: fortran/resolve.c:1407
#, no-c-format
msgid "By-value argument at %L is not of numeric type"
msgstr ""
-#: fortran/resolve.c:1405
+#: fortran/resolve.c:1414
#, no-c-format
msgid "By-value argument at %L cannot be an array or an array section"
msgstr ""
-#: fortran/resolve.c:1419
+#: fortran/resolve.c:1428
#, no-c-format
msgid "By-value argument at %L is not allowed in this context"
msgstr ""
-#: fortran/resolve.c:1431
+#: fortran/resolve.c:1440
#, no-c-format
msgid "Passing internal procedure at %L by location not allowed"
msgstr ""
-#: fortran/resolve.c:1556
+#: fortran/resolve.c:1565
#, no-c-format
msgid ""
"'%s' at %L is an array and OPTIONAL; IF IT IS MISSING, it cannot be the "
@@ -8784,600 +9020,600 @@ msgid ""
"argument with the same rank (12.4.1.5)"
msgstr ""
-#: fortran/resolve.c:1578
+#: fortran/resolve.c:1587
msgid "elemental procedure"
msgstr ""
-#: fortran/resolve.c:1595
+#: fortran/resolve.c:1604
#, no-c-format
msgid ""
"Actual argument at %L for INTENT(%s) dummy '%s' of ELEMENTAL subroutine '%s' "
"is a scalar, but another actual argument is an array"
msgstr ""
-#: fortran/resolve.c:1764
+#: fortran/resolve.c:1773
#, no-c-format
msgid "There is no specific function for the generic '%s' at %L"
msgstr ""
-#: fortran/resolve.c:1773
+#: fortran/resolve.c:1782
#, no-c-format
msgid ""
"Generic function '%s' at %L is not consistent with a specific intrinsic "
"interface"
msgstr ""
-#: fortran/resolve.c:1811
+#: fortran/resolve.c:1820
#, no-c-format
msgid ""
"Function '%s' at %L is INTRINSIC but is not compatible with an intrinsic"
msgstr ""
-#: fortran/resolve.c:1857
+#: fortran/resolve.c:1866
#, no-c-format
msgid "Unable to resolve the specific function '%s' at %L"
msgstr ""
-#: fortran/resolve.c:1913 fortran/resolve.c:10516
+#: fortran/resolve.c:1922 fortran/resolve.c:10672
#, no-c-format
msgid "Function '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:2122
+#: fortran/resolve.c:2131
#, no-c-format
msgid "Argument to '%s' at %L is not a variable"
msgstr ""
-#: fortran/resolve.c:2170
+#: fortran/resolve.c:2179
#, no-c-format
msgid "More actual than formal arguments in '%s' call at %L"
msgstr ""
-#: fortran/resolve.c:2179
+#: fortran/resolve.c:2188
#, no-c-format
msgid ""
"Parameter '%s' to '%s' at %L must be either a TARGET or an associated pointer"
msgstr ""
-#: fortran/resolve.c:2202
+#: fortran/resolve.c:2211
#, no-c-format
msgid ""
"Allocatable variable '%s' used as a parameter to '%s' at %L must not be an "
"array of zero size"
msgstr ""
-#: fortran/resolve.c:2219
+#: fortran/resolve.c:2228
#, no-c-format
msgid ""
"Assumed-shape array '%s' at %L cannot be an argument to the procedure '%s' "
"because it is not C interoperable"
msgstr ""
-#: fortran/resolve.c:2229
+#: fortran/resolve.c:2238
#, no-c-format
msgid ""
"Deferred-shape array '%s' at %L cannot be an argument to the procedure '%s' "
"because it is not C interoperable"
msgstr ""
-#: fortran/resolve.c:2252 fortran/resolve.c:2289
+#: fortran/resolve.c:2261 fortran/resolve.c:2298
#, no-c-format
msgid "CHARACTER argument '%s' to '%s' at %L must have a length of 1"
msgstr ""
#. Case 1c, section 15.1.2.5, J3/04-007: an associated
#. scalar pointer.
-#: fortran/resolve.c:2265
+#: fortran/resolve.c:2274
#, no-c-format
msgid "Argument '%s' to '%s' at %L must be an associated scalar POINTER"
msgstr ""
-#: fortran/resolve.c:2281
+#: fortran/resolve.c:2290
#, no-c-format
msgid "Parameter '%s' to '%s' at %L must be a scalar"
msgstr ""
#. TODO: Update this error message to allow for procedure
#. pointers once they are implemented.
-#: fortran/resolve.c:2303
+#: fortran/resolve.c:2312
#, no-c-format
msgid "Parameter '%s' to '%s' at %L must be a procedure"
msgstr ""
-#: fortran/resolve.c:2311
+#: fortran/resolve.c:2320
#, no-c-format
msgid "Parameter '%s' to '%s' at %L must be BIND(C)"
msgstr ""
-#: fortran/resolve.c:2358
+#: fortran/resolve.c:2367
#, no-c-format
msgid "'%s' at %L is not a function"
msgstr ""
-#: fortran/resolve.c:2364
+#: fortran/resolve.c:2373
#, no-c-format
msgid "ABSTRACT INTERFACE '%s' must not be referenced at %L"
msgstr ""
#. Internal procedures are taken care of in resolve_contained_fntype.
-#: fortran/resolve.c:2410
+#: fortran/resolve.c:2419
#, no-c-format
msgid ""
"Function '%s' is declared CHARACTER(*) and cannot be used at %L since it is "
"not a dummy argument"
msgstr ""
-#: fortran/resolve.c:2463
+#: fortran/resolve.c:2472
#, no-c-format
msgid ""
"User defined non-ELEMENTAL function '%s' at %L not allowed in WORKSHARE "
"construct"
msgstr ""
-#: fortran/resolve.c:2513
+#: fortran/resolve.c:2522
#, no-c-format
msgid "reference to non-PURE function '%s' at %L inside a FORALL %s"
msgstr ""
-#: fortran/resolve.c:2520
+#: fortran/resolve.c:2529
#, no-c-format
msgid ""
"Function reference to '%s' at %L is to a non-PURE procedure within a PURE "
"procedure"
msgstr ""
-#: fortran/resolve.c:2536
+#: fortran/resolve.c:2545
#, no-c-format
msgid ""
"ENTRY '%s' at %L cannot be called recursively, as function '%s' is not "
"RECURSIVE"
msgstr ""
-#: fortran/resolve.c:2540
+#: fortran/resolve.c:2549
#, no-c-format
msgid ""
"Function '%s' at %L cannot be called recursively, as it is not RECURSIVE"
msgstr ""
-#: fortran/resolve.c:2588
+#: fortran/resolve.c:2597
#, no-c-format
msgid "Subroutine call to '%s' in FORALL block at %L is not PURE"
msgstr ""
-#: fortran/resolve.c:2591
+#: fortran/resolve.c:2600
#, no-c-format
msgid "Subroutine call to '%s' at %L is not PURE"
msgstr ""
-#: fortran/resolve.c:2654
+#: fortran/resolve.c:2663
#, no-c-format
msgid "There is no specific subroutine for the generic '%s' at %L"
msgstr ""
-#: fortran/resolve.c:2663
+#: fortran/resolve.c:2672
#, no-c-format
msgid ""
"Generic subroutine '%s' at %L is not consistent with an intrinsic subroutine "
"interface"
msgstr ""
-#: fortran/resolve.c:2771
+#: fortran/resolve.c:2780
#, no-c-format
msgid "Missing SHAPE parameter for call to %s at %L"
msgstr ""
-#: fortran/resolve.c:2779
+#: fortran/resolve.c:2788
#, no-c-format
msgid "SHAPE parameter for call to %s at %L must be a rank 1 INTEGER array"
msgstr ""
-#: fortran/resolve.c:2846
+#: fortran/resolve.c:2855
#, no-c-format
msgid ""
"Subroutine '%s' at %L is INTRINSIC but is not compatible with an intrinsic"
msgstr ""
-#: fortran/resolve.c:2890
+#: fortran/resolve.c:2899
#, no-c-format
msgid "Unable to resolve the specific subroutine '%s' at %L"
msgstr ""
-#: fortran/resolve.c:2950
+#: fortran/resolve.c:2959
#, no-c-format
msgid "'%s' at %L has a type, which is not consistent with the CALL at %L"
msgstr ""
-#: fortran/resolve.c:2979
+#: fortran/resolve.c:2988
#, no-c-format
msgid ""
"ENTRY '%s' at %L cannot be called recursively, as subroutine '%s' is not "
"RECURSIVE"
msgstr ""
-#: fortran/resolve.c:2983
+#: fortran/resolve.c:2992
#, no-c-format
msgid ""
"SUBROUTINE '%s' at %L cannot be called recursively, as it is not RECURSIVE"
msgstr ""
-#: fortran/resolve.c:3061
+#: fortran/resolve.c:3070
#, no-c-format
msgid "Shapes for operands at %L and %L are not conformable"
msgstr ""
-#: fortran/resolve.c:3112
+#: fortran/resolve.c:3121
#, c-format
msgid "Invalid context for NULL() pointer at %%L"
msgstr ""
-#: fortran/resolve.c:3128
+#: fortran/resolve.c:3137
#, c-format
msgid "Operand of unary numeric operator '%s' at %%L is %s"
msgstr ""
-#: fortran/resolve.c:3144
+#: fortran/resolve.c:3153
#, c-format
msgid "Operands of binary numeric operator '%s' at %%L are %s/%s"
msgstr ""
-#: fortran/resolve.c:3159
+#: fortran/resolve.c:3168
#, c-format
msgid "Operands of string concatenation operator at %%L are %s/%s"
msgstr ""
-#: fortran/resolve.c:3178
+#: fortran/resolve.c:3187
#, c-format
msgid "Operands of logical operator '%s' at %%L are %s/%s"
msgstr ""
-#: fortran/resolve.c:3192
+#: fortran/resolve.c:3201
#, c-format
msgid "Operand of .not. operator at %%L is %s"
msgstr ""
-#: fortran/resolve.c:3206
+#: fortran/resolve.c:3215
msgid "COMPLEX quantities cannot be compared at %L"
msgstr ""
-#: fortran/resolve.c:3235
+#: fortran/resolve.c:3244
#, c-format
msgid "Logicals at %%L must be compared with %s instead of %s"
msgstr ""
-#: fortran/resolve.c:3241
+#: fortran/resolve.c:3250
#, c-format
msgid "Operands of comparison operator '%s' at %%L are %s/%s"
msgstr ""
-#: fortran/resolve.c:3249
+#: fortran/resolve.c:3258
#, c-format
msgid "Unknown operator '%s' at %%L"
msgstr ""
-#: fortran/resolve.c:3251
+#: fortran/resolve.c:3260
#, c-format
msgid "Operand of user operator '%s' at %%L is %s"
msgstr ""
-#: fortran/resolve.c:3254
+#: fortran/resolve.c:3263
#, c-format
msgid "Operands of user operator '%s' at %%L are %s/%s"
msgstr ""
-#: fortran/resolve.c:3340
+#: fortran/resolve.c:3349
#, c-format
msgid "Inconsistent ranks for operator at %%L and %%L"
msgstr ""
-#: fortran/resolve.c:3537
+#: fortran/resolve.c:3546
#, no-c-format
msgid "Array reference at %L is out of bounds (%ld < %ld) in dimension %d"
msgstr ""
-#: fortran/resolve.c:3545
+#: fortran/resolve.c:3554
#, no-c-format
msgid "Array reference at %L is out of bounds (%ld > %ld) in dimension %d"
msgstr ""
-#: fortran/resolve.c:3564
+#: fortran/resolve.c:3573
#, no-c-format
msgid "Illegal stride of zero at %L"
msgstr ""
-#: fortran/resolve.c:3581
+#: fortran/resolve.c:3590
#, no-c-format
msgid ""
"Lower array reference at %L is out of bounds (%ld < %ld) in dimension %d"
msgstr ""
-#: fortran/resolve.c:3589
+#: fortran/resolve.c:3598
#, no-c-format
msgid ""
"Lower array reference at %L is out of bounds (%ld > %ld) in dimension %d"
msgstr ""
-#: fortran/resolve.c:3605
+#: fortran/resolve.c:3614
#, no-c-format
msgid ""
"Upper array reference at %L is out of bounds (%ld < %ld) in dimension %d"
msgstr ""
-#: fortran/resolve.c:3614
+#: fortran/resolve.c:3623
#, no-c-format
msgid ""
"Upper array reference at %L is out of bounds (%ld > %ld) in dimension %d"
msgstr ""
-#: fortran/resolve.c:3653
+#: fortran/resolve.c:3662
#, no-c-format
msgid "Rightmost upper bound of assumed size array section not specified at %L"
msgstr ""
-#: fortran/resolve.c:3663
+#: fortran/resolve.c:3672
#, no-c-format
msgid "Rank mismatch in array reference at %L (%d/%d)"
msgstr ""
-#: fortran/resolve.c:3691
+#: fortran/resolve.c:3700
#, no-c-format
msgid "Array index at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:3697
+#: fortran/resolve.c:3706
#, no-c-format
msgid "Array index at %L must be of INTEGER type, found %s"
msgstr ""
-#: fortran/resolve.c:3703
+#: fortran/resolve.c:3712
#, no-c-format
msgid "Extension: REAL array index at %L"
msgstr ""
-#: fortran/resolve.c:3733
+#: fortran/resolve.c:3742
#, no-c-format
msgid "Argument dim at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:3740
+#: fortran/resolve.c:3749
#, no-c-format
msgid "Argument dim at %L must be of INTEGER type"
msgstr ""
-#: fortran/resolve.c:3861
+#: fortran/resolve.c:3870
#, no-c-format
msgid "Array index at %L is an array of rank %d"
msgstr ""
-#: fortran/resolve.c:3898
+#: fortran/resolve.c:3907
#, no-c-format
msgid "Substring start index at %L must be of type INTEGER"
msgstr ""
-#: fortran/resolve.c:3905
+#: fortran/resolve.c:3914
#, no-c-format
msgid "Substring start index at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:3914
+#: fortran/resolve.c:3923
#, no-c-format
msgid "Substring start index at %L is less than one"
msgstr ""
-#: fortran/resolve.c:3927
+#: fortran/resolve.c:3936
#, no-c-format
msgid "Substring end index at %L must be of type INTEGER"
msgstr ""
-#: fortran/resolve.c:3934
+#: fortran/resolve.c:3943
#, no-c-format
msgid "Substring end index at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:3944
+#: fortran/resolve.c:3953
#, no-c-format
msgid "Substring end index at %L exceeds the string length"
msgstr ""
-#: fortran/resolve.c:4082
+#: fortran/resolve.c:4091
#, no-c-format
msgid ""
"Component to the right of a part reference with nonzero rank must not have "
"the POINTER attribute at %L"
msgstr ""
-#: fortran/resolve.c:4089
+#: fortran/resolve.c:4098
#, no-c-format
msgid ""
"Component to the right of a part reference with nonzero rank must not have "
"the ALLOCATABLE attribute at %L"
msgstr ""
-#: fortran/resolve.c:4108
+#: fortran/resolve.c:4117
#, no-c-format
msgid ""
"Two or more part references with nonzero rank must not be specified at %L"
msgstr ""
-#: fortran/resolve.c:4291
+#: fortran/resolve.c:4300
#, no-c-format
msgid ""
"Variable '%s', used in a specification expression, is referenced at %L "
"before the ENTRY statement in which it is a parameter"
msgstr ""
-#: fortran/resolve.c:4296
+#: fortran/resolve.c:4305
#, no-c-format
msgid ""
"Variable '%s' is used at %L before the ENTRY statement in which it is a "
"parameter"
msgstr ""
-#: fortran/resolve.c:4580
+#: fortran/resolve.c:4589
#, no-c-format
msgid "Passed-object at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:4613
+#: fortran/resolve.c:4622
#, no-c-format
msgid ""
"Base object for type-bound procedure call at %L is of ABSTRACT type '%s'"
msgstr ""
#. Nothing matching found!
-#: fortran/resolve.c:4714
+#: fortran/resolve.c:4723
#, no-c-format
msgid ""
"Found no matching specific binding for the call to the GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:4734
+#: fortran/resolve.c:4743
#, no-c-format
msgid "'%s' at %L should be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:4773
+#: fortran/resolve.c:4782
#, no-c-format
msgid "'%s' at %L should be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:4912
+#: fortran/resolve.c:4980
#, no-c-format
msgid "%s at %L must be a scalar"
msgstr ""
-#: fortran/resolve.c:4922
+#: fortran/resolve.c:4990
#, no-c-format
msgid "Deleted feature: %s at %L must be integer"
msgstr ""
-#: fortran/resolve.c:4926 fortran/resolve.c:4933
+#: fortran/resolve.c:4994 fortran/resolve.c:5001
#, no-c-format
msgid "%s at %L must be INTEGER"
msgstr ""
-#: fortran/resolve.c:4953
+#: fortran/resolve.c:5021
#, no-c-format
msgid "Cannot assign to loop variable in PURE procedure at %L"
msgstr ""
-#: fortran/resolve.c:4977
+#: fortran/resolve.c:5045
#, no-c-format
msgid "Step expression in DO loop at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:5012
+#: fortran/resolve.c:5080
#, no-c-format
msgid "DO loop at %L will be executed zero times"
msgstr ""
-#: fortran/resolve.c:5073
+#: fortran/resolve.c:5141
#, no-c-format
msgid "FORALL index-name at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:5078
+#: fortran/resolve.c:5146
#, no-c-format
msgid "FORALL start expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:5085
+#: fortran/resolve.c:5153
#, no-c-format
msgid "FORALL end expression at %L must be a scalar INTEGER"
msgstr ""
-#: fortran/resolve.c:5093
+#: fortran/resolve.c:5161
#, no-c-format
msgid "FORALL stride expression at %L must be a scalar %s"
msgstr ""
-#: fortran/resolve.c:5098
+#: fortran/resolve.c:5166
#, no-c-format
msgid "FORALL stride expression at %L cannot be zero"
msgstr ""
-#: fortran/resolve.c:5114
+#: fortran/resolve.c:5182
#, no-c-format
msgid "FORALL index '%s' may not appear in triplet specification at %L"
msgstr ""
-#: fortran/resolve.c:5194 fortran/resolve.c:5328
+#: fortran/resolve.c:5262 fortran/resolve.c:5396
#, no-c-format
msgid "Allocate-object at %L must be ALLOCATABLE or a POINTER"
msgstr ""
-#: fortran/resolve.c:5201
+#: fortran/resolve.c:5269
#, no-c-format
msgid "Cannot deallocate INTENT(IN) variable '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5336
+#: fortran/resolve.c:5404
#, no-c-format
msgid "Cannot allocate INTENT(IN) variable '%s' at %L"
msgstr ""
-#: fortran/resolve.c:5360
+#: fortran/resolve.c:5428
#, no-c-format
msgid "Array specification required in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:5390
+#: fortran/resolve.c:5458
#, no-c-format
msgid "Bad array specification in ALLOCATE statement at %L"
msgstr ""
-#: fortran/resolve.c:5410
+#: fortran/resolve.c:5478
#, no-c-format
msgid ""
"'%s' must not appear in the array specification at %L in the same ALLOCATE "
"statement where it is itself allocated"
msgstr ""
-#: fortran/resolve.c:5435
+#: fortran/resolve.c:5503
#, no-c-format
msgid "Stat-variable '%s' at %L cannot be INTENT(IN)"
msgstr ""
-#: fortran/resolve.c:5439
+#: fortran/resolve.c:5507
#, no-c-format
msgid "Illegal stat-variable at %L for a PURE procedure"
msgstr ""
-#: fortran/resolve.c:5445
+#: fortran/resolve.c:5513
#, no-c-format
msgid "Stat-variable at %L must be a scalar INTEGER variable"
msgstr ""
-#: fortran/resolve.c:5450
+#: fortran/resolve.c:5518
#, no-c-format
msgid "Stat-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:5458
+#: fortran/resolve.c:5526
#, no-c-format
msgid "ERRMSG at %L is useless without a STAT tag"
msgstr ""
-#: fortran/resolve.c:5462
+#: fortran/resolve.c:5530
#, no-c-format
msgid "Errmsg-variable '%s' at %L cannot be INTENT(IN)"
msgstr ""
-#: fortran/resolve.c:5466
+#: fortran/resolve.c:5534
#, no-c-format
msgid "Illegal errmsg-variable at %L for a PURE procedure"
msgstr ""
-#: fortran/resolve.c:5473
+#: fortran/resolve.c:5541
#, no-c-format
msgid "Errmsg-variable at %L must be a scalar CHARACTER variable"
msgstr ""
-#: fortran/resolve.c:5478
+#: fortran/resolve.c:5546
#, no-c-format
msgid "Errmsg-variable at %L shall not be %sd within the same %s statement"
msgstr ""
-#: fortran/resolve.c:5496
+#: fortran/resolve.c:5564
#, no-c-format
msgid "Allocate-object at %L also appears at %L"
msgstr ""
@@ -9386,99 +9622,99 @@ msgstr ""
#. element in the list. Either way, we must
#. issue an error and get the next case from P.
#. FIXME: Sort P and Q by line number.
-#: fortran/resolve.c:5663
+#: fortran/resolve.c:5731
#, no-c-format
msgid "CASE label at %L overlaps with CASE label at %L"
msgstr ""
-#: fortran/resolve.c:5714
+#: fortran/resolve.c:5782
#, no-c-format
msgid "Expression in CASE statement at %L must be of type %s"
msgstr ""
-#: fortran/resolve.c:5725
+#: fortran/resolve.c:5793
#, no-c-format
msgid "Expression in CASE statement at %L must be of kind %d"
msgstr ""
-#: fortran/resolve.c:5737
+#: fortran/resolve.c:5805
#, no-c-format
msgid "Expression in CASE statement at %L must be scalar"
msgstr ""
-#: fortran/resolve.c:5783
+#: fortran/resolve.c:5851
#, no-c-format
msgid ""
"Selection expression in computed GOTO statement at %L must be a scalar "
"integer expression"
msgstr ""
-#: fortran/resolve.c:5801
+#: fortran/resolve.c:5869
#, no-c-format
msgid "Argument of SELECT statement at %L cannot be %s"
msgstr ""
-#: fortran/resolve.c:5810
+#: fortran/resolve.c:5878
#, no-c-format
msgid "Argument of SELECT statement at %L must be a scalar expression"
msgstr ""
-#: fortran/resolve.c:5875
+#: fortran/resolve.c:5943
#, no-c-format
msgid ""
"The DEFAULT CASE at %L cannot be followed by a second DEFAULT CASE at %L"
msgstr ""
-#: fortran/resolve.c:5901
+#: fortran/resolve.c:5969
#, no-c-format
msgid "Logical range in CASE statement at %L is not allowed"
msgstr ""
-#: fortran/resolve.c:5913
+#: fortran/resolve.c:5981
#, no-c-format
msgid "constant logical value in CASE statement is repeated at %L"
msgstr ""
-#: fortran/resolve.c:5927
+#: fortran/resolve.c:5995
#, no-c-format
msgid "Range specification at %L can never be matched"
msgstr ""
-#: fortran/resolve.c:6030
+#: fortran/resolve.c:6098
#, no-c-format
msgid "Logical SELECT CASE block at %L has more that two cases"
msgstr ""
-#: fortran/resolve.c:6068
+#: fortran/resolve.c:6136
#, no-c-format
msgid "Data transfer element at %L cannot have POINTER components"
msgstr ""
-#: fortran/resolve.c:6075
+#: fortran/resolve.c:6143
#, no-c-format
msgid "Data transfer element at %L cannot have ALLOCATABLE components"
msgstr ""
-#: fortran/resolve.c:6082
+#: fortran/resolve.c:6150
#, no-c-format
msgid "Data transfer element at %L cannot have PRIVATE components"
msgstr ""
-#: fortran/resolve.c:6091
+#: fortran/resolve.c:6159
#, no-c-format
msgid ""
"Data transfer element at %L cannot be a full reference to an assumed-size "
"array"
msgstr ""
-#: fortran/resolve.c:6153
+#: fortran/resolve.c:6221
#, no-c-format
msgid ""
"Statement at %L is not a valid branch target statement for the branch "
"statement at %L"
msgstr ""
-#: fortran/resolve.c:6162
+#: fortran/resolve.c:6230
#, no-c-format
msgid "Branch at %L may result in an infinite loop"
msgstr ""
@@ -9486,113 +9722,113 @@ msgstr ""
#. The label is not in an enclosing block, so illegal. This was
#. allowed in Fortran 66, so we allow it as extension. No
#. further checks are necessary in this case.
-#: fortran/resolve.c:6190
+#: fortran/resolve.c:6258
#, no-c-format
msgid "Label at %L is not in the same block as the GOTO statement at %L"
msgstr ""
-#: fortran/resolve.c:6265
+#: fortran/resolve.c:6333
#, no-c-format
msgid "WHERE mask at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:6281
+#: fortran/resolve.c:6349
#, no-c-format
msgid "WHERE assignment target at %L has inconsistent shape"
msgstr ""
-#: fortran/resolve.c:6289 fortran/resolve.c:6376
+#: fortran/resolve.c:6357 fortran/resolve.c:6444
#, no-c-format
msgid "Non-ELEMENTAL user-defined assignment in WHERE at %L"
msgstr ""
-#: fortran/resolve.c:6299 fortran/resolve.c:6386
+#: fortran/resolve.c:6367 fortran/resolve.c:6454
#, no-c-format
msgid "Unsupported statement inside WHERE at %L"
msgstr ""
-#: fortran/resolve.c:6330
+#: fortran/resolve.c:6398
#, no-c-format
msgid "Assignment to a FORALL index variable at %L"
msgstr ""
-#: fortran/resolve.c:6339
+#: fortran/resolve.c:6407
#, no-c-format
msgid ""
"The FORALL with index '%s' is not used on the left side of the assignment at "
"%L and so might cause multiple assignment to this object"
msgstr ""
-#: fortran/resolve.c:6508
+#: fortran/resolve.c:6576
#, no-c-format
msgid "An outer FORALL construct already has an index with this name %L"
msgstr ""
-#: fortran/resolve.c:6575
+#: fortran/resolve.c:6643
#, no-c-format
msgid "WHERE/ELSEWHERE clause at %L requires a LOGICAL array"
msgstr ""
-#: fortran/resolve.c:6637
+#: fortran/resolve.c:6705
#, no-c-format
msgid "Subroutine '%s' called instead of assignment at %L must be PURE"
msgstr ""
-#: fortran/resolve.c:6710
+#: fortran/resolve.c:6778
#, no-c-format
msgid "CHARACTER expression will be truncated in assignment (%d/%d) at %L"
msgstr ""
-#: fortran/resolve.c:6735
+#: fortran/resolve.c:6803
#, no-c-format
msgid "Cannot assign to variable '%s' in PURE procedure at %L"
msgstr ""
-#: fortran/resolve.c:6747
+#: fortran/resolve.c:6815
#, no-c-format
msgid ""
"The impure variable at %L is assigned to a derived type variable with a "
"POINTER component in a PURE procedure (12.6)"
msgstr ""
-#: fortran/resolve.c:6854
+#: fortran/resolve.c:6922
#, no-c-format
msgid "ASSIGNED GOTO statement at %L requires an INTEGER variable"
msgstr ""
-#: fortran/resolve.c:6857
+#: fortran/resolve.c:6925
#, no-c-format
msgid "Variable '%s' has not been assigned a target label at %L"
msgstr ""
-#: fortran/resolve.c:6868
+#: fortran/resolve.c:6936
#, no-c-format
msgid ""
"Alternate RETURN statement at %L requires a SCALAR-INTEGER return specifier"
msgstr ""
-#: fortran/resolve.c:6894
+#: fortran/resolve.c:6962
#, no-c-format
msgid "ASSIGN statement at %L requires a scalar default INTEGER variable"
msgstr ""
-#: fortran/resolve.c:6909
+#: fortran/resolve.c:6977
#, no-c-format
msgid "Arithmetic IF statement at %L requires a numeric expression"
msgstr ""
-#: fortran/resolve.c:6955
+#: fortran/resolve.c:7027
#, no-c-format
msgid ""
"Exit condition of DO WHILE loop at %L must be a scalar LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:7037
+#: fortran/resolve.c:7109
#, no-c-format
msgid "FORALL mask clause at %L requires a LOGICAL expression"
msgstr ""
-#: fortran/resolve.c:7109 fortran/resolve.c:7165
+#: fortran/resolve.c:7181 fortran/resolve.c:7237
#, no-c-format
msgid ""
"Binding label '%s' for common block '%s' at %L collides with the global "
@@ -9600,14 +9836,14 @@ msgid ""
msgstr ""
#. Common block names match but binding labels do not.
-#: fortran/resolve.c:7130
+#: fortran/resolve.c:7202
#, no-c-format
msgid ""
"Binding label '%s' for common block '%s' at %L does not match the binding "
"label '%s' for common block '%s' at %L"
msgstr ""
-#: fortran/resolve.c:7177
+#: fortran/resolve.c:7249
#, no-c-format
msgid ""
"Binding label '%s' for common block '%s' at %L collides with global entity '%"
@@ -9615,57 +9851,57 @@ msgid ""
msgstr ""
#. Make sure global procedures don't collide with anything.
-#: fortran/resolve.c:7229
+#: fortran/resolve.c:7301
#, no-c-format
msgid "Binding label '%s' at %L collides with the global entity '%s' at %L"
msgstr ""
#. Make sure procedures in interface bodies don't collide.
-#: fortran/resolve.c:7242
+#: fortran/resolve.c:7314
#, no-c-format
msgid ""
"Binding label '%s' in interface body at %L collides with the global entity '%"
"s' at %L"
msgstr ""
-#: fortran/resolve.c:7255
+#: fortran/resolve.c:7327
#, no-c-format
msgid "Binding label '%s' at %L collides with global entity '%s' at %L"
msgstr ""
-#: fortran/resolve.c:7332
+#: fortran/resolve.c:7404
#, no-c-format
msgid "CHARACTER variable has zero length at %L"
msgstr ""
-#: fortran/resolve.c:7625
+#: fortran/resolve.c:7697
#, no-c-format
msgid "Allocatable array '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:7628
+#: fortran/resolve.c:7700
#, no-c-format
msgid "Scalar object '%s' at %L may not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:7635
+#: fortran/resolve.c:7707
#, no-c-format
msgid "Array pointer '%s' at %L must have a deferred shape"
msgstr ""
-#: fortran/resolve.c:7646
+#: fortran/resolve.c:7718
#, no-c-format
msgid "Array '%s' at %L cannot have a deferred shape"
msgstr ""
-#: fortran/resolve.c:7674
+#: fortran/resolve.c:7746
#, no-c-format
msgid ""
"The type '%s' cannot be host associated at %L because it is blocked by an "
"incompatible object of the same name declared at %L"
msgstr ""
-#: fortran/resolve.c:7697
+#: fortran/resolve.c:7769
#, no-c-format
msgid ""
"Object '%s' at %L must have the SAVE attribute for default initialization of "
@@ -9674,196 +9910,196 @@ msgstr ""
#. The shape of a main program or module array needs to be
#. constant.
-#: fortran/resolve.c:7744
+#: fortran/resolve.c:7816
#, no-c-format
msgid "The module or main program array '%s' at %L must have constant shape"
msgstr ""
-#: fortran/resolve.c:7757
+#: fortran/resolve.c:7829
#, no-c-format
msgid ""
"Entity with assumed character length at %L must be a dummy argument or a "
"PARAMETER"
msgstr ""
-#: fortran/resolve.c:7776
+#: fortran/resolve.c:7848
#, no-c-format
msgid "'%s' at %L must have constant character length in this context"
msgstr ""
-#: fortran/resolve.c:7812
+#: fortran/resolve.c:7884
#, no-c-format
msgid "Allocatable '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7815
+#: fortran/resolve.c:7887
#, no-c-format
msgid "External '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7819
+#: fortran/resolve.c:7891
#, no-c-format
msgid "Dummy '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7822
+#: fortran/resolve.c:7894
#, no-c-format
msgid "Intrinsic '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7825
+#: fortran/resolve.c:7897
#, no-c-format
msgid "Function result '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7828
+#: fortran/resolve.c:7900
#, no-c-format
msgid "Automatic array '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7851
+#: fortran/resolve.c:7923
#, no-c-format
msgid "Although not referenced, '%s' at %L has ambiguous interfaces"
msgstr ""
-#: fortran/resolve.c:7870
+#: fortran/resolve.c:7942
#, no-c-format
msgid ""
"Character-valued statement function '%s' at %L must have constant length"
msgstr ""
-#: fortran/resolve.c:7878
+#: fortran/resolve.c:7950
#, no-c-format
msgid ""
"Automatic character length function '%s' at %L must have an explicit "
"interface"
msgstr ""
-#: fortran/resolve.c:7903
+#: fortran/resolve.c:7975
#, no-c-format
msgid ""
"Fortran 2003: '%s' is of a PRIVATE type and cannot be a dummy argument of '%"
"s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:7926 fortran/resolve.c:7951
+#: fortran/resolve.c:7998 fortran/resolve.c:8023
#, no-c-format
msgid ""
"Fortran 2003: Procedure '%s' in PUBLIC interface '%s' at %L takes dummy "
"arguments of '%s' which is PRIVATE"
msgstr ""
-#: fortran/resolve.c:7969
+#: fortran/resolve.c:8041
#, no-c-format
msgid "Function '%s' at %L cannot have an initializer"
msgstr ""
-#: fortran/resolve.c:7978
+#: fortran/resolve.c:8050
#, no-c-format
msgid "External object '%s' at %L may not have an initializer"
msgstr ""
-#: fortran/resolve.c:7986
+#: fortran/resolve.c:8058
#, no-c-format
msgid "ELEMENTAL function '%s' at %L must have a scalar result"
msgstr ""
-#: fortran/resolve.c:8007
+#: fortran/resolve.c:8079
#, no-c-format
msgid "CHARACTER(*) function '%s' at %L cannot be array-valued"
msgstr ""
-#: fortran/resolve.c:8011
+#: fortran/resolve.c:8083
#, no-c-format
msgid "CHARACTER(*) function '%s' at %L cannot be pointer-valued"
msgstr ""
-#: fortran/resolve.c:8015
+#: fortran/resolve.c:8087
#, no-c-format
msgid "CHARACTER(*) function '%s' at %L cannot be pure"
msgstr ""
-#: fortran/resolve.c:8019
+#: fortran/resolve.c:8091
#, no-c-format
msgid "CHARACTER(*) function '%s' at %L cannot be recursive"
msgstr ""
-#: fortran/resolve.c:8028
+#: fortran/resolve.c:8100
#, no-c-format
msgid "CHARACTER(*) function '%s' at %L is obsolescent in fortran 95"
msgstr ""
-#: fortran/resolve.c:8083
+#: fortran/resolve.c:8155
#, no-c-format
msgid "PROCEDURE attribute conflicts with SAVE attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8089
+#: fortran/resolve.c:8161
#, no-c-format
msgid "PROCEDURE attribute conflicts with INTENT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8095
+#: fortran/resolve.c:8167
#, no-c-format
msgid "PROCEDURE attribute conflicts with RESULT attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8103
+#: fortran/resolve.c:8175
#, no-c-format
msgid "EXTERNAL attribute conflicts with FUNCTION attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8109
+#: fortran/resolve.c:8181
#, no-c-format
msgid "Procedure pointer result '%s' at %L is missing the pointer attribute"
msgstr ""
-#: fortran/resolve.c:8155
+#: fortran/resolve.c:8227
#, no-c-format
msgid "FINAL procedure '%s' at %L is not a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:8163
+#: fortran/resolve.c:8235
#, no-c-format
msgid "FINAL procedure at %L must have exactly one argument"
msgstr ""
-#: fortran/resolve.c:8172
+#: fortran/resolve.c:8244
#, no-c-format
msgid "Argument of FINAL procedure at %L must be of type '%s'"
msgstr ""
-#: fortran/resolve.c:8180
+#: fortran/resolve.c:8252
#, no-c-format
msgid "Argument of FINAL procedure at %L must not be a POINTER"
msgstr ""
-#: fortran/resolve.c:8186
+#: fortran/resolve.c:8258
#, no-c-format
msgid "Argument of FINAL procedure at %L must not be ALLOCATABLE"
msgstr ""
-#: fortran/resolve.c:8192
+#: fortran/resolve.c:8264
#, no-c-format
msgid "Argument of FINAL procedure at %L must not be OPTIONAL"
msgstr ""
-#: fortran/resolve.c:8200
+#: fortran/resolve.c:8272
#, no-c-format
msgid "Argument of FINAL procedure at %L must not be INTENT(OUT)"
msgstr ""
-#: fortran/resolve.c:8208
+#: fortran/resolve.c:8280
#, no-c-format
msgid "Non-scalar FINAL procedure at %L should have assumed shape argument"
msgstr ""
-#: fortran/resolve.c:8227
+#: fortran/resolve.c:8299
#, no-c-format
msgid "FINAL procedure '%s' declared at %L has the same rank (%d) as '%s'"
msgstr ""
-#: fortran/resolve.c:8260
+#: fortran/resolve.c:8332
#, no-c-format
msgid ""
"Only array FINAL procedures declared for derived type '%s' defined at %L, "
@@ -9871,314 +10107,327 @@ msgid ""
msgstr ""
#. TODO: Remove this error when finalization is finished.
-#: fortran/resolve.c:8265
+#: fortran/resolve.c:8337
#, no-c-format
msgid "Finalization at %L is not yet implemented"
msgstr ""
-#: fortran/resolve.c:8291
+#: fortran/resolve.c:8363
#, no-c-format
msgid "Can't overwrite GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8303
+#: fortran/resolve.c:8375
#, no-c-format
msgid "'%s' at %L overrides a procedure binding declared NON_OVERRIDABLE"
msgstr ""
-#: fortran/resolve.c:8311
+#: fortran/resolve.c:8383
#, no-c-format
msgid "'%s' at %L must not be DEFERRED as it overrides a non-DEFERRED binding"
msgstr ""
-#: fortran/resolve.c:8319
+#: fortran/resolve.c:8391
#, no-c-format
msgid "'%s' at %L overrides a PURE procedure and must also be PURE"
msgstr ""
-#: fortran/resolve.c:8328
+#: fortran/resolve.c:8400
#, no-c-format
msgid "'%s' at %L overrides an ELEMENTAL procedure and must also be ELEMENTAL"
msgstr ""
-#: fortran/resolve.c:8334
+#: fortran/resolve.c:8406
#, no-c-format
msgid ""
"'%s' at %L overrides a non-ELEMENTAL procedure and must not be ELEMENTAL, "
"either"
msgstr ""
-#: fortran/resolve.c:8343
+#: fortran/resolve.c:8415
#, no-c-format
msgid "'%s' at %L overrides a SUBROUTINE and must also be a SUBROUTINE"
msgstr ""
-#: fortran/resolve.c:8354
+#: fortran/resolve.c:8426
#, no-c-format
msgid "'%s' at %L overrides a FUNCTION and must also be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:8365
+#: fortran/resolve.c:8437
#, no-c-format
msgid ""
"'%s' at %L and the overridden FUNCTION should have matching result types"
msgstr ""
-#: fortran/resolve.c:8376
+#: fortran/resolve.c:8448
#, no-c-format
msgid "'%s' at %L overrides a PUBLIC procedure and must not be PRIVATE"
msgstr ""
-#: fortran/resolve.c:8405
+#: fortran/resolve.c:8477
#, no-c-format
msgid ""
"Dummy argument '%s' of '%s' at %L should be named '%s' as to match the "
"corresponding argument of the overridden procedure"
msgstr ""
-#: fortran/resolve.c:8418
+#: fortran/resolve.c:8490
#, no-c-format
msgid ""
"Types mismatch for dummy argument '%s' of '%s' %L in in respect to the "
"overridden procedure"
msgstr ""
-#: fortran/resolve.c:8428
+#: fortran/resolve.c:8500
#, no-c-format
msgid ""
"'%s' at %L must have the same number of formal arguments as the overridden "
"procedure"
msgstr ""
-#: fortran/resolve.c:8437
+#: fortran/resolve.c:8509
#, no-c-format
msgid "'%s' at %L overrides a NOPASS binding and must also be NOPASS"
msgstr ""
-#: fortran/resolve.c:8448
+#: fortran/resolve.c:8520
#, no-c-format
msgid "'%s' at %L overrides a binding with PASS and must also be PASS"
msgstr ""
-#: fortran/resolve.c:8455
+#: fortran/resolve.c:8527
#, no-c-format
msgid ""
"Passed-object dummy argument of '%s' at %L must be at the same position as "
"the passed-object dummy argument of the overridden procedure"
msgstr ""
-#: fortran/resolve.c:8486
+#: fortran/resolve.c:8558
#, no-c-format
msgid "'%s' and '%s' can't be mixed FUNCTION/SUBROUTINE for GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8495
+#: fortran/resolve.c:8567
#, no-c-format
msgid "'%s' and '%s' for GENERIC '%s' at %L are ambiguous"
msgstr ""
-#: fortran/resolve.c:8564
+#: fortran/resolve.c:8636
#, no-c-format
msgid "Undefined specific binding '%s' as target of GENERIC '%s' at %L"
msgstr ""
-#: fortran/resolve.c:8576
+#: fortran/resolve.c:8648
#, no-c-format
msgid "GENERIC '%s' at %L must target a specific binding, '%s' is GENERIC, too"
msgstr ""
-#: fortran/resolve.c:8606
+#: fortran/resolve.c:8678
#, no-c-format
msgid "GENERIC '%s' at %L can't overwrite specific binding with the same name"
msgstr ""
-#: fortran/resolve.c:8664
+#: fortran/resolve.c:8742
#, no-c-format
msgid ""
"'%s' must be a module procedure or an external procedure with an explicit "
"interface at %L"
msgstr ""
-#: fortran/resolve.c:8701
+#: fortran/resolve.c:8779
#, no-c-format
msgid "Procedure '%s' with PASS(%s) at %L has no argument '%s'"
msgstr ""
-#: fortran/resolve.c:8715
+#: fortran/resolve.c:8793
#, no-c-format
msgid "Procedure '%s' with PASS at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:8727
+#: fortran/resolve.c:8805
#, no-c-format
msgid ""
"Argument '%s' of '%s' with PASS(%s) at %L must be of the derived-type '%s'"
msgstr ""
-#: fortran/resolve.c:8733
+#: fortran/resolve.c:8811
#, no-c-format
msgid ""
"Polymorphic entities are not yet implemented, non-polymorphic passed-object "
"dummy argument of '%s' at %L accepted"
msgstr ""
-#: fortran/resolve.c:8758
+#: fortran/resolve.c:8836
#, no-c-format
msgid "Procedure '%s' at %L has the same name as a component of '%s'"
msgstr ""
-#: fortran/resolve.c:8767
+#: fortran/resolve.c:8845
#, no-c-format
msgid ""
"Procedure '%s' at %L has the same name as an inherited component of '%s'"
msgstr ""
-#: fortran/resolve.c:8838
+#: fortran/resolve.c:8916
#, no-c-format
msgid ""
"Derived-type '%s' declared at %L must be ABSTRACT because '%s' is DEFERRED "
"and not overridden"
msgstr ""
-#: fortran/resolve.c:8896
+#: fortran/resolve.c:8974
#, no-c-format
msgid "Non-extensible derived-type '%s' at %L must not be ABSTRACT"
msgstr ""
-#: fortran/resolve.c:8913
+#: fortran/resolve.c:8984
+#, no-c-format
+msgid ""
+"Interface '%s', used by procedure pointer component '%s' at %L, is declared "
+"in a later PROCEDURE statement"
+msgstr ""
+
+#: fortran/resolve.c:9041
+#, no-c-format
+msgid ""
+"Interface '%s' of procedure pointer component '%s' at %L must be explicit"
+msgstr ""
+
+#: fortran/resolve.c:9063
#, no-c-format
msgid ""
"Component '%s' of '%s' at %L has the same name as an inherited type-bound "
"procedure"
msgstr ""
-#: fortran/resolve.c:8925
+#: fortran/resolve.c:9075
#, no-c-format
msgid ""
"Character length of component '%s' needs to be a constant specification "
"expression at %L"
msgstr ""
-#: fortran/resolve.c:8941
+#: fortran/resolve.c:9091
#, no-c-format
msgid ""
"Fortran 2003: the component '%s' is a PRIVATE type and cannot be a component "
"of '%s', which is PUBLIC at %L"
msgstr ""
-#: fortran/resolve.c:8952
+#: fortran/resolve.c:9102
#, no-c-format
msgid ""
"Component %s of SEQUENCE type declared at %L does not have the SEQUENCE "
"attribute"
msgstr ""
-#: fortran/resolve.c:8963
+#: fortran/resolve.c:9113
#, no-c-format
msgid ""
"The pointer component '%s' of '%s' at %L is a type that has not been declared"
msgstr ""
-#: fortran/resolve.c:8991
+#: fortran/resolve.c:9141
#, no-c-format
msgid "Component '%s' of '%s' at %L must have constant array bounds"
msgstr ""
-#: fortran/resolve.c:9036
+#: fortran/resolve.c:9186
#, no-c-format
msgid ""
"NAMELIST object '%s' was declared PRIVATE and cannot be member of PUBLIC "
"namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9046
+#: fortran/resolve.c:9196
#, no-c-format
msgid ""
"NAMELIST object '%s' has use-associated PRIVATE components and cannot be "
"member of namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9059
+#: fortran/resolve.c:9209
#, no-c-format
msgid ""
"NAMELIST object '%s' has PRIVATE components and cannot be a member of PUBLIC "
"namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9071
+#: fortran/resolve.c:9221
#, no-c-format
msgid ""
"NAMELIST array object '%s' must not have assumed shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9080
+#: fortran/resolve.c:9230
#, no-c-format
msgid ""
"NAMELIST array object '%s' must have constant shape in namelist '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9092
+#: fortran/resolve.c:9242
#, no-c-format
msgid ""
"NAMELIST object '%s' in namelist '%s' at %L cannot have ALLOCATABLE "
"components"
msgstr ""
-#: fortran/resolve.c:9100
+#: fortran/resolve.c:9250
#, no-c-format
msgid ""
"NAMELIST object '%s' in namelist '%s' at %L cannot have POINTER components"
msgstr ""
-#: fortran/resolve.c:9126
+#: fortran/resolve.c:9276
#, no-c-format
msgid "PROCEDURE attribute conflicts with NAMELIST attribute in '%s' at %L"
msgstr ""
-#: fortran/resolve.c:9145
+#: fortran/resolve.c:9295
#, no-c-format
msgid "Parameter array '%s' at %L cannot be automatic or of deferred shape"
msgstr ""
-#: fortran/resolve.c:9156
+#: fortran/resolve.c:9307
#, no-c-format
msgid ""
"Implicitly typed PARAMETER '%s' at %L doesn't match a later IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:9167
+#: fortran/resolve.c:9318
#, no-c-format
msgid "Incompatible derived type in PARAMETER at %L"
msgstr ""
-#: fortran/resolve.c:9229
+#: fortran/resolve.c:9380
#, no-c-format
msgid ""
"Interface '%s', used by procedure '%s' at %L, is declared in a later "
"PROCEDURE statement"
msgstr ""
-#: fortran/resolve.c:9282
+#: fortran/resolve.c:9437
#, no-c-format
msgid "Interface '%s' of procedure '%s' at %L must be explicit"
msgstr ""
-#: fortran/resolve.c:9315
+#: fortran/resolve.c:9471
#, no-c-format
msgid "Type specified for intrinsic function '%s' at %L is ignored"
msgstr ""
-#: fortran/resolve.c:9322
+#: fortran/resolve.c:9478
#, no-c-format
msgid "Intrinsic subroutine '%s' at %L shall not have a type specifier"
msgstr ""
-#: fortran/resolve.c:9329
+#: fortran/resolve.c:9485
#, no-c-format
msgid "'%s' declared INTRINSIC at %L does not exist"
msgstr ""
-#: fortran/resolve.c:9338
+#: fortran/resolve.c:9494
#, no-c-format
msgid ""
"The intrinsic '%s' declared INTRINSIC at %L is not available in the current "
@@ -10186,234 +10435,234 @@ msgid ""
"intrinsics in order to use it."
msgstr ""
-#: fortran/resolve.c:9385
+#: fortran/resolve.c:9541
#, no-c-format
msgid "Assumed size array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:9388
+#: fortran/resolve.c:9544
#, no-c-format
msgid "Assumed shape array at %L must be a dummy argument"
msgstr ""
-#: fortran/resolve.c:9400
+#: fortran/resolve.c:9556
#, no-c-format
msgid "Symbol at %L is not a DUMMY variable"
msgstr ""
-#: fortran/resolve.c:9406
+#: fortran/resolve.c:9562
#, no-c-format
msgid ""
"'%s' at %L cannot have the VALUE attribute because it is not a dummy argument"
msgstr ""
-#: fortran/resolve.c:9416
+#: fortran/resolve.c:9572
#, no-c-format
msgid ""
"Character dummy variable '%s' at %L with VALUE attribute must have constant "
"length"
msgstr ""
-#: fortran/resolve.c:9425
+#: fortran/resolve.c:9581
#, no-c-format
msgid ""
"C interoperable character dummy variable '%s' at %L with VALUE attribute "
"must have length one"
msgstr ""
-#: fortran/resolve.c:9451
+#: fortran/resolve.c:9607
#, no-c-format
msgid ""
"Variable '%s' at %L cannot be BIND(C) because it is neither a COMMON block "
"nor declared at the module level scope"
msgstr ""
-#: fortran/resolve.c:9504
+#: fortran/resolve.c:9660
#, no-c-format
msgid "The derived type '%s' at %L is of type '%s', which has not been defined"
msgstr ""
-#: fortran/resolve.c:9545
+#: fortran/resolve.c:9701
#, no-c-format
msgid "Fortran 2003: PUBLIC %s '%s' at %L of PRIVATE derived type '%s'"
msgstr ""
-#: fortran/resolve.c:9564
+#: fortran/resolve.c:9720
#, no-c-format
msgid ""
"The INTENT(OUT) dummy argument '%s' at %L is ASSUMED SIZE and so cannot have "
"a default initializer"
msgstr ""
-#: fortran/resolve.c:9623
+#: fortran/resolve.c:9779
#, no-c-format
msgid "Threadprivate at %L isn't SAVEd"
msgstr ""
-#: fortran/resolve.c:9711
+#: fortran/resolve.c:9867
#, no-c-format
msgid "BLOCK DATA element '%s' at %L must be in COMMON"
msgstr ""
-#: fortran/resolve.c:9717
+#: fortran/resolve.c:9873
#, no-c-format
msgid "DATA array '%s' at %L must be specified in a previous declaration"
msgstr ""
-#: fortran/resolve.c:9733
+#: fortran/resolve.c:9889
#, no-c-format
msgid "DATA element '%s' at %L is a pointer and so must be a full array"
msgstr ""
-#: fortran/resolve.c:9779
+#: fortran/resolve.c:9935
#, no-c-format
msgid "Nonconstant array section at %L in DATA statement"
msgstr ""
-#: fortran/resolve.c:9792
+#: fortran/resolve.c:9948
#, no-c-format
msgid "DATA statement at %L has more variables than values"
msgstr ""
-#: fortran/resolve.c:9886
+#: fortran/resolve.c:10042
#, no-c-format
msgid "iterator start at %L does not simplify"
msgstr ""
-#: fortran/resolve.c:9893
+#: fortran/resolve.c:10049
#, no-c-format
msgid "iterator end at %L does not simplify"
msgstr ""
-#: fortran/resolve.c:9900
+#: fortran/resolve.c:10056
#, no-c-format
msgid "iterator step at %L does not simplify"
msgstr ""
-#: fortran/resolve.c:10026
+#: fortran/resolve.c:10182
#, no-c-format
msgid "DATA statement at %L has more values than variables"
msgstr ""
-#: fortran/resolve.c:10117
+#: fortran/resolve.c:10273
#, no-c-format
msgid "Label %d at %L defined but not used"
msgstr ""
-#: fortran/resolve.c:10122
+#: fortran/resolve.c:10278
#, no-c-format
msgid "Label %d at %L defined but cannot be used"
msgstr ""
-#: fortran/resolve.c:10207
+#: fortran/resolve.c:10363
#, no-c-format
msgid ""
"Derived type variable '%s' at %L must have SEQUENCE attribute to be an "
"EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:10216
+#: fortran/resolve.c:10372
#, no-c-format
msgid ""
"Derived type variable '%s' at %L cannot have ALLOCATABLE components to be an "
"EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:10224
+#: fortran/resolve.c:10380
#, no-c-format
msgid ""
"Derived type variable '%s' at %L with default initialization cannot be in "
"EQUIVALENCE with a variable in COMMON"
msgstr ""
-#: fortran/resolve.c:10241
+#: fortran/resolve.c:10397
#, no-c-format
msgid ""
"Derived type variable '%s' at %L with pointer component(s) cannot be an "
"EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:10346
+#: fortran/resolve.c:10502
#, no-c-format
msgid "Syntax error in EQUIVALENCE statement at %L"
msgstr ""
-#: fortran/resolve.c:10361
+#: fortran/resolve.c:10517
#, no-c-format
msgid ""
"Either all or none of the objects in the EQUIVALENCE set at %L shall have "
"the PROTECTED attribute"
msgstr ""
-#: fortran/resolve.c:10373
+#: fortran/resolve.c:10529
#, no-c-format
msgid ""
"Common block member '%s' at %L cannot be an EQUIVALENCE object in the pure "
"procedure '%s'"
msgstr ""
-#: fortran/resolve.c:10382
+#: fortran/resolve.c:10538
#, no-c-format
msgid "Named constant '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:10461
+#: fortran/resolve.c:10617
#, no-c-format
msgid ""
"Array '%s' at %L with non-constant bounds cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:10472
+#: fortran/resolve.c:10628
#, no-c-format
msgid "Structure component '%s' at %L cannot be an EQUIVALENCE object"
msgstr ""
-#: fortran/resolve.c:10483
+#: fortran/resolve.c:10639
#, no-c-format
msgid "Substring at %L has length zero"
msgstr ""
-#: fortran/resolve.c:10527
+#: fortran/resolve.c:10683
#, no-c-format
msgid "Fortran 2003: PUBLIC function '%s' at %L of PRIVATE type '%s'"
msgstr ""
-#: fortran/resolve.c:10540
+#: fortran/resolve.c:10696
#, no-c-format
msgid "ENTRY '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/resolve.c:10566
+#: fortran/resolve.c:10722
#, no-c-format
msgid "User operator procedure '%s' at %L must be a FUNCTION"
msgstr ""
-#: fortran/resolve.c:10573
+#: fortran/resolve.c:10729
#, no-c-format
msgid "User operator procedure '%s' at %L cannot be assumed character length"
msgstr ""
-#: fortran/resolve.c:10579
+#: fortran/resolve.c:10735
#, no-c-format
msgid "User operator procedure '%s' at %L must have at least one argument"
msgstr ""
-#: fortran/resolve.c:10589
+#: fortran/resolve.c:10745
#, no-c-format
msgid "First argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:10601
+#: fortran/resolve.c:10757
#, no-c-format
msgid "Second argument of operator interface at %L cannot be optional"
msgstr ""
-#: fortran/resolve.c:10605
+#: fortran/resolve.c:10761
#, no-c-format
msgid "Operator interface at %L must have, at most, two arguments"
msgstr ""
-#: fortran/resolve.c:10659
+#: fortran/resolve.c:10815
#, no-c-format
msgid "Contained procedure '%s' at %L of a PURE procedure must also be PURE"
msgstr ""
@@ -10772,33 +11021,33 @@ msgid ""
"Character '%s' in string at %L cannot be converted into character kind %d"
msgstr ""
-#: fortran/symbol.c:121
+#: fortran/symbol.c:133
#, no-c-format
msgid "Duplicate IMPLICIT NONE statement at %C"
msgstr ""
-#: fortran/symbol.c:161
+#: fortran/symbol.c:173
#, no-c-format
msgid "Letter '%c' already set in IMPLICIT statement at %C"
msgstr ""
-#: fortran/symbol.c:183
+#: fortran/symbol.c:195
#, no-c-format
msgid "Cannot specify IMPLICIT at %C after IMPLICIT NONE"
msgstr ""
-#: fortran/symbol.c:193
+#: fortran/symbol.c:205
#, no-c-format
msgid "Letter %c already has an IMPLICIT type at %C"
msgstr ""
-#: fortran/symbol.c:249
+#: fortran/symbol.c:261
#, no-c-format
msgid "Symbol '%s' at %L has no IMPLICIT type"
msgstr ""
#. BIND(C) variables should not be implicitly declared.
-#: fortran/symbol.c:269
+#: fortran/symbol.c:281
#, no-c-format
msgid ""
"Implicitly declared BIND(C) variable '%s' at %L may not be C interoperable"
@@ -10806,270 +11055,270 @@ msgstr ""
#. Dummy args to a BIND(C) routine may not be interoperable if
#. they are implicitly typed.
-#: fortran/symbol.c:283
+#: fortran/symbol.c:295
#, no-c-format
msgid ""
"Implicitly declared variable '%s' at %L may not be C interoperable but it is "
"a dummy argument to the BIND(C) procedure '%s' at %L"
msgstr ""
-#: fortran/symbol.c:324
+#: fortran/symbol.c:336
#, no-c-format
msgid "Function result '%s' at %L has no IMPLICIT type"
msgstr ""
-#: fortran/symbol.c:403
+#: fortran/symbol.c:415
#, no-c-format
msgid "%s attribute not allowed in BLOCK DATA program unit at %L"
msgstr ""
-#: fortran/symbol.c:458
+#: fortran/symbol.c:470
#, no-c-format
msgid "Fortran 2003: Procedure pointer at %C"
msgstr ""
-#: fortran/symbol.c:608
+#: fortran/symbol.c:620
#, no-c-format
msgid "%s attribute applied to %s %s at %L"
msgstr ""
-#: fortran/symbol.c:615
+#: fortran/symbol.c:627
#, no-c-format
msgid "BIND(C) applied to %s %s at %L"
msgstr ""
-#: fortran/symbol.c:716 fortran/symbol.c:1369
+#: fortran/symbol.c:728 fortran/symbol.c:1381
#, no-c-format
msgid "%s attribute conflicts with %s attribute at %L"
msgstr ""
-#: fortran/symbol.c:719
+#: fortran/symbol.c:731
#, no-c-format
msgid "%s attribute conflicts with %s attribute in '%s' at %L"
msgstr ""
-#: fortran/symbol.c:727
+#: fortran/symbol.c:739
#, no-c-format
msgid "Fortran 2003: %s attribute with %s attribute at %L"
msgstr ""
-#: fortran/symbol.c:733
+#: fortran/symbol.c:745
#, no-c-format
msgid "Fortran 2003: %s attribute with %s attribute in '%s' at %L"
msgstr ""
-#: fortran/symbol.c:777
+#: fortran/symbol.c:789
#, no-c-format
msgid "Cannot change attributes of USE-associated symbol at %L"
msgstr ""
-#: fortran/symbol.c:780
+#: fortran/symbol.c:792
#, no-c-format
msgid "Cannot change attributes of USE-associated symbol %s at %L"
msgstr ""
-#: fortran/symbol.c:796
+#: fortran/symbol.c:808
#, no-c-format
msgid "Duplicate %s attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:829
+#: fortran/symbol.c:841
#, no-c-format
msgid "ALLOCATABLE specified outside of INTERFACE body at %L"
msgstr ""
-#: fortran/symbol.c:855
+#: fortran/symbol.c:867
#, no-c-format
msgid "DIMENSION specified for '%s' outside its INTERFACE body at %L"
msgstr ""
-#: fortran/symbol.c:973
+#: fortran/symbol.c:985
#, no-c-format
msgid "Cray Pointee at %L appears in multiple pointer() statements"
msgstr ""
-#: fortran/symbol.c:992
+#: fortran/symbol.c:1004
#, no-c-format
msgid "Duplicate PROTECTED attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:1025
+#: fortran/symbol.c:1037
#, no-c-format
msgid "SAVE attribute at %L cannot be specified in a PURE procedure"
msgstr ""
-#: fortran/symbol.c:1033
+#: fortran/symbol.c:1045
#, no-c-format
msgid "Duplicate SAVE attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:1054
+#: fortran/symbol.c:1066
#, no-c-format
msgid "Duplicate VALUE attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:1074
+#: fortran/symbol.c:1086
#, no-c-format
msgid "Duplicate VOLATILE attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:1365
+#: fortran/symbol.c:1377
#, no-c-format
msgid "%s attribute of '%s' conflicts with %s attribute at %L"
msgstr ""
-#: fortran/symbol.c:1399
+#: fortran/symbol.c:1411
#, no-c-format
msgid "%s procedure at %L is already declared as %s procedure"
msgstr ""
-#: fortran/symbol.c:1434
+#: fortran/symbol.c:1446
#, no-c-format
msgid "INTENT (%s) conflicts with INTENT(%s) at %L"
msgstr ""
-#: fortran/symbol.c:1458
+#: fortran/symbol.c:1470
#, no-c-format
msgid "ACCESS specification at %L was already specified"
msgstr ""
-#: fortran/symbol.c:1475
+#: fortran/symbol.c:1487
#, no-c-format
msgid "Duplicate BIND attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:1482
+#: fortran/symbol.c:1494
#, no-c-format
msgid "Fortran 2003: BIND(C) at %L"
msgstr ""
-#: fortran/symbol.c:1499
+#: fortran/symbol.c:1511
#, no-c-format
msgid "Duplicate EXTENDS attribute specified at %L"
msgstr ""
-#: fortran/symbol.c:1503
+#: fortran/symbol.c:1515
#, no-c-format
msgid "Fortran 2003: EXTENDS at %L"
msgstr ""
-#: fortran/symbol.c:1525
+#: fortran/symbol.c:1537
#, no-c-format
msgid "Symbol '%s' at %L already has an explicit interface"
msgstr ""
-#: fortran/symbol.c:1532
+#: fortran/symbol.c:1544
#, no-c-format
msgid "'%s' at %L has attributes specified outside its INTERFACE body"
msgstr ""
-#: fortran/symbol.c:1573
+#: fortran/symbol.c:1585
#, no-c-format
msgid "Procedure '%s' at %L may not have basic type of %s"
msgstr ""
-#: fortran/symbol.c:1585
+#: fortran/symbol.c:1597
#, no-c-format
msgid "Symbol '%s' at %L cannot have a type"
msgstr ""
-#: fortran/symbol.c:1744
+#: fortran/symbol.c:1756
#, no-c-format
msgid "Component '%s' at %C already declared at %L"
msgstr ""
-#: fortran/symbol.c:1755
+#: fortran/symbol.c:1767
#, no-c-format
msgid "Component '%s' at %C already in the parent type at %L"
msgstr ""
-#: fortran/symbol.c:1830
+#: fortran/symbol.c:1843
#, no-c-format
msgid "Symbol '%s' at %C is ambiguous"
msgstr ""
-#: fortran/symbol.c:1862
+#: fortran/symbol.c:1875
#, no-c-format
msgid "Derived type '%s' at %C is being used before it is defined"
msgstr ""
-#: fortran/symbol.c:1903
+#: fortran/symbol.c:1916
#, no-c-format
msgid "'%s' at %C is not a member of the '%s' structure"
msgstr ""
-#: fortran/symbol.c:1911
+#: fortran/symbol.c:1924
#, no-c-format
msgid "Component '%s' at %C is a PRIVATE component of '%s'"
msgstr ""
-#: fortran/symbol.c:1921
+#: fortran/symbol.c:1934
#, no-c-format
msgid "All components of '%s' are PRIVATE in structure constructor at %C"
msgstr ""
-#: fortran/symbol.c:2050
+#: fortran/symbol.c:2063
#, no-c-format
msgid "Duplicate statement label %d at %L and %L"
msgstr ""
-#: fortran/symbol.c:2060
+#: fortran/symbol.c:2073
#, no-c-format
msgid "Label %d at %C already referenced as branch target"
msgstr ""
-#: fortran/symbol.c:2069
+#: fortran/symbol.c:2082
#, no-c-format
msgid "Label %d at %C already referenced as a format label"
msgstr ""
-#: fortran/symbol.c:2111
+#: fortran/symbol.c:2124
#, no-c-format
msgid "Label %d at %C previously used as a FORMAT label"
msgstr ""
-#: fortran/symbol.c:2119
+#: fortran/symbol.c:2132
#, no-c-format
msgid "Label %d at %C previously used as branch target"
msgstr ""
-#: fortran/symbol.c:2431
+#: fortran/symbol.c:2444
#, no-c-format
msgid "Name '%s' at %C is an ambiguous reference to '%s' from module '%s'"
msgstr ""
-#: fortran/symbol.c:2434
+#: fortran/symbol.c:2447
#, no-c-format
msgid ""
"Name '%s' at %C is an ambiguous reference to '%s' from current program unit"
msgstr ""
#. Symbol is from another namespace.
-#: fortran/symbol.c:2578
+#: fortran/symbol.c:2591
#, no-c-format
msgid "Symbol '%s' at %C has already been host associated"
msgstr ""
-#: fortran/symbol.c:3348
+#: fortran/symbol.c:3398
#, no-c-format
msgid ""
"Derived type '%s' declared at %L must have the BIND attribute to be C "
"interoperable"
msgstr ""
-#: fortran/symbol.c:3359
+#: fortran/symbol.c:3409
#, no-c-format
msgid "Derived type '%s' at %L is empty"
msgstr ""
-#: fortran/symbol.c:3376
+#: fortran/symbol.c:3426
#, no-c-format
msgid ""
"Component '%s' at %L cannot have the POINTER attribute because it is a "
"member of the BIND(C) derived type '%s' at %L"
msgstr ""
-#: fortran/symbol.c:3388
+#: fortran/symbol.c:3438
#, no-c-format
msgid ""
"Component '%s' at %L cannot have the ALLOCATABLE attribute because it is a "
@@ -11078,7 +11327,7 @@ msgstr ""
#. If the derived type is bind(c), all fields must be
#. interop.
-#: fortran/symbol.c:3426
+#: fortran/symbol.c:3476
#, no-c-format
msgid ""
"Component '%s' in derived type '%s' at %L may not be C interoperable, even "
@@ -11088,36 +11337,36 @@ msgstr ""
#. If derived type is param to bind(c) routine, or to one
#. of the iso_c_binding procs, it must be interoperable, so
#. all fields must interop too.
-#: fortran/symbol.c:3435
+#: fortran/symbol.c:3485
#, no-c-format
msgid "Component '%s' in derived type '%s' at %L may not be C interoperable"
msgstr ""
-#: fortran/symbol.c:3449
+#: fortran/symbol.c:3499
#, no-c-format
msgid ""
"Derived type '%s' at %L cannot be declared with both PRIVATE and BIND(C) "
"attributes"
msgstr ""
-#: fortran/symbol.c:3457
+#: fortran/symbol.c:3507
#, no-c-format
msgid ""
"Derived type '%s' at %L cannot have the SEQUENCE attribute because it is BIND"
"(C)"
msgstr ""
-#: fortran/symbol.c:4327
+#: fortran/symbol.c:4379
#, no-c-format
msgid "Symbol '%s' is used before it is typed at %L"
msgstr ""
-#: fortran/symbol.c:4333
+#: fortran/symbol.c:4385
#, no-c-format
msgid "Extension: Symbol '%s' is used before it is typed at %L"
msgstr ""
-#: fortran/symbol.c:4384
+#: fortran/symbol.c:4457
#, no-c-format
msgid "'%s' of '%s' is PRIVATE at %C"
msgstr ""
@@ -11132,22 +11381,22 @@ msgstr ""
msgid "BOZ constant at %L is too large (%ld vs %ld bits)"
msgstr ""
-#: fortran/trans-array.c:641 fortran/trans-array.c:4461
-#: fortran/trans-array.c:5450 fortran/trans-intrinsic.c:3719
+#: fortran/trans-array.c:641 fortran/trans-array.c:4464
+#: fortran/trans-array.c:5453 fortran/trans-intrinsic.c:3722
#, no-c-format
msgid "Creating array temporary at %L"
msgstr ""
#. Problems occur when we get something like
#. integer :: a(lots) = (/(i, i=1, lots)/)
-#: fortran/trans-array.c:4030
+#: fortran/trans-array.c:4033
#, no-c-format
msgid ""
"The number of elements in the array constructor at %L requires an increase "
"of the allowed %d upper limit. See -fmax-array-constructor option"
msgstr ""
-#: fortran/trans-array.c:5447
+#: fortran/trans-array.c:5450
#, no-c-format
msgid "Creating array temporary at %L for argument '%s'"
msgstr ""
@@ -11229,66 +11478,66 @@ msgstr ""
msgid "Assigning value other than 0 or 1 to LOGICAL has undefined result at %L"
msgstr ""
-#: fortran/trans-decl.c:2908 fortran/trans-decl.c:4061
+#: fortran/trans-decl.c:2957 fortran/trans-decl.c:4113
#, no-c-format
msgid "Return value of function '%s' at %L not set"
msgstr ""
-#: fortran/trans-decl.c:3567
+#: fortran/trans-decl.c:3616
#, no-c-format
msgid "Dummy argument '%s' at %L was declared INTENT(OUT) but was not set"
msgstr ""
-#: fortran/trans-decl.c:3571
+#: fortran/trans-decl.c:3620
#, no-c-format
msgid "Unused dummy argument '%s' at %L"
msgstr ""
-#: fortran/trans-decl.c:3577
+#: fortran/trans-decl.c:3626
#, no-c-format
msgid "Unused variable '%s' declared at %L"
msgstr ""
-#: fortran/trans-decl.c:3623
+#: fortran/trans-decl.c:3672
#, no-c-format
msgid "Unused parameter '%s' declared at %L"
msgstr ""
-#: fortran/trans-decl.c:3637
+#: fortran/trans-decl.c:3686
#, no-c-format
msgid "Return value '%s' of function '%s' declared at %L not set"
msgstr ""
-#: fortran/trans-decl.c:3741
+#: fortran/trans-decl.c:3790
#, c-format
msgid ""
"Actual string length does not match the declared one for dummy argument '%"
"s' (%ld/%ld)"
msgstr ""
-#: fortran/trans-decl.c:3747
+#: fortran/trans-decl.c:3796
#, c-format
msgid ""
"Actual string length is shorter than the declared one for dummy argument '%"
"s' (%ld/%ld)"
msgstr ""
-#: fortran/trans-expr.c:2399
+#: fortran/trans-expr.c:2361
#, no-c-format
msgid "Unknown argument list function at %L"
msgstr ""
-#: fortran/trans-intrinsic.c:882
+#: fortran/trans-intrinsic.c:883
#, no-c-format
msgid "'dim' argument of %s intrinsic at %L is not a valid dimension index"
msgstr ""
-#: fortran/trans-io.c:2004
+#: fortran/trans-io.c:2002
#, no-c-format
msgid "Derived type '%s' at %L has PRIVATE components"
msgstr ""
-#: fortran/trans-stmt.c:471
+#: fortran/trans-stmt.c:499
#, no-c-format
msgid "An alternate return at %L without a * dummy argument"
msgstr ""
@@ -11518,11 +11767,6 @@ msgstr ""
msgid "may not use both -m32 and -m64"
msgstr ""
-#: config/sparc/sol2-bi.h:212 config/sparc/sol2-bi.h:217
-#: config/sparc/sol2-gld-bi.h:40 config/sparc/sol2-gld-bi.h:45
-msgid "does not support multilib"
-msgstr ""
-
#: config/mips/mips.h:1183 config/arc/arc.h:61
msgid "may not use both -EB and -EL"
msgstr ""
@@ -11535,19 +11779,19 @@ msgstr ""
msgid "-msingle-float and -msoft-float cannot both be specified"
msgstr ""
-#: config/i386/mingw32.h:85 config/i386/cygwin.h:91
+#: config/i386/mingw-w64.h:65 config/i386/mingw32.h:85 config/i386/cygwin.h:91
msgid "shared and mdll are not compatible"
msgstr ""
-#: gcc.c:813
+#: gcc.c:820
msgid "GCC does not support -C or -CC without -E"
msgstr ""
-#: gcc.c:841 java/jvspec.c:80 ada/gcc-interface/lang-specs.h:33
+#: gcc.c:848 java/jvspec.c:80 ada/gcc-interface/lang-specs.h:33
msgid "-pg and -fomit-frame-pointer are incompatible"
msgstr ""
-#: gcc.c:1026
+#: gcc.c:1033
msgid "-E or -x required when input is from standard input"
msgstr ""
@@ -11587,8 +11831,13 @@ msgstr ""
msgid "-c or -S required for Ada"
msgstr ""
-#: config/rs6000/sysv4.h:908 config/rs6000/sysv4.h:910
-#: config/rs6000/linux64.h:354 config/rs6000/linux64.h:356 config/linux.h:111
+#: config/sparc/sol2-bi.h:212 config/sparc/sol2-bi.h:217
+#: config/sparc/sol2-gld-bi.h:40 config/sparc/sol2-gld-bi.h:45
+msgid "does not support multilib"
+msgstr ""
+
+#: config/rs6000/linux64.h:354 config/rs6000/linux64.h:356
+#: config/rs6000/sysv4.h:908 config/rs6000/sysv4.h:910 config/linux.h:111
#: config/linux.h:113 config/alpha/linux-elf.h:33 config/alpha/linux-elf.h:35
msgid "-mglibc and -muclibc used together"
msgstr ""
@@ -11601,10 +11850,6 @@ msgstr ""
msgid "-Xbind-now and -Xbind-lazy are incompatible"
msgstr ""
-#: config/vax/netbsd-elf.h:47
-msgid "the -shared option is not currently supported for VAX ELF"
-msgstr ""
-
#: config/i386/cygwin.h:28
msgid "mno-cygwin and mno-win32 are not compatible"
msgstr ""
@@ -11617,10 +11862,6 @@ msgstr ""
msgid "Static linking is not supported.\n"
msgstr ""
-#: config/mcore/mcore.h:54
-msgid "the m210 does not have little endian support"
-msgstr ""
-
#: java/lang-specs.h:33
msgid "-fjni and -femit-class-files are incompatible"
msgstr ""
@@ -11649,10 +11890,18 @@ msgstr ""
msgid "Do not specify both -march=... and -mcpu=..."
msgstr ""
+#: config/vax/netbsd-elf.h:47
+msgid "the -shared option is not currently supported for VAX ELF"
+msgstr ""
+
#: config/vax/vax.h:50 config/vax/vax.h:51
msgid "profiling not supported with -mg\n"
msgstr ""
+#: config/mcore/mcore.h:54
+msgid "the m210 does not have little endian support"
+msgstr ""
+
#: config/lynx.h:70
msgid "cannot use mthreads and mlegacy-threads together"
msgstr ""
@@ -12052,7 +12301,7 @@ msgstr ""
msgid "Append a second underscore if the name already contains an underscore"
msgstr ""
-#: fortran/lang.opt:353 c.opt:745
+#: fortran/lang.opt:353 c.opt:749
msgid "Use the narrowest integer type possible for enumeration types"
msgstr ""
@@ -15249,7 +15498,7 @@ msgstr ""
msgid "Print the name of header files as they are used"
msgstr ""
-#: c.opt:69 c.opt:890
+#: c.opt:69 c.opt:894
msgid "Add <dir> to the end of the main include path"
msgstr ""
@@ -15668,442 +15917,446 @@ msgid "Warn about unrecognized pragmas"
msgstr ""
#: c.opt:481
-msgid "Warn about macros defined in the main file that are not used"
+msgid "Warn about unsuffixed float constants"
msgstr ""
#: c.opt:485
-msgid "Do not warn about using variadic macros when -pedantic"
+msgid "Warn about macros defined in the main file that are not used"
msgstr ""
#: c.opt:489
-msgid "Warn if a variable length array is used"
+msgid "Do not warn about using variadic macros when -pedantic"
msgstr ""
#: c.opt:493
-msgid "Warn when a register variable is declared volatile"
+msgid "Warn if a variable length array is used"
msgstr ""
#: c.opt:497
+msgid "Warn when a register variable is declared volatile"
+msgstr ""
+
+#: c.opt:501
msgid ""
"In C++, nonzero means warn about deprecated conversion from string literals "
"to `char *'. In C, similar warning, except that the conversion is of course "
"not deprecated by the ISO C standard."
msgstr ""
-#: c.opt:501
+#: c.opt:505
msgid "Warn when a pointer differs in signedness in an assignment"
msgstr ""
-#: c.opt:505
+#: c.opt:509
msgid "A synonym for -std=c89 (for C) or -std=c++98 (for C++)"
msgstr ""
-#: c.opt:513
+#: c.opt:517
msgid "Enforce class member access control semantics"
msgstr ""
-#: c.opt:520
+#: c.opt:524
msgid "Change when template instances are emitted"
msgstr ""
-#: c.opt:524
+#: c.opt:528
msgid "Recognize the \"asm\" keyword"
msgstr ""
-#: c.opt:528
+#: c.opt:532
msgid "Recognize built-in functions"
msgstr ""
-#: c.opt:535
+#: c.opt:539
msgid "Check the return value of new"
msgstr ""
-#: c.opt:539
+#: c.opt:543
msgid "Allow the arguments of the '?' operator to have different types"
msgstr ""
-#: c.opt:543
+#: c.opt:547
msgid "Reduce the size of object files"
msgstr ""
-#: c.opt:547
+#: c.opt:551
msgid "Use class <name> for constant strings"
msgstr ""
-#: c.opt:551
+#: c.opt:555
msgid "Inline member functions by default"
msgstr ""
-#: c.opt:555
+#: c.opt:559
msgid "Preprocess directives only."
msgstr ""
-#: c.opt:559
+#: c.opt:563
msgid "Permit '$' as an identifier character"
msgstr ""
-#: c.opt:566
+#: c.opt:570
msgid "Generate code to check exception specifications"
msgstr ""
-#: c.opt:573
+#: c.opt:577
msgid "Convert all strings and character constants to character set <cset>"
msgstr ""
-#: c.opt:577
+#: c.opt:581
msgid "Permit universal character names (\\u and \\U) in identifiers"
msgstr ""
-#: c.opt:581
+#: c.opt:585
msgid "Specify the default character set for source files"
msgstr ""
-#: c.opt:589
+#: c.opt:593
msgid "Scope of for-init-statement variables is local to the loop"
msgstr ""
-#: c.opt:593
+#: c.opt:597
msgid "Do not assume that standard C libraries and \"main\" exist"
msgstr ""
-#: c.opt:597
+#: c.opt:601
msgid "Recognize GNU-defined keywords"
msgstr ""
-#: c.opt:601
+#: c.opt:605
msgid "Generate code for GNU runtime environment"
msgstr ""
-#: c.opt:605
+#: c.opt:609
msgid "Use traditional GNU semantics for inline functions"
msgstr ""
-#: c.opt:618
+#: c.opt:622
msgid "Assume normal C execution environment"
msgstr ""
-#: c.opt:622
+#: c.opt:626
msgid "Enable support for huge objects"
msgstr ""
-#: c.opt:626
+#: c.opt:630
msgid "Export functions even if they can be inlined"
msgstr ""
-#: c.opt:630
+#: c.opt:634
msgid "Emit implicit instantiations of inline templates"
msgstr ""
-#: c.opt:634
+#: c.opt:638
msgid "Emit implicit instantiations of templates"
msgstr ""
-#: c.opt:638
+#: c.opt:642
msgid "Inject friend functions into enclosing namespace"
msgstr ""
-#: c.opt:645
+#: c.opt:649
msgid ""
"Allow implicit conversions between vectors with differing numbers of "
"subparts and/or differing element types."
msgstr ""
-#: c.opt:649
+#: c.opt:653
msgid "Don't warn about uses of Microsoft extensions"
msgstr ""
-#: c.opt:659
+#: c.opt:663
msgid "Generate code for NeXT (Apple Mac OS X) runtime environment"
msgstr ""
-#: c.opt:663
+#: c.opt:667
msgid "Assume that receivers of Objective-C messages may be nil"
msgstr ""
-#: c.opt:675
+#: c.opt:679
msgid ""
"Generate special Objective-C methods to initialize/destroy non-POD C++ "
"ivars, if needed"
msgstr ""
-#: c.opt:679
+#: c.opt:683
msgid "Allow fast jumps to the message dispatcher"
msgstr ""
-#: c.opt:685
+#: c.opt:689
msgid "Enable Objective-C exception and synchronization syntax"
msgstr ""
-#: c.opt:689
+#: c.opt:693
msgid "Enable garbage collection (GC) in Objective-C/Objective-C++ programs"
msgstr ""
-#: c.opt:694
+#: c.opt:698
msgid "Enable Objective-C setjmp exception handling runtime"
msgstr ""
-#: c.opt:698
+#: c.opt:702
msgid "Enable OpenMP (implies -frecursive in Fortran)"
msgstr ""
-#: c.opt:702
+#: c.opt:706
msgid "Recognize C++ keywords like \"compl\" and \"xor\""
msgstr ""
-#: c.opt:706
+#: c.opt:710
msgid "Enable optional diagnostics"
msgstr ""
-#: c.opt:713
+#: c.opt:717
msgid "Look for and use PCH files even when preprocessing"
msgstr ""
-#: c.opt:717
+#: c.opt:721
msgid "Downgrade conformance errors to warnings"
msgstr ""
-#: c.opt:721
+#: c.opt:725
msgid "Treat the input file as already preprocessed"
msgstr ""
-#: c.opt:725
+#: c.opt:729
msgid ""
"-fno-pretty-templates Do not pretty-print template specializations as the "
"template signature followed by the arguments"
msgstr ""
-#: c.opt:729
+#: c.opt:733
msgid ""
"Used in Fix-and-Continue mode to indicate that object files may be swapped "
"in at runtime"
msgstr ""
-#: c.opt:733
+#: c.opt:737
msgid "Enable automatic template instantiation"
msgstr ""
-#: c.opt:737
+#: c.opt:741
msgid "Generate run time type descriptor information"
msgstr ""
-#: c.opt:741
+#: c.opt:745
msgid "Use the same size for double as for float"
msgstr ""
-#: c.opt:749
+#: c.opt:753
msgid "Force the underlying type for \"wchar_t\" to be \"unsigned short\""
msgstr ""
-#: c.opt:753
+#: c.opt:757
msgid "When \"signed\" or \"unsigned\" is not given make the bitfield signed"
msgstr ""
-#: c.opt:757
+#: c.opt:761
msgid "Make \"char\" signed by default"
msgstr ""
-#: c.opt:764
+#: c.opt:768
msgid "Display statistics accumulated during compilation"
msgstr ""
-#: c.opt:771
+#: c.opt:775
msgid "Distance between tab stops for column reporting"
msgstr ""
-#: c.opt:775
+#: c.opt:779
msgid "Specify maximum template instantiation depth"
msgstr ""
-#: c.opt:782
+#: c.opt:786
msgid "Do not generate thread-safe code for initializing local statics"
msgstr ""
-#: c.opt:786
+#: c.opt:790
msgid "When \"signed\" or \"unsigned\" is not given make the bitfield unsigned"
msgstr ""
-#: c.opt:790
+#: c.opt:794
msgid "Make \"char\" unsigned by default"
msgstr ""
-#: c.opt:794
+#: c.opt:798
msgid "Use __cxa_atexit to register destructors"
msgstr ""
-#: c.opt:798
+#: c.opt:802
msgid "Use __cxa_get_exception_ptr in exception handling"
msgstr ""
-#: c.opt:802
+#: c.opt:806
msgid "Marks all inlined methods as having hidden visibility"
msgstr ""
-#: c.opt:806
+#: c.opt:810
msgid "Changes visibility to match Microsoft Visual Studio by default"
msgstr ""
-#: c.opt:810
+#: c.opt:814
msgid "Discard unused virtual functions"
msgstr ""
-#: c.opt:814
+#: c.opt:818
msgid "Implement vtables using thunks"
msgstr ""
-#: c.opt:818
+#: c.opt:822
msgid "Emit common-like symbols as weak symbols"
msgstr ""
-#: c.opt:822
+#: c.opt:826
msgid ""
"Convert all wide strings and character constants to character set <cset>"
msgstr ""
-#: c.opt:826
+#: c.opt:830
msgid "Generate a #line directive pointing at the current working directory"
msgstr ""
-#: c.opt:830
+#: c.opt:834
msgid "Emit cross referencing information"
msgstr ""
-#: c.opt:834
+#: c.opt:838
msgid ""
"Generate lazy class lookup (via objc_getClass()) for use in Zero-Link mode"
msgstr ""
-#: c.opt:838
+#: c.opt:842
msgid "Dump declarations to a .decl file"
msgstr ""
-#: c.opt:842
+#: c.opt:846
msgid "Aggressive reduced debug info for structs"
msgstr ""
-#: c.opt:846
+#: c.opt:850
msgid "Conservative reduced debug info for structs"
msgstr ""
-#: c.opt:850
+#: c.opt:854
msgid "Detailed reduced debug info for structs"
msgstr ""
-#: c.opt:854 c.opt:886
+#: c.opt:858 c.opt:890
msgid "Add <dir> to the end of the system include path"
msgstr ""
-#: c.opt:858
+#: c.opt:862
msgid "Accept definition of macros in <file>"
msgstr ""
-#: c.opt:862
+#: c.opt:866
msgid "-imultilib <dir> Set <dir> to be the multilib include subdirectory"
msgstr ""
-#: c.opt:866
+#: c.opt:870
msgid "Include the contents of <file> before other files"
msgstr ""
-#: c.opt:870
+#: c.opt:874
msgid "Specify <path> as a prefix for next two options"
msgstr ""
-#: c.opt:874
+#: c.opt:878
msgid "Set <dir> to be the system root directory"
msgstr ""
-#: c.opt:878
+#: c.opt:882
msgid "Add <dir> to the start of the system include path"
msgstr ""
-#: c.opt:882
+#: c.opt:886
msgid "Add <dir> to the end of the quote include path"
msgstr ""
-#: c.opt:900
+#: c.opt:904
msgid ""
"Do not search standard system include directories (those specified with -"
"isystem will still be used)"
msgstr ""
-#: c.opt:904
+#: c.opt:908
msgid "Do not search standard system include directories for C++"
msgstr ""
-#: c.opt:920
+#: c.opt:924
msgid "Generate C header of platform-specific features"
msgstr ""
-#: c.opt:924
+#: c.opt:928
msgid "Print a checksum of the executable for PCH validity checking, and stop"
msgstr ""
-#: c.opt:928
+#: c.opt:932
msgid "Remap file names when including files"
msgstr ""
-#: c.opt:932
+#: c.opt:936
msgid "Conform to the ISO 1998 C++ standard"
msgstr ""
-#: c.opt:936
+#: c.opt:940
msgid ""
"Conform to the ISO 1998 C++ standard, with extensions that are likely to"
msgstr ""
-#: c.opt:943 c.opt:978
+#: c.opt:947 c.opt:982
msgid "Conform to the ISO 1990 C standard"
msgstr ""
-#: c.opt:947 c.opt:986
+#: c.opt:951 c.opt:990
msgid "Conform to the ISO 1999 C standard"
msgstr ""
-#: c.opt:951
+#: c.opt:955
msgid "Deprecated in favor of -std=c99"
msgstr ""
-#: c.opt:955
+#: c.opt:959
msgid "Conform to the ISO 1998 C++ standard with GNU extensions"
msgstr ""
-#: c.opt:959
+#: c.opt:963
msgid "Conform to the ISO 1998 C++ standard, with GNU extensions and"
msgstr ""
-#: c.opt:966
+#: c.opt:970
msgid "Conform to the ISO 1990 C standard with GNU extensions"
msgstr ""
-#: c.opt:970
+#: c.opt:974
msgid "Conform to the ISO 1999 C standard with GNU extensions"
msgstr ""
-#: c.opt:974
+#: c.opt:978
msgid "Deprecated in favor of -std=gnu99"
msgstr ""
-#: c.opt:982
+#: c.opt:986
msgid "Conform to the ISO 1990 C standard as amended in 1994"
msgstr ""
-#: c.opt:990
+#: c.opt:994
msgid "Deprecated in favor of -std=iso9899:1999"
msgstr ""
-#: c.opt:994
+#: c.opt:998
msgid "Enable traditional preprocessing"
msgstr ""
-#: c.opt:998
+#: c.opt:1002
msgid "Support ISO C trigraphs"
msgstr ""
-#: c.opt:1002
+#: c.opt:1006
msgid "Do not predefine system-specific and GCC-specific macros"
msgstr ""
-#: c.opt:1006
+#: c.opt:1010
msgid "Enable verbose output"
msgstr ""
@@ -16412,8 +16665,9 @@ msgstr ""
msgid "When running CSE, follow jumps to their targets"
msgstr ""
-#: common.opt:401
-msgid "When running CSE, follow conditional jumps"
+#: common.opt:401 common.opt:514 common.opt:727 common.opt:956 common.opt:1108
+#: common.opt:1167 common.opt:1183 common.opt:1243
+msgid "Does nothing. Preserved for backward compatibility."
msgstr ""
#: common.opt:405
@@ -16524,11 +16778,6 @@ msgstr ""
msgid "Don't allocate floats and doubles in extended-precision registers"
msgstr ""
-#: common.opt:514 common.opt:727 common.opt:956 common.opt:1108
-#: common.opt:1167 common.opt:1183 common.opt:1243
-msgid "Does nothing. Preserved for backward compatibility."
-msgstr ""
-
#: common.opt:518
msgid "Perform a forward propagation pass on RTL"
msgstr ""
@@ -17384,27 +17633,27 @@ msgstr ""
msgid "Create a position independent executable"
msgstr ""
-#: attribs.c:284
+#: attribs.c:283
#, gcc-internal-format
-msgid "%qs attribute directive ignored"
+msgid "%qE attribute directive ignored"
msgstr ""
-#: attribs.c:292
+#: attribs.c:291
#, gcc-internal-format
-msgid "wrong number of arguments specified for %qs attribute"
+msgid "wrong number of arguments specified for %qE attribute"
msgstr ""
-#: attribs.c:310
+#: attribs.c:309
#, gcc-internal-format
-msgid "%qs attribute does not apply to types"
+msgid "%qE attribute does not apply to types"
msgstr ""
-#: attribs.c:361
+#: attribs.c:360
#, gcc-internal-format
-msgid "%qs attribute only applies to function types"
+msgid "%qE attribute only applies to function types"
msgstr ""
-#: attribs.c:371
+#: attribs.c:370
#, gcc-internal-format
msgid "type attributes ignored after type is already defined"
msgstr ""
@@ -17420,47 +17669,52 @@ msgid ""
"branch target register load optimization is not intended to be run twice"
msgstr ""
-#: builtins.c:1049
+#: builtins.c:489
+#, gcc-internal-format
+msgid "offset outside bounds of constant string"
+msgstr ""
+
+#: builtins.c:1052
#, gcc-internal-format
msgid "second argument to %<__builtin_prefetch%> must be a constant"
msgstr ""
-#: builtins.c:1056
+#: builtins.c:1059
#, gcc-internal-format
msgid "invalid second argument to %<__builtin_prefetch%>; using zero"
msgstr ""
-#: builtins.c:1064
+#: builtins.c:1067
#, gcc-internal-format
msgid "third argument to %<__builtin_prefetch%> must be a constant"
msgstr ""
-#: builtins.c:1071
+#: builtins.c:1074
#, gcc-internal-format
msgid "invalid third argument to %<__builtin_prefetch%>; using zero"
msgstr ""
-#: builtins.c:4675
+#: builtins.c:4678
#, gcc-internal-format
msgid "argument of %<__builtin_args_info%> must be constant"
msgstr ""
-#: builtins.c:4681
+#: builtins.c:4684
#, gcc-internal-format
msgid "argument of %<__builtin_args_info%> out of range"
msgstr ""
-#: builtins.c:4687
+#: builtins.c:4690
#, gcc-internal-format
msgid "missing argument in %<__builtin_args_info%>"
msgstr ""
-#: builtins.c:4823 gimplify.c:2296
+#: builtins.c:4826 gimplify.c:2376
#, gcc-internal-format
msgid "too few arguments to function %<va_start%>"
msgstr ""
-#: builtins.c:4981
+#: builtins.c:4984
#, gcc-internal-format
msgid "first argument to %<va_arg%> not of type %<va_list%>"
msgstr ""
@@ -17468,93 +17722,93 @@ msgstr ""
#. Unfortunately, this is merely undefined, rather than a constraint
#. violation, so we cannot make this an error. If this call is never
#. executed, the program is still strictly conforming.
-#: builtins.c:4996
+#: builtins.c:4999
#, gcc-internal-format
msgid "%qT is promoted to %qT when passed through %<...%>"
msgstr ""
-#: builtins.c:5001
+#: builtins.c:5004
#, gcc-internal-format
msgid "(so you should pass %qT not %qT to %<va_arg%>)"
msgstr ""
#. We can, however, treat "undefined" any way we please.
#. Call abort to encourage the user to fix the program.
-#: builtins.c:5008 c-typeck.c:2518
+#: builtins.c:5011 c-typeck.c:2513
#, gcc-internal-format
msgid "if this code is reached, the program will abort"
msgstr ""
-#: builtins.c:5132
+#: builtins.c:5135
#, gcc-internal-format
msgid "invalid argument to %<__builtin_frame_address%>"
msgstr ""
-#: builtins.c:5134
+#: builtins.c:5137
#, gcc-internal-format
msgid "invalid argument to %<__builtin_return_address%>"
msgstr ""
-#: builtins.c:5147
+#: builtins.c:5150
#, gcc-internal-format
msgid "unsupported argument to %<__builtin_frame_address%>"
msgstr ""
-#: builtins.c:5149
+#: builtins.c:5152
#, gcc-internal-format
msgid "unsupported argument to %<__builtin_return_address%>"
msgstr ""
-#: builtins.c:5695
+#: builtins.c:5698
#, gcc-internal-format
msgid "both arguments to %<__builtin___clear_cache%> must be pointers"
msgstr ""
-#: builtins.c:6057 builtins.c:6072
+#: builtins.c:6060 builtins.c:6075
#, gcc-internal-format
msgid "%qD changed semantics in GCC 4.4"
msgstr ""
#. All valid uses of __builtin_va_arg_pack () are removed during
#. inlining.
-#: builtins.c:6458 expr.c:8012
+#: builtins.c:6461 expr.c:8053
msgid "%Kinvalid use of %<__builtin_va_arg_pack ()%>"
msgstr ""
#. All valid uses of __builtin_va_arg_pack_len () are removed during
#. inlining.
-#: builtins.c:6464
+#: builtins.c:6467
msgid "%Kinvalid use of %<__builtin_va_arg_pack_len ()%>"
msgstr ""
-#: builtins.c:6760
+#: builtins.c:6763
#, gcc-internal-format
msgid "%<__builtin_longjmp%> second argument must be 1"
msgstr ""
-#: builtins.c:7396
+#: builtins.c:7399
#, gcc-internal-format
msgid "target format does not support infinity"
msgstr ""
-#: builtins.c:11772
+#: builtins.c:11812
#, gcc-internal-format
msgid "%<va_start%> used in function with fixed args"
msgstr ""
-#: builtins.c:11780
+#: builtins.c:11820
#, gcc-internal-format
msgid "wrong number of arguments to function %<va_start%>"
msgstr ""
#. Evidently an out of date version of <stdarg.h>; can't validate
#. va_start's second argument, but can still work as intended.
-#: builtins.c:11793
+#: builtins.c:11833
#, gcc-internal-format
msgid "%<__builtin_next_arg%> called without an argument"
msgstr ""
-#: builtins.c:11798
+#: builtins.c:11838
#, gcc-internal-format
msgid "wrong number of arguments to function %<__builtin_next_arg%>"
msgstr ""
@@ -17564,943 +17818,948 @@ msgstr ""
#. argument. We just warn and set the arg to be the last
#. argument so that we will get wrong-code because of
#. it.
-#: builtins.c:11825
+#: builtins.c:11868
#, gcc-internal-format
msgid "second parameter of %<va_start%> not last named argument"
msgstr ""
-#: builtins.c:11835
+#: builtins.c:11878
#, gcc-internal-format
msgid ""
"undefined behaviour when second parameter of %<va_start%> is declared with %"
"<register%> storage"
msgstr ""
-#: builtins.c:11950
+#: builtins.c:11993
msgid "%Kfirst argument of %D must be a pointer, second integer constant"
msgstr ""
-#: builtins.c:11963
+#: builtins.c:12006
msgid "%Klast argument of %D is not integer constant between 0 and 3"
msgstr ""
-#: builtins.c:12008 builtins.c:12173 builtins.c:12232
+#: builtins.c:12051 builtins.c:12216 builtins.c:12275
msgid "%Kcall to %D will always overflow destination buffer"
msgstr ""
-#: builtins.c:12163
+#: builtins.c:12206
msgid "%Kcall to %D might overflow destination buffer"
msgstr ""
-#: builtins.c:12253
+#: builtins.c:12296
msgid "%Kattempt to free a non-heap object %qD"
msgstr ""
-#: builtins.c:12256
+#: builtins.c:12299
msgid "%Kattempt to free a non-heap object"
msgstr ""
-#: c-common.c:1156
+#: c-common.c:1157
#, gcc-internal-format
msgid "%qD is not defined outside of function scope"
msgstr ""
-#: c-common.c:1206
+#: c-common.c:1207
#, gcc-internal-format
msgid ""
"string length %qd is greater than the length %qd ISO C%d compilers are "
"required to support"
msgstr ""
-#: c-common.c:1654 c-common.c:1666
+#: c-common.c:1655 c-common.c:1667
#, gcc-internal-format
msgid "overflow in constant expression"
msgstr ""
-#: c-common.c:1688
+#: c-common.c:1689
#, gcc-internal-format
msgid "integer overflow in expression"
msgstr ""
-#: c-common.c:1692
+#: c-common.c:1693
#, gcc-internal-format
msgid "floating point overflow in expression"
msgstr ""
-#: c-common.c:1696
+#: c-common.c:1697
#, gcc-internal-format
msgid "fixed-point overflow in expression"
msgstr ""
-#: c-common.c:1700
+#: c-common.c:1701
#, gcc-internal-format
msgid "vector overflow in expression"
msgstr ""
-#: c-common.c:1705
+#: c-common.c:1706
#, gcc-internal-format
msgid "complex integer overflow in expression"
msgstr ""
-#: c-common.c:1707
+#: c-common.c:1708
#, gcc-internal-format
msgid "complex floating point overflow in expression"
msgstr ""
-#: c-common.c:1746
+#: c-common.c:1747
#, gcc-internal-format
msgid "logical %<or%> applied to non-boolean constant"
msgstr ""
-#: c-common.c:1749
+#: c-common.c:1750
#, gcc-internal-format
msgid "logical %<and%> applied to non-boolean constant"
msgstr ""
-#: c-common.c:1781
+#: c-common.c:1786
#, gcc-internal-format
msgid "type-punning to incomplete type might break strict-aliasing rules"
msgstr ""
-#: c-common.c:1796
+#: c-common.c:1801
#, gcc-internal-format
msgid "dereferencing type-punned pointer will break strict-aliasing rules"
msgstr ""
-#: c-common.c:1803 c-common.c:1821
+#: c-common.c:1808 c-common.c:1826
#, gcc-internal-format
msgid "dereferencing type-punned pointer might break strict-aliasing rules"
msgstr ""
-#: c-common.c:1852
+#: c-common.c:1857
#, gcc-internal-format
msgid "first argument of %q+D should be %<int%>"
msgstr ""
-#: c-common.c:1861
+#: c-common.c:1866
#, gcc-internal-format
msgid "second argument of %q+D should be %<char **%>"
msgstr ""
-#: c-common.c:1870
+#: c-common.c:1875
#, gcc-internal-format
msgid "third argument of %q+D should probably be %<char **%>"
msgstr ""
-#: c-common.c:1880
+#: c-common.c:1885
#, gcc-internal-format
msgid "%q+D takes only zero or two arguments"
msgstr ""
-#: c-common.c:1929
+#: c-common.c:1934
#, gcc-internal-format
msgid ""
"use -flax-vector-conversions to permit conversions between vectors with "
"differing element types or numbers of subparts"
msgstr ""
-#: c-common.c:2084
+#: c-common.c:2089
#, gcc-internal-format
msgid "conversion to %qT from boolean expression"
msgstr ""
-#: c-common.c:2106
+#: c-common.c:2111
#, gcc-internal-format
msgid "negative integer implicitly converted to unsigned type"
msgstr ""
-#: c-common.c:2108
+#: c-common.c:2113
#, gcc-internal-format
msgid "conversion of unsigned constant value to negative integer"
msgstr ""
-#: c-common.c:2135
+#: c-common.c:2140
#, gcc-internal-format
msgid "conversion to %qT alters %qT constant value"
msgstr ""
-#: c-common.c:2227
+#: c-common.c:2232
#, gcc-internal-format
msgid "conversion to %qT from %qT may change the sign of the result"
msgstr ""
-#: c-common.c:2259
+#: c-common.c:2264
#, gcc-internal-format
msgid "conversion to %qT from %qT may alter its value"
msgstr ""
-#: c-common.c:2287
+#: c-common.c:2292
#, gcc-internal-format
msgid "large integer implicitly truncated to unsigned type"
msgstr ""
-#: c-common.c:2293 c-common.c:2300 c-common.c:2308
+#: c-common.c:2298 c-common.c:2305 c-common.c:2313
#, gcc-internal-format
msgid "overflow in implicit constant conversion"
msgstr ""
-#: c-common.c:2479
+#: c-common.c:2484
#, gcc-internal-format
msgid "operation on %qE may be undefined"
msgstr ""
-#: c-common.c:2787
+#: c-common.c:2792
#, gcc-internal-format
msgid "case label does not reduce to an integer constant"
msgstr ""
-#: c-common.c:2827
+#: c-common.c:2832
#, gcc-internal-format
msgid "case label value is less than minimum value for type"
msgstr ""
-#: c-common.c:2835
+#: c-common.c:2840
#, gcc-internal-format
msgid "case label value exceeds maximum value for type"
msgstr ""
-#: c-common.c:2843
+#: c-common.c:2848
#, gcc-internal-format
msgid "lower value in case label range less than minimum value for type"
msgstr ""
-#: c-common.c:2852
+#: c-common.c:2857
#, gcc-internal-format
msgid "upper value in case label range exceeds maximum value for type"
msgstr ""
-#: c-common.c:2926
+#: c-common.c:2931
#, gcc-internal-format
msgid ""
"GCC cannot support operators with integer types and fixed-point types that "
"have too many integral and fractional bits together"
msgstr ""
-#: c-common.c:3412
+#: c-common.c:3417
#, gcc-internal-format
msgid "invalid operands to binary %s (have %qT and %qT)"
msgstr ""
-#: c-common.c:3648
+#: c-common.c:3653
#, gcc-internal-format
msgid "comparison is always false due to limited range of data type"
msgstr ""
-#: c-common.c:3650
+#: c-common.c:3655
#, gcc-internal-format
msgid "comparison is always true due to limited range of data type"
msgstr ""
-#: c-common.c:3729
+#: c-common.c:3734
#, gcc-internal-format
msgid "comparison of unsigned expression >= 0 is always true"
msgstr ""
-#: c-common.c:3739
+#: c-common.c:3744
#, gcc-internal-format
msgid "comparison of unsigned expression < 0 is always false"
msgstr ""
-#: c-common.c:3781
+#: c-common.c:3785
#, gcc-internal-format
msgid "pointer of type %<void *%> used in arithmetic"
msgstr ""
-#: c-common.c:3787
+#: c-common.c:3791
#, gcc-internal-format
msgid "pointer to a function used in arithmetic"
msgstr ""
-#: c-common.c:3793
+#: c-common.c:3797
#, gcc-internal-format
msgid "pointer to member function used in arithmetic"
msgstr ""
-#: c-common.c:3875
-#, gcc-internal-format
-msgid "offset %<%wd%> outside bounds of constant string"
-msgstr ""
-
-#: c-common.c:3999
+#: c-common.c:3978
#, gcc-internal-format
msgid "the address of %qD will always evaluate as %<true%>"
msgstr ""
-#: c-common.c:4087 cp/semantics.c:594 cp/typeck.c:6669
+#: c-common.c:4066 cp/semantics.c:593 cp/typeck.c:6676
#, gcc-internal-format
msgid "suggest parentheses around assignment used as truth value"
msgstr ""
-#: c-common.c:4164 c-decl.c:2888 c-typeck.c:9798
+#: c-common.c:4143 c-decl.c:3001 c-typeck.c:9934
#, gcc-internal-format
msgid "invalid use of %<restrict%>"
msgstr ""
-#: c-common.c:4381
+#: c-common.c:4360
#, gcc-internal-format
msgid "invalid application of %<sizeof%> to a function type"
msgstr ""
-#: c-common.c:4394
+#: c-common.c:4373
#, gcc-internal-format
msgid "invalid application of %qs to a void type"
msgstr ""
-#: c-common.c:4402
+#: c-common.c:4381
#, gcc-internal-format
msgid "invalid application of %qs to incomplete type %qT "
msgstr ""
-#: c-common.c:4443
+#: c-common.c:4422
#, gcc-internal-format
msgid "%<__alignof%> applied to a bit-field"
msgstr ""
-#: c-common.c:5170
+#: c-common.c:5149
#, gcc-internal-format
msgid "cannot disable built-in function %qs"
msgstr ""
-#: c-common.c:5361
+#: c-common.c:5340
#, gcc-internal-format
msgid "pointers are not permitted as case values"
msgstr ""
-#: c-common.c:5368
+#: c-common.c:5347
#, gcc-internal-format
msgid "range expressions in switch statements are non-standard"
msgstr ""
-#: c-common.c:5394
+#: c-common.c:5373
#, gcc-internal-format
msgid "empty range specified"
msgstr ""
-#: c-common.c:5454
+#: c-common.c:5433
#, gcc-internal-format
msgid "duplicate (or overlapping) case value"
msgstr ""
-#: c-common.c:5455
+#: c-common.c:5434
#, gcc-internal-format
msgid "%Jthis is the first entry overlapping that value"
msgstr ""
-#: c-common.c:5459
+#: c-common.c:5438
#, gcc-internal-format
msgid "duplicate case value"
msgstr ""
-#: c-common.c:5460
+#: c-common.c:5439
#, gcc-internal-format
msgid "%Jpreviously used here"
msgstr ""
-#: c-common.c:5464
+#: c-common.c:5443
#, gcc-internal-format
msgid "multiple default labels in one switch"
msgstr ""
-#: c-common.c:5465
+#: c-common.c:5444
#, gcc-internal-format
msgid "%Jthis is the first default label"
msgstr ""
-#: c-common.c:5516
+#: c-common.c:5495
#, gcc-internal-format
msgid "%Jcase value %qs not in enumerated type"
msgstr ""
-#: c-common.c:5520
+#: c-common.c:5499
#, gcc-internal-format
msgid "%Jcase value %qs not in enumerated type %qT"
msgstr ""
-#: c-common.c:5579
+#: c-common.c:5558
#, gcc-internal-format
msgid "%Hswitch missing default case"
msgstr ""
-#: c-common.c:5650
+#: c-common.c:5629
#, gcc-internal-format
msgid "%Henumeration value %qE not handled in switch"
msgstr ""
-#: c-common.c:5685
+#: c-common.c:5664
#, gcc-internal-format
msgid "taking the address of a label is non-standard"
msgstr ""
-#: c-common.c:5858
+#: c-common.c:5837
#, gcc-internal-format
msgid "%qE attribute ignored for field of type %qT"
msgstr ""
-#: c-common.c:5869 c-common.c:5888 c-common.c:5906 c-common.c:5933
-#: c-common.c:5960 c-common.c:5986 c-common.c:6005 c-common.c:6029
-#: c-common.c:6052 c-common.c:6075 c-common.c:6096 c-common.c:6117
-#: c-common.c:6141 c-common.c:6167 c-common.c:6204 c-common.c:6231
-#: c-common.c:6274 c-common.c:6358 c-common.c:6388 c-common.c:6407
-#: c-common.c:6742 c-common.c:6758 c-common.c:6806 c-common.c:6829
-#: c-common.c:6893 c-common.c:7021 c-common.c:7087 c-common.c:7131
-#: c-common.c:7177 c-common.c:7247 c-common.c:7271 c-common.c:7557
-#: c-common.c:7580 c-common.c:7619 c-common.c:7708 c-common.c:7848
-#: ada/gcc-interface/utils.c:4957 ada/gcc-interface/utils.c:5130
-#: ada/gcc-interface/utils.c:5149
+#: c-common.c:5848 c-common.c:5867 c-common.c:5885 c-common.c:5912
+#: c-common.c:5939 c-common.c:5965 c-common.c:5984 c-common.c:6008
+#: c-common.c:6031 c-common.c:6054 c-common.c:6075 c-common.c:6096
+#: c-common.c:6120 c-common.c:6146 c-common.c:6183 c-common.c:6210
+#: c-common.c:6253 c-common.c:6337 c-common.c:6367 c-common.c:6387
+#: c-common.c:6722 c-common.c:6738 c-common.c:6786 c-common.c:6809
+#: c-common.c:6873 c-common.c:7001 c-common.c:7067 c-common.c:7111
+#: c-common.c:7157 c-common.c:7235 c-common.c:7259 c-common.c:7545
+#: c-common.c:7568 c-common.c:7607 c-common.c:7696 c-common.c:7836 tree.c:4066
+#: tree.c:4078 tree.c:4088 config/darwin.c:1437 config/arm/arm.c:3299
+#: config/arm/arm.c:3327 config/avr/avr.c:4807 config/h8300/h8300.c:5283
+#: config/h8300/h8300.c:5307 config/i386/i386.c:4286 config/i386/i386.c:26894
+#: config/ia64/ia64.c:621 config/m68hc11/m68hc11.c:1110
+#: config/rs6000/rs6000.c:20744 config/spu/spu.c:3784
+#: ada/gcc-interface/utils.c:5036 ada/gcc-interface/utils.c:5209
+#: ada/gcc-interface/utils.c:5228
#, gcc-internal-format
msgid "%qE attribute ignored"
msgstr ""
-#: c-common.c:5951 c-common.c:5977
+#: c-common.c:5930 c-common.c:5956
#, gcc-internal-format
msgid "%qE attribute conflicts with attribute %s"
msgstr ""
-#: c-common.c:6198
+#: c-common.c:6177
#, gcc-internal-format
msgid "%qE attribute have effect only on public objects"
msgstr ""
-#: c-common.c:6295
+#: c-common.c:6274
#, gcc-internal-format
msgid "destructor priorities are not supported"
msgstr ""
-#: c-common.c:6297
+#: c-common.c:6276
#, gcc-internal-format
msgid "constructor priorities are not supported"
msgstr ""
-#: c-common.c:6314
+#: c-common.c:6293
#, gcc-internal-format
msgid "destructor priorities from 0 to %d are reserved for the implementation"
msgstr ""
-#: c-common.c:6319
+#: c-common.c:6298
#, gcc-internal-format
msgid "constructor priorities from 0 to %d are reserved for the implementation"
msgstr ""
-#: c-common.c:6327
+#: c-common.c:6306
#, gcc-internal-format
msgid "destructor priorities must be integers from 0 to %d inclusive"
msgstr ""
-#: c-common.c:6330
+#: c-common.c:6309
#, gcc-internal-format
msgid "constructor priorities must be integers from 0 to %d inclusive"
msgstr ""
-#: c-common.c:6451
+#: c-common.c:6431
#, gcc-internal-format
-msgid "unknown machine mode %qs"
+msgid "unknown machine mode %qE"
msgstr ""
-#: c-common.c:6480
+#: c-common.c:6460
#, gcc-internal-format
msgid "specifying vector types with __attribute__ ((mode)) is deprecated"
msgstr ""
-#: c-common.c:6483
+#: c-common.c:6463
#, gcc-internal-format
msgid "use __attribute__ ((vector_size)) instead"
msgstr ""
-#: c-common.c:6492
+#: c-common.c:6472
#, gcc-internal-format
msgid "unable to emulate %qs"
msgstr ""
-#: c-common.c:6502
+#: c-common.c:6482
#, gcc-internal-format
msgid "invalid pointer mode %qs"
msgstr ""
-#: c-common.c:6519
+#: c-common.c:6499
#, gcc-internal-format
msgid "signness of type and machine mode %qs don't match"
msgstr ""
-#: c-common.c:6530
+#: c-common.c:6510
#, gcc-internal-format
msgid "no data type for mode %qs"
msgstr ""
-#: c-common.c:6540
+#: c-common.c:6520
#, gcc-internal-format
msgid "cannot use mode %qs for enumeral types"
msgstr ""
-#: c-common.c:6567
+#: c-common.c:6547
#, gcc-internal-format
msgid "mode %qs applied to inappropriate type"
msgstr ""
-#: c-common.c:6598
+#: c-common.c:6578
#, gcc-internal-format
msgid "%Jsection attribute cannot be specified for local variables"
msgstr ""
-#: c-common.c:6609 config/bfin/bfin.c:5329 config/bfin/bfin.c:5380
+#: c-common.c:6589 config/bfin/bfin.c:5371 config/bfin/bfin.c:5422
#, gcc-internal-format
msgid "section of %q+D conflicts with previous declaration"
msgstr ""
-#: c-common.c:6617
+#: c-common.c:6597
#, gcc-internal-format
msgid "section of %q+D cannot be overridden"
msgstr ""
-#: c-common.c:6625
+#: c-common.c:6605
#, gcc-internal-format
msgid "section attribute not allowed for %q+D"
msgstr ""
-#: c-common.c:6631
+#: c-common.c:6611
#, gcc-internal-format
msgid "%Jsection attributes are not supported for this target"
msgstr ""
-#: c-common.c:6663
+#: c-common.c:6643
#, gcc-internal-format
msgid "requested alignment is not a constant"
msgstr ""
-#: c-common.c:6668
+#: c-common.c:6648
#, gcc-internal-format
msgid "requested alignment is not a power of 2"
msgstr ""
-#: c-common.c:6673
+#: c-common.c:6653
#, gcc-internal-format
msgid "requested alignment is too large"
msgstr ""
-#: c-common.c:6699
+#: c-common.c:6679
#, gcc-internal-format
msgid "alignment may not be specified for %q+D"
msgstr ""
-#: c-common.c:6706
+#: c-common.c:6686
#, gcc-internal-format
msgid ""
"alignment for %q+D was previously specified as %d and may not be decreased"
msgstr ""
-#: c-common.c:6710
+#: c-common.c:6690
#, gcc-internal-format
msgid "alignment for %q+D must be at least %d"
msgstr ""
-#: c-common.c:6735
+#: c-common.c:6715
#, gcc-internal-format
msgid "inline function %q+D cannot be declared weak"
msgstr ""
-#: c-common.c:6769
+#: c-common.c:6749
#, gcc-internal-format
msgid "%q+D defined both normally and as an alias"
msgstr ""
-#: c-common.c:6785
+#: c-common.c:6765
#, gcc-internal-format
msgid "alias argument not a string"
msgstr ""
-#: c-common.c:6850
+#: c-common.c:6830
#, gcc-internal-format
msgid "%Jweakref attribute must appear before alias attribute"
msgstr ""
-#: c-common.c:6880
+#: c-common.c:6860
#, gcc-internal-format
msgid "%qE attribute ignored on non-class types"
msgstr ""
-#: c-common.c:6886
+#: c-common.c:6866
#, gcc-internal-format
msgid "%qE attribute ignored because %qT is already defined"
msgstr ""
-#: c-common.c:6899
+#: c-common.c:6879
#, gcc-internal-format
msgid "visibility argument not a string"
msgstr ""
-#: c-common.c:6911
+#: c-common.c:6891
#, gcc-internal-format
msgid "%qE attribute ignored on types"
msgstr ""
-#: c-common.c:6927
+#: c-common.c:6907
#, gcc-internal-format
msgid ""
"visibility argument must be one of \"default\", \"hidden\", \"protected\" or "
"\"internal\""
msgstr ""
-#: c-common.c:6938
+#: c-common.c:6918
#, gcc-internal-format
msgid "%qD redeclared with different visibility"
msgstr ""
-#: c-common.c:6941 c-common.c:6945
+#: c-common.c:6921 c-common.c:6925
#, gcc-internal-format
msgid "%qD was declared %qs which implies default visibility"
msgstr ""
-#: c-common.c:7029
+#: c-common.c:7009
#, gcc-internal-format
msgid "tls_model argument not a string"
msgstr ""
-#: c-common.c:7042
+#: c-common.c:7022
#, gcc-internal-format
msgid ""
"tls_model argument must be one of \"local-exec\", \"initial-exec\", \"local-"
"dynamic\" or \"global-dynamic\""
msgstr ""
-#: c-common.c:7061 c-common.c:7151
+#: c-common.c:7041 c-common.c:7131
#, gcc-internal-format
msgid "%J%qE attribute applies only to functions"
msgstr ""
-#: c-common.c:7066 c-common.c:7156
+#: c-common.c:7046 c-common.c:7136
#, gcc-internal-format
msgid "%Jcan%'t set %qE attribute after definition"
msgstr ""
-#: c-common.c:7112
+#: c-common.c:7092
#, gcc-internal-format
msgid "alloc_size parameter outside range"
msgstr ""
-#: c-common.c:7245
+#: c-common.c:7193
+#, gcc-internal-format
+msgid "deprecated message is not a string"
+msgstr ""
+
+#: c-common.c:7233
#, gcc-internal-format
msgid "%qE attribute ignored for %qE"
msgstr ""
-#: c-common.c:7305
+#: c-common.c:7293
#, gcc-internal-format
msgid "invalid vector type for attribute %qE"
msgstr ""
-#: c-common.c:7311
+#: c-common.c:7299
#, gcc-internal-format
msgid "vector size not an integral multiple of component size"
msgstr ""
-#: c-common.c:7317
+#: c-common.c:7305
#, gcc-internal-format
msgid "zero vector size"
msgstr ""
-#: c-common.c:7325
+#: c-common.c:7313
#, gcc-internal-format
msgid "number of components of the vector not a power of two"
msgstr ""
-#: c-common.c:7353 ada/gcc-interface/utils.c:5008
+#: c-common.c:7341 ada/gcc-interface/utils.c:5087
#, gcc-internal-format
msgid "nonnull attribute without arguments on a non-prototype"
msgstr ""
-#: c-common.c:7368 ada/gcc-interface/utils.c:5023
+#: c-common.c:7356 ada/gcc-interface/utils.c:5102
#, gcc-internal-format
msgid "nonnull argument has invalid operand number (argument %lu)"
msgstr ""
-#: c-common.c:7387 ada/gcc-interface/utils.c:5042
+#: c-common.c:7375 ada/gcc-interface/utils.c:5121
#, gcc-internal-format
msgid ""
"nonnull argument with out-of-range operand number (argument %lu, operand %lu)"
msgstr ""
-#: c-common.c:7395 ada/gcc-interface/utils.c:5050
+#: c-common.c:7383 ada/gcc-interface/utils.c:5129
#, gcc-internal-format
msgid ""
"nonnull argument references non-pointer operand (argument %lu, operand %lu)"
msgstr ""
-#: c-common.c:7471
+#: c-common.c:7459
#, gcc-internal-format
msgid "not enough variable arguments to fit a sentinel"
msgstr ""
-#: c-common.c:7485
+#: c-common.c:7473
#, gcc-internal-format
msgid "missing sentinel in function call"
msgstr ""
-#: c-common.c:7526
+#: c-common.c:7514
#, gcc-internal-format
msgid "null argument where non-null required (argument %lu)"
msgstr ""
-#: c-common.c:7591
+#: c-common.c:7579
#, gcc-internal-format
msgid "cleanup argument not an identifier"
msgstr ""
-#: c-common.c:7598
+#: c-common.c:7586
#, gcc-internal-format
msgid "cleanup argument not a function"
msgstr ""
-#: c-common.c:7637 ada/gcc-interface/utils.c:5072
+#: c-common.c:7625 ada/gcc-interface/utils.c:5151
#, gcc-internal-format
msgid "%qE attribute requires prototypes with named arguments"
msgstr ""
-#: c-common.c:7648 ada/gcc-interface/utils.c:5083
+#: c-common.c:7636 ada/gcc-interface/utils.c:5162
#, gcc-internal-format
msgid "%qE attribute only applies to variadic functions"
msgstr ""
-#: c-common.c:7660 ada/gcc-interface/utils.c:5094
+#: c-common.c:7648 ada/gcc-interface/utils.c:5173
#, gcc-internal-format
msgid "requested position is not an integer constant"
msgstr ""
-#: c-common.c:7668 ada/gcc-interface/utils.c:5101
+#: c-common.c:7656 ada/gcc-interface/utils.c:5180
#, gcc-internal-format
msgid "requested position is less than zero"
msgstr ""
-#: c-common.c:7792
+#: c-common.c:7780
#, gcc-internal-format
msgid "Bad option %s to optimize attribute."
msgstr ""
-#: c-common.c:7795
+#: c-common.c:7783
#, gcc-internal-format
msgid "Bad option %s to pragma attribute"
msgstr ""
-#: c-common.c:7988
+#: c-common.c:7976
#, gcc-internal-format
msgid "not enough arguments to function %qE"
msgstr ""
-#: c-common.c:7993 c-typeck.c:2669
+#: c-common.c:7981 c-typeck.c:2664
#, gcc-internal-format
msgid "too many arguments to function %qE"
msgstr ""
-#: c-common.c:8023 c-common.c:8069
+#: c-common.c:8011 c-common.c:8057
#, gcc-internal-format
msgid "non-floating-point argument in call to function %qE"
msgstr ""
-#: c-common.c:8046
+#: c-common.c:8034
#, gcc-internal-format
msgid "non-floating-point arguments in call to function %qE"
msgstr ""
-#: c-common.c:8062
+#: c-common.c:8050
#, gcc-internal-format
msgid "non-const integer argument %u in call to function %qE"
msgstr ""
-#: c-common.c:8355
+#: c-common.c:8343
#, gcc-internal-format
msgid ""
"%Hignoring return value of %qD, declared with attribute warn_unused_result"
msgstr ""
-#: c-common.c:8359
+#: c-common.c:8347
#, gcc-internal-format
msgid ""
"%Hignoring return value of function declared with attribute "
"warn_unused_result"
msgstr ""
-#: c-common.c:8413
+#: c-common.c:8401
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to static data member %qD"
msgstr ""
-#: c-common.c:8418
+#: c-common.c:8406
#, gcc-internal-format
msgid "cannot apply %<offsetof%> when %<operator[]%> is overloaded"
msgstr ""
-#: c-common.c:8439 cp/typeck.c:4708
+#: c-common.c:8427 cp/typeck.c:4708
#, gcc-internal-format
msgid "attempt to take address of bit-field structure member %qD"
msgstr ""
-#: c-common.c:8492
+#: c-common.c:8480
#, gcc-internal-format
msgid "lvalue required as left operand of assignment"
msgstr ""
-#: c-common.c:8495
+#: c-common.c:8483
#, gcc-internal-format
msgid "lvalue required as increment operand"
msgstr ""
-#: c-common.c:8498
+#: c-common.c:8486
#, gcc-internal-format
msgid "lvalue required as decrement operand"
msgstr ""
-#: c-common.c:8501
+#: c-common.c:8489
#, gcc-internal-format
msgid "lvalue required as unary %<&%> operand"
msgstr ""
-#: c-common.c:8504
+#: c-common.c:8492
#, gcc-internal-format
msgid "lvalue required in asm statement"
msgstr ""
-#: c-common.c:8633
+#: c-common.c:8621
#, gcc-internal-format
msgid "size of array is too large"
msgstr ""
-#: c-common.c:8669 c-common.c:8720 c-typeck.c:2888
+#: c-common.c:8657 c-common.c:8708 c-typeck.c:2883
#, gcc-internal-format
msgid "too few arguments to function %qE"
msgstr ""
-#: c-common.c:8686 c-typeck.c:4964
+#: c-common.c:8674 c-typeck.c:4972
#, gcc-internal-format
msgid "incompatible type for argument %d of %qE"
msgstr ""
-#: c-common.c:8881
+#: c-common.c:8869
#, gcc-internal-format
msgid "array subscript has type %<char%>"
msgstr ""
-#: c-common.c:8916
+#: c-common.c:8904
#, gcc-internal-format
msgid "suggest parentheses around %<+%> inside %<<<%>"
msgstr ""
-#: c-common.c:8919
+#: c-common.c:8907
#, gcc-internal-format
msgid "suggest parentheses around %<-%> inside %<<<%>"
msgstr ""
-#: c-common.c:8925
+#: c-common.c:8913
#, gcc-internal-format
msgid "suggest parentheses around %<+%> inside %<>>%>"
msgstr ""
-#: c-common.c:8928
+#: c-common.c:8916
#, gcc-internal-format
msgid "suggest parentheses around %<-%> inside %<>>%>"
msgstr ""
-#: c-common.c:8934
+#: c-common.c:8922
#, gcc-internal-format
msgid "suggest parentheses around %<&&%> within %<||%>"
msgstr ""
-#: c-common.c:8943
+#: c-common.c:8931
#, gcc-internal-format
msgid "suggest parentheses around arithmetic in operand of %<|%>"
msgstr ""
-#: c-common.c:8948
+#: c-common.c:8936
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<|%>"
msgstr ""
-#: c-common.c:8952
+#: c-common.c:8940
#, gcc-internal-format
msgid ""
"suggest parentheses around operand of %<!%> or change %<|%> to %<||%> or %<!%"
"> to %<~%>"
msgstr ""
-#: c-common.c:8962
+#: c-common.c:8950
#, gcc-internal-format
msgid "suggest parentheses around arithmetic in operand of %<^%>"
msgstr ""
-#: c-common.c:8967
+#: c-common.c:8955
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<^%>"
msgstr ""
-#: c-common.c:8973
+#: c-common.c:8961
#, gcc-internal-format
msgid "suggest parentheses around %<+%> in operand of %<&%>"
msgstr ""
-#: c-common.c:8976
+#: c-common.c:8964
#, gcc-internal-format
msgid "suggest parentheses around %<-%> in operand of %<&%>"
msgstr ""
-#: c-common.c:8981
+#: c-common.c:8969
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<&%>"
msgstr ""
-#: c-common.c:8985
+#: c-common.c:8973
#, gcc-internal-format
msgid ""
"suggest parentheses around operand of %<!%> or change %<&%> to %<&&%> or %<!%"
"> to %<~%>"
msgstr ""
-#: c-common.c:8993
+#: c-common.c:8981
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<==%>"
msgstr ""
-#: c-common.c:8999
+#: c-common.c:8987
#, gcc-internal-format
msgid "suggest parentheses around comparison in operand of %<!=%>"
msgstr ""
-#: c-common.c:9010
+#: c-common.c:8998
#, gcc-internal-format
msgid "comparisons like %<X<=Y<=Z%> do not have their mathematical meaning"
msgstr ""
-#: c-common.c:9025
+#: c-common.c:9013
#, gcc-internal-format
msgid "label %q+D defined but not used"
msgstr ""
-#: c-common.c:9027
+#: c-common.c:9015
#, gcc-internal-format
msgid "label %q+D declared but not defined"
msgstr ""
-#: c-common.c:9047
+#: c-common.c:9035
#, gcc-internal-format
msgid "division by zero"
msgstr ""
-#: c-common.c:9079
+#: c-common.c:9067
#, gcc-internal-format
msgid "comparison between types %qT and %qT"
msgstr ""
-#: c-common.c:9130
+#: c-common.c:9118
#, gcc-internal-format
msgid "comparison between signed and unsigned integer expressions"
msgstr ""
-#: c-common.c:9181
+#: c-common.c:9169
#, gcc-internal-format
msgid "promoted ~unsigned is always non-zero"
msgstr ""
-#: c-common.c:9184
+#: c-common.c:9172
#, gcc-internal-format
msgid "comparison of promoted ~unsigned with constant"
msgstr ""
-#: c-common.c:9194
+#: c-common.c:9182
#, gcc-internal-format
msgid "comparison of promoted ~unsigned with unsigned"
msgstr ""
@@ -18510,8 +18769,8 @@ msgstr ""
#. an unprototyped function, it is compile-time undefined;
#. making it a constraint in that case was rejected in
#. DR#252.
-#: c-convert.c:98 c-typeck.c:1803 c-typeck.c:4583 cp/typeck.c:1619
-#: cp/typeck.c:5967 cp/typeck.c:6577 fortran/convert.c:88
+#: c-convert.c:98 c-typeck.c:1788 c-typeck.c:4591 cp/typeck.c:1619
+#: cp/typeck.c:5974 cp/typeck.c:6584 fortran/convert.c:88
#, gcc-internal-format
msgid "void value not ignored as it ought to be"
msgstr ""
@@ -18521,111 +18780,121 @@ msgstr ""
msgid "conversion to non-scalar type requested"
msgstr ""
-#: c-decl.c:553
+#: c-decl.c:578
#, gcc-internal-format
msgid "array %q+D assumed to have one element"
msgstr ""
-#: c-decl.c:658
+#: c-decl.c:619
+#, gcc-internal-format
+msgid "%qD is static but used in inline function %qD which is not static"
+msgstr ""
+
+#: c-decl.c:624
+#, gcc-internal-format
+msgid "%q+D is static but declared in inline function %qD which is not static"
+msgstr ""
+
+#: c-decl.c:769
#, gcc-internal-format
msgid "GCC supports only %u nested scopes"
msgstr ""
-#: c-decl.c:744 cp/decl.c:358
+#: c-decl.c:855 cp/decl.c:356
#, gcc-internal-format
msgid "label %q+D used but not defined"
msgstr ""
-#: c-decl.c:785
+#: c-decl.c:896
#, gcc-internal-format
msgid "nested function %q+D declared but never defined"
msgstr ""
-#: c-decl.c:797
+#: c-decl.c:908
#, gcc-internal-format
msgid "inline function %q+D declared but never defined"
msgstr ""
-#: c-decl.c:812 cp/decl.c:603
+#: c-decl.c:923 cp/decl.c:601
#, gcc-internal-format
msgid "unused variable %q+D"
msgstr ""
-#: c-decl.c:816
+#: c-decl.c:927
#, gcc-internal-format
msgid "type of array %q+D completed incompatibly with implicit initialization"
msgstr ""
-#: c-decl.c:1064
+#: c-decl.c:1177
#, gcc-internal-format
msgid ""
"a parameter list with an ellipsis can%'t match an empty parameter name list "
"declaration"
msgstr ""
-#: c-decl.c:1071
+#: c-decl.c:1184
#, gcc-internal-format
msgid ""
"an argument type that has a default promotion can%'t match an empty "
"parameter name list declaration"
msgstr ""
-#: c-decl.c:1112
+#: c-decl.c:1225
#, gcc-internal-format
msgid ""
"prototype for %q+D declares more arguments than previous old-style definition"
msgstr ""
-#: c-decl.c:1118
+#: c-decl.c:1231
#, gcc-internal-format
msgid ""
"prototype for %q+D declares fewer arguments than previous old-style "
"definition"
msgstr ""
-#: c-decl.c:1127
+#: c-decl.c:1240
#, gcc-internal-format
msgid "prototype for %q+D declares argument %d with incompatible type"
msgstr ""
#. If we get here, no errors were found, but do issue a warning
#. for this poor-style construct.
-#: c-decl.c:1140
+#: c-decl.c:1253
#, gcc-internal-format
msgid "prototype for %q+D follows non-prototype definition"
msgstr ""
-#: c-decl.c:1155
+#: c-decl.c:1268
#, gcc-internal-format
msgid "previous definition of %q+D was here"
msgstr ""
-#: c-decl.c:1157
+#: c-decl.c:1270
#, gcc-internal-format
msgid "previous implicit declaration of %q+D was here"
msgstr ""
-#: c-decl.c:1159
+#: c-decl.c:1272
#, gcc-internal-format
msgid "previous declaration of %q+D was here"
msgstr ""
-#: c-decl.c:1199
+#: c-decl.c:1312
#, gcc-internal-format
msgid "%q+D redeclared as different kind of symbol"
msgstr ""
-#: c-decl.c:1203
+#: c-decl.c:1316
#, gcc-internal-format
msgid "built-in function %q+D declared as non-function"
msgstr ""
-#: c-decl.c:1206 c-decl.c:1326 c-decl.c:2000
+#: c-decl.c:1319 c-decl.c:1439 c-decl.c:2113
#, gcc-internal-format
msgid "declaration of %q+D shadows a built-in function"
msgstr ""
-#: c-decl.c:1215
+#: c-decl.c:1328
#, gcc-internal-format
msgid "redeclaration of enumerator %q+D"
msgstr ""
@@ -18633,269 +18902,269 @@ msgstr ""
#. If types don't match for a built-in, throw away the
#. built-in. No point in calling locate_old_decl here, it
#. won't print anything.
-#: c-decl.c:1236
+#: c-decl.c:1349
#, gcc-internal-format
msgid "conflicting types for built-in function %q+D"
msgstr ""
-#: c-decl.c:1261 c-decl.c:1274 c-decl.c:1283
+#: c-decl.c:1374 c-decl.c:1387 c-decl.c:1396
#, gcc-internal-format
msgid "conflicting types for %q+D"
msgstr ""
-#: c-decl.c:1281
+#: c-decl.c:1394
#, gcc-internal-format
msgid "conflicting type qualifiers for %q+D"
msgstr ""
#. Allow OLDDECL to continue in use.
-#: c-decl.c:1301
+#: c-decl.c:1414
#, gcc-internal-format
msgid "redefinition of typedef %q+D"
msgstr ""
-#: c-decl.c:1352 c-decl.c:1454
+#: c-decl.c:1465 c-decl.c:1567
#, gcc-internal-format
msgid "redefinition of %q+D"
msgstr ""
-#: c-decl.c:1387 c-decl.c:1492
+#: c-decl.c:1500 c-decl.c:1605
#, gcc-internal-format
msgid "static declaration of %q+D follows non-static declaration"
msgstr ""
-#: c-decl.c:1397 c-decl.c:1405 c-decl.c:1482 c-decl.c:1489
+#: c-decl.c:1510 c-decl.c:1518 c-decl.c:1595 c-decl.c:1602
#, gcc-internal-format
msgid "non-static declaration of %q+D follows static declaration"
msgstr ""
-#: c-decl.c:1421
+#: c-decl.c:1534
#, gcc-internal-format
msgid "%<gnu_inline%> attribute present on %q+D"
msgstr ""
-#: c-decl.c:1423
+#: c-decl.c:1536
#, gcc-internal-format
msgid "%Jbut not here"
msgstr ""
-#: c-decl.c:1441
+#: c-decl.c:1554
#, gcc-internal-format
msgid "thread-local declaration of %q+D follows non-thread-local declaration"
msgstr ""
-#: c-decl.c:1444
+#: c-decl.c:1557
#, gcc-internal-format
msgid "non-thread-local declaration of %q+D follows thread-local declaration"
msgstr ""
-#: c-decl.c:1474
+#: c-decl.c:1587
#, gcc-internal-format
msgid "extern declaration of %q+D follows declaration with no linkage"
msgstr ""
-#: c-decl.c:1510
+#: c-decl.c:1623
#, gcc-internal-format
msgid "declaration of %q+D with no linkage follows extern declaration"
msgstr ""
-#: c-decl.c:1516
+#: c-decl.c:1629
#, gcc-internal-format
msgid "redeclaration of %q+D with no linkage"
msgstr ""
-#: c-decl.c:1530
+#: c-decl.c:1643
#, gcc-internal-format
msgid ""
"redeclaration of %q+D with different visibility (old visibility preserved)"
msgstr ""
-#: c-decl.c:1541
+#: c-decl.c:1654
#, gcc-internal-format
msgid "inline declaration of %qD follows declaration with attribute noinline"
msgstr ""
-#: c-decl.c:1548
+#: c-decl.c:1661
#, gcc-internal-format
msgid "declaration of %q+D with attribute noinline follows inline declaration "
msgstr ""
-#: c-decl.c:1566
+#: c-decl.c:1679
#, gcc-internal-format
msgid "redefinition of parameter %q+D"
msgstr ""
-#: c-decl.c:1593
+#: c-decl.c:1706
#, gcc-internal-format
msgid "redundant redeclaration of %q+D"
msgstr ""
-#: c-decl.c:1987
+#: c-decl.c:2100
#, gcc-internal-format
msgid "declaration of %q+D shadows previous non-variable"
msgstr ""
-#: c-decl.c:1992
+#: c-decl.c:2105
#, gcc-internal-format
msgid "declaration of %q+D shadows a parameter"
msgstr ""
-#: c-decl.c:1995
+#: c-decl.c:2108
#, gcc-internal-format
msgid "declaration of %q+D shadows a global declaration"
msgstr ""
-#: c-decl.c:2005
+#: c-decl.c:2118
#, gcc-internal-format
msgid "declaration of %q+D shadows a previous local"
msgstr ""
-#: c-decl.c:2008 cp/name-lookup.c:1049 cp/name-lookup.c:1080
-#: cp/name-lookup.c:1088
+#: c-decl.c:2121 cp/name-lookup.c:1048 cp/name-lookup.c:1079
+#: cp/name-lookup.c:1087
#, gcc-internal-format
msgid "%Jshadowed declaration is here"
msgstr ""
-#: c-decl.c:2141
+#: c-decl.c:2254
#, gcc-internal-format
msgid "nested extern declaration of %qD"
msgstr ""
-#: c-decl.c:2309 c-decl.c:2312
+#: c-decl.c:2422 c-decl.c:2425
#, gcc-internal-format
msgid "implicit declaration of function %qE"
msgstr ""
-#: c-decl.c:2375
+#: c-decl.c:2488
#, gcc-internal-format
msgid "incompatible implicit declaration of built-in function %qD"
msgstr ""
-#: c-decl.c:2384
+#: c-decl.c:2497
#, gcc-internal-format
msgid "incompatible implicit declaration of function %qD"
msgstr ""
-#: c-decl.c:2438
+#: c-decl.c:2551
#, gcc-internal-format
msgid "%H%qE undeclared here (not in a function)"
msgstr ""
-#: c-decl.c:2443
+#: c-decl.c:2556
#, gcc-internal-format
msgid "%H%qE undeclared (first use in this function)"
msgstr ""
-#: c-decl.c:2447
+#: c-decl.c:2560
#, gcc-internal-format
msgid "%H(Each undeclared identifier is reported only once"
msgstr ""
-#: c-decl.c:2448
+#: c-decl.c:2561
#, gcc-internal-format
msgid "%Hfor each function it appears in.)"
msgstr ""
-#: c-decl.c:2487 cp/decl.c:2406
+#: c-decl.c:2600 cp/decl.c:2404
#, gcc-internal-format
msgid "label %qE referenced outside of any function"
msgstr ""
-#: c-decl.c:2529
+#: c-decl.c:2642
#, gcc-internal-format
msgid "duplicate label declaration %qE"
msgstr ""
-#: c-decl.c:2565
+#: c-decl.c:2678
#, gcc-internal-format
msgid "%Hduplicate label %qD"
msgstr ""
-#: c-decl.c:2575
+#: c-decl.c:2688
#, gcc-internal-format
msgid "%Jjump into statement expression"
msgstr ""
-#: c-decl.c:2577
+#: c-decl.c:2690
#, gcc-internal-format
msgid "%Jjump into scope of identifier with variably modified type"
msgstr ""
-#: c-decl.c:2592
+#: c-decl.c:2705
#, gcc-internal-format
msgid ""
"%Htraditional C lacks a separate namespace for labels, identifier %qE "
"conflicts"
msgstr ""
-#: c-decl.c:2667
+#: c-decl.c:2780
#, gcc-internal-format
msgid "%H%qE defined as wrong kind of tag"
msgstr ""
-#: c-decl.c:2898
+#: c-decl.c:3011
#, gcc-internal-format
msgid "unnamed struct/union that defines no instances"
msgstr ""
-#: c-decl.c:2907
+#: c-decl.c:3020
#, gcc-internal-format
msgid "empty declaration with storage class specifier does not redeclare tag"
msgstr ""
-#: c-decl.c:2919
+#: c-decl.c:3032
#, gcc-internal-format
msgid "empty declaration with type qualifier does not redeclare tag"
msgstr ""
-#: c-decl.c:2941 c-decl.c:2948
+#: c-decl.c:3054 c-decl.c:3061
#, gcc-internal-format
msgid "useless type name in empty declaration"
msgstr ""
-#: c-decl.c:2956
+#: c-decl.c:3069
#, gcc-internal-format
msgid "%<inline%> in empty declaration"
msgstr ""
-#: c-decl.c:2962
+#: c-decl.c:3075
#, gcc-internal-format
msgid "%<auto%> in file-scope empty declaration"
msgstr ""
-#: c-decl.c:2968
+#: c-decl.c:3081
#, gcc-internal-format
msgid "%<register%> in file-scope empty declaration"
msgstr ""
-#: c-decl.c:2974
+#: c-decl.c:3087
#, gcc-internal-format
msgid "useless storage class specifier in empty declaration"
msgstr ""
-#: c-decl.c:2980
+#: c-decl.c:3093
#, gcc-internal-format
msgid "useless %<__thread%> in empty declaration"
msgstr ""
-#: c-decl.c:2988
+#: c-decl.c:3101
#, gcc-internal-format
msgid "useless type qualifier in empty declaration"
msgstr ""
-#: c-decl.c:2995 c-parser.c:1175
+#: c-decl.c:3108 c-parser.c:1176
#, gcc-internal-format
msgid "empty declaration"
msgstr ""
-#: c-decl.c:3062
+#: c-decl.c:3175
#, gcc-internal-format
msgid ""
"ISO C90 does not support %<static%> or type qualifiers in parameter array "
"declarators"
msgstr ""
-#: c-decl.c:3066
+#: c-decl.c:3179
#, gcc-internal-format
msgid "ISO C90 does not support %<[*]%> array declarators"
msgstr ""
@@ -18903,723 +19172,792 @@ msgstr ""
#. C99 6.7.5.2p4
#. A function definition isn't function prototype scope C99 6.2.1p4.
#. C99 6.7.5.2p4
-#: c-decl.c:3073 c-decl.c:5087
+#: c-decl.c:3186 c-decl.c:5294
#, gcc-internal-format
msgid "%<[*]%> not allowed in other than function prototype scope"
msgstr ""
-#: c-decl.c:3185
+#: c-decl.c:3298
#, gcc-internal-format
msgid "%q+D is usually a function"
msgstr ""
-#: c-decl.c:3194 cp/decl2.c:781
+#: c-decl.c:3307 cp/decl2.c:781
#, gcc-internal-format
msgid "typedef %qD is initialized (use __typeof__ instead)"
msgstr ""
-#: c-decl.c:3199
+#: c-decl.c:3312
#, gcc-internal-format
msgid "function %qD is initialized like a variable"
msgstr ""
#. DECL_INITIAL in a PARM_DECL is really DECL_ARG_TYPE.
-#: c-decl.c:3205
+#: c-decl.c:3318
#, gcc-internal-format
msgid "parameter %qD is initialized"
msgstr ""
-#: c-decl.c:3230
+#: c-decl.c:3343
#, gcc-internal-format
msgid "variable %qD has initializer but incomplete type"
msgstr ""
-#: c-decl.c:3319 c-decl.c:6206 cp/decl.c:4106 cp/decl.c:11495
+#: c-decl.c:3432 c-decl.c:6429 cp/decl.c:4104 cp/decl.c:11493
#, gcc-internal-format
msgid "inline function %q+D given attribute noinline"
msgstr ""
-#: c-decl.c:3332
-#, gcc-internal-format
-msgid "%q+D is static but declared in inline function %qD which is not static"
-msgstr ""
-
-#: c-decl.c:3424
+#: c-decl.c:3536
#, gcc-internal-format
msgid "initializer fails to determine size of %q+D"
msgstr ""
-#: c-decl.c:3429
+#: c-decl.c:3541
#, gcc-internal-format
msgid "array size missing in %q+D"
msgstr ""
-#: c-decl.c:3441
+#: c-decl.c:3553
#, gcc-internal-format
msgid "zero or negative size array %q+D"
msgstr ""
-#: c-decl.c:3496 varasm.c:2118
+#: c-decl.c:3608 varasm.c:2117
#, gcc-internal-format
msgid "storage size of %q+D isn%'t known"
msgstr ""
-#: c-decl.c:3507
+#: c-decl.c:3619
#, gcc-internal-format
msgid "storage size of %q+D isn%'t constant"
msgstr ""
-#: c-decl.c:3554
+#: c-decl.c:3666
#, gcc-internal-format
msgid "ignoring asm-specifier for non-static local variable %q+D"
msgstr ""
-#: c-decl.c:3582 fortran/f95-lang.c:624
+#: c-decl.c:3694 fortran/f95-lang.c:620
#, gcc-internal-format
msgid "cannot put object with volatile field into register"
msgstr ""
-#: c-decl.c:3711
+#: c-decl.c:3823
#, gcc-internal-format
msgid "ISO C forbids forward parameter declarations"
msgstr ""
-#: c-decl.c:3837
+#: c-decl.c:3951
#, gcc-internal-format
msgid "bit-field %qs width not an integer constant"
msgstr ""
-#: c-decl.c:3845
+#: c-decl.c:3959
#, gcc-internal-format
msgid "negative width in bit-field %qs"
msgstr ""
-#: c-decl.c:3850
+#: c-decl.c:3964
#, gcc-internal-format
msgid "zero width for bit-field %qs"
msgstr ""
-#: c-decl.c:3860
+#: c-decl.c:3974
#, gcc-internal-format
msgid "bit-field %qs has invalid type"
msgstr ""
-#: c-decl.c:3870
+#: c-decl.c:3984
#, gcc-internal-format
msgid "type of bit-field %qs is a GCC extension"
msgstr ""
-#: c-decl.c:3876
+#: c-decl.c:3990
#, gcc-internal-format
msgid "width of %qs exceeds its type"
msgstr ""
-#: c-decl.c:3889
+#: c-decl.c:4003
#, gcc-internal-format
msgid "%qs is narrower than values of its type"
msgstr ""
-#: c-decl.c:3907
+#: c-decl.c:4022
#, gcc-internal-format
-msgid "ISO C90 forbids array %qs whose size can%'t be evaluated"
+msgid "ISO C90 forbids array %qE whose size can%'t be evaluated"
msgstr ""
-#: c-decl.c:3911
+#: c-decl.c:4026
#, gcc-internal-format
msgid "ISO C90 forbids array whose size can%'t be evaluated"
msgstr ""
-#: c-decl.c:3917
+#: c-decl.c:4033
#, gcc-internal-format
-msgid "ISO C90 forbids variable length array %qs"
+msgid "ISO C90 forbids variable length array %qE"
msgstr ""
-#: c-decl.c:3920
+#: c-decl.c:4036
#, gcc-internal-format
msgid "ISO C90 forbids variable length array"
msgstr ""
-#: c-decl.c:3929
+#: c-decl.c:4045
#, gcc-internal-format
-msgid "the size of array %qs can%'t be evaluated"
+msgid "the size of array %qE can%'t be evaluated"
msgstr ""
-#: c-decl.c:3933
+#: c-decl.c:4049
#, gcc-internal-format
msgid "the size of array can %'t be evaluated"
msgstr ""
-#: c-decl.c:3939
+#: c-decl.c:4055
#, gcc-internal-format
-msgid "variable length array %qs is used"
+msgid "variable length array %qE is used"
msgstr ""
-#: c-decl.c:3943 cp/decl.c:7267
+#: c-decl.c:4059 cp/decl.c:7265
#, gcc-internal-format
msgid "variable length array is used"
msgstr ""
-#: c-decl.c:4081 c-decl.c:4377 c-decl.c:4386
+#: c-decl.c:4230 c-decl.c:4559 c-decl.c:4569
+#, gcc-internal-format
+msgid "variably modified %qE at file scope"
+msgstr ""
+
+#: c-decl.c:4232
#, gcc-internal-format
-msgid "variably modified %qs at file scope"
+msgid "variably modified field at file scope"
msgstr ""
-#: c-decl.c:4099
+#: c-decl.c:4252
#, gcc-internal-format
-msgid "type defaults to %<int%> in declaration of %qs"
+msgid "type defaults to %<int%> in declaration of %qE"
msgstr ""
-#: c-decl.c:4127
+#: c-decl.c:4256
+#, gcc-internal-format
+msgid "type defaults to %<int%> in type name"
+msgstr ""
+
+#: c-decl.c:4285
#, gcc-internal-format
msgid "duplicate %<const%>"
msgstr ""
-#: c-decl.c:4129
+#: c-decl.c:4287
#, gcc-internal-format
msgid "duplicate %<restrict%>"
msgstr ""
-#: c-decl.c:4131
+#: c-decl.c:4289
#, gcc-internal-format
msgid "duplicate %<volatile%>"
msgstr ""
-#: c-decl.c:4151
+#: c-decl.c:4309
#, gcc-internal-format
msgid "function definition declared %<auto%>"
msgstr ""
-#: c-decl.c:4153
+#: c-decl.c:4311
#, gcc-internal-format
msgid "function definition declared %<register%>"
msgstr ""
-#: c-decl.c:4155
+#: c-decl.c:4313
#, gcc-internal-format
msgid "function definition declared %<typedef%>"
msgstr ""
-#: c-decl.c:4157
+#: c-decl.c:4315
#, gcc-internal-format
msgid "function definition declared %<__thread%>"
msgstr ""
-#: c-decl.c:4173
+#: c-decl.c:4332
#, gcc-internal-format
-msgid "storage class specified for structure field %qs"
+msgid "storage class specified for structure field %qE"
msgstr ""
-#: c-decl.c:4177 cp/decl.c:8165
+#: c-decl.c:4335
#, gcc-internal-format
-msgid "storage class specified for parameter %qs"
+msgid "storage class specified for structure field"
msgstr ""
-#: c-decl.c:4180 cp/decl.c:8167
+#: c-decl.c:4339
+#, gcc-internal-format
+msgid "storage class specified for parameter %qE"
+msgstr ""
+
+#: c-decl.c:4341
+#, gcc-internal-format
+msgid "storage class specified for unnamed parameter"
+msgstr ""
+
+#: c-decl.c:4344 cp/decl.c:8165
#, gcc-internal-format
msgid "storage class specified for typename"
msgstr ""
-#: c-decl.c:4197 cp/decl.c:9458
+#: c-decl.c:4361
#, gcc-internal-format
-msgid "%qs initialized and declared %<extern%>"
+msgid "%qE initialized and declared %<extern%>"
msgstr ""
-#: c-decl.c:4200 cp/decl.c:9462
+#: c-decl.c:4364
#, gcc-internal-format
-msgid "%qs has both %<extern%> and initializer"
+msgid "%qE has both %<extern%> and initializer"
msgstr ""
-#: c-decl.c:4205
+#: c-decl.c:4369
#, gcc-internal-format
-msgid "file-scope declaration of %qs specifies %<auto%>"
+msgid "file-scope declaration of %qE specifies %<auto%>"
msgstr ""
-#: c-decl.c:4208
+#: c-decl.c:4372
#, gcc-internal-format
-msgid "file-scope declaration of %qs specifies %<register%>"
+msgid "file-scope declaration of %qE specifies %<register%>"
msgstr ""
-#: c-decl.c:4213 cp/decl.c:8178
+#: c-decl.c:4377
#, gcc-internal-format
-msgid "nested function %qs declared %<extern%>"
+msgid "nested function %qE declared %<extern%>"
msgstr ""
-#: c-decl.c:4216 cp/decl.c:8188
+#: c-decl.c:4380
#, gcc-internal-format
-msgid "function-scope %qs implicitly auto and declared %<__thread%>"
+msgid "function-scope %qE implicitly auto and declared %<__thread%>"
msgstr ""
#. Only the innermost declarator (making a parameter be of
#. array type which is converted to pointer type)
#. may have static or type qualifiers.
-#: c-decl.c:4263 c-decl.c:4557
+#: c-decl.c:4427 c-decl.c:4743
#, gcc-internal-format
msgid "static or type qualifiers in non-parameter array declarator"
msgstr ""
-#: c-decl.c:4310
+#: c-decl.c:4475
+#, gcc-internal-format
+msgid "declaration of %qE as array of voids"
+msgstr ""
+
+#: c-decl.c:4477
+#, gcc-internal-format
+msgid "declaration of type name as array of voids"
+msgstr ""
+
+#: c-decl.c:4484
#, gcc-internal-format
-msgid "declaration of %qs as array of voids"
+msgid "declaration of %qE as array of functions"
msgstr ""
-#: c-decl.c:4316
+#: c-decl.c:4486
#, gcc-internal-format
-msgid "declaration of %qs as array of functions"
+msgid "declaration of type name as array of functions"
msgstr ""
-#: c-decl.c:4322
+#: c-decl.c:4492
#, gcc-internal-format
msgid "invalid use of structure with flexible array member"
msgstr ""
-#: c-decl.c:4347
+#: c-decl.c:4518
#, gcc-internal-format
-msgid "size of array %qs has non-integer type"
+msgid "size of array %qE has non-integer type"
msgstr ""
-#: c-decl.c:4355
+#: c-decl.c:4520
#, gcc-internal-format
-msgid "ISO C forbids zero-size array %qs"
+msgid "size of unnamed array has non-integer type"
msgstr ""
-#: c-decl.c:4362
+#: c-decl.c:4530
#, gcc-internal-format
-msgid "size of array %qs is negative"
+msgid "ISO C forbids zero-size array %qE"
msgstr ""
-#: c-decl.c:4436 c-decl.c:4718 cp/decl.c:8696
+#: c-decl.c:4533
#, gcc-internal-format
-msgid "size of array %qs is too large"
+msgid "ISO C forbids zero-size array"
+msgstr ""
+
+#: c-decl.c:4542
+#, gcc-internal-format
+msgid "size of array %qE is negative"
+msgstr ""
+
+#: c-decl.c:4544
+#, gcc-internal-format
+msgid "size of unnamed array is negative"
+msgstr ""
+
+#: c-decl.c:4620 c-decl.c:4913
+#, gcc-internal-format
+msgid "size of array %qE is too large"
msgstr ""
-#: c-decl.c:4473
+#: c-decl.c:4622 c-decl.c:4915
+#, gcc-internal-format
+msgid "size of unnamed array is too large"
+msgstr ""
+
+#: c-decl.c:4659
#, gcc-internal-format
msgid "ISO C90 does not support flexible array members"
msgstr ""
#. C99 6.7.5.2p4
-#: c-decl.c:4494
+#: c-decl.c:4680
#, gcc-internal-format
msgid "%<[*]%> not in a declaration"
msgstr ""
-#: c-decl.c:4507
+#: c-decl.c:4693
#, gcc-internal-format
msgid "array type has incomplete element type"
msgstr ""
-#: c-decl.c:4589 cp/decl.c:8284
+#: c-decl.c:4776
#, gcc-internal-format
-msgid "%qs declared as function returning a function"
+msgid "%qE declared as function returning a function"
msgstr ""
-#: c-decl.c:4594 cp/decl.c:8289
+#: c-decl.c:4779
#, gcc-internal-format
-msgid "%qs declared as function returning an array"
+msgid "type name declared as function returning a function"
+msgstr ""
+
+#: c-decl.c:4786
+#, gcc-internal-format
+msgid "%qE declared as function returning an array"
msgstr ""
-#: c-decl.c:4617
+#: c-decl.c:4788
+#, gcc-internal-format
+msgid "type name declared as function returning an array"
+msgstr ""
+
+#: c-decl.c:4811
#, gcc-internal-format
msgid "function definition has qualified void return type"
msgstr ""
-#: c-decl.c:4620 cp/decl.c:8273
+#: c-decl.c:4814 cp/decl.c:8271
#, gcc-internal-format
msgid "type qualifiers ignored on function return type"
msgstr ""
-#: c-decl.c:4650 c-decl.c:4732 c-decl.c:4822 c-decl.c:4911
+#: c-decl.c:4844 c-decl.c:4929 c-decl.c:5019 c-decl.c:5112
#, gcc-internal-format
msgid "ISO C forbids qualified function types"
msgstr ""
-#: c-decl.c:4740
+#: c-decl.c:4937
#, gcc-internal-format
msgid "typedef %q+D declared %<inline%>"
msgstr ""
-#: c-decl.c:4756
+#: c-decl.c:4953
#, gcc-internal-format
msgid "ISO C forbids const or volatile function types"
msgstr ""
-#: c-decl.c:4767
+#: c-decl.c:4964
#, gcc-internal-format
msgid "a member of a structure or union cannot have a variably modified type"
msgstr ""
-#: c-decl.c:4783
+#: c-decl.c:4980 cp/decl.c:7481
#, gcc-internal-format
-msgid "variable or field %qs declared void"
+msgid "variable or field %qE declared void"
msgstr ""
-#: c-decl.c:4814
+#: c-decl.c:5011
#, gcc-internal-format
msgid "attributes in parameter array declarator ignored"
msgstr ""
-#: c-decl.c:4848
+#: c-decl.c:5045
#, gcc-internal-format
msgid "parameter %q+D declared %<inline%>"
msgstr ""
-#: c-decl.c:4861
+#: c-decl.c:5058
+#, gcc-internal-format
+msgid "field %qE declared as a function"
+msgstr ""
+
+#: c-decl.c:5065
#, gcc-internal-format
-msgid "field %qs declared as a function"
+msgid "field %qE has incomplete type"
msgstr ""
-#: c-decl.c:4867
+#: c-decl.c:5067
#, gcc-internal-format
-msgid "field %qs has incomplete type"
+msgid "unnamed field has incomplete type"
msgstr ""
-#: c-decl.c:4884 c-decl.c:4894 c-decl.c:4897
+#: c-decl.c:5084 c-decl.c:5095 c-decl.c:5098
#, gcc-internal-format
-msgid "invalid storage class for function %qs"
+msgid "invalid storage class for function %qE"
msgstr ""
-#: c-decl.c:4917
+#: c-decl.c:5118
#, gcc-internal-format
msgid "%<noreturn%> function returns non-void value"
msgstr ""
-#: c-decl.c:4953
+#: c-decl.c:5154
#, gcc-internal-format
msgid "cannot inline function %<main%>"
msgstr ""
-#: c-decl.c:4982
+#: c-decl.c:5183
#, gcc-internal-format
msgid "variable previously declared %<static%> redeclared %<extern%>"
msgstr ""
-#: c-decl.c:4992
+#: c-decl.c:5193
#, gcc-internal-format
msgid "variable %q+D declared %<inline%>"
msgstr ""
-#. C99 6.7.5.2p2
-#: c-decl.c:5023
+#: c-decl.c:5228
+#, gcc-internal-format
+msgid "non-nested function with variably modified type"
+msgstr ""
+
+#: c-decl.c:5230
#, gcc-internal-format
msgid "object with variably modified type must have no linkage"
msgstr ""
-#: c-decl.c:5092 c-decl.c:6300
+#: c-decl.c:5299 c-decl.c:6523
#, gcc-internal-format
msgid "function declaration isn%'t a prototype"
msgstr ""
-#: c-decl.c:5100
+#: c-decl.c:5307
#, gcc-internal-format
msgid "parameter names (without types) in function declaration"
msgstr ""
-#: c-decl.c:5133
+#: c-decl.c:5340
#, gcc-internal-format
msgid "parameter %u (%q+D) has incomplete type"
msgstr ""
-#: c-decl.c:5136
+#: c-decl.c:5343
#, gcc-internal-format
msgid "%Jparameter %u has incomplete type"
msgstr ""
-#: c-decl.c:5145
+#: c-decl.c:5352
#, gcc-internal-format
msgid "parameter %u (%q+D) has void type"
msgstr ""
-#: c-decl.c:5148
+#: c-decl.c:5355
#, gcc-internal-format
msgid "%Jparameter %u has void type"
msgstr ""
-#: c-decl.c:5210
+#: c-decl.c:5417
#, gcc-internal-format
msgid "%<void%> as only parameter may not be qualified"
msgstr ""
-#: c-decl.c:5214 c-decl.c:5248
+#: c-decl.c:5421 c-decl.c:5455
#, gcc-internal-format
msgid "%<void%> must be the only parameter"
msgstr ""
-#: c-decl.c:5242
+#: c-decl.c:5449
#, gcc-internal-format
msgid "parameter %q+D has just a forward declaration"
msgstr ""
#. The %s will be one of 'struct', 'union', or 'enum'.
-#: c-decl.c:5287
+#: c-decl.c:5494
#, gcc-internal-format
msgid "%<%s %E%> declared inside parameter list"
msgstr ""
#. The %s will be one of 'struct', 'union', or 'enum'.
-#: c-decl.c:5291
+#: c-decl.c:5498
#, gcc-internal-format
msgid "anonymous %s declared inside parameter list"
msgstr ""
-#: c-decl.c:5296
+#: c-decl.c:5503
#, gcc-internal-format
msgid ""
"its scope is only this definition or declaration, which is probably not what "
"you want"
msgstr ""
-#: c-decl.c:5435
+#: c-decl.c:5642
#, gcc-internal-format
msgid "redefinition of %<union %E%>"
msgstr ""
-#: c-decl.c:5437
+#: c-decl.c:5644
#, gcc-internal-format
msgid "redefinition of %<struct %E%>"
msgstr ""
-#: c-decl.c:5444
+#: c-decl.c:5651
#, gcc-internal-format
msgid "nested redefinition of %<union %E%>"
msgstr ""
-#: c-decl.c:5446
+#: c-decl.c:5653
#, gcc-internal-format
msgid "nested redefinition of %<struct %E%>"
msgstr ""
-#: c-decl.c:5524 cp/decl.c:3841
+#: c-decl.c:5731 cp/decl.c:3839
#, gcc-internal-format
msgid "declaration does not declare anything"
msgstr ""
-#: c-decl.c:5527
+#: c-decl.c:5734
#, gcc-internal-format
msgid "ISO C doesn%'t support unnamed structs/unions"
msgstr ""
-#: c-decl.c:5571 c-decl.c:5587
+#: c-decl.c:5778 c-decl.c:5794
#, gcc-internal-format
msgid "duplicate member %q+D"
msgstr ""
-#: c-decl.c:5626
+#: c-decl.c:5833
#, gcc-internal-format
msgid "union has no named members"
msgstr ""
-#: c-decl.c:5628
+#: c-decl.c:5835
#, gcc-internal-format
msgid "union has no members"
msgstr ""
-#: c-decl.c:5633
+#: c-decl.c:5840
#, gcc-internal-format
msgid "struct has no named members"
msgstr ""
-#: c-decl.c:5635
+#: c-decl.c:5842
#, gcc-internal-format
msgid "struct has no members"
msgstr ""
-#: c-decl.c:5699
+#: c-decl.c:5906
#, gcc-internal-format
msgid "%Jflexible array member in union"
msgstr ""
-#: c-decl.c:5704
+#: c-decl.c:5911
#, gcc-internal-format
msgid "%Jflexible array member not at end of struct"
msgstr ""
-#: c-decl.c:5709
+#: c-decl.c:5916
#, gcc-internal-format
msgid "%Jflexible array member in otherwise empty struct"
msgstr ""
-#: c-decl.c:5717
+#: c-decl.c:5924
#, gcc-internal-format
msgid "%Jinvalid use of structure with flexible array member"
msgstr ""
-#: c-decl.c:5826
+#: c-decl.c:6033
#, gcc-internal-format
msgid "union cannot be made transparent"
msgstr ""
-#: c-decl.c:5897
+#: c-decl.c:6104
#, gcc-internal-format
msgid "nested redefinition of %<enum %E%>"
msgstr ""
#. This enum is a named one that has been declared already.
-#: c-decl.c:5904
+#: c-decl.c:6111
#, gcc-internal-format
msgid "redeclaration of %<enum %E%>"
msgstr ""
-#: c-decl.c:5967
+#: c-decl.c:6174
#, gcc-internal-format
msgid "enumeration values exceed range of largest integer"
msgstr ""
-#: c-decl.c:5984
+#: c-decl.c:6191
#, gcc-internal-format
msgid "specified mode too small for enumeral values"
msgstr ""
-#: c-decl.c:6081
+#: c-decl.c:6287 c-decl.c:6302
#, gcc-internal-format
msgid "enumerator value for %qE is not an integer constant"
msgstr ""
-#: c-decl.c:6098
+#: c-decl.c:6297
+#, gcc-internal-format
+msgid "enumerator value for %qE is not an integer constant expression"
+msgstr ""
+
+#: c-decl.c:6321
#, gcc-internal-format
msgid "overflow in enumeration values"
msgstr ""
-#: c-decl.c:6106
+#: c-decl.c:6329
#, gcc-internal-format
msgid "ISO C restricts enumerator values to range of %<int%>"
msgstr ""
-#: c-decl.c:6224
+#: c-decl.c:6447
#, gcc-internal-format
msgid "return type is an incomplete type"
msgstr ""
-#: c-decl.c:6234
+#: c-decl.c:6457
#, gcc-internal-format
msgid "return type defaults to %<int%>"
msgstr ""
-#: c-decl.c:6307
+#: c-decl.c:6530
#, gcc-internal-format
msgid "no previous prototype for %q+D"
msgstr ""
-#: c-decl.c:6316
+#: c-decl.c:6539
#, gcc-internal-format
msgid "%q+D was used with no prototype before its definition"
msgstr ""
-#: c-decl.c:6322 cp/decl.c:11636
+#: c-decl.c:6545 cp/decl.c:11634
#, gcc-internal-format
msgid "no previous declaration for %q+D"
msgstr ""
-#: c-decl.c:6332
+#: c-decl.c:6555
#, gcc-internal-format
msgid "%q+D was used with no declaration before its definition"
msgstr ""
-#: c-decl.c:6355
+#: c-decl.c:6578
#, gcc-internal-format
msgid "return type of %q+D is not %<int%>"
msgstr ""
-#: c-decl.c:6360
+#: c-decl.c:6583
#, gcc-internal-format
msgid "%q+D is normally a non-static function"
msgstr ""
-#: c-decl.c:6394
+#: c-decl.c:6617
#, gcc-internal-format
msgid "%Jold-style parameter declarations in prototyped function definition"
msgstr ""
-#: c-decl.c:6408
+#: c-decl.c:6631
#, gcc-internal-format
msgid "%Jtraditional C rejects ISO C style function definitions"
msgstr ""
-#: c-decl.c:6425
+#: c-decl.c:6648
#, gcc-internal-format
msgid "%Jparameter name omitted"
msgstr ""
-#: c-decl.c:6459
+#: c-decl.c:6682
#, gcc-internal-format
msgid "%Jold-style function definition"
msgstr ""
-#: c-decl.c:6468
+#: c-decl.c:6691
#, gcc-internal-format
msgid "%Jparameter name missing from parameter list"
msgstr ""
-#: c-decl.c:6479
+#: c-decl.c:6702
#, gcc-internal-format
msgid "%q+D declared as a non-parameter"
msgstr ""
-#: c-decl.c:6484
+#: c-decl.c:6707
#, gcc-internal-format
msgid "multiple parameters named %q+D"
msgstr ""
-#: c-decl.c:6492
+#: c-decl.c:6715
#, gcc-internal-format
msgid "parameter %q+D declared with void type"
msgstr ""
-#: c-decl.c:6509 c-decl.c:6511
+#: c-decl.c:6732 c-decl.c:6734
#, gcc-internal-format
msgid "type of %q+D defaults to %<int%>"
msgstr ""
-#: c-decl.c:6530
+#: c-decl.c:6753
#, gcc-internal-format
msgid "parameter %q+D has incomplete type"
msgstr ""
-#: c-decl.c:6536
+#: c-decl.c:6759
#, gcc-internal-format
msgid "declaration for parameter %q+D but no such parameter"
msgstr ""
-#: c-decl.c:6586
+#: c-decl.c:6809
#, gcc-internal-format
msgid "number of arguments doesn%'t match built-in prototype"
msgstr ""
-#: c-decl.c:6590
+#: c-decl.c:6813
#, gcc-internal-format
msgid "number of arguments doesn%'t match prototype"
msgstr ""
-#: c-decl.c:6591 c-decl.c:6643
+#: c-decl.c:6814 c-decl.c:6866
#, gcc-internal-format
msgid "%Hprototype declaration"
msgstr ""
-#: c-decl.c:6625
+#: c-decl.c:6848
#, gcc-internal-format
msgid "promoted argument %qD doesn%'t match built-in prototype"
msgstr ""
-#: c-decl.c:6629
+#: c-decl.c:6852
#, gcc-internal-format
msgid "promoted argument %qD doesn%'t match prototype"
msgstr ""
-#: c-decl.c:6632
+#: c-decl.c:6855
#, gcc-internal-format
msgid "prototype declaration"
msgstr ""
-#: c-decl.c:6638
+#: c-decl.c:6861
#, gcc-internal-format
msgid "argument %qD doesn%'t match built-in prototype"
msgstr ""
-#: c-decl.c:6642
+#: c-decl.c:6865
#, gcc-internal-format
msgid "argument %qD doesn%'t match prototype"
msgstr ""
-#: c-decl.c:6851 cp/decl.c:12340
+#: c-decl.c:7074 cp/decl.c:12338
#, gcc-internal-format
msgid "no return statement in function returning non-void"
msgstr ""
@@ -19627,443 +19965,443 @@ msgstr ""
#. If we get here, declarations have been used in a for loop without
#. the C99 for loop scope. This doesn't make much sense, so don't
#. allow it.
-#: c-decl.c:6924
+#: c-decl.c:7147
#, gcc-internal-format
msgid "%<for%> loop initial declarations are only allowed in C99 mode"
msgstr ""
-#: c-decl.c:6928
+#: c-decl.c:7151
#, gcc-internal-format
msgid "use option -std=c99 or -std=gnu99 to compile your code"
msgstr ""
-#: c-decl.c:6959
+#: c-decl.c:7182
#, gcc-internal-format
msgid "declaration of static variable %q+D in %<for%> loop initial declaration"
msgstr ""
-#: c-decl.c:6962
+#: c-decl.c:7185
#, gcc-internal-format
msgid ""
"declaration of %<extern%> variable %q+D in %<for%> loop initial declaration"
msgstr ""
-#: c-decl.c:6967
+#: c-decl.c:7190
#, gcc-internal-format
msgid "%<struct %E%> declared in %<for%> loop initial declaration"
msgstr ""
-#: c-decl.c:6971
+#: c-decl.c:7194
#, gcc-internal-format
msgid "%<union %E%> declared in %<for%> loop initial declaration"
msgstr ""
-#: c-decl.c:6975
+#: c-decl.c:7198
#, gcc-internal-format
msgid "%<enum %E%> declared in %<for%> loop initial declaration"
msgstr ""
-#: c-decl.c:6979
+#: c-decl.c:7202
#, gcc-internal-format
msgid "declaration of non-variable %q+D in %<for%> loop initial declaration"
msgstr ""
-#: c-decl.c:7264 c-decl.c:7506 c-decl.c:7813
+#: c-decl.c:7487 c-decl.c:7729 c-decl.c:8036
#, gcc-internal-format
msgid "duplicate %qE"
msgstr ""
-#: c-decl.c:7289 c-decl.c:7516 c-decl.c:7703
+#: c-decl.c:7512 c-decl.c:7739 c-decl.c:7926
#, gcc-internal-format
msgid "two or more data types in declaration specifiers"
msgstr ""
-#: c-decl.c:7301
+#: c-decl.c:7524
#, gcc-internal-format
msgid "%<long long long%> is too long for GCC"
msgstr ""
-#: c-decl.c:7308 c-decl.c:7606
+#: c-decl.c:7531 c-decl.c:7829
#, gcc-internal-format
msgid "both %<long long%> and %<double%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7313
+#: c-decl.c:7536
#, gcc-internal-format
msgid "ISO C90 does not support %<long long%>"
msgstr ""
-#: c-decl.c:7318 c-decl.c:7347
+#: c-decl.c:7541 c-decl.c:7570
#, gcc-internal-format
msgid "both %<long%> and %<short%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7321 c-decl.c:7523
+#: c-decl.c:7544 c-decl.c:7746
#, gcc-internal-format
msgid "both %<long%> and %<void%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7324 c-decl.c:7545
+#: c-decl.c:7547 c-decl.c:7768
#, gcc-internal-format
msgid "both %<long%> and %<_Bool%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7327 c-decl.c:7567
+#: c-decl.c:7550 c-decl.c:7790
#, gcc-internal-format
msgid "both %<long%> and %<char%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7330 c-decl.c:7587
+#: c-decl.c:7553 c-decl.c:7810
#, gcc-internal-format
msgid "both %<long%> and %<float%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7333
+#: c-decl.c:7556
#, gcc-internal-format
msgid "both %<long%> and %<_Decimal32%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7336
+#: c-decl.c:7559
#, gcc-internal-format
msgid "both %<long%> and %<_Decimal64%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7339
+#: c-decl.c:7562
#, gcc-internal-format
msgid "both %<long%> and %<_Decimal128%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7350 c-decl.c:7526
+#: c-decl.c:7573 c-decl.c:7749
#, gcc-internal-format
msgid "both %<short%> and %<void%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7353 c-decl.c:7548
+#: c-decl.c:7576 c-decl.c:7771
#, gcc-internal-format
msgid "both %<short%> and %<_Bool%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7356 c-decl.c:7570
+#: c-decl.c:7579 c-decl.c:7793
#, gcc-internal-format
msgid "both %<short%> and %<char%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7359 c-decl.c:7590
+#: c-decl.c:7582 c-decl.c:7813
#, gcc-internal-format
msgid "both %<short%> and %<float%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7362 c-decl.c:7609
+#: c-decl.c:7585 c-decl.c:7832
#, gcc-internal-format
msgid "both %<short%> and %<double%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7365
+#: c-decl.c:7588
#, gcc-internal-format
msgid "both %<short%> and %<_Decimal32%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7368
+#: c-decl.c:7591
#, gcc-internal-format
msgid "both %<short%> and %<_Decimal64%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7371
+#: c-decl.c:7594
#, gcc-internal-format
msgid "both %<short%> and %<_Decimal128%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7379 c-decl.c:7408
+#: c-decl.c:7602 c-decl.c:7631
#, gcc-internal-format
msgid "both %<signed%> and %<unsigned%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7382 c-decl.c:7529
+#: c-decl.c:7605 c-decl.c:7752
#, gcc-internal-format
msgid "both %<signed%> and %<void%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7385 c-decl.c:7551
+#: c-decl.c:7608 c-decl.c:7774
#, gcc-internal-format
msgid "both %<signed%> and %<_Bool%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7388 c-decl.c:7593
+#: c-decl.c:7611 c-decl.c:7816
#, gcc-internal-format
msgid "both %<signed%> and %<float%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7391 c-decl.c:7612
+#: c-decl.c:7614 c-decl.c:7835
#, gcc-internal-format
msgid "both %<signed%> and %<double%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7394
+#: c-decl.c:7617
#, gcc-internal-format
msgid "both %<signed%> and %<_Decimal32%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7397
+#: c-decl.c:7620
#, gcc-internal-format
msgid "both %<signed%> and %<_Decimal64%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7400
+#: c-decl.c:7623
#, gcc-internal-format
msgid "both %<signed%> and %<_Decimal128%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7411 c-decl.c:7532
+#: c-decl.c:7634 c-decl.c:7755
#, gcc-internal-format
msgid "both %<unsigned%> and %<void%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7414 c-decl.c:7554
+#: c-decl.c:7637 c-decl.c:7777
#, gcc-internal-format
msgid "both %<unsigned%> and %<_Bool%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7417 c-decl.c:7596
+#: c-decl.c:7640 c-decl.c:7819
#, gcc-internal-format
msgid "both %<unsigned%> and %<float%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7420 c-decl.c:7615
+#: c-decl.c:7643 c-decl.c:7838
#, gcc-internal-format
msgid "both %<unsigned%> and %<double%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7423
+#: c-decl.c:7646
#, gcc-internal-format
msgid "both %<unsigned%> and %<_Decimal32%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7426
+#: c-decl.c:7649
#, gcc-internal-format
msgid "both %<unsigned%> and %<_Decimal64%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7429
+#: c-decl.c:7652
#, gcc-internal-format
msgid "both %<unsigned%> and %<_Decimal128%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7437
+#: c-decl.c:7660
#, gcc-internal-format
msgid "ISO C90 does not support complex types"
msgstr ""
-#: c-decl.c:7439 c-decl.c:7535
+#: c-decl.c:7662 c-decl.c:7758
#, gcc-internal-format
msgid "both %<complex%> and %<void%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7442 c-decl.c:7557
+#: c-decl.c:7665 c-decl.c:7780
#, gcc-internal-format
msgid "both %<complex%> and %<_Bool%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7445
+#: c-decl.c:7668
#, gcc-internal-format
msgid "both %<complex%> and %<_Decimal32%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7448
+#: c-decl.c:7671
#, gcc-internal-format
msgid "both %<complex%> and %<_Decimal64%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7451
+#: c-decl.c:7674
#, gcc-internal-format
msgid "both %<complex%> and %<_Decimal128%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7454
+#: c-decl.c:7677
#, gcc-internal-format
msgid "both %<complex%> and %<_Fract%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7457
+#: c-decl.c:7680
#, gcc-internal-format
msgid "both %<complex%> and %<_Accum%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7460
+#: c-decl.c:7683
#, gcc-internal-format
msgid "both %<complex%> and %<_Sat%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7467
+#: c-decl.c:7690
#, gcc-internal-format
msgid "ISO C does not support saturating types"
msgstr ""
-#: c-decl.c:7469 c-decl.c:7538
+#: c-decl.c:7692 c-decl.c:7761
#, gcc-internal-format
msgid "both %<_Sat%> and %<void%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7472 c-decl.c:7560
+#: c-decl.c:7695 c-decl.c:7783
#, gcc-internal-format
msgid "both %<_Sat%> and %<_Bool%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7475 c-decl.c:7573
+#: c-decl.c:7698 c-decl.c:7796
#, gcc-internal-format
msgid "both %<_Sat%> and %<char%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7478 c-decl.c:7580
+#: c-decl.c:7701 c-decl.c:7803
#, gcc-internal-format
msgid "both %<_Sat%> and %<int%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7481 c-decl.c:7599
+#: c-decl.c:7704 c-decl.c:7822
#, gcc-internal-format
msgid "both %<_Sat%> and %<float%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7484 c-decl.c:7618
+#: c-decl.c:7707 c-decl.c:7841
#, gcc-internal-format
msgid "both %<_Sat%> and %<double%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7487
+#: c-decl.c:7710
#, gcc-internal-format
msgid "both %<_Sat%> and %<_Decimal32%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7490
+#: c-decl.c:7713
#, gcc-internal-format
msgid "both %<_Sat%> and %<_Decimal64%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7493
+#: c-decl.c:7716
#, gcc-internal-format
msgid "both %<_Sat%> and %<_Decimal128%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7496
+#: c-decl.c:7719
#, gcc-internal-format
msgid "both %<_Sat%> and %<complex%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7635
+#: c-decl.c:7858
#, gcc-internal-format
msgid "both %<long long%> and %<%s%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7638
+#: c-decl.c:7861
#, gcc-internal-format
msgid "both %<long%> and %<%s%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7641
+#: c-decl.c:7864
#, gcc-internal-format
msgid "both %<short%> and %<%s%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7644
+#: c-decl.c:7867
#, gcc-internal-format
msgid "both %<signed%> and %<%s%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7647
+#: c-decl.c:7870
#, gcc-internal-format
msgid "both %<unsigned%> and %<%s%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7650 c-decl.c:7676
+#: c-decl.c:7873 c-decl.c:7899
#, gcc-internal-format
msgid "both %<complex%> and %<%s%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7653
+#: c-decl.c:7876
#, gcc-internal-format
msgid "both %<_Sat%> and %<%s%> in declaration specifiers"
msgstr ""
-#: c-decl.c:7663
+#: c-decl.c:7886
#, gcc-internal-format
msgid "decimal floating point not supported for this target"
msgstr ""
-#: c-decl.c:7665
+#: c-decl.c:7888
#, gcc-internal-format
msgid "ISO C does not support decimal floating point"
msgstr ""
-#: c-decl.c:7684 c-decl.c:7874 c-parser.c:5176
+#: c-decl.c:7907 c-decl.c:8097 c-parser.c:5189
#, gcc-internal-format
msgid "fixed-point types not supported for this target"
msgstr ""
-#: c-decl.c:7686
+#: c-decl.c:7909
#, gcc-internal-format
msgid "ISO C does not support fixed-point types"
msgstr ""
-#: c-decl.c:7720
+#: c-decl.c:7943
#, gcc-internal-format
msgid "%qE fails to be a typedef or built in type"
msgstr ""
-#: c-decl.c:7764
+#: c-decl.c:7987
#, gcc-internal-format
msgid "%qE is not at beginning of declaration"
msgstr ""
-#: c-decl.c:7778
+#: c-decl.c:8001
#, gcc-internal-format
msgid "%<__thread%> used with %<auto%>"
msgstr ""
-#: c-decl.c:7780
+#: c-decl.c:8003
#, gcc-internal-format
msgid "%<__thread%> used with %<register%>"
msgstr ""
-#: c-decl.c:7782
+#: c-decl.c:8005
#, gcc-internal-format
msgid "%<__thread%> used with %<typedef%>"
msgstr ""
-#: c-decl.c:7793
+#: c-decl.c:8016
#, gcc-internal-format
msgid "%<__thread%> before %<extern%>"
msgstr ""
-#: c-decl.c:7802
+#: c-decl.c:8025
#, gcc-internal-format
msgid "%<__thread%> before %<static%>"
msgstr ""
-#: c-decl.c:7818
+#: c-decl.c:8041
#, gcc-internal-format
msgid "multiple storage classes in declaration specifiers"
msgstr ""
-#: c-decl.c:7825
+#: c-decl.c:8048
#, gcc-internal-format
msgid "%<__thread%> used with %qE"
msgstr ""
-#: c-decl.c:7872
+#: c-decl.c:8095
#, gcc-internal-format
msgid "%<_Sat%> is used without %<_Fract%> or %<_Accum%>"
msgstr ""
-#: c-decl.c:7886
+#: c-decl.c:8109
#, gcc-internal-format
msgid "ISO C does not support plain %<complex%> meaning %<double complex%>"
msgstr ""
-#: c-decl.c:7931 c-decl.c:7957
+#: c-decl.c:8154 c-decl.c:8180
#, gcc-internal-format
msgid "ISO C does not support complex integer types"
msgstr ""
-#: c-decl.c:8111 toplev.c:845
+#: c-decl.c:8334 toplev.c:847
#, gcc-internal-format
msgid "%q+F used but never defined"
msgstr ""
@@ -20440,32 +20778,37 @@ msgstr ""
msgid "this decimal constant would be unsigned in ISO C90"
msgstr ""
-#: c-lex.c:653
+#: c-lex.c:631
+#, gcc-internal-format
+msgid "unsuffixed float constant"
+msgstr ""
+
+#: c-lex.c:663
#, gcc-internal-format
msgid "unsupported non-standard suffix on floating constant"
msgstr ""
-#: c-lex.c:659
+#: c-lex.c:669
#, gcc-internal-format
msgid "non-standard suffix on floating constant"
msgstr ""
-#: c-lex.c:713 c-lex.c:715
+#: c-lex.c:723 c-lex.c:725
#, gcc-internal-format
msgid "floating constant exceeds range of %qT"
msgstr ""
-#: c-lex.c:724
+#: c-lex.c:734
#, gcc-internal-format
msgid "floating constant truncated to zero"
msgstr ""
-#: c-lex.c:919
+#: c-lex.c:929
#, gcc-internal-format
msgid "unsupported non-standard concatenation of string literals"
msgstr ""
-#: c-lex.c:941
+#: c-lex.c:951
#, gcc-internal-format
msgid "traditional C rejects string constant concatenation"
msgstr ""
@@ -20485,22 +20828,22 @@ msgstr ""
msgid "%qE is not initialized"
msgstr ""
-#: c-omp.c:270
+#: c-omp.c:271
#, gcc-internal-format
msgid "missing controlling predicate"
msgstr ""
-#: c-omp.c:348
+#: c-omp.c:349
#, gcc-internal-format
msgid "invalid controlling predicate"
msgstr ""
-#: c-omp.c:355
+#: c-omp.c:356
#, gcc-internal-format
msgid "missing increment expression"
msgstr ""
-#: c-omp.c:422
+#: c-omp.c:423
#, gcc-internal-format
msgid "invalid increment expression"
msgstr ""
@@ -20545,158 +20888,158 @@ msgstr ""
msgid "obsolete option -I- used, please use -iquote instead"
msgstr ""
-#: c-opts.c:510
+#: c-opts.c:506
#, gcc-internal-format
msgid "argument %qs to %<-Wnormalized%> not recognized"
msgstr ""
-#: c-opts.c:593
+#: c-opts.c:589
#, gcc-internal-format
msgid "switch %qs is no longer supported"
msgstr ""
-#: c-opts.c:700
+#: c-opts.c:696
#, gcc-internal-format
msgid ""
"-fhandle-exceptions has been renamed -fexceptions (and is now on by default)"
msgstr ""
-#: c-opts.c:1039
+#: c-opts.c:1035
#, gcc-internal-format
msgid "-fexcess-precision=standard for C++"
msgstr ""
-#: c-opts.c:1052
+#: c-opts.c:1048
#, gcc-internal-format
msgid "-fno-gnu89-inline is only supported in GNU99 or C99 mode"
msgstr ""
-#: c-opts.c:1134
+#: c-opts.c:1127
#, gcc-internal-format
msgid "-Wformat-y2k ignored without -Wformat"
msgstr ""
-#: c-opts.c:1136
+#: c-opts.c:1129
#, gcc-internal-format
msgid "-Wformat-extra-args ignored without -Wformat"
msgstr ""
-#: c-opts.c:1138
+#: c-opts.c:1131
#, gcc-internal-format
msgid "-Wformat-zero-length ignored without -Wformat"
msgstr ""
-#: c-opts.c:1140
+#: c-opts.c:1133
#, gcc-internal-format
msgid "-Wformat-nonliteral ignored without -Wformat"
msgstr ""
-#: c-opts.c:1142
+#: c-opts.c:1135
#, gcc-internal-format
msgid "-Wformat-contains-nul ignored without -Wformat"
msgstr ""
-#: c-opts.c:1144
+#: c-opts.c:1137
#, gcc-internal-format
msgid "-Wformat-security ignored without -Wformat"
msgstr ""
-#: c-opts.c:1168
+#: c-opts.c:1161
#, gcc-internal-format
msgid "opening output file %s: %m"
msgstr ""
-#: c-opts.c:1173
+#: c-opts.c:1166
#, gcc-internal-format
msgid "too many filenames given. Type %s --help for usage"
msgstr ""
-#: c-opts.c:1253
+#: c-opts.c:1246
#, gcc-internal-format
msgid "The C parser does not support -dy, option ignored"
msgstr ""
-#: c-opts.c:1257
+#: c-opts.c:1250
#, gcc-internal-format
msgid "The Objective-C parser does not support -dy, option ignored"
msgstr ""
-#: c-opts.c:1260
+#: c-opts.c:1253
#, gcc-internal-format
msgid "The C++ parser does not support -dy, option ignored"
msgstr ""
-#: c-opts.c:1264
+#: c-opts.c:1257
#, gcc-internal-format
msgid "The Objective-C++ parser does not support -dy, option ignored"
msgstr ""
-#: c-opts.c:1315
+#: c-opts.c:1308
#, gcc-internal-format
msgid "opening dependency file %s: %m"
msgstr ""
-#: c-opts.c:1325
+#: c-opts.c:1318
#, gcc-internal-format
msgid "closing dependency file %s: %m"
msgstr ""
-#: c-opts.c:1328
+#: c-opts.c:1321
#, gcc-internal-format
msgid "when writing output to %s: %m"
msgstr ""
-#: c-opts.c:1408
+#: c-opts.c:1401
#, gcc-internal-format
msgid "to generate dependencies you must specify either -M or -MM"
msgstr ""
-#: c-opts.c:1431
+#: c-opts.c:1424
#, gcc-internal-format
msgid "-MG may only be used with -M or -MM"
msgstr ""
-#: c-opts.c:1461
+#: c-opts.c:1454
#, gcc-internal-format
msgid "-fdirectives-only is incompatible with -Wunused_macros"
msgstr ""
-#: c-opts.c:1463
+#: c-opts.c:1456
#, gcc-internal-format
msgid "-fdirectives-only is incompatible with -traditional"
msgstr ""
-#: c-opts.c:1601
+#: c-opts.c:1594
#, gcc-internal-format
msgid "too late for # directive to set debug directory"
msgstr ""
-#: c-parser.c:227
+#: c-parser.c:225
#, gcc-internal-format
-msgid "identifier %qs conflicts with C++ keyword"
+msgid "identifier %qE conflicts with C++ keyword"
msgstr ""
-#: c-parser.c:976
+#: c-parser.c:974
#, gcc-internal-format
msgid "ISO C forbids an empty translation unit"
msgstr ""
-#: c-parser.c:1061 c-parser.c:6306
+#: c-parser.c:1060 c-parser.c:6319
#, gcc-internal-format
msgid "ISO C does not allow extra %<;%> outside of a function"
msgstr ""
-#: c-parser.c:1163 c-parser.c:6868
+#: c-parser.c:1164 c-parser.c:6881
#, gcc-internal-format
msgid "expected declaration specifiers"
msgstr ""
-#: c-parser.c:1211
+#: c-parser.c:1212
#, gcc-internal-format
msgid "data definition has no type or storage class"
msgstr ""
-#: c-parser.c:1265
+#: c-parser.c:1266
#, gcc-internal-format
msgid "expected %<,%> or %<;%>"
msgstr ""
@@ -20704,188 +21047,188 @@ msgstr ""
#. This can appear in many cases looking nothing like a
#. function definition, so we don't give a more specific
#. error suggesting there was one.
-#: c-parser.c:1272 c-parser.c:1288
+#: c-parser.c:1273 c-parser.c:1289
#, gcc-internal-format
msgid "expected %<=%>, %<,%>, %<;%>, %<asm%> or %<__attribute__%>"
msgstr ""
-#: c-parser.c:1280
+#: c-parser.c:1281
#, gcc-internal-format
msgid "ISO C forbids nested functions"
msgstr ""
-#: c-parser.c:1655 c-parser.c:2466 c-parser.c:3116 c-parser.c:3376
-#: c-parser.c:4318 c-parser.c:4957 c-parser.c:5382 c-parser.c:5404
-#: c-parser.c:5511 c-parser.c:5692 c-parser.c:5721 c-parser.c:5948
-#: c-parser.c:5960 c-parser.c:5985 c-parser.c:6119 c-parser.c:6148
-#: c-parser.c:6156 c-parser.c:6184 c-parser.c:6198 c-parser.c:6414
-#: c-parser.c:6513 c-parser.c:7038 c-parser.c:7743
+#: c-parser.c:1656 c-parser.c:2467 c-parser.c:3117 c-parser.c:3380
+#: c-parser.c:4331 c-parser.c:4970 c-parser.c:5395 c-parser.c:5417
+#: c-parser.c:5524 c-parser.c:5705 c-parser.c:5734 c-parser.c:5961
+#: c-parser.c:5973 c-parser.c:5998 c-parser.c:6132 c-parser.c:6161
+#: c-parser.c:6169 c-parser.c:6197 c-parser.c:6211 c-parser.c:6427
+#: c-parser.c:6526 c-parser.c:7051 c-parser.c:7756
#, gcc-internal-format
msgid "expected identifier"
msgstr ""
-#: c-parser.c:1688 cp/parser.c:11978
+#: c-parser.c:1689 cp/parser.c:11978
#, gcc-internal-format
msgid "comma at end of enumerator list"
msgstr ""
-#: c-parser.c:1694
+#: c-parser.c:1695
#, gcc-internal-format
msgid "expected %<,%> or %<}%>"
msgstr ""
-#: c-parser.c:1710 c-parser.c:1897 c-parser.c:6273
+#: c-parser.c:1711 c-parser.c:1898 c-parser.c:6286
#, gcc-internal-format
msgid "expected %<{%>"
msgstr ""
-#: c-parser.c:1724
+#: c-parser.c:1725
#, gcc-internal-format
msgid "ISO C forbids forward references to %<enum%> types"
msgstr ""
-#: c-parser.c:1830
+#: c-parser.c:1831
#, gcc-internal-format
msgid "expected class name"
msgstr ""
-#: c-parser.c:1849 c-parser.c:6052
+#: c-parser.c:1850 c-parser.c:6065
#, gcc-internal-format
msgid "extra semicolon in struct or union specified"
msgstr ""
-#: c-parser.c:1878
+#: c-parser.c:1879
#, gcc-internal-format
msgid "no semicolon at end of struct or union"
msgstr ""
-#: c-parser.c:1881
+#: c-parser.c:1882
#, gcc-internal-format
msgid "expected %<;%>"
msgstr ""
-#: c-parser.c:1964 c-parser.c:2942
+#: c-parser.c:1965 c-parser.c:2943
#, gcc-internal-format
msgid "expected specifier-qualifier-list"
msgstr ""
-#: c-parser.c:1974
+#: c-parser.c:1975
#, gcc-internal-format
msgid "ISO C forbids member declarations with no members"
msgstr ""
-#: c-parser.c:2050
+#: c-parser.c:2051
#, gcc-internal-format
msgid "expected %<,%>, %<;%> or %<}%>"
msgstr ""
-#: c-parser.c:2057
+#: c-parser.c:2058
#, gcc-internal-format
msgid "expected %<:%>, %<,%>, %<;%>, %<}%> or %<__attribute__%>"
msgstr ""
-#: c-parser.c:2110
+#: c-parser.c:2111
#, gcc-internal-format
msgid "%<typeof%> applied to a bit-field"
msgstr ""
-#: c-parser.c:2334
+#: c-parser.c:2335
#, gcc-internal-format
msgid "expected identifier or %<(%>"
msgstr ""
-#: c-parser.c:2536
+#: c-parser.c:2537
#, gcc-internal-format
msgid "ISO C requires a named argument before %<...%>"
msgstr ""
-#: c-parser.c:2644
+#: c-parser.c:2645
#, gcc-internal-format
msgid "expected declaration specifiers or %<...%>"
msgstr ""
-#: c-parser.c:2695
+#: c-parser.c:2696
#, gcc-internal-format
msgid "wide string literal in %<asm%>"
msgstr ""
-#: c-parser.c:2701 c-parser.c:6923
+#: c-parser.c:2702 c-parser.c:6936
#, gcc-internal-format
msgid "expected string literal"
msgstr ""
-#: c-parser.c:3034
+#: c-parser.c:3035
#, gcc-internal-format
msgid "ISO C forbids empty initializer braces"
msgstr ""
-#: c-parser.c:3082
+#: c-parser.c:3083
#, gcc-internal-format
msgid "obsolete use of designated initializer with %<:%>"
msgstr ""
-#: c-parser.c:3214
+#: c-parser.c:3215
#, gcc-internal-format
msgid "ISO C forbids specifying range of elements to initialize"
msgstr ""
-#: c-parser.c:3227
+#: c-parser.c:3228
#, gcc-internal-format
msgid "ISO C90 forbids specifying subobject to initialize"
msgstr ""
-#: c-parser.c:3234
+#: c-parser.c:3235
#, gcc-internal-format
msgid "obsolete use of designated initializer without %<=%>"
msgstr ""
-#: c-parser.c:3241
+#: c-parser.c:3242
#, gcc-internal-format
msgid "expected %<=%>"
msgstr ""
-#: c-parser.c:3391
+#: c-parser.c:3395
#, gcc-internal-format
msgid "ISO C forbids label declarations"
msgstr ""
-#: c-parser.c:3396 c-parser.c:3472
+#: c-parser.c:3401 c-parser.c:3481
#, gcc-internal-format
msgid "expected declaration or statement"
msgstr ""
-#: c-parser.c:3426 c-parser.c:3454
+#: c-parser.c:3433 c-parser.c:3462
#, gcc-internal-format
msgid "ISO C90 forbids mixed declarations and code"
msgstr ""
-#: c-parser.c:3479
+#: c-parser.c:3489
#, gcc-internal-format
msgid "expected %<}%> before %<else%>"
msgstr ""
-#: c-parser.c:3484
+#: c-parser.c:3494
#, gcc-internal-format
msgid "%<else%> without a previous %<if%>"
msgstr ""
-#: c-parser.c:3500
+#: c-parser.c:3511
#, gcc-internal-format
msgid "label at end of compound statement"
msgstr ""
-#: c-parser.c:3543
+#: c-parser.c:3556
#, gcc-internal-format
msgid "expected %<:%> or %<...%>"
msgstr ""
-#: c-parser.c:3577
+#: c-parser.c:3590
#, gcc-internal-format
msgid ""
"a label can only be part of a statement and a declaration is not a statement"
msgstr ""
-#: c-parser.c:3739
+#: c-parser.c:3752
#, gcc-internal-format
msgid "expected identifier or %<*%>"
msgstr ""
@@ -20894,224 +21237,224 @@ msgstr ""
#. c_parser_skip_until_found stops at a closing nesting
#. delimiter without consuming it, but here we need to consume
#. it to proceed further.
-#: c-parser.c:3803
+#: c-parser.c:3816
#, gcc-internal-format
msgid "expected statement"
msgstr ""
-#: c-parser.c:3898 cp/parser.c:7300
+#: c-parser.c:3911 cp/parser.c:7294
#, gcc-internal-format
msgid "suggest braces around empty body in an %<if%> statement"
msgstr ""
-#: c-parser.c:3924 cp/parser.c:7321
+#: c-parser.c:3937 cp/parser.c:7315
#, gcc-internal-format
msgid "suggest braces around empty body in an %<else%> statement"
msgstr ""
-#: c-parser.c:4044
+#: c-parser.c:4057
#, gcc-internal-format
msgid "suggest braces around empty body in %<do%> statement"
msgstr ""
-#: c-parser.c:4197
+#: c-parser.c:4210
#, gcc-internal-format
msgid "%E qualifier ignored on asm"
msgstr ""
-#: c-parser.c:4494
+#: c-parser.c:4507
#, gcc-internal-format
msgid "ISO C forbids omitting the middle term of a ?: expression"
msgstr ""
-#: c-parser.c:4926
+#: c-parser.c:4939
#, gcc-internal-format
msgid "traditional C rejects the unary plus operator"
msgstr ""
-#: c-parser.c:5043
+#: c-parser.c:5056
#, gcc-internal-format
msgid "%<sizeof%> applied to a bit-field"
msgstr ""
-#: c-parser.c:5204 c-parser.c:5548 c-parser.c:5568
+#: c-parser.c:5217 c-parser.c:5561 c-parser.c:5581
#, gcc-internal-format
msgid "expected expression"
msgstr ""
-#: c-parser.c:5230
+#: c-parser.c:5243
#, gcc-internal-format
msgid "braced-group within expression allowed only inside a function"
msgstr ""
-#: c-parser.c:5243
+#: c-parser.c:5256
#, gcc-internal-format
msgid "ISO C forbids braced-groups within expressions"
msgstr ""
-#: c-parser.c:5442
+#: c-parser.c:5455
#, gcc-internal-format
msgid "first argument to %<__builtin_choose_expr%> not a constant"
msgstr ""
-#: c-parser.c:5599
+#: c-parser.c:5612
#, gcc-internal-format
msgid "compound literal has variable size"
msgstr ""
-#: c-parser.c:5607
+#: c-parser.c:5620
#, gcc-internal-format
msgid "ISO C90 forbids compound literals"
msgstr ""
-#: c-parser.c:6269
+#: c-parser.c:6282
#, gcc-internal-format
msgid "extra semicolon in method definition specified"
msgstr ""
-#: c-parser.c:6817
+#: c-parser.c:6830
#, gcc-internal-format
msgid "%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:6828
+#: c-parser.c:6841
#, gcc-internal-format
msgid "%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:6839
+#: c-parser.c:6852
#, gcc-internal-format
msgid "%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: c-parser.c:6852
+#: c-parser.c:6865
#, gcc-internal-format
msgid ""
"%<#pragma omp section%> may only be used in %<#pragma omp sections%> "
"construct"
msgstr ""
-#: c-parser.c:6858
+#: c-parser.c:6871
#, gcc-internal-format
msgid "%<#pragma GCC pch_preprocess%> must be first"
msgstr ""
-#: c-parser.c:7016
+#: c-parser.c:7029
#, gcc-internal-format
msgid "too many %qs clauses"
msgstr ""
-#: c-parser.c:7112
+#: c-parser.c:7125
#, gcc-internal-format
msgid "collapse argument needs positive constant integer expression"
msgstr ""
-#: c-parser.c:7177
+#: c-parser.c:7190
#, gcc-internal-format
msgid "expected %<none%> or %<shared%>"
msgstr ""
-#: c-parser.c:7220
+#: c-parser.c:7233
#, gcc-internal-format
msgid "expected %<(%>"
msgstr ""
-#: c-parser.c:7265 c-parser.c:7450
+#: c-parser.c:7278 c-parser.c:7463
#, gcc-internal-format
msgid "expected integer expression"
msgstr ""
-#: c-parser.c:7275
+#: c-parser.c:7288
#, gcc-internal-format
msgid "%<num_threads%> value must be positive"
msgstr ""
-#: c-parser.c:7355
+#: c-parser.c:7368
#, gcc-internal-format
msgid "expected %<+%>, %<*%>, %<-%>, %<&%>, %<^%>, %<|%>, %<&&%>, or %<||%>"
msgstr ""
-#: c-parser.c:7441
+#: c-parser.c:7454
#, gcc-internal-format
msgid "schedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:7445
+#: c-parser.c:7458
#, gcc-internal-format
msgid "schedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: c-parser.c:7463
+#: c-parser.c:7476
#, gcc-internal-format
msgid "invalid schedule kind"
msgstr ""
-#: c-parser.c:7581
+#: c-parser.c:7594
#, gcc-internal-format
msgid "expected %<#pragma omp%> clause"
msgstr ""
-#: c-parser.c:7590
+#: c-parser.c:7603
#, gcc-internal-format
msgid "%qs is not valid for %qs"
msgstr ""
-#: c-parser.c:7692
+#: c-parser.c:7705
#, gcc-internal-format
msgid "invalid operator for %<#pragma omp atomic%>"
msgstr ""
-#: c-parser.c:7746 c-parser.c:7766
+#: c-parser.c:7759 c-parser.c:7779
#, gcc-internal-format
msgid "expected %<(%> or end of line"
msgstr ""
-#: c-parser.c:7798
+#: c-parser.c:7811
#, gcc-internal-format
msgid "for statement expected"
msgstr ""
-#: c-parser.c:7849
+#: c-parser.c:7864
#, gcc-internal-format
msgid "expected iteration declaration or initialization"
msgstr ""
-#: c-parser.c:7929
+#: c-parser.c:7944
#, gcc-internal-format
msgid "not enough perfectly nested loops"
msgstr ""
-#: c-parser.c:7977
+#: c-parser.c:7992
#, gcc-internal-format
msgid "collapsed loops not perfectly nested"
msgstr ""
-#: c-parser.c:8014 cp/pt.c:10572
+#: c-parser.c:8029 cp/pt.c:10584
#, gcc-internal-format
msgid "iteration variable %qD should not be firstprivate"
msgstr ""
-#: c-parser.c:8164
+#: c-parser.c:8179
#, gcc-internal-format
msgid "expected %<#pragma omp section%> or %<}%>"
msgstr ""
-#: c-parser.c:8434
+#: c-parser.c:8449
#, gcc-internal-format
msgid "%qD is not a variable"
msgstr ""
-#: c-parser.c:8436 cp/semantics.c:3838
+#: c-parser.c:8451 cp/semantics.c:3837
#, gcc-internal-format
msgid "%qE declared %<threadprivate%> after first use"
msgstr ""
-#: c-parser.c:8438 cp/semantics.c:3840
+#: c-parser.c:8453 cp/semantics.c:3839
#, gcc-internal-format
msgid "automatic variable %qE cannot be %<threadprivate%>"
msgstr ""
-#: c-parser.c:8442 cp/semantics.c:3842
+#: c-parser.c:8457 cp/semantics.c:3841
#, gcc-internal-format
msgid "%<threadprivate%> %qE has incomplete type"
msgstr ""
@@ -21171,322 +21514,352 @@ msgstr ""
msgid "%s: PCH file was invalid"
msgstr ""
-#: c-pragma.c:102
+#: c-pragma.c:101
#, gcc-internal-format
msgid "#pragma pack (pop) encountered without matching #pragma pack (push)"
msgstr ""
-#: c-pragma.c:115
+#: c-pragma.c:114
#, gcc-internal-format
msgid ""
-"#pragma pack(pop, %s) encountered without matching #pragma pack(push, %s)"
+"#pragma pack(pop, %E) encountered without matching #pragma pack(push, %E)"
msgstr ""
-#: c-pragma.c:129
+#: c-pragma.c:128
#, gcc-internal-format
msgid "#pragma pack(push[, id], <n>) is not supported on this target"
msgstr ""
-#: c-pragma.c:131
+#: c-pragma.c:130
#, gcc-internal-format
msgid "#pragma pack(pop[, id], <n>) is not supported on this target"
msgstr ""
-#: c-pragma.c:152
+#: c-pragma.c:151
#, gcc-internal-format
msgid "missing %<(%> after %<#pragma pack%> - ignored"
msgstr ""
-#: c-pragma.c:163 c-pragma.c:195
+#: c-pragma.c:162 c-pragma.c:194
#, gcc-internal-format
msgid "invalid constant in %<#pragma pack%> - ignored"
msgstr ""
-#: c-pragma.c:167 c-pragma.c:209
+#: c-pragma.c:166 c-pragma.c:208
#, gcc-internal-format
msgid "malformed %<#pragma pack%> - ignored"
msgstr ""
-#: c-pragma.c:172
+#: c-pragma.c:171
#, gcc-internal-format
msgid "malformed %<#pragma pack(push[, id][, <n>])%> - ignored"
msgstr ""
-#: c-pragma.c:174
+#: c-pragma.c:173
#, gcc-internal-format
msgid "malformed %<#pragma pack(pop[, id])%> - ignored"
msgstr ""
-#: c-pragma.c:183
+#: c-pragma.c:182
#, gcc-internal-format
-msgid "unknown action %qs for %<#pragma pack%> - ignored"
+msgid "unknown action %qE for %<#pragma pack%> - ignored"
msgstr ""
-#: c-pragma.c:212
+#: c-pragma.c:211
#, gcc-internal-format
msgid "junk at end of %<#pragma pack%>"
msgstr ""
-#: c-pragma.c:215
+#: c-pragma.c:214
#, gcc-internal-format
msgid "#pragma pack has no effect with -fpack-struct - ignored"
msgstr ""
-#: c-pragma.c:235
+#: c-pragma.c:234
#, gcc-internal-format
msgid "alignment must be a small power of two, not %d"
msgstr ""
-#: c-pragma.c:291
+#: c-pragma.c:288
#, gcc-internal-format
msgid "missing %<(%> after %<#pragma push_macro%> - ignored"
msgstr ""
-#: c-pragma.c:299
+#: c-pragma.c:296
#, gcc-internal-format
msgid "invalid constant in %<#pragma push_macro%> - ignored"
msgstr ""
-#: c-pragma.c:302
+#: c-pragma.c:299
#, gcc-internal-format
msgid "missing %<)%> after %<#pragma push_macro%> - ignored"
msgstr ""
-#: c-pragma.c:305
+#: c-pragma.c:302
#, gcc-internal-format
msgid "junk at end of %<#pragma push_macro%>"
msgstr ""
-#: c-pragma.c:348
+#: c-pragma.c:345
#, gcc-internal-format
msgid "missing %<(%> after %<#pragma pop_macro%> - ignored"
msgstr ""
-#: c-pragma.c:356
+#: c-pragma.c:353
#, gcc-internal-format
msgid "invalid constant in %<#pragma pop_macro%> - ignored"
msgstr ""
-#: c-pragma.c:359
+#: c-pragma.c:356
#, gcc-internal-format
msgid "missing %<)%> after %<#pragma pop_macro%> - ignored"
msgstr ""
-#: c-pragma.c:362
+#: c-pragma.c:359
#, gcc-internal-format
msgid "junk at end of %<#pragma pop_macro%>"
msgstr ""
-#: c-pragma.c:408
+#: c-pragma.c:405
#, gcc-internal-format
msgid ""
"applying #pragma weak %q+D after first use results in unspecified behavior"
msgstr ""
-#: c-pragma.c:482 c-pragma.c:487
+#: c-pragma.c:479 c-pragma.c:484
#, gcc-internal-format
msgid "malformed #pragma weak, ignored"
msgstr ""
-#: c-pragma.c:491
+#: c-pragma.c:488
#, gcc-internal-format
msgid "junk at end of %<#pragma weak%>"
msgstr ""
-#: c-pragma.c:559 c-pragma.c:561
+#: c-pragma.c:556 c-pragma.c:558
#, gcc-internal-format
msgid "malformed #pragma redefine_extname, ignored"
msgstr ""
-#: c-pragma.c:564
+#: c-pragma.c:561
#, gcc-internal-format
msgid "junk at end of %<#pragma redefine_extname%>"
msgstr ""
-#: c-pragma.c:570
+#: c-pragma.c:567
#, gcc-internal-format
msgid "#pragma redefine_extname not supported on this target"
msgstr ""
-#: c-pragma.c:587 c-pragma.c:674
+#: c-pragma.c:584 c-pragma.c:671
#, gcc-internal-format
msgid "#pragma redefine_extname ignored due to conflict with previous rename"
msgstr ""
-#: c-pragma.c:610
+#: c-pragma.c:607
#, gcc-internal-format
msgid ""
"#pragma redefine_extname ignored due to conflict with previous #pragma "
"redefine_extname"
msgstr ""
-#: c-pragma.c:629
+#: c-pragma.c:626
#, gcc-internal-format
msgid "malformed #pragma extern_prefix, ignored"
msgstr ""
-#: c-pragma.c:632
+#: c-pragma.c:629
#, gcc-internal-format
msgid "junk at end of %<#pragma extern_prefix%>"
msgstr ""
-#: c-pragma.c:639
+#: c-pragma.c:636
#, gcc-internal-format
msgid "#pragma extern_prefix not supported on this target"
msgstr ""
-#: c-pragma.c:665
+#: c-pragma.c:662
#, gcc-internal-format
msgid "asm declaration ignored due to conflict with previous rename"
msgstr ""
-#: c-pragma.c:696
+#: c-pragma.c:693
#, gcc-internal-format
msgid ""
"#pragma redefine_extname ignored due to conflict with __asm__ declaration"
msgstr ""
-#: c-pragma.c:758
+#: c-pragma.c:755
#, gcc-internal-format
msgid ""
"#pragma GCC visibility push() must specify default, internal, hidden or "
"protected"
msgstr ""
-#: c-pragma.c:793
+#: c-pragma.c:790
#, gcc-internal-format
msgid "#pragma GCC visibility must be followed by push or pop"
msgstr ""
-#: c-pragma.c:799
+#: c-pragma.c:796
#, gcc-internal-format
msgid "no matching push for %<#pragma GCC visibility pop%>"
msgstr ""
-#: c-pragma.c:806 c-pragma.c:813
+#: c-pragma.c:803 c-pragma.c:810
#, gcc-internal-format
msgid "missing %<(%> after %<#pragma GCC visibility push%> - ignored"
msgstr ""
-#: c-pragma.c:809
+#: c-pragma.c:806
#, gcc-internal-format
msgid "malformed #pragma GCC visibility push"
msgstr ""
-#: c-pragma.c:817
+#: c-pragma.c:814
#, gcc-internal-format
msgid "junk at end of %<#pragma GCC visibility%>"
msgstr ""
-#: c-pragma.c:833
+#: c-pragma.c:830
#, gcc-internal-format
msgid "#pragma GCC diagnostic not allowed inside functions"
msgstr ""
-#: c-pragma.c:839
+#: c-pragma.c:836
#, gcc-internal-format
msgid "missing [error|warning|ignored] after %<#pragma GCC diagnostic%>"
msgstr ""
-#: c-pragma.c:848
+#: c-pragma.c:845
#, gcc-internal-format
msgid "expected [error|warning|ignored] after %<#pragma GCC diagnostic%>"
msgstr ""
-#: c-pragma.c:852
+#: c-pragma.c:849
#, gcc-internal-format
msgid "missing option after %<#pragma GCC diagnostic%> kind"
msgstr ""
-#: c-pragma.c:866
+#: c-pragma.c:863
#, gcc-internal-format
msgid "unknown option after %<#pragma GCC diagnostic%> kind"
msgstr ""
-#: c-pragma.c:879
+#: c-pragma.c:876
#, gcc-internal-format
msgid "#pragma GCC option is not allowed inside functions"
msgstr ""
-#: c-pragma.c:892
+#: c-pragma.c:889
#, gcc-internal-format
msgid "%<#pragma GCC option%> is not a string"
msgstr ""
-#: c-pragma.c:919
+#: c-pragma.c:916
#, gcc-internal-format
msgid ""
"%<#pragma GCC target (string [,string]...)%> does not have a final %<)%>."
msgstr ""
-#: c-pragma.c:925
+#: c-pragma.c:922
#, gcc-internal-format
msgid "#pragma GCC target string... is badly formed"
msgstr ""
-#: c-pragma.c:948
+#: c-pragma.c:945
#, gcc-internal-format
msgid "#pragma GCC optimize is not allowed inside functions"
msgstr ""
-#: c-pragma.c:961
+#: c-pragma.c:958
#, gcc-internal-format
msgid "%<#pragma GCC optimize%> is not a string or number"
msgstr ""
-#: c-pragma.c:987
+#: c-pragma.c:984
#, gcc-internal-format
msgid ""
"%<#pragma GCC optimize (string [,string]...)%> does not have a final %<)%>."
msgstr ""
-#: c-pragma.c:993
+#: c-pragma.c:990
#, gcc-internal-format
msgid "#pragma GCC optimize string... is badly formed"
msgstr ""
-#: c-pragma.c:1036
+#: c-pragma.c:1032
#, gcc-internal-format
msgid "junk at end of %<#pragma push_options%>"
msgstr ""
-#: c-pragma.c:1066
+#: c-pragma.c:1062
#, gcc-internal-format
msgid "junk at end of %<#pragma pop_options%>"
msgstr ""
-#: c-pragma.c:1073
+#: c-pragma.c:1069
#, gcc-internal-format
msgid ""
"%<#pragma GCC pop_options%> without a corresponding %<#pragma GCC "
"push_options%>"
msgstr ""
-#: c-pragma.c:1114
+#: c-pragma.c:1110
#, gcc-internal-format
msgid "junk at end of %<#pragma reset_options%>"
msgstr ""
-#: c-pragma.c:1151 c-pragma.c:1158
+#: c-pragma.c:1147 c-pragma.c:1154
#, gcc-internal-format
msgid "expected a string after %<#pragma message%>"
msgstr ""
-#: c-pragma.c:1153
+#: c-pragma.c:1149
#, gcc-internal-format
msgid "malformed %<#pragma message%>, ignored"
msgstr ""
-#: c-pragma.c:1163
+#: c-pragma.c:1159
#, gcc-internal-format
msgid "junk at end of %<#pragma message%>"
msgstr ""
-#: c-pragma.c:1166
+#: c-pragma.c:1162
#, gcc-internal-format
msgid "#pragma message: %s"
msgstr ""
+#: c-pragma.c:1199
+#, gcc-internal-format
+msgid "invalid location for %<pragma %s%>, ignored"
+msgstr ""
+
+#: c-pragma.c:1206 c-pragma.c:1220
+#, gcc-internal-format
+msgid "malformed %<#pragma %s%>, ignored"
+msgstr ""
+
+#: c-pragma.c:1226
+#, gcc-internal-format
+msgid "junk at end of %<#pragma %s%>"
+msgstr ""
+
+#: c-pragma.c:1244
+#, gcc-internal-format
+msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported for C++"
+msgstr ""
+
+#: c-pragma.c:1253
+#, gcc-internal-format
+msgid "%<#pragma STDC FLOAT_CONST_DECIMAL64%> is not supported on this target"
+msgstr ""
+
+#: c-pragma.c:1259
+#, gcc-internal-format
+msgid "ISO C does not support %<#pragma STDC FLOAT_CONST_DECIMAL64%>"
+msgstr ""
+
#: c-typeck.c:217
#, gcc-internal-format
msgid "%qD has an incomplete type"
@@ -21548,67 +21921,62 @@ msgstr ""
msgid "function return types not compatible due to %<volatile%>"
msgstr ""
-#: c-typeck.c:1581 c-typeck.c:3064
+#: c-typeck.c:1581 c-typeck.c:3059
#, gcc-internal-format
msgid "arithmetic on pointer to an incomplete type"
msgstr ""
-#: c-typeck.c:1941
+#: c-typeck.c:1926
#, gcc-internal-format
msgid "%qT has no member named %qE"
msgstr ""
-#: c-typeck.c:1993
+#: c-typeck.c:1978
#, gcc-internal-format
msgid "request for member %qE in something not a structure or union"
msgstr ""
-#: c-typeck.c:2042
+#: c-typeck.c:2027
#, gcc-internal-format
msgid "dereferencing pointer to incomplete type"
msgstr ""
-#: c-typeck.c:2046
+#: c-typeck.c:2031
#, gcc-internal-format
msgid "dereferencing %<void *%> pointer"
msgstr ""
-#: c-typeck.c:2065
+#: c-typeck.c:2050
#, gcc-internal-format
msgid "invalid type argument of %qs (have %qT)"
msgstr ""
-#: c-typeck.c:2096 cp/typeck.c:2697
+#: c-typeck.c:2081 cp/typeck.c:2697
#, gcc-internal-format
msgid "subscripted value is neither array nor pointer"
msgstr ""
-#: c-typeck.c:2107 cp/typeck.c:2612 cp/typeck.c:2702
+#: c-typeck.c:2092 cp/typeck.c:2612 cp/typeck.c:2702
#, gcc-internal-format
msgid "array subscript is not an integer"
msgstr ""
-#: c-typeck.c:2113
+#: c-typeck.c:2098
#, gcc-internal-format
msgid "subscripted value is pointer to function"
msgstr ""
-#: c-typeck.c:2161
+#: c-typeck.c:2146
#, gcc-internal-format
msgid "ISO C forbids subscripting %<register%> array"
msgstr ""
-#: c-typeck.c:2164
+#: c-typeck.c:2149
#, gcc-internal-format
msgid "ISO C90 forbids subscripting non-lvalue array"
msgstr ""
-#: c-typeck.c:2288
-#, gcc-internal-format
-msgid "%qD is static but used in inline function %qD which is not static"
-msgstr ""
-
-#: c-typeck.c:2479
+#: c-typeck.c:2474
#, gcc-internal-format
msgid "called object %qE is not a function"
msgstr ""
@@ -21616,861 +21984,856 @@ msgstr ""
#. This situation leads to run-time undefined behavior. We can't,
#. therefore, simply error unless we can prove that all possible
#. executions of the program must execute the code.
-#: c-typeck.c:2515
+#: c-typeck.c:2510
#, gcc-internal-format
msgid "function called through a non-compatible type"
msgstr ""
-#: c-typeck.c:2529 c-typeck.c:2582
+#: c-typeck.c:2524 c-typeck.c:2577
#, gcc-internal-format
msgid "function with qualified void return type called"
msgstr ""
-#: c-typeck.c:2704
+#: c-typeck.c:2699
#, gcc-internal-format
msgid "type of formal parameter %d is incomplete"
msgstr ""
-#: c-typeck.c:2719
+#: c-typeck.c:2714
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as integer rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:2724
+#: c-typeck.c:2719
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as integer rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:2729
+#: c-typeck.c:2724
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as complex rather than floating due to prototype"
msgstr ""
-#: c-typeck.c:2734
+#: c-typeck.c:2729
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as floating rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:2739
+#: c-typeck.c:2734
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as complex rather than integer due to prototype"
msgstr ""
-#: c-typeck.c:2744
+#: c-typeck.c:2739
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as floating rather than complex due to prototype"
msgstr ""
-#: c-typeck.c:2757
+#: c-typeck.c:2752
#, gcc-internal-format
msgid ""
"passing argument %d of %qE as %<float%> rather than %<double%> due to "
"prototype"
msgstr ""
-#: c-typeck.c:2782
+#: c-typeck.c:2777
#, gcc-internal-format
msgid "passing argument %d of %qE as %qT rather than %qT due to prototype"
msgstr ""
-#: c-typeck.c:2803
+#: c-typeck.c:2798
#, gcc-internal-format
msgid "passing argument %d of %qE with different width due to prototype"
msgstr ""
-#: c-typeck.c:2826
+#: c-typeck.c:2821
#, gcc-internal-format
msgid "passing argument %d of %qE as unsigned due to prototype"
msgstr ""
-#: c-typeck.c:2830
+#: c-typeck.c:2825
#, gcc-internal-format
msgid "passing argument %d of %qE as signed due to prototype"
msgstr ""
-#: c-typeck.c:2967 c-typeck.c:2971
+#: c-typeck.c:2962 c-typeck.c:2966
#, gcc-internal-format
msgid "comparison with string literal results in unspecified behavior"
msgstr ""
-#: c-typeck.c:2985
+#: c-typeck.c:2980
#, gcc-internal-format
msgid "comparison between %qT and %qT"
msgstr ""
-#: c-typeck.c:3005
+#: c-typeck.c:3000
#, gcc-internal-format
msgid "pointer of type %<void *%> used in subtraction"
msgstr ""
-#: c-typeck.c:3008
+#: c-typeck.c:3003
#, gcc-internal-format
msgid "pointer to a function used in subtraction"
msgstr ""
-#: c-typeck.c:3135
+#: c-typeck.c:3130
#, gcc-internal-format
msgid "wrong type argument to unary plus"
msgstr ""
-#: c-typeck.c:3148
+#: c-typeck.c:3143
#, gcc-internal-format
msgid "wrong type argument to unary minus"
msgstr ""
-#: c-typeck.c:3168
+#: c-typeck.c:3163
#, gcc-internal-format
msgid "ISO C does not support %<~%> for complex conjugation"
msgstr ""
-#: c-typeck.c:3174
+#: c-typeck.c:3169
#, gcc-internal-format
msgid "wrong type argument to bit-complement"
msgstr ""
-#: c-typeck.c:3182
+#: c-typeck.c:3177
#, gcc-internal-format
msgid "wrong type argument to abs"
msgstr ""
-#: c-typeck.c:3194
+#: c-typeck.c:3189
#, gcc-internal-format
msgid "wrong type argument to conjugation"
msgstr ""
-#: c-typeck.c:3207
+#: c-typeck.c:3202
#, gcc-internal-format
msgid "wrong type argument to unary exclamation mark"
msgstr ""
-#: c-typeck.c:3274
+#: c-typeck.c:3269
#, gcc-internal-format
msgid "ISO C does not support %<++%> and %<--%> on complex types"
msgstr ""
-#: c-typeck.c:3293 c-typeck.c:3325
+#: c-typeck.c:3288 c-typeck.c:3320
#, gcc-internal-format
msgid "wrong type argument to increment"
msgstr ""
-#: c-typeck.c:3295 c-typeck.c:3328
+#: c-typeck.c:3290 c-typeck.c:3323
#, gcc-internal-format
msgid "wrong type argument to decrement"
msgstr ""
-#: c-typeck.c:3315
+#: c-typeck.c:3310
#, gcc-internal-format
msgid "increment of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:3318
+#: c-typeck.c:3313
#, gcc-internal-format
msgid "decrement of pointer to unknown structure"
msgstr ""
-#: c-typeck.c:3395
+#: c-typeck.c:3390
#, gcc-internal-format
msgid "taking address of expression of type %<void%>"
msgstr ""
-#: c-typeck.c:3562
+#: c-typeck.c:3557
#, gcc-internal-format
msgid "assignment of read-only member %qD"
msgstr ""
-#: c-typeck.c:3563
+#: c-typeck.c:3558
#, gcc-internal-format
msgid "increment of read-only member %qD"
msgstr ""
-#: c-typeck.c:3564
+#: c-typeck.c:3559
#, gcc-internal-format
msgid "decrement of read-only member %qD"
msgstr ""
-#: c-typeck.c:3565
+#: c-typeck.c:3560
#, gcc-internal-format
msgid "read-only member %qD used as %<asm%> output"
msgstr ""
-#: c-typeck.c:3569
+#: c-typeck.c:3564
#, gcc-internal-format
msgid "assignment of read-only variable %qD"
msgstr ""
-#: c-typeck.c:3570
+#: c-typeck.c:3565
#, gcc-internal-format
msgid "increment of read-only variable %qD"
msgstr ""
-#: c-typeck.c:3571
+#: c-typeck.c:3566
#, gcc-internal-format
msgid "decrement of read-only variable %qD"
msgstr ""
-#: c-typeck.c:3572
+#: c-typeck.c:3567
#, gcc-internal-format
msgid "read-only variable %qD used as %<asm%> output"
msgstr ""
-#: c-typeck.c:3575 c-typeck.c:3591
+#: c-typeck.c:3570 c-typeck.c:3586
#, gcc-internal-format
msgid "assignment of read-only location %qE"
msgstr ""
-#: c-typeck.c:3576 c-typeck.c:3594
+#: c-typeck.c:3571 c-typeck.c:3589
#, gcc-internal-format
msgid "increment of read-only location %qE"
msgstr ""
-#: c-typeck.c:3577 c-typeck.c:3597
+#: c-typeck.c:3572 c-typeck.c:3592
#, gcc-internal-format
msgid "decrement of read-only location %qE"
msgstr ""
-#: c-typeck.c:3578
+#: c-typeck.c:3573
#, gcc-internal-format
msgid "read-only location %qE used as %<asm%> output"
msgstr ""
-#: c-typeck.c:3637
+#: c-typeck.c:3632
#, gcc-internal-format
msgid "cannot take address of bit-field %qD"
msgstr ""
-#: c-typeck.c:3665
+#: c-typeck.c:3660
#, gcc-internal-format
msgid "global register variable %qD used in nested function"
msgstr ""
-#: c-typeck.c:3668
+#: c-typeck.c:3663
#, gcc-internal-format
msgid "register variable %qD used in nested function"
msgstr ""
-#: c-typeck.c:3673
+#: c-typeck.c:3668
#, gcc-internal-format
msgid "address of global register variable %qD requested"
msgstr ""
-#: c-typeck.c:3675
+#: c-typeck.c:3670
#, gcc-internal-format
msgid "address of register variable %qD requested"
msgstr ""
-#: c-typeck.c:3740
+#: c-typeck.c:3735
#, gcc-internal-format
msgid "non-lvalue array in conditional expression"
msgstr ""
-#: c-typeck.c:3829
+#: c-typeck.c:3824
#, gcc-internal-format
msgid "signed and unsigned type in conditional expression"
msgstr ""
-#: c-typeck.c:3851
+#: c-typeck.c:3846
#, gcc-internal-format
msgid "ISO C forbids conditional expr with only one void side"
msgstr ""
-#: c-typeck.c:3866 c-typeck.c:3875
+#: c-typeck.c:3861 c-typeck.c:3870
#, gcc-internal-format
msgid "ISO C forbids conditional expr between %<void *%> and function pointer"
msgstr ""
-#: c-typeck.c:3884
+#: c-typeck.c:3879
#, gcc-internal-format
msgid "pointer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:3892 c-typeck.c:3903
+#: c-typeck.c:3887 c-typeck.c:3898
#, gcc-internal-format
msgid "pointer/integer type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:3917
+#: c-typeck.c:3912
#, gcc-internal-format
msgid "type mismatch in conditional expression"
msgstr ""
-#: c-typeck.c:4010
+#: c-typeck.c:4005
#, gcc-internal-format
msgid "left-hand operand of comma expression has no effect"
msgstr ""
-#: c-typeck.c:4062
+#: c-typeck.c:4057
#, gcc-internal-format
msgid "cast specifies array type"
msgstr ""
-#: c-typeck.c:4068
+#: c-typeck.c:4063
#, gcc-internal-format
msgid "cast specifies function type"
msgstr ""
-#: c-typeck.c:4084
+#: c-typeck.c:4079
#, gcc-internal-format
msgid "ISO C forbids casting nonscalar to the same type"
msgstr ""
-#: c-typeck.c:4101
+#: c-typeck.c:4096
#, gcc-internal-format
msgid "ISO C forbids casts to union type"
msgstr ""
-#: c-typeck.c:4108
+#: c-typeck.c:4103
#, gcc-internal-format
msgid "cast to union type from type not present in union"
msgstr ""
-#: c-typeck.c:4154
+#: c-typeck.c:4149
#, gcc-internal-format
msgid "cast adds new qualifiers to function type"
msgstr ""
#. There are qualifiers present in IN_OTYPE that are not
#. present in IN_TYPE.
-#: c-typeck.c:4159
+#: c-typeck.c:4154
#, gcc-internal-format
msgid "cast discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:4175
+#: c-typeck.c:4170
#, gcc-internal-format
msgid "cast increases required alignment of target type"
msgstr ""
-#: c-typeck.c:4186
+#: c-typeck.c:4181
#, gcc-internal-format
msgid "cast from pointer to integer of different size"
msgstr ""
-#: c-typeck.c:4190
+#: c-typeck.c:4185
#, gcc-internal-format
msgid "cast from function call of type %qT to non-matching type %qT"
msgstr ""
-#: c-typeck.c:4198
+#: c-typeck.c:4193
#, gcc-internal-format
msgid "cast to pointer from integer of different size"
msgstr ""
-#: c-typeck.c:4212
+#: c-typeck.c:4207
#, gcc-internal-format
msgid "ISO C forbids conversion of function pointer to object pointer type"
msgstr ""
-#: c-typeck.c:4221
+#: c-typeck.c:4216
#, gcc-internal-format
msgid "ISO C forbids conversion of object pointer to function pointer type"
msgstr ""
+#: c-typeck.c:4407 c-typeck.c:4572
+#, gcc-internal-format
+msgid "enum conversion in assignment is invalid in C++"
+msgstr ""
+
#. This macro is used to emit diagnostics to ensure that all format
#. strings are complete sentences, visible to gettext and checked at
#. compile time.
-#: c-typeck.c:4496 c-typeck.c:4967
+#: c-typeck.c:4510 c-typeck.c:4975
#, gcc-internal-format
msgid "expected %qT but argument is of type %qT"
msgstr ""
-#: c-typeck.c:4561
+#: c-typeck.c:4570
#, gcc-internal-format
msgid "enum conversion when passing argument %d of %qE is invalid in C++"
msgstr ""
-#: c-typeck.c:4563
-#, gcc-internal-format
-msgid "enum conversion in assignment is invalid in C++"
-msgstr ""
-
-#: c-typeck.c:4565
-#, gcc-internal-format
-msgid "enum conversion in initialization is invalid in C++"
-msgstr ""
-
-#: c-typeck.c:4567
+#: c-typeck.c:4576
#, gcc-internal-format
msgid "enum conversion in return is invalid in C++"
msgstr ""
-#: c-typeck.c:4597
+#: c-typeck.c:4605
#, gcc-internal-format
msgid "cannot pass rvalue to reference parameter"
msgstr ""
-#: c-typeck.c:4720 c-typeck.c:4889
+#: c-typeck.c:4728 c-typeck.c:4897
#, gcc-internal-format
msgid ""
"passing argument %d of %qE makes qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:4723 c-typeck.c:4892
+#: c-typeck.c:4731 c-typeck.c:4900
#, gcc-internal-format
msgid "assignment makes qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:4726 c-typeck.c:4894
+#: c-typeck.c:4734 c-typeck.c:4902
#, gcc-internal-format
msgid "initialization makes qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:4729 c-typeck.c:4896
+#: c-typeck.c:4737 c-typeck.c:4904
#, gcc-internal-format
msgid "return makes qualified function pointer from unqualified"
msgstr ""
-#: c-typeck.c:4734 c-typeck.c:4854
+#: c-typeck.c:4742 c-typeck.c:4862
#, gcc-internal-format
msgid "passing argument %d of %qE discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:4736 c-typeck.c:4856
+#: c-typeck.c:4744 c-typeck.c:4864
#, gcc-internal-format
msgid "assignment discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:4738 c-typeck.c:4858
+#: c-typeck.c:4746 c-typeck.c:4866
#, gcc-internal-format
msgid "initialization discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:4740 c-typeck.c:4860
+#: c-typeck.c:4748 c-typeck.c:4868
#, gcc-internal-format
msgid "return discards qualifiers from pointer target type"
msgstr ""
-#: c-typeck.c:4748
+#: c-typeck.c:4756
#, gcc-internal-format
msgid "ISO C prohibits argument conversion to union type"
msgstr ""
-#: c-typeck.c:4781
+#: c-typeck.c:4789
#, gcc-internal-format
msgid "request for implicit conversion from %qT to %qT not permitted in C++"
msgstr ""
-#: c-typeck.c:4793
+#: c-typeck.c:4801
#, gcc-internal-format
msgid "argument %d of %qE might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:4799
+#: c-typeck.c:4807
#, gcc-internal-format
msgid "assignment left-hand side might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:4804
+#: c-typeck.c:4812
#, gcc-internal-format
msgid ""
"initialization left-hand side might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:4809
+#: c-typeck.c:4817
#, gcc-internal-format
msgid "return type might be a candidate for a format attribute"
msgstr ""
-#: c-typeck.c:4833
+#: c-typeck.c:4841
#, gcc-internal-format
msgid ""
"ISO C forbids passing argument %d of %qE between function pointer and %<void "
"*%>"
msgstr ""
-#: c-typeck.c:4836
+#: c-typeck.c:4844
#, gcc-internal-format
msgid "ISO C forbids assignment between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:4838
+#: c-typeck.c:4846
#, gcc-internal-format
msgid "ISO C forbids initialization between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:4840
+#: c-typeck.c:4848
#, gcc-internal-format
msgid "ISO C forbids return between function pointer and %<void *%>"
msgstr ""
-#: c-typeck.c:4871
+#: c-typeck.c:4879
#, gcc-internal-format
msgid "pointer targets in passing argument %d of %qE differ in signedness"
msgstr ""
-#: c-typeck.c:4873
+#: c-typeck.c:4881
#, gcc-internal-format
msgid "pointer targets in assignment differ in signedness"
msgstr ""
-#: c-typeck.c:4875
+#: c-typeck.c:4883
#, gcc-internal-format
msgid "pointer targets in initialization differ in signedness"
msgstr ""
-#: c-typeck.c:4877
+#: c-typeck.c:4885
#, gcc-internal-format
msgid "pointer targets in return differ in signedness"
msgstr ""
-#: c-typeck.c:4904
+#: c-typeck.c:4912
#, gcc-internal-format
msgid "passing argument %d of %qE from incompatible pointer type"
msgstr ""
-#: c-typeck.c:4906
+#: c-typeck.c:4914
#, gcc-internal-format
msgid "assignment from incompatible pointer type"
msgstr ""
-#: c-typeck.c:4907
+#: c-typeck.c:4915
#, gcc-internal-format
msgid "initialization from incompatible pointer type"
msgstr ""
-#: c-typeck.c:4909
+#: c-typeck.c:4917
#, gcc-internal-format
msgid "return from incompatible pointer type"
msgstr ""
-#: c-typeck.c:4927
+#: c-typeck.c:4935
#, gcc-internal-format
msgid "passing argument %d of %qE makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:4929
+#: c-typeck.c:4937
#, gcc-internal-format
msgid "assignment makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:4931
+#: c-typeck.c:4939
#, gcc-internal-format
msgid "initialization makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:4933
+#: c-typeck.c:4941
#, gcc-internal-format
msgid "return makes pointer from integer without a cast"
msgstr ""
-#: c-typeck.c:4941
+#: c-typeck.c:4949
#, gcc-internal-format
msgid "passing argument %d of %qE makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:4943
+#: c-typeck.c:4951
#, gcc-internal-format
msgid "assignment makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:4945
+#: c-typeck.c:4953
#, gcc-internal-format
msgid "initialization makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:4947
+#: c-typeck.c:4955
#, gcc-internal-format
msgid "return makes integer from pointer without a cast"
msgstr ""
-#: c-typeck.c:4970
+#: c-typeck.c:4978
#, gcc-internal-format
msgid "incompatible types when assigning to type %qT from type %qT"
msgstr ""
-#: c-typeck.c:4974
+#: c-typeck.c:4982
#, gcc-internal-format
msgid "incompatible types when initializing type %qT using type %qT"
msgstr ""
-#: c-typeck.c:4978
+#: c-typeck.c:4986
#, gcc-internal-format
msgid "incompatible types when returning type %qT but %qT was expected"
msgstr ""
-#: c-typeck.c:5039
+#: c-typeck.c:5047
#, gcc-internal-format
msgid "traditional C rejects automatic aggregate initialization"
msgstr ""
-#: c-typeck.c:5210 c-typeck.c:5226 c-typeck.c:5243
+#: c-typeck.c:5220 c-typeck.c:5236 c-typeck.c:5253
#, gcc-internal-format
msgid "(near initialization for %qs)"
msgstr ""
-#: c-typeck.c:5831 cp/decl.c:5150
+#: c-typeck.c:5841 cp/decl.c:5148
#, gcc-internal-format
msgid "opaque vector types cannot be initialized"
msgstr ""
-#: c-typeck.c:6478
+#: c-typeck.c:6506
#, gcc-internal-format
msgid "unknown field %qE specified in initializer"
msgstr ""
-#: c-typeck.c:7438
+#: c-typeck.c:7485
#, gcc-internal-format
msgid "traditional C rejects initialization of unions"
msgstr ""
-#: c-typeck.c:7753
+#: c-typeck.c:7804
#, gcc-internal-format
msgid "jump into statement expression"
msgstr ""
-#: c-typeck.c:7759
+#: c-typeck.c:7810
#, gcc-internal-format
msgid "jump into scope of identifier with variably modified type"
msgstr ""
-#: c-typeck.c:7795
+#: c-typeck.c:7846
#, gcc-internal-format
msgid "ISO C forbids %<goto *expr;%>"
msgstr ""
-#: c-typeck.c:7813 cp/typeck.c:6851
+#: c-typeck.c:7864 cp/typeck.c:6858
#, gcc-internal-format
msgid "function declared %<noreturn%> has a %<return%> statement"
msgstr ""
-#: c-typeck.c:7836
+#: c-typeck.c:7887
#, gcc-internal-format
msgid "%<return%> with no value, in function returning non-void"
msgstr ""
-#: c-typeck.c:7846
+#: c-typeck.c:7897
#, gcc-internal-format
msgid "%<return%> with a value, in function returning void"
msgstr ""
-#: c-typeck.c:7848
+#: c-typeck.c:7899
#, gcc-internal-format
msgid "ISO C forbids %<return%> with expression, in function returning void"
msgstr ""
-#: c-typeck.c:7907
+#: c-typeck.c:7958
#, gcc-internal-format
msgid "function returns address of local variable"
msgstr ""
-#: c-typeck.c:7982 cp/semantics.c:952
+#: c-typeck.c:8033 cp/semantics.c:951
#, gcc-internal-format
msgid "switch quantity not an integer"
msgstr ""
-#: c-typeck.c:7994
+#: c-typeck.c:8045
#, gcc-internal-format
msgid "%<long%> switch expression not converted to %<int%> in ISO C"
msgstr ""
-#: c-typeck.c:8030 c-typeck.c:8038
+#: c-typeck.c:8081 c-typeck.c:8089
#, gcc-internal-format
msgid "case label is not an integer constant expression"
msgstr ""
-#: c-typeck.c:8054
+#: c-typeck.c:8105
#, gcc-internal-format
msgid ""
"case label in statement expression not containing enclosing switch statement"
msgstr ""
-#: c-typeck.c:8057
+#: c-typeck.c:8108
#, gcc-internal-format
msgid ""
"%<default%> label in statement expression not containing enclosing switch "
"statement"
msgstr ""
-#: c-typeck.c:8063
+#: c-typeck.c:8114
#, gcc-internal-format
msgid ""
"case label in scope of identifier with variably modified type not containing "
"enclosing switch statement"
msgstr ""
-#: c-typeck.c:8066
+#: c-typeck.c:8117
#, gcc-internal-format
msgid ""
"%<default%> label in scope of identifier with variably modified type not "
"containing enclosing switch statement"
msgstr ""
-#: c-typeck.c:8070
+#: c-typeck.c:8121
#, gcc-internal-format
msgid "case label not within a switch statement"
msgstr ""
-#: c-typeck.c:8072
+#: c-typeck.c:8123
#, gcc-internal-format
msgid "%<default%> label not within a switch statement"
msgstr ""
-#: c-typeck.c:8149
+#: c-typeck.c:8200
#, gcc-internal-format
msgid "%Hsuggest explicit braces to avoid ambiguous %<else%>"
msgstr ""
-#: c-typeck.c:8258 cp/cp-gimplify.c:92
+#: c-typeck.c:8309 cp/cp-gimplify.c:92
#, gcc-internal-format
msgid "break statement not within loop or switch"
msgstr ""
-#: c-typeck.c:8260
+#: c-typeck.c:8311
#, gcc-internal-format
msgid "continue statement not within a loop"
msgstr ""
-#: c-typeck.c:8265
+#: c-typeck.c:8316
#, gcc-internal-format
msgid "break statement used with OpenMP for loop"
msgstr ""
-#: c-typeck.c:8291
+#: c-typeck.c:8342
#, gcc-internal-format
msgid "%Hstatement with no effect"
msgstr ""
-#: c-typeck.c:8315
+#: c-typeck.c:8366
#, gcc-internal-format
msgid "expression statement has incomplete type"
msgstr ""
-#: c-typeck.c:8981 cp/typeck.c:3529
+#: c-typeck.c:9032 cp/typeck.c:3529
#, gcc-internal-format
msgid "right shift count is negative"
msgstr ""
-#: c-typeck.c:8992 cp/typeck.c:3535
+#: c-typeck.c:9043 cp/typeck.c:3535
#, gcc-internal-format
msgid "right shift count >= width of type"
msgstr ""
-#: c-typeck.c:9018 cp/typeck.c:3556
+#: c-typeck.c:9069 cp/typeck.c:3556
#, gcc-internal-format
msgid "left shift count is negative"
msgstr ""
-#: c-typeck.c:9025 cp/typeck.c:3561
+#: c-typeck.c:9076 cp/typeck.c:3561
#, gcc-internal-format
msgid "left shift count >= width of type"
msgstr ""
-#: c-typeck.c:9045 cp/typeck.c:3607
+#: c-typeck.c:9096 cp/typeck.c:3607
#, gcc-internal-format
msgid "comparing floating point with == or != is unsafe"
msgstr ""
-#: c-typeck.c:9069 c-typeck.c:9076
+#: c-typeck.c:9120 c-typeck.c:9127
#, gcc-internal-format
msgid "ISO C forbids comparison of %<void *%> with function pointer"
msgstr ""
-#: c-typeck.c:9083 c-typeck.c:9145
+#: c-typeck.c:9134 c-typeck.c:9196
#, gcc-internal-format
msgid "comparison of distinct pointer types lacks a cast"
msgstr ""
-#: c-typeck.c:9093 c-typeck.c:9102 cp/typeck.c:3630 cp/typeck.c:3642
+#: c-typeck.c:9144 c-typeck.c:9153 cp/typeck.c:3630 cp/typeck.c:3642
#, gcc-internal-format
msgid "the address of %qD will never be NULL"
msgstr ""
-#: c-typeck.c:9109 c-typeck.c:9114 c-typeck.c:9167 c-typeck.c:9172
+#: c-typeck.c:9160 c-typeck.c:9165 c-typeck.c:9218 c-typeck.c:9223
#, gcc-internal-format
msgid "comparison between pointer and integer"
msgstr ""
-#: c-typeck.c:9136
+#: c-typeck.c:9187
#, gcc-internal-format
msgid "comparison of complete and incomplete pointers"
msgstr ""
-#: c-typeck.c:9138
+#: c-typeck.c:9189
#, gcc-internal-format
msgid "ISO C forbids ordered comparisons of pointers to functions"
msgstr ""
-#: c-typeck.c:9153 c-typeck.c:9156 c-typeck.c:9162
+#: c-typeck.c:9204 c-typeck.c:9207 c-typeck.c:9213
#, gcc-internal-format
msgid "ordered comparison of pointer with integer zero"
msgstr ""
-#: c-typeck.c:9403
+#: c-typeck.c:9539
#, gcc-internal-format
msgid "used array that cannot be converted to pointer where scalar is required"
msgstr ""
-#: c-typeck.c:9407
+#: c-typeck.c:9543
#, gcc-internal-format
msgid "used struct type value where scalar is required"
msgstr ""
-#: c-typeck.c:9411
+#: c-typeck.c:9547
#, gcc-internal-format
msgid "used union type value where scalar is required"
msgstr ""
-#: c-typeck.c:9563 cp/semantics.c:3721
+#: c-typeck.c:9699 cp/semantics.c:3720
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction%>"
msgstr ""
-#: c-typeck.c:9597 cp/semantics.c:3734
+#: c-typeck.c:9733 cp/semantics.c:3733
#, gcc-internal-format
msgid "%qE has invalid type for %<reduction(%s)%>"
msgstr ""
-#: c-typeck.c:9613 cp/semantics.c:3744
+#: c-typeck.c:9749 cp/semantics.c:3743
#, gcc-internal-format
msgid "%qE must be %<threadprivate%> for %<copyin%>"
msgstr ""
-#: c-typeck.c:9622 cp/semantics.c:3541
+#: c-typeck.c:9758 cp/semantics.c:3540
#, gcc-internal-format
msgid "%qE is not a variable in clause %qs"
msgstr ""
-#: c-typeck.c:9629 c-typeck.c:9649 c-typeck.c:9669
+#: c-typeck.c:9765 c-typeck.c:9785 c-typeck.c:9805
#, gcc-internal-format
msgid "%qE appears more than once in data clauses"
msgstr ""
-#: c-typeck.c:9643 cp/semantics.c:3564
+#: c-typeck.c:9779 cp/semantics.c:3563
#, gcc-internal-format
msgid "%qE is not a variable in clause %<firstprivate%>"
msgstr ""
-#: c-typeck.c:9663 cp/semantics.c:3586
+#: c-typeck.c:9799 cp/semantics.c:3585
#, gcc-internal-format
msgid "%qE is not a variable in clause %<lastprivate%>"
msgstr ""
-#: c-typeck.c:9723 cp/semantics.c:3785
+#: c-typeck.c:9859 cp/semantics.c:3784
#, gcc-internal-format
msgid "%qE is predetermined %qs for %qs"
msgstr ""
-#: calls.c:2055
+#: calls.c:2056
#, gcc-internal-format
msgid "function call has aggregate value"
msgstr ""
-#: cfgexpand.c:299
+#: cfgexpand.c:318
#, gcc-internal-format
msgid "Unrecognized GIMPLE statement during RTL expansion"
msgstr ""
-#: cfgexpand.c:2332
+#: cfgexpand.c:2477
#, gcc-internal-format
msgid "not protecting local variables: variable length buffer"
msgstr ""
-#: cfgexpand.c:2335
+#: cfgexpand.c:2480
#, gcc-internal-format
msgid "not protecting function: no buffer at least %d bytes long"
msgstr ""
@@ -22525,7 +22888,7 @@ msgstr ""
msgid "verify_flow_info: Basic block %d succ edge is corrupted"
msgstr ""
-#: cfghooks.c:197 cfgrtl.c:1813
+#: cfghooks.c:197 cfgrtl.c:1856
#, gcc-internal-format
msgid "wrong amount of branch edges after unconditional jump %i"
msgstr ""
@@ -22735,232 +23098,257 @@ msgstr ""
msgid "%d exits recorded for loop %d (having %d exits)"
msgstr ""
-#: cfgrtl.c:1707
+#: cfgrtl.c:1750
#, gcc-internal-format
msgid "BB_RTL flag not set for block %d"
msgstr ""
-#: cfgrtl.c:1714
+#: cfgrtl.c:1757
#, gcc-internal-format
msgid "insn %d basic block pointer is %d, should be %d"
msgstr ""
-#: cfgrtl.c:1725
+#: cfgrtl.c:1768
#, gcc-internal-format
msgid "insn %d in header of bb %d has non-NULL basic block"
msgstr ""
-#: cfgrtl.c:1733
+#: cfgrtl.c:1776
#, gcc-internal-format
msgid "insn %d in footer of bb %d has non-NULL basic block"
msgstr ""
-#: cfgrtl.c:1755
+#: cfgrtl.c:1798
#, gcc-internal-format
msgid "verify_flow_info: REG_BR_PROB does not match cfg %wi %i"
msgstr ""
-#: cfgrtl.c:1770
+#: cfgrtl.c:1813
#, gcc-internal-format
msgid "fallthru edge crosses section boundary (bb %i)"
msgstr ""
-#: cfgrtl.c:1795
+#: cfgrtl.c:1838
#, gcc-internal-format
msgid "missing REG_EH_REGION note in the end of bb %i"
msgstr ""
-#: cfgrtl.c:1803
+#: cfgrtl.c:1846
#, gcc-internal-format
msgid "too many outgoing branch edges from bb %i"
msgstr ""
-#: cfgrtl.c:1808
+#: cfgrtl.c:1851
#, gcc-internal-format
msgid "fallthru edge after unconditional jump %i"
msgstr ""
-#: cfgrtl.c:1819
+#: cfgrtl.c:1862
#, gcc-internal-format
msgid "wrong amount of branch edges after conditional jump %i"
msgstr ""
-#: cfgrtl.c:1825
+#: cfgrtl.c:1868
#, gcc-internal-format
msgid "call edges for non-call insn in bb %i"
msgstr ""
-#: cfgrtl.c:1834
+#: cfgrtl.c:1877
#, gcc-internal-format
msgid "abnormal edges for no purpose in bb %i"
msgstr ""
-#: cfgrtl.c:1846
+#: cfgrtl.c:1889
#, gcc-internal-format
msgid "insn %d inside basic block %d but block_for_insn is NULL"
msgstr ""
-#: cfgrtl.c:1850
+#: cfgrtl.c:1893
#, gcc-internal-format
msgid "insn %d inside basic block %d but block_for_insn is %i"
msgstr ""
-#: cfgrtl.c:1864 cfgrtl.c:1874
+#: cfgrtl.c:1907 cfgrtl.c:1917
#, gcc-internal-format
msgid "NOTE_INSN_BASIC_BLOCK is missing for block %d"
msgstr ""
-#: cfgrtl.c:1887
+#: cfgrtl.c:1930
#, gcc-internal-format
msgid "NOTE_INSN_BASIC_BLOCK %d in middle of basic block %d"
msgstr ""
-#: cfgrtl.c:1897
+#: cfgrtl.c:1940
#, gcc-internal-format
msgid "in basic block %d:"
msgstr ""
-#: cfgrtl.c:1950 cfgrtl.c:2040
+#: cfgrtl.c:1993 cfgrtl.c:2083
#, gcc-internal-format
msgid "insn %d outside of basic blocks has non-NULL bb field"
msgstr ""
-#: cfgrtl.c:1958
+#: cfgrtl.c:2001
#, gcc-internal-format
msgid "end insn %d for block %d not found in the insn stream"
msgstr ""
-#: cfgrtl.c:1971
+#: cfgrtl.c:2014
#, gcc-internal-format
msgid "insn %d is in multiple basic blocks (%d and %d)"
msgstr ""
-#: cfgrtl.c:1983
+#: cfgrtl.c:2026
#, gcc-internal-format
msgid "head insn %d for block %d not found in the insn stream"
msgstr ""
-#: cfgrtl.c:2003
+#: cfgrtl.c:2046
#, gcc-internal-format
msgid "missing barrier after block %i"
msgstr ""
-#: cfgrtl.c:2016
+#: cfgrtl.c:2059
#, gcc-internal-format
msgid "verify_flow_info: Incorrect blocks for fallthru %i->%i"
msgstr ""
-#: cfgrtl.c:2025
+#: cfgrtl.c:2068
#, gcc-internal-format
msgid "verify_flow_info: Incorrect fallthru %i->%i"
msgstr ""
-#: cfgrtl.c:2058
+#: cfgrtl.c:2101
#, gcc-internal-format
msgid "basic blocks not laid down consecutively"
msgstr ""
-#: cfgrtl.c:2097
+#: cfgrtl.c:2140
#, gcc-internal-format
msgid "number of bb notes in insn chain (%d) != n_basic_blocks (%d)"
msgstr ""
-#: cgraph.c:1299
+#: cgraph.c:1494
#, gcc-internal-format
msgid "%D renamed after being referenced in assembly"
msgstr ""
-#: cgraphunit.c:573
+#: cgraphunit.c:580
#, gcc-internal-format
msgid "aux field set for edge %s->%s"
msgstr ""
-#: cgraphunit.c:579
+#: cgraphunit.c:587
#, gcc-internal-format
msgid "Execution count is negative"
msgstr ""
-#: cgraphunit.c:586
+#: cgraphunit.c:594
#, gcc-internal-format
msgid "caller edge count is negative"
msgstr ""
-#: cgraphunit.c:591
+#: cgraphunit.c:599
#, gcc-internal-format
msgid "caller edge frequency is negative"
msgstr ""
-#: cgraphunit.c:596
+#: cgraphunit.c:604
#, gcc-internal-format
msgid "caller edge frequency is too large"
msgstr ""
-#: cgraphunit.c:605
+#: cgraphunit.c:613
#, gcc-internal-format
msgid "inlined_to pointer is wrong"
msgstr ""
-#: cgraphunit.c:610
+#: cgraphunit.c:618
#, gcc-internal-format
msgid "multiple inline callers"
msgstr ""
-#: cgraphunit.c:617
+#: cgraphunit.c:625
#, gcc-internal-format
msgid "inlined_to pointer set for noninline callers"
msgstr ""
-#: cgraphunit.c:623
+#: cgraphunit.c:631
#, gcc-internal-format
msgid "inlined_to pointer is set but no predecessors found"
msgstr ""
-#: cgraphunit.c:628
+#: cgraphunit.c:636
#, gcc-internal-format
msgid "inlined_to pointer refers to itself"
msgstr ""
-#: cgraphunit.c:638
+#: cgraphunit.c:642
#, gcc-internal-format
msgid "node not found in cgraph_hash"
msgstr ""
-#: cgraphunit.c:667
+#: cgraphunit.c:654
+#, gcc-internal-format
+msgid "node has wrong clone_of"
+msgstr ""
+
+#: cgraphunit.c:666
+#, gcc-internal-format
+msgid "node has wrong clone list"
+msgstr ""
+
+#: cgraphunit.c:672
+#, gcc-internal-format
+msgid "node is in clone list but it is not clone"
+msgstr ""
+
+#: cgraphunit.c:677
+#, gcc-internal-format
+msgid "node has wrong prev_clone pointer"
+msgstr ""
+
+#: cgraphunit.c:682
+#, gcc-internal-format
+msgid "double linked list of clones corrupted"
+msgstr ""
+
+#: cgraphunit.c:711
#, gcc-internal-format
msgid "shared call_stmt:"
msgstr ""
-#: cgraphunit.c:674
+#: cgraphunit.c:718
#, gcc-internal-format
msgid "edge points to wrong declaration:"
msgstr ""
-#: cgraphunit.c:683
+#: cgraphunit.c:727
#, gcc-internal-format
msgid "missing callgraph edge for call stmt:"
msgstr ""
-#: cgraphunit.c:699
+#: cgraphunit.c:743
#, gcc-internal-format
msgid "edge %s->%s has no corresponding call_stmt"
msgstr ""
-#: cgraphunit.c:711
+#: cgraphunit.c:755
#, gcc-internal-format
msgid "verify_cgraph_node failed"
msgstr ""
-#: cgraphunit.c:804 cgraphunit.c:827
+#: cgraphunit.c:848 cgraphunit.c:871
#, gcc-internal-format
msgid "%J%<externally_visible%> attribute have effect only on public objects"
msgstr ""
-#: cgraphunit.c:1021
+#: cgraphunit.c:1065
#, gcc-internal-format
msgid "failed to reclaim unneeded function"
msgstr ""
-#: cgraphunit.c:1355
+#: cgraphunit.c:1400
#, gcc-internal-format
msgid "nodes with unreleased memory found"
msgstr ""
@@ -23050,12 +23438,12 @@ msgstr ""
msgid "coverage mismatch for function %u while reading execution counters"
msgstr ""
-#: coverage.c:278 coverage.c:373
+#: coverage.c:278 coverage.c:372
#, gcc-internal-format
msgid "checksum is %x instead of %x"
msgstr ""
-#: coverage.c:286 coverage.c:375
+#: coverage.c:286 coverage.c:374
#, gcc-internal-format
msgid "number of counters is %d instead of %d"
msgstr ""
@@ -23072,35 +23460,35 @@ msgstr ""
#: coverage.c:350
#, gcc-internal-format
-msgid "no coverage for function %qs found"
+msgid "no coverage for function %qE found"
msgstr ""
-#: coverage.c:364 coverage.c:367
+#: coverage.c:363 coverage.c:366
#, gcc-internal-format
-msgid "coverage mismatch for function %qs while reading counter %qs"
+msgid "coverage mismatch for function %qE while reading counter %qs"
msgstr ""
-#: coverage.c:383
+#: coverage.c:382
#, gcc-internal-format
msgid "coverage mismatch ignored due to -Wcoverage-mismatch"
msgstr ""
-#: coverage.c:385
+#: coverage.c:384
#, gcc-internal-format
msgid "execution counts estimated"
msgstr ""
-#: coverage.c:388
+#: coverage.c:387
#, gcc-internal-format
msgid "this can result in poorly optimized code"
msgstr ""
-#: coverage.c:570
+#: coverage.c:569
#, gcc-internal-format
msgid "cannot open %s"
msgstr ""
-#: coverage.c:605
+#: coverage.c:604
#, gcc-internal-format
msgid "error writing %qs"
msgstr ""
@@ -23120,7 +23508,7 @@ msgstr ""
msgid " %s"
msgstr ""
-#: dbxout.c:3229
+#: dbxout.c:3228
#, gcc-internal-format
msgid "common symbol debug info is not structured as symbol+offset"
msgstr ""
@@ -23140,27 +23528,27 @@ msgstr ""
msgid "dominator of %d should be %d, not %d"
msgstr ""
-#: dwarf2out.c:4523
+#: dwarf2out.c:4543
#, gcc-internal-format
msgid "DW_LOC_OP %s not implemented"
msgstr ""
-#: emit-rtl.c:2454
+#: emit-rtl.c:2457
#, gcc-internal-format
msgid "invalid rtl sharing found in the insn"
msgstr ""
-#: emit-rtl.c:2456
+#: emit-rtl.c:2459
#, gcc-internal-format
msgid "shared rtx"
msgstr ""
-#: emit-rtl.c:2458
+#: emit-rtl.c:2461
#, gcc-internal-format
msgid "internal consistency failure"
msgstr ""
-#: emit-rtl.c:3518
+#: emit-rtl.c:3521
#, gcc-internal-format
msgid "ICE: emit_insn used where emit_jump_insn needed:\n"
msgstr ""
@@ -23175,91 +23563,86 @@ msgstr ""
msgid "exception handling disabled, use -fexceptions to enable"
msgstr ""
-#: except.c:2889
+#: except.c:3387
#, gcc-internal-format
msgid "argument of %<__builtin_eh_return_regno%> must be constant"
msgstr ""
-#: except.c:3022
+#: except.c:3520
#, gcc-internal-format
msgid "__builtin_eh_return not supported on this target"
msgstr ""
-#: except.c:3973
-#, gcc-internal-format
-msgid "Wrong prev_try pointer in EH region %i"
-msgstr ""
-
-#: except.c:3983
+#: except.c:4470
#, gcc-internal-format
msgid "Try region %i has wrong rh_catch pointer to %i"
msgstr ""
-#: except.c:3993
+#: except.c:4480
#, gcc-internal-format
msgid "Catch region %i has different outer region than try region %i"
msgstr ""
-#: except.c:3999
+#: except.c:4486
#, gcc-internal-format
msgid "Catch region %i has corrupted catchlist"
msgstr ""
-#: except.c:4008
+#: except.c:4495
#, gcc-internal-format
msgid "Try region %i has wrong last_catch pointer to %i instead of %i"
msgstr ""
-#: except.c:4020
+#: except.c:4507
#, gcc-internal-format
msgid "Catch region %i should be followed by try"
msgstr ""
-#: except.c:4063 except.c:4074
+#: except.c:4545 except.c:4556
#, gcc-internal-format
msgid "region_array is corrupted for region %i"
msgstr ""
-#: except.c:4079
+#: except.c:4561
#, gcc-internal-format
msgid "outer block of region %i is wrong"
msgstr ""
-#: except.c:4085
+#: except.c:4567
#, gcc-internal-format
msgid "region %i may contain throw and is contained in region that may not"
msgstr ""
-#: except.c:4091
+#: except.c:4573
#, gcc-internal-format
msgid "negative nesting depth of region %i"
msgstr ""
-#: except.c:4112
+#: except.c:4594
#, gcc-internal-format
msgid "tree list ends on depth %i"
msgstr ""
-#: except.c:4117
+#: except.c:4599
#, gcc-internal-format
msgid "array does not match the region tree"
msgstr ""
-#: except.c:4127
+#: except.c:4609
#, gcc-internal-format
msgid "verify_eh_tree failed"
msgstr ""
-#: explow.c:1258
+#: explow.c:1263
#, gcc-internal-format
msgid "stack limits not supported on this target"
msgstr ""
-#: expr.c:8019
+#: expr.c:8060
msgid "%Kcall to %qs declared with attribute error: %s"
msgstr ""
-#: expr.c:8026
+#: expr.c:8067
msgid "%Kcall to %qs declared with attribute warning: %s"
msgstr ""
@@ -23278,7 +23661,7 @@ msgstr ""
msgid "large fixed-point constant implicitly truncated to fixed-point type"
msgstr ""
-#: fold-const.c:991 tree-ssa-loop-niter.c:1880 tree-vrp.c:5707 tree-vrp.c:5748
+#: fold-const.c:991 tree-ssa-loop-niter.c:1880 tree-vrp.c:5723 tree-vrp.c:5764
#, gcc-internal-format
msgid "%H%s"
msgstr ""
@@ -23288,45 +23671,45 @@ msgstr ""
msgid "assuming signed overflow does not occur when negating a division"
msgstr ""
-#: fold-const.c:4055 fold-const.c:4066
+#: fold-const.c:4059 fold-const.c:4070
#, gcc-internal-format
msgid "comparison is always %d due to width of bit-field"
msgstr ""
-#: fold-const.c:5397
+#: fold-const.c:5404
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying range test"
msgstr ""
-#: fold-const.c:5774 fold-const.c:5789
+#: fold-const.c:5781 fold-const.c:5796
#, gcc-internal-format
msgid "comparison is always %d"
msgstr ""
-#: fold-const.c:5918
+#: fold-const.c:5925
#, gcc-internal-format
msgid "%<or%> of unmatched not-equal tests is always 1"
msgstr ""
-#: fold-const.c:5923
+#: fold-const.c:5930
#, gcc-internal-format
msgid "%<and%> of mutually exclusive equal-tests is always 0"
msgstr ""
-#: fold-const.c:8826
+#: fold-const.c:8833
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when reducing constant in comparison"
msgstr ""
-#: fold-const.c:9193
+#: fold-const.c:9200
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when combining constants around a "
"comparison"
msgstr ""
-#: fold-const.c:13748
+#: fold-const.c:13762
#, gcc-internal-format
msgid "fold check: original tree changed by fold"
msgstr ""
@@ -23336,62 +23719,62 @@ msgstr ""
msgid "%Jtotal size of local objects too large"
msgstr ""
-#: function.c:918 varasm.c:2146
+#: function.c:916 varasm.c:2145
#, gcc-internal-format
msgid "size of variable %q+D is too large"
msgstr ""
-#: function.c:1626 gimplify.c:4848
+#: function.c:1624 gimplify.c:4931
#, gcc-internal-format
msgid "impossible constraint in %<asm%>"
msgstr ""
-#: function.c:3732
+#: function.c:3730
#, gcc-internal-format
msgid "variable %q+D might be clobbered by %<longjmp%> or %<vfork%>"
msgstr ""
-#: function.c:3753
+#: function.c:3751
#, gcc-internal-format
msgid "argument %q+D might be clobbered by %<longjmp%> or %<vfork%>"
msgstr ""
-#: function.c:4198
+#: function.c:4196
#, gcc-internal-format
msgid "function returns an aggregate"
msgstr ""
-#: function.c:4599
+#: function.c:4597
#, gcc-internal-format
msgid "unused parameter %q+D"
msgstr ""
-#: gcc.c:1311
+#: gcc.c:1318
#, gcc-internal-format
msgid "ambiguous abbreviation %s"
msgstr ""
-#: gcc.c:1338
+#: gcc.c:1345
#, gcc-internal-format
msgid "incomplete '%s' option"
msgstr ""
-#: gcc.c:1349
+#: gcc.c:1356
#, gcc-internal-format
msgid "missing argument to '%s' option"
msgstr ""
-#: gcc.c:1362
+#: gcc.c:1369
#, gcc-internal-format
msgid "extraneous argument to '%s' option"
msgstr ""
-#: gcc.c:4078
+#: gcc.c:4092
#, gcc-internal-format
msgid "warning: -pipe ignored because -save-temps specified"
msgstr ""
-#: gcc.c:4371
+#: gcc.c:4385
#, gcc-internal-format
msgid "warning: '-x %s' after last input file has no effect"
msgstr ""
@@ -23399,62 +23782,62 @@ msgstr ""
#. Catch the case where a spec string contains something like
#. '%{foo:%*}'. i.e. there is no * in the pattern on the left
#. hand side of the :.
-#: gcc.c:5527
+#: gcc.c:5541
#, gcc-internal-format
msgid "spec failure: '%%*' has not been initialized by pattern match"
msgstr ""
-#: gcc.c:5536
+#: gcc.c:5550
#, gcc-internal-format
msgid "warning: use of obsolete %%[ operator in specs"
msgstr ""
-#: gcc.c:5617
+#: gcc.c:5631
#, gcc-internal-format
msgid "spec failure: unrecognized spec option '%c'"
msgstr ""
-#: gcc.c:6514
+#: gcc.c:6528
#, gcc-internal-format
msgid "spec failure: more than one arg to SYSROOT_SUFFIX_SPEC"
msgstr ""
-#: gcc.c:6537
+#: gcc.c:6551
#, gcc-internal-format
msgid "spec failure: more than one arg to SYSROOT_HEADERS_SUFFIX_SPEC"
msgstr ""
-#: gcc.c:6624
+#: gcc.c:6638
#, gcc-internal-format
msgid "unrecognized option '-%s'"
msgstr ""
-#: gcc.c:6857 gcc.c:6920
+#: gcc.c:6871 gcc.c:6934
#, gcc-internal-format
msgid "%s: %s compiler not installed on this system"
msgstr ""
-#: gcc.c:7020
+#: gcc.c:7034
#, gcc-internal-format
msgid "%s: linker input file unused because linking not done"
msgstr ""
-#: gcc.c:7060
+#: gcc.c:7074
#, gcc-internal-format
msgid "language %s not recognized"
msgstr ""
-#: gcc.c:7131
+#: gcc.c:7145
#, gcc-internal-format
msgid "%s: %s"
msgstr ""
-#: gcse.c:6566
+#: gcse.c:4910
#, gcc-internal-format
msgid "%s: %d basic blocks and %d edges/basic block"
msgstr ""
-#: gcse.c:6579
+#: gcse.c:4923
#, gcc-internal-format
msgid "%s: %d basic blocks and %d registers"
msgstr ""
@@ -23507,62 +23890,62 @@ msgstr ""
msgid "gimple check: expected %s(%s), have %s(%s) in %s, at %s:%d"
msgstr ""
-#: gimplify.c:4733
+#: gimplify.c:4816
#, gcc-internal-format
msgid "invalid lvalue in asm output %d"
msgstr ""
-#: gimplify.c:4849
+#: gimplify.c:4932
#, gcc-internal-format
msgid "non-memory input %d must stay in memory"
msgstr ""
-#: gimplify.c:4864
+#: gimplify.c:4947
#, gcc-internal-format
msgid "memory input %d is not directly addressable"
msgstr ""
-#: gimplify.c:5358
+#: gimplify.c:5441
#, gcc-internal-format
-msgid "%qs not specified in enclosing parallel"
+msgid "%qE not specified in enclosing parallel"
msgstr ""
-#: gimplify.c:5360
+#: gimplify.c:5443
#, gcc-internal-format
msgid "%Henclosing parallel"
msgstr ""
-#: gimplify.c:5465
+#: gimplify.c:5548
#, gcc-internal-format
-msgid "iteration variable %qs should be private"
+msgid "iteration variable %qE should be private"
msgstr ""
-#: gimplify.c:5479
+#: gimplify.c:5562
#, gcc-internal-format
-msgid "iteration variable %qs should not be firstprivate"
+msgid "iteration variable %qE should not be firstprivate"
msgstr ""
-#: gimplify.c:5482
+#: gimplify.c:5565
#, gcc-internal-format
-msgid "iteration variable %qs should not be reduction"
+msgid "iteration variable %qE should not be reduction"
msgstr ""
-#: gimplify.c:5645
+#: gimplify.c:5728
#, gcc-internal-format
-msgid "%s variable %qs is private in outer context"
+msgid "%s variable %qE is private in outer context"
msgstr ""
-#: gimplify.c:7159
+#: gimplify.c:7252
#, gcc-internal-format
msgid "gimplification failed"
msgstr ""
-#: graph.c:401 java/jcf-parse.c:1750 java/jcf-parse.c:1890 objc/objc-act.c:497
+#: graph.c:401 java/jcf-parse.c:1750 java/jcf-parse.c:1890 objc/objc-act.c:496
#, gcc-internal-format
msgid "can't open %s: %m"
msgstr ""
-#: graphite.c:6188 toplev.c:1727
+#: graphite.c:6188 toplev.c:1791
#, gcc-internal-format
msgid "Graphite loop optimizations cannot be used"
msgstr ""
@@ -23572,7 +23955,7 @@ msgstr ""
msgid "fix_sched_param: unknown param: %s"
msgstr ""
-#: ira.c:1438 ira.c:1451 ira.c:1465
+#: ira.c:1439 ira.c:1452 ira.c:1466
#, gcc-internal-format
msgid "%s cannot be used in asm here"
msgstr ""
@@ -23618,7 +24001,7 @@ msgid ""
"critical region may not be nested inside a critical region with the same name"
msgstr ""
-#: omp-low.c:6695 cp/decl.c:2669
+#: omp-low.c:6695 cp/decl.c:2667
#, gcc-internal-format
msgid "invalid exit from OpenMP structured block"
msgstr ""
@@ -23634,17 +24017,17 @@ msgstr ""
msgid "invalid branch to/from an OpenMP structured block"
msgstr ""
-#: opts.c:172
+#: opts.c:169
#, gcc-internal-format
msgid "argument %qs to %<-femit-struct-debug-detailed%> not recognized"
msgstr ""
-#: opts.c:206
+#: opts.c:203
#, gcc-internal-format
msgid "argument %qs to %<-femit-struct-debug-detailed%> unknown"
msgstr ""
-#: opts.c:212
+#: opts.c:209
#, gcc-internal-format
msgid ""
"%<-femit-struct-debug-detailed=dir:...%> must allow at least as much as %<-"
@@ -23652,147 +24035,147 @@ msgid ""
msgstr ""
#. Eventually this should become a hard error IMO.
-#: opts.c:443
+#: opts.c:435
#, gcc-internal-format
msgid "command line option \"%s\" is valid for %s but not for %s"
msgstr ""
-#: opts.c:474 opts.c:770
+#: opts.c:466 opts.c:762
#, gcc-internal-format
msgid "unrecognized command line option \"%s\""
msgstr ""
-#: opts.c:535
+#: opts.c:527
#, gcc-internal-format
msgid "command line option %qs is not supported by this configuration"
msgstr ""
-#: opts.c:588
+#: opts.c:580
#, gcc-internal-format
msgid "missing argument to \"%s\""
msgstr ""
-#: opts.c:598
+#: opts.c:590
#, gcc-internal-format
msgid "argument to \"%s\" should be a non-negative integer"
msgstr ""
-#: opts.c:977
+#: opts.c:990
#, gcc-internal-format
msgid "Section anchors must be disabled when unit-at-a-time is disabled."
msgstr ""
-#: opts.c:981
+#: opts.c:994
#, gcc-internal-format
msgid "Toplevel reorder must be disabled when unit-at-a-time is disabled."
msgstr ""
-#: opts.c:996
+#: opts.c:1009
#, gcc-internal-format
msgid "section anchors must be disabled when toplevel reorder is disabled"
msgstr ""
-#: opts.c:1026
+#: opts.c:1039
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work with exceptions"
msgstr ""
-#: opts.c:1037
+#: opts.c:1050
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not support unwind info"
msgstr ""
-#: opts.c:1051
+#: opts.c:1064
#, gcc-internal-format
msgid "-freorder-blocks-and-partition does not work on this architecture"
msgstr ""
-#: opts.c:1065
+#: opts.c:1078
#, gcc-internal-format
msgid "-fira-algorithm=CB does not work on this architecture"
msgstr ""
-#: opts.c:1374
+#: opts.c:1387
#, gcc-internal-format
msgid "unrecognized include_flags 0x%x passed to print_specific_help"
msgstr ""
-#: opts.c:1721
+#: opts.c:1725
#, gcc-internal-format
msgid "unknown excess precision style \"%s\""
msgstr ""
-#: opts.c:1758
+#: opts.c:1762
#, gcc-internal-format
msgid "structure alignment must be a small power of two, not %d"
msgstr ""
-#: opts.c:1774 opts.c:1782
+#: opts.c:1778 opts.c:1786
#, gcc-internal-format
msgid "Plugin support is disabled. Configure with --enable-plugin."
msgstr ""
-#: opts.c:1861
+#: opts.c:1865
#, gcc-internal-format
msgid "unrecognized visibility value \"%s\""
msgstr ""
-#: opts.c:1919
+#: opts.c:1923
#, gcc-internal-format
msgid "unknown stack check parameter \"%s\""
msgstr ""
-#: opts.c:1945
+#: opts.c:1949
#, gcc-internal-format
msgid "unrecognized register name \"%s\""
msgstr ""
-#: opts.c:1969
+#: opts.c:1973
#, gcc-internal-format
msgid "unknown tls-model \"%s\""
msgstr ""
-#: opts.c:1978
+#: opts.c:1982
#, gcc-internal-format
msgid "unknown ira algorithm \"%s\""
msgstr ""
-#: opts.c:1989
+#: opts.c:1993
#, gcc-internal-format
msgid "unknown ira region \"%s\""
msgstr ""
-#: opts.c:2092
+#: opts.c:2096
#, gcc-internal-format
msgid "%s: --param arguments should be of the form NAME=VALUE"
msgstr ""
-#: opts.c:2097
+#: opts.c:2101
#, gcc-internal-format
msgid "invalid --param value %qs"
msgstr ""
-#: opts.c:2215
+#: opts.c:2204
#, gcc-internal-format
msgid "target system does not support debug output"
msgstr ""
-#: opts.c:2222
+#: opts.c:2211
#, gcc-internal-format
msgid "debug format \"%s\" conflicts with prior selection"
msgstr ""
-#: opts.c:2238
+#: opts.c:2227
#, gcc-internal-format
msgid "unrecognised debug output level \"%s\""
msgstr ""
-#: opts.c:2240
+#: opts.c:2229
#, gcc-internal-format
msgid "debug output level %s is too high"
msgstr ""
-#: opts.c:2322
+#: opts.c:2313
#, gcc-internal-format
msgid "-Werror=%s: No option -%s"
msgstr ""
@@ -23813,7 +24196,7 @@ msgstr ""
msgid "invalid parameter %qs"
msgstr ""
-#: plugin.c:158
+#: plugin.c:160
#, gcc-internal-format
msgid ""
"Plugin %s was specified with different paths:\n"
@@ -23821,50 +24204,50 @@ msgid ""
"%s"
msgstr ""
-#: plugin.c:204
+#: plugin.c:206
#, gcc-internal-format
msgid "Malformed option -fplugin-arg-%s (multiple '=' signs)"
msgstr ""
-#: plugin.c:220
+#: plugin.c:222
#, gcc-internal-format
msgid "Malformed option -fplugin-arg-%s (missing -<key>[=<value>])"
msgstr ""
-#: plugin.c:282
+#: plugin.c:284
#, gcc-internal-format
msgid ""
"Plugin %s should be specified before -fplugin-arg-%s in the command line"
msgstr ""
-#: plugin.c:363
+#: plugin.c:365
#, gcc-internal-format
msgid "Invalid pass positioning operation"
msgstr ""
-#: plugin.c:403
+#: plugin.c:405
#, gcc-internal-format
msgid "No pass specified when registering a new pass in plugin %s"
msgstr ""
-#: plugin.c:410
+#: plugin.c:412
#, gcc-internal-format
msgid "No reference pass specified for positioning the pass from plugin %s"
msgstr ""
-#: plugin.c:420
+#: plugin.c:422
#, gcc-internal-format
msgid ""
"Failed to position pass %s registered by plugin %s. Cannot find the "
"(specified instance of) reference pass %s"
msgstr ""
-#: plugin.c:499
+#: plugin.c:501
#, gcc-internal-format
msgid "Plugin %s registered a null callback function for event %s"
msgstr ""
-#: plugin.c:513
+#: plugin.c:515
#, gcc-internal-format
msgid "Unkown callback event registered by plugin %s"
msgstr ""
@@ -23883,7 +24266,7 @@ msgid ""
"%s"
msgstr ""
-#: plugin.c:603
+#: plugin.c:600
#, gcc-internal-format
msgid "Fail to initialize plugin %s"
msgstr ""
@@ -23951,51 +24334,51 @@ msgstr ""
msgid "output operand %d must use %<&%> constraint"
msgstr ""
-#: reginfo.c:823
+#: regcprop.c:948
#, gcc-internal-format
-msgid "can't use '%s' as a %s register"
+msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)"
msgstr ""
-#: reginfo.c:838 config/ia64/ia64.c:5165 config/ia64/ia64.c:5172
-#: config/pa/pa.c:363 config/pa/pa.c:370 config/sh/sh.c:7976
-#: config/sh/sh.c:7983 config/spu/spu.c:4481 config/spu/spu.c:4488
+#: regcprop.c:960
#, gcc-internal-format
-msgid "unknown register name: %s"
+msgid "validate_value_data: Loop in regno chain (%u)"
msgstr ""
-#: reginfo.c:847
+#: regcprop.c:963
#, gcc-internal-format
-msgid "global register variable follows a function definition"
+msgid "validate_value_data: [%u] Bad oldest_regno (%u)"
msgstr ""
-#: reginfo.c:851
+#: regcprop.c:975
#, gcc-internal-format
-msgid "register used for two global register variables"
+msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)"
msgstr ""
-#: reginfo.c:856
+#: reginfo.c:823
#, gcc-internal-format
-msgid "call-clobbered register used for global register variable"
+msgid "can't use '%s' as a %s register"
msgstr ""
-#: regrename.c:1907
+#: reginfo.c:838 config/ia64/ia64.c:5186 config/ia64/ia64.c:5193
+#: config/pa/pa.c:367 config/pa/pa.c:374 config/sh/sh.c:7966
+#: config/sh/sh.c:7973 config/spu/spu.c:4624 config/spu/spu.c:4631
#, gcc-internal-format
-msgid "validate_value_data: [%u] Bad next_regno for empty chain (%u)"
+msgid "unknown register name: %s"
msgstr ""
-#: regrename.c:1919
+#: reginfo.c:847
#, gcc-internal-format
-msgid "validate_value_data: Loop in regno chain (%u)"
+msgid "global register variable follows a function definition"
msgstr ""
-#: regrename.c:1922
+#: reginfo.c:851
#, gcc-internal-format
-msgid "validate_value_data: [%u] Bad oldest_regno (%u)"
+msgid "register used for two global register variables"
msgstr ""
-#: regrename.c:1934
+#: reginfo.c:856
#, gcc-internal-format
-msgid "validate_value_data: [%u] Non-empty reg in chain (%s %u %i)"
+msgid "call-clobbered register used for global register variable"
msgstr ""
#: reload.c:1259
@@ -24053,7 +24436,7 @@ msgstr ""
msgid "%<asm%> operand constraint incompatible with operand size"
msgstr ""
-#: reload1.c:7577
+#: reload1.c:7598
#, gcc-internal-format
msgid "output operand is constant in %<asm%>"
msgstr ""
@@ -24103,122 +24486,122 @@ msgstr ""
msgid "RTL flag check: %s used with unexpected rtx code '%s' in %s, at %s:%d"
msgstr ""
-#: stmt.c:310
+#: stmt.c:311
#, gcc-internal-format
msgid "output operand constraint lacks %<=%>"
msgstr ""
-#: stmt.c:325
+#: stmt.c:326
#, gcc-internal-format
msgid "output constraint %qc for operand %d is not at the beginning"
msgstr ""
-#: stmt.c:348
+#: stmt.c:349
#, gcc-internal-format
msgid "operand constraint contains incorrectly positioned %<+%> or %<=%>"
msgstr ""
-#: stmt.c:355 stmt.c:454
+#: stmt.c:356 stmt.c:455
#, gcc-internal-format
msgid "%<%%%> constraint used with last operand"
msgstr ""
-#: stmt.c:374
+#: stmt.c:375
#, gcc-internal-format
msgid "matching constraint not valid in output operand"
msgstr ""
-#: stmt.c:445
+#: stmt.c:446
#, gcc-internal-format
msgid "input operand constraint contains %qc"
msgstr ""
-#: stmt.c:487
+#: stmt.c:488
#, gcc-internal-format
msgid "matching constraint references invalid operand number"
msgstr ""
-#: stmt.c:525
+#: stmt.c:526
#, gcc-internal-format
msgid "invalid punctuation %qc in constraint"
msgstr ""
-#: stmt.c:549
+#: stmt.c:550
#, gcc-internal-format
msgid "matching constraint does not allow a register"
msgstr ""
-#: stmt.c:603
+#: stmt.c:604
#, gcc-internal-format
-msgid "asm-specifier for variable %qs conflicts with asm clobber list"
+msgid "asm-specifier for variable %qE conflicts with asm clobber list"
msgstr ""
-#: stmt.c:693
+#: stmt.c:694
#, gcc-internal-format
msgid "unknown register name %qs in %<asm%>"
msgstr ""
-#: stmt.c:701
+#: stmt.c:702
#, gcc-internal-format
msgid "PIC register %qs clobbered in %<asm%>"
msgstr ""
-#: stmt.c:748
+#: stmt.c:749
#, gcc-internal-format
msgid "more than %d operands in %<asm%>"
msgstr ""
-#: stmt.c:811
+#: stmt.c:812
#, gcc-internal-format
msgid "output number %d not directly addressable"
msgstr ""
-#: stmt.c:894
+#: stmt.c:895
#, gcc-internal-format
msgid "asm operand %d probably doesn%'t match constraints"
msgstr ""
-#: stmt.c:904
+#: stmt.c:905
#, gcc-internal-format
msgid "use of memory input without lvalue in asm operand %d is deprecated"
msgstr ""
-#: stmt.c:1051
+#: stmt.c:1052
#, gcc-internal-format
msgid "asm clobber conflict with output operand"
msgstr ""
-#: stmt.c:1056
+#: stmt.c:1057
#, gcc-internal-format
msgid "asm clobber conflict with input operand"
msgstr ""
-#: stmt.c:1134
+#: stmt.c:1135
#, gcc-internal-format
msgid "too many alternatives in %<asm%>"
msgstr ""
-#: stmt.c:1146
+#: stmt.c:1147
#, gcc-internal-format
msgid "operand constraints for %<asm%> differ in number of alternatives"
msgstr ""
-#: stmt.c:1199
+#: stmt.c:1200
#, gcc-internal-format
msgid "duplicate asm operand name %qs"
msgstr ""
-#: stmt.c:1297
+#: stmt.c:1298
#, gcc-internal-format
msgid "missing close brace for named operand"
msgstr ""
-#: stmt.c:1325
+#: stmt.c:1326
#, gcc-internal-format
msgid "undefined named operand %qs"
msgstr ""
-#: stmt.c:1469
+#: stmt.c:1471
#, gcc-internal-format
msgid "%Hvalue computed is not used"
msgstr ""
@@ -24272,12 +24655,12 @@ msgstr ""
#: stor-layout.c:1303
#, gcc-internal-format
-msgid "packed attribute causes inefficient alignment for %qs"
+msgid "packed attribute causes inefficient alignment for %qE"
msgstr ""
#: stor-layout.c:1307
#, gcc-internal-format
-msgid "packed attribute is unnecessary for %qs"
+msgid "packed attribute is unnecessary for %qE"
msgstr ""
#: stor-layout.c:1313
@@ -24295,17 +24678,17 @@ msgstr ""
msgid "alignment of array elements is greater than element size"
msgstr ""
-#: targhooks.c:116
+#: targhooks.c:124
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this target"
msgstr ""
-#: targhooks.c:728
+#: targhooks.c:742
#, gcc-internal-format
msgid "target attribute is not supported on this machine"
msgstr ""
-#: targhooks.c:738
+#: targhooks.c:752
#, gcc-internal-format
msgid "#pragma GCC target is not supported for this machine"
msgstr ""
@@ -24327,628 +24710,658 @@ msgstr ""
msgid "ld returned %d exit status"
msgstr ""
-#: toplev.c:526
+#: toplev.c:528
#, gcc-internal-format
msgid "invalid option argument %qs"
msgstr ""
-#: toplev.c:624
+#: toplev.c:626
#, gcc-internal-format
msgid "getting core file size maximum limit: %m"
msgstr ""
-#: toplev.c:627
+#: toplev.c:629
#, gcc-internal-format
msgid "setting core file size limit to maximum: %m"
msgstr ""
-#: toplev.c:847
+#: toplev.c:849
#, gcc-internal-format
msgid "%q+F declared %<static%> but never defined"
msgstr ""
-#: toplev.c:875
+#: toplev.c:877
#, gcc-internal-format
msgid "%q+D defined but not used"
msgstr ""
-#: toplev.c:918
+#: toplev.c:944
+#, gcc-internal-format
+msgid "%qD is deprecated (declared at %s:%d): %s"
+msgstr ""
+
+#: toplev.c:948
#, gcc-internal-format
msgid "%qD is deprecated (declared at %s:%d)"
msgstr ""
-#: toplev.c:941
+#: toplev.c:973
#, gcc-internal-format
-msgid "%qs is deprecated (declared at %s:%d)"
+msgid "%qE is deprecated (declared at %s:%d): %s"
msgstr ""
-#: toplev.c:945
+#: toplev.c:977
+#, gcc-internal-format
+msgid "%qE is deprecated (declared at %s:%d)"
+msgstr ""
+
+#: toplev.c:984
+#, gcc-internal-format
+msgid "type is deprecated (declared at %s:%d): %s"
+msgstr ""
+
+#: toplev.c:988
#, gcc-internal-format
msgid "type is deprecated (declared at %s:%d)"
msgstr ""
-#: toplev.c:951
+#: toplev.c:997
+#, gcc-internal-format
+msgid "%qE is deprecated: %s"
+msgstr ""
+
+#: toplev.c:1000
#, gcc-internal-format
-msgid "%qs is deprecated"
+msgid "%qE is deprecated"
msgstr ""
-#: toplev.c:953
+#: toplev.c:1005
+#, gcc-internal-format
+msgid "type is deprecated: %s"
+msgstr ""
+
+#: toplev.c:1008
#, gcc-internal-format
msgid "type is deprecated"
msgstr ""
-#: toplev.c:1092
+#: toplev.c:1148
#, gcc-internal-format
msgid "unrecognized gcc debugging option: %c"
msgstr ""
-#: toplev.c:1347
+#: toplev.c:1407
#, gcc-internal-format
msgid "can%'t open %s for writing: %m"
msgstr ""
-#: toplev.c:1368
+#: toplev.c:1428
#, gcc-internal-format
msgid "-frecord-gcc-switches is not supported by the current target"
msgstr ""
-#: toplev.c:1701
+#: toplev.c:1765
#, gcc-internal-format
msgid "this target does not support %qs"
msgstr ""
-#: toplev.c:1756
+#: toplev.c:1820
#, gcc-internal-format
msgid "instruction scheduling not supported on this target machine"
msgstr ""
-#: toplev.c:1760
+#: toplev.c:1824
#, gcc-internal-format
msgid "this target machine does not have delayed branches"
msgstr ""
-#: toplev.c:1774
+#: toplev.c:1838
#, gcc-internal-format
msgid "-f%sleading-underscore not supported on this target machine"
msgstr ""
-#: toplev.c:1847
+#: toplev.c:1911
#, gcc-internal-format
msgid "target system does not support the \"%s\" debug format"
msgstr ""
-#: toplev.c:1860
+#: toplev.c:1924
#, gcc-internal-format
msgid "variable tracking requested, but useless unless producing debug info"
msgstr ""
-#: toplev.c:1863
+#: toplev.c:1927
#, gcc-internal-format
msgid "variable tracking requested, but not supported by this debug format"
msgstr ""
-#: toplev.c:1897
+#: toplev.c:1961
#, gcc-internal-format
msgid "can%'t open %s: %m"
msgstr ""
-#: toplev.c:1904
+#: toplev.c:1968
#, gcc-internal-format
msgid "-ffunction-sections not supported for this target"
msgstr ""
-#: toplev.c:1909
+#: toplev.c:1973
#, gcc-internal-format
msgid "-fdata-sections not supported for this target"
msgstr ""
-#: toplev.c:1916
+#: toplev.c:1980
#, gcc-internal-format
msgid "-ffunction-sections disabled; it makes profiling impossible"
msgstr ""
-#: toplev.c:1923
+#: toplev.c:1987
#, gcc-internal-format
msgid "-fprefetch-loop-arrays not supported for this target"
msgstr ""
-#: toplev.c:1929
+#: toplev.c:1993
#, gcc-internal-format
msgid ""
"-fprefetch-loop-arrays not supported for this target (try -march switches)"
msgstr ""
-#: toplev.c:1938
+#: toplev.c:2002
#, gcc-internal-format
msgid "-fprefetch-loop-arrays is not supported with -Os"
msgstr ""
-#: toplev.c:1949
+#: toplev.c:2013
#, gcc-internal-format
msgid "-fassociative-math disabled; other options take precedence"
msgstr ""
-#: toplev.c:1965
+#: toplev.c:2029
#, gcc-internal-format
msgid "-fstack-protector not supported for this target"
msgstr ""
-#: toplev.c:1978
+#: toplev.c:2042
#, gcc-internal-format
msgid "unwind tables currently require a frame pointer for correctness"
msgstr ""
-#: toplev.c:2205
+#: toplev.c:2269
#, gcc-internal-format
msgid "error writing to %s: %m"
msgstr ""
-#: toplev.c:2207 java/jcf-parse.c:1769
+#: toplev.c:2271 java/jcf-parse.c:1769
#, gcc-internal-format
msgid "error closing %s: %m"
msgstr ""
-#: tree-cfg.c:1535 tree-cfg.c:2209
+#: tree-cfg.c:1535 tree-cfg.c:2214
#, gcc-internal-format
msgid "%Hwill never be executed"
msgstr ""
-#: tree-cfg.c:2843
+#: tree-cfg.c:2848
#, gcc-internal-format
msgid "SSA name in freelist but still referenced"
msgstr ""
-#: tree-cfg.c:2852
+#: tree-cfg.c:2857
#, gcc-internal-format
msgid "Indirect reference's operand is not a register or a constant."
msgstr ""
-#: tree-cfg.c:2861
+#: tree-cfg.c:2866
#, gcc-internal-format
msgid "ASSERT_EXPR with an always-false condition"
msgstr ""
-#: tree-cfg.c:2867
+#: tree-cfg.c:2872
#, gcc-internal-format
msgid "MODIFY_EXPR not expected while having tuples."
msgstr ""
-#: tree-cfg.c:2888
+#: tree-cfg.c:2893
#, gcc-internal-format
msgid "constant not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2893
+#: tree-cfg.c:2898
#, gcc-internal-format
msgid "side effects not recomputed when ADDR_EXPR changed"
msgstr ""
-#: tree-cfg.c:2911 tree-ssa.c:497
+#: tree-cfg.c:2916 tree-ssa.c:497
#, gcc-internal-format
msgid "address taken, but ADDRESSABLE bit not set"
msgstr ""
-#: tree-cfg.c:2916
+#: tree-cfg.c:2921
#, gcc-internal-format
msgid "DECL_GIMPLE_REG_P set on a variable with address taken"
msgstr ""
-#: tree-cfg.c:2927
+#: tree-cfg.c:2932
#, gcc-internal-format
msgid "non-integral used in condition"
msgstr ""
-#: tree-cfg.c:2932
+#: tree-cfg.c:2937
#, gcc-internal-format
msgid "invalid conditional operand"
msgstr ""
-#: tree-cfg.c:2979
+#: tree-cfg.c:2984
#, gcc-internal-format
msgid "invalid position or size operand to BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2986
+#: tree-cfg.c:2991
#, gcc-internal-format
msgid ""
"integral result type precision does not match field size of BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:2994
+#: tree-cfg.c:2999
#, gcc-internal-format
msgid ""
"mode precision of non-integral result does not match field size of "
"BIT_FIELD_REF"
msgstr ""
-#: tree-cfg.c:3005
+#: tree-cfg.c:3010
#, gcc-internal-format
msgid "invalid reference prefix"
msgstr ""
-#: tree-cfg.c:3016
+#: tree-cfg.c:3021
#, gcc-internal-format
msgid "invalid operand to plus/minus, type is a pointer"
msgstr ""
-#: tree-cfg.c:3027
+#: tree-cfg.c:3032
#, gcc-internal-format
msgid "invalid operand to pointer plus, first operand is not a pointer"
msgstr ""
-#: tree-cfg.c:3035
+#: tree-cfg.c:3040
#, gcc-internal-format
msgid ""
"invalid operand to pointer plus, second operand is not an integer with type "
"of sizetype."
msgstr ""
-#: tree-cfg.c:3106
+#: tree-cfg.c:3111
#, gcc-internal-format
msgid "invalid expression for min lvalue"
msgstr ""
-#: tree-cfg.c:3117
+#: tree-cfg.c:3122
#, gcc-internal-format
msgid "invalid operand in indirect reference"
msgstr ""
-#: tree-cfg.c:3124
+#: tree-cfg.c:3129
#, gcc-internal-format
msgid "type mismatch in indirect reference"
msgstr ""
-#: tree-cfg.c:3152
+#: tree-cfg.c:3158
#, gcc-internal-format
msgid "invalid operands to array reference"
msgstr ""
-#: tree-cfg.c:3163
+#: tree-cfg.c:3169
#, gcc-internal-format
msgid "type mismatch in array reference"
msgstr ""
-#: tree-cfg.c:3172
+#: tree-cfg.c:3178
#, gcc-internal-format
msgid "type mismatch in array range reference"
msgstr ""
-#: tree-cfg.c:3183
+#: tree-cfg.c:3189
#, gcc-internal-format
msgid "type mismatch in real/imagpart reference"
msgstr ""
-#: tree-cfg.c:3193
+#: tree-cfg.c:3199
#, gcc-internal-format
msgid "type mismatch in component reference"
msgstr ""
-#: tree-cfg.c:3255
+#: tree-cfg.c:3262
#, gcc-internal-format
msgid "non-function in gimple call"
msgstr ""
-#: tree-cfg.c:3262
+#: tree-cfg.c:3269
#, gcc-internal-format
msgid "invalid LHS in gimple call"
msgstr ""
-#: tree-cfg.c:3278
+#: tree-cfg.c:3285
#, gcc-internal-format
msgid "invalid conversion in gimple call"
msgstr ""
-#: tree-cfg.c:3303
+#: tree-cfg.c:3310
#, gcc-internal-format
msgid "invalid operands in gimple comparison"
msgstr ""
-#: tree-cfg.c:3321
+#: tree-cfg.c:3328
#, gcc-internal-format
msgid "type mismatch in comparison expression"
msgstr ""
-#: tree-cfg.c:3347
+#: tree-cfg.c:3354
#, gcc-internal-format
msgid "non-register as LHS of unary operation"
msgstr ""
-#: tree-cfg.c:3353
+#: tree-cfg.c:3360
#, gcc-internal-format
msgid "invalid operand in unary operation"
msgstr ""
-#: tree-cfg.c:3388
+#: tree-cfg.c:3395
#, gcc-internal-format
msgid "invalid types in nop conversion"
msgstr ""
-#: tree-cfg.c:3402
+#: tree-cfg.c:3409
#, gcc-internal-format
msgid "invalid types in fixed-point conversion"
msgstr ""
-#: tree-cfg.c:3415
+#: tree-cfg.c:3422
#, gcc-internal-format
msgid "invalid types in conversion to floating point"
msgstr ""
-#: tree-cfg.c:3428
+#: tree-cfg.c:3435
#, gcc-internal-format
msgid "invalid types in conversion to integer"
msgstr ""
-#: tree-cfg.c:3463
+#: tree-cfg.c:3470
#, gcc-internal-format
msgid "non-trivial conversion in unary operation"
msgstr ""
-#: tree-cfg.c:3490
+#: tree-cfg.c:3497
#, gcc-internal-format
msgid "non-register as LHS of binary operation"
msgstr ""
-#: tree-cfg.c:3497
+#: tree-cfg.c:3504
#, gcc-internal-format
msgid "invalid operands in binary operation"
msgstr ""
-#: tree-cfg.c:3512
+#: tree-cfg.c:3519
#, gcc-internal-format
msgid "type mismatch in complex expression"
msgstr ""
-#: tree-cfg.c:3541
+#: tree-cfg.c:3548
#, gcc-internal-format
msgid "type mismatch in shift expression"
msgstr ""
-#: tree-cfg.c:3562
+#: tree-cfg.c:3570
#, gcc-internal-format
msgid "type mismatch in vector shift expression"
msgstr ""
#: tree-cfg.c:3583
#, gcc-internal-format
+msgid "non-element sized vector shift of floating point vector"
+msgstr ""
+
+#: tree-cfg.c:3601
+#, gcc-internal-format
msgid "invalid non-vector operands to vector valued plus"
msgstr ""
-#: tree-cfg.c:3607
+#: tree-cfg.c:3625
#, gcc-internal-format
msgid "invalid (pointer) operands to plus/minus"
msgstr ""
-#: tree-cfg.c:3622
+#: tree-cfg.c:3640
#, gcc-internal-format
msgid "type mismatch in pointer plus expression"
msgstr ""
-#: tree-cfg.c:3645
+#: tree-cfg.c:3663
#, gcc-internal-format
msgid "type mismatch in binary truth expression"
msgstr ""
-#: tree-cfg.c:3713
+#: tree-cfg.c:3731
#, gcc-internal-format
msgid "type mismatch in binary expression"
msgstr ""
-#: tree-cfg.c:3738
+#: tree-cfg.c:3756
#, gcc-internal-format
msgid "non-trivial conversion at assignment"
msgstr ""
-#: tree-cfg.c:3755
+#: tree-cfg.c:3773
#, gcc-internal-format
msgid "invalid operand in unary expression"
msgstr ""
-#: tree-cfg.c:3762
+#: tree-cfg.c:3780
#, gcc-internal-format
msgid "type mismatch in address expression"
msgstr ""
-#: tree-cfg.c:3786 tree-cfg.c:3812
+#: tree-cfg.c:3804 tree-cfg.c:3830
#, gcc-internal-format
msgid "invalid rhs for gimple memory store"
msgstr ""
-#: tree-cfg.c:3878
+#: tree-cfg.c:3896
#, gcc-internal-format
msgid "invalid operand in return statement"
msgstr ""
-#: tree-cfg.c:3890
+#: tree-cfg.c:3908
#, gcc-internal-format
msgid "invalid conversion in return statement"
msgstr ""
-#: tree-cfg.c:3914
+#: tree-cfg.c:3932
#, gcc-internal-format
msgid "goto destination is neither a label nor a pointer"
msgstr ""
-#: tree-cfg.c:3929
+#: tree-cfg.c:3947
#, gcc-internal-format
msgid "invalid operand to switch statement"
msgstr ""
-#: tree-cfg.c:3949
+#: tree-cfg.c:3967
#, gcc-internal-format
msgid "Invalid PHI result"
msgstr ""
-#: tree-cfg.c:3961
+#: tree-cfg.c:3979
#, gcc-internal-format
msgid "Invalid PHI argument"
msgstr ""
-#: tree-cfg.c:3967
+#: tree-cfg.c:3985
#, gcc-internal-format
msgid "Incompatible types in PHI argument %u"
msgstr ""
-#: tree-cfg.c:4092
+#: tree-cfg.c:4110
#, gcc-internal-format
msgid "verify_gimple failed"
msgstr ""
-#: tree-cfg.c:4126
+#: tree-cfg.c:4144
#, gcc-internal-format
msgid "invalid function in call statement"
msgstr ""
-#: tree-cfg.c:4137
+#: tree-cfg.c:4155
#, gcc-internal-format
msgid "invalid pure const state for function"
msgstr ""
-#: tree-cfg.c:4147 tree-ssa.c:669 tree-ssa.c:678
+#: tree-cfg.c:4165 tree-ssa.c:669 tree-ssa.c:678
#, gcc-internal-format
msgid "in statement"
msgstr ""
-#: tree-cfg.c:4164
+#: tree-cfg.c:4182
#, gcc-internal-format
msgid "statement marked for throw, but doesn%'t"
msgstr ""
-#: tree-cfg.c:4169
+#: tree-cfg.c:4187
#, gcc-internal-format
msgid "statement marked for throw in middle of block"
msgstr ""
-#: tree-cfg.c:4241
+#: tree-cfg.c:4259
#, gcc-internal-format
msgid "Dead STMT in EH table"
msgstr ""
-#: tree-cfg.c:4279
+#: tree-cfg.c:4297
#, gcc-internal-format
msgid "gimple_bb (phi) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4290
+#: tree-cfg.c:4308
#, gcc-internal-format
msgid "missing PHI def"
msgstr ""
-#: tree-cfg.c:4301
+#: tree-cfg.c:4319
#, gcc-internal-format
msgid "PHI argument is not a GIMPLE value"
msgstr ""
-#: tree-cfg.c:4310 tree-cfg.c:4355
+#: tree-cfg.c:4328 tree-cfg.c:4389
#, gcc-internal-format
msgid "incorrect sharing of tree nodes"
msgstr ""
-#: tree-cfg.c:4325
+#: tree-cfg.c:4351
#, gcc-internal-format
msgid "invalid GIMPLE statement"
msgstr ""
-#: tree-cfg.c:4334
+#: tree-cfg.c:4360
#, gcc-internal-format
msgid "gimple_bb (stmt) is set to a wrong basic block"
msgstr ""
-#: tree-cfg.c:4346
+#: tree-cfg.c:4372
#, gcc-internal-format
msgid "incorrect entry in label_to_block_map.\n"
msgstr ""
-#: tree-cfg.c:4371
+#: tree-cfg.c:4405
#, gcc-internal-format
msgid "verify_stmts failed"
msgstr ""
-#: tree-cfg.c:4394
+#: tree-cfg.c:4428
#, gcc-internal-format
msgid "ENTRY_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4400
+#: tree-cfg.c:4434
#, gcc-internal-format
msgid "EXIT_BLOCK has IL associated with it"
msgstr ""
-#: tree-cfg.c:4407
+#: tree-cfg.c:4441
#, gcc-internal-format
msgid "fallthru to exit from bb %d"
msgstr ""
-#: tree-cfg.c:4431
+#: tree-cfg.c:4465
#, gcc-internal-format
msgid "nonlocal label "
msgstr ""
-#: tree-cfg.c:4440 tree-cfg.c:4449 tree-cfg.c:4474
+#: tree-cfg.c:4474 tree-cfg.c:4483 tree-cfg.c:4508
#, gcc-internal-format
msgid "label "
msgstr ""
-#: tree-cfg.c:4464
+#: tree-cfg.c:4498
#, gcc-internal-format
msgid "control flow in the middle of basic block %d"
msgstr ""
-#: tree-cfg.c:4494
+#: tree-cfg.c:4528
#, gcc-internal-format
msgid "fallthru edge after a control statement in bb %d"
msgstr ""
-#: tree-cfg.c:4507
+#: tree-cfg.c:4541
#, gcc-internal-format
msgid "true/false edge after a non-GIMPLE_COND in bb %d"
msgstr ""
-#: tree-cfg.c:4530 tree-cfg.c:4552 tree-cfg.c:4565 tree-cfg.c:4634
+#: tree-cfg.c:4564 tree-cfg.c:4586 tree-cfg.c:4599 tree-cfg.c:4668
#, gcc-internal-format
msgid "wrong outgoing edge flags at end of bb %d"
msgstr ""
-#: tree-cfg.c:4540
+#: tree-cfg.c:4574
#, gcc-internal-format
msgid "explicit goto at end of bb %d"
msgstr ""
-#: tree-cfg.c:4570
+#: tree-cfg.c:4604
#, gcc-internal-format
msgid "return edge does not point to exit in bb %d"
msgstr ""
-#: tree-cfg.c:4600
+#: tree-cfg.c:4634
#, gcc-internal-format
msgid "found default case not at the start of case vector"
msgstr ""
-#: tree-cfg.c:4608
+#: tree-cfg.c:4642
#, gcc-internal-format
msgid "case labels not sorted: "
msgstr ""
-#: tree-cfg.c:4625
+#: tree-cfg.c:4659
#, gcc-internal-format
msgid "extra outgoing edge %d->%d"
msgstr ""
-#: tree-cfg.c:4648
+#: tree-cfg.c:4682
#, gcc-internal-format
msgid "missing edge %i->%i"
msgstr ""
-#: tree-cfg.c:7098
+#: tree-cfg.c:7156
#, gcc-internal-format
msgid "%H%<noreturn%> function does return"
msgstr ""
-#: tree-cfg.c:7118
+#: tree-cfg.c:7176
#, gcc-internal-format
msgid "control reaches end of non-void function"
msgstr ""
-#: tree-cfg.c:7180
+#: tree-cfg.c:7238
#, gcc-internal-format
msgid "%Jfunction might be possible candidate for attribute %<noreturn%>"
msgstr ""
@@ -24963,116 +25376,116 @@ msgstr ""
msgid "ignoring unknown option %q.*s in %<-fdump-%s%>"
msgstr ""
-#: tree-eh.c:2044
+#: tree-eh.c:2080
#, gcc-internal-format
msgid "EH edge %i->%i is missing"
msgstr ""
-#: tree-eh.c:2049
+#: tree-eh.c:2085
#, gcc-internal-format
msgid "EH edge %i->%i miss EH flag"
msgstr ""
#. ??? might not be mistake.
-#: tree-eh.c:2055
+#: tree-eh.c:2091
#, gcc-internal-format
msgid "EH edge %i->%i has duplicated regions"
msgstr ""
-#: tree-eh.c:2091
+#: tree-eh.c:2127
#, gcc-internal-format
msgid "BB %i can not throw but has EH edges"
msgstr ""
-#: tree-eh.c:2098
+#: tree-eh.c:2134
#, gcc-internal-format
msgid "BB %i last statement has incorrectly set region"
msgstr ""
-#: tree-eh.c:2110
+#: tree-eh.c:2146
#, gcc-internal-format
msgid "unnecessary EH edge %i->%i"
msgstr ""
-#: tree-inline.c:2447
+#: tree-inline.c:2474
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses variable sized variables"
msgstr ""
-#: tree-inline.c:2481
+#: tree-inline.c:2508
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses alloca (override using "
"the always_inline attribute)"
msgstr ""
-#: tree-inline.c:2495
+#: tree-inline.c:2522
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses setjmp"
msgstr ""
-#: tree-inline.c:2509
+#: tree-inline.c:2536
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses variable argument lists"
msgstr ""
-#: tree-inline.c:2521
+#: tree-inline.c:2548
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses setjmp-longjmp exception "
"handling"
msgstr ""
-#: tree-inline.c:2529
+#: tree-inline.c:2556
#, gcc-internal-format
msgid "function %q+F can never be inlined because it uses non-local goto"
msgstr ""
-#: tree-inline.c:2541
+#: tree-inline.c:2568
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses __builtin_return or "
"__builtin_apply_args"
msgstr ""
-#: tree-inline.c:2561
+#: tree-inline.c:2588
#, gcc-internal-format
msgid "function %q+F can never be inlined because it contains a computed goto"
msgstr ""
-#: tree-inline.c:2576
+#: tree-inline.c:2603
#, gcc-internal-format
msgid "function %q+F can never be inlined because it receives a non-local goto"
msgstr ""
-#: tree-inline.c:2602
+#: tree-inline.c:2629
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it saves address of local label "
"in a static variable"
msgstr ""
-#: tree-inline.c:2693
+#: tree-inline.c:2720
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it is suppressed using -fno-inline"
msgstr ""
-#: tree-inline.c:2707
+#: tree-inline.c:2734
#, gcc-internal-format
msgid ""
"function %q+F can never be inlined because it uses attributes conflicting "
"with inlining"
msgstr ""
-#: tree-inline.c:3255 tree-inline.c:3266
+#: tree-inline.c:3259 tree-inline.c:3270
#, gcc-internal-format
msgid "inlining failed in call to %q+F: %s"
msgstr ""
-#: tree-inline.c:3257 tree-inline.c:3268
+#: tree-inline.c:3261 tree-inline.c:3272
#, gcc-internal-format
msgid "called from here"
msgstr ""
@@ -25084,71 +25497,51 @@ msgstr ""
#: tree-mudflap.c:1064
#, gcc-internal-format
-msgid "mudflap cannot track %qs in stub function"
+msgid "mudflap cannot track %qE in stub function"
msgstr ""
#: tree-mudflap.c:1308
#, gcc-internal-format
-msgid "mudflap cannot track unknown size extern %qs"
+msgid "mudflap cannot track unknown size extern %qE"
msgstr ""
-#: tree-nomudflap.c:50
+#: tree-nomudflap.c:49
#, gcc-internal-format
msgid "mudflap: this language is not supported"
msgstr ""
-#: tree-optimize.c:462
+#: tree-optimize.c:419
#, gcc-internal-format
msgid "size of return value of %q+D is %u bytes"
msgstr ""
-#: tree-optimize.c:465
+#: tree-optimize.c:422
#, gcc-internal-format
msgid "size of return value of %q+D is larger than %wd bytes"
msgstr ""
-#: tree-outof-ssa.c:678 tree-outof-ssa.c:740 tree-ssa-coalesce.c:934
-#: tree-ssa-coalesce.c:949 tree-ssa-coalesce.c:1168 tree-ssa-live.c:1187
+#: tree-outof-ssa.c:693 tree-outof-ssa.c:750 tree-ssa-coalesce.c:956
+#: tree-ssa-coalesce.c:971 tree-ssa-coalesce.c:1190 tree-ssa-live.c:1130
#, gcc-internal-format
msgid "SSA corruption"
msgstr ""
-#: tree-outof-ssa.c:1310
-#, gcc-internal-format
-msgid " Pending stmts not issued on PRED edge (%d, %d)\n"
-msgstr ""
-
-#: tree-outof-ssa.c:1316
-#, gcc-internal-format
-msgid " Pending stmts not issued on SUCC edge (%d, %d)\n"
-msgstr ""
-
-#: tree-outof-ssa.c:1323
-#, gcc-internal-format
-msgid " Pending stmts not issued on ENTRY edge (%d, %d)\n"
-msgstr ""
-
-#: tree-outof-ssa.c:1329
-#, gcc-internal-format
-msgid " Pending stmts not issued on EXIT edge (%d, %d)\n"
-msgstr ""
-
#: tree-profile.c:388
#, gcc-internal-format
msgid "unimplemented functionality"
msgstr ""
-#: tree-ssa-structalias.c:4710
+#: tree-ssa-structalias.c:4708
#, gcc-internal-format
msgid "initialized from %qE"
msgstr ""
-#: tree-ssa-structalias.c:4714
+#: tree-ssa-structalias.c:4712
#, gcc-internal-format
msgid "initialized from here"
msgstr ""
-#: tree-ssa-structalias.c:4763
+#: tree-ssa-structalias.c:4761
#, gcc-internal-format
msgid "dereferencing pointer %qD does break strict-aliasing rules"
msgstr ""
@@ -25288,170 +25681,160 @@ msgstr ""
msgid "verify_ssa failed"
msgstr ""
-#: tree-ssa.c:1266
+#: tree-ssa.c:1271
#, gcc-internal-format
msgid "%J%qD was declared here"
msgstr ""
-#: tree-ssa.c:1333
+#: tree-ssa.c:1338
#, gcc-internal-format
msgid "%qD is used uninitialized in this function"
msgstr ""
-#: tree-ssa.c:1336 tree-ssa.c:1375
+#: tree-ssa.c:1341 tree-ssa.c:1380
#, gcc-internal-format
msgid "%qD may be used uninitialized in this function"
msgstr ""
-#: tree-vrp.c:5017
+#: tree-vrp.c:5033
#, gcc-internal-format
msgid "array subscript is outside array bounds"
msgstr ""
-#: tree-vrp.c:5032
+#: tree-vrp.c:5048
#, gcc-internal-format
msgid "array subscript is above array bounds"
msgstr ""
-#: tree-vrp.c:5039
+#: tree-vrp.c:5055
#, gcc-internal-format
msgid "array subscript is below array bounds"
msgstr ""
-#: tree-vrp.c:5689
+#: tree-vrp.c:5705
#, gcc-internal-format
msgid ""
"assuming signed overflow does not occur when simplifying conditional to "
"constant"
msgstr ""
-#: tree-vrp.c:5695
+#: tree-vrp.c:5711
#, gcc-internal-format
msgid "assuming signed overflow does not occur when simplifying conditional"
msgstr ""
-#: tree-vrp.c:5732
+#: tree-vrp.c:5748
#, gcc-internal-format
msgid "comparison always false due to limited range of data type"
msgstr ""
-#: tree-vrp.c:5735
+#: tree-vrp.c:5751
#, gcc-internal-format
msgid "comparison always true due to limited range of data type"
msgstr ""
-#: tree.c:3698
+#: tree.c:3697
#, gcc-internal-format
msgid "ignoring attributes applied to %qT after definition"
msgstr ""
-#: tree.c:3981
+#: tree.c:3980
#, gcc-internal-format
msgid "%q+D already declared with dllexport attribute: dllimport ignored"
msgstr ""
-#: tree.c:3993
+#: tree.c:3992
#, gcc-internal-format
msgid ""
"%q+D redeclared without dllimport attribute after being referenced with dll "
"linkage"
msgstr ""
-#: tree.c:4008
+#: tree.c:4007
#, gcc-internal-format
msgid "%q+D redeclared without dllimport attribute: previous dllimport ignored"
msgstr ""
-#: tree.c:4067 tree.c:4079 tree.c:4089 config/darwin.c:1437
-#: config/arm/arm.c:3290 config/arm/arm.c:3318 config/avr/avr.c:4789
-#: config/h8300/h8300.c:5283 config/h8300/h8300.c:5307 config/i386/i386.c:4288
-#: config/i386/i386.c:26852 config/ia64/ia64.c:621
-#: config/m68hc11/m68hc11.c:1118 config/rs6000/rs6000.c:20737
-#: config/sh/symbian.c:408 config/sh/symbian.c:415
-#, gcc-internal-format
-msgid "%qs attribute ignored"
-msgstr ""
-
-#: tree.c:4105
+#: tree.c:4104
#, gcc-internal-format
msgid "inline function %q+D declared as dllimport: attribute ignored"
msgstr ""
-#: tree.c:4113
+#: tree.c:4112
#, gcc-internal-format
msgid "function %q+D definition is marked dllimport"
msgstr ""
-#: tree.c:4121 config/sh/symbian.c:430
+#: tree.c:4120 config/sh/symbian.c:430
#, gcc-internal-format
msgid "variable %q+D definition is marked dllimport"
msgstr ""
-#: tree.c:4144 config/sh/symbian.c:505
+#: tree.c:4143 config/sh/symbian.c:505
#, gcc-internal-format
-msgid "external linkage required for symbol %q+D because of %qs attribute"
+msgid "external linkage required for symbol %q+D because of %qE attribute"
msgstr ""
-#: tree.c:4158
+#: tree.c:4157
#, gcc-internal-format
msgid ""
-"%qs implies default visibility, but %qD has already been declared with a "
+"%qE implies default visibility, but %qD has already been declared with a "
"different visibility"
msgstr ""
-#: tree.c:5740
+#: tree.c:5739
#, gcc-internal-format
msgid "arrays of functions are not meaningful"
msgstr ""
-#: tree.c:5891
+#: tree.c:5890
#, gcc-internal-format
msgid "function return type cannot be function"
msgstr ""
-#: tree.c:7104 tree.c:7189 tree.c:7250
+#: tree.c:7103 tree.c:7188 tree.c:7249
#, gcc-internal-format
msgid "tree check: %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:7141
+#: tree.c:7140
#, gcc-internal-format
msgid "tree check: expected none of %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:7154
+#: tree.c:7153
#, gcc-internal-format
msgid "tree check: expected class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:7203
+#: tree.c:7202
#, gcc-internal-format
msgid "tree check: did not expect class %qs, have %qs (%s) in %s, at %s:%d"
msgstr ""
-#: tree.c:7216
+#: tree.c:7215
#, gcc-internal-format
msgid "tree check: expected omp_clause %s, have %s in %s, at %s:%d"
msgstr ""
-#: tree.c:7276
+#: tree.c:7275
#, gcc-internal-format
msgid ""
"tree check: expected tree that contains %qs structure, have %qs in %s, at %s:"
"%d"
msgstr ""
-#: tree.c:7290
+#: tree.c:7289
#, gcc-internal-format
msgid "tree check: accessed elt %d of tree_vec with %d elts in %s, at %s:%d"
msgstr ""
-#: tree.c:7303
+#: tree.c:7302
#, gcc-internal-format
msgid "tree check: accessed operand %d of %s with %d operands in %s, at %s:%d"
msgstr ""
-#: tree.c:7316
+#: tree.c:7315
#, gcc-internal-format
msgid ""
"tree check: accessed operand %d of omp_clause %s with %d operands in %s, at %"
@@ -25489,150 +25872,150 @@ msgid ""
"count (%d)"
msgstr ""
-#: varasm.c:575
+#: varasm.c:574
#, gcc-internal-format
msgid "%+D causes a section type conflict"
msgstr ""
-#: varasm.c:1125
+#: varasm.c:1124
#, gcc-internal-format
msgid ""
"alignment of %q+D is greater than maximum object file alignment. Using %d"
msgstr ""
-#: varasm.c:1351 varasm.c:1359
+#: varasm.c:1350 varasm.c:1358
#, gcc-internal-format
msgid "register name not specified for %q+D"
msgstr ""
-#: varasm.c:1361
+#: varasm.c:1360
#, gcc-internal-format
msgid "invalid register name for %q+D"
msgstr ""
-#: varasm.c:1363
+#: varasm.c:1362
#, gcc-internal-format
msgid "data type of %q+D isn%'t suitable for a register"
msgstr ""
-#: varasm.c:1366
+#: varasm.c:1365
#, gcc-internal-format
msgid "register specified for %q+D isn%'t suitable for data type"
msgstr ""
-#: varasm.c:1376
+#: varasm.c:1375
#, gcc-internal-format
msgid "global register variable has initial value"
msgstr ""
-#: varasm.c:1380
+#: varasm.c:1379
#, gcc-internal-format
msgid "optimization may eliminate reads and/or writes to register variables"
msgstr ""
-#: varasm.c:1418
+#: varasm.c:1417
#, gcc-internal-format
msgid "register name given for non-register variable %q+D"
msgstr ""
-#: varasm.c:1487
+#: varasm.c:1486
#, gcc-internal-format
msgid "global destructors not supported on this target"
msgstr ""
-#: varasm.c:1553
+#: varasm.c:1552
#, gcc-internal-format
msgid "global constructors not supported on this target"
msgstr ""
-#: varasm.c:1939
+#: varasm.c:1938
#, gcc-internal-format
msgid "thread-local COMMON data not implemented"
msgstr ""
-#: varasm.c:1968
+#: varasm.c:1967
#, gcc-internal-format
msgid ""
"requested alignment for %q+D is greater than implemented alignment of %wu"
msgstr ""
-#: varasm.c:4491
+#: varasm.c:4486
#, gcc-internal-format
msgid "initializer for integer/fixed-point value is too complicated"
msgstr ""
-#: varasm.c:4496
+#: varasm.c:4491
#, gcc-internal-format
msgid "initializer for floating value is not a floating constant"
msgstr ""
-#: varasm.c:4769
+#: varasm.c:4764
#, gcc-internal-format
-msgid "invalid initial value for member %qs"
+msgid "invalid initial value for member %qE"
msgstr ""
-#: varasm.c:4965 varasm.c:5009
+#: varasm.c:4960 varasm.c:5004
#, gcc-internal-format
msgid "weak declaration of %q+D must precede definition"
msgstr ""
-#: varasm.c:4973
+#: varasm.c:4968
#, gcc-internal-format
msgid ""
"weak declaration of %q+D after first use results in unspecified behavior"
msgstr ""
-#: varasm.c:5007
+#: varasm.c:5002
#, gcc-internal-format
msgid "weak declaration of %q+D must be public"
msgstr ""
-#: varasm.c:5011
+#: varasm.c:5006
#, gcc-internal-format
msgid "weak declaration of %q+D not supported"
msgstr ""
-#: varasm.c:5037
+#: varasm.c:5032
#, gcc-internal-format
msgid "only weak aliases are supported in this configuration"
msgstr ""
-#: varasm.c:5272
+#: varasm.c:5266
#, gcc-internal-format
msgid "%Jweakref is not supported in this configuration"
msgstr ""
-#: varasm.c:5353
+#: varasm.c:5347
#, gcc-internal-format
-msgid "%q+D aliased to undefined symbol %qs"
+msgid "%q+D aliased to undefined symbol %qE"
msgstr ""
-#: varasm.c:5358
+#: varasm.c:5352
#, gcc-internal-format
-msgid "%q+D aliased to external symbol %qs"
+msgid "%q+D aliased to external symbol %qE"
msgstr ""
-#: varasm.c:5397
+#: varasm.c:5391
#, gcc-internal-format
msgid "weakref %q+D ultimately targets itself"
msgstr ""
-#: varasm.c:5406
+#: varasm.c:5400
#, gcc-internal-format
msgid "weakref %q+D must have static linkage"
msgstr ""
-#: varasm.c:5412
+#: varasm.c:5406
#, gcc-internal-format
msgid "%Jalias definitions not supported in this configuration"
msgstr ""
-#: varasm.c:5417
+#: varasm.c:5411
#, gcc-internal-format
msgid "%Jonly weak aliases are supported in this configuration"
msgstr ""
-#: varasm.c:5477
+#: varasm.c:5471
#, gcc-internal-format
msgid "visibility attribute not supported in this configuration; ignored"
msgstr ""
@@ -25647,7 +26030,7 @@ msgstr ""
msgid "underflowed virtual array %s in %s, at %s:%d"
msgstr ""
-#: vec.c:381
+#: vec.c:382
#, gcc-internal-format
msgid "vector %s %s domain error, in %s at %s:%u"
msgstr ""
@@ -25722,12 +26105,12 @@ msgstr ""
#: config/darwin.c:1410
#, gcc-internal-format
msgid ""
-"%<%s%> 2.95 vtable-compatibility attribute applies only when compiling a kext"
+"%qE 2.95 vtable-compatibility attribute applies only when compiling a kext"
msgstr ""
#: config/darwin.c:1417
#, gcc-internal-format
-msgid "%<%s%> 2.95 vtable-compatibility attribute applies only to C++ classes"
+msgid "%qE 2.95 vtable-compatibility attribute applies only to C++ classes"
msgstr ""
#: config/darwin.c:1542
@@ -25823,7 +26206,7 @@ msgstr ""
msgid "profiler support for VxWorks"
msgstr ""
-#: config/alpha/alpha.c:233 config/rs6000/rs6000.c:2188
+#: config/alpha/alpha.c:233 config/rs6000/rs6000.c:2194
#, gcc-internal-format
msgid "bad value %qs for -mtls-size switch"
msgstr ""
@@ -25898,7 +26281,7 @@ msgstr ""
msgid "bad value %qs for -mmemory-latency"
msgstr ""
-#: config/alpha/alpha.c:6563 config/alpha/alpha.c:6566 config/s390/s390.c:8715
+#: config/alpha/alpha.c:6578 config/alpha/alpha.c:6581 config/s390/s390.c:8715
#: config/s390/s390.c:8718
#, gcc-internal-format
msgid "bad builtin fcode"
@@ -25906,209 +26289,215 @@ msgstr ""
#: config/arc/arc.c:392
#, gcc-internal-format
-msgid "argument of %qs attribute is not a string constant"
+msgid "argument of %qE attribute is not a string constant"
msgstr ""
#: config/arc/arc.c:400
#, gcc-internal-format
-msgid "argument of %qs attribute is not \"ilink1\" or \"ilink2\""
+msgid "argument of %qE attribute is not \"ilink1\" or \"ilink2\""
msgstr ""
-#: config/arm/arm.c:1178
+#: config/arm/arm.c:1183
#, gcc-internal-format
msgid "switch -mcpu=%s conflicts with -march= switch"
msgstr ""
-#: config/arm/arm.c:1188 config/rs6000/rs6000.c:1588 config/sparc/sparc.c:764
+#: config/arm/arm.c:1193 config/rs6000/rs6000.c:1592 config/sparc/sparc.c:768
#, gcc-internal-format
msgid "bad value (%s) for %s switch"
msgstr ""
-#: config/arm/arm.c:1301
+#: config/arm/arm.c:1306
#, gcc-internal-format
msgid "invalid ABI option: -mabi=%s"
msgstr ""
-#: config/arm/arm.c:1309
+#: config/arm/arm.c:1314
#, gcc-internal-format
msgid "target CPU does not support ARM mode"
msgstr ""
-#: config/arm/arm.c:1315
+#: config/arm/arm.c:1320
#, gcc-internal-format
msgid "target CPU does not support interworking"
msgstr ""
-#: config/arm/arm.c:1321
+#: config/arm/arm.c:1326
#, gcc-internal-format
msgid "target CPU does not support THUMB instructions"
msgstr ""
-#: config/arm/arm.c:1339
+#: config/arm/arm.c:1344
#, gcc-internal-format
msgid ""
"enabling backtrace support is only meaningful when compiling for the Thumb"
msgstr ""
-#: config/arm/arm.c:1342
+#: config/arm/arm.c:1347
#, gcc-internal-format
msgid ""
"enabling callee interworking support is only meaningful when compiling for "
"the Thumb"
msgstr ""
-#: config/arm/arm.c:1345
+#: config/arm/arm.c:1350
#, gcc-internal-format
msgid ""
"enabling caller interworking support is only meaningful when compiling for "
"the Thumb"
msgstr ""
-#: config/arm/arm.c:1349
+#: config/arm/arm.c:1354
#, gcc-internal-format
msgid "-mapcs-stack-check incompatible with -mno-apcs-frame"
msgstr ""
-#: config/arm/arm.c:1357
+#: config/arm/arm.c:1362
#, gcc-internal-format
msgid "-fpic and -mapcs-reent are incompatible"
msgstr ""
-#: config/arm/arm.c:1360
+#: config/arm/arm.c:1365
#, gcc-internal-format
msgid "APCS reentrant code not supported. Ignored"
msgstr ""
-#: config/arm/arm.c:1368
+#: config/arm/arm.c:1373
#, gcc-internal-format
msgid "-g with -mno-apcs-frame may not give sensible debugging"
msgstr ""
-#: config/arm/arm.c:1371
+#: config/arm/arm.c:1376
#, gcc-internal-format
msgid "passing floating point arguments in fp regs not yet supported"
msgstr ""
-#: config/arm/arm.c:1428
+#: config/arm/arm.c:1433
#, gcc-internal-format
msgid "iwmmxt requires an AAPCS compatible ABI for proper operation"
msgstr ""
-#: config/arm/arm.c:1431
+#: config/arm/arm.c:1436
#, gcc-internal-format
msgid "iwmmxt abi requires an iwmmxt capable cpu"
msgstr ""
-#: config/arm/arm.c:1441
+#: config/arm/arm.c:1446
#, gcc-internal-format
msgid "invalid floating point emulation option: -mfpe=%s"
msgstr ""
-#: config/arm/arm.c:1458
+#: config/arm/arm.c:1463
#, gcc-internal-format
msgid "invalid floating point option: -mfpu=%s"
msgstr ""
-#: config/arm/arm.c:1498
+#: config/arm/arm.c:1503
#, gcc-internal-format
msgid "invalid floating point abi: -mfloat-abi=%s"
msgstr ""
-#: config/arm/arm.c:1505
+#: config/arm/arm.c:1510
#, gcc-internal-format
msgid "-mfloat-abi=hard and VFP"
msgstr ""
-#: config/arm/arm.c:1511
+#: config/arm/arm.c:1514
+#, gcc-internal-format
+msgid "FPA is unsupported in the AAPCS"
+msgstr ""
+
+#: config/arm/arm.c:1520
#, gcc-internal-format
msgid "iWMMXt and hardware floating point"
msgstr ""
-#: config/arm/arm.c:1515
+#: config/arm/arm.c:1524
#, gcc-internal-format
msgid "Thumb-2 iWMMXt"
msgstr ""
-#: config/arm/arm.c:1538
+#: config/arm/arm.c:1547
#, gcc-internal-format
msgid "invalid thread pointer option: -mtp=%s"
msgstr ""
-#: config/arm/arm.c:1551
+#: config/arm/arm.c:1560
#, gcc-internal-format
msgid "can not use -mtp=cp15 with 16-bit Thumb"
msgstr ""
-#: config/arm/arm.c:1565
+#: config/arm/arm.c:1574
#, gcc-internal-format
msgid "structure size boundary can only be set to %s"
msgstr ""
-#: config/arm/arm.c:1571
+#: config/arm/arm.c:1580
#, gcc-internal-format
msgid "RTP PIC is incompatible with Thumb"
msgstr ""
-#: config/arm/arm.c:1580
+#: config/arm/arm.c:1589
#, gcc-internal-format
msgid "RTP PIC is incompatible with -msingle-pic-base"
msgstr ""
-#: config/arm/arm.c:1592
+#: config/arm/arm.c:1601
#, gcc-internal-format
msgid "-mpic-register= is useless without -fpic"
msgstr ""
-#: config/arm/arm.c:1601
+#: config/arm/arm.c:1610
#, gcc-internal-format
msgid "unable to use '%s' for PIC register"
msgstr ""
-#: config/arm/arm.c:3258 config/arm/arm.c:3276 config/avr/avr.c:4809
-#: config/avr/avr.c:4825 config/bfin/bfin.c:5228 config/h8300/h8300.c:5259
-#: config/i386/i386.c:4250 config/i386/i386.c:26797
-#: config/m68hc11/m68hc11.c:1155 config/m68k/m68k.c:780
-#: config/mcore/mcore.c:3034 config/mips/mips.c:1283 config/mips/mips.c:1285
-#: config/rs6000/rs6000.c:20663 config/sh/sh.c:8142 config/sh/sh.c:8160
-#: config/sh/sh.c:8189 config/sh/sh.c:8271 config/sh/sh.c:8294
-#: config/stormy16/stormy16.c:2221 config/v850/v850.c:2048
+#: config/arm/arm.c:3267 config/arm/arm.c:3285 config/avr/avr.c:4827
+#: config/avr/avr.c:4843 config/bfin/bfin.c:5270 config/bfin/bfin.c:5331
+#: config/bfin/bfin.c:5360 config/h8300/h8300.c:5259 config/i386/i386.c:4248
+#: config/i386/i386.c:26839 config/m68hc11/m68hc11.c:1147
+#: config/m68k/m68k.c:784 config/mcore/mcore.c:3034
+#: config/rs6000/rs6000.c:20670 config/sh/sh.c:8132 config/sh/sh.c:8150
+#: config/sh/sh.c:8179 config/sh/sh.c:8261 config/sh/sh.c:8284
+#: config/spu/spu.c:3726 config/stormy16/stormy16.c:2221
+#: config/v850/v850.c:2048
#, gcc-internal-format
-msgid "%qs attribute only applies to functions"
+msgid "%qE attribute only applies to functions"
msgstr ""
-#: config/arm/arm.c:14809
+#: config/arm/arm.c:14814
#, gcc-internal-format
msgid "unable to compute real location of stacked parameter"
msgstr ""
-#: config/arm/arm.c:16315
+#: config/arm/arm.c:16320
#, gcc-internal-format
msgid "argument must be a constant"
msgstr ""
#. @@@ better error message
-#: config/arm/arm.c:16623 config/arm/arm.c:16660
+#: config/arm/arm.c:16628 config/arm/arm.c:16665
#, gcc-internal-format
msgid "selector must be an immediate"
msgstr ""
#. @@@ better error message
-#: config/arm/arm.c:16703
+#: config/arm/arm.c:16708
#, gcc-internal-format
msgid "mask must be an immediate"
msgstr ""
-#: config/arm/arm.c:17364
+#: config/arm/arm.c:17369
#, gcc-internal-format
msgid "no low registers available for popping high registers"
msgstr ""
-#: config/arm/arm.c:17587
+#: config/arm/arm.c:17592
#, gcc-internal-format
msgid "interrupt Service Routines cannot be coded in Thumb mode"
msgstr ""
-#: config/arm/arm.c:19635
+#: config/arm/arm.c:19640
#, gcc-internal-format
msgid "the mangling of %<va_list%> has changed in GCC 4.4"
msgstr ""
@@ -26123,114 +26512,109 @@ msgstr ""
msgid "static variable %q+D is marked dllimport"
msgstr ""
-#: config/avr/avr.c:4611
+#: config/avr/avr.c:4629
#, gcc-internal-format
msgid "%qs appears to be a misspelled interrupt handler"
msgstr ""
-#: config/avr/avr.c:4620
+#: config/avr/avr.c:4638
#, gcc-internal-format
msgid "%qs appears to be a misspelled signal handler"
msgstr ""
-#: config/avr/avr.c:4782
+#: config/avr/avr.c:4800
#, gcc-internal-format
msgid "only initialized variables can be placed into program memory area"
msgstr ""
-#: config/avr/avr.c:4916
+#: config/avr/avr.c:4934
#, gcc-internal-format
msgid "only uninitialized variables can be placed in the .noinit section"
msgstr ""
-#: config/avr/avr.c:4930
+#: config/avr/avr.c:4948
#, gcc-internal-format
msgid "MCU %qs supported for assembler only"
msgstr ""
-#: config/avr/avr.h:752
+#: config/avr/avr.h:738
#, gcc-internal-format
msgid "trampolines not supported"
msgstr ""
-#: config/bfin/bfin.c:2479 config/m68k/m68k.c:497
+#: config/bfin/bfin.c:2458 config/m68k/m68k.c:501
#, gcc-internal-format
msgid "-mshared-library-id=%s is not between 0 and %d"
msgstr ""
-#: config/bfin/bfin.c:2499
+#: config/bfin/bfin.c:2478
#, gcc-internal-format
msgid "-mcpu=%s is not valid"
msgstr ""
-#: config/bfin/bfin.c:2535
+#: config/bfin/bfin.c:2514
#, gcc-internal-format
msgid "-mcpu=%s has invalid silicon revision"
msgstr ""
-#: config/bfin/bfin.c:2600
+#: config/bfin/bfin.c:2579
#, gcc-internal-format
msgid "-mshared-library-id= specified without -mid-shared-library"
msgstr ""
-#: config/bfin/bfin.c:2603
+#: config/bfin/bfin.c:2582
#, gcc-internal-format
msgid "Can't use multiple stack checking methods together."
msgstr ""
-#: config/bfin/bfin.c:2606
+#: config/bfin/bfin.c:2585
#, gcc-internal-format
msgid "ID shared libraries and FD-PIC mode can't be used together."
msgstr ""
-#: config/bfin/bfin.c:2611 config/m68k/m68k.c:605
+#: config/bfin/bfin.c:2590 config/m68k/m68k.c:609
#, gcc-internal-format
msgid "cannot specify both -msep-data and -mid-shared-library"
msgstr ""
-#: config/bfin/bfin.c:2631
+#: config/bfin/bfin.c:2610
#, gcc-internal-format
msgid "-mmulticore can only be used with BF561"
msgstr ""
-#: config/bfin/bfin.c:2634
+#: config/bfin/bfin.c:2613
#, gcc-internal-format
msgid "-mcorea should be used with -mmulticore"
msgstr ""
-#: config/bfin/bfin.c:2637
+#: config/bfin/bfin.c:2616
#, gcc-internal-format
msgid "-mcoreb should be used with -mmulticore"
msgstr ""
-#: config/bfin/bfin.c:2640
+#: config/bfin/bfin.c:2619
#, gcc-internal-format
msgid "-mcorea and -mcoreb can't be used together"
msgstr ""
-#: config/bfin/bfin.c:5233
+#: config/bfin/bfin.c:5275
#, gcc-internal-format
msgid "multiple function type attributes specified"
msgstr ""
-#: config/bfin/bfin.c:5289 config/bfin/bfin.c:5318 config/spu/spu.c:3583
-#, gcc-internal-format
-msgid "`%s' attribute only applies to functions"
-msgstr ""
-
-#: config/bfin/bfin.c:5300
+#: config/bfin/bfin.c:5342
#, gcc-internal-format
msgid "can't apply both longcall and shortcall attributes to the same function"
msgstr ""
-#: config/bfin/bfin.c:5350
+#: config/bfin/bfin.c:5392 config/i386/winnt.c:59
#, gcc-internal-format
-msgid "`%s' attribute only applies to variables"
+msgid "%qE attribute only applies to variables"
msgstr ""
-#: config/bfin/bfin.c:5357
+#: config/bfin/bfin.c:5399
#, gcc-internal-format
-msgid "`%s' attribute cannot be specified for local variables"
+msgid "%qE attribute cannot be specified for local variables"
msgstr ""
#. This function is for retrieving a part of an instruction name for
@@ -26382,62 +26766,62 @@ msgstr ""
msgid "Trampoline support for CRX"
msgstr ""
-#: config/frv/frv.c:8668
+#: config/frv/frv.c:8705
#, gcc-internal-format
msgid "accumulator is not a constant integer"
msgstr ""
-#: config/frv/frv.c:8673
+#: config/frv/frv.c:8710
#, gcc-internal-format
msgid "accumulator number is out of bounds"
msgstr ""
-#: config/frv/frv.c:8684
+#: config/frv/frv.c:8721
#, gcc-internal-format
msgid "inappropriate accumulator for %qs"
msgstr ""
-#: config/frv/frv.c:8761
+#: config/frv/frv.c:8798
#, gcc-internal-format
msgid "invalid IACC argument"
msgstr ""
-#: config/frv/frv.c:8784
+#: config/frv/frv.c:8821
#, gcc-internal-format
msgid "%qs expects a constant argument"
msgstr ""
-#: config/frv/frv.c:8789
+#: config/frv/frv.c:8826
#, gcc-internal-format
msgid "constant argument out of range for %qs"
msgstr ""
-#: config/frv/frv.c:9270
+#: config/frv/frv.c:9307
#, gcc-internal-format
msgid "media functions are not available unless -mmedia is used"
msgstr ""
-#: config/frv/frv.c:9282
+#: config/frv/frv.c:9319
#, gcc-internal-format
msgid "this media function is only available on the fr500"
msgstr ""
-#: config/frv/frv.c:9310
+#: config/frv/frv.c:9347
#, gcc-internal-format
msgid "this media function is only available on the fr400 and fr550"
msgstr ""
-#: config/frv/frv.c:9329
+#: config/frv/frv.c:9366
#, gcc-internal-format
msgid "this builtin function is only available on the fr405 and fr450"
msgstr ""
-#: config/frv/frv.c:9338
+#: config/frv/frv.c:9375
#, gcc-internal-format
msgid "this builtin function is only available on the fr500 and fr550"
msgstr ""
-#: config/frv/frv.c:9350
+#: config/frv/frv.c:9387
#, gcc-internal-format
msgid "this builtin function is only available on the fr450"
msgstr ""
@@ -26462,377 +26846,382 @@ msgstr ""
msgid "can't set position in PCH file: %m"
msgstr ""
-#: config/i386/i386.c:2750 config/i386/i386.c:2992
+#: config/i386/i386.c:2748 config/i386/i386.c:2990
#, gcc-internal-format
msgid "bad value (%s) for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:2794
+#: config/i386/i386.c:2792
#, gcc-internal-format
msgid "bad value (%s) for %sstringop-strategy=%s %s"
msgstr ""
-#: config/i386/i386.c:2798
+#: config/i386/i386.c:2796
#, gcc-internal-format
msgid ""
"%stune=x86-64%s is deprecated. Use %stune=k8%s or %stune=generic%s instead "
"as appropriate."
msgstr ""
-#: config/i386/i386.c:2808
+#: config/i386/i386.c:2806
#, gcc-internal-format
msgid "generic CPU can be used only for %stune=%s %s"
msgstr ""
-#: config/i386/i386.c:2811 config/i386/i386.c:2953
+#: config/i386/i386.c:2809 config/i386/i386.c:2951
#, gcc-internal-format
msgid "bad value (%s) for %sarch=%s %s"
msgstr ""
-#: config/i386/i386.c:2822
+#: config/i386/i386.c:2820
#, gcc-internal-format
msgid "unknown ABI (%s) for %sabi=%s %s"
msgstr ""
-#: config/i386/i386.c:2837
+#: config/i386/i386.c:2835
#, gcc-internal-format
msgid "code model %s does not support PIC mode"
msgstr ""
-#: config/i386/i386.c:2843
+#: config/i386/i386.c:2841
#, gcc-internal-format
msgid "bad value (%s) for %scmodel=%s %s"
msgstr ""
-#: config/i386/i386.c:2867
+#: config/i386/i386.c:2865
#, gcc-internal-format
msgid "bad value (%s) for %sasm=%s %s"
msgstr ""
-#: config/i386/i386.c:2871
+#: config/i386/i386.c:2869
#, gcc-internal-format
msgid "code model %qs not supported in the %s bit mode"
msgstr ""
-#: config/i386/i386.c:2874
+#: config/i386/i386.c:2872
#, gcc-internal-format
msgid "%i-bit mode not compiled in"
msgstr ""
-#: config/i386/i386.c:2886 config/i386/i386.c:2978
+#: config/i386/i386.c:2884 config/i386/i386.c:2976
#, gcc-internal-format
msgid "CPU you selected does not support x86-64 instruction set"
msgstr ""
-#: config/i386/i386.c:3011
+#: config/i386/i386.c:3009
#, gcc-internal-format
msgid "%sregparm%s is ignored in 64-bit mode"
msgstr ""
-#: config/i386/i386.c:3014
+#: config/i386/i386.c:3012
#, gcc-internal-format
msgid "%sregparm=%d%s is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:3027
+#: config/i386/i386.c:3025
#, gcc-internal-format
msgid "%salign-loops%s is obsolete, use -falign-loops%s"
msgstr ""
-#: config/i386/i386.c:3033 config/i386/i386.c:3048 config/i386/i386.c:3063
+#: config/i386/i386.c:3031 config/i386/i386.c:3046 config/i386/i386.c:3061
#, gcc-internal-format
msgid "%salign-loops=%d%s is not between 0 and %d"
msgstr ""
-#: config/i386/i386.c:3042
+#: config/i386/i386.c:3040
#, gcc-internal-format
msgid "%salign-jumps%s is obsolete, use -falign-jumps%s"
msgstr ""
-#: config/i386/i386.c:3057
+#: config/i386/i386.c:3055
#, gcc-internal-format
msgid "%salign-functions%s is obsolete, use -falign-functions%s"
msgstr ""
-#: config/i386/i386.c:3092
+#: config/i386/i386.c:3090
#, gcc-internal-format
msgid "%sbranch-cost=%d%s is not between 0 and 5"
msgstr ""
-#: config/i386/i386.c:3100
+#: config/i386/i386.c:3098
#, gcc-internal-format
msgid "%slarge-data-threshold=%d%s is negative"
msgstr ""
-#: config/i386/i386.c:3114
+#: config/i386/i386.c:3112
#, gcc-internal-format
msgid "bad value (%s) for %stls-dialect=%s %s"
msgstr ""
-#: config/i386/i386.c:3122
+#: config/i386/i386.c:3120
#, gcc-internal-format
msgid "pc%d is not valid precision setting (32, 64 or 80)"
msgstr ""
-#: config/i386/i386.c:3138
+#: config/i386/i386.c:3136
#, gcc-internal-format
msgid "%srtd%s is ignored in 64bit mode"
msgstr ""
-#: config/i386/i386.c:3193
+#: config/i386/i386.c:3191
#, gcc-internal-format
msgid "%spreferred-stack-boundary=%d%s is not between %d and 12"
msgstr ""
-#: config/i386/i386.c:3214
+#: config/i386/i386.c:3212
#, gcc-internal-format
msgid "-mincoming-stack-boundary=%d is not between %d and 12"
msgstr ""
-#: config/i386/i386.c:3227
+#: config/i386/i386.c:3225
#, gcc-internal-format
msgid "%ssseregparm%s used without SSE enabled"
msgstr ""
-#: config/i386/i386.c:3238 config/i386/i386.c:3252
+#: config/i386/i386.c:3236 config/i386/i386.c:3250
#, gcc-internal-format
msgid "SSE instruction set disabled, using 387 arithmetics"
msgstr ""
-#: config/i386/i386.c:3257
+#: config/i386/i386.c:3255
#, gcc-internal-format
msgid "387 instruction set disabled, using SSE arithmetics"
msgstr ""
-#: config/i386/i386.c:3264
+#: config/i386/i386.c:3262
#, gcc-internal-format
msgid "bad value (%s) for %sfpmath=%s %s"
msgstr ""
-#: config/i386/i386.c:3280
+#: config/i386/i386.c:3278
#, gcc-internal-format
msgid "unknown vectorization library ABI type (%s) for %sveclibabi=%s %s"
msgstr ""
-#: config/i386/i386.c:3300
+#: config/i386/i386.c:3298
#, gcc-internal-format
msgid ""
"unwind tables currently require either a frame pointer or %saccumulate-"
"outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3313
+#: config/i386/i386.c:3311
#, gcc-internal-format
msgid "stack probing requires %saccumulate-outgoing-args%s for correctness"
msgstr ""
-#: config/i386/i386.c:3651
+#: config/i386/i386.c:3649
#, gcc-internal-format
msgid "attribute(target(\"%s\")) is unknown"
msgstr ""
-#: config/i386/i386.c:3673
+#: config/i386/i386.c:3671
#, gcc-internal-format
msgid "option(\"%s\") was already specified"
msgstr ""
-#: config/i386/i386.c:4263 config/i386/i386.c:4307
+#: config/i386/i386.c:4261 config/i386/i386.c:4305
#, gcc-internal-format
msgid "fastcall and regparm attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4270
+#: config/i386/i386.c:4268
#, gcc-internal-format
-msgid "%qs attribute requires an integer constant argument"
+msgid "%qE attribute requires an integer constant argument"
msgstr ""
-#: config/i386/i386.c:4276
+#: config/i386/i386.c:4274
#, gcc-internal-format
-msgid "argument to %qs attribute larger than %d"
+msgid "argument to %qE attribute larger than %d"
msgstr ""
-#: config/i386/i386.c:4299 config/i386/i386.c:4334
+#: config/i386/i386.c:4297 config/i386/i386.c:4332
#, gcc-internal-format
msgid "fastcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4303
+#: config/i386/i386.c:4301
#, gcc-internal-format
msgid "fastcall and stdcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4317 config/i386/i386.c:4330
+#: config/i386/i386.c:4315 config/i386/i386.c:4328
#, gcc-internal-format
msgid "stdcall and cdecl attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4321
+#: config/i386/i386.c:4319
#, gcc-internal-format
msgid "stdcall and fastcall attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:4408
+#: config/i386/i386.c:4406
#, gcc-internal-format
msgid "nested functions are limited to 2 register parameters"
msgstr ""
-#: config/i386/i386.c:4494
+#: config/i386/i386.c:4492
#, gcc-internal-format
msgid "Calling %qD with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:4497
+#: config/i386/i386.c:4495
#, gcc-internal-format
msgid "Calling %qT with attribute sseregparm without SSE/SSE2 enabled"
msgstr ""
-#: config/i386/i386.c:4756
+#: config/i386/i386.c:4754
#, gcc-internal-format
msgid ""
"ms_abi attribute require -maccumulate-outgoing-args or subtarget "
"optimization implying it"
msgstr ""
-#: config/i386/i386.c:4873
+#: config/i386/i386.c:4871
#, gcc-internal-format
msgid "AVX vector argument without AVX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:5055
+#: config/i386/i386.c:5053
#, gcc-internal-format
msgid ""
"The ABI of passing struct with a flexible array member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:5171
+#: config/i386/i386.c:5169
#, gcc-internal-format
msgid "The ABI of passing union with long double has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:5286
+#: config/i386/i386.c:5284
#, gcc-internal-format
msgid ""
"The ABI of passing structure with complex float member has changed in GCC 4.4"
msgstr ""
-#: config/i386/i386.c:5431
+#: config/i386/i386.c:5429
#, gcc-internal-format
msgid "SSE register return with SSE disabled"
msgstr ""
-#: config/i386/i386.c:5437
+#: config/i386/i386.c:5435
#, gcc-internal-format
msgid "SSE register argument with SSE disabled"
msgstr ""
-#: config/i386/i386.c:5453
+#: config/i386/i386.c:5451
#, gcc-internal-format
msgid "x87 register return with x87 disabled"
msgstr ""
-#: config/i386/i386.c:5819
+#: config/i386/i386.c:5820
#, gcc-internal-format
msgid "SSE vector argument without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:5856
+#: config/i386/i386.c:5857
#, gcc-internal-format
msgid "MMX vector argument without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:6457
+#: config/i386/i386.c:6458
#, gcc-internal-format
msgid "SSE vector return without SSE enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:6467
+#: config/i386/i386.c:6468
#, gcc-internal-format
msgid "MMX vector return without MMX enabled changes the ABI"
msgstr ""
-#: config/i386/i386.c:10732
+#: config/i386/i386.c:10734
#, gcc-internal-format
msgid "extended registers have no high halves"
msgstr ""
-#: config/i386/i386.c:10747
+#: config/i386/i386.c:10749
#, gcc-internal-format
msgid "unsupported operand size for extended register"
msgstr ""
-#: config/i386/i386.c:24012
+#: config/i386/i386.c:10987
+#, gcc-internal-format
+msgid "non-integer operand used with operand code '%c'"
+msgstr ""
+
+#: config/i386/i386.c:24052
#, gcc-internal-format
msgid "last argument must be an immediate"
msgstr ""
-#: config/i386/i386.c:24305
+#: config/i386/i386.c:24345
#, gcc-internal-format
msgid "the fifth argument must be a 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:24400
+#: config/i386/i386.c:24440
#, gcc-internal-format
msgid "the third argument must be a 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:24740
+#: config/i386/i386.c:24780
#, gcc-internal-format
msgid "the last argument must be a 4-bit immediate"
msgstr ""
-#: config/i386/i386.c:24745
+#: config/i386/i386.c:24785
#, gcc-internal-format
msgid "the last argument must be a 2-bit immediate"
msgstr ""
-#: config/i386/i386.c:24754
+#: config/i386/i386.c:24794
#, gcc-internal-format
msgid "the last argument must be a 1-bit immediate"
msgstr ""
-#: config/i386/i386.c:24763
+#: config/i386/i386.c:24803
#, gcc-internal-format
msgid "the last argument must be a 5-bit immediate"
msgstr ""
-#: config/i386/i386.c:24772
+#: config/i386/i386.c:24812
#, gcc-internal-format
msgid "the next to last argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:24776 config/i386/i386.c:24954
+#: config/i386/i386.c:24816 config/i386/i386.c:24994
#, gcc-internal-format
msgid "the last argument must be an 8-bit immediate"
msgstr ""
-#: config/i386/i386.c:25012 config/rs6000/rs6000.c:8539
+#: config/i386/i386.c:25052 config/rs6000/rs6000.c:8545
#, gcc-internal-format
msgid "selector must be an integer constant in the range 0..%wi"
msgstr ""
-#: config/i386/i386.c:25155
+#: config/i386/i386.c:25195
#, gcc-internal-format
msgid "%qE needs unknown isa option"
msgstr ""
-#: config/i386/i386.c:25159
+#: config/i386/i386.c:25199
#, gcc-internal-format
msgid "%qE needs isa option %s"
msgstr ""
-#: config/i386/i386.c:26804
+#: config/i386/i386.c:26846
#, gcc-internal-format
-msgid "%qs attribute only available for 64-bit"
+msgid "%qE attribute only available for 64-bit"
msgstr ""
-#: config/i386/i386.c:26815 config/i386/i386.c:26824
+#: config/i386/i386.c:26857 config/i386/i386.c:26866
#, gcc-internal-format
msgid "ms_abi and sysv_abi attributes are not compatible"
msgstr ""
-#: config/i386/i386.c:26862 config/rs6000/rs6000.c:20746
+#: config/i386/i386.c:26904 config/rs6000/rs6000.c:20753
#, gcc-internal-format
-msgid "%qs incompatible attribute ignored"
+msgid "%qE incompatible attribute ignored"
msgstr ""
#: config/i386/netware.c:253
@@ -26845,15 +27234,10 @@ msgstr ""
msgid "definition of static data member %q+D of dllimport'd class"
msgstr ""
-#: config/i386/winnt.c:59
-#, gcc-internal-format
-msgid "%qs attribute only applies to variables"
-msgstr ""
-
#: config/i386/winnt.c:81
#, gcc-internal-format
msgid ""
-"%qs attribute applies only to initialized variables with external linkage"
+"%qE attribute applies only to initialized variables with external linkage"
msgstr ""
#: config/i386/winnt.c:290
@@ -26886,9 +27270,9 @@ msgstr ""
msgid "malformed #pragma builtin"
msgstr ""
-#: config/ia64/ia64.c:589 config/m32r/m32r.c:373
+#: config/ia64/ia64.c:589
#, gcc-internal-format
-msgid "invalid argument of %qs attribute"
+msgid "invalid argument of %qE attribute"
msgstr ""
#: config/ia64/ia64.c:601
@@ -26906,69 +27290,69 @@ msgstr ""
msgid "%Jaddress area attribute cannot be specified for functions"
msgstr ""
-#: config/ia64/ia64.c:5153 config/pa/pa.c:351 config/sh/sh.c:7965
-#: config/spu/spu.c:4470
+#: config/ia64/ia64.c:5174 config/pa/pa.c:355 config/sh/sh.c:7955
+#: config/spu/spu.c:4613
#, gcc-internal-format
msgid "value of -mfixed-range must have form REG1-REG2"
msgstr ""
-#: config/ia64/ia64.c:5180 config/pa/pa.c:378 config/sh/sh.c:7991
-#: config/spu/spu.c:4496
+#: config/ia64/ia64.c:5201 config/pa/pa.c:382 config/sh/sh.c:7981
+#: config/spu/spu.c:4639
#, gcc-internal-format
msgid "%s-%s is an empty range"
msgstr ""
-#: config/ia64/ia64.c:5210
+#: config/ia64/ia64.c:5231
#, gcc-internal-format
msgid "bad value %<%s%> for -mtls-size= switch"
msgstr ""
-#: config/ia64/ia64.c:5239
+#: config/ia64/ia64.c:5260
#, gcc-internal-format
msgid "value %<%s%> for -mtune= switch is deprecated"
msgstr ""
-#: config/ia64/ia64.c:5241
+#: config/ia64/ia64.c:5262
#, gcc-internal-format
msgid "GCC 4.4 is the last release with Itanium1 tuning support"
msgstr ""
-#: config/ia64/ia64.c:5248
+#: config/ia64/ia64.c:5269
#, gcc-internal-format
msgid "bad value %<%s%> for -mtune= switch"
msgstr ""
-#: config/ia64/ia64.c:5267
+#: config/ia64/ia64.c:5288
#, gcc-internal-format
msgid "not yet implemented: latency-optimized inline square root"
msgstr ""
-#: config/ia64/ia64.c:10536
+#: config/ia64/ia64.c:10557
#, gcc-internal-format
msgid "version attribute is not a string"
msgstr ""
-#: config/iq2000/iq2000.c:1817
+#: config/iq2000/iq2000.c:1832
#, gcc-internal-format
msgid "gp_offset (%ld) or end_offset (%ld) is less than zero"
msgstr ""
-#: config/iq2000/iq2000.c:2587
+#: config/iq2000/iq2000.c:2602
#, gcc-internal-format
msgid "argument %qd is not a constant"
msgstr ""
-#: config/iq2000/iq2000.c:2889 config/xtensa/xtensa.c:2320
+#: config/iq2000/iq2000.c:2904 config/xtensa/xtensa.c:2324
#, gcc-internal-format
msgid "PRINT_OPERAND_ADDRESS, null pointer"
msgstr ""
-#: config/iq2000/iq2000.c:3044
+#: config/iq2000/iq2000.c:3059
#, gcc-internal-format
msgid "PRINT_OPERAND: Unknown punctuation '%c'"
msgstr ""
-#: config/iq2000/iq2000.c:3053 config/xtensa/xtensa.c:2174
+#: config/iq2000/iq2000.c:3068 config/xtensa/xtensa.c:2178
#, gcc-internal-format
msgid "PRINT_OPERAND null pointer"
msgstr ""
@@ -26993,24 +27377,30 @@ msgstr ""
msgid "invalid target memregs value '%d'"
msgstr ""
-#: config/m32c/m32c.c:2798
+#: config/m32c/m32c.c:2784
#, gcc-internal-format
-msgid "`%s' attribute is not supported for R8C target"
+msgid "%qE attribute is not supported for R8C target"
msgstr ""
-#: config/m32c/m32c.c:2806
+#: config/m32c/m32c.c:2792
+#, gcc-internal-format
+msgid "%qE attribute applies only to functions"
+msgstr ""
+
+#. The argument must be a constant integer.
+#: config/m32c/m32c.c:2800 config/sh/sh.c:8187 config/sh/sh.c:8293
#, gcc-internal-format
-msgid "`%s' attribute applies only to functions"
+msgid "%qE attribute argument not an integer constant"
msgstr ""
-#: config/m32c/m32c.c:2814 config/sh/sh.c:8197
+#: config/m32c/m32c.c:2809
#, gcc-internal-format
-msgid "`%s' attribute argument not an integer constant"
+msgid "%qE attribute argument should be between 18 to 255"
msgstr ""
-#: config/m32c/m32c.c:2823
+#: config/m32r/m32r.c:377
#, gcc-internal-format
-msgid "`%s' attribute argument should be between 18 to 255"
+msgid "invalid argument of %qs attribute"
msgstr ""
#: config/m68hc11/m68hc11.c:279
@@ -27018,208 +27408,213 @@ msgstr ""
msgid "-f%s ignored for 68HC11/68HC12 (not supported)"
msgstr ""
-#: config/m68hc11/m68hc11.c:1240
+#: config/m68hc11/m68hc11.c:1232
#, gcc-internal-format
msgid "%<trap%> and %<far%> attributes are not compatible, ignoring %<far%>"
msgstr ""
-#: config/m68hc11/m68hc11.c:1247
+#: config/m68hc11/m68hc11.c:1239
#, gcc-internal-format
msgid "%<trap%> attribute is already used"
msgstr ""
-#: config/m68k/m68k.c:546
+#: config/m68k/m68k.c:550
#, gcc-internal-format
msgid "-mcpu=%s conflicts with -march=%s"
msgstr ""
-#: config/m68k/m68k.c:617
+#: config/m68k/m68k.c:621
#, gcc-internal-format
msgid "-mpcrel -fPIC is not currently supported on selected cpu"
msgstr ""
-#: config/m68k/m68k.c:679
+#: config/m68k/m68k.c:683
#, gcc-internal-format
msgid "-falign-labels=%d is not supported"
msgstr ""
-#: config/m68k/m68k.c:684
+#: config/m68k/m68k.c:688
#, gcc-internal-format
msgid "-falign-loops=%d is not supported"
msgstr ""
-#: config/m68k/m68k.c:787
+#: config/m68k/m68k.c:791
#, gcc-internal-format
msgid "multiple interrupt attributes not allowed"
msgstr ""
-#: config/m68k/m68k.c:794
+#: config/m68k/m68k.c:798
#, gcc-internal-format
msgid "interrupt_thread is available only on fido"
msgstr ""
-#: config/m68k/m68k.c:1116 config/rs6000/rs6000.c:15593
+#: config/m68k/m68k.c:1120 config/rs6000/rs6000.c:15600
#, gcc-internal-format
msgid "stack limit expression is not supported"
msgstr ""
+#: config/mips/mips.c:1283 config/mips/mips.c:1285
+#, gcc-internal-format
+msgid "%qs attribute only applies to functions"
+msgstr ""
+
#: config/mips/mips.c:1295
#, gcc-internal-format
-msgid "%qs cannot have both %<mips16%> and %<nomips16%> attributes"
+msgid "%qE cannot have both %<mips16%> and %<nomips16%> attributes"
msgstr ""
#: config/mips/mips.c:1317 config/mips/mips.c:1320
#, gcc-internal-format
-msgid "%qs redeclared with conflicting %qs attributes"
+msgid "%qE redeclared with conflicting %qs attributes"
msgstr ""
-#: config/mips/mips.c:2778
+#: config/mips/mips.c:2780
#, gcc-internal-format
msgid "MIPS16 TLS"
msgstr ""
-#: config/mips/mips.c:6119
+#: config/mips/mips.c:6116
#, gcc-internal-format
msgid "cannot handle inconsistent calls to %qs"
msgstr ""
-#: config/mips/mips.c:8721
+#: config/mips/mips.c:8719
#, gcc-internal-format
msgid "the %<interrupt%> attribute requires a MIPS32r2 processor"
msgstr ""
-#: config/mips/mips.c:8723
+#: config/mips/mips.c:8721
#, gcc-internal-format
msgid "the %<interrupt%> attribute requires %<-msoft-float%>"
msgstr ""
-#: config/mips/mips.c:8725
+#: config/mips/mips.c:8723
#, gcc-internal-format
msgid "interrupt handlers cannot be MIPS16 functions"
msgstr ""
-#: config/mips/mips.c:12131
+#: config/mips/mips.c:12134
#, gcc-internal-format
msgid "invalid argument to built-in function"
msgstr ""
-#: config/mips/mips.c:12372
+#: config/mips/mips.c:12375
#, gcc-internal-format
-msgid "built-in function %qs not supported for MIPS16"
+msgid "built-in function %qE not supported for MIPS16"
msgstr ""
-#: config/mips/mips.c:12950
+#: config/mips/mips.c:12953
#, gcc-internal-format
msgid "%qs does not support MIPS16 code"
msgstr ""
-#: config/mips/mips.c:13924
+#: config/mips/mips.c:13927
#, gcc-internal-format
msgid "MIPS16 PIC for ABIs other than o32 and o64"
msgstr ""
-#: config/mips/mips.c:13927
+#: config/mips/mips.c:13930
#, gcc-internal-format
msgid "MIPS16 -mxgot code"
msgstr ""
-#: config/mips/mips.c:13930
+#: config/mips/mips.c:13933
#, gcc-internal-format
msgid "hard-float MIPS16 code for ABIs other than o32 and o64"
msgstr ""
-#: config/mips/mips.c:14059
+#: config/mips/mips.c:14062
#, gcc-internal-format
msgid "CPU names must be lower case"
msgstr ""
-#: config/mips/mips.c:14202
+#: config/mips/mips.c:14205
#, gcc-internal-format
msgid ""
"%<-%s%> conflicts with the other architecture options, which specify a %s "
"processor"
msgstr ""
-#: config/mips/mips.c:14218
+#: config/mips/mips.c:14221
#, gcc-internal-format
msgid "%<-march=%s%> is not compatible with the selected ABI"
msgstr ""
-#: config/mips/mips.c:14233
+#: config/mips/mips.c:14236
#, gcc-internal-format
msgid "%<-mgp64%> used with a 32-bit processor"
msgstr ""
-#: config/mips/mips.c:14235
+#: config/mips/mips.c:14238
#, gcc-internal-format
msgid "%<-mgp32%> used with a 64-bit ABI"
msgstr ""
-#: config/mips/mips.c:14237
+#: config/mips/mips.c:14240
#, gcc-internal-format
msgid "%<-mgp64%> used with a 32-bit ABI"
msgstr ""
-#: config/mips/mips.c:14253 config/mips/mips.c:14255 config/mips/mips.c:14322
+#: config/mips/mips.c:14256 config/mips/mips.c:14258 config/mips/mips.c:14325
#, gcc-internal-format
msgid "unsupported combination: %s"
msgstr ""
-#: config/mips/mips.c:14259
+#: config/mips/mips.c:14262
#, gcc-internal-format
msgid ""
"%<-mgp32%> and %<-mfp64%> can only be combined if the target supports the "
"mfhc1 and mthc1 instructions"
msgstr ""
-#: config/mips/mips.c:14262
+#: config/mips/mips.c:14265
#, gcc-internal-format
msgid "%<-mgp32%> and %<-mfp64%> can only be combined when using the o32 ABI"
msgstr ""
-#: config/mips/mips.c:14316
+#: config/mips/mips.c:14319
#, gcc-internal-format
msgid "the %qs architecture does not support branch-likely instructions"
msgstr ""
-#: config/mips/mips.c:14356
+#: config/mips/mips.c:14359
#, gcc-internal-format
msgid "%<-mno-gpopt%> needs %<-mexplicit-relocs%>"
msgstr ""
-#: config/mips/mips.c:14364 config/mips/mips.c:14367
+#: config/mips/mips.c:14367 config/mips/mips.c:14370
#, gcc-internal-format
msgid "cannot use small-data accesses for %qs"
msgstr ""
-#: config/mips/mips.c:14381
+#: config/mips/mips.c:14384
#, gcc-internal-format
msgid "%<-mips3d%> requires %<-mpaired-single%>"
msgstr ""
-#: config/mips/mips.c:14390
+#: config/mips/mips.c:14393
#, gcc-internal-format
msgid "%qs must be used with %qs"
msgstr ""
-#: config/mips/mips.c:14397
+#: config/mips/mips.c:14400
#, gcc-internal-format
msgid "the %qs architecture does not support paired-single instructions"
msgstr ""
-#: config/mips/mips.c:14403
+#: config/mips/mips.c:14406
#, gcc-internal-format
msgid "%qs requires a target that provides the %qs instruction"
msgstr ""
-#: config/mips/mips.c:14503
+#: config/mips/mips.c:14506
#, gcc-internal-format
msgid "%qs requires branch-likely instructions"
msgstr ""
#. Output assembler code to FILE to increment profiler label # LABELNO
#. for profiling a function entry.
-#: config/mips/mips.h:2327
+#: config/mips/mips.h:2335
#, gcc-internal-format
msgid "mips16 function profiling"
msgstr ""
@@ -27277,34 +27672,34 @@ msgstr ""
msgid "MMIX Internal: %s is not a shiftable int"
msgstr ""
-#: config/pa/pa.c:483
+#: config/pa/pa.c:487
#, gcc-internal-format
msgid "PIC code generation is not supported in the portable runtime model"
msgstr ""
-#: config/pa/pa.c:488
+#: config/pa/pa.c:492
#, gcc-internal-format
msgid "PIC code generation is not compatible with fast indirect calls"
msgstr ""
-#: config/pa/pa.c:493
+#: config/pa/pa.c:497
#, gcc-internal-format
msgid "-g is only supported when using GAS on this processor,"
msgstr ""
-#: config/pa/pa.c:494
+#: config/pa/pa.c:498
#, gcc-internal-format
msgid "-g option disabled"
msgstr ""
-#: config/pa/pa.c:8376
+#: config/pa/pa.c:8380
#, gcc-internal-format
msgid ""
"alignment (%u) for %s exceeds maximum alignment for global common data. "
"Using %u"
msgstr ""
-#: config/pa/pa-hpux11.h:84
+#: config/pa/pa-hpux11.h:82
#, gcc-internal-format
msgid "-munix=98 option required for C89 Amendment 1 features.\n"
msgstr ""
@@ -27494,263 +27889,263 @@ msgstr ""
msgid "invalid parameter combination for AltiVec intrinsic"
msgstr ""
-#: config/rs6000/rs6000.c:1368
+#: config/rs6000/rs6000.c:1372
#, gcc-internal-format
msgid "-mdynamic-no-pic overrides -fpic or -fPIC"
msgstr ""
-#: config/rs6000/rs6000.c:1379
+#: config/rs6000/rs6000.c:1383
#, gcc-internal-format
msgid "-m64 requires PowerPC64 architecture, enabling"
msgstr ""
-#: config/rs6000/rs6000.c:1600
+#: config/rs6000/rs6000.c:1604
#, gcc-internal-format
msgid "AltiVec not supported in this target"
msgstr ""
-#: config/rs6000/rs6000.c:1602
+#: config/rs6000/rs6000.c:1606
#, gcc-internal-format
msgid "Spe not supported in this target"
msgstr ""
-#: config/rs6000/rs6000.c:1629
+#: config/rs6000/rs6000.c:1633
#, gcc-internal-format
msgid "-mmultiple is not supported on little endian systems"
msgstr ""
-#: config/rs6000/rs6000.c:1636
+#: config/rs6000/rs6000.c:1640
#, gcc-internal-format
msgid "-mstring is not supported on little endian systems"
msgstr ""
-#: config/rs6000/rs6000.c:1650
+#: config/rs6000/rs6000.c:1654
#, gcc-internal-format
msgid "unknown -mdebug-%s switch"
msgstr ""
-#: config/rs6000/rs6000.c:1662
+#: config/rs6000/rs6000.c:1666
#, gcc-internal-format
msgid ""
"unknown -mtraceback arg %qs; expecting %<full%>, %<partial%> or %<none%>"
msgstr ""
-#: config/rs6000/rs6000.c:2171
+#: config/rs6000/rs6000.c:2177
#, gcc-internal-format
msgid "unknown -m%s= option specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:2217
+#: config/rs6000/rs6000.c:2223
#, gcc-internal-format
msgid "unknown value %s for -mfpu"
msgstr ""
-#: config/rs6000/rs6000.c:2415
+#: config/rs6000/rs6000.c:2421
#, gcc-internal-format
msgid "not configured for ABI: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:2428
+#: config/rs6000/rs6000.c:2434
#, gcc-internal-format
msgid "Using darwin64 ABI"
msgstr ""
-#: config/rs6000/rs6000.c:2433
+#: config/rs6000/rs6000.c:2439
#, gcc-internal-format
msgid "Using old darwin ABI"
msgstr ""
-#: config/rs6000/rs6000.c:2440
+#: config/rs6000/rs6000.c:2446
#, gcc-internal-format
msgid "Using IBM extended precision long double"
msgstr ""
-#: config/rs6000/rs6000.c:2446
+#: config/rs6000/rs6000.c:2452
#, gcc-internal-format
msgid "Using IEEE extended precision long double"
msgstr ""
-#: config/rs6000/rs6000.c:2451
+#: config/rs6000/rs6000.c:2457
#, gcc-internal-format
msgid "unknown ABI specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:2478
+#: config/rs6000/rs6000.c:2484
#, gcc-internal-format
msgid "invalid option for -mfloat-gprs: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:2488
+#: config/rs6000/rs6000.c:2494
#, gcc-internal-format
msgid "Unknown switch -mlong-double-%s"
msgstr ""
-#: config/rs6000/rs6000.c:2509
+#: config/rs6000/rs6000.c:2515
#, gcc-internal-format
msgid ""
"-malign-power is not supported for 64-bit Darwin; it is incompatible with "
"the installed C and C++ libraries"
msgstr ""
-#: config/rs6000/rs6000.c:2517
+#: config/rs6000/rs6000.c:2523
#, gcc-internal-format
msgid "unknown -malign-XXXXX option specified: '%s'"
msgstr ""
-#: config/rs6000/rs6000.c:2524
+#: config/rs6000/rs6000.c:2530
#, gcc-internal-format
msgid "-msingle-float option equivalent to -mhard-float"
msgstr ""
-#: config/rs6000/rs6000.c:2540
+#: config/rs6000/rs6000.c:2546
#, gcc-internal-format
msgid "-msimple-fpu option ignored"
msgstr ""
-#: config/rs6000/rs6000.c:5376
+#: config/rs6000/rs6000.c:5382
#, gcc-internal-format
msgid ""
"GCC vector returned by reference: non-standard ABI extension with no "
"compatibility guarantee"
msgstr ""
-#: config/rs6000/rs6000.c:5449
+#: config/rs6000/rs6000.c:5455
#, gcc-internal-format
msgid ""
"cannot return value in vector register because altivec instructions are "
"disabled, use -maltivec to enable them"
msgstr ""
-#: config/rs6000/rs6000.c:5707
+#: config/rs6000/rs6000.c:5713
#, gcc-internal-format
msgid ""
"cannot pass argument in vector register because altivec instructions are "
"disabled, use -maltivec to enable them"
msgstr ""
-#: config/rs6000/rs6000.c:6608
+#: config/rs6000/rs6000.c:6614
#, gcc-internal-format
msgid ""
"GCC vector passed by reference: non-standard ABI extension with no "
"compatibility guarantee"
msgstr ""
-#: config/rs6000/rs6000.c:7867
+#: config/rs6000/rs6000.c:7873
#, gcc-internal-format
msgid "argument 1 must be a 5-bit signed literal"
msgstr ""
-#: config/rs6000/rs6000.c:7970 config/rs6000/rs6000.c:8902
+#: config/rs6000/rs6000.c:7976 config/rs6000/rs6000.c:8908
#, gcc-internal-format
msgid "argument 2 must be a 5-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:8010
+#: config/rs6000/rs6000.c:8016
#, gcc-internal-format
msgid "argument 1 of __builtin_altivec_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:8063
+#: config/rs6000/rs6000.c:8069
#, gcc-internal-format
msgid "argument 1 of __builtin_altivec_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:8312
+#: config/rs6000/rs6000.c:8318
#, gcc-internal-format
msgid "argument 3 must be a 4-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:8484
+#: config/rs6000/rs6000.c:8490
#, gcc-internal-format
msgid "argument to %qs must be a 2-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:8626
+#: config/rs6000/rs6000.c:8632
#, gcc-internal-format
msgid "unresolved overload for Altivec builtin %qF"
msgstr ""
-#: config/rs6000/rs6000.c:8717
+#: config/rs6000/rs6000.c:8723
#, gcc-internal-format
msgid "argument to dss must be a 2-bit unsigned literal"
msgstr ""
-#: config/rs6000/rs6000.c:9022
+#: config/rs6000/rs6000.c:9028
#, gcc-internal-format
msgid "argument 1 of __builtin_paired_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:9069
+#: config/rs6000/rs6000.c:9075
#, gcc-internal-format
msgid "argument 1 of __builtin_paired_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:9094
+#: config/rs6000/rs6000.c:9100
#, gcc-internal-format
msgid "argument 1 of __builtin_spe_predicate must be a constant"
msgstr ""
-#: config/rs6000/rs6000.c:9166
+#: config/rs6000/rs6000.c:9172
#, gcc-internal-format
msgid "argument 1 of __builtin_spe_predicate is out of range"
msgstr ""
-#: config/rs6000/rs6000.c:15556
+#: config/rs6000/rs6000.c:15563
#, gcc-internal-format
msgid "stack frame too large"
msgstr ""
-#: config/rs6000/rs6000.c:18599
+#: config/rs6000/rs6000.c:18606
#, gcc-internal-format
msgid "no profiling of 64-bit code for this ABI"
msgstr ""
-#: config/rs6000/rs6000.c:20548
+#: config/rs6000/rs6000.c:20555
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is invalid for 64-bit code"
msgstr ""
-#: config/rs6000/rs6000.c:20550
+#: config/rs6000/rs6000.c:20557
#, gcc-internal-format
msgid "use of %<long%> in AltiVec types is deprecated; use %<int%>"
msgstr ""
-#: config/rs6000/rs6000.c:20554
+#: config/rs6000/rs6000.c:20561
#, gcc-internal-format
msgid "use of %<long long%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:20556
+#: config/rs6000/rs6000.c:20563
#, gcc-internal-format
msgid "use of %<double%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:20558
+#: config/rs6000/rs6000.c:20565
#, gcc-internal-format
msgid "use of %<long double%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:20560
+#: config/rs6000/rs6000.c:20567
#, gcc-internal-format
msgid "use of boolean types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:20562
+#: config/rs6000/rs6000.c:20569
#, gcc-internal-format
msgid "use of %<complex%> in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:20564
+#: config/rs6000/rs6000.c:20571
#, gcc-internal-format
msgid "use of decimal floating point types in AltiVec types is invalid"
msgstr ""
-#: config/rs6000/rs6000.c:22853
+#: config/rs6000/rs6000.c:22861
#, gcc-internal-format
msgid "emitting microcode insn %s\t[%s] #%d"
msgstr ""
-#: config/rs6000/rs6000.c:22857
+#: config/rs6000/rs6000.c:22865
#, gcc-internal-format
msgid "emitting conditional microcode insn %s\t[%s] #%d"
msgstr ""
@@ -27817,7 +28212,7 @@ msgstr ""
#. Number of bytes into the frame return addresses can be found. See
#. rs6000_stack_info in rs6000.c for more information on how the different
#. abi's store the return address.
-#: config/rs6000/rs6000.h:1657
+#: config/rs6000/rs6000.h:1641
#, gcc-internal-format
msgid "RETURN_ADDRESS_OFFSET not supported"
msgstr ""
@@ -27962,64 +28357,58 @@ msgstr ""
msgid "%qs uses dynamic stack allocation"
msgstr ""
-#: config/score/score3.c:656 config/score/score7.c:655
+#: config/score/score3.c:653 config/score/score7.c:652
#, gcc-internal-format
msgid "-fPIC and -G are incompatible"
msgstr ""
-#: config/sh/sh.c:6964
+#: config/sh/sh.c:6954
#, gcc-internal-format
msgid "__builtin_saveregs not supported by this subtarget"
msgstr ""
-#: config/sh/sh.c:8053
+#: config/sh/sh.c:8043
#, gcc-internal-format
-msgid "%qs attribute only applies to interrupt functions"
+msgid "%qE attribute only applies to interrupt functions"
msgstr ""
-#: config/sh/sh.c:8136
+#: config/sh/sh.c:8126
#, gcc-internal-format
-msgid "%qs attribute is supported only for SH2A"
+msgid "%qE attribute is supported only for SH2A"
msgstr ""
-#: config/sh/sh.c:8166
+#: config/sh/sh.c:8156
#, gcc-internal-format
msgid "attribute interrupt_handler is not compatible with -m5-compact"
msgstr ""
-#: config/sh/sh.c:8183
+#: config/sh/sh.c:8173
#, gcc-internal-format
-msgid "%qs attribute only applies to SH2A"
+msgid "%qE attribute only applies to SH2A"
msgstr ""
-#: config/sh/sh.c:8205
+#: config/sh/sh.c:8195
#, gcc-internal-format
-msgid "`%s' attribute argument should be between 0 to 255"
+msgid "%qE attribute argument should be between 0 to 255"
msgstr ""
#. The argument must be a constant string.
-#: config/sh/sh.c:8278
-#, gcc-internal-format
-msgid "%qs attribute argument not a string constant"
-msgstr ""
-
-#. The argument must be a constant integer.
-#: config/sh/sh.c:8303
+#: config/sh/sh.c:8268
#, gcc-internal-format
-msgid "%qs attribute argument not an integer constant"
+msgid "%qE attribute argument not a string constant"
msgstr ""
-#: config/sh/sh.c:10495
+#: config/sh/sh.c:10539
#, gcc-internal-format
msgid "r0 needs to be available as a call-clobbered register"
msgstr ""
-#: config/sh/sh.c:10516
+#: config/sh/sh.c:10560
#, gcc-internal-format
msgid "Need a second call-clobbered general purpose register"
msgstr ""
-#: config/sh/sh.c:10524
+#: config/sh/sh.c:10568
#, gcc-internal-format
msgid "Need a call-clobbered target register"
msgstr ""
@@ -28038,7 +28427,7 @@ msgstr ""
#: config/sh/symbian.c:272
#, gcc-internal-format
-msgid "%qs declared as both exported to and imported from a DLL"
+msgid "%qE declared as both exported to and imported from a DLL"
msgstr ""
#: config/sh/symbian.c:279
@@ -28052,7 +28441,12 @@ msgstr ""
msgid "%s %q+D %s after being referenced with dllimport linkage"
msgstr ""
-#: config/sh/symbian.c:891 cp/tree.c:2844
+#: config/sh/symbian.c:408 config/sh/symbian.c:415
+#, gcc-internal-format
+msgid "%qs attribute ignored"
+msgstr ""
+
+#: config/sh/symbian.c:891 cp/tree.c:2858
#, gcc-internal-format
msgid "lang_* check: failed in %s, at %s:%d"
msgstr ""
@@ -28090,62 +28484,57 @@ msgstr ""
msgid "-mrelax is only supported for RTP PIC"
msgstr ""
-#: config/sparc/sparc.c:701
+#: config/sparc/sparc.c:705
#, gcc-internal-format
msgid "%s is not supported by this configuration"
msgstr ""
-#: config/sparc/sparc.c:708
+#: config/sparc/sparc.c:712
#, gcc-internal-format
msgid "-mlong-double-64 not allowed with -m64"
msgstr ""
-#: config/sparc/sparc.c:728
+#: config/sparc/sparc.c:732
#, gcc-internal-format
msgid "bad value (%s) for -mcmodel= switch"
msgstr ""
-#: config/sparc/sparc.c:733
+#: config/sparc/sparc.c:737
#, gcc-internal-format
msgid "-mcmodel= is not supported on 32 bit systems"
msgstr ""
-#: config/spu/spu-c.c:136
+#: config/spu/spu-c.c:141
#, gcc-internal-format
msgid "insufficient arguments to overloaded function %s"
msgstr ""
-#: config/spu/spu-c.c:171
+#: config/spu/spu-c.c:173
#, gcc-internal-format
msgid "too many arguments to overloaded function %s"
msgstr ""
-#: config/spu/spu-c.c:183
+#: config/spu/spu-c.c:185
#, gcc-internal-format
msgid "parameter list does not match a valid signature for %s()"
msgstr ""
-#: config/spu/spu.c:383 config/spu/spu.c:394
+#: config/spu/spu.c:450 config/spu/spu.c:461
#, gcc-internal-format
msgid "Unknown architecture '%s'"
msgstr ""
-#: config/spu/spu.c:3641
-#, gcc-internal-format
-msgid "`%s' attribute ignored"
-msgstr ""
-
-#: config/spu/spu.c:5820
+#: config/spu/spu.c:5973
#, gcc-internal-format
msgid "%s expects an integer literal in the range [%d, %d]."
msgstr ""
-#: config/spu/spu.c:5840
+#: config/spu/spu.c:5993
#, gcc-internal-format
msgid "%s expects an integer literal in the range [%d, %d]. ("
msgstr ""
-#: config/spu/spu.c:5870
+#: config/spu/spu.c:6023
#, gcc-internal-format
msgid "%d least significant bits of %s are ignored."
msgstr ""
@@ -28200,52 +28589,52 @@ msgstr ""
msgid "cannot set interrupt attribute: no such identifier"
msgstr ""
-#: config/v850/v850-c.c:148
+#: config/v850/v850-c.c:152
#, gcc-internal-format
msgid "junk at end of #pragma ghs section"
msgstr ""
-#: config/v850/v850-c.c:165
+#: config/v850/v850-c.c:169
#, gcc-internal-format
-msgid "unrecognized section name \"%s\""
+msgid "unrecognized section name %qE"
msgstr ""
-#: config/v850/v850-c.c:180
+#: config/v850/v850-c.c:184
#, gcc-internal-format
msgid "malformed #pragma ghs section"
msgstr ""
-#: config/v850/v850-c.c:199
+#: config/v850/v850-c.c:203
#, gcc-internal-format
msgid "junk at end of #pragma ghs interrupt"
msgstr ""
-#: config/v850/v850-c.c:210
+#: config/v850/v850-c.c:214
#, gcc-internal-format
msgid "junk at end of #pragma ghs starttda"
msgstr ""
-#: config/v850/v850-c.c:221
+#: config/v850/v850-c.c:225
#, gcc-internal-format
msgid "junk at end of #pragma ghs startsda"
msgstr ""
-#: config/v850/v850-c.c:232
+#: config/v850/v850-c.c:236
#, gcc-internal-format
msgid "junk at end of #pragma ghs startzda"
msgstr ""
-#: config/v850/v850-c.c:243
+#: config/v850/v850-c.c:247
#, gcc-internal-format
msgid "junk at end of #pragma ghs endtda"
msgstr ""
-#: config/v850/v850-c.c:254
+#: config/v850/v850-c.c:258
#, gcc-internal-format
msgid "junk at end of #pragma ghs endsda"
msgstr ""
-#: config/v850/v850-c.c:265
+#: config/v850/v850-c.c:269
#, gcc-internal-format
msgid "junk at end of #pragma ghs endzda"
msgstr ""
@@ -28300,27 +28689,27 @@ msgstr ""
msgid "too much stack space to prepare: %d"
msgstr ""
-#: config/xtensa/xtensa.c:2061
+#: config/xtensa/xtensa.c:2065
#, gcc-internal-format
msgid "boolean registers required for the floating-point option"
msgstr ""
-#: config/xtensa/xtensa.c:2096
+#: config/xtensa/xtensa.c:2100
#, gcc-internal-format
msgid "-f%s is not supported with CONST16 instructions"
msgstr ""
-#: config/xtensa/xtensa.c:2101
+#: config/xtensa/xtensa.c:2105
#, gcc-internal-format
msgid "PIC is required but not supported with CONST16 instructions"
msgstr ""
-#: config/xtensa/xtensa.c:3006 config/xtensa/xtensa.c:3046
+#: config/xtensa/xtensa.c:3010 config/xtensa/xtensa.c:3050
#, gcc-internal-format
msgid "bad builtin code"
msgstr ""
-#: config/xtensa/xtensa.c:3156
+#: config/xtensa/xtensa.c:3160
#, gcc-internal-format
msgid "only uninitialized variables can be placed in a .bss section"
msgstr ""
@@ -28458,88 +28847,88 @@ msgstr ""
msgid "no %<%D(int)%> declared for postfix %qs, trying prefix operator instead"
msgstr ""
-#: cp/call.c:4130
+#: cp/call.c:4142
#, gcc-internal-format
msgid "comparison between %q#T and %q#T"
msgstr ""
-#: cp/call.c:4418
+#: cp/call.c:4430
#, gcc-internal-format
msgid "no corresponding deallocation function for %qD"
msgstr ""
-#: cp/call.c:4423
+#: cp/call.c:4435
#, gcc-internal-format
msgid "no suitable %<operator %s%> for %qT"
msgstr ""
-#: cp/call.c:4441
+#: cp/call.c:4453
#, gcc-internal-format
msgid "%q+#D is private"
msgstr ""
-#: cp/call.c:4443
+#: cp/call.c:4455
#, gcc-internal-format
msgid "%q+#D is protected"
msgstr ""
-#: cp/call.c:4445
+#: cp/call.c:4457
#, gcc-internal-format
msgid "%q+#D is inaccessible"
msgstr ""
-#: cp/call.c:4446
+#: cp/call.c:4458
#, gcc-internal-format
msgid "within this context"
msgstr ""
-#: cp/call.c:4492
+#: cp/call.c:4504
#, gcc-internal-format
msgid "passing NULL to non-pointer argument %P of %qD"
msgstr ""
-#: cp/call.c:4495
+#: cp/call.c:4507
#, gcc-internal-format
msgid "converting to non-pointer type %qT from NULL"
msgstr ""
-#: cp/call.c:4501
+#: cp/call.c:4513
#, gcc-internal-format
msgid "converting %<false%> to pointer type for argument %P of %qD"
msgstr ""
-#: cp/call.c:4552 cp/cvt.c:217
+#: cp/call.c:4564 cp/cvt.c:217
#, gcc-internal-format
msgid "invalid conversion from %qT to %qT"
msgstr ""
-#: cp/call.c:4554
+#: cp/call.c:4566
#, gcc-internal-format
msgid " initializing argument %P of %qD"
msgstr ""
-#: cp/call.c:4578
+#: cp/call.c:4590
#, gcc-internal-format
msgid ""
"converting to %qT from initializer list would use explicit constructor %qD"
msgstr ""
-#: cp/call.c:4741
+#: cp/call.c:4753
#, gcc-internal-format
msgid "cannot bind bitfield %qE to %qT"
msgstr ""
-#: cp/call.c:4744 cp/call.c:4762
+#: cp/call.c:4756 cp/call.c:4774
#, gcc-internal-format
msgid "cannot bind packed field %qE to %qT"
msgstr ""
-#: cp/call.c:4747
+#: cp/call.c:4759
#, gcc-internal-format
msgid "cannot bind rvalue %qE to %qT"
msgstr ""
-#: cp/call.c:4871
+#: cp/call.c:4883
#, gcc-internal-format
msgid ""
"cannot pass objects of non-POD type %q#T through %<...%>; call will abort at "
@@ -28547,123 +28936,123 @@ msgid ""
msgstr ""
#. Undefined behavior [expr.call] 5.2.2/7.
-#: cp/call.c:4899
+#: cp/call.c:4911
#, gcc-internal-format
msgid ""
"cannot receive objects of non-POD type %q#T through %<...%>; call will abort "
"at runtime"
msgstr ""
-#: cp/call.c:4947
+#: cp/call.c:4959
#, gcc-internal-format
msgid "the default argument for parameter %d of %qD has not yet been parsed"
msgstr ""
-#: cp/call.c:4957
+#: cp/call.c:4969
#, gcc-internal-format
msgid "recursive evaluation of default argument for %q#D"
msgstr ""
-#: cp/call.c:5074
+#: cp/call.c:5086
#, gcc-internal-format
msgid "argument of function call might be a candidate for a format attribute"
msgstr ""
-#: cp/call.c:5228
+#: cp/call.c:5240
#, gcc-internal-format
msgid "passing %qT as %<this%> argument of %q#D discards qualifiers"
msgstr ""
-#: cp/call.c:5250
+#: cp/call.c:5262
#, gcc-internal-format
msgid "%qT is not an accessible base of %qT"
msgstr ""
-#: cp/call.c:5545
+#: cp/call.c:5557
#, gcc-internal-format
msgid "could not find class$ field in java interface type %qT"
msgstr ""
-#: cp/call.c:5788
+#: cp/call.c:5800
#, gcc-internal-format
msgid "call to non-function %qD"
msgstr ""
-#: cp/call.c:5927
+#: cp/call.c:5939
#, gcc-internal-format
msgid "no matching function for call to %<%T::%s(%A)%#V%>"
msgstr ""
-#: cp/call.c:5948
+#: cp/call.c:5960
#, gcc-internal-format
msgid "call of overloaded %<%s(%A)%> is ambiguous"
msgstr ""
-#: cp/call.c:5977
+#: cp/call.c:5989
#, gcc-internal-format
msgid "cannot call member function %qD without object"
msgstr ""
-#: cp/call.c:6665
+#: cp/call.c:6677
#, gcc-internal-format
msgid "passing %qT chooses %qT over %qT"
msgstr ""
-#: cp/call.c:6667 cp/name-lookup.c:4475 cp/name-lookup.c:4920
+#: cp/call.c:6679 cp/name-lookup.c:4474 cp/name-lookup.c:4919
#, gcc-internal-format
msgid " in call to %qD"
msgstr ""
-#: cp/call.c:6724
+#: cp/call.c:6736
#, gcc-internal-format
msgid "choosing %qD over %qD"
msgstr ""
-#: cp/call.c:6725
+#: cp/call.c:6737
#, gcc-internal-format
msgid " for conversion from %qT to %qT"
msgstr ""
-#: cp/call.c:6728
+#: cp/call.c:6740
#, gcc-internal-format
msgid " because conversion sequence for the argument is better"
msgstr ""
-#: cp/call.c:6846
+#: cp/call.c:6858
#, gcc-internal-format
msgid "default argument mismatch in overload resolution"
msgstr ""
-#: cp/call.c:6849
+#: cp/call.c:6861
#, gcc-internal-format
msgid " candidate 1: %q+#F"
msgstr ""
-#: cp/call.c:6851
+#: cp/call.c:6863
#, gcc-internal-format
msgid " candidate 2: %q+#F"
msgstr ""
-#: cp/call.c:6889
+#: cp/call.c:6901
#, gcc-internal-format
msgid ""
"ISO C++ says that these are ambiguous, even though the worst conversion for "
"the first is better than the worst conversion for the second:"
msgstr ""
-#: cp/call.c:7033
+#: cp/call.c:7045
#, gcc-internal-format
msgid "could not convert %qE to %qT"
msgstr ""
-#: cp/call.c:7239
+#: cp/call.c:7251
#, gcc-internal-format
msgid ""
"invalid initialization of non-const reference of type %qT from a temporary "
"of type %qT"
msgstr ""
-#: cp/call.c:7243
+#: cp/call.c:7255
#, gcc-internal-format
msgid ""
"invalid initialization of reference of type %qT from expression of type %qT"
@@ -29034,12 +29423,12 @@ msgstr ""
#. A name N used in a class S shall refer to the same declaration
#. in its context and when re-evaluated in the completed scope of
#. S.
-#: cp/class.c:6606 cp/decl.c:1182 cp/name-lookup.c:526
+#: cp/class.c:6588 cp/decl.c:1180 cp/name-lookup.c:525
#, gcc-internal-format
msgid "declaration of %q#D"
msgstr ""
-#: cp/class.c:6607
+#: cp/class.c:6589
#, gcc-internal-format
msgid "changes meaning of %qD from %q+#D"
msgstr ""
@@ -29079,7 +29468,7 @@ msgstr ""
msgid "conversion from %qT to %qT discards qualifiers"
msgstr ""
-#: cp/cvt.c:470 cp/typeck.c:5479
+#: cp/cvt.c:470 cp/typeck.c:5485
#, gcc-internal-format
msgid "casting %qT to %qT does not dereference pointer"
msgstr ""
@@ -29111,173 +29500,173 @@ msgstr ""
msgid "%q#T used where a floating point value was expected"
msgstr ""
-#: cp/cvt.c:763
+#: cp/cvt.c:769
#, gcc-internal-format
msgid "conversion from %qT to non-scalar type %qT requested"
msgstr ""
-#: cp/cvt.c:798
+#: cp/cvt.c:808
#, gcc-internal-format
msgid "pseudo-destructor is not called"
msgstr ""
-#: cp/cvt.c:860
+#: cp/cvt.c:870
#, gcc-internal-format
msgid "object of incomplete type %qT will not be accessed in %s"
msgstr ""
-#: cp/cvt.c:868
+#: cp/cvt.c:878
#, gcc-internal-format
msgid "object of type %qT will not be accessed in %s"
msgstr ""
-#: cp/cvt.c:884 cp/cvt.c:998
+#: cp/cvt.c:895 cp/cvt.c:1009
#, gcc-internal-format
msgid "value computed is not used"
msgstr ""
-#: cp/cvt.c:898
+#: cp/cvt.c:909
#, gcc-internal-format
msgid "object %qE of incomplete type %qT will not be accessed in %s"
msgstr ""
-#: cp/cvt.c:936
+#: cp/cvt.c:947
#, gcc-internal-format
msgid "%s cannot resolve address of overloaded function"
msgstr ""
-#: cp/cvt.c:946
+#: cp/cvt.c:957
#, gcc-internal-format
msgid "%s is a reference, not call, to function %qE"
msgstr ""
-#: cp/cvt.c:964
+#: cp/cvt.c:975
#, gcc-internal-format
msgid "%s has no effect"
msgstr ""
-#: cp/cvt.c:1108
+#: cp/cvt.c:1119
#, gcc-internal-format
msgid "converting NULL to non-pointer type"
msgstr ""
-#: cp/cvt.c:1214
+#: cp/cvt.c:1225
#, gcc-internal-format
msgid "ambiguous default type conversion from %qT"
msgstr ""
-#: cp/cvt.c:1216
+#: cp/cvt.c:1227
#, gcc-internal-format
msgid " candidate conversions include %qD and %qD"
msgstr ""
-#: cp/decl.c:1045
+#: cp/decl.c:1043
#, gcc-internal-format
msgid "%qD was declared %<extern%> and later %<static%>"
msgstr ""
-#: cp/decl.c:1046 cp/decl.c:1593 objc/objc-act.c:2939 objc/objc-act.c:7544
+#: cp/decl.c:1044 cp/decl.c:1591 objc/objc-act.c:2938 objc/objc-act.c:7539
#, gcc-internal-format
msgid "previous declaration of %q+D"
msgstr ""
-#: cp/decl.c:1079
+#: cp/decl.c:1077
#, gcc-internal-format
msgid "declaration of %qF throws different exceptions"
msgstr ""
-#: cp/decl.c:1080
+#: cp/decl.c:1078
#, gcc-internal-format
msgid "from previous declaration %q+F"
msgstr ""
-#: cp/decl.c:1136
+#: cp/decl.c:1134
#, gcc-internal-format
msgid "function %q+D redeclared as inline"
msgstr ""
-#: cp/decl.c:1138
+#: cp/decl.c:1136
#, gcc-internal-format
msgid "previous declaration of %q+D with attribute noinline"
msgstr ""
-#: cp/decl.c:1145
+#: cp/decl.c:1143
#, gcc-internal-format
msgid "function %q+D redeclared with attribute noinline"
msgstr ""
-#: cp/decl.c:1147
+#: cp/decl.c:1145
#, gcc-internal-format
msgid "previous declaration of %q+D was inline"
msgstr ""
-#: cp/decl.c:1169 cp/decl.c:1242
+#: cp/decl.c:1167 cp/decl.c:1240
#, gcc-internal-format
msgid "shadowing %s function %q#D"
msgstr ""
-#: cp/decl.c:1178
+#: cp/decl.c:1176
#, gcc-internal-format
msgid "library function %q#D redeclared as non-function %q#D"
msgstr ""
-#: cp/decl.c:1183
+#: cp/decl.c:1181
#, gcc-internal-format
msgid "conflicts with built-in declaration %q#D"
msgstr ""
-#: cp/decl.c:1237 cp/decl.c:1363 cp/decl.c:1379
+#: cp/decl.c:1235 cp/decl.c:1361 cp/decl.c:1377
#, gcc-internal-format
msgid "new declaration %q#D"
msgstr ""
-#: cp/decl.c:1238
+#: cp/decl.c:1236
#, gcc-internal-format
msgid "ambiguates built-in declaration %q#D"
msgstr ""
-#: cp/decl.c:1327
+#: cp/decl.c:1325
#, gcc-internal-format
msgid "%q#D redeclared as different kind of symbol"
msgstr ""
-#: cp/decl.c:1330
+#: cp/decl.c:1328
#, gcc-internal-format
msgid "previous declaration of %q+#D"
msgstr ""
-#: cp/decl.c:1349
+#: cp/decl.c:1347
#, gcc-internal-format
msgid "declaration of template %q#D"
msgstr ""
-#: cp/decl.c:1350 cp/name-lookup.c:527 cp/name-lookup.c:813
-#: cp/name-lookup.c:824
+#: cp/decl.c:1348 cp/name-lookup.c:526 cp/name-lookup.c:812
+#: cp/name-lookup.c:823
#, gcc-internal-format
msgid "conflicts with previous declaration %q+#D"
msgstr ""
-#: cp/decl.c:1364 cp/decl.c:1380
+#: cp/decl.c:1362 cp/decl.c:1378
#, gcc-internal-format
msgid "ambiguates old declaration %q+#D"
msgstr ""
-#: cp/decl.c:1372
+#: cp/decl.c:1370
#, gcc-internal-format
msgid "declaration of C function %q#D conflicts with"
msgstr ""
-#: cp/decl.c:1374
+#: cp/decl.c:1372
#, gcc-internal-format
msgid "previous declaration %q+#D here"
msgstr ""
-#: cp/decl.c:1388
+#: cp/decl.c:1386
#, gcc-internal-format
msgid "conflicting declaration %q#D"
msgstr ""
-#: cp/decl.c:1389
+#: cp/decl.c:1387
#, gcc-internal-format
msgid "%q+D has a previous declaration as %q#D"
msgstr ""
@@ -29289,63 +29678,63 @@ msgstr ""
#. A namespace-name defined at global scope shall not be
#. declared as the name of any other entity in any global scope
#. of the program.
-#: cp/decl.c:1441
+#: cp/decl.c:1439
#, gcc-internal-format
msgid "declaration of namespace %qD conflicts with"
msgstr ""
-#: cp/decl.c:1442
+#: cp/decl.c:1440
#, gcc-internal-format
msgid "previous declaration of namespace %q+D here"
msgstr ""
-#: cp/decl.c:1453
+#: cp/decl.c:1451
#, gcc-internal-format
msgid "%q+#D previously defined here"
msgstr ""
#. Prototype decl follows defn w/o prototype.
-#: cp/decl.c:1463
+#: cp/decl.c:1461
#, gcc-internal-format
msgid "prototype for %q+#D"
msgstr ""
-#: cp/decl.c:1464
+#: cp/decl.c:1462
#, gcc-internal-format
msgid "%Jfollows non-prototype definition here"
msgstr ""
-#: cp/decl.c:1504
+#: cp/decl.c:1502
#, gcc-internal-format
msgid "previous declaration of %q+#D with %qL linkage"
msgstr ""
-#: cp/decl.c:1506
+#: cp/decl.c:1504
#, gcc-internal-format
msgid "conflicts with new declaration with %qL linkage"
msgstr ""
-#: cp/decl.c:1529 cp/decl.c:1535
+#: cp/decl.c:1527 cp/decl.c:1533
#, gcc-internal-format
msgid "default argument given for parameter %d of %q#D"
msgstr ""
-#: cp/decl.c:1531 cp/decl.c:1537
+#: cp/decl.c:1529 cp/decl.c:1535
#, gcc-internal-format
msgid "after previous specification in %q+#D"
msgstr ""
-#: cp/decl.c:1592
+#: cp/decl.c:1590
#, gcc-internal-format
msgid "redundant redeclaration of %qD in same scope"
msgstr ""
-#: cp/decl.c:1598
+#: cp/decl.c:1596
#, gcc-internal-format
msgid "deleted definition of %qD"
msgstr ""
-#: cp/decl.c:1599
+#: cp/decl.c:1597
#, gcc-internal-format
msgid "after previous declaration %q+D"
msgstr ""
@@ -29358,334 +29747,334 @@ msgstr ""
#. that specialization that would cause an implicit
#. instantiation to take place, in every translation unit in
#. which such a use occurs.
-#: cp/decl.c:1935
+#: cp/decl.c:1933
#, gcc-internal-format
msgid "explicit specialization of %qD after first use"
msgstr ""
-#: cp/decl.c:2031
+#: cp/decl.c:2029
#, gcc-internal-format
msgid "%q+D: visibility attribute ignored because it"
msgstr ""
-#: cp/decl.c:2033
+#: cp/decl.c:2031
#, gcc-internal-format
msgid "%Jconflicts with previous declaration here"
msgstr ""
-#: cp/decl.c:2466
+#: cp/decl.c:2464
#, gcc-internal-format
msgid "jump to label %qD"
msgstr ""
-#: cp/decl.c:2468
+#: cp/decl.c:2466
#, gcc-internal-format
msgid "jump to case label"
msgstr ""
-#: cp/decl.c:2470
+#: cp/decl.c:2468
#, gcc-internal-format
msgid "%H from here"
msgstr ""
-#: cp/decl.c:2489 cp/decl.c:2652
+#: cp/decl.c:2487 cp/decl.c:2650
#, gcc-internal-format
msgid " exits OpenMP structured block"
msgstr ""
-#: cp/decl.c:2510
+#: cp/decl.c:2508
#, gcc-internal-format
msgid " crosses initialization of %q+#D"
msgstr ""
-#: cp/decl.c:2512 cp/decl.c:2627
+#: cp/decl.c:2510 cp/decl.c:2625
#, gcc-internal-format
msgid " enters scope of non-POD %q+#D"
msgstr ""
-#: cp/decl.c:2525 cp/decl.c:2631
+#: cp/decl.c:2523 cp/decl.c:2629
#, gcc-internal-format
msgid " enters try block"
msgstr ""
-#: cp/decl.c:2527 cp/decl.c:2633
+#: cp/decl.c:2525 cp/decl.c:2631
#, gcc-internal-format
msgid " enters catch block"
msgstr ""
-#: cp/decl.c:2537 cp/decl.c:2636
+#: cp/decl.c:2535 cp/decl.c:2634
#, gcc-internal-format
msgid " enters OpenMP structured block"
msgstr ""
-#: cp/decl.c:2608 cp/decl.c:2648
+#: cp/decl.c:2606 cp/decl.c:2646
#, gcc-internal-format
msgid "jump to label %q+D"
msgstr ""
-#: cp/decl.c:2609 cp/decl.c:2649
+#: cp/decl.c:2607 cp/decl.c:2647
#, gcc-internal-format
msgid " from here"
msgstr ""
#. Can't skip init of __exception_info.
-#: cp/decl.c:2621
+#: cp/decl.c:2619
#, gcc-internal-format
msgid "%J enters catch block"
msgstr ""
-#: cp/decl.c:2625
+#: cp/decl.c:2623
#, gcc-internal-format
msgid " skips initialization of %q+#D"
msgstr ""
-#: cp/decl.c:2701
+#: cp/decl.c:2699
#, gcc-internal-format
msgid "label named wchar_t"
msgstr ""
-#: cp/decl.c:2705
+#: cp/decl.c:2703
#, gcc-internal-format
msgid "duplicate label %qD"
msgstr ""
-#: cp/decl.c:2972
+#: cp/decl.c:2970
#, gcc-internal-format
msgid "%qD is not a type"
msgstr ""
-#: cp/decl.c:2978
+#: cp/decl.c:2976
#, gcc-internal-format
msgid "%qD used without template parameters"
msgstr ""
-#: cp/decl.c:2987
+#: cp/decl.c:2985
#, gcc-internal-format
msgid "%q#T is not a class"
msgstr ""
-#: cp/decl.c:3011 cp/decl.c:3079
+#: cp/decl.c:3009 cp/decl.c:3077
#, gcc-internal-format
msgid "no class template named %q#T in %q#T"
msgstr ""
-#: cp/decl.c:3019
+#: cp/decl.c:3017
#, gcc-internal-format
msgid "%<typename %T::%D%> names %q#T, which is not a class template"
msgstr ""
-#: cp/decl.c:3026
+#: cp/decl.c:3024
#, gcc-internal-format
msgid "%<typename %T::%D%> names %q#T, which is not a type"
msgstr ""
-#: cp/decl.c:3088
+#: cp/decl.c:3086
#, gcc-internal-format
msgid "template parameters do not match template"
msgstr ""
-#: cp/decl.c:3089 cp/friend.c:321 cp/friend.c:329
+#: cp/decl.c:3087 cp/friend.c:321 cp/friend.c:329
#, gcc-internal-format
msgid "%q+D declared here"
msgstr ""
-#: cp/decl.c:3772
+#: cp/decl.c:3770
#, gcc-internal-format
msgid "%Jan anonymous struct cannot have function members"
msgstr ""
-#: cp/decl.c:3774
+#: cp/decl.c:3772
#, gcc-internal-format
msgid "%Jan anonymous union cannot have function members"
msgstr ""
-#: cp/decl.c:3792
+#: cp/decl.c:3790
#, gcc-internal-format
msgid "member %q+#D with constructor not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:3795
+#: cp/decl.c:3793
#, gcc-internal-format
msgid "member %q+#D with destructor not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:3798
+#: cp/decl.c:3796
#, gcc-internal-format
msgid ""
"member %q+#D with copy assignment operator not allowed in anonymous aggregate"
msgstr ""
-#: cp/decl.c:3823
+#: cp/decl.c:3821
#, gcc-internal-format
msgid "multiple types in one declaration"
msgstr ""
-#: cp/decl.c:3827
+#: cp/decl.c:3825
#, gcc-internal-format
msgid "redeclaration of C++ built-in type %qT"
msgstr ""
-#: cp/decl.c:3864
+#: cp/decl.c:3862
#, gcc-internal-format
msgid "missing type-name in typedef-declaration"
msgstr ""
-#: cp/decl.c:3871
+#: cp/decl.c:3869
#, gcc-internal-format
msgid "ISO C++ prohibits anonymous structs"
msgstr ""
-#: cp/decl.c:3878
+#: cp/decl.c:3876
#, gcc-internal-format
msgid "%qs can only be specified for functions"
msgstr ""
-#: cp/decl.c:3884
+#: cp/decl.c:3882
#, gcc-internal-format
msgid "%<friend%> can only be specified inside a class"
msgstr ""
-#: cp/decl.c:3886
+#: cp/decl.c:3884
#, gcc-internal-format
msgid "%<explicit%> can only be specified for constructors"
msgstr ""
-#: cp/decl.c:3888
+#: cp/decl.c:3886
#, gcc-internal-format
msgid "a storage class can only be specified for objects and functions"
msgstr ""
-#: cp/decl.c:3894
+#: cp/decl.c:3892
#, gcc-internal-format
msgid "qualifiers can only be specified for objects and functions"
msgstr ""
-#: cp/decl.c:3897
+#: cp/decl.c:3895
#, gcc-internal-format
msgid "%<typedef%> was ignored in this declaration"
msgstr ""
-#: cp/decl.c:3926
+#: cp/decl.c:3924
#, gcc-internal-format
msgid "attribute ignored in declaration of %q+#T"
msgstr ""
-#: cp/decl.c:3927
+#: cp/decl.c:3925
#, gcc-internal-format
msgid "attribute for %q+#T must follow the %qs keyword"
msgstr ""
-#: cp/decl.c:3972
+#: cp/decl.c:3970
#, gcc-internal-format
msgid "ignoring attributes applied to class type %qT outside of definition"
msgstr ""
#. A template type parameter or other dependent type.
-#: cp/decl.c:3976
+#: cp/decl.c:3974
#, gcc-internal-format
msgid ""
"ignoring attributes applied to dependent type %qT without an associated "
"declaration"
msgstr ""
-#: cp/decl.c:4052
+#: cp/decl.c:4050
#, gcc-internal-format
msgid "typedef %qD is initialized (use decltype instead)"
msgstr ""
-#: cp/decl.c:4070
+#: cp/decl.c:4068
#, gcc-internal-format
msgid "declaration of %q#D has %<extern%> and is initialized"
msgstr ""
-#: cp/decl.c:4095
+#: cp/decl.c:4093
#, gcc-internal-format
msgid "definition of %q#D is marked %<dllimport%>"
msgstr ""
-#: cp/decl.c:4114
+#: cp/decl.c:4112
#, gcc-internal-format
msgid "%q#D is not a static member of %q#T"
msgstr ""
-#: cp/decl.c:4120
+#: cp/decl.c:4118
#, gcc-internal-format
msgid "ISO C++ does not permit %<%T::%D%> to be defined as %<%T::%D%>"
msgstr ""
-#: cp/decl.c:4129
+#: cp/decl.c:4127
#, gcc-internal-format
msgid ""
"template header not allowed in member definition of explicitly specialized "
"class"
msgstr ""
-#: cp/decl.c:4137
+#: cp/decl.c:4135
#, gcc-internal-format
msgid "duplicate initialization of %qD"
msgstr ""
-#: cp/decl.c:4176
+#: cp/decl.c:4174
#, gcc-internal-format
msgid "declaration of %q#D outside of class is not definition"
msgstr ""
-#: cp/decl.c:4271
+#: cp/decl.c:4269
#, gcc-internal-format
msgid "variable %q#D has initializer but incomplete type"
msgstr ""
-#: cp/decl.c:4277 cp/decl.c:5025
+#: cp/decl.c:4275 cp/decl.c:5023
#, gcc-internal-format
msgid "elements of array %q#D have incomplete type"
msgstr ""
-#: cp/decl.c:4284 cp/decl.c:5521
+#: cp/decl.c:4282 cp/decl.c:5519
#, gcc-internal-format
msgid "declaration of %q#D has no initializer"
msgstr ""
-#: cp/decl.c:4286
+#: cp/decl.c:4284
#, gcc-internal-format
msgid "aggregate %q#D has incomplete type and cannot be defined"
msgstr ""
-#: cp/decl.c:4322
+#: cp/decl.c:4320
#, gcc-internal-format
msgid "%qD declared as reference but not initialized"
msgstr ""
-#: cp/decl.c:4328
+#: cp/decl.c:4326
#, gcc-internal-format
msgid "ISO C++ forbids use of initializer list to initialize reference %qD"
msgstr ""
-#: cp/decl.c:4354
+#: cp/decl.c:4352
#, gcc-internal-format
msgid "cannot initialize %qT from %qT"
msgstr ""
-#: cp/decl.c:4415
+#: cp/decl.c:4413
#, gcc-internal-format
msgid "name used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4420
+#: cp/decl.c:4418
#, gcc-internal-format
msgid "name %qD used in a GNU-style designated initializer for an array"
msgstr ""
-#: cp/decl.c:4470
+#: cp/decl.c:4468
#, gcc-internal-format
msgid "initializer fails to determine size of %qD"
msgstr ""
-#: cp/decl.c:4477
+#: cp/decl.c:4475
#, gcc-internal-format
msgid "array size missing in %qD"
msgstr ""
-#: cp/decl.c:4489
+#: cp/decl.c:4487
#, gcc-internal-format
msgid "zero-size array %qD"
msgstr ""
@@ -29693,273 +30082,273 @@ msgstr ""
#. An automatic variable with an incomplete type: that is an error.
#. Don't talk about array types here, since we took care of that
#. message in grokdeclarator.
-#: cp/decl.c:4532
+#: cp/decl.c:4530
#, gcc-internal-format
msgid "storage size of %qD isn't known"
msgstr ""
-#: cp/decl.c:4555
+#: cp/decl.c:4553
#, gcc-internal-format
msgid "storage size of %qD isn't constant"
msgstr ""
-#: cp/decl.c:4606
+#: cp/decl.c:4604
#, gcc-internal-format
msgid ""
"sorry: semantics of inline function static data %q+#D are wrong (you'll wind "
"up with multiple copies)"
msgstr ""
-#: cp/decl.c:4609
+#: cp/decl.c:4607
#, gcc-internal-format
msgid "%J you can work around this by removing the initializer"
msgstr ""
-#: cp/decl.c:4636
+#: cp/decl.c:4634
#, gcc-internal-format
msgid "uninitialized const %qD"
msgstr ""
-#: cp/decl.c:4748
+#: cp/decl.c:4746
#, gcc-internal-format
msgid "invalid type %qT as initializer for a vector of type %qT"
msgstr ""
-#: cp/decl.c:4790
+#: cp/decl.c:4788
#, gcc-internal-format
msgid "initializer for %qT must be brace-enclosed"
msgstr ""
-#: cp/decl.c:4808
+#: cp/decl.c:4806
#, gcc-internal-format
msgid "%qT has no non-static data member named %qD"
msgstr ""
-#: cp/decl.c:4864
+#: cp/decl.c:4862
#, gcc-internal-format
msgid "braces around scalar initializer for type %qT"
msgstr ""
-#: cp/decl.c:4950
+#: cp/decl.c:4948
#, gcc-internal-format
msgid "missing braces around initializer for %qT"
msgstr ""
-#: cp/decl.c:5007 cp/typeck2.c:1087 cp/typeck2.c:1110 cp/typeck2.c:1153
+#: cp/decl.c:5005 cp/typeck2.c:1086 cp/typeck2.c:1109 cp/typeck2.c:1152
#, gcc-internal-format
msgid "too many initializers for %qT"
msgstr ""
-#: cp/decl.c:5027
+#: cp/decl.c:5025
#, gcc-internal-format
msgid "elements of array %q#T have incomplete type"
msgstr ""
-#: cp/decl.c:5036
+#: cp/decl.c:5034
#, gcc-internal-format
msgid "variable-sized object %qD may not be initialized"
msgstr ""
-#: cp/decl.c:5038
+#: cp/decl.c:5036
#, gcc-internal-format
msgid "variable-sized compound literal"
msgstr ""
-#: cp/decl.c:5092
+#: cp/decl.c:5090
#, gcc-internal-format
msgid "%qD has incomplete type"
msgstr ""
-#: cp/decl.c:5112
+#: cp/decl.c:5110
#, gcc-internal-format
msgid "scalar object %qD requires one element in initializer"
msgstr ""
-#: cp/decl.c:5143
+#: cp/decl.c:5141
#, gcc-internal-format
msgid "in C++98 %qD must be initialized by constructor, not by %<{...}%>"
msgstr ""
-#: cp/decl.c:5175
+#: cp/decl.c:5173
#, gcc-internal-format
msgid "array %qD initialized by parenthesized string literal %qE"
msgstr ""
-#: cp/decl.c:5189
+#: cp/decl.c:5187
#, gcc-internal-format
msgid "structure %qD with uninitialized const members"
msgstr ""
-#: cp/decl.c:5191
+#: cp/decl.c:5189
#, gcc-internal-format
msgid "structure %qD with uninitialized reference members"
msgstr ""
-#: cp/decl.c:5488
+#: cp/decl.c:5486
#, gcc-internal-format
msgid "assignment (not initialization) in declaration"
msgstr ""
-#: cp/decl.c:5547 cp/decl2.c:853
+#: cp/decl.c:5545 cp/decl2.c:853
#, gcc-internal-format
msgid "%qD cannot be defaulted"
msgstr ""
-#: cp/decl.c:5623
+#: cp/decl.c:5621
#, gcc-internal-format
msgid "shadowing previous type declaration of %q#D"
msgstr ""
-#: cp/decl.c:5653
+#: cp/decl.c:5651
#, gcc-internal-format
msgid "%qD cannot be thread-local because it has non-POD type %qT"
msgstr ""
-#: cp/decl.c:5685
+#: cp/decl.c:5683
#, gcc-internal-format
msgid "Java object %qD not allocated with %<new%>"
msgstr ""
-#: cp/decl.c:5702
+#: cp/decl.c:5700
#, gcc-internal-format
msgid "%qD is thread-local and so cannot be dynamically initialized"
msgstr ""
-#: cp/decl.c:5720
+#: cp/decl.c:5718
#, gcc-internal-format
msgid ""
"%qD cannot be initialized by a non-constant expression when being declared"
msgstr ""
-#: cp/decl.c:5760
+#: cp/decl.c:5758
#, gcc-internal-format
msgid "non-static data member %qD has Java class type"
msgstr ""
-#: cp/decl.c:5824
+#: cp/decl.c:5822
#, gcc-internal-format
msgid "function %q#D is initialized like a variable"
msgstr ""
-#: cp/decl.c:6413
+#: cp/decl.c:6411
#, gcc-internal-format
msgid "destructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6415
+#: cp/decl.c:6413
#, gcc-internal-format
msgid "constructor for alien class %qT cannot be a member"
msgstr ""
-#: cp/decl.c:6436
+#: cp/decl.c:6434
#, gcc-internal-format
msgid "%qD declared as a %<virtual%> %s"
msgstr ""
-#: cp/decl.c:6438
+#: cp/decl.c:6436
#, gcc-internal-format
msgid "%qD declared as an %<inline%> %s"
msgstr ""
-#: cp/decl.c:6440
+#: cp/decl.c:6438
#, gcc-internal-format
msgid ""
"%<const%> and %<volatile%> function specifiers on %qD invalid in %s "
"declaration"
msgstr ""
-#: cp/decl.c:6444
+#: cp/decl.c:6442
#, gcc-internal-format
msgid "%q+D declared as a friend"
msgstr ""
-#: cp/decl.c:6450
+#: cp/decl.c:6448
#, gcc-internal-format
msgid "%q+D declared with an exception specification"
msgstr ""
-#: cp/decl.c:6484
+#: cp/decl.c:6482
#, gcc-internal-format
msgid "definition of %qD is not in namespace enclosing %qT"
msgstr ""
-#: cp/decl.c:6604
+#: cp/decl.c:6602
#, gcc-internal-format
msgid "defining explicit specialization %qD in friend declaration"
msgstr ""
#. Something like `template <class T> friend void f<T>()'.
-#: cp/decl.c:6614
+#: cp/decl.c:6612
#, gcc-internal-format
msgid "invalid use of template-id %qD in declaration of primary template"
msgstr ""
-#: cp/decl.c:6644
+#: cp/decl.c:6642
#, gcc-internal-format
msgid ""
"default arguments are not allowed in declaration of friend template "
"specialization %qD"
msgstr ""
-#: cp/decl.c:6652
+#: cp/decl.c:6650
#, gcc-internal-format
msgid ""
"%<inline%> is not allowed in declaration of friend template specialization %"
"qD"
msgstr ""
-#: cp/decl.c:6695
+#: cp/decl.c:6693
#, gcc-internal-format
msgid "cannot declare %<::main%> to be a template"
msgstr ""
-#: cp/decl.c:6697
+#: cp/decl.c:6695
#, gcc-internal-format
msgid "cannot declare %<::main%> to be inline"
msgstr ""
-#: cp/decl.c:6699
+#: cp/decl.c:6697
#, gcc-internal-format
msgid "cannot declare %<::main%> to be static"
msgstr ""
-#: cp/decl.c:6727
+#: cp/decl.c:6725
#, gcc-internal-format
msgid "non-local function %q#D uses anonymous type"
msgstr ""
-#: cp/decl.c:6730 cp/decl.c:7006
+#: cp/decl.c:6728 cp/decl.c:7004
#, gcc-internal-format
msgid ""
"%q+#D does not refer to the unqualified type, so it is not used for linkage"
msgstr ""
-#: cp/decl.c:6736
+#: cp/decl.c:6734
#, gcc-internal-format
msgid "non-local function %q#D uses local type %qT"
msgstr ""
-#: cp/decl.c:6755
+#: cp/decl.c:6753
#, gcc-internal-format
msgid "static member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:6756
+#: cp/decl.c:6754
#, gcc-internal-format
msgid "non-member function %qD cannot have cv-qualifier"
msgstr ""
-#: cp/decl.c:6804
+#: cp/decl.c:6802
#, gcc-internal-format
msgid "%<::main%> must return %<int%>"
msgstr ""
-#: cp/decl.c:6844
+#: cp/decl.c:6842
#, gcc-internal-format
msgid "definition of implicitly-declared %qD"
msgstr ""
-#: cp/decl.c:6861 cp/decl2.c:685
+#: cp/decl.c:6859 cp/decl2.c:685
#, gcc-internal-format
msgid "no %q#D member function declared in class %qT"
msgstr ""
@@ -29968,594 +30357,619 @@ msgstr ""
#. no linkage can only be used to declare extern "C"
#. entities. Since it's not always an error in the
#. ISO C++ 90 Standard, we only issue a warning.
-#: cp/decl.c:7003
+#: cp/decl.c:7001
#, gcc-internal-format
msgid "non-local variable %q#D uses anonymous type"
msgstr ""
-#: cp/decl.c:7012
+#: cp/decl.c:7010
#, gcc-internal-format
msgid "non-local variable %q#D uses local type %qT"
msgstr ""
-#: cp/decl.c:7135
+#: cp/decl.c:7133
#, gcc-internal-format
msgid ""
"invalid in-class initialization of static data member of non-integral type %"
"qT"
msgstr ""
-#: cp/decl.c:7145
+#: cp/decl.c:7143
#, gcc-internal-format
msgid "ISO C++ forbids in-class initialization of non-const static member %qD"
msgstr ""
-#: cp/decl.c:7149
+#: cp/decl.c:7147
#, gcc-internal-format
msgid ""
"ISO C++ forbids initialization of member constant %qD of non-integral type %"
"qT"
msgstr ""
-#: cp/decl.c:7174
+#: cp/decl.c:7172
#, gcc-internal-format
msgid "size of array %qD has non-integral type %qT"
msgstr ""
-#: cp/decl.c:7176
+#: cp/decl.c:7174
#, gcc-internal-format
msgid "size of array has non-integral type %qT"
msgstr ""
-#: cp/decl.c:7228
+#: cp/decl.c:7226
#, gcc-internal-format
msgid "size of array %qD is negative"
msgstr ""
-#: cp/decl.c:7230
+#: cp/decl.c:7228
#, gcc-internal-format
msgid "size of array is negative"
msgstr ""
-#: cp/decl.c:7238
+#: cp/decl.c:7236
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array %qD"
msgstr ""
-#: cp/decl.c:7240
+#: cp/decl.c:7238
#, gcc-internal-format
msgid "ISO C++ forbids zero-size array"
msgstr ""
-#: cp/decl.c:7247
+#: cp/decl.c:7245
#, gcc-internal-format
msgid "size of array %qD is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:7250
+#: cp/decl.c:7248
#, gcc-internal-format
msgid "size of array is not an integral constant-expression"
msgstr ""
-#: cp/decl.c:7256
+#: cp/decl.c:7254
#, gcc-internal-format
msgid "ISO C++ forbids variable length array %qD"
msgstr ""
-#: cp/decl.c:7258
+#: cp/decl.c:7256
#, gcc-internal-format
msgid "ISO C++ forbids variable length array"
msgstr ""
-#: cp/decl.c:7264
+#: cp/decl.c:7262
#, gcc-internal-format
msgid "variable length array %qD is used"
msgstr ""
-#: cp/decl.c:7300
+#: cp/decl.c:7298
#, gcc-internal-format
msgid "overflow in array dimension"
msgstr ""
-#: cp/decl.c:7381
+#: cp/decl.c:7379
#, gcc-internal-format
msgid "declaration of %qD as %s"
msgstr ""
-#: cp/decl.c:7383
+#: cp/decl.c:7381
#, gcc-internal-format
msgid "creating %s"
msgstr ""
-#: cp/decl.c:7395
+#: cp/decl.c:7393
#, gcc-internal-format
msgid ""
"declaration of %qD as multidimensional array must have bounds for all "
"dimensions except the first"
msgstr ""
-#: cp/decl.c:7399
+#: cp/decl.c:7397
#, gcc-internal-format
msgid ""
"multidimensional array must have bounds for all dimensions except the first"
msgstr ""
-#: cp/decl.c:7434
+#: cp/decl.c:7432
#, gcc-internal-format
msgid "return type specification for constructor invalid"
msgstr ""
-#: cp/decl.c:7444
+#: cp/decl.c:7442
#, gcc-internal-format
msgid "return type specification for destructor invalid"
msgstr ""
-#: cp/decl.c:7457
+#: cp/decl.c:7455
#, gcc-internal-format
msgid "return type specified for %<operator %T%>"
msgstr ""
-#: cp/decl.c:7479
+#: cp/decl.c:7477
#, gcc-internal-format
msgid "unnamed variable or field declared void"
msgstr ""
-#: cp/decl.c:7483
-#, gcc-internal-format
-msgid "variable or field %qE declared void"
-msgstr ""
-
-#: cp/decl.c:7486
+#: cp/decl.c:7484
#, gcc-internal-format
msgid "variable or field declared void"
msgstr ""
-#: cp/decl.c:7659
+#: cp/decl.c:7657
#, gcc-internal-format
msgid "invalid use of qualified-name %<::%D%>"
msgstr ""
-#: cp/decl.c:7662
+#: cp/decl.c:7660
#, gcc-internal-format
msgid "invalid use of qualified-name %<%T::%D%>"
msgstr ""
-#: cp/decl.c:7665
+#: cp/decl.c:7663
#, gcc-internal-format
msgid "invalid use of qualified-name %<%D::%D%>"
msgstr ""
-#: cp/decl.c:7677
+#: cp/decl.c:7675
#, gcc-internal-format
msgid "type %qT is not derived from type %qT"
msgstr ""
-#: cp/decl.c:7693 cp/decl.c:7785 cp/decl.c:8987
+#: cp/decl.c:7691 cp/decl.c:7783 cp/decl.c:8985
#, gcc-internal-format
msgid "declaration of %qD as non-function"
msgstr ""
-#: cp/decl.c:7699
+#: cp/decl.c:7697
#, gcc-internal-format
msgid "declaration of %qD as non-member"
msgstr ""
-#: cp/decl.c:7730
+#: cp/decl.c:7728
#, gcc-internal-format
msgid "declarator-id missing; using reserved word %qD"
msgstr ""
-#: cp/decl.c:7777
+#: cp/decl.c:7775
#, gcc-internal-format
msgid "function definition does not declare parameters"
msgstr ""
-#: cp/decl.c:7819
+#: cp/decl.c:7817
#, gcc-internal-format
msgid "two or more data types in declaration of %qs"
msgstr ""
-#: cp/decl.c:7825
+#: cp/decl.c:7823
#, gcc-internal-format
msgid "conflicting specifiers in declaration of %qs"
msgstr ""
-#: cp/decl.c:7896 cp/decl.c:7899 cp/decl.c:7902
+#: cp/decl.c:7894 cp/decl.c:7897 cp/decl.c:7900
#, gcc-internal-format
msgid "ISO C++ forbids declaration of %qs with no type"
msgstr ""
-#: cp/decl.c:7927 cp/decl.c:7945
+#: cp/decl.c:7925 cp/decl.c:7943
#, gcc-internal-format
msgid "%<signed%> or %<unsigned%> invalid for %qs"
msgstr ""
-#: cp/decl.c:7929
+#: cp/decl.c:7927
#, gcc-internal-format
msgid "%<signed%> and %<unsigned%> specified together for %qs"
msgstr ""
-#: cp/decl.c:7931
+#: cp/decl.c:7929
#, gcc-internal-format
msgid "%<long long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:7933
+#: cp/decl.c:7931
#, gcc-internal-format
msgid "%<long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:7935
+#: cp/decl.c:7933
#, gcc-internal-format
msgid "%<short%> invalid for %qs"
msgstr ""
-#: cp/decl.c:7937
+#: cp/decl.c:7935
#, gcc-internal-format
msgid "%<long%> or %<short%> invalid for %qs"
msgstr ""
-#: cp/decl.c:7939
+#: cp/decl.c:7937
#, gcc-internal-format
msgid "%<long%> or %<short%> specified with char for %qs"
msgstr ""
-#: cp/decl.c:7941
+#: cp/decl.c:7939
#, gcc-internal-format
msgid "%<long%> and %<short%> specified together for %qs"
msgstr ""
-#: cp/decl.c:7947
+#: cp/decl.c:7945
#, gcc-internal-format
msgid "%<short%> or %<long%> invalid for %qs"
msgstr ""
-#: cp/decl.c:7955
+#: cp/decl.c:7953
#, gcc-internal-format
msgid "long, short, signed or unsigned used invalidly for %qs"
msgstr ""
-#: cp/decl.c:8019
+#: cp/decl.c:8017
#, gcc-internal-format
msgid "complex invalid for %qs"
msgstr ""
-#: cp/decl.c:8048
+#: cp/decl.c:8046
#, gcc-internal-format
msgid "qualifiers are not allowed on declaration of %<operator %T%>"
msgstr ""
-#: cp/decl.c:8061 cp/typeck.c:7286
+#: cp/decl.c:8059 cp/typeck.c:7293
#, gcc-internal-format
msgid "ignoring %qV qualifiers added to function type %qT"
msgstr ""
-#: cp/decl.c:8084
+#: cp/decl.c:8082
#, gcc-internal-format
msgid "member %qD cannot be declared both virtual and static"
msgstr ""
-#: cp/decl.c:8092
+#: cp/decl.c:8090
#, gcc-internal-format
msgid "%<%T::%D%> is not a valid declarator"
msgstr ""
-#: cp/decl.c:8101
+#: cp/decl.c:8099
#, gcc-internal-format
msgid "typedef declaration invalid in parameter declaration"
msgstr ""
-#: cp/decl.c:8107
+#: cp/decl.c:8105
#, gcc-internal-format
msgid "storage class specifiers invalid in parameter declarations"
msgstr ""
-#: cp/decl.c:8111
+#: cp/decl.c:8109
#, gcc-internal-format
msgid "parameter declared %<auto%>"
msgstr ""
-#: cp/decl.c:8120
+#: cp/decl.c:8118
#, gcc-internal-format
msgid "%<virtual%> outside class declaration"
msgstr ""
-#: cp/decl.c:8138
+#: cp/decl.c:8136
#, gcc-internal-format
msgid "multiple storage classes in declaration of %qs"
msgstr ""
-#: cp/decl.c:8161
+#: cp/decl.c:8159
#, gcc-internal-format
msgid "storage class specified for %qs"
msgstr ""
-#: cp/decl.c:8182
+#: cp/decl.c:8163
+#, gcc-internal-format
+msgid "storage class specified for parameter %qs"
+msgstr ""
+
+#: cp/decl.c:8176
+#, gcc-internal-format
+msgid "nested function %qs declared %<extern%>"
+msgstr ""
+
+#: cp/decl.c:8180
#, gcc-internal-format
msgid "top-level declaration of %qs specifies %<auto%>"
msgstr ""
-#: cp/decl.c:8195
+#: cp/decl.c:8186
+#, gcc-internal-format
+msgid "function-scope %qs implicitly auto and declared %<__thread%>"
+msgstr ""
+
+#: cp/decl.c:8193
#, gcc-internal-format
msgid "storage class specifiers invalid in friend function declarations"
msgstr ""
-#: cp/decl.c:8310
+#: cp/decl.c:8282
+#, gcc-internal-format
+msgid "%qs declared as function returning a function"
+msgstr ""
+
+#: cp/decl.c:8287
+#, gcc-internal-format
+msgid "%qs declared as function returning an array"
+msgstr ""
+
+#: cp/decl.c:8308
#, gcc-internal-format
msgid "%qs function uses %<auto%> type specifier without late return type"
msgstr ""
-#: cp/decl.c:8316
+#: cp/decl.c:8314
#, gcc-internal-format
msgid ""
"%qs function with late return type has %qT as its type rather than plain %"
"<auto%>"
msgstr ""
-#: cp/decl.c:8324
+#: cp/decl.c:8322
#, gcc-internal-format
msgid ""
"%qs function with late return type not declared with %<auto%> type specifier"
msgstr ""
-#: cp/decl.c:8357
+#: cp/decl.c:8355
#, gcc-internal-format
msgid "destructor cannot be static member function"
msgstr ""
-#: cp/decl.c:8362
+#: cp/decl.c:8360
#, gcc-internal-format
msgid "destructors may not be cv-qualified"
msgstr ""
-#: cp/decl.c:8380
+#: cp/decl.c:8378
#, gcc-internal-format
msgid "constructors cannot be declared virtual"
msgstr ""
-#: cp/decl.c:8393
+#: cp/decl.c:8391
#, gcc-internal-format
msgid "can't initialize friend function %qs"
msgstr ""
#. Cannot be both friend and virtual.
-#: cp/decl.c:8397
+#: cp/decl.c:8395
#, gcc-internal-format
msgid "virtual functions cannot be friends"
msgstr ""
-#: cp/decl.c:8401
+#: cp/decl.c:8399
#, gcc-internal-format
msgid "friend declaration not in class definition"
msgstr ""
-#: cp/decl.c:8403
+#: cp/decl.c:8401
#, gcc-internal-format
msgid "can't define friend function %qs in a local class definition"
msgstr ""
-#: cp/decl.c:8416
+#: cp/decl.c:8414
#, gcc-internal-format
msgid "destructors may not have parameters"
msgstr ""
-#: cp/decl.c:8435
+#: cp/decl.c:8433
#, gcc-internal-format
msgid "cannot declare pointer to %q#T"
msgstr ""
-#: cp/decl.c:8448 cp/decl.c:8455
+#: cp/decl.c:8446 cp/decl.c:8453
#, gcc-internal-format
msgid "cannot declare reference to %q#T"
msgstr ""
-#: cp/decl.c:8457
+#: cp/decl.c:8455
#, gcc-internal-format
msgid "cannot declare pointer to %q#T member"
msgstr ""
-#: cp/decl.c:8477
+#: cp/decl.c:8475
#, gcc-internal-format
msgid "cannot declare %s to qualified function type %qT"
msgstr ""
-#: cp/decl.c:8514
+#: cp/decl.c:8512
#, gcc-internal-format
msgid ""
"cannot declare reference to %q#T, which is not a typedef or a template type "
"argument"
msgstr ""
-#: cp/decl.c:8558
+#: cp/decl.c:8556
#, gcc-internal-format
msgid "template-id %qD used as a declarator"
msgstr ""
-#: cp/decl.c:8609
+#: cp/decl.c:8607
#, gcc-internal-format
msgid "member functions are implicitly friends of their class"
msgstr ""
-#: cp/decl.c:8614
+#: cp/decl.c:8612
#, gcc-internal-format
msgid "extra qualification %<%T::%> on member %qs"
msgstr ""
-#: cp/decl.c:8646
+#: cp/decl.c:8644
#, gcc-internal-format
msgid "cannot define member function %<%T::%s%> within %<%T%>"
msgstr ""
-#: cp/decl.c:8663
+#: cp/decl.c:8661
#, gcc-internal-format
msgid "cannot declare member %<%T::%s%> within %qT"
msgstr ""
-#: cp/decl.c:8686
+#: cp/decl.c:8684
#, gcc-internal-format
msgid "non-parameter %qs cannot be a parameter pack"
msgstr ""
-#: cp/decl.c:8707
+#: cp/decl.c:8694
+#, gcc-internal-format
+msgid "size of array %qs is too large"
+msgstr ""
+
+#: cp/decl.c:8705
#, gcc-internal-format
msgid "data member may not have variably modified type %qT"
msgstr ""
-#: cp/decl.c:8709
+#: cp/decl.c:8707
#, gcc-internal-format
msgid "parameter may not have variably modified type %qT"
msgstr ""
#. [dcl.fct.spec] The explicit specifier shall only be used in
#. declarations of constructors within a class definition.
-#: cp/decl.c:8717
+#: cp/decl.c:8715
#, gcc-internal-format
msgid "only declarations of constructors can be %<explicit%>"
msgstr ""
-#: cp/decl.c:8725
+#: cp/decl.c:8723
#, gcc-internal-format
msgid "non-member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:8730
+#: cp/decl.c:8728
#, gcc-internal-format
msgid "non-object member %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:8736
+#: cp/decl.c:8734
#, gcc-internal-format
msgid "function %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:8741
+#: cp/decl.c:8739
#, gcc-internal-format
msgid "static %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:8746
+#: cp/decl.c:8744
#, gcc-internal-format
msgid "const %qs cannot be declared %<mutable%>"
msgstr ""
-#: cp/decl.c:8783
+#: cp/decl.c:8781
#, gcc-internal-format
msgid "%Jtypedef name may not be a nested-name-specifier"
msgstr ""
-#: cp/decl.c:8801
+#: cp/decl.c:8799
#, gcc-internal-format
msgid "ISO C++ forbids nested type %qD with same name as enclosing class"
msgstr ""
-#: cp/decl.c:8889
+#: cp/decl.c:8887
#, gcc-internal-format
msgid ""
"qualified function types cannot be used to declare static member functions"
msgstr ""
-#: cp/decl.c:8891
+#: cp/decl.c:8889
#, gcc-internal-format
msgid "qualified function types cannot be used to declare free functions"
msgstr ""
-#: cp/decl.c:8917
+#: cp/decl.c:8915
#, gcc-internal-format
msgid "type qualifiers specified for friend class declaration"
msgstr ""
-#: cp/decl.c:8922
+#: cp/decl.c:8920
#, gcc-internal-format
msgid "%<inline%> specified for friend class declaration"
msgstr ""
-#: cp/decl.c:8930
+#: cp/decl.c:8928
#, gcc-internal-format
msgid "template parameters cannot be friends"
msgstr ""
-#: cp/decl.c:8932
+#: cp/decl.c:8930
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend class %T::%D%>"
msgstr ""
-#: cp/decl.c:8936
+#: cp/decl.c:8934
#, gcc-internal-format
msgid "friend declaration requires class-key, i.e. %<friend %#T%>"
msgstr ""
-#: cp/decl.c:8949
+#: cp/decl.c:8947
#, gcc-internal-format
msgid "trying to make class %qT a friend of global scope"
msgstr ""
-#: cp/decl.c:8967
+#: cp/decl.c:8965
#, gcc-internal-format
msgid "invalid qualifiers on non-member function type"
msgstr ""
-#: cp/decl.c:8977
+#: cp/decl.c:8975
#, gcc-internal-format
msgid "abstract declarator %qT used as declaration"
msgstr ""
-#: cp/decl.c:9006
+#: cp/decl.c:9004
#, gcc-internal-format
msgid "cannot use %<::%> in parameter declaration"
msgstr ""
#. Something like struct S { int N::j; };
-#: cp/decl.c:9052
+#: cp/decl.c:9050
#, gcc-internal-format
msgid "invalid use of %<::%>"
msgstr ""
-#: cp/decl.c:9067
+#: cp/decl.c:9065
#, gcc-internal-format
msgid "can't make %qD into a method -- not in a class"
msgstr ""
-#: cp/decl.c:9076
+#: cp/decl.c:9074
#, gcc-internal-format
msgid "function %qD declared virtual inside a union"
msgstr ""
-#: cp/decl.c:9085
+#: cp/decl.c:9083
#, gcc-internal-format
msgid "%qD cannot be declared virtual, since it is always static"
msgstr ""
-#: cp/decl.c:9103
+#: cp/decl.c:9101
#, gcc-internal-format
msgid "expected qualified name in friend declaration for destructor %qD"
msgstr ""
-#: cp/decl.c:9110
+#: cp/decl.c:9108
#, gcc-internal-format
msgid "declaration of %qD as member of %qT"
msgstr ""
-#: cp/decl.c:9117
+#: cp/decl.c:9115
#, gcc-internal-format
msgid "expected qualified name in friend declaration for constructor %qD"
msgstr ""
-#: cp/decl.c:9180
+#: cp/decl.c:9178
#, gcc-internal-format
msgid "field %qD has incomplete type"
msgstr ""
-#: cp/decl.c:9182
+#: cp/decl.c:9180
#, gcc-internal-format
msgid "name %qT has incomplete type"
msgstr ""
-#: cp/decl.c:9191
+#: cp/decl.c:9189
#, gcc-internal-format
msgid " in instantiation of template %qT"
msgstr ""
-#: cp/decl.c:9200
+#: cp/decl.c:9198
#, gcc-internal-format
msgid "%qE is neither function nor member function; cannot be declared friend"
msgstr ""
@@ -30572,117 +30986,127 @@ msgstr ""
#. the rest of the compiler does not correctly
#. handle the initialization unless the member is
#. static so we make it static below.
-#: cp/decl.c:9252
+#: cp/decl.c:9250
#, gcc-internal-format
msgid "ISO C++ forbids initialization of member %qD"
msgstr ""
-#: cp/decl.c:9254
+#: cp/decl.c:9252
#, gcc-internal-format
msgid "making %qD static"
msgstr ""
-#: cp/decl.c:9319
+#: cp/decl.c:9317
#, gcc-internal-format
msgid "storage class %<auto%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:9321
+#: cp/decl.c:9319
#, gcc-internal-format
msgid "storage class %<register%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:9323
+#: cp/decl.c:9321
#, gcc-internal-format
msgid "storage class %<__thread%> invalid for function %qs"
msgstr ""
-#: cp/decl.c:9335
+#: cp/decl.c:9333
#, gcc-internal-format
msgid ""
"%<static%> specified invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:9339
+#: cp/decl.c:9337
#, gcc-internal-format
msgid ""
"%<inline%> specifier invalid for function %qs declared out of global scope"
msgstr ""
-#: cp/decl.c:9346
+#: cp/decl.c:9344
#, gcc-internal-format
msgid "%q#T is not a class or a namespace"
msgstr ""
-#: cp/decl.c:9354
+#: cp/decl.c:9352
#, gcc-internal-format
msgid "virtual non-class function %qs"
msgstr ""
-#: cp/decl.c:9361
+#: cp/decl.c:9359
#, gcc-internal-format
msgid "%qs defined in a non-class scope"
msgstr ""
-#: cp/decl.c:9394
+#: cp/decl.c:9392
#, gcc-internal-format
msgid "cannot declare member function %qD to have static linkage"
msgstr ""
#. FIXME need arm citation
-#: cp/decl.c:9401
+#: cp/decl.c:9399
#, gcc-internal-format
msgid "cannot declare static function inside another function"
msgstr ""
-#: cp/decl.c:9431
+#: cp/decl.c:9429
#, gcc-internal-format
msgid ""
"%<static%> may not be used when defining (as opposed to declaring) a static "
"data member"
msgstr ""
-#: cp/decl.c:9438
+#: cp/decl.c:9436
#, gcc-internal-format
msgid "static member %qD declared %<register%>"
msgstr ""
-#: cp/decl.c:9444
+#: cp/decl.c:9442
#, gcc-internal-format
msgid "cannot explicitly declare member %q#D to have extern linkage"
msgstr ""
-#: cp/decl.c:9588
+#: cp/decl.c:9456
+#, gcc-internal-format
+msgid "%qs initialized and declared %<extern%>"
+msgstr ""
+
+#: cp/decl.c:9460
+#, gcc-internal-format
+msgid "%qs has both %<extern%> and initializer"
+msgstr ""
+
+#: cp/decl.c:9586
#, gcc-internal-format
msgid "default argument for %q#D has type %qT"
msgstr ""
-#: cp/decl.c:9591
+#: cp/decl.c:9589
#, gcc-internal-format
msgid "default argument for parameter of type %qT has type %qT"
msgstr ""
-#: cp/decl.c:9607
+#: cp/decl.c:9605
#, gcc-internal-format
msgid "default argument %qE uses local variable %qD"
msgstr ""
-#: cp/decl.c:9690
+#: cp/decl.c:9688
#, gcc-internal-format
msgid "parameter %qD has Java class type"
msgstr ""
-#: cp/decl.c:9710
+#: cp/decl.c:9708
#, gcc-internal-format
msgid "parameter %qD invalidly declared method type"
msgstr ""
-#: cp/decl.c:9734
+#: cp/decl.c:9732
#, gcc-internal-format
msgid "parameter %qD includes %s to array of unknown bound %qT"
msgstr ""
-#: cp/decl.c:9749
+#: cp/decl.c:9747
#, gcc-internal-format
msgid "parameter packs must be at the end of the parameter list"
msgstr ""
@@ -30702,139 +31126,139 @@ msgstr ""
#. or implicitly defined), there's no need to worry about their
#. existence. Theoretically, they should never even be
#. instantiated, but that's hard to forestall.
-#: cp/decl.c:9972
+#: cp/decl.c:9970
#, gcc-internal-format
msgid "invalid constructor; you probably meant %<%T (const %T&)%>"
msgstr ""
-#: cp/decl.c:10094
+#: cp/decl.c:10092
#, gcc-internal-format
msgid "%qD may not be declared within a namespace"
msgstr ""
-#: cp/decl.c:10099
+#: cp/decl.c:10097
#, gcc-internal-format
msgid "%qD may not be declared as static"
msgstr ""
-#: cp/decl.c:10125
+#: cp/decl.c:10123
#, gcc-internal-format
msgid "%qD must be a nonstatic member function"
msgstr ""
-#: cp/decl.c:10134
+#: cp/decl.c:10132
#, gcc-internal-format
msgid ""
"%qD must be either a non-static member function or a non-member function"
msgstr ""
-#: cp/decl.c:10156
+#: cp/decl.c:10154
#, gcc-internal-format
msgid "%qD must have an argument of class or enumerated type"
msgstr ""
-#: cp/decl.c:10197
+#: cp/decl.c:10195
#, gcc-internal-format
msgid "conversion to %s%s will never use a type conversion operator"
msgstr ""
#. 13.4.0.3
-#: cp/decl.c:10205
+#: cp/decl.c:10203
#, gcc-internal-format
msgid "ISO C++ prohibits overloading operator ?:"
msgstr ""
-#: cp/decl.c:10210
+#: cp/decl.c:10208
#, gcc-internal-format
msgid "%qD must not have variable number of arguments"
msgstr ""
-#: cp/decl.c:10261
+#: cp/decl.c:10259
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its argument"
msgstr ""
-#: cp/decl.c:10264
+#: cp/decl.c:10262
#, gcc-internal-format
msgid "postfix %qD must take %<int%> as its second argument"
msgstr ""
-#: cp/decl.c:10272
+#: cp/decl.c:10270
#, gcc-internal-format
msgid "%qD must take either zero or one argument"
msgstr ""
-#: cp/decl.c:10274
+#: cp/decl.c:10272
#, gcc-internal-format
msgid "%qD must take either one or two arguments"
msgstr ""
-#: cp/decl.c:10296
+#: cp/decl.c:10294
#, gcc-internal-format
msgid "prefix %qD should return %qT"
msgstr ""
-#: cp/decl.c:10302
+#: cp/decl.c:10300
#, gcc-internal-format
msgid "postfix %qD should return %qT"
msgstr ""
-#: cp/decl.c:10311
+#: cp/decl.c:10309
#, gcc-internal-format
msgid "%qD must take %<void%>"
msgstr ""
-#: cp/decl.c:10313 cp/decl.c:10322
+#: cp/decl.c:10311 cp/decl.c:10320
#, gcc-internal-format
msgid "%qD must take exactly one argument"
msgstr ""
-#: cp/decl.c:10324
+#: cp/decl.c:10322
#, gcc-internal-format
msgid "%qD must take exactly two arguments"
msgstr ""
-#: cp/decl.c:10333
+#: cp/decl.c:10331
#, gcc-internal-format
msgid "user-defined %qD always evaluates both arguments"
msgstr ""
-#: cp/decl.c:10347
+#: cp/decl.c:10345
#, gcc-internal-format
msgid "%qD should return by value"
msgstr ""
-#: cp/decl.c:10358 cp/decl.c:10363
+#: cp/decl.c:10356 cp/decl.c:10361
#, gcc-internal-format
msgid "%qD cannot have default arguments"
msgstr ""
-#: cp/decl.c:10421
+#: cp/decl.c:10419
#, gcc-internal-format
msgid "using template type parameter %qT after %qs"
msgstr ""
-#: cp/decl.c:10436
+#: cp/decl.c:10434
#, gcc-internal-format
msgid "using typedef-name %qD after %qs"
msgstr ""
-#: cp/decl.c:10437
+#: cp/decl.c:10435
#, gcc-internal-format
msgid "%q+D has a previous declaration here"
msgstr ""
-#: cp/decl.c:10445
+#: cp/decl.c:10443
#, gcc-internal-format
msgid "%qT referred to as %qs"
msgstr ""
-#: cp/decl.c:10446 cp/decl.c:10453
+#: cp/decl.c:10444 cp/decl.c:10451
#, gcc-internal-format
msgid "%q+T has a previous declaration here"
msgstr ""
-#: cp/decl.c:10452
+#: cp/decl.c:10450
#, gcc-internal-format
msgid "%qT referred to as enum"
msgstr ""
@@ -30846,77 +31270,77 @@ msgstr ""
#. void f(class C); // No template header here
#.
#. then the required template argument is missing.
-#: cp/decl.c:10467
+#: cp/decl.c:10465
#, gcc-internal-format
msgid "template argument required for %<%s %T%>"
msgstr ""
-#: cp/decl.c:10515 cp/name-lookup.c:2808
+#: cp/decl.c:10513 cp/name-lookup.c:2807
#, gcc-internal-format
msgid "%qD has the same name as the class in which it is declared"
msgstr ""
-#: cp/decl.c:10545 cp/name-lookup.c:2316
+#: cp/decl.c:10543 cp/name-lookup.c:2315
#, gcc-internal-format
msgid "reference to %qD is ambiguous"
msgstr ""
-#: cp/decl.c:10659
+#: cp/decl.c:10657
#, gcc-internal-format
msgid "use of enum %q#D without previous declaration"
msgstr ""
-#: cp/decl.c:10680
+#: cp/decl.c:10678
#, gcc-internal-format
msgid "redeclaration of %qT as a non-template"
msgstr ""
-#: cp/decl.c:10681
+#: cp/decl.c:10679
#, gcc-internal-format
msgid "previous declaration %q+D"
msgstr ""
-#: cp/decl.c:10795
+#: cp/decl.c:10793
#, gcc-internal-format
msgid "derived union %qT invalid"
msgstr ""
-#: cp/decl.c:10804
+#: cp/decl.c:10802
#, gcc-internal-format
msgid "Java class %qT cannot have multiple bases"
msgstr ""
-#: cp/decl.c:10815
+#: cp/decl.c:10813
#, gcc-internal-format
msgid "Java class %qT cannot have virtual bases"
msgstr ""
-#: cp/decl.c:10835
+#: cp/decl.c:10833
#, gcc-internal-format
msgid "base type %qT fails to be a struct or class type"
msgstr ""
-#: cp/decl.c:10868
+#: cp/decl.c:10866
#, gcc-internal-format
msgid "recursive type %qT undefined"
msgstr ""
-#: cp/decl.c:10870
+#: cp/decl.c:10868
#, gcc-internal-format
msgid "duplicate base type %qT invalid"
msgstr ""
-#: cp/decl.c:10954
+#: cp/decl.c:10952
#, gcc-internal-format
msgid "multiple definition of %q#T"
msgstr ""
-#: cp/decl.c:10955
+#: cp/decl.c:10953
#, gcc-internal-format
msgid "%Jprevious definition here"
msgstr ""
-#: cp/decl.c:11002
+#: cp/decl.c:11000
#, gcc-internal-format
msgid "underlying type %<%T%> of %<%T%> must be an integral type"
msgstr ""
@@ -30925,62 +31349,62 @@ msgstr ""
#.
#. IF no integral type can represent all the enumerator values, the
#. enumeration is ill-formed.
-#: cp/decl.c:11134
+#: cp/decl.c:11132
#, gcc-internal-format
msgid "no integral type can represent all of the enumerator values for %qT"
msgstr ""
-#: cp/decl.c:11265
+#: cp/decl.c:11263
#, gcc-internal-format
msgid "enumerator value for %qD is not an integer constant"
msgstr ""
-#: cp/decl.c:11297
+#: cp/decl.c:11295
#, gcc-internal-format
msgid "overflow in enumeration values at %qD"
msgstr ""
-#: cp/decl.c:11317
+#: cp/decl.c:11315
#, gcc-internal-format
msgid "enumerator value %E is too large for underlying type %<%T%>"
msgstr ""
-#: cp/decl.c:11414
+#: cp/decl.c:11412
#, gcc-internal-format
msgid "return type %q#T is incomplete"
msgstr ""
-#: cp/decl.c:11416
+#: cp/decl.c:11414
#, gcc-internal-format
msgid "return type has Java class type %q#T"
msgstr ""
-#: cp/decl.c:11541 cp/typeck.c:6970
+#: cp/decl.c:11539 cp/typeck.c:6977
#, gcc-internal-format
msgid "%<operator=%> should return a reference to %<*this%>"
msgstr ""
-#: cp/decl.c:11856
+#: cp/decl.c:11854
#, gcc-internal-format
msgid "invalid function declaration"
msgstr ""
-#: cp/decl.c:11940
+#: cp/decl.c:11938
#, gcc-internal-format
msgid "parameter %qD declared void"
msgstr ""
-#: cp/decl.c:12442
+#: cp/decl.c:12440
#, gcc-internal-format
msgid "invalid member function declaration"
msgstr ""
-#: cp/decl.c:12457
+#: cp/decl.c:12455
#, gcc-internal-format
msgid "%qD is already defined in class %qT"
msgstr ""
-#: cp/decl.c:12704
+#: cp/decl.c:12702
#, gcc-internal-format
msgid "static member function %q#D declared with type qualifiers"
msgstr ""
@@ -31200,7 +31624,7 @@ msgstr ""
#. We really want to suppress this warning in system headers,
#. because libstdc++ uses variadic templates even when we aren't
#. in C++0x mode.
-#: cp/error.c:2798
+#: cp/error.c:2825
#, gcc-internal-format
msgid "%s only available with -std=c++0x or -std=gnu++0x"
msgstr ""
@@ -31468,7 +31892,7 @@ msgstr ""
msgid "bad array initializer"
msgstr ""
-#: cp/init.c:1440 cp/semantics.c:2537
+#: cp/init.c:1440 cp/semantics.c:2536
#, gcc-internal-format
msgid "%qT is not a class type"
msgstr ""
@@ -31644,32 +32068,32 @@ msgid ""
"use of an undeclared name is deprecated)"
msgstr ""
-#: cp/mangle.c:1690
+#: cp/mangle.c:1689
#, gcc-internal-format
msgid "mangling typeof, use decltype instead"
msgstr ""
-#: cp/mangle.c:1903
+#: cp/mangle.c:1902
#, gcc-internal-format
msgid "mangling unknown fixed point type"
msgstr ""
-#: cp/mangle.c:2332
+#: cp/mangle.c:2331
#, gcc-internal-format
msgid "mangling %C"
msgstr ""
-#: cp/mangle.c:2387
+#: cp/mangle.c:2386
#, gcc-internal-format
msgid "mangling new-expression"
msgstr ""
-#: cp/mangle.c:2407
+#: cp/mangle.c:2406
#, gcc-internal-format
msgid "omitted middle operand to %<?:%> operand cannot be mangled"
msgstr ""
-#: cp/mangle.c:2722
+#: cp/mangle.c:2721
#, gcc-internal-format
msgid "the mangled name of %qD will change in a future version of GCC"
msgstr ""
@@ -31701,7 +32125,7 @@ msgid ""
"future version of GCC due to implicit virtual destructor"
msgstr ""
-#: cp/name-lookup.c:734
+#: cp/name-lookup.c:733
#, gcc-internal-format
msgid "redeclaration of %<wchar_t%> as %qT"
msgstr ""
@@ -31712,597 +32136,597 @@ msgstr ""
#. [basic.start.main]
#.
#. This function shall not be overloaded.
-#: cp/name-lookup.c:764
+#: cp/name-lookup.c:763
#, gcc-internal-format
msgid "invalid redeclaration of %q+D"
msgstr ""
-#: cp/name-lookup.c:765
+#: cp/name-lookup.c:764
#, gcc-internal-format
msgid "as %qD"
msgstr ""
-#: cp/name-lookup.c:811 cp/name-lookup.c:822
+#: cp/name-lookup.c:810 cp/name-lookup.c:821
#, gcc-internal-format
msgid "declaration of %q#D with C language linkage"
msgstr ""
-#: cp/name-lookup.c:815
+#: cp/name-lookup.c:814
#, gcc-internal-format
msgid "due to different exception specifications"
msgstr ""
-#: cp/name-lookup.c:906
+#: cp/name-lookup.c:905
#, gcc-internal-format
msgid "type mismatch with previous external decl of %q#D"
msgstr ""
-#: cp/name-lookup.c:907
+#: cp/name-lookup.c:906
#, gcc-internal-format
msgid "previous external decl of %q+#D"
msgstr ""
-#: cp/name-lookup.c:998
+#: cp/name-lookup.c:997
#, gcc-internal-format
msgid "extern declaration of %q#D doesn't match"
msgstr ""
-#: cp/name-lookup.c:999
+#: cp/name-lookup.c:998
#, gcc-internal-format
msgid "global declaration %q+#D"
msgstr ""
-#: cp/name-lookup.c:1041 cp/name-lookup.c:1048
+#: cp/name-lookup.c:1040 cp/name-lookup.c:1047
#, gcc-internal-format
msgid "declaration of %q#D shadows a parameter"
msgstr ""
#. Location of previous decl is not useful in this case.
-#: cp/name-lookup.c:1073
+#: cp/name-lookup.c:1072
#, gcc-internal-format
msgid "declaration of %qD shadows a member of 'this'"
msgstr ""
-#: cp/name-lookup.c:1079
+#: cp/name-lookup.c:1078
#, gcc-internal-format
msgid "declaration of %qD shadows a previous local"
msgstr ""
-#: cp/name-lookup.c:1086
+#: cp/name-lookup.c:1085
#, gcc-internal-format
msgid "declaration of %qD shadows a global declaration"
msgstr ""
-#: cp/name-lookup.c:1209
+#: cp/name-lookup.c:1208
#, gcc-internal-format
msgid "name lookup of %qD changed"
msgstr ""
-#: cp/name-lookup.c:1210
+#: cp/name-lookup.c:1209
#, gcc-internal-format
msgid " matches this %q+D under ISO standard rules"
msgstr ""
-#: cp/name-lookup.c:1212
+#: cp/name-lookup.c:1211
#, gcc-internal-format
msgid " matches this %q+D under old rules"
msgstr ""
-#: cp/name-lookup.c:1230 cp/name-lookup.c:1238
+#: cp/name-lookup.c:1229 cp/name-lookup.c:1237
#, gcc-internal-format
msgid "name lookup of %qD changed for ISO %<for%> scoping"
msgstr ""
-#: cp/name-lookup.c:1232
+#: cp/name-lookup.c:1231
#, gcc-internal-format
msgid " cannot use obsolete binding at %q+D because it has a destructor"
msgstr ""
-#: cp/name-lookup.c:1241
+#: cp/name-lookup.c:1240
#, gcc-internal-format
msgid " using obsolete binding at %q+D"
msgstr ""
-#: cp/name-lookup.c:1247 cp/parser.c:10158
+#: cp/name-lookup.c:1246 cp/parser.c:10152
#, gcc-internal-format
msgid "(if you use %<-fpermissive%> G++ will accept your code)"
msgstr ""
-#: cp/name-lookup.c:1303
+#: cp/name-lookup.c:1302
#, gcc-internal-format
msgid "%s %s(%E) %p %d\n"
msgstr ""
-#: cp/name-lookup.c:1306
+#: cp/name-lookup.c:1305
#, gcc-internal-format
msgid "%s %s %p %d\n"
msgstr ""
-#: cp/name-lookup.c:1434
+#: cp/name-lookup.c:1433
#, gcc-internal-format
msgid "XXX is_class_level != (current_scope == class_scope)\n"
msgstr ""
-#: cp/name-lookup.c:2029
+#: cp/name-lookup.c:2028
#, gcc-internal-format
msgid "%q#D hides constructor for %q#T"
msgstr ""
-#: cp/name-lookup.c:2046
+#: cp/name-lookup.c:2045
#, gcc-internal-format
msgid "%q#D conflicts with previous using declaration %q#D"
msgstr ""
-#: cp/name-lookup.c:2069
+#: cp/name-lookup.c:2068
#, gcc-internal-format
msgid "previous non-function declaration %q+#D"
msgstr ""
-#: cp/name-lookup.c:2070
+#: cp/name-lookup.c:2069
#, gcc-internal-format
msgid "conflicts with function declaration %q#D"
msgstr ""
#. It's a nested name with template parameter dependent scope.
#. This can only be using-declaration for class member.
-#: cp/name-lookup.c:2148 cp/name-lookup.c:2173
+#: cp/name-lookup.c:2147 cp/name-lookup.c:2172
#, gcc-internal-format
msgid "%qT is not a namespace"
msgstr ""
#. 7.3.3/5
#. A using-declaration shall not name a template-id.
-#: cp/name-lookup.c:2158
+#: cp/name-lookup.c:2157
#, gcc-internal-format
msgid "a using-declaration cannot specify a template-id. Try %<using %D%>"
msgstr ""
-#: cp/name-lookup.c:2165
+#: cp/name-lookup.c:2164
#, gcc-internal-format
msgid "namespace %qD not allowed in using-declaration"
msgstr ""
-#: cp/name-lookup.c:2201
+#: cp/name-lookup.c:2200
#, gcc-internal-format
msgid "%qD not declared"
msgstr ""
-#: cp/name-lookup.c:2237 cp/name-lookup.c:2274 cp/name-lookup.c:2308
-#: cp/name-lookup.c:2323
+#: cp/name-lookup.c:2236 cp/name-lookup.c:2273 cp/name-lookup.c:2307
+#: cp/name-lookup.c:2322
#, gcc-internal-format
msgid "%qD is already declared in this scope"
msgstr ""
-#: cp/name-lookup.c:2927
+#: cp/name-lookup.c:2926
#, gcc-internal-format
msgid "using-declaration for non-member at class scope"
msgstr ""
-#: cp/name-lookup.c:2934
+#: cp/name-lookup.c:2933
#, gcc-internal-format
msgid "%<%T::%D%> names destructor"
msgstr ""
-#: cp/name-lookup.c:2939
+#: cp/name-lookup.c:2938
#, gcc-internal-format
msgid "%<%T::%D%> names constructor"
msgstr ""
-#: cp/name-lookup.c:2944
+#: cp/name-lookup.c:2943
#, gcc-internal-format
msgid "%<%T::%D%> names constructor in %qT"
msgstr ""
-#: cp/name-lookup.c:2994
+#: cp/name-lookup.c:2993
#, gcc-internal-format
msgid "no members matching %<%T::%D%> in %q#T"
msgstr ""
-#: cp/name-lookup.c:3062
+#: cp/name-lookup.c:3061
#, gcc-internal-format
msgid "declaration of %qD not in a namespace surrounding %qD"
msgstr ""
-#: cp/name-lookup.c:3070
+#: cp/name-lookup.c:3069
#, gcc-internal-format
msgid "explicit qualification in declaration of %qD"
msgstr ""
-#: cp/name-lookup.c:3113
+#: cp/name-lookup.c:3112
#, gcc-internal-format
msgid "%qD should have been declared inside %qD"
msgstr ""
-#: cp/name-lookup.c:3158
+#: cp/name-lookup.c:3157
#, gcc-internal-format
msgid "%qD attribute requires a single NTBS argument"
msgstr ""
-#: cp/name-lookup.c:3165
+#: cp/name-lookup.c:3164
#, gcc-internal-format
msgid ""
"%qD attribute is meaningless since members of the anonymous namespace get "
"local symbols"
msgstr ""
-#: cp/name-lookup.c:3174 cp/name-lookup.c:3544
+#: cp/name-lookup.c:3173 cp/name-lookup.c:3543
#, gcc-internal-format
msgid "%qD attribute directive ignored"
msgstr ""
-#: cp/name-lookup.c:3219
+#: cp/name-lookup.c:3218
#, gcc-internal-format
msgid "namespace alias %qD not allowed here, assuming %qD"
msgstr ""
-#: cp/name-lookup.c:3532
+#: cp/name-lookup.c:3531
#, gcc-internal-format
msgid "strong using only meaningful at namespace scope"
msgstr ""
-#: cp/name-lookup.c:3536
+#: cp/name-lookup.c:3535
#, gcc-internal-format
msgid "current namespace %qD does not enclose strongly used namespace %qD"
msgstr ""
-#: cp/name-lookup.c:4473
+#: cp/name-lookup.c:4472
#, gcc-internal-format
msgid "%q+D is not a function,"
msgstr ""
-#: cp/name-lookup.c:4474
+#: cp/name-lookup.c:4473
#, gcc-internal-format
msgid " conflict with %q+D"
msgstr ""
-#: cp/name-lookup.c:4919
+#: cp/name-lookup.c:4918
#, gcc-internal-format
msgid "argument dependent lookup finds %q+D"
msgstr ""
-#: cp/name-lookup.c:5360
+#: cp/name-lookup.c:5359
#, gcc-internal-format
msgid "XXX entering pop_everything ()\n"
msgstr ""
-#: cp/name-lookup.c:5369
+#: cp/name-lookup.c:5368
#, gcc-internal-format
msgid "XXX leaving pop_everything ()\n"
msgstr ""
-#: cp/parser.c:440
+#: cp/parser.c:431
#, gcc-internal-format
-msgid "identifier %<%s%> will become a keyword in C++0x"
+msgid "identifier %qE will become a keyword in C++0x"
msgstr ""
-#: cp/parser.c:2084
+#: cp/parser.c:2078
#, gcc-internal-format
msgid "%H%<#pragma%> is not allowed here"
msgstr ""
-#: cp/parser.c:2115
+#: cp/parser.c:2109
#, gcc-internal-format
msgid "%H%<%E::%E%> has not been declared"
msgstr ""
-#: cp/parser.c:2118
+#: cp/parser.c:2112
#, gcc-internal-format
msgid "%H%<::%E%> has not been declared"
msgstr ""
-#: cp/parser.c:2121
+#: cp/parser.c:2115
#, gcc-internal-format
msgid "%Hrequest for member %qE in non-class type %qT"
msgstr ""
-#: cp/parser.c:2124
+#: cp/parser.c:2118
#, gcc-internal-format
msgid "%H%<%T::%E%> has not been declared"
msgstr ""
-#: cp/parser.c:2127
+#: cp/parser.c:2121
#, gcc-internal-format
msgid "%H%qE has not been declared"
msgstr ""
-#: cp/parser.c:2130
+#: cp/parser.c:2124
#, gcc-internal-format
msgid "%H%<%E::%E%> %s"
msgstr ""
-#: cp/parser.c:2132
+#: cp/parser.c:2126
#, gcc-internal-format
msgid "%H%<::%E%> %s"
msgstr ""
-#: cp/parser.c:2134
+#: cp/parser.c:2128
#, gcc-internal-format
msgid "%H%qE %s"
msgstr ""
-#: cp/parser.c:2169
+#: cp/parser.c:2163
#, gcc-internal-format
msgid "%H%<long long long%> is too long for GCC"
msgstr ""
-#: cp/parser.c:2172
+#: cp/parser.c:2166
#, gcc-internal-format
msgid "ISO C++ 1998 does not support %<long long%>"
msgstr ""
-#: cp/parser.c:2192
+#: cp/parser.c:2186
#, gcc-internal-format
msgid "%Hduplicate %qs"
msgstr ""
-#: cp/parser.c:2236
+#: cp/parser.c:2230
#, gcc-internal-format
msgid "%Hnew types may not be defined in a return type"
msgstr ""
-#: cp/parser.c:2238
+#: cp/parser.c:2232
#, gcc-internal-format
msgid "(perhaps a semicolon is missing after the definition of %qT)"
msgstr ""
-#: cp/parser.c:2258
+#: cp/parser.c:2252
#, gcc-internal-format
msgid "%H%qT is not a template"
msgstr ""
-#: cp/parser.c:2260
+#: cp/parser.c:2254
#, gcc-internal-format
msgid "%H%qE is not a template"
msgstr ""
-#: cp/parser.c:2262
+#: cp/parser.c:2256
#, gcc-internal-format
msgid "%Hinvalid template-id"
msgstr ""
-#: cp/parser.c:2324
+#: cp/parser.c:2318
#, gcc-internal-format
msgid "%Hinvalid use of template-name %qE without an argument list"
msgstr ""
-#: cp/parser.c:2327
+#: cp/parser.c:2321
#, gcc-internal-format
msgid "%Hinvalid use of destructor %qD as a type"
msgstr ""
#. Something like 'unsigned A a;'
-#: cp/parser.c:2330
+#: cp/parser.c:2324
#, gcc-internal-format
msgid "%Hinvalid combination of multiple type-specifiers"
msgstr ""
#. Issue an error message.
-#: cp/parser.c:2335
+#: cp/parser.c:2329
#, gcc-internal-format
msgid "%H%qE does not name a type"
msgstr ""
-#: cp/parser.c:2368
+#: cp/parser.c:2362
#, gcc-internal-format
msgid "(perhaps %<typename %T::%E%> was intended)"
msgstr ""
-#: cp/parser.c:2383
+#: cp/parser.c:2377
#, gcc-internal-format
msgid "%H%qE in namespace %qE does not name a type"
msgstr ""
-#: cp/parser.c:2386
+#: cp/parser.c:2380
#, gcc-internal-format
msgid "%H%qE in class %qT does not name a type"
msgstr ""
-#: cp/parser.c:2950
+#: cp/parser.c:2944
#, gcc-internal-format
msgid "%Hunsupported non-standard concatenation of string literals"
msgstr ""
-#: cp/parser.c:3153
+#: cp/parser.c:3147
#, gcc-internal-format
msgid "%Hfixed-point types not supported in C++"
msgstr ""
-#: cp/parser.c:3234
+#: cp/parser.c:3228
#, gcc-internal-format
msgid "ISO C++ forbids braced-groups within expressions"
msgstr ""
-#: cp/parser.c:3245
+#: cp/parser.c:3239
#, gcc-internal-format
msgid ""
"%Hstatement-expressions are not allowed outside functions nor in template-"
"argument lists"
msgstr ""
-#: cp/parser.c:3304
+#: cp/parser.c:3298
#, gcc-internal-format
msgid "%H%<this%> may not be used in this context"
msgstr ""
-#: cp/parser.c:3513
+#: cp/parser.c:3507
#, gcc-internal-format
msgid "%Hlocal variable %qD may not appear in this context"
msgstr ""
-#: cp/parser.c:3813
+#: cp/parser.c:3807
#, gcc-internal-format
msgid "%Hscope %qT before %<~%> is not a class-name"
msgstr ""
-#: cp/parser.c:3927
+#: cp/parser.c:3921
#, gcc-internal-format
msgid "%Hdeclaration of %<~%T%> as member of %qT"
msgstr ""
-#: cp/parser.c:3941
+#: cp/parser.c:3935
#, gcc-internal-format
msgid "%Htypedef-name %qD used as destructor declarator"
msgstr ""
-#: cp/parser.c:4155
+#: cp/parser.c:4149
#, gcc-internal-format
msgid "%H%qD used without template parameters"
msgstr ""
-#: cp/parser.c:4159 cp/parser.c:14879 cp/parser.c:17171
+#: cp/parser.c:4153 cp/parser.c:14879 cp/parser.c:17176
#, gcc-internal-format
msgid "%Hreference to %qD is ambiguous"
msgstr ""
-#: cp/parser.c:4205 cp/pt.c:5660
+#: cp/parser.c:4199 cp/pt.c:5660
#, gcc-internal-format
msgid "%qT is not a template"
msgstr ""
#. Warn the user that a compound literal is not
#. allowed in standard C++.
-#: cp/parser.c:4629
+#: cp/parser.c:4623
#, gcc-internal-format
msgid "ISO C++ forbids compound-literals"
msgstr ""
-#: cp/parser.c:5002
+#: cp/parser.c:4996
#, gcc-internal-format
msgid "%H%qE does not have class type"
msgstr ""
-#: cp/parser.c:5086
+#: cp/parser.c:5080
#, gcc-internal-format
msgid "%Hinvalid use of %qD"
msgstr ""
-#: cp/parser.c:5665
+#: cp/parser.c:5659
#, gcc-internal-format
msgid "%Harray bound forbidden after parenthesized type-id"
msgstr ""
-#: cp/parser.c:5668
+#: cp/parser.c:5662
#, gcc-internal-format
msgid "try removing the parentheses around the type-id"
msgstr ""
-#: cp/parser.c:5861
+#: cp/parser.c:5855
#, gcc-internal-format
msgid "%Hexpression in new-declarator must have integral or enumeration type"
msgstr ""
-#: cp/parser.c:6117
+#: cp/parser.c:6111
#, gcc-internal-format
msgid "use of old-style cast"
msgstr ""
-#: cp/parser.c:6248
+#: cp/parser.c:6242
#, gcc-internal-format
msgid "%H%<>>%> operator will be treated as two right angle brackets in C++0x"
msgstr ""
-#: cp/parser.c:6251
+#: cp/parser.c:6245
#, gcc-internal-format
msgid "suggest parentheses around %<>>%> expression"
msgstr ""
-#: cp/parser.c:7088
+#: cp/parser.c:7082
#, gcc-internal-format
msgid "%Hcase label %qE not within a switch statement"
msgstr ""
-#: cp/parser.c:7100
+#: cp/parser.c:7094
#, gcc-internal-format
msgid "%Hcase label not within a switch statement"
msgstr ""
-#: cp/parser.c:7218
+#: cp/parser.c:7212
#, gcc-internal-format
msgid "%H%<else%> without a previous %<if%>"
msgstr ""
-#: cp/parser.c:7697
+#: cp/parser.c:7691
#, gcc-internal-format
msgid "%Hbreak statement not within loop or switch"
msgstr ""
-#: cp/parser.c:7705 cp/parser.c:7725
+#: cp/parser.c:7699 cp/parser.c:7719
#, gcc-internal-format
msgid "%Hinvalid exit from OpenMP structured block"
msgstr ""
-#: cp/parser.c:7708
+#: cp/parser.c:7702
#, gcc-internal-format
msgid "%Hbreak statement used with OpenMP for loop"
msgstr ""
-#: cp/parser.c:7718
+#: cp/parser.c:7712
#, gcc-internal-format
msgid "%Hcontinue statement not within a loop"
msgstr ""
#. Issue a warning about this use of a GNU extension.
-#: cp/parser.c:7761
+#: cp/parser.c:7755
#, gcc-internal-format
msgid "ISO C++ forbids computed gotos"
msgstr ""
-#: cp/parser.c:7905 cp/parser.c:15753
+#: cp/parser.c:7899 cp/parser.c:15753
#, gcc-internal-format
msgid "extra %<;%>"
msgstr ""
-#: cp/parser.c:8126
+#: cp/parser.c:8120
#, gcc-internal-format
msgid "%H%<__label__%> not at the beginning of a block"
msgstr ""
-#: cp/parser.c:8263
+#: cp/parser.c:8257
#, gcc-internal-format
msgid "%Hmixing declarations and function-definitions is forbidden"
msgstr ""
-#: cp/parser.c:8403
+#: cp/parser.c:8397
#, gcc-internal-format
msgid "%H%<friend%> used outside of class"
msgstr ""
-#: cp/parser.c:8459
+#: cp/parser.c:8453
#, gcc-internal-format
msgid "%H%<auto%> will change meaning in C++0x; please remove it"
msgstr ""
-#: cp/parser.c:8578
+#: cp/parser.c:8572
#, gcc-internal-format
msgid "%Hclass definition may not be declared a friend"
msgstr ""
-#: cp/parser.c:8648 cp/parser.c:16075
+#: cp/parser.c:8642 cp/parser.c:16075
#, gcc-internal-format
msgid "%Htemplates may not be %<virtual%>"
msgstr ""
-#: cp/parser.c:9051
+#: cp/parser.c:9045
#, gcc-internal-format
msgid "invalid use of %<auto%> in conversion operator"
msgstr ""
-#: cp/parser.c:9135
+#: cp/parser.c:9129
#, gcc-internal-format
msgid "%Honly constructors take base initializers"
msgstr ""
-#: cp/parser.c:9157
+#: cp/parser.c:9151
#, gcc-internal-format
msgid "%Hcannot expand initializer for member %<%D%>"
msgstr ""
-#: cp/parser.c:9212
+#: cp/parser.c:9206
#, gcc-internal-format
msgid "anachronistic old-style base class initializer"
msgstr ""
-#: cp/parser.c:9272
+#: cp/parser.c:9266
#, gcc-internal-format
msgid ""
"%Hkeyword %<typename%> not allowed in this context (a qualified member "
@@ -32310,54 +32734,59 @@ msgid ""
msgstr ""
#. Warn that we do not support `export'.
-#: cp/parser.c:9618
+#: cp/parser.c:9612
#, gcc-internal-format
msgid "keyword %<export%> not implemented, and will be ignored"
msgstr ""
-#: cp/parser.c:9800 cp/parser.c:9898 cp/parser.c:10004
+#: cp/parser.c:9794 cp/parser.c:9892 cp/parser.c:9998
#, gcc-internal-format
msgid "%Htemplate parameter pack %qD cannot have a default argument"
msgstr ""
-#: cp/parser.c:9803
+#: cp/parser.c:9797
#, gcc-internal-format
msgid "%Htemplate parameter pack cannot have a default argument"
msgstr ""
-#: cp/parser.c:9901 cp/parser.c:10008
+#: cp/parser.c:9895 cp/parser.c:10002
#, gcc-internal-format
msgid "%Htemplate parameter packs cannot have default arguments"
msgstr ""
-#: cp/parser.c:10150
+#: cp/parser.c:10144
#, gcc-internal-format
msgid "%<<::%> cannot begin a template-argument list"
msgstr ""
-#: cp/parser.c:10154
+#: cp/parser.c:10148
#, gcc-internal-format
msgid ""
"%<<:%> is an alternate spelling for %<[%>. Insert whitespace between %<<%> "
"and %<::%>"
msgstr ""
-#: cp/parser.c:10232
+#: cp/parser.c:10226
#, gcc-internal-format
msgid "%Hparse error in template argument list"
msgstr ""
#. Explain what went wrong.
-#: cp/parser.c:10347
+#: cp/parser.c:10341
#, gcc-internal-format
msgid "%Hnon-template %qD used as template"
msgstr ""
-#: cp/parser.c:10349
+#: cp/parser.c:10343
#, gcc-internal-format
msgid "use %<%T::template %D%> to indicate that it is a template"
msgstr ""
+#: cp/parser.c:10476
+#, gcc-internal-format
+msgid "%Hexpected parameter pack before %<...%>"
+msgstr ""
+
#: cp/parser.c:10886
#, gcc-internal-format
msgid "%Htemplate specialization with C linkage"
@@ -32562,12 +32991,12 @@ msgid ""
"implicitly a type)"
msgstr ""
-#: cp/parser.c:17360
+#: cp/parser.c:17365
#, gcc-internal-format
msgid "specializing member %<%T::%E%> requires %<template<>%> syntax"
msgstr ""
-#: cp/parser.c:17365
+#: cp/parser.c:17370
#, gcc-internal-format
msgid "too few template-parameter-lists"
msgstr ""
@@ -32576,13 +33005,13 @@ msgstr ""
#. something like:
#.
#. template <class T> template <class U> void S::f();
-#: cp/parser.c:17372
+#: cp/parser.c:17377
#, gcc-internal-format
msgid "%Htoo many template-parameter-lists"
msgstr ""
#. Issue an error message.
-#: cp/parser.c:17646
+#: cp/parser.c:17651
#, gcc-internal-format
msgid "%Hnamed return values are no longer supported"
msgstr ""
@@ -32590,169 +33019,169 @@ msgstr ""
#. 14.5.2.2 [temp.mem]
#.
#. A local class shall not have member templates.
-#: cp/parser.c:17721
+#: cp/parser.c:17726
#, gcc-internal-format
msgid "%Hinvalid declaration of member template in local class"
msgstr ""
-#: cp/parser.c:17731
+#: cp/parser.c:17736
#, gcc-internal-format
msgid "%Htemplate with C linkage"
msgstr ""
-#: cp/parser.c:17878
+#: cp/parser.c:17883
#, gcc-internal-format
msgid "%Htemplate declaration of %qs"
msgstr ""
-#: cp/parser.c:17942
+#: cp/parser.c:17947
#, gcc-internal-format
msgid "%Hexplicit template specialization cannot have a storage class"
msgstr ""
-#: cp/parser.c:18160
+#: cp/parser.c:18165
#, gcc-internal-format
msgid "%H%<>>%> should be %<> >%> within a nested template argument list"
msgstr ""
-#: cp/parser.c:18173
+#: cp/parser.c:18178
#, gcc-internal-format
msgid "%Hspurious %<>>%>, use %<>%> to terminate a template argument list"
msgstr ""
-#: cp/parser.c:18507
+#: cp/parser.c:18512
#, gcc-internal-format
msgid "%Hinvalid use of %qD in linkage specification"
msgstr ""
-#: cp/parser.c:18520
+#: cp/parser.c:18525
#, gcc-internal-format
msgid "%H%<__thread%> before %qD"
msgstr ""
-#: cp/parser.c:18841
+#: cp/parser.c:18846
#, gcc-internal-format
msgid "%qs tag used in naming %q#T"
msgstr ""
-#: cp/parser.c:18862
+#: cp/parser.c:18867
#, gcc-internal-format
msgid "%H%qD redeclared with different access"
msgstr ""
-#: cp/parser.c:18880
+#: cp/parser.c:18885
#, gcc-internal-format
msgid "%H%<template%> (as a disambiguator) is only allowed within templates"
msgstr ""
-#: cp/parser.c:19146 cp/parser.c:20073 cp/parser.c:20205
+#: cp/parser.c:19151 cp/parser.c:20078 cp/parser.c:20210
#, gcc-internal-format
msgid "%Hmisplaced %<@%D%> Objective-C++ construct"
msgstr ""
-#: cp/parser.c:19290
+#: cp/parser.c:19295
#, gcc-internal-format
msgid "%H%<@encode%> must specify a type as an argument"
msgstr ""
-#: cp/parser.c:19606
+#: cp/parser.c:19611
#, gcc-internal-format
msgid "%Hinvalid Objective-C++ selector name"
msgstr ""
-#: cp/parser.c:19937
+#: cp/parser.c:19942
#, gcc-internal-format
msgid "%Hidentifier expected after %<@protocol%>"
msgstr ""
-#: cp/parser.c:20298
+#: cp/parser.c:20303
#, gcc-internal-format
msgid "%Htoo many %qs clauses"
msgstr ""
-#: cp/parser.c:20412
+#: cp/parser.c:20417
#, gcc-internal-format
msgid "%Hcollapse argument needs positive constant integer expression"
msgstr ""
-#: cp/parser.c:20701
+#: cp/parser.c:20706
#, gcc-internal-format
msgid "%Hschedule %<runtime%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: cp/parser.c:20704
+#: cp/parser.c:20709
#, gcc-internal-format
msgid "%Hschedule %<auto%> does not take a %<chunk_size%> parameter"
msgstr ""
-#: cp/parser.c:20852
+#: cp/parser.c:20857
#, gcc-internal-format
msgid "%H%qs is not valid for %qs"
msgstr ""
-#: cp/parser.c:21275
+#: cp/parser.c:21280
#, gcc-internal-format
msgid "parenthesized initialization is not allowed in OpenMP %<for%> loop"
msgstr ""
-#: cp/parser.c:21400 cp/parser.c:21438
+#: cp/parser.c:21405 cp/parser.c:21443
#, gcc-internal-format
msgid "%Hiteration variable %qD should not be firstprivate"
msgstr ""
-#: cp/parser.c:21442
+#: cp/parser.c:21447
#, gcc-internal-format
msgid "%Hiteration variable %qD should not be reduction"
msgstr ""
-#: cp/parser.c:21509
+#: cp/parser.c:21514
#, gcc-internal-format
msgid "%Hnot enough collapsed for loops"
msgstr ""
-#: cp/parser.c:21555
+#: cp/parser.c:21560
#, gcc-internal-format
msgid "%Hcollapsed loops not perfectly nested"
msgstr ""
-#: cp/parser.c:21966
+#: cp/parser.c:21971
#, gcc-internal-format
msgid "%Hjunk at end of %<#pragma GCC pch_preprocess%>"
msgstr ""
-#: cp/parser.c:21970
+#: cp/parser.c:21975
#, gcc-internal-format
msgid "%Hexpected string literal"
msgstr ""
-#: cp/parser.c:22003
+#: cp/parser.c:22008
#, gcc-internal-format
msgid "%H%<#pragma GCC pch_preprocess%> must be first"
msgstr ""
-#: cp/parser.c:22014
+#: cp/parser.c:22019
#, gcc-internal-format
msgid "%H%<#pragma omp barrier%> may only be used in compound statements"
msgstr ""
-#: cp/parser.c:22029
+#: cp/parser.c:22034
#, gcc-internal-format
msgid "%H%<#pragma omp flush%> may only be used in compound statements"
msgstr ""
-#: cp/parser.c:22044
+#: cp/parser.c:22049
#, gcc-internal-format
msgid "%H%<#pragma omp taskwait%> may only be used in compound statements"
msgstr ""
-#: cp/parser.c:22072
+#: cp/parser.c:22077
#, gcc-internal-format
msgid ""
"%H%<#pragma omp section%> may only be used in %<#pragma omp sections%> "
"construct"
msgstr ""
-#: cp/parser.c:22130
+#: cp/parser.c:22135
#, gcc-internal-format
msgid "inter-module optimizations not implemented for C++"
msgstr ""
@@ -33349,211 +33778,211 @@ msgstr ""
msgid "creating pointer to member function of non-class type %qT"
msgstr ""
-#: cp/pt.c:9203
+#: cp/pt.c:9211
#, gcc-internal-format
msgid "array bound is not an integer constant"
msgstr ""
-#: cp/pt.c:9223
+#: cp/pt.c:9231
#, gcc-internal-format
msgid "creating array with negative size (%qE)"
msgstr ""
-#: cp/pt.c:9472
+#: cp/pt.c:9480
#, gcc-internal-format
msgid "forming reference to void"
msgstr ""
-#: cp/pt.c:9474
+#: cp/pt.c:9482
#, gcc-internal-format
msgid "forming %s to reference type %qT"
msgstr ""
-#: cp/pt.c:9525
+#: cp/pt.c:9533
#, gcc-internal-format
msgid "creating pointer to member of non-class type %qT"
msgstr ""
-#: cp/pt.c:9531
+#: cp/pt.c:9539
#, gcc-internal-format
msgid "creating pointer to member reference type %qT"
msgstr ""
-#: cp/pt.c:9537
+#: cp/pt.c:9545
#, gcc-internal-format
msgid "creating pointer to member of type void"
msgstr ""
-#: cp/pt.c:9604
+#: cp/pt.c:9612
#, gcc-internal-format
msgid "creating array of %qT"
msgstr ""
-#: cp/pt.c:9610
+#: cp/pt.c:9618
#, gcc-internal-format
msgid "creating array of %qT, which is an abstract class type"
msgstr ""
-#: cp/pt.c:9661
+#: cp/pt.c:9669
#, gcc-internal-format
msgid "%qT is not a class, struct, or union type"
msgstr ""
-#: cp/pt.c:9696
+#: cp/pt.c:9704
#, gcc-internal-format
msgid "%qT resolves to %qT, which is not an enumeration type"
msgstr ""
-#: cp/pt.c:9699
+#: cp/pt.c:9707
#, gcc-internal-format
msgid "%qT resolves to %qT, which is is not a class type"
msgstr ""
-#: cp/pt.c:9805
+#: cp/pt.c:9813
#, gcc-internal-format
msgid "use of %qs in template"
msgstr ""
-#: cp/pt.c:9942
+#: cp/pt.c:9950
#, gcc-internal-format
msgid ""
"dependent-name %qE is parsed as a non-type, but instantiation yields a type"
msgstr ""
-#: cp/pt.c:9944
+#: cp/pt.c:9952
#, gcc-internal-format
msgid "say %<typename %E%> if a type is meant"
msgstr ""
-#: cp/pt.c:10086
+#: cp/pt.c:10098
#, gcc-internal-format
msgid "using invalid field %qD"
msgstr ""
-#: cp/pt.c:10416 cp/pt.c:11079
+#: cp/pt.c:10428 cp/pt.c:11091
#, gcc-internal-format
msgid "invalid use of pack expansion expression"
msgstr ""
-#: cp/pt.c:10420 cp/pt.c:11083
+#: cp/pt.c:10432 cp/pt.c:11095
#, gcc-internal-format
msgid "use %<...%> to expand argument pack"
msgstr ""
-#: cp/pt.c:10575
+#: cp/pt.c:10587
#, gcc-internal-format
msgid "iteration variable %qD should not be reduction"
msgstr ""
-#: cp/pt.c:11243
+#: cp/pt.c:11255
#, gcc-internal-format
msgid ""
"a cast to a type other than an integral or enumeration type cannot appear in "
"a constant-expression"
msgstr ""
-#: cp/pt.c:11711
+#: cp/pt.c:11723
#, gcc-internal-format
msgid "%qT is not a class or namespace"
msgstr ""
-#: cp/pt.c:11714
+#: cp/pt.c:11726
#, gcc-internal-format
msgid "%qD is not a class or namespace"
msgstr ""
-#: cp/pt.c:11934
+#: cp/pt.c:11946
#, gcc-internal-format
msgid "%qT is/uses anonymous type"
msgstr ""
-#: cp/pt.c:11936
+#: cp/pt.c:11948
#, gcc-internal-format
msgid "template argument for %qD uses local type %qT"
msgstr ""
-#: cp/pt.c:11946
+#: cp/pt.c:11958
#, gcc-internal-format
msgid "%qT is a variably modified type"
msgstr ""
-#: cp/pt.c:11957
+#: cp/pt.c:11969
#, gcc-internal-format
msgid "integral expression %qE is not constant"
msgstr ""
-#: cp/pt.c:11975
+#: cp/pt.c:11987
#, gcc-internal-format
msgid " trying to instantiate %qD"
msgstr ""
-#: cp/pt.c:14803
+#: cp/pt.c:14822
#, gcc-internal-format
msgid "ambiguous class template instantiation for %q#T"
msgstr ""
-#: cp/pt.c:14806
+#: cp/pt.c:14825
#, gcc-internal-format
msgid "%s %+#T"
msgstr ""
-#: cp/pt.c:14829 cp/pt.c:14912
+#: cp/pt.c:14848 cp/pt.c:14931
#, gcc-internal-format
msgid "explicit instantiation of non-template %q#D"
msgstr ""
-#: cp/pt.c:14844
+#: cp/pt.c:14863
#, gcc-internal-format
msgid "%qD is not a static data member of a class template"
msgstr ""
-#: cp/pt.c:14850 cp/pt.c:14907
+#: cp/pt.c:14869 cp/pt.c:14926
#, gcc-internal-format
msgid "no matching template for %qD found"
msgstr ""
-#: cp/pt.c:14855
+#: cp/pt.c:14874
#, gcc-internal-format
msgid ""
"type %qT for explicit instantiation %qD does not match declared type %qT"
msgstr ""
-#: cp/pt.c:14863
+#: cp/pt.c:14882
#, gcc-internal-format
msgid "explicit instantiation of %q#D"
msgstr ""
-#: cp/pt.c:14899
+#: cp/pt.c:14918
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#D"
msgstr ""
-#: cp/pt.c:14922 cp/pt.c:15014
+#: cp/pt.c:14941 cp/pt.c:15033
#, gcc-internal-format
msgid "ISO C++ 1998 forbids the use of %<extern%> on explicit instantiations"
msgstr ""
-#: cp/pt.c:14927 cp/pt.c:15031
+#: cp/pt.c:14946 cp/pt.c:15050
#, gcc-internal-format
msgid "storage class %qD applied to template instantiation"
msgstr ""
-#: cp/pt.c:14992
+#: cp/pt.c:15011
#, gcc-internal-format
msgid "explicit instantiation of non-template type %qT"
msgstr ""
-#: cp/pt.c:15001
+#: cp/pt.c:15020
#, gcc-internal-format
msgid "explicit instantiation of %q#T before definition of template"
msgstr ""
-#: cp/pt.c:15019
+#: cp/pt.c:15038
#, gcc-internal-format
msgid "ISO C++ forbids the use of %qE on explicit instantiations"
msgstr ""
-#: cp/pt.c:15065
+#: cp/pt.c:15084
#, gcc-internal-format
msgid "duplicate explicit instantiation of %q#T"
msgstr ""
@@ -33565,12 +33994,12 @@ msgstr ""
#. member function or static data member of a class template
#. shall be present in every translation unit in which it is
#. explicitly instantiated.
-#: cp/pt.c:15515
+#: cp/pt.c:15534
#, gcc-internal-format
msgid "explicit instantiation of %qD but no definition available"
msgstr ""
-#: cp/pt.c:15681
+#: cp/pt.c:15700
#, gcc-internal-format
msgid ""
"template instantiation depth exceeds maximum of %d instantiating %q+D, "
@@ -33578,19 +34007,19 @@ msgid ""
"the maximum)"
msgstr ""
-#: cp/pt.c:16036
+#: cp/pt.c:16055
#, gcc-internal-format
msgid "%q#T is not a valid type for a template constant parameter"
msgstr ""
-#: cp/pt.c:17034
+#: cp/pt.c:17053
#, gcc-internal-format
msgid ""
"deducing auto from brace-enclosed initializer list requires #include "
"<initializer_list>"
msgstr ""
-#: cp/pt.c:17075
+#: cp/pt.c:17094
#, gcc-internal-format
msgid "unable to deduce %qT from %qE"
msgstr ""
@@ -33610,34 +34039,34 @@ msgstr ""
msgid "can't create repository information file %qs"
msgstr ""
-#: cp/rtti.c:288
+#: cp/rtti.c:287
#, gcc-internal-format
msgid "cannot use typeid with -fno-rtti"
msgstr ""
-#: cp/rtti.c:294
+#: cp/rtti.c:293
#, gcc-internal-format
msgid "must #include <typeinfo> before using typeid"
msgstr ""
-#: cp/rtti.c:377
+#: cp/rtti.c:376
#, gcc-internal-format
msgid ""
"cannot create type information for type %qT because it involves types of "
"variable size"
msgstr ""
-#: cp/rtti.c:635 cp/rtti.c:650
+#: cp/rtti.c:634 cp/rtti.c:649
#, gcc-internal-format
msgid "dynamic_cast of %q#D to %q#T can never succeed"
msgstr ""
-#: cp/rtti.c:661
+#: cp/rtti.c:660
#, gcc-internal-format
msgid "%<dynamic_cast%> not permitted with -fno-rtti"
msgstr ""
-#: cp/rtti.c:740
+#: cp/rtti.c:739
#, gcc-internal-format
msgid "cannot dynamic_cast %qE (of type %q#T) to type %q#T (%s)"
msgstr ""
@@ -33714,251 +34143,251 @@ msgstr ""
msgid " since %q+#D declared in base class"
msgstr ""
-#: cp/semantics.c:761
+#: cp/semantics.c:760
#, gcc-internal-format
msgid "suggest explicit braces around empty body in %<do%> statement"
msgstr ""
-#: cp/semantics.c:1285
+#: cp/semantics.c:1284
#, gcc-internal-format
msgid "type of asm operand %qE could not be determined"
msgstr ""
-#: cp/semantics.c:1341
+#: cp/semantics.c:1340
#, gcc-internal-format
msgid "__label__ declarations are only allowed in function scopes"
msgstr ""
-#: cp/semantics.c:1439
+#: cp/semantics.c:1438
#, gcc-internal-format
msgid "invalid use of member %q+D in static member function"
msgstr ""
-#: cp/semantics.c:1441
+#: cp/semantics.c:1440
#, gcc-internal-format
msgid "invalid use of non-static data member %q+D"
msgstr ""
-#: cp/semantics.c:1442 cp/semantics.c:1484
+#: cp/semantics.c:1441 cp/semantics.c:1483
#, gcc-internal-format
msgid "from this location"
msgstr ""
-#: cp/semantics.c:1483
+#: cp/semantics.c:1482
#, gcc-internal-format
msgid "object missing in reference to %q+D"
msgstr ""
-#: cp/semantics.c:2007
+#: cp/semantics.c:2006
#, gcc-internal-format
msgid "arguments to destructor are not allowed"
msgstr ""
-#: cp/semantics.c:2057
+#: cp/semantics.c:2056
#, gcc-internal-format
msgid "%<this%> is unavailable for static member functions"
msgstr ""
-#: cp/semantics.c:2063
+#: cp/semantics.c:2062
#, gcc-internal-format
msgid "invalid use of %<this%> in non-member function"
msgstr ""
-#: cp/semantics.c:2065
+#: cp/semantics.c:2064
#, gcc-internal-format
msgid "invalid use of %<this%> at top level"
msgstr ""
-#: cp/semantics.c:2089
+#: cp/semantics.c:2088
#, gcc-internal-format
msgid "invalid qualifying scope in pseudo-destructor name"
msgstr ""
-#: cp/semantics.c:2094 cp/typeck.c:2130
+#: cp/semantics.c:2093 cp/typeck.c:2130
#, gcc-internal-format
msgid "qualified type %qT does not match destructor name ~%qT"
msgstr ""
-#: cp/semantics.c:2116
+#: cp/semantics.c:2115
#, gcc-internal-format
msgid "%qE is not of type %qT"
msgstr ""
-#: cp/semantics.c:2160
+#: cp/semantics.c:2159
#, gcc-internal-format
msgid "compound literal of non-object type %qT"
msgstr ""
-#: cp/semantics.c:2244
+#: cp/semantics.c:2243
#, gcc-internal-format
msgid "template type parameters must use the keyword %<class%> or %<typename%>"
msgstr ""
-#: cp/semantics.c:2285
+#: cp/semantics.c:2284
#, gcc-internal-format
msgid ""
"invalid use of type %qT as a default value for a template template-parameter"
msgstr ""
-#: cp/semantics.c:2288
+#: cp/semantics.c:2287
#, gcc-internal-format
msgid "invalid default argument for a template template parameter"
msgstr ""
-#: cp/semantics.c:2305
+#: cp/semantics.c:2304
#, gcc-internal-format
msgid "definition of %q#T inside template parameter list"
msgstr ""
-#: cp/semantics.c:2316
+#: cp/semantics.c:2315
#, gcc-internal-format
msgid "invalid definition of qualified type %qT"
msgstr ""
-#: cp/semantics.c:2532
+#: cp/semantics.c:2531
#, gcc-internal-format
msgid "invalid base-class specification"
msgstr ""
-#: cp/semantics.c:2544
+#: cp/semantics.c:2543
#, gcc-internal-format
msgid "base class %qT has cv qualifiers"
msgstr ""
-#: cp/semantics.c:2569
+#: cp/semantics.c:2568
#, gcc-internal-format
msgid "%Hincomplete type %qT used in nested name specifier"
msgstr ""
-#: cp/semantics.c:2573
+#: cp/semantics.c:2572
#, gcc-internal-format
msgid "%Hreference to %<%T::%D%> is ambiguous"
msgstr ""
-#: cp/semantics.c:2577
+#: cp/semantics.c:2576
#, gcc-internal-format
msgid "%H%qD is not a member of %qT"
msgstr ""
-#: cp/semantics.c:2580
+#: cp/semantics.c:2579
#, gcc-internal-format
msgid "%H%qD is not a member of %qD"
msgstr ""
-#: cp/semantics.c:2582
+#: cp/semantics.c:2581
#, gcc-internal-format
msgid "%H%<::%D%> has not been declared"
msgstr ""
-#: cp/semantics.c:2723
+#: cp/semantics.c:2722
#, gcc-internal-format
msgid "use of %<auto%> variable from containing function"
msgstr ""
-#: cp/semantics.c:2725
+#: cp/semantics.c:2724
#, gcc-internal-format
msgid " %q+#D declared here"
msgstr ""
-#: cp/semantics.c:2763
+#: cp/semantics.c:2762
#, gcc-internal-format
msgid ""
"template parameter %qD of type %qT is not allowed in an integral constant "
"expression because it is not of integral or enumeration type"
msgstr ""
-#: cp/semantics.c:2927
+#: cp/semantics.c:2926
#, gcc-internal-format
msgid "%qD cannot appear in a constant-expression"
msgstr ""
-#: cp/semantics.c:2935
+#: cp/semantics.c:2934
#, gcc-internal-format
msgid "use of namespace %qD as expression"
msgstr ""
-#: cp/semantics.c:2940
+#: cp/semantics.c:2939
#, gcc-internal-format
msgid "use of class template %qT as expression"
msgstr ""
#. Ambiguous reference to base members.
-#: cp/semantics.c:2946
+#: cp/semantics.c:2945
#, gcc-internal-format
msgid "request for member %qD is ambiguous in multiple inheritance lattice"
msgstr ""
-#: cp/semantics.c:3068 cp/semantics.c:4798
+#: cp/semantics.c:3067 cp/semantics.c:4798
#, gcc-internal-format
msgid "type of %qE is unknown"
msgstr ""
-#: cp/semantics.c:3083
+#: cp/semantics.c:3082
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to destructor %<~%T%>"
msgstr ""
-#: cp/semantics.c:3094
+#: cp/semantics.c:3093
#, gcc-internal-format
msgid "cannot apply %<offsetof%> to member function %qD"
msgstr ""
-#: cp/semantics.c:3539
+#: cp/semantics.c:3538
#, gcc-internal-format
msgid "%qD is not a variable in clause %qs"
msgstr ""
-#: cp/semantics.c:3548 cp/semantics.c:3570 cp/semantics.c:3592
+#: cp/semantics.c:3547 cp/semantics.c:3569 cp/semantics.c:3591
#, gcc-internal-format
msgid "%qD appears more than once in data clauses"
msgstr ""
-#: cp/semantics.c:3562
+#: cp/semantics.c:3561
#, gcc-internal-format
msgid "%qD is not a variable in clause %<firstprivate%>"
msgstr ""
-#: cp/semantics.c:3584
+#: cp/semantics.c:3583
#, gcc-internal-format
msgid "%qD is not a variable in clause %<lastprivate%>"
msgstr ""
-#: cp/semantics.c:3614
+#: cp/semantics.c:3613
#, gcc-internal-format
msgid "num_threads expression must be integral"
msgstr ""
-#: cp/semantics.c:3628
+#: cp/semantics.c:3627
#, gcc-internal-format
msgid "schedule chunk size expression must be integral"
msgstr ""
-#: cp/semantics.c:3760
+#: cp/semantics.c:3759
#, gcc-internal-format
msgid "%qE has reference type for %qs"
msgstr ""
-#: cp/semantics.c:3831
+#: cp/semantics.c:3830
#, gcc-internal-format
msgid "%<threadprivate%> %qD is not file, namespace or block scope variable"
msgstr ""
-#: cp/semantics.c:3845
+#: cp/semantics.c:3844
#, gcc-internal-format
msgid "%<threadprivate%> %qE directive not in %qT definition"
msgstr ""
-#: cp/semantics.c:3980
+#: cp/semantics.c:3979
#, gcc-internal-format
msgid "%Hinvalid controlling predicate"
msgstr ""
-#: cp/semantics.c:3990
+#: cp/semantics.c:3989
#, gcc-internal-format
msgid "%Hdifference between %qE and %qD does not have integer type"
msgstr ""
-#: cp/semantics.c:4085
+#: cp/semantics.c:4084
#, gcc-internal-format
msgid "%Hinvalid increment expression"
msgstr ""
@@ -34024,43 +34453,43 @@ msgstr ""
msgid "%qV qualifiers cannot be applied to %qT"
msgstr ""
-#: cp/tree.c:2216
+#: cp/tree.c:2230
#, gcc-internal-format
msgid "%qE attribute can only be applied to Java class definitions"
msgstr ""
-#: cp/tree.c:2245
+#: cp/tree.c:2259
#, gcc-internal-format
msgid "%qE attribute can only be applied to class definitions"
msgstr ""
-#: cp/tree.c:2251
+#: cp/tree.c:2265
#, gcc-internal-format
msgid "%qE is obsolete; g++ vtables are now COM-compatible by default"
msgstr ""
-#: cp/tree.c:2275
+#: cp/tree.c:2289
#, gcc-internal-format
msgid "requested init_priority is not an integer constant"
msgstr ""
-#: cp/tree.c:2296
+#: cp/tree.c:2310
#, gcc-internal-format
msgid ""
"can only use %qE attribute on file-scope definitions of objects of class type"
msgstr ""
-#: cp/tree.c:2304
+#: cp/tree.c:2318
#, gcc-internal-format
msgid "requested init_priority is out of range"
msgstr ""
-#: cp/tree.c:2314
+#: cp/tree.c:2328
#, gcc-internal-format
msgid "requested init_priority is reserved for internal use"
msgstr ""
-#: cp/tree.c:2325
+#: cp/tree.c:2339
#, gcc-internal-format
msgid "%qE attribute is not supported on this platform"
msgstr ""
@@ -34469,42 +34898,47 @@ msgstr ""
msgid "%s expression list treated as compound expression"
msgstr ""
-#: cp/typeck.c:5064
+#: cp/typeck.c:5039
+#, gcc-internal-format
+msgid "no context to resolve type of %qE"
+msgstr ""
+
+#: cp/typeck.c:5070
#, gcc-internal-format
msgid "cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:5069
+#: cp/typeck.c:5075
#, gcc-internal-format
msgid "static_cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:5074
+#: cp/typeck.c:5080
#, gcc-internal-format
msgid "reinterpret_cast from type %qT to type %qT casts away qualifiers"
msgstr ""
-#: cp/typeck.c:5394
+#: cp/typeck.c:5400
#, gcc-internal-format
msgid "invalid static_cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:5417
+#: cp/typeck.c:5423
#, gcc-internal-format
msgid "converting from %qT to %qT"
msgstr ""
-#: cp/typeck.c:5466
+#: cp/typeck.c:5472
#, gcc-internal-format
msgid "invalid cast of an rvalue expression of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:5528
+#: cp/typeck.c:5534
#, gcc-internal-format
msgid "cast from %qT to %qT loses precision"
msgstr ""
-#: cp/typeck.c:5558
+#: cp/typeck.c:5564
#, gcc-internal-format
msgid "cast from %qT to %qT increases required alignment of target type"
msgstr ""
@@ -34513,160 +34947,160 @@ msgstr ""
#. where possible, and it is necessary in some cases. DR 195
#. addresses this issue, but as of 2004/10/26 is still in
#. drafting.
-#: cp/typeck.c:5577
+#: cp/typeck.c:5583
#, gcc-internal-format
msgid ""
"ISO C++ forbids casting between pointer-to-function and pointer-to-object"
msgstr ""
-#: cp/typeck.c:5589
+#: cp/typeck.c:5595
#, gcc-internal-format
msgid "invalid cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:5645
+#: cp/typeck.c:5651
#, gcc-internal-format
msgid ""
"invalid use of const_cast with type %qT, which is not a pointer, reference, "
"nor a pointer-to-data-member type"
msgstr ""
-#: cp/typeck.c:5654
+#: cp/typeck.c:5660
#, gcc-internal-format
msgid ""
"invalid use of const_cast with type %qT, which is a pointer or reference to "
"a function type"
msgstr ""
-#: cp/typeck.c:5679
+#: cp/typeck.c:5685
#, gcc-internal-format
msgid "invalid const_cast of an rvalue of type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:5728
+#: cp/typeck.c:5734
#, gcc-internal-format
msgid "invalid const_cast from type %qT to type %qT"
msgstr ""
-#: cp/typeck.c:5805 cp/typeck.c:5813
+#: cp/typeck.c:5811 cp/typeck.c:5819
#, gcc-internal-format
msgid "ISO C++ forbids casting to an array type %qT"
msgstr ""
-#: cp/typeck.c:5822
+#: cp/typeck.c:5828
#, gcc-internal-format
msgid "invalid cast to function type %qT"
msgstr ""
-#: cp/typeck.c:6062
+#: cp/typeck.c:6069
#, gcc-internal-format
msgid " in evaluation of %<%Q(%#T, %#T)%>"
msgstr ""
-#: cp/typeck.c:6113
+#: cp/typeck.c:6120
#, gcc-internal-format
msgid "incompatible types in assignment of %qT to %qT"
msgstr ""
-#: cp/typeck.c:6126
+#: cp/typeck.c:6133
#, gcc-internal-format
msgid "array used as initializer"
msgstr ""
-#: cp/typeck.c:6128
+#: cp/typeck.c:6135
#, gcc-internal-format
msgid "invalid array assignment"
msgstr ""
-#: cp/typeck.c:6226
+#: cp/typeck.c:6233
#, gcc-internal-format
msgid " in pointer to member function conversion"
msgstr ""
-#: cp/typeck.c:6237
+#: cp/typeck.c:6244
#, gcc-internal-format
msgid "pointer to member conversion via virtual base %qT"
msgstr ""
-#: cp/typeck.c:6277 cp/typeck.c:6289
+#: cp/typeck.c:6284 cp/typeck.c:6296
#, gcc-internal-format
msgid " in pointer to member conversion"
msgstr ""
-#: cp/typeck.c:6367
+#: cp/typeck.c:6374
#, gcc-internal-format
msgid "invalid conversion to type %qT from type %qT"
msgstr ""
-#: cp/typeck.c:6638
+#: cp/typeck.c:6645
#, gcc-internal-format
msgid "cannot convert %qT to %qT for argument %qP to %qD"
msgstr ""
-#: cp/typeck.c:6641
+#: cp/typeck.c:6648
#, gcc-internal-format
msgid "cannot convert %qT to %qT in %s"
msgstr ""
-#: cp/typeck.c:6655
+#: cp/typeck.c:6662
#, gcc-internal-format
msgid "%s might be a candidate for a format attribute"
msgstr ""
-#: cp/typeck.c:6744 cp/typeck.c:6746
+#: cp/typeck.c:6751 cp/typeck.c:6753
#, gcc-internal-format
msgid "in passing argument %P of %q+D"
msgstr ""
-#: cp/typeck.c:6796
+#: cp/typeck.c:6803
#, gcc-internal-format
msgid "returning reference to temporary"
msgstr ""
-#: cp/typeck.c:6803
+#: cp/typeck.c:6810
#, gcc-internal-format
msgid "reference to non-lvalue returned"
msgstr ""
-#: cp/typeck.c:6819
+#: cp/typeck.c:6826
#, gcc-internal-format
msgid "reference to local variable %q+D returned"
msgstr ""
-#: cp/typeck.c:6822
+#: cp/typeck.c:6829
#, gcc-internal-format
msgid "address of local variable %q+D returned"
msgstr ""
-#: cp/typeck.c:6857
+#: cp/typeck.c:6864
#, gcc-internal-format
msgid "returning a value from a destructor"
msgstr ""
#. If a return statement appears in a handler of the
#. function-try-block of a constructor, the program is ill-formed.
-#: cp/typeck.c:6865
+#: cp/typeck.c:6872
#, gcc-internal-format
msgid "cannot return from a handler of a function-try-block of a constructor"
msgstr ""
#. You can't return a value from a constructor.
-#: cp/typeck.c:6868
+#: cp/typeck.c:6875
#, gcc-internal-format
msgid "returning a value from a constructor"
msgstr ""
-#: cp/typeck.c:6893
+#: cp/typeck.c:6900
#, gcc-internal-format
msgid "return-statement with no value, in function returning %qT"
msgstr ""
-#: cp/typeck.c:6914
+#: cp/typeck.c:6921
#, gcc-internal-format
msgid "return-statement with a value, in function returning 'void'"
msgstr ""
-#: cp/typeck.c:6944
+#: cp/typeck.c:6951
#, gcc-internal-format
msgid ""
"%<operator new%> must not return NULL unless it is declared %<throw()%> (or -"
@@ -34703,208 +35137,208 @@ msgstr ""
msgid "%s of read-only location %qE"
msgstr ""
-#: cp/typeck2.c:288
+#: cp/typeck2.c:287
#, gcc-internal-format
msgid "cannot declare variable %q+D to be of abstract type %qT"
msgstr ""
-#: cp/typeck2.c:291
+#: cp/typeck2.c:290
#, gcc-internal-format
msgid "cannot declare parameter %q+D to be of abstract type %qT"
msgstr ""
-#: cp/typeck2.c:294
+#: cp/typeck2.c:293
#, gcc-internal-format
msgid "cannot declare field %q+D to be of abstract type %qT"
msgstr ""
-#: cp/typeck2.c:298
+#: cp/typeck2.c:297
#, gcc-internal-format
msgid "invalid abstract return type for member function %q+#D"
msgstr ""
-#: cp/typeck2.c:300
+#: cp/typeck2.c:299
#, gcc-internal-format
msgid "invalid abstract return type for function %q+#D"
msgstr ""
#. Here we do not have location information.
-#: cp/typeck2.c:303
+#: cp/typeck2.c:302
#, gcc-internal-format
msgid "invalid abstract type %qT for %qE"
msgstr ""
-#: cp/typeck2.c:305
+#: cp/typeck2.c:304
#, gcc-internal-format
msgid "invalid abstract type for %q+D"
msgstr ""
-#: cp/typeck2.c:308
+#: cp/typeck2.c:307
#, gcc-internal-format
msgid "cannot allocate an object of abstract type %qT"
msgstr ""
-#: cp/typeck2.c:316
+#: cp/typeck2.c:315
#, gcc-internal-format
msgid "%J because the following virtual functions are pure within %qT:"
msgstr ""
-#: cp/typeck2.c:320
+#: cp/typeck2.c:319
#, gcc-internal-format
msgid "\t%+#D"
msgstr ""
-#: cp/typeck2.c:327
+#: cp/typeck2.c:326
#, gcc-internal-format
msgid "%J since type %qT has pure virtual functions"
msgstr ""
-#: cp/typeck2.c:607
+#: cp/typeck2.c:606
#, gcc-internal-format
msgid "constructor syntax used, but no constructor declared for type %qT"
msgstr ""
-#: cp/typeck2.c:621
+#: cp/typeck2.c:620
#, gcc-internal-format
msgid "cannot initialize arrays using this syntax"
msgstr ""
-#: cp/typeck2.c:707
+#: cp/typeck2.c:706
#, gcc-internal-format
msgid "narrowing conversion of %qE from %qT to %qT inside { }"
msgstr ""
-#: cp/typeck2.c:765
+#: cp/typeck2.c:764
#, gcc-internal-format
msgid "int-array initialized from non-wide string"
msgstr ""
-#: cp/typeck2.c:770
+#: cp/typeck2.c:769
#, gcc-internal-format
msgid "int-array initialized from incompatible wide string"
msgstr ""
-#: cp/typeck2.c:831
+#: cp/typeck2.c:830
#, gcc-internal-format
msgid "cannot initialize aggregate of type %qT with a compound literal"
msgstr ""
-#: cp/typeck2.c:840
+#: cp/typeck2.c:839
#, gcc-internal-format
msgid "array must be initialized with a brace-enclosed initializer"
msgstr ""
-#: cp/typeck2.c:922 cp/typeck2.c:1030
+#: cp/typeck2.c:921 cp/typeck2.c:1029
#, gcc-internal-format
msgid "non-trivial designated initializers not supported"
msgstr ""
-#: cp/typeck2.c:1054 cp/typeck2.c:1068
+#: cp/typeck2.c:1053 cp/typeck2.c:1067
#, gcc-internal-format
msgid "missing initializer for member %qD"
msgstr ""
-#: cp/typeck2.c:1059
+#: cp/typeck2.c:1058
#, gcc-internal-format
msgid "uninitialized const member %qD"
msgstr ""
-#: cp/typeck2.c:1061
+#: cp/typeck2.c:1060
#, gcc-internal-format
msgid "member %qD with uninitialized const fields"
msgstr ""
-#: cp/typeck2.c:1063
+#: cp/typeck2.c:1062
#, gcc-internal-format
msgid "member %qD is uninitialized reference"
msgstr ""
-#: cp/typeck2.c:1131
+#: cp/typeck2.c:1130
#, gcc-internal-format
msgid "no field %qD found in union being initialized"
msgstr ""
-#: cp/typeck2.c:1140
+#: cp/typeck2.c:1139
#, gcc-internal-format
msgid "index value instead of field name in union initializer"
msgstr ""
-#: cp/typeck2.c:1299
+#: cp/typeck2.c:1298
#, gcc-internal-format
msgid "circular pointer delegation detected"
msgstr ""
-#: cp/typeck2.c:1312
+#: cp/typeck2.c:1311
#, gcc-internal-format
msgid "base operand of %<->%> has non-pointer type %qT"
msgstr ""
-#: cp/typeck2.c:1336
+#: cp/typeck2.c:1335
#, gcc-internal-format
msgid "result of %<operator->()%> yields non-pointer result"
msgstr ""
-#: cp/typeck2.c:1338
+#: cp/typeck2.c:1337
#, gcc-internal-format
msgid "base operand of %<->%> is not a pointer"
msgstr ""
-#: cp/typeck2.c:1360
+#: cp/typeck2.c:1359
#, gcc-internal-format
msgid "%qE cannot be used as a member pointer, since it is of type %qT"
msgstr ""
-#: cp/typeck2.c:1369
+#: cp/typeck2.c:1368
#, gcc-internal-format
msgid "cannot apply member pointer %qE to %qE, which is of non-class type %qT"
msgstr ""
-#: cp/typeck2.c:1391
+#: cp/typeck2.c:1390
#, gcc-internal-format
msgid "pointer to member type %qT incompatible with object type %qT"
msgstr ""
-#: cp/typeck2.c:1451
+#: cp/typeck2.c:1450
#, gcc-internal-format
msgid "invalid value-initialization of reference types"
msgstr ""
-#: cp/typeck2.c:1638
+#: cp/typeck2.c:1637
#, gcc-internal-format
msgid "call to function %qD which throws incomplete type %q#T"
msgstr ""
-#: cp/typeck2.c:1641
+#: cp/typeck2.c:1640
#, gcc-internal-format
msgid "call to function which throws incomplete type %q#T"
msgstr ""
-#: fortran/f95-lang.c:211
+#: fortran/f95-lang.c:208
#, gcc-internal-format
msgid "Unexpected type in truthvalue_conversion"
msgstr ""
-#: fortran/f95-lang.c:273
+#: fortran/f95-lang.c:270
#, gcc-internal-format
msgid "can't open input file: %s"
msgstr ""
-#: fortran/f95-lang.c:600
+#: fortran/f95-lang.c:596
#, gcc-internal-format
msgid "global register variable %qs used in nested function"
msgstr ""
-#: fortran/f95-lang.c:604
+#: fortran/f95-lang.c:600
#, gcc-internal-format
msgid "register variable %qs used in nested function"
msgstr ""
-#: fortran/f95-lang.c:611
+#: fortran/f95-lang.c:607
#, gcc-internal-format
msgid "address of global register variable %qs requested"
msgstr ""
-#: fortran/f95-lang.c:629
+#: fortran/f95-lang.c:625
#, gcc-internal-format
msgid "address of register variable %qs requested"
msgstr ""
@@ -34914,14 +35348,14 @@ msgstr ""
msgid "-fexcess-precision=standard for Fortran"
msgstr ""
-#: fortran/trans-array.c:5867
+#: fortran/trans-array.c:5870
#, gcc-internal-format
msgid ""
"Possible frontend bug: Deferred array size without pointer, allocatable "
"attribute or derived type without allocatable components."
msgstr ""
-#: fortran/trans-array.c:6348
+#: fortran/trans-array.c:6351
#, gcc-internal-format
msgid "bad expression type during walk (%d)"
msgstr ""
@@ -34931,27 +35365,27 @@ msgstr ""
msgid "gfc_conv_constant_to_tree(): invalid type: %s"
msgstr ""
-#: fortran/trans-decl.c:1029
+#: fortran/trans-decl.c:1071
#, gcc-internal-format
msgid "intrinsic variable which isn't a procedure"
msgstr ""
-#: fortran/trans-decl.c:3205
+#: fortran/trans-decl.c:3254
#, gcc-internal-format
msgid "backend decl for module variable %s already exists"
msgstr ""
-#: fortran/trans-expr.c:1321
+#: fortran/trans-expr.c:1322
#, gcc-internal-format
msgid "Unknown intrinsic op"
msgstr ""
-#: fortran/trans-intrinsic.c:733
+#: fortran/trans-intrinsic.c:734
#, gcc-internal-format
msgid "Intrinsic function %s(%d) not recognized"
msgstr ""
-#: fortran/trans-io.c:2103
+#: fortran/trans-io.c:2101
#, gcc-internal-format
msgid "Bad IO basetype (%d)"
msgstr ""
@@ -34981,7 +35415,7 @@ msgstr ""
msgid "Array element size too big"
msgstr ""
-#: fortran/trans.c:1234
+#: fortran/trans.c:1241
#, gcc-internal-format
msgid "gfc_trans_code(): Bad statement code"
msgstr ""
@@ -35218,27 +35652,27 @@ msgstr ""
msgid "warning: already-compiled .class files ignored with -C"
msgstr ""
-#: java/lang.c:535
+#: java/lang.c:534
#, gcc-internal-format
msgid "-fexcess-precision=standard for Java"
msgstr ""
-#: java/lang.c:546
+#: java/lang.c:545
#, gcc-internal-format
msgid "-findirect-dispatch is incompatible with -freduced-reflection"
msgstr ""
-#: java/lang.c:549
+#: java/lang.c:548
#, gcc-internal-format
msgid "-fjni is incompatible with -freduced-reflection"
msgstr ""
-#: java/lang.c:560
+#: java/lang.c:559
#, gcc-internal-format
msgid "can't do dependency tracking with input from stdin"
msgstr ""
-#: java/lang.c:576
+#: java/lang.c:575
#, gcc-internal-format
msgid "couldn't determine target name for dependency tracking"
msgstr ""
@@ -35268,256 +35702,266 @@ msgstr ""
msgid "bad pc in exception_table"
msgstr ""
-#: objc/objc-act.c:702
+#: objc/objc-act.c:701
#, gcc-internal-format
msgid "%<@end%> must appear in an @implementation context"
msgstr ""
-#: objc/objc-act.c:731
+#: objc/objc-act.c:730
#, gcc-internal-format
msgid "method declaration not in @interface context"
msgstr ""
-#: objc/objc-act.c:742
+#: objc/objc-act.c:741
#, gcc-internal-format
msgid "method definition not in @implementation context"
msgstr ""
-#: objc/objc-act.c:1171
+#: objc/objc-act.c:990
+#, gcc-internal-format
+msgid "class %qs does not implement the %qE protocol"
+msgstr ""
+
+#: objc/objc-act.c:993
+#, gcc-internal-format
+msgid "type %qs does not conform to the %qE protocol"
+msgstr ""
+
+#: objc/objc-act.c:1170
#, gcc-internal-format
msgid "comparison of distinct Objective-C types lacks a cast"
msgstr ""
-#: objc/objc-act.c:1175
+#: objc/objc-act.c:1174
#, gcc-internal-format
msgid "initialization from distinct Objective-C type"
msgstr ""
-#: objc/objc-act.c:1179
+#: objc/objc-act.c:1178
#, gcc-internal-format
msgid "assignment from distinct Objective-C type"
msgstr ""
-#: objc/objc-act.c:1183
+#: objc/objc-act.c:1182
#, gcc-internal-format
msgid "distinct Objective-C type in return"
msgstr ""
-#: objc/objc-act.c:1187
+#: objc/objc-act.c:1186
#, gcc-internal-format
msgid "passing argument %d of %qE from distinct Objective-C type"
msgstr ""
-#: objc/objc-act.c:1343
+#: objc/objc-act.c:1342
#, gcc-internal-format
-msgid "statically allocated instance of Objective-C class %qs"
+msgid "statically allocated instance of Objective-C class %qE"
msgstr ""
-#: objc/objc-act.c:1420
+#: objc/objc-act.c:1419
#, gcc-internal-format
-msgid "protocol %qs has circular dependency"
+msgid "protocol %qE has circular dependency"
msgstr ""
-#: objc/objc-act.c:1445 objc/objc-act.c:6622
+#: objc/objc-act.c:1444 objc/objc-act.c:6619
#, gcc-internal-format
-msgid "cannot find protocol declaration for %qs"
+msgid "cannot find protocol declaration for %qE"
msgstr ""
-#: objc/objc-act.c:1909 objc/objc-act.c:3360 objc/objc-act.c:7237
-#: objc/objc-act.c:7573 objc/objc-act.c:7627 objc/objc-act.c:7652
+#: objc/objc-act.c:1908 objc/objc-act.c:3358 objc/objc-act.c:7234
+#: objc/objc-act.c:7568 objc/objc-act.c:7623 objc/objc-act.c:7648
#, gcc-internal-format
-msgid "cannot find interface declaration for %qs"
+msgid "cannot find interface declaration for %qE"
msgstr ""
-#: objc/objc-act.c:1913
+#: objc/objc-act.c:1912
#, gcc-internal-format
-msgid "interface %qs does not have valid constant string layout"
+msgid "interface %qE does not have valid constant string layout"
msgstr ""
-#: objc/objc-act.c:1918
+#: objc/objc-act.c:1917
#, gcc-internal-format
-msgid "cannot find reference tag for class %qs"
+msgid "cannot find reference tag for class %qE"
msgstr ""
-#: objc/objc-act.c:2553
+#: objc/objc-act.c:2552
#, gcc-internal-format
msgid "%Hcreating selector for nonexistent method %qE"
msgstr ""
-#: objc/objc-act.c:2758
+#: objc/objc-act.c:2757
#, gcc-internal-format
-msgid "%qs is not an Objective-C class name or alias"
+msgid "%qE is not an Objective-C class name or alias"
msgstr ""
-#: objc/objc-act.c:2886 objc/objc-act.c:2917 objc/objc-act.c:7501
-#: objc/objc-act.c:7802 objc/objc-act.c:7832
+#: objc/objc-act.c:2885 objc/objc-act.c:2916 objc/objc-act.c:7496
+#: objc/objc-act.c:7798 objc/objc-act.c:7828
#, gcc-internal-format
msgid "Objective-C declarations may only appear in global scope"
msgstr ""
-#: objc/objc-act.c:2891
+#: objc/objc-act.c:2890
#, gcc-internal-format
-msgid "cannot find class %qs"
+msgid "cannot find class %qE"
msgstr ""
-#: objc/objc-act.c:2893
+#: objc/objc-act.c:2892
#, gcc-internal-format
-msgid "class %qs already exists"
+msgid "class %qE already exists"
msgstr ""
-#: objc/objc-act.c:2937 objc/objc-act.c:7542
+#: objc/objc-act.c:2936 objc/objc-act.c:7537
#, gcc-internal-format
-msgid "%qs redeclared as different kind of symbol"
+msgid "%qE redeclared as different kind of symbol"
msgstr ""
-#: objc/objc-act.c:3213
+#: objc/objc-act.c:3212
#, gcc-internal-format
msgid "strong-cast assignment has been intercepted"
msgstr ""
-#: objc/objc-act.c:3255
+#: objc/objc-act.c:3254
#, gcc-internal-format
msgid "strong-cast may possibly be needed"
msgstr ""
-#: objc/objc-act.c:3265
+#: objc/objc-act.c:3264
#, gcc-internal-format
msgid "instance variable assignment has been intercepted"
msgstr ""
-#: objc/objc-act.c:3284
+#: objc/objc-act.c:3283
#, gcc-internal-format
msgid "pointer arithmetic for garbage-collected objects not allowed"
msgstr ""
-#: objc/objc-act.c:3290
+#: objc/objc-act.c:3289
#, gcc-internal-format
msgid "global/static variable assignment has been intercepted"
msgstr ""
-#: objc/objc-act.c:3473
+#: objc/objc-act.c:3471
#, gcc-internal-format
msgid "use %<-fobjc-exceptions%> to enable Objective-C exception syntax"
msgstr ""
-#: objc/objc-act.c:3816
+#: objc/objc-act.c:3814
#, gcc-internal-format
msgid "@catch parameter is not a known Objective-C class type"
msgstr ""
-#: objc/objc-act.c:3832
+#: objc/objc-act.c:3830
#, gcc-internal-format
msgid "exception of type %<%T%> will be caught"
msgstr ""
-#: objc/objc-act.c:3834
+#: objc/objc-act.c:3832
#, gcc-internal-format
msgid "%H by earlier handler for %<%T%>"
msgstr ""
-#: objc/objc-act.c:3887
+#: objc/objc-act.c:3885
#, gcc-internal-format
msgid "%<@try%> without %<@catch%> or %<@finally%>"
msgstr ""
-#: objc/objc-act.c:3938
+#: objc/objc-act.c:3936
#, gcc-internal-format
msgid "%<@throw%> (rethrow) used outside of a @catch block"
msgstr ""
-#: objc/objc-act.c:4339
+#: objc/objc-act.c:4337
#, gcc-internal-format
msgid "type %q+D does not have a known size"
msgstr ""
-#: objc/objc-act.c:4975
+#: objc/objc-act.c:4973
#, gcc-internal-format
msgid "%J%s %qs"
msgstr ""
-#: objc/objc-act.c:4998 objc/objc-act.c:5017
+#: objc/objc-act.c:4996 objc/objc-act.c:5015
#, gcc-internal-format
msgid "inconsistent instance variable specification"
msgstr ""
-#: objc/objc-act.c:5882
+#: objc/objc-act.c:5880
#, gcc-internal-format
msgid "can not use an object as parameter to a method"
msgstr ""
-#: objc/objc-act.c:6109
+#: objc/objc-act.c:6107
#, gcc-internal-format
-msgid "multiple methods named %<%c%s%> found"
+msgid "multiple methods named %<%c%E%> found"
msgstr ""
-#: objc/objc-act.c:6112
+#: objc/objc-act.c:6110
#, gcc-internal-format
msgid "%Jusing %<%c%s%>"
msgstr ""
-#: objc/objc-act.c:6120
+#: objc/objc-act.c:6118
#, gcc-internal-format
-msgid "multiple selectors named %<%c%s%> found"
+msgid "multiple selectors named %<%c%E%> found"
msgstr ""
-#: objc/objc-act.c:6123
+#: objc/objc-act.c:6121
#, gcc-internal-format
msgid "%Jfound %<%c%s%>"
msgstr ""
-#: objc/objc-act.c:6132
+#: objc/objc-act.c:6130
#, gcc-internal-format
msgid "%Jalso found %<%c%s%>"
msgstr ""
-#: objc/objc-act.c:6346
+#: objc/objc-act.c:6344
#, gcc-internal-format
-msgid "no super class declared in @interface for %qs"
+msgid "no super class declared in @interface for %qE"
msgstr ""
-#: objc/objc-act.c:6384
+#: objc/objc-act.c:6382
#, gcc-internal-format
-msgid "found %<-%s%> instead of %<+%s%> in protocol(s)"
+msgid "found %<-%E%> instead of %<+%E%> in protocol(s)"
msgstr ""
-#: objc/objc-act.c:6443
+#: objc/objc-act.c:6440
#, gcc-internal-format
msgid "invalid receiver type %qs"
msgstr ""
-#: objc/objc-act.c:6458
+#: objc/objc-act.c:6455
#, gcc-internal-format
-msgid "%<%c%s%> not found in protocol(s)"
+msgid "%<%c%E%> not found in protocol(s)"
msgstr ""
-#: objc/objc-act.c:6472
+#: objc/objc-act.c:6469
#, gcc-internal-format
-msgid "%qs may not respond to %<%c%s%>"
+msgid "%qE may not respond to %<%c%E%>"
msgstr ""
-#: objc/objc-act.c:6480
+#: objc/objc-act.c:6477
#, gcc-internal-format
-msgid "no %<%c%s%> method found"
+msgid "no %<%c%E%> method found"
msgstr ""
-#: objc/objc-act.c:6486
+#: objc/objc-act.c:6483
#, gcc-internal-format
msgid "(Messages without a matching method signature"
msgstr ""
-#: objc/objc-act.c:6487
+#: objc/objc-act.c:6484
#, gcc-internal-format
msgid "will be assumed to return %<id%> and accept"
msgstr ""
-#: objc/objc-act.c:6488
+#: objc/objc-act.c:6485
#, gcc-internal-format
msgid "%<...%> as arguments.)"
msgstr ""
-#: objc/objc-act.c:6722
+#: objc/objc-act.c:6719
#, gcc-internal-format
-msgid "undeclared selector %qs"
+msgid "undeclared selector %qE"
msgstr ""
#. Historically, a class method that produced objects (factory
@@ -35529,180 +35973,185 @@ msgstr ""
#. to an instance variable. It's better to catch the cases
#. where this is done unknowingly than to support the above
#. paradigm.
-#: objc/objc-act.c:6764
+#: objc/objc-act.c:6761
#, gcc-internal-format
-msgid "instance variable %qs accessed in class method"
+msgid "instance variable %qE accessed in class method"
msgstr ""
-#: objc/objc-act.c:6998
+#: objc/objc-act.c:6995
#, gcc-internal-format
-msgid "duplicate declaration of method %<%c%s%>"
+msgid "duplicate declaration of method %<%c%E%>"
msgstr ""
-#: objc/objc-act.c:7059
+#: objc/objc-act.c:7056
#, gcc-internal-format
-msgid "duplicate interface declaration for category %<%s(%s)%>"
+msgid "duplicate interface declaration for category %<%E(%E)%>"
msgstr ""
-#: objc/objc-act.c:7086
+#: objc/objc-act.c:7083
#, gcc-internal-format
msgid "illegal reference type specified for instance variable %qs"
msgstr ""
-#: objc/objc-act.c:7097
+#: objc/objc-act.c:7094
#, gcc-internal-format
msgid "instance variable %qs has unknown size"
msgstr ""
-#: objc/objc-act.c:7122
+#: objc/objc-act.c:7119
#, gcc-internal-format
-msgid "type %qs has no default constructor to call"
+msgid "type %qE has no default constructor to call"
msgstr ""
-#: objc/objc-act.c:7128
+#: objc/objc-act.c:7125
#, gcc-internal-format
-msgid "destructor for %qs shall not be run either"
+msgid "destructor for %qE shall not be run either"
msgstr ""
#. Vtable pointers are Real Bad(tm), since Obj-C cannot
#. initialize them.
-#: objc/objc-act.c:7140
+#: objc/objc-act.c:7137
#, gcc-internal-format
-msgid "type %qs has virtual member functions"
+msgid "type %qE has virtual member functions"
msgstr ""
-#: objc/objc-act.c:7141
+#: objc/objc-act.c:7138
#, gcc-internal-format
-msgid "illegal aggregate type %qs specified for instance variable %qs"
+msgid "illegal aggregate type %qE specified for instance variable %qs"
msgstr ""
-#: objc/objc-act.c:7151
+#: objc/objc-act.c:7148
#, gcc-internal-format
-msgid "type %qs has a user-defined constructor"
+msgid "type %qE has a user-defined constructor"
msgstr ""
-#: objc/objc-act.c:7153
+#: objc/objc-act.c:7150
#, gcc-internal-format
-msgid "type %qs has a user-defined destructor"
+msgid "type %qE has a user-defined destructor"
msgstr ""
-#: objc/objc-act.c:7157
+#: objc/objc-act.c:7154
#, gcc-internal-format
msgid ""
"C++ constructors and destructors will not be invoked for Objective-C fields"
msgstr ""
-#: objc/objc-act.c:7266
+#: objc/objc-act.c:7263
#, gcc-internal-format
-msgid "instance variable %qs is declared private"
+msgid "instance variable %qE is declared private"
msgstr ""
-#: objc/objc-act.c:7277
+#: objc/objc-act.c:7274
#, gcc-internal-format
-msgid "instance variable %qs is %s; this will be a hard error in the future"
+msgid "instance variable %qE is %s; this will be a hard error in the future"
msgstr ""
-#: objc/objc-act.c:7284
+#: objc/objc-act.c:7281
#, gcc-internal-format
-msgid "instance variable %qs is declared %s"
+msgid "instance variable %qE is declared %s"
msgstr ""
-#: objc/objc-act.c:7310 objc/objc-act.c:7398
+#: objc/objc-act.c:7307 objc/objc-act.c:7395
#, gcc-internal-format
-msgid "incomplete implementation of class %qs"
+msgid "incomplete implementation of class %qE"
msgstr ""
-#: objc/objc-act.c:7314 objc/objc-act.c:7403
+#: objc/objc-act.c:7311 objc/objc-act.c:7399
#, gcc-internal-format
-msgid "incomplete implementation of category %qs"
+msgid "incomplete implementation of category %qE"
msgstr ""
-#: objc/objc-act.c:7319 objc/objc-act.c:7408
+#: objc/objc-act.c:7316 objc/objc-act.c:7403
#, gcc-internal-format
-msgid "method definition for %<%c%s%> not found"
+msgid "method definition for %<%c%E%> not found"
msgstr ""
-#: objc/objc-act.c:7449
+#: objc/objc-act.c:7444
#, gcc-internal-format
-msgid "%s %qs does not fully implement the %qs protocol"
+msgid "%s %qE does not fully implement the %qE protocol"
msgstr ""
-#: objc/objc-act.c:7507 objc/objc-act.c:9208
+#: objc/objc-act.c:7502 objc/objc-act.c:9189
#, gcc-internal-format
msgid "%<@end%> missing in implementation context"
msgstr ""
-#: objc/objc-act.c:7526
+#: objc/objc-act.c:7521
+#, gcc-internal-format
+msgid "cannot find interface declaration for %qE, superclass of %qE"
+msgstr ""
+
+#: objc/objc-act.c:7551
#, gcc-internal-format
-msgid "cannot find interface declaration for %qs, superclass of %qs"
+msgid "reimplementation of class %qE"
msgstr ""
-#: objc/objc-act.c:7556
+#: objc/objc-act.c:7581
#, gcc-internal-format
-msgid "reimplementation of class %qs"
+msgid "conflicting super class name %qE"
msgstr ""
-#: objc/objc-act.c:7588
+#: objc/objc-act.c:7584
#, gcc-internal-format
-msgid "conflicting super class name %qs"
+msgid "previous declaration of %qE"
msgstr ""
-#: objc/objc-act.c:7590
+#: objc/objc-act.c:7586
#, gcc-internal-format
-msgid "previous declaration of %qs"
+msgid "previous declaration"
msgstr ""
-#: objc/objc-act.c:7606 objc/objc-act.c:7604
+#: objc/objc-act.c:7602 objc/objc-act.c:7600
#, gcc-internal-format
-msgid "duplicate interface declaration for class %qs"
+msgid "duplicate interface declaration for class %qE"
msgstr ""
-#: objc/objc-act.c:7860
+#: objc/objc-act.c:7856
#, gcc-internal-format
-msgid "duplicate declaration for protocol %qs"
+msgid "duplicate declaration for protocol %qE"
msgstr ""
-#: objc/objc-act.c:8688
+#: objc/objc-act.c:8684
#, gcc-internal-format
msgid "%Jconflicting types for %<%c%s%>"
msgstr ""
-#: objc/objc-act.c:8691
+#: objc/objc-act.c:8687
#, gcc-internal-format
msgid "%Jprevious declaration of %<%c%s%>"
msgstr ""
-#: objc/objc-act.c:8777
+#: objc/objc-act.c:8773
#, gcc-internal-format
-msgid "no super class declared in interface for %qs"
+msgid "no super class declared in interface for %qE"
msgstr ""
-#: objc/objc-act.c:8829
+#: objc/objc-act.c:8826
#, gcc-internal-format
msgid "[super ...] must appear in a method context"
msgstr ""
-#: objc/objc-act.c:8868
+#: objc/objc-act.c:8865
#, gcc-internal-format
msgid "method possibly missing a [super dealloc] call"
msgstr ""
-#: objc/objc-act.c:9498
+#: objc/objc-act.c:9479
#, gcc-internal-format
-msgid "local declaration of %qs hides instance variable"
+msgid "local declaration of %qE hides instance variable"
msgstr ""
-#: ada/gcc-interface/misc.c:204
+#: ada/gcc-interface/misc.c:195
#, gcc-internal-format
msgid "missing argument to \"-%s\""
msgstr ""
-#: ada/gcc-interface/misc.c:262
+#: ada/gcc-interface/misc.c:253
#, gcc-internal-format
msgid "%<-gnat%> misspelled as %<-gant%>"
msgstr ""
-#: ada/gcc-interface/misc.c:320
+#: ada/gcc-interface/misc.c:311
#, gcc-internal-format
msgid "-fexcess-precision=standard for Ada"
msgstr ""
diff --git a/gcc/pretty-print.c b/gcc/pretty-print.c
index d531075c933..55bc3feeeac 100644
--- a/gcc/pretty-print.c
+++ b/gcc/pretty-print.c
@@ -719,6 +719,7 @@ pp_construct (pretty_printer *pp, const char *prefix, int maximum_length)
pp_line_cutoff (pp) = maximum_length;
pp_prefixing_rule (pp) = DIAGNOSTICS_SHOW_PREFIX_ONCE;
pp_set_prefix (pp, prefix);
+ pp_translate_identifiers (pp) = true;
}
/* Append a string delimited by START and END to the output area of
@@ -855,8 +856,14 @@ pp_base_maybe_space (pretty_printer *pp)
void
pp_base_tree_identifier (pretty_printer *pp, tree id)
{
- const char *text = identifier_to_locale (IDENTIFIER_POINTER (id));
- pp_append_text (pp, text, text + strlen (text));
+ if (pp_translate_identifiers (pp))
+ {
+ const char *text = identifier_to_locale (IDENTIFIER_POINTER (id));
+ pp_append_text (pp, text, text + strlen (text));
+ }
+ else
+ pp_append_text (pp, IDENTIFIER_POINTER (id),
+ IDENTIFIER_POINTER (id) + IDENTIFIER_LENGTH (id));
}
/* The string starting at P has LEN (at least 1) bytes left; if they
diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
index 58292259604..5c4ddca8043 100644
--- a/gcc/pretty-print.h
+++ b/gcc/pretty-print.h
@@ -148,6 +148,10 @@ typedef bool (*printer_fn) (pretty_printer *, text_info *, const char *,
/* The amount of whitespace to be emitted when starting a new line. */
#define pp_indentation(PP) pp_base (PP)->indent_skip
+/* True if identifiers are translated to the locale character set on
+ output. */
+#define pp_translate_identifiers(PP) pp_base (PP)->translate_identifiers
+
/* The data structure that contains the bare minimum required to do
proper pretty-printing. Clients may derived from this structure
and add additional fields they need. */
@@ -187,6 +191,10 @@ struct pretty_print_info
/* Nonzero means one should emit a newline before outputting anything. */
bool need_newline;
+
+ /* Nonzero means identifiers are translated to the locale character
+ set on output. */
+ bool translate_identifiers;
};
#define pp_set_line_maximum_length(PP, L) \
@@ -273,7 +281,9 @@ struct pretty_print_info
pp_scalar (PP, HOST_WIDEST_INT_PRINT_DEC, (HOST_WIDEST_INT) I)
#define pp_pointer(PP, P) pp_scalar (PP, "%p", P)
-#define pp_identifier(PP, ID) pp_string (PP, identifier_to_locale (ID))
+#define pp_identifier(PP, ID) pp_string (PP, (pp_translate_identifiers (PP) \
+ ? identifier_to_locale (ID) \
+ : (ID)))
#define pp_tree_identifier(PP, T) \
pp_base_tree_identifier (pp_base (PP), T)
diff --git a/gcc/regcprop.c b/gcc/regcprop.c
new file mode 100644
index 00000000000..87aaf02c409
--- /dev/null
+++ b/gcc/regcprop.c
@@ -0,0 +1,1005 @@
+/* Copy propagation on hard registers for the GNU compiler.
+ Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
+
+ This file is part of GCC.
+
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+
+ GCC is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3. If not see
+ <http://www.gnu.org/licenses/>. */
+
+#include "config.h"
+#include "system.h"
+#include "coretypes.h"
+#include "tm.h"
+#include "rtl.h"
+#include "tm_p.h"
+#include "insn-config.h"
+#include "regs.h"
+#include "addresses.h"
+#include "hard-reg-set.h"
+#include "basic-block.h"
+#include "reload.h"
+#include "output.h"
+#include "function.h"
+#include "recog.h"
+#include "flags.h"
+#include "toplev.h"
+#include "obstack.h"
+#include "timevar.h"
+#include "tree-pass.h"
+#include "df.h"
+
+/* The following code does forward propagation of hard register copies.
+ The object is to eliminate as many dependencies as possible, so that
+ we have the most scheduling freedom. As a side effect, we also clean
+ up some silly register allocation decisions made by reload. This
+ code may be obsoleted by a new register allocator. */
+
+/* For each register, we have a list of registers that contain the same
+ value. The OLDEST_REGNO field points to the head of the list, and
+ the NEXT_REGNO field runs through the list. The MODE field indicates
+ what mode the data is known to be in; this field is VOIDmode when the
+ register is not known to contain valid data. */
+
+struct value_data_entry
+{
+ enum machine_mode mode;
+ unsigned int oldest_regno;
+ unsigned int next_regno;
+};
+
+struct value_data
+{
+ struct value_data_entry e[FIRST_PSEUDO_REGISTER];
+ unsigned int max_value_regs;
+};
+
+static void kill_value_one_regno (unsigned, struct value_data *);
+static void kill_value_regno (unsigned, unsigned, struct value_data *);
+static void kill_value (rtx, struct value_data *);
+static void set_value_regno (unsigned, enum machine_mode, struct value_data *);
+static void init_value_data (struct value_data *);
+static void kill_clobbered_value (rtx, const_rtx, void *);
+static void kill_set_value (rtx, const_rtx, void *);
+static int kill_autoinc_value (rtx *, void *);
+static void copy_value (rtx, rtx, struct value_data *);
+static bool mode_change_ok (enum machine_mode, enum machine_mode,
+ unsigned int);
+static rtx maybe_mode_change (enum machine_mode, enum machine_mode,
+ enum machine_mode, unsigned int, unsigned int);
+static rtx find_oldest_value_reg (enum reg_class, rtx, struct value_data *);
+static bool replace_oldest_value_reg (rtx *, enum reg_class, rtx,
+ struct value_data *);
+static bool replace_oldest_value_addr (rtx *, enum reg_class,
+ enum machine_mode, rtx,
+ struct value_data *);
+static bool replace_oldest_value_mem (rtx, rtx, struct value_data *);
+static bool copyprop_hardreg_forward_1 (basic_block, struct value_data *);
+extern void debug_value_data (struct value_data *);
+#ifdef ENABLE_CHECKING
+static void validate_value_data (struct value_data *);
+#endif
+
+/* Kill register REGNO. This involves removing it from any value
+ lists, and resetting the value mode to VOIDmode. This is only a
+ helper function; it does not handle any hard registers overlapping
+ with REGNO. */
+
+static void
+kill_value_one_regno (unsigned int regno, struct value_data *vd)
+{
+ unsigned int i, next;
+
+ if (vd->e[regno].oldest_regno != regno)
+ {
+ for (i = vd->e[regno].oldest_regno;
+ vd->e[i].next_regno != regno;
+ i = vd->e[i].next_regno)
+ continue;
+ vd->e[i].next_regno = vd->e[regno].next_regno;
+ }
+ else if ((next = vd->e[regno].next_regno) != INVALID_REGNUM)
+ {
+ for (i = next; i != INVALID_REGNUM; i = vd->e[i].next_regno)
+ vd->e[i].oldest_regno = next;
+ }
+
+ vd->e[regno].mode = VOIDmode;
+ vd->e[regno].oldest_regno = regno;
+ vd->e[regno].next_regno = INVALID_REGNUM;
+
+#ifdef ENABLE_CHECKING
+ validate_value_data (vd);
+#endif
+}
+
+/* Kill the value in register REGNO for NREGS, and any other registers
+ whose values overlap. */
+
+static void
+kill_value_regno (unsigned int regno, unsigned int nregs,
+ struct value_data *vd)
+{
+ unsigned int j;
+
+ /* Kill the value we're told to kill. */
+ for (j = 0; j < nregs; ++j)
+ kill_value_one_regno (regno + j, vd);
+
+ /* Kill everything that overlapped what we're told to kill. */
+ if (regno < vd->max_value_regs)
+ j = 0;
+ else
+ j = regno - vd->max_value_regs;
+ for (; j < regno; ++j)
+ {
+ unsigned int i, n;
+ if (vd->e[j].mode == VOIDmode)
+ continue;
+ n = hard_regno_nregs[j][vd->e[j].mode];
+ if (j + n > regno)
+ for (i = 0; i < n; ++i)
+ kill_value_one_regno (j + i, vd);
+ }
+}
+
+/* Kill X. This is a convenience function wrapping kill_value_regno
+ so that we mind the mode the register is in. */
+
+static void
+kill_value (rtx x, struct value_data *vd)
+{
+ rtx orig_rtx = x;
+
+ if (GET_CODE (x) == SUBREG)
+ {
+ x = simplify_subreg (GET_MODE (x), SUBREG_REG (x),
+ GET_MODE (SUBREG_REG (x)), SUBREG_BYTE (x));
+ if (x == NULL_RTX)
+ x = SUBREG_REG (orig_rtx);
+ }
+ if (REG_P (x))
+ {
+ unsigned int regno = REGNO (x);
+ unsigned int n = hard_regno_nregs[regno][GET_MODE (x)];
+
+ kill_value_regno (regno, n, vd);
+ }
+}
+
+/* Remember that REGNO is valid in MODE. */
+
+static void
+set_value_regno (unsigned int regno, enum machine_mode mode,
+ struct value_data *vd)
+{
+ unsigned int nregs;
+
+ vd->e[regno].mode = mode;
+
+ nregs = hard_regno_nregs[regno][mode];
+ if (nregs > vd->max_value_regs)
+ vd->max_value_regs = nregs;
+}
+
+/* Initialize VD such that there are no known relationships between regs. */
+
+static void
+init_value_data (struct value_data *vd)
+{
+ int i;
+ for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i)
+ {
+ vd->e[i].mode = VOIDmode;
+ vd->e[i].oldest_regno = i;
+ vd->e[i].next_regno = INVALID_REGNUM;
+ }
+ vd->max_value_regs = 0;
+}
+
+/* Called through note_stores. If X is clobbered, kill its value. */
+
+static void
+kill_clobbered_value (rtx x, const_rtx set, void *data)
+{
+ struct value_data *const vd = (struct value_data *) data;
+ if (GET_CODE (set) == CLOBBER)
+ kill_value (x, vd);
+}
+
+/* Called through note_stores. If X is set, not clobbered, kill its
+ current value and install it as the root of its own value list. */
+
+static void
+kill_set_value (rtx x, const_rtx set, void *data)
+{
+ struct value_data *const vd = (struct value_data *) data;
+ if (GET_CODE (set) != CLOBBER)
+ {
+ kill_value (x, vd);
+ if (REG_P (x))
+ set_value_regno (REGNO (x), GET_MODE (x), vd);
+ }
+}
+
+/* Called through for_each_rtx. Kill any register used as the base of an
+ auto-increment expression, and install that register as the root of its
+ own value list. */
+
+static int
+kill_autoinc_value (rtx *px, void *data)
+{
+ rtx x = *px;
+ struct value_data *const vd = (struct value_data *) data;
+
+ if (GET_RTX_CLASS (GET_CODE (x)) == RTX_AUTOINC)
+ {
+ x = XEXP (x, 0);
+ kill_value (x, vd);
+ set_value_regno (REGNO (x), Pmode, vd);
+ return -1;
+ }
+
+ return 0;
+}
+
+/* Assert that SRC has been copied to DEST. Adjust the data structures
+ to reflect that SRC contains an older copy of the shared value. */
+
+static void
+copy_value (rtx dest, rtx src, struct value_data *vd)
+{
+ unsigned int dr = REGNO (dest);
+ unsigned int sr = REGNO (src);
+ unsigned int dn, sn;
+ unsigned int i;
+
+ /* ??? At present, it's possible to see noop sets. It'd be nice if
+ this were cleaned up beforehand... */
+ if (sr == dr)
+ return;
+
+ /* Do not propagate copies to the stack pointer, as that can leave
+ memory accesses with no scheduling dependency on the stack update. */
+ if (dr == STACK_POINTER_REGNUM)
+ return;
+
+ /* Likewise with the frame pointer, if we're using one. */
+ if (frame_pointer_needed && dr == HARD_FRAME_POINTER_REGNUM)
+ return;
+
+ /* Do not propagate copies to fixed or global registers, patterns
+ can be relying to see particular fixed register or users can
+ expect the chosen global register in asm. */
+ if (fixed_regs[dr] || global_regs[dr])
+ return;
+
+ /* If SRC and DEST overlap, don't record anything. */
+ dn = hard_regno_nregs[dr][GET_MODE (dest)];
+ sn = hard_regno_nregs[sr][GET_MODE (dest)];
+ if ((dr > sr && dr < sr + sn)
+ || (sr > dr && sr < dr + dn))
+ return;
+
+ /* If SRC had no assigned mode (i.e. we didn't know it was live)
+ assign it now and assume the value came from an input argument
+ or somesuch. */
+ if (vd->e[sr].mode == VOIDmode)
+ set_value_regno (sr, vd->e[dr].mode, vd);
+
+ /* If we are narrowing the input to a smaller number of hard regs,
+ and it is in big endian, we are really extracting a high part.
+ Since we generally associate a low part of a value with the value itself,
+ we must not do the same for the high part.
+ Note we can still get low parts for the same mode combination through
+ a two-step copy involving differently sized hard regs.
+ Assume hard regs fr* are 32 bits bits each, while r* are 64 bits each:
+ (set (reg:DI r0) (reg:DI fr0))
+ (set (reg:SI fr2) (reg:SI r0))
+ loads the low part of (reg:DI fr0) - i.e. fr1 - into fr2, while:
+ (set (reg:SI fr2) (reg:SI fr0))
+ loads the high part of (reg:DI fr0) into fr2.
+
+ We can't properly represent the latter case in our tables, so don't
+ record anything then. */
+ else if (sn < (unsigned int) hard_regno_nregs[sr][vd->e[sr].mode]
+ && (GET_MODE_SIZE (vd->e[sr].mode) > UNITS_PER_WORD
+ ? WORDS_BIG_ENDIAN : BYTES_BIG_ENDIAN))
+ return;
+
+ /* If SRC had been assigned a mode narrower than the copy, we can't
+ link DEST into the chain, because not all of the pieces of the
+ copy came from oldest_regno. */
+ else if (sn > (unsigned int) hard_regno_nregs[sr][vd->e[sr].mode])
+ return;
+
+ /* Link DR at the end of the value chain used by SR. */
+
+ vd->e[dr].oldest_regno = vd->e[sr].oldest_regno;
+
+ for (i = sr; vd->e[i].next_regno != INVALID_REGNUM; i = vd->e[i].next_regno)
+ continue;
+ vd->e[i].next_regno = dr;
+
+#ifdef ENABLE_CHECKING
+ validate_value_data (vd);
+#endif
+}
+
+/* Return true if a mode change from ORIG to NEW is allowed for REGNO. */
+
+static bool
+mode_change_ok (enum machine_mode orig_mode, enum machine_mode new_mode,
+ unsigned int regno ATTRIBUTE_UNUSED)
+{
+ if (GET_MODE_SIZE (orig_mode) < GET_MODE_SIZE (new_mode))
+ return false;
+
+#ifdef CANNOT_CHANGE_MODE_CLASS
+ return !REG_CANNOT_CHANGE_MODE_P (regno, orig_mode, new_mode);
+#endif
+
+ return true;
+}
+
+/* Register REGNO was originally set in ORIG_MODE. It - or a copy of it -
+ was copied in COPY_MODE to COPY_REGNO, and then COPY_REGNO was accessed
+ in NEW_MODE.
+ Return a NEW_MODE rtx for REGNO if that's OK, otherwise return NULL_RTX. */
+
+static rtx
+maybe_mode_change (enum machine_mode orig_mode, enum machine_mode copy_mode,
+ enum machine_mode new_mode, unsigned int regno,
+ unsigned int copy_regno ATTRIBUTE_UNUSED)
+{
+ if (GET_MODE_SIZE (copy_mode) < GET_MODE_SIZE (orig_mode)
+ && GET_MODE_SIZE (copy_mode) < GET_MODE_SIZE (new_mode))
+ return NULL_RTX;
+
+ if (orig_mode == new_mode)
+ return gen_rtx_raw_REG (new_mode, regno);
+ else if (mode_change_ok (orig_mode, new_mode, regno))
+ {
+ int copy_nregs = hard_regno_nregs[copy_regno][copy_mode];
+ int use_nregs = hard_regno_nregs[copy_regno][new_mode];
+ int copy_offset
+ = GET_MODE_SIZE (copy_mode) / copy_nregs * (copy_nregs - use_nregs);
+ int offset
+ = GET_MODE_SIZE (orig_mode) - GET_MODE_SIZE (new_mode) - copy_offset;
+ int byteoffset = offset % UNITS_PER_WORD;
+ int wordoffset = offset - byteoffset;
+
+ offset = ((WORDS_BIG_ENDIAN ? wordoffset : 0)
+ + (BYTES_BIG_ENDIAN ? byteoffset : 0));
+ return gen_rtx_raw_REG (new_mode,
+ regno + subreg_regno_offset (regno, orig_mode,
+ offset,
+ new_mode));
+ }
+ return NULL_RTX;
+}
+
+/* Find the oldest copy of the value contained in REGNO that is in
+ register class CL and has mode MODE. If found, return an rtx
+ of that oldest register, otherwise return NULL. */
+
+static rtx
+find_oldest_value_reg (enum reg_class cl, rtx reg, struct value_data *vd)
+{
+ unsigned int regno = REGNO (reg);
+ enum machine_mode mode = GET_MODE (reg);
+ unsigned int i;
+
+ /* If we are accessing REG in some mode other that what we set it in,
+ make sure that the replacement is valid. In particular, consider
+ (set (reg:DI r11) (...))
+ (set (reg:SI r9) (reg:SI r11))
+ (set (reg:SI r10) (...))
+ (set (...) (reg:DI r9))
+ Replacing r9 with r11 is invalid. */
+ if (mode != vd->e[regno].mode)
+ {
+ if (hard_regno_nregs[regno][mode]
+ > hard_regno_nregs[regno][vd->e[regno].mode])
+ return NULL_RTX;
+ }
+
+ for (i = vd->e[regno].oldest_regno; i != regno; i = vd->e[i].next_regno)
+ {
+ enum machine_mode oldmode = vd->e[i].mode;
+ rtx new_rtx;
+
+ if (!in_hard_reg_set_p (reg_class_contents[cl], mode, i))
+ return NULL_RTX;
+
+ new_rtx = maybe_mode_change (oldmode, vd->e[regno].mode, mode, i, regno);
+ if (new_rtx)
+ {
+ ORIGINAL_REGNO (new_rtx) = ORIGINAL_REGNO (reg);
+ REG_ATTRS (new_rtx) = REG_ATTRS (reg);
+ REG_POINTER (new_rtx) = REG_POINTER (reg);
+ return new_rtx;
+ }
+ }
+
+ return NULL_RTX;
+}
+
+/* If possible, replace the register at *LOC with the oldest register
+ in register class CL. Return true if successfully replaced. */
+
+static bool
+replace_oldest_value_reg (rtx *loc, enum reg_class cl, rtx insn,
+ struct value_data *vd)
+{
+ rtx new_rtx = find_oldest_value_reg (cl, *loc, vd);
+ if (new_rtx)
+ {
+ if (dump_file)
+ fprintf (dump_file, "insn %u: replaced reg %u with %u\n",
+ INSN_UID (insn), REGNO (*loc), REGNO (new_rtx));
+
+ validate_change (insn, loc, new_rtx, 1);
+ return true;
+ }
+ return false;
+}
+
+/* Similar to replace_oldest_value_reg, but *LOC contains an address.
+ Adapted from find_reloads_address_1. CL is INDEX_REG_CLASS or
+ BASE_REG_CLASS depending on how the register is being considered. */
+
+static bool
+replace_oldest_value_addr (rtx *loc, enum reg_class cl,
+ enum machine_mode mode, rtx insn,
+ struct value_data *vd)
+{
+ rtx x = *loc;
+ RTX_CODE code = GET_CODE (x);
+ const char *fmt;
+ int i, j;
+ bool changed = false;
+
+ switch (code)
+ {
+ case PLUS:
+ {
+ rtx orig_op0 = XEXP (x, 0);
+ rtx orig_op1 = XEXP (x, 1);
+ RTX_CODE code0 = GET_CODE (orig_op0);
+ RTX_CODE code1 = GET_CODE (orig_op1);
+ rtx op0 = orig_op0;
+ rtx op1 = orig_op1;
+ rtx *locI = NULL;
+ rtx *locB = NULL;
+ enum rtx_code index_code = SCRATCH;
+
+ if (GET_CODE (op0) == SUBREG)
+ {
+ op0 = SUBREG_REG (op0);
+ code0 = GET_CODE (op0);
+ }
+
+ if (GET_CODE (op1) == SUBREG)
+ {
+ op1 = SUBREG_REG (op1);
+ code1 = GET_CODE (op1);
+ }
+
+ if (code0 == MULT || code0 == SIGN_EXTEND || code0 == TRUNCATE
+ || code0 == ZERO_EXTEND || code1 == MEM)
+ {
+ locI = &XEXP (x, 0);
+ locB = &XEXP (x, 1);
+ index_code = GET_CODE (*locI);
+ }
+ else if (code1 == MULT || code1 == SIGN_EXTEND || code1 == TRUNCATE
+ || code1 == ZERO_EXTEND || code0 == MEM)
+ {
+ locI = &XEXP (x, 1);
+ locB = &XEXP (x, 0);
+ index_code = GET_CODE (*locI);
+ }
+ else if (code0 == CONST_INT || code0 == CONST
+ || code0 == SYMBOL_REF || code0 == LABEL_REF)
+ {
+ locB = &XEXP (x, 1);
+ index_code = GET_CODE (XEXP (x, 0));
+ }
+ else if (code1 == CONST_INT || code1 == CONST
+ || code1 == SYMBOL_REF || code1 == LABEL_REF)
+ {
+ locB = &XEXP (x, 0);
+ index_code = GET_CODE (XEXP (x, 1));
+ }
+ else if (code0 == REG && code1 == REG)
+ {
+ int index_op;
+ unsigned regno0 = REGNO (op0), regno1 = REGNO (op1);
+
+ if (REGNO_OK_FOR_INDEX_P (regno1)
+ && regno_ok_for_base_p (regno0, mode, PLUS, REG))
+ index_op = 1;
+ else if (REGNO_OK_FOR_INDEX_P (regno0)
+ && regno_ok_for_base_p (regno1, mode, PLUS, REG))
+ index_op = 0;
+ else if (regno_ok_for_base_p (regno0, mode, PLUS, REG)
+ || REGNO_OK_FOR_INDEX_P (regno1))
+ index_op = 1;
+ else if (regno_ok_for_base_p (regno1, mode, PLUS, REG))
+ index_op = 0;
+ else
+ index_op = 1;
+
+ locI = &XEXP (x, index_op);
+ locB = &XEXP (x, !index_op);
+ index_code = GET_CODE (*locI);
+ }
+ else if (code0 == REG)
+ {
+ locI = &XEXP (x, 0);
+ locB = &XEXP (x, 1);
+ index_code = GET_CODE (*locI);
+ }
+ else if (code1 == REG)
+ {
+ locI = &XEXP (x, 1);
+ locB = &XEXP (x, 0);
+ index_code = GET_CODE (*locI);
+ }
+
+ if (locI)
+ changed |= replace_oldest_value_addr (locI, INDEX_REG_CLASS, mode,
+ insn, vd);
+ if (locB)
+ changed |= replace_oldest_value_addr (locB,
+ base_reg_class (mode, PLUS,
+ index_code),
+ mode, insn, vd);
+ return changed;
+ }
+
+ case POST_INC:
+ case POST_DEC:
+ case POST_MODIFY:
+ case PRE_INC:
+ case PRE_DEC:
+ case PRE_MODIFY:
+ return false;
+
+ case MEM:
+ return replace_oldest_value_mem (x, insn, vd);
+
+ case REG:
+ return replace_oldest_value_reg (loc, cl, insn, vd);
+
+ default:
+ break;
+ }
+
+ fmt = GET_RTX_FORMAT (code);
+ for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
+ {
+ if (fmt[i] == 'e')
+ changed |= replace_oldest_value_addr (&XEXP (x, i), cl, mode,
+ insn, vd);
+ else if (fmt[i] == 'E')
+ for (j = XVECLEN (x, i) - 1; j >= 0; j--)
+ changed |= replace_oldest_value_addr (&XVECEXP (x, i, j), cl,
+ mode, insn, vd);
+ }
+
+ return changed;
+}
+
+/* Similar to replace_oldest_value_reg, but X contains a memory. */
+
+static bool
+replace_oldest_value_mem (rtx x, rtx insn, struct value_data *vd)
+{
+ return replace_oldest_value_addr (&XEXP (x, 0),
+ base_reg_class (GET_MODE (x), MEM,
+ SCRATCH),
+ GET_MODE (x), insn, vd);
+}
+
+/* Perform the forward copy propagation on basic block BB. */
+
+static bool
+copyprop_hardreg_forward_1 (basic_block bb, struct value_data *vd)
+{
+ bool changed = false;
+ rtx insn;
+
+ for (insn = BB_HEAD (bb); ; insn = NEXT_INSN (insn))
+ {
+ int n_ops, i, alt, predicated;
+ bool is_asm, any_replacements;
+ rtx set;
+ bool replaced[MAX_RECOG_OPERANDS];
+
+ if (! INSN_P (insn))
+ {
+ if (insn == BB_END (bb))
+ break;
+ else
+ continue;
+ }
+
+ set = single_set (insn);
+ extract_insn (insn);
+ if (! constrain_operands (1))
+ fatal_insn_not_found (insn);
+ preprocess_constraints ();
+ alt = which_alternative;
+ n_ops = recog_data.n_operands;
+ is_asm = asm_noperands (PATTERN (insn)) >= 0;
+
+ /* Simplify the code below by rewriting things to reflect
+ matching constraints. Also promote OP_OUT to OP_INOUT
+ in predicated instructions. */
+
+ predicated = GET_CODE (PATTERN (insn)) == COND_EXEC;
+ for (i = 0; i < n_ops; ++i)
+ {
+ int matches = recog_op_alt[i][alt].matches;
+ if (matches >= 0)
+ recog_op_alt[i][alt].cl = recog_op_alt[matches][alt].cl;
+ if (matches >= 0 || recog_op_alt[i][alt].matched >= 0
+ || (predicated && recog_data.operand_type[i] == OP_OUT))
+ recog_data.operand_type[i] = OP_INOUT;
+ }
+
+ /* For each earlyclobber operand, zap the value data. */
+ for (i = 0; i < n_ops; i++)
+ if (recog_op_alt[i][alt].earlyclobber)
+ kill_value (recog_data.operand[i], vd);
+
+ /* Within asms, a clobber cannot overlap inputs or outputs.
+ I wouldn't think this were true for regular insns, but
+ scan_rtx treats them like that... */
+ note_stores (PATTERN (insn), kill_clobbered_value, vd);
+
+ /* Kill all auto-incremented values. */
+ /* ??? REG_INC is useless, since stack pushes aren't done that way. */
+ for_each_rtx (&PATTERN (insn), kill_autoinc_value, vd);
+
+ /* Kill all early-clobbered operands. */
+ for (i = 0; i < n_ops; i++)
+ if (recog_op_alt[i][alt].earlyclobber)
+ kill_value (recog_data.operand[i], vd);
+
+ /* Special-case plain move instructions, since we may well
+ be able to do the move from a different register class. */
+ if (set && REG_P (SET_SRC (set)))
+ {
+ rtx src = SET_SRC (set);
+ unsigned int regno = REGNO (src);
+ enum machine_mode mode = GET_MODE (src);
+ unsigned int i;
+ rtx new_rtx;
+
+ /* If we are accessing SRC in some mode other that what we
+ set it in, make sure that the replacement is valid. */
+ if (mode != vd->e[regno].mode)
+ {
+ if (hard_regno_nregs[regno][mode]
+ > hard_regno_nregs[regno][vd->e[regno].mode])
+ goto no_move_special_case;
+ }
+
+ /* If the destination is also a register, try to find a source
+ register in the same class. */
+ if (REG_P (SET_DEST (set)))
+ {
+ new_rtx = find_oldest_value_reg (REGNO_REG_CLASS (regno), src, vd);
+ if (new_rtx && validate_change (insn, &SET_SRC (set), new_rtx, 0))
+ {
+ if (dump_file)
+ fprintf (dump_file,
+ "insn %u: replaced reg %u with %u\n",
+ INSN_UID (insn), regno, REGNO (new_rtx));
+ changed = true;
+ goto did_replacement;
+ }
+ }
+
+ /* Otherwise, try all valid registers and see if its valid. */
+ for (i = vd->e[regno].oldest_regno; i != regno;
+ i = vd->e[i].next_regno)
+ {
+ new_rtx = maybe_mode_change (vd->e[i].mode, vd->e[regno].mode,
+ mode, i, regno);
+ if (new_rtx != NULL_RTX)
+ {
+ if (validate_change (insn, &SET_SRC (set), new_rtx, 0))
+ {
+ ORIGINAL_REGNO (new_rtx) = ORIGINAL_REGNO (src);
+ REG_ATTRS (new_rtx) = REG_ATTRS (src);
+ REG_POINTER (new_rtx) = REG_POINTER (src);
+ if (dump_file)
+ fprintf (dump_file,
+ "insn %u: replaced reg %u with %u\n",
+ INSN_UID (insn), regno, REGNO (new_rtx));
+ changed = true;
+ goto did_replacement;
+ }
+ }
+ }
+ }
+ no_move_special_case:
+
+ any_replacements = false;
+
+ /* For each input operand, replace a hard register with the
+ eldest live copy that's in an appropriate register class. */
+ for (i = 0; i < n_ops; i++)
+ {
+ replaced[i] = false;
+
+ /* Don't scan match_operand here, since we've no reg class
+ information to pass down. Any operands that we could
+ substitute in will be represented elsewhere. */
+ if (recog_data.constraints[i][0] == '\0')
+ continue;
+
+ /* Don't replace in asms intentionally referencing hard regs. */
+ if (is_asm && REG_P (recog_data.operand[i])
+ && (REGNO (recog_data.operand[i])
+ == ORIGINAL_REGNO (recog_data.operand[i])))
+ continue;
+
+ if (recog_data.operand_type[i] == OP_IN)
+ {
+ if (recog_op_alt[i][alt].is_address)
+ replaced[i]
+ = replace_oldest_value_addr (recog_data.operand_loc[i],
+ recog_op_alt[i][alt].cl,
+ VOIDmode, insn, vd);
+ else if (REG_P (recog_data.operand[i]))
+ replaced[i]
+ = replace_oldest_value_reg (recog_data.operand_loc[i],
+ recog_op_alt[i][alt].cl,
+ insn, vd);
+ else if (MEM_P (recog_data.operand[i]))
+ replaced[i] = replace_oldest_value_mem (recog_data.operand[i],
+ insn, vd);
+ }
+ else if (MEM_P (recog_data.operand[i]))
+ replaced[i] = replace_oldest_value_mem (recog_data.operand[i],
+ insn, vd);
+
+ /* If we performed any replacement, update match_dups. */
+ if (replaced[i])
+ {
+ int j;
+ rtx new_rtx;
+
+ new_rtx = *recog_data.operand_loc[i];
+ recog_data.operand[i] = new_rtx;
+ for (j = 0; j < recog_data.n_dups; j++)
+ if (recog_data.dup_num[j] == i)
+ validate_unshare_change (insn, recog_data.dup_loc[j], new_rtx, 1);
+
+ any_replacements = true;
+ }
+ }
+
+ if (any_replacements)
+ {
+ if (! apply_change_group ())
+ {
+ for (i = 0; i < n_ops; i++)
+ if (replaced[i])
+ {
+ rtx old = *recog_data.operand_loc[i];
+ recog_data.operand[i] = old;
+ }
+
+ if (dump_file)
+ fprintf (dump_file,
+ "insn %u: reg replacements not verified\n",
+ INSN_UID (insn));
+ }
+ else
+ changed = true;
+ }
+
+ did_replacement:
+ /* Clobber call-clobbered registers. */
+ if (CALL_P (insn))
+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
+ if (TEST_HARD_REG_BIT (regs_invalidated_by_call, i))
+ kill_value_regno (i, 1, vd);
+
+ /* Notice stores. */
+ note_stores (PATTERN (insn), kill_set_value, vd);
+
+ /* Notice copies. */
+ if (set && REG_P (SET_DEST (set)) && REG_P (SET_SRC (set)))
+ copy_value (SET_DEST (set), SET_SRC (set), vd);
+
+ if (insn == BB_END (bb))
+ break;
+ }
+
+ return changed;
+}
+
+/* Main entry point for the forward copy propagation optimization. */
+
+static unsigned int
+copyprop_hardreg_forward (void)
+{
+ struct value_data *all_vd;
+ basic_block bb;
+ sbitmap visited;
+
+ all_vd = XNEWVEC (struct value_data, last_basic_block);
+
+ visited = sbitmap_alloc (last_basic_block);
+ sbitmap_zero (visited);
+
+ FOR_EACH_BB (bb)
+ {
+ SET_BIT (visited, bb->index);
+
+ /* If a block has a single predecessor, that we've already
+ processed, begin with the value data that was live at
+ the end of the predecessor block. */
+ /* ??? Ought to use more intelligent queuing of blocks. */
+ if (single_pred_p (bb)
+ && TEST_BIT (visited, single_pred (bb)->index)
+ && ! (single_pred_edge (bb)->flags & (EDGE_ABNORMAL_CALL | EDGE_EH)))
+ all_vd[bb->index] = all_vd[single_pred (bb)->index];
+ else
+ init_value_data (all_vd + bb->index);
+
+ copyprop_hardreg_forward_1 (bb, all_vd + bb->index);
+ }
+
+ sbitmap_free (visited);
+ free (all_vd);
+ return 0;
+}
+
+/* Dump the value chain data to stderr. */
+
+void
+debug_value_data (struct value_data *vd)
+{
+ HARD_REG_SET set;
+ unsigned int i, j;
+
+ CLEAR_HARD_REG_SET (set);
+
+ for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i)
+ if (vd->e[i].oldest_regno == i)
+ {
+ if (vd->e[i].mode == VOIDmode)
+ {
+ if (vd->e[i].next_regno != INVALID_REGNUM)
+ fprintf (stderr, "[%u] Bad next_regno for empty chain (%u)\n",
+ i, vd->e[i].next_regno);
+ continue;
+ }
+
+ SET_HARD_REG_BIT (set, i);
+ fprintf (stderr, "[%u %s] ", i, GET_MODE_NAME (vd->e[i].mode));
+
+ for (j = vd->e[i].next_regno;
+ j != INVALID_REGNUM;
+ j = vd->e[j].next_regno)
+ {
+ if (TEST_HARD_REG_BIT (set, j))
+ {
+ fprintf (stderr, "[%u] Loop in regno chain\n", j);
+ return;
+ }
+
+ if (vd->e[j].oldest_regno != i)
+ {
+ fprintf (stderr, "[%u] Bad oldest_regno (%u)\n",
+ j, vd->e[j].oldest_regno);
+ return;
+ }
+ SET_HARD_REG_BIT (set, j);
+ fprintf (stderr, "[%u %s] ", j, GET_MODE_NAME (vd->e[j].mode));
+ }
+ fputc ('\n', stderr);
+ }
+
+ for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i)
+ if (! TEST_HARD_REG_BIT (set, i)
+ && (vd->e[i].mode != VOIDmode
+ || vd->e[i].oldest_regno != i
+ || vd->e[i].next_regno != INVALID_REGNUM))
+ fprintf (stderr, "[%u] Non-empty reg in chain (%s %u %i)\n",
+ i, GET_MODE_NAME (vd->e[i].mode), vd->e[i].oldest_regno,
+ vd->e[i].next_regno);
+}
+
+#ifdef ENABLE_CHECKING
+static void
+validate_value_data (struct value_data *vd)
+{
+ HARD_REG_SET set;
+ unsigned int i, j;
+
+ CLEAR_HARD_REG_SET (set);
+
+ for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i)
+ if (vd->e[i].oldest_regno == i)
+ {
+ if (vd->e[i].mode == VOIDmode)
+ {
+ if (vd->e[i].next_regno != INVALID_REGNUM)
+ internal_error ("validate_value_data: [%u] Bad next_regno for empty chain (%u)",
+ i, vd->e[i].next_regno);
+ continue;
+ }
+
+ SET_HARD_REG_BIT (set, i);
+
+ for (j = vd->e[i].next_regno;
+ j != INVALID_REGNUM;
+ j = vd->e[j].next_regno)
+ {
+ if (TEST_HARD_REG_BIT (set, j))
+ internal_error ("validate_value_data: Loop in regno chain (%u)",
+ j);
+ if (vd->e[j].oldest_regno != i)
+ internal_error ("validate_value_data: [%u] Bad oldest_regno (%u)",
+ j, vd->e[j].oldest_regno);
+
+ SET_HARD_REG_BIT (set, j);
+ }
+ }
+
+ for (i = 0; i < FIRST_PSEUDO_REGISTER; ++i)
+ if (! TEST_HARD_REG_BIT (set, i)
+ && (vd->e[i].mode != VOIDmode
+ || vd->e[i].oldest_regno != i
+ || vd->e[i].next_regno != INVALID_REGNUM))
+ internal_error ("validate_value_data: [%u] Non-empty reg in chain (%s %u %i)",
+ i, GET_MODE_NAME (vd->e[i].mode), vd->e[i].oldest_regno,
+ vd->e[i].next_regno);
+}
+#endif
+
+static bool
+gate_handle_cprop (void)
+{
+ return (optimize > 0 && (flag_cprop_registers));
+}
+
+
+struct rtl_opt_pass pass_cprop_hardreg =
+{
+ {
+ RTL_PASS,
+ "cprop_hardreg", /* name */
+ gate_handle_cprop, /* gate */
+ copyprop_hardreg_forward, /* execute */
+ NULL, /* sub */
+ NULL, /* next */
+ 0, /* static_pass_number */
+ TV_CPROP_REGISTERS, /* tv_id */
+ 0, /* properties_required */
+ 0, /* properties_provided */
+ 0, /* properties_destroyed */
+ 0, /* todo_flags_start */
+ TODO_dump_func | TODO_verify_rtl_sharing /* todo_flags_finish */
+ }
+};
diff --git a/gcc/regmove.c b/gcc/regmove.c
index 52ce8335a6a..ff38ff849ef 100644
--- a/gcc/regmove.c
+++ b/gcc/regmove.c
@@ -50,9 +50,16 @@ static void optimize_reg_copy_2 (rtx, rtx, rtx);
static void optimize_reg_copy_3 (rtx, rtx, rtx);
static void copy_src_to_dest (rtx, rtx, rtx);
+enum match_use
+{
+ READ,
+ WRITE,
+ READWRITE
+};
+
struct match {
int with[MAX_RECOG_OPERANDS];
- enum { READ, WRITE, READWRITE } use[MAX_RECOG_OPERANDS];
+ enum match_use use[MAX_RECOG_OPERANDS];
int commutative[MAX_RECOG_OPERANDS];
int early_clobber[MAX_RECOG_OPERANDS];
};
diff --git a/gcc/sched-int.h b/gcc/sched-int.h
index f7a54b67127..1b6a0345a01 100644
--- a/gcc/sched-int.h
+++ b/gcc/sched-int.h
@@ -1,7 +1,8 @@
/* Instruction scheduling pass. This file contains definitions used
internally in the scheduler.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+ 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009
+ Free Software Foundation, Inc.
This file is part of GCC.
@@ -425,6 +426,24 @@ enum reg_pending_barrier_mode
TRUE_BARRIER
};
+/* Whether a register movement is associated with a call. */
+enum post_call_group
+{
+ not_post_call,
+ post_call,
+ post_call_initial
+};
+
+/* Insns which affect pseudo-registers. */
+struct deps_reg
+{
+ rtx uses;
+ rtx sets;
+ rtx clobbers;
+ int uses_length;
+ int clobbers_length;
+};
+
/* Describe state of dependencies used during sched_analyze phase. */
struct deps
{
@@ -488,7 +507,7 @@ struct deps
/* Used to keep post-call pseudo/hard reg movements together with
the call. */
- enum { not_post_call, post_call, post_call_initial } in_post_call_group_p;
+ enum post_call_group in_post_call_group_p;
/* The maximum register number for the following arrays. Before reload
this is max_reg_num; after reload it is FIRST_PSEUDO_REGISTER. */
@@ -498,14 +517,7 @@ struct deps
N within the current basic block; or zero, if there is no
such insn. Needed for new registers which may be introduced
by splitting insns. */
- struct deps_reg
- {
- rtx uses;
- rtx sets;
- rtx clobbers;
- int uses_length;
- int clobbers_length;
- } *reg_last;
+ struct deps_reg *reg_last;
/* Element N is set for each register that has any nonzero element
in reg_last[N].{uses,sets,clobbers}. */
diff --git a/gcc/target.h b/gcc/target.h
index 63fab54c42e..b6935264e91 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -91,6 +91,18 @@ struct _dep;
/* This is defined in ddg.h . */
struct ddg;
+/* Assembler instructions for creating various kinds of integer object. */
+
+struct asm_int_op
+{
+ const char *hi;
+ const char *si;
+ const char *di;
+ const char *ti;
+};
+
+/* The target structure. This holds all the backend hooks. */
+
struct gcc_target
{
/* Functions that output assembler for the target. */
@@ -101,13 +113,7 @@ struct gcc_target
/* Assembler instructions for creating various kinds of integer object. */
const char *byte_op;
- struct asm_int_op
- {
- const char *hi;
- const char *si;
- const char *di;
- const char *ti;
- } aligned_op, unaligned_op;
+ struct asm_int_op aligned_op, unaligned_op;
/* Try to output the assembler code for an integer object whose
value is given by X. SIZE is the size of the object in bytes and
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index be5e1aa3d04..ca5cf9f7cc9 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,192 @@
+2009-05-10 Ian Lance Taylor <iant@google.com>
+
+ * gcc.dg/Wcxx-compat-7.c: New testcase.
+ * gcc.dg/Wcxx-compat-8.c: New testcase.
+ * gcc.dg/c99-tag-1.c: Recognize new "originally defined here"
+ notes
+ * gcc.dg/pr17188-1.c: Likewise.
+ * gcc.dg/pr39084.c: Likewise.
+
+2009-05-10 Michael Matz <matz@suse.de>
+
+ PR target/40031
+ * gcc.dg/pr40031.c: New test.
+
+2009-05-10 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/40018
+ * gfortran.dg/array_constructor_31.f90: New test.
+
+2009-05-10 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/40081
+ * g++.dg/torture/pr40081.C: New testcase.
+
+2009-05-10 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/38863
+ * gfortran.dg/dependency_24.f90: New test.
+ * gfortran.dg/dependency_23.f90: Clean up module files.
+
+2009-05-10 David Billinghurst <billingd@gcc.gnu.org>
+
+ PR fortran/38956
+ * gfortran.dg/chmod_1.f90: Don't run on *-*-cygwin*.
+ * gfortran.dg/chmod_2.f90: Likewise.
+ * gfortran.dg/chmod_3.f90: Likewise.
+ * gfortran.dg/open_errors.f90: Likewise.
+
+2009-05-09 Jan Hubicka <jh@suse.cz>
+
+ PR middle-end/40043
+ * g++.dg/eh/nested-try.C: New test.
+
+2009-05-08 Michael Meissner <meissner@linux.vnet.ibm.com>
+
+ PR tree-optimization/40049
+ * gcc.dg/vect/vect-shift-2.c: New test.
+
+2009-05-08 Joseph Myers <joseph@codesourcery.com>
+
+ * gcc.dg/torture/complex-sign-mul-minus-one.c,
+ gcc.dg/torture/complex-sign-mul-one.c: New tests.
+
+2009-05-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR c/36892
+ * g++.dg/warn/deprecated-6.C: New.
+ * gcc.dg/deprecated-4.c: Likewise.
+ * gcc.dg/deprecated-5.c: Likewise.
+ * gcc.dg/deprecated-6.c: Likewise.
+
+2009-05-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * gcc.dg/vect/no-vfa-vect-37.c: Replace __aligned__(16) with
+ __aligned__(__BIGGEST_ALIGNMENT__).
+ * gcc.dg/vect/no-vfa-vect-43.c: Likewise.
+ * gcc.dg/vect/no-vfa-vect-49.c: Likewise.
+ * gcc.dg/vect/no-vfa-vect-53.c: Likewise.
+ * gcc.dg/vect/no-vfa-vect-57.c: Likewise.
+ * gcc.dg/vect/no-vfa-vect-61.c: Likewise.
+ * gcc.dg/vect/no-vfa-vect-79.c: Likewise.
+ * gcc.dg/vect/Os-vect-95.c: Likewise.
+ * gcc.dg/vect/pr20122.c: Likewise.
+ * gcc.dg/vect/pr36493.c: Likewise.
+ * gcc.dg/vect/pr37385.c: Likewise.
+ * gcc.dg/vect/slp-7.c: Likewise.
+ * gcc.dg/vect/slp-9.c: Likewise.
+ * gcc.dg/vect/slp-widen-mult-s16.c: Likewise.
+ * gcc.dg/vect/slp-widen-mult-u8.c: Likewise.
+ * gcc.dg/vect/vect-35.c: Likewise.
+ * gcc.dg/vect/vect-40.c: Likewise.
+ * gcc.dg/vect/vect-42.c: Likewise.
+ * gcc.dg/vect/vect-44.c: Likewise.
+ * gcc.dg/vect/vect-46.c: Likewise.
+ * gcc.dg/vect/vect-48.c: Likewise.
+ * gcc.dg/vect/vect-52.c: Likewise.
+ * gcc.dg/vect/vect-54.c: Likewise.
+ * gcc.dg/vect/vect-56.c: Likewise.
+ * gcc.dg/vect/vect-58.c: Likewise.
+ * gcc.dg/vect/vect-60.c: Likewise.
+ * gcc.dg/vect/vect-74.c: Likewise.
+ * gcc.dg/vect/vect-75.c: Likewise.
+ * gcc.dg/vect/vect-76.c: Likewise.
+ * gcc.dg/vect/vect-77-alignchecks.c: Likewise.
+ * gcc.dg/vect/vect-77.c: Likewise.
+ * gcc.dg/vect/vect-77-global.c: Likewise.
+ * gcc.dg/vect/vect-78-alignchecks.c: Likewise.
+ * gcc.dg/vect/vect-78.c: Likewise.
+ * gcc.dg/vect/vect-78-global.c: Likewise.
+ * gcc.dg/vect/vect-80.c: Likewise.
+ * gcc.dg/vect/vect-85.c: Likewise.
+ * gcc.dg/vect/vect-87.c: Likewise.
+ * gcc.dg/vect/vect-88.c: Likewise.
+ * gcc.dg/vect/vect-92.c: Likewise.
+ * gcc.dg/vect/vect-93.c: Likewise.
+ * gcc.dg/vect/vect-95.c: Likewise.
+ * gcc.dg/vect/vect-97.c: Likewise.
+ * gcc.dg/vect/vect-complex-1.c: Likewise.
+ * gcc.dg/vect/vect-complex-4.c: Likewise.
+ * gcc.dg/vect/vect-complex-5.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-10.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-11.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-12.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-13.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-14.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-15.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-16.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-17.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-3.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-6.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-7.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-8.c: Likewise.
+ * gcc.dg/vect/vect-multitypes-9.c: Likewise.
+ * gcc.dg/vect/vect-outer-1a.c: Likewise.
+ * gcc.dg/vect/vect-outer-1.c: Likewise.
+ * gcc.dg/vect/vect-outer-2a.c: Likewise.
+ * gcc.dg/vect/vect-outer-2b.c: Likewise.
+ * gcc.dg/vect/vect-outer-2.c: Likewise.
+ * gcc.dg/vect/vect-outer-2c.c: Likewise.
+ * gcc.dg/vect/vect-outer-2d.c: Likewise.
+ * gcc.dg/vect/vect-outer-3a.c: Likewise.
+ * gcc.dg/vect/vect-outer-3b.c: Likewise.
+ * gcc.dg/vect/vect-outer-3.c: Likewise.
+ * gcc.dg/vect/vect-outer-3c.c: Likewise.
+ * gcc.dg/vect/vect-outer-5.c: Likewise.
+ * gcc.dg/vect/vect-outer-6.c: Likewise.
+ * gcc.dg/vect/vect-reduc-dot-s16a.c: Likewise.
+ * gcc.dg/vect/vect-reduc-dot-s16b.c: Likewise.
+ * gcc.dg/vect/vect-reduc-dot-s8a.c: Likewise.
+ * gcc.dg/vect/vect-reduc-dot-s8b.c: Likewise.
+ * gcc.dg/vect/vect-reduc-dot-s8c.c: Likewise.
+ * gcc.dg/vect/vect-reduc-dot-u16a.c: Likewise.
+ * gcc.dg/vect/vect-reduc-dot-u16b.c: Likewise.
+ * gcc.dg/vect/vect-reduc-dot-u8a.c: Likewise.
+ * gcc.dg/vect/vect-reduc-dot-u8b.c: Likewise.
+ * gcc.dg/vect/vect-widen-mult-s16.c: Likewise.
+ * gcc.dg/vect/vect-widen-mult-s8.c: Likewise.
+ * gcc.dg/vect/vect-widen-mult-u16.c: Likewise.
+ * gcc.dg/vect/vect-widen-mult-u8.c: Likewise.
+ * gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c: Likewise.
+
+2009-05-08 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/24581
+ * gcc.dg/torture/complex-sign.h: New header.
+ * gcc.dg/torture/complex-sign-add.c,
+ gcc.dg/torture/complex-sign-mixed-add.c,
+ gcc.dg/torture/complex-sign-mixed-div.c,
+ gcc.dg/torture/complex-sign-mixed-mul.c,
+ gcc.dg/torture/complex-sign-mixed-sub.c,
+ gcc.dg/torture/complex-sign-mul.c,
+ gcc.dg/torture/complex-sign-sub.c: New tests.
+
+2009-05-08 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/39876
+ * gfortran.dg/intrinsic_3.f90: New.
+
+2009-05-07 Janis Johnson <janis187@us.ibm.com>
+
+ PR c/39037
+ * gcc.dg/Wunsuffixed-float-constants-1.c: New test.
+ * gcc.dg/cpp/pragma-float-const-decimal64-1.c: New test.
+ * gcc.dg/dfp/float-constant-double.c: New test.
+ * gcc.dg/dfp/pragma-float-const-decimal64-1.c: New test.
+ * gcc.dg/dfp/pragma-float-const-decimal64-2.c: New test.
+ * gcc.dg/dfp/pragma-float-const-decimal64-3.c: New test.
+ * gcc.dg/dfp/pragma-float-const-decimal64-4.c: New test.
+ * gcc.dg/dfp/pragma-float-const-decimal64-5.c: New test.
+ * gcc.dg/dfp/pragma-float-const-decimal64-6.c: New test.
+ * gcc.dg/dfp/pragma-float-const-decimal64-7.c: New test.
+ * gcc.dg/dfp/pragma-float-const-decimal64-8.c: New test.
+ * g++.dg/cpp/pragma-float-const-decimal64-1.C: New test.
+
+2009-05-07 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/40057
+ * gcc.c-torture/execute/pr40057.c: New test.
+
2009-05-06 James E. Wilson <wilson@codesourcery.com>
* gcc.c-torture/compile/const-high-part.c: New test.
diff --git a/gcc/testsuite/g++.dg/cpp/pragma-float-const-decimal64-1.C b/gcc/testsuite/g++.dg/cpp/pragma-float-const-decimal64-1.C
new file mode 100644
index 00000000000..31e1ad6d507
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp/pragma-float-const-decimal64-1.C
@@ -0,0 +1,5 @@
+// { dg-do compile }
+// { dg-options "-Wunknown-pragmas" }
+
+#pragma STDC FLOAT_CONST_DECIMAL64 ON // { dg-warning "not supported for C\\\+\\\+" }
+double d = 1.0;
diff --git a/gcc/testsuite/g++.dg/eh/nested-try.C b/gcc/testsuite/g++.dg/eh/nested-try.C
new file mode 100644
index 00000000000..5796f9a2806
--- /dev/null
+++ b/gcc/testsuite/g++.dg/eh/nested-try.C
@@ -0,0 +1,25 @@
+// { dg-do compile }
+// Nested try statements shadowing each other was crashing in EH edge redirection.
+// PR middle-end/40043
+struct A
+{
+ ~A();
+ void foo();
+};
+
+void bar()
+{
+ A a;
+
+ try
+ {
+ A b;
+
+ try
+ {
+ b.foo();
+ }
+ catch (int) {}
+ }
+ catch (int) {}
+}
diff --git a/gcc/testsuite/g++.dg/torture/pr40081.C b/gcc/testsuite/g++.dg/torture/pr40081.C
new file mode 100644
index 00000000000..e65c5a8438d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/torture/pr40081.C
@@ -0,0 +1,16 @@
+struct Atomic_t {
+ Atomic_t(int i) : val(i) { }
+ volatile int val;
+};
+class RefCount {
+public:
+ RefCount(Atomic_t c) : m_count(c) { }
+ Atomic_t m_count;
+};
+class IntrusiveCountableBase {
+ RefCount m_useCount;
+protected:
+ IntrusiveCountableBase();
+};
+IntrusiveCountableBase::IntrusiveCountableBase() : m_useCount(0) { }
+
diff --git a/gcc/testsuite/g++.dg/warn/deprecated-6.C b/gcc/testsuite/g++.dg/warn/deprecated-6.C
new file mode 100644
index 00000000000..8ce6ac02d52
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/deprecated-6.C
@@ -0,0 +1,110 @@
+/* Test __attribute__ ((deprecated("message"))) */
+/* { dg-do compile } */
+/* { dg-options "-Wdeprecated-declarations -fmessage-length=0" } */
+
+typedef int INT1 __attribute__((deprecated("Please avoid INT1")));
+typedef INT1 INT2 __attribute__ ((__deprecated__("Please avoid INT2")));
+
+typedef INT1 INT1a; /* { dg-warning "'INT1' is deprecated .declared at \[^\n\]*: Please avoid INT1" "" } */
+
+INT1 should_be_unavailable; /* { dg-warning "'INT1' is deprecated .declared at \[^\n\]*: Please avoid INT1" "" } */
+INT1a should_not_be_deprecated;
+
+INT1 f1(void) __attribute__ ((deprecated("Please avoid f1")));
+INT1 f2(void) { return 0; } /* { dg-warning "'INT1' is deprecated .declared at \[^\n\]*: Please avoid INT1" "" } */
+
+INT2 f3(void) __attribute__ ((__deprecated__("Please avoid f3")));
+INT2 f4(void) { return 0; } /* { dg-warning "'INT2' is deprecated .declared at \[^\n\]*: Please avoid INT2" "" } */
+int f5(INT2 x); /* { dg-warning "'INT2' is deprecated" "" } */
+int f6(INT2 x) __attribute__ ((__deprecated__("Please avoid f6")));
+
+typedef enum Color {red, green, blue} Color __attribute__((deprecated("Please avoid Color")));
+
+int g1;
+int g2 __attribute__ ((deprecated("Please avoid g2")));
+int g3 __attribute__ ((__deprecated__("Please avoid g3")));
+Color k; /* { dg-warning "'Color' is deprecated .declared at \[^\n\]*: Please avoid Color" "" } */
+
+typedef struct {
+ int field1;
+ int field2 __attribute__ ((deprecated("Please avoid field2")));
+ int field3;
+ int field4 __attribute__ ((__deprecated__("Please avoid field4")));
+ union {
+ int field5;
+ int field6 __attribute__ ((deprecated("Please avoid field6")));
+ } u1;
+ int field7:1;
+ int field8:1 __attribute__ ((deprecated("Please avoid field8")));
+ union {
+ int field9;
+ int field10;
+ } u2 __attribute__ ((deprecated("Please avoid u2")));
+} S1;
+
+int func1()
+{
+ INT1 w; /* { dg-warning "'INT1' is deprecated .declared at \[^\n\]*: Please avoid INT1" "" } */
+ int x __attribute__ ((deprecated("Please avoid x")));
+ int y __attribute__ ((__deprecated__("Please avoid y")));
+ int z;
+ int (*pf)() = f1; /* { dg-warning "'INT1 f1\\(\\)' is deprecated .declared at \[^\n\]*: Please avoid f1" "" } */
+
+ z = w + x + y + g1 + g2 + g3; /* { dg-warning "'x' is deprecated .declared at \[^\n\]*: Please avoid x" "" } */
+ /* { dg-warning "'y' is deprecated .declared at \[^\n\]*: Please avoid y" "y" { target *-*-* } 53 } */
+ /* { dg-warning "'g2' is deprecated .declared at \[^\n\]*: Please avoid g2" "g2" { target *-*-* } 53 } */
+ /* { dg-warning "'g3' is deprecated .declared at \[^\n\]*: Please avoid g3" "g3" { target *-*-* } 53 } */
+ return f1(); /* { dg-warning "'INT1 f1\\(\\)' is deprecated .declared at \[^\n\]*: Please avoid f1" "f1" } */
+}
+
+int func2(S1 *p)
+{
+ S1 lp;
+
+ if (p->field1)
+ return p->field2; /* { dg-warning "'S1::field2' is deprecated .declared at \[^\n\]*: Please avoid field2" "" } */
+ else if (lp.field4) /* { dg-warning "'S1::field4' is deprecated .declared at \[^\n\]*: Please avoid field4" "" } */
+ return p->field3;
+
+ p->u1.field5 = g1 + p->field7;
+ p->u2.field9; /* { dg-warning "'S1::u2' is deprecated .declared at \[^\n\]*: Please avoid u2" "" } */
+ return p->u1.field6 + p->field8; /* { dg-warning "'S1::<anonymous union>::field6' is deprecated .declared at \[^\n\]*: Please avoid field6" "" } */
+ /* { dg-warning "'S1::field8' is deprecated .declared at \[^\n\]*: Please avoid field8" "field8" { target *-*-* } 71 } */
+}
+
+struct SS1 {
+ int x;
+ INT1 y; /* { dg-warning "'INT1' is deprecated .declared at \[^\n\]*: Please avoid INT1" "" } */
+} __attribute__ ((deprecated("Please avoid SS1")));
+
+struct SS1 *p1; /* { dg-warning "'SS1' is deprecated .declared at \[^\n\]*: Please avoid SS1" "" } */
+
+struct __attribute__ ((__deprecated__("Please avoid SS2"))) SS2 {
+ int x;
+ INT1 y; /* { dg-warning "'INT1' is deprecated .declared at \[^\n\]*: Please avoid INT1" "" } */
+};
+
+struct SS2 *p2; /* { dg-warning "'SS2' is deprecated .declared at \[^\n\]*: Please avoid SS2" "" } */
+
+class T {
+ public:
+ void member1(int) __attribute__ ((deprecated("Please avoid member1")));
+ void member2(INT1) __attribute__ ((__deprecated__("Please avoid member2"))); /* { dg-warning "'INT1' is deprecated" "" } */
+ int member3(T *);
+ int x;
+} __attribute__ ((deprecated("Please avoid T")));
+
+T *p3; // { dg-warning "'T' is deprecated .declared at \[^\n\]*: Please avoid T" }
+
+inline void T::member1(int) {}
+
+int T::member3(T *p) // { dg-warning "'T' is deprecated .declared at \[^\n\]*: Please avoid T" }
+{
+ p->member1(1); /* { dg-warning "'void T::member1\\(int\\)' is deprecated .declared at \[^\n\]*: Please avoid member1" "" } */
+ (*p).member1(2); /* { dg-warning "'void T::member1\\(int\\)' is deprecated .declared at \[^\n\]*: Please avoid member1" "" } */
+ p->member2(1); /* { dg-warning "'void T::member2\\(INT1\\)' is deprecated .declared at \[^\n\]*: Please avoid member2" "" } */
+ (*p).member2(2); /* { dg-warning "'void T::member2\\(INT1\\)' is deprecated .declared at \[^\n\]*: Please avoid member2" "" } */
+ p->member3(p);
+ (*p).member3(p);
+ return f1(); /* { dg-warning "'INT1 f1\\(\\)' is deprecated .declared at \[^\n\]*: Please avoid f1" "" } */
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/pr40057.c b/gcc/testsuite/gcc.c-torture/execute/pr40057.c
new file mode 100644
index 00000000000..9d5c4e31e87
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/pr40057.c
@@ -0,0 +1,37 @@
+/* PR middle-end/40057 */
+
+extern void abort (void);
+
+__attribute__((noinline)) int
+foo (unsigned long long x)
+{
+ unsigned long long y = (x >> 31ULL) & 1ULL;
+ if (y == 0ULL)
+ return 0;
+ return -1;
+}
+
+__attribute__((noinline)) int
+bar (long long x)
+{
+ long long y = (x >> 31LL) & 1LL;
+ if (y == 0LL)
+ return 0;
+ return -1;
+}
+
+int
+main (void)
+{
+ if (sizeof (long long) != 8)
+ return 0;
+ if (foo (0x1682a9aaaULL))
+ abort ();
+ if (!foo (0x1882a9aaaULL))
+ abort ();
+ if (bar (0x1682a9aaaLL))
+ abort ();
+ if (!bar (0x1882a9aaaLL))
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/Wcxx-compat-7.c b/gcc/testsuite/gcc.dg/Wcxx-compat-7.c
new file mode 100644
index 00000000000..bccbd1107b6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wcxx-compat-7.c
@@ -0,0 +1,35 @@
+/* { dg-do compile } */
+/* { dg-options "-Wc++-compat" } */
+
+struct s1
+{
+ enum e1 /* { dg-message "note: enum type defined here" } */
+ {
+ A, /* { dg-message "note: enum constant defined here" } */
+ B
+ } f1;
+ struct s2 /* { dg-message "note: struct defined here" } */
+ {
+ struct s3 /* { dg-message "note: struct defined here" } */
+ {
+ enum e1 f3;
+ struct s1 *p1;
+ struct s2 *p2;
+ struct s3 *p3;
+ } f2;
+ union u1 /* { dg-message "note: union defined here" } */
+ {
+ int f4;
+ } f5;
+ struct s3 f6;
+ } f7;
+ struct s2 f8;
+ enum e1 f9;
+};
+
+struct s1 v1;
+enum e1 v2; /* { dg-warning "not visible in C\[+\]\[+\]" } */
+struct s2 v3; /* { dg-warning "not visible in C\[+\]\[+\]" } */
+struct s3 v4; /* { dg-warning "not visible in C\[+\]\[+\]" } */
+union u1 v5; /* { dg-warning "not visible in C\[+\]\[+\]" } */
+int i = A; /* { dg-warning "not visible in C\[+\]\[+\]" } */
diff --git a/gcc/testsuite/gcc.dg/Wcxx-compat-8.c b/gcc/testsuite/gcc.dg/Wcxx-compat-8.c
new file mode 100644
index 00000000000..a7343ba91e6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wcxx-compat-8.c
@@ -0,0 +1,43 @@
+/* { dg-do compile } */
+/* { dg-options "-Wc++-compat" } */
+
+struct s1
+{
+ enum e1 /* { dg-message "note: enum type defined here" } */
+ {
+ A = sizeof (struct s2 { int i; }), /* { dg-warning "invalid in C\[+\]\[+\]" } */
+ B
+ } f1;
+};
+struct s2 v1; /* Don't issue another warning about s2. */
+enum e1 v2; /* { dg-warning "not visible in C\[+\]\[+\]" } */
+
+enum e2
+{
+ C = sizeof (struct s3 { int i; }), /* { dg-warning "invalid in C\[+\]\[+\]" } */
+ D = __alignof__ (struct s4 { int i; }), /* { dg-warning "invalid in C\[+\]\[+\]" } */
+ E
+};
+
+struct s3 v3;
+int v4 = C;
+
+__typeof__ (struct s5 { int i; }) v5; /* { dg-warning "invalid in C\[+\]\[+\]" } */
+
+int
+f1 (struct s1 *p)
+{
+ return ((struct s6 { int j; } *) p)->j; /* { dg-warning "invalid in C\[+\]\[+\]" } */
+}
+
+int
+f2 (struct s1 *p)
+{
+ return (__extension__ (struct s7 { int j; } *)p)->j;
+}
+
+int
+f3 ()
+{
+ return (struct s8 { int i; }) { 0 }.i; /* { dg-warning "invalid in C\[+\]\[+\]" } */
+}
diff --git a/gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c b/gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c
new file mode 100644
index 00000000000..b4a38d5cb10
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wunsuffixed-float-constants-1.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -Wunsuffixed-float-constants" } */
+
+#define VAL 0.5;
+
+double a = 1.1d;
+
+/* With FLOAT_CONST_DECIMAL64 switched to ON these would have type
+ _Decimal64. */
+
+double b = VAL; /* { dg-warning "unsuffixed float constant" } */
+double c = 1.2; /* { dg-warning "unsuffixed float constant" } */
+
+/* With FLOAT_CONST_DECIMAL64 switched to ON these are still binary. */
+
+double d = 0x5.0p1; /* No warning for hex constant. */
+double e = 3.1i; /* No warning for imaginary constant. */
diff --git a/gcc/testsuite/gcc.dg/c99-tag-1.c b/gcc/testsuite/gcc.dg/c99-tag-1.c
index e93d3bcf0b4..dd525317d03 100644
--- a/gcc/testsuite/gcc.dg/c99-tag-1.c
+++ b/gcc/testsuite/gcc.dg/c99-tag-1.c
@@ -24,7 +24,7 @@ foo (void)
/* A specific type shall have its content defined at most once. But we
may redeclare the tag in different scopes. */
{
- struct s0 { int i; };
+ struct s0 { int i; }; /* { dg-message "note: originally defined here" } */
{
struct s0 { long l; };
}
@@ -33,7 +33,7 @@ foo (void)
}
struct s0 { int i; }; /* { dg-bogus "warning" "warning in place of error" } */
/* { dg-error "rede" "struct redef" { target *-*-* } 34 } */
- union u0 { int i; };
+ union u0 { int i; }; /* { dg-message "note: originally defined here" } */
{
union u0 { long l; };
}
@@ -42,7 +42,7 @@ foo (void)
}
union u0 { int i; }; /* { dg-bogus "warning" "warning in place of error" } */
/* { dg-error "rede" "union redef" { target *-*-* } 43 } */
- enum e0 { E0A };
+ enum e0 { E0A }; /* { dg-message "note: originally defined here" } */
{
enum e0 { E0B };
}
diff --git a/gcc/testsuite/gcc.dg/cpp/pragma-float-const-decimal64-1.c b/gcc/testsuite/gcc.dg/cpp/pragma-float-const-decimal64-1.c
new file mode 100644
index 00000000000..633383899dd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp/pragma-float-const-decimal64-1.c
@@ -0,0 +1,5 @@
+/* { dg-do compile { target { ! dfp } } } */
+/* { dg-options "-std=gnu99 -Wunknown-pragmas" } */
+
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "not supported on this target" } */
+double d = 1.0;
diff --git a/gcc/testsuite/gcc.dg/deprecated-4.c b/gcc/testsuite/gcc.dg/deprecated-4.c
new file mode 100644
index 00000000000..f36dbdf9af1
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/deprecated-4.c
@@ -0,0 +1,88 @@
+/* Test __attribute__ ((deprecated("message"))) */
+/* { dg-do compile } */
+/* { dg-options "-Wdeprecated-declarations" } */
+
+typedef int INT1 __attribute__((deprecated("Please avoid INT1")));
+typedef INT1 INT2 __attribute__ ((__deprecated__("Please avoid INT2")));
+
+typedef INT1 INT1a; /* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+typedef INT1 INT1b __attribute__ ((deprecated("Please avoid INT1b")));
+
+INT1 should_be_unavailable; /* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+INT1a should_not_be_deprecated;
+
+INT1 f1(void) __attribute__ ((deprecated("Please avoid f1")));
+INT1 f2(void) { return 0; } /* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+
+INT2 f3(void) __attribute__ ((__deprecated__("Please avoid f3")));
+INT2 f4(void) { return 0; } /* { dg-warning "'INT2' is deprecated: Please avoid INT2" "" } */
+int f5(INT2 x); /* { dg-warning "'INT2' is deprecated: Please avoid INT2" "" } */
+int f6(INT2 x) __attribute__ ((__deprecated__("Please avoid f6"))); /* { dg-warning "'INT2' is deprecated: Please avoid INT2" "" } */
+
+typedef enum {red, green, blue} Color __attribute__((deprecated("Please avoid Color")));
+
+int g1;
+int g2 __attribute__ ((deprecated("Please avoid g2")));
+int g3 __attribute__ ((__deprecated__("Please avoid g3")));
+Color k; /* { dg-warning "'Color' is deprecated .declared at \[^\n\]*: Please avoid Color" "" } */
+
+typedef struct {
+ int field1;
+ int field2 __attribute__ ((deprecated("Please avoid field2")));
+ int field3;
+ int field4 __attribute__ ((__deprecated__("Please avoid field4")));
+ union {
+ int field5;
+ int field6 __attribute__ ((deprecated("Please avoid field6")));
+ } u1;
+ int field7:1;
+ int field8:1 __attribute__ ((deprecated("Please avoid field8")));
+ union {
+ int field9;
+ int field10;
+ } u2 __attribute__ ((deprecated("Please avoid u2")));
+} S1;
+
+int func1()
+{
+ INT1 w; /* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+ int x __attribute__ ((deprecated("Avoid x")));
+ int y __attribute__ ((__deprecated__("Bad y")));
+ int z;
+ int (*pf)() = f1; /* { dg-warning "'f1' is deprecated .declared at \[^\n\]*: Please avoid f1" "" } */
+
+ z = w + x + y + g1 + g2 + g3; /* { dg-warning "'x' is deprecated .declared at \[^\n\]*: Avoid x" "" } */
+ /* { dg-warning "'y' is deprecated .declared at \[^\n\]*: Bad y" "y" { target *-*-* } 54 } */
+ /* { dg-warning "'g2' is deprecated .declared at \[^\n\]*: Please avoid g2" "g2" { target *-*-* } 54 } */
+ /* { dg-warning "'g3' is deprecated .declared at \[^\n\]*: Please avoid g3" "g3" { target *-*-* } 54 } */
+ return f1(); /* { dg-warning "'f1' is deprecated .declared at \[^\n\]*: Please avoid f1" "" } */
+}
+
+int func2(S1 *p)
+{
+ S1 lp;
+
+ if (p->field1)
+ return p->field2; /* { dg-warning "'field2' is deprecated .declared at \[^\n\]*: Please avoid field2" "" } */
+ else if (lp.field4) /* { dg-warning "'field4' is deprecated .declared at \[^\n\]*: Please avoid field4" "" } */
+ return p->field3;
+
+ p->u1.field5 = g1 + p->field7;
+ p->u2.field9; /* { dg-warning "'u2' is deprecated .declared at \[^\n\]*: Please avoid u2" "" } */
+ return p->u1.field6 + p->field8; /* { dg-warning "'field6' is deprecated .declared at \[^\n\]*: Please avoid field6" "" } */
+ /* { dg-warning "'field8' is deprecated .declared at \[^\n\]*: Please avoid field8" "field8" { target *-*-* } 72 } */
+}
+
+struct SS1 {
+ int x;
+ INT1 y; /* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+} __attribute__ ((deprecated("Please avoid SS1")));
+
+struct SS1 *p1; /* { dg-warning "'SS1' is deprecated .declared at \[^\n\]*: Please avoid SS1" "" } */
+
+struct __attribute__ ((__deprecated__("Please avoid SS2"))) SS2 {
+ int x;
+ INT1 y; /* { dg-warning "'INT1' is deprecated: Please avoid INT1" "" } */
+};
+
+struct SS2 *p2; /* { dg-warning "'SS2' is deprecated .declared at \[^\n\]*: Please avoid SS2" "" } */
diff --git a/gcc/testsuite/gcc.dg/deprecated-5.c b/gcc/testsuite/gcc.dg/deprecated-5.c
new file mode 100644
index 00000000000..133e60e4057
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/deprecated-5.c
@@ -0,0 +1,7 @@
+/* Test __attribute__((deprecated)). Test types without names. */
+/* Origin: Joseph Myers <jsm@polyomino.org.uk> */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+struct { int a; } __attribute__((deprecated ("Do not use"))) x; /* { dg-warning "type is deprecated" } */
+typeof(x) y; /* { dg-warning "type is deprecated .declared at .*.: Do not use" } */
diff --git a/gcc/testsuite/gcc.dg/deprecated-6.c b/gcc/testsuite/gcc.dg/deprecated-6.c
new file mode 100644
index 00000000000..874e1a68e07
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/deprecated-6.c
@@ -0,0 +1,11 @@
+/* Test __attribute__((deprecated)). Test merging with multiple
+ declarations. Bug 7425. */
+/* { dg-do compile } */
+/* { dg-options "" } */
+
+void func(void);
+void func(void) __attribute__((deprecated ("Do not use")));
+
+void f(void) {
+ func(); /* { dg-warning "'func' is deprecated .declared at .*.: Do not use" } */
+}
diff --git a/gcc/testsuite/gcc.dg/dfp/float-constant-double.c b/gcc/testsuite/gcc.dg/dfp/float-constant-double.c
new file mode 100644
index 00000000000..3f8de656bf6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/dfp/float-constant-double.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+/* Constant float values of type double in <float.h> are suffixed with L
+ and cast to double so they can be used within code that uses pragma
+ FLOAT_CONST_DECIMAL64. If they were not suffixed then use of the macro
+ would have them interpreted as _Decimal64, leading to errors when used
+ in expressions with other operands of type double. */
+
+#include <float.h>
+
+extern double a, b, c, d;
+
+void
+foo ()
+{
+ _Pragma ("STDC FLOAT_CONST_DECIMAL64 ON")
+ a = 0.1d * DBL_MAX;
+ b = DBL_EPSILON * 10.0d;
+ c = DBL_MIN * 200.0d;
+}
diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-1.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-1.c
new file mode 100644
index 00000000000..79fabf34484
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-1.c
@@ -0,0 +1,85 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -Wall" } */
+
+/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma.
+ C99 6.4.4.2a (New).
+
+ Verify that the pragma has the expected result by using unsuffixed
+ float constants as operands in expressions that would mix binary and
+ decimal operands if the pragma had no effect, or the wrong effect. */
+
+#pragma STDC FLOAT_CONST_DECIMAL64 ON
+double a = 1.0 * 2.0dd;
+
+double
+f1 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF
+ double b = 2.0 * 3.0d;
+
+ {
+ double c = 3.0 * 4.0d;
+ b = b + c;
+ }
+
+ {
+#pragma STDC FLOAT_CONST_DECIMAL64 ON
+ double d = 4.0 * 5.0dd;
+
+ b = b + d;
+ }
+
+ {
+ /* Default is OFF. */
+#pragma STDC FLOAT_CONST_DECIMAL64 DEFAULT
+ double e = 5.0 * 6.0d;
+ b = b + e;
+ }
+
+ return b;
+}
+
+double
+f2 (void)
+{
+ /* Use value from outer scope, which is ON. */
+ double b = 2.0 * 3.0dd;
+
+ {
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF
+ double c = 3.0 * 4.0d;
+
+ {
+#pragma STDC FLOAT_CONST_DECIMAL64 ON
+ double d = 4.0 * 5.0dd;
+
+ {
+#pragma STDC FLOAT_CONST_DECIMAL64 DEFAULT
+ double e = 5.0 * 6.0d;
+
+ {
+#pragma STDC FLOAT_CONST_DECIMAL64 ON
+ double f = 6.0 * 7.0dd;
+
+ b = a + b + c + d + e + f;
+ }
+ }
+ }
+ }
+ return b;
+}
+
+/* Use previous value from this scope, which is ON. */
+double f = 6.0 * 7.0dd;
+
+double
+f3 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF
+ double b = 2.0 * 3.0d;
+
+ return b + f;
+}
+
+/* Return to the state from this scope, which is ON. */
+double g = 7.0 + 8.0dd;
diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-2.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-2.c
new file mode 100644
index 00000000000..212748c6c78
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-2.c
@@ -0,0 +1,86 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -Wall" } */
+
+/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma.
+ C99 6.4.4.2a (New).
+
+ Verify that the pragma has the expected result by using unsuffixed
+ float constants as operands in expressions that would mix binary and
+ decimal operands if the pragma had no effect, or the wrong effect.
+ Use _Pragma rather than #pragma. */
+
+_Pragma ("STDC FLOAT_CONST_DECIMAL64 ON")
+double a = 1.0 * 2.0dd;
+
+double
+f1 (void)
+{
+_Pragma ("STDC FLOAT_CONST_DECIMAL64 OFF")
+ double b = 2.0 * 3.0d;
+
+ {
+ double c = 3.0 * 4.0d;
+ b = b + c;
+ }
+
+ {
+_Pragma ("STDC FLOAT_CONST_DECIMAL64 ON")
+ double d = 4.0 * 5.0dd;
+
+ b = b + d;
+ }
+
+ {
+ /* Default is OFF. */
+_Pragma ("STDC FLOAT_CONST_DECIMAL64 DEFAULT")
+ double e = 5.0 * 6.0d;
+ b = b + e;
+ }
+
+ return b;
+}
+
+double
+f2 (void)
+{
+ /* Use value from outer scope, which is ON. */
+ double b = 2.0 * 3.0dd;
+
+ {
+_Pragma ("STDC FLOAT_CONST_DECIMAL64 OFF")
+ double c = 3.0 * 4.0d;
+
+ {
+_Pragma ("STDC FLOAT_CONST_DECIMAL64 ON")
+ double d = 4.0 * 5.0dd;
+
+ {
+_Pragma ("STDC FLOAT_CONST_DECIMAL64 DEFAULT")
+ double e = 5.0 * 6.0d;
+
+ {
+_Pragma ("STDC FLOAT_CONST_DECIMAL64 ON")
+ double f = 6.0 * 7.0dd;
+
+ b = a + b + c + d + e + f;
+ }
+ }
+ }
+ }
+ return b;
+}
+
+/* Use previous value from this scope, which is ON. */
+double f = 6.0 * 7.0dd;
+
+double
+f3 (void)
+{
+_Pragma ("STDC FLOAT_CONST_DECIMAL64 OFF")
+ double b = 2.0 * 3.0d;
+
+ return b + f;
+}
+
+/* Return to the state from this scope, which is ON. */
+double g = 7.0 + 8.0dd;
diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-3.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-3.c
new file mode 100644
index 00000000000..b9286aac11a
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-3.c
@@ -0,0 +1,83 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -Wall" } */
+
+/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma.
+ C99 6.4.4.2a (New). */
+
+/* Check that defining macros whose names are the same as the tokens used
+ in the pragma doesn't affect use of the pragma. */
+
+#define ON YES
+#define OFF NO
+#define DEFAULT NOPE
+#define STDC OFFICIAL
+#define FLOAT_CONST_DECIMAL64 NEW_PRAGMA
+
+double a;
+
+void
+f1a (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 ON
+ a = 1.0dd + 2.0;
+}
+
+void
+f1b (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF
+ a = 2.0d + 3.0;
+}
+
+void
+f1c (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 DEFAULT
+ a = 3.0d + 4.0;
+}
+
+/* Check that a macro can be used for the entire pragma. */
+
+#define PRAGMA(x) _Pragma (#x)
+#define DEFAULT_FLOAT_IS_DECIMAL PRAGMA(STDC FLOAT_CONST_DECIMAL64 ON)
+#define DEFAULT_FLOAT_IS_BINARY PRAGMA(STDC FLOAT_CONST_DECIMAL64 OFF)
+
+void
+f2a (void)
+{
+ DEFAULT_FLOAT_IS_DECIMAL
+ a = 5.0 * 6.0dd;
+}
+
+void
+f2b (void)
+{
+ DEFAULT_FLOAT_IS_BINARY
+ a = 6.0 * 7.0d;
+}
+
+/* _Pragma can be used with macros, including the use of a macro for the
+ switch. */
+
+#undef ON
+#undef OFF
+#undef DEFAULT
+#undef STDC
+#undef FLOAT_CONST_DECIMAL64
+
+#define SWITCH ON
+#define FLOAT_CONST_DECIMAL64(x) PRAGMA(STDC FLOAT_CONST_DECIMAL64 x)
+
+void
+f3a (void)
+{
+ FLOAT_CONST_DECIMAL64(SWITCH)
+ a = 1.0 * 7.0dd;
+}
+
+void
+f3b (void)
+{
+ FLOAT_CONST_DECIMAL64(OFF)
+ a = 1.0 + 2.0d;
+}
diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-4.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-4.c
new file mode 100644
index 00000000000..86cec1dbd45
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-4.c
@@ -0,0 +1,46 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma.
+ C99 6.4.4.2a (New).
+
+ Check that malformed versions of pragma STDC FLOAT_CONST_DECIMAL64
+ are detected. */
+
+double a;
+
+void f1 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 /* { dg-warning "malformed" } */
+ a = 1.0;
+}
+
+void f2 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 DFP /* { dg-warning "malformed" } */
+ a = 2.0;
+}
+
+void f3 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 ON DFP /* { dg-warning "junk at end" } */
+ a = 3.0;
+}
+
+void f4 (void)
+{
+ _Pragma ( "STDC FLOAT_CONST_DECIMAL64" ) /* { dg-warning "malformed" } */
+ a = 1.0;
+}
+
+void f5 (void)
+{
+ _Pragma ( "STDC FLOAT_CONST_DECIMAL64 DFP" ) /* { dg-warning "malformed" } */
+ a = 2.0;
+}
+
+void f6 (void)
+{
+ _Pragma ( "STDC FLOAT_CONST_DECIMAL64 ON DFP" ) /* { dg-warning "junk at end" } */
+ a = 3.0;
+}
diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-5.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-5.c
new file mode 100644
index 00000000000..75e9525dda0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-5.c
@@ -0,0 +1,46 @@
+/* { dg-do compile } */
+/* { dg-options "-std=c99 -pedantic" } */
+
+/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma.
+ C99 6.4.4.2a (New).
+
+ Check that there is a pedantic warning for the use of pragma
+ STD FLOAT_CONST_DECIMAL64. */
+
+double a;
+
+void f1 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "ISO C" } */
+ a = 1.0;
+}
+
+void f2 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-warning "ISO C" } */
+ a = 2.0;
+}
+
+void f3 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 DEFAULT /* { dg-warning "ISO C" } */
+ a = 3.0;
+}
+
+void f4 (void)
+{
+ _Pragma ("STDC FLOAT_CONST_DECIMAL64 ON") /* { dg-warning "ISO C" } */
+ a = 1.0;
+}
+
+void f5 (void)
+{
+ _Pragma ("STDC FLOAT_CONST_DECIMAL64 OFF") /* { dg-warning "ISO C" } */
+ a = 2.0;
+}
+
+void f6 (void)
+{
+ _Pragma ("STDC FLOAT_CONST_DECIMAL64 DEFAULT") /* { dg-warning "ISO C" } */
+ a = 3.0;
+}
diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-6.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-6.c
new file mode 100644
index 00000000000..03c1715bee6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-6.c
@@ -0,0 +1,46 @@
+/* { dg-do compile } */
+/* { dg-options "-std=c99 -pedantic-errors" } */
+
+/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma.
+ C99 6.4.4.2a (New).
+
+ Check that there is a pedantic error for the use of pragma
+ STD FLOAT_CONST_DECIMAL64. */
+
+double a;
+
+void f1 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "ISO C" } */
+ a = 1.0;
+}
+
+void f2 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-error "ISO C" } */
+ a = 2.0;
+}
+
+void f3 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 DEFAULT /* { dg-error "ISO C" } */
+ a = 3.0;
+}
+
+void f4 (void)
+{
+ _Pragma ("STDC FLOAT_CONST_DECIMAL64 ON") /* { dg-error "ISO C" } */
+ a = 1.0;
+}
+
+void f5 (void)
+{
+ _Pragma ("STDC FLOAT_CONST_DECIMAL64 OFF") /* { dg-error "ISO C" } */
+ a = 2.0;
+}
+
+void f6 (void)
+{
+ _Pragma ("STDC FLOAT_CONST_DECIMAL64 DEFAULT") /* { dg-error "ISO C" } */
+ a = 3.0;
+}
diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-7.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-7.c
new file mode 100644
index 00000000000..7533ee7f0de
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-7.c
@@ -0,0 +1,39 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -Wall" } */
+
+/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma.
+ C99 6.4.4.2a (New).
+
+ Check that when pragma FLOAT_CONST_DECIMAL64 is in effect so that
+ unsuffixed constants are _Decimal64, invalid types are still reported
+ as invalid. */
+
+double
+f1 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF
+ double a = 0x1.0p1;
+ double b = 1.0i;
+
+ return a + b;
+}
+
+double
+f2 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF
+ double a = 0x1.0p1dd; /* { dg-error "with hex" } */
+ double b = 1.0idd; /* { dg-error "invalid suffix" } */
+
+ return a + b;
+}
+
+double
+f3 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 ON
+ double a = 0x1.0p1; /* Hex constant is not affected by pragma. */
+ double b = 1.0i; /* Imaginary constant is not affected by pragma. */
+
+ return a + b;
+}
diff --git a/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-8.c b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-8.c
new file mode 100644
index 00000000000..5dbbda5b8f2
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/dfp/pragma-float-const-decimal64-8.c
@@ -0,0 +1,174 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -Wall" } */
+
+/* N1312 7.1.1: The FLOAT_CONST_DECIMAL64 pragma.
+ C99 6.4.4.2a (New).
+
+ Pragma STDC FLOAT_CONST_DECIMAL64 "shall occur either outside external
+ declarations or preceding all explicit declarations and statements
+ inside a compound statement." */
+
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF
+
+#define MAX 200
+
+#pragma STDC FLOAT_CONST_DECIMAL64 ON
+
+double a;
+
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF
+
+struct S1 {
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
+ int i;
+ int j;
+};
+
+struct S2 {
+ int i;
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
+ int j;
+};
+
+struct S3 {
+ int i;
+ int j;
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
+};
+
+enum E1 {
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */
+ one,
+ two
+};
+
+enum E2 {
+ red,
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */
+ blue
+};
+
+enum E3 {
+ cat,
+ dog
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */
+};
+
+double
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-error "#pragma" } */
+b;
+
+double
+f1 (void)
+{
+#pragma STDC FLOAT_CONST_DECIMAL64 ON
+ return a;
+}
+
+double
+f2 (void)
+{
+ double b;
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
+ b = 0.5;
+ return a + b;
+}
+
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF
+
+double
+f3 (void)
+{
+ typedef double b32;
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
+ b32 b = 0.5;
+ return b;
+}
+
+double
+f4 (int i)
+{
+top:
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-warning "invalid location" } */
+ if (i == 0)
+ return a;
+ a *= 2.;
+ i = 0;
+ goto top;
+}
+
+double
+f5 (int i)
+{
+ a = a * i;
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF /* { dg-warning "invalid location" } */
+ return a * 2.;
+}
+
+double
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */
+f6 (void)
+{
+ return a;
+}
+
+double
+f7
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-error "#pragma" } */
+(void) /* { dg-error "before" } */
+{
+ return a;
+}
+
+double
+f8 (void)
+{
+ {
+#pragma STDC FLOAT_CONST_DECIMAL64 OFF
+ }
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
+ return a;
+}
+
+extern void foo9 (void *);
+
+double
+f9 (void)
+{
+ __label__ here;
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
+ foo9 (&&here);
+here:
+ return a;
+}
+
+double
+f10 (void)
+{
+ void foo10 (void)
+ {
+ a = 1.0;
+ }
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
+ return a;
+}
+
+double
+f11 (void)
+{
+ __extension__
+ struct A {
+ struct { char a; };
+ char b;
+ };
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
+ return a;
+}
+
+double
+f12 (void)
+{
+ __extension__ ({ a = 0.5; });
+#pragma STDC FLOAT_CONST_DECIMAL64 ON /* { dg-warning "invalid location" } */
+ return a;
+}
diff --git a/gcc/testsuite/gcc.dg/pr17188-1.c b/gcc/testsuite/gcc.dg/pr17188-1.c
index 2cad0120fa4..522a14f7d75 100644
--- a/gcc/testsuite/gcc.dg/pr17188-1.c
+++ b/gcc/testsuite/gcc.dg/pr17188-1.c
@@ -5,20 +5,20 @@
/* { dg-do compile } */
/* { dg-options "" } */
-struct s0 { };
+struct s0 { }; /* { dg-message "note: originally defined here" } */
struct s0;
struct s0 { }; /* { dg-error "redefinition of 'struct s0'" } */
-struct s1 { };
+struct s1 { }; /* { dg-message "note: originally defined here" } */
struct s1 { }; /* { dg-error "redefinition of 'struct s1'" } */
-struct s2 { int a : 1; };
+struct s2 { int a : 1; }; /* { dg-message "note: originally defined here" } */
struct s2 { int a : 1; }; /* { dg-error "redefinition of 'struct s2'" } */
-struct s3 { };
+struct s3 { }; /* { dg-message "note: originally defined here" } */
struct s3 { int a : 1; }; /* { dg-error "redefinition of 'struct s3'" } */
-struct s4 { int a : 1; };
+struct s4 { int a : 1; }; /* { dg-message "note: originally defined here" } */
struct s4 { }; /* { dg-error "redefinition of 'struct s4'" } */
struct s5 { int a : 1; };
diff --git a/gcc/testsuite/gcc.dg/pr39084.c b/gcc/testsuite/gcc.dg/pr39084.c
index 6432841fb15..ff731492154 100644
--- a/gcc/testsuite/gcc.dg/pr39084.c
+++ b/gcc/testsuite/gcc.dg/pr39084.c
@@ -1,7 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O2" } */
-struct color { int i; };
+struct color { int i; }; /* { dg-message "note: originally defined here" } */
static const struct color col;
struct color * f(void)
{
diff --git a/gcc/testsuite/gcc.dg/pr40031.c b/gcc/testsuite/gcc.dg/pr40031.c
new file mode 100644
index 00000000000..f6f1f65a7ee
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr40031.c
@@ -0,0 +1,9 @@
+/* { dg-do compile { target fpic } } */
+/* { dg-options "-O2 -fPIC" } */
+double c;
+double d;
+double *f(int a)
+{
+ if(a) return &c;
+ return &d;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-add.c b/gcc/testsuite/gcc.dg/torture/complex-sign-add.c
new file mode 100644
index 00000000000..db921406671
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/complex-sign-add.c
@@ -0,0 +1,53 @@
+/* Test complex arithmetic with signed zeros. Pure complex
+ addition. */
+/* { dg-do run } */
+/* { dg-options "-std=gnu99" } */
+
+#include "complex-sign.h"
+
+#define CHECK_ADD(TYPE, COPY, ZERO, ZEROI) \
+ do { \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, +, +, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, +, +, -, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, +, -, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, +, -, -, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, -, +, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, -, +, -, +, -); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, -, -, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, +, -, -, -, +, -); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, +, +, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, +, +, -, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, +, -, +, -, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, +, -, -, -, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, -, +, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, -, +, -, +, -); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, -, -, +, -, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, +, -, -, -, -, -, -); \
+ } while (0)
+
+void
+check_add_float (void)
+{
+ CHECK_ADD (float, __builtin_copysignf, 0.0f, 0.0if);
+}
+
+void
+check_add_double (void)
+{
+ CHECK_ADD (double, __builtin_copysign, 0.0, 0.0i);
+}
+
+void
+check_add_long_double (void)
+{
+ CHECK_ADD (long double, __builtin_copysignl, 0.0l, 0.0il);
+}
+
+int
+main (void)
+{
+ check_add_float ();
+ check_add_double ();
+ check_add_long_double ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-add.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-add.c
new file mode 100644
index 00000000000..5548fe431e8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-add.c
@@ -0,0 +1,53 @@
+/* Test complex arithmetic with signed zeros. Mixed real/complex
+ addition. */
+/* { dg-do run } */
+/* { dg-options "-std=gnu99" } */
+
+#include "complex-sign.h"
+
+#define CHECK_ADD(TYPE, COPY, ZERO, ZEROI) \
+ do { \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, +, +, +, +, +); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, +, +, -, +, -); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, +, -, +, +, +); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, +, -, -, +, -); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, -, +, +, +, +); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, -, +, -, +, -); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, -, -, +, -, +); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, +, -, -, -, -, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, +, +, +, ZERO, +, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, +, +, -, ZERO, +, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, +, -, +, ZERO, +, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, +, -, -, ZERO, +, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, -, +, +, ZERO, +, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, -, +, -, ZERO, -, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, -, -, +, ZERO, +, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, +, -, -, -, ZERO, -, -); \
+ } while (0)
+
+void
+check_add_float (void)
+{
+ CHECK_ADD (float, __builtin_copysignf, 0.0f, 0.0if);
+}
+
+void
+check_add_double (void)
+{
+ CHECK_ADD (double, __builtin_copysign, 0.0, 0.0i);
+}
+
+void
+check_add_long_double (void)
+{
+ CHECK_ADD (long double, __builtin_copysignl, 0.0l, 0.0il);
+}
+
+int
+main (void)
+{
+ check_add_float ();
+ check_add_double ();
+ check_add_long_double ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-div.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-div.c
new file mode 100644
index 00000000000..4a315dcd529
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-div.c
@@ -0,0 +1,45 @@
+/* Test complex arithmetic with signed zeros. Mixed real/complex
+ division. */
+/* { dg-do run } */
+/* { dg-options "-std=gnu99" } */
+
+#include "complex-sign.h"
+
+#define CHECK_DIV(TYPE, COPY, ZERO, ZEROI, ONE) \
+ do { \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, +, +, +, ONE, +, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, +, +, -, ONE, -, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, +, -, +, ONE, +, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, +, -, -, ONE, -, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, -, +, +, ONE, -, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, -, +, -, ONE, +, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, -, -, +, ONE, -, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, /, -, -, -, ONE, +, +); \
+ } while (0)
+
+void
+check_div_float (void)
+{
+ CHECK_DIV (float, __builtin_copysignf, 0.0f, 0.0if, 1.0f);
+}
+
+void
+check_div_double (void)
+{
+ CHECK_DIV (double, __builtin_copysign, 0.0, 0.0i, 1.0);
+}
+
+void
+check_div_long_double (void)
+{
+ CHECK_DIV (long double, __builtin_copysignl, 0.0l, 0.0il, 1.0l);
+}
+
+int
+main (void)
+{
+ check_div_float ();
+ check_div_double ();
+ check_div_long_double ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-mul.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-mul.c
new file mode 100644
index 00000000000..f5b1fc47e20
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-mul.c
@@ -0,0 +1,53 @@
+/* Test complex arithmetic with signed zeros. Mixed real/complex
+ multiplication. */
+/* { dg-do run } */
+/* { dg-options "-std=gnu99" } */
+
+#include "complex-sign.h"
+
+#define CHECK_MUL(TYPE, COPY, ZERO, ZEROI) \
+ do { \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, +, +, +, +, +); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, +, +, -, +, -); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, +, -, +, -, +); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, +, -, -, -, -); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, -, +, +, -, -); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, -, +, -, -, +); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, -, -, +, +, -); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, *, -, -, -, +, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, +, +, +, ZERO, +, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, +, +, -, ZERO, -, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, +, -, +, ZERO, +, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, +, -, -, ZERO, -, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, -, +, +, ZERO, -, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, -, +, -, ZERO, +, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, -, -, +, ZERO, -, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, *, -, -, -, ZERO, +, +); \
+ } while (0)
+
+void
+check_mul_float (void)
+{
+ CHECK_MUL (float, __builtin_copysignf, 0.0f, 0.0if);
+}
+
+void
+check_mul_double (void)
+{
+ CHECK_MUL (double, __builtin_copysign, 0.0, 0.0i);
+}
+
+void
+check_mul_long_double (void)
+{
+ CHECK_MUL (long double, __builtin_copysignl, 0.0l, 0.0il);
+}
+
+int
+main (void)
+{
+ check_mul_float ();
+ check_mul_double ();
+ check_mul_long_double ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-sub.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-sub.c
new file mode 100644
index 00000000000..adc384548c6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mixed-sub.c
@@ -0,0 +1,53 @@
+/* Test complex arithmetic with signed zeros. Mixed real/complex
+ subtraction. */
+/* { dg-do run } */
+/* { dg-options "-std=gnu99" } */
+
+#include "complex-sign.h"
+
+#define CHECK_SUB(TYPE, COPY, ZERO, ZEROI) \
+ do { \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, +, +, +, +, -); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, +, +, -, +, +); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, +, -, +, +, -); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, +, -, -, +, +); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, -, +, +, -, -); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, -, +, -, -, +); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, -, -, +, +, -); \
+ CHECK_ARITH_RC (TYPE, COPY, ZERO, ZEROI, -, -, -, -, +, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, +, +, +, ZERO, +, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, +, +, -, ZERO, +, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, +, -, +, ZERO, +, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, +, -, -, ZERO, +, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, -, +, +, ZERO, -, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, -, +, -, ZERO, +, +); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, -, -, +, ZERO, -, -); \
+ CHECK_ARITH_CR (TYPE, COPY, ZERO, ZEROI, -, -, -, -, ZERO, +, -); \
+ } while (0)
+
+void
+check_sub_float (void)
+{
+ CHECK_SUB (float, __builtin_copysignf, 0.0f, 0.0if);
+}
+
+void
+check_sub_double (void)
+{
+ CHECK_SUB (double, __builtin_copysign, 0.0, 0.0i);
+}
+
+void
+check_sub_long_double (void)
+{
+ CHECK_SUB (long double, __builtin_copysignl, 0.0l, 0.0il);
+}
+
+int
+main (void)
+{
+ check_sub_float ();
+ check_sub_double ();
+ check_sub_long_double ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mul-minus-one.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mul-minus-one.c
new file mode 100644
index 00000000000..6b9a905ae9c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mul-minus-one.c
@@ -0,0 +1,61 @@
+/* Test complex arithmetic with signed zeros. Pure complex
+ multiplication with -1.0 + 0.0i. */
+/* { dg-do run } */
+/* { dg-options "-std=gnu99" } */
+
+#include "complex-sign.h"
+
+#define CHECK_MUL_INT(TYPE, COPY, ZERO, ZEROI, ONE, S1, S2, SR, SI) \
+ do { \
+ _Complex TYPE a1, b1, c1; \
+ volatile _Complex TYPE a2, b2, c2; \
+ a1 = ENCODE(ZERO, ZEROI, S1, S2); \
+ CHECK_RES (a1, COPY, S1, S2); \
+ b1 = -ONE + ZEROI; \
+ c1 = a1 * b1; \
+ CHECK_RES (c1, COPY, SR, SI); \
+ c1 = a1 * (-ONE + ZEROI); \
+ CHECK_RES (c1, COPY, SR, SI); \
+ a2 = ENCODE(ZERO, ZEROI, S1, S2); \
+ CHECK_RES (a2, COPY, S1, S2); \
+ b2 = -ONE + ZEROI; \
+ c2 = a2 * b2; \
+ CHECK_RES (c2, COPY, SR, SI); \
+ c2 = a2 * (-ONE + ZEROI); \
+ CHECK_RES (c2, COPY, SR, SI); \
+ } while (0)
+
+#define CHECK_MUL(TYPE, COPY, ZERO, ZEROI, ONE) \
+ do { \
+ CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, +, +, -, +); \
+ CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, +, -, +, +); \
+ CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, -, +, +, -); \
+ CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, -, -, +, +); \
+ } while (0)
+
+void
+check_mul_float (void)
+{
+ CHECK_MUL (float, __builtin_copysignf, 0.0f, 0.0if, 1.0f);
+}
+
+void
+check_mul_double (void)
+{
+ CHECK_MUL (double, __builtin_copysign, 0.0, 0.0i, 1.0);
+}
+
+void
+check_mul_long_double (void)
+{
+ CHECK_MUL (long double, __builtin_copysignl, 0.0l, 0.0il, 1.0l);
+}
+
+int
+main (void)
+{
+ check_mul_float ();
+ check_mul_double ();
+ check_mul_long_double ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mul-one.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mul-one.c
new file mode 100644
index 00000000000..9d1d6c7ce10
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mul-one.c
@@ -0,0 +1,61 @@
+/* Test complex arithmetic with signed zeros. Pure complex
+ multiplication with 1.0 + 0.0i. */
+/* { dg-do run } */
+/* { dg-options "-std=gnu99" } */
+
+#include "complex-sign.h"
+
+#define CHECK_MUL_INT(TYPE, COPY, ZERO, ZEROI, ONE, S1, S2, SR, SI) \
+ do { \
+ _Complex TYPE a1, b1, c1; \
+ volatile _Complex TYPE a2, b2, c2; \
+ a1 = ENCODE(ZERO, ZEROI, S1, S2); \
+ CHECK_RES (a1, COPY, S1, S2); \
+ b1 = ONE + ZEROI; \
+ c1 = a1 * b1; \
+ CHECK_RES (c1, COPY, SR, SI); \
+ c1 = a1 * (ONE + ZEROI); \
+ CHECK_RES (c1, COPY, SR, SI); \
+ a2 = ENCODE(ZERO, ZEROI, S1, S2); \
+ CHECK_RES (a2, COPY, S1, S2); \
+ b2 = ONE + ZEROI; \
+ c2 = a2 * b2; \
+ CHECK_RES (c2, COPY, SR, SI); \
+ c2 = a2 * (ONE + ZEROI); \
+ CHECK_RES (c2, COPY, SR, SI); \
+ } while (0)
+
+#define CHECK_MUL(TYPE, COPY, ZERO, ZEROI, ONE) \
+ do { \
+ CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, +, +, +, +); \
+ CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, +, -, +, +); \
+ CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, -, +, -, +); \
+ CHECK_MUL_INT (TYPE, COPY, ZERO, ZEROI, ONE, -, -, +, -); \
+ } while (0)
+
+void
+check_mul_float (void)
+{
+ CHECK_MUL (float, __builtin_copysignf, 0.0f, 0.0if, 1.0f);
+}
+
+void
+check_mul_double (void)
+{
+ CHECK_MUL (double, __builtin_copysign, 0.0, 0.0i, 1.0);
+}
+
+void
+check_mul_long_double (void)
+{
+ CHECK_MUL (long double, __builtin_copysignl, 0.0l, 0.0il, 1.0l);
+}
+
+int
+main (void)
+{
+ check_mul_float ();
+ check_mul_double ();
+ check_mul_long_double ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-mul.c b/gcc/testsuite/gcc.dg/torture/complex-sign-mul.c
new file mode 100644
index 00000000000..d9a06a5359b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/complex-sign-mul.c
@@ -0,0 +1,53 @@
+/* Test complex arithmetic with signed zeros. Pure complex
+ multiplication. */
+/* { dg-do run } */
+/* { dg-options "-std=gnu99" } */
+
+#include "complex-sign.h"
+
+#define CHECK_MUL(TYPE, COPY, ZERO, ZEROI) \
+ do { \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, +, +, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, +, +, -, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, +, -, +, -, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, +, -, -, +, -); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, -, +, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, -, +, -, +, -); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, -, -, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, +, -, -, -, -, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, +, +, +, -, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, +, +, -, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, +, -, +, +, -); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, +, -, -, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, -, +, +, +, -); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, -, +, -, -, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, -, -, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, *, -, -, -, -, +, +); \
+ } while (0)
+
+void
+check_mul_float (void)
+{
+ CHECK_MUL (float, __builtin_copysignf, 0.0f, 0.0if);
+}
+
+void
+check_mul_double (void)
+{
+ CHECK_MUL (double, __builtin_copysign, 0.0, 0.0i);
+}
+
+void
+check_mul_long_double (void)
+{
+ CHECK_MUL (long double, __builtin_copysignl, 0.0l, 0.0il);
+}
+
+int
+main (void)
+{
+ check_mul_float ();
+ check_mul_double ();
+ check_mul_long_double ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign-sub.c b/gcc/testsuite/gcc.dg/torture/complex-sign-sub.c
new file mode 100644
index 00000000000..94ab17d7fc6
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/complex-sign-sub.c
@@ -0,0 +1,53 @@
+/* Test complex arithmetic with signed zeros. Pure complex
+ subtraction. */
+/* { dg-do run } */
+/* { dg-options "-std=gnu99" } */
+
+#include "complex-sign.h"
+
+#define CHECK_SUB(TYPE, COPY, ZERO, ZEROI) \
+ do { \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, +, +, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, +, +, -, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, +, -, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, +, -, -, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, -, +, +, +, -); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, -, +, -, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, -, -, +, +, -); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, +, -, -, -, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, +, +, +, -, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, +, +, -, -, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, +, -, +, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, +, -, -, +, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, -, +, +, -, -); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, -, +, -, -, +); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, -, -, +, +, -); \
+ CHECK_ARITH (TYPE, COPY, ZERO, ZEROI, -, -, -, -, -, +, +); \
+ } while (0)
+
+void
+check_sub_float (void)
+{
+ CHECK_SUB (float, __builtin_copysignf, 0.0f, 0.0if);
+}
+
+void
+check_sub_double (void)
+{
+ CHECK_SUB (double, __builtin_copysign, 0.0, 0.0i);
+}
+
+void
+check_sub_long_double (void)
+{
+ CHECK_SUB (long double, __builtin_copysignl, 0.0l, 0.0il);
+}
+
+int
+main (void)
+{
+ check_sub_float ();
+ check_sub_double ();
+ check_sub_long_double ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/complex-sign.h b/gcc/testsuite/gcc.dg/torture/complex-sign.h
new file mode 100644
index 00000000000..f12e25d656f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/complex-sign.h
@@ -0,0 +1,74 @@
+/* Common header for complex arithmetic sign tests. */
+
+extern void abort (void);
+extern void exit (int);
+
+#define CHECK_RES(VALUE, COPY, SIGN_REAL, SIGN_IMAG) \
+ do { \
+ if ((VALUE) != 0 \
+ || COPY (1.0, __real__ (VALUE)) != SIGN_REAL 1.0 \
+ || COPY (1.0, __imag__ (VALUE)) != SIGN_IMAG 1.0) \
+ abort (); \
+ } while (0)
+
+/* This definition is intended to work with or without imaginary
+ types, as long as mixed real/complex arithmetic is handled
+ correctly. */
+#define ENCODE(ZERO, ZEROI, SA, SB) \
+ (SA 1 == 1 \
+ ? SB 1 == 1 ? ZERO + ZEROI : ZERO - ZEROI \
+ : SB 1 == 1 ? -(ZERO - ZEROI) : -(ZERO + ZEROI))
+
+#define CHECK_ARITH(TYPE, COPY, ZERO, ZEROI, OP, S1, S2, S3, S4, SR, SI) \
+ do { \
+ _Complex TYPE a1, b1, c1; \
+ volatile _Complex TYPE a2, b2, c2; \
+ a1 = ENCODE(ZERO, ZEROI, S1, S2); \
+ CHECK_RES (a1, COPY, S1, S2); \
+ b1 = ENCODE(ZERO, ZEROI, S3, S4); \
+ CHECK_RES (b1, COPY, S3, S4); \
+ c1 = a1 OP b1; \
+ CHECK_RES (c1, COPY, SR, SI); \
+ a2 = ENCODE(ZERO, ZEROI, S1, S2); \
+ CHECK_RES (a2, COPY, S1, S2); \
+ b2 = ENCODE(ZERO, ZEROI, S3, S4); \
+ CHECK_RES (b2, COPY, S3, S4); \
+ c2 = a2 OP b2; \
+ CHECK_RES (c2, COPY, SR, SI); \
+ } while (0)
+
+#define CHECK_ARITH_RC(TYPE, COPY, ZERO, ZEROI, OP, S1, S3, S4, SR, SI) \
+ do { \
+ TYPE a1; \
+ _Complex TYPE b1, c1; \
+ volatile TYPE a2; \
+ volatile _Complex TYPE b2, c2; \
+ a1 = S1 ZERO; \
+ b1 = ENCODE(ZERO, ZEROI, S3, S4); \
+ CHECK_RES (b1, COPY, S3, S4); \
+ c1 = a1 OP b1; \
+ CHECK_RES (c1, COPY, SR, SI); \
+ a2 = S1 ZERO; \
+ b2 = ENCODE(ZERO, ZEROI, S3, S4); \
+ CHECK_RES (b2, COPY, S3, S4); \
+ c2 = a2 OP b2; \
+ CHECK_RES (c2, COPY, SR, SI); \
+ } while (0)
+
+#define CHECK_ARITH_CR(TYPE, COPY, ZERO, ZEROI, OP, S1, S2, S3, V3, SR, SI) \
+ do { \
+ _Complex TYPE a1, c1; \
+ TYPE b1; \
+ volatile _Complex TYPE a2, c2; \
+ volatile TYPE b2; \
+ a1 = ENCODE(ZERO, ZEROI, S1, S2); \
+ CHECK_RES (a1, COPY, S1, S2); \
+ b1 = S3 V3; \
+ c1 = a1 OP b1; \
+ CHECK_RES (c1, COPY, SR, SI); \
+ a2 = ENCODE(ZERO, ZEROI, S1, S2); \
+ CHECK_RES (a2, COPY, S1, S2); \
+ b2 = S3 V3; \
+ c2 = a2 OP b2; \
+ CHECK_RES (c2, COPY, SR, SI); \
+ } while (0)
diff --git a/gcc/testsuite/gcc.dg/vect/Os-vect-95.c b/gcc/testsuite/gcc.dg/vect/Os-vect-95.c
index be7168b30ff..8f6e53a6f96 100644
--- a/gcc/testsuite/gcc.dg/vect/Os-vect-95.c
+++ b/gcc/testsuite/gcc.dg/vect/Os-vect-95.c
@@ -41,8 +41,8 @@ main1 (int n, float * __restrict__ pd, float * __restrict__ pa, float * __restri
int main (void)
{
int i;
- float a[N] __attribute__ ((__aligned__(16)));
- float d[N+1] __attribute__ ((__aligned__(16)));
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c
index bfa0802c0ce..dc17239a3b4 100644
--- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c
+++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-37.c
@@ -4,8 +4,8 @@
#include "tree-vect.h"
#define N 16
-char x[N] __attribute__ ((__aligned__(16)));
-char cb[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
+char x[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+char cb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
__attribute__ ((noinline))
int main1 (char *y)
diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c
index cd7bb01a50d..13fbc82a42f 100644
--- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c
+++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-43.c
@@ -25,8 +25,8 @@ __attribute__ ((noinline)) int
main1 (float *pa)
{
int i;
- float pb[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
- float pc[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+ float pb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
+ float pc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
/* Vectorizable: pa may not alias pb and/or pc, even though their
addresses escape. &pa would need to escape to point to escaped memory. */
@@ -66,7 +66,7 @@ main2 (float * pa)
int main (void)
{
int i;
- float a[N] __attribute__ ((__aligned__(16)));
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
check_vect ();
diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c
index f61dff6e341..b883a94a95e 100644
--- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c
+++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-49.c
@@ -31,7 +31,7 @@ void bar (float *pa, float *pb, float *pc)
__attribute__ ((noinline)) int
main1 (float *pb, float *pc)
{
- float pa[N] __attribute__ ((__aligned__(16)));
+ float pa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
int i;
for (i = 0; i < N; i++)
@@ -47,8 +47,8 @@ main1 (float *pb, float *pc)
int main (void)
{
int i;
- float b[N+1] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60};
- float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+ float b[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60};
+ float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
check_vect ();
diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c
index fe04694f657..28deeaeac26 100644
--- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c
+++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-53.c
@@ -31,7 +31,7 @@ void bar (const float *pa, const float *pb, const float *pc)
__attribute__ ((noinline)) int
main1 (int n, float *pb, float *pc)
{
- float pa[N] __attribute__ ((__aligned__(16)));
+ float pa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
int i;
for (i = 0; i < n; i++)
@@ -47,9 +47,9 @@ main1 (int n, float *pb, float *pc)
int main (void)
{
int i;
- float a[N] __attribute__ ((__aligned__(16)));
- float b[N+1] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60};
- float c[N+1] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float b[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60};
+ float c[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
check_vect ();
diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c
index 69f79bf8823..63d332a39b2 100644
--- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c
+++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-57.c
@@ -43,8 +43,8 @@ __attribute__ ((noinline)) int
main1 (float *pa)
{
int i;
- float b[N] __attribute__ ((__aligned__(16)));
- float c[N] __attribute__ ((__aligned__(16)));
+ float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float *pb = b;
float *pc = c;
@@ -63,7 +63,7 @@ main1 (float *pa)
int main (void)
{
int i;
- float a[N] __attribute__ ((__aligned__(16)));
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
check_vect ();
main1 (a);
diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c
index 47b268e148b..2df45fdfe85 100644
--- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c
+++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c
@@ -44,8 +44,8 @@ __attribute__ ((noinline)) int
main1 (int n , float *pa)
{
int i;
- float b[N] __attribute__ ((__aligned__(16)));
- float c[N] __attribute__ ((__aligned__(16)));
+ float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float *pb = b;
float *pc = c;
@@ -65,7 +65,7 @@ int main (void)
{
int i;
int n=N;
- float a[N] __attribute__ ((__aligned__(16)));
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
check_vect ();
main1 (n,a);
diff --git a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c
index f653714942a..1a694b33e05 100644
--- a/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c
+++ b/gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c
@@ -5,9 +5,9 @@
#define N 16
-float fa[N] __attribute__ ((__aligned__(16)));
-float fb[N+4] __attribute__ ((__aligned__(16))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0};
-float fc[N] __attribute__ ((__aligned__(16))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5};
+float fa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+float fb[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0};
+float fc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5};
/* Like vect-80.c but the pointers are not annotated as restricted,
and therefore can't be antialiased. */
diff --git a/gcc/testsuite/gcc.dg/vect/pr20122.c b/gcc/testsuite/gcc.dg/vect/pr20122.c
index 05948c7fc81..9d21fc60062 100644
--- a/gcc/testsuite/gcc.dg/vect/pr20122.c
+++ b/gcc/testsuite/gcc.dg/vect/pr20122.c
@@ -3,7 +3,7 @@
#include <stdarg.h>
#include "tree-vect.h"
-short Kernshort[24] __attribute__ ((__aligned__(16)));
+short Kernshort[24] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
static void VecBug(short Kernel[8][24]) __attribute__((noinline));
static void VecBug2(short Kernel[8][24]) __attribute__((noinline));
@@ -21,7 +21,7 @@ static void VecBug(short Kernel[8][24])
static void VecBug2(short Kernel[8][24])
{
int k,i;
- short Kernshort2[24] __attribute__ ((__aligned__(16)));
+ short Kernshort2[24] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
for (k = 0; k<8; k++)
for (i = 0; i<24; i++)
Kernshort2[i] = Kernel[k][i];
@@ -36,7 +36,7 @@ int main (int argc, char **argv)
{
check_vect ();
- short Kernel[8][24] __attribute__ ((__aligned__(16)));
+ short Kernel[8][24] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
int k,i;
for (k = 0; k<8; k++)
diff --git a/gcc/testsuite/gcc.dg/vect/pr36493.c b/gcc/testsuite/gcc.dg/vect/pr36493.c
index 0a3d2029c9f..0a330b0f056 100644
--- a/gcc/testsuite/gcc.dg/vect/pr36493.c
+++ b/gcc/testsuite/gcc.dg/vect/pr36493.c
@@ -6,7 +6,7 @@ int
main (void)
{
int i;
- long x[12] __attribute__((aligned(16)));
+ long x[12] __attribute__((aligned(__BIGGEST_ALIGNMENT__)));
x[0] = 1;
for (i = 0; i < 12; i++)
diff --git a/gcc/testsuite/gcc.dg/vect/pr37385.c b/gcc/testsuite/gcc.dg/vect/pr37385.c
index d6a477e634c..8b1cf3ae18a 100644
--- a/gcc/testsuite/gcc.dg/vect/pr37385.c
+++ b/gcc/testsuite/gcc.dg/vect/pr37385.c
@@ -4,7 +4,7 @@
typedef int int_t;
typedef void (*fun_t) (int);
-fun_t fun_tab[400] __attribute__ ((__aligned__(16)));
+fun_t fun_tab[400] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
void foo (int_t a);
diff --git a/gcc/testsuite/gcc.dg/vect/slp-7.c b/gcc/testsuite/gcc.dg/vect/slp-7.c
index f00bf54aaa7..db9fb04099d 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-7.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-7.c
@@ -6,8 +6,8 @@
#define N 8
-unsigned int in[N*8] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
-unsigned short in2[N*16] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+unsigned int in[N*8] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+unsigned short in2[N*16] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
int
main1 ()
diff --git a/gcc/testsuite/gcc.dg/vect/slp-9.c b/gcc/testsuite/gcc.dg/vect/slp-9.c
index 461f32e8241..eefb81680a4 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-9.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-9.c
@@ -5,8 +5,8 @@
#define N 64
-short X[N] __attribute__ ((__aligned__(16)));
-short Y[N] __attribute__ ((__aligned__(16)));
+short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
int result[N];
/* short->int widening-mult */
diff --git a/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c b/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c
index 32853d73a15..2eb73f38036 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c
@@ -5,8 +5,8 @@
#define N 64
-short X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
-short Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
+short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
int result[N];
diff --git a/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c b/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c
index 2f80ea085b6..fb3292ad468 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c
@@ -5,8 +5,8 @@
#define N 64
-unsigned char X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
-unsigned char Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
+unsigned char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+unsigned char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
unsigned short result[N];
diff --git a/gcc/testsuite/gcc.dg/vect/vect-35.c b/gcc/testsuite/gcc.dg/vect/vect-35.c
index 62782e75799..0f4284a6257 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-35.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-35.c
@@ -9,8 +9,8 @@ __attribute__ ((noinline))
int main1 ()
{
union {
- unsigned char a[N] __attribute__ ((__aligned__(16)));
- unsigned char b[N] __attribute__ ((__aligned__(16)));
+ unsigned char a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ unsigned char b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
} s;
int i;
diff --git a/gcc/testsuite/gcc.dg/vect/vect-40.c b/gcc/testsuite/gcc.dg/vect/vect-40.c
index 83d8cabcd87..a73d1551643 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-40.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-40.c
@@ -30,9 +30,9 @@ __attribute__ ((noinline)) int
main1 ()
{
int i;
- float a[N] __attribute__ ((__aligned__(16)));
- float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
- float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
+ float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
float *pa = a;
float *pb = b;
float *pc = c;
diff --git a/gcc/testsuite/gcc.dg/vect/vect-42.c b/gcc/testsuite/gcc.dg/vect/vect-42.c
index 324e2f8da2a..f1764e13ecf 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-42.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-42.c
@@ -30,8 +30,8 @@ __attribute__ ((noinline)) int
main1 (float * __restrict__ pa)
{
int i;
- float pb[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
- float pc[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+ float pb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
+ float pc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
for (i = 0; i < N; i++)
{
@@ -44,9 +44,9 @@ main1 (float * __restrict__ pa)
int main (void)
{
int i;
- float a[N] __attribute__ ((__aligned__(16)));
- float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
- float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
+ float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
check_vect ();
diff --git a/gcc/testsuite/gcc.dg/vect/vect-44.c b/gcc/testsuite/gcc.dg/vect/vect-44.c
index d80df10bfd9..81c6c1b8e87 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-44.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-44.c
@@ -46,9 +46,9 @@ main1 (float * __restrict__ pa, float * __restrict__ pb, float * __restrict__ pc
int main (void)
{
int i;
- float a[N+4] __attribute__ ((__aligned__(16)));
- float b[N+4] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69};
- float c[N+4] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};
+ float a[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float b[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60,63,66,69};
+ float c[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23};
check_vect ();
diff --git a/gcc/testsuite/gcc.dg/vect/vect-46.c b/gcc/testsuite/gcc.dg/vect/vect-46.c
index abe35b4013f..2588a7b291e 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-46.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-46.c
@@ -30,7 +30,7 @@ __attribute__ ((noinline)) int
main1 (int n)
{
int i;
- float a[N] __attribute__ ((__aligned__(16))); float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
float *pa = a;
float *pb = b;
float *pc = c;
diff --git a/gcc/testsuite/gcc.dg/vect/vect-48.c b/gcc/testsuite/gcc.dg/vect/vect-48.c
index 011b868639f..e47ee00de91 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-48.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-48.c
@@ -18,7 +18,7 @@
__attribute__ ((noinline)) int
main1 (float *pb, float *pc)
{
- float pa[N] __attribute__ ((__aligned__(16)));
+ float pa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
int i;
for (i = 0; i < N; i++)
@@ -39,8 +39,8 @@ main1 (float *pb, float *pc)
int main (void)
{
int i;
- float b[N+1] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60};
- float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+ float b[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60};
+ float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
check_vect ();
diff --git a/gcc/testsuite/gcc.dg/vect/vect-52.c b/gcc/testsuite/gcc.dg/vect/vect-52.c
index 207e7007c41..af485abbd14 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-52.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-52.c
@@ -18,7 +18,7 @@
__attribute__ ((noinline)) int
main1 (int n, float *pb, float *pc)
{
- float pa[N] __attribute__ ((__aligned__(16)));
+ float pa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
int i;
for (i = 0; i < n; i++)
@@ -39,9 +39,9 @@ main1 (int n, float *pb, float *pc)
int main (void)
{
int i;
- float a[N] __attribute__ ((__aligned__(16)));
- float b[N+1] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60};
- float c[N+1] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float b[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57,60};
+ float c[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
check_vect ();
diff --git a/gcc/testsuite/gcc.dg/vect/vect-54.c b/gcc/testsuite/gcc.dg/vect/vect-54.c
index a44cdd41811..629e82df59b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-54.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-54.c
@@ -26,14 +26,14 @@ void bar (float *pa, float *pb, float *pc)
vect-58.c is similar to this one with one difference:
the loop bound is unknown. */
-float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
-float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
+float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
__attribute__ ((noinline)) int
main1 ()
{
int i;
- float a[N] __attribute__ ((__aligned__(16)));
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float *pa = a;
float *pb = b;
float *pc = c;
diff --git a/gcc/testsuite/gcc.dg/vect/vect-56.c b/gcc/testsuite/gcc.dg/vect/vect-56.c
index 624a11287ea..e32d855d08d 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-56.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-56.c
@@ -30,14 +30,14 @@ void bar (float *pa, float *pb, float *pc)
vect-57.c is similar to this one with two differences:
aliasing is a problem, and the write access has unknown alignment. */
-float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
-float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
+float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
__attribute__ ((noinline)) int
main1 ()
{
int i;
- float a[N] __attribute__ ((__aligned__(16)));
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float *pa = a;
float *pb = b;
float *pc = c;
diff --git a/gcc/testsuite/gcc.dg/vect/vect-58.c b/gcc/testsuite/gcc.dg/vect/vect-58.c
index fe58860e000..fa8c91b3071 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-58.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-58.c
@@ -26,7 +26,7 @@ void bar (float *pa, float *pb, float *pc)
vect-54.c is similar to this one with one difference:
the loop bound is known. */
-float a[N] __attribute__ ((__aligned__(16))); float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))); float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57}; float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
__attribute__ ((noinline)) int
main1 (int n)
diff --git a/gcc/testsuite/gcc.dg/vect/vect-60.c b/gcc/testsuite/gcc.dg/vect/vect-60.c
index efb1d5043c4..3319e360710 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-60.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-60.c
@@ -30,14 +30,14 @@ void bar (float *pa, float *pb, float *pc)
vect-61.c is similar to this one with two differences:
aliasing is not a problem, and the write access has unknown alignment. */
-float b[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
-float c[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
+float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
__attribute__ ((noinline)) int
main1 (int n)
{
int i;
- float a[N] __attribute__ ((__aligned__(16)));
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float *pa = a;
float *pb = b;
float *pc = c;
diff --git a/gcc/testsuite/gcc.dg/vect/vect-74.c b/gcc/testsuite/gcc.dg/vect/vect-74.c
index e1e2805c915..a680b9fb01b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-74.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-74.c
@@ -9,9 +9,9 @@
the expression that represents the first location accessed - is
more involved than just an ssa_name. */
-float a[N] __attribute__ ((__aligned__(16)));
-float b[N+4] __attribute__ ((__aligned__(16))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0};
-float c[N] __attribute__ ((__aligned__(16))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5};
+float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+float b[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0};
+float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5};
__attribute__ ((noinline)) int
main1 (float *__restrict__ pa, float * __restrict__ pb, float * __restrict__ pc)
diff --git a/gcc/testsuite/gcc.dg/vect/vect-75.c b/gcc/testsuite/gcc.dg/vect/vect-75.c
index 03c1868e420..092a3013e07 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-75.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-75.c
@@ -10,7 +10,7 @@
the expression that represents the first location accessed - is
more involved than just an ssa_name. */
-int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
+int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
__attribute__ ((noinline))
int main1 (int *ib)
diff --git a/gcc/testsuite/gcc.dg/vect/vect-76.c b/gcc/testsuite/gcc.dg/vect/vect-76.c
index 8a2f7514e7e..847b5e5259d 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-76.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-76.c
@@ -10,7 +10,7 @@
the expression that represents the first location accessed - is
more involved than just an ssa_name. */
-int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10};
+int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10};
__attribute__ ((noinline))
int main1 (int *pib)
diff --git a/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c b/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c
index a3d1b4cd6e9..4a05874b67e 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-77-alignchecks.c
@@ -10,7 +10,7 @@
the expression that represents the first location accessed - is
more involved than just an ssa_name. */
-int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
+int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
__attribute__ ((noinline))
int main1 (int *ib, int off)
diff --git a/gcc/testsuite/gcc.dg/vect/vect-77-global.c b/gcc/testsuite/gcc.dg/vect/vect-77-global.c
index 38f1443bb39..ac29d7d3c44 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-77-global.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-77-global.c
@@ -10,7 +10,7 @@
the expression that represents the first location accessed - is
more involved than just an ssa_name. */
-int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
+int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
int ia[N];
__attribute__ ((noinline))
diff --git a/gcc/testsuite/gcc.dg/vect/vect-77.c b/gcc/testsuite/gcc.dg/vect/vect-77.c
index a6eb2ad8f23..07ee0fde18d 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-77.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-77.c
@@ -10,7 +10,7 @@
the expression that represents the first location accessed - is
more involved than just an ssa_name. */
-int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
+int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
__attribute__ ((noinline))
int main1 (int *ib, int off)
diff --git a/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c b/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c
index 5c97b410962..71c01ae1ce7 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-78-alignchecks.c
@@ -10,7 +10,7 @@
the expression that represents the first location accessed - is
more involved than just an ssa_name. */
-int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
+int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
int off = 8;
__attribute__ ((noinline))
diff --git a/gcc/testsuite/gcc.dg/vect/vect-78-global.c b/gcc/testsuite/gcc.dg/vect/vect-78-global.c
index dccc83903da..ec6520fd8a0 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-78-global.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-78-global.c
@@ -11,7 +11,7 @@
more involved than just an ssa_name. */
int ia[N];
-int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
+int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
int off = 8;
__attribute__ ((noinline))
diff --git a/gcc/testsuite/gcc.dg/vect/vect-78.c b/gcc/testsuite/gcc.dg/vect/vect-78.c
index 67ce20fda1b..12ea12af9c5 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-78.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-78.c
@@ -10,7 +10,7 @@
the expression that represents the first location accessed - is
more involved than just an ssa_name. */
-int ib[N+OFF] __attribute__ ((__aligned__(16))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
+int ib[N+OFF] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0, 1, 3, 5, 7, 11, 13, 17, 0, 2, 6, 10, 14, 22, 26, 34};
int off = 8;
__attribute__ ((noinline))
diff --git a/gcc/testsuite/gcc.dg/vect/vect-80.c b/gcc/testsuite/gcc.dg/vect/vect-80.c
index beb8d259adf..fc0ed1b3938 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-80.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-80.c
@@ -5,9 +5,9 @@
#define N 16
-float fa[N] __attribute__ ((__aligned__(16)));
-float fb[N+4] __attribute__ ((__aligned__(16))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0};
-float fc[N] __attribute__ ((__aligned__(16))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5};
+float fa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+float fb[N+4] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 7.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0};
+float fc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 7.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5};
/* Check handling of accesses for which the "initial condition" -
the expression that represents the first location accessed - is
diff --git a/gcc/testsuite/gcc.dg/vect/vect-85.c b/gcc/testsuite/gcc.dg/vect/vect-85.c
index 6e8b43e79a3..a5bf5db078a 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-85.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-85.c
@@ -35,7 +35,7 @@ int main1 (int *a)
int main (void)
{
- int a[N] __attribute__ ((__aligned__(16)));
+ int a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
check_vect ();
diff --git a/gcc/testsuite/gcc.dg/vect/vect-87.c b/gcc/testsuite/gcc.dg/vect/vect-87.c
index 20a0d2ded45..151091a065b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-87.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-87.c
@@ -35,7 +35,7 @@ int main1 (int n, int *a)
int main (void)
{
- int a[N] __attribute__ ((__aligned__(16)));
+ int a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
check_vect ();
diff --git a/gcc/testsuite/gcc.dg/vect/vect-88.c b/gcc/testsuite/gcc.dg/vect/vect-88.c
index 8c231c09240..a1666334916 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-88.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-88.c
@@ -35,7 +35,7 @@ int main1 (int n, int *a)
int main (void)
{
- int a[N+1] __attribute__ ((__aligned__(16)));
+ int a[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
check_vect ();
diff --git a/gcc/testsuite/gcc.dg/vect/vect-92.c b/gcc/testsuite/gcc.dg/vect/vect-92.c
index 94fff980002..01c751fbfa3 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-92.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-92.c
@@ -5,9 +5,9 @@
#define N 256
-float pa[N] __attribute__ ((__aligned__(16)));
-float pb[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
-float pc[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
+float pa[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+float pb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
+float pc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
/* Check handling of unaligned accesses when the misalignment is
known at compile time and different accesses have the same
diff --git a/gcc/testsuite/gcc.dg/vect/vect-93.c b/gcc/testsuite/gcc.dg/vect/vect-93.c
index b2245c85a47..351ab04fe84 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-93.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-93.c
@@ -41,8 +41,8 @@ main1 (float *pa)
int main (void)
{
int i;
- float a[N] __attribute__ ((__aligned__(16)));
- float b[N] __attribute__ ((__aligned__(16)));
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
check_vect ();
diff --git a/gcc/testsuite/gcc.dg/vect/vect-95.c b/gcc/testsuite/gcc.dg/vect/vect-95.c
index aeb5042ec81..ea9f32b994a 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-95.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-95.c
@@ -42,8 +42,8 @@ main1 (int n, float * __restrict__ pd, float * __restrict__ pa, float * __restri
int main (void)
{
int i;
- float a[N] __attribute__ ((__aligned__(16)));
- float d[N+1] __attribute__ ((__aligned__(16)));
+ float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float d[N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float b[N] = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57};
float c[N] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19};
diff --git a/gcc/testsuite/gcc.dg/vect/vect-97.c b/gcc/testsuite/gcc.dg/vect/vect-97.c
index c95c503c941..6ea26149095 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-97.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-97.c
@@ -5,8 +5,8 @@
#define N 16
-char x[N] __attribute__ ((__aligned__(16)));
-char cb[N] __attribute__ ((__aligned__(16))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
+char x[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+char cb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
__attribute__ ((noinline))
int main1 ()
diff --git a/gcc/testsuite/gcc.dg/vect/vect-complex-1.c b/gcc/testsuite/gcc.dg/vect/vect-complex-1.c
index e2d0adcf9fb..2c7d5ce616b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-complex-1.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-complex-1.c
@@ -6,19 +6,19 @@
#define N 16
-_Complex float a[N] __attribute__ ((__aligned__(16))) =
+_Complex float a[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{ 10.0F + 20.0iF, 11.0F + 21.0iF, 12.0F + 22.0iF, 13.0F + 23.0iF,
14.0F + 24.0iF, 15.0F + 25.0iF, 16.0F + 26.0iF, 17.0F + 27.0iF,
18.0F + 28.0iF, 19.0F + 29.0iF, 20.0F + 30.0iF, 21.0F + 31.0iF,
22.0F + 32.0iF, 23.0F + 33.0iF, 24.0F + 34.0iF, 25.0F + 35.0iF };
-_Complex float b[N] __attribute__ ((__aligned__(16))) =
+_Complex float b[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{ 30.0F + 40.0iF, 31.0F + 41.0iF, 32.0F + 42.0iF, 33.0F + 43.0iF,
34.0F + 44.0iF, 35.0F + 45.0iF, 36.0F + 46.0iF, 37.0F + 47.0iF,
38.0F + 48.0iF, 39.0F + 49.0iF, 40.0F + 50.0iF, 41.0F + 51.0iF,
42.0F + 52.0iF, 43.0F + 53.0iF, 44.0F + 54.0iF, 45.0F + 55.0iF };
-_Complex float c[N] __attribute__ ((__aligned__(16)));
-_Complex float res[N] __attribute__ ((__aligned__(16))) =
+_Complex float c[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+_Complex float res[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{ 40.0F + 60.0iF, 42.0F + 62.0iF, 44.0F + 64.0iF, 46.0F + 66.0iF,
48.0F + 68.0iF, 50.0F + 70.0iF, 52.0F + 72.0iF, 54.0F + 74.0iF,
56.0F + 76.0iF, 58.0F + 78.0iF, 60.0F + 80.0iF, 62.0F + 82.0iF,
diff --git a/gcc/testsuite/gcc.dg/vect/vect-complex-4.c b/gcc/testsuite/gcc.dg/vect/vect-complex-4.c
index 85c416597f6..0e00e789ac1 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-complex-4.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-complex-4.c
@@ -11,7 +11,7 @@ struct foostr {
_Complex short f2;
};
-struct foostr a[16] __attribute__ ((__aligned__(16))) =
+struct foostr a[16] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{
11 + 23i, 24 + 22i,
11 + 26i, 24 + 35i,
@@ -31,7 +31,7 @@ struct foostr a[16] __attribute__ ((__aligned__(16))) =
35 + 36i, 34 + 28i,
};
-struct foostr b[16] __attribute__ ((__aligned__(16))) =
+struct foostr b[16] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{
37 + 12i, 23 + 15i,
14 + 11i, 13 + 25i,
@@ -50,7 +50,7 @@ struct foostr b[16] __attribute__ ((__aligned__(16))) =
25 + 27i, 15 + 30i,
10 + 31i, 37 + 37i,
};
-struct foostr c[16] __attribute__ ((__aligned__(16)));
+struct foostr c[16] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
struct foostr res[N] =
{
48 + 35i, 47 + 37i,
diff --git a/gcc/testsuite/gcc.dg/vect/vect-complex-5.c b/gcc/testsuite/gcc.dg/vect/vect-complex-5.c
index 91eb1f54b3c..a17830fa917 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-complex-5.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-complex-5.c
@@ -11,11 +11,11 @@ struct foostr {
_Complex short f2;
};
-_Complex short a1[64] __attribute__ ((__aligned__(16)));
-_Complex short a2[64] __attribute__ ((__aligned__(16)));
-_Complex short b1[64] __attribute__ ((__aligned__(16)));
-_Complex short b2[64] __attribute__ ((__aligned__(16)));
-struct foostr c[64] __attribute__ ((__aligned__(16)));
+_Complex short a1[64] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+_Complex short a2[64] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+_Complex short b1[64] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+_Complex short b2[64] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+struct foostr c[64] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
__attribute__ ((noinline)) void
foo (void)
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c
index 757af63f124..175422a55fc 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-10.c
@@ -5,11 +5,11 @@
#define N 64
-unsigned char uX[N] __attribute__ ((__aligned__(16)));
-unsigned short uY[N] __attribute__ ((__aligned__(16)));
+unsigned char uX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+unsigned short uY[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
unsigned int uresult[N];
-signed char X[N] __attribute__ ((__aligned__(16)));
-signed short Y[N] __attribute__ ((__aligned__(16)));
+signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
int result[N];
/* Unsigned type promotion (hi->si) */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c
index ef66c734e9c..9cb8c1dfe44 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-11.c
@@ -5,7 +5,7 @@
#define N 64
-short x[N] __attribute__ ((__aligned__(16)));
+short x[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
__attribute__ ((noinline)) int
foo (int len, int *z) {
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c
index e4d5417547e..ca34ea42719 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-12.c
@@ -5,7 +5,7 @@
#define N 64
-char x[N] __attribute__ ((__aligned__(16)));
+char x[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
__attribute__ ((noinline)) int
foo (int len, int *z) {
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c
index 32b3131ee20..a5012ab2317 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-13.c
@@ -5,9 +5,9 @@
#define N 64
-unsigned char uX[N] __attribute__ ((__aligned__(16)));
+unsigned char uX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
unsigned int uresult[N];
-signed char X[N] __attribute__ ((__aligned__(16)));
+signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
int result[N];
/* Unsigned type promotion (qi->si) */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c
index 970535ff660..11ff337a960 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-14.c
@@ -5,9 +5,9 @@
#define N 64
-unsigned char uX[N] __attribute__ ((__aligned__(16)));
+unsigned char uX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
unsigned char uresultX[N];
-unsigned int uY[N] __attribute__ ((__aligned__(16)));
+unsigned int uY[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
unsigned char uresultY[N];
/* Unsigned type demotion (si->qi) */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c
index ad09ff95679..c96daf8ad9b 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-15.c
@@ -9,9 +9,9 @@
#define DOT1 43680
#define DOT2 -20832
-signed char X[N] __attribute__ ((__aligned__(16)));
-signed char Y[N] __attribute__ ((__aligned__(16)));
-unsigned char CX[N] __attribute__ ((__aligned__(16)));
+signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+unsigned char CX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
__attribute__ ((noinline)) void
foo1(int len) {
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c
index 4192e3d19ec..176333c2b03 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-16.c
@@ -5,7 +5,7 @@
#define N 64
-char x[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+char x[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
__attribute__ ((noinline)) int
foo (int len, long long *z) {
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c
index 9084fc82a12..b2f81058260 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-17.c
@@ -5,9 +5,9 @@
#define N 64
-unsigned char uX[N] __attribute__ ((__aligned__(16))) = {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
+unsigned char uX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
unsigned char uresultX[N];
-unsigned long long uY[N] __attribute__ ((__aligned__(16))) = {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
+unsigned long long uY[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
unsigned char uresultY[N];
/* Unsigned type demotion (si->qi) */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
index 22711aa0ab1..ba1f6604861 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-3.c
@@ -5,11 +5,11 @@
#define N 32
-int ib[N] __attribute__ ((__aligned__(16))) =
+int ib[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
-short sb[N] __attribute__ ((__aligned__(16))) =
+short sb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
-char cb[N] __attribute__ ((__aligned__(16))) =
+char cb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
__attribute__ ((noinline))
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
index a4867e44f3d..7d8f5afe3e4 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-6.c
@@ -5,17 +5,17 @@
#define N 32
-unsigned int ic[N] __attribute__ ((__aligned__(16))) =
+unsigned int ic[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
-unsigned int ib[N] __attribute__ ((__aligned__(16))) =
+unsigned int ib[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
-unsigned short sc[N] __attribute__ ((__aligned__(16))) =
+unsigned short sc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
-unsigned short sb[N] __attribute__ ((__aligned__(16))) =
+unsigned short sb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
-unsigned char cc[N] __attribute__ ((__aligned__(16))) =
+unsigned char cc[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
-unsigned char cb[N] __attribute__ ((__aligned__(16))) =
+unsigned char cb[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) =
{0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45};
__attribute__ ((noinline))
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c
index 80604321b98..6114b5b8836 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-7.c
@@ -9,9 +9,9 @@
#define DOT1 43680
#define DOT2 -20832
-signed short X[N] __attribute__ ((__aligned__(16)));
-signed short Y[N] __attribute__ ((__aligned__(16)));
-unsigned char CX[N] __attribute__ ((__aligned__(16)));
+signed short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+unsigned char CX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
__attribute__ ((noinline)) void
foo1(int len) {
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c
index 6a71298a59f..25e442f5251 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-8.c
@@ -5,9 +5,9 @@
#define N 64
-unsigned char uX[N] __attribute__ ((__aligned__(16)));
+unsigned char uX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
unsigned char uresultX[N];
-unsigned int uY[N] __attribute__ ((__aligned__(16)));
+unsigned int uY[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
unsigned short uresultY[N];
/* Unsigned type demotion (si->hi) */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c b/gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c
index 4ac2d0c1a90..54dd25dc70a 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-multitypes-9.c
@@ -5,9 +5,9 @@
#define N 64
-unsigned char uX[N] __attribute__ ((__aligned__(16)));
+unsigned char uX[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
unsigned short uresult[N];
-signed char X[N] __attribute__ ((__aligned__(16)));
+signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
short result[N];
/* Unsigned type promotion (qi->hi) */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-1.c b/gcc/testsuite/gcc.dg/vect/vect-outer-1.c
index f1892488603..f0df5d4cd9d 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-1.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-1.c
@@ -1,9 +1,9 @@
/* { dg-do compile } */
#define N 64
-signed short image[N][N] __attribute__ ((__aligned__(16)));
-signed short block[N][N] __attribute__ ((__aligned__(16)));
-signed short out[N] __attribute__ ((__aligned__(16)));
+signed short image[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed short block[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed short out[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
/* Can't do outer-loop vectorization because of non-consecutive access. */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c b/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c
index 2d903937f91..3d237b78e72 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-1a.c
@@ -1,8 +1,8 @@
/* { dg-do compile } */
#define N 64
-signed short image[N][N] __attribute__ ((__aligned__(16)));
-signed short block[N][N] __attribute__ ((__aligned__(16)));
+signed short image[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed short block[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
/* Can't do outer-loop vectorization because of non-consecutive access.
Currently fails to vectorize because the reduction pattern is not
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-2.c b/gcc/testsuite/gcc.dg/vect/vect-outer-2.c
index 604c35a0c1a..38701977bc6 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-2.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-2.c
@@ -4,7 +4,7 @@
#include "tree-vect.h"
#define N 40
-float image[N][N] __attribute__ ((__aligned__(16)));
+float image[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float out[N];
/* Outer-loop vectorization. */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-2a.c b/gcc/testsuite/gcc.dg/vect/vect-outer-2a.c
index aee79735e36..b8d0e51fee5 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-2a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-2a.c
@@ -4,7 +4,7 @@
#include "tree-vect.h"
#define N 40
-float image[N][N][N] __attribute__ ((__aligned__(16)));
+float image[N][N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
__attribute__ ((noinline)) void
foo (){
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c b/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c
index 9d9fb5cb52d..df2e6a7b129 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-2b.c
@@ -3,7 +3,7 @@
#include "tree-vect.h"
#define N 40
-float image[2*N][N][N] __attribute__ ((__aligned__(16)));
+float image[2*N][N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
__attribute__ ((noinline)) void
foo (){
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-2c.c b/gcc/testsuite/gcc.dg/vect/vect-outer-2c.c
index da3748dc223..0ca868637ad 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-2c.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-2c.c
@@ -4,7 +4,7 @@
#include "tree-vect.h"
#define N 40
-float image[2*N][2*N][N] __attribute__ ((__aligned__(16)));
+float image[2*N][2*N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
__attribute__ ((noinline)) void
foo (){
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-2d.c b/gcc/testsuite/gcc.dg/vect/vect-outer-2d.c
index af19867050e..3e19d47b315 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-2d.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-2d.c
@@ -3,7 +3,7 @@
#include "tree-vect.h"
#define N 40
-float image[N][N][N+1] __attribute__ ((__aligned__(16)));
+float image[N][N][N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
__attribute__ ((noinline)) void
foo (){
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-3.c b/gcc/testsuite/gcc.dg/vect/vect-outer-3.c
index 5f7a802f164..924700c5840 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-3.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-3.c
@@ -3,7 +3,7 @@
#include "tree-vect.h"
#define N 40
-float image[N][N] __attribute__ ((__aligned__(16)));
+float image[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float out[N];
/* Outer-loop vectoriation. */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c b/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c
index beade07c241..4b5107dcf4e 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-3a.c
@@ -3,7 +3,7 @@
#include "tree-vect.h"
#define N 40
-float image[N][N+1] __attribute__ ((__aligned__(16)));
+float image[N][N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float out[N];
/* Outer-loop vectorization with misaliged accesses in the inner-loop. */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c b/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c
index a0ff0906ce2..f11cb751ca4 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-3b.c
@@ -3,7 +3,7 @@
#include "tree-vect.h"
#define N 40
-float image[N][N] __attribute__ ((__aligned__(16)));
+float image[N][N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float out[N];
/* Outer-loop vectorization with non-consecutive access. Not vectorized yet. */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-3c.c b/gcc/testsuite/gcc.dg/vect/vect-outer-3c.c
index 149823a5ef8..599137ba12e 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-3c.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-3c.c
@@ -3,7 +3,7 @@
#include "tree-vect.h"
#define N 40
-float image[N][N+1] __attribute__ ((__aligned__(16)));
+float image[N][N+1] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float out[N];
/* Outer-loop vectorization. */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-5.c b/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
index 28dce1b94af..2fc421e9680 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-5.c
@@ -13,10 +13,10 @@ extern void abort(void);
__attribute__ ((noinline))
int main1 ()
{
- float A[N] __attribute__ ((__aligned__(16)));
- float B[N] __attribute__ ((__aligned__(16)));
- float C[N] __attribute__ ((__aligned__(16)));
- float D[N] __attribute__ ((__aligned__(16)));
+ float A[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float B[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float C[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+ float D[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
float E[4] = {0,1,2,480};
float s;
diff --git a/gcc/testsuite/gcc.dg/vect/vect-outer-6.c b/gcc/testsuite/gcc.dg/vect/vect-outer-6.c
index c83943a5a59..572f433cf50 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-outer-6.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-outer-6.c
@@ -7,10 +7,10 @@
#define N 64
#define MAX 42
-float A[N] __attribute__ ((__aligned__(16)));
-float B[N] __attribute__ ((__aligned__(16)));
-float C[N] __attribute__ ((__aligned__(16)));
-float D[N] __attribute__ ((__aligned__(16)));
+float A[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+float B[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+float C[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+float D[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
extern void abort(void);
__attribute__ ((noinline))
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c
index b768c6c8590..61517066ef0 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c
@@ -6,8 +6,8 @@
#define N 64
#define DOT 43680
-signed short X[N] __attribute__ ((__aligned__(16)));
-signed short Y[N] __attribute__ ((__aligned__(16)));
+signed short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
/* short->int->int dot product.
Detected as a dot-product pattern.
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c
index 587800c032a..3459a30a03e 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c
@@ -7,8 +7,8 @@
#define DOT 43680
-signed short X[N] __attribute__ ((__aligned__(16)));
-signed short Y[N] __attribute__ ((__aligned__(16)));
+signed short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
/* short->short->int dot product. Should be vectorized on architectures
supporting vectorized multiplication of two short args with short result,
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c
index 66ca021a57a..95a4cdd88f3 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8a.c
@@ -7,8 +7,8 @@
#define DOT1 43680
-signed char X[N] __attribute__ ((__aligned__(16)));
-signed char Y[N] __attribute__ ((__aligned__(16)));
+signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
/* char->short->int dot product.
The dot-product pattern should be detected.
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
index 8db7797045b..ba24af26a03 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
@@ -7,8 +7,8 @@
#define DOT2 -21856
-signed char X[N] __attribute__ ((__aligned__(16)));
-signed char Y[N] __attribute__ ((__aligned__(16)));
+signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
/* char->short->short dot product.
The dot-product pattern should be detected.
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c
index 80377bae9a4..758886ef8ad 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s8c.c
@@ -7,8 +7,8 @@
#define DOT3 43680
-signed char X[N] __attribute__ ((__aligned__(16)));
-signed char Y[N] __attribute__ ((__aligned__(16)));
+signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
/* char->int->int dot product.
Not detected as a dot-product pattern. */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c
index eb89ac779e7..c09750d4454 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16a.c
@@ -8,8 +8,8 @@
#define DOT1 43680
#define DOT2 43680
-unsigned short X[N] __attribute__ ((__aligned__(16)));
-unsigned short Y[N] __attribute__ ((__aligned__(16)));
+unsigned short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+unsigned short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
/* short->short->int dot product.
Not detected as a dot-product pattern.
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c
index 270a3f420de..1a198218147 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u16b.c
@@ -7,8 +7,8 @@
#define DOT2 43680
-unsigned short X[N] __attribute__ ((__aligned__(16)));
-unsigned short Y[N] __attribute__ ((__aligned__(16)));
+unsigned short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+unsigned short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
/* short->int->int dot product.
Currently not detected as a dot-product pattern: the multiplication
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c
index 1934deb40d1..d856754c902 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8a.c
@@ -7,8 +7,8 @@
#define DOT 43680
-unsigned char X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
-unsigned char Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
+unsigned char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+unsigned char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
/* char->short->int dot product.
Detected as a dot-product pattern.
diff --git a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c
index 3266d1ca0b5..01c82b52c54 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-reduc-dot-u8b.c
@@ -7,8 +7,8 @@
#define DOT 43680
-unsigned char X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
-unsigned char Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
+unsigned char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+unsigned char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
/* char->short->short dot product.
Detected as a dot-product pattern.
diff --git a/gcc/testsuite/gcc.dg/vect/vect-shift-2.c b/gcc/testsuite/gcc.dg/vect/vect-shift-2.c
new file mode 100644
index 00000000000..93e1154fb42
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/vect-shift-2.c
@@ -0,0 +1,189 @@
+/* { dg-require-effective-target vect_shift } */
+/* { dg-require-effective-target vect_int } */
+/* Check the standard integer types for left and right shifts to see if the
+ compiler replaced a scalar instruction with a vector instruction whether the
+ correct value is generated. */
+
+#ifdef TRACE
+#include <stdio.h>
+#endif
+
+#include <stdarg.h>
+#include "tree-vect.h"
+
+#ifndef ALIGN
+#define ALIGN __attribute__((__aligned__(__BIGGEST_ALIGNMENT__)))
+#endif
+
+#ifndef NOINLINE
+#define NOINLINE __attribute__((__noinline__))
+#endif
+
+#ifdef TRACE
+#define TRACE_FUNC(PREFIX, NAME) printf (#PREFIX #NAME "\n")
+#define TRACE_DONE() printf ("done!\n")
+#define TRACE_ABORT(I,E,G) \
+do { \
+ printf ("Element %d, expected 0x%lx, got 0x%lx\n", \
+ I, (long)(E), (long)(G)); \
+ abort (); \
+} while (0)
+
+#else
+#define TRACE_FUNC(PREFIX, A)
+#define TRACE_DONE()
+#define TRACE_ABORT(I,E,G) abort ()
+#endif
+
+#define NAME(A,B) A ## B
+
+#define VECT_TESTS(PREFIX, TYPE, N) \
+ /* Restrict the optimizer from optimizing the setup loops. */ \
+volatile TYPE NAME (PREFIX, zero) = 0; \
+ \
+TYPE NAME (PREFIX, a)[N] ALIGN; \
+TYPE NAME (PREFIX, b)[N] ALIGN; \
+TYPE NAME (PREFIX, c)[N] ALIGN; \
+TYPE NAME (PREFIX, d)[N] ALIGN; \
+ \
+static void NOINLINE \
+NAME (PREFIX, lshift_2) (void) \
+{ \
+ int i; \
+ \
+ TRACE_FUNC (PREFIX, lshift_2); \
+ for (i = 0; i < N; i++) \
+ NAME (PREFIX, a)[i] = NAME (PREFIX, b)[i] << 2; \
+} \
+ \
+static void NOINLINE \
+NAME (PREFIX, lshift_var) (int shift) \
+{ \
+ int i; \
+ \
+ TRACE_FUNC (PREFIX, lshift_var); \
+ for (i = 0; i < N; i++) \
+ NAME (PREFIX, a)[i] = NAME (PREFIX, b)[i] << shift; \
+} \
+ \
+static void NOINLINE \
+NAME (PREFIX, lshift_vect) (void) \
+{ \
+ int i; \
+ \
+ TRACE_FUNC (PREFIX, lshift_vect); \
+ for (i = 0; i < N; i++) \
+ NAME (PREFIX, a)[i] = NAME (PREFIX, b)[i] << NAME (PREFIX, c)[i]; \
+} \
+ \
+static void NOINLINE \
+NAME (PREFIX, rshift_2) (void) \
+{ \
+ int i; \
+ \
+ TRACE_FUNC (PREFIX, rshift_2); \
+ for (i = 0; i < N; i++) \
+ NAME (PREFIX, a)[i] = NAME (PREFIX, b)[i] >> 2; \
+} \
+ \
+static void NOINLINE \
+NAME (PREFIX, rshift_var) (int shift) \
+{ \
+ int i; \
+ \
+ TRACE_FUNC (PREFIX, rshift_var); \
+ for (i = 0; i < N; i++) \
+ NAME (PREFIX, a)[i] = NAME (PREFIX, b)[i] >> shift; \
+} \
+ \
+static void NOINLINE \
+NAME (PREFIX, rshift_vect) (void) \
+{ \
+ int i; \
+ \
+ TRACE_FUNC (PREFIX, rshift_vect); \
+ for (i = 0; i < N; i++) \
+ NAME (PREFIX, a)[i] = NAME (PREFIX, b)[i] >> NAME (PREFIX, c)[i]; \
+} \
+ \
+static void NOINLINE \
+NAME (PREFIX, check) (void) \
+{ \
+ int i; \
+ \
+ TRACE_FUNC (PREFIX, check); \
+ for (i = 0; i < N; i++) \
+ if (NAME (PREFIX, a)[i] != NAME (PREFIX, d)[i]) \
+ TRACE_ABORT (i, NAME (PREFIX, d)[i], NAME (PREFIX, a)[i]); \
+} \
+ \
+static void NOINLINE \
+NAME (PREFIX, tests) (void) \
+{ \
+ int i; \
+ \
+ TRACE_FUNC (PREFIX, tests); \
+ for (i = 0; i < N; i++) \
+ { \
+ NAME (PREFIX, b)[i] = (i + NAME (PREFIX, zero)); \
+ NAME (PREFIX, c)[i] = 2; \
+ NAME (PREFIX, d)[i] = (i + NAME (PREFIX, zero)) << 2; \
+ } \
+ \
+ NAME (PREFIX, lshift_2) (); \
+ NAME (PREFIX, check) (); \
+ \
+ NAME (PREFIX, lshift_var) (2); \
+ NAME (PREFIX, check) (); \
+ \
+ NAME (PREFIX, lshift_vect) (); \
+ NAME (PREFIX, check) (); \
+ \
+ for (i = 0; i < N; i++) \
+ { \
+ NAME (PREFIX, b)[i] = ((i + NAME (PREFIX, zero)) << 4) \
+ | (((TYPE)0x80) << ((sizeof (TYPE) * 8) - 8)); \
+ NAME (PREFIX, c)[i] = 2; \
+ NAME (PREFIX, d)[i] = (TYPE)((NAME (PREFIX, b)[i] \
+ + NAME (PREFIX, zero)) >> 2); \
+ } \
+ \
+ NAME (PREFIX, rshift_2) (); \
+ NAME (PREFIX, check) (); \
+ \
+ NAME (PREFIX, rshift_var) (2); \
+ NAME (PREFIX, check) (); \
+ \
+ NAME (PREFIX, rshift_vect) (); \
+ NAME (PREFIX, check) (); \
+}
+
+VECT_TESTS(uc_, unsigned char, 16)
+VECT_TESTS(us_, unsigned short, 32)
+VECT_TESTS(ui_, unsigned int, 32)
+VECT_TESTS(ul_, unsigned long, 32)
+
+VECT_TESTS(sc_, signed char, 16)
+VECT_TESTS(ss_, short, 32)
+VECT_TESTS(si_, int, 32)
+VECT_TESTS(sl_, long, 32)
+
+int main ()
+{
+ int i;
+
+ check_vect ();
+
+ uc_tests ();
+ us_tests ();
+ ui_tests ();
+ ul_tests ();
+
+ sc_tests ();
+ ss_tests ();
+ si_tests ();
+ sl_tests ();
+
+ TRACE_DONE ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s16.c b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s16.c
index e63373b2c34..aeb065262a6 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s16.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s16.c
@@ -5,8 +5,8 @@
#define N 64
-short X[N] __attribute__ ((__aligned__(16)));
-short Y[N] __attribute__ ((__aligned__(16)));
+short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
int result[N];
/* short->int widening-mult */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s8.c b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s8.c
index 8f79e22711d..7578352c341 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s8.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-s8.c
@@ -5,8 +5,8 @@
#define N 64
-signed char X[N] __attribute__ ((__aligned__(16)));
-signed char Y[N] __attribute__ ((__aligned__(16)));
+signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
short result[N];
/* char->short widening-mult */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c
index 3aa0ff10dfe..9b98c19a160 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u16.c
@@ -5,8 +5,8 @@
#define N 64
-unsigned short X[N] __attribute__ ((__aligned__(16)));
-unsigned short Y[N] __attribute__ ((__aligned__(16)));
+unsigned short X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+unsigned short Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
unsigned int result[N];
/* short->int widening-mult */
diff --git a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c
index 63bd00227d7..1658f7b5a29 100644
--- a/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c
+++ b/gcc/testsuite/gcc.dg/vect/vect-widen-mult-u8.c
@@ -5,8 +5,8 @@
#define N 64
-unsigned char X[N] __attribute__ ((__aligned__(16)));
-unsigned char Y[N] __attribute__ ((__aligned__(16)));
+unsigned char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
+unsigned char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__)));
unsigned short result[N];
/* char->short widening-mult */
diff --git a/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c b/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c
index 7fc00e21a79..68caa8bd1dd 100644
--- a/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c
+++ b/gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-dot-s8b.c
@@ -7,8 +7,8 @@
#define DOT -21856
-signed char X[N] __attribute__ ((__aligned__(16))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
-signed char Y[N] __attribute__ ((__aligned__(16))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
+signed char X[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
+signed char Y[N] __attribute__ ((__aligned__(__BIGGEST_ALIGNMENT__))) = {64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1};
/* char->short->short dot product.
The dot-product pattern should be detected.
diff --git a/gcc/testsuite/gfortran.dg/array_constructor_31.f90 b/gcc/testsuite/gfortran.dg/array_constructor_31.f90
new file mode 100644
index 00000000000..02936340ffc
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/array_constructor_31.f90
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! Test the fix for pr40018 in which the elements in the array
+! constructor would be of default type and this would cause an
+! ICE in the backend because of the type mistmatch with 'i'.
+!
+! Contributed by Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+!
+ integer(kind=8) :: i
+ write(*,*) [(i, i = 1, 10)]
+ end
diff --git a/gcc/testsuite/gfortran.dg/chmod_1.f90 b/gcc/testsuite/gfortran.dg/chmod_1.f90
index 1c7907e8f35..07760cf1245 100644
--- a/gcc/testsuite/gfortran.dg/chmod_1.f90
+++ b/gcc/testsuite/gfortran.dg/chmod_1.f90
@@ -1,5 +1,6 @@
-! { dg-do run { target { ! { *-*-mingw* spu-*-* } } } }
+! { dg-do run { target { ! { *-*-mingw* *-*-cygwin* spu-*-* } } } }
! { dg-options "-std=gnu" }
+! See PR38956. Test fails on cygwin when user has Administrator rights
implicit none
character(len=*), parameter :: n = "foobar_file"
integer :: i
diff --git a/gcc/testsuite/gfortran.dg/chmod_2.f90 b/gcc/testsuite/gfortran.dg/chmod_2.f90
index b43c60f9b92..3e5ed617be4 100644
--- a/gcc/testsuite/gfortran.dg/chmod_2.f90
+++ b/gcc/testsuite/gfortran.dg/chmod_2.f90
@@ -1,5 +1,6 @@
-! { dg-do run { target { ! { *-*-mingw* spu-*-* } } } }
+! { dg-do run { target { ! { *-*-mingw* *-*-cygwin* spu-*-* } } } }
! { dg-options "-std=gnu" }
+! See PR38956. Test fails on cygwin when user has Administrator rights
implicit none
character(len=*), parameter :: n = "foobar_file"
integer :: i
diff --git a/gcc/testsuite/gfortran.dg/chmod_3.f90 b/gcc/testsuite/gfortran.dg/chmod_3.f90
index c97af6d4692..9e92ecabccd 100644
--- a/gcc/testsuite/gfortran.dg/chmod_3.f90
+++ b/gcc/testsuite/gfortran.dg/chmod_3.f90
@@ -1,5 +1,6 @@
-! { dg-do run { target { ! { *-*-mingw* spu-*-* } } } }
+! { dg-do run { target { ! { *-*-mingw* *-*-cygwin* spu-*-* } } } }
! { dg-options "-std=gnu -fdefault-integer-8" }
+! See PR38956. Test fails on cygwin when user has Administrator rights
implicit none
character(len=*), parameter :: n = "foobar_file"
integer :: i
diff --git a/gcc/testsuite/gfortran.dg/dependency_23.f90 b/gcc/testsuite/gfortran.dg/dependency_23.f90
index bdb17115a11..447d626c533 100644
--- a/gcc/testsuite/gfortran.dg/dependency_23.f90
+++ b/gcc/testsuite/gfortran.dg/dependency_23.f90
@@ -52,5 +52,6 @@ end module rg0045_stuff
use rg0045_stuff
call rg0045(1, 2, 3)
end
+! { dg-final { cleanup-modules "rg0045_stuff" } }
diff --git a/gcc/testsuite/gfortran.dg/dependency_24.f90 b/gcc/testsuite/gfortran.dg/dependency_24.f90
new file mode 100644
index 00000000000..9645f207538
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/dependency_24.f90
@@ -0,0 +1,81 @@
+! { dg-do run }
+! Check the fix for PR38863 comment #1, where defined assignment
+! to derived types was not treating components correctly that were
+! not set explicitly.
+!
+! Contributed by Mikael Morin <mikael@gcc.gnu.org>
+!
+module m
+ type t
+ integer :: i,j
+ end type t
+ type ti
+ integer :: i,j = 99
+ end type ti
+ interface assignment (=)
+ module procedure i_to_t, i_to_ti
+ end interface
+contains
+ elemental subroutine i_to_ti (p, q)
+ type(ti), intent(out) :: p
+ integer, intent(in) :: q
+ p%i = q
+ end subroutine
+ elemental subroutine i_to_t (p, q)
+ type(t), intent(out) :: p
+ integer, intent(in) :: q
+ p%i = q
+ end subroutine
+end module
+
+ use m
+ call test_t ! Check original problem
+ call test_ti ! Default initializers were treated wrongly
+contains
+ subroutine test_t
+ type(t), target :: a(3)
+ type(t), target :: b(3)
+ type(t), dimension(:), pointer :: p
+ logical :: l(3)
+
+ a%i = 1
+ a%j = [101, 102, 103]
+ b%i = 3
+ b%j = 4
+
+ p => b
+ l = .true.
+
+ where (l)
+ a = p%i ! Comment #1 of PR38863 concerned WHERE assignment
+ end where
+ if (any (a%j .ne. [101, 102, 103])) call abort
+
+ a = p%i ! Ordinary assignment was wrong too.
+ if (any (a%j .ne. [101, 102, 103])) call abort
+ end subroutine
+
+ subroutine test_ti
+ type(ti), target :: a(3)
+ type(ti), target :: b(3)
+ type(ti), dimension(:), pointer :: p
+ logical :: l(3)
+
+ a%i = 1
+ a%j = [101, 102, 103]
+ b%i = 3
+ b%j = 4
+
+ p => b
+ l = .true.
+
+ where (l)
+ a = p%i
+ end where
+ if (any (a%j .ne. 99)) call abort
+
+ a = p%i
+ if (any (a%j .ne. 99)) call abort
+ end subroutine
+end
+! { dg-final { cleanup-modules "m" } }
diff --git a/gcc/testsuite/gfortran.dg/intrinsic_3.f90 b/gcc/testsuite/gfortran.dg/intrinsic_3.f90
new file mode 100644
index 00000000000..fcd40e94bbb
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/intrinsic_3.f90
@@ -0,0 +1,40 @@
+! { dg-do compile }
+! { dg-options "-std=f95" }
+!
+! PR 39876: module procedure name that collides with the GNU intrinsic
+!
+! Contributed by Alexei Matveev <alexei.matveev+gcc@gmail.com>
+
+module p
+ implicit none
+
+ contains
+
+ subroutine test()
+ implicit none
+ print *, avg(erfc)
+ end subroutine test
+
+ function avg(f)
+ implicit none
+ double precision :: avg
+ interface
+ double precision function f(x)
+ implicit none
+ double precision, intent(in) :: x
+ end function f
+ end interface
+ avg = ( f(1.0D0) + f(2.0D0) ) / 2
+ end function avg
+
+ function erfc(x)
+ implicit none
+ double precision, intent(in) :: x
+ double precision :: erfc
+ erfc = x
+ end function erfc
+
+end module p
+
+! { dg-final { cleanup-modules "p" } }
+
diff --git a/gcc/testsuite/gfortran.dg/open_errors.f90 b/gcc/testsuite/gfortran.dg/open_errors.f90
index 729cc6a4fef..d6f1e430526 100644
--- a/gcc/testsuite/gfortran.dg/open_errors.f90
+++ b/gcc/testsuite/gfortran.dg/open_errors.f90
@@ -1,6 +1,7 @@
-! { dg-do run { target { ! { *-*-mingw* spu-*-* } } } }
+! { dg-do run { target { ! { *-*-mingw* *-*-cygwin* spu-*-* } } } }
! PR30005 Enhanced error messages for OPEN
! Submitted by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+! See PR38956. Test fails on cygwin when user has Administrator rights
character(60) :: msg
character(25) :: n = "temptestfile"
logical :: there
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 1b850faca84..68dc6a3bcfa 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -908,17 +908,45 @@ emit_debug_global_declarations (tree *vec, int len)
/* Warn about a use of an identifier which was marked deprecated. */
void
-warn_deprecated_use (tree node)
+warn_deprecated_use (tree node, tree attr)
{
+ const char *msg;
+
if (node == 0 || !warn_deprecated_decl)
return;
+ if (!attr)
+ {
+ if (DECL_P (node))
+ attr = DECL_ATTRIBUTES (node);
+ else if (TYPE_P (node))
+ {
+ tree decl = TYPE_STUB_DECL (node);
+ if (decl)
+ attr = lookup_attribute ("deprecated",
+ TYPE_ATTRIBUTES (TREE_TYPE (decl)));
+ }
+ }
+
+ if (attr)
+ attr = lookup_attribute ("deprecated", attr);
+
+ if (attr)
+ msg = TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr)));
+ else
+ msg = NULL;
+
if (DECL_P (node))
{
expanded_location xloc = expand_location (DECL_SOURCE_LOCATION (node));
- warning (OPT_Wdeprecated_declarations,
- "%qD is deprecated (declared at %s:%d)",
- node, xloc.file, xloc.line);
+ if (msg)
+ warning (OPT_Wdeprecated_declarations,
+ "%qD is deprecated (declared at %s:%d): %s",
+ node, xloc.file, xloc.line, msg);
+ else
+ warning (OPT_Wdeprecated_declarations,
+ "%qD is deprecated (declared at %s:%d)",
+ node, xloc.file, xloc.line);
}
else if (TYPE_P (node))
{
@@ -939,20 +967,46 @@ warn_deprecated_use (tree node)
expanded_location xloc
= expand_location (DECL_SOURCE_LOCATION (decl));
if (what)
- warning (OPT_Wdeprecated_declarations,
- "%qE is deprecated (declared at %s:%d)", what,
- xloc.file, xloc.line);
+ {
+ if (msg)
+ warning (OPT_Wdeprecated_declarations,
+ "%qE is deprecated (declared at %s:%d): %s",
+ what, xloc.file, xloc.line, msg);
+ else
+ warning (OPT_Wdeprecated_declarations,
+ "%qE is deprecated (declared at %s:%d)", what,
+ xloc.file, xloc.line);
+ }
else
- warning (OPT_Wdeprecated_declarations,
- "type is deprecated (declared at %s:%d)",
- xloc.file, xloc.line);
+ {
+ if (msg)
+ warning (OPT_Wdeprecated_declarations,
+ "type is deprecated (declared at %s:%d): %s",
+ xloc.file, xloc.line, msg);
+ else
+ warning (OPT_Wdeprecated_declarations,
+ "type is deprecated (declared at %s:%d)",
+ xloc.file, xloc.line);
+ }
}
else
{
if (what)
- warning (OPT_Wdeprecated_declarations, "%qE is deprecated", what);
+ {
+ if (msg)
+ warning (OPT_Wdeprecated_declarations, "%qE is deprecated: %s",
+ what, msg);
+ else
+ warning (OPT_Wdeprecated_declarations, "%qE is deprecated", what);
+ }
else
- warning (OPT_Wdeprecated_declarations, "type is deprecated");
+ {
+ if (msg)
+ warning (OPT_Wdeprecated_declarations, "type is deprecated: %s",
+ msg);
+ else
+ warning (OPT_Wdeprecated_declarations, "type is deprecated");
+ }
}
}
}
diff --git a/gcc/toplev.h b/gcc/toplev.h
index 28f5d0c4b17..08a89eab034 100644
--- a/gcc/toplev.h
+++ b/gcc/toplev.h
@@ -83,7 +83,7 @@ extern void announce_function (tree);
extern void error_for_asm (const_rtx, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
extern void warning_for_asm (const_rtx, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
-extern void warn_deprecated_use (tree);
+extern void warn_deprecated_use (tree, tree);
extern bool parse_optimize_options (tree, bool);
#ifdef BUFSIZ
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index b5c67cd8a08..077f9d602d7 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -7074,7 +7074,7 @@ struct gimple_opt_pass pass_split_crit_edges =
PROP_no_crit_edges, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_dump_func /* todo_flags_finish */
+ TODO_dump_func | TODO_verify_flow /* todo_flags_finish */
}
};
diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c
index 7dbc63ab12d..2835220c206 100644
--- a/gcc/tree-complex.c
+++ b/gcc/tree-complex.c
@@ -99,7 +99,10 @@ some_nonzerop (tree t)
{
int zerop = false;
- if (TREE_CODE (t) == REAL_CST)
+ /* Operations with real or imaginary part of a complex number zero
+ cannot be treated the same as operations with a real or imaginary
+ operand if we care about the signs of zeros in the result. */
+ if (TREE_CODE (t) == REAL_CST && !flag_signed_zeros)
zerop = REAL_VALUES_IDENTICAL (TREE_REAL_CST (t), dconst0);
else if (TREE_CODE (t) == FIXED_CST)
zerop = fixed_zerop (t);
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index 80014e11292..204bf7e336b 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -344,6 +344,26 @@ outside_finally_tree (treemple start, gimple target)
The eh region creation is straight-forward, but frobbing all the gotos
and such into shape isn't. */
+/* The GOTO_QUEUE is is an array of GIMPLE_GOTO and GIMPLE_RETURN
+ statements that are seen to escape this GIMPLE_TRY_FINALLY node.
+ The idea is to record a gimple statement for everything except for
+ the conditionals, which get their labels recorded. Since labels are
+ of type 'tree', we need this node to store both gimple and tree
+ objects. REPL_STMT is the sequence used to replace the goto/return
+ statement. CONT_STMT is used to store the statement that allows
+ the return/goto to jump to the original destination. */
+
+struct goto_queue_node
+{
+ treemple stmt;
+ gimple_seq repl_stmt;
+ gimple cont_stmt;
+ int index;
+ /* This is used when index >= 0 to indicate that stmt is a label (as
+ opposed to a goto stmt). */
+ int is_label;
+};
+
/* State of the world while lowering. */
struct leh_state
@@ -352,7 +372,6 @@ struct leh_state
correspond to variables of the same name in cfun->eh, which we
don't have easy access to. */
struct eh_region *cur_region;
- struct eh_region *prev_try;
/* Processing of TRY_FINALLY requires a bit more state. This is
split out into a separate structure so that we don't have to
@@ -378,23 +397,8 @@ struct leh_tf_state
/* The exception region created for it. */
struct eh_region *region;
- /* The GOTO_QUEUE is is an array of GIMPLE_GOTO and GIMPLE_RETURN statements
- that are seen to escape this GIMPLE_TRY_FINALLY node.
- The idea is to record a gimple statement for everything except for
- the conditionals, which get their labels recorded. Since labels are of
- type 'tree', we need this node to store both gimple and tree objects.
- REPL_STMT is the sequence used to replace the goto/return statement.
- CONT_STMT is used to store the statement that allows the return/goto to
- jump to the original destination. */
- struct goto_queue_node {
- treemple stmt;
- gimple_seq repl_stmt;
- gimple cont_stmt;
- int index;
- /* this is used when index >= 0 to indicate that stmt is a label(as
- opposed to a goto stmt) */
- int is_label;
- } *goto_queue;
+ /* The goto queue. */
+ struct goto_queue_node *goto_queue;
size_t goto_queue_size;
size_t goto_queue_active;
@@ -1566,12 +1570,11 @@ lower_try_finally (struct leh_state *state, gimple tp)
this_tf.outer = state;
if (using_eh_for_cleanups_p)
this_tf.region
- = gen_eh_region_cleanup (state->cur_region, state->prev_try);
+ = gen_eh_region_cleanup (state->cur_region);
else
this_tf.region = NULL;
this_state.cur_region = this_tf.region;
- this_state.prev_try = state->prev_try;
this_state.tf = &this_tf;
lower_eh_constructs_1 (&this_state, gimple_try_eval(tp));
@@ -1650,7 +1653,6 @@ lower_catch (struct leh_state *state, gimple tp)
try_region = gen_eh_region_try (state->cur_region);
this_state.cur_region = try_region;
- this_state.prev_try = try_region;
this_state.tf = state->tf;
lower_eh_constructs_1 (&this_state, gimple_try_eval (tp));
@@ -1672,7 +1674,6 @@ lower_catch (struct leh_state *state, gimple tp)
gimple_catch_types (gcatch));
this_state.cur_region = catch_region;
- this_state.prev_try = state->prev_try;
lower_eh_constructs_1 (&this_state, gimple_catch_handler (gcatch));
eh_label = create_artificial_label ();
@@ -1719,10 +1720,6 @@ lower_eh_filter (struct leh_state *state, gimple tp)
gimple_eh_filter_types (inner));
this_state = *state;
this_state.cur_region = this_region;
- /* For must not throw regions any cleanup regions inside it
- can't reach outer catch regions. */
- if (gimple_eh_filter_must_not_throw (inner))
- this_state.prev_try = NULL;
lower_eh_constructs_1 (&this_state, gimple_try_eval (tp));
@@ -1759,7 +1756,7 @@ lower_cleanup (struct leh_state *state, gimple tp)
return result;
}
- this_region = gen_eh_region_cleanup (state->cur_region, state->prev_try);
+ this_region = gen_eh_region_cleanup (state->cur_region);
this_state = *state;
this_state.cur_region = this_region;
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index b134ae53d15..752766b6c7b 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
#include "params.h"
#include "input.h"
#include "insn-config.h"
-#include "varray.h"
#include "hashtab.h"
#include "langhooks.h"
#include "basic-block.h"
@@ -133,6 +132,7 @@ static tree copy_decl_to_var (tree, copy_body_data *);
static tree copy_result_decl_to_var (tree, copy_body_data *);
static tree copy_decl_maybe_to_var (tree, copy_body_data *);
static gimple remap_gimple_stmt (gimple, copy_body_data *);
+static bool delete_unreachable_blocks_update_callgraph (copy_body_data *id);
/* Insert a tree->tree mapping for ID. Despite the name suggests
that the trees should be variables, it is used for more than that. */
@@ -1393,6 +1393,8 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
need to process all of them. */
do
{
+ tree fn;
+
stmt = gsi_stmt (copy_gsi);
if (is_gimple_call (stmt)
&& gimple_call_va_arg_pack_p (stmt)
@@ -1481,34 +1483,24 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
callgraph edges and update or duplicate them. */
if (is_gimple_call (stmt))
{
- struct cgraph_node *node;
- struct cgraph_edge *edge;
+ struct cgraph_edge *edge = cgraph_edge (id->src_node, orig_stmt);
int flags;
switch (id->transform_call_graph_edges)
{
case CB_CGE_DUPLICATE:
- edge = cgraph_edge (id->src_node, orig_stmt);
- if (edge)
+ if (edge)
cgraph_clone_edge (edge, id->dst_node, stmt,
REG_BR_PROB_BASE, 1,
edge->frequency, true);
break;
case CB_CGE_MOVE_CLONES:
- for (node = id->dst_node->next_clone;
- node;
- node = node->next_clone)
- {
- edge = cgraph_edge (node, orig_stmt);
- if (edge)
- cgraph_set_call_stmt (edge, stmt);
- }
- /* FALLTHRU */
+ cgraph_set_call_stmt_including_clones (id->dst_node, orig_stmt, stmt);
+ break;
case CB_CGE_MOVE:
- edge = cgraph_edge (id->dst_node, orig_stmt);
- if (edge)
+ if (edge)
cgraph_set_call_stmt (edge, stmt);
break;
@@ -1516,6 +1508,37 @@ copy_bb (copy_body_data *id, basic_block bb, int frequency_scale,
gcc_unreachable ();
}
+ /* Constant propagation on argument done during inlining
+ may create new direct call. Produce an edge for it. */
+ if (!edge && is_gimple_call (stmt)
+ && (fn = gimple_call_fndecl (stmt)) != NULL
+ && !cgraph_edge (id->dst_node, stmt))
+ {
+ struct cgraph_node *dest = cgraph_node (fn);
+
+ /* We have missing edge in the callgraph. This can happen in one case
+ where previous inlining turned indirect call into direct call by
+ constant propagating arguments. In all other cases we hit a bug
+ (incorrect node sharing is most common reason for missing edges. */
+ gcc_assert (dest->needed || !dest->analyzed);
+ if (id->transform_call_graph_edges == CB_CGE_MOVE_CLONES)
+ cgraph_create_edge_including_clones (id->dst_node, dest, stmt,
+ bb->count,
+ compute_call_stmt_bb_frequency (id->dst_node->decl, bb),
+ bb->loop_depth,
+ CIF_ORIGINALLY_INDIRECT_CALL);
+ else
+ cgraph_create_edge (id->dst_node, dest, stmt,
+ bb->count, CGRAPH_FREQ_BASE,
+ bb->loop_depth)->inline_failed
+ = CIF_ORIGINALLY_INDIRECT_CALL;
+ if (dump_file)
+ {
+ fprintf (dump_file, "Created new direct edge to %s",
+ cgraph_node_name (dest));
+ }
+ }
+
flags = gimple_call_flags (stmt);
if (flags & ECF_MAY_BE_ALLOCA)
@@ -2746,6 +2769,8 @@ estimate_move_cost (tree type)
{
HOST_WIDE_INT size;
+ gcc_assert (!VOID_TYPE_P (type));
+
size = int_size_in_bytes (type);
if (size < 0 || size > MOVE_MAX_PIECES * MOVE_RATIO (!optimize_size))
@@ -2991,20 +3016,24 @@ estimate_num_insns (gimple stmt, eni_weights *weights)
{
tree arg;
for (arg = DECL_ARGUMENTS (decl); arg; arg = TREE_CHAIN (arg))
- cost += estimate_move_cost (TREE_TYPE (arg));
+ if (!VOID_TYPE_P (TREE_TYPE (arg)))
+ cost += estimate_move_cost (TREE_TYPE (arg));
}
else if (funtype && prototype_p (funtype))
{
tree t;
- for (t = TYPE_ARG_TYPES (funtype); t; t = TREE_CHAIN (t))
- cost += estimate_move_cost (TREE_VALUE (t));
+ for (t = TYPE_ARG_TYPES (funtype); t && t != void_list_node;
+ t = TREE_CHAIN (t))
+ if (!VOID_TYPE_P (TREE_VALUE (t)))
+ cost += estimate_move_cost (TREE_VALUE (t));
}
else
{
for (i = 0; i < gimple_call_num_args (stmt); i++)
{
tree arg = gimple_call_arg (stmt, i);
- cost += estimate_move_cost (TREE_TYPE (arg));
+ if (!VOID_TYPE_P (TREE_TYPE (arg)))
+ cost += estimate_move_cost (TREE_TYPE (arg));
}
}
@@ -3221,29 +3250,6 @@ expand_call_inline (basic_block bb, gimple stmt, copy_body_data *id)
cg_edge = cgraph_edge (id->dst_node, stmt);
- /* Constant propagation on argument done during previous inlining
- may create new direct call. Produce an edge for it. */
- if (!cg_edge)
- {
- struct cgraph_node *dest = cgraph_node (fn);
-
- /* We have missing edge in the callgraph. This can happen in one case
- where previous inlining turned indirect call into direct call by
- constant propagating arguments. In all other cases we hit a bug
- (incorrect node sharing is most common reason for missing edges. */
- gcc_assert (dest->needed);
- cgraph_create_edge (id->dst_node, dest, stmt,
- bb->count, CGRAPH_FREQ_BASE,
- bb->loop_depth)->inline_failed
- = CIF_ORIGINALLY_INDIRECT_CALL;
- if (dump_file)
- {
- fprintf (dump_file, "Created new direct edge to %s",
- cgraph_node_name (dest));
- }
- goto egress;
- }
-
/* Don't try to inline functions that are not well-suited to
inlining. */
if (!cgraph_inline_p (cg_edge, &reason))
@@ -3544,6 +3550,7 @@ fold_marked_statements (int first, struct pointer_set_t *statements)
if (pointer_set_contains (statements, gsi_stmt (gsi)))
{
gimple old_stmt = gsi_stmt (gsi);
+ tree old_decl = is_gimple_call (old_stmt) ? gimple_call_fndecl (old_stmt) : 0;
if (fold_stmt (&gsi))
{
@@ -3552,8 +3559,9 @@ fold_marked_statements (int first, struct pointer_set_t *statements)
gimple new_stmt = gsi_stmt (gsi);
update_stmt (new_stmt);
- if (is_gimple_call (old_stmt))
- cgraph_update_edges_for_call_stmt (old_stmt, new_stmt);
+ if (is_gimple_call (old_stmt)
+ || is_gimple_call (new_stmt))
+ cgraph_update_edges_for_call_stmt (old_stmt, old_decl, new_stmt);
if (maybe_clean_or_replace_eh_stmt (old_stmt, new_stmt))
gimple_purge_dead_eh_edges (BASIC_BLOCK (first));
@@ -3656,6 +3664,10 @@ optimize_inline_calls (tree fn)
number_blocks (fn);
fold_cond_expr_cond ();
+ delete_unreachable_blocks_update_callgraph (&id);
+#ifdef ENABLE_CHECKING
+ verify_cgraph_node (id.dst_node);
+#endif
/* It would be nice to check SSA/CFG/statement consistency here, but it is
not possible yet - the IPA passes might make various functions to not
@@ -4281,27 +4293,98 @@ tree_versionable_function_p (tree fndecl)
return true;
}
-/* Create a new name for omp child function. Returns an identifier. */
-
-static GTY(()) unsigned int clone_fn_id_num;
+/* Delete all unreachable basic blocks and update callgraph.
+ Doing so is somewhat nontrivial because we need to update all clones and
+ remove inline function that become unreachable. */
-static tree
-clone_function_name (tree decl)
+static bool
+delete_unreachable_blocks_update_callgraph (copy_body_data *id)
{
- tree name = DECL_ASSEMBLER_NAME (decl);
- size_t len = IDENTIFIER_LENGTH (name);
- char *tmp_name, *prefix;
-
- prefix = XALLOCAVEC (char, len + strlen ("_clone") + 1);
- memcpy (prefix, IDENTIFIER_POINTER (name), len);
- strcpy (prefix + len, "_clone");
-#ifndef NO_DOT_IN_LABEL
- prefix[len] = '.';
-#elif !defined NO_DOLLAR_IN_LABEL
- prefix[len] = '$';
+ bool changed = false;
+ basic_block b, next_bb;
+
+ find_unreachable_blocks ();
+
+ /* Delete all unreachable basic blocks. */
+
+ for (b = ENTRY_BLOCK_PTR->next_bb; b != EXIT_BLOCK_PTR; b = next_bb)
+ {
+ next_bb = b->next_bb;
+
+ if (!(b->flags & BB_REACHABLE))
+ {
+ gimple_stmt_iterator bsi;
+
+ for (bsi = gsi_start_bb (b); !gsi_end_p (bsi); gsi_next (&bsi))
+ if (gimple_code (gsi_stmt (bsi)) == GIMPLE_CALL)
+ {
+ struct cgraph_edge *e;
+ struct cgraph_node *node;
+
+ if ((e = cgraph_edge (id->dst_node, gsi_stmt (bsi))) != NULL)
+ {
+ if (!e->inline_failed)
+ cgraph_remove_node_and_inline_clones (e->callee);
+ else
+ cgraph_remove_edge (e);
+ }
+ if (id->transform_call_graph_edges == CB_CGE_MOVE_CLONES
+ && id->dst_node->clones)
+ for (node = id->dst_node->clones; node != id->dst_node;)
+ {
+ if ((e = cgraph_edge (node, gsi_stmt (bsi))) != NULL)
+ {
+ if (!e->inline_failed)
+ cgraph_remove_node_and_inline_clones (e->callee);
+ else
+ cgraph_remove_edge (e);
+ }
+
+ if (node->clones)
+ node = node->clones;
+ else if (node->next_sibling_clone)
+ node = node->next_sibling_clone;
+ else
+ {
+ while (node != id->dst_node && !node->next_sibling_clone)
+ node = node->clone_of;
+ if (node != id->dst_node)
+ node = node->next_sibling_clone;
+ }
+ }
+ }
+ delete_basic_block (b);
+ changed = true;
+ }
+ }
+
+ if (changed)
+ tidy_fallthru_edges ();
+#ifdef ENABLE_CHECKING0
+ verify_cgraph_node (id->dst_node);
+ if (id->transform_call_graph_edges == CB_CGE_MOVE_CLONES
+ && id->dst_node->clones)
+ {
+ struct cgraph_node *node;
+ for (node = id->dst_node->clones; node != id->dst_node;)
+ {
+ verify_cgraph_node (node);
+
+ if (node->clones)
+ node = node->clones;
+ else if (node->next_sibling_clone)
+ node = node->next_sibling_clone;
+ else
+ {
+ while (node != id->dst_node && !node->next_sibling_clone)
+ node = node->clone_of;
+ if (node != id->dst_node)
+ node = node->next_sibling_clone;
+ }
+ }
+ }
#endif
- ASM_FORMAT_PRIVATE_NAME (tmp_name, prefix, clone_fn_id_num++);
- return get_identifier (tmp_name);
+ return changed;
}
/* Create a copy of a function's tree.
@@ -4313,7 +4396,7 @@ clone_function_name (tree decl)
trees. If UPDATE_CLONES is set, the call_stmt fields
of edges of clones of the function will be updated. */
void
-tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map,
+tree_function_versioning (tree old_decl, tree new_decl, VEC(ipa_replace_map_p,gc)* tree_map,
bool update_clones, bitmap args_to_skip)
{
struct cgraph_node *old_version_node;
@@ -4349,13 +4432,7 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map,
memset (&id, 0, sizeof (id));
/* Generate a new name for the new version. */
- if (!update_clones)
- {
- DECL_NAME (new_decl) = clone_function_name (old_decl);
- SET_DECL_ASSEMBLER_NAME (new_decl, DECL_NAME (new_decl));
- SET_DECL_RTL (new_decl, NULL_RTX);
- id.statements_to_fold = pointer_set_create ();
- }
+ id.statements_to_fold = pointer_set_create ();
id.decl_map = pointer_map_create ();
id.src_fn = old_decl;
@@ -4388,11 +4465,10 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map,
/* If there's a tree_map, prepare for substitution. */
if (tree_map)
- for (i = 0; i < VARRAY_ACTIVE_SIZE (tree_map); i++)
+ for (i = 0; i < VEC_length (ipa_replace_map_p, tree_map); i++)
{
gimple init;
- replace_info
- = (struct ipa_replace_map *) VARRAY_GENERIC_PTR (tree_map, i);
+ replace_info = VEC_index (ipa_replace_map_p, tree_map, i);
if (replace_info->replace_p)
{
tree op = replace_info->new_tree;
@@ -4431,6 +4507,7 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map,
number_blocks (id.dst_fn);
declare_inline_vars (DECL_INITIAL (new_decl), vars);
+
if (DECL_STRUCT_FUNCTION (old_decl)->local_decls != NULL_TREE)
/* Add local vars. */
for (t_step = DECL_STRUCT_FUNCTION (old_decl)->local_decls;
@@ -4469,14 +4546,15 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map,
pointer_map_destroy (id.decl_map);
free_dominance_info (CDI_DOMINATORS);
free_dominance_info (CDI_POST_DOMINATORS);
- if (!update_clones)
- {
- fold_marked_statements (0, id.statements_to_fold);
- pointer_set_destroy (id.statements_to_fold);
- fold_cond_expr_cond ();
- delete_unreachable_blocks ();
- update_ssa (TODO_update_ssa);
- }
+
+ fold_marked_statements (0, id.statements_to_fold);
+ pointer_set_destroy (id.statements_to_fold);
+ fold_cond_expr_cond ();
+ delete_unreachable_blocks_update_callgraph (&id);
+ update_ssa (TODO_update_ssa);
+ free_dominance_info (CDI_DOMINATORS);
+ free_dominance_info (CDI_POST_DOMINATORS);
+
VEC_free (gimple, heap, init_stmts);
pop_cfun ();
current_function_decl = old_current_function_decl;
@@ -4544,5 +4622,3 @@ tree_can_inline_p (tree caller, tree callee)
/* Allow the backend to decide if inlining is ok. */
return targetm.target_option.can_inline_p (caller, callee);
}
-
-#include "gt-tree-inline.h"
diff --git a/gcc/tree-inline.h b/gcc/tree-inline.h
index 2a4e38b1657..1214c95dd0b 100644
--- a/gcc/tree-inline.h
+++ b/gcc/tree-inline.h
@@ -1,5 +1,6 @@
/* Tree inlining hooks and declarations.
- Copyright 2001, 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+ Copyright 2001, 2003, 2004, 2005, 2007, 2008, 2009
+ Free Software Foundation, Inc.
Contributed by Alexandre Oliva <aoliva@redhat.com>
This file is part of GCC.
@@ -21,10 +22,20 @@ along with GCC; see the file COPYING3. If not see
#ifndef GCC_TREE_INLINE_H
#define GCC_TREE_INLINE_H
-#include "varray.h"
#include "pointer-set.h"
+/* Indicate the desired behavior wrt call graph edges. We can either
+ duplicate the edge (inlining, cloning), move the edge (versioning,
+ parallelization), or move the edges of the clones (saving). */
+
+enum copy_body_cge_which
+{
+ CB_CGE_DUPLICATE,
+ CB_CGE_MOVE,
+ CB_CGE_MOVE_CLONES
+};
+
/* Data required for function body duplication. */
typedef struct copy_body_data
@@ -76,14 +87,8 @@ typedef struct copy_body_data
than enumerating the different cases, we categorize the behavior
in the various situations. */
- /* Indicate the desired behavior wrt call graph edges. We can either
- duplicate the edge (inlining, cloning), move the edge (versioning,
- parallelization), or move the edges of the clones (saving). */
- enum copy_body_cge_which {
- CB_CGE_DUPLICATE,
- CB_CGE_MOVE,
- CB_CGE_MOVE_CLONES
- } transform_call_graph_edges;
+ /* What to do with call graph edges. */
+ enum copy_body_cge_which transform_call_graph_edges;
/* True if a new CFG should be created. False for inlining, true for
everything else. */
@@ -156,7 +161,6 @@ int estimate_num_insns (gimple, eni_weights *);
int estimate_num_insns_fn (tree, eni_weights *);
int count_insns_seq (gimple_seq, eni_weights *);
bool tree_versionable_function_p (tree);
-void tree_function_versioning (tree, tree, varray_type, bool, bitmap);
bool tree_can_inline_p (tree, tree);
extern gimple_seq remap_gimple_seq (gimple_seq, copy_body_data *);
diff --git a/gcc/tree-pass.h b/gcc/tree-pass.h
index 8ce7c3ae81b..464de5e0cdb 100644
--- a/gcc/tree-pass.h
+++ b/gcc/tree-pass.h
@@ -94,17 +94,22 @@ extern const char *dump_file_name;
/* Return the dump_file_info for the given phase. */
extern struct dump_file_info *get_dump_file_info (int);
+/* Optimization pass type. */
+enum opt_pass_type
+{
+ GIMPLE_PASS,
+ RTL_PASS,
+ SIMPLE_IPA_PASS,
+ IPA_PASS
+};
+
/* Describe one pass; this is the common part shared across different pass
types. */
struct opt_pass
{
/* Optimization pass type. */
- enum opt_pass_type {
- GIMPLE_PASS,
- RTL_PASS,
- SIMPLE_IPA_PASS,
- IPA_PASS
- } type;
+ enum opt_pass_type type;
+
/* Terse name of the pass used as a fragment of the dump file
name. If the name starts with a star, no dump happens. */
const char *name;
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index c8cbe1d4351..d9d31eee79b 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -2767,6 +2767,7 @@ maybe_init_pretty_print (FILE *file)
{
pp_construct (&buffer, /* prefix */NULL, /* line-width */0);
pp_needs_newline (&buffer) = true;
+ pp_translate_identifiers (&buffer) = false;
initialized = 1;
}
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c
index 2d31f9f534c..b3990c6bfe1 100644
--- a/gcc/tree-scalar-evolution.c
+++ b/gcc/tree-scalar-evolution.c
@@ -1319,11 +1319,7 @@ follow_ssa_edge_in_condition_phi (struct loop *loop,
*evolution_of_loop = evolution_of_branch;
- /* If the phi node is just a copy, do not increase the limit. */
n = gimple_phi_num_args (condition_phi);
- if (n > 1)
- limit++;
-
for (i = 1; i < n; i++)
{
/* Quickly give up when the evolution of one of the branches is
@@ -1331,10 +1327,12 @@ follow_ssa_edge_in_condition_phi (struct loop *loop,
if (*evolution_of_loop == chrec_dont_know)
return t_true;
+ /* Increase the limit by the PHI argument number to avoid exponential
+ time and memory complexity. */
res = follow_ssa_edge_in_condition_phi_branch (i, loop, condition_phi,
halting_phi,
&evolution_of_branch,
- init, limit);
+ init, limit + i);
if (res == t_false || res == t_dont_know)
return res;
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index ff8a7399459..626a253d152 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -270,6 +270,10 @@ sra_type_can_be_decomposed_p (tree type)
!= TYPE_PRECISION (TREE_TYPE (t))))
goto fail;
+ /* And volatile fields. */
+ if (TREE_THIS_VOLATILE (t))
+ goto fail;
+
saw_one_field = true;
}
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 0ab9883887c..06d51e2d318 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -1974,11 +1974,20 @@ vectorizable_operation (gimple stmt, gimple_stmt_iterator *gsi,
else
{
optab = optab_for_tree_code (code, vectype, optab_vector);
- if (vect_print_dump_info (REPORT_DETAILS)
- && optab
+ if (optab
&& (optab_handler (optab, TYPE_MODE (vectype))->insn_code
!= CODE_FOR_nothing))
- fprintf (vect_dump, "vector/vector shift/rotate found.");
+ {
+ if (vect_print_dump_info (REPORT_DETAILS))
+ fprintf (vect_dump, "vector/vector shift/rotate found.");
+
+ /* Unlike the other binary operators, shifts/rotates have
+ the rhs being int, instead of the same type as the lhs,
+ so make sure the scalar is the right type if we are
+ dealing with vectors of short/char. */
+ if (dt[1] == vect_constant_def)
+ op1 = fold_convert (TREE_TYPE (vectype), op1);
+ }
}
}
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index a541b69211c..4e21b581121 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -1,3 +1,25 @@
+2009-05-10 Joseph Myers <joseph@codesourcery.com>
+
+ * include/cpplib.h (enum cpp_token_fld_kind): Add
+ CPP_TOKEN_FLD_TOKEN_NO.
+ (struct cpp_macro_arg, struct cpp_identifier): Define.
+ (union cpp_token_u): Use struct cpp_identifier for identifiers.
+ Use struct cpp_macro_arg for macro arguments. Add token_no for
+ CPP_PASTE token numbers.
+ * directives.c (_cpp_handle_directive, lex_macro_node, do_pragma,
+ do_pragma_poison, parse_assertion): Use val.node.node in place of
+ val.node.
+ * expr.c (parse_defined, eval_token): Use val.node.node in place
+ of val.node.
+ * lex.c (cpp_ideq, _cpp_lex_direct, cpp_token_len,
+ cpp_spell_token, cpp_output_token, _cpp_equiv_tokens,
+ cpp_token_val_index): Use val.macro_arg.arg_no or val.token_no in
+ place of val.arg_no. Use val.node.node in place of val.node.
+ * macro.c (replace_args, cpp_get_token, parse_params,
+ lex_expansion_token, create_iso_definition, cpp_macro_definition):
+ Use val.macro_arg.arg_no or val.token_no in place of val.arg_no.
+ Use val.node.node in place of val.node.
+
2009-05-03 Joseph Myers <joseph@codesourcery.com>
* charset.c (one_utf8_to_cppchar): Correct mask used for 5-byte
diff --git a/libcpp/directives.c b/libcpp/directives.c
index c2e71016f24..e71efb2bd94 100644
--- a/libcpp/directives.c
+++ b/libcpp/directives.c
@@ -408,8 +408,8 @@ _cpp_handle_directive (cpp_reader *pfile, int indented)
if (dname->type == CPP_NAME)
{
- if (dname->val.node->is_directive)
- dir = &dtable[dname->val.node->directive_index];
+ if (dname->val.node.node->is_directive)
+ dir = &dtable[dname->val.node.node->directive_index];
}
/* We do not recognize the # followed by a number extension in
assembler code. */
@@ -538,7 +538,7 @@ lex_macro_node (cpp_reader *pfile, bool is_def_or_undef)
if (token->type == CPP_NAME)
{
- cpp_hashnode *node = token->val.node;
+ cpp_hashnode *node = token->val.node.node;
if (is_def_or_undef && node == pfile->spec_nodes.n_defined)
cpp_error (pfile, CPP_DL_ERROR,
@@ -549,7 +549,7 @@ lex_macro_node (cpp_reader *pfile, bool is_def_or_undef)
else if (token->flags & NAMED_OP)
cpp_error (pfile, CPP_DL_ERROR,
"\"%s\" cannot be used as a macro name as it is an operator in C++",
- NODE_NAME (token->val.node));
+ NODE_NAME (token->val.node.node));
else if (token->type == CPP_EOF)
cpp_error (pfile, CPP_DL_ERROR, "no macro name given in #%s directive",
pfile->directive->name);
@@ -1329,7 +1329,7 @@ do_pragma (cpp_reader *pfile)
ns_token = *token;
if (token->type == CPP_NAME)
{
- p = lookup_pragma_entry (pfile->pragmas, token->val.node);
+ p = lookup_pragma_entry (pfile->pragmas, token->val.node.node);
if (p && p->is_nspace)
{
bool allow_name_expansion = p->allow_expansion;
@@ -1337,7 +1337,7 @@ do_pragma (cpp_reader *pfile)
pfile->state.prevent_expansion--;
token = cpp_get_token (pfile);
if (token->type == CPP_NAME)
- p = lookup_pragma_entry (p->u.space, token->val.node);
+ p = lookup_pragma_entry (p->u.space, token->val.node.node);
else
p = NULL;
if (allow_name_expansion)
@@ -1429,7 +1429,7 @@ do_pragma_poison (cpp_reader *pfile)
break;
}
- hp = tok->val.node;
+ hp = tok->val.node.node;
if (hp->flags & NODE_POISONED)
continue;
@@ -1986,12 +1986,12 @@ parse_assertion (cpp_reader *pfile, struct answer **answerp, int type)
cpp_error (pfile, CPP_DL_ERROR, "predicate must be an identifier");
else if (parse_answer (pfile, answerp, type) == 0)
{
- unsigned int len = NODE_LEN (predicate->val.node);
+ unsigned int len = NODE_LEN (predicate->val.node.node);
unsigned char *sym = (unsigned char *) alloca (len + 1);
/* Prefix '#' to get it out of macro namespace. */
sym[0] = '#';
- memcpy (sym + 1, NODE_NAME (predicate->val.node), len);
+ memcpy (sym + 1, NODE_NAME (predicate->val.node.node), len);
result = cpp_lookup (pfile, sym, len + 1);
}
diff --git a/libcpp/expr.c b/libcpp/expr.c
index ecedb96c672..6887b165690 100644
--- a/libcpp/expr.c
+++ b/libcpp/expr.c
@@ -651,7 +651,7 @@ parse_defined (cpp_reader *pfile)
if (token->type == CPP_NAME)
{
- node = token->val.node;
+ node = token->val.node.node;
if (paren && cpp_get_token (pfile)->type != CPP_CLOSE_PAREN)
{
cpp_error (pfile, CPP_DL_ERROR, "missing ')' after \"defined\"");
@@ -771,14 +771,14 @@ eval_token (cpp_reader *pfile, const cpp_token *token)
break;
case CPP_NAME:
- if (token->val.node == pfile->spec_nodes.n_defined)
+ if (token->val.node.node == pfile->spec_nodes.n_defined)
return parse_defined (pfile);
else if (CPP_OPTION (pfile, cplusplus)
- && (token->val.node == pfile->spec_nodes.n_true
- || token->val.node == pfile->spec_nodes.n_false))
+ && (token->val.node.node == pfile->spec_nodes.n_true
+ || token->val.node.node == pfile->spec_nodes.n_false))
{
result.high = 0;
- result.low = (token->val.node == pfile->spec_nodes.n_true);
+ result.low = (token->val.node.node == pfile->spec_nodes.n_true);
}
else
{
@@ -786,7 +786,7 @@ eval_token (cpp_reader *pfile, const cpp_token *token)
result.low = 0;
if (CPP_OPTION (pfile, warn_undef) && !pfile->state.skip_eval)
cpp_error (pfile, CPP_DL_WARNING, "\"%s\" is not defined",
- NODE_NAME (token->val.node));
+ NODE_NAME (token->val.node.node));
}
break;
diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
index 80e905686fc..83439c7341f 100644
--- a/libcpp/include/cpplib.h
+++ b/libcpp/include/cpplib.h
@@ -189,10 +189,27 @@ enum cpp_token_fld_kind {
CPP_TOKEN_FLD_SOURCE,
CPP_TOKEN_FLD_STR,
CPP_TOKEN_FLD_ARG_NO,
+ CPP_TOKEN_FLD_TOKEN_NO,
CPP_TOKEN_FLD_PRAGMA,
CPP_TOKEN_FLD_NONE
};
+/* A macro argument in the cpp_token union. */
+struct GTY(()) cpp_macro_arg {
+ /* Argument number. */
+ unsigned int arg_no;
+};
+
+/* An identifier in the cpp_token union. */
+struct GTY(()) cpp_identifier {
+ /* The canonical (UTF-8) spelling of the identifier. */
+ cpp_hashnode *
+ GTY ((nested_ptr (union tree_node,
+ "%h ? CPP_HASHNODE (GCC_IDENT_TO_HT_IDENT (%h)) : NULL",
+ "%h ? HT_IDENT_TO_GCC_IDENT (HT_NODE (%h)) : NULL")))
+ node;
+};
+
/* A preprocessing token. This has been carefully packed and should
occupy 16 bytes on 32-bit hosts and 24 bytes on 64-bit hosts. */
struct GTY(()) cpp_token {
@@ -203,12 +220,7 @@ struct GTY(()) cpp_token {
union cpp_token_u
{
/* An identifier. */
- cpp_hashnode *
- GTY ((nested_ptr (union tree_node,
- "%h ? CPP_HASHNODE (GCC_IDENT_TO_HT_IDENT (%h)) : NULL",
- "%h ? HT_IDENT_TO_GCC_IDENT (HT_NODE (%h)) : NULL"),
- tag ("CPP_TOKEN_FLD_NODE")))
- node;
+ struct cpp_identifier GTY ((tag ("CPP_TOKEN_FLD_NODE"))) node;
/* Inherit padding from this token. */
cpp_token * GTY ((tag ("CPP_TOKEN_FLD_SOURCE"))) source;
@@ -217,7 +229,11 @@ struct GTY(()) cpp_token {
struct cpp_string GTY ((tag ("CPP_TOKEN_FLD_STR"))) str;
/* Argument no. for a CPP_MACRO_ARG. */
- unsigned int GTY ((tag ("CPP_TOKEN_FLD_ARG_NO"))) arg_no;
+ struct cpp_macro_arg GTY ((tag ("CPP_TOKEN_FLD_ARG_NO"))) macro_arg;
+
+ /* Original token no. for a CPP_PASTE (from a sequence of
+ consecutive paste tokens in a macro expansion). */
+ unsigned int GTY ((tag ("CPP_TOKEN_FLD_TOKEN_NO"))) token_no;
/* Caller-supplied identifier for a CPP_PRAGMA. */
unsigned int GTY ((tag ("CPP_TOKEN_FLD_PRAGMA"))) pragma;
diff --git a/libcpp/lex.c b/libcpp/lex.c
index af5c06a7abc..ca2f2ca06f1 100644
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -76,7 +76,7 @@ cpp_ideq (const cpp_token *token, const char *string)
if (token->type != CPP_NAME)
return 0;
- return !ustrcmp (NODE_NAME (token->val.node), (const uchar *) string);
+ return !ustrcmp (NODE_NAME (token->val.node.node), (const uchar *) string);
}
/* Record a note TYPE at byte POS into the current cleaned logical
@@ -1120,16 +1120,16 @@ _cpp_lex_direct (cpp_reader *pfile)
result->type = CPP_NAME;
{
struct normalize_state nst = INITIAL_NORMALIZE_STATE;
- result->val.node = lex_identifier (pfile, buffer->cur - 1, false,
- &nst);
+ result->val.node.node = lex_identifier (pfile, buffer->cur - 1, false,
+ &nst);
warn_about_normalization (pfile, result, &nst);
}
/* Convert named operators to their proper types. */
- if (result->val.node->flags & NODE_OPERATOR)
+ if (result->val.node.node->flags & NODE_OPERATOR)
{
result->flags |= NAMED_OP;
- result->type = (enum cpp_ttype) result->val.node->directive_index;
+ result->type = (enum cpp_ttype) result->val.node.node->directive_index;
}
break;
@@ -1244,7 +1244,7 @@ _cpp_lex_direct (cpp_reader *pfile)
result->flags |= DIGRAPH;
result->type = CPP_HASH;
if (*buffer->cur == '%' && buffer->cur[1] == ':')
- buffer->cur += 2, result->type = CPP_PASTE, result->val.arg_no = 0;
+ buffer->cur += 2, result->type = CPP_PASTE, result->val.token_no = 0;
}
else if (*buffer->cur == '>')
{
@@ -1325,7 +1325,7 @@ _cpp_lex_direct (cpp_reader *pfile)
case '=': IF_NEXT_IS ('=', CPP_EQ_EQ, CPP_EQ); break;
case '!': IF_NEXT_IS ('=', CPP_NOT_EQ, CPP_NOT); break;
case '^': IF_NEXT_IS ('=', CPP_XOR_EQ, CPP_XOR); break;
- case '#': IF_NEXT_IS ('#', CPP_PASTE, CPP_HASH); result->val.arg_no = 0; break;
+ case '#': IF_NEXT_IS ('#', CPP_PASTE, CPP_HASH); result->val.token_no = 0; break;
case '?': result->type = CPP_QUERY; break;
case '~': result->type = CPP_COMPL; break;
@@ -1350,7 +1350,7 @@ _cpp_lex_direct (cpp_reader *pfile)
if (forms_identifier_p (pfile, true, &nst))
{
result->type = CPP_NAME;
- result->val.node = lex_identifier (pfile, base, true, &nst);
+ result->val.node.node = lex_identifier (pfile, base, true, &nst);
warn_about_normalization (pfile, result, &nst);
break;
}
@@ -1376,7 +1376,7 @@ cpp_token_len (const cpp_token *token)
{
default: len = 6; break;
case SPELL_LITERAL: len = token->val.str.len; break;
- case SPELL_IDENT: len = NODE_LEN (token->val.node) * 10; break;
+ case SPELL_IDENT: len = NODE_LEN (token->val.node.node) * 10; break;
}
return len;
@@ -1457,23 +1457,23 @@ cpp_spell_token (cpp_reader *pfile, const cpp_token *token,
case SPELL_IDENT:
if (forstring)
{
- memcpy (buffer, NODE_NAME (token->val.node),
- NODE_LEN (token->val.node));
- buffer += NODE_LEN (token->val.node);
+ memcpy (buffer, NODE_NAME (token->val.node.node),
+ NODE_LEN (token->val.node.node));
+ buffer += NODE_LEN (token->val.node.node);
}
else
{
size_t i;
- const unsigned char * name = NODE_NAME (token->val.node);
+ const unsigned char * name = NODE_NAME (token->val.node.node);
- for (i = 0; i < NODE_LEN (token->val.node); i++)
+ for (i = 0; i < NODE_LEN (token->val.node.node); i++)
if (name[i] & ~0x7F)
{
i += utf8_to_ucn (buffer, name + i) - 1;
buffer += 10;
}
else
- *buffer++ = NODE_NAME (token->val.node)[i];
+ *buffer++ = NODE_NAME (token->val.node.node)[i];
}
break;
@@ -1550,9 +1550,9 @@ cpp_output_token (const cpp_token *token, FILE *fp)
case SPELL_IDENT:
{
size_t i;
- const unsigned char * name = NODE_NAME (token->val.node);
+ const unsigned char * name = NODE_NAME (token->val.node.node);
- for (i = 0; i < NODE_LEN (token->val.node); i++)
+ for (i = 0; i < NODE_LEN (token->val.node.node); i++)
if (name[i] & ~0x7F)
{
unsigned char buffer[10];
@@ -1560,7 +1560,7 @@ cpp_output_token (const cpp_token *token, FILE *fp)
fwrite (buffer, 1, 10, fp);
}
else
- fputc (NODE_NAME (token->val.node)[i], fp);
+ fputc (NODE_NAME (token->val.node.node)[i], fp);
}
break;
@@ -1583,13 +1583,14 @@ _cpp_equiv_tokens (const cpp_token *a, const cpp_token *b)
{
default: /* Keep compiler happy. */
case SPELL_OPERATOR:
- /* arg_no is used to track where multiple consecutive ##
+ /* token_no is used to track where multiple consecutive ##
tokens were originally located. */
- return (a->type != CPP_PASTE || a->val.arg_no == b->val.arg_no);
+ return (a->type != CPP_PASTE || a->val.token_no == b->val.token_no);
case SPELL_NONE:
- return (a->type != CPP_MACRO_ARG || a->val.arg_no == b->val.arg_no);
+ return (a->type != CPP_MACRO_ARG
+ || a->val.macro_arg.arg_no == b->val.macro_arg.arg_no);
case SPELL_IDENT:
- return a->val.node == b->val.node;
+ return a->val.node.node == b->val.node.node;
case SPELL_LITERAL:
return (a->val.str.len == b->val.str.len
&& !memcmp (a->val.str.text, b->val.str.text,
@@ -1901,7 +1902,7 @@ cpp_token_val_index (cpp_token *tok)
return CPP_TOKEN_FLD_STR;
case SPELL_OPERATOR:
if (tok->type == CPP_PASTE)
- return CPP_TOKEN_FLD_ARG_NO;
+ return CPP_TOKEN_FLD_TOKEN_NO;
else
return CPP_TOKEN_FLD_NONE;
case SPELL_NONE:
diff --git a/libcpp/macro.c b/libcpp/macro.c
index 36853971780..e051fbc7757 100644
--- a/libcpp/macro.c
+++ b/libcpp/macro.c
@@ -946,7 +946,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg
/* We have an argument. If it is not being stringified or
pasted it is macro-replaced before insertion. */
- arg = &args[src->val.arg_no - 1];
+ arg = &args[src->val.macro_arg.arg_no - 1];
if (src->flags & STRINGIFY_ARG)
{
@@ -982,7 +982,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg
}
paste_flag = 0;
- arg = &args[src->val.arg_no - 1];
+ arg = &args[src->val.macro_arg.arg_no - 1];
if (src->flags & STRINGIFY_ARG)
count = 1, from = &arg->stringified;
else if (src->flags & PASTE_LEFT)
@@ -994,7 +994,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg
{
if (dest[-1]->type == CPP_COMMA
&& macro->variadic
- && src->val.arg_no == macro->paramc)
+ && src->val.macro_arg.arg_no == macro->paramc)
{
/* Swallow a pasted comma if from == NULL, otherwise
drop the paste flag. */
@@ -1035,7 +1035,7 @@ replace_args (cpp_reader *pfile, cpp_hashnode *node, cpp_macro *macro, macro_arg
"empty macro arguments are undefined"
" in ISO C90 and ISO C++98",
NODE_NAME (node),
- src->val.arg_no);
+ src->val.macro_arg.arg_no);
}
/* Avoid paste on RHS (even case count == 0). */
@@ -1261,7 +1261,7 @@ cpp_get_token (cpp_reader *pfile)
if (result->type != CPP_NAME)
break;
- node = result->val.node;
+ node = result->val.node.node;
if (node->type != NT_MACRO || (result->flags & NO_EXPAND))
break;
@@ -1553,7 +1553,7 @@ parse_params (cpp_reader *pfile, cpp_macro *macro)
}
prev_ident = 1;
- if (_cpp_save_parameter (pfile, macro, token->val.node))
+ if (_cpp_save_parameter (pfile, macro, token->val.node.node))
return false;
continue;
@@ -1626,10 +1626,10 @@ lex_expansion_token (cpp_reader *pfile, cpp_macro *macro)
/* Is this a parameter? */
if (token->type == CPP_NAME
- && (token->val.node->flags & NODE_MACRO_ARG) != 0)
+ && (token->val.node.node->flags & NODE_MACRO_ARG) != 0)
{
token->type = CPP_MACRO_ARG;
- token->val.arg_no = token->val.node->value.arg_index;
+ token->val.macro_arg.arg_no = token->val.node.node->value.arg_index;
}
else if (CPP_WTRADITIONAL (pfile) && macro->paramc > 0
&& (token->type == CPP_STRING || token->type == CPP_CHAR))
@@ -1771,7 +1771,7 @@ create_iso_definition (cpp_reader *pfile, cpp_macro *macro)
{
macro->extra_tokens = 1;
num_extra_tokens++;
- token->val.arg_no = macro->count - 1;
+ token->val.token_no = macro->count - 1;
}
else
{
@@ -2007,7 +2007,7 @@ cpp_macro_definition (cpp_reader *pfile, const cpp_hashnode *node)
cpp_token *token = &macro->exp.tokens[i];
if (token->type == CPP_MACRO_ARG)
- len += NODE_LEN (macro->params[token->val.arg_no - 1]);
+ len += NODE_LEN (macro->params[token->val.macro_arg.arg_no - 1]);
else
len += cpp_token_len (token);
@@ -2079,9 +2079,9 @@ cpp_macro_definition (cpp_reader *pfile, const cpp_hashnode *node)
if (token->type == CPP_MACRO_ARG)
{
memcpy (buffer,
- NODE_NAME (macro->params[token->val.arg_no - 1]),
- NODE_LEN (macro->params[token->val.arg_no - 1]));
- buffer += NODE_LEN (macro->params[token->val.arg_no - 1]);
+ NODE_NAME (macro->params[token->val.macro_arg.arg_no - 1]),
+ NODE_LEN (macro->params[token->val.macro_arg.arg_no - 1]));
+ buffer += NODE_LEN (macro->params[token->val.macro_arg.arg_no - 1]);
}
else
buffer = cpp_spell_token (pfile, token, buffer, false);
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 8b2fb21704f..383527990dd 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2009-05-07 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR fortran/22423
+ * io/transfer.c (read_block_direct): Avoid warning.
+ * runtime/string.c (compare0): Avoid warning.
+
2009-04-30 Janne Blomqvist <jb@gcc.gnu.org>
PR libfortran/39667
@@ -32,25 +38,25 @@
2009-04-15 Danny Smith <dannysmith@clear.net.nz>
- * io/write.c (itoa) : Rename back to gfc_itoa.
- (write_i): Adjust call to write_decimal.
- (write_integer): Use gfc_itoa.
+ * io/write.c (itoa) : Rename back to gfc_itoa.
+ (write_i): Adjust call to write_decimal.
+ (write_integer): Use gfc_itoa.
2009-04-10 Janne Blomqvist <jb@gcc.gnu.org>
- * io/io.h (move_pos_offset): Remove prototype.
- * io/transfer.c (formatted_transfer_scalar_read): Use sseek
- instead of move_pos_offset.
- * io/unix.c (move_pos_offset): Remove.
+ * io/io.h (move_pos_offset): Remove prototype.
+ * io/transfer.c (formatted_transfer_scalar_read): Use sseek
+ instead of move_pos_offset.
+ * io/unix.c (move_pos_offset): Remove.
2009-04-10 Janne Blomqvist <jb@gcc.gnu.org>
PR libfortran/39665 libfortran/39702 libfortran/39709
* io/io.h (st_parameter_dt): Revert aligned attribute from u.p.value.
- * io/list_read.c (read_complex): Read directly into user pointer.
- (read_real): Likewise.
- (list_formatted_read_scalar): Update read_complex and read_real calls.
- (nml_read_obj): Read directly into user pointer.
+ * io/list_read.c (read_complex): Read directly into user pointer.
+ (read_real): Likewise.
+ (list_formatted_read_scalar): Update read_complex and read_real calls.
+ (nml_read_obj): Read directly into user pointer.
2009-04-09 Janne Blomqvist <jb@gcc.gnu.org>
@@ -686,43 +692,43 @@
2009-04-08 Janne Blomqvist <jb@gcc.gnu.org>
- * io/open.c (already_open): Test for POSIX close return value.
- * io/unit.c (close_unit_1): Likewise.
- * io/unix.c (raw_close): Return 0 for success for preconnected units.
+ * io/open.c (already_open): Test for POSIX close return value.
+ * io/unit.c (close_unit_1): Likewise.
+ * io/unix.c (raw_close): Return 0 for success for preconnected units.
2009-04-08 Janne Blomqvist <jb@gcc.gnu.org>
- * runtime/string.c (compare0): Use gfc_charlen_type.
- * runtime/error.c (gfc_itoa): Move to io/write.c
- (xtoa): Rename to gfc_xtoa.
- * runtime/backtrace.c (show_backtrace): Call gfc_xtoa.
- * intrinsics/cshift0.c (cshift0): Use index_type for shift arg.
- * intrinsics/date_and_time.c (date_and_time): Use index_type.
- (itime_i4): Likewise.
- (itime_i8): Likewise.
- (idate_i4): Likewise.
- (idate_i8): Likewise.
- (gmtime_i4): Likewise.
- (gmtime_i8): Likewise.
- (ltime_i4): Likewise.
- (ltime_i8): Likewise.
- * libgfortran.h (gfc_itoa): Remove prototype.
- (xtoa): Rename prototype to gfc_xtoa.
- * io/list_read.c (nml_read_obj): Use size_t for string length.
- * io/transfer.c (read_block_direct): Change nbytes arg from
- pointer to value.
- (unformatted_read): Minor cleanup, call read_block_directly properly.
- (skip_record): Use ssize_t.
- (next_record_w_unf): Avoid stell() call by calling sseek with SEEK_CUR.
- (iolength_transfer): Make sure to multiply before cast.
- * io/intrinsics.c (fgetc): Remove unnecessary variable.
- * io/format.c (format_hash): Use gfc_charlen_type.
- * io/write.c (itoa): Move from runtime/error.c:gfc_itoa, rename,
- make static.
- (write_i): Call with pointer to itoa.
- (write_z): Call with pointer to gfc_xtoa.
- (write_integer): Pointer to itoa.
- (nml_write_obj): Type cleanup, don't call strlen in loop.
+ * runtime/string.c (compare0): Use gfc_charlen_type.
+ * runtime/error.c (gfc_itoa): Move to io/write.c
+ (xtoa): Rename to gfc_xtoa.
+ * runtime/backtrace.c (show_backtrace): Call gfc_xtoa.
+ * intrinsics/cshift0.c (cshift0): Use index_type for shift arg.
+ * intrinsics/date_and_time.c (date_and_time): Use index_type.
+ (itime_i4): Likewise.
+ (itime_i8): Likewise.
+ (idate_i4): Likewise.
+ (idate_i8): Likewise.
+ (gmtime_i4): Likewise.
+ (gmtime_i8): Likewise.
+ (ltime_i4): Likewise.
+ (ltime_i8): Likewise.
+ * libgfortran.h (gfc_itoa): Remove prototype.
+ (xtoa): Rename prototype to gfc_xtoa.
+ * io/list_read.c (nml_read_obj): Use size_t for string length.
+ * io/transfer.c (read_block_direct): Change nbytes arg from
+ pointer to value.
+ (unformatted_read): Minor cleanup, call read_block_directly properly.
+ (skip_record): Use ssize_t.
+ (next_record_w_unf): Avoid stell() call by calling sseek with SEEK_CUR.
+ (iolength_transfer): Make sure to multiply before cast.
+ * io/intrinsics.c (fgetc): Remove unnecessary variable.
+ * io/format.c (format_hash): Use gfc_charlen_type.
+ * io/write.c (itoa): Move from runtime/error.c:gfc_itoa, rename,
+ make static.
+ (write_i): Call with pointer to itoa.
+ (write_z): Call with pointer to gfc_xtoa.
+ (write_integer): Pointer to itoa.
+ (nml_write_obj): Type cleanup, don't call strlen in loop.
2009-04-06 H.J. Lu <hongjiu.lu@intel.com>
diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c
index 27ae8994918..ea1ef7a44bf 100644
--- a/libgfortran/io/transfer.c
+++ b/libgfortran/io/transfer.c
@@ -465,7 +465,7 @@ read_block_direct (st_parameter_dt *dtp, void *buf, size_t nbytes)
/* Check whether we exceed the total record length. */
if (dtp->u.p.current_unit->flags.has_recl
- && (nbytes > dtp->u.p.current_unit->bytes_left))
+ && ((gfc_offset) nbytes > dtp->u.p.current_unit->bytes_left))
{
to_read_record = dtp->u.p.current_unit->bytes_left;
short_record = 1;
diff --git a/libgfortran/runtime/string.c b/libgfortran/runtime/string.c
index 5a81bd6d950..a102c3bd49a 100644
--- a/libgfortran/runtime/string.c
+++ b/libgfortran/runtime/string.c
@@ -36,7 +36,10 @@ compare0 (const char *s1, gfc_charlen_type s1_len, const char *s2)
/* Strip trailing blanks from the Fortran string. */
len = fstrlen (s1, s1_len);
- if (len != strlen(s2)) return 0; /* don't match */
+
+ if ((size_t) len != strlen(s2))
+ return 0; /* don't match */
+
return strncasecmp (s1, s2, len) == 0;
}
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index dd6ae6e93ba..45e0f2b6b39 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,21 @@
2009-05-07 Paolo Carlini <paolo.carlini@oracle.com>
+ * include/ext/throw_allocator.h: Remove redundante include.
+
+2009-05-07 Paolo Carlini <paolo.carlini@oracle.com>
+
+ * include/ext/throw_allocator.h (throw_allocator_base): Avoid
+ out of line member functions definitions.
+ (throw_allocator_base::_S_g, _S_map, _S_throw_prob, _S_label):
+ Remove, use static locals instead.
+ (throw_allocator_base::do_check_allocated, print_to_string): Declare.
+ * src/throw_allocator.cc: New.
+ * src/Makefile.am: Add.
+ * config/abi/pre/gnu.ver: Add exports.
+ * src/Makefile.in: Regenerate.
+
+2009-05-07 Paolo Carlini <paolo.carlini@oracle.com>
+
* configure.ac: Bump libtool_VERSION to 6:12:0.
* configure: Regenerate.
diff --git a/libstdc++-v3/config/abi/pre/gnu.ver b/libstdc++-v3/config/abi/pre/gnu.ver
index 240e7bcf09b..f40fd97ef38 100644
--- a/libstdc++-v3/config/abi/pre/gnu.ver
+++ b/libstdc++-v3/config/abi/pre/gnu.ver
@@ -964,6 +964,10 @@ GLIBCXX_3.4.12 {
_ZSt27__set_once_functor_lock_ptrPSt11unique_lockISt5mutexE;
_ZSt16__get_once_mutexv;
+ # throw_allocator
+ _ZN9__gnu_cxx20throw_allocator_base18do_check_allocated*;
+ _ZN9__gnu_cxx20throw_allocator_base15print_to_string*;
+
} GLIBCXX_3.4.11;
# Symbols in the support library (libsupc++) have their own tag.
diff --git a/libstdc++-v3/include/ext/throw_allocator.h b/libstdc++-v3/include/ext/throw_allocator.h
index 13030546943..21e235c1200 100644
--- a/libstdc++-v3/include/ext/throw_allocator.h
+++ b/libstdc++-v3/include/ext/throw_allocator.h
@@ -47,7 +47,6 @@
#include <cmath>
#include <ctime>
#include <map>
-#include <set>
#include <string>
#include <ostream>
#include <stdexcept>
@@ -64,13 +63,24 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
std::tr1::mt19937 _M_generator;
public:
- twister_rand_gen(unsigned int s = static_cast<unsigned int>(std::time(0)));
-
+ twister_rand_gen(unsigned int seed =
+ static_cast<unsigned int>(std::time(0)))
+ : _M_generator(seed) { }
+
void
- init(unsigned int);
-
+ init(unsigned int seed)
+ { _M_generator.seed(seed); }
+
double
- get_prob();
+ get_prob()
+ {
+ const double min = _M_generator.min();
+ const double res = static_cast<const double>(_M_generator() - min);
+ const double range = static_cast<const double>(_M_generator.max() - min);
+ const double ret = res / range;
+ _GLIBCXX_DEBUG_ASSERT(ret >= 0 && ret <= 1);
+ return ret;
+ }
};
/**
@@ -96,30 +106,40 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
{
public:
void
- init(unsigned long seed);
+ init(unsigned long seed)
+ { rand_gen().init(seed); }
static void
- set_throw_prob(double throw_prob);
+ set_throw_prob(double t_p)
+ { throw_prob() = t_p; }
static double
- get_throw_prob();
+ get_throw_prob()
+ { return throw_prob(); }
static void
- set_label(size_t l);
+ set_label(size_t l)
+ { label() = l; }
+
+ static size_t
+ get_label()
+ { return label(); }
static bool
- empty();
+ empty()
+ { return map().empty(); }
struct group_throw_prob_adjustor
{
- group_throw_prob_adjustor(size_t size) : _M_throw_prob_orig(_S_throw_prob)
+ group_throw_prob_adjustor(size_t size)
+ : _M_throw_prob_orig(get_throw_prob())
{
- _S_throw_prob =
- 1 - std::pow(double(1 - _S_throw_prob), double(0.5 / (size + 1)));
+ set_throw_prob(1 - std::pow(double(1 - get_throw_prob()),
+ double(0.5 / (size + 1))));
}
~group_throw_prob_adjustor()
- { _S_throw_prob = _M_throw_prob_orig; }
+ { set_throw_prob(_M_throw_prob_orig); }
private:
const double _M_throw_prob_orig;
@@ -127,11 +147,12 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
struct zero_throw_prob_adjustor
{
- zero_throw_prob_adjustor() : _M_throw_prob_orig(_S_throw_prob)
- { _S_throw_prob = 0; }
+ zero_throw_prob_adjustor()
+ : _M_throw_prob_orig(get_throw_prob())
+ { set_throw_prob(0); }
~zero_throw_prob_adjustor()
- { _S_throw_prob = _M_throw_prob_orig; }
+ { set_throw_prob(_M_throw_prob_orig); }
private:
const double _M_throw_prob_orig;
@@ -139,22 +160,43 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
protected:
static void
- insert(void*, size_t);
+ insert(void* p, size_t size)
+ {
+ const_iterator found_it = map().find(p);
+ if (found_it != map().end())
+ {
+ std::string error("throw_allocator_base::insert double insert!\n");
+ print_to_string(error, make_entry(p, size));
+ print_to_string(error, *found_it);
+ std::__throw_logic_error(error.c_str());
+ }
+ map().insert(make_entry(p, size));
+ }
static void
- erase(void*, size_t);
+ erase(void* p, size_t size)
+ {
+ check_allocated(p, size);
+ map().erase(p);
+ }
static void
- throw_conditionally();
+ throw_conditionally()
+ {
+ if (rand_gen().get_prob() < get_throw_prob())
+ __throw_forced_exception_error();
+ }
// See if a particular address and size has been allocated by this
// allocator.
static void
- check_allocated(void*, size_t);
+ check_allocated(void* p, size_t size)
+ { do_check_allocated(map().find(p), map().end(), p, size); }
// See if a given label has been allocated by this allocator.
static void
- check_allocated(size_t);
+ check_allocated(size_t label)
+ { do_check_allocated(map().begin(), map().end(), label); }
private:
typedef std::pair<size_t, size_t> alloc_data_type;
@@ -167,20 +209,59 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
operator<<(std::ostream&, const throw_allocator_base&);
static entry_type
- make_entry(void*, size_t);
+ make_entry(void* p, size_t size)
+ { return std::make_pair(p, alloc_data_type(get_label(), size)); }
+
+ static void
+ do_check_allocated(const_iterator, const_iterator, void*, size_t);
static void
- print_to_string(std::string&);
+ do_check_allocated(const_iterator, const_iterator, size_t);
static void
print_to_string(std::string&, const_reference);
- static twister_rand_gen _S_g;
- static map_type _S_map;
- static double _S_throw_prob;
- static size_t _S_label;
+ static map_type&
+ map()
+ {
+ static map_type mp;
+ return mp;
+ }
+
+ static twister_rand_gen&
+ rand_gen()
+ {
+ static twister_rand_gen rg;
+ return rg;
+ }
+
+ static double&
+ throw_prob()
+ {
+ static double tp;
+ return tp;
+ }
+
+ static size_t&
+ label()
+ {
+ static size_t ll;
+ return ll;
+ }
};
+ inline std::ostream&
+ operator<<(std::ostream& os, const throw_allocator_base&)
+ {
+ std::string error;
+ typedef throw_allocator_base alloc_type;
+ alloc_type::const_iterator beg = alloc_type::map().begin();
+ alloc_type::const_iterator end = alloc_type::map().end();
+ for (; beg != end; ++beg)
+ alloc_type::print_to_string(error, *beg);
+ return os << error;
+ }
+
/**
* @brief Allocator class with logging and exception control.
* @ingroup allocators
@@ -273,176 +354,6 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
operator!=(const throw_allocator<T>&, const throw_allocator<T>&)
{ return false; }
- std::ostream&
- operator<<(std::ostream& os, const throw_allocator_base& alloc)
- {
- std::string error;
- throw_allocator_base::print_to_string(error);
- os << error;
- return os;
- }
-
- // XXX Should be in .cc.
- twister_rand_gen::
- twister_rand_gen(unsigned int seed) : _M_generator(seed) { }
-
- void
- twister_rand_gen::
- init(unsigned int seed)
- { _M_generator.seed(seed); }
-
- double
- twister_rand_gen::
- get_prob()
- {
- const double min = _M_generator.min();
- const double res = static_cast<const double>(_M_generator() - min);
- const double range = static_cast<const double>(_M_generator.max() - min);
- const double ret = res / range;
- _GLIBCXX_DEBUG_ASSERT(ret >= 0 && ret <= 1);
- return ret;
- }
-
- twister_rand_gen throw_allocator_base::_S_g;
-
- throw_allocator_base::map_type
- throw_allocator_base::_S_map;
-
- double throw_allocator_base::_S_throw_prob;
-
- size_t throw_allocator_base::_S_label = 0;
-
- throw_allocator_base::entry_type
- throw_allocator_base::make_entry(void* p, size_t size)
- { return std::make_pair(p, alloc_data_type(_S_label, size)); }
-
- void
- throw_allocator_base::init(unsigned long seed)
- { _S_g.init(seed); }
-
- void
- throw_allocator_base::set_throw_prob(double throw_prob)
- { _S_throw_prob = throw_prob; }
-
- double
- throw_allocator_base::get_throw_prob()
- { return _S_throw_prob; }
-
- void
- throw_allocator_base::set_label(size_t l)
- { _S_label = l; }
-
- void
- throw_allocator_base::insert(void* p, size_t size)
- {
- const_iterator found_it = _S_map.find(p);
- if (found_it != _S_map.end())
- {
- std::string error("throw_allocator_base::insert");
- error += "double insert!";
- error += '\n';
- print_to_string(error, make_entry(p, size));
- print_to_string(error, *found_it);
- std::__throw_logic_error(error.c_str());
- }
- _S_map.insert(make_entry(p, size));
- }
-
- bool
- throw_allocator_base::empty()
- { return _S_map.empty(); }
-
- void
- throw_allocator_base::erase(void* p, size_t size)
- {
- check_allocated(p, size);
- _S_map.erase(p);
- }
-
- void
- throw_allocator_base::check_allocated(void* p, size_t size)
- {
- const_iterator found_it = _S_map.find(p);
- if (found_it == _S_map.end())
- {
- std::string error("throw_allocator_base::check_allocated by value ");
- error += "null erase!";
- error += '\n';
- print_to_string(error, make_entry(p, size));
- std::__throw_logic_error(error.c_str());
- }
-
- if (found_it->second.second != size)
- {
- std::string error("throw_allocator_base::check_allocated by value ");
- error += "wrong-size erase!";
- error += '\n';
- print_to_string(error, make_entry(p, size));
- print_to_string(error, *found_it);
- std::__throw_logic_error(error.c_str());
- }
- }
-
- void
- throw_allocator_base::check_allocated(size_t label)
- {
- std::string found;
- const_iterator it = _S_map.begin();
- while (it != _S_map.end())
- {
- if (it->second.first == label)
- {
- print_to_string(found, *it);
- }
- ++it;
- }
-
- if (!found.empty())
- {
- std::string error("throw_allocator_base::check_allocated by label ");
- error += '\n';
- error += found;
- std::__throw_logic_error(error.c_str());
- }
- }
-
- void
- throw_allocator_base::throw_conditionally()
- {
- if (_S_g.get_prob() < _S_throw_prob)
- __throw_forced_exception_error();
- }
-
- void
- throw_allocator_base::print_to_string(std::string& s)
- {
- const_iterator begin = throw_allocator_base::_S_map.begin();
- const_iterator end = throw_allocator_base::_S_map.end();
- for (; begin != end; ++begin)
- print_to_string(s, *begin);
- }
-
- void
- throw_allocator_base::print_to_string(std::string& s, const_reference ref)
- {
- char buf[40];
- const char tab('\t');
- s += "address: ";
- __builtin_sprintf(buf, "%p", ref.first);
- s += buf;
- s += tab;
- s += "label: ";
- unsigned long l = static_cast<unsigned long>(ref.second.first);
- __builtin_sprintf(buf, "%lu", l);
- s += buf;
- s += tab;
- s += "size: ";
- l = static_cast<unsigned long>(ref.second.second);
- __builtin_sprintf(buf, "%lu", l);
- s += buf;
- s += '\n';
- }
-
_GLIBCXX_END_NAMESPACE
#endif
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am
index d218ceaa9ca..288243aab26 100644
--- a/libstdc++-v3/src/Makefile.am
+++ b/libstdc++-v3/src/Makefile.am
@@ -182,6 +182,7 @@ sources = \
streambuf-inst.cc \
streambuf.cc \
string-inst.cc \
+ throw_allocator.cc \
valarray-inst.cc \
wlocale-inst.cc \
wstring-inst.cc \
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index 9ee5275198b..24187af1dae 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -85,12 +85,13 @@ am__libstdc___la_SOURCES_DIST = atomic.cc bitmap_allocator.cc \
fstream-inst.cc ext-inst.cc ios-inst.cc iostream-inst.cc \
istream-inst.cc istream.cc locale-inst.cc misc-inst.cc \
ostream-inst.cc sstream-inst.cc streambuf-inst.cc streambuf.cc \
- string-inst.cc valarray-inst.cc wlocale-inst.cc \
- wstring-inst.cc mutex.cc condition_variable.cc chrono.cc \
- thread.cc atomicity.cc codecvt_members.cc collate_members.cc \
- ctype_members.cc messages_members.cc monetary_members.cc \
- numeric_members.cc time_members.cc basic_file.cc c++locale.cc \
- compatibility-ldbl.cc parallel_list.cc parallel_settings.cc
+ string-inst.cc throw_allocator.cc valarray-inst.cc \
+ wlocale-inst.cc wstring-inst.cc mutex.cc condition_variable.cc \
+ chrono.cc thread.cc atomicity.cc codecvt_members.cc \
+ collate_members.cc ctype_members.cc messages_members.cc \
+ monetary_members.cc numeric_members.cc time_members.cc \
+ basic_file.cc c++locale.cc compatibility-ldbl.cc \
+ parallel_list.cc parallel_settings.cc
am__objects_1 = atomicity.lo codecvt_members.lo collate_members.lo \
ctype_members.lo messages_members.lo monetary_members.lo \
numeric_members.lo time_members.lo
@@ -111,9 +112,9 @@ am__objects_5 = atomic.lo bitmap_allocator.lo pool_allocator.lo \
fstream-inst.lo ext-inst.lo ios-inst.lo iostream-inst.lo \
istream-inst.lo istream.lo locale-inst.lo misc-inst.lo \
ostream-inst.lo sstream-inst.lo streambuf-inst.lo streambuf.lo \
- string-inst.lo valarray-inst.lo wlocale-inst.lo \
- wstring-inst.lo mutex.lo condition_variable.lo chrono.lo \
- thread.lo $(am__objects_1) $(am__objects_4)
+ string-inst.lo throw_allocator.lo valarray-inst.lo \
+ wlocale-inst.lo wstring-inst.lo mutex.lo condition_variable.lo \
+ chrono.lo thread.lo $(am__objects_1) $(am__objects_4)
am_libstdc___la_OBJECTS = $(am__objects_5)
libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
@@ -434,6 +435,7 @@ sources = \
streambuf-inst.cc \
streambuf.cc \
string-inst.cc \
+ throw_allocator.cc \
valarray-inst.cc \
wlocale-inst.cc \
wstring-inst.cc \
diff --git a/libstdc++-v3/src/throw_allocator.cc b/libstdc++-v3/src/throw_allocator.cc
new file mode 100644
index 00000000000..a8247ad9782
--- /dev/null
+++ b/libstdc++-v3/src/throw_allocator.cc
@@ -0,0 +1,95 @@
+// Throw Allocator. Out of line function definitions. -*- C++ -*-
+
+// Copyright (C) 2009 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <ext/throw_allocator.h>
+
+_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
+
+ void
+ throw_allocator_base::do_check_allocated(const_iterator found,
+ const_iterator end,
+ void* p, size_t size)
+ {
+ if (found == end)
+ {
+ std::string error("throw_allocator_base::check_allocated by value "
+ "null erase!\n");
+ print_to_string(error, make_entry(p, size));
+ std::__throw_logic_error(error.c_str());
+ }
+
+ if (found->second.second != size)
+ {
+ std::string error("throw_allocator_base::check_allocated by value "
+ "wrong-size erase!\n");
+ print_to_string(error, make_entry(p, size));
+ print_to_string(error, *found);
+ std::__throw_logic_error(error.c_str());
+ }
+ }
+
+ void
+ throw_allocator_base::do_check_allocated(const_iterator beg,
+ const_iterator end,
+ size_t label)
+ {
+ std::string found;
+ while (beg != end)
+ {
+ if (beg->second.first == label)
+ print_to_string(found, *beg);
+ ++beg;
+ }
+
+ if (!found.empty())
+ {
+ std::string error("throw_allocator_base::check_allocated by label \n");
+ error += found;
+ std::__throw_logic_error(error.c_str());
+ }
+ }
+
+ void
+ throw_allocator_base::print_to_string(std::string& s,
+ const_reference ref)
+ {
+ char buf[40];
+ const char tab('\t');
+ s += "address: ";
+ __builtin_sprintf(buf, "%p", ref.first);
+ s += buf;
+ s += tab;
+ s += "label: ";
+ unsigned long l = static_cast<unsigned long>(ref.second.first);
+ __builtin_sprintf(buf, "%lu", l);
+ s += buf;
+ s += tab;
+ s += "size: ";
+ l = static_cast<unsigned long>(ref.second.second);
+ __builtin_sprintf(buf, "%lu", l);
+ s += buf;
+ s += '\n';
+ }
+
+_GLIBCXX_END_NAMESPACE