c-decl.c (start_decl): Adjust quoting and hyphenation in diagnostics.
authorMartin Sebor <msebor@redhat.com>
Wed, 5 Jun 2019 18:30:48 +0000 (18:30 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Wed, 5 Jun 2019 18:30:48 +0000 (12:30 -0600)
gcc/c/ChangeLog:

* c-decl.c (start_decl): Adjust quoting and hyphenation
in diagnostics.
(finish_decl): Same.
(finish_enum): Same.
(start_function): Same.
(declspecs_add_type): Same.
* c-parser.c (warn_for_abs): Same.
* c-typeck.c (build_binary_op): Same.

gcc/c-family/ChangeLog:

* c-attribs.c (handle_mode_attribute): Adjust quoting and hyphenation.
(handle_alias_ifunc_attribute): Same.
(handle_copy_attribute): Same.
(handle_weakref_attribute): Same.
(handle_nonnull_attribute): Same.
* c-warn.c (warn_for_sign_compare): Same.
(warn_for_restrict): Same.
* c.opt: Same.

gcc/cp/ChangeLog:

* call.c (build_conditional_expr_1): Adjust quoting and hyphenation.
(convert_like_real): Same.
(convert_arg_to_ellipsis): Same.
* constexpr.c (diag_array_subscript): Same.
* constraint.cc (diagnose_trait_expression): Same.
* cvt.c (ocp_convert): Same.
* decl.c (start_decl): Same.
(check_for_uninitialized_const_var): Same.
(grokfndecl): Same.
(check_special_function_return_type): Same.
(finish_enum_value_list): Same.
(start_preparsed_function): Same.
* parser.c (cp_parser_decl_specifier_seq): Same.
* typeck.c (cp_build_binary_op): Same.
(build_static_cast_1): Same.

gcc/lto/ChangeLog:

* lto-common.c (lto_file_finalize): Adjust quoting and hyphenation.

gcc/objc/ChangeLog:

* objc-act.c (objc_build_setter_call): Adjust quoting and hyphenation.
* objc-encoding.c (encode_gnu_bitfield): Same.

gcc/ChangeLog:

* config/i386/i386-features.c (ix86_get_function_versions_dispatcher):
Adjust quoting and hyphenation.
* convert.c (convert_to_real_1): Same.
* gcc.c (driver_wrong_lang_callback): Same.
(driver::handle_unrecognized_options): Same.
* gimple-ssa-nonnull-compare.c (do_warn_nonnull_compare): Same.
* opts-common.c (cmdline_handle_error): Same.
(read_cmdline_option): Same.
* opts-global.c (complain_wrong_lang): Same.
(print_ignored_options): Same.
(handle_common_deferred_options): Same.
* pretty-print.h: Same.
* print-rtl.c (debug_bb_n_slim): Same.
* sched-rgn.c (make_pass_sched_fusion): Same.
* tree-cfg.c (verify_gimple_assign_unary): Same.
(verify_gimple_label): Same.
* tree-ssa-operands.c (verify_ssa_operands): Same.
* varasm.c (do_assemble_alias): Same.
(assemble_alias): Same.

From-SVN: r271971

124 files changed:
gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-attribs.c
gcc/c-family/c-warn.c
gcc/c/ChangeLog
gcc/c/c-decl.c
gcc/c/c-parser.c
gcc/cfghooks.c
gcc/cfgloop.c
gcc/cfgrtl.c
gcc/cgraph.c
gcc/config/i386/i386-features.c
gcc/configure
gcc/configure.ac
gcc/convert.c
gcc/cp/ChangeLog
gcc/cp/call.c
gcc/cp/constexpr.c
gcc/cp/constraint.cc
gcc/cp/cvt.c
gcc/cp/decl.c
gcc/cp/parser.c
gcc/cp/typeck.c
gcc/diagnostic-show-locus.c
gcc/diagnostic.c
gcc/gcc.c
gcc/gimple-pretty-print.c
gcc/gimple-ssa-nonnull-compare.c
gcc/graph.c
gcc/lto/ChangeLog
gcc/lto/lto-common.c
gcc/objc/ChangeLog
gcc/objc/objc-act.c
gcc/objc/objc-encoding.c
gcc/opts-common.c
gcc/opts-global.c
gcc/print-rtl.c
gcc/sched-rgn.c
gcc/symtab.c
gcc/testsuite/c-c++-common/nonnull-1.c
gcc/testsuite/c-c++-common/nonnull-2.c
gcc/testsuite/c-c++-common/nonnull-3.c
gcc/testsuite/c-c++-common/pr35503-1.c
gcc/testsuite/c-c++-common/pr35503-2.c
gcc/testsuite/c-c++-common/pr35503-3.c
gcc/testsuite/g++.dg/abi/empty12.C
gcc/testsuite/g++.dg/abi/empty13.C
gcc/testsuite/g++.dg/abi/empty14.C
gcc/testsuite/g++.dg/abi/empty15.C
gcc/testsuite/g++.dg/abi/empty16.C
gcc/testsuite/g++.dg/abi/empty17.C
gcc/testsuite/g++.dg/abi/empty18.C
gcc/testsuite/g++.dg/abi/empty19.C
gcc/testsuite/g++.dg/abi/empty22.C
gcc/testsuite/g++.dg/abi/empty25.C
gcc/testsuite/g++.dg/abi/empty26.C
gcc/testsuite/g++.dg/concepts/decl-diagnose.C
gcc/testsuite/g++.dg/conversion/bitfield7.C
gcc/testsuite/g++.dg/cpp0x/addressof2.C
gcc/testsuite/g++.dg/cpp0x/constexpr-condition.C
gcc/testsuite/g++.dg/cpp0x/constexpr-neg1.C
gcc/testsuite/g++.dg/cpp0x/constexpr-object1.C
gcc/testsuite/g++.dg/cpp0x/defaulted2.C
gcc/testsuite/g++.dg/cpp0x/gnu_fext-numeric-literals.C
gcc/testsuite/g++.dg/cpp0x/pr42844-2.C
gcc/testsuite/g++.dg/cpp0x/pr83993.C
gcc/testsuite/g++.dg/cpp0x/std_fext-numeric-literals.C
gcc/testsuite/g++.dg/cpp0x/udlit-shadow-neg.C
gcc/testsuite/g++.dg/cpp1z/inline-var2.C
gcc/testsuite/g++.dg/cpp2a/decomp3.C
gcc/testsuite/g++.dg/init/pr42844.C
gcc/testsuite/g++.dg/tree-ssa/pr20280.C
gcc/testsuite/g++.dg/warn/Wfloat-equal-1.C
gcc/testsuite/g++.dg/warn/Wrestrict-1.C
gcc/testsuite/g++.dg/warn/Wrestrict-2.C
gcc/testsuite/g++.dg/warn/nonnull3.C
gcc/testsuite/g++.dg/warn/pr8715.C
gcc/testsuite/g++.old-deja/g++.other/cond5.C
gcc/testsuite/gcc.dg/attr-noinline.c
gcc/testsuite/gcc.dg/attr-noipa.c
gcc/testsuite/gcc.dg/attr-weakref-2.c
gcc/testsuite/gcc.dg/cast-1.c
gcc/testsuite/gcc.dg/cast-2.c
gcc/testsuite/gcc.dg/cast-3.c
gcc/testsuite/gcc.dg/dfp/cast-bad.c
gcc/testsuite/gcc.dg/dfp/warn-abs-2.c
gcc/testsuite/gcc.dg/enum-mode-1.c
gcc/testsuite/gcc.dg/format/gcc_diag-1.c
gcc/testsuite/gcc.dg/format/gcc_diag-11.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/funroll-loops-all.c
gcc/testsuite/gcc.dg/opts-5.c
gcc/testsuite/gcc.dg/pr28322-2.c
gcc/testsuite/gcc.dg/pr28322-3.c
gcc/testsuite/gcc.dg/pr60087.c
gcc/testsuite/gcc.dg/pr78957.c
gcc/testsuite/gcc.dg/pr8715.c
gcc/testsuite/gcc.dg/simd-2.c
gcc/testsuite/gcc.dg/spellcheck-options-1.c
gcc/testsuite/gcc.dg/spellcheck-options-10.c
gcc/testsuite/gcc.dg/spellcheck-options-12.c
gcc/testsuite/gcc.dg/spellcheck-options-13.c
gcc/testsuite/gcc.dg/spellcheck-options-18.c
gcc/testsuite/gcc.dg/spellcheck-options-19.c
gcc/testsuite/gcc.dg/spellcheck-options-2.c
gcc/testsuite/gcc.dg/spellcheck-options-20.c
gcc/testsuite/gcc.dg/spellcheck-options-3.c
gcc/testsuite/gcc.dg/spellcheck-options-4.c
gcc/testsuite/gcc.dg/spellcheck-options-5.c
gcc/testsuite/gcc.dg/spellcheck-options-6.c
gcc/testsuite/gcc.dg/spellcheck-options-7.c
gcc/testsuite/gcc.dg/spellcheck-options-8.c
gcc/testsuite/gcc.dg/spellcheck-options-9.c
gcc/testsuite/gcc.dg/warn-abs-1.c
gcc/testsuite/gcc.target/i386/spellcheck-options-5.c
gcc/testsuite/obj-c++.dg/property/dotsyntax-17.mm
gcc/testsuite/obj-c++.dg/property/property-neg-7.mm
gcc/testsuite/objc.dg/property/dotsyntax-17.m
gcc/testsuite/objc.dg/property/property-neg-7.m
gcc/tree-cfg.c
gcc/tree-eh.c
gcc/tree-pretty-print.c
gcc/tree-ssa-operands.c
gcc/tree-ssa.c
gcc/varasm.c

index 00ab0d9ecd70d60a57719b8597faa2187faa582a..f7bf3b20305c231510a533aa16e19a0af2b58c87 100644 (file)
@@ -1,3 +1,25 @@
+2019-06-05  Martin Sebor  <msebor@redhat.com>
+
+       * config/i386/i386-features.c (ix86_get_function_versions_dispatcher):
+       Adjust quoting and hyphenation.
+       * convert.c (convert_to_real_1): Same.
+       * gcc.c (driver_wrong_lang_callback): Same.
+       (driver::handle_unrecognized_options): Same.
+       * gimple-ssa-nonnull-compare.c (do_warn_nonnull_compare): Same.
+       * opts-common.c (cmdline_handle_error): Same.
+       (read_cmdline_option): Same.
+       * opts-global.c (complain_wrong_lang): Same.
+       (print_ignored_options): Same.
+       (handle_common_deferred_options): Same.
+       * pretty-print.h: Same.
+       * print-rtl.c (debug_bb_n_slim): Same.
+       * sched-rgn.c (make_pass_sched_fusion): Same.
+       * tree-cfg.c (verify_gimple_assign_unary): Same.
+       (verify_gimple_label): Same.
+       * tree-ssa-operands.c (verify_ssa_operands): Same.
+       * varasm.c (do_assemble_alias): Same.
+       (assemble_alias): Same.
+
 2019-06-05  Richard Henderson  <rth@twiddle.net>
 
        * config/alpha/alpha.c (direct_return): Move down after
index e74e9258a1c1e79d77590a99f29d51fab4fce036..179e376fb910a2384f4e01c754803042738fb95c 100644 (file)
@@ -1,3 +1,14 @@
+2019-06-05  Martin Sebor  <msebor@redhat.com>
+
+       * c-attribs.c (handle_mode_attribute): Adjust quoting and hyphenation.
+       (handle_alias_ifunc_attribute): Same.
+       (handle_copy_attribute): Same.
+       (handle_weakref_attribute): Same.
+       (handle_nonnull_attribute): Same.
+       * c-warn.c (warn_for_sign_compare): Same.
+       (warn_for_restrict): Same.
+       * c.opt: Same.
+
 2019-06-05  Martin Sebor  <msebor@redhat.com>
 
        * c-pragma.c (handle_pragma_weak): Adjust quoting in a diagnostic.
index 517b7e0dd01e6372c92ada140c33e0c31ea5fb12..7a8d3935d7991ecf96cb4747cf7f93892ce3360e 100644 (file)
@@ -1821,7 +1821,7 @@ handle_mode_attribute (tree *node, tree name, tree args,
             this mode for this type.  */
          if (TREE_CODE (typefm) != INTEGER_TYPE)
            {
-             error ("cannot use mode %qs for enumeral types", p);
+             error ("cannot use mode %qs for enumerated types", p);
              return NULL_TREE;
            }
 
@@ -2326,12 +2326,8 @@ handle_alias_ifunc_attribute (bool is_alias, tree *node, tree name, tree args,
     {
       struct symtab_node *n = symtab_node::get (decl);
       if (n && n->refuse_visibility_changes)
-       {
-         if (is_alias)
-           error ("%+qD declared alias after being used", decl);
-         else
-           error ("%+qD declared ifunc after being used", decl);
-       }
+       error ("%+qD declared %qs after being used",
+              decl, is_alias ? "alias" : "ifunc");
     }
 
 
@@ -2548,7 +2544,7 @@ handle_copy_attribute (tree *node, tree name, tree args,
    attribute_spec.handler.  */
 
 static tree
-handle_weakref_attribute (tree *node, tree ARG_UNUSED (name), tree args,
+handle_weakref_attribute (tree *node, tree name, tree args,
                          int flags, bool *no_add_attrs)
 {
   tree attr = NULL_TREE;
@@ -2567,7 +2563,8 @@ handle_weakref_attribute (tree *node, tree ARG_UNUSED (name), tree args,
 
   if (lookup_attribute ("ifunc", DECL_ATTRIBUTES (*node)))
     {
-      error ("indirect function %q+D cannot be declared weakref", *node);
+      error ("indirect function %q+D cannot be declared %qE",
+            *node, name);
       *no_add_attrs = true;
       return NULL_TREE;
     }
@@ -2589,7 +2586,8 @@ handle_weakref_attribute (tree *node, tree ARG_UNUSED (name), tree args,
     {
       if (lookup_attribute ("alias", DECL_ATTRIBUTES (*node)))
        error_at (DECL_SOURCE_LOCATION (*node),
-                 "weakref attribute must appear before alias attribute");
+                 "%qE attribute must appear before %qs attribute",
+                 name, "alias");
 
       /* Can't call declare_weak because it wants this to be TREE_PUBLIC,
         and that isn't supported; and because it wants to add it to
@@ -2601,7 +2599,7 @@ handle_weakref_attribute (tree *node, tree ARG_UNUSED (name), tree args,
     {
       struct symtab_node *n = symtab_node::get (*node);
       if (n && n->refuse_visibility_changes)
-       error ("%+qD declared weakref after being used", *node);
+       error ("%+qD declared %qE after being used", *node, name);
     }
 
   return NULL_TREE;
@@ -3625,7 +3623,8 @@ handle_nonnull_attribute (tree *node, tree name,
          && (!TYPE_ATTRIBUTES (type)
              || !lookup_attribute ("type generic", TYPE_ATTRIBUTES (type))))
        {
-         error ("nonnull attribute without arguments on a non-prototype");
+         error ("%qE attribute without arguments on a non-prototype",
+                name);
          *no_add_attrs = true;
        }
       return NULL_TREE;
index fa7b6ddea555bcc2b810757ee61bb9c5bfe3d033..5941c10cddb63ec55bcf99a8afdbbbd96ec03279 100644 (file)
@@ -2232,10 +2232,12 @@ warn_for_sign_compare (location_t location,
                {
                  if (constant == 0)
                    warning_at (location, OPT_Wsign_compare,
-                               "promoted ~unsigned is always non-zero");
+                               "promoted bitwise complement of an unsigned "
+                               "value is always nonzero");
                  else
                    warning_at (location, OPT_Wsign_compare,
-                               "comparison of promoted ~unsigned with constant");
+                               "comparison of promoted bitwise complement "
+                               "of an unsigned value with constant");
                }
            }
        }
@@ -2245,7 +2247,8 @@ warn_for_sign_compare (location_t location,
               && (TYPE_PRECISION (TREE_TYPE (op1))
                   < TYPE_PRECISION (result_type)))
        warning_at (location, OPT_Wsign_compare,
-                   "comparison of promoted ~unsigned with unsigned");
+                   "comparison of promoted bitwise complement "
+                   "of an unsigned value with unsigned");
     }
 }
 
@@ -2597,11 +2600,11 @@ warn_for_restrict (unsigned param_pos, tree *argarray, unsigned nargs)
     }
 
   return warning_n (&richloc, OPT_Wrestrict, arg_positions.length (),
-                   "passing argument %i to restrict-qualified parameter"
+                   "passing argument %i to %qs-qualified parameter"
                    " aliases with argument %Z",
-                   "passing argument %i to restrict-qualified parameter"
+                   "passing argument %i to %qs-qualified parameter"
                    " aliases with arguments %Z",
-                   param_pos + 1, arg_positions.address (),
+                   param_pos + 1, "restrict", arg_positions.address (),
                    arg_positions.length ());
 }
 
index cfbd164fdc3c5306b2eec6f4169036be2b890f88..05f3866185b36bc78c05bffcd3c29cdad5abf3eb 100644 (file)
@@ -1,3 +1,14 @@
+2019-06-05  Martin Sebor  <msebor@redhat.com>
+
+       * c-decl.c (start_decl): Adjust quoting and hyphenation
+       in diagnostics.
+       (finish_decl): Same.
+       (finish_enum): Same.
+       (start_function): Same.
+       (declspecs_add_type): Same.
+       * c-parser.c (warn_for_abs): Same.
+       * c-typeck.c (build_binary_op): Same.
+
 2019-05-17  Thomas Schwinge  <thomas@codesourcery.com>
 
        PR c/89433
index 181a8c2e9aa0c8f758a5fbb1cd603fa4eabe999d..87ce853d4b7d6e96e9fcc7d677cce8e7757a3cd6 100644 (file)
@@ -5013,8 +5013,8 @@ start_decl (struct c_declarator *declarator, struct c_declspecs *declspecs,
       && DECL_DECLARED_INLINE_P (decl)
       && DECL_UNINLINABLE (decl)
       && lookup_attribute ("noinline", DECL_ATTRIBUTES (decl)))
-    warning (OPT_Wattributes, "inline function %q+D given attribute noinline",
-            decl);
+    warning (OPT_Wattributes, "inline function %q+D given attribute %qs",
+            decl, "noinline");
 
   /* C99 6.7.4p3: An inline definition of a function with external
      linkage shall not contain a definition of a modifiable object
@@ -5399,7 +5399,7 @@ finish_decl (tree decl, location_t init_loc, tree init,
       type = strip_array_types (type);
       if (TREE_READONLY (decl))
        warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wc___compat,
-                   "uninitialized const %qD is invalid in C++", decl);
+                   "uninitialized %<const %D%> is invalid in C++", decl);
       else if (RECORD_OR_UNION_TYPE_P (type)
               && C_TYPE_FIELDS_READONLY (type))
        diagnose_uninitialized_cst_member (decl, type);
@@ -8674,7 +8674,7 @@ finish_enum (tree enumtype, tree values, tree attributes)
       if (precision > TYPE_PRECISION (enumtype))
        {
          TYPE_PRECISION (enumtype) = 0;
-         error ("specified mode too small for enumeral values");
+         error ("specified mode too small for enumerated values");
        }
       else
        precision = TYPE_PRECISION (enumtype);
@@ -8935,8 +8935,8 @@ start_function (struct c_declspecs *declspecs, struct c_declarator *declarator,
       && DECL_UNINLINABLE (decl1)
       && lookup_attribute ("noinline", DECL_ATTRIBUTES (decl1)))
     warning_at (loc, OPT_Wattributes,
-               "inline function %qD given attribute noinline",
-               decl1);
+               "inline function %qD given attribute %qs",
+               decl1, "noinline");
 
   /* Handle gnu_inline attribute.  */
   if (declspecs->inline_p
@@ -10941,10 +10941,10 @@ declspecs_add_type (location_t loc, struct c_declspecs *specs,
              }
              if (!targetm.decimal_float_supported_p ())
                error_at (loc,
-                         ("decimal floating point not supported "
+                         ("decimal floating-point not supported "
                           "for this target"));
              pedwarn (loc, OPT_Wpedantic,
-                      "ISO C does not support decimal floating point");
+                      "ISO C does not support decimal floating-point");
              return specs;
            case RID_FRACT:
            case RID_ACCUM:
index 8f610242435fe42e95679f9d4e05ad199ae62706..84ee576866e6d79c2a2ce4d4e1dc6f30755fd9d8 100644 (file)
@@ -9420,7 +9420,7 @@ warn_for_abs (location_t loc, tree fndecl, tree arg)
          if (SCALAR_FLOAT_TYPE_P (atype))
            warning_at (loc, OPT_Wabsolute_value,
                        "using integer absolute value function %qD when "
-                       "argument is of floating point type %qT",
+                       "argument is of floating-point type %qT",
                        fndecl, atype);
          else if (TREE_CODE (atype) == COMPLEX_TYPE)
            warning_at (loc, OPT_Wabsolute_value,
@@ -9443,16 +9443,16 @@ warn_for_abs (location_t loc, tree fndecl, tree arg)
        {
          if (INTEGRAL_TYPE_P (atype))
            warning_at (loc, OPT_Wabsolute_value,
-                       "using floating point absolute value function %qD "
+                       "using floating-point absolute value function %qD "
                        "when argument is of integer type %qT", fndecl, atype);
          else if (DECIMAL_FLOAT_TYPE_P (atype))
            warning_at (loc, OPT_Wabsolute_value,
-                       "using floating point absolute value function %qD "
-                       "when argument is of decimal floating point type %qT",
+                       "using floating-point absolute value function %qD "
+                       "when argument is of decimal floating-point type %qT",
                        fndecl, atype);
          else if (TREE_CODE (atype) == COMPLEX_TYPE)
            warning_at (loc, OPT_Wabsolute_value,
-                       "using floating point absolute value function %qD when "
+                       "using floating-point absolute value function %qD when "
                        "argument is of complex type %qT", fndecl, atype);
          else
            gcc_unreachable ();
@@ -9470,7 +9470,7 @@ warn_for_abs (location_t loc, tree fndecl, tree arg)
          else if (SCALAR_FLOAT_TYPE_P (atype))
            warning_at (loc, OPT_Wabsolute_value,
                        "using complex absolute value function %qD when "
-                       "argument is of floating point type %qT",
+                       "argument is of floating-point type %qT",
                        fndecl, atype);
          else
            gcc_unreachable ();
@@ -9486,17 +9486,17 @@ warn_for_abs (location_t loc, tree fndecl, tree arg)
        {
          if (INTEGRAL_TYPE_P (atype))
            warning_at (loc, OPT_Wabsolute_value,
-                       "using decimal floating point absolute value "
+                       "using decimal floating-point absolute value "
                        "function %qD when argument is of integer type %qT",
                        fndecl, atype);
          else if (SCALAR_FLOAT_TYPE_P (atype))
            warning_at (loc, OPT_Wabsolute_value,
-                       "using decimal floating point absolute value "
-                       "function %qD when argument is of floating point "
+                       "using decimal floating-point absolute value "
+                       "function %qD when argument is of floating-point "
                        "type %qT", fndecl, atype);
          else if (TREE_CODE (atype) == COMPLEX_TYPE)
            warning_at (loc, OPT_Wabsolute_value,
-                       "using decimal floating point absolute value "
+                       "using decimal floating-point absolute value "
                        "function %qD when argument is of complex type %qT",
                        fndecl, atype);
          else
index a1d603a207ec7791a3101060e1126c395507ea62..a25441b26401d762a4755f260ee0529b67813463 100644 (file)
@@ -32,6 +32,12 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-ssa.h"
 #include "cfgloop.h"
 
+/* Disable warnings about missing quoting in GCC diagnostics.  */
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 /* A pointer to one of the hooks containers.  */
 static struct cfg_hooks *cfg_hooks;
 
@@ -1491,3 +1497,7 @@ profile_record_account_profile (profile_record *record)
       cfg_hooks->account_profile_record (bb, record);
    }
 }
+
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
index e115de6aae2d041526e3fffe9eaad97587e249c6..f64326b944e630075ced7035937f4601a1cb6c66 100644 (file)
@@ -1363,6 +1363,15 @@ cancel_loop_tree (struct loop *loop)
   cancel_loop (loop);
 }
 
+/* Disable warnings about missing quoting in GCC diagnostics for
+   the verification errors.  Their format strings don't follow GCC
+   diagnostic conventions and the calls are ultimately followed by
+   a deliberate ICE triggered by a failed assertion.  */
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 /* Checks that information about loops is correct
      -- sizes of loops are all right
      -- results of get_loop_body really belong to the loop
@@ -1677,7 +1686,7 @@ verify_loop_structure (void)
 
              if (eloops != 0)
                {
-                 error ("wrong list of exited loops for edge  %d->%d",
+                 error ("wrong list of exited loops for edge %d->%d",
                         e->src->index, e->dest->index);
                  err = 1;
                }
@@ -1712,6 +1721,10 @@ verify_loop_structure (void)
     free_dominance_info (CDI_DOMINATORS);
 }
 
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
+
 /* Returns latch edge of LOOP.  */
 edge
 loop_latch_edge (const struct loop *loop)
index e06fb8d5a408c1bbb5bca49c044d5803e80c4c12..a1ca5992c414e988c4d37a2cdd810b8c724b6967 100644 (file)
@@ -62,6 +62,12 @@ along with GCC; see the file COPYING3.  If not see
 #include "tree-pass.h"
 #include "print-rtl.h"
 
+/* Disable warnings about missing quoting in GCC diagnostics.  */
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 /* Holds the interesting leading and trailing notes for the function.
    Only applicable if the CFG is in cfglayout mode.  */
 static GTY(()) rtx_insn *cfg_layout_function_footer;
@@ -5191,3 +5197,7 @@ struct cfg_hooks cfg_layout_rtl_cfg_hooks = {
 };
 
 #include "gt-cfgrtl.h"
+
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
index b1b0b4c42d5c202916a25b54f554c891f1d6ab3e..28019aba4347c7afe0ebc9399d341acb2ab245b8 100644 (file)
@@ -3095,6 +3095,15 @@ cgraph_edge::verify_corresponds_to_fndecl (tree decl)
     return false;
 }
 
+/* Disable warnings about missing quoting in GCC diagnostics for
+   the verification errors.  Their format strings don't follow GCC
+   diagnostic conventions and the calls are ultimately followed by
+   one to internal_error.  */
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 /* Verify cgraph nodes of given cgraph node.  */
 DEBUG_FUNCTION void
 cgraph_node::verify_node (void)
@@ -3470,6 +3479,10 @@ cgraph_node::verify_cgraph_nodes (void)
     node->verify ();
 }
 
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
+
 /* Walk the alias chain to return the function cgraph_node is alias of.
    Walk through thunks, too.
    When AVAILABILITY is non-NULL, get minimal availability in the chain.
index c8de5261240cc3c71f7969d58e3a76a8633e6a00..51f88ae4d8a45edf8817ed70bdf2fa047f02e1bf 100644 (file)
@@ -2581,7 +2581,7 @@ ix86_get_function_versions_dispatcher (void *decl)
 #endif
     {
       error_at (DECL_SOURCE_LOCATION (default_node->decl),
-               "multiversioning needs ifunc which is not supported "
+               "multiversioning needs %<ifunc%> which is not supported "
                "on this target");
     }
 
index 4a3d5eefcb8829dd8aa669083829bd67c9b46a16..c9062cca9d6811782482e47e6ec7cfa09a9ae5cd 100755 (executable)
@@ -6739,7 +6739,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
 loose_warn=
 save_CXXFLAGS="$CXXFLAGS"
-for real_option in -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual $wf_opt; do
+for real_option in -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-error=format-diag $wf_opt; do
   # Do the check with the no- prefix removed since gcc silently
   # accepts any -Wno-* option on purpose
   case $real_option in
@@ -6797,7 +6797,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 c_loose_warn=
 save_CFLAGS="$CFLAGS"
-for real_option in -Wstrict-prototypes -Wmissing-prototypes; do
+for real_option in -Wstrict-prototypes -Wmissing-prototypes-Wno-error=format-diag; do
   # Do the check with the no- prefix removed since gcc silently
   # accepts any -Wno-* option on purpose
   case $real_option in
index 35982fdc9ed54b6bd38cfcecaf28dd6ba29cb89a..cbc0c25fa2b565eff1493006555d0b20a48af515 100644 (file)
@@ -483,10 +483,11 @@ AS_IF([test $enable_build_format_warnings = no],
       [wf_opt=-Wno-format],[wf_opt=])
 ACX_PROG_CXX_WARNING_OPTS(
        m4_quote(m4_do([-W -Wall -Wno-narrowing -Wwrite-strings ],
-                      [-Wcast-qual $wf_opt])), [loose_warn])
+                      [-Wcast-qual -Wno-error=format-diag $wf_opt])),
+                      [loose_warn])
 ACX_PROG_CC_WARNING_OPTS(
-       m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes])),
-       [c_loose_warn])
+       m4_quote(m4_do([-Wstrict-prototypes -Wmissing-prototypes ],
+                      [-Wno-error=format-diag])), [c_loose_warn])
 ACX_PROG_CXX_WARNING_OPTS(
        m4_quote(m4_do([-Wmissing-format-attribute ],
                       [-Woverloaded-virtual])), [strict_warn])
index d5aa07b510e0e7831e8d121b383e42e5c6e89321..a8f2bd049ba0cd83865ba0a5f7d74f9cdbad0d09 100644 (file)
@@ -235,7 +235,7 @@ convert_to_real_1 (tree type, tree expr, bool fold_p)
                     (T1) sqrtT4 ((T4) exprT3)
 
                  , where T1 is TYPE, T2 is ITYPE, T3 is TREE_TYPE (ARG0),
-                and T4 is NEWTYPE.  All those types are of floating point types.
+                and T4 is NEWTYPE.  All those types are of floating-point types.
                 T4 (NEWTYPE) should be narrower than T2 (ITYPE). This conversion
                 is safe only if P1 >= P2*2+2, where P1 and P2 are precisions of
                 T2 and T4.  See the following URL for a reference:
@@ -415,11 +415,11 @@ convert_to_real_1 (tree type, tree expr, bool fold_p)
 
     case POINTER_TYPE:
     case REFERENCE_TYPE:
-      error ("pointer value used where a floating point was expected");
+      error ("pointer value used where a floating-point was expected");
       return convert_to_real_1 (type, integer_zero_node, fold_p);
 
     default:
-      error ("aggregate value used where a floating point was expected");
+      error ("aggregate value used where a floating-point was expected");
       return convert_to_real_1 (type, integer_zero_node, fold_p);
     }
 }
index 31d987144e91c261b3844c4205f2bd4e1ed4a911..0056cc265255f1dbb2c578994b53dbd807fc98f5 100644 (file)
@@ -1,3 +1,21 @@
+2019-06-05  Martin Sebor  <msebor@redhat.com>
+
+       * call.c (build_conditional_expr_1): Adjust quoting and hyphenation.
+       (convert_like_real): Same.
+       (convert_arg_to_ellipsis): Same.
+       * constexpr.c (diag_array_subscript): Same.
+       * constraint.cc (diagnose_trait_expression): Same.
+       * cvt.c (ocp_convert): Same.
+       * decl.c (start_decl): Same.
+       (check_for_uninitialized_const_var): Same.
+       (grokfndecl): Same.
+       (check_special_function_return_type): Same.
+       (finish_enum_value_list): Same.
+       (start_preparsed_function): Same.
+       * parser.c (cp_parser_decl_specifier_seq): Same.
+       * typeck.c (cp_build_binary_op): Same.
+       (build_static_cast_1): Same.
+
 2019-06-04  Nina Dinka Ranns  <dinka.ranns@gmail.com>
 
        PR c++/63149 - Wrong auto deduction from braced-init-list.
index 4d9331f98c2bc6e340ecb8583b3351e45fd325b7..c04ca2ee7ce63a177ecf697c743390d028619c68 100644 (file)
@@ -5067,7 +5067,7 @@ build_conditional_expr_1 (const op_location_t &loc,
            {
              if (complain & tf_error)
                error_at (loc, "inferred scalar type %qT is not an integer or "
-                         "floating point type of the same size as %qT", stype,
+                         "floating-point type of the same size as %qT", stype,
                          COMPARISON_CLASS_P (arg1)
                          ? TREE_TYPE (TREE_TYPE (TREE_OPERAND (arg1, 0)))
                          : ctype);
@@ -5486,8 +5486,8 @@ build_conditional_expr_1 (const op_location_t &loc,
            /* Two enumerators from the same enumeration can have different
               types when the enumeration is still being defined.  */;
           else if (complain & tf_warning)
-            warning_at (loc, OPT_Wenum_compare, "enumeral mismatch in "
-                       "conditional expression: %qT vs %qT",
+           warning_at (loc, OPT_Wenum_compare, "enumerated mismatch "
+                       "in conditional expression: %qT vs %qT",
                        arg2_type, arg3_type);
         }
       else if (extra_warnings
@@ -5498,8 +5498,8 @@ build_conditional_expr_1 (const op_location_t &loc,
                                        type_promotes_to (arg3_type)))))
         {
           if (complain & tf_warning)
-            warning_at (loc, OPT_Wextra, "enumeral and non-enumeral type in "
-                       "conditional expression");
+           warning_at (loc, OPT_Wextra, "enumerated and non-enumerated "
+                       "type in conditional expression");
         }
 
       arg2 = perform_implicit_conversion (result_type, arg2, complain);
@@ -7380,7 +7380,7 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
                /* If the reference is volatile or non-const, we
                   cannot create a temporary.  */
                if (lvalue & clk_bitfield)
-                 error_at (loc, "cannot bind bitfield %qE to %qT",
+                 error_at (loc, "cannot bind bit-field %qE to %qT",
                            expr, ref_type);
                else if (lvalue & clk_packed)
                  error_at (loc, "cannot bind packed field %qE to %qT",
@@ -7487,8 +7487,8 @@ convert_arg_to_ellipsis (tree arg, tsubst_flags_t complain)
   /* [expr.call]
 
      If the argument has integral or enumeration type that is subject
-     to the integral promotions (_conv.prom_), or a floating point
-     type that is subject to the floating point promotion
+     to the integral promotions (_conv.prom_), or a floating-point
+     type that is subject to the floating-point promotion
      (_conv.fpprom_), the value of the argument is converted to the
      promoted type before the call.  */
   if (TREE_CODE (arg_type) == REAL_TYPE
index 84c983428357b25d5043972726c034b4458ea012..15bfb6d814846e7694c927579fc801b292034a4f 100644 (file)
@@ -2483,7 +2483,7 @@ diag_array_subscript (const constexpr_ctx *ctx, tree array, tree index)
            error ("array subscript value %qE is outside the bounds "
                   "of array %qD of type %qT", sidx, array, arraytype);
          else
-           error ("non-zero array subscript %qE is used with array %qD of "
+           error ("nonzero array subscript %qE is used with array %qD of "
                   "type %qT with unknown bounds", sidx, array, arraytype);
          inform (DECL_SOURCE_LOCATION (array), "declared here");
        }
@@ -2491,7 +2491,7 @@ diag_array_subscript (const constexpr_ctx *ctx, tree array, tree index)
        error ("array subscript value %qE is outside the bounds "
               "of array type %qT", sidx, arraytype);
       else
-       error ("non-zero array subscript %qE is used with array of type %qT "
+       error ("nonzero array subscript %qE is used with array of type %qT "
               "with unknown bounds", sidx, arraytype);
     }
 }
index 9884eb0db50e48cf9cca5a8af9f32ff8db3a686b..ed39ecce7179263bdfedd0b5757d7c1a254ddb74 100644 (file)
@@ -2693,13 +2693,13 @@ diagnose_trait_expression (location_t loc, tree, tree cur, tree args)
   switch (TRAIT_EXPR_KIND (expr))
     {
     case CPTK_HAS_NOTHROW_ASSIGN:
-      inform (loc, "  %qT is not nothrow copy assignable", t1);
+      inform (loc, "  %qT is not %<nothrow%> copy assignable", t1);
       break;
     case CPTK_HAS_NOTHROW_CONSTRUCTOR:
-      inform (loc, "  %qT is not nothrow default constructible", t1);
+      inform (loc, "  %qT is not %<nothrow%> default constructible", t1);
       break;
     case CPTK_HAS_NOTHROW_COPY:
-      inform (loc, "  %qT is not nothrow copy constructible", t1);
+      inform (loc, "  %qT is not %<nothrow%> copy constructible", t1);
       break;
     case CPTK_HAS_TRIVIAL_ASSIGN:
       inform (loc, "  %qT is not trivially copy assignable", t1);
index 7ebbf3c80c49906cb6d0fef0363b0382329feb3a..1c405ecd7b620dd564422a6ba4733a3671570c68 100644 (file)
@@ -883,7 +883,7 @@ ocp_convert (tree type, tree expr, int convtype, int flags,
            return rval;
          else if (complain & tf_error)
            error_at (loc,
-                     "%q#T used where a floating point value was expected",
+                     "%q#T used where a floating-point value was expected",
                      TREE_TYPE (e));
        }
       if (code == REAL_TYPE)
index 23b2a4c2831c43cda7a980d4705aa7a21791ed7e..f342f8b1c6512e4586ffdfc9d68c4d6cb90d6a57 100644 (file)
@@ -5131,7 +5131,7 @@ start_decl (const cp_declarator *declarator,
       && DECL_UNINLINABLE (decl)
       && lookup_attribute ("noinline", DECL_ATTRIBUTES (decl)))
     warning_at (DECL_SOURCE_LOCATION (decl), 0,
-               "inline function %qD given attribute noinline", decl);
+               "inline function %qD given attribute %qs", decl, "noinline");
 
   if (TYPE_P (context) && COMPLETE_TYPE_P (complete_type (context)))
     {
@@ -5703,7 +5703,7 @@ check_for_uninitialized_const_var (tree decl, bool constexpr_context_p,
            {
              if (complain & tf_error)
                show_notes = permerror (DECL_SOURCE_LOCATION (decl),
-                                       "uninitialized const %qD", decl);
+                                       "uninitialized %<const %D%>", decl);
            }
          else
            {
@@ -9148,7 +9148,7 @@ grokfndecl (tree ctype,
          else if (long_double_p)
            {
              if (cpp_interpret_float_suffix (parse_in, suffix, strlen (suffix)))
-               warning_at (location, 0, "floating point suffix %qs"
+               warning_at (location, 0, "floating-point suffix %qs"
                            " shadowed by implementation", suffix);
            }
          /* 17.6.3.3.5  */
@@ -10184,7 +10184,7 @@ check_special_function_return_type (special_function_kind sfk,
       for (int i = 0; i < ds_last; ++i)
        if (i != ds_explicit && locations[i])
          error_at (locations[i],
-                   "decl-specifier in declaration of deduction guide");
+                   "%<decl-specifier%> in declaration of deduction guide");
       break;
 
     default:
@@ -14747,7 +14747,7 @@ finish_enum_value_list (tree enumtype)
       if (TYPE_PRECISION (enumtype))
        {
          if (precision > TYPE_PRECISION (enumtype))
-           error ("specified mode too small for enumeral values");
+           error ("specified mode too small for enumerated values");
          else
            {
              use_short_enum = true;
@@ -15276,7 +15276,7 @@ start_preparsed_function (tree decl1, tree attrs, int flags)
   if (DECL_DECLARED_INLINE_P (decl1)
       && lookup_attribute ("noinline", attrs))
     warning_at (DECL_SOURCE_LOCATION (decl1), 0,
-               "inline function %qD given attribute noinline", decl1);
+               "inline function %qD given attribute %qs", decl1, "noinline");
 
   /* Handle gnu_inline attribute.  */
   if (GNU_INLINE_P (decl1))
index 94411447e1dd536547a44ca17f6c1d961a6d9816..308b2d4ad700e3656c5df23d213bc1bc96c0cb4d 100644 (file)
@@ -14075,7 +14075,7 @@ cp_parser_decl_specifier_seq (cp_parser* parser,
       if (found_decl_spec
          && (flags & CP_PARSER_FLAGS_ONLY_TYPE_OR_CONSTEXPR)
          && token->keyword != RID_CONSTEXPR)
-       error ("decl-specifier invalid in condition");
+       error ("%<decl-specifier%> invalid in condition");
 
       if (found_decl_spec
          && (flags & CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR)
index b9fa6f1d273258aea0c9282ddd7b5393862a4c75..eab800305ec16746fb71586eebe2f826e6160e3c 100644 (file)
@@ -4887,7 +4887,7 @@ cp_build_binary_op (const op_location_t &location,
          && c_inhibit_evaluation_warnings == 0
          && (FLOAT_TYPE_P (type0) || FLOAT_TYPE_P (type1)))
        warning (OPT_Wfloat_equal,
-                "comparing floating point with %<==%> or %<!=%> is unsafe");
+                "comparing floating-point with %<==%> or %<!=%> is unsafe");
       if (complain & tf_warning)
        {
          tree stripped_orig_op0 = tree_strip_any_location_wrapper (orig_op0);
@@ -5288,7 +5288,7 @@ cp_build_binary_op (const op_location_t &location,
       if (code0 != REAL_TYPE || code1 != REAL_TYPE)
        {
          if (complain & tf_error)
-           error ("unordered comparison on non-floating point argument");
+           error ("unordered comparison on non-floating-point argument");
          return error_mark_node;
        }
       common = 1;
@@ -7239,8 +7239,8 @@ build_static_cast_1 (tree type, tree expr, bool c_cast_p,
      conversion does not cast away constness (_expr.const.cast_), and
      the following additional rules for specific cases:  */
   /* For reference, the conversions not excluded are: integral
-     promotions, floating point promotion, integral conversions,
-     floating point conversions, floating-integral conversions,
+     promotions, floating-point promotion, integral conversions,
+     floating-point conversions, floating-integral conversions,
      pointer conversions, and pointer to member conversions.  */
   /* DR 128
 
index 205ee56f4099331bc33438b7fc9717e4b5de13a5..89074beb6d10c3995e26e839130a7b4341a3c586 100644 (file)
@@ -39,6 +39,13 @@ along with GCC; see the file COPYING3.  If not see
 # include <sys/ioctl.h>
 #endif
 
+/* Disable warnings about quoting issues in the pp_xxx calls below
+   that (intentionally) don't follow GCC diagnostic conventions.  */
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 /* Classes for rendering source code and diagnostics, within an
    anonymous namespace.
    The work is done by "class layout", which embeds and uses
@@ -3740,3 +3747,7 @@ diagnostic_show_locus_c_tests ()
 } // namespace selftest
 
 #endif /* #if CHECKING_P */
+
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
index be6b65722cd5088c96b6a62735474c8c78685fd8..4761b4349d393b663d62b8725f8de8b3a43a73e8 100644 (file)
@@ -43,6 +43,13 @@ along with GCC; see the file COPYING3.  If not see
 # include <sys/ioctl.h>
 #endif
 
+/* Disable warnings about quoting issues in the pp_xxx calls below
+   that (intentionally) don't follow GCC diagnostic conventions.  */
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 #define pedantic_warning_kind(DC)                      \
   ((DC)->pedantic_errors ? DK_ERROR : DK_WARNING)
 #define permissive_error_kind(DC) ((DC)->permissive ? DK_WARNING : DK_ERROR)
@@ -1861,3 +1868,7 @@ diagnostic_c_tests ()
 } // namespace selftest
 
 #endif /* #if CHECKING_P */
+
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
index 7ebdf1f225b49769af3047c852ad3b72d6912fc0..9bd65508b004585e9833086e1154f25a9cec9c34 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -3769,7 +3769,7 @@ driver_wrong_lang_callback (const struct cl_decoded_option *decoded,
   const struct cl_option *option = &cl_options[decoded->opt_index];
 
   if (option->cl_reject_driver)
-    error ("unrecognized command line option %qs",
+    error ("unrecognized command-line option %qs",
           decoded->orig_option_with_args_text);
   else
     save_switch (decoded->canonical_option[0],
@@ -7846,11 +7846,11 @@ driver::handle_unrecognized_options ()
       {
        const char *hint = m_option_proposer.suggest_option (switches[i].part1);
        if (hint)
-         error ("unrecognized command line option %<-%s%>;"
+         error ("unrecognized command-line option %<-%s%>;"
                 " did you mean %<-%s%>?",
                 switches[i].part1, hint);
        else
-         error ("unrecognized command line option %<-%s%>",
+         error ("unrecognized command-line option %<-%s%>",
                 switches[i].part1);
       }
 }
index 10f79ea619e3ebfdcbe9f5159e174cf2bb08b7d8..4243eb74d48c4a003ebf08c7c4bca13a3366348f 100644 (file)
@@ -43,6 +43,13 @@ along with GCC; see the file COPYING3.  If not see
 #include "asan.h"
 #include "cfgloop.h"
 
+/* Disable warnings about quoting issues in the pp_xxx calls below
+   that (intentionally) don't follow GCC diagnostic conventions.  */
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 #define INDENT(SPACE)                                                  \
   do { int i; for (i = 0; i < SPACE; i++) pp_space (buffer); } while (0)
 
@@ -2978,3 +2985,7 @@ percent_G_format (text_info *text)
   tree block = gimple_block (stmt);
   percent_K_format (text, gimple_location (stmt), block);
 }
+
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
index e6e9ffa90843b9bc8bc38ed53b5f6832df0a0d06..a9449916de9ad4236514264ef5eef35f9b545829 100644 (file)
@@ -99,7 +99,7 @@ do_warn_nonnull_compare (function *fun, tree arg)
              ? integer_zerop (op) : integer_minus_onep (op))
          && !gimple_no_warning_p (stmt))
        warning_at (loc, OPT_Wnonnull_compare,
-                   "nonnull argument %qD compared to NULL", arg);
+                   "%<nonnull%> argument %qD compared to NULL", arg);
     }
 }
 
index 89b203129689219e5dd084036fc50bd25f9193a2..33e4c0356eecbc5910909b87f9218481b1080b45 100644 (file)
@@ -52,11 +52,18 @@ open_graph_file (const char *base, const char *mode)
 
   fp = fopen (buf, mode);
   if (fp == NULL)
-    fatal_error (input_location, "can%'t open %s: %m", buf);
+    fatal_error (input_location, "cannot open %s: %m", buf);
 
   return fp;
 }
 
+/* Disable warnings about quoting issues in the pp_xxx calls below
+   that (intentionally) don't follow GCC diagnostic conventions.  */
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 /* Draw a basic block BB belonging to the function with FUNCDEF_NO
    as its unique number.  */
 static void
@@ -381,3 +388,7 @@ finish_graph_dump_file (const char *base)
   end_graph_dump (fp);
   fclose (fp);
 }
+
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
index a3b3c69c4912c2516005be794ca9a40feb4c596d..71a849b2e1de38c3588275506ba8332e48ce5934 100644 (file)
@@ -1,3 +1,7 @@
+2019-06-05  Martin Sebor  <msebor@redhat.com>
+
+       * lto-common.c (lto_file_finalize): Adjust quoting and hyphenation.
+
 2019-05-16  Martin Sebor  <msebor@redhat.com>
 
         * lto-dump.c (lto_main): Same.
index 078075ccd48989d0f3c39c94881d4d59331ea7aa..9d2f9c57780a2ac18edd4aa56622f87d76a3d76a 100644 (file)
@@ -2061,7 +2061,8 @@ lto_file_finalize (struct lto_file_decl_data *file_data, lto_file *file)
   data = lto_get_section_data (file_data, LTO_section_decls, NULL, &len);
   if (data == NULL)
     {
-      internal_error ("cannot read LTO decls from %s", file_data->file_name);
+      internal_error ("cannot read %<LTO_section_decls%> from %s",
+                     file_data->file_name);
       return;
     }
   /* Frees resolutions.  */
index be06df7c339eeecef9721549bf1f6734f02db577..d001a508908af05c010ca078fb521b0db7fa7234 100644 (file)
@@ -1,3 +1,8 @@
+2019-06-05  Martin Sebor  <msebor@redhat.com>
+
+       * objc-act.c (objc_build_setter_call): Adjust quoting and hyphenation.
+       * objc-encoding.c (encode_gnu_bitfield): Same.
+
 2019-05-18  Iain Sandoe  <iain@sandoe.co.uk>
 
        * objc/objc-act.h (OCTI_INSTANCE_TYPE, OCTI_INSTANCETYPE_NAME): New.
index 2173092ae2647398c066ec735de11e4f854d5003..6c188041291f3ddefb342e40bf5f359ddca5c912 100644 (file)
@@ -1747,7 +1747,7 @@ objc_build_setter_call (tree lhs, tree rhs)
 
   if (PROPERTY_READONLY (property_decl))
     {
-      error ("readonly property cannot be set");
+      error ("%qs property cannot be set", "readonly");
       return error_mark_node;
     }
   else
index 2db7c098f30c29e183ae74ba76835fe7994d058c..91ad7d9547ef017cd27496ba165ad0dbd98e22c3 100644 (file)
@@ -801,7 +801,7 @@ encode_gnu_bitfield (int position, tree type, int size)
   else
     {
       /* Do not do any encoding, produce an error and keep going.  */
-      error ("trying to encode non-integer type as a bitfield");
+      error ("trying to encode non-integer type as a bit-field");
       return;
     }
 
index 8456dcc697bbb3a0078afd00a948bfa3d558446d..660dfe63858c41867d27a5ca25216bf5ba932cf6 100644 (file)
@@ -1234,7 +1234,7 @@ cmdline_handle_error (location_t loc, const struct cl_option *option,
 {
   if (errors & CL_ERR_DISABLED)
     {
-      error_at (loc, "command line option %qs"
+      error_at (loc, "command-line option %qs"
                     " is not supported by this configuration", opt);
       return true;
     }
@@ -1323,7 +1323,7 @@ read_cmdline_option (struct gcc_options *opts,
   if (decoded->opt_index == OPT_SPECIAL_unknown)
     {
       if (handlers->unknown_option_callback (decoded))
-       error_at (loc, "unrecognized command line option %qs", decoded->arg);
+       error_at (loc, "unrecognized command-line option %qs", decoded->arg);
       return;
     }
 
@@ -1355,7 +1355,7 @@ read_cmdline_option (struct gcc_options *opts,
 
   if (!handle_option (opts, opts_set, decoded, lang_mask, DK_UNSPECIFIED,
                      loc, handlers, false, dc))
-    error_at (loc, "unrecognized command line option %qs", opt);
+    error_at (loc, "unrecognized command-line option %qs", opt);
 }
 
 /* Set any field in OPTS, and OPTS_SET if not NULL, for option
index 4aca400b815ff5a042da3dcb837f716e142ff046..bf4db7759283805c77c001a33b5d85a279bbc4fb 100644 (file)
@@ -99,13 +99,13 @@ complain_wrong_lang (const struct cl_decoded_option *decoded,
     bad_lang = write_langs (lang_mask);
 
   if (opt_flags == CL_DRIVER)
-    error ("command line option %qs is valid for the driver but not for %s",
+    error ("command-line option %qs is valid for the driver but not for %s",
           text, bad_lang);
   else if (lang_mask == CL_DRIVER)
     gcc_unreachable ();
   else
     /* Eventually this should become a hard error IMO.  */
-    warning (0, "command line option %qs is valid for %s but not for %s",
+    warning (0, "command-line option %qs is valid for %s but not for %s",
             text, ok_langs, bad_lang);
 
   free (ok_langs);
@@ -136,7 +136,7 @@ print_ignored_options (void)
 
       opt = ignored_options.pop ();
       warning_at (UNKNOWN_LOCATION, 0,
-                 "unrecognized command line option %qs", opt);
+                 "unrecognized command-line option %qs", opt);
     }
 }
 
@@ -379,12 +379,12 @@ handle_common_deferred_options (void)
 
        case OPT_fdump_:
          if (!g->get_dumps ()->dump_switch_p (opt->arg))
-           error ("unrecognized command line option %<-fdump-%s%>", opt->arg);
+           error ("unrecognized command-line option %<-fdump-%s%>", opt->arg);
          break;
 
         case OPT_fopt_info_:
          if (!opt_info_switch_p (opt->arg))
-           error ("unrecognized command line option %<-fopt-info-%s%>",
+           error ("unrecognized command-line option %<-fopt-info-%s%>",
                    opt->arg);
           break;
 
index fbb108568b3f899c10ce9b7fe12486d0751258d3..10948efddd910f9f9d424ad4abbe3a1e66b21e78 100644 (file)
@@ -54,6 +54,13 @@ along with GCC; see the file COPYING3.  If not see
 #include "print-rtl.h"
 #include "rtl-iter.h"
 
+/* Disable warnings about quoting issues in the pp_xxx calls below
+   that (intentionally) don't follow GCC diagnostic conventions.  */
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 /* String printed at beginning of each RTL when it is dumped.
    This string is set to ASM_COMMENT_START when the RTL is dumped in
    the assembly output file.  */
@@ -2142,3 +2149,7 @@ debug_bb_n_slim (int n)
 }
 
 #endif
+
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
index 83688b3c9c42d86215d45dc272adef15adfb318b..d4001300a4b2e6c9677fc64c4eeccf88b7ad1a3d 100644 (file)
@@ -67,6 +67,13 @@ along with GCC; see the file COPYING3.  If not see
 #include "pretty-print.h"
 #include "print-rtl.h"
 
+/* Disable warnings about quoting issues in the pp_xxx calls below
+   that (intentionally) don't follow GCC diagnostic conventions.  */
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 #ifdef INSN_SCHEDULING
 
 /* Some accessor macros for h_i_d members only used within this file.  */
@@ -3947,3 +3954,7 @@ make_pass_sched_fusion (gcc::context *ctxt)
 {
   return new pass_sched_fusion (ctxt);
 }
+
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
index 4bf37a181714186602521e0355380b9515b4e556..905ca05e578b503e11ec7ff160df005ea7669e60 100644 (file)
@@ -1002,6 +1002,15 @@ symtab_node::debug (void)
 
 /* Verify common part of symtab nodes.  */
 
+#if __GNUC__ >= 10
+/* Disable warnings about missing quoting in GCC diagnostics for
+   the verification errors.  Their format strings don't follow GCC
+   diagnostic conventions and the calls are ultimately followed by
+   one to internal_error.  */
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 DEBUG_FUNCTION bool
 symtab_node::verify_base (void)
 {
@@ -1288,6 +1297,10 @@ symtab_node::verify_symtab_nodes (void)
     }
 }
 
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
+
 /* Make DECL local.  FIXME: We shouldn't need to mess with rtl this early,
    but other code such as notice_global_symbol generates rtl.  */
 
index 2446d6fbcfa65b177f69e746ac30333998e263ab..ea987365302eed66fd024ff3ab1984d10c1acb86 100644 (file)
@@ -8,27 +8,27 @@
 
 void foo(void *bar) __attribute__((nonnull(1)));
 
-void foo(void *bar) { if (!bar) abort(); } /* { dg-warning "nonnull argument" "bar compared to NULL" } */
+void foo(void *bar) { if (!bar) abort(); } /* { dg-warning "'nonnull' argument" "bar compared to NULL" } */
 
 extern int func (char *, char *, char *, char *) __attribute__((nonnull));
 
 int
 func (char *cp1, char *cp2, char *cp3, char *cp4)
 {
-  if (cp1) /* { dg-warning "nonnull argument" "cp1 compared to NULL" } */
+  if (cp1) /* { dg-warning "'nonnull' argument" "cp1 compared to NULL" } */
     return 1;
 
-  if (cp2 == NULL) /* { dg-warning "nonnull argument" "cp2 compared to NULL" } */
+  if (cp2 == NULL) /* { dg-warning "'nonnull' argument" "cp2 compared to NULL" } */
     return 2;
 
-  if (NULL != cp3) /* { dg-warning "nonnull argument" "cp3 compared to NULL" } */
+  if (NULL != cp3) /* { dg-warning "'nonnull' argument" "cp3 compared to NULL" } */
     return 3;
 
-  return cp4 != 0 ? 0 : 1; /* { dg-warning "nonnull argument" "cp4 compared to NULL" } */
+  return cp4 != 0 ? 0 : 1; /* { dg-warning "'nonnull' argument" "cp4 compared to NULL" } */
 }
 
 __attribute__((nonnull (1))) int
 func2 (char *cp)
 {
-  return (cp != NULL) ? 1 : 0; /* { dg-warning "nonnull argument" "cp compared to NULL" { xfail c++ } } */
+  return (cp != NULL) ? 1 : 0; /* { dg-warning "'nonnull' argument" "cp compared to NULL" { xfail c++ } } */
 }
index ebd17a21f030985d44fdec770341c6b05580033f..19574cd11046f9a885a9de12587b044b2beb4128 100644 (file)
@@ -7,19 +7,19 @@ void bar (char **);
 __attribute__((nonnull (1, 3))) int
 foo (char *cp1, char *cp2, char *cp3, char *cp4)
 {
-  if (cp1 == (char *) 0) /* { dg-warning "nonnull argument" "cp1 compared to NULL" } */
+  if (cp1 == (char *) 0) /* { dg-warning "'nonnull' argument" "cp1 compared to NULL" } */
     return 1;
 
   cp1 = cp2;
-  if (cp1 == (char *) 0) /* { dg-bogus "nonnull argument" } */
+  if (cp1 == (char *) 0) /* { dg-bogus "'nonnull' argument" } */
     return 2;
 
-  if (!cp4)       /* { dg-bogus "nonnull argument" } */
+  if (!cp4)       /* { dg-bogus "'nonnull' argument" } */
     return 3;
 
   char **p = &cp3;
   bar (p);
-  if (cp3 == (char *) 0) /* { dg-bogus "nonnull argument" } */
+  if (cp3 == (char *) 0) /* { dg-bogus "'nonnull' argument" } */
     return 4;
 
   return 5;
index d2ccb24f4fdb270401ac18ba42075f0cdd418b99..42081c889f265132be17e27c5c6e49a7cf2cae2e 100644 (file)
@@ -7,5 +7,5 @@ enum { r = 1 };
 __attribute__ ((nonnull (r))) int
 f (int *p)
 {
-  return p == 0; /* { dg-warning "nonnull argument 'p' compared to NULL" } */
+  return p == 0; /* { dg-warning "'nonnull' argument 'p' compared to NULL" } */
 }
index 25e3721df939009262c7cb757e7f9c71bfe441f3..11075dd0e061f2fec4e82126c3fde703f565ee25 100644 (file)
@@ -6,5 +6,5 @@ int foo (char *__restrict buf, const char *__restrict fmt, ...);
 void f(void)
 {
   char buf[100] = "hello";
-  foo (buf, "%s-%s", buf, "world"); /*  { dg-warning "passing argument 1 to restrict-qualified parameter aliases with argument 3" } */
+  foo (buf, "%s-%s", buf, "world"); /*  { dg-warning "passing argument 1 to 'restrict'-qualified parameter aliases with argument 3" } */
 }
index bfcd9448e03e7e59bb1162e272e56d98400db359..887576c39761c292d653a13934278d9a82645daf 100644 (file)
@@ -5,7 +5,7 @@ void f(int *__restrict x, int *y, int *__restrict z, int *w);
 
 void foo(int alpha, int beta)
 {
-  f (&alpha, &beta, &alpha, &alpha); /* { dg-warning "passing argument 1 to restrict-qualified parameter aliases with arguments 3, 4" } */
+  f (&alpha, &beta, &alpha, &alpha); /* { dg-warning "passing argument 1 to 'restrict'-qualified parameter aliases with arguments 3, 4" } */
 
 /* { dg-begin-multiline-output "" }
    f (&alpha, &beta, &alpha, &alpha);
index 8cbacabba62466e63d47bac4b7d45f1c23c586c1..8d4b1fc03ee5b13fefa3373677318fd8213540aa 100644 (file)
@@ -5,5 +5,5 @@ void f(int *x, int *__restrict y);
 
 void foo(int a)
 {
-  f (&a, &a); /* { dg-warning "passing argument 2 to restrict-qualified parameter aliases with argument 1" } */
+  f (&a, &a); /* { dg-warning "passing argument 2 to 'restrict'-qualified parameter aliases with argument 1" } */
 }
index 20d85ff873ec6bd11daad7f15537807739b1e011..6568fc6202c78ca7bb30d98ec35d26ec53a31c64 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
 // { dg-options "-Wabi=11 -x c" }
 // { dg-additional-sources "empty12a.c" }
-// { dg-prune-output "command line option" }
+// { dg-prune-output "command-line option" }
 
 #include "empty12.h"
 extern "C" void fun(struct dummy, struct foo);
index 0cb9a373e358072cc09688dc71a4b9fdd32d77b0..9ec188760c72680c1f1e17037578026c058d9920 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
 // { dg-options "-x c -fabi-version=11" }
 // { dg-additional-sources "empty13a.c" }
-// { dg-prune-output "command line option" }
+// { dg-prune-output "command-line option" }
 
 #include "empty13.h"
 extern "C" void fun(struct dummy, struct foo);
index 2868d8ad3f31d526e38bfadc71c5da033d8856ca..7deb463f5e4810c03882addb400f22f2b7951299 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
 // { dg-options "-Wabi=11 -x c" }
 // { dg-additional-sources "empty14a.c" }
-// { dg-prune-output "command line option" }
+// { dg-prune-output "command-line option" }
 
 #include "empty14.h"
 extern "C" void fun(struct dummy, struct foo);
index 12385f78c7895e967c5c6c1c4ade98fbee202a83..fd36194b459e59d746ac99029232b42fb933d68b 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
 // { dg-options "-Wabi=11 -x c" }
 // { dg-additional-sources "empty15a.c" }
-// { dg-prune-output "command line option" }
+// { dg-prune-output "command-line option" }
 
 #include "empty15.h"
 extern "C" void fun(struct dummy, struct foo);
index 1ca52f9011e6ce661a7dedbb0794ea84e554ea85..024b00e74327ac6406b1c481724c76b89b243725 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
 // { dg-options "-Wabi=11 -x c" }
 // { dg-additional-sources "empty16a.c" }
-// { dg-prune-output "command line option" }
+// { dg-prune-output "command-line option" }
 
 #include "empty16.h"
 extern "C" void fun(struct dummy, struct foo);
index d386e5481afc866871ae5ecf7b07d9c511fd66a1..a6e58fa4d5f822908d7ce15965f434662ac2c7ae 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
 // { dg-options "-Wabi=11 -x c" }
 // { dg-additional-sources "empty17a.c" }
-// { dg-prune-output "command line option" }
+// { dg-prune-output "command-line option" }
 
 #include "empty17.h"
 extern "C" void fun(struct dummy, struct foo);
index be69c6a2115b8b4681846ac2884287afd9fd566e..6e64dae8d47ecccc38b99c9eb6259419f23a12a1 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
 // { dg-options "-Wabi=11 -x c" }
 // { dg-additional-sources "empty18a.c" }
-// { dg-prune-output "command line option" }
+// { dg-prune-output "command-line option" }
 
 #include "empty18.h"
 extern "C" void fun(struct dummy, struct foo);
index 84f5b75558bf7f80cd0f9421d4d1198997f3d91b..8707db86be66e27c3c060e9f1dafdbaf04737fdf 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
 // { dg-options "-Wabi=11 -x c" }
 // { dg-additional-sources "empty19a.c" }
-// { dg-prune-output "command line option" }
+// { dg-prune-output "command-line option" }
 
 #include "empty19.h"
 extern "C" void fun(struct dummy, struct foo);
index f4f4a02bf31f5cada7b908b6c93109426bd44718..d3720f86fdebf8dc6f5327976b807f6cecfa8cb4 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
 // { dg-options "-Wabi=11 -x c" }
 // { dg-additional-sources "empty22a.c" }
-// { dg-prune-output "command line option" }
+// { dg-prune-output "command-line option" }
 
 #include "empty22.h"
 extern "C" void fun(struct dummy, struct foo);
index da6ef51ff0db2d2b8ca01cc994e667cfc36b9aa1..50a4c266ca00653112af6f6f6ed827cb9a68bef3 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
 // { dg-options "-Wabi=11 -x c" }
 // { dg-additional-sources "empty25a.c" }
-// { dg-prune-output "command line option" }
+// { dg-prune-output "command-line option" }
 
 #include "empty25.h"
 extern "C" void fun(struct dummy, struct foo);
index ab2f54d8dab43b0ca0ce0f57063dfc32308828ed..785cdc7d9743092203e8a70f2f6d149c80e2b502 100644 (file)
@@ -2,7 +2,7 @@
 // { dg-do run { target { { i?86-*-* x86_64-*-* } && { ! { ia32 } } } } }
 // { dg-options "-Wabi=11 -x c" }
 // { dg-additional-sources "empty26a.c" }
-// { dg-prune-output "command line option" }
+// { dg-prune-output "command-line option" }
 
 #include "empty26.h"
 extern "C" void fun(struct dummy, struct foo);
index 7ac7872efb585294572aa8b387dda7fe5a27fba2..019a8ce1130ed579cd4c84cec515c71aea46bf21 100644 (file)
@@ -17,7 +17,7 @@ struct X
   template<typename T>
   static concept bool f6() { return true; } // { dg-error "a concept cannot be a member function" }
   static concept bool x; // { dg-error "declared 'concept'" }
-                        // { dg-error "uninitialized const" "" { target *-*-* } .-1 }
+                        // { dg-error "uninitialized 'const" "" { target *-*-* } .-1 }
   concept int x2; // { dg-error "declared 'concept'" }
   concept ~X(); // { dg-error "a destructor cannot be 'concept'" }
   concept X(); // { dg-error "a constructor cannot be 'concept'" }
index 1080168dce19110451e927f89c0fd62034d39a3c..d1b1b096c1e50ba7d732c8ab4eb6e73e4dc513cd 100644 (file)
@@ -12,5 +12,5 @@ int foo (double);
 int
 main ()
 {
-  return foo (s.bar);          // { dg-error "cannot bind bitfield" }
+  return foo (s.bar);          // { dg-error "cannot bind bit-field" }
 }
index a38dce003a745d0758536ce145df48982b8aae7f..73942c5f0a513ae1a15e49d83e56defbae5fd9a9 100644 (file)
@@ -16,7 +16,7 @@ struct S { int s : 5; int t; void foo (); } s;
 auto c = __builtin_addressof (s);
 auto d = addressof (s);
 auto e = __builtin_addressof (s.s);            // { dg-error "attempt to take address of bit-field" }
-auto f = addressof (s.s);                      // { dg-error "cannot bind bitfield" }
+auto f = addressof (s.s);                      // { dg-error "cannot bind bit-field" }
 auto g = __builtin_addressof (S{});            // { dg-error "taking address of rvalue" }
 auto h = addressof (S{});                      // { dg-error "cannot bind non-const lvalue reference of type" }
 auto i = __builtin_addressof (S::t);           // { dg-error "invalid use of non-static data member" }
index 388a73488e7a363ffab2b0fdfb053942b6ee96ec..733d494c4d71d2ff58eb66cfc8f14d2040ac870a 100644 (file)
@@ -5,5 +5,5 @@ constexpr int something() { return 3; }
 
 int main() {
   if (constexpr long v = something()) {}
-  if (static long v = something()) { } // { dg-error "decl-specifier invalid" }
+  if (static long v = something()) { } // { dg-error "'decl-specifier' invalid" }
 }
index 336699292a2eb4193b71c14c21725d7bc0bf0bfa..9b52a6e00ef929e425d282bdb2bee0a71745410e 100644 (file)
@@ -61,7 +61,7 @@ struct pixel2 {          // { dg-message "no user-provided default constructor" }
   int x, y;
 };
 constexpr pixel2 ur = { 1294, 1024 };// OK
-constexpr pixel2 origin;            // { dg-error "uninitialized const" }
+constexpr pixel2 origin;            // { dg-error "uninitialized 'const" }
 
 constexpr const int* addr(const int& ir) { return &ir; } // OK
 
index 1861d404782624181ab25edc741be802c7089285..5f54c635e643af45bfa2004ac88dff3adb0d4ccb 100644 (file)
@@ -15,7 +15,7 @@ constexpr A1 a1 = A1();
 extern constexpr int i2; // { dg-error "definition" }
 
 // error: missing initializer
-constexpr A1 a2; // { dg-error "uninitialized const" }
+constexpr A1 a2; // { dg-error "uninitialized 'const" }
 
 const constexpr A1 a3 = A1();
 
index 45b09c178120e39cbd39d255dec79b0d1fd7785c..b7b31438491cbbecce2a07bc478cf3b0264caf3f 100644 (file)
@@ -21,7 +21,7 @@ struct B // { dg-message "user-provided default constructor" }
   B() = default;               // { dg-message "not user-provided" }
 };
 
-const B b;                     // { dg-error "uninitialized const" }
+const B b;                     // { dg-error "uninitialized 'const" }
 
 struct C
 {
index 816077d540147fc253559000396e033b695a5832..7a467a154b0bc7fa44f6e56462fbc9dc5ddb2d9a 100644 (file)
@@ -22,55 +22,55 @@ operator"" J(unsigned long long n) // { dg-warning "1:integer suffix .J. shadowe
 //  Floating-point imaginary...
 
 constexpr long double
-operator"" i(long double n) // { dg-warning "1:floating point suffix .i. shadowed by implementation" "" { target c++11_only } }
+operator"" i(long double n) // { dg-warning "1:floating-point suffix .i. shadowed by implementation" "" { target c++11_only } }
 { return 4.0L * n + 0.0L; }
 
 constexpr long double
-operator"" I(long double n) // { dg-warning "1:floating point suffix .I. shadowed by implementation" }
+operator"" I(long double n) // { dg-warning "1:floating-point suffix .I. shadowed by implementation" }
 { return 4.0L * n + 1.0L; }
 
 constexpr long double
-operator"" j(long double n) // { dg-warning "1:floating point suffix .j. shadowed by implementation" }
+operator"" j(long double n) // { dg-warning "1:floating-point suffix .j. shadowed by implementation" }
 { return 4.0L * n + 2.0L; }
 
 constexpr long double
-operator"" J(long double n) // { dg-warning "1:floating point suffix .J. shadowed by implementation" }
+operator"" J(long double n) // { dg-warning "1:floating-point suffix .J. shadowed by implementation" }
 { return 4.0L * n + 3.0L; }
 
 //  Fixed-point...
 
 constexpr long double
-operator"" k(long double n) // { dg-warning "1:floating point suffix .k. shadowed by implementation" }
+operator"" k(long double n) // { dg-warning "1:floating-point suffix .k. shadowed by implementation" }
 { return 4 * (n + 1) + 0; }
 
 constexpr long double
-operator"" K(long double n) // { dg-warning "1:floating point suffix .K. shadowed by implementation" }
+operator"" K(long double n) // { dg-warning "1:floating-point suffix .K. shadowed by implementation" }
 { return 4 * (n + 1) + 1; }
 
 constexpr long double
-operator"" r(long double n) // { dg-warning "1:floating point suffix .r. shadowed by implementation" }
+operator"" r(long double n) // { dg-warning "1:floating-point suffix .r. shadowed by implementation" }
 { return 4 * (n + 1) + 2; }
 
 constexpr long double
-operator"" R(long double n) // { dg-warning "1:floating point suffix .R. shadowed by implementation" }
+operator"" R(long double n) // { dg-warning "1:floating-point suffix .R. shadowed by implementation" }
 { return 4 * (n + 1) + 3; }
 
 //  Machine-defined...
 
 constexpr long double
-operator"" w(long double n) // { dg-warning "1:floating point suffix .w. shadowed by implementation" }
+operator"" w(long double n) // { dg-warning "1:floating-point suffix .w. shadowed by implementation" }
 { return 4 * (n + 2) + 0; }
 
 constexpr long double
-operator"" W(long double n) // { dg-warning "1:floating point suffix .W. shadowed by implementation" }
+operator"" W(long double n) // { dg-warning "1:floating-point suffix .W. shadowed by implementation" }
 { return 4 * (n + 2) + 1; }
 
 constexpr long double
-operator"" q(long double n) // { dg-warning "1:floating point suffix .q. shadowed by implementation" }
+operator"" q(long double n) // { dg-warning "1:floating-point suffix .q. shadowed by implementation" }
 { return 4 * (n + 2) + 2; }
 
 constexpr long double
-operator"" Q(long double n) // { dg-warning "1:floating point suffix .Q. shadowed by implementation" }
+operator"" Q(long double n) // { dg-warning "1:floating-point suffix .Q. shadowed by implementation" }
 { return 4 * (n + 2) + 3; }
 
 int
index ff23966051c72aef774cb4923f8c207c1d914ea0..75117c717cfc3acfd2a7725dcb9a5e64141966b7 100644 (file)
@@ -34,8 +34,8 @@ struct Derived3 : Base // { dg-message "user-provided default constructor" }
 
 void f()
 {
-    const A a; // { dg-error "uninitialized const" }
-    const Derived d; // { dg-error "uninitialized const" }
-    const Derived2 d2; // { dg-error "uninitialized const" }
-    const Derived3 d3; // { dg-error "uninitialized const" }
+    const A a; // { dg-error "uninitialized 'const" }
+    const Derived d; // { dg-error "uninitialized 'const" }
+    const Derived2 d2; // { dg-error "uninitialized 'const" }
+    const Derived3 d3; // { dg-error "uninitialized 'const" }
 }
index 17b7a6419578de7074277ad7dc99603954b01ffb..c256257a5c11d5ed9fe04ec7afd690c1e3d1e135 100644 (file)
@@ -7,7 +7,7 @@ const int b[5] = { 1, 2, 3, 4, 5 };
 extern const int c[4];
 constexpr const int *d = &a[0];
 constexpr const int *d2 = a;
-constexpr const int *e = &a[1];                // { dg-error "non-zero array subscript '1' is used with array 'a' of type 'const int \\\[\\\]' with unknown bounds" }
+constexpr const int *e = &a[1];                // { dg-error "nonzero array subscript '1' is used with array 'a' of type 'const int \\\[\\\]' with unknown bounds" }
 constexpr const int *f = &b[0];
 constexpr const int *f2 = b;
 constexpr const int *g = &b[5];
@@ -30,7 +30,7 @@ foo ()
 
 constexpr const int *m = &l[0];
 constexpr const int *m2 = l;
-constexpr const int *n = &l[1];                // { dg-error "non-zero array subscript '1' is used with array 'l' of type 'const int \\\[\\\]' with unknown bounds" }
+constexpr const int *n = &l[1];                // { dg-error "nonzero array subscript '1' is used with array 'l' of type 'const int \\\[\\\]' with unknown bounds" }
 static_assert (d == d2 && f == f2 && i == i2 && m == m2, "");
 const int o[] = { 1, 2 };
 constexpr const int *p = &o[0];
@@ -40,7 +40,7 @@ constexpr const int *r = &o[3];               // { dg-error "array subscript value '3' is out
 struct S { char a; char b[]; } s;
 constexpr const char *t = &s.b[0];
 constexpr const char *t2 = s.b;
-constexpr const char *u = &s.b[1];     // { dg-error "non-zero array subscript '1' is used with array of type 'char \\\[\\\]' with unknown bounds" }
+constexpr const char *u = &s.b[1];     // { dg-error "nonzero array subscript '1' is used with array of type 'char \\\[\\\]' with unknown bounds" }
 struct V { int a; };
 extern V v[];
 constexpr V *w = &v[0];
index 72b8546ae58e491163ae7abeb5203bd67af85d7f..d251c7449991cbcbed801d5cceb17ce2924925ff 100644 (file)
@@ -22,55 +22,55 @@ operator"" J(unsigned long long n) // { dg-warning "1:integer suffix .J. shadowe
 //  Floating-point imaginary...
 
 constexpr long double
-operator"" i(long double n) // { dg-warning "1:floating point suffix .i. shadowed by implementation" "" { target c++11_only } }
+operator"" i(long double n) // { dg-warning "1:floating-point suffix .i. shadowed by implementation" "" { target c++11_only } }
 { return 4.0L * n + 0.0L; }
 
 constexpr long double
-operator"" I(long double n) // { dg-warning "1:floating point suffix .I. shadowed by implementation" }
+operator"" I(long double n) // { dg-warning "1:floating-point suffix .I. shadowed by implementation" }
 { return 4.0L * n + 1.0L; }
 
 constexpr long double
-operator"" j(long double n) // { dg-warning "1:floating point suffix .j. shadowed by implementation" }
+operator"" j(long double n) // { dg-warning "1:floating-point suffix .j. shadowed by implementation" }
 { return 4.0L * n + 2.0L; }
 
 constexpr long double
-operator"" J(long double n) // { dg-warning "1:floating point suffix .J. shadowed by implementation" }
+operator"" J(long double n) // { dg-warning "1:floating-point suffix .J. shadowed by implementation" }
 { return 4.0L * n + 3.0L; }
 
 //  Fixed-point...
 
 constexpr long double
-operator"" k(long double n) // { dg-warning "1:floating point suffix .k. shadowed by implementation" }
+operator"" k(long double n) // { dg-warning "1:floating-point suffix .k. shadowed by implementation" }
 { return 4 * (n + 1) + 0; }
 
 constexpr long double
-operator"" K(long double n) // { dg-warning "1:floating point suffix .K. shadowed by implementation" }
+operator"" K(long double n) // { dg-warning "1:floating-point suffix .K. shadowed by implementation" }
 { return 4 * (n + 1) + 1; }
 
 constexpr long double
-operator"" r(long double n) // { dg-warning "1:floating point suffix .r. shadowed by implementation" }
+operator"" r(long double n) // { dg-warning "1:floating-point suffix .r. shadowed by implementation" }
 { return 4 * (n + 1) + 2; }
 
 constexpr long double
-operator"" R(long double n) // { dg-warning "1:floating point suffix .R. shadowed by implementation" }
+operator"" R(long double n) // { dg-warning "1:floating-point suffix .R. shadowed by implementation" }
 { return 4 * (n + 1) + 3; }
 
 //  Machine-defined...
 
 constexpr long double
-operator"" w(long double n) // { dg-warning "1:floating point suffix .w. shadowed by implementation" }
+operator"" w(long double n) // { dg-warning "1:floating-point suffix .w. shadowed by implementation" }
 { return 4 * (n + 2) + 0; }
 
 constexpr long double
-operator"" W(long double n) // { dg-warning "1:floating point suffix .W. shadowed by implementation" }
+operator"" W(long double n) // { dg-warning "1:floating-point suffix .W. shadowed by implementation" }
 { return 4 * (n + 2) + 1; }
 
 constexpr long double
-operator"" q(long double n) // { dg-warning "1:floating point suffix .q. shadowed by implementation" }
+operator"" q(long double n) // { dg-warning "1:floating-point suffix .q. shadowed by implementation" }
 { return 4 * (n + 2) + 2; }
 
 constexpr long double
-operator"" Q(long double n) // { dg-warning "1:floating point suffix .Q. shadowed by implementation" }
+operator"" Q(long double n) // { dg-warning "1:floating-point suffix .Q. shadowed by implementation" }
 { return 4 * (n + 2) + 3; }
 
 int
index c63559060e9b93ca78b8106b4e53e36dea59a95e..fdddd8d84ed05d6ac0d028f9e3a404a7bbf67d2e 100644 (file)
@@ -2,7 +2,7 @@
 
 //  Test that the standard suffixes shadow any user-defined suffixes of the same name.
 long double
-operator"" L(long double x)  // { dg-warning "floating point suffix|shadowed by implementation" }
+operator"" L(long double x)  // { dg-warning "floating-point suffix|shadowed by implementation" }
 { return x; }
 
 unsigned long long int
@@ -10,7 +10,7 @@ operator"" ULL(unsigned long long int k)  // { dg-warning "integer suffix|shadow
 { return k; }
 
 long double
-operator"" l(long double x)  // { dg-warning "floating point suffix|shadowed by implementation" }
+operator"" l(long double x)  // { dg-warning "floating-point suffix|shadowed by implementation" }
 { return x; }
 
 unsigned long long int
index 1a016fa8216bb3b187515eeab27cedaa41e12ebc..236f6ecb133296695d3defd6643f6a157006bae5 100644 (file)
@@ -47,7 +47,7 @@ struct W
 {
   static inline int var24;                     // { dg-warning "10:inline variables are only available with" "" { target c++14_down } }
   static inline const int var25;               // { dg-warning "10:inline variables are only available with" "" { target c++14_down } }
-                                               // { dg-error "uninitialized const" "" { target *-*-* } .-1 }
+                                               // { dg-error "uninitialized 'const" "" { target *-*-* } .-1 }
   static inline int var26 = 5;                 // { dg-warning "10:inline variables are only available with" "" { target c++14_down } }
   static inline const int var27 = 6;           // { dg-warning "10:inline variables are only available with" "" { target c++14_down } }
   static inline double var28 = { 4.0 };                // { dg-warning "10:inline variables are only available with" "" { target c++14_down } }
@@ -90,7 +90,7 @@ struct Z
 {
   static inline int var37;                     // { dg-warning "10:inline variables are only available with" "" { target c++14_down } }
   static inline const int var38;               // { dg-warning "10:inline variables are only available with" "" { target c++14_down } }
-                                               // { dg-error "uninitialized const" "" { target *-*-* } .-1 }
+                                               // { dg-error "uninitialized 'const" "" { target *-*-* } .-1 }
   static inline int var39 = 5;                 // { dg-warning "10:inline variables are only available with" "" { target c++14_down } }
   static inline const int var40 = 6;           // { dg-warning "10:inline variables are only available with" "" { target c++14_down } }
   static inline double var41 = { 4.0 };                // { dg-warning "10:inline variables are only available with" "" { target c++14_down } }
index 1afaefd66b1b034cab6dfb7175d6db5009a896c3..5e77973d41f7918fc64d9f673423f9a5d2752678 100644 (file)
@@ -7,10 +7,10 @@ struct Foo { int a : 1; int b; };
 int main() {
   auto[a, b] = Foo();                  // { dg-warning "structured bindings only available with" "" { target c++14_down } }
 
-  auto f1 = [&] { return a; };         // { dg-error "cannot bind bitfield" }
-  auto f2 = [&a = a] { return a; };    // { dg-error "cannot bind bitfield" }
+  auto f1 = [&] { return a; };         // { dg-error "cannot bind bit-field" }
+  auto f2 = [&a = a] { return a; };    // { dg-error "cannot bind bit-field" }
                                        // { dg-warning "lambda capture initializers only available with" "" { target c++11_only } .-1 }
-  auto f3 = [&a] { return a; };                // { dg-error "cannot bind bitfield" }
+  auto f3 = [&a] { return a; };                // { dg-error "cannot bind bit-field" }
 
   auto g1 = [&] { return b; };
   auto g2 = [&b = b] { return b; };    // { dg-warning "lambda capture initializers only available with" "" { target c++11_only } }
index 299a30a91d2f1dc865966f7f2f79c19b0a233ec1..9b7ed05de0e3c87e4d91adebe503994c86faae22 100644 (file)
@@ -22,22 +22,22 @@ struct G { T t; }; // { dg-message "user-provided default constructor" }
 
 void f ()
 {
-  B const b;    // { dg-error "uninitialized const" }
+  B const b;    // { dg-error "uninitialized 'const" }
   extern B const bext;
 
-  C const c[ 1 ]; // { dg-error "uninitialized const" }
+  C const c[ 1 ]; // { dg-error "uninitialized 'const" }
   extern C const cext[ 1 ];
 
   D const d;
   extern D const dext;
 
-  E const e;   // { dg-error "uninitialized const" }
+  E const e;   // { dg-error "uninitialized 'const" }
   extern E const eext;
 
-  F<int> const f; // { dg-error "uninitialized const" }
+  F<int> const f; // { dg-error "uninitialized 'const" }
   extern F<int> const fext;
 
-  G<int> const g; // { dg-error "uninitialized const" }
+  G<int> const g; // { dg-error "uninitialized 'const" }
   extern G<int> const gext;
 }
 
@@ -48,7 +48,7 @@ struct I : A { int i; }; // { dg-message "user-provided default constructor" }
 template <class T>
 void g ()
 {
-  T const t; // { dg-error "uninitialized const" }
+  T const t; // { dg-error "uninitialized 'const" }
   extern T const text;
 }
 
index ec4dad70620dcba591e9a960db8d810eba15d1b4..334ed8a75e06bfd8fc614dffedaccb1a06249b73 100644 (file)
@@ -44,9 +44,9 @@ void f(X &x, bool b)
   (void)(b ? x.i : x.k);
   (void)(b ? x.j : x.k);
 
-  g (b ? x.i : x.j); // { dg-error "cannot bind bitfield" }
-  g (b ? x.i : x.k); // { dg-error "cannot bind bitfield" }
-  g (b ? x.j : x.k); // { dg-error "cannot bind bitfield" }
+  g (b ? x.i : x.j); // { dg-error "cannot bind bit-field" }
+  g (b ? x.i : x.k); // { dg-error "cannot bind bit-field" }
+  g (b ? x.j : x.k); // { dg-error "cannot bind bit-field" }
 
   // It's not entirely clear whether these should be accepted.  The
   // conditional expressions are lvalues for sure, and 8.5.3/5 exempts
index 36b3fa53f3f66ff0e2ad3593694badc24c1f2be9..1b23611bdc0d8b600e147eeec19a28efab8ce2dd 100644 (file)
@@ -4,7 +4,7 @@
 
 double a, b;
 _Complex double c, d;
-int f(void) { return a == b; } /* { dg-warning "comparing floating point" } */
-int g(void) { return c == d; } /* { dg-warning "comparing floating point" } */
-int h(void) { return a != b; } /* { dg-warning "comparing floating point" } */
-int i(void) { return c != d; } /* { dg-warning "comparing floating point" } */
+int f(void) { return a == b; } /* { dg-warning "comparing floating-point" } */
+int g(void) { return c == d; } /* { dg-warning "comparing floating-point" } */
+int h(void) { return a != b; } /* { dg-warning "comparing floating-point" } */
+int i(void) { return c != d; } /* { dg-warning "comparing floating-point" } */
index fe844f18c43f792056ea476df5f03de234f9d211..441ff3482bcc7d2ac14fbd71f89b5dbe10309567 100644 (file)
@@ -7,6 +7,6 @@ void foo (char *__restrict, char *__restrict = __null);
 void
 bar (char *p)
 {
-  foo (p, p);  // { dg-warning "to restrict-qualified parameter aliases with" }
+  foo (p, p);  // { dg-warning "to 'restrict'-qualified parameter aliases with" }
   foo (p);
 }
index 4bab03bc850628f55f38822b0c2ea33da42333ef..72957d0f5512344e5686a7b9b1adbacd45490a55 100644 (file)
@@ -8,8 +8,8 @@ template <int N>
 void
 bar (char **p)
 {
-  foo (p[0], p[0]);    // { dg-warning "to restrict-qualified parameter aliases with" }
-  foo (p[0], p[N]);    // { dg-warning "to restrict-qualified parameter aliases with" }
+  foo (p[0], p[0]);    // { dg-warning "to 'restrict'-qualified parameter aliases with" }
+  foo (p[0], p[N]);    // { dg-warning "to 'restrict'-qualified parameter aliases with" }
   foo (p[0]);
 }
 
@@ -17,8 +17,8 @@ template <int N>
 void
 bar2 (char **p)
 {
-  foo (p[0], p[0]);    // { dg-warning "to restrict-qualified parameter aliases with" }
-  foo (p[0], p[N]);    // { dg-bogus "to restrict-qualified parameter aliases with" }
+  foo (p[0], p[0]);    // { dg-warning "to 'restrict'-qualified parameter aliases with" }
+  foo (p[0], p[N]);    // { dg-bogus "to 'restrict'-qualified parameter aliases with" }
   foo (p[0]);
 }
 
index d82fa31d957dbdfd5866a36f9ade82847f0261e5..e869b0f5de94a408995e84946fc1ec52021ac8d9 100644 (file)
@@ -16,4 +16,4 @@ void A::bar (B *)
 {
   foo ((int B::*) nullptr);
 }
-// { dg-warning "nonnull argument" "" {target "*-*-*"} 0 }
+// { dg-warning "'nonnull' argument" "" {target "*-*-*"} 0 }
index 330c148bb59d11f3515889163d0fbfe75a624dcc..fccb25aa7e5dba56f32f43b0e5f9120ff9a7aad5 100644 (file)
@@ -5,7 +5,7 @@ int foo()
 {
   unsigned char b = '1';
 
-  bool x = ~b; /* { dg-warning "promoted ~unsigned is always non-zero" } */
+  bool x = ~b; /* { dg-warning "promoted bitwise complement of an unsigned value is always nonzero" } */
 
   return 0;
 }
index 994ea6d95228a8dd0b9a01d667d90d1fc44310c6..f4d16e9760bd3f258673e93e94e764c0de4a97a9 100644 (file)
@@ -23,8 +23,8 @@ void fn(int i)
   int j;
 
   j = (i ? e1 : e2);    // { dg-warning "mismatch" }
-  d = (i ? e1 : 1.0);   // { dg-warning "non-enumeral" }
-  d = (i ? 1.0 : e2);   // { dg-warning "non-enumeral" }
+  d = (i ? e1 : 1.0);   // { dg-warning "non-enumerated" }
+  d = (i ? 1.0 : e2);   // { dg-warning "non-enumerated" }
   E1 e = (i ? e1 : e1); // ok
   j = (i ? 1 : e2);     // ok
   j = (i ? e1 : 1);     // ok
index 13cc6600c28d36debc6a1aeee2ff096a7ecf5db4..b77a3466036741be2c41f7adde6f5db6ce770d60 100644 (file)
@@ -3,15 +3,15 @@
 
 extern int t();
 
-static inline void __attribute__((__noinline__)) function_definition(void) {t();} /* { dg-warning "inline function \[^\n\]* given attribute noinline" } */
+static inline void __attribute__((__noinline__)) function_definition(void) {t();} /* { dg-warning "inline function \[^\n\]* given attribute 'noinline'" } */
 
-static inline void __attribute__((__noinline__)) function_declaration_both_before(void); /* { dg-warning "inline function \[^\n\]* given attribute noinline" } */
+static inline void __attribute__((__noinline__)) function_declaration_both_before(void); /* { dg-warning "inline function \[^\n\]* given attribute 'noinline'" } */
 
 static void function_declaration_both_before(void) {t();}
 
 static void function_declaration_both_after(void);
 
-static inline void __attribute__((__noinline__)) function_declaration_both_after(void); /* { dg-warning "(inline function \[^\n\]* given attribute noinline|declared inline after its definition)" } */
+static inline void __attribute__((__noinline__)) function_declaration_both_after(void); /* { dg-warning "(inline function \[^\n\]* given attribute .noinline.|declared inline after its definition)" } */
 
 static void function_declaration_both_after(void) {t();}
 
index e2349b6a4181b1c3cb4c42c243581b602383dce5..b2485bb7f0bf17b0cf8bc82f62f8004e0dd11a52 100644 (file)
@@ -4,7 +4,7 @@
 /* { dg-require-effective-target alloca } */
 
 static inline int __attribute__((noipa))
-fn1 (void) /* { dg-warning "inline function \[^\n\]* given attribute noinline" "" } */
+fn1 (void) /* { dg-warning "inline function \[^\n\]* given attribute 'noinline'" "" } */
 {
   return 1;
 }
index 75cc0779c5771bba70da914d839207e984a506ba..172a4a63e6ad5ba264a9b500d0d115d7e8a87807 100644 (file)
@@ -4,4 +4,4 @@
 typedef int vtype;
 
 extern vtype wv1;
-extern vtype Wv1a __attribute__((weakref ("wv1"))); /* { dg-error "weakref 'Wv1a' must have static linkage" } */
+extern vtype Wv1a __attribute__((weakref ("wv1"))); /* { dg-error "'weakref' symbol 'Wv1a' must have static linkage" } */
index 19ed4f4208d665aa910d938dbf93fad9325fdaa6..335a090d4f974595205223993a21d14a9e0bfce2 100644 (file)
@@ -24,8 +24,8 @@ f (void)
   (union u) l; /* { dg-error "cast to union type from type not present in union" } */
   (int) sv; /* { dg-error "aggregate value used where an integer was expected" } */
   (int) uv; /* { dg-error "aggregate value used where an integer was expected" } */
-  (float) sv; /* { dg-error "aggregate value used where a floating point was expected" } */
-  (float) uv; /* { dg-error "aggregate value used where a floating point was expected" } */
+  (float) sv; /* { dg-error "aggregate value used where a floating-point was expected" } */
+  (float) uv; /* { dg-error "aggregate value used where a floating-point was expected" } */
   (_Complex double) sv; /* { dg-error "aggregate value used where a complex was expected" } */
   (_Complex double) uv; /* { dg-error "aggregate value used where a complex was expected" } */
   (void *) sv; /* { dg-error "cannot convert to a pointer type" } */
index 24f63b2e8d46d2bfa7fe356b5b613e3026c5df51..2523ac4cbc98a15837a0ee5482061d6d47c45aca 100644 (file)
@@ -24,8 +24,8 @@ f (void)
   (union u) l; /* { dg-error "cast to union type from type not present in union" } */
   (int) sv; /* { dg-error "aggregate value used where an integer was expected" } */
   (int) uv; /* { dg-error "aggregate value used where an integer was expected" } */
-  (float) sv; /* { dg-error "aggregate value used where a floating point was expected" } */
-  (float) uv; /* { dg-error "aggregate value used where a floating point was expected" } */
+  (float) sv; /* { dg-error "aggregate value used where a floating-point was expected" } */
+  (float) uv; /* { dg-error "aggregate value used where a floating-point was expected" } */
   (_Complex double) sv; /* { dg-error "aggregate value used where a complex was expected" } */
   (_Complex double) uv; /* { dg-error "aggregate value used where a complex was expected" } */
   (void *) sv; /* { dg-error "cannot convert to a pointer type" } */
index d8ae3a0fce27ea837b1e2a0c624cc0679791150a..1e3f5f43c54a2d2909a36bf31dcc50658835e003 100644 (file)
@@ -24,8 +24,8 @@ f (void)
   (union u) l; /* { dg-error "cast to union type from type not present in union" } */
   (int) sv; /* { dg-error "aggregate value used where an integer was expected" } */
   (int) uv; /* { dg-error "aggregate value used where an integer was expected" } */
-  (float) sv; /* { dg-error "aggregate value used where a floating point was expected" } */
-  (float) uv; /* { dg-error "aggregate value used where a floating point was expected" } */
+  (float) sv; /* { dg-error "aggregate value used where a floating-point was expected" } */
+  (float) uv; /* { dg-error "aggregate value used where a floating-point was expected" } */
   (_Complex double) sv; /* { dg-error "aggregate value used where a complex was expected" } */
   (_Complex double) uv; /* { dg-error "aggregate value used where a complex was expected" } */
   (void *) sv; /* { dg-error "cannot convert to a pointer type" } */
index 8d22ba3f8c1860a5b29d1f616a9bf8804ba9c103..fcaf22db9b9071f207d8e0db4d5dec28a6ef821f 100644 (file)
@@ -31,10 +31,10 @@ f (void)
   (struct s) d128; /* { dg-error "conversion to non-scalar type requested" } */
   (union u) d128; /* { dg-error "cast to union type from type not present in union" } */
                
-  (_Decimal32) sv; /* { dg-error "aggregate value used where a floating point was expected" } */
-  (_Decimal32) uv; /* { dg-error "aggregate value used where a floating point was expected" } */
-  (_Decimal64) sv; /* { dg-error "aggregate value used where a floating point was expected" } */
-  (_Decimal64) uv; /* { dg-error "aggregate value used where a floating point was expected" } */
-  (_Decimal128) sv; /* { dg-error "aggregate value used where a floating point was expected" } */
-  (_Decimal128) uv; /* { dg-error "aggregate value used where a floating point was expected" } */
+  (_Decimal32) sv; /* { dg-error "aggregate value used where a floating-point was expected" } */
+  (_Decimal32) uv; /* { dg-error "aggregate value used where a floating-point was expected" } */
+  (_Decimal64) sv; /* { dg-error "aggregate value used where a floating-point was expected" } */
+  (_Decimal64) uv; /* { dg-error "aggregate value used where a floating-point was expected" } */
+  (_Decimal128) sv; /* { dg-error "aggregate value used where a floating-point was expected" } */
+  (_Decimal128) uv; /* { dg-error "aggregate value used where a floating-point was expected" } */
 }
index c1a1994997f03bb2ce2f9ea7ddc58d0daa21e46f..403b0394298e12180505ab34f0c39cd323d49b9d 100644 (file)
@@ -8,16 +8,16 @@
 void tst_decimal (_Decimal32 *p32, _Decimal64 *p64, _Decimal128 *p128)
 {
   *p32 = abs(*p32);       /* { dg-warning "using integer absolute value function" } */
-  *p64 = fabs(*p64);      /* { dg-warning "using floating point absolute value function" } */
+  *p64 = fabs(*p64);      /* { dg-warning "using floating-point absolute value function" } */
   *p128 = cabsl(*p128);   /* { dg-warning "using complex absolute value function" } */
 }
 
 void tst_notdecimal (int *pi, double *pd, long double *pld, complex double *pc)
 {
-  *pi = __builtin_fabsd32 (*pi);   /* { dg-warning "using decimal floating point absolute value function" } */
-  *pd = __builtin_fabsd64 (*pd);   /* { dg-warning "using decimal floating point absolute value function" } */
-  *pld = __builtin_fabsd64 (*pld); /* { dg-warning "using decimal floating point absolute value function" } */
-  *pc = __builtin_fabsd128 (*pc);  /* { dg-warning "using decimal floating point absolute value function" } */
+  *pi = __builtin_fabsd32 (*pi);   /* { dg-warning "using decimal floating-point absolute value function" } */
+  *pd = __builtin_fabsd64 (*pd);   /* { dg-warning "using decimal floating-point absolute value function" } */
+  *pld = __builtin_fabsd64 (*pld); /* { dg-warning "using decimal floating-point absolute value function" } */
+  *pc = __builtin_fabsd128 (*pc);  /* { dg-warning "using decimal floating-point absolute value function" } */
 }
 
 void
index 09276b7fac005fd677152d8d0caa1785432f5d26..9d3ea26d6d3ec95037915f3a938e3cc299a31666 100644 (file)
@@ -1,10 +1,10 @@
 /* { dg-do compile } */
 
-enum e1 { A = 256 } __attribute__((__mode__(__byte__))); /* { dg-error "specified mode too small for enumeral values" } */
-enum e2 { B = 256 } __attribute__((__packed__, __mode__(__byte__))); /* { dg-error "specified mode too small for enumeral values" } */
+enum e1 { A = 256 } __attribute__((__mode__(__byte__))); /* { dg-error "specified mode too small for enumerated values" } */
+enum e2 { B = 256 } __attribute__((__packed__, __mode__(__byte__))); /* { dg-error "specified mode too small for enumerated values" } */
 
-enum e3 { C = __INT_MAX__ } __attribute__((__mode__(__QI__))); /* { dg-error "specified mode too small for enumeral values" } */
-enum e4 { D = __INT_MAX__ } __attribute__((__packed__, __mode__(__QI__))); /* { dg-error "specified mode too small for enumeral values" } */
+enum e3 { C = __INT_MAX__ } __attribute__((__mode__(__QI__))); /* { dg-error "specified mode too small for enumerated values" } */
+enum e4 { D = __INT_MAX__ } __attribute__((__packed__, __mode__(__QI__))); /* { dg-error "specified mode too small for enumerated values" } */
 
-enum e5 { E = __INT_MAX__ } __attribute__((__mode__(__HI__))); /* { dg-error "specified mode too small for enumeral values" "" { xfail int16 } } */
-enum e6 { F = __INT_MAX__ } __attribute__((__packed__, __mode__(__HI__))); /* { dg-error "specified mode too small for enumeral values" "" { xfail int16 } } */
+enum e5 { E = __INT_MAX__ } __attribute__((__mode__(__HI__))); /* { dg-error "specified mode too small for enumerated values" "" { xfail int16 } } */
+enum e6 { F = __INT_MAX__ } __attribute__((__packed__, __mode__(__HI__))); /* { dg-error "specified mode too small for enumerated values" "" { xfail int16 } } */
index 87614567b9124e2e0da4964b728cb0fe15324830..4a64d5460c6fa9054763c1fdf001115c6af8ccb9 100644 (file)
@@ -1,7 +1,7 @@
 /* Test for GCC diagnostic formats.  */
 /* Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> */
 /* { dg-do compile } */
-/* { dg-options "-Wformat" } */
+/* { dg-options "-Wformat -Wno-format-diag" } */
 
 #include "format.h"
 
diff --git a/gcc/testsuite/gcc.dg/format/gcc_diag-11.c b/gcc/testsuite/gcc.dg/format/gcc_diag-11.c
new file mode 100644 (file)
index 0000000..a976c7a
--- /dev/null
@@ -0,0 +1,455 @@
+/* Test warnings for common punctuation, quoting, and spelling issues
+   in GCC diagnostics.
+   { dg-do compile }
+   { dg-options "-Wformat -Wformat-diag" } */
+
+/* Magic identifiers must be set before the attribute is used.  */
+
+typedef long long __gcc_host_wide_int__;
+
+typedef struct location_s
+{
+  const char *file;
+  int line;
+} location_t;
+
+union tree_node;
+typedef union tree_node *tree;
+
+/* Define gimple as a dummy type.  The typedef must be provided for
+   the C test to find the symbol.  */
+typedef struct gimple gimple;
+
+/* Likewise for cgraph_node.  */
+typedef struct cgraph_node cgraph_node;
+
+#define ATTR(...)    __attribute__ ((__VA_ARGS__))
+#define FORMAT(kind) ATTR (format (__gcc_## kind ##__, 1, 2))
+
+/* Raw formatting function like pp_format.  */
+void diag_raw (const char*, ...) ATTR (format (__gcc_diag_raw__, 1, 2));
+void cdiag_raw (const char*, ...) ATTR (format (__gcc_cdiag_raw__, 1, 2));
+void tdiag_raw (const char*, ...) ATTR (format (gcc_tdiag_raw, 1, 2));
+void cxxdiag_raw (const char*, ...) ATTR (format (gcc_cxxdiag_raw, 1, 2));
+
+/* Basic formatting function_format.  */
+void diag (const char*, ...) FORMAT (diag);
+
+/* Diagnostic formatting function like error or warning declared
+   by the C front end.  */
+void cdiag (const char*, ...) FORMAT (cdiag);
+
+/* Diagnostic formatting function like error or warning declared
+   by the middle-end or back-end.  */
+void tdiag (const char*, ...) FORMAT (tdiag);
+
+/* Diagnostic formatting function like error or warning declared
+   by the C++ front-end.  */
+void cxxdiag (const char*, ...) FORMAT (cxxdiag);
+
+
+/* Verify that functions declared with __gcc_diag_raw__ attribute
+   are not subject to -Wformat-diag.  */
+
+void test_diag_raw (tree t, gimple *gc)
+{
+  diag_raw ("a  b");
+  diag_raw ("newline\n");
+  diag_raw ("lone period.");
+  diag_raw ("multiple punctuators: !!!");
+  diag_raw ("unbalanced paren (");
+  diag_raw ("keyword alignas and identifier_with_underscores");
+  diag_raw ("disable __builtin_abs with the -fno-builtin-abs option");
+  diag_raw ("who says I can't have no stinkin' contractions? ");
+
+  cdiag_raw ("__atomic_sync (%qE) == 7???", t);
+  tdiag_raw ("__builtin_abs (%E) < 0!?!", t);
+  cxxdiag_raw ("template <> int f (%E", t);
+}
+
+/* Verify that functions declared with the C front-end __gcc_cdiag__
+   attribute detect invalid whitespace in format strings.  */
+
+void test_cdiag_whitespace (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  /* Verify that strings of leading spaces don't trigger a warning.  */
+  cdiag (" a");
+  cdiag ("  b");
+  cdiag ("   c");
+  cdiag ("%< %>a");
+  cdiag ("%<  %>a");
+  cdiag ("a b");
+  cdiag ("a  b");           /* { dg-warning "unquoted sequence of 2 consecutive space characters" } */
+  cdiag ("a ");             /* { dg-warning "spurious trailing space" } */
+  cdiag ("a  ");            /* { dg-warning "spurious trailing space" } */
+  cdiag ("a%< %>");
+  cdiag ("a%< %>%< %>");
+  cdiag ("a%< %> ");        /* { dg-warning "spurious trailing space" } */
+  cdiag ("a%< %>  %< %>");  /* { dg-warning "unquoted sequence of 2 consecutive space characters" } */
+
+  /* It's debatable whether the following two formst strings should
+     be diagnosed.  They aren't only because it's simpler that way.  */
+  cdiag ("a %< %>");
+  cdiag ("a%< %> %< %>");
+
+  /* Exercise other whitespace characters.  */
+  cdiag ("a\fb");           /* { dg-warning "unquoted whitespace character '\\\\x0c'" } */
+  cdiag ("a\nb");           /* { dg-warning "unquoted whitespace character '\\\\x0a'" } */
+  cdiag ("a\rb");           /* { dg-warning "unquoted whitespace character '\\\\x0d'" } */
+  cdiag ("a\vb");           /* { dg-warning "unquoted whitespace character '\\\\x0b'" } */
+
+  cdiag ("First sentence.  And a next.");
+  cdiag ("First sentence.  not capitalized sentence"); /* { dg-warning "inconsistent capitalization" } */
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-diag"
+
+  /* Verify that the warning can be suppressed.  */
+  cdiag ("\ta\b    c\vb\n");
+
+#pragma GCC diagnostic pop
+}
+
+
+void test_cdiag_control (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("\1");             /* { dg-warning "unquoted control character '\\\\x01'" } */
+  cdiag ("a\ab");           /* { dg-warning "unquoted control character '\\\\x07'" } */
+  cdiag ("a\bb");           /* { dg-warning "unquoted control character '\\\\x08'" } */
+}
+
+
+void test_cdiag_punct (tree t, gimple *gc, int i)
+{
+  (void)&t; (void)&gc;
+
+  /* Exercise the period.  */
+  cdiag (".abc");           /* { dg-warning "spurious leading punctuation sequence .\.." } */
+  cdiag ("abc;");           /* { dg-warning "spurious trailing punctuation sequence .;." } */
+  /* Verify that sentences that start with an uppercase letter and end
+     in a period are not diagnosed.  */
+  cdiag ("This is a full sentence.");
+  cdiag ("Capitalized sentence (with a parethetical note).");
+  cdiag ("Not a full sentence;");   /* { dg-warning "spurious trailing punctuation sequence .;." } */
+  cdiag ("Neither is this one,");   /* { dg-warning "spurious trailing punctuation sequence .,." } */
+
+  /* Exercise the ellipsis.  */
+  cdiag ("this message...");
+  cdiag ("...continues here");
+  cdiag ("but...not here"); /* { dg-warning "unquoted sequence of 3 consecutive punctuation characters" } */
+
+  /* Verify that parenthesized sentences are accepted, even the whole
+     meesage (done in the C++ front end).  */
+  cdiag ("null argument where non-null required (argument %i)", i);
+  cdiag ("null (argument %i) where non-null required", i);
+  cdiag ("(see what comes next)");
+
+  /* Verify that only a single trailing colon is accepted.  */
+  cdiag ("candidates are:");
+  cdiag ("candidates are::"); /* { dg-warning "spurious trailing punctuation sequence .::." } */
+
+  /* Exercise C++.  */
+  cdiag ("C++ is cool");
+  cdiag ("this is c++");
+  cdiag ("you can do this in C++ but not in C");
+
+  /* Also verify that G++ is accepted.  */
+  cdiag ("G++ rocks");
+  cdiag ("this is accepted by g++");
+  cdiag ("valid in G++ (or g++) but not in gcc");
+
+  /* Exercise parenthetical note followed by a colon, semicolon,
+     or a comma.  */
+  cdiag ("found a bug (here):");
+  cdiag ("because of another bug (over there); fix it");
+
+  cdiag ("found foo (123): go look at it");
+  cdiag ("missed bar (abc); will try harder next time");
+
+  cdiag ("expected this (or that), got something else (or who knows what)");
+
+  /* Exercise parenthetical note with a question mark.  */
+  cdiag ("hmmm (did you really mean that?)");
+  cdiag ("error (did you mean %<foo()%>?)");
+  /* And a question mark after a parenthetical note.  */
+  cdiag ("did you mean this (or that)?");
+
+  /* But make sure unbalanced parenthese are diagnosed.  */
+  cdiag ("or this or the other)?");   /* { dg-warning "unbalanced punctuation character '\\\)'" } */
+
+  cdiag ("## Heading");               /* { dg-warning "spurious leading punctuation sequence .##." } */
+  cdiag ("## %s ##", "1");            /* { dg-warning "spurious (leading|trailing) punctuation sequence .##." } */
+
+  cdiag ("#1 priority");              /* { dg-warning "spurious leading punctuation sequence .#." } */
+  cdiag ("priority #2");
+
+  /* Quoting.  */
+  cdiag ("\"quoted\"");
+  cdiag ("\"quoted\" string");
+  cdiag ("this is a \"string in quotes\"");
+  cdiag ("\"missing closing quote");  /* { dg-warning "unterminated quote character '\"'" } */
+
+  /* PR translation/90121 - punctuation character after a space.  */
+  cdiag ("bad version : 1");          /* { dg-warning "space followed by punctuation character ':'" } */
+  cdiag ("problem ; fix it");         /* { dg-warning "space followed by punctuation character ';'" } */
+  cdiag ("End . not.");               /* { dg-warning "space followed by punctuation character '.'" } */
+  cdiag ("it is bad , very bad");     /* { dg-warning "space followed by punctuation character ','" } */
+  cdiag ("say what ?");               /* { dg-warning "space followed by punctuation character '?'" } */
+
+  /* But these are okay after a space.  But should they be?  */
+  cdiag ("1 / 2");
+  cdiag ("2 + 3");
+  cdiag ("2 - 3");
+}
+
+void test_cdiag_punct_balance (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  /* Less-than and greater than.  */
+  cdiag ("a < b");          /* { dg-warning "unbalanced punctuation character '<' in format" } */
+  cdiag ("must be > 0");    /* { dg-warning "unbalanced punctuation character '>' in format" } */
+
+  cdiag ("f()");            /* { dg-warning "spurious trailing punctuation sequence .\\\(\\\)." } */
+  cdiag ("g(1)");
+  cdiag ("(");              /* { dg-warning "spurious leading punctuation character|unbalanced" } */
+  cdiag ("()");             /* { dg-warning "spurious leading punctuation sequence" } */
+  cdiag (")");              /* { dg-warning "unbalanced punctuation character '\\\)'" } */
+  cdiag ("f()g");           /* { dg-warning "unquoted sequence of 2 consecutive punctuation characters" } */
+  cdiag ("illegal operand (1)");
+}
+
+
+void test_cdiag_nongraph (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("a\376b");         /* { dg-warning "unquoted non-graph character '\\\\xfe'" } */
+  cdiag ("a\377b");         /* { dg-warning "unquoted non-graph character '\\\\xff'" } */
+}
+
+
+void test_cdiag_attribute (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("attribute foo");
+  cdiag ("this is attribute bar");
+  cdiag ("bad __attribute bar");        /* { dg-warning "unquoted attribute" } */
+  cdiag ("__attribute__ (foobar) bad"); /* { dg-warning "unquoted attribute" } */
+  cdiag ("__attribute__ ((foobar))");   /* { dg-warning "unquoted attribute" } */
+  cdiag ("__attribute__ (xxx))");       /* { dg-warning "unquoted attribute" } */
+  /* { dg-warning "unbalanced punctuation character '\\\)'" "xxx" { target *-*-* } .-1 } */
+  cdiag ("__attribute__ ((yyy)))");     /* { dg-warning "unquoted attribute" } */
+  /* { dg-warning "unbalanced punctuation character '\\\)'" "yyy" { target *-*-* } .-1 } */
+  cdiag ("__attribute__ ((zzz)");       /* { dg-warning "unquoted attribute" } */
+  /* { dg-warning "unbalanced punctuation character '\\\('" "zzz" { target *-*-* } .-1 } */
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-diag"
+
+  /* Verify that the warning can be suppressed.  */
+  cdiag ("__attribute__ (((");
+
+#pragma GCC diagnostic pop
+}
+
+void test_cdiag_builtin (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("__builtin_abort");    /* { dg-warning "unquoted name of built-in function '__builtin_abort'" } */
+  cdiag ("in __builtin_trap");  /* { dg-warning "unquoted name of built-in function '__builtin_trap'" } */
+  cdiag ("__builtin_xyz bites");/* { dg-warning "unquoted name of built-in function '__builtin_xyz'" } */
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat-diag"
+
+  /* Verify that the warning can be suppressed.  */
+  cdiag ("__builtin____with____lots__of__underscores");
+
+#pragma GCC diagnostic pop
+}
+
+
+void test_cdiag_option (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("%<-Wall%>");
+  cdiag ("use option %<-Wextra%> to enable additinal warnings");
+
+  cdiag ("-O2 is fast");        /* { dg-warning "unquoted option name '-O2'" } */
+  cdiag ("but -O3 is faster");  /* { dg-warning "unquoted option name '-O3'" } */
+
+  cdiag ("get --help");         /* { dg-warning "unquoted option name '--help'" } */
+  cdiag ("enable -m32");        /* { dg-warning "unquoted option name '-m32'" } */
+  cdiag ("value is -12");
+  cdiag ("foo-O2");
+  cdiag ("a-W");
+}
+
+
+void test_cdiag_keyword (tree t, gimple *gc)
+{
+  cdiag ("alignasi");
+  cdiag ("malignofer or alignofus");
+  cdiag ("use alignof");        /* { dg-warning "unquoted keyword 'alignof'" } */
+  cdiag ("or _Alignof");        /* { dg-warning " keyword '_Alignof'" } */
+  cdiag ("_Pragma too");        /* { dg-warning " keyword '_Pragma'" } */
+
+  cdiag ("a #error directive"); /* { dg-warning "unquoted preprocessing directive '#error'" } */
+  cdiag ("#include file");      /* { dg-warning "unquoted preprocessing directive '#include'" } */
+  cdiag ("but #pragma foobar"); /* { dg-warning "unquoted preprocessing directive '#pragma'" } */
+  cdiag ("pragma foobar is okay");
+  cdiag ("or even # pragma is fine");
+
+  /* Exercise qualifiers.  */
+  cdiag ("const function");
+  cdiag ("const-qualified variable"); /* { dg-warning "unquoted keyword 'const-qualified'" } */
+  /* { dg-message "use '%<const%>-qualified' instead" "const-qualified" { target *-*-* } .-1 } */
+  cdiag ("a const %qD", t);     /* { dg-warning "unquoted keyword 'const'" } */
+  cdiag ("restrict %qE", t);    /* { dg-warning "unquoted keyword 'restrict'" } */
+  cdiag ("volatile %qT", t);    /* { dg-warning "unquoted keyword 'volatile'" } */
+  cdiag ("const %qD and restrict %qE or volatile %qT", t, t, t);
+  /* { dg-warning "unquoted keyword 'const'" "" { target *-*-* } .-1 } */
+  /* { dg-warning "unquoted keyword 'restrict'" "" { target *-*-* } .-2 } */
+  /* { dg-warning "unquoted keyword 'volatile'" "" { target *-*-* } .-3 } */
+
+  cdiag ("an offsetof here");   /* { dg-warning "unquoted keyword 'offsetof" } */
+  cdiag ("sizeof x");           /* { dg-warning "unquoted keyword 'sizeof" } */
+  cdiag ("have typeof");        /* { dg-warning "unquoted keyword 'typeof" } */
+
+  /* Words that are not keywords are so are not expected to be quoted.  */
+  cdiag ("break rules");
+  cdiag ("if we continue by default for a short while else do nothing");
+  cdiag ("register a function for unsigned extern to void const reads");
+  cdiag ("or volatile access");
+}
+
+
+void test_cdiag_operator (tree t, gimple *gc)
+{
+  cdiag ("x != 0");             /* { dg-warning "unquoted operator '!='" } */
+  cdiag ("logical &&");         /* { dg-warning "unquoted operator '&&" } */
+  cdiag ("+= operator");        /* { dg-warning "unquoted operator '\\\+=" } */
+  cdiag ("a == b");             /* { dg-warning "unquoted operator '=='" } */
+  cdiag ("++a");                /* { dg-warning "unquoted operator '\\\+\\\+'" } */
+  cdiag ("b--");                /* { dg-warning "unquoted operator '--'" } */
+  cdiag ("1 << 2");             /* { dg-warning "unquoted operator '<<'" } */
+  cdiag (">> here <<");         /* { dg-warning "unquoted operator '>>|<<'" } */
+}
+
+
+void test_cdiag_type_name (tree t, gimple *gc)
+{
+  cdiag ("the word character should not be quoted");
+  cdiag ("but char should be"); /* { dg-warning "unquoted keyword 'char'" } */
+
+  cdiag ("unsigned char should be quoted");     /* { dg-warning "unquoted type name 'unsigned char'" } */
+  cdiag ("but unsigned character is fine");
+
+  cdiag ("as should int");      /* { dg-warning "unquoted keyword 'int'" } */
+  cdiag ("and signed int");     /* { dg-warning "unquoted type name 'signed int'" } */
+  cdiag ("and also unsigned int");     /* { dg-warning "unquoted type name 'unsigned int'" } */
+  cdiag ("very long thing");
+  cdiag ("use long long here"); /* { dg-warning "unquoted type name 'long long'" } */
+
+  cdiag ("have a floating type");
+  cdiag ("found float type");   /* { dg-warning "unquoted keyword 'float'" } */
+
+  cdiag ("wchar_t is wide");    /* { dg-warning "unquoted identifier or keyword 'wchar_t'" } */
+}
+
+
+void test_cdiag_identifier (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("private _x ident");   /* { dg-warning "unquoted identifier or keyword '_x'" } */
+  cdiag ("and another __y");    /* { dg-warning "unquoted identifier or keyword '__y'" } */
+  cdiag ("ident z_ with trailing underscore");   /* { dg-warning "unquoted identifier or keyword 'z_'" } */
+  cdiag ("v_ variable");        /* { dg-warning "unquoted identifier or keyword 'v_'" } */
+  cdiag ("call foo_bar");       /* { dg-warning "unquoted identifier or keyword 'foo_bar'" } */
+  cdiag ("unqoted x_y ident");  /* { dg-warning "unquoted identifier or keyword 'x_y'" } */
+
+  cdiag ("size_t type");        /* { dg-warning "unquoted identifier or keyword 'size_t'" } */
+  cdiag ("bigger than INT_MAX");/* { dg-warning "unquoted identifier or keyword 'INT_MAX'" } */
+
+  cdiag ("quoted ident %<a_b%>");
+  cdiag ("another quoted identifier %<x_%> here");
+}
+
+
+void test_cdiag_bad_words (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cdiag ("aren't you dumb?");  /* { dg-warning "bare apostrophe ''' in format" } */
+  cdiag ("bitfields suck");    /* { dg-warning "misspelled term 'bitfields' in format; use 'bit-fields' instead" } */
+  cdiag ("invalid bitfield");  /* { dg-warning "misspelled term 'bitfield' in format; use 'bit-field' instead" } */
+  cdiag ("bad builtin function");  /* { dg-warning "misspelled term 'builtin function' in format; use 'built-in function' instead" } */
+  cdiag ("bad builtin function");  /* { dg-warning "misspelled term 'builtin function' in format; use 'built-in function' instead" } */
+  cdiag ("builtin function x");    /* { dg-warning "misspelled term 'builtin function' in format; use 'built-in function' instead" } */
+  cdiag ("builtin functions disabled");    /* { dg-warning "misspelled term 'builtin functions' in format; use 'built-in functions' instead" } */
+  cdiag ("enable builtin functions");      /* { dg-warning "misspelled term 'builtin functions' in format; use 'built-in functions' instead" } */
+  cdiag ("you can't do that"); /* { dg-warning "contraction 'can't' in format" } */
+  cdiag ("you can%'t do that");/* { dg-warning "contraction 'can%'t' in format" } */
+  cdiag ("Can%'t touch this.");/* { dg-warning "contraction 'Can%'t' in format" } */
+  cdiag ("on the commandline");/* { dg-warning "misspelled term 'commandline' in format; use 'command line' instead" } */
+  cdiag ("command line option");/* { dg-warning "misspelled term 'command line option' in format; use 'command-line option' instead" } */
+  cdiag ("it mustn't be");     /* { dg-warning "contraction 'mustn't' in format" } */
+  cdiag ("isn't that silly?"); /* { dg-warning "bare apostrophe ''' in format" } */
+
+  cdiag ("can not do this");   /* { dg-warning "misspelled term 'can not' in format; use 'cannot' instead" } */
+  cdiag ("you can not");       /* { dg-warning "misspelled term 'can not' in format; use 'cannot' instead" } */
+
+  /* See PR target/90157 - aarch64: unnecessary abbreviation in diagnostic */
+  cdiag ("Mising arg.");       /* { dg-warning "misspelled term 'arg' in format; use 'argument' instead" } */
+  cdiag ("2 args: a and b");   /* { dg-warning "misspelled term 'args' in format; use 'arguments' instead" } */
+  cdiag ("arg 1");             /* { dg-warning "misspelled term 'arg' in format; use 'argument' instead" } */
+  cdiag ("Args are wrong.");   /* { dg-warning "misspelled term 'Args' in format; use 'arguments' instead" } */
+  cdiag ("bad arg");           /* { dg-warning "misspelled term 'arg' in format; use 'argument' instead" } */
+  cdiag ("two args");          /* { dg-warning "misspelled term 'args' in format; use 'arguments' instead" } */
+  cdiag ("args 1 and 2");      /* { dg-warning "misspelled term 'args' in format; use 'arguments' instead" } */
+
+  cdiag ("Reg A");             /* { dg-warning "misspelled term 'Reg' in format; use 'register' instead" } */
+  cdiag ("regs A and B");      /* { dg-warning "misspelled term 'regs' in format; use 'registers' instead" } */
+  cdiag ("no regs");           /* { dg-warning "misspelled term 'regs' in format; use 'registers' instead" } */
+
+  /* Verify words that end in "arg" and "args" or "reg" and "regs" are
+     not diagnosed.  */
+  cdiag ("gulmarg and balfarg");
+  cdiag ("ademargs or toshargs");
+  cdiag ("talk to Greg");
+  cdiag ("prepreg is a fabric");
+  cdiag ("there are dregs in my wine");
+}
+
+
+void test_cdiag_directive (tree t, gimple *gc)
+{
+  (void)&t; (void)&gc;
+
+  cxxdiag ("%<%s%>", "");     /* { dg-warning "quoted '%s' directive in format" } */
+  /* This was asked to be diagnosed in PR #90158 but there, the \"%s\"
+     is in parenheses which ends up getting diagnosed because of
+     the two consecutive punctuation characters, ( and ".  */
+  cdiag ("\"%s\"", "");       /* { dg-warning "quoted '%s' directive in format" } */
+
+  /* Make sure quoted paired tokens are not diagnosed.  */
+  cdiag ("%<'%>");
+  cdiag ("%<\"%>");
+  cdiag ("%<<%>");
+  cdiag ("%<>%>");
+  cdiag ("%<(%>");
+  cdiag ("%<)%>");
+  cdiag ("%<[%>");
+  cdiag ("%<]%>");
+
+  cdiag ("%<'%> %<\"%> %<>%> %<<%> %<)%> %<(%> %<]%> %<[%>");
+}
index 9cdc90172557e18ac2d206a65274919e1fbd1939..ab12df1c431b738fde21b46a0c6cc5e65f7caa2a 100644 (file)
@@ -1,4 +1,4 @@
 /* PR 17594 */
 /* { dg-do compile } */
 /* { dg-options "-funroll-loops-all" } */
-/* { dg-error "unrecognized command line option '-funroll-loops-all'" "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-funroll-loops-all'" "" { target *-*-* } 0 } */
index ab1e6f91d3c6e012bd27f872c83bebec3fe70f7f..80bead8485523c37c6642508546dfe7c9a01ac29 100644 (file)
@@ -2,4 +2,4 @@
 /* { dg-do compile } */
 /* { dg-options "-fstack-limit" } */
 
-/* { dg-error "unrecognized command line option" "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option" "" { target *-*-* } 0 } */
index 89dd15390f872db213556f1c507e51e516b50df6..c9e5e228a7bfc39750174c6209b7b1d3eab3ebdc 100644 (file)
@@ -8,5 +8,5 @@ int foo (void)
   return i;
 }
 
-/* { dg-warning "unrecognized command line option .-Wno-foobar." "" { target *-*-* } 0 } */
+/* { dg-warning "unrecognized command-line option .-Wno-foobar." "" { target *-*-* } 0 } */
 
index e714a3cc6f7697e84aba47a2cd3a64c6618b2d6e..85926ade9e891aecd8e1a5dc7d2b0d494381a5cd 100644 (file)
@@ -6,5 +6,5 @@ void foo(void)
 {
   int i =  1;
 }
-/* { dg-message "unrecognized command line option .-fno-foobar." "f" { target *-*-* } 0 } */
-/* { dg-message "unrecognized command line option .-mno-foobar." "m" { target *-*-* } 0 } */
+/* { dg-message "unrecognized command-line option .-fno-foobar." "f" { target *-*-* } 0 } */
+/* { dg-message "unrecognized command-line option .-mno-foobar." "m" { target *-*-* } 0 } */
index c6cf7aa460757d9d4e5684b01c19eb8c03fbbe21..b3bd811caea6b58e0883bec62e00ae7bf0ca0bb7 100644 (file)
@@ -7,8 +7,8 @@ foo (unsigned int ui, int i)
 {
   const unsigned char uc = 0;
   _Bool b;
-  b = 0 != ~uc; /* { dg-warning "9:promoted ~unsigned is always non-zero" } */
-  b = 2 != ~uc; /* { dg-warning "9:comparison of promoted ~unsigned with constant" } */
-  b = uc == ~uc; /* { dg-warning "10:comparison of promoted ~unsigned with unsigned" } */
+  b = 0 != ~uc; /* { dg-warning "9:promoted bitwise complement of an unsigned value is always nonzero" } */
+  b = 2 != ~uc; /* { dg-warning "9:comparison of promoted bitwise complement of an unsigned value with constant" } */
+  b = uc == ~uc; /* { dg-warning "10:comparison of promoted bitwise complement of an unsigned value with unsigned" } */
   b = i == ui; /* { dg-warning "9:comparison of integer expressions of different signedness" } */
 }
index 305023e1870c40e08b08ad7815aadd4a7b20f85c..432211935b9a046c0eca20b9f12f8ddb4484a807 100644 (file)
@@ -1,6 +1,6 @@
 /* PR driver/78957 */
 /* { dg-do compile } */
 /* { dg-options "-fno-sso-struct=none" } */
-/* { dg-error "unrecognized command line option" "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option" "" { target *-*-* } 0 } */
 
 int i;
index e45e77c09f4cb65b50a04a06c862bb2b17f5a115..2878a48a4d3df5d556c461e8753dbcb9bfed37cb 100644 (file)
@@ -7,7 +7,7 @@ int foo()
 {
   unsigned char b = '1';
 
-  bool x = ~b; /* { dg-warning "promoted ~unsigned is always non-zero" } */
+  bool x = ~b; /* { dg-warning "promoted bitwise complement of an unsigned value is always nonzero" } */
 
   return 0;
 }
index e5462390effb4d7a5a42e83e0dd4ce1c8dc00bf3..d24e076218dded5743c52d5f452db9cf2b1bbbad 100644 (file)
@@ -33,10 +33,10 @@ hanneke ()
   foo = a; /* { dg-error "incompatible types when assigning" } */
 
   /* Casted assignment between scalar and SIMD of same size.  */
-  foo = (typeof (foo)) foo2; /* { dg-error "aggregate value used where a floating point was expected" } */
+  foo = (typeof (foo)) foo2; /* { dg-error "aggregate value used where a floating-point was expected" } */
 
   /* Casted assignment between scalar and SIMD of different size.  */
-  foo1 = (typeof (foo1)) foo2; /* { dg-error "aggregate value used where a floating point was expected" } */
+  foo1 = (typeof (foo1)) foo2; /* { dg-error "aggregate value used where a floating-point was expected" } */
 
   /* Operators on compatible SIMD types.  */
   a += b + b;
index cd5fdcacfdb8121d19454cbfad1d60e03367fb54..bebb494b6afae87e166be4ee9b03e1355565903d 100644 (file)
@@ -1,4 +1,4 @@
 /* { dg-do compile } */
 /* { dg-options "-Wcoercion" } */
-/* { dg-error "unrecognized command line option '-Wcoercion'; did you mean '-Wconversion'?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-Wcoercion'; did you mean '-Wconversion'?"  "" { target *-*-* } 0 } */
 
index 1957205593b4e9fd45294b6ce7cbecc11e83d4b5..77c6b5494f5753f8498f8a4034e802337e3fdc99 100644 (file)
@@ -3,4 +3,4 @@
 
 /* { dg-do compile } */
 /* { dg-options "-fno-if-convert" } */
-/* { dg-error "unrecognized command line option .-fno-if-convert.; did you mean .-fno-if-conversion.?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option .-fno-if-convert.; did you mean .-fno-if-conversion.?"  "" { target *-*-* } 0 } */
index b5e65e54a395889f1be34afc27040fde9a5a3c0f..9fbd944bcafd37ad850a27e93c732ae7c92c3a21 100644 (file)
@@ -4,4 +4,4 @@
 
 /* { dg-do compile } */
 /* { dg-options "-fno-stack-protector-explicit" } */
-/* { dg-error "unrecognized command line option .-fno-stack-protector-explicit.; did you mean .-fstack-protector-explicit.." "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option .-fno-stack-protector-explicit.; did you mean .-fstack-protector-explicit.." "" { target *-*-* } 0 } */
index 0d00642d87ea27152d3778da84f65c4b3d11bfca..94db0c5a458b944c740daf842fbb1f71087641d1 100644 (file)
@@ -2,4 +2,4 @@
 
 /* { dg-do compile } */
 /* { dg-options "-fsanitize" } */
-/* { dg-error "unrecognized command line option '-fsanitize'; did you mean '-fsanitize='?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-fsanitize'; did you mean '-fsanitize='?"  "" { target *-*-* } 0 } */
index 387d04e37433ade6d369efe1293be16e0a642a7c..26694f945a8b7ee35a83577e45d7fc1eea2459b2 100644 (file)
@@ -1,3 +1,3 @@
 /* { dg-do compile } */
 /* { dg-options "-fprofile-update" } */
-/* { dg-error "unrecognized command line option '-fprofile-update'; did you mean '-fprofile-update='?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-fprofile-update'; did you mean '-fprofile-update='?"  "" { target *-*-* } 0 } */
index 5a1047639936ee88bb1d215b17832f560989e129..68e85a71d77ad84315b1173d77152cdaee9d496a 100644 (file)
@@ -1,3 +1,3 @@
 /* { dg-do compile } */
 /* { dg-options "-fno-sanitize" } */
-/* { dg-error "unrecognized command line option '-fno-sanitize'; did you mean '-fno-sanitize='?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-fno-sanitize'; did you mean '-fno-sanitize='?"  "" { target *-*-* } 0 } */
index 786266df390ca6cda8f977c86a2e59d9edb3e351..5156ad3ef1752303cfdbbfcb678415bbc799f9c2 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile } */
 /* { dg-options "-Wthis-should-not-get-a-hint" } */
 /* { dg-bogus "did you mean" "" { target *-*-* } 0 } */
-/* { dg-error "unrecognized command line option '-Wthis-should-not-get-a-hint'"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-Wthis-should-not-get-a-hint'"  "" { target *-*-* } 0 } */
 
index dfc6149e023a038cf03766aec621cdc08a4ff47e..d856d5a081050772dcbc4821ebe26c8a81e0811e 100644 (file)
@@ -1,3 +1,3 @@
 /* { dg-do compile } */
 /* { dg-options "-Walloc-size-larger-than" } */
-/* { dg-error "unrecognized command line option '-Walloc-size-larger-than'; did you mean '-Walloc-size-larger-than='?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-Walloc-size-larger-than'; did you mean '-Walloc-size-larger-than='?"  "" { target *-*-* } 0 } */
index 4133df9555e158890e913cba2c5f4e28a96f82db..cecc50299bbda4d9cc81371b1ee80d12d2ded944 100644 (file)
@@ -3,4 +3,4 @@
 
 /* { dg-do compile } */
 /* { dg-options "-sanitize=address" } */
-/* { dg-error "unrecognized command line option '-sanitize=address'; did you mean '-fsanitize=address'?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-sanitize=address'; did you mean '-fsanitize=address'?"  "" { target *-*-* } 0 } */
index 252376fd7575328326770a4adba5b6f7964d1d20..ab730edea939245130f04793ad97ca581d9fdd54 100644 (file)
@@ -3,4 +3,4 @@
 
 /* { dg-do compile } */
 /* { dg-options "-sanitize-recover=integer-divide-by-0" } */
-/* { dg-error "unrecognized command line option '-sanitize-recover=integer-divide-by-0'; did you mean '-fsanitize-recover=integer-divide-by-zero'?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-sanitize-recover=integer-divide-by-0'; did you mean '-fsanitize-recover=integer-divide-by-zero'?"  "" { target *-*-* } 0 } */
index 9a02bb7afbb2b488dfa175f68d4be4a3fe94307e..097faf0bce139c2ee7d8ed3e0cda75cb7132d2d6 100644 (file)
@@ -3,4 +3,4 @@
 
 /* { dg-do compile } */
 /* { dg-options "-no-sanitize=all" } */
-/* { dg-error "unrecognized command line option '-no-sanitize=all'; did you mean '-fno-sanitize=all'?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-no-sanitize=all'; did you mean '-fno-sanitize=all'?"  "" { target *-*-* } 0 } */
index 4d6bf0d945da79975f2881bd31622137feca98cf..591e21461385ca1b52d8a308a09a0e71c3f14b3f 100644 (file)
@@ -3,4 +3,4 @@
 
 /* { dg-do compile } */
 /* { dg-options "-fwarn-no-abi-tag" } */
-/* { dg-error "unrecognized command line option '-fwarn-no-abi-tag'; did you mean '--warn-no-abi-tag'?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-fwarn-no-abi-tag'; did you mean '--warn-no-abi-tag'?"  "" { target *-*-* } 0 } */
index ca8939949837bef099dd127f4eb7a7195b60431c..277d7d46876df82c731d1b3bfd5ad73c96ccbcb4 100644 (file)
@@ -3,4 +3,4 @@
 
 /* { dg-do compile } */
 /* { dg-options "-tls-model=global-dynamic" } */
-/* { dg-error "unrecognized command line option '-tls-model=global-dynamic'; did you mean '-ftls-model=global-dynamic'?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-tls-model=global-dynamic'; did you mean '-ftls-model=global-dynamic'?"  "" { target *-*-* } 0 } */
index 2cc6c1ff1fe12a73d1eec31b60a22427315cbfbd..43cd5ac31fa7ebe912f9a2594448213b90afa469 100644 (file)
@@ -3,4 +3,4 @@
 
 /* { dg-do compile } */
 /* { dg-options "--Wno-narrowing" } */
-/* { dg-error "unrecognized command line option '--Wno-narrowing'; did you mean '-Wno-narrowing'?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '--Wno-narrowing'; did you mean '-Wno-narrowing'?"  "" { target *-*-* } 0 } */
index 768b6f8c2a90bea447d6416acceba6b0ece9c03e..509f9e5936b03e310ff13689552d0505ac24019b 100644 (file)
@@ -3,4 +3,4 @@
 
 /* { dg-do compile } */
 /* { dg-options "-fmo-unroll-loops" } */
-/* { dg-error "unrecognized command line option '-fmo-unroll-loops'; did you mean '-fno-unroll-loops'?"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-fmo-unroll-loops'; did you mean '-fno-unroll-loops'?"  "" { target *-*-* } 0 } */
index a7f2ab20014c7ca6925432e38b8d05a2139dab07..ccd61efbe1e15e0005d88c8a7567ccf96f129d8b 100644 (file)
@@ -34,9 +34,9 @@ tst_notint (float *pf, double *pd, _Complex double *pc)
 void
 tst_notfloat (int *pi, long *pl, complex double *pc)
 {
-  *pi = fabsf (*pi);  /* { dg-warning "using floating point absolute value function" } */
-  *pl = fabs (*pl);   /* { dg-warning "using floating point absolute value function" } */
-  *pc = fabs (*pc);   /* { dg-warning "using floating point absolute value function" } */
+  *pi = fabsf (*pi);  /* { dg-warning "using floating-point absolute value function" } */
+  *pl = fabs (*pl);   /* { dg-warning "using floating-point absolute value function" } */
+  *pc = fabs (*pc);   /* { dg-warning "using floating-point absolute value function" } */
 }
 
 void
index 61946f6543cbc67b254970b2da4d66a1c69f6c7f..f5b5d41c9f57e66d397dff2ac9b34a228ac83571 100644 (file)
@@ -2,4 +2,4 @@
 
 /* { dg-do compile { target *-*-linux* *-*-gnu* } } */
 /* { dg-options "-mandroidX" } */
-/* { dg-error "unrecognized command line option '-mandroidX'; did you mean '-mandroid'"  "" { target *-*-* } 0 } */
+/* { dg-error "unrecognized command-line option '-mandroidX'; did you mean '-mandroid'"  "" { target *-*-* } 0 } */
index ce015982201492bfef2847f10094e44d5fdd4a37..050d9bf9f1c9e73df11460dd01f11372b9f11a85 100644 (file)
@@ -35,19 +35,19 @@ int main (void)
 {
   MyRootClass *object = [[MyRootClass alloc] init];
 
-  object.count = 10; /* { dg-error "readonly property cannot be set" } */
+  object.count = 10; /* { dg-error "'readonly' property cannot be set" } */
   if (object.count != 10) /* Ok */
     abort ();
 
   /* Test errors when trying to change a readonly property using
      pre/post increment/decrement operators.  */
-  object.count++; /* { dg-error "readonly property cannot be set" } */
+  object.count++; /* { dg-error "'readonly' property cannot be set" } */
 
-  ++object.count; /* { dg-error "readonly property cannot be set" } */
+  ++object.count; /* { dg-error "'readonly' property cannot be set" } */
 
-  object.count--; /* { dg-error "readonly property cannot be set" } */
+  object.count--; /* { dg-error "'readonly' property cannot be set" } */
 
-  --object.count; /* { dg-error "readonly property cannot be set" } */
+  --object.count; /* { dg-error "'readonly' property cannot be set" } */
 
   /* Test errors when trying to change something using Objective-C 2.0
      dot-syntax but there is a setter but no getter.  */
index 245a807f448362da5710eae49664859730ff5a8e..d721ed1295e2b62391b590a57612dcef674fa67d 100644 (file)
@@ -13,8 +13,8 @@
 
 void foo (NSArray *ans[], id pid, id apid[], int i) {
     NSArray *test;
-    test.count = 1; /* { dg-error "readonly property cannot be set" } */
-    ((NSArray *)pid).count = 1;  /* { dg-error "readonly property cannot be set" } */
-    ((NSArray *)apid[i]).count = 1; /* { dg-error "readonly property cannot be set" } */
-    ans[i].count = 3; /* { dg-error "readonly property cannot be set" } */
+    test.count = 1; /* { dg-error "'readonly' property cannot be set" } */
+    ((NSArray *)pid).count = 1;  /* { dg-error "'readonly' property cannot be set" } */
+    ((NSArray *)apid[i]).count = 1; /* { dg-error "'readonly' property cannot be set" } */
+    ans[i].count = 3; /* { dg-error "'readonly' property cannot be set" } */
 }
index ce015982201492bfef2847f10094e44d5fdd4a37..050d9bf9f1c9e73df11460dd01f11372b9f11a85 100644 (file)
@@ -35,19 +35,19 @@ int main (void)
 {
   MyRootClass *object = [[MyRootClass alloc] init];
 
-  object.count = 10; /* { dg-error "readonly property cannot be set" } */
+  object.count = 10; /* { dg-error "'readonly' property cannot be set" } */
   if (object.count != 10) /* Ok */
     abort ();
 
   /* Test errors when trying to change a readonly property using
      pre/post increment/decrement operators.  */
-  object.count++; /* { dg-error "readonly property cannot be set" } */
+  object.count++; /* { dg-error "'readonly' property cannot be set" } */
 
-  ++object.count; /* { dg-error "readonly property cannot be set" } */
+  ++object.count; /* { dg-error "'readonly' property cannot be set" } */
 
-  object.count--; /* { dg-error "readonly property cannot be set" } */
+  object.count--; /* { dg-error "'readonly' property cannot be set" } */
 
-  --object.count; /* { dg-error "readonly property cannot be set" } */
+  --object.count; /* { dg-error "'readonly' property cannot be set" } */
 
   /* Test errors when trying to change something using Objective-C 2.0
      dot-syntax but there is a setter but no getter.  */
index 245a807f448362da5710eae49664859730ff5a8e..d721ed1295e2b62391b590a57612dcef674fa67d 100644 (file)
@@ -13,8 +13,8 @@
 
 void foo (NSArray *ans[], id pid, id apid[], int i) {
     NSArray *test;
-    test.count = 1; /* { dg-error "readonly property cannot be set" } */
-    ((NSArray *)pid).count = 1;  /* { dg-error "readonly property cannot be set" } */
-    ((NSArray *)apid[i]).count = 1; /* { dg-error "readonly property cannot be set" } */
-    ans[i].count = 3; /* { dg-error "readonly property cannot be set" } */
+    test.count = 1; /* { dg-error "'readonly' property cannot be set" } */
+    ((NSArray *)pid).count = 1;  /* { dg-error "'readonly' property cannot be set" } */
+    ((NSArray *)apid[i]).count = 1; /* { dg-error "'readonly' property cannot be set" } */
+    ans[i].count = 3; /* { dg-error "'readonly' property cannot be set" } */
 }
index 85ce204ec2645e31f3e4da1e5351ff4db38fc771..94b258498dc54c89b1a7b2b4b3cc4f8c123e6737 100644 (file)
@@ -3619,7 +3619,7 @@ verify_gimple_assign_unary (gassign *stmt)
            && (!VECTOR_INTEGER_TYPE_P (rhs1_type)
                || !VECTOR_FLOAT_TYPE_P (lhs_type)))
          {
-           error ("invalid types in conversion to floating point");
+           error ("invalid types in conversion to floating-point");
            debug_generic_expr (lhs_type);
            debug_generic_expr (rhs1_type);
            return true;
@@ -4811,7 +4811,7 @@ verify_gimple_label (glabel *stmt)
   if (!DECL_NONLOCAL (decl) && !FORCED_LABEL (decl)
       && DECL_CONTEXT (decl) != current_function_decl)
     {
-      error ("label%'s context is not the current function decl");
+      error ("label context is not the current function declaration");
       err |= true;
     }
 
index c8063486f2db5dcdd506e03f5cfd55ab11436b0c..23c56b5661a1cdb0cc1f1b865c4b161e1d921f66 100644 (file)
@@ -4728,6 +4728,14 @@ make_pass_cleanup_eh (gcc::context *ctxt)
   return new pass_cleanup_eh (ctxt);
 }
 \f
+/* Disable warnings about missing quoting in GCC diagnostics for
+   the verification errors.  Their format strings don't follow GCC
+   diagnostic conventions but are only used for debugging.  */
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 /* Verify that BB containing STMT as the last statement, has precisely the
    edge that make_eh_edges would create.  */
 
@@ -4874,3 +4882,7 @@ verify_eh_dispatch_edge (geh_dispatch *stmt)
 
   return false;
 }
+
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
index 1d6eae101ee7e27fd261b73761a8a16cb8a7df91..455579c12903bbf03499cf857d7849d6d8ed2fd1 100644 (file)
@@ -35,6 +35,13 @@ along with GCC; see the file COPYING3.  If not see
 #include "gomp-constants.h"
 #include "gimple.h"
 
+/* Disable warnings about quoting issues in the pp_xxx calls below
+   that (intentionally) don't follow GCC diagnostic conventions.  */
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 /* Local functions, macros and variables.  */
 static const char *op_symbol (const_tree);
 static void pretty_print_string (pretty_printer *, const char*, unsigned);
@@ -4250,3 +4257,7 @@ pp_double_int (pretty_printer *pp, double_int d, bool uns)
       pp_string (pp, pp_buffer (pp)->digit_buffer);
     }
 }
+
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
index 899d47ff588d504697321cf699c1a2cb7cf965bb..e643b33a6b00ba9d729697ca3f99bd4d9c4626c3 100644 (file)
@@ -974,14 +974,14 @@ verify_ssa_operands (struct function *fn, gimple *stmt)
     def = SSA_NAME_VAR (def);
   if (build_vdef != def)
     {
-      error ("virtual definition of statement not up-to-date");
+      error ("virtual definition of statement not up to date");
       return true;
     }
   if (gimple_vdef (stmt)
       && ((def_p = gimple_vdef_op (stmt)) == NULL_DEF_OPERAND_P
          || DEF_FROM_PTR (def_p) != gimple_vdef (stmt)))
     {
-      error ("virtual def operand missing for stmt");
+      error ("virtual def operand missing for statement");
       return true;
     }
 
@@ -991,14 +991,14 @@ verify_ssa_operands (struct function *fn, gimple *stmt)
     use = SSA_NAME_VAR (use);
   if (build_vuse != use)
     {
-      error ("virtual use of statement not up-to-date");
+      error ("virtual use of statement not up to date");
       return true;
     }
   if (gimple_vuse (stmt)
       && ((use_p = gimple_vuse_op (stmt)) == NULL_USE_OPERAND_P
          || USE_FROM_PTR (use_p) != gimple_vuse (stmt)))
     {
-      error ("virtual use operand missing for stmt");
+      error ("virtual use operand missing for statement");
       return true;
     }
 
@@ -1015,7 +1015,7 @@ verify_ssa_operands (struct function *fn, gimple *stmt)
        }
       if (i == build_uses.length ())
        {
-         error ("excess use operand for stmt");
+         error ("excess use operand for statement");
          debug_generic_expr (USE_FROM_PTR (use_p));
          return true;
        }
@@ -1025,14 +1025,14 @@ verify_ssa_operands (struct function *fn, gimple *stmt)
   FOR_EACH_VEC_ELT (build_uses, i, op)
     if (op != NULL)
       {
-       error ("use operand missing for stmt");
+       error ("use operand missing for statement");
        debug_generic_expr (*op);
        return true;
       }
 
   if (gimple_has_volatile_ops (stmt) != volatile_p)
     {
-      error ("stmt volatile flag not up-to-date");
+      error ("statement volatile flag not up to date");
       return true;
     }
 
index 8e3aec1e0a695e8fb74c7a191a41ae50200be435..4b6fa449d572d646359322c95b09395eccde9f12 100644 (file)
@@ -627,6 +627,15 @@ release_defs_bitset (bitmap toremove)
 
 }
 
+/* Disable warnings about missing quoting in GCC diagnostics for
+   the verification errors.  Their format strings don't follow GCC
+   diagnostic conventions and the calls are ultimately followed by
+   one to internal_error.  */
+#if __GNUC__ > 10
+#  pragma GCC diagnostic push
+#  pragma GCC diagnostic ignored "-Wformat-diag"
+#endif
+
 /* Verify virtual SSA form.  */
 
 bool
@@ -1193,6 +1202,9 @@ err:
   internal_error ("verify_ssa failed");
 }
 
+#if __GNUC__ >= 10
+#  pragma GCC diagnostic pop
+#endif
 
 /* Initialize global DFA and SSA structures.  */
 
index 9397152dbce7b3e238a32a62092ebc3e1b5fd7cf..626a4c9f9a0dfcfc10b6831ed3e9384fe50f5d53 100644 (file)
@@ -5904,7 +5904,7 @@ do_assemble_alias (tree decl, tree target)
       else
 #endif
        error_at (DECL_SOURCE_LOCATION (decl),
-                 "ifunc is not supported on this target");
+                 "%qs is not supported on this target", "ifunc");
     }
 
 # ifdef ASM_OUTPUT_DEF_FROM_DECLS
@@ -5962,9 +5962,9 @@ assemble_alias (tree decl, tree target)
       ultimate_transparent_alias_target (&target);
 
       if (alias == target)
-       error ("weakref %q+D ultimately targets itself", decl);
+       error ("%qs symbol %q+D ultimately targets itself", "weakref", decl);
       if (TREE_PUBLIC (decl))
-       error ("weakref %q+D must have static linkage", decl);
+       error ("%qs symbol %q+D must have static linkage", "weakref", decl);
     }
   else
     {
@@ -5981,7 +5981,7 @@ assemble_alias (tree decl, tree target)
          if (TREE_CODE (decl) == FUNCTION_DECL
              && lookup_attribute ("ifunc", DECL_ATTRIBUTES (decl)))
            error_at (DECL_SOURCE_LOCATION (decl),
-                     "ifunc is not supported in this configuration");
+                     "%qs is not supported in this configuration", "ifunc");
          else
            error_at (DECL_SOURCE_LOCATION (decl),
                      "only weak aliases are supported in this configuration");